C++ remove remove_if erase
#include <iostream>
#include <algorithm>
#include <list>
#include <vector>
#include <functional>
using namespace std;
int main()
{
list<int> list1;
for (int k=0;k<10;k++)
{
list1.push_back(k);
list1.push_front(k);
}
list<int>::iterator list_iter1;
for (list_iter1 = list1.begin();list_iter1 != list1.end();++list_iter1)
{
cout << *list_iter1 << " ";
}
cout << endl;
cout << "list1 size: " << list1.size() << endl;
cout << "----------------------------------------" << endl;
list<int>::iterator list_iter_end;
list_iter_end = remove(list1.begin(),list1.end(),3);
for (list_iter1 = list1.begin(); list_iter1 != list1.end(); ++list_iter1)
{
cout << *list_iter1 << " ";
}
cout << endl;
cout << "list1 size: " << list1.size() << endl;
cout << "----------------------------------------" << endl;
for (list_iter1 = list1.begin(); list_iter1 != list_iter_end; ++list_iter1)
{
cout << *list_iter1 << " ";
}
cout << endl;
cout << "list1 size: " << list1.size() << endl;
cout << "----------------------------------------" << endl;
cout << "删除元素的个数:" <<distance(list_iter_end,list1.end())<< endl;
//真正的删除
list<int>::iterator list_iter3 = list1.begin();
++list_iter3;
++list_iter3;
++list_iter3;
list1.erase(list1.begin(), list_iter3);
for (list_iter1 = list1.begin(); list_iter1 != list1.end(); ++list_iter1)
{
cout << *list_iter1 << " ";
}
cout << endl;
cout << "list1 size: " << list1.size() << endl;
cout << "----------------------------------------" << endl;
vector<int> vec1;
for(int k=0;k<10;k++)
{
vec1.push_back(k);
}
for (int k =6; k<16; k++)
{
vec1.push_back(k);
}
vector<int>::iterator vec_iter1;
for (vec_iter1 = vec1.begin();vec_iter1 != vec1.end();++vec_iter1)
{
cout << *vec_iter1 << " ";
}
cout << endl;
cout << "vec1 size: " << vec1.size() << endl;
cout << "----------------------------------------" << endl;
vector<int>::iterator vec_iter2 = remove(vec1.begin(),vec1.end(),11);
vec1.erase(vec_iter2, vec1.end());
for (vec_iter1 = vec1.begin(); vec_iter1 != vec1.end(); ++vec_iter1)
{
cout << *vec_iter1 << " ";
}
cout << endl;
cout << "vec1 size: " << vec1.size() << endl;
cout << "----------------------------------------" << endl;
vector<int>::iterator vec_iter4 = remove_if(vec1.begin(),vec1.end(),bind2nd(less<int>(),6));
vec1.erase(vec_iter4,vec1.end());
for (vec_iter1 = vec1.begin(); vec_iter1 != vec1.end(); ++vec_iter1)
{
cout << *vec_iter1 << " ";
}
cout << endl;
cout << "vec1 size: " << vec1.size() << endl;
cout << "----------------------------------------" << endl;
system("pause");
return 0;
}
========================================
9 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9
list1 size: 20
----------------------------------------
9 8 7 6 5 4 2 1 0 0 1 2 4 5 6 7 8 9 8 9
list1 size: 20
----------------------------------------
9 8 7 6 5 4 2 1 0 0 1 2 4 5 6 7 8 9
list1 size: 20
----------------------------------------
删除元素的个数:2
6 5 4 2 1 0 0 1 2 4 5 6 7 8 9 8 9
list1 size: 17
----------------------------------------
0 1 2 3 4 5 6 7 8 9 6 7 8 9 10 11 12 13 14 15
vec1 size: 20
----------------------------------------
0 1 2 3 4 5 6 7 8 9 6 7 8 9 10 12 13 14 15
vec1 size: 19
----------------------------------------
6 7 8 9 6 7 8 9 10 12 13 14 15
vec1 size: 13
----------------------------------------
请按任意键继续. . .

