有沒有任何數據結構(C++ 03或Boost)可以保持插入順序並能夠通過鍵查找。我目前做的是這樣的:C++數據結構保持插入順序並能夠通過鍵查找
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](http://www.cplusplus.com/reference/algorithm/find/)的矢量。但是,按鍵查找並不會有效。 – memo1288
僅僅使用像這樣的結構具有地圖和矢量有什麼問題?你可以創建一個類來抽象'insert','find'和'delete',這樣'insert'就可以將k,v放在地圖上,並且將它推到vector上,'delete'從map和vector中移除,'find '在地圖上查找。我猜最大的問題是:你會使用這個結構,爲什麼插入順序很重要? – Vinay
[A std :: map跟蹤插入順序的可能的重複](http://stackoverflow.com/questions/1098175/a-stdmap-that-keep-track-of-the-order-of -insertion) – Vinay