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

【C++初阶】vector

请添加图片描述

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿
🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟
🌟🌟 追风赶月莫停留 🌟🌟
🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀
🌟🌟 平芜尽处是春山🌟🌟
🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟
🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅

🍋vector类

  • 🍑vector介绍
  • 🍑vector迭代器
  • 🍑vector构造
    • 🍍无参构造
    • 🍍有参构造
  • 🍑vector常用接口
    • 🍍 size()
    • 🍍capacity()
    • 🍍empty()
    • 🍍resize()
    • 🍍reserve()
  • 🍑vector增删查改
    • 🍍push_back()
    • 🍍pop_back()
    • 🍍insert()
    • 🍍erase()
    • 🍍swap()
    • 🍍operator[]

🍑vector介绍

  1. vector是表示可变大小数组的序列容器,和我们在C语言中学习的顺序表相类似

  2. vector的存储形式和数组一样,采用连续的空间存储,vector也可以用下标进行访问,但有一点和数组不同,vector空间满了,它的大小是变化的,空间满了,容器会自动扩容。

  3. 每当一个新的元素加入时,为了增加存储空间,vector并不会重新分配空间,而是会重新开辟一个新的vector容器,然后全部数据存储到新的vector。

  4. vector相较于其它容器,它访问元素效率更高,末尾添加和删除元素相对高效。对于其它不在末尾的删除和插入操作,效率更低。

vector容器和容器string的功能相类似,增删查改都差不多,不过唯一需要注意的是使用vector容器是需要带类型,而string 不需要带类型。

🍑vector迭代器

在这里插入图片描述
迭代器我们掌握前面四种就可以了。

begin()和end()是正向迭代器iterator, rbegin()和rend()是反向迭代器reverse_iterator.

在这里插入图片描述

这幅图简单的说明了迭代器的基本使用。

用遍历来演示迭代器的用法:

vector<int> vv;
vv.push_back(1);
vv.push_back(2);
vv.push_back(3);
vv.push_back(4);
vv.push_back(5);
vector<int>::iterator it = vv.begin();
while (it != vv.end())
{cout << *it << " ";it++;
}

在这里插入图片描述

🍑vector构造

🍍无参构造

vector<int> vv;
vector<char> cc;
vector<long long> aa;
vector<string> bb;
......

上面就是几种常见的无参构造,当然不仅仅只有这些。
vector类带的类型也可以是容器。

🍍有参构造

vector<int> vv(2,100);
vector<char> cc(2,'a');
vector<long long> aa(3,3.50);
vector<string> bb(2,"hello world");

在这里插入图片描述
从结果可以看到vector的有参构造和string差不多,但是vector必须要带次数,也就是vector的有参构造,类型为(int, void) 。

还有一种有参构造,就是利用迭代器进行有参构造

vector<int> vv(2,100);
vector<int> aa(vv.begin(), vv.end());

在这里插入图片描述

🍑vector常用接口

🍍 size()

size():获取数据个数

vector<int> vv;
vv.push_back(1);
vv.push_back(2);
vv.push_back(3);
vv.push_back(4);
vv.push_back(5);
cout << vv.size() << endl;

在这里插入图片描述

🍍capacity()

capacity(): 获取空间容量大小

🍍empty()

empty(): 判断是否为空,返回的是布尔值

vector<int>  vv;
cout << vv.empty() << endl;
vv.push_back(1);
cout << vv.empty() << endl;

在这里插入图片描述

🍍resize()

resize():改变vector的数据大小

vector<int>  vv;
cout << vv.size() << endl;
vv.resize(100);
cout << vv.size() << endl;

在这里插入图片描述

🍍reserve()

reserve():改变vector空间容量的大小

vector<int>  vv;
cout << vv.capacity() << endl;
vv.reserve(100);
cout << vv.capacity() << endl;

在这里插入图片描述

🍑vector增删查改

🍍push_back()

push_back():对vector进行尾插

	vector<int> vv;vv.push_back(1);vv.push_back(2);for (auto in : vv){cout << in << " ";in++;}cout << endl;vv.push_back(7);for (auto in : vv){cout << in << " ";in++;}cout << endl;vv.push_back(1);vv.push_back(2);for (auto in : vv){cout << in << " ";in++;}

在这里插入图片描述

🍍pop_back()

pop_back():对vector进行尾删。

vector<int> vv;
vv.push_back(1);
vv.push_back(2);
vv.push_back(3);
for (auto in : vv)
{cout << in << " ";in++;
}
cout << endl;
vv.pop_back();
for (auto in : vv)
{cout << in << " ";in++;
}
cout << endl;
vv.pop_back();
for (auto in : vv)
{cout << in << " ";in++;
}

