在结构指针向量上调用 C++ std::sort

Calling C++ std::sort on a vector of struct pointers

*编辑以添加错误消息

Visual Studio 的 intellisense 是红色标记排序函数,当我在指向我在程序前面定义的结构的指针向量上调用它时。

我已经实例化了一个指向我的比较方法的函数指针,并按如下方式调用排序:

bool(*compareNodes)(nodePtr, nodePtr) = compNodes;

sort(frontier.begin(), frontier.end(), compNodes);

/* flags compnodes and sort; "cannot determine which instance of overloaded 
 * function "compNodes is intended" */

compNodes 函数:

static bool compNodes(nodePtr Node1, nodePtr Node2){
    if (Node1->fValue != Node2->fValue)
        return (Node1->fValue < Node2->fValue);
    else
        return (Node1->ID > Node2->ID);
}

大胆猜测:compNodes 过载。您巧妙地尝试使用 compareNodes 获取指向正确重载的指针,但您实际上并没有在 std::sort() 中使用它。将行更改为:

sort(frontier.begin(), frontier.end(), compareNodes);

如果您的警告级别足够高,您会看到 compareNodes 当前未使用。