C++vector动态容器类

news2024/7/2 3:35:07

在这里插入图片描述

1、std::vector::push_back(尾差)

在这里插入图片描述

1.1、std::vector::operator[]

在这里插入图片描述

意思为;
访问元素
返回对vector容器中位置n的元素的引用。

void test_vector2()
{
	vector<int> v1;
	v1.push_back(1);
	v1.push_back(2);
	v1.push_back(3);
	v1.push_back(4);

	//下标+[]
	for (size_t i = 0; i < v1.size(); i++)
	{
		v1[i]++;
	}

	for (size_t i = 0; i < v1.size(); i++)
	{
		cout << v1[i] << " ";
	}
	cout << endl;
}

int main()
{
	//test_vector1();
	test_vector2();
	return 0;
}

在这里插入图片描述

2、vector迭代器

vector也是支持迭代器的,其功能和string迭代器是一样的

void test_vector2()
{
	vector<int> v1;
	v1.push_back(1);
	v1.push_back(2);
	v1.push_back(3);
	v1.push_back(4);

	//下标+[]
	for (size_t i = 0; i < v1.size(); i++)
	{
		v1[i]++;
	}

	for (size_t i = 0; i < v1.size(); i++)
	{
		cout << v1[i] << " ";
	}
	cout << endl;

	//迭代器
	vector<int>::iterator it = v1.begin();
	while (it != v1.end())
	{
		(*it)--;
		cout << *it <<" ";
		it++;
	}
	cout << endl;
	
	for (auto e : v1)
	{
		cout << e << " ";
	}
}

int main()
{
	//test_vector1();
	test_vector2();
	return 0;
}

在这里插入图片描述

2.1、std::find


注意是左闭右开的,如果没有找到会返回last

2.2、std::vector::insert(插入)

在这里插入图片描述

vector和string的insert插入的直接区别就是vector的插入坐标位置都是通过迭代器iterator来控制的

void test_vector3()
{
	vector<int> v1;
	v1.push_back(1);
	v1.push_back(2);
	v1.push_back(3);
	v1.push_back(4);

	for (size_t i = 0; i < v1.size(); i++)
	{
		cout << v1[i] << " ";
	}
	cout << endl;

	vector<int>::iterator pos = find(v1.begin(), v1.end(), 3);

	if (pos != v1.end())//因为如果查找失败返回的是v1.end()
	{
		v1.insert(pos, 30);
	}
	
	for (auto e : v1)
	{
		cout << e << " ";
	}

	cout << endl;
}


int main()
{
	//test_vector1();
	test_vector3();
	return 0;
}

在这里插入图片描述

如果在find查找完后没有进行if判断,这是如果没有找到对应的元素就会变为尾插,但是我们建议还是加上判断条件的

在这里插入图片描述

3、std::vector::erase(删除)

在这里插入图片描述

void test_vector3()
{
	vector<int> v1;
	v1.push_back(1);
	v1.push_back(2);
	v1.push_back(3);
	v1.push_back(4);

	for (size_t i = 0; i < v1.size(); i++)
	{
		cout << v1[i] << " ";
	}
	cout << endl;

	vector<int>::iterator pos = find(v1.begin(), v1.end(), 3);

	if (pos != v1.end())//因为如果查找失败返回的是v1.end()
	{
		//v1.insert(pos, 30);
		v1.erase(pos);
	}
	
	for (auto e : v1)
	{
		cout << e << " ";
	}

	cout << endl;
}


int main()
{
	//test_vector1();
	test_vector3();
	return 0;
}

在这里插入图片描述

4、std::sort(排序)

使用sort时,需要先包含头文件#include <algorithm>

在这里插入图片描述

排序默认为从小到大排列,如果想从大到小排列需要包含头文件

void test_vector4()
{
	vector<int> v1;
	v1.push_back(10);
	v1.push_back(1);
	v1.push_back(32);
	v1.push_back(12);
	v1.push_back(2);
	v1.push_back(4);
	v1.push_back(5);

	for (auto e : v1)
	{
		cout << e << " ";
	}
	cout << endl;

	less<int> ls;
	sort(v1.begin(), v1.end(),ls);
	for (auto e : v1)
	{
		cout << e << " ";
	}
	cout << endl;

	sort(v1.begin(), v1.end());
	for (auto e : v1)
	{
		cout << e << " ";
	}
	cout << endl;
}

int main()
{
	//test_vector1();
	test_vector4();
	return 0;
}

在这里插入图片描述
如果想要从大到小排列,需要包含头文件#include <functional>

