我有一个包含一些int
值的std::set
。现在,我使用迭代器来查找set
是否包含value
。
但我的应用程序经常使用这种搜索,并且使用迭代器搜索太慢了,我能做些什么吗:
std::set<int> fdsockets;
void myfunc(int fd)
{
if(fdsockets[fd] != fdsockets.end())
{
// my code
}
}
但是我在使用G++编译时遇到了错误
'fdsockets[fd]'中没有匹配的'operator[]'
也许我可以使用其他东西来代替std::set
?
谢谢!
find()
而不是循环遍历集合的原因是find()
是一个O(log(N))算法。循环比O(N)更糟糕(我怀疑它是一个O(N*log(N))算法),因为对于那些关联容器,operator++()
相当复杂。 - David Hammen