我想在结构向量上运行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);
答案 0 :(得分:4)
我认为对nth_element
的调用产生了编译错误,可能是那些着名的难以理解的C ++模板错误之一。但至少应该有某种线索。
第二个参数 - points.size() + points.size()/2
- 不是容器的迭代器;它是一个整数。你的意思是points.begin() + points.size()/2
。
答案 1 :(得分:2)
算术运算points.size() + points.size()/2
没有给你一个迭代器,它给你一个size_t
。 nth_element
需要迭代器作为第二个参数。
我猜这只是size
vs begin
的错字。这是修复:
points.begin() + points.size()/2