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