操作类型 | std::vector(动态数组) | std::string(字符串) | std::map<K,V>(有序键值对) |
头文件 | #include <vector>
| #include <string>
| #include <map>
|
创建容器 | std::vector<int> vec;(空容器)
std::vector<int> vec{1,2,3};(初始化)
| std::string str;(空字符串)
std::string str = "hello";(初始化)
| std::map<int, std::string> mp;(空容器)
std::map<int, std::string> mp{{1,"a"},{2,"b"}};(初始化)
|
添加元素 | 1. 尾部添加:vec.push_back(10); 2. 指定位置插入:vec.insert(vec.begin()+1, 20);(在第2位插20) | 1. 拼接:str += " world"; 2. 插入字符:str.insert(2, "xx");(在第3位插xx) 3. 追加字符:str.push_back('!'); | 1. 直接赋值:mp[101] = "张三"; 2. 插入键值对:mp.insert({102, "李四"});(不覆盖已有键) |
访问元素 | 1. 下标访问:vec[0](无越界检查) 2. 安全访问:vec.at(0)(有越界检查) 3. 首尾元素:vec.front()/vec.back() | 1. 下标访问:str[0] 2. 安全访问:str.at(0) 3. 首尾字符:str.front()/str.back() | 1. 下标访问:mp[101](无键则创建默认值) 2. 查找访问:auto it = mp.find(101); if(it != mp.end()) { it->second; }(推荐,无键不创建) |
修改元素 | vec[0] = 99;(直接赋值)
| str[0] = 'H';(修改字符)
str.replace(0, 2, "HE");(替换子串)
| mp[101] = "张三丰";(覆盖已有值)
|
删除元素 | 1. 尾部删除:vec.pop_back(); 2. 指定位置删除:vec.erase(vec.begin()+1); 3. 清空:vec.clear(); | 1. 尾部删除:str.pop_back(); 2. 删除子串:str.erase(1, 2);(从第2位删2个字符) 3. 清空:str.clear(); | 1. 按键删除:mp.erase(101); 2. 清空:mp.clear(); |
获取长度 | vec.size()(元素个数)
vec.empty()(是否为空)
| str.size()/str.length()(字符数)
str.empty()(是否为空)
| mp.size()(键值对个数)
mp.empty()(是否为空)
|
遍历元素 | // 方式1:范围for for (int num : vec) { ... } // 方式2:迭代器 for (auto it = vec.begin(); it != vec.end(); ++it) { *it; } | // 范围for for (char c : str) { ... } // 迭代器 for (auto it = str.begin(); it != str.end(); ++it) { *it; } | // 范围for(pair.first=键,pair.second=值) for (auto& pair : mp) { pair.first; pair.second; } // 迭代器 for (auto it = mp.begin(); it != mp.end(); ++it) { it->first; it->second; } |
查找元素 | // 需包含 auto it = std::find(vec.begin(), vec.end(), 10); if (it != vec.end()) { 找到元素 } | // 查找子串位置 size_t pos = str.find("llo"); if (pos != std::string::npos) { 找到子串 } | // 按键查找(核心方式) auto it = mp.find(101); if (it != mp.end()) { 找到键值对 } |