是否有任何数据结构(C++03或Boost)可以保持插入顺序并能够通过键查找。我目前正在这样做:
struct Foo {
vector<string> v; // keep the key order by insert time
map<string, string> m; // <key, value>
};
Foo foo;
foo.v.push_back("key1");
foo.m["key1"] = "value1";
foo.v.push_back("key2");
foo.m["key2"] = "value2";
这样,我可以在 vector 对象中保留我想要的顺序,并且仍然能够使用 map 对象快速查找。缺点是我必须同时维护 vector 对象和 map 对象,这很臭。
最佳答案
一个可能的选项是 Boost Multi-index containers library 。当我有类似的需求时,我过去曾使用过它们。需要一些时间来适应模板设置,但之后效果很好。
关于C++数据结构保持插入顺序并能够通过键查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20114297/