簡體   English   中英

如何在std :: unordered_map中插入鍵但沒有值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM