C++数据结构保持插入顺序并能够通过键查找

标签 c++ data-structures

是否有任何数据结构(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/

相关文章:

c++ - 以 C++11 风格进行类型转换的正确方法?

c++ - 如何检查 C++ STL vector 中存在的值并将函数应用于 vector 的每个元素?

.net - 当我遍历字典(.NET通用数据结构)时,它的顺序是否与添加它们的顺序相同?

data-structures - Redis中的最优存储结构

javascript - 如何在 Javascript 中获取真实的 map 和布景?

c++ - 这两个局部变量有什么区别?

c++ - 自动尾随返回类型?

C/C++ 中的 C++ 引用和常量指针

algorithm - 为什么皇后在棋盘覆盖中只有 10 个独特位置?

java - 为什么我的所有 BST 遍历都按顺序返回值?