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
  • 相关阅读:
    Gridview使用CheckBox全选与单选 Version 2
    Repeater控件第前10笔记录高亮显示
    下拉式菜单(DropDownList)连动的选择
    DataList控件显示图片要的是效果
    电容屏、电阻屏基础知识
    SIM300实现GPRS上网
    qt练习7 定时爆炸小游戏
    用 STL vector 来创建二维数组
    sim300_at命令.doc
    QT练习6 label,button创建,点击按键关闭
  • 原文地址:https://www.cnblogs.com/dongerlei/p/5141490.html
Copyright © 2011-2022 走看看