《C++ vector类》

一、基础概念

  • C++标准模板库(STL)中的动态数组容器,可自动调整大小。
  • 与普通数组的区别:无需预先指定大小,支持动态增删元素。
#include <vector>  // 必须包含的头文件
using namespace std; // 通常使用std命名空间(或显式写std::vector)

 

二、函数操作

1. 创建与初始化

默认构造:

vector<int> v1; // 空vector

指定大小与初始值:

vector<int> v2(5);      // 5个元素,默认初始化为0
vector<int> v3(5, 10);  // 5个元素,每个值为10

从其他容器或数组初始化:

int arr[] = {1, 2, 3};
vector<int> v4(arr, arr + 3); // 从数组拷贝
vector<int> v5 = {1, 2, 3};   // C++11初始化列表

 

2. 访问元素

通过索引访问(随机访问):

cout << v1[0]; // 不检查边界(快速但危险)
cout << v1.at(0); // 检查边界(安全但稍慢)

迭代器访问:

for (auto it = v1.begin(); it != v1.end(); ++it) {
    cout << *it << " ";
}

范围for循环(C++11):

for (int x : v1) {
    cout << x << " ";
}

3. 修改大小

添加元素:

v1.push_back(10); // 尾部添加
v1.insert(v1.begin() + 1, 20); // 在指定位置插入

删除元素:

v1.pop_back(); // 删除尾部元素
v1.erase(v1.begin() + 1); // 删除指定位置元素
v1.clear(); // 清空所有元素

调整容量:

v1.resize(10); // 调整大小为10(新元素默认初始化)
v1.reserve(100); // 预留空间(避免频繁重新分配)

4. 容量与大小

常用成员函数:

v1.size();     // 当前元素数量
v1.capacity();  // 当前分配的存储空间大小
v1.empty();     // 是否为空
v1.max_size();  // 理论最大容量

 

三、注意事项

1.迭代器失效

  在vector中间插入/删除元素时,所有迭代器可能失效(需重新获取)。

  尾部插入通常不会使迭代器失效(除非重新分配内存)。

2.性能权衡

  push_back平均时间复杂度为O(1),但偶尔因扩容导致O(n)。

  频繁插入/删除时,考虑std::liststd::deque

3.与数组的对比

  优势:动态大小、内置函数简化操作。

  劣势:额外开销(存储大小、容量等信息)

 

posted @ 2023-05-24 15:25  一个不知道干嘛的小萌新  阅读(16)  评论(0)    收藏  举报