繁体   English   中英

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

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

*编辑添加错误信息

当我在指向我之前在程序中定义的结构的指针向量上调用排序函数时,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当前未使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM