2017-07-02 61 views
3
  1. 为什么集装箱适配器像std::stackstd::queue实现适配器,而不是作为独立的容器吗?是因为你想要具有不同序列容器的基础内存管理的堆栈?两个关于C++集装箱

  2. 为什么STL的算法是作为自由函数实现的,这些函数需要迭代器,而不是作为相应容器的方法?

+3

你应该问问**一个**问题立即 –

+0

回复:** 2。** https://stackoverflow.com/questions/44864338/why-not-implement-contains-function-in-c-containers/44864906#44864906 – Galik

+0

@PserserBy这两个问题密切相关,所以我认为把它们放在一起很好。 – dasblinkenlight

回答

5

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

为什么集装箱适配器像std::stackstd::queue实现适配器

因为你可以混合和匹配的容器和适配器:根据您的需求,您可以创建基于vector一个queue ,或基于liststack,然后通过交换不同类型的容器来更改实现细节。

为什么是STL的算法实现为免费功能

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

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

+0

谢谢!很好的回答! – mcAngular2