【教程】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,并且初始值为a
	vector<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,一个永远在学习中的探索者,关注我,让我们一起进步!

文末标志

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ucosIII下创建任务读取DS18B20采集到的温度数据

学习链接&#xff1a;ucosIII下创建任务读取并输出DHT11采集到的温湿度数据 相关代码及事项&#xff1a; 首先&#xff0c;需要添加下面两个文件&#xff0c; 其次&#xff0c;main.c 中如下的代码&#xff1a; #include "led.h" #include "delay.h" #…

第10集《佛说四十二章经》

请大家打开讲议第十一面&#xff0c;第十九章、假真并观。 前面一章念等本空&#xff0c;说明大乘佛法的修学&#xff0c;身口意应安住在非空非有的中道实相。本章对中道实相的修学&#xff0c;再做明确的说明。修中道实相观要有空观与假观的观照&#xff0c;从空观中远离有相…

VueCLI核心知识综合案例TodoList

目录 1 拿到一个功能模块首先需要拆分组件&#xff1a; 2 使用组件实现静态页面的效果 3 分析数据保存在哪个组件 4 实现添加数据 5 实现复选框勾选 6 实现数据的删除 7 实现底部组件中数据的统计 8 实现勾选全部的小复选框来实现大复选框的勾选 9 实现勾选大复选框来…

​StableSwarmUI#超越文本的prompt

今天看到一个新的webui方案&#xff0c;是Stability-AI开源的&#xff1a; StableSwarmUI 是一个模块化的稳定扩散web用户界面&#xff0c;着重于使强大的工具易于访问、高性能和可扩展性。 由于项目还在开发中&#xff0c;我们可以先了解下&#xff0c;翻看了它的特点&#xf…

幻兽帕鲁游戏联机的时候,显示“网络连接超时”怎么解决?

如果你在游戏联机的时候&#xff0c;显示“网络连接超时”&#xff0c;可以检查下&#xff1a; 1、前提是你已经按照教程部署成功 2、检查防火墙有没有忘记设置&#xff0c;协议是UDP&#xff08;只有TCP不行&#xff0c;一定要有UDP&#xff09;&#xff0c;端口是否填了8211&…

K210开发环境搭建(VS Code)

一、新建一个文件夹&#xff0c;就叫K210 二、再K210文件夹里面再新建一个文件夹&#xff0c;就叫CMake 三、找到官方提供的资料包里的cmake安装包&#xff0c; 或者直接去cmake官方下载网址进行下载 CMake官方下载网址&#xff1a;https://cmake.org/download/ 四、双击安装…

每日一题 (不用加减乘除做加法,找到数组中消失的数字)

不用加减乘除做加法_牛客题霸_牛客网 (nowcoder.com) 可以使用位运算符实现两个整数的加法&#xff1a; 在二进制加法中&#xff0c;我们通常使用“逐位相加”的方法来模拟常规加法的过程。当两个数字进行加法运算时&#xff0c;从最低位&#xff08;通常是右侧&#xff09;开…

开源≠不赚钱,开源软件盈利的7大模式。

开源不是目的&#xff0c;目的是圈用户&#xff0c;留住用户&#xff0c;盈利自然不成问题。 开源系统可以通过多种方式赚钱&#xff0c;以下是其中几种常见的方式&#xff1a; 提供付费支持&#xff1a; 开源系统可以提供付费的技术支持服务&#xff0c;包括安装、配置、维…

PyTorch深度学习快速入门教程 - 【小土堆学习笔记】

小土堆Pytorch视频教程链接 声明&#xff1a; 博主本人技术力不高&#xff0c;这篇博客可能会因为个人水平问题出现一些错误&#xff0c;但作为小白&#xff0c;还是希望能写下一些碰到的坑&#xff0c;尽力帮到其他小白 1 环境配置 1.1 pycharm pycharm建议使用2020的&…

ArcgisForJS基础

