繁体   English   中英

在没有迭代器的情况下搜索std :: set C ++

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM