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

std::list和std::vector删除指定下标的元素

list和vector都可以使用erase函数移除指定下标的元素,注意输入的是迭代器,返回值为指向下一个元素的位置。:

iterator erase(iterator position);
iterator erase(iterator first,iterator last);

如果下标是index,直接调用即可:

list.erase(list.begin() + index);

如果根据下标一次性删除多个元素,则会发生错误,因为删除一个元素后,元素个数会发生变化,因此下标就会出现错误,正确代码如下:

#include <vector>
#include <list>
#include <iostream>using namespace std;bool sort_desc(int a, int b)
{
return a > b;
}int main(int argc, char *argv[])
{list<int> mylist;mylist.push_back(5);mylist.push_back(8);mylist.push_back(9);mylist.push_back(2);mylist.push_back(4);mylist.push_back(6);list<int> index;index.push_back(1);index.push_back(3);index.push_back(4);index.sort(sort_desc);//对下标数组进行降序for(list<int>::iterator iter=index.begin(); iter!=index.end(); iter++){list<int>::iterator delIter=mylist.begin();advance(delIter, *iter);//按照由大到小的下标顺序进行删除元素,这样被删除元素的下标是永远不会变的mylist.erase(delIter);}for(list<int>::iterator iter=mylist.begin(); iter!=mylist.end(); iter++){cout << *iter << " ";}cout << endl;return 0;
}

http://www.lryc.cn/news/142491.html

相关文章:

  • Apache POI 以及 导出Excel表
  • RabbitMQ从原理到实战—基于Golang【万字详解】
  • 机器学习——KNN算法
  • Kali 软件管理测试案例
  • 【分布式】Zookeeper
  • ScheduleJS Crack,新的“信息列”水平滚动功能
  • curl封装
  • C语言数据类型和变量
  • 分布式训练 最小化部署docker swarm + docker-compose落地方案
  • QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动
  • QT使用QXlsx实现数据验证与Excel公式操作 QT基础入门【Excel的操作】
  • renrenfast Vue2 打包发布
  • NoSQL数据库介绍+Redis部署
  • 【mindspore学习】环境配置
  • 基于shell脚本对aliyun npm仓库(https://packages.aliyun.com)登录认证
  • K8s Pod 安全认知:从openshift SCC 到 PSP 弃用以及现在的 PSA
  • 提高企业会计效率,选择Manager for Mac(企业会计软件)
  • 软考:中级软件设计师:信息系统的安全属性,对称加密和非对称加密,信息摘要,数字签名技术,数字信封与PGP
  • Vue3中reactive响应式失效的问题
  • lamp
  • LeetCode 周赛上分之旅 #42 当 LeetCode 考树上倍增,出题的趋势在变化吗
  • Qt 自定义菜单 托盘菜单
  • channel并发编程
  • 苹果新健康专利:利用 iPhone、Apple Watch 来分析佩戴者的呼吸情况
  • 数据分析基础-数据可视化02-不同数据类型的可视化概念及原则
  • QT项目使用Qss的总结
  • suricata初体验+wireshark流量分析
  • 机器学习:异常检测实战
  • 数据结构1
  • 自然语言处理学习笔记(七)————字典树效率改进