c++ vector 2024
时间: 2024-10-20 09:01:16
(部分内容来自网络,其真实性存疑,为了避免对您造成误导,请谨慎甄别。)
std::vector
是 C++ 标准库中的一个动态数组容器,存放在 <vector>
头文件中。它可以存储任何类型的对象,并提供了动态调整大小的能力,使得使用起来灵活且方便。
特性
- 动态大小:std::vector
可以根据需要动态增加或减少元素的数量。
- 支持随机访问:与数组一样,可以使用下标访问元素。
- 自动内存管理:容器负责内存的分配和释放。
- 丰富的成员函数:支持多种操作,如插入、删除、排序、查找等。
用法示例
下面是一个 std::vector
的基本用法示例,包括创建、访问、修改、遍历和其他常用操作。
1. 包含头文件
在使用 std::vector
时,需要包含头文件:
cpp#include <vector>
#include <iostream>
2. 创建和初始化
cppstd::vector<int> vec1; // 创建一个空的整数 vector
std::vector<int> vec2(10); // 创建一个包含 10 个默认初始化元素的 vector
std::vector<int> vec3(10, 5); // 创建一个包含 10 个值为 5 的元素的 vector
std::vector<int> vec4 = {1, 2, 3, 4, 5}; // 使用初始化列表初始化
3. 添加和删除元素
cppvec1.push_back(1); // 在末尾添加元素
vec1.push_back(2);
vec1.push_back(3);
vec1.pop_back(); // 删除末尾元素
vec1.insert(vec1.begin() + 1, 10); // 在指定位置插入元素
vec1.erase(vec1.begin() + 1); // 删除指定位置的元素
vec1.clear(); // 清空 vector,删除所有元素
4. 访问元素
cppint first = vec4[0]; // 使用 operator[] 访问第一个元素
int second = vec4.at(1); // 使用 at() 访问第二个元素(提供边界检查)
if (!vec4.empty()) { // 检查 vector 是否为空
std::cout << "Size: " << vec4.size() << std::endl; // 获取当前元素数量
}
5. 遍历元素
cpp// 使用下标访问
for (size_t i = 0; i < vec4.size(); ++i) {
std::cout << vec4[i] << " ";
}
// 使用范围 for 循环
for (const auto& element : vec4) {
std::cout << element << " ";
}
// 使用迭代器遍历
for (std::vector<int>::iterator it = vec4.begin(); it != vec4.end(); ++it) {
std::cout << *it << " ";
}
6. 其他方法
cppsize_t size = vec4.size(); // 获取当前元素数量
size_t capacity = vec4.capacity(); // 获取当前容量
vec4.resize(20); // 改变大小,添加默认值
vec4.reserve(50); // 减少内存分配次数,预留空间
vec4.shrink_to_fit(); // 减少容量以适应当前大小
注意事项
- std::vector
的内存是连续的,这使得随机访问操作(如使用下标)非常高效。
- 添加元素时,如果超出了当前容量,std::vector
会自动扩展其容量,可能会导致性能下降,因此预留适当的容量可以提高效率。
- 当使用 at()
方法时,如果索引越界,会抛出 std::out_of_range
异常,而使用 operator[]
则不会进行边界检查。
小结
std::vector
是 C++ 中灵活且高效的数据存储工具,广泛应用于各种数据结构和算法实现。熟悉 std::vector
的用法及其特性是掌握 C++ 编程的重要基础。