C++标准模板库中的vector详解与应用

需积分: 10 3 下载量 170 浏览量 更新于2024-07-31 收藏 192KB DOC 举报
"C++中的`vector`容器详解" 在C++编程中,`std::vector`是一个非常重要的容器,它提供了动态数组的功能。`vector`是C++标准模板库(STL)的一部分,允许程序员存储、管理和操作一组同类型的元素。它的主要优点在于其动态性,可以在运行时调整大小,这与静态数组不同。 ### 基本用法 创建一个`vector`通常涉及指定元素的类型。例如,创建一个存储整数的`vector`: ```cpp #include <vector> using namespace std; vector<int> myVector; // 创建一个空的int vector ``` ### 动态添加元素 添加元素到`vector`的尾部可以使用`push_back()`函数: ```cpp myVector.push_back(1); // 添加元素1 myVector.push_back(2); // 添加元素2 ``` 此时,`myVector`的元素为`[1, 2]`。 ### 访问元素 可以通过索引来访问`vector`中的元素: ```cpp int firstElement = myVector[0]; // 访问第一个元素,即1 int secondElement = myVector[1]; // 访问第二个元素,即2 ``` ### 迭代器 `vector`提供了迭代器,用于遍历容器中的元素。以下是如何使用迭代器遍历`vector`: ```cpp vector<int>::iterator iter = myVector.begin(); for (; iter != myVector.end(); iter++) { cout << *iter << " "; // 输出迭代器指向的值 } ``` 这将打印出`1 2`。 ### 容量管理 `vector`会自动管理其容量,当需要更多空间时会自动扩展。可以使用`size()`获取当前元素数量,`capacity()`获取当前分配的内存空间。若需要预分配特定大小,可以使用`reserve()`: ```cpp myVector.reserve(5); // 预分配空间以容纳5个元素 ``` ### 插入和删除 可以使用`insert()`在任意位置插入元素,`erase()`删除指定位置的元素。例如: ```cpp myVector.insert(myVector.begin(), 0); // 在开头插入0,变为[0, 1, 2] myVector.erase(myVector.begin()); // 删除第一个元素,变为[1, 2] ``` ### 其他操作 `vector`还支持其他操作,如`clear()`清空所有元素,`empty()`检查是否为空,`pop_back()`移除最后一个元素,以及`resize()`改变`vector`的大小。 ### 性能考虑 虽然`vector`提供了便利,但插入和删除中间元素(特别是大量操作)可能不如`std::list`等其他容器高效,因为`vector`在内部是连续存储的,插入或删除可能涉及元素的移动。 ### 结论 `vector`是C++中一个强大且常用的容器,适用于需要动态数组功能的场景。了解和熟练使用`vector`的特性可以显著提高代码的效率和可读性。在实际编程中,根据具体需求选择合适的容器是优化程序性能的关键。