当前位置: 首页 > news >正文

C++中vector常用函数总结

一,vector

vector可以理解为一个边长数组,可以存储不同的类型,int ,double,char,结构体等。

也可以才能出STL标准容器,如set,string,vector等

二,构造函数

vector(size_t n,T val)                                      //用n个T类型的val初始化
vector(InputIterator first,InputIterator last)    //用迭代器区间[first,last)初始化
vector(const vector& x)                               //复制出一份x

void Tets_vector1()
{vector<int> v1(5, 1);    //1 1 1 1 1vector<int> v2(v1);      //1 1 1 1 1vector<int> v3(v1.begin(), v1.end());  /1 1 1 1 1
}

三,初始化方法

1,使用圆括号赋值

也就是调用构函数

vector<int> v(5, 1);
for (auto x : v)
    cout << x << " ";

//输出 1 1 1 1 1

2,使用花括号赋值 

vector<int> v2{ 1,2,3,4,5 };
for (auto x : v2)
    cout << x << " ";
cout << endl;

//输出1 2 3 4 5  

 四,元素访问(遍历)

可以使用[ ]进行下标直接访问和遍历,也可以使用迭代器进行访问和遍历

void Test_vector2()
{//下标vector<int> v(5, 1);for (int i = 0; i < v.size(); i++)cout << v[i] << " ";cout << endl;//迭代器vector<int>::iterator it = v.begin();while (it != v.end()){cout << *it << " ";it++;}cout << endl;
}

 五,常用函数

1,push_back

v.push_back(x),就是在vector容器后面添加一个元素x,时间复杂度为O(1)

void Tets_vector4()
{
    vector<int> v;
    for (int i = 0; i < 3; i++)
        v.push_back(i);
    for (auto x : v)
        cout << x << " ";
    cout << endl;
}

2,insert() 

void insert(iterator it,T val)                                //在迭代器处插入值val
void insert(iterator it,InputIterator first,InputIterator last) //在迭代器it前插入区间[first,last)
iterator insert(iterator,size_t n,T val)                        //在迭代器处插入n个val

void Tets_vector4()
{vector<int> v{ 1,2,3,4,5 };v.insert(v.begin(), 6);   //1前插入6for (auto e : v)cout << e << " ";cout << endl;vector<int> v1{ 8,9 };v1.insert(v1.begin(), v.begin(), v.end());  //开始位置前插入Vfor (auto e : v1)cout << e << " ";cout << endl;v1.insert(v1.begin(), 3, 5);    //开始位置前插入3个5for (auto e : v1)cout << e << " ";cout << endl;
}

3,pop_back() 

pop_back()可以删除vector尾部的元素,时间复杂度为O(1)

void Tets_vector5()
{vector<int> v{ 1,2,3,4,5 };v.pop_back();for (auto e : v)cout << e << " ";cout << endl;}

4,size(),capacity() 

size()用来获取vector容器的元素个数,时间复杂度为O(1),size()返回类型为size_t。

capacity()用来获取vector容器的容量大小,时间复杂度为O(1),capacity()返回类型为size_t.

5,resize()

resize()用来调整size()的。

resize(size_t n,T val) 

//开辟n个空间,并初始化为val

//如果之前有空间,就会将空间大小调整到n,并将新开的空间初始化为val,原先的值不变

void Tets_vector7()
{vector<int> v{ 1,2,3,4,5 };v.resize(8, 1);for (auto e : v)cout << e << " ";cout << endl;
}

 6,clear()

clear()用来清空vector中的所有元素,时间复杂度为O(N),N为vector中的元素个数:

void Test_vector8()
{vector<int> v;for (int i = 1; i <= 3; i++)v.push_back(i);cout << v.size() << endl;v.clear();cout << v.size() << endl;
}

7,erase()

erase()有两种用法:删除单个元素、删除一个区间内所有元素。时间复杂度为O(N)。

1,删除单个元素

erase(it)   //删除迭代器处的元素

void Test_vector9()
{
    vector<int> v{ 1,2,3,4,5 };
    for (auto e : v)
        cout << e << " ";
    cout << endl;

    v.erase(v.end() - 2);
    for (auto e : v)
        cout << e << " ";
    cout << endl;
}

 输出结果

