在 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);
标签:std,cout,val,元素,接口,vector,C++,type From: https://blog.csdn.net/Visual_progress/article/details/144909717