Bonjour,
Je cherche à faire une map dans une map (rien de bien sorcier de mon point de vue).
Je dois trouver une liste d'élément à partir d'un CString.
Puis dans cette liste un autre élément à partir d'un autre CString.
Un code exemple tout simple :
map<CString,map<CString,CString>> test;
map<CString,map<CString,CString>>::iterator ittest;
CString cleTest = "toto";
ittest = find(test.begin(),test.end(),cleTest);
Le compilateur me sort une erreur C2678...
Je ne comprend pas pourquoi. Je voudrait simplement savoir si ma clé "toto" existe dans la map et si oui me retourner un iterator sur cet élément (élément contenant lui même une map, mais en quoi ça serait un problème ?!?!). Pourquoi il cherche à comparer des pairs .... O.O ...
Perdu HELP
Merci d'avance
PS :
J'ai cherché le code d'erreur et "map dans une map" mais je ne trouve que des infos sur des variables déclarer "const", or dans mon exemple (qui ne fonctionne pas hein) aucun const n'est présent (en ajouter un au niveau de la clé recherché ne change rien, passer en const mes map ne m'arrangerait pas, surtout dans l'exemple que je donne).
L'erreur au complet :
1>C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(3186): error C2678: '==' binaire : aucun opérateur trouvé qui accepte un opérande de partie gauche de type 'std::pair<_Ty1,_Ty2>' (ou il n'existe pas de conversion acceptable)
1> with
1> [
1> _Ty1=const CString,
1> _Ty2=std::map<CString,CString>
1> ]
1> est peut-être 'built-in C++ operator==(const char [5], const char [5])'
1> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\include\guiddef.h(192): ou 'int operator ==(const GUID &,const GUID &)' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2415): ou 'bool ATL::operator ==(const ATL::CStringT<BaseType,StringTraits> &,const ATL::CStringT<BaseType,StringTraits> &) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=char,
1> StringTraits=StrTraitMFC_DLL<char>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2422): ou 'bool ATL::operator ==(const ATL::CStringT<BaseType,StringTraits> &,const char *) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=char,
1> StringTraits=StrTraitMFC_DLL<char>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2429): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const char *,const ATL::CStringT<BaseType,StringTraits> &) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=char,
1> StringTraits=StrTraitMFC_DLL<char>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2437): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const ATL::CStringT<BaseType,StringTraits> &,const wchar_t *) throw(...)' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=char,
1> StringTraits=StrTraitMFC_DLL<char>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2446): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const wchar_t *,const ATL::CStringT<BaseType,StringTraits> &) throw(...)' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=char,
1> StringTraits=StrTraitMFC_DLL<char>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2581): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(char,const ATL::CStringT<BaseType,StringTraits> &) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=char,
1> StringTraits=StrTraitMFC_DLL<char>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2588): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const ATL::CStringT<BaseType,StringTraits> &,char) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=char,
1> StringTraits=StrTraitMFC_DLL<char>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2415): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const ATL::CStringT<BaseType,StringTraits> &,const ATL::CStringT<BaseType,StringTraits> &) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=StrTraitMFC_DLL<wchar_t>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2422): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const ATL::CStringT<BaseType,StringTraits> &,const wchar_t *) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=StrTraitMFC_DLL<wchar_t>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2429): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const wchar_t *,const ATL::CStringT<BaseType,StringTraits> &) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=StrTraitMFC_DLL<wchar_t>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2437): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const ATL::CStringT<BaseType,StringTraits> &,const char *) throw(...)' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=StrTraitMFC_DLL<wchar_t>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2446): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const char *,const ATL::CStringT<BaseType,StringTraits> &) throw(...)' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=StrTraitMFC_DLL<wchar_t>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2581): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(wchar_t,const ATL::CStringT<BaseType,StringTraits> &) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=StrTraitMFC_DLL<wchar_t>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2588): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const ATL::CStringT<BaseType,StringTraits> &,wchar_t) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=StrTraitMFC_DLL<wchar_t>
1> ]
1> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\include\propkeydef.h(32): ou 'int operator ==(const PROPERTYKEY &,const PROPERTYKEY &)' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2415): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const ATL::CStringT<BaseType,StringTraits> &,const ATL::CStringT<BaseType,StringTraits> &) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=char,
1> StringTraits=ATL::StrTraitATL<char,ATL::ChTraitsCRT<char>>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2422): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const ATL::CStringT<BaseType,StringTraits> &,const char *) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=char,
1> StringTraits=ATL::StrTraitATL<char,ATL::ChTraitsCRT<char>>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2429): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const char *,const ATL::CStringT<BaseType,StringTraits> &) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=char,
1> StringTraits=ATL::StrTraitATL<char,ATL::ChTraitsCRT<char>>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2437): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const ATL::CStringT<BaseType,StringTraits> &,const wchar_t *) throw(...)' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=char,
1> StringTraits=ATL::StrTraitATL<char,ATL::ChTraitsCRT<char>>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2446): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const wchar_t *,const ATL::CStringT<BaseType,StringTraits> &) throw(...)' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=char,
1> StringTraits=ATL::StrTraitATL<char,ATL::ChTraitsCRT<char>>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2581): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(char,const ATL::CStringT<BaseType,StringTraits> &) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=char,
1> StringTraits=ATL::StrTraitATL<char,ATL::ChTraitsCRT<char>>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2588): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const ATL::CStringT<BaseType,StringTraits> &,char) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=char,
1> StringTraits=ATL::StrTraitATL<char,ATL::ChTraitsCRT<char>>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2415): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const ATL::CStringT<BaseType,StringTraits> &,const ATL::CStringT<BaseType,StringTraits> &) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=ATL::StrTraitATL<wchar_t,ATL::ChTraitsCRT<wchar_t>>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2422): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const ATL::CStringT<BaseType,StringTraits> &,const wchar_t *) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=ATL::StrTraitATL<wchar_t,ATL::ChTraitsCRT<wchar_t>>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2429): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const wchar_t *,const ATL::CStringT<BaseType,StringTraits> &) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=ATL::StrTraitATL<wchar_t,ATL::ChTraitsCRT<wchar_t>>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2437): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const ATL::CStringT<BaseType,StringTraits> &,const char *) throw(...)' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=ATL::StrTraitATL<wchar_t,ATL::ChTraitsCRT<wchar_t>>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2446): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const char *,const ATL::CStringT<BaseType,StringTraits> &) throw(...)' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=ATL::StrTraitATL<wchar_t,ATL::ChTraitsCRT<wchar_t>>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2581): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(wchar_t,const ATL::CStringT<BaseType,StringTraits> &) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=ATL::StrTraitATL<wchar_t,ATL::ChTraitsCRT<wchar_t>>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\cstringt.h(2588): ou 'bool ATL::CStringT<BaseType,StringTraits>::operator ==(const ATL::CStringT<BaseType,StringTraits> &,wchar_t) throw()' [trouvé à l'aide d'une recherche dépendante d'un argument]
1> with
1> [
1> BaseType=wchar_t,
1> StringTraits=ATL::StrTraitATL<wchar_t,ATL::ChTraitsCRT<wchar_t>>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\exception(507): ou 'bool std::operator ==(const std::exception_ptr &,const std::exception_ptr &)'
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\exception(512): ou 'bool std::operator ==(std::nullptr_t,const std::exception_ptr &)'
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\exception(517): ou 'bool std::operator ==(const std::exception_ptr &,std::nullptr_t)'
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\system_error(426): ou 'bool std::operator ==(const std::error_code &,const std::error_condition &) throw()'
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\system_error(434): ou 'bool std::operator ==(const std::error_condition &,const std::error_code &) throw()'
1> lors de la tentative de mise en correspondance de la liste des arguments '(std::pair<_Ty1,_Ty2>, const char [5])'
1> with
1> [
1> _Ty1=const CString,
1> _Ty2=std::map<CString,CString>
1> ]
1> C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xutility(3219) : voir la référence à l'instanciation de la fonction modèle '_InIt std::_Find<std::_Tree_unchecked_iterator<_Mytree>,const char[5]>(_InIt,_InIt,_Ty (&))' en cours de compilation
1> with
1> [
1> _InIt=std::_Tree_unchecked_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<const CString,std::map<CString,CString>>>>>,
1> _Mytree=std::_Tree_val<std::_Tree_simple_types<std::pair<const CString,std::map<CString,CString>>>>,
1> _Ty=const char [5]
1> ]
1> c\Fichier.cpp(1527) : voir la référence à l'instanciation de la fonction modèle '_InIt std::find<std::_Tree_iterator<_Mytree>,const char[5]>(_InIt,_InIt,_Ty (&))' en cours de compilation
1> with
1> [
1> _InIt=std::_Tree_iterator<std::_Tree_val<std::_Tree_simple_types<std::pair<const CString,std::map<CString,CString>>>>>,
1> _Mytree=std::_Tree_val<std::_Tree_simple_types<std::pair<const CString,std::map<CString,CString>>>>,
1> _Ty=const char [5]
1> ]