C++ 如何从std::map::emplace()获取对插入对象的引用?
如何从C++ 如何从std::map::emplace()获取对插入对象的引用?,c++,c++11,stdmap,C++,C++11,Stdmap,如何从std::map::emplace()获取对插入对象的引用? 官方文件。 我添加了自动插入=m.emplace(“d”,“ddd”) 您能否演示如何获取刚刚插入的“ddd”? 我收到一些可笑的类型struct std::_Rb\u tree\u iterator,但找不到任何文档或示例如何使用它 #include <iostream> #include <utility> #include <string> #include <map> i
std::map::emplace()
获取对插入对象的引用?
官方文件。
我添加了自动插入=m.emplace(“d”,“ddd”)代码>
您能否演示如何获取刚刚插入的“ddd”
?
我收到一些可笑的类型struct std::_Rb\u tree\u 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';
}
}
#包括
#包括
#包括
#包括
int main()
{
std::map m;
//使用pair的模板构造函数
自动插入=m.emplace(“d”,“ddd”);
用于(常数自动和p:m){
std::coutmap.emplace
返回一个包含迭代器to对象和布尔值()
map的迭代器是指向一对键和值的指针。因此,您可以执行以下操作:
auto inserted = m.emplace("d", "ddd");
if (inserted.second == true)
{
auto &ref_to_ddd = inserted.first->second;
}
如果定位失败怎么办?你的引用是什么?@juanchopanza offtopic。你可以使用find()
进行状态检查,然后将返回的迭代器点与end()进行比较
是的,但是引用必须引用一个有效的对象。这就是为什么emplace
给你一个迭代器,它不必引用一个有效的对象,还有一个bool,它告诉你emplace是否成功。我不确定你有什么问题。@juanchopanza你能演示一下如何获取std::string&
插入“ddd”
?它显然存在于地图中。我可以,但我不确定您遇到的问题是哪一部分。对我来说,从您链接的文档中似乎非常清楚。