>为什么像std :: stack或std :: queue这样的容器适配器实现为适配器而不是独立容器?是因为你想要,例如具有不同序列容器的底层内存管理的堆栈?
>为什么STL的算法实现为*函数,它们期望迭代器,而不是相应容器的方法?
解决方法:
这样做是为了让程序员更好地控制实现.混合和匹配的能力非常强大,因为它可以让您用更少的代码实现更多的东西.
Why are the Container Adapters like
std::stack
orstd::queue
implemented as adapters
因为您可以混合使用容器和适配器:根据您的需要,您可以基于向量或基于列表的堆栈创建队列,然后通过交换不同类型的容器来更改实现细节.
Why are the algorithms of the STL implemented as free functions
避免在多个地方编码.例如,向量中的线性搜索在列表中保持相同的线性搜索,也可以应用于具有迭代器的其他容器.
请注意,某些容器确实具有特定于其实现的成员函数.例如,std::set
has find
method for faster non-linear search.