C++ C++;Can';t地图的参考键

C++ C++;Can';t地图的参考键,c++,stdmap,C++,Stdmap,为什么会发生这种情况?(对于下一个字符串,它不会给出此错误,其中我通过引用指定了“s.second”) 编译器为ISOC++ +1y(-STD= C++ +1Y)。 多谢各位 string& old_country = s.first; 或者更好: const string& old_country = s.first; 旁注:为了可读性,即使对于自动,也要添加const 您的地图对应的一对是: const auto& old_country = s.first;

为什么会发生这种情况?(对于下一个字符串,它不会给出此错误,其中我通过引用指定了“s.second”)

编译器为ISOC++ +1y(-STD= C++ +1Y)。 多谢各位

string& old_country = s.first;
或者更好:

const string& old_country = s.first;
旁注:为了可读性,即使对于自动,也要添加
const

您的地图对应的一对是:

const auto& old_country = s.first;
std::pair
因为由于树约束,无法修改密钥。

我认为
const auto&old\u country=s.first更好。这将防止下一个查看OPs代码的人和OP现在一样困惑。是的,您确实可以始终将
常量
放入,这确实有助于可读性。我的意思是
常量
中没有通用性,键类型可能会更改,但它始终是
常量
,所以为什么不明确说明它呢
const auto& old_country = s.first;
std::pair<const std::string, string>