gpt4 book ai didi

C++ 遍历对象并获取它们的地址

转载 作者:太空狗 更新时间:2023-10-29 20:09:44 27 4
gpt4 key购买 nike

我有以下代码片段:

vector<shape*> triangle_ptrs;
for (auto x : triangles)
triangle_ptrs.push_back(&x);

triangle 是派生自 shape 类的类,triangles 是三角形的 std::vector :

std::vector<triangle> triangles;

我需要保存三角形的地址,但当我遍历集合时,它们的地址似乎是相同的。我该如何解决这个问题?

最佳答案

在这个循环中:

for (auto x : triangles)
triangle_ptrs.push_back(&x);

逻辑上等于:

for ( auto it = triangles.begin(), it != triangles.end(); ++it) { 
auto x = *it;
triangle_ptrs.push_back(&x);
}

你在每次迭代中制作一个拷贝,将你的循环更改为:

for (auto &x : triangles)
triangle_ptrs.push_back(&x);

关于C++ 遍历对象并获取它们的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43371192/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com