c++ - 我可以循环访问并通过键访问元素的容器? C++

标签 c++ vector dictionary containers deque

有没有我可以通过键和位置访问其元素的容器?

差不多,元素和 vector/双端队列之间是否存在某种混合......?

最佳答案

对此没有标准的容器类型。

您可以使用 std::map 的组合用于 key 访问,以及 std::vector用于位置访问。如果使用访问函数将它们包装在一个类中,则可以确保无论何时插入新元素,两个索引都会更新,从而避免不一致。

如果您乐于使用 Boost 库,它会为这类事情提供一个方便的模板。它叫做boost::multi_index ,它提供了很大的灵 active ,可以通过许多不同的方式来访问相同的底层数据。

找到了一个与您所描述的组合的示例,即使用字符串键以及基于序列位置的访问 here .

主要数据类型声明为

typedef multi_index_container<
  std::string,
  indexed_by<
    sequenced<>,
    ordered_non_unique<identity<std::string> >
  >
> text_container;

这定义了一个具有两种访问类型的索引:sequenced<> (即按插入位置)以及 ordered_non_unique<identity<std::string>> ,类似于 std::multimap<std::string,...> .

关于c++ - 我可以循环访问并通过键访问元素的容器? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20308720/

相关文章:

c# - 将一本字典转换成另一本字典的最佳方法是什么

swift - 排序 plist 数据

mysql - 开放层 : How to create markers based on a MySQL database

c++ - {} 在这些 C++ 函数中意味着什么?

c++ - 在运行时使用成员函数为 2D vector 成员变量初始化和分配大小

c++ - 将 vector 作为数组传递是否安全?

c++ - erase-remove 习语的性能增益来自哪里

javascript - 如何使用 QJSEngine 构建 API?

c++ - 有没有办法使用静态断言和类型特征来防止类被派生两次?

c++ - 如何获得真正的 16 位值?