vector
在 C++ 中,vector 是标准模板库(STL)提供的动态数组容器。它具有动态调整大小的能力,可以存储任何类型的数据。vector 提供了方便的接口来进行元素的插入、删除、访问等操作。与传统的数组不同,vector 可以根据需要自动扩展其容量,使得在使用时更加灵活和高效。
vector 的基本操作
1. 创建 vector
vector 可以通过多种方式进行初始化,如空初始化、指定大小初始化以及通过列表初始化。
#include <iostream>
#include <vector>
int main() {
// 空初始化
std::vector<int> vec1;
// 使用指定大小初始化
std::vector<int> vec2(5, 10); // 创建一个大小为 5,每个元素为 10 的 vector
// 使用初始化列表初始化
std::vector<int> vec3 = {1, 2, 3, 4, 5};
// 打印初始化后的 vector
for (int val : vec2) {
std::cout << val << " "; // 输出: 10 10 10 10 10
}
std::cout << std::endl;
return 0;
}
`
2. 添加元素
使用 push_back 可以将元素添加到 vector 的末尾:
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3};
// 添加元素到末尾
vec.push_back(4);
for (int val : vec) {
std::cout << val << " "; // 输出: 1 2 3 4
}
return 0;
}
3. 访问元素
可以使用索引操作符([])或 at() 函数来访问 vector 中的元素。at() 会进行范围检查,而 [] 不会。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {10, 20, 30, 40};
std::cout << "Element at index 1: " << vec[1] << std::endl; // 输出: 20
std::cout << "Element at index 2: " << vec.at(2) << std::endl; // 输出: 30
return 0;
}
4. 删除元素
vector 提供了多种方法来删除元素:
- 使用
pop_back()删除末尾的元素。 - 使用
erase()删除指定位置的元素。 - 使用
clear()清空所有元素。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {10, 20, 30, 40};
// 删除末尾元素
vec.pop_back();
// 删除指定位置的元素
vec.erase(vec.begin() + 1); // 删除第二个元素
// 清空所有元素
vec.clear();
std::cout << "Size after clear: " << vec.size() << std::endl; // 输出: 0
return 0;
}
5. 访问大小和容量
vector 提供了 size() 和 capacity() 函数来获取当前容器的大小和容量。
size()返回容器中当前元素的数量。capacity()返回容器在不重新分配内存的情况下可以容纳的最大元素数量。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4};
std::cout << "Size: " << vec.size() << std::endl; // 输出: 4
std::cout << "Capacity: " << vec.capacity() << std::endl; // 输出: 4
return 0;
}
6. 迭代器
vector 支持使用迭代器进行遍历,可以使用 begin() 和 end() 获取迭代器。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4};
// 使用迭代器遍历
for (auto it = vec.begin(); it != vec.end(); ++it) {
std::cout << *it << " "; // 输出: 1 2 3 4
}
return 0;
}
vector 的优势
- 动态扩展:
vector能够自动扩展大小,避免了固定大小数组的限制。 - 随机访问:
vector提供常数时间的随机访问,因此可以高效地访问任何元素。 - 内存连续性:
vector内部是基于动态数组实现的,因此其元素在内存中是连续存储的,这使得它比其他容器(如链表)更具性能优势。
vector 的局限性
- 插入/删除效率:在
vector中间插入或删除元素的效率较低,因为这需要移动其他元素来保持顺序。 - 内存重分配:当
vector超过当前容量时,会重新分配内存,这可能导致性能下降。
小结
vector 是一个非常灵活且高效的容器,适用于需要频繁访问和动态调整大小的场景。掌握 vector 的基本操作和使用场景,可以有效提高 C++ 编程的效率和灵活性。
相关内容
- 算术运算符 本节将介绍 C++ 中的算术运算符,包括加法、减法、乘法、除法、取余等,帮助你理解如何进行基本的数学运算。
- 位运算符 本节将介绍 C++ 中的位运算符,帮助你理解如何操作整数的二进制位,并进行高效的数据处理。
- 类型转换 本节将介绍 C++ 中的类型转换,包括隐式转换、显式转换和强制类型转换等方式,帮助你理解如何处理不同类型的转换。
- 条件语句 本节将深入探讨 C++ 中的条件语句,包括 `if`、`else`、`else if` 以及 `switch` 语句。通过条件语句,程序可以根据不同的输入或状态...
- 分支跳转 本节将讲解 C++ 中的分支跳转语句,包括 `if`、`else`、`switch`、`break`、`continue` 和 `goto`,这些语句有助于控制...
- 逻辑与关系运算符 本节将介绍 C++ 中的逻辑运算符和关系运算符,帮助你理解如何处理布尔值以及进行条件判断。