结构c ++向量上的nth_element

时间:2015-03-02 01:25:36

标签: c++ algorithm

我想在结构向量上运行c ++函数nth_element,但我不知道如何让它工作。

这是我目前的代码:

struct Point {
    int x, y, color;
};

bool compareByY (const Point &a, const Point &b)
{
    return a.y < b.y;
}

nth_element(points.begin(), points.size() +  points.size()/2, points.end(), compareByY);

2 个答案:

答案 0 :(得分:4)

我认为对nth_element的调用产生了编译错误,可能是那些着名的难以理解的C ++模板错误之一。但至少应该有某种线索。

第二个参数 - points.size() + points.size()/2 - 不是容器的迭代器;它是一个整数。你的意思是points.begin() + points.size()/2

答案 1 :(得分:2)

算术运算points.size() + points.size()/2没有给你一个迭代器,它给你一个size_tnth_element需要迭代器作为第二个参数。

我猜这只是size vs begin的错字。这是修复:

points.begin() + points.size()/2