浅谈STL中的vector

浅谈STL之Vector STL是Standard Template Library(标准模版库)的缩写,在该库中,包含着大量的预设容器、算法和迭代器,是一个可以简化编程难度和降低时间的好东西,有以下的优点。1. 高性能:STL容器和算法经过高度优化,提供了出色的性能,适用于各种应用场景。2.可复用性:STL代码具有高度的可复用性,可以在不同项目中重复使用,从而提高开发效率。3. 可移植性:STL是C++的标准组成部分,因此在不同的C++编译器和平台上都可以使用。 阅读详情

引言:

c++因为有了STL库所以变得比c语言简单了许多,许多容器不需要自己实现,在STL中有各种你想要的容器及函数,今天就要介绍一下c++最常用的容器之一vector的相关操作。

什么是vector?

vector和数组一样,可以存储任意数据类型,只不过容器大小可以不提前声明。简言之vector就是一个可以动态改变大小的顺序数组。

如何使用:

#include<vector>
using namespace std;

vector的声明:

vector的声明有多种方式:(数据类型以int为例)
①声明一个空向量
vector<int> ve;
②声明一个大小为size,初始值为0的向量
vector<int> ve(int size);
③声明一个大小为size,初始值为n的向量
vector<int> ve(int size,int n)
④用另一个向量赋值
vector<int> temp(10,1); vector<int> ve(temp);
⑤

判断向量是否为空:

ve.empty();

获得当前向量大小:

①返回向量中元素的个数

ve.size();

②返回当前向量所能容纳的最大元素值

ve.capacity();

③返回最大可允许的vector元素数量值

ve.max_size();

④重新设置向量大小为m

ve.resize(m)

添加元素:

①添加元素n到向量最后面

ve.push_back(n);

②插入元素m到向量下标为n位置

ve.insert(ve.begin()+n,m);

③从下标为n的位置插入p个元素m

ve.insert(ve.begin()+n,p,m);

删除元素:

①删除向量最后一个元素

ve.pop_back();

②删除下标为n的元素

ve.erase(ve.begin()+n);

③删除多个元素(下标从n到m 含n不含m[n,m))

ve.erase(ve.begin()+n,ve.begin()+m);

④清除向量

ve.clear();

遍历向量:

①返回下标为n的元素的引用

ve.at(n);

②返回第一个元素的引用

ve.front();

③返回最后一个元素的引用

ve.back();

④返回向量头指针,指向第一个元素

ve.begin();

⑤返回向量尾指针,指向向量最后一个元素的下一个位置

ve.end();

⑥反向迭代器,指向最后一个元素

ve.rbegin();

⑦反向迭代器,指向第一个元素之前的位置

ve.rend();

遍历向量的方法:

①取下标

for(int i=0;i<ve.size();i++)
{
	cout<<ve[i]<<"\t";
}

②使用迭代器

for(vector<int>::iterator it=ve.begin();it!=ve.end();it++)
{
	cout<<*it<<"\t";
}

③反向使用迭代器

for(vector<int>::reverse_iterator  it=ve.rbegin();it!=ve.rend();it++)
{
	cout<<*it<<"\t";
}

判断某元素是否在vector里:

num=25;
vector<int>:: iterator iter;
iter=find(ve.begin(),ve.end(),num);
if(iter==ve.end()){
	cout<<num<<"在向量里"<<endl;
}else{
	cout<<num<<"不在向量里"<<endl;
}

其他操作:

①把两个向量的所有元素进行交换

ve1.swap(ve2);

②交换向量中两个元素位置

swap(ve[i],ve[j]);

③对向量的元素进行排序(按函数cmp的规则排序) 需要导入algorithm库

sort(ve.begin(),ve.end(),cmp);

④反转向量顺序(需要导入algorithm库)

reverse(ve.begin(),ve.end());

⑤从下标为m到n反转向量(含m不含n [m,n) )

reverse(ve.begin()+m,ve.begin()+n);

最后:

写下这篇博客第一是帮助自己复习vector,另外能帮到需要的小伙伴是最好的了。

