컴파일러는 해당 형식에 대한보다 작음 연산자를 알아낼 수 없습니다. 나는 또한 람다와 술어 함수로 시도했다.Eigen :: Vector의 std :: vector에 고유 한 정렬 방법은 무엇입니까?
#include <Eigen/Dense>
typedef Eigen::Vector3f vec3;
inline bool operator<(const vec3 &lhs, const vec3 &rhs) {
return lhs.x() < rhs.x() && lhs.y() < rhs.y() && lhs.z() < rhs.z();
}
inline bool cmpVecs(const vec3 &lhs, const vec3 &rhs) {
return lhs.x() < rhs.x() && lhs.y() < rhs.y() && lhs.z() < rhs.z();
}
inline void removeDuplicates(std::vector<vec3> &con)
{
std::sort(con.data(), con.data() + con.size());
auto itr = std::unique(con.begin(), con.end(), cmpVecs);
con.resize(itr - con.begin());
}
void init(std::vector<vec3> &verts) {
removeDuplicates(verts);
}
VS 2012 오류 :
algorithm(3618): error C2678: binary '<' : no operator found which takes a left-hand operand of type 'Eigen::Matrix<_Scalar,_Rows,_Cols>' (or there is no acceptable conversion) 1> with 1> [ 1> _Scalar=float, 1> _Rows=3, 1>
_Cols=1 1> ]
관련 게시물 :
'std :: sort'는 엄격한 약한 순서 술어가 필요하므로 비교 함수가 정확하지 않습니다. '{ if (lhs.x()
dalle
위의 설명에서 비교는 나를 위해 작동합니다. 그 독특한 matlab에 매우 공통적 임에도 불구하고, 이것은 찾기가 아주 어려웠습니다. –