今天我才知道引用不是reseatable 考虑代码:
map<int,int> z;
z.insert(make_pair(1,2));
z.insert(make_pair(3,5));
z.insert(make_pair(4,6));
auto ref = z.at(1);
ref = z.at(3);
std::map::at
返回一个对所请求元素的映射值的引用,暗示 ref 是一个引用。为什么允许重新分配(因为不能重新绑定(bind)引用)。这里发生了什么。
最佳答案
auto
不生成引用类型。表达式 z.at(1)
是 int
类型的左值,因此 ref
也是一个 int。
(如果你想要引用,你必须说 auto &
或 auto &&
(或者在 C++14 中 decltype(auto)
).)
关于c++ - 引用被重新安置在这里还是别的什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17688658/