C++中序列容器和容器适配器的区别

V K*_*V K 5 c++ containers stl

C++ 中的序列容器和容器适配器有什么区别?

这里我的意思是序列容器作为向量,双端队列,列表,而容器适配器作为堆栈,队列,priority_queue。我们什么时候更喜欢序列容器和容器适配器?

Dra*_*kar 2

顺序容器

您可以将序列容器视为“从头开始构建”的容器。它们使用不同的结构来保存数据,并具有不同的算法时间来插入、删除和检索元素。

你可以在这里找到很多关于容器算法时间的信息

容器适配器

容器适配器是在序列容器上添加的行为,使它们尊重不同的范例。添加的行为可以是更严格的行为(堆栈只允许您在其上弹出/推送项目,不允许随机插入)。它们是其他类型的容器,与现有的容器相比,不需要新的存储行为。例如,可以在向量上构建堆栈。然后,它将使用向量的数据结构,但限制对某些函数的使用以模拟堆栈。

最重要的是确保您使用正确的容器来满足您的需求。更严格的容器将帮助您防止数据的误用,并且了解数据的使用情况将帮助您选择好的容器以获得最佳性能。

有关容器适配器的更多信息可以在此处找到

我大部分时间应该使用什么?

vector许多专家(Scott Meyer、Bjarne Stroustrup)建议默认使用deque. 我强烈建议您选择最适合您需要的容器。