vector

概念

STL(标准模板库)中的 vector 是 C++ 中一个非常常用的容器类。它是一个动态数组,可以自动调整大小,并提供了类似于数组的随机访问功能。

主要特点

  1. 动态大小vector 会根据需要自动调整其大小,允许在运行时增加或减少元素。
  2. 连续存储vector 的元素在内存中是连续存储的,这意味着可以通过偏移量进行高效的随机访问。
  3. 自动管理内存vector 会自动管理其所需的内存,因此无需手动分配或释放内存。
  4. 丰富的接口vector 提供了一组丰富的成员函数,用于插入、删除、访问和修改元素。

基本用法

1. 创建和初始化

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <vector>
#include <iostream>

using namespace std;

int main() {
vector<int> v1; // 创建一个空的 vector
vector<int> v2(10); // 创建一个包含 10 个默认值(0)的 vector
vector<int> v3(10, 5); // 创建一个包含 10 个值为 5 的元素的 vector
vector<int> v4 = {1, 2, 3, 4, 5}; // 使用初始化列表进行初始化

return 0;
}

2. 元素访问

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>

using namespace std;

int main() {
vector<int> v = {1, 2, 3, 4, 5};

// 通过下标访问元素
cout << v[0] << endl; // 输出第一个元素
cout << v.at(1) << endl; // 输出第二个元素(带边界检查)

// 访问第一个和最后一个元素
cout << v.front() << endl; // 第一个元素
cout << v.back() << endl; // 最后一个元素

return 0;
}

3. 插入和删除元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <vector>
#include <iostream>

using namespace std;

int main() {
vector<int> v;

// 插入元素
v.push_back(1); // 在末尾插入 1
v.push_back(2); // 在末尾插入 2

// 删除元素
v.pop_back(); // 删除最后一个元素

// 插入到指定位置
v.insert(v.begin(), 0); // 在开头插入 0

// 删除指定位置的元素
v.erase(v.begin()); // 删除开头的元素

// 清空 vector
v.clear(); // 移除所有元素

return 0;
}

迭代器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <vector>
#include <iostream>

using namespace std;

int main() {
vector<int> v = {1, 2, 3, 4, 5};

// 使用迭代器遍历
for (vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
cout << *it << " ";
}
cout << endl;

// 使用范围 for 循环遍历
for (int n : v) {
cout << n << " ";
}
cout << endl;

return 0;
}

常用成员函数

  • 容量管理
    • size():返回当前元素数量。
    • capacity():返回当前分配的存储空间的容量。
    • reserve(size_type n):请求至少能容纳 n 个元素的存储空间。
    • shrink_to_fit():减少容量以适应当前大小。
  • 元素访问
    • operator[]:无边界检查的元素访问。
    • at(size_type n):带边界检查的元素访问。
    • front():返回第一个元素的引用。
    • back():返回最后一个元素的引用。
  • 修改容器
    • push_back(const T& value):在末尾插入元素。
    • pop_back():删除末尾的元素。
    • insert(iterator pos, const T& value):在指定位置插入元素。
    • erase(iterator pos):删除指定位置的元素。
    • clear():清空容器。

vector
http://pikachuxpf.github.io/posts/1b6e485b/
作者
Pikachu_fpx
发布于
2024年7月23日
许可协议