C++ vector 容器
概述
vector
是 C++ 标准模板库(STL)中的一个重要组成部分,它提供了一种动态数组的数据结构。vector
容器能够根据需要自动调整其大小,这使得它在管理数据集合时非常灵活和高效。在 C++ 中,vector
通常用于存储一系列元素,这些元素可以是基本数据类型(如 int、double 等),也可以是复杂的数据结构(如自定义类)。
基本操作
创建 vector
创建 vector
的基本方式是通过包含 <vector>
头文件,并使用 std::vector
命名空间。例如,创建一个整数类型的 vector
可以如下进行:
#include <vector>
std::vector<int> myVector;
添加元素
vector
提供了多种添加元素的方法,包括 push_back()
,它可以在容器的末尾添加一个新元素:
myVector.push_back(10);
myVector.push_back(20);
访问元素
可以通过索引来访问 vector
中的元素,类似于访问数组元素:
int firstElement = myVector[0];
int secondElement = myVector[1];
修改元素
可以直接通过索引来修改 vector
中的元素:
myVector[0] = 100;
删除元素
可以使用 pop_back()
来删除 vector
末尾的元素:
myVector.pop_back();
遍历 vector
可以使用范围基于的 for
循环来遍历 vector
中的所有元素:
for (int element : myVector) {
std::cout << element << std::endl;
}
vector 的大小
vector
的大小可以通过 size()
方法获取:
int size = myVector.size();
vector 的容量
vector
的容量可以通过 capacity()
方法获取,它表示在不重新分配内存的情况下,vector
可以存储的元素数量:
int capacity = myVector.capacity();
高级特性
vector 的内存管理
vector
在内部维护一段连续的内存空间,当元素数量超过当前容量时,vector
会自动重新分配更大的内存空间,并将现有元素复制到新空间中。这个过程称为“重新分配”。为了避免频繁的重新分配,vector
通常会分配比当前所需更多的内存,这就是为什么 capacity()
通常大于 size()
。
迭代器
vector
提供了迭代器,它是一种用于访问容器元素的对象。迭代器可以用于各种 STL 算法,例如 std::sort()
:
std::sort(myVector.begin(), myVector.end());
vector 的效率
虽然 vector
提供了动态数组的所有优点,但在某些操作(如插入和删除元素)时可能会效率较低,因为这些操作可能会导致内存中的元素移动。因此,在选择数据结构时,应根据具体的应用场景来决定是否使用 vector
。
结论
vector
是 C++ 中一个强大且灵活的数据结构,适用于大多数需要动态数组的情况。通过了解其基本操作和高级特性,开发者可以更有效地使用 vector
来管理数据集合。