QMap和QPair,C++,Qt

mas*_*oud 8 c++ qt data-structures

我想通过两种方式创建一个用于访问字符串的数据结构:

  1. 按ID访问
  2. 按名称访问

我的第一个想法是为每种方法使用两个映射,但它会导致数据重复:

QMap<int, QString> accessById;
QMap<QString, QString> accessByName;
Run Code Online (Sandbox Code Playgroud)

我正在寻找更好的方法,如下所示:

QMap<QPair<int, QString>, QString> multiAccess;
Run Code Online (Sandbox Code Playgroud)

但它无法帮助我(至少我不知道该怎么做),因为在地图中搜索需要知道ID和名称.如何定义Qt类的井结构以实现我的目标?

没有外部库,但Qt

Juh*_*uho 4

怎么样:

QMap<QString, int> nameIdMap;
QMap<int, QString> accessById;
Run Code Online (Sandbox Code Playgroud)

您可以通过 id 访问并创建名称和 id 的映射。然后你可以通过名称访问

QString data = accessById[nameIdMap[the_name]];
Run Code Online (Sandbox Code Playgroud)