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