在这里插入图片描述

🍍insert()

insert():对vector,进行插入操作。

vector<int> vv;
vv.push_back(1);
vv.push_back(2);
vv.push_back(3);vv.insert(vv.begin(), 44);
vv.insert(vv.end(), 99);for (auto in : vv)
{cout << in << " ";
}
cout << endl;

在这里插入图片描述

在vector中pos位置前进行插入,这幅图中vv.begin()和vv.end()代表pos。

🍍erase()

erase():对vector进行删除操作。

vector<int> vv;
vv.push_back(1);
vv.push_back(2);
vv.push_back(3);
for (auto in : vv)
{cout << in << " ";
}
cout << endl;vv.erase(vv.begin());for (auto in : vv)
{cout << in << " ";
}
cout << endl;

在这里插入图片描述
在vector中pos位置进行删除,vv.begin()代表的就是pos位置

🍍swap()

swap():对两个vector内容进行交换。

vector<int> vv(4, 99);
vector<int> aa(5, 1);
for (auto in : vv)
{cout << in << " ";
}
cout << endl;
for (auto in : aa)
{cout << in << " ";
}
cout << endl;swap(vv, aa);for (auto in : vv)
{cout << in << " ";
}
cout << endl;
for (auto in : aa)
{cout << in << " ";
}
cout << endl;

在这里插入图片描述

🍍operator[]

operator[]:让vector可以像数组一样可以对下标进行访问。

vector<int> vv;
vv.push_back(1);
vv.push_back(2);
vv.push_back(3);
vv.push_back(4);for (int i = 0; i < vv.size(); i++)
{cout << vv[i] << " ";
}
cout << endl;

在这里插入图片描述

关于本章知识点如果有不足或者遗漏,欢迎大家指正,谢谢!!!

请添加图片描述
请添加图片描述

相关文章:

【C++初阶】vector

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…...

elasticsearch 和 RediSerch

elasticsearch 和 RediSerch 前情提要 学习文章来自Docker 安装 ElasticSearch - 知乎 (zhihu.com) docker 安装 docker pull docker.io/elasticsearch:7.1.1启动! docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" b0e9f9f0…...

删除MySQL中所有表的外键

方法一&#xff1a; 原理 查询schema中所有外键名称然后拼接生成删除语句 第一步&#xff1a; SELECT CONCAT(ALTER TABLE ,TABLE_SCHEMA,.,TABLE_NAME, DROP FOREIGN KEY ,CONSTRAINT_NAME, ;) FROM information_schema.TABLE_CONSTRAINTS c WHERE c.TABLE_SCHEMA数据库名…...

webstorm新建vue项目相关问题

前言 这个迭代后端需求偏少&#xff0c;前端code的键盘都起火星子了。来了4个外包支持&#xff0c;1个后端3个前端&#xff0c;还是不够用啊。刚好趁这个机会稍微学习下vue&#xff0c;其实之前环境也配置过了&#xff0c;所以这里就不分享环境配置了&#xff0c;主要分享下新建…...

2024年高考考务人员网上培训参考答案

第1部分&#xff1a;单选题 1. 关于试卷保密室负责人职责&#xff0c;以下说法不正确的是&#xff08;B&#xff09; [2分] A. 负责试卷的接收、保管和发放工作 B. 试卷保密室内屋门锁钥匙和铁柜门锁钥匙必须由同一人保管 C. 试卷接收和发放应当当面清点试卷袋数量&#…...

JavaEE之线程(9) _定时器的实现代码

前言 定时器也是软件开发中的一个重要组件. 类似于一个 “闹钟”。 达到一个设定的时间之后&#xff0c;就执行某个指定好的代码&#xff0c;比如&#xff1a; 在受上述场景中&#xff0c;当客户端发出去请求之后&#xff0c; 就要等待响应&#xff0c;如果服务器迟迟没有响应&…...

纯前端实现将页面数据下载word文档中【包括图片,echarts图,表格,和对话 内容】

亲测真实有效 导出word步骤 在Vue中导出Word文档&#xff0c;可以使用第三方库file-saver和html-docx-js。首先需要安装这两个库&#xff1a; npm install file-saver html-docx-js --save "html-docx-js": "0.3.1","file-saver": "2.0.5…...

JavaSE——类和对象(二)~~封装

目录 一.封装 二.封装扩展之包 三.static成员 四. 代码块 五. 内部类&#xff08;重要&#xff09; 大家好呀&#xff0c;我是北纬&#xff0c;接着上节我们继续讲解Java中关于类和对象的相关知识&#xff0c;今天着重给大家介绍一下关于面向对象程序的特性之一——封装。…...

