【发布时间】:2013-11-21 06:51:35
【问题描述】:
是否有任何数据结构(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";
有了这个,我可以在矢量对象中保持我想要的顺序,并且仍然能够快速查找地图对象。缺点是我必须同时维护矢量对象和地图对象,这很难闻。
【问题讨论】:
-
您可以使用带有std::find 的向量。不过,按键查找效率不高。
-
只使用这样一个有地图和矢量的结构有什么问题?您可以创建一个抽象
insert、find和delete的类,以便insert将 k、v 放入地图并推动矢量,delete从地图和矢量中删除,@987654329 @ 在地图上进行查找。我想最大的问题是:你会用这个结构做什么?为什么插入顺序很重要?
标签: c++ data-structures