vector 常用方法(C++)
头文件:
cpp
#include <vector>
using namespace std;
1. 构造 & 初始化
cpp
vector<int> v1; // 空 vector
vector<int> v2(5); // 5 个元素,默认 0
vector<int> v3(5, 10); // 5 个 10
vector<int> v4 = {1,2,3,4}; // 列表初始化
vector<int> v5(v4.begin(), v4.end()); // 拷贝一段
vector<int> v6(v4); // 拷贝整个 vector
2. 访问元素
cpp
v[i] // 下标访问,不检查越界
v.at(i) // 带越界检查,会抛异常
v.front() // 第一个元素
v.back() // 最后一个元素
v.data() // 返回底层数组指针(int*)
3. 添加元素
cpp
运行
v.push_back(x); // 尾部添加 x
v.emplace_back(x); // 尾部就地构造(效率更高)
v.insert(v.begin()+2, 100); // 在第 2 个位置插入 100
v.insert(v.end(), 3, 50); // 末尾插入 3 个 50
4. 删除元素
cpp
运行
v.pop_back(); // 删除最后一个元素
v.erase(v.begin()+2); // 删除第 2 个位置元素
v.erase(v.begin(), v.end()); // 删除一段
v.clear(); // 清空所有元素(size=0,capacity 不变)
5. 大小 & 容量
cpp
运行
v.size(); // 元素个数
v.empty(); // 是否为空(true/false)
v.capacity(); // 实际分配的容量
v.max_size(); // 理论最大可存元素数
v.resize(10); // 改 size,多删少补 0
v.resize(10, 2); // 改 size,不足补 2
v.reserve(100); // 预分配空间,不改变 size
v.shrink_to_fit();// 释放多余空间,capacity = size
6. 遍历
cpp
运行
// 迭代器
for (auto it = v.begin(); it != v.end(); ++it)
cout << *it;
// C++11 范围 for
for (auto x : v)
cout << x;
// 下标
for (int i=0; i<v.size(); ++i)
cout << v[i];
7. 交换 & 比较
cpp
v1.swap(v2); // 交换两个 vector
v1 == v2
v1 != v2
v1 < v2
// 按字典序比较
8. 不常用但有用
cpp
v.assign(5, 10); // 清空后赋值 5 个 10
v.assign(v2.begin(), v2.end());
C++ string 常用方法大全
cpp
#include <string>
using namespace std;
一、构造与初始化
| 方法 | 说明 |
|---|---|
| string s; | 空字符串 |
| string s(n, c); | n 个字符 c |
| string s("abc"); | 用 C 字符串初始化 |
| string s(str); | 拷贝构造 |
| string s(str, pos, len); | 从 str 的 pos 开始取 len 个字符 |
| string s = "hello"; | 赋值初始化 |
二、访问字符
| 方法 | 说明 |
|---|---|
| s[i] | |
| s.at(i) | 带越界检查,抛异常 |
| s.front() | 第一个字符 |
| s.back() | 最后一个字符 |
| s.data() | 返回 const char* 指针 |
| s.c_str() | 返回 C 风格 const char* |
| 三、长度与容量 |
| 方法 | 说明 |
|---|---|
| s.size() | 字符个数(同 length) |
| s.length() | 同 size () |
| s.empty() | 是否为空 |
| s.capacity() | 容量 |
| s.resize(n) | 改长度,多删少补 '\0' |
| s.resize(n, c) | 改长度,不足补 c |
| s.reserve(n) | 预分配空间 |
| s.shrink_to_fit() | 释放多余空间 |
| s.clear() | 清空内容,size=0 |
四、拼接与追加
方法 |说明
s += str |拼接字符串
s += c |拼接单个字符
s.append(str) |追加字符串
s.append(str, pos, len) |追加子串
s.push_back© |末尾加一个字符
s.insert(pos, str)| 在 pos 处插入字符串
五、删除
| 方法 | 说明 |
|---|---|
| s.erase(pos) | 从 pos 删到末尾 |
| s.erase(pos, len) | 从 pos 删 len 个字符 |
| s.pop_back() | 删除最后一个字符 |
| s.clear() | 清空 |
六、截取与查找
| 方法 | 说明 |
|---|---|
| s.substr(pos) | 从 pos 截取到末尾 |
| s.substr(pos, len) | 截取 len 个字符 |
| s.find(str) | 从头找 str,返回首位置,找不到返回 string::npos |
| s.find(str, pos) | 从 pos 开始找 |
| s.rfind(str) | 反向查找 |
| s.find_first_of(str) | 查找 str 中任意字符首次出现 |
| s.find_last_of(str) | 查找 str 中任意字符最后出现 |
| 七、比较 |
方法 |说明
s1 == s2 |判断相等
s1 != s2| 不等
s1 < s2 |字典序比较
s.compare(s2)| 相等返回 0,小于负,大于正
八、替换
| 方法 | 说明 |
|---|---|
| s.replace(pos, len, str) | 从 pos 替换 len 个字符为 str |