如何迭代的std ::设置?(How to iterate std::set?)

2019-06-18 12:08发布

我有这样的代码:

std::set<unsigned long>::iterator it;
for (it = SERVER_IPS.begin(); it != SERVER_IPS.end(); ++it)
{
    u_long f = it; // error here
}

没有->first值。 我怎样才能获得的价值?

Answer 1:

您必须取消引用为了迭代器检索您的组的成员。

std::set<unsigned long>::iterator it;
for (it = SERVER_IPS.begin(); it != SERVER_IPS.end(); ++it)
{
    u_long f = *it; // Note the "*" here
}

如果你有C ++ 11层的功能,您可以使用范围为基础的循环 :

for(auto f : SERVER_IPS) {
  // use f here
}    


Answer 2:

只需使用*之前it

set<unsigned long>::iterator it;
for (it = myset.begin(); it != myset.end(); ++it) {
    cout << *it;
}

这解引用它,并允许您访问该元素的迭代器是目前上。



Answer 3:

用于C ++ 11标准又如:

set<int> data;
data.insert(4);
data.insert(5);

for (const int &number : data)
  cout << number;


Answer 4:

这是问题的一个完整的解决方案:

如何做你迭代的std ::设置?

int main(int argc,char *argv[]) 
{
    std::set<int> mset;
    mset.insert(1); 
    mset.insert(2);
    mset.insert(3);

    for ( auto it = mset.begin(); it != mset.end(); it++ )
        std::cout << *it;
}


文章来源: How to iterate std::set?