C++ 相当于 Java Map getOrDefault?

Eva*_*van 10 c++ treemap c++17

Java 的 getOrDefault 是一个很好的构造,可以单行访问映射值或起点(如果不存在)。我在 C++ 的地图参考中没有看到任何并行的内容。是否存在某些东西或者是您自己构建的?

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

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

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

L. *_* F. 4

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

使用emplace

auto& element = *map.emplace(key, value).first;
Run Code Online (Sandbox Code Playgroud)

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

  • @Evan 这真的是你想要的吗?`getOrDefault` 是 get 或 default,它不是 get 或 insert-and-then-get?也就是说,“getOrDefault”永远不会插入到地图中。 (2认同)