C++编程:vector详解与使用技巧

需积分: 0 2 下载量 179 浏览量 更新于2024-08-03 收藏 568KB DOCX 举报
"C++ vector笔记" C++中的`std::vector`是一个非常重要的容器,它提供了动态数组的功能,允许在运行时改变其大小。在使用`vector`之前,需要包含头文件`<vector>`。`vector`的主要特点是可以自动管理内存,即在需要时自动扩展和收缩空间,同时保持元素的连续存储,这使得通过迭代器和指针访问元素都非常高效。 1.1 `vector`说明: - `std::vector`是一个顺序容器,它的内部实现是一个动态数组。 - `std::pmr::vector`是C++17引入的,使用了多态分配器,提供了更多的内存管理灵活性。 - 元素的存储是连续的,可以像处理普通数组一样处理`vector`的元素。 - `vector`的内存管理意味着它可能会比静态数组占用更多空间,以应对未来可能的增长。 - 当`vector`需要扩展时,会进行一次重分配,这个过程可能会有性能开销。`capacity()`函数可以查询当前分配的内存容量,而`shrink_to_fit()`(自C++11起)可以请求释放多余内存。 - 插入或移除元素的效率取决于操作的位置。在末尾插入或移除(push_back/pop_back)通常是常数时间,而插入或移除中间元素则是线性时间。 1.2 `vector`初始化: - 方式1:通过指定元素数量初始化,但不提供初始值,元素的值是未定义的。 ```cpp vector<int> a(10); ``` - 方式2:同时指定元素数量和初始值。 ```cpp vector<int> a(5, 1); ``` - 方式3:复制构造,将一个`vector`的值完全复制到另一个`vector`。 ```cpp vector<int> a(b); ``` - 方式4:还可以使用初始化列表来初始化`vector`,例如: ```cpp vector<int> a{1, 2, 3, 4, 5}; ``` 此外,`vector`还支持其他操作,如: - `size()`:获取`vector`当前包含的元素数量。 - `empty()`:检查`vector`是否为空。 - `push_back()`:在`vector`末尾添加一个元素。 - `pop_back()`:移除`vector`末尾的元素。 - `insert()`:在指定位置插入元素。 - `erase()`:删除指定位置的元素。 - `reserve()`:预先分配内存,避免不必要的重分配。 - `resize()`:改变`vector`的大小,可以插入或删除元素。 `vector`在C++中被广泛使用,因为它结合了动态数组的灵活性和数组的高效访问,是编程中处理动态数据集合的首选容器之一。在实际编程中,理解并熟练掌握`vector`的用法对于编写高效的C++代码至关重要。