C++ 在映射和列表之间查找std容器

C++ 在映射和列表之间查找std容器,c++,containers,std,C++,Containers,Std,寻找一个容器,它将元素存储在自定义键(如映射)下,允许在该键下进行更复杂的搜索,然后是O(n)(如映射),但还记得插入对(键和值)的顺序,允许向前推送和向后弹出功能,如列表中 编辑:只需使用两个容器即可解决。用于存储对的映射和用于按顺序存储索引的列表。如果有人提供了更优雅的解决方案,这个问题就没有答案。标准库中没有这样的数据结构 实现这种结构的一种“简单”方法是在内部使用两个独立的结构。用于查找的映射,以及用于按插入顺序迭代的列表(或向量或deque)。其中一个数据结构应该存储对象,另一个可以存

寻找一个容器,它将元素存储在自定义键(如映射)下,允许在该键下进行更复杂的搜索,然后是O(n)(如映射),但还记得插入对(键和值)的顺序,允许向前推送和向后弹出功能,如列表中


编辑:只需使用两个容器即可解决。用于存储对的映射和用于按顺序存储索引的列表。如果有人提供了更优雅的解决方案,这个问题就没有答案。

标准库中没有这样的数据结构

实现这种结构的一种“简单”方法是在内部使用两个独立的结构。用于查找的映射,以及用于按插入顺序迭代的列表(或向量或deque)。其中一个数据结构应该存储对象,另一个可以存储指向对象的指针


在库集合中有这种多索引容器的泛化。

在标准库中没有这样的数据结构

实现这种结构的一种“简单”方法是在内部使用两个独立的结构。用于查找的映射,以及用于按插入顺序迭代的列表(或向量或deque)。其中一个数据结构应该存储对象,另一个可以存储指向对象的指针


在库集合中有这种多索引容器的泛化。

虽然语法有点粗糙,但您可以使用。没有一个标准容器既可以排序又可以记住未排序的顺序。您可以通过使用地图进行存储和快速搜索来构建一个简单版本的多索引,同时还可以将密钥存储在一个deque中(支持push_front和pop_back)。假设快速搜索是最重要的。c++11有std::unsorted_映射,它正是这样做的。虽然语法有点粗糙,但您可以使用它。没有一个标准容器既能排序又能记住未排序的顺序。您可以通过使用地图进行存储和快速搜索来构建一个简单版本的多索引,同时还可以将密钥存储在一个deque中(支持push_front和pop_back)。假设快速搜索是最重要的。c++11有std::unsorted_映射,它正好做到了这一点。我认为列表优于向量,因为列表迭代器永远不会失效,因此,您可以将迭代器保存在映射中。@alain或者您可以将对象存储在映射中,迭代器存储在向量中,在这种情况下,这不是问题。虽然,你最终还是错过了向量的最大优点,那就是内存的连续性。是的,这是可能的。我认为列表比向量更好,因为列表迭代器永远不会失效,因此,您可以将迭代器保存在映射中。@alain或者您可以将对象存储在映射中,迭代器存储在向量中,在这种情况下,这不是问题。尽管如此,你还是错过了向量的最大好处,那就是记忆的连续性。是的,这是可能的。