vector<int>
是 C++ 标准模板库(STL)中的一个容器,用于存储动态大小的整数序列。以下是它的主要用法:
基本操作
1. 创建和初始化
#include <vector>
using namespace std;
vector<int> v1; // 空vector
vector<int> v2(5); // 包含5个0
vector<int> v3(5, 10); // 包含5个10
vector<int> v4 = {1, 2, 3}; // 初始化列表(C++11)
vector<int> v5(v4); // 拷贝构造
2. 添加元素
v1.push_back(10); // 在末尾添加元素10
v1.emplace_back(20); // 更高效的添加方式(C++11)
v1.insert(v1.begin(), 5); // 在开头插入5
3. 访问元素
int a = v1[0]; // 不检查边界
int b = v1.at(1); // 检查边界,越界抛出异常
int c = v1.front(); // 第一个元素
int d = v1.back(); // 最后一个元素
4. 删除元素
v1.pop_back(); // 删除最后一个元素
v1.erase(v1.begin()); // 删除第一个元素
v1.erase(v1.begin(), v1.begin()+2); // 删除前两个元素
v1.clear(); // 清空所有元素
5. 容量和大小
int size = v1.size(); // 元素数量
bool empty = v1.empty(); // 是否为空
v1.resize(10); // 调整大小
int cap = v1.capacity(); // 当前分配的存储容量
v1.reserve(100); // 预留空间
常用方法
遍历vector
// 使用下标
for (size_t i = 0; i < v1.size(); ++i) {
cout << v1[i] << " ";
}
// 使用迭代器
for (auto it = v1.begin(); it != v1.end(); ++it) {
cout << *it << " ";
}
// 范围for循环(C++11)
for (int num : v1) {
cout << num << " ";
}
排序
#include <algorithm>
sort(v1.begin(), v1.end()); // 升序
sort(v1.rbegin(), v1.rend()); // 降序
查找
auto it = find(v1.begin(), v1.end(), 10);
if (it != v1.end()) {
// 找到元素
}
高级用法
二维vector
vector<vector<int>> matrix(3, vector<int>(4)); // 3行4列矩阵
matrix[0][1] = 5; // 访问元素
交换两个vector
vector<int> v6 = {1, 2, 3};
vector<int> v7 = {4, 5, 6};
v6.swap(v7); // 交换内容
移动语义(C++11)
vector<int> v8 = std::move(v7); // 移动而非拷贝
性能提示
-
预先使用
reserve()
可以减少动态内存分配次数 -
emplace_back()
比push_back()
更高效 -
删除中间元素会导致后续元素移动,效率较低
vector<int>
是C++中最常用的容器之一,提供了动态数组的功能,同时保持了高效的随机访问能力。