J'ai ce code:
std::set<unsigned long>::iterator it;
for (it = SERVER_IPS.begin(); it != SERVER_IPS.end(); ++it) {
u_long f = it; // error here
}
Il n'y a aucune ->first
valeur. Comment puis-je obtenir la valeur?
Vous devez déréférencer l'itérateur afin de récupérer le membre de votre ensemble.
std::set<unsigned long>::iterator it;
for (it = SERVER_IPS.begin(); it != SERVER_IPS.end(); ++it) {
u_long f = *it; // Note the "*" here
}
Si vous disposez de fonctionnalités C ++ 11, vous pouvez utiliser une boucle for basée sur une plage :
for(auto f : SERVER_IPS) {
// use f here
}
const u_long& f = *it;
.Utilisez simplement l'
*
avantit
:Cela le déréférence et vous permet d'accéder à l'élément sur lequel l'itérateur se trouve actuellement.
la source
Un autre exemple pour le standard C ++ 11:
la source
Comment itérez-vous std :: set?
la source
for(auto i : mset) std::cout << i;