1
Ich habe einWie ein Schlüssel einzusetzen, aber keinen Wert in einer std :: unordered_map
std::unordered_map< std::string, std::unordered_map<std::string, std::string> >
und ich möchte nur den Schlüssel einsetzen und später die Werte aufzufüllen.
zB wie folgt aus:
#include <string>
#include <unordered_map>
int main() {
std::unordered_map< std::string, std::unordered_map<std::string, std::string> > mymap;
mymap.insert("TestKey");
}
Welche Fehler gibt:
source.cpp(6): error C2664: 'void std::_Hash<std::_Umap_traits<_Kty,_Ty,std::_Uhash_compare<_Kty,_Hasher,_Keyeq>,_Alloc,false>>::insert(std::initializer_list<std::pair<const _Kty,_Ty>>)' : cannot convert argument 1 from 'const char [8]' to 'std::pair<const _Kty,_Ty> &&'
1> with
1> [
1> _Kty=std::string
1> , _Ty=std::unordered_map<std::string,std::string,std::hash<std::string>,std::equal_to<std::string>,std::allocator<std::pair<const std::string,std::string>>>
1> , _Hasher=std::hash<std::string>
1> , _Keyeq=std::equal_to<std::string>
1> , _Alloc=std::allocator<std::pair<const std::string,std::unordered_map<std::string,std::string,std::hash<std::string>,std::equal_to<std::string>,std::allocator<std::pair<const std::string,std::string>>>>>
1> ]
1> and
1> [
1> _Kty=std::string
1> , _Ty=std::unordered_map<std::string,std::string,std::hash<std::string>,std::equal_to<std::string>,std::allocator<std::pair<const std::string,std::string>>>
1> ]
1> Reason: cannot convert from 'const char [8]' to 'std::pair<const _Kty,_Ty>'
1> with
1> [
1> _Kty=std::string
1> , _Ty=std::unordered_map<std::string,std::string,std::hash<std::string>,std::equal_to<std::string>,std::allocator<std::pair<const std::string,std::string>>>
1> ]
1> No constructor could take the source type, or constructor overload resolution was ambiguous
Wie kann ich den Schlüssel ohne Werte hinzufügen?
Meines Wissens ist dies nicht möglich, aber man konnte einen Zeiger-Typ für die Verwendung value und weise 'NULL' oder' nullptr' zu, wenn kein Wert vorhanden sein soll. –