C++ STL详解:array与vector操作指南
需积分: 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`适用于需要动态调整大小的情况,但在插入和删除元素时可能有额外开销。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2022-08-08 上传
2022-08-03 上传
2021-01-19 上传
2022-08-03 上传
2021-01-19 上传
2023-07-04 上传