min_element error



我不是c++程序员,所以这可能很容易。

我有一个点类的向量,我想找到AABB矩形:

  1. 最小x-最小y
  2. 最小x-最大y
  3. 最大x-最小y
  4. 最大x-最大y

我做了一个for循环,保存最小值和最大值(一次用于x,一次用于y),并用一些if更新每次迭代的值。

但我相信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;
}

但我得到了一个奇怪的错误,像

错误:"operator<"不匹配<'在'std::cout<lt;std::min_element[其中_FIter=__gnu_cxx::__normal_iterator>>,_Compare=bool()(点的常量&,常量点和)](((DrawerWidget)this)->DrawerWidget::points.std::vector&lt_Tp,_Alloc>::以_Tp=ofVec3f开头,_Alloc=std::分配器,((DrawerWidget*)this)->DrawerWidget::points。std::vector&lt_Tp,_Alloc>::以_Tp=ofVec3f结尾,_Alloc=std::分配器,_compareX)'

如果我把min_element放在<lt;

min_element向最小元素返回迭代器,您正试图将其发送到cout

用途:

std::cout<<*min_element()

并且您还需要重载<<,除非向量元素是cout已经重载了<<运算符的类型。

相关内容

  • 没有找到相关文章

最新更新