Bonjour, j'ai une std::map<int,int> m;

Je fais quelque chose du genre

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'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(m.end(),std::make_pair(i,2 * i));
L'idée étant de gagner du temps de calcul.

Maintenant, voici un exemple (avec ma question dedans) :

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;
}
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...

Merci d'avance de vos réponses.