1 2 3 4 5

1 2 3 5

2,删除一个区间的所有元素

erase(first, last)即删除[first, last)内的所有元素:

void Test_vector10()
{
    vector<int> v;
    for (int i = 1; i <= 5; i++) {
        v.push_back(i);    //将1、2、3、4、5 依次插入v的队尾 
    }
    v.erase(v.begin() + 1, v.begin() + 3);    //删除2和3 
    for (auto it = v.begin(); it != v.end(); it++) {
        cout << *it << " ";
    }

}

输出结果

1 4 5 

相关文章:

C++中vector常用函数总结

一&#xff0c;vector vector可以理解为一个边长数组&#xff0c;可以存储不同的类型&#xff0c;int ,double,char,结构体等。 也可以才能出STL标准容器&#xff0c;如set,string,vector等 二&#xff0c;构造函数 vector(size_t n,T val) …...

手撕数据结构 —— 队列(C语言讲解)

目录 1.什么是队列 2.如何实现队列 3.队列的实现 Queue.h中接口总览 具体实现 结构的定义 初始化 销毁 入队列 出队列 取队头元素 取队尾元素 判断是否为空 获取队列的大小 4.完整代码附录 Queue.h Queue.c 1.什么是队列 队列是一种特殊的线性表&#xff0…...

Java知识巩固(五)

目录 基本数据类型 基本类型和包装类型的区别&#xff1f; 自动装箱与拆箱了解吗?原理是什么&#xff1f; 为什么浮点数运算的时候回邮精度丢失的风险&#xff1f; 如何解决浮点数运算的精度丢失问题&#xff1f; 超过 long 整型的数据应该如何表示&#xff1f; 基本数据…...

C# 中 yield关键字的使用

yield return有以下优点&#xff1a; 每次迭代时生成一个值&#xff0c;并且在下次迭代时继续从上次离开的地方开始。 延迟执行&#xff1a;只有在实际需要时才会生成下一个值&#xff0c;这对于处理大量数据非常有用。 节省内存&#xff1a;不需要一次性将所有数据加载到内存中…...

YoloDotNet 的基本使用方法详解

文章目录 一、创建项目与引用库二、模型加载与初始化三、图像数据的处理与输入四、目标检测结果的获取与解析五、性能优化与参数调整一、创建项目与引用库 在使用 YoloDotNet 之前,首先需要在开发环境中创建一个新的项目。可以选择使用 Visual Studio 等开发工具,创建一个 C#…...

0x12 Dapr Dashboard configurations 未授权访问漏洞 CVE-2022-38817

参考: Dapr Dashboard configurations 未授权访问漏洞 CVE-2022-38817 | PeiQi文库 (wgpsec.org)免责声明 欢迎访问我的博客。以下内容仅供教育和信息用途: 合法性:我不支持或鼓励非法活动。请确保遵守法律法规。信息准确性:尽管我尽力提供准确的信息,但不保证其完全准确…...

Android activity 启动流程

