【C++】vector中的常见函数和使用

2023-09-22 14:31:41

前言

感觉vector在目前阶段很常用,就总结记录一些vector的用法
方便自己忘记的时候查找

因为是自用,所以我直接放代码了,只说明如何使用,以及一些小的注意点,对于函数具体实现过程,在这篇文章中,不做过多说明

当然,我也给出了一些使用例子,供大家参考

本文参考:
C++vector操作

代码

#include<iostream>
#include<vector>

using namespace std;

int main()
{
	vector<int>a, b;
	//创建向量a和向量b

	a.assign(b.begin(), b.begin() + 3);
	//将b的下标为0-2的元素赋给a

	a.assign(4, 2);
	//清空a,并向其中存入4个2

	a.back();
	//返回a的最后一个元素

	a.front();
	//返回a的第一个元素

	int i = 3;
	a.at(i);
	//访问下标为i的元素

	a.clear();
	//清空a中的元素

	a.empty();
	//判断a是否为空,空则返回true 非空则返回false

	a.pop_back();
	//删除a的最后一个元素

	a.erase(a.begin(), a.begin() + 1);
	//删除从第0个元素到第1个元素 即删除下标为0的元素

	//使用erase的例子
	/*vector<int>a{ 1,2,3,4,5,6 };

	a.erase(a.begin(), a.begin() + 1);

	for (int ii : a)
	{
		cout << ii << endl;
	}*/

	a.push_back(1);
	//在a的最后一个元素后面放入5

	//使用push_back()的例子
	//vector<int>a{ 1,2,3,4,5,6 };
	//a.push_back(5);

	//for (int ii : a)
	//{
	//	cout << ii << endl;
	//}

	a.insert(a.begin(), 5);
	//在a的下标为0的位置 插入5 剩下的元素统一向后移动一位

	//使用insert的例子
	/*vector<int>a{ 1,2,3,4,5 };
	a.insert(a.begin(), 5);

	for (int ii : a)
	{
		cout << ii << endl;
	}*/

	a.insert(a.begin(), 3, 5);
	//从a的下标为0的位置开始 插入3个元素 其值为5

	//使用insert的例子
	/*vector<int>a{ 1,2,3,4,5 };
	a.insert(a.begin(), 3, 5);

	for (int ii : a)
	{
		cout << ii << endl;
	}*/

	vector<int>b  = { 10,9,8,7,6,5,4 };
	int c[7] = { 11,12,13,14,15,16,17 };
	a.insert(a.begin(), b.begin() + 3, b.begin() + 6);
	//在a下标为0的位置,将b从下标为3的位置开始到下标为6的元素插入
	a.insert(a.begin(), c[2], c[4]);
	//在a下标为0的位置,将c从下标为2到下标为4的元素插入

	//使用insert的例子
	//vector<int>a = { 1,2,3,4 };
	vector<int>b = { 10,9,8,7,6,5,4 };
	//int c[7] = { 11,12,13,14,15,16,17 };
	//a.insert(a.begin(), b.begin() + 3, b.begin() + 6);
	//for (int ii : a)
	//{
	//	cout << ii << endl;
	//}
	//a.insert(a.begin(), c[2], c[4]);
	//for (int ii : a)
	//{
	//	cout << ii << endl;
	//}

	a.size();
	//返回a的元素个数

	a.capacity();
	//返回a在内存中总共可以容纳的元素个数

	a.resize(10);
	//将a现有的元素个数调整为10,多则删,少则补 值随机
	
	a.resize(10, 2);
	//将a现有的元素个数调整为10,多则删,少则补 值为2

	a.reserve(100);
	//将a的容量扩充至100

	a.swap(b);
	//交换a和b中的所有元素
	return 0;
}

注意点

注释1

	vector<int>a = { 1,2,3,4 };
	int c[7] = { 11,12,13,14,15,16,17 };
	a.insert(a.begin(), c[2], c[4]);
	for (int ii : a)
	{
		cout << ii << endl;
	}

当我们这么编写代码时,我们的本意是将从c[2] 到c[4]的元素插入a的第一个元素的位置
但运行结果是:
在这里插入图片描述
我们可以知道,如果要连续插入到不是容器中的元素时,是无法实现我们想要的目的的

常见用法

对于vector我们在做题时,通常会用到以下函数
sort排序
reverse逆置
find查找

以及用copy实现两个向量之间的复制

在此只是提一嘴,不做详细介绍,相信大家基本都会使用这些函数

