C++编程:vector详解与使用技巧
需积分: 0 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++代码至关重要。
2020-12-26 上传
2023-04-13 上传
2022-09-20 上传
2022-07-13 上传
2011-09-23 上传
做人求其滴
- 粉丝: 726
- 资源: 5
最新资源
- 掌握压缩文件管理:2工作.zip文件使用指南
- 易语言动态版置入代码技术解析
- C语言编程实现电脑系统测试工具开发
- Wireshark 64位:全面网络协议分析器,支持Unix和Windows
- QtSingleApplication: 确保单一实例运行的高效库
- 深入了解Go语言的解析器组合器PARC
- Apycula包安装与使用指南
- AkerAutoSetup安装包使用指南
- Arduino Due实现VR耳机的设计与编程
- DependencySwizzler: Xamarin iOS 库实现故事板 UIViewControllers 依赖注入
- Apycula包发布说明与下载指南
- 创建可拖动交互式图表界面的ampersand-touch-charts
- CMake项目入门:创建简单的C++项目
- AksharaJaana-*.*.*.*安装包说明与下载
- Arduino天气时钟项目:源代码及DHT22库文件解析
- MediaPlayer_server:控制媒体播放器的高级服务器