如何从 std::map::emplace() 获取对插入对象的引用?

How to get reference to inserted object from std::map::emplace()?

如何从std::map::emplace()获取对插入对象的引用? emplace 的官方文档。 我添加了 auto inserted = m.emplace("d", "ddd");

能否请您演示如何获取刚刚插入的 "ddd" 的引用?

我收到一些荒谬的类型 struct std::_Rb_tree_iterator 并且找不到任何文档或示例如何使用它。

#include <iostream>
#include <utility>
#include <string>

#include <map>
int main()
{
    std::map<std::string, std::string> m;

    // uses pair's template constructor
    auto inserted = m.emplace("d", "ddd");

    for (const auto &p : m) {
        std::cout << p.first << " => " << p.second << '\n';
    }
}

map.emplace return 一对包含对象的迭代器和布尔值 (http://www.cplusplus.com/reference/map/map/emplace/)

map 的迭代器是一种指向一对键和值的指针。所以,你可以这样做:

auto inserted = m.emplace("d", "ddd");
if (inserted.second == true)
{
    auto &ref_to_ddd = inserted.first->second;
}