vector容器

1. 头文件包含

使用vector容器需要包含<vector>头文件,示例如下:

#include <vector>

2. 定义与初始化

  • 默认初始化:创建一个空的vector,元素类型可自行指定,例如定义一个存储int类型元素的空vector
vector<int> v;
  • 指定大小初始化:创建一个具有指定元素个数的vector,并可以用特定值初始化元素。例如,创建一个包含5个初始值为0的int类型元素的vector
vector<int> v(5, 0);
  • 通过初始化列表初始化:利用花括号括起来的初始值列表来初始化vector,像这样:
vector<int> v = {1, 2, 3};
  • 拷贝初始化:从另一个已存在的同类型vector进行拷贝构造,例如:
vector<int> v1 = {1, 2, 3};
vector<int> v2(v1);

3. 元素访问

  • 使用下标访问:通过[]操作符来访问元素,注意下标从0开始,并且要确保下标不越界,示例:
vector<int> v = {1, 2, 3};
int element = v[1];  // 访问第二个元素,值为2
  • 使用at()函数访问:相较于[]操作符,at()函数会进行边界检查,越界时会抛出out_of_range异常,例如:
vector<int> v = {1, 2, 3};
try {
    int element = v.at(1);  // 访问第二个元素,值为2
} catch (out_of_range& e) {
    cerr << "下标越界: " << e.what() << endl;
}
  • 通过迭代器访问:迭代器类似指针,可用于遍历vector中的元素,示例:
vector<int> v = {1, 2, 3};
for (vector<int>::iterator it = v.begin(); it!= v.end(); ++it) {
    cout << *it << " ";
}

也可以使用更简洁的auto关键字来简化迭代器的定义:

vector<int> v = {1, 2, 3};
for (auto it = v.begin(); it!= v.end(); ++it) {
    cout << *it << " ";
}

4. 修改元素

  • 通过下标或at()函数修改
vector<int> v = {1, 2, 3};
v[1] = 5;  // 将第二个元素修改为5
v.at(2) = 6;  // 将第三个元素修改为6
  • 使用迭代器修改
vector<int> v = {1, 2, 3};
for (auto it = v.begin(); it!= v.end(); ++it) {
    *it *= 2;  // 将每个元素乘以2
}

5. 容器大小相关操作

  • 获取元素个数:使用size()函数,例如:
vector<int> v = {1, 2, 3};
cout << "元素个数: " << v.size() << endl;
  • 判断是否为空:通过empty()函数来判断,返回true表示为空,false表示不为空,示例:
vector<int> v;
if (v.empty()) {
    cout << "vector为空" << endl;
}
  • 改变容器大小:使用resize()函数,可增大或缩小vector的大小。若增大,新元素会按默认构造或者指定值初始化(如果有提供初始化值),例如:
vector<int> v = {1, 2, 3};
v.resize(5);  // 扩展为5个元素,新增元素默认初始化
v.resize(7, 8);  // 扩展为7个元素,新增元素初始值为8

6. 插入与删除元素

  • 在末尾插入元素:使用push_back()函数,例如:
vector<int> v;
v.push_back(1);
v.push_back(2);
  • 在指定位置插入元素:利用insert()函数,可指定插入位置的迭代器以及要插入的元素值或元素范围,示例:
vector<int> v = {1, 3};
auto it = v.begin() + 1;  // 在第二个元素前插入
v.insert(it, 2);  // 插入单个元素
vector<int> other = {4, 5};
v.insert(v.end(), other.begin(), other.end());  // 插入另一个vector的元素范围
  • 删除末尾元素:使用pop_back()函数,例如:
vector<int> v = {1, 2, 3};
v.pop_back();  // 删除最后一个元素
  • 删除指定位置元素:通过erase()函数,指定要删除元素的迭代器或者迭代器范围来删除元素,示例:
vector<int> v = {1, 2, 3};
auto it = v.begin() + 1;  // 删除第二个元素
v.erase(it);

也可以删除一段元素:

vector<int> v = {1, 2, 3, 4, 5};
v.erase(v.begin() + 1, v.begin() + 3);  // 删除第二个到第四个元素(左闭右开区间)

7. 遍历操作

除了前面提到的使用迭代器遍历,还可以使用范围for循环来简洁地遍历vector中的元素,例如:

vector<int> v = {1, 2, 3};
for (int element : v) {
    cout << element << " ";
}

8. 其他操作

  • 清空容器:使用clear()函数,它会移除所有元素,示例:
vector<int> v = {1, 2, 3};
v.clear();
  • 交换两个vector的内容:利用swap()函数,例如:
vector<int> v1 = {1, 2, 3};
vector<int> v2 = {4, 5, 6};
v1.swap(v2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值