结语

对于vector的常见用法的介绍和学习到这里就结束了,希望对你有帮助,我们下篇文章见~
今天先简单水一篇(bushi

更多推荐

hive的join优化

1.分析数据倾斜情况:可以使用EXPLAIN命令获取Join操作的执行计划,并观察输出中的数据倾斜情况。比如下面的查询语句:EXPLAINSELECT*FROMTable_AJOINTable_BONTable_A.key=Table_B.key;输出的执行计划中,可以通过STAGEPLANS部分中的Reducer和P

Codeforces Round 162 (Div 2)(A - E)

CodeforcesRound162(Div.2)(A-E)Dashboard-CodeforcesRound162(Div.2)-CodeforcesA.ColorfulStones(SimplifiedEdition)(模拟)模拟一下即可#include<bits/stdc++.h>usingnamespacest

网络安全(黑客)自学

前言作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。计算机各领域的知识水平决定你渗透水平的上限。【1】比如:你编程水平高,那你在代码审计的时候就会比别人强,写出的漏洞利用工具就会比别人的好用;【2】比如:你数据库知识水平高,那你在进行SQL注入攻击的时候,你就可以写出更多更好的SQL注入语句

泛化误差上界(二分类)

对于二分类问题,当假设空间是有限个函数的集合F={f1,f2,...,fd}F=\{f_1,f_2,...,f_d\}F={f1​,f2​,...,fd​}时,对∀f∈F\forallf\inF∀f∈F,至少以概率1−δ,0<δ<11-\delta,0<\delta<11−δ,0<δ<1,以下不等式成立R(f)≤R^(

【论文笔记】Scene as Occupancy

原文链接:https://arxiv.org/abs/2306.028511.引言与传统的3D框物体表达相比,使用3D占用表达是几何感知的,因为3D框表达简化了物体的形状。此外,现有基于视觉的方法很少考虑时间信息;单阶段方法缺少从粗到细的细化过程。本文提出OccNet,一种基于多视图图像的方法,包含级联体素解码器,利用

PHP-composer安装扩展安装,批量操作合并pdf

清除Composer缓存:运行以下命令来清除Composer的缓存,并再次尝试安装包。bashcomposerclear-cache使用不同的镜像源:Composer使用的默认包源可能会受到限制或访问问题。你可以切换到使用其他镜像源,如阿里云、Composer中国全量镜像等,以提高稳定性和下载速度。你可以使用以下命令更

如何使用requests库发送http请求

一、requests库​什么是Requests?Requests是⽤Python语⾔编写,基于urllib,采⽤Apache2Licensed开源协议的HTTP库。它⽐urllib更加⽅便,可以节约我们⼤量的⼯作,完全满⾜HTTP测试需求。​安装:cmd命令行执行pipinstallrequests二、HTTP请求方法

MySQL 索引分类

文章目录MySQL索引分类1、按存储方式区分(1)B+Tree索引1、BTree2、B+Tree3、BTree个B+Tree的主要区别4、MySQL为什么选择B+Tree(2)哈希索引1、哈希索引的特点2、使用逻辑区分(1)普通索引(2)唯一索引(3)主键索引(4)全文索引3、按实际的使用情况区分(1)单列索引(2)组

如何将 JavaScript Excel XLSX 查看器添加到Web应用程序

在JavaScript中创建Excel查看器可能是一项艰巨的任务,但使用SpreadJSJavaScript电子表格,创建过程要简单得多。在本教程博客中,我们将向您展示如何使用SpreadJS的强大功能来创建一个查看器,该查看器允许您在Web浏览器中打开和保存Excel文件,以及保护工作表不被编辑并添加密码。要继续阅读

java用easyexcel按模版导出

首先在项目的resources下面建一个template包,之后在下面创建一个模版,模版格式如下:名称为financeReportBillStandardTemplateExcel.xlsx:{.fee}类型的属性值,是下面实体类的属性,要注意这里面的格式,不能错,还需要注意就是驼峰,例如:{.stockMv},要跟实

2023年毫米波行业研究报告

第一章行业概况1.1定义毫米波是一种电磁波,其波长范围在1毫米至10毫米之间,频率介于30GHz至300GHz。与sub-6G(6GHz以下频段)的5G系统相比,5G毫米波通信在带宽、时延和灵活弹性空口配置方面具有明显优势。这使其能够有效地满足未来无线通信系统的容量、传输速率和差异化应用需求。随着业务对带宽需求的持续增

热文推荐