关于C ++容器的两个问题

时间:2017-07-02 10:33:02

标签: c++ stack queue containers adapter

  1. 为什么像std::stackstd::queue这样的容器适配器实现为适配器而不是独立容器?是因为你想要,例如具有不同序列容器的底层内存管理的堆栈?

  2. 为什么STL的算法实现为自由函数,它们期望迭代器,而不是相应容器的方法?

1 个答案:

答案 0 :(得分:5)

这样做是为了让程序员更好地控制实现。混合和匹配的能力非常强大,因为它可以让你用更少的代码实现更多的东西。

  

为什么像std::stackstd::queue这样的容器适配器实现为适配器

因为您可以混合使用容器和适配器:根据您的需要,您可以基于queue创建vector,或者基于{{stack创建list 1}},然后通过交换不同类型的容器来更改实现细节。

  

为什么STL的算法实现为自由函数

避免在多个地方编码。例如,向量中的线性搜索在列表中保持相同的线性搜索,也可以应用于具有迭代器的其他容器。

请注意,某些容器确实具有特定于其实现的成员函数。例如,std::set has find method for faster non-linear search