remove(first, last, value) 函数

Posted htj10

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了remove(first, last, value) 函数相关的知识,希望对你有一定的参考价值。

remove(first, last, value) 函数移除[first, last) 范围的 value,返回新值范围的尾后迭代器

在头文件 <algorithm>中,声明如下

template< class ForwardIt, class T >
ForwardIt remove( ForwardIt first, ForwardIt last, const T& value );//first,last都是迭代器,value是值或对象,返回新值范围的尾后迭代器

  使用方法如下

    vector<int> a = {11, 0, 2, 3, 10, 0, 0, 8, 0};
    cout << "Original size : " << a.size() << endl;
    auto itend = remove(a.begin(), a.end(), 0);
    cout << "after REMOVE, size : " << a.size() << endl;
    for (auto it = a.begin(); it != a.end(); ++it)
    {
        cout << *it << " ";
    }
    cout << endl;
    //结果:11 2 3 10 8 0 0 8 0
    //可以这么理解,把所以非value的值都向前移动,数组的大小不变,尾部剩下的部分值不变。
    //remove并没有真正删除元素value,而是返回新值范围的尾后迭代器。
    //可以用erase配合删除
    a.erase(itend, a.end());// 若想删除value值可以直接 a.erase(remove(a.begin(), a.end(), value), a.end());
    for (int& k : a )
    {
        cout << k << " ";
    }
    cout << endl;
   // 结果:11 2 3 10 8 

  remove_if() 函数

template< class ForwardIt, class UnaryPredicate >
ForwardIt remove_if( ForwardIt first, ForwardIt last, UnaryPredicate p );
//从范围 [first, last) 移除所有满足特定判别标准的元素,并返回范围新结尾的尾后迭代器。

  

  

以上是关于remove(first, last, value) 函数的主要内容,如果未能解决你的问题,请参考以下文章

oracle first_value,last_valus

Oracle分析函数-first_value()和last_value()

Oracle分析函数-first_value()和last_value()

甲骨文:LAST_VALUE 与 FIRST_VALUE [重复]

SQL查询获取分区里最大和最小值_first_value/last_value

带有 ASC 的 LAST_VALUE() 和带有 DESC 的 FIRST_VALUE 返回不同的结果