Salut à tous,

Je cherche simplement à recopier une std::map<std::string,std::string> dans une autre.

J'ai tenté cette approche:

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
std::map<std::string,std::string> map_source;
std::map<std::string,std::string> map_destination;
 
/*remplissage de la source */
 
std::map<std::string,std::string>::const_iterator it = map_source.begin();
while(it!=map_source.end())
{
 
///////////////////////////////////////////////
///////// la ligne qui ne compile pas
 
   map_destination[it->first] = it->second;
 
// OU ENCORE
 
   map_destion.insert(std::pair<it->first,it->second>);
 
// OU ENCORE
 
   std::string cle = it->first;
   std::string valeur = it->second;
   //puis
   map_destination[cle] = valeur;
   //ou
   map_destion.insert(std::pair<cle,valeur>);
 
///////////////////////////////////////////////
   it++;
}
et j'obtiens systématiquement du compilateur, le message suivant:
passing «const std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >» as «this» argument of «void std::map<_Key, _Tp, _Compare, _Alloc>::insert(_InputIterator, _InputIterator) [with _InputIterator = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _Key = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _Tp = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _Compare = std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, _Alloc = std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >]» discards qualifiers|
Je ne sais pas si ça parle à quelqu'un mais pour récapituler, j'aimerai bien savoir ce que je fais de mal et aussi le moyen le plus efficace de faire une copie d'une map dans une autre map.

Merci à tous