Cómo iterar std :: set?

Tengo este código:

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

No hay ->first valor. ¿Cómo puedo obtener el valor?

Debe eliminar la referencia del iterador para recuperar el miembro de su conjunto.

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

Si tiene las características de C ++ 11, puede usar un bucle for basado en rango :

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

Simplemente use el * antes de:

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

Esto lo desreferencia y le permite acceder al elemento en el que se encuentra actualmente el iterador.

Otro ejemplo para C ++ 11 estándar:

 set data; data.insert(4); data.insert(5); for (const int &number : data) cout << number; 

Esta es una solución completa a la pregunta:

¿Cómo se itera std :: set?

 int main(int argc,char *argv[]) { std::set mset; mset.insert(1); mset.insert(2); mset.insert(3); for ( auto it = mset.begin(); it != mset.end(); it++ ) std::cout << *it; }