簡體   English   中英

std :: map不能插入為空?

[英]std::map not insert on empty?

今天我只是注意到empty_map [key]將在地圖中創建一個null元素。 我沒想到這一點。 有沒有像容器這樣的地圖,我將只得到null而不創建一個元素? 我想沒有了,需要用.find()替換我的所有[]。

您被find()困住了。 這就是map的設計方式,沒有類似的容器具有唯一的區別。 (或者如BoBTFish所說,您可以at使用)

要詳細說明,您不能引用NULL值。 這意味着您可以具有指向元素或end()的迭代器,也可以具有返回引用或引發異常的方法。 find()at()是這兩個選項。

如果您不喜歡它,可以創建自己的容器,委派給std::map但提供operator[]的不同const實現。 當然,請注意, operator[]返回引用的全部要點是:

std::map<Key, Value> theMap;
theMap[someKey] = someValue;

能行得通。 否則,您將被迫做:

theMap.insert(std::make_pair(someKey, someValue)];

這似乎比使用find / at查找更糟糕的權衡。 (或者,您可以使operator[]將迭代器返回到找到的項目,但這將與使用find完全相同。)

暫無
暫無

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

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