【教程】C++语言基础学习笔记(五)——Vector向量

文首标志
写在前面:
如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持!


【C++语言基础学习】系列文章

第一章 《项目与程序结构》
第二章 《数据类型》
第三章 《运算符》
第四章 《流程控制》
第五章 《Vector向量》
第六章 《String字符串》
第七章 《Array数组》
第八章 《函数》
第九章 《指针》
第十章 《结构体》


文章目录

  • 【C++语言基础学习】系列文章
  • 一、Vector初始化
  • 二、Vector成员函数


Vector(向量)是一个封装了动态大小数组的顺序容器(Sequence Container),跟任意其他类型容器一样,能够存放各种类型的对象。可以简单的认为,向量是一个能够存放任意类型的动态数组。
Vector容器有以下特性。

  1. 顺序序列:顺序容器的元素按照严格的线性顺序排序,可以通过元素在序列中的位置访问对应的元素。
  2. 动态数组:支持对序列中的任意元素进行快速直接访问,甚至可以通过指针进行该操作,提供了在序列末尾相对快速地添加/删除元素的操作。
  3. 能够感知内存分配器(Allocator-aware)容器使用一个内存分配器对象来动态地处理它的储存需求。

一、Vector初始化

想要使用vector,就必须添加类似<iostream>的系统库头文件<vector>

#include <vector>

而在创建vector对象时遵循以下初始化语法。

std::vector<类型> 变量名 = {元素1, 元素2, ...};

同时,若想使用重复值初始化,也可以使用以下语法。

std::vector<类型> 变量名(个数,);

使用test.cpp文件进行代码实验。

#include "test.h"
#include <iostream>
#include <vector>using namespace std;void test::Test()
{vector<int> vec1;// 空的整型vec1,无元素vector<float> vec2(3);// 容器大小为3个元素的浮点型vec2,编译器自动默认为初始值vector<string> vec3(3, "a");// 容器大小为3个元素的字符串vec3,并且初始值为avector<string> vec4(vec3);// 令字符串vec4复制vec3的内容cout << "vec1:" << endl;for (int i = 0; i < vec1.size(); i++){cout << vec1[i] << endl;}cout << "vec2:" << endl;for (int i = 0; i < vec2.size(); i++){cout << vec2[i] << endl;}cout << "vec3:" << endl;for (int i = 0; i < vec3.size(); i++){cout << vec3[i] << endl;}cout << "vec4:" << endl;for (int i = 0; i < vec4.size(); i++){cout << vec4[i] << endl;}
}

以上代码建立了四个vector容器,第一个是空的整型vector,第二个则是容器大小为3个元素的浮点型vector,第三个是容器大小为3个元素并且初始值都为a的字符串vector,最后的第四个vector则复制第三个vector的内容。然后遍历打印各个vector的内容。
返回结果如下。

vec1:
vec2:
0
0
0
vec3:
a
a
a
vec4:
a
a
a

由返回结果可以看到,vec1果然为空;vec2虽然返回了三个元素,但由于没有设置初始值,所以元素初始值均默认为0;vec3则返回了设置的初始值a,相应的vec4完全相同地返回了和vec3同样的结果。

二、Vector成员函数

Vector容器在使用时,提供了许多实用的成员函数来操作和管理向量(vector),以下是常用的std::vector的成员函数。

函数描述
push_back()将元素添加到向量的末尾
pop_back()删除向量末尾的元素
size()返回向量中元素的数量
resize()更改向量中元素的数量
max_size()返回向量所能容纳的最大元素数量
capacity()返回向量当前占用空间大小
reserve()更改向量当前占用空间大小
at()访问指定索引处的元素,提供越界检查
begin()返回向量开始指针,即第一个元素头部的指针
end()返回向量结束指针,即最后一个元素尾部的指针
rbegin()返回反转向量开始指针,即最后一个元素头部的指针
rend()返回反转向量结束指针,即第一个元素尾部的指针
front()访问向量第一个元素
back()访问向量最后一个元素
clear()清空向量中的所有元素
erase()删除向量中指定位置的一个或多个元素
empty()检查向量是否为空
swap()与另一个向量交换数据

对于以上所罗列出的各种vector成员函数,并非所有都非常常用,以下仅对较为常用的几个成员函数作出介绍。
使用test.cpp代码进行实验。