头歌OpenGauss数据库-I.复杂查询第9关:交换性别

任务描述 本关任务&#xff1a;给定一张 tb_Salary 表&#xff0c;如下所示&#xff0c;有 m 男性 和 f 女性的值。交换所有的 f 和 m 值&#xff08;例如&#xff0c;将所有 f 值更改为 m&#xff0c;反之亦然&#xff09;。 idnamesexsalary1Elonf70002Donnyf80003Careym60…...

冷干机使用中的注意事项

冷干机使用中的注意事项 使用冷干机时&#xff0c;以下是几个注意事项&#xff1a; 安装位置&#xff1a;选择一个通风良好、温度适宜的位置安装冷干机。确保周围环境没有过多的灰尘、腐蚀性气体或其他污染物&#xff0c;以免对冷干机的正常运行和寿命产生不利影响。 电源要求…...

OpenFeign微服务调用组件使用

前言&#xff1a;OpenFeign是可以跨服务、跨进程的调用方式。 什么是Feign Feign是Netflix开发的声明式、模版化的HTTP客户端。 优势: Feign可以做到使用 HTTP 请求远程服务时就像调用本地方法一样的体验&#xff0c;开发者完全感知不到这是远程方法&#xff0c;更感知不到这…...

文心智能体,零代码构建情感表达大师智能体

前言 随着智能体技术的突飞猛进&#xff0c;各行各业正迎来前所未有的变革与机遇。智能体&#xff0c;作为人工智能领域的重要分支&#xff0c;以其自主性、智能性和适应性&#xff0c;正逐步渗透到我们生活的每一个角落&#xff0c;成为推动社会进步和科技发展的新动力。 为了…...

es6

# 一、变量提升性 let和const没有变量提升性 console.log(str) 》undefined var str 你好console.log(num) 报错 let num 你好console.log(a) 报错 const a 你好function demo (){ let n 2; if(true){ let n 1; } console.log(n) //2 const 也是一样 var 是1 } demo()const…...

「贪心算法」柠檬水找零

力扣原题链接&#xff0c;点击跳转。 假设你的手里没有钱。你要卖柠檬水&#xff0c;每杯5块钱。每个顾客有可能会给你5块钱、10块钱或20块钱&#xff0c;你要拿手中的钱找零。如何判断你能否成功找零呢&#xff1f; 如果一上来就有顾客花10块钱或20块钱&#xff0c;你手中没…...

ssm139选课排课系统的设计与开发+vue

选课排课系统的设计与开发vue 摘 要 互联网的普及&#xff0c;改变了人们正常的生活学习及消费习惯&#xff0c;而且也大大的节省了人们的时间&#xff0c;由于各种管理系统都再不断的增加&#xff0c;更方便了用户&#xff0c;也改良了很多的用户习惯。对于选课排课系统查询…...

Python使用virtualenv创建虚拟环境

目录 第一步&#xff1a;安装virtualenv 第二步&#xff1a;选择一个文件夹用来放所创建的虚拟环境 第三步&#xff1a;创建虚拟环境 第四步&#xff1a;激活虚拟环境 第五步&#xff1a;退出虚拟环境 第六步&#xff1a;测试安装django 前提&#xff1a;你得有个python环…...

LuatOS-Air二次开发学习

LuatOS简介 在介绍LuatOS-Air之前&#xff0c;先介绍下LuatOS。 LuatOS是合宙自研的嵌入式操作系统。覆盖各类物联网应用场景&#xff0c;可运行于4G Cat.1/MCU/NB-IoT/2G/Wi-Fi/蓝牙等等不同的物联网主控芯片。通过完善的嵌入式操作系统LuatOS&#xff0c;使得物联网主控CPU更…...

【Linux】关于获取进程退出状态中的core dump标志补充

通过 wait/waitpid 可以获取子进程的退出状态, 从而判断其退出结果. 记录退出状态的 int 变量 status 的使用情况如下图所示: 如果是收到信号终止的话, 低 7 位为收到的终止信号, 而低第 8 位为 core dump 标志, core dump 标志有什么用呢? core dump 标志只存 0/1, 表示是否…...

Vitis HLS 学习笔记--抽象并行编程模型-控制驱动与数据驱动

目录 1. 简介 2. Takeaways 3. Data-driven Task-level Parallelism 3.1 simple_data_driven 示例 3.2 分析 hls::task 类 3.3 分析通道(Channel) 3.4 注意死锁 4. Control-driven Task-level Parallelism 4.1 理解控制驱动的 TLP 4.2 simple_control_driven 示例 4…...

Python爬取B站视频:封装一下

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️如遇文章付费&#xff0c;可先看…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...