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

mcA*_*ar2 3 c++ queue stack containers adapter

  1. 为什么容器适配器喜欢std::stackstd::queue实现为适配器而不是独立容器?是因为你想要一个具有不同序列容器的底层内存管理的堆栈?

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

das*_*ght 5

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

为什么容器适配器喜欢std::stackstd::queue实现为适配器

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

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

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

请注意,某些容器确实具有特定于其实现的成员函数.例如,std::set具有find更快的非线性搜索的方法.