当前位置: 首页 > news >正文

C++ 学习笔记---容器---vector(后续会更新)

概念

可自动扩容的动态数组,不需要手动管理内存,可以根据元素数量自动扩容‘’

  • 连续内存存储
  • 随机访问速度快
  • STL 生态完整
  • 缓存友好

定义

定义空vector

vector<数据类型> 名;

定义空vector,并指定长度

vector<数据类型> 名(长度);

定义vector,并指定长度,且所有初识值都为0

vector<数据类型> 名(长度,值);

定义vector,并指定元素

vector<数据类型> 名={值1,值2};

访问元素

不越界检查访问元素 [ ]

名[下标];

越界检查访问元素 at

名.at(下标);

访问队首元素

名.front();

访问队尾元素

名.back();

得到最大值

*max_element(名.begin(), 名.end());

得到最小值

*min_element(名.begin(), 名.end());

获取大小

名.size(); 名.capacity();

区别:capacity 通常大于等于 size。capacity会提前申请更多空间,避免重复扩容

  • size:当前元素数量。
  • capacity:当前已分配的内存容量。

遍历

下标法

for (int i = 0; i < 名.size(); i++) { cout << 名[i] << " "; }

迭代器法

//正向迭代 for (auto it = 名.begin(); it != 名.end(); ++it) { cout << *it << " "; } //反向迭代 for (auto it = 名.rbegin(); it != 名.rend(); ++it) { cout << *it << " "; }

备注:

1.迭代器是编程中用于遍历集合元素的一种工具。它可以记住当前遍历的位置,并通过特定方法逐步访问集合中的元素。迭代器的核心特性是只能向前遍历,不能后退。

范围for循环

for(int element : 名){ cout<<element<<" "; }

添加元素 push_back()

队尾添加

名.push_back(元素);

指定位置添加

在下标n位置添加数值m

名.insert(名.begin()+n,m);

在下标m处添加n个数a

名.insert(名.begin()+m,n,a);

删除元素

队尾删除

名.pop_back()

删除下标n的元素

名.erase(名.begin()+n)
  • 名.begin() 表示从vector的最开头
  • n表示从开头往下移动几位

删除从下标从m到n-1的所有元素

名.erase(名.begin()+m,名.begin()+n);

遵循前包后不包原则

清空vector

名.clear()
特性数组vector
大小固定
自动扩容
连续内存
随机访问
STL支持较少完整
安全访问at()

题目练习

#include <bits/stdc++.h> using namespace std; int main(){ vector<int> v; int num; for(int i=0;i<9;i++){ cin>>num; v.push_back(num); } cout<<"遍历输出"<<endl; for(int e:v){ cout<<e<<" "; } cout<<endl; cout<<"删除队首,删除队尾,后输出"<<endl; v.erase(v.begin()); v.pop_back(); for(int e:v){ cout<<e<<" "; } cout<<endl; cout<<"删除下标2,后输出"<<endl; v.erase(v.begin()+2); for(int e:v){ cout<<e<<" "; } cout<<endl; cout<<"在下标5位置插入数字999,后输出"<<endl; v.insert(v.begin()+5,999); for(int e:v){ cout<<e<<" "; } cout<<endl; cout<<"删除下标2-4(包括4),后输出"<<endl; v.erase(v.begin()+2,v.begin()+5); for(int e:v){ cout<<e<<" "; } cout<<endl; cout<<"在下标1处添加2个888,后输出"<<endl; v.insert(v.begin()+1,2,888); for(int e:v){ cout<<e<<" "; } cout<<endl; cout<<"输出数组内的个数和空间 "<<endl; cout<<v.size()<<" "<<v.capacity(); return 0; }
http://www.jsqmd.com/news/873968/

相关文章:

  • 2026年探秘:专业高温轴流泵厂商究竟有何独特魅力? - 资讯纵览
  • 【游戏设计】游戏循环的奥秘
  • OpenClaw本地Agent网关机器人对接全解析:技能MCPRAG分层搞定!
  • 2026年东莞阳台改造综合实力榜最新公布:6家口碑扎实、交付稳健的企业推荐 - 优家闲谈
  • 大模型Function Calling的底层原理
  • 【Midjourney渐变风格终极指南】:20年AI视觉专家亲授7大高阶参数组合与色彩过渡黄金公式
  • 解决华硕灵耀X双屏Linux下扬声器不工作的问题
  • 如何用COMET框架实现专业级机器翻译质量评估:从零到精通的完整指南
  • Go语言依赖注入:构造函数注入
  • 【AI Agent社交应用实战指南】:2024年已验证的7大落地场景与避坑清单
  • 2026年重庆阳台改造优选指南:七维评估模型筛选出的6家靠谱企业 - 优家闲谈
  • 第1篇:开篇|Claude Code 源码泄露始末与核心价值
  • Scrapy-Pinduoduo:高效构建拼多多电商数据采集系统
  • 当传统CMS遇上AI Agent写作引擎:一场静默升级正在发生——5家上市公司已悄然切换,技术栈兼容性白皮书紧急发布
  • 清远搬工厂公司哪家好?口碑 TOP5 推荐 + 避坑指南 - 从来都是英雄出少年
  • 深度学习安全帽佩戴检测系统
  • Serverless扩缩容:实现自动弹性和成本优化
  • 清远搬厂公司口碑排名:5 家靠谱厂房搬家服务商推荐 - 从来都是英雄出少年
  • Go语言表驱动测试:测试数据组织
  • 收藏干货|2026 版 AI 大模型系统学习路线,小白程序员入门进阶指南
  • 工业级大模型学习之路021:LangChain零基础入门教程(第四篇):文档加载与文本分块技术
  • A 股开盘秘密:高开低走是陷阱还是机会?680 万条数据告诉你真相(上)
  • AI Agent自主操作软件实战手册(从PoC到生产环境全链路拆解)
  • 压力传感器一站式选购方法,全面了解广东犸力全系列产品优势 - 品牌速递
  • 新能源预测核心名词解释
  • 收藏!小白程序员必看:用8192维度理解大模型如何生成文字的循环奥秘
  • 汽车贴膜哪家专业 - 资讯纵览
  • Kubernetes StatefulSet深度解析:管理有状态应用的最佳实践
  • 美国景观变化监测系统:1985-2025年美国本土及海外地区的年度遥感监测数据,包含30米分辨率的变化、土地覆盖和土地利用三类产品
  • 独立开发者如何利用 Taotoken 的 Token Plan 套餐以更优成本启动 AI 项目