删除小于C ++集中给定元素的元素

时间:2015-04-03 12:47:53

标签: c++

我在C ++中有一个集合。我想删除集合中小于指定值的所有元素。 E.g。

std::set setElem;
setElem.insert(1);
setElem.insert(45);
setElem.insert(47);
//setElem contains {1,45,47}
//delete all elements less than 46 such that the set now becomes: {47}

我知道我们可以遍历集合并通过验证它们是否小于46来删除元素。在C ++中是否有其他更有效的方法来做同样的事情。

我使用的gcc版本是:gcc(Ubuntu / Linaro 4.6.4-6ubuntu2)4.6.4

1 个答案:

答案 0 :(得分:1)

您可以使用lower_bound()erase()

#include <set>
#include <iostream>
using namespace std;

int main()
{
    set<int>setElem;

    setElem.insert(1);
    setElem.insert(45);
    setElem.insert(46);
    setElem.insert(47);
    setElem.insert(50);
    setElem.insert(51);

    set<int>:: iterator it;
    it=setElem.lower_bound(46);

    //Erasing
    setElem.erase(setElem.begin(),it);

    //Printing
    for(set<int>::iterator it1=setElem.begin(); it1!=setElem.end(); ++it1)
      cout<< *it1 << "\n";
}