【发布时间】:2020-02-07 04:23:22
【问题描述】:
Java 的 getOrDefault 是一个很好的构造,用于单行访问地图值或起点(如果不存在)。我在 C++ 中的地图参考中没有看到任何平行的东西。有什么东西存在还是你自己建立的?
我在地图中有对象,如果它们存在我会更新它们,但如果它们不存在则构建新对象。使用 getOrDefault,我可以在默认端构造对象,或者在它存在时访问它。
http://www.cplusplus.com/reference/map/map/
https://www.geeksforgeeks.org/hashmap-getordefaultkey-defaultvalue-method-in-java-with-examples/
【问题讨论】:
-
您要返回引用还是值?
-
这里是同样的问题stackoverflow.com/questions/45389872/… 除了默认是可选的
-
map.at() 函数将在未找到该项目时抛出异常。但是 map [] 运算符插入一个默认构造值,如果它不存在并返回它。因此,您可能想要
auto v = (m.find(k)!=m.end()?m[k]:"default"),但与 elvis 运算符相比,它长得可笑而且复杂。 -
我应该多说一下我的预期用途。我在地图中有对象,如果它们存在我会更新它们,但如果它们不存在则构建新对象。使用 getOrDefault,我可以在默认端构造对象,或者在它存在时访问它。
-
我从不想要一个可选项,我要么想要一个新构造的对象,并根据当前情况传递一些参数,要么想要一个已经在地图中的对象。