#include <iostream>
#include <vector>
int main()
{
std::vector<int> arr = {1, 2, 3};
const int &a = arr[0];
std::cout << a << '\n';
arr.erase(arr.begin());
std::cout << a << '\n';
return 0;
}
运行上面的代码,输出的结果是
1
2
Q
我们没有通过任何方式修改引用 a
指向的元素,为什么最后输出的结果发生了变化?
A
a
指向 arr
的第一个元素 arr[0] = 1
。
我们通过 arr.erase(arr.begin())
移除了第一个元素,现在 arr[0] = 2
。
这里我们需要注意,a
是 arr[0]
的别名,而不是 1
的别名。arr[0]
发生了变化,所以 a
也随之发生变化。