如何迭代std :: set?
我有这个代码:
std::set<unsigned long>::iterator it; for (it = SERVER_IPS.begin(); it != SERVER_IPS.end(); ++it) { u_long f = it; // error here }
没有->first
值。 我如何获得价值?
您必须取消引用迭代器才能检索您的集合的成员。
std::set<unsigned long>::iterator it; for (it = SERVER_IPS.begin(); it != SERVER_IPS.end(); ++it) { u_long f = *it; // Note the "*" here }
如果您具有C ++ 11function,则可以使用基于范围的for循环 :
for(auto f : SERVER_IPS) { // use f here }
只要使用*
之前:
set<unsigned long>::iterator it; for (it = myset.begin(); it != myset.end(); it++) { cout << *it; }
这将取消引用它并允许您访问迭代器当前所在的元素。
C ++ 11标准的另一个例子是:
set<int> data; data.insert(4); data.insert(5); for (const int &number : data) cout << number;
这是一个完整的解决scheme:
你如何迭代std :: set?
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; }