首页 > 解决方案 > C++ 等价于 Java Map getOrDefault?

问题描述

Java 的 getOrDefault 是一个很好的构造,用于单行访问地图值或起点(如果不存在)。我在 C++ 中的地图参考中没有看到任何平行的东西。有什么东西存在还是你自己建立的?

我在地图中有对象,如果它们存在我会更新它们,但如果它们不存在则构建新对象。使用 getOrDefault,我可以在默认端构造对象,或者在它存在时访问它。

http://www.cplusplus.com/reference/map/map/

https://www.geeksforgeeks.org/hashmap-getordefaultkey-defaultvalue-method-in-java-with-examples/

标签: c++c++17treemap

解决方案


我在地图中有对象,如果它们存在我会更新它们,但如果它们不存在则构建新对象。使用 getOrDefault,我可以在默认端构造对象,或者在它存在时访问它。

使用emplace.

auto& element = *map.emplace(key, value).first;

emplace如果键不存在,则插入一个新元素,并返回一个由元素的迭代器(已插入或已存在)和一个bool指示是否插入的值组成的对。


推荐阅读