我正在尝试实现路径寻找算法。 所以我有一个带有结构的二维数组,并且想跟随它 追踪从一个地方到另一个地方的最佳意见。因此,我尝试使用结构(简单的数据处理)和指向其他结构的指针。
原则上这是它的工作原理。
struct location{
int x;
int y;
location* parent;
};
int main(){
map_inf current;
vector<map_inf> allData;
someData = getData(); // returns vector of structs
current = someData[0];
while(current.x != 15 && current.y != 30){
for(int i = 1; i < someData.size(); i++){
someData[i].parent = ¤t;
allData.push_back(someData[i]);
}
someData = getData(); // get new data
current = someData[0];
}
for(int i=0; i<allData.size(); i++){
///////////////////////////////////////
// ALL PARENT POINTERS ARE EQUAL. WHY ?
///////////////////////////////////////
}
}
当我使用调试器查看我的代码时,我可以看到“当前”元素是正确的,指针将被正确设置。但是当“someData”被完全处理并且有新数据时,allData中的所有先前父指针也会得到更新。
答案 0 :(得分:0)
你应该在for循环结束后或for循环中增加/更新当前指针。您刚刚在for循环结束时使用了 current = someData [0]; ,这意味着当前将包含 someData [0] <指向的相同指针/强>