今天我只注意到 empty_map[key] 将在地图中创建一个空元素。我没想到。有没有像容器一样的地图,我只会得到 null 而不会创建元素?我想没有也需要用 .find() 替换我的所有 []
user34537
问问题
1541 次
2 回答
3
你被 find() 困住了。这map
就是设计的方式,并且没有类似的容器具有这种行为作为唯一的区别。(或者正如 BoBTFish 所说,你可以使用at
)
更详细地说,您不能引用 NULL 值。这意味着您可以拥有一个指向元素或 end() 的迭代器,或者您可以拥有一个返回引用或引发异常的方法。 find()
并且at()
是这两个选项。
于 2012-04-24T09:00:08.943 回答
1
如果您不喜欢它,您可以制作自己的容器来委托std::map
但提供不同const
的operator[]
. 当然,请注意operator[]
返回引用的全部意义在于:
std::map<Key, Value> theMap;
theMap[someKey] = someValue;
能行得通。否则你将被迫这样做:
theMap.insert(std::make_pair(someKey, someValue)];
这似乎比使用find
/at
进行查找更糟糕。(或者您可以将operator[]
迭代器返回到找到的项目,但这与使用完全相同find
。)
于 2012-04-24T09:22:41.107 回答