#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的更多相关文章

  1. STL:remove和erase区别

    C++ STL中的remove和erase函数曾经让我迷惑,同样都是删除,两者有什么区别呢? vector中的remove的作用是将等于value的元素放到vector的尾部,但并不减少vector的 ...

  2. remove、erase

    remove: remove不是真正的删除,删除后数量并没有变化. 它接收一对迭代器,而不是一个容器,所以不知道它作用于哪个容器. 而且没有办法从一个迭代器获取对应于它的容器 实现 remove会用需 ...

  3. 移除元素(remove,remove_if...unique...)

    remove 因为本算法作用的是iterator,所以并不会改变Container大小,会返回一个新的iterator new_last,是的first到new_last中的元素都不等于value,左 ...

  4. STL笔记(4)关于erase,remove

    STL笔记(4)关于erase,remove 你要erase的元素很容易识别.它们是从区间的“新逻辑终点”开始持续到区间真的终点的原来区间的元素.要除去那些元素,你要做的所有事情就是用那两个迭代器调用 ...

  5. C++ count_if/erase/remove_if 用法详解

    每次使用这几个算法时都要去查CPP reference,为了能够加深印象,整理一下基本应用. cout/cout_if:  return the number of elements satisfyi ...

  6. C++中vector的remove用法

      我将从remove的复习开始这个条款,因为remove是STL中最糊涂的算法.误解remove很容易,驱散所有关于remove行为的疑虑——为什么它这么做,它是怎么做的——是很重要的. 这是rem ...

  7. STL源代码分析——STL算法remove删除算法

    前言 因为在前文的<STL算法剖析>中,源代码剖析许多.不方便学习,也不方便以后复习,这里把这些算法进行归类.对他们单独的源代码剖析进行解说.本文介绍的STL算法中的remove删除算法. ...

  8. c++转载系列 std::vector模板库用法介绍

    来源:http://blog.csdn.net/phoebin/article/details/3864590 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作 ...

  9. C++ 中的std::vector介绍(转)

    vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vec ...

随机推荐

  1. 【西北大学2019新生赛】序列排序II

    原题: 想了很久,想的是模仿冒泡,从大到小检查每一个数后面的数是否都与它互质,然后把它设为1(等价于放到最后不考虑) 然后一直想数据结垢 出来跟人交流,“这不是挺典型的思维题么哈哈哈” 利用性质: 调 ...

  2. js获取文件后缀名

    function extname(filename){ if(!filename||typeof filename!='string'){ return false }; let a = filena ...

  3. java中的文件上传下载

    java中文件上传下载原理 学习内容 文件上传下载原理 底层代码实现文件上传下载 SmartUpload组件 Struts2实现文件上传下载 富文本编辑器文件上传下载 扩展及延伸 学习本门课程需要掌握 ...

  4. Dijkstra算法和Floyd算法

    一.简介 迪杰斯特拉(Dijkstra)算法和弗洛伊德(Flyod)算法均是用于求解有向图或无向图从一点到另外一个点最短路径. 二.Dijkstra 迪杰斯特拉算法也是图论中的明星算法,主要是其采用的 ...

  5. Java锁--ReentrantLock

    转载请注明出处:http://www.cnblogs.com/skywang12345/p/3496101.html ReentrantLock介绍 ReentrantLock是一个可重入的互斥锁,又 ...

  6. android studio调试报错:java.lang.RuntimeException: Unable to start activity ComponentInfo

    报错信息: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.pro_u_loc/com.e ...

  7. BZOJ 1565 / P2805 [NOI2009]植物大战僵尸 (最大权闭合子图 最小割)

    题意 自己看吧 BZOJ传送门 分析 - 这道题其实就是一些点,存在一些二元限制条件,即如果要选uuu则必须选vvv.求得到的权值最大是多少. 建一个图,如果选uuu必须选vvv,则uuu向vvv连边 ...

  8. [React] Create a Query Parameter Modal Route with React Router

    Routes are some times better served as a modal. If you have a modal (like a login modal) that needs ...

  9. Codeforces Round #588 (Div. 2) D题【补题ING】

    思路:先找出现次数>=2数.然后在取跑所有数,需要考虑一般情况(当一个人比另一个人的ai小且他们的与运算等于小的那个人的ai那么可以知道大的那个人必定强于ai小的那个人). 则可以用位运算实现判 ...

  10. sql 约束汇总

    主要就是增加数据约束的.   Oracle中的约束简单介绍 约束   Including Constraints     在数据库中使用约束(constraints)是为了在该数据库中实施所谓的&qu ...