2017-07-02 44 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