STL——vector(1)

博客ID:LanFuRen
C系列专栏C语言重点部分  C语言注意点  C++基础  Linux  数据结构  C++注意点 今日好题
声明等级:黑色->蓝色->红色

欢迎新粉加入,会一直努力提供更优质的编程博客,希望大家三连支持一下啦

目录

尾插尾删的使用

我们这里分别使用[]遍历,范围for遍历,迭代器遍历来输出我们这一个顺序表:

迭代器失效问题

 greater&sort使用


vecotr我们可以类比成之前数据结构学习的顺序表。

尾插尾删的使用

注意:vector只支持使用尾插尾删,虽提供insert等函数,但是不建议以这样的方式头插头删。

void test_vector1()
{//vector只有尾插尾删pop_back,push_backvector<int> v1;//模板的实例化,存的是int//尾插v1.push_back(1);v1.push_back(2);v1.push_back(3);v1.push_back(4);v1.push_back(5);v1.pop_back();//尾删
}

我们这里分别使用[]遍历,范围for遍历,迭代器遍历来输出我们这一个顺序表:

//[]重载
for (size_t i = 0; i < v1.size(); i++)
{cout << v1[i] << endl;
}
//迭代器遍历
vector<int>::iterator it1 = v1.begin();
while (it1 != v1.end())
{cout << *it1;++it1;
}
//范围for
for (auto&e : v1)
{cout << e << endl;
}

运行结果如下:

迭代器失效问题

我们不再赘述cpp文档里面的那些函数,因为跟之前的string类的函数使用方法几乎一致,我们来看看迭代器失效问题

其实这问题跟我们之前学到的野指针很类似

例如我们在使用erase函数的时候,错误代码如下:

void test_vector2()
{//迭代器失效vector<int> v1;v1.push_back(1);v1.push_back(2);v1.push_back(3);//找到3vector<int>::iterator pos = find(v1.begin(), v1.end(), 3);v1.erase(pos);//删除pos位置的值cout << *pos;
}

运行终止: 

erase删除pos位置元素后,pos位置之后的元素会往前搬移,没有导致底层空间的改变,理论上讲迭代器不应该会失效,但是:如果pos刚好是最后一个元素,删完之后pos刚好是end的位置,而end位置是没有元素的,那么pos就失效了。因此删除vector中任意位置上元素时,vs就认为该位置迭代器失效了。跟野指针真的很相似。

 greater&sort使用

void test_vector3()
{greater<int> gt;cout << gt(2, 3) << endl;//0cout << gt(3, 3) << endl;//0//cout << gt.operator()(2, 3) << endl;//0cout << gt(3, 2) << endl;//1
}

根据返回结果我们可以知道该仿函数(后面会提)的用法:参数1<=参数2,返回0,反之返回1。

sort函数的头文件是<algorithm>

就是将数据按大小排序:

