Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/02/2011, à 21:02

kolmalou

c++ map et ses iterators.

Bonjour,
J'ai un petit problème avec les iterators en c++.
Il faudrait que je parcours une map mais pas jusqu'au bout, par exemple:

for (it=final.begin(); it!=final.end()-window; it++) {
ou
map<float,vector<float> >::iterator w;
for (w= it; w<it+window; w++) {
ou encore faire
if(it == 120){
//blah
}

avec window un integer.
Mais bien qu'il soit possible de faire les opérations de base sur les iterators, on me peux pas les faire avec des integers. et le problème c'est que les maps ne sont pas indexées.
Que peut-on faire dans le cas des maps ?
Bonne soirée !

Hors ligne

#2 Le 27/02/2011, à 14:39

Lumin0u

Re : c++ map et ses iterators.

tu pourrais avoir un entier en plus que tu incrémentes à chaque passage de boucle, qui dirait combien d'éléments ont été parcourus:

int taille = final.size();
int courant = 0;
for (it=final.begin(); taille - courant > window; it++) {
...
courant++;
}

Hors ligne

#3 Le 28/02/2011, à 16:42

Luc Hermitte

Re : c++ map et ses iterators.

std::advance sert à aller à la i-ieme position. Nul besoin de réinventer la roue.
Mais ... Mélanger numéro de position et map, il y a comme un truc qui cloche. Les maps sont faites pour les recherches via la clé, pas via un index.
Des fois que cela ait vraiment un sens, regarde boost::multi_index.

Hors ligne

#4 Le 28/02/2011, à 18:36

Lumin0u

Re : c++ map et ses iterators.

Luc Hermitte a écrit :

std::advance sert à aller à la i-ieme position. Nul besoin de réinventer la roue.

je ne connais pas le contexte, mais peut-être qu'il a besoin de passer par chaque élément jusqu'à la limite, ce que ne permet pas advance().

Hors ligne