void test_vector4()
{
	vector<int> v1;
	v1.push_back(10);
	v1.push_back(1);
	v1.push_back(32);
	v1.push_back(12);
	v1.push_back(2);
	v1.push_back(4);
	v1.push_back(5);

	for (auto e : v1)
	{
		cout << e << " ";
	}
	cout << endl;

	less<int> ls;
	sort(v1.begin(), v1.end(),ls);
	for (auto e : v1)
	{
		cout << e << " ";
	}
	cout << endl;

	sort(v1.begin(), v1.end());
	for (auto e : v1)
	{
		cout << e << " ";
	}
	cout << endl;

	greater<int> gt;

	sort(v1.begin(), v1.end(),gt);
	//定义匿名方式
	//sort(v1.begin(), v1.end(),greater<int>());
	for (auto e : v1)
	{
		cout << e << " ";
	}
	cout << endl;
}

int main()
{
	//test_vector1();
	test_vector4();
	return 0;
}

在这里插入图片描述
sort不仅可以排序动态容器vector,还可以排序字符串

void test_vector5()
{
	string s1("hello1234");
	sort(s1.begin(), s1.end(), greater<char>());
	cout << s1 << " ";
	cout << endl;
}

int main()
{
	//test_vector1();
	test_vector5();
	return 0;
}

在这里插入图片描述

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

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

相关文章

这个元宇宙平台真是拼了!新上线十套模板,帮您打造虚拟展览

导语&#xff1a; 随着数字技术的不断发展&#xff0c;线上虚拟展览正成为越来越多企业和组织的营销利器。在众多的虚拟展厅平台中&#xff0c;蛙色3DVR展厅凭借其独特的优势和特点&#xff0c;成为行业中备受关注的创新解决方案。 第一部分&#xff1a;展厅的优势和特点 1.便…

多元分类预测 | Matlab蛇群算法(SO)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,SO-HKELM分类预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab蛇群算法(SO)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,SO-HKELM分类预测 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,…

三项认可,数据库透明加密获“年度优秀密码产品奖”

6月28日&#xff0c;杭州市商用密码应用协会第一届第三次会员大会成功召开&#xff0c;大会审议了2022年度工作总结及2023年度活动计划&#xff0c;发布《2023商用密码产业链总览》。为扎实推进杭州市商用密码、信创在各领域的应用推广&#xff0c;本次大会对在密码技术开发与创…

ATFX国际:原油收盘价连续5个交易日低于70美元

ATFX国际&#xff1a;大宗商品的价格是全球经济的晴雨表&#xff0c;当价格进入历史高位区间时&#xff0c;意味着商品需求旺盛&#xff0c;全球经济大概率处于繁荣期&#xff1b;当价格由历史高位向历史低位区间运行时&#xff0c;意味着全球经济大概率正从繁荣期向衰退期转变…

JKD动态代理

在Java的动态代理机制中&#xff0c;有两个重要的类和接口&#xff0c;一个是InvoInvocationHandler&#xff08;接口&#xff09;、Proxy&#xff08;类&#xff09;&#xff0c;这一个类和接口是我们动态代理所必须用到的。 InvocationHandler接口&#xff1a; 每个动态代理…

学习系统编程No.27【深入信号处理】

引言&#xff1a; 北京时间&#xff1a;2023/6/27/21:43&#xff0c;刚刚更新完这个星期的第一篇博客&#xff0c;现在刚好趁热打铁&#xff0c;看看写到11点左右&#xff0c;该篇博客能完成多少&#xff0c;并且今天和我预想的一样&#xff0c;通过早睡&#xff0c;成功在7点…

容器访问外部网络之ip_forward数据包转发

文章目录 1 问题解决1.1 问题1.2 原因1.3 解决临时打开&#xff1a;永久打开&#xff1a; 2 net.ipv4.ip_forward内核参数通俗解释3 在Linux中验证并实践net.ipv4.ip_forward设置 IP 地址设置路由信息打开 IP Forward 功能关闭主机 R 的防火墙和 SeLinux验证容器技术其它 4 常用…

< vue + ElementUi 组件封装:实现弹窗展示富文本数据,允许全文搜索高亮显示搜索内容 >

实现弹窗展示富文本数据&#xff0c;允许全文搜索高亮显示搜索内容 &#x1f449; 前言&#x1f449; 一、效果演示&#x1f449; 二、实现思路&#x1f449; 三、实现案例&#x1f44d; 卷王必胜&#xff01;往期内容 &#x1f4a8; &#x1f449; 前言 在 Vue elementUi 开…

私域流量怎么运营?

最近几年&#xff0c;随着微信社群营销的兴起&#xff0c;互联网上出现了一种火爆的变现模式&#xff0c;即将流量引入微信个人号或社群&#xff0c;并通过活动、促销和私聊等方式进行转化&#xff0c;从而为企业或个人带来变现&#xff0c;这就是私域流量变现。 实际上&#x…

