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
  • 相关阅读:
    linux的常用命令
    linux系统环境与文件权限
    MySQL常用数据类型
    【bzoj4641】基因改造 特殊匹配条件的KMP
    【bzoj4550】小奇的博弈 博弈论+dp
    【bzoj3991】[SDOI2015]寻宝游戏 树链的并+STL-set
    【bzoj1304】[CQOI2009]叶子的染色 树形dp
    【bzoj4715】囚人的旋律 dp
    【bzoj4008】[HNOI2015]亚瑟王 概率dp
    【bzoj4444】[Scoi2015]国旗计划 倍增
  • 原文地址:https://www.cnblogs.com/dongerlei/p/5141490.html
Copyright © 2011-2022 走看看