在结构指针向量上调用 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
当前未使用。
*编辑以添加错误消息
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
当前未使用。