Android activity 启动流程 本文主要记录下acitivty的启动流程. 1: Activity 我们都知道启动activity调用方法: startActivity(Intent intent)startActivity(Intent intent, Nullable Bundle options)startActivityForResult(RequiresPermission Intent intent, int reques…...

使用 Go 语言实现 WebSocket的核心逻辑

文章目录 WebSocket 简介时序图核心逻辑Client 结构与功能创建新客户端消息读取逻辑 (ReadPump)发送消息逻辑 (Send)客户端管理器 (ClientManager)WebSocket 处理器处理心跳与长连接 总结 本文将基于 Go 语言&#xff0c;通过使用 gorilla/websocket 库来实现一个简单的聊天应用…...

Linux下的杀毒软件介绍

Linux下的杀毒软件介绍 一、Linux杀毒软件的基本概念和作用二、Linux杀毒软件的选择三、Linux杀毒软件推荐四、Linux杀毒软件对应用进程的影响五、结论在当今数字化和网络化的环境中,保护计算机系统的安全至关重要。尽管Linux操作系统因其开源、稳定且相对安全的特性而较少受到…...

JSONP详解

JSONP&#xff08;JSON with Padding&#xff09;是一种非官方的协议&#xff0c;它允许在服务器端集成Script tags返回至客户端&#xff0c;通过JavaScript callback的形式实现跨域访问。以下是对JSONP的详细解释&#xff1a; 一、JSONP的背景与原理 背景&#xff1a; 由于浏…...

Leetcode—1115. 交替打印 FooBar【中等】(多线程)

2024每日刷题&#xff08;180&#xff09; Leetcode—1115. 交替打印 FooBar C实现代码 class FooBar { private:int n;sem_t fooSem;sem_t barSem;public:FooBar(int n) {this->n n;sem_init(&fooSem, 0, 1);sem_init(&barSem, 0, 0);}~FooBar() {sem_destroy(&…...

Visual Studio Code基础:使用debugpy调试python程序

相关阅读 VS codehttps://blog.csdn.net/weixin_45791458/category_12658212.html?spm1001.2014.3001.5482 一、安装调试器插件 在VS code中可以很轻松地调试Python程序&#xff0c;首先需要安装Python调试器插件&#xff0c;如图1所示。 图1 安装调试器插件 Python Debugge…...

超全!一文详解大型语言模型的11种微调方法

导读&#xff1a;大型预训练模型是一种在大规模语料库上预先训练的深度学习模型&#xff0c;它们可以通过在大量无标注数据上进行训练来学习通用语言表示&#xff0c;并在各种下游任务中进行微调和迁移。随着模型参数规模的扩大&#xff0c;微调和推理阶段的资源消耗也在增加。…...

C 主要函数解析

1、fseek 函数 int fseek(FILE *stream, long offset, int fromwhere); 第一个参数stream为文件指针 第二个参数offset为偏移量&#xff0c;正数表示正向偏移&#xff0c;负数表示负向偏移 第三个参数origin设定从文件的哪里开始偏移,可能取值为&#xff1a;SEEK_CUR、 SEE…...

vue3学习:数字时钟遇到的两个问题

在前端开发学习中&#xff0c;用JavaScript脚本写个数字时钟是很常见的案例&#xff0c;也没什么难度。今天有时间&#xff0c;于是就用Vue的方式来实现这个功能。原本以为是件非常容易的事&#xff0c;没想到却卡在两个问题上&#xff0c;一个问题通过别人的博文已经找到答案&…...

吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)3.7-3.8

目录 第四门课 卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;第三周 目标检测&#xff08;Object detection&#xff09;3.7 非极大值抑制&#xff08;Non-max suppression&#xff09;3.8 Anchor Boxes 第四门课 卷积神经网络&#xff08;Convolutional…...

【Linux】最基本的字符设备驱动

前面我们介绍到怎么编译出内核模块.ko文件&#xff0c;然后还加载了这个驱动模块。但是&#xff0c;那个驱动代码还不完善&#xff0c;驱动写好后怎么在应用层使用也没有介绍。 字符设备抽象 Linux内核中将字符设备抽象成一个具体的数据结构&#xff08;struct cdev&#xff…...

利用 Llama 3.1模型 + Dify开源LLM应用开发平台,在你的Windows环境中搭建一套AI工作流

文章目录 1. 什么是Ollama&#xff1f;2. 什么是Dify&#xff1f;3. 下载Ollama4. 安装Ollama5. Ollama Model library模型库6. 本地部署Llama 3.1模型7. 安装Docker Desktop8. 使用Docker-Compose部署Dify9. 注册Dify账号10. 集成本地部署的 Llama 3.1模型11. 集成智谱AI大模型…...

Docker常用命令分享二

docker的用户组管理过程&#xff1a; 1、sudo : 可以让普通用户临时获得root用户的权限&#xff0c;来新建docker用户组 2、普通用户并没有使用sudo的权限 3、先要让root用户把testing用户加入到sudoers的授权文件中 4、sudoers的文件居然是只读的&#xff0c;先解决这个问…...

【一步步开发AI运动小程序】二十、AI运动小程序如何适配相机全屏模式?

