C++ vector 容器
概述
C++的vector是一种非常强大的容器,它提供了动态数组的功能,可以自动调整大小以适应数据的增加或减少。vector是C++标准模板库(STL)中的一部分,它支持对元素的随机访问,并且在插入和删除操作时提供了高效的性能。
vector 的基本特性
动态数组
vector内部使用动态数组来存储元素。这意味着它可以在运行时增加或减少其容量,从而无需手动管理内存。
随机访问
vector支持对元素的随机访问,这意味着你可以使用索引来快速访问任何位置的元素。
大小可变
vector的大小是可变的,你可以使用push_back()和pop_back()来添加和删除元素。
性能
vector在插入和删除元素时通常比其他容器(如list)要快,因为它支持连续内存。
vector 的使用
创建 vector
cpp
#include <vector>
int main() {
std::vector<int> myVector;
return 0;
}
添加元素
cpp
#include <vector>
int main() {
std::vector<int> myVector;
myVector.push_back(10);
myVector.push_back(20);
return 0;
}
访问元素
cpp
#include <vector>
int main() {
std::vector<int> myVector = {1, 2, 3, 4, 5};
int firstElement = myVector[0]; // 访问第一个元素
return 0;
}
修改元素
cpp
#include <vector>
int main() {
std::vector<int> myVector = {1, 2, 3, 4, 5};
myVector[2] = 100; // 将第三个元素修改为100
return 0;
}
删除元素
cpp
#include <vector>
int main() {
std::vector<int> myVector = {1, 2, 3, 4, 5};
myVector.pop_back(); // 删除最后一个元素
return 0;
}
获取大小
cpp
#include <vector>
int main() {
std::vector<int> myVector = {1, 2, 3, 4, 5};
int size = myVector.size(); // 获取vector的大小
return 0;
}
vector 的性能分析
时间复杂度
push_back()和pop_back():平均情况下为 O(1)。at():平均情况下为 O(1)。front()和back():平均情况下为 O(1)。operator[]:平均情况下为 O(1)。erase():平均情况下为 O(n),因为可能需要移动后续元素。insert():平均情况下为 O(n),因为可能需要移动后续元素。
空间复杂度
vector的空间复杂度取决于其存储的元素数量。在添加元素时,vector会自动增加其容量,这可能会导致额外的内存分配。
vector 的注意事项
vector不会自动释放内存,所以你需要确保在不再需要时使用clear()或析构函数来释放内存。- 在添加大量元素时,
vector可能会进行多次内存分配和复制,这可能会导致性能问题。在这种情况下,可以考虑使用其他容器,如std::deque或std::list。
总结
vector是C++中非常强大和常用的容器之一。它提供了动态数组的功能,支持随机访问和大小可变。在处理大量数据时,vector是一个很好的选择。然而,在使用vector时,需要注意性能和内存管理问题。