C++中的容器類

一、容器分類

1、容器分類

順序存儲結構(vector、list、deque)、關聯存儲結構(set、map、mutiset、multimap)兩類容器。

標準容器類 說明 用法
順序容器類
vector 從後面快速的插入與刪除,直接訪問任何元素 相當於一個數組,在內存中分配一塊連續的內存空間進行存儲。支持不指定 vector 大小的存儲
deque 從前面或後面快速的插入與刪除,直接訪問任何元素 雙端隊列
list 雙鏈表,從任何地方快速插入與刪除 雙向鏈表,每一個結點都包括一個信息快 Info、一個前驅指針 Pre、一個後驅指針 Post
  1. 使用區別如果你需要高效的隨即存取,而不在乎插入和刪除的效率,使用 vector
  2. 如果你需要大量的插入和刪除,而不關心隨機存取,則應使用 list
  3. 如果你需要隨機存取,而且關心兩端數據的插入和刪除,則應使用 deque
標準容器類 說明
關聯容器類
set 快速查找,不允許重複值
multiset 快速查找,允許重複值
map 一對多映射,基於關鍵字快速查找,不允許重複值
multimap 一對多映射,基於關鍵字快速查找,允許重複值
容器設配器 (基於基本容器實現的基本容器一樣的東西就是適配器) 說明
stack 後進先出
queue 先進先出
priority_queue 最高優先級元素第一個出列

二、容器常見操作

1、順序容器和關聯容器公共函數

函數 功能
begin 該函數兩個版本返回 iterator 或 const_iterator,引用容器第一個元素
end 該函數兩個版本返回 iterator 或 const_iterator, 引用容器最後一個元素後面一位
rbegin 該函數兩個版本返回 reverse_iterator 或 const_reverse_iterator, 引用容器最後一個元素
rend 該函數兩個版本返回 reverse_iterator 或 const_reverse_iterator,引用容器第一個元素面一位
erase 從容器中清除一個或幾個元素
clear 清除容器中所有元素

2、vector基本操作

操作 說明 解釋
頭文件 #include<vector>
初始化 vector<~> vec ~值可以是 int,double,string, 還可以是結構體,結構體要定義成全局
尾部插入數字 vec.push_back(a)
下標訪問 vec[i] 訪問第i個元素
插入元素 vec.insert(vec.begin()+i,a) 在第 i+1 個元素前面插入 a
刪除元素 vec.erase(vec.begin()+2) 刪除第 3 個元素
向量大小 vec.size()
清空 vec.clear()
排序 引入#include<algorithm> sort(vec.begin(),vec.end());(默認是按升序排列, 即從小到大)
翻轉 引入#include<algorithm> reverse(vec.begin(),vec.end()); 將元素翻轉

相關鏈接:http://www.cnblogs.com/wang7/archive/2012/04/27/2474138.html

3、list 的基本操作

操作 說明 解釋
頭文件 #include<list>
初始化 list<int> list
list::push_front() 在 list 的前端插入一個元素
list::pop_front() 刪除 list 的第一個元素
list::push_back() 在 list 的末端插入一個元素
list::pop_back() 刪除 list 的最後一個元素
list::insert() 在指定位置插入一個或多個元素。對於插入大量元素來說是非常高效的

相關鏈接:http://blog.csdn.net/zhangliang_571/article/details/26143631

4、dequeu 的基本操作

操作 說明 解釋
頭文件 #include<deque>
初始化 deque<int> d
刪除雙端隊列中最前一個元素 void pop_front()
刪除雙端隊列中最後一個元素 void pop_back()
返回 pos 位置元素的引用 reference at(int pos)
返回首元素的引用 reference front()
返回尾元素的引用 reference back()
返回向量頭指針,指向第一個元素 iterator begin()
返回指向向量中最後一個元素下一個元素的指針(不包含在向量中) iterator end()

相關鏈接:http://blog.csdn.net/longshengguoji/article/details/8519812

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章