std::vector 常用用法汇总和代码用例
用法汇总
- 初始化
vector
。 - 添加元素(使用
push_back
)。 - 访问元素(使用
[]
运算符和at()
方法)。 - 获取大小(使用
size()
)。 - 遍历元素(使用范围基于的
for
循环和迭代器)。 - 删除元素(使用
pop_back()
和erase()
)。 - 访问最后一个元素(使用
back()
)。 - 清空
vector
(使用clear()
)。
完整示例代码
#include <iostream>
#include <vector>
int main() {
// 1. 初始化 vector
std::vector<int> vec;
// 2. 添加元素
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
// 3. 访问元素
std::cout << "第一个元素: " << vec[0] << std::endl;
std::cout << "第二个元素: " << vec.at(1) << std::endl;
// 4. 获取大小
std::cout << "Vector 大小: " << vec.size() << std::endl;
// 5. 遍历元素
std::cout << "遍历元素: ";
for (int i : vec) {
std::cout << i << " ";
}
std::cout << std::endl;
// 使用迭代器遍历
std::cout << "迭代器遍历: ";
for (auto it = vec.begin(); it != vec.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
// 6. 删除元素
vec.pop_back(); // 删除最后一个元素
// 使用 erase 删除第一个元素
vec.erase(vec.begin());
// 显示删除后的元素
std::cout << "删除元素后: ";
for (int i : vec) {
std::cout << i << " ";
}
std::cout << std::endl;
// 7. 访问最后一个元素
if (!vec.empty()) {
std::cout << "最后一个元素: " << vec.back() << std::endl;
}
// 8. 清空 vector
vec.clear();
std::cout << "清空后的 vector 大小: " << vec.size() << std::endl;
return 0;
}
在这段代码中,我演示了 std::vector
类的多种常用方法。代码首先展示了如何添加、访问和删除元素,然后展示了如何遍历 vector
,包括使用范围基于的 for
循环和迭代器。最后,代码展示了如何使用 back()
方法访问最后一个元素,并如何使用 clear()
方法清空整个 vector
。这些是你在使用 std::vector
时会经常遇到的操作。
.begin() 的用法
.begin()
是 std::vector
(以及其他标准模板库容器)中的一个成员函数,用于获取指向容器中第一个元素的迭代器。这个迭代器在多种情况下非常有用,特别是在需要遍历容器或者进行范围操作时。
-
遍历 Vector:
- 结合
.end()
,.begin()
可以在基于迭代器的循环中使用,以遍历vector
中的所有元素。for (auto it = vec.begin(); it != vec.end(); ++it) { std::cout << *it << " "; }
- 结合
-
修改元素:
- 通过迭代器,可以直接修改
vector
中的元素。if (!vec.empty()) { *vec.begin() = 10; // 修改第一个元素 }
- 通过迭代器,可以直接修改
-
删除元素:
- 使用
.erase()
方法和.begin()
可以删除vector
中的特定元素。vec.erase(vec.begin()); // 删除第一个元素
- 使用
-
范围操作:
.begin()
与.end()
结合可以用于执行范围操作,如构造新容器或算法。std::vector<int> vec2(vec.begin(), vec.end()); // 使用范围构造新 vector