C++:[STL]浅谈Allocator以及详解STL之sequence container的操作及使用(vector) // 2016-05-13 补充Allocator(空间配置器)的介绍1.引入STL,即 standard tempalate library,标准模板库,是C++的重要组成部分。C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。STL的构成: 组成部分 描述 iterat 阅读详情

相关推荐

Wincc7.5SP1 按钮操作记录(二次确认及语音播报)

Wincc 7.5 SP1 按钮操作记录生成(含二次确认及语音播报) 前面一篇文章已经介绍了“语音播报WINCC报警”,本文是之前功能的延伸,记录按钮操作记录并实现播报。 操作记录及语音播报效果 <创建消息文本> 1. 创建消息文本 消息编号100,消息等级“系统无确认”,消息类型“操作员输入消息”,消息文本“循环水泵启动操作”,其他参数默认。 消息编号101,消息等级“系

徐站的春天 1万+

最详细整理STL之vector基础

Vector是一种可以存储任意类型的动态数组,属于序列式容器,可以用sort对其进行排序,底层数据结构是数组,可以随机访问元素。Vectors 包含着一系列连续存储的元素,其行为和数组类似。访问Vector中的任意元素或从末尾添加元素都可以在常量级时间复杂度内完成,而查找特定值的元素所处的位置或是在Vector中插入元素则是线性时间复杂度。注:如果要使用vector,则需要添加vector头文件,即#include,除此之外,还需要添加using namespace std;C++中构造ve......

weixin_51357741的博客 3367

【驱动适配】高通sa522平台tac5x1x驱动适配全指南

本手册详细介绍了TAC5301-Q1音频编解码器在高通sa525平台Linux系统下的驱动适配流程。主要内容包括:1)TAC5301-Q1核心特性(车载级音频Codec、关键接口和功能);2)驱动适配依赖(高通声卡驱动、ALSA SoC框架等);3)I2S协议原理及主从模式说明;4)硬件准备与检查要点;5)完整的驱动移植步骤(代码移植、Kconfig/Makefile修改、设备树配置)。该手册适用于嵌入式音频开发工程师快速完成TAC5301-Q1芯片的驱动移植与验证工作。

嵌入式博哥的博客 304

C++编程语言STL之vector介绍

vector是C++编程语言的STL中的内容,是同一种类型的对象的集合,每个对象都有一个对应的整数索引值,和(C++编程语言中的)string对象一样,标准库负责管理与存储元素相关的内存。有时候会把vector称为容器,是因为它可以包含其他对象,能够存放任意类型的动态数组、增加和压缩数据。一个容器中的所有对象都必须是同一种类型的。vector不是一种数据类型,而是一个类模板(class template)。使用模板可以编写一个类定义或函数定义,用于多种不同的数据类型。

liitdar的博客 3333

FreeSurfer预处理命令

比如将/source/kernel.tgz解压到 /source/linux-2.6.29 目录 tar zxvf /source/kernel.tgz -C /source/ linux-2.6.29 tar zxvf /home/tj/application/freesurfer/subjects/mindboggle/OASIS-TRT-20-1.tar.gz -C /home/tj/application/freesurfer/subjects (1)lh.thickness mri_surf2su

Dream19961996的博客 1508

超详细教程YoloV8官方推荐免费数据集网站Roboflow一键导出Voc、COCO、Yolo、Csv等格式

YoloV8官方推荐了一个数据集网站,就是Roboflow。Roboflow是一个数据集管理平台,提供了免费的数据集,同时也支持上传自己的数据集进行格式转换。使用Roboflow,开发者可以方便地获取所需格式的数据集,无需手动转换格式。此外,Roboflow还提供了多种数据预处理、数据增强等功能,可帮助开发者更好地优化训练数据

Snu77的博客 2万+

STL——vector

vector是序列容器,表示大小可以变化的数组。vector可以有效地在末尾添加或删除元素

LVZHUO_2022的博客 1483

什么是 SAP ABAP AMDP?

