c++面试题之标准模板库
STL的版本很多,常見的有HP STL、PJ STL、 SGI STL等。STL可分為容器(containers)、迭代器(iterators)、空間配置器(allocator)、配接器(adapters)、算法(algorithms)、仿函數(functors)六個部分。
在實際的開發過程中,數據結構本身的重要性不會遜于操作于數據結構的算法的重要性,當程序中存在著對時間要求很高的部分時,數據結構的選擇就顯得更加重要。
經典的數據結構數量有限,但是我們常常重復著一些為了實現向量、鏈表等結構而編寫的代碼,這些代碼都十分相似,只是為了適應不同數據的變化而在細節上有所出入。STL容器就為我們提供了這樣的方便,它允許我們重復利用已有的實現構造自己的特定類型下的數據結構,通過設置一些模板類,STL容器對最常用的數據結構提供了支持,這些模板的參數允許我們指定容器中元素的數據類型,可以將我們許多重復而乏味的工作簡化。
容器部分主要由頭文件,,,,,和組成。對于常用的一些容器和容器適配器(可以看作由其它容器實現的容器),可以通過下表總結一下它們和相應頭文件的對應關系。
序列式容器
向量(vector) 連續存儲的元素
列表(list) 由節點組成的雙向鏈表,每個結點包含著一個元素
雙端隊列(deque) 連續存儲的指向不同元素的指針所組成的數組
適配器容器
棧(stack) 后進先出(LIFO)的值的排列
隊列(queue) 先進先出(FIFO)的值的排列
優先隊列(priority_queue) 元素的次序是由作用于所存儲的值對上的某種謂詞決定的的一種隊列
關聯式容器
集合(set) 由節點組成的紅黑樹,每個節點都包含著一個元素,節點之間以某種作用于元素隊的謂詞排列,沒有兩個不同的元素能夠擁有相同的次序
多重集合(multiset) 允許存在兩個次序相等的元素的集合
映射(map) 由{鍵,值}對組成的集合,以某種作用于鍵對上的謂詞排列
多重映射(multimap) 允許鍵對有相等的次序的映射
對(pair) 和map類似,但只有一對鍵值
智能指針(auto_ptr) 將一個用new開辟內存的指針賦給auto_ptr,會自動回收空間
總結
以上是生活随笔為你收集整理的c++面试题之标准模板库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 系统架构设计师难吗?IT行业员工的最高荣
- 下一篇: 软件和硬件的关系以及软件调动硬件的工作原