搜索

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

4.93 MB 90 页 4 下载 101 浏览 0 评论 0 收藏
所属分类: 后端开发 / C++
语言 格式 评分
中文(简体)
.pptx
3
摘要
文档详细讲解了C++ STL中的vector容器,包括其构造函数、生命周期管理、内存分配策略以及插入操作。通过实例代码,展示了如何通过移动语义延续vector对象的生命周期,如何处理动态数组的内存分配问题,以及如何使用insert函数插入来自不同容器或数组的数据。文档还分析了resize函数的优化策略及其对内存的影响,并强调了STL设计中迭代器思想的重要性。
AI总结
### C++ STL 容器全解之 vector 总结 #### 1. **vector 容器的生命周期管理** - **全局变量的使用**:通过将 vector 对象声明为全局变量,可以延续其生命周期,使其在 `main` 函数退出后才释放。 - **应用场景**:在 lambda 表达式中访问对象时,全局变量的存在是为了告知编译器何时可以释放内存。 #### 2. **vector 容器的构造函数** - **动态数组功能**:vector 是一个模板类,用于存储可变长度的数组,数据存储在堆上。 - **示例**:`vector a;` 声明了一个用于存储整数的动态数组。 #### 3. **vector 容器的插入操作** - **插入规则**:`insert` 函数不直接接受 vector 对象,而是通过两个迭代器指定的区间进行插入。 - **支持类型**:不仅可以插入相同类型容器的元素,还可以插入 C 风格数组(通过 `std::begin` 和 `std::end` 函数)。 - **示例**: ```cpp vector a = {1, 2, 3, 4, 5, 6}; vector b = {233, 666, 985, 211}; a.insert(a.begin(), b.begin(), b.end()); ``` #### 4. **vector 的内存分配与 resize 策略** - **动态扩容**:`push_back` 在容量不足时会将容量扩大两倍,减少内存分配次数和元素移动次数。 - **resize 优化**:`resize` 在目标尺寸小于容量时不会释放内存,仅调整大小,保持指针有效性。 #### 5. **vector 的 resize 行为** - **容量调整**:`resize` 会根据新尺寸自动调整容量,如果新尺寸小于当前容量,不会释放内存。 - **示例**: ```cpp vector a = {1, 2, 3, 4, 5}; a.resize(2); // 容量不变,仅调整大小 a.resize(7); // 容量可能扩展至 10 ``` #### 6. **vector 的性能优化** - **内存分配**:`vector` 的初始容量为零,`push_back` 和 `resize` 会动态分配内存,减少移动次数。 - **指针有效性**:`resize` 到更小尺寸时,指向元素的指针仍然有效,不会失效。 #### 7. **总结** - **核心特性**:`vector` 是一个高效、灵活的动态数组,支持动态内存分配、批量操作和跨类型插入。 - **注意事项**:合理使用 `resize` 和 `push_back`,避免不必要的内存操作,确保指针的有效性。 通过上述内容,可以全面理解 `vector` 容器的功能、实现原理及其在 C++ 高性能编程中的应用。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 83 页请下载阅读 -
文档评分
请文明评论,理性发言.