ppt文档 C++高性能并行编程与优化 - 课件 - 13 C++ STL 容器全解之 vector

4.93 MB 90 页 0 评论
语言 格式 评分
中文(简体)
.pptx
3
摘要
文档详细阐述了C++ STL中vector容器的功能和实现细节。vector是一个长度可变的数组,其数据存储在堆上,是一个模板类,声明时需要指定元素类型。(vector<int> a; 是声明一个int类型元素的动态数组。)文档还讨论了vector的resize操作,当目标长度大于当前容量时,会重新分配更大的连续内存,并将原数组部分移动过去,多余部分用0填充,这会导致data指针和迭代器失效。另外,文档重点介绍了迭代器的概念及其运算符重载实现,amburg说道:迭代器是STL中容器和算法之间的桥梁,通过运算符重载(如++、*等)模仿指针行为,方便使用。前置自增(++p)和后置自增(p++)在返回值上有细微差别,前者返回自增后值,后者返回自增前值。侯捷老师建议尽可能多用前置自增以提高效率。
AI总结
## C++ STL 容器全解之 vector 总结 C++ 标准库中 vector 容器类似于长度可变的数组,存储于堆内存中,支持动态扩容。以下是 vector 容器的核心特点和相关知识: 1. **Vector 容器特性**: - **模板类**:声明时需指定元素类型,如 `vector a;`。 - **动态数组**:元素存储在堆上,长度可变。 - **生命周期管理**:全局变量的生命周期由 C++ 编译器管理,会在进入 `main` 函数前构造,在 `main` 返回后解构。 2. **容器 resize 操作**: - 当 `resize` 目标长度超过当前容量时,需重新分配更大连续内存,旧数据迁移,新位置用 0 填充。 - 重新分配导致元素地址变动,旧迭代器及 `data` 指针失效。 3. **迭代器(Iterator)**: - 作为 STL 容器与算法的桥梁,模仿指针行为通过运算符重载实现。 - 迭代器的 `++` 运算符有两种形式:前置 `++p` 和后置 `p++`。 - **前置自增**:返回自增后值,高效,支持链式操作。 - **后置自增**:返回旧值,执行后指针递增,效率较低。 - 推荐使用前置自增以提高效率。 4. **C++ 标准库五大件**: - **容器(Container)**:如 `vector`, `list` 等。 - **迭代器(Iterator)**:实现指针行为,适配不同容器。 - **算法(Algorithm)**:标准功能实现,如排序、搜索。 - **仿函数(Functor)**:重载 `()` 运算符的类,用于算法定制。 - **分配器(Allocator)**:内存管理接口,定制内存策略。 了解上述内容,有助于高效使用 vector 容器及其相关迭代器,合理管理内存,避免性能问题。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 83 页请下载阅读 -
文档评分
请文明评论,理性发言.