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 pas ->first
valeur. Comment puis-je obtenir cette valeur ?
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 pas ->first
valeur. Comment puis-je obtenir cette 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 des fonctionnalités de C++11, vous pouvez utiliser une fonction boucle for basée sur la gamme :
for(auto f : SERVER_IPS) {
// use f here
}
Une autre chose qui pourrait être utile aux débutants est que, puisque std::set n'est pas alloué avec des morceaux de mémoire contigus, si quelqu'un souhaite itérer jusqu'à kth
élément la manière normale ne fonctionnera pas. exemple :
std::vector<int > vec{1,2,3,4,5};
int k=3;
for(auto itr=vec.begin();itr<vec.begin()+k;itr++) cout<<*itr<<" ";
std::unordered_set<int > s{1,2,3,4,5};
int k=3;
int index=0;
auto itr=s.begin();
while(true){
if(index==k) break;
cout<<*itr++<<" ";
index++;
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.