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

时间:2016-03-03 15:32:05

标签: c++ c++11 stdmap

如何从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';
    }
}

1 个答案:

答案 0 :(得分:4)

map.emplace返回一对包含迭代器的对象和一个布尔值(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;
}