STL核心:vector动态数组完全指南
一、STL 整体介绍STL 是 C 标准模板库三大核心组件容器存放数据vector、string、list、map 等算法排序、查找、遍历、交换迭代器容器通用访问指针STL 优势无需手动造轮子全部封装成熟接口动态扩容、内存自动管理代码简洁、开发效率极高刷题、项目开发必备二、vector 容器核心概念vector 是动态数组完全替代原生普通数组原生数组长度固定容易越界vector运行时自动扩容长度可变安全高效连续内存存储支持下标随机访问头文件必须引入#include vector using namespace std;三、vector 四种常用初始化方式// 1. 空容器 vectorint v1; // 2. 指定大小默认初始化为0 vectorint v2(5); // 3. 指定大小初始值 vectorint v3(5, 10); // 4. 直接初始化列表 vectorint v4 {1,2,3,4,5};四、vector 增删改查 核心 API1. 增加元素vectorint v; v.push_back(10); // 尾部插入最常用 v.push_back(20);2. 修改元素支持下标直接修改和数组用法一致v[0] 100;3. 查询元素// 下标访问 cout v[0]; // 获取首尾元素 cout v.front(); cout v.back();4. 删除元素v.pop_back(); // 删除尾部元素 v.clear(); // 清空所有元素5. 容量与大小v.size(); // 当前元素个数 v.empty(); // 判断是否为空 v.resize(8); // 重新指定容器大小五、vector 三种遍历方式全掌握方式 1下标遍历最简单新手首选vectorint v {1,2,3,4,5}; for(int i 0; i v.size(); i) { cout v[i] ; }方式 2迭代器遍历STL 通用写法迭代器是所有容器的通用访问方式理解为容器专用指针for(vectorint::iterator it v.begin(); it ! v.end(); it) { cout *it ; }方式 3范围 for 遍历C11 极简写法for(int val : v) { cout val ; }六、vector 嵌套二维动态数组日常刷题、矩阵场景高频使用替代二维数组// 二维vector vectorvectorint arr; // 插入一行数据 arr.push_back({1,2,3}); arr.push_back({4,5,6}); // 双层循环遍历 for(int i 0; i arr.size(); i) { for(int j 0; j arr[i].size(); j) { cout arr[i][j] ; } cout endl; }七、完整综合实战案例需求录入数据、遍历、删除、清空、判空#include iostream #include vector using namespace std; int main() { vectorint v; // 尾部添加元素 v.push_back(15); v.push_back(25); v.push_back(35); // 下标修改 v[1] 99; // 范围for遍历 cout 容器元素; for(int num : v) { cout num ; } cout endl; // 首尾元素 cout 首元素 v.front() endl; cout 尾元素 v.back() endl; // 删除尾部 v.pop_back(); cout 删除后大小 v.size() endl; // 清空 v.clear(); if(v.empty()) { cout 容器已清空 endl; } return 0; }八、vector VS 原生数组 硬核对比表格特性普通数组vector 容器长度固定不可变动态自动扩容内存栈区 / 全局区堆区自动管理越界风险极易越界崩溃安全性更高常用操作无内置方法自带增删清空接口适用场景固定少量数据项目、刷题、批量数据结论实际开发与算法刷题优先使用 vector九、新手高频易错点忘记引入头文件#include vector使用下标访问不存在的位置造成越界混淆size()元素个数与内存容量清空数据误用pop_back循环删除直接用clear()二维 vector 嵌套书写格式错误
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2566546.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!