int main()
{
vector<int> v={1,2,4};
int &a=*v.begin();
cout<<a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
v.begin()在上面的代码段中,分配给 的迭代器的取消引用值&a。打印a显示 1
int main()
{
vector<int> v={1,2,4};
int a=*v.begin();
cout<<a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这里,迭代器被引用,并且值被分配给a(不带 &)。打印a仍然显示 1。
我仍在学习 C++,我不明白为什么第一个代码块有效。意味着什么int &a?
int& a = *v.begin();引用a向量中的第一个元素,因此您对该引用所做的任何操作都会反映在引用的元素上。例子:
#include <vector>
#include <iostream>
int main() {
std::vector<int> v = {1, 2, 4};
int &a = *v.begin();
a = 100;
std::cout << v[0]; // prints 100
}
Run Code Online (Sandbox Code Playgroud)
相反,如果您将int a = *v.begin();所持有的价值复制到和v[0]中,并过着各自的生活:av[0]a
#include <vector>
#include <iostream>
int main() {
std::vector<int> v = {1, 2, 4};
int a = *v.begin();
a = 100;
std::cout << v[0]; // prints 1
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |