[英]Add a key to std::map without a value
假設我定義了一個全局地圖-
map<int,list<char>> cMap;
有沒有一種方法( 不使用boost
庫 )我可以添加整數鍵,然后在程序中稍后將值添加到與它們相對應的列表中?
map<int,list<char>> cmap;
int main()
{
// Add only a value this way?
cmap[2];
// and then -
cmap[2].push_back('A');
return 0;
}
您已經在做了。
當您編寫cmap[2]
,該元素不存在,它將被創建並默認構造。
因此, cmap[2]
將是一個空列表。 然后,您可以.push_back
將其.push_back
返回。
由於這一過程也被觸發cmap[2]
在cmap[2].push_back(..)
你實際上並不需要最初的“空”的初始化,除非有一個在你的項目中的某些需求為重點,以中存在從一開始就繪制地圖(在這種情況下,足夠公平)。
如果您不希望空列表成為值,而又不希望有任何值,那么我認為這很愚蠢,但是您可以選擇以下方法:
std::unique_ptr<std::list<char>>
並從nullptr
開始 std::optional<std::list<char>>
並從cmap[2] = std::none
Boost.Optional
進入C ++時,這種情況正在發生,但進展緩慢) 。 而且...就是這樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.