#include "test.h"
#include <iostream>
#include <vector>using namespace std;void test::Test()
{vector<int> vec1;// empty()方法if (vec1.empty()){cout << "vec1是空" << endl;}// push_back()方法vec1.push_back(1);vec1.push_back(99);// pop_back()方法vec1.pop_back();// size()方法for (int i = 0; i < vec1.size(); i++){cout << vec1[i] << endl;}
}

返回结果如下。

vec1是空
1

在没有设置vec1的内容时,使用了一个empty()方法来返回vec1是否为空的字符串;随后的push_back()方法添加1和99两个元素,但之所以没有返回1和99,两个for循环的遍历结果,是因为之后用的pop_back()删除了尾部的99元素。


我是EC,一个永远在学习中的探索者,关注我,让我们一起进步!

文末标志

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

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

相关文章

【OpenAI Sora】开启未来:视频生成模型作为终极世界模拟器的突破之旅

这份技术报告主要关注两个方面&#xff1a;&#xff08;1&#xff09;我们的方法将各种类型的视觉数据转化为统一的表示形式&#xff0c;从而实现了大规模生成模型的训练&#xff1b;&#xff08;2&#xff09;对Sora的能力和局限性进行了定性评估。报告中不包含模型和实现细节…

jenkins 发布远程服务器并部署项目

安装参考另一个文章 配置maven 和 jdk 和 git 注意jdk的安装目录&#xff0c;是jenkins 安装所在服务器的jdk目录 注意maven的目录 是jenkins 安装所在服务器的maven目录 注意git的目录 是jenkins 安装所在服务器的 git 目录 安装 Publish Over SSH 插件 配置远程服务器 创…

【AIGC】Stable Diffusion的采样器入门

在 Stable Diffusion 中&#xff0c;采样器&#xff08;Sampler&#xff09;是指用于生成图像的一种技术或方法&#xff0c;它决定了模型如何从潜在空间中抽样并生成图像。采样器在生成图像的过程中起着重要作用&#xff0c;影响着生成图像的多样性、质量和创造性。以下是对 St…

批量梯度下降、随机梯度下降、小批量梯度下降

一、批量梯度下降&#xff08;Batch Gradient Descent,BGD&#xff09; 在批量梯度下降中&#xff0c;每次迭代都使用整个训练集的数据进行梯度计算和参数更新。也就是说&#xff0c;每次迭代都对所有的样本求取梯度&#xff0c;然后更新参数。由于要处理整个训练集&#xff0c…

用HTML5实现动画

用HTML5实现动画 要在HTML5中实现动画&#xff0c;可以使用以下几种方法&#xff1a;CSS动画、使用<canvas>元素和JavaScript来实现动画、使用JavaScript动画库。重点介绍前两种。 一、CSS动画 CSS3 动画&#xff1a;使用CSS3的动画属性和关键帧&#xff08;keyframes&…

第三节 zookeeper基础应用与实战2

目录 1. Watch事件监听 1.1 一次性监听方式&#xff1a;Watcher 1.2 Curator事件监听机制 2. 事务&异步操作演示 2.1 事务演示 2.2 异步操作 3. Zookeeper权限控制 3.1 zk权限控制介绍 3.2 Scheme 权限模式 3.3 ID 授权对象 3.4 Permission权限类型 3.5 在控制台…

JDBC教程+数据库连接池

JDBC 1.JDBC概述 ​ JDBC&#xff0c;全称Java数据库连接&#xff08;Java DataBase Connectivity&#xff09;&#xff0c;它是使用Java语言操作关系型数据库的一套API。 ​ JDBC本质是官方&#xff08;原SUN公司&#xff0c;现ORACLE&#xff09;定义的一套操作所有关系型数…

讲解用Python处理Excel表格

我们今天来一起探索一下用Python怎么操作Excel文件。与word文件的操作库python-docx类似&#xff0c;Python也有专门的库为Excel文件的操作提供支持&#xff0c;这些库包括xlrd、xlwt、xlutils、openpyxl、xlsxwriter几种&#xff0c;其中我最喜欢用的是openpyxl&#xff0c;这…

GitLab配置SSHKey

段落一&#xff1a;什么是SSH密钥 SSH&#xff08;Secure Shell&#xff09;是一种网络协议&#xff0c;用于安全地远程登录和执行命令。SSH密钥是一种用于身份验证的加密文件&#xff0c;它允许您在与远程服务器通信时&#xff0c;无需输入密码即可进行认证。在GitLab中配置S…

Vue2学习第一天

