C++ STL详解:array与vector操作指南

需积分: 0 0 下载量 79 浏览量 更新于2024-06-30 收藏 94KB DOCX 举报
"该文档是关于STL(Standard Template Library, 标准模板库)的详细终稿,主要涵盖了`array`和`vector`两种容器的成员函数和操作。" 在C++的STL中,`array`和`vector`是两种常用的容器,它们都用于存储元素序列,但各有特点和适用场景。 `array`是一种固定大小的容器,它提供了一种静态数组的抽象。`array`的主要成员函数包括: 1. `begin()`和`end()`:返回数组的迭代器,分别指向首元素和超过末元素的位置。 2. `rbegin()`和`rend()`:返回反向迭代器,用于反向遍历数组。 3. `cbegin()`和`cend()`:返回常量迭代器,用于只读遍历。 4. `crbegin()`和`crend()`:返回反向常量迭代器,用于反向只读遍历。 5. `size()`:返回数组的元素数量。 6. `max_size()`:返回数组的最大可容纳元素数量。 7. `empty()`:检查数组是否为空。 8. `operator[]`:通过下标访问元素,无边界检查。 9. `at()`:通过下标访问元素,有边界检查。 10. `front()`和`back()`:分别获取第一个和最后一个元素。 11. `data()`:返回存储数组元素的原始指针。 12. `fill()`:用指定值填充整个数组。 13. `swap()`:交换两个数组的内容。 14. `get(array)`:可能是指获取数组对象的操作。 15. `relationaloperators(array)`:比较运算符,如等于、不等于、小于等,用于比较两个`array`对象。 `vector`是一种动态数组,大小可以随需调整。其成员函数包括: 1. `vector::vector()`和`~vector()`:构造和析构函数。 2. `operator=`:赋值操作符,用于复制一个`vector`。 3. `begin()`, `end()`, `rbegin()`, `rend()`, `cbegin()`, `cend()`, `rcbegin()`, `rcend()`:与`array`类似,提供不同类型的迭代器访问。 4. `size()`和`max_size()`:获取当前元素数量和最大可容纳元素数。 5. `resize()`:改变容器大小,可以添加或删除元素。 6. `capacity()`:返回当前分配的内存空间,即可以容纳的元素数量。 7. `reserve()`:预先分配内存,避免频繁的内存重新分配。 8. `shrink_to_fit()`:请求将容量减小到实际元素数,优化内存使用。 9. `operator[]`和`at()`:访问元素,`at()`同样提供边界检查。 10. `front()`和`back()`:获取首尾元素。 11. `data()`:返回元素的原始指针。 12. `assign()`:替换现有元素序列。 13. `push_back()`:在末尾添加元素。 14. `pop_back()`:移除最后一个元素。 15. `insert()`:在指定位置插入元素。 16. `erase()`:删除指定位置的元素。 17. `swap()`:交换两个`vector`的内容。 18. `clear()`:清空`vector`的所有元素。 19. `emplace()`和`emplace_back()`:在指定位置或末尾直接构造元素,避免复制。 20. `get_allocator()`:获取`vector`的分配器对象。 21. `relationaloperators(vector)`:比较运算符,用于`vector`之间的比较。 22. `swap(vector)`:独立的`swap`函数,用于交换两个`vector`的内容。 `array`和`vector`的选择通常基于对内存管理的需求。`array`适合大小已知且不会改变的情况,提供更好的性能;而`vector`适用于需要动态调整大小的情况,但在插入和删除元素时可能有额外开销。