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编辑器