作者:水瓶颜如_991 | 来源:互联网 | 2022-12-10 14:17
这个用向量元素的地址填充指针向量的代码v
工作正常:
#include
#include
using namespace std;
int main() {
vector v{ 1,2,3,4,5 };
vector pv;
for (unsigned int i = 0; i
如何使用基于范围的for循环获得相同的结果.我尝试过这样的代码,但它不能正确填充指针的向量:
#include
#include
using namespace std;
int main() {
vector v{ 1,2,3,4,5 };
vector pv;
for (auto i : v)
pv.push_back(&i);
for (auto i : pv)
cout <
我确信我有一些非常简单的错误 - 但是在搜索了一下之后却无法解决这个问题.感谢大家!
1> 小智..:
参考元素:
for (auto& r : v)
pv.push_back(&r);
您原始的基于范围的for循环按值迭代向量,使i
每个项目成为每个项目的新副本.因此表达式&i
不检索内部元素的地址v
.
通过引用迭代,每个r
引用内部的元素v
,因此表达式&r
的地址正确地检索元素的地址.