C++ STL中的Vector详解:动态数组操作与示例

版权申诉
5星 · 超过95%的资源 3 下载量 47 浏览量 更新于2024-09-11 4 收藏 78KB PDF 举报
"C++ Vector用法详解" C++ Vector 是STL(Standard Template Library)中的一个核心组件,它是一个动态数组,提供了灵活的大小调整功能。由于它能够容纳不同类型的数据,因此在C++编程中被广泛用于存储和操作序列数据。 首先,使用Vector时需要包含头文件`<vector>`,并且可以通过两种方式来引用它:直接使用命名空间`using namespace std;`或指定std域`using std::vector;`。以下是一些基本的Vector操作: 1. **构造与初始化**: - 默认构造:`vector<int> v;`创建一个空的vector。 - 初始化:`vector<int> v = {1, 2, 3};`创建一个包含初始值的vector。 2. **插入元素**: - `push_back()`:在vector末尾添加元素,例如`v.push_back(4);`。 - `insert()`:在指定位置插入元素,如`v.insert(v.begin(), 0);`在开头插入0。 3. **删除元素**: - `pop_back()`:移除最后一个元素,如`v.pop_back();`。 - `erase()`:删除指定位置的元素或一段范围的元素。 4. **赋值与复制**: - `assign()`:用新的数据替换vector的所有元素,有两种形式: - `v.assign(beg, end)`:用[beg, end)区间的数据替换v。 - `v.assign(n, elem)`:用n个elem的拷贝填充v。 5. **访问元素**: - `at(index)`:安全地访问指定索引的元素,如果越界会抛出异常,如`v.at(2)`。 - `[]`运算符:直接访问元素,但无边界检查,如`v[2]`。 6. **迭代器操作**: - `begin()`:返回指向第一个元素的迭代器。 - `end()`:返回指向最后一个元素之后的位置的迭代器,标志着容器的结束。 - 可以使用迭代器进行遍历,如`for(auto it = v.begin(); it != v.end(); ++it) {...}`。 7. **容量与大小**: - `size()`:返回vector中的元素数量。 - `capacity()`:返回当前vector能容纳的元素数量,通常大于size(),表示预留的空间。 - `reserve(n)`:预分配空间,确保vector至少有n个可用位置。 - `resize(n)`:改变vector的大小,可以添加或删除元素,保持元素类型不变。 - `shrink_to_fit()`:请求vector的大小与实际元素数量一致,减少内存浪费。 8. **插入与删除效率**: - 在vector的中间插入或删除元素会导致所有后续元素的移动,这可能比其他容器如list或deque效率低。 - 在尾部操作(如push_back、pop_back)通常更快,因为它们只需调整容量。 9. **操作示例**: ```cpp vector<int> v1 = {10, 20}; vector<int> v2 = {30, 40}; v2.insert(v2.begin(), v1.begin(), v1.end()); // 将v1的元素插入到v2的开头 ``` C++ Vector 是一个强大的工具,其动态数组特性使得在需要灵活数组大小时非常方便,同时提供了丰富的操作方法。然而,在处理大量元素和需要高效插入/删除操作时,可能需要考虑其他STL容器,如list或deque。