[英]Searching in std::set without iterator C++
我有std::set
包含来int
值。 现在,我使用迭代器来确定是否set
contans value
。
但是我的应用程序经常使用此搜索,而使用迭代器的搜索却太慢,我可以这样做吗:
std::set<int> fdsockets;
void myfunc(int fd)
{
if(fdsockets[fd] != fdsockets.end())
{
// my code
}
}
但是使用G ++进行编译时出现错误
在“ fdsockets [fd]”中与“ operator []”不匹配
也许我可以使用某些东西代替std::set
?
谢谢!
std::unorered_set
或带有二进制搜索的有序vector
对于简单的成员资格测试更有效。 如果整数的最大值很低,则可以使用查找表。
听起来像您要set::find()
if( fdsockets.find(fd) != fdsockets.end() )
{
// my code
}
std :: set中没有operator []。
你可能是说
if(fdsockets.find(fd) != fdsockets.end())
如果您不需要set::find
返回的迭代器(您只是在测试存在性,而实际上不打算访问fdsocket),这是一个替代方案:
if(fdsockets.count(fd))
{
// my code
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.