目录
1. 初始化和赋值
1.1 默认构造函数1.2 指定大小和初值1.3 使用列表初始化1.4 拷贝构造函数
2. 访问元素
2.1 使用 [] 操作符2.2 使用 at() 函数2.3 获取第一个和最后一个元素2.4 获取指向数据的指针
3. 修改元素
3.1 添加元素3.2 删除元素
4. 迭代器操作
4.1 使用迭代器遍历4.2 使用范围 for循环4.3 使用反向迭代器
5. 容量管理
5.1 使用 size() 和 capacity() 5.2 使用 reserve() 5.3 使用 resize()
6. 性能优化技巧
6.1 避免不必要的拷贝6.2 使用 shrink_to_fit() 6.3 避免过度扩展
7. 拓展知识
7.1 vector 的内存管理7.2 异常安全性7.3 与原始数组的比较在 C++ 中,vector是 STL(标准模板库)提供的一个动态数组容器,允许我们在运行时动态调整大小。vector 提供了许多方便的操作,使得它成为管理数据的理想选择。在这篇博客中,我们将探讨 vector 的一些常用操作方法,并提供一些拓展知识,帮助你更好地理解和使用这一强大的数据结构。
1. 初始化和赋值
1.1 默认构造函数vector创建一个空的vector。
1.2 指定大小和初值vector创建一个包含 5 个元素的vector,每个元素的初始值为 10。
1.3 使用列表初始化vector使用初始值列表来构造vector。
1.4 拷贝构造函数vector使用现有的vector进行拷贝构造。
2. 访问元素
2.1 使用 [] 操作符int val = v3[2];直接通过索引访问元素,但不检查边界。
2.2 使用 at() 函数int val = v3.at(2);与[]类似,但at()会检查索引是否合法,超出范围会抛出异常。
2.3 获取第一个和最后一个元素int first = v3.front();int last = v3.back();2.4 获取指向数据的指针int* data_ptr = v3.data();获取vector中元素存储数组的指针。
3. 修改元素
3.1 添加元素3.1.1 使用push_back()v3.push_back(6);在vector的末尾添加一个元素。
3.1.2 使用emplace_back()v3.emplace_back(7);在末尾原地构造一个元素,避免不必要的拷贝。
3.2 删除元素3.2.1 使用pop_back()v3.pop_back();移除vector末尾的元素。
3.2.2 使用erase()v3.erase(v3.begin() + 2);移除指定位置的元素。
3.2.3 使用clear()v3.clear();清空vector中的所有元素。
4. 迭代器操作
4.1 使用迭代器遍历for (vector4.2 使用范围 for循环for (int val : v3) {cout << val << " ";}4.3 使用反向迭代器for (vector
5. 容量管理
5.1 使用 size() 和 capacity()size_t size = v3.size();size_t capacity = v3.capacity();size()返回vector中的元素个数,capacity()返回当前分配的存储空间大小(可以容纳的元素个数)。
5.2 使用 reserve()v3.reserve(10);预先分配至少能容纳 10 个元素的空间。
5.3 使用 resize()v3.resize(8, 0);将vector的大小调整为 8,如果新大小大于当前大小,多出的元素将使用 0 进行初始化。
6. 性能优化技巧
6.1 避免不必要的拷贝在插入元素时,尽量使用emplace_back()而不是push_back(),可以减少一次对象的拷贝构造。
6.2 使用 shrink_to_fit()v3.shrink_to_fit();将多余的容量释放,减少内存占用。
6.3 避免过度扩展在已知vector大小大致范围时,提前使用reserve()分配足够的空间,避免扩展时频繁的内存分配。
7. 拓展知识
7.1 vector 的内存管理vector使用的是动态数组来管理元素。当需要扩展时,它会分配一个更大的内存块,将原有元素拷贝过去。为了避免频繁的内存分配,vector通常会预留比实际需要更多的空间,这就是capacity()和size()之间的差异。
7.2 异常安全性vector的许多操作,如push_back()、resize()等,可能会分配新的内存并移动对象。因此,在操作vector时要考虑异常安全性。大多数情况下,vector提供的是“强异常安全保证”,即如果发生异常,容器的状态不会被破坏。
7.3 与原始数组的比较vector提供了动态调整大小、自动管理内存和许多便利的操作,而原始数组则更为简单且性能稍高。在需要高效内存使用的地方,可以考虑使用std::array或原始数组,但在大多数情况下,vector是更安全和灵活的选择。
到此这篇关于C++ 中 vector 的常用操作方法的文章就介绍到这了,更多相关C++ vector 操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:C++ vector在多线程操作中出现内存错误问题及解决C++ vector容器 find erase的使用操作:查找并删除指定元素C++中vector操作方式详解(多种方式) C++ vector操作实现C++标准模板库vector的常用操作C++ 中Vector常用基本操作c++中stack、queue和vector的基本操作示例C++中vector容器的常用操作方法实例总结