C++ remove remove_if erase的更多相关文章
- STL:remove和erase区别
C++ STL中的remove和erase函数曾经让我迷惑,同样都是删除,两者有什么区别呢? vector中的remove的作用是将等于value的元素放到vector的尾部,但并不减少vector的 ...
- remove、erase
remove: remove不是真正的删除,删除后数量并没有变化. 它接收一对迭代器,而不是一个容器,所以不知道它作用于哪个容器. 而且没有办法从一个迭代器获取对应于它的容器 实现 remove会用需 ...
- 移除元素(remove,remove_if...unique...)
remove 因为本算法作用的是iterator,所以并不会改变Container大小,会返回一个新的iterator new_last,是的first到new_last中的元素都不等于value,左 ...
- STL笔记(4)关于erase,remove
STL笔记(4)关于erase,remove 你要erase的元素很容易识别.它们是从区间的“新逻辑终点”开始持续到区间真的终点的原来区间的元素.要除去那些元素,你要做的所有事情就是用那两个迭代器调用 ...
- C++ count_if/erase/remove_if 用法详解
每次使用这几个算法时都要去查CPP reference,为了能够加深印象,整理一下基本应用. cout/cout_if: return the number of elements satisfyi ...
- C++中vector的remove用法
我将从remove的复习开始这个条款,因为remove是STL中最糊涂的算法.误解remove很容易,驱散所有关于remove行为的疑虑——为什么它这么做,它是怎么做的——是很重要的. 这是rem ...
- STL源代码分析——STL算法remove删除算法
前言 因为在前文的<STL算法剖析>中,源代码剖析许多.不方便学习,也不方便以后复习,这里把这些算法进行归类.对他们单独的源代码剖析进行解说.本文介绍的STL算法中的remove删除算法. ...
- c++转载系列 std::vector模板库用法介绍
来源:http://blog.csdn.net/phoebin/article/details/3864590 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作 ...
- C++ 中的std::vector介绍(转)
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vec ...
随机推荐
- VM虚拟机?
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统. 虚拟系统通过生成现有操作系统的全新虚拟镜像,它具有真实windows系统完全 ...
- Exams(二分
题意:给你每天要考的科目,和每门科目需要复习多长时间,问最少需要几天才能完成所有的考试. 思路:二分答案,然后判断答案是否可行,这边需要进行贪心,即倒着往前推, 比如第i天,那么前面有i-1天是,可供 ...
- python中常用的九种预处理方法
本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardization or Mean Removal ...
- Springboot AOP写操作日志 GET POST
pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- 关于pageHelper无法查到总数踩到的坑
问题代码 PageHelper.startPage(pageNum,pageSize); List<pojoVo> pojoVo=robotService.getPageList(); P ...
- Linux文件删除的原理
Linux文件iNode和block是否删除是通过 i_link 和 i_count 的计数值来判断的.只有i_count 和 I_link 同时为0 的 时候,文件的 iNode和block才 ...
- CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths (dsu on tree) 题解
先说一下dsu算法. 例题:子树众数问题. 给出一棵树,每个点有点权,求每个子树中出现次数最多的数的出现次数. 树的节点数为n,\(n \leq 500000\) 这个数据范围,\(O(n \sqrt ...
- MVC的一些有用代码
1.将patial view转成字符串 protected string RenderPartialViewToString(string viewName, object model) { if ( ...
- java 内部类简单总结
在java中,一个类可以放在另一个类的内部,称之为内部类,相对而言,包含它的类称之为外部类.不过对于Java虚拟机而言,它是不知道内部类这回事的, 每个内部类最后都会被编译为一个独立的类,生成一个独立 ...
- Python3.5以上Celery4.2.1启动报错:ImportError: cannot import name 'LRUCache' from 'kombu.utils.functional'
服务器:Centos7 Python版本:Python 3.7.0 Celery版本:4.2.1 Python3.5以上,OrderDict不允许在迭代过程中进行修改,导致LRUCache.updat ...