博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Effective_STL 学习笔记(九) 在删除选项中仔细选择
阅读量:6192 次
发布时间:2019-06-21

本文共 1124 字,大约阅读时间需要 3 分钟。

 

去除一个容器中有特定值的所有对象:

  如果容器是 vector、string 或 deque,使用 erase-remove惯用法

    c.erase( remove( c.begin(), c.end() , val), c.end() ); 

      // remove() 函数,将值不为 val 的元素前移,并返回一个指向新的超尾值的迭代器

      // remove() 函数不是 vector 的成员函数,因此不能调整 vector 容器的长度,

      // remove() 函数并不是真的删除,要想真正删除,使用 erase() 或者 resize();

      // erase() 函数可以删除给定区间的元素,接受两个迭代器参数。

  如果容器是 list,使用 list::remove

    l.remove( val );  // remove 是 list 的成员函数,是去除特定值的最佳方法

  如果容器是标准非关联容器,使用它的 erase 成员函数

    c.erase( val );   // erase 成员函数是去除特定值的最佳方式

去除容器中满足特定判定式的所有对象:

  如果容器是 vector、string 或 deque,使用 erase-remove_if 惯用法

    c.erase( remove_if( c.begin(), c.end(), badValue ), c.end() );

      // 去掉badValue返回真的对象的最佳方法

  如果容器是 list,使用 list::remove_if

    c.remove_if( badValue );

      // c 为 list 时,去掉badValue返回真的对象的最佳方法

  如果容器是标准关联容器,使用 remove_copy_if 和 swap,或写一个循环来遍历容器元素,

  当你把迭代器传给 erase 时记得后置递增它  

    remove_copy_if( c.begin, c.end(), inserter( goodValues, goodValues.end() ), badValue );

      // 从 c 拷贝不删除的值到 goodValues

    c.swap( goodValues );  

      // 交换 c 和 goodValues

在循环内做某些事情(除了删除对象外)

  如果容器是标准序列容器

 

转载于:https://www.cnblogs.com/kidycharon/p/10003919.html

你可能感兴趣的文章
【转】Deep Learning(深度学习)学习笔记整理系列之(二)
查看>>
代码质量与上线压力
查看>>
系统时间不对 导至不能正常上网
查看>>
摄像头说明
查看>>
php 使用 ffmpeg 转换视频,截图,并生成缩略图
查看>>
jQuery EasyUI API 中文文档 - 加载器
查看>>
addedbytes.com 制作的速查表欣赏
查看>>
程序员好难...
查看>>
通过java的Runtime.getRuntime()和System.getProperties()来获取系统的信息
查看>>
Linux对文件归档和压缩(学习笔记八)
查看>>
launch文件概述---1
查看>>
WPF下载远程文件,并显示进度条和百分比
查看>>
实现app上对csdn的文章查看,以及文章中图片的保存 (制作csdn app 完结篇)
查看>>
Linq动态条件
查看>>
大圣归来:我们心中缺少一份英雄主义
查看>>
IIS配置错误信息输出
查看>>
excel使用技巧
查看>>
Flymeos插桩适配教程
查看>>
MySQL备份 博客---MYSQLDBA 黄杉
查看>>
Mysql 修改数据库,mysql修改表类型,Mysql增加表字段,Mysql删除表字段,Mysql修改字段名,Mysql修改字段排列顺序,Mysql修改表名...
查看>>