假設我定義的全局地圖 -添加一鍵標準::地圖,而值
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;
}
假設我定義的全局地圖 -添加一鍵標準::地圖,而值
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
。
由於這個過程也是由cmap[2].push_back(..)
中的cmap[2]
觸發的,所以實際上並不需要初始「空白」初始化,除非項目中有一些關鍵要求從開始就存在於地圖中(在這種情況下, 很公平)。
如果你不想空列表是價值,但爲了有沒有價值,我認爲這是愚蠢的,但你有一些選擇:
std::unique_ptr<std::list<char>>
與nullptr
std::optional<std::list<char>>
與cmap[2] = std::none
Boost.Optional
使得它成爲C++,它發生,但慢慢地)開始。&hellip;而已。
謝謝。但我不明白如果我在'cmap [2] .push_back('A');'之後再添加另一個'cmap [2];'會發生什麼?清單會發生什麼? –
@AlexGoft什麼都不會發生。從這個答案中:「當你編寫'cmap [2]',**並且該元素不存在時,**它被創建並且默認構建。」當你編寫'cmap [2]',並且該元素確實存在時,你只需獲取該值。由於您對此不做任何處理,因此列表中的所有項目都將保留在列表中。 – hvd
@AlexGoft''A''將被推入列表中 –
你已經有什麼問題了?對我來說看起來很好。 –