STL remove和remove_if
来源:互联网 发布:我的世界pe我是僵尸js 编辑:程序博客网 时间:2024/05/23 16:06
1)对于vector容器:
remove和remove_if的区别就是第3个参数的区别,remove第3个参数为常数,remove_if第3个参数为过滤条件,调用时传一个函数指针,remove和remove_if 后,容器的size不会改变,只是想元素往前移动,在remove和remove_if后,需要用erase删除元素;例子如下:
#include <vector>
#include <algorithm>
using namespace std;
bool isOdd(int value)
{
return (value % 2) == 1;
}
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<int> my_container;
for (int i = 0; i < 10; ++i)
{
my_container.push_back(i);
}
remove_if(my_container.begin(), my_container.end(), isOdd);
for (vector<int>::iterator iter=my_container.begin();iter!=my_container.end();iter++)
{
//
printf("remove_if=%d\n",*iter);
}
my_container.erase( remove_if(my_container.begin(), my_container.end(), isOdd), my_container.end());
//
for (vector<int>::iterator iter=my_container.begin();iter!=my_container.end();iter++)
{
//
printf("erase=%d\n",*iter);
}
return 0;
}
打印结果如下:
2)对于List容器
List容器本身提供remove函数和remove_if函数,remove只有一个参数,传值,remove_if也只有一个参数,为过滤条件,传函数指针;注意:list容器的remove和remove_if操作后,容器的size是会发生变化的,同样如果使用泛型算法里面的remove和remove_if,容器的size也会发生变化;这个是和vector不同的:举例如下:
int _tmain(int argc, _TCHAR* argv[])
{
//std::vector<int> my_container;
std::list<int>my_container;
for (int i = 0; i < 10; ++i)
{
my_container.push_back(i);
}
//remove(my_container.begin(), my_container.end(), 3);
my_container.remove_if(isOdd);
for (list<int>::iterator iter=my_container.begin();iter!=my_container.end();iter++)
{
//
printf("remove_if=%d\n",*iter);
}
return 0;
}
输出结果:
这个和vector的list的有关,vector为数组,删除元素,所有的元素前移,list删除元素后,就会将当前节点删掉;
- STL remove和remove_if
- stl中remove和remove_if的陷阱
- remove和remove_if()
- stl内的remove_if函数和remove函数和list类的remove函数简单例子
- STL常用算法: remove,remove_if,remove_copy,remove_copy_if,remove系列算法和partition的区别...
- STL 之remove,remove_if,remove_copy,remove_copy_if
- STL 之remove,remove_if,remove_copy,remove_copy_if
- STL之remove、remove_copy、remove_if、remove_copy_if
- remove remove_if
- C++ STL 算法:删除算法(1)remove、remove_if
- C++ remove,remove_if
- stl list.remove_if使用
- STL-remove_if()的用法
- 关于 STL 的 remove_if
- STL算法之—————remove_if, remove, remove_copy_if
- STL_Algorithm3: remove, remove_if, remove_copy, remove_copy_if
- STL remove和erase
- STL remove和erase
- unity c#读取xml
- java解析xml的几种方式哪种最好?
- 使用双线插值算法缩放位图图像
- win8、server 2012 清除winsxs文件夹
- 采样中的数据类型转换
- STL remove和remove_if
- python关于__all__的定义
- JM86 中 POC 的计算方法
- TreeSet与排序_实践应用,TreeSet显示某商品的若干信息
- UITableView的Cell排序
- 实验3.4 嵌套查询
- 谈谈计算机图像识别技术之身份证号码识别
- Latex写作回顾与总结
- 在cocos2dx中调用lua