STL常用容器操作整理
- STL常用容器操作整理(string/vector/set/map)
- 一、string(字符串)
- 構造函數
- 元素訪問
- 修改操作
- 容量操作
- 子串與查找
- 二、vector(動態數組)
- 構造函數
- 元素訪問
- 修改操作
- 容量操作
- 三、set(有序不重復集合)
- 構造函數
- 遍歷set
- 元素操作
- 范圍操作
- 其他
- 四、map(鍵值對字典)
- 構造函數
- 遍歷map
- 元素訪問
- 元素操作
- 范圍操作
- 其他
- 五、總結對比
- 六、運用實踐
STL常用容器操作整理(string/vector/set/map)
一、string(字符串)
構造函數
string s1
:空字符串string s2("text")
:用字符串字面量初始化string s3(s2, start, len)
:從s2的start
位置截取len
長度
元素訪問
s[i]
:訪問第i個字符(無邊界檢查)s.at(i)
:訪問第i個字符(有邊界檢查)s.front()
/s.back()
:首尾字符
修改操作
s.append(str)
:追加字符串s.push_back(c)
:追加單個字符s.insert(pos, str)
:在pos位置插入字符串s.erase(pos, len)
:刪除從pos開始的len個字符s.replace(pos, len, str)
:替換指定位置內容s.clear()
:清空字符串
容量操作
s.size()
/s.length()
:返回字符數量s.empty()
:判斷是否為空s.resize(n, c)
:調整長度,用字符c填充
子串與查找
s.substr(pos, len)
:提取子串s.find(str, pos)
:從pos開始查找子串,返回位置s.rfind(str, pos)
:反向查找
二、vector(動態數組)
構造函數
vector<T> v
:空vectorvector<T> v(n, val)
:n個元素,初始化為val
元素訪問
v[i]
/v.at(i)
:訪問元素(有無邊界檢查)v.front()
/v.back()
:首尾元素v.data()
:返回底層數組指針
修改操作
v.push_back(val)
:尾部插入元素v.pop_back()
:刪除尾部元素v.insert(it, val)
:在迭代器位置插入元素v.erase(it)
:刪除迭代器指向元素v.clear()
:清空容器
容量操作
v.size()
:元素數量v.empty()
:判斷是否為空v.resize(n)
:調整元素數量v.reserve(n)
:預分配內存空間
三、set(有序不重復集合)
構造函數
set<T> s
:空set(默認升序)set<T, greater<T>> s
:降序set
遍歷set
-
suto it = st.begin();
-
for( ; it != st.end(); ++it) cout << *it<<" ")
元素操作
s.insert(val)
:插入元素(返回pair<iterator, bool>)s.erase(val)
:刪除元素s.count(val)
:統計元素出現次數(0或1)s.find(val)
:查找元素,返回迭代器
范圍操作
s.lower_bound(val)
:返回第一個≥val的迭代器s.upper_bound(val)
:返回第一個>val的迭代器s.equal_range(val)
:返回等于val的范圍(pair)
其他
s.size()
/s.empty()
/s.clear()
:同vector
四、map(鍵值對字典)
構造函數
map<Key, T> m
:空map(按鍵升序)
遍歷map
for(auto &it : arr)
:arr是創建的map變量it.first, it.second
:訪問鍵,值
元素訪問
m[key]
:訪問/插入元素(鍵不存在時自動創建)m.at(key)
:訪問元素(鍵不存在時拋異常)
元素操作
m.insert({key, val})
:插入鍵值對m.erase(key)
:刪除指定鍵的元素m.count(key)
:統計鍵是否存在m.find(key)
:查找鍵,返回迭代器
范圍操作
m.lower_bound(key)
/m.upper_bound(key)
:同setm.equal_range(key)
:返回鍵的匹配范圍
其他
m.size()
/m.empty()
/m.clear()
:同vector
五、總結對比
容器 | 特性 | 典型應用場景 |
---|---|---|
string | 動態字符序列 | 文本處理 |
vector | 動態數組,快速隨機訪問 | 替代C數組,高頻增刪尾 |
set | 有序唯一元素集合 | 去重,范圍查詢 |
map | 鍵值對有序映射 | 字典,快速查找鍵 |
六、運用實踐
注意:所有容器均支持迭代器操作(
begin()
,end()
等)
完整文檔參考:C++ STL官方文檔# 歡迎使用Markdown編輯器