SAP HANA是SAP开发的一种内存数据库管理系统,它具有出色的性能和处理大规模数据的能力。为了充分利用SAP HANA的性能,SAP引入了AMDP技术,以便将数据库操作推送到数据库服务器执行,从而减少数据传输和处理时间。AMDP方法通常需要输入参数和输出参数。输入参数用于传递数据到SQLScript代码,而输出参数用于接收SQLScript代码的结果数据。ENDMETHOD.ENDCLASS.我们定义了一个输入参数来传递销售订单数据,以及一个输出参数来接收计算结果。ENDMETHOD.

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 908

【C++】-- STL之vector详解

vecotr是可以改变大小的数组的序列容器,其特点有: (1)vector采用连续空间来存储元素,可以使用下标访问vector元素,访问元素和数组一样方便。vector大小可以动态改变,而且会被容器自动处理,这一点数组无法做到。 (2)vector使用动态分配分配数组来存储元素,插入新元素时,vector数组为了增加存储空间,会分配一个新数组,再把所有元素全部移动到这个数组里,代价相对高一些。...

局部变量和全局变量 2566

【雕爷学编程】Arduino智慧农业之温湿度数据上传到云平台

它们可能有错误、不适用或者无法编译。在实施过程中,需要注意传感器的选择和校准、通信和网络稳定性、数据隐私和安全保护、电源管理以及数据分析和决策支持等方面的事项。数据分析和决策支持:上传到云平台的温湿度数据可以提供丰富的信息,但需要合适的数据分析和决策支持工具来帮助农业业主理解和利用这些数据。您可以根据自己的需求和喜好选择适合您的云平台和库,并根据您的具体硬件配置进行适当的修改和调整。将温湿度数据上传到云平台,农业业主可以实时监测粮库内的温湿度情况,及时采取通风、除湿等措施,确保粮食质量和长期储存的稳定性。

雕爷学编程 1275

新手友好!C#上位机调用YOLO实现设备异常检测(详细步骤,附踩坑指南)

C#上位机调用YOLO实现设备异常检测,核心是把“工控交互”和“AI检测”的优势结合起来,新手不用追求一步到位,先跑通基础流程,再逐步优化性能和功能。我当初也是从踩坑中过来的,只要把核心链路和细节摸透,其实门槛并没有想象中高。如果你们在实操中遇到了具体问题(比如相机取流卡顿、模型推理报错),可以在评论区留言,后续我也可以针对性拆解具体模块的完整代码。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 669

【C++】C++11之vector容器详解

vector是STL(标准模板库)中的一个序列式容器,本质是一个类模板。vector和数组的区别是:vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间容纳新元素。vector也可以解释为单端数组it实质上是一个迭代器指针,访问时需要解引用*it,解引用后的数据类型和相同。

qq_35902025的博客 3223

拼多多Android面试题及参考答案