Vue2 学习第一天 1. 什么是 vue? Vue 是一套用于构建用户界面的渐进式框架。 2. vue 历史 vue 是在 2013 年创建的&#xff0c;vue3 是 2020 出现的&#xff0c;现在主要是用 vue2&#xff0c;创新公司用的是 vue3 vue 的作者是尤雨溪&#xff0c;vue 的搜索热度比 react…

【算法随想录03】相交链表

题目&#xff1a;160. 相交链表 难度&#xff1a;EASY 思路 主要难点在于如何进行节点之间的对应。两条链表长度不定长&#xff0c;如何找到需要对比的节点至关重要。 我们从后往前看&#xff0c;我们需要对比的节点有什么特点。一个最大的特点就是后面的节点数相同。这就…

一文分清OMS、CMS、PMS、TMS、IM、BI、BPMS、SCRM、DSS等B端系统

继5月22日发布一文分清OA、CRM、ERP、MES、HRM、SCM、WMS、KMS等后&#xff0c;很多老铁又给我推荐了其他系统&#xff0c;贝格前端工场这次再撰一文&#xff0c;介绍这些系统。 之前文章&#xff1a; 一文分清OA、CRM、ERP、MES、HRM、SCM、WMS、KMS等 1、OMS系统 OMS系统是…

wordpress日主题模版Ripro-v5 6.4开心版

RiPro主题全新V5版本&#xff0c;&#xff08;原RiPro v2旧版已停更&#xff09;是一个优秀且功能强大、速度极快&#xff0c;易于管理、现代化的WordPress虚拟资源商城主题。支持首页模块化布局和WP原生小工具模块化首页可拖拽设置&#xff0c;让您的网站设计体验更加舒适。同…

Spring Boot 笔记 020 redis集成

1.1 安装redis Windows 下 Redis 安装与配置 教程_redis windows-CSDN博客 2.1 引入redis坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> 2.2 配置…

OpenSource - 一站式自动化运维及自动化部署平台

文章目录 orion-ops 是什么重构特性快速开始技术栈功能预览添砖加瓦License orion-ops 是什么 orion-ops 一站式自动化运维及自动化部署平台, 使用多环境的概念, 提供了机器管理、机器监控报警、Web终端、WebSftp、机器批量执行、机器批量上传、在线查看日志、定时调度任务、应…

谷歌浏览器安装扩展程序axure-chrome-extension

注&#xff1a; 文末附扩展附件&#xff1a;axure-chrome-extension_v0.7.0.crx 1、安装扩展程序axure-chrome-extension 找到axure-chrome-extension.crx&#xff0c;把axure-chrome-extension.crx后缀改为zip&#xff0c;然后解压&#xff0c;得到一个文件夹 2、打开谷歌浏览…

php数组与字符串函数

php数组与字符串函数 1. php数组2. 字符串函数 1. php数组 在php中&#xff0c;有三种类型的数组&#xff1a; 数值数组 - 带有数字ID键的数组关联数组 - 带有指定的键的数组&#xff0c;每个键关联一个值多维数组 - 包含一个或多个数组的数组 2. 字符串函数 在PHP中&#xf…

精炼爆炸性新闻!OpenAI发布革命性AI视频生成模型Sora:实现长达60秒的高清视频创作「附AIGC行业系统搭建」

在人工智能领域&#xff0c;每一次技术革新都引领着未来的发展方向。OpenAI&#xff0c;作为全球领先的人工智能研究机构&#xff0c;再次证明了其在推动AI技术革新方面的领导地位。近日&#xff0c;OpenAI宣布推出了一款革命性的AI视频生成模型——Sora&#xff0c;这一大胆的…

[office] excel2016怎么求最大值和最小值 #职场发展#知识分享

excel2016怎么求最大值和最小值 excel求最大值最小值步骤&#xff1a; 1、鼠标左键双击计算机桌面Excel2016程序图标&#xff0c;将其打开运行。在打开的Excel2016程序窗口&#xff0c;点击“打开其他工作簿”选项&#xff0c;打开需要进行编辑的Excel工作表。如图所示; 2、在打…

GPIO八种工作模式

目录 一、推挽输出 二、开漏输出 三、复用推挽输出 四、复用开漏输出 五、浮空输入 六、上拉输入 七、下拉输入 八、模拟输入 GPIO八种配置模式&#xff0c;原理和使用场景&#xff0c;硬件原理如下图&#xff1a; 一、推挽输出 1、 原理 当控制栅极为低电平时&#x…