有没有我可以通过键和位置访问其元素的容器?
差不多,元素和 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/