C++中的vector
是一个非常灵活且强大的容器,它属于标准模板库(STL)的一部分。vector
可以看作是一个能够动态改变大小的数组,它提供了随机访问接口,可以在常数时间内访问任意位置的元素。下面我将简要介绍vector
的基本使用。
包含头文件
要使用vector
,首先需要包含相应的头文件:
#include <vector>
创建vector
创建vector
的方式有多种:
- 直接声明一个空的
vector
:
std::vector<int> vec;
- 使用给定的初始大小创建
vector
,所有元素默认初始化(对于基本类型如int
,默认初始化为0):
std::vector<int> vec(10); // 创建一个有10个元素的vector,所有元素初始化为0
- 使用给定的初始大小和初始值创建
vector
:
std::vector<int> vec(10, 1); // 创建一个有10个元素的vector,所有元素初始化为1
- 使用初始值列表创建
vector
:
std::vector<int> vec = {1, 2, 3, 4, 5};
向vector中添加元素
- 使用
push_back
函数在vector
的末尾添加一个元素:
vec.push_back(6); // 在vec的末尾添加6
- 使用
insert
函数在指定位置插入一个或多个元素:
vec.insert(vec.begin() + 2, 99); // 在vec的第3个位置(索引为2)插入99
访问vector中的元素
- 使用下标操作符
[]
直接访问元素(注意:如果下标越界,行为是未定义的):
int second = vec[1]; // 访问vec的第二个元素(索引为1)
- 使用
at
成员函数安全地访问元素(如果下标越界,会抛出std::out_of_range
异常):
int second = vec.at(1); // 安全地访问vec的第二个元素
- 使用迭代器访问元素:
for(std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {
std::cout << *it << ' ';
}
// 或者使用C++11的范围for循环
for(int val : vec) {
std::cout << val << ' ';
}
删除vector中的元素
- 使用
pop_back
函数删除vector
末尾的元素:
vec.pop_back(); // 删除vec的最后一个元素
- 使用
erase
函数删除指定位置的元素或元素范围:
vec.erase(vec.begin() + 2); // 删除vec的第3个元素
// 或者删除一个范围
vec.erase(vec.begin() + 1, vec.begin() + 3); // 删除vec的第2个到第3个元素(包含第2个,不包含第3个)
vector的大小和容量
- 使用
size
函数获取vector
中元素的数量:
std::size_t size = vec.size();
- 使用
capacity
函数获取vector
当前分配的内存大小(能够存储的元素数量,可能大于实际存储的元素数量):
std::size_t capacity = vec.capacity();
- 可以通过
reserve
函数预留足够的空间来减少重新分配的开销:
vec.reserve(100); // 为vec预留至少100个元素的空间
总结
vector
是C++中一个非常实用的容器,它提供了动态数组的功能,并支持快速的随机访问。通过掌握上述基本操作,你可以有效地在C++程序中使用vector
来存储和管理数据。