使用C++ 14(也应该影响C++ 11)我auto在基于范围的for循环中感到困惑std::unordered_map,与使用std::pair<int, int>下面代码中的确切类型相反.
更具体地说,我有一些关于这个例子的(相关)问题:
std::pair<int, int> &不允许但是auto &在循环1中?auto与确切类型不同(如std::pair<int, int>循环0)?问题3 :(循环3)为什么这是所有映射条目的相同指针?
问题4(继续0和1):我知道基于范围的for循环使用迭代器.但是为什么我可以std::unordered_map使用auto(循环1)迭代引用非const ,但是在使用std::pair(循环0)时不能?
#include<iostream>
#include <unordered_map>
#include <utility>
int main()
{
std::unordered_map<int, int> map;
map[3] = 333;
map[2] = 222;
map[1] = 111;
// loop 0
// QUESTION 0: Why is `std::pair<int, int> &` not allowed but `auto &` in loop 1 is?
// …Run Code Online (Sandbox Code Playgroud)