Android 系统采用分层架构设计,从底层到上层依次为Linux 内核层硬件抽象层(HAL)系统运行时库层应用框架层应用层,共五层。位置:Linux 内核层与系统运行时库层之间,是“硬件与系统的隔离层”。核心作用:屏蔽硬件差异,为上层提供统一的硬件访问接口,解决 Android 开源与硬件厂商闭源的矛盾,具体功能如下:硬件能力抽象:将硬件的具体实现(如不同厂商的摄像头芯片、音频芯片)封装为标准化接口(如Camera HALAudio HAL。

大模型大数据攻城狮的专栏 1285

STL浅谈,从vector到map

本文为C++ STL入门指南,详解vector、stack、map等核心容器的用法与底层原理,助你高效掌握标准模板库!

2401_87687617的博客 707

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C++ 浅谈之 STL Vector

STL Vector 底层实现

优质后端技术知识记录 907

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

[c++]——浅谈STL vector

ps:本文并不是对vector进行全面的讲解,笔者只针对典型的容易犯错的地方进行了详解 1.vector概述: vector的数据安排以及操作方式,与array非常相似。俩者唯一的区别就是在于空间应用的灵活性。array是静态空间,空间一旦配置就不能再进行改变,如果需要更换大一点的空间我们需要重新开辟一块空间,将原来的数据拷贝到新空间,然后将旧空间释放。而vector会以动态开辟空间的方式进行增容...

lucky52529的博客 645

STL浅谈(一)——vector

在C++中,STL (Standard Template Library)是必学,也是非常重要的一块内容。STL为特定场景的数据保存提供了极大的方便。同时STL也是面试官必问的问题之一。STL有着高可重用性,高性能,高移植平台和跨平台的优点。这篇博客叫STL浅谈,因为STL涉及到的内容太多了,这里只能随便介绍介绍。 STL的构成 STL主要由六大块构成: 容器:用于存储数据的工具,例如:vector,list,deque, set,map等 算法:实现了按照用户的要求对容器中数据进行特定的操作,例如s

WJ_SHI的博客 385

浅谈STL中vector的应用

vector <int> a; //定义 a 数组,当前数组长度为 0,但和普通数组不同的是,此数组 a 可以根据存储数据的数量自动变长。 //向数组 a 中添加 10 个元素 for (int i = 0; i < 10 ; i++) a.push_back(i) //还可以手动调整数组 a 的大小 a.resize(100); a[90] = 100; //还可以直接删除数组 a 中所有的元素,此时 a 的长度变为 0 a.clear(); //重新调整 a 的大小为 20,并存储 .

weixin_64393298的博客 354

【C++】STL浅谈vector容器与迭代器

文章目录(一)STL概念(1)STL的六大组件详细功能如下:(2)迭代器(指针类型)的种类:(3)结合使用vector和迭代器 (一)STL概念 STL是standard template library的首字母缩写,是标准模板库 思想:泛型编程(基于函数模板,类模板实现)、提高复用性 STL分为:容器、算法、迭代器;容器和算法之间通过迭代器无缝连接 STL的六大组件:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器 (1)STL的六大组件详细功能如下: 名称 功能 容器 vecto

xiaoxiaoguailou的博客 1735

浅谈C++|STL之vector篇

以下是一些对函数或成员类型描述在指定位置的提示前插入元素插入元素或修改现有元素的值移除指定位置或指定范围的元素根据给定的谓词函数删除元素移除指定值的所有元素根据给定的谓词函数删除元素交换两个向量的内容合并两个已排序的向量,并将结果存储在第一个向量中对向量的元素进行排序对向量的元素进行稳定排序反转向量中元素的顺序移除重复的元素,仅保留相邻的一个根据给定的谓词函数移除重复的元素使用二分查找在排序的向量中查找元素返回一个迭代器,指向在已排序向量中首次出现不小于给定值的元素位置。

m0_73731708的博客 837

STL学习——浅谈vector类的模拟实现

vector的文档介绍 vector简介: vector是表示可变大小数组的序列容器。 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。 本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小为了增加存...

现从事游戏开发领域 | 团队项目be_with开发进行中 web方向感兴趣者私 ——We can do all things. 410

STL常用容器浅谈

STL是C/C++开发中一个非常重要的模板,而其中定义的各种容器也是非常方便我们大家使用。下面,我们就浅谈某些常用的容器。这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点。STL中的常用容器包括:顺序性容器(vector、deque、list)、关联容器(map、set)、容器适配器(queue、stac)。 1、顺序性容器 (1)vector   vecto

王小川的博客 206

浅谈STL

浅谈STL的理解 文录浅谈STL的理解前言一、STL是什么?二、STL的组成三、STL的使用四、STL之string五,STL之vector总结 前言 一、STL是什么? STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。可以理解TL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。 其中STL这个"容器“‘里有很多头文件 包含以下13个 、、、、、、<memory.

m0_52383532的博客 472

面试浅谈之 C++ STL 篇

C++ STL 篇

优质后端技术知识记录 1172

浅谈STL学习

主要用于存储不重复的元素,而用于存储键值对。二者的find和count方法的返回值都是为了检测元素是否存在,find返回迭代器,count返回匹配的数量(在这两者中都是 0 或 1)。

zjx3610022006的博客 759
上一篇: 二叉搜索树与双向链表
下一篇: 关于某种二叉树的生成
追梦少年ML
博客等级 码龄7年 36粉丝 89原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值