我在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
答案 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";
}