在 C++ 中,vector 是一个非常常用的动态数组容器,它定义在 <vector> 头文件中。以下是 vector 的一些常用接口及其介绍:
构造函数
vector():默认构造函数,创建一个空的vector。
std::vector<int> v;
vector(size_type n, const value_type& val = value_type()):创建一个包含n个元素的vector,每个元素都初始化为val。
std::vector<int> v(5, 10); // 包含5个值为10的元素
vector(const vector& other):复制构造函数,创建一个与other相同的vector。
std::vector<int> v1(3, 1);
std::vector<int> v2(v1); // v2 是 v1 的副本
vector(InputIt first, InputIt last):使用迭代器范围[first, last)内的元素初始化vector。
int arr[] = {1, 2, 3};
std::vector<int> v(arr, arr + 3); // 使用数组元素初始化 vector
容量相关
size():返回vector中元素的个数。
std::vector<int> v = {1, 2, 3};
std::cout << v.size() << std::endl; // 输出 3
capacity():返回当前分配的内存中可以容纳的元素个数。
std::vector<int> v;
v.reserve(10);
std::cout << v.capacity() << std::endl; // 输出 10
empty():判断vector是否为空。
std::vector<int> v;
if (v.empty()) {
std::cout << "vector is empty" << std::endl;
}
reserve(size_type n):请求改变容量大小,以至少容纳n个元素。
std::vector<int> v;
v.reserve(10); // 预分配能容纳10个元素的空间
resize(size_type n, value_type val = value_type()):改变vector的大小为n。如果n小于当前大小,会删除多余的元素;如果n大于当前大小,会在末尾添加值为val的元素。
std::vector<int> v = {1, 2, 3};
v.resize(5, 0); // v 变为 {1, 2, 3, 0, 0}
元素访问
operator[](size_type n):返回索引为n的元素的引用,不进行边界检查。
std::vector<int> v = {1, 2, 3};
std::cout << v[1] << std::endl; // 输出 2
at(size_type n):返回索引为n的元素的引用,进行边界检查,如果n超出范围会抛出std::out_of_range异常。
std::vector<int> v = {1, 2, 3};
try {
std::cout << v.at(1) << std::endl; // 输出 2
std::cout << v.at(10) << std::endl; // 抛出 std::out_of_range 异常
} catch (const std::out_of_range& e) {
std::cerr << e.what() << std::endl;
}
front():返回第一个元素的引用。
std::vector<int> v = {1, 2, 3};
std::cout << v.front() << std::endl; // 输出 1
back():返回最后一个元素的引用。
std::vector<int> v = {1, 2, 3};
std::cout << v.back() << std::endl; // 输出 3
修改操作
push_back(const value_type& val):在vector的末尾添加一个元素。
std::vector<int> v = {1, 2, 3};
v.push_back(4); // v 变为 {1, 2, 3, 4}
pop_back():删除vector末尾的元素。
std::vector<int> v = {1, 2, 3, 4};
v.pop_back(); // v 变为 {1, 2, 3}
insert(iterator pos, const value_type& val):在指定位置pos插入一个元素val。
std::vector<int> v = {1, 2, 4};
v.insert(v.begin() + 2, 3); // v 变为 {1, 2, 3, 4}
erase(iterator pos):删除指定位置pos的元素。
std::vector<int> v = {1, 2, 3, 4};
v.erase(v.begin() + 2); // v 变为 {1, 2, 4}
erase(iterator first, iterator last):删除迭代器范围[first, last)内的元素。
std::vector<int> v = {1, 2, 3, 4, 5};
v.erase(v.begin() + 1, v.begin() + 3); // v 变为 {1, 4, 5}
clear():删除vector中的所有元素,将大小变为 0,但容量不变。
std::vector<int> v = {1, 2, 3};
v.clear();
std::cout << v.size() << std::endl; // 输出 0
其他
swap(vector& other):交换当前vector与other的内容。
std::vector<int> v1 = {1, 2, 3};
std::vector<int> v2 = {4, 5, 6};
v1.swap(v2);


1728

被折叠的 条评论
为什么被折叠?



