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

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

本文关键字:c++ std 调用 sort 结构 指针 向量      更新时间:2023-10-16

*添加错误提示

Visual Studio的智能感知在我在程序前面定义的结构体的指针向量上调用排序函数时,它会红色标记。

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

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当前未使用。