【C++ vector 使用教程】
C++ vector 使用教程
目录
- 头文件引入
- 初始化方法
- 元素访问
- 添加/删除元素
- 迭代器使用
- 动态二维数组
- 注意事项
- 练习OI
1. 头文件引入
#include <vector>
2. 初始化方法
创建空容器
std::vector<int> vec; // 空vector
指定大小和初始值
std::vector<int> vec(5, 0); // 5个0
列表初始化(C++11+)
std::vector<int> vec = {1, 2, 3};
// 或
std::vector<int> vec{1, 2, 3};
3. 元素访问
下标访问(不检查越界)
int x = vec[0]; // 第一个元素
at() 方法(越界抛出异常)
int y = vec.at(1); // 第二个元素
首尾元素访问
int first = vec.front(); // 第一个元素
int last = vec.back(); // 最后一个元素
4. 添加/删除元素
尾部操作
vec.push_back(4); // 末尾添加元素(O(1))
vec.pop_back(); // 删除末尾元素(O(1))
中间操作
// 在第三个位置插入10(O(n))
vec.insert(vec.begin() + 2, 10);
// 删除第二个元素(O(n))
vec.erase(vec.begin() + 1);
5. 迭代器使用
正向遍历
for (auto it = vec.begin(); it != vec.end(); ++it) {
std::cout << *it << " ";
}
反向遍历
for (auto rit = vec.rbegin(); rit != vec.rend(); ++rit) {
std::cout << *rit << " ";
}
6. 动态二维数组
创建二维数组
// 3行4列,初始化为0
std::vector<std::vector<int>> matrix(3, std::vector<int>(4, 0));
元素访问
matrix[1][2] = 5; // 修改第二行第三列元素
7. 注意事项
预分配空间
vec.reserve(100); // 预分配容量(不初始化元素)
迭代器失效
• 添加/删除元素后,原有迭代器可能失效
• 涉及容量变化时(如push_back导致扩容),所有迭代器都会失效
• 建议在修改操作后重新获取迭代器
性能建议
操作 | 时间复杂度 | 使用建议 |
---|---|---|
push_back | O(1) | 优先使用 |
insert | O(n) | 避免频繁使用 |
erase | O(n) | 批量删除优先 |
random access | O(1) | 适合快速访问 |
练习-1265
#include <bits/stdc++.h>
using namespace std;
int main()
{
// 请在此输入您的代码
int n;
cin>>n;
vector<int>v;
for(int i=0;i<n;++i){
int num=0;
cin>>num;
v.push_back(num);
}
sort(v.begin(),v.end());
for (int val : v) {
cout << val << " ";
}
cout<<"\n";
for(int i=n-1;i>=0;i--){
cout << v[i] << " ";
}
return 0;
}