c++ - 创建并迭代使用两个字符串作为键的多重映射

标签 c++

我想构建一个多重映射,这样我可以有多个与一个键关联的条目,并且该键由两个字符串组成。为了使事情变得更复杂,我需要有几个与每个 key 对关联的字符串(3+)。

有没有办法通过定义一个包含 key 对和额外值的类来做到这一点?然后我希望能够迭代此多重映射,返回与特定 key 对匹配的所有条目。

最佳答案

您可以尝试以下两种方法之一:

typedef std::pair<std::string, std::string> keypair;

std::multimap<keypair, std::string>;          // #1
std::map<keypair, std::vector<std::string>>;  // #2

第一个解决方案使用多重映射,意味着您只有一个容器,因此可能感觉更简单,而第二个版本( vector 映射)的优点是与一个键相关的所有数据都存储在一起。根据用例,其中任何一个都可能具有更好的性能,因此您应该尝试两者并进行分析。

顺便说一下,

keypair 是一个完全有效的映射键,因为它通过两个组件的字典顺序提供排序。

关于c++ - 创建并迭代使用两个字符串作为键的多重映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8936080/

相关文章:

c++ - 如何从 C++ 创建 lua C++ 包装器

c++ - 在列表迭代期间删除元素 - 安全

C++ 动态/静态数组作为函数的参数

c++ - openCV 错误 : Assertion failed (scn == 3 || scn == 4) on Raspberry Pi

c++ - 如何删除或清除结构数据类型的 vector

c++ - SendMessage 到编辑控件 C++

c++ - 将局部变量存储在类的 STL 容器中安全吗?

c++ - 从包装器接口(interface)动态转换

c++ - 如何让线程等待条件执行操作而不使用过多的 CPU 时间?

c++ - QList children - 从 QObject 派生的结构或自定义类?