gpt4 book ai didi

C++,对指向的 map 容器使用迭代器时出错。映射/设置迭代器不可递增

转载 作者:行者123 更新时间:2023-11-28 08:01:20 25 4
gpt4 key购买 nike

我在尝试遍历另一个对象指向的 map 时遇到此错误。当我不使用指针时它会起作用。 (遍历成员 map “片段”)因此我想知道该怎么做,或者是否不可能像这样遍历 map ? :

Board * Board::ccBoard(){

Board * newBoard = new Board();
map<Vec2, Piece>::iterator it;
for (it = newBoard->pieces.begin(); it != newBoard->pieces.end(); ++it)
newBoard->removePiece(it->first);
return newBoard;
}

提前致谢!

最佳答案

removePiece() 函数删除it 所引用的元素,使it 无效。然后尝试增加 it 导致断言失败。来自 map::erase() :

References and iterators to the erased elements are invalidated.

我不确定 for 循环的意图是什么,看起来它会有效地清空 map 在这种情况下只需使用 map::clear() :

newBoard->pieces.clear();

关于C++,对指向的 map 容器使用迭代器时出错。映射/设置迭代器不可递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11395555/

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