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