Я не кодер C++, так что, возможно, это легко.Ошибка min_element
У меня есть вектор класса точек, и я хочу, чтобы найти AABB прямоугольник:
- мин х - мин у
- мин х - макс у
- макс х - мин у
- max x - max y
Я сделал цикл for, сохраняя min и max (один раз для x и один раз для y) и обновляя значение для каждой итерации с некоторыми ifs.
, но я уверен, что есть что-то умнее в std или в boost .
, например, я просто попытался:
vector<ofPoint> points;
// ....
bool _compareX(ofPoint const &p1, ofPoint const &p2) { return p1.x > p2.x; }
bool _compareY(ofPoint const &p1, ofPoint const &p2) { return p1.y > p2.y;}
void DrawerWidget::foo()
{
cout << std::min_element(points.begin(), points.end(), &_compareX) << endl;
}
но я получаю странное сообщение об ошибке, как
error: no match for ‘operator<<’ in ‘std::cout << std::min_element [with _FIter = __gnu_cxx::__normal_iterator > >, _Compare = bool ()(const ofPoint&, const ofPoint&)](((DrawerWidget)this)->DrawerWidget::points.std::vector<_Tp, _Alloc>::begin with _Tp = ofVec3f, _Alloc = std::allocator, ((DrawerWidget*)this)->DrawerWidget::points.std::vector<_Tp, _Alloc>::end with _Tp = ofVec3f, _Alloc = std::allocator, _compareX)’
и подобной ошибки, если я поставил min_element где-то над < <
ОК, но есть ли самый лучший способ для полного AABB? – nkint
@nkint: Разве это не совсем отличается от Вопроса, заданного в главном Вопросе. Простите меня, может быть, я неправильно понимаю, но я точно не знаю. То, что вы пытаетесь сделать на самом деле. –
ok простите, я открою новую тему – nkint