创建一个指向不同字符的vector双指针
Creating a vector different double pointers to charecters c++
每次我去添加一个新的'临时'板到向量它改变所有以前的一个我刚刚添加的,所以最后我有一个相同的临时变量的向量…为什么会这样?
在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
也不必要)。
相关文章:
- 从 std::vector<无符号字符>切片中提取 int?
- 如何将带有十六进制值的 std::string 转换为 std::vector<无符号字符>
- 在 std::vector<无符号字符中存储任意数据的方法>
- C++ 无法将 std::vector<BYTE> 转换为字符串或字符数组
- 如何在C++中处理多维字符串 VECTOR 的字符?
- 将 std::vector<char> 转换为字符* 会导致字符缺陷
- 将十六进制值存储到 std::vector<无符号字符中>
- 如何使用 boost asio 通过 UDP 套接字发送无符号字符的 std::vector?
- 给定一个填充无符号字符**的 C 函数,如何在没有中间副本的情况下用数据填充 std::vector
- 将 const std::vector<char> 转换为无符号字符*?
- 使用 std::find 查找从二进制文件中读取的字符并转换为 std::vector 中的 std::string<string> 会产生这种不可预测的行为?
- 我可以在不复制的情况下将 std::vector 重新解释<char>为 std::vector<无符号字符>吗?
- 标准中的奇怪字符::vector<TCHAR*>
- 从 std::vector<无符号字符中的数据填充结构>
- 循环中的 BadPtr 访问冲突,将字符**转换为 std::vector<string>
- 将 std::vector 的缓冲区替换为错误定位的字符数组
- Qt:将QPixmap保存到std::vector<无符号字符>-或者将QByteArray转换为std::
- 将静态无符号字符* 分配给 std::vector<无符号字符>
- 如何将无符号字符[]转换为标准::vector<无符号字符>
- 无已知转换 在带有 std::vector 的无符号字符的 typedef 数组之间