![](/img/trans.png)
[英]effectively use std::unordered_map to insert or increment value of a key
[英]How to insert a key but no value into a std::unordered_map
我有一个
std::unordered_map< std::string, std::unordered_map<std::string, std::string> >
我只想插入键并稍后填充值。
例如这样:
#include <string>
#include <unordered_map>
int main() {
std::unordered_map< std::string, std::unordered_map<std::string, std::string> > 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
如何添加没有值的键?
如果具有给定键的元素尚不存在, operator[]
将插入一个值初始化的值。 因此,您可以简单地执行以下操作:
mymap["TestKey"];
如果要引用该值,则
auto& val = mymap["TestKey"];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.