Considérez ce programme:"Constante forcée" dans std :: map <std :: vector <int>, double>>?
#include <map>
#include <vector>
typedef std::vector<int> IntVector;
typedef std::map<IntVector,double> Map;
void foo(Map& m,const IntVector& v)
{
Map::iterator i = m.find(v);
i->first.push_back(10);
};
int main()
{
Map m;
IntVector v(10,10);
foo(m,v);
return 0;
}
Avec g ++ 4.4.0, je reçois son erreur de compilation:
test.cpp: In function 'void foo(Map&, const IntVector&)':
test.cpp:8: error: passing 'const std::vector<int, std::allocator<int> >' as 'this' argument of 'void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = int, _Alloc = std::allocator<int>]' discards qualifiers
Je me attends à cette erreur si j'utilisais Map::const_iterator
l'intérieur foo, mais pas en utilisant un non const itérateur.
Qu'est-ce qui me manque, pourquoi ai-je cette erreur?
Merci. Parfois, vous ne pouvez pas voir la forêt parce que tous les arbres sont sur le chemin. :-) –