C++ 的 std::vector
是一个动态数组,它可以随着元素的添加或删除而自动调整其大小。它是 C++ 标准模板库(STL)的一部分,提供了许多方便的功能来操作序列容器。
基本使用
你可以像使用普通数组一样使用 std::vector
,但是不需要担心数组的大小。例如:
#include <iostream> | |
#include <vector> | |
int main() { | |
std::vector<int> v; // 创建一个空的整数向量 | |
v.push_back(1); // 在向量的末尾添加一个元素 | |
v.push_back(2); | |
v.push_back(3); | |
for (int i : v) { // 使用范围基于的 for循环遍历向量 | |
std::cout << i << " "; | |
} | |
std::cout << std::endl; | |
return 0; | |
} |
主要函数
std::vector
提供了许多成员函数,以下是一些常用的:
-
push_back(const T& value): 在向量的末尾添加一个元素。
v.push_back(4); |
2.pop_back(): 移除向量的最后一个元素。
if (!v.empty()) { | |
v.pop_back(); | |
} |
3.size(): 返回向量中的元素数量。
std::cout << "Size: " << v.size() << std::endl; |
4.empty(): 检查向量是否为空。
if (v.empty()) { | |
std::cout << "Vector is empty." << std::endl; | |
} |
5.clear(): 移除向量中的所有元素。
v.clear(); |
6.at(size_t pos): 访问位置 pos
的元素。如果 pos
超出了范围,将抛出 std::out_of_range
异常。
int val = v.at(0); |
7.operator[](size_t pos): 访问或修改位置 pos
的元素。如果 pos
超出了范围,则行为是未定义的(通常是访问违规)。
int val = v[0]; | |
v[0] = 5; |
8.begin() 和 end(): 返回指向向量第一个和“超出末尾”元素的迭代器。常用于范围基于的 for循环。
for (std::vector<int>::iterator it = v.begin(); it != v.end(); ++it) { | |
std::cout << *it << " "; | |
} |
9.front() 和 back(): 返回向量的第一个和最后一个元素的引用。
cpp复制代码
int first = v.front(); | |
int last = v.back(); |
10.insert(iterator pos, const T& value): 在迭代器 pos
指向的位置插入一个元素。
v.insert(v.begin(), 0); // 在向量的开始处插入0 |
11.erase(iterator pos): 移除迭代器 pos
指向的元素。
if (!v.empty()) { | |
v.erase(v.begin()); // 移除向量的第一个元素 | |
} |
12.resize(size_t new_size, const T& value = T()): 改变向量的大小。如果新大小大于当前大小,则添加新元素,其值为 value
;如果新大小小于当前大小,则移除多余的元素。
v.resize(5, 0); // 如果向量的大小小于5,则在末尾添加0,直到大小为5 |
这只是 std::vector
提供的函数的一小部分。可以查阅 C++ 标准库文档或任何好的 C++ 书籍以获取更详细的信息和更多功能。