zoukankan      html  css  js  c++  java
  • 泛型算法(六)之删除算法

    1、remove(ForwardIterator first, ForwardIterator last, const T& val):删除序列中等于给定值的所有元素,保留的元素存放在容器的前部且相对次序不变。容器的size不变。

    一般remove算法要与容器的成员函数erase配合使用才能真正删除元素,即:erase——remove惯用法:

            std::vector<int> c;
        c.reserve(10);
        //向c中添加元素
        for (int i = 0; i < 10; i++)
        {
            c.push_back(i);
        }
        //删除c中等于5所有元素
        c.erase(std::remove(c.begin(), c.end(), 5), c.end());
        for (auto var : c)
        {
            std::cout << var << ",";
        }
        //打印结果:0,1,2,3,4,6,7,8,9,    

    2、remove_if(ForwardIterator first, ForwardIterator last, UnaryPredicate pred):删除序列中满足给定谓词pred的元素,保留的元素存放在容器的前部且相对次序不变。容器的size不变。

        std::vector<int> c;
        c.reserve(10);
        //向c中添加元素
        for (int i = 0; i < 10; i++)
        {
            c.push_back(i);
        }
        //删除c中大于5的所有元素
        c.erase(std::remove_if(c.begin(), c.end(), [](int element){
            return element > 5;
        }), c.end());
        //输出c
        for (auto var : c)
        {
            std::cout << var << ",";
        }
        //打印结果:0,1,2,3,4,5,

    3、remove_copy(InputIterator first, InputIterator last, OutputIterator result, const T&val):把一个序列中不等于给定值的元素复制到另一个序列中

            std::vector<int> c;
        std::vector<int> result;
        result.resize(10);
        c.reserve(10);
        //向c中添加元素
        for (int i = 0; i < 10; i++)
        {
            c.push_back(i);
        }
        //复制c中不等于5的元素到result中
        std::remove_copy(c.begin(), c.end(), result.begin(), 5);
        //输出result
        for (auto var : result)
        {
            std::cout << var << ",";
        }
        //打印结果:0,1,2,3,4,6,7,8,9,0    

    4、remove_copy_if(InputIterator first, InputIterator last, OutputIterator result, UnaryPredicate pred):把一个序列中不满足给定谓词pred的元素复制到另一个序列中

        std::vector<int> c;
        std::vector<int> result;
        result.resize(10);
        c.reserve(10);
        //向c中添加元素
        for (int i = 0; i < 10; i++)
        {
            c.push_back(i);
        }
        //复制c中小于等于5的元素到result中
        std::remove_copy_if(c.begin(), c.end(), result.begin(), [](int element){
            return element > 5;
        });
        //输出result
        for (auto var : result)
        {
            std::cout << var << ",";
        }
        //打印结果:0,1,2,3,4,5,0,0,0,0
  • 相关阅读:
    C#中sizeof的用法
    C#托管堆对象实例包含什么
    C#引用类型转换的几种方式
    C#中结构(struct)的部分初始化和完全初始化
    C#值类型装箱后能改变其值吗
    C#程序集系列13,如何让CLR选择不同版本的程序集
    C#程序集系列12,C#编译器和CLR如何找寻程序集
    C#程序集系列11,全局程序集缓存
    C#程序集系列10,强名称程序集
    C#程序集系列09,程序集签名
  • 原文地址:https://www.cnblogs.com/dongerlei/p/5141490.html
Copyright © 2011-2022 走看看