ARMv8 - 安全机制 - 异常等级

简介 ARMv8架构处理器有一套异常等级&#xff08;Exception level&#xff09;机制&#xff0c;分成4个等级&#xff08;EL0 ~ EL3&#xff09;。处理器运行时会处于其中的某个等级并且可以进行等级切换。 资源差异 每个异常等级都拥有一些自己版本的特殊寄存器&#xff0c;…

基于大数据技术对基金分析-python

提示&#xff1a;本文为个人原创&#xff0c;仅供技术探讨与交流&#xff0c;对实际投资并不造成建议。 基于大数据技术对基金分析-python 前言一、数据获取&#xff1a;python爬虫1).从天天基金数据接口获取数据2).爬虫前期准备3).爬虫具体实现 二、数据清洗及计算指标1.过滤数…

高性能计算工程师工资一般多少?

由于近两年深度学习的迅速崛起&#xff0c;超算互联网的普及以及AIGC的大规模应用&#xff0c;各行各业对高性能计算工程师的需求大涨&#xff0c;因此高性能计算工程师的工资也在逐年上涨中&#xff0c;并频频爆发抢人大战。 甚至年薪百万依然难以招到合适的人才。 有很多大厂…

Android JetPack 深入分析ViewModel源码

文章目录 前言源码分析ViewModel是如何创建的&#xff1f;ViewModelProvider(this)做了什么&#xff1f;小结 get(MyViewModel::class.java)做了什么&#xff1f;小结 ViewModel是如何实现配置更改后数据恢复的&#xff1f;整体时序图 结语 前言 本文主要分析ViewModel相关源码…

如何提高项目估算精准度 关键看3方面

项目估算非常重要&#xff0c;这直接关系着项目的成本和收入&#xff0c;如果估算不准确&#xff0c;将为项目带来较大风险。一般软件规模可以用多种方式进行估算&#xff0c;但是用功能点估算方式更准确&#xff0c;而自动估算让估算更快速&#xff0c;我们以CoCode需求分析工…

ChatGpt能够用来做什么

作为计算机从业人员&#xff0c;chatgpt能够从多方面提高大家的工作效率&#xff0c;主要包括以下几点&#xff1a; 技术问题解答&#xff1a;当遇到技术问题时&#xff0c;可以向ChatGPT提问并获取解答。ChatGPT可以提供相关的知识、文档和示例代码&#xff0c;帮助程序员快速…

vue2封装单张图片上传(常用于身份证正反面)

一.实现效果 二.入参 props: {defaultImg: {//默认位置的照片type: String,default: "",},uploadWidth: {//照片框的宽度type: String,default: "148px",},}, 另外如果修改了宽度的话&#xff0c;在外部组件需要用scss重写一下样式 /deep/ .el-upload-lis…

芯片中的上百亿个晶体管是如何设计的?

2021年4月21日&#xff0c;在芯片界的顶级会议Hot Chips大会上&#xff0c;Cerebras Systems公司发布了一款晶圆级引擎芯片——Wafer Scale Engine 2。 这款芯片采用台积电7纳米工艺制程&#xff0c;拥有85万个AI核心&#xff0c;包含2.6万亿个晶体管&#xff0c;面积为46225平…

Linux8.进程(中)(状态)

1.grep -v 关键字a :不显示关键字a匹配的信息。 2.进程状态 :新建&#xff0c;就绪&#xff0c;阻塞&#xff0c;挂起&#xff0c;执行&#xff0c;终止。 运行 : task_struct结构体在运行队列中排队&#xff0c;这就叫做运行态。 阻塞 :等待非CPU资源(磁盘&#xff0c;网卡…

科技云报道:公有云内卷时代,青云的新想象力在哪?

科技云报道原创。 2023年接踵而至的价格战&#xff0c;将国内公有云的竞争力度再次拉满。阿里云、腾讯云、京东云、移动云带头降价&#xff0c;也将寒意传导给了更多腰部云服务商。毫无疑问&#xff0c;这是一场对云服务商的残酷考验。 在公有云高度内卷的阶段&#xff0c;以…

kaggle新赛:肾脏血管分割大赛赛题解析(CV)

用AI为医疗贡献一份力量&#xff0c;从加入本次竞赛开始&#xff01; 赛题名称&#xff1a;HuBMAP - Hacking the Human Vasculature 从人肾组织切片中分割微血管结构 赛题链接&#xff1a;https://www.kaggle.com/competitions/hubmap-hacking-the-human-vasculature 赛题背…