Posted on 2010-08-31 21:47
MiYu 閱讀(1459)
評論(0) 編輯 收藏 引用 所屬分類:
ACM_資料
•
MiYu原創, 轉帖請注明 : 轉載自 ______________白白の屋
幾種常用的容器: map, vector, list, queue,stack, string ( 這個字符串也算個容器 )
STL容器的共通操作
–一. 初始化(initialization)
•1.產生一個空容器
list<int> l; vector<int> vec; map<int,int>.......
尖括號里面可以是系統類型, 也可以是自定義類型, 表示存放在容器中的類型.
•2.以另一個容器元素為初值完成初始化
list<int> lst;
vector<float> vec ( lst.begin(), lst.end() );
其他的容器都可以類似地 操作, 當然, 每一種容器都有好幾個構造函數版本,
具體下面分類介紹.
•以數組元素為初值完成初始化
int array[]={2,4,6,1345};
…
set<int> st ( array, array + sizeof(array) / sizeof(array[0]) );
與大小相關的操作(size operator)
• size()-返回當前容器的元素數量
• empty()-判斷容器是否為空
• max_size()-返回容器能容納的最大元素數量
–比較(comparison)
• ==,!=,<,<=,>,>=
• 比較操作兩端的容器必須屬于同一類型
• 如果兩個容器內的所有元素按序相等,那么這兩個容器相等
• 采用字典式順序判斷某個容器是否小于另一個容器
–賦值(assignment)和交換(swap)
• swap用于提高賦值操作效率
•容器的共通操作
–與迭代器(iterator)相關的操作
• begin()-返回一個迭代器,指向第一個元素
• end()-返回一個迭代器,指向最后一個元素之后
• rbegin()-返回一個逆向迭代器,指向逆向遍歷的第一個元素
• rend()-返回一個逆向迭代器,指向逆向遍歷的最后一個元素之后
–元素操作
• insert(pos,e)-將元素e的拷貝安插于迭代器pos所指的位置
• erase(beg,end)-移除[beg,end]區間內的所有元素
• clear()-移除所有元素
•迭代器(iterator)(示例:iterator)
– ->可遍歷STL容器內全部或部分元素的對象
– ->指出容器中的一個特定位置
– ->迭代器的基本操作
操作 | 效果 |
* | 返回當前位置上的元素值。如果該元素有成員,可以通過迭代器以operator ->取用 |
++ | 將迭代器前進至下一元素 |
==和!= | 判斷兩個迭代器是否指向同一位置 |
= | 為迭代器賦值(將所指元素的位置賦值過去) |
迭代器(iterator)
– 所有容器都提供獲得迭代器的函數
操作 | 效果 |
begin() | 返回一個迭代器,指向第一個元素 |
end() | 返回一個迭代器,指向最后一個元素之后 |

半開區間[beg, end)的好處:
1.為遍歷元素時循環的結束時機提供了簡單的判斷依據(只要未到達end(),循環就可以繼續)
2.不必對空區間采取特殊處理(空區間的begin()就等于end())
–
所有容器都提供兩種迭代器
• container::iterator以“讀/寫”模式遍歷元素
• container::const_iterator以“只讀”模式遍歷元素
– 迭代器示例:iterator
–迭代器分類
•雙向迭代器
– ->可以雙向行進,以遞增運算前進或以遞減運算后退。
– ->list、set和map提供雙向迭代器
•隨機存取迭代器
– ->除了具備雙向迭代器的所有屬性,還具備隨機訪問能力。
– ->可以對迭代器增加或減少一個偏移量、處理迭代器之間的
距離或者使用<和>之類的關系運算符比較兩個迭代器。
– ->vector、deque和string提供隨機存取迭代器