【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;

在这里插入图片描述

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/15080.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在winnas中使用docker desktop遇到的问题及解决方法记录

最近在尝试从群晖转向winnas&#xff0c;一些简单的服务依然计划使用docker来部署。群晖的docker简单易用且稳定&#xff0c;在win上使用docker desktop过程中遇到了不少问题&#xff0c;在此记录一下以供后来人参考。 一、安装docker desktop后启动时遇到无法启动docker引擎 …

【Unity AR开发插件】四、制作热更数据-AR图片识别场景

专栏 本专栏将介绍如何使用这个支持热更的AR开发插件&#xff0c;快速地开发AR应用。 链接&#xff1a; Unity开发AR系列 插件简介 通过热更技术实现动态地加载AR场景&#xff0c;简化了AR开发流程&#xff0c;让用户可更多地关注Unity场景内容的制作。 “EnvInstaller…”支…

2024年电工杯数学建模竞赛A题完整解析 | 代码 论文分享

A 题 问题一1.1问题分析1.2第一问1.2.1指标定义1.2.2结果计算1.2.3关键因素分析 1.3第二问1.3.1模型建立1.3.2算法求解1.3.3求解结果 1.4第三问1.4.1模型建立1.4.2计算结果 第二题2.1 问题分析2.2第一问2.2.1指标计算 数据与代码代码分享完整资料 A题的问题一和问题二终于完成啦…

vue 纵向滚动菜单, 点击滚动到选中菜单

1 背景 需要设计一个纵向滚动菜单&#xff0c;要求丝滑点&#xff0c;默认显示选中菜单 2 思路 给定一个容器&#xff0c;样式包含overflow:hidden&#xff0c;默认高宽足够显示一个菜单&#xff08;以下用图标代替菜单&#xff09;&#xff0c;鼠标悬浮时增大容器高度&#…

电能抄表是什么?

1.电能抄表的概念和功能 电能抄表&#xff0c;说白了&#xff0c;是一种用于数据记录载入电力工程使用量的机器。它主要职能精确测量做好记录客户在一定时间内的耗电量&#xff0c;为供电公司提供准确的收费根据。电能抄表的应用&#xff0c;不仅方便了电费的清算&#xff0c;…

NSSCTF | [SWPUCTF 2021 新生赛]no_wakeup

打开题目后&#xff0c;点击三个&#xff1f;&#xff0c;发现是一个php序列化脚本 <?phpheader("Content-type:text/html;charsetutf-8"); error_reporting(0); show_source("class.php");class HaHaHa{public $admin;public $passwd;public function…

结构体变量的创建和初始化以及内存对齐

前言 嗨&#xff0c;我是firdawn&#xff0c;在本章中我们将介绍&#xff0c;结构体变量的创建和初始化&#xff0c;结构成员访问操作符以及结构体的内存对齐&#xff0c;下面是本章的思维导图&#xff0c;接下来&#xff0c;让我们开始今天的学习吧&#xff01; 一&#xf…

电脑远程控制另一台电脑怎么弄?

可以远程控制另一台电脑吗&#xff1f; “你好&#xff0c;我对远程访问技术不太了解。现在&#xff0c;我希望我的朋友可以远程控制我的Windows 10电脑&#xff0c;以便她能帮我解决一些问题。请问&#xff0c;有没有免费的方法可以实现这种远程控制&#xff1f;我该如何操作…

继“三级淋巴结”之后,再看看“单细胞”如何与AI结合【医学AI|顶刊速递|05-25】

小罗碎碎念 24-05-25文献速递 今天想和大家分享的是肿瘤治疗领域的另一个热点——单细胞技术&#xff0c;我们一起来看看&#xff0c;最新出炉的顶刊&#xff0c;是如何把AI与单细胞结合起来的。 另外&#xff0c;今天是周末&#xff0c;所以会有两篇文章——一篇文献速递&…

【Unitydemo制作】音游制作—模式玩法的实现

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;就业…

代码随想录算法训练营第十四天(py)| 二叉树 | 递归遍历、迭代遍历、统一迭代

1 理论基础 1.1 二叉树的种类 满二叉树 只有度为0和2的节点&#xff0c;且度为0的节点在同一层。 深度为k&#xff0c;有2^k-1个节点 完全二叉树 除了最底层可能没填满&#xff0c;其余每层节点数都达到最大。并且最底层节点全部集中在左边。 二叉搜索树 是一个有数值…

使用Python将Word文档中的图片提取并生成PowerPoint幻灯片

在这篇博客中&#xff0c;我们将学习如何使用Python将Word文档中的图片提取出来并生成一个PowerPoint幻灯片。我们将借助wxPython、python-docx和python-pptx这三个强大的库来实现这一目标。以下是实现这个功能的完整过程。 C:\pythoncode\new\wordTOppt.py 所需库 首先&…

htb_FormulaX(XSS)

信息收集 常规信息收集 nmap -sV -sC 10.10.11.6开放22&#xff0c;80端口 gobuster dir -u http://10.10.11.6/ -w /usr/share/Seclists-master/Discovery/Web-Content/directory-list-2.3-medium.txt一无所获 80端口-web 注册账户 Chat Now 和 Contact Us是重点 Chat …

台湾省军事演习路径规划:A*算法在复杂地形中的应用

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

【全开源】分类记账小程序系统源码(ThinkPHP+FastAdmin+UniApp)

基于ThinkPHPFastAdminUniAppvk-uView-uiVue3.0开发的一款支持多人协作的记账本小程序&#xff0c;可用于家庭&#xff0c;团队&#xff0c;组织以及个人的日常收支情况记录&#xff0c;支持周月年度统计。 &#xff1a;智能管理您的财务生活 一、引言&#xff1a;财务智能化…

HTTP 错误 404.3 - Not Found 问题处理

问题描述 HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本&#xff0c;请添加处理程序。如果应下载文件&#xff0c;请添加 MIME 映射。 解决对策

如何网页在线编辑 Office word 文档,并支域功能:创建域/插入域/替换域等

在日常在线办公场景中&#xff0c;我们经常会遇到一些复杂的文档编辑需求&#xff0c;特别是我们经常会遇到一些复杂的数学公式&#xff0c;会用到“域”功能&#xff0c;“域”功能便是一个高级且实用的工具。通过设置域&#xff0c;用户可以实现文档的自动化处理&#xff0c;…

【QT实战】汇总导航

✨Welcome 大家好&#xff0c;欢迎来到瑾芳玉洁的博客&#xff01; &#x1f611;励志开源分享诗和代码&#xff0c;三餐却无汤&#xff0c;顿顿都被噎。 &#x1f62d;有幸结识那个值得被认真、被珍惜、被捧在手掌心的女孩&#xff0c;不出意外被敷衍、被唾弃、被埋在了垃圾堆…

捕捉二氧化碳也能赚钱?深入探索CCUS技术与商业前景

引言 随着全球变暖和气候变化的加剧&#xff0c;如何有效减少二氧化碳&#xff08;CO2&#xff09;排放成为各国亟待解决的问题。近日&#xff0c;全球最大的二氧化碳捕集工厂在冰岛正式运营&#xff0c;这一消息引起了广泛关注。本文将深入探讨捕集二氧化碳技术&#xff08;C…

跟TED演讲学英文:Bring on the learning revolution! by Sir Ken Robinson

Bring on the learning revolution! Link: https://www.ted.com/talks/sir_ken_robinson_bring_on_the_learning_revolution Speaker: Sir Ken Robinson Date: February 2010 文章目录 Bring on the learning revolution!IntroductionVocabularySummaryTranscriptAfterword I…