C++ 如何在std::无序_映射中插入键但不插入值

C++ 如何在std::无序_映射中插入键但不插入值,c++,hashtable,unordered-map,C++,Hashtable,Unordered Map,我有一个 std::unordered_map< std::string, std::unordered_map<std::string, std::string> > std::无序映射 我只想插入键,然后填充值 例如: #include <string> #include <unordered_map> int main() { std::unordered_map< std::string, std::unordered

我有一个

std::unordered_map< std::string, std::unordered_map<std::string, std::string> > 
std::无序映射
我只想插入键,然后填充值

例如:

#include <string>
#include <unordered_map>

int main() {
    std::unordered_map< std::string, std::unordered_map<std::string, std::string> > mymap;
    mymap.insert("TestKey");
}
#包括
#包括
int main(){
std::无序映射mymap;
mymap.insert(“TestKey”);
}
这会产生错误:

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
source.cpp(6):错误C2664:'void std::_Hash::insert(std::initializer_list)':无法将参数1从'const char[8]'转换为'std::pair&'
1> 与
1>          [
1> _Kty=std::string
1> ,\u Ty=std::无序\u映射
1> ,_Hasher=std::hash
1> ,_Keyeq=std::等于
1> ,_Alloc=std::分配器
1>          ]
1> 及
1>          [
1> _Kty=std::string
1> ,\u Ty=std::无序\u映射
1>          ]
1> 原因:无法从“常量字符[8]”转换为“std::pair”
1> 与
1>          [
1> _Kty=std::string
1> ,\u Ty=std::无序\u映射
1>          ]
1> 没有构造函数可以采用源类型,或者构造函数重载解析不明确

如何添加没有值的键?

运算符[]
将在具有给定键的元素不存在时插入值初始化值。因此,您可以简单地执行以下操作:

mymap["TestKey"];
如果要获取对该值的引用,则

auto& val = mymap["TestKey"];

据我所知,这是不可能的,但您可以使用指针类型作为值,并在假定不存在值的情况下分配
NULL
nullptr