簡體   English   中英

將鍵添加到std :: map中,但不帶值

[英]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開始
    (yuk;沒有充分的理由就進行動態分配;不,謝謝!)
  • 存儲std::optional<std::list<char>>並從cmap[2] = std::none
    (當Boost.Optional進入C ++時,這種情況正在發生,但進展緩慢)

而且...就是這樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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