void test_vector3()
{vector<int> v1;v1.push_back(1);v1.push_back(0);v1.push_back(2);v1.push_back(3);greater<int> gt;sort(v1.begin(), v1.end());for (int i = 0; i < v1.size(); i++){cout << v1[i];//0123}cout << endl;sort(v1.begin(), v1.end(),gt);//添加gtfor (int i = 0; i < v1.size(); i++){cout << v1[i];//3210}
}

先记住greater函数这样使用就行。

大家要注意学习文档的函数就行了,vector这一部分的内容不是很难。

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

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

相关文章

typecho博客主题美化总结篇—php单文件相册管理

看过我前面两期博客的都知道&#xff0c;最近lz在专心建设自己的博客。因为是基于typecho,用的朴素简洁的博客主题&#xff0c;就注定了各个模块都需要自己亲力亲为的去设计&#xff0c;开发。不过这种经由自己手从无到有&#xff0c;从朴素空白到唯美充实的过程确实也很值得期…

每日一练:【动态规划算法】斐波那契数列模型之

1. 第 N 个泰波那契数&#xff08;easy&#xff09; 1. 题目链接&#xff1a;1137. 第 N 个泰波那契数 2. 题目描述 3.题目分析 这题我们要求第n个泰波那契Tn的值&#xff0c;很明显的使用动态规划算法。 4.动态规划算法流程 1. 状态表示&#xff1a; 根据题目的要求及公…

SQL DQL查询操作

1.基本查询 select name,employee.workno,employee.age from employee;select employee.idcard as 身份证号 from employee;select employee.entrydate from employee; select distinct employee.entrydate from employee; 2.条件查询 where select * from employee where i…

Mysql 版本升级-二进制安装方式

8.0.20 -8.0.40 总体参考见下 fw_error_www 前置环境说明 glibc 版本&#xff0c;安装mysql二进制文件时需要匹配&#xff0c;安装的版本只能比系统的低 ldd --version# 查看库的位置 ldd which top | grep "libc.so"逻辑备份 卸载旧版本相关数据&#xff08;注…

【CSS3】Flex弹性布局

文章目录 前言一、基本概念1.容器和项目&#xff1a;2.主轴和交叉轴&#xff1a; 二、容器属性1.flex-direction&#xff1a;决定主轴的方向&#xff0c;即x轴还是y轴2.flex-wrap&#xff1a;定义项目的换行方式3.flex-flow&#xff1a;flex-direction属性和flex-wrap属性的简写…

vscode集成的终端里backspace键无法退格

解决办法&#xff1a; 搜索“backspace”&#xff0c;然后修改backspce对应的项的快捷键为其它按键组合&#xff0c;如下&#xff1a;

网络抓包工具tcpdump 在海思平台上的编译使用

目录 2&#xff1a;下载源码 1&#xff1a;下载 2&#xff1a;编译 2.1&#xff1a;下载 2.2&#xff1a;编译libpcap 2.3&#xff1a;编译tcpdump 3&#xff1a;使用验证 音视频开发中经常用到抓包工具分析数据&#xff0c;这里是海思平台下的tcpdump工具编译使用流程&a…

详细描述一下Elasticsearch索引文档的过程?

大家好&#xff0c;我是锋哥。今天分享关于【详细描述一下Elasticsearch索引文档的过程&#xff1f;】面试题。希望对大家有帮助&#xff1b; 详细描述一下Elasticsearch索引文档的过程&#xff1f; Elasticsearch的索引文档过程是其核心功能之一&#xff0c;涉及将数据存储到…

Android:任意层级树形控件(有效果图和Demo示例)

先上效果图&#xff1a; 1.创建treeview文件夹 2.treeview -> adapter -> SimpleTreeAdapter.java import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.ListView; i…

Jmeter中的断言(四)

13--XPath断言 功能特点 数据验证&#xff1a;验证 XML 响应数据是否包含或不包含特定的字段或值。支持 XPath 表达式&#xff1a;使用 XPath 表达式定位和验证 XML 数据中的字段。灵活配置&#xff1a;可以设置多个断言条件&#xff0c;满足复杂的测试需求。 配置步骤 添加…

3243.新增道路查询的最短距离

给你一个整数 n 和一个二维整数数组 queries。 有 n 个城市&#xff0c;编号从 0 到 n - 1。初始时&#xff0c;每个城市 i 都有一条单向道路通往城市 i 1&#xff08; 0 < i < n - 1&#xff09;。 queries[i] [ui, vi] 表示新建一条从城市 ui 到城市 vi 的单向道路…

MySQL - 表的约束

文章目录 1、空约束2.默认值3.列描述4.zerofill5.主键6.自增长7.唯一键8.外键 真正约束字段的是数据类型&#xff0c;但是数据类型约束很单一&#xff0c;需要有一些额外的约束&#xff0c;更好的保证数据的合法性&#xff0c;从业务逻辑角度保证数据的正确性。比如有一个字段是…

VirtualBox安装虚拟机Windows server 2019系统只显示cmd命令窗口

原因&#xff1a; 没注意选用了核心安装选项&#xff0c;此选项不安装图形界面 解决&#xff1a; 方式一&#xff1a;重装虚拟机&#xff0c;选用有图形界面的版本 方式二&#xff1a;在cmd窗口中安装图形界面 Dism /online /enable-feature /all /featurename:Server-Gui-Mgm…

基于卷积神经网络的皮肤病识别系统(pytorch框架,python源码,GUI界面,前端界面)

更多图像分类、图像识别、目标检测等项目可从主页查看 功能演示&#xff1a; 皮肤病识别系统 vgg16 resnet50 卷积神经网络 GUI界面 前端界面&#xff08;pytorch框架 python源码&#xff09;_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于卷积神经网络的皮肤病识…

MixVpr重定位实战----onnx以及Tensorrt适配

0. 简介 对于深度学习而言&#xff0c;通过模型加速来嵌入进C是非常有意义的&#xff0c;因为本身训练出来的pt文件其实效率比较低下&#xff0c;在讲完BEVDET和FastBEV后&#xff0c;这里我们将展开实战&#xff0c;从pt到onnx再到tensorrt&#xff0c;以MixVpr作为例子&…

Java基于微信小程序的校园跑腿平台(V2.0)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

Spring Boot图书馆管理系统:疫情中的管理利器

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了疫情下图书馆管理系统的开发全过程。通过分析疫情下图书馆管理系统管理的不足&#xff0c;创建了一个计算机管理疫情下图书馆管理系统的方案。文章介绍了疫情下图…

【CUDA】Branch Divergence and Unrolling Loop

目录 一、避免分支发散 1.1 并行规约问题 1.2 并行规约中的发散 二、UNrolling Loops 一、避免分支发散 控制流有时依赖于 thread 索引。同一个warp中&#xff0c;一个条件分支可能导致性能很差。通过重新组织数据获取模式可以减少或避免 warp divergence。具体问题查看下…

WIN系统解决小喇叭红色叉号的办法

WIN系统解决小喇叭红色叉号的办法 WIN系统提示无音频设备&#xff0c;无法播放声音&#xff0c;重装驱动无法解决 写在前面 前段时间搞了套6750GRE&#xff0c;用了两三个月&#xff0c;老是掉驱动&#xff0c;后面折腾了一下子&#xff0c;终于是不掉了。突然&#xff0c;某…

免费S3客户端工具大赏

首发地址&#xff08;欢迎大家访问&#xff09;&#xff1a;S3免费客户端工具大赏 1. S3 GUI GitHub地址&#xff1a;https://github.com/aminalaee/s3gui 简介&#xff1a;S3 GUI 是一款基于 Flutter 构建的免费开源 S3 桌面客户端&#xff0c;支持桌面、移动和网络平台。 特…