vector 删除元素的几种方法

2023-11-11

vector 删除元素的几种方法
1、利用成员函数pop_back()可以删除最后一个元素;
2、利用成员函数erase()可以删除由一个iterator指出的元素;
3、通过STL中的算法库函数remove()删除指定的元素(与list容器自带的成员函数remove() 有较大的区别);
4、vector().swap(x),清空了容器,且释放了内存。

注意
std::remove其实并没有真正从容器中删除元素( 返回的是没有被删除的最后一个元素的位置,* 从first到这个返回值,就是不等于val的所有元素的序列* 。);list的成员函数remove,将list中满足条件的元素真正删除了。

代码

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

void initVector(vector<int>& temp_vector)
{
	temp_vector.push_back(1);
	temp_vector.push_back(4);
	temp_vector.push_back(3);
    temp_vector.push_back(2);
	temp_vector.push_back(6);
}

void printVector(vector<int>& temp_vector)
{
	for(int i=0; i<temp_vector.size(); i++)
	{
		cout<< temp_vector[i]<<",";
	}
	cout<<endl;
}


int main()
{
	// 1 pop_back()删除尾部元素
	vector<int> temp;
	initVector(temp);
	cout<<"原始数据为:"<<endl;
	printVector(temp);
	temp.pop_back();
	cout<<"pop_back()之后数据为:"<<endl;
	printVector(temp);
	cout<<"--------------------------"<<endl;

	temp.clear();
	initVector(temp);
	cout<<"原始数据为:"<<endl;
	printVector(temp);
	for(vector<int>::iterator i= temp.begin(); i!= temp.end(); i++)
	{
		if(*i== 2)
		{
			// temp.erase返回的是迭代器
			i= temp.erase(i);
		}
	}
	cout<<"erase()之后数据为:"<<endl;
	printVector(temp);
	cout<<"--------------------------"<<endl;

	temp.clear();
	initVector(temp);
	cout<<"原始数据为:"<<endl;
	printVector(temp);
	temp.erase(std::remove(temp.begin(), temp.end(), 2), temp.end());
	cout<<"使用std::remove之后数据为:"<<endl;
	printVector(temp);

	system("pause");
	return 0;
}

运行结果
原始数据为:
1,4,3,2,6,
pop_back()之后数据为:
1,4,3,2,

原始数据为:
1,4,3,2,6,
erase()之后数据为:
1,4,3,6,

