创建一个指向不同字符的vector双指针

Creating a vector different double pointers to charecters c++

本文关键字:字符 vector 指针 一个 创建      更新时间:2023-10-16

每次我去添加一个新的'临时'板到向量它改变所有以前的一个我刚刚添加的,所以最后我有一个相同的临时变量的向量…为什么会这样?

在ChangeBoard()被调用后,board被更新(board被声明为char**,而不是new)。

char** temp;
for(int i =0; i < 3; i++){
  ChangeBoard(); //makes changes to board
  temp = board; //sets temp to the latest version of the board
  vector.push_back(temp); //add temp to vector 
}

我如何使每个"临时"板在矢量中不同?

我需要将temp声明为"new",然后在每次将其添加到向量上后删除它。如果有,那是怎么回事?

谢谢你的帮助!!

我想你把复制指针和复制内存混淆了。

看起来你在一次又一次地更新由board指向的相同内存,错误地假设temp赋值和/或vector.push_back(temp)将复制所有内存。而不是这样,它只是向vector对象添加了另一个指向同一内存的指针。

如果每次ChangeBoard()被调用时board没有被分配,那么它不是一个新的板,它是用新的信息更新的相同内存。

如果你想在向量的每个地方都有一个指向不同板的指针,你需要在每次调用ChangeBoard()时分配board指向的新内存。(这可能使temp也不必要)。

相关文章: