关于C容器的两个问题

>为什么像std :: stack或std :: queue这样的容器适配器实现为适配器而不是独立容器?是因为你想要,例如具有不同序列容器的底层内存管理的堆栈?
>为什么STL的算法实现为*函数,它们期望迭代器,而不是相应容器的方法?

解决方法:

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

Why are the Container Adapters like std::stack or std::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.

上一篇:将Rails / Unicorn / Nginx容器连接到MySQL容器


下一篇:c – STL中是否有分类容器?