原始数据为:
1,4,3,2,6,
使用std::remove之后数据为:
1,4,3,6,

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vector 删除元素的几种方法 的相关文章

  • 如何指定 set precision 舍入

    当流到 std 输出时 我可以指定 set precision 对双精度值进行舍入吗 ofile lt lt std setprecision 12 lt lt total run time TIME lt lt n Output 0 75
  • TFS API - 缓慢的 foreach 变更集迭代

    问题背景 我正在使用 TFS api 查询 TFS 服务器上的大范围 1 600 文件 我从每个文件中收集其所有 ChangesetId 然后将其收集在列表中 代码 这是我正在使用的代码 它可以正确生成 QueryHistory 方法中指定
  • 在 C# 中转换 VbScript 函数(Right、Len、IsNumeric、CInt)

    同样 我在 VbScript 中得到了以下代码 您能建议一下 C 中的等效代码吗 Function GetNavID Title getNavID UCase Left Title InStr Title 1 End Function 我已
  • 了解 VerQueryValue

    在 MSDN 上 我注意到 VerQueryValue 函数的以下内容 lplp缓冲区 输出 低电压空洞当此方法返回时 包含指向 pBlock 指向的缓冲区中所请求版本信息的指针的地址 当关联的 pBlock 内存被释放时 lplpBuff
  • Excel的解析路径

    其实我想问以下问题 对于位于 目录中定义的 PATH 怎么能 我找出这些目录中的哪个 找到了 因为我需要使用 Process Run 从 C 运行 Excel 并且只需指示 Excel 即可正常工作 Windows 似乎知道在哪里可以找到它
  • 纹理映射 C++ OpenGL

    我已经阅读了相关内容 包括 Nehe 和此处的解决方案 但我找不到具体的答案 我正在尝试加载一张名为stars jpg 的照片 我想通过使用 uv 坐标映射它来使其成为场景的背景 方法是 glBegin GL QUADS glTexCoor
  • 如何通过实体键添加/删除与实体框架的多对多关系?

    I tried using Entities e new Entities EntityKey key new EntityKey Entities Users UserId 20 User user new User EntityKey
  • 在 PHP 扩展中,推荐从 std::string 返回值的方法

    我们有一个简单的 PHP 函数 其目的是调用 C 自由函数std string callLibrary std string 并返回其std string返回值 目前看起来是这样的 PHP FUNCTION call library cha
  • 如何在Qt3D中优化点云渲染

    我正在尝试使用 Qt3D 显示大型点云 20M pts 我第一次发现这个图书馆https github com MASKOR Qt3DPointcloudRenderer https github com MASKOR Qt3DPointc
  • 如何在方法模板中使用模板类型的引用传递参数?

    我目前正在努力编译以下代码 首先是包含带有方法模板的类的头文件 ConfigurationContext h class ConfigurationContext public template
  • 如何获取 PropertyGrid 的单元格值 (c#)?

    如何在 C 中获取属性网格项和项的值 例如 Name Ali LastName Ahmadi Name 和 LastName 是 propertygrid 的 2 个属性 PropertyGrid只是对象的组件模型表示的视图 我会说 查看组
  • C++在子类中调用虚方法

    我有以下课程 class A protected A inner public virtual void doSomething 0 class B public A void doSomething if inner NULL inner
  • 使用 OpenSSL 库在 C++ 中生成 SHA 哈希值

    如何使用以下命令生成 SHA1 或 SHA2 哈希值OpenSSL https openssl org图书馆 我搜索了谷歌 找不到任何函数或示例代码 从命令行来看 很简单 printf compute sha1 openssl sha1 您
  • 如何使用 HttpClient 验证 Pardot API

    我花了大约一天的时间尝试对 Pardot API 进行身份验证 它不喜欢我尝试发布消息正文的方式 所以我想发布对我有用的解决方案 如果您有任何建议或替代方案 我想听听 ServicePointManager SecurityProtocol
  • 如何在PropertyGrid中自定义绘制GridItem?

    我想以与所有者在 ListView 详细信息 和其他控件中绘制项目类似的方式在 PropertyGrid 中绘制属性值 如果将属性声明为 Color 类型 则其值将使用字符串描述旁边的颜色样本来绘制 如果属性是图像类型 则在字符串描述旁边绘
  • 为什么.net中的数组只实现IEnumerable而不实现IEnumerable

    我正在实现自己的 ArrayList 类 当我意识到这一点时 我感到很惊讶 public System Collections Generic IEnumerator
  • 为什么 g++ 在编译的二进制文件中存储类名?

    我注意到如果我跑strings在我编译的程序上g 输出包含它使用的各种类的名称 该程序是用 O3并且没有 g or p 并且当我剥离二进制文件时 类名仍然存在 我想知道为什么有必要g 将此信息存储在二进制文件中 出现的类名似乎都是使用虚函数
  • 如何获取数字列的确切类型,包括。规模和精度?

    有没有办法知道列中列的确切类型DataTable 现在我正在这样做 DataTable st dataReader GetSchemaTable foreach DataColumn col in st Columns var type c
  • 我可以创建一个 List> 吗?

    我正在尝试创建一个列表WeakReference使用 4 5 泛型实现 这样我就可以避免类型检查和转换WeakReference目标 但 WeakReference
  • Eclipse (C/C++) 错误:平台关闭后发现作业仍在运行

    当我打开 Eclipse 时 它 在一小时前工作过 但在启动时冻结并给出错误 发生错误 请参阅日志文件 请参阅下面的日志文件 尽管其中一些信息出现在日志中 操作系统 Mac OSX 10 7 5 Eclipse 面向 C C 开发人员的 E

随机推荐

  • JavaScript表示不背小数计算存在误差的锅

    浮点数的最高精度是17位小数 但是在实际计算时会产生莫名其妙的问题 如0 1 0 2的结果不是0 3 而是0 30000000000000004 这个舍入误差会导致无法测试特定的浮点数值 例如 var a 0 1 b 0 2 if a b
  • 【数据结构】采用邻接矩阵表示法创建无向网、无向图、有向图、有向网

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 目录 一 无向网 权值 对称 1 思路 2 代码 3 运行结果 三 其他 1 无向图 0 1 对称 2 有向网 权值 不对称 3 有向图 0 1 不对称 一 无向网 1 思路
  • 使用python的pandas包查询数据库数据导出到excel

    文章目录 前言 1 实现分析 2 实现过程 2 1安装环境 2 3功能逻辑 2 4完整代码 3 总结 前言 前几天接到一个业务的需求 让我把当前数据库里面的结果数据导出到excel中 然后供业务查看 问题是当前结果数据都是列式表 所以需要把
  • 强化学习 reward 曲线的绘制

    每隔一段取一个均值 然后把均值曲线绘制出来 包含全部点的曲线淡化处理 摘自 Z Mou Y Zhang F Gao H Wang T Zhang and Z Han Deep Reinforcement Learning based Thr
  • paddlepaddle安装问题protobuf package to 3.20.x or lower.

    按照官方文档安装paddlepaddle 2 3 0后 进行环境验证时 总是提示如下错误 TypeError Descriptors cannot not be created directly If this call came from
  • 【编程测试题】数字游戏

    题目描述 小易邀请你玩一个数字游戏 小易给你一系列的整数 你们俩使用这些整数玩游戏 每次小易会任意说一个数字出来 然后你需要从这一系列数字中选取一部分出来让它们的和等于小易所说的数字 例如 如果 2 1 2 7 是你有的一系列数 小易说的数
  • 【删除列表中最后一条数据遇到的问题】

    项目场景 列表有多页数据 如果最后一页只有一条数据 当删除这条数据时 页码能够改变并且数据正确展示 问题描述 当删除这条数据时 页码可以正确展示 但是数据没有正确显示 handleDelete row const id row userId
  • 服务器 虚拟san,关于服务器 SAN 和 SDS

    注明 本文内容基于VMware VSAN beta版本撰写 请访问http www vmware com products virtual san 获得有关正式版本的更新信息 我很高兴在Wikibon上读到了我的同事Stu Miniman
  • 【微信小程序】项目初始化

    var CSS 函数可以插入一个自定义属性 有时也被称为 CSS 变量 的值 用来代替非自定义 属性中值的任何部分 1 初始化样式与颜色 view text box sizing border box page themColor ad90
  • linux---配置bond方法

    配置bond方法 原始配置文件1 DEVICE eth0 BOOTPROTO dhcp HWADDR 00 0C 29 04 AE 65 IPV6INIT no NM CONTROLLED no ONBOOT yes TYPE Ethern
  • 不用插拔网线鼠标点击自动切换网线和WIFI

    因为之前在zf单位工作 政务内网需要插网线 而访问外网又需要连wifi 切换就需要拔掉网线插上网线很麻烦 旁边老哥教我了一手 bat程序自动切换方法 bat文件代码如下 以下代码的 bat文件执行后会切换到以太网 同时关闭掉wifi和以太网
  • 监听对象中属性变化(一个或多个属性、全部属性)

    一 数据监听器 什么是数据监听器 数据监听器用于监听和响应任何属性和数据自动的变化 从而执行特定的操作 它的作用类似于vue中的watch侦听器 在小程序中 基本语法格式如下 Component observers 字段A 字段B func
  • 积分规划:构建全面会员积分管理系统

    在当今竞争激烈的市场环境中 企业要想保持用户的忠诚度和活跃度 建立一个全面的会员积分管理系统是至关重要的 积分制度不仅可以激励用户参与 还可以增加用户的消费频次和购买金额 本文将深入探讨如何构建全面的会员积分管理系统 以实现更好的私域营销效
  • 消息队列(MQ)

    一 为什么要用消息队列 消息队列的应用场景 应用解耦 异步任务 流量削峰 问题背景 学生向老师请教问题 如果学生A正在向老师请教问题 那么后面的学生依次排队等候 直到轮到自己请教问题 这样的模式会使整个系统的效率较低 学生排队等待时间太久
  • pygame学习笔记

    pygame学习笔记 1 基础知识 参考 1 基础知识 1 设置死循环 持续显示窗口 import pygame import sys pygame init 初始化pygame size 320 240 设置窗口大小 w h screen
  • 数字逻辑触发器(一)

    触发器 一 定义 是一种具有记忆功能的逻辑部件 具有两个稳定的输出状态 用这两个稳定的状态来表示二值信号的0和1 在外界输入信号的激励下 触发器的输出状态会发生改变 二 触发器的种类举例 基本RS触发器 主从触发器 维持阻塞触发器 D触发器
  • 【appium报错】Original error:Could not proxy command to remote server. Original error:socket hang up

    博客链接1 系统自带的应用kill掉appium相关的进程 博客链接2 卸载并重装appium相关安装包 如果上面的方法仍不能解决问题 暴力解决 卸载设备上的appium setting 等appium安装的app 卸载自动化启动的app
  • UncaughtExceptionHandler 获取线程运行时异常

    我们知道线程执行体的方法接口定义为 public void run 因此线程在执行单元中是不允许抛出checked异常的 且线程之间是相对独立的 他们运行在自己的上下文当中 派生它的线程无法直接感知到它在运行时出现的异常信息 为了解决这个问
  • P2084 进制转换

    题目背景 无 题目描述 今天小明学会了进制转换 比如 10101 2 那么它的十进制表示的式子就是 1 2 4 0 2 3 1 2 2 0 2 1 1 2 0 那么请你编程实现 将一个M进制的数N转换成十进制表示的式子 注意 当系数为0时
  • vector 删除元素的几种方法

    vector 删除元素的几种方法 1 利用成员函数pop back 可以删除最后一个元素 2 利用成员函数erase 可以删除由一个iterator指出的元素 3 通过STL中的算法库函数remove 删除指定的元素 与list容器自带的成