C ++有一种方法可以将优先级队列元素复制到向量中,以便可以进行迭代以检查重复项

克里斯·爱德华兹

我第一次尝试用c ++编写A *搜索,但是我以前用Java编写过它们。

我在检查openList中是否已有内容时遇到麻烦。OpenList是Node的priority_queue,但是我知道您不能简单地遍历优先级队列。

我的想法是,我将openList传递给一个函数,该函数会将元素复制到临时向量中,然后可以迭代此临时向量。显然,这对于极快且高效的运行时间不利,但我想不出另一种解决方法。

封闭列表非常简单,因为您可以看到仅遍历向量。

这是两个列表:

priority_queue<Node, vector<Node>, NodeCompare> openList;
vector<Node> closedList;

码:

bool checkInClosedList(std::vector<Node>& v,int x, int y){

    for (std::vector<Node>::iterator iter = v.begin(); iter != v.end(); ++iter) {
        if(iter->getX() == x && iter->getY() == y){
            return true;
        }
    }

    return false;

}

我该怎么做,但要priority_queue <Node, vector<Node>, NodeCompare>

我已经测试了优先级队列本身,但是我的A *陷入了无限循环,因为它一直在检查已经检查过的节点!

干杯,克里斯。

插口

您可以使用std :: list并在其上调用unique()另外,std :: list允许您基于谓词进行排序,这可以让您模拟priority_queue正在执行的任何排序。

或者,std :: map强制使用唯一键,并将删除重复项。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有一种方法可以对列表中的颜色元素进行排序(C#)?

来自分类Dev

在 C# 中有没有一种方法可以将文件从一个位置复制到另一个位置并覆盖现有文件?

来自分类Dev

有没有一种方法可以检查Python中的优先级队列中是否存在优先级?

来自分类Dev

在C ++中,有没有一种方法可以将值传递给构造函数而不发生移动或复制?

来自分类Dev

有没有一种方法可以将元素添加到列表/数组?[C]

来自分类Dev

有没有一种方法可以在C#中向数组添加一些元素?

来自分类Dev

在我的c ++程序中,有一种方法可以检查CPU是否具有AES-NI

来自分类Dev

有没有一种方法可以推断出C ++中数组的单个元素的类型

来自分类Dev

有没有一种方法可以推断出C ++中数组的单个元素的类型

来自分类Dev

有没有一种方法可以将JSON转换为C ++中的XML?

来自分类Dev

如果稍后检查 != "",有没有一种方法可以消除在 C# 中进行空检查的需要?

来自分类Dev

有没有一种方法可以在Verilog中定义类似C的结构

来自分类Dev

有没有一种方法可以检测c ++中的汉字?(使用升压)

来自分类Dev

在C ++ BLPAPI中,有一种方法可以避免使用hasElement或捕获错误

来自分类Dev

C ++:将reg_iterator复制到向量中以便进行sort()和unique()吗?

来自分类Dev

有没有一种方法可以检查c ++中的用户输入是否在某个预定义的向量中,以及是否不告诉用户重新输入呢?

来自分类Dev

有没有一种方法可以检查变量是否等于一组值?| C

来自分类Dev

有没有一种简单的方法可以在C中复制argv?

来自分类Dev

有没有一种方法可以将方法传递给c#中的另一个方法,最好的方法是什么?

来自分类Dev

有没有一种方法可以在使用C ++ 11进行函数调用期间将“ vector <int>”自动提升为“ vector <double>”?

来自分类Dev

C ++有没有一种方法可以基于type_traits进行模板重载?

来自分类Dev

有没有一种方法可以检查数据库中是否存在随机生成的数字?C#

来自分类Dev

有没有一种方法可以将椭圆与WPF C#上的线连接?

来自分类Dev

C ++ 11:有没有一种方法可以强制将类仅用作右值?

来自分类Dev

C#:有没有一种方法可以将枚举作为参数传递?

来自分类Dev

在BAZEL中,是否有一种方法可以防止依赖C / C ++头传播到依赖库?

来自分类Dev

有没有一种方法可以将C ++ struct / class中的所有定义引入范围而不从中派生?

来自分类Dev

有没有一种方法可以通过值将纯抽象类的所有子类传递给C ++中的函数?

来自分类Dev

有没有一种方法可以像在VB中那样强制将值传递给参数而不是C#中的ref?

Related 相关文章

  1. 1

    有没有一种方法可以对列表中的颜色元素进行排序(C#)?

  2. 2

    在 C# 中有没有一种方法可以将文件从一个位置复制到另一个位置并覆盖现有文件?

  3. 3

    有没有一种方法可以检查Python中的优先级队列中是否存在优先级?

  4. 4

    在C ++中,有没有一种方法可以将值传递给构造函数而不发生移动或复制?

  5. 5

    有没有一种方法可以将元素添加到列表/数组?[C]

  6. 6

    有没有一种方法可以在C#中向数组添加一些元素?

  7. 7

    在我的c ++程序中,有一种方法可以检查CPU是否具有AES-NI

  8. 8

    有没有一种方法可以推断出C ++中数组的单个元素的类型

  9. 9

    有没有一种方法可以推断出C ++中数组的单个元素的类型

  10. 10

    有没有一种方法可以将JSON转换为C ++中的XML?

  11. 11

    如果稍后检查 != "",有没有一种方法可以消除在 C# 中进行空检查的需要?

  12. 12

    有没有一种方法可以在Verilog中定义类似C的结构

  13. 13

    有没有一种方法可以检测c ++中的汉字?(使用升压)

  14. 14

    在C ++ BLPAPI中,有一种方法可以避免使用hasElement或捕获错误

  15. 15

    C ++:将reg_iterator复制到向量中以便进行sort()和unique()吗?

  16. 16

    有没有一种方法可以检查c ++中的用户输入是否在某个预定义的向量中,以及是否不告诉用户重新输入呢?

  17. 17

    有没有一种方法可以检查变量是否等于一组值?| C

  18. 18

    有没有一种简单的方法可以在C中复制argv?

  19. 19

    有没有一种方法可以将方法传递给c#中的另一个方法,最好的方法是什么?

  20. 20

    有没有一种方法可以在使用C ++ 11进行函数调用期间将“ vector <int>”自动提升为“ vector <double>”?

  21. 21

    C ++有没有一种方法可以基于type_traits进行模板重载?

  22. 22

    有没有一种方法可以检查数据库中是否存在随机生成的数字?C#

  23. 23

    有没有一种方法可以将椭圆与WPF C#上的线连接?

  24. 24

    C ++ 11:有没有一种方法可以强制将类仅用作右值?

  25. 25

    C#:有没有一种方法可以将枚举作为参数传递?

  26. 26

    在BAZEL中,是否有一种方法可以防止依赖C / C ++头传播到依赖库?

  27. 27

    有没有一种方法可以将C ++ struct / class中的所有定义引入范围而不从中派生?

  28. 28

    有没有一种方法可以通过值将纯抽象类的所有子类传递给C ++中的函数?

  29. 29

    有没有一种方法可以像在VB中那样强制将值传递给参数而不是C#中的ref?

热门标签

归档