<STL新手>关于STL set的erase方法的一个小问题
- C/C++ code
#include <iostream>#include <set>using namespace std;bool contain(set<int> s,int i)//判断集合s是否包含i{ return (*s.find(i)==i);}int main(void){ set<int> t; t.insert(0); t.insert(2); t.insert(3); t.insert(4); t.insert(5); t.erase(2); t.erase(0); t.erase(3); cout<<contain(t,2)<<endl; //cout<<contain(t,0)<<endl; //cout<<contain(t,3)<<endl; return 0;}
我明明已经删除了2,怎么contain操作是1呢?或者contain的写法不对。。请指正。。
[解决办法]
bool contain(set<int> s,int i)//判断集合s是否包含i
{
return s.count(i) > 0;
}
因为找不到的时候值和s.end()相同,这个时候再operator *就不行。