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++中最常用的容器之一,提供了动态数组的功能,同时保持了高效的随机访问能力。