文章目录 0.引言1.第一个ArcgisForJS应用程序1.1.安装部署ArcgisForJS1.2.实现ArcgisForJS应用程序 2.开发与调试工具2.1.集成开发环境2.2.调试工具2.3.Firebug 0.引言 ArcGIS API for JavaScript是一款由Esri公司开发的用于创建WebGIS应用的JavaScript库。它允许开发者通过调…

【王道数据结构】【chapter5树与二叉树】【P158t9】

假设二叉树采用二叉链存储结构存储&#xff0c;设计一个算法&#xff0c;求先序遍历序列中第k个结点的值 #include <iostream> #include <stack> typedef struct treenode{char data;struct treenode *left;struct treenode *right; }treenode,*ptreenode;ptreenod…

支付交易——清结算

摘要 老王有个账本&#xff0c;店里进了哪些货、进的谁家货、花了多少钱&#xff0c;老王都会—一记下来;卖了哪些货、卖给了谁、卖了多少钱&#xff0c;也都会记下来。为什么要有个账本&#xff0c;看看老王是怎么进货和卖货的就知道了。老王店里虽然商品种类很多&#xff0c…

【数据结构】图

文章目录 图1.图的两种存储结构2.图的两种遍历方式3.最小生成树的两种算法&#xff08;无向连通图一定有最小生成树&#xff09;4.单源最短路径的两种算法5.多源最短路径 图 1.图的两种存储结构 1. 图这种数据结构相信大家都不陌生&#xff0c;实际上图就是另一种多叉树&…

刘谦竟然不是第一个吃螃蟹的!——历年春晚数学魔术精选

早点关注我&#xff0c;精彩不错过&#xff01; 在今年2024的央视春晚&#xff0c;刘谦用一个手法数学魔术的流程&#xff0c;配合上小尼的完美衬托&#xff0c;时隔5年&#xff0c;再一次为全国观众见证奇迹。 如此江湖地位的加持&#xff0c;使得他表演什么甚至失误都已经不再…

MySQL 基础知识(五)之数据增删改

目录 1 插入数据 2 删除数据 3 更改数据 创建 goods 表 drop table if exists goods; create table goods ( id int(10) primary key auto_increment, name varchar(14) unique, stockdate date )charsetutf8; 1 插入数据 当要插入的数据为日期/时间类型时&#xff0c;如果…

Python数学建模之回归分析

1.基本概念及应用场景 回归分析是一种预测性的建模技术&#xff0c;数学建模中常用回归分析技术寻找存在相关关系的变量间的数学表达式&#xff0c;并进行统计推断。例如&#xff0c;司机的鲁莽驾驶与交通事故的数量之间的关系就可以用回归分析研究。回归分析根据变量的…

2048游戏C++板来啦!

个人主页&#xff1a;PingdiGuo_guo 收录专栏&#xff1a;C干货专栏 大家好呀&#xff0c;我是PingdiGuo_guo&#xff0c;今天我们来学习如何用C编写一个2048小游戏。 文章目录 1.2048的规则 2.步骤实现 2.1: 初始化游戏界面 2.1.1知识点 2.1.2: 创建游戏界面 2.2: 随机…

ng : 无法加载文件 C:\Program Files\nodejs\node_global\ng.ps1, 因为在此系统上禁止运行脚本

ng : 无法加载文件 C:\Program Files\nodejs\node_global\ng.ps1&#xff0c;因为在此系统上禁止运行脚本 今天在VSCode中运行ng serve --port 8081运行基于Angular的项目时&#xff0c;报错了&#xff0c;错误如下图所示&#xff1a; 解决方法&#xff1a; 按照下图的5步即…

【AI视野·今日NLP 自然语言处理论文速览 第七十八期】Wed, 17 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 17 Jan 2024 (showing first 100 of 163 entries) Totally 100 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Deductive Closure Training of Language Models for Coherence, Accur…

一探Lepton Search究竟

2024年1月25日&#xff0c;阿里巴巴原技术副总裁在 Twitter 上称用不到 500 行 Python 代码实现了 AI 对话搜索引擎&#xff0c;并在27日附上了开源地址&#xff1a;https://github.com/leptonai/search_with_lepton&#xff0c;截止春节期间已经5.8K的Star。 Twitter截图 Comm…