c++ - 带有 std::vector 的 std::min_element
问题描述
我试图找到 min 元素,如下所示:
#include <algorithm>
#include <iostream>
#include <vector>
#include <Eigen/Dense>
using namespace std;
template<typename T>
bool isLeftOf(const Eigen::Vector2<T>& a,
const Eigen::Vector2<T>& b) {
return (a.x() < b.x() || (a.x() == b.x() && a.y() < b.y()));
}
int main(int argc, char *argv[])
{
std::vector<Eigen::Vector2<float> > points;
points.push_back(Eigen::Vector2<float>(-1, -1));
points.push_back(Eigen::Vector2<float>(1, -1));
points.push_back(Eigen::Vector2<float>(0.5, 0));
points.push_back(Eigen::Vector2<float>(1, 1));
points.push_back(Eigen::Vector2<float>(0, 1.5));
points.push_back(Eigen::Vector2<float>(-1, 1));
points.push_back(Eigen::Vector2<float>(-0.7, 0));
Eigen::Vector2<float> outpointa = min_element(*points.begin(),
*points.end(), isLeftOf<float>);
return 0;
}
但我得到编译器错误:
...\algorithm(9199): error C2675: unary '++': '_FwdIt' 未定义此运算符或转换为具有 [ _FwdIt=Eigen::Matrix<float,2, 的预定义运算符可接受的类型1,0,2,1>]
如何克服这一点?
解决方案
您需要为 min_element 提供迭代器
这样就可以了,无需取消引用迭代器。
Eigen::Vector2<float> outpointa = min_element(points.begin(),
points.end(), isLeftOf<float>);
推荐阅读
- angular - 更改角度 7 中打印值的颜色
- node.js - JSON 中用于特殊字符的意外标记
- javascript - 如何合并数组内重复对象的属性
- spring-boot - Bucket对象中bucketfullaccesscontrol权限的使用
- mysql - 在mysql中的其他表查询中选择表值
- google-api - 将 Google Cloud Storage 文件导出到 Google Drive
- unity3d - 如何在一个 Vuforia 应用程序中使用标记跟踪和地平面?
- python - Flask-sentinel /oauth/token 端点 CORS 问题
- linux - 用于更改不同扩展名的文件名的 Bash 脚本
- excel - 如何使用部分文件名通配符运行 fileExists 检查?