gpt4 book ai didi

c++ - 用值替换列表中的元素以新列表结尾

转载 作者:行者123 更新时间:2023-11-28 07:45:08 24 4
gpt4 key购买 nike

我在棋盘上有路径,比如成对的索引列表

list<pair<int,int> > *path;

当角色到达障碍物时,我需要用新路径替换路径中从当前位置到终点的所有路径,但要保存从起点到障碍物的路径相同(以澄清一个小角色具有起点和终点单元格,并从起点移动到终点并返回并再次重复相同的操作。为了避免大量计算,我会尝试保存部分路径而没有障碍物,并从障碍物到终点用新的部分替换旧部分)。有没有无需迭代即可执行此操作的简单方法?

稍后编辑以澄清:旧路径是 [(0,0),(0,1),(1,1),(1,2),(1,3),(1,4)] 并且障碍物在单元格 (1,2) 上所以角色去 [(0,0),(0,1),(1,1)] 搜索新路径,例如 [(1,1),(2,1),(2,2),( 1,3),(1,4)] 所以我需要用 (1,1),( 2,1),(2,2),(1,3),(1,4)

最佳答案

如果我正确理解你的问题:你有一个列表 path来自 startdestination ,它在中间某处碰到障碍物(你必须知道在哪里,所以假设你有一个有效的 list<...>::iterator obstacle 指向障碍物)。你还有一个 newpath来自 *(obstacle - 1)destination ,并且您想将这两条路径剪切并粘贴在一起。这就是你可以做到的(我在这里假设 list s 而不是 list* s,但如果你真的需要它,你可以轻松地重写它以使用指针):

//kill the wrong bit of the old path
path.erase(obstacle, path.end());
//append the correct newpath
path.splice(path.end(), newpath, newpath.begin(), newpath.end());

请注意 newpath此操作后为空。

关于c++ - 用值替换列表中的元素以新列表结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15048099/

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