引言 受小程序camera组件预览和抽帧图像不一致的特性影响&#xff0c;一直未全功能支持全屏模式&#xff0c;详见本系列文件第四节小程序如何抽帧&#xff1b;随着插件在云上赛事、健身锻炼、AI体测、AR互动场景的深入应用&#xff0c;各开发者迫切的希望能在全屏模式下应用&am…...

[Java基础] 运算符

[Java基础] 基本数据类型 [Java基础] Java HashMap 的数据结构和底层原理 目录 算术运算符 比较运算符 逻辑运算符 位运算符 赋值运算符 其他运算符 常见面试题 Java语言支持哪些类型的运算符&#xff1f; 请解释逻辑运算符&&和&的区别? 请解释条件运…...

[001-02-018].第05节:数据类型及类型转换

我的后端学习大纲 我的Java学习大纲 1、数据类型介绍&#xff1a; 1.0.计算机存储单位&#xff1a; 1.1.基本数据类型介绍&#xff1a; a.整型&#xff1a;byte、short、int、long 1.整型包括&#xff1a;byte、short、int、long&#xff0c;可如下图方式类比记忆&#xff1…...

Netty基础

Netty基础 一级目录I/O请求基础知识Netty如何实现自己的I/O模型 网络框架的选型 Netty整体架构Netty逻辑处理架构网络通信层事件调度层服务编排层 组件关系梳理Netty源码结构 netty是目前最流行的一款高性能java网络编程框架&#xff0c;广泛使用于中间件、直播、社交、游戏等领…...

602,好友申请二:谁有最多的好友

好友申请二&#xff1a;谁有最多的好友 实现 with tmp as (selectrequester_id idfrom RequestAcceptedunion allselectaccepter_id idfrom RequestAccepted )selectid,count(*) num from tmp group by id order by num desc limit 1;...

【Matlab算法MATLAB实现的音频信号时频分析与可视化(附MATLAB完整代码)

MATLAB实现的音频信号时频分析与可视化 前言正文:时频分析实现原理代码实现代码运行结果图及说明结果图:结果说明:总结前言 音频信号的时频分析是信号处理领域中的一个重要研究方向。它允许我们同时观察信号在时间和频率域的特性,为音频处理、语音识别、音乐分析等应用提供…...

界面耻辱纪念堂--可视元素03

更多的迹象表明&#xff0c;关于在程序里使用新的动态界面元素&#xff0c;微软的态度是不确定的&#xff0c;其中一个是仅仅需要对比一下Office97 里的“Coolbars”和“标准工具条”。Coolbar 按钮直到用户指针通过的时候才成为按钮&#xff08;否则是平的&#xff09;。 工具…...

国产龙芯处理器选择迅为2K1000开发板有资料

硬件配置国产龙芯处理器&#xff0c;双核64位系统&#xff0c;板载2G DDR3内存&#xff0c;流畅运行Busybox、Buildroot、Loognix、QT5.12 系统!接口全板载4路USB HOST、2路千兆以太网、2路UART、2路CAN总线、Mini PCIE、SATA固态盘接口、4G接口、GPS接口WIF1、蓝牙、Mini HDMI…...

MySQL 命令(持续更新)

将 MySQL 命令结果输出到文件中 通过 k8s MySQL pod 里的客户端连接到 MySQL 服务器 kubectl exec mysql-pod -- mysql -hx.x.x.x -uroot -proot -e SELECT * FROM db.table; > result.txt通过 k8s MySQL pod 的客户端连接 MySQL 服务器&#xff0c;直接进入到 MySQL 客户端…...

Linux下Docker方式Jenkins安装和配置

一、下载&安装 Jenkins官方Docker仓库地址&#xff1a;https://hub.docker.com/r/jenkins/jenkins 从官网上可以看到&#xff0c;当前最新的稳定版本是 jenkins/jenkins:lts-jdk17。建议下在新的&#xff0c;后面依赖下不来 所以&#xff0c;我们这里&#xff0c;执行doc…...

低代码框架参考

企业管理信息系统作为一类重要的应用软件系统&#xff0c;具有自己的特点&#xff0c;主要有两个方面&#xff1a; 1. 系统规模大&#xff0c;目前市场上常见的ERP系统一般都有几千个页面。 2. 页面逻辑相似性强。经过比较可以发现&#xff0c;大部分页面具有类似的功能&…...