Bonjour, j'ai une std::map<int,int> m;
Je fais quelque chose du genre
(l'exemple est bête, mais là n'est pas ma question). En gros, je fais toujours une insertion dans ma map au dernier élément. J'ai vu que je pouvais indiquer via un iterator, un "indice" à partir du quel insérer mon nouvel objet. L'exemple précédent deviendrait alors
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for(int i = 0 ; i < N ; i++) m.insert(std::make_pair(i,2 * i));
L'idée étant de gagner du temps de calcul.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for(int i = 0 ; i < N ; i++) m.insert(m.end(),std::make_pair(i,2 * i));
Maintenant, voici un exemple (avec ma question dedans) :
J'avoue ne pas comprendre pourquoi l'élément (1,1) est inséré car je lui ai dis d'insérer à partir du dernier élément...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 #include <map> #include <iostream> using namespace std; void printMap(const map<int,int> & m) { //for(size_t i = 0 ; i < m.size() ; i++) map<int,int>::const_iterator it; for(it = m.begin() ; it != m.end() ; it++) cout << it->first << " : " << it->second << endl; cout << endl; } int main() { map<int,int> m; m.insert(make_pair(0,0)); m.insert(make_pair(3,3)); m.insert(make_pair(2,2)); m.insert(m.end(),make_pair(4,4)); m.insert(m.begin(),make_pair(5,5)); m.insert(m.end(),make_pair(1,1)); // pourquoi cet élément est-il inséré ? m.insert(make_pair(2,0)); printMap(m); return 0; }
Merci d'avance de vos réponses.
Partager