我想构建一个多重映射,这样我可以有多个与一个键关联的条目,并且该键由两个字符串组成。为了使事情变得更复杂,我需要有几个与每个 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/