一、容器分類
1、容器分類
順序存儲結構(vector、list、deque)、關聯存儲結構(set、map、mutiset、multimap)兩類容器。
標準容器類 |
說明 |
用法 |
|
|
|
順序容器類 |
|
|
vector |
從後面快速的插入與刪除,直接訪問任何元素 |
相當於一個數組,在內存中分配一塊連續的內存空間進行存儲。支持不指定 vector 大小的存儲 |
deque |
從前面或後面快速的插入與刪除,直接訪問任何元素 |
雙端隊列 |
list |
雙鏈表,從任何地方快速插入與刪除 |
雙向鏈表,每一個結點都包括一個信息快 Info、一個前驅指針 Pre、一個後驅指針 Post |
- 使用區別如果你需要高效的隨即存取,而不在乎插入和刪除的效率,使用 vector
- 如果你需要大量的插入和刪除,而不關心隨機存取,則應使用 list
- 如果你需要隨機存取,而且關心兩端數據的插入和刪除,則應使用 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