首页 > 编程语言 > 详细

泛型算法(六)之删除算法

时间:2016-01-19 12:24:39      阅读:142      评论:0      收藏:0      [点我收藏+]

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

 

泛型算法(六)之删除算法

原文:http://www.cnblogs.com/dongerlei/p/5141490.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!