【发布时间】:2021-01-05 04:01:47
【问题描述】:
我有一些涉及 stl 迭代器的函数,并且可以使用像 std::vector<Eigen::Vector2d> 这样的类型。
例如:
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()
{
std::vector<Eigen::Vector2i> myVec;
myVec.push_back(Eigen::Vector2i::Random(2));
myVec.push_back(Eigen::Vector2i::Random(2));
myVec.push_back(Eigen::Vector2i::Random(2));
myVec.push_back(Eigen::Vector2i::Random(2));
myVec.push_back(Eigen::Vector2i::Random(2));
Eigen::Vector2i element = *std::min_element(myVec.begin(), myVec.end(), isLeftOf<int>);
return 0;
}
如您所见,我在调用std::min_element 时在函数isLeftOf 中创建std::vector<Eigen::Vector2i> myVec 并使用Eigen::Vector2<T>。
现在我在使用 std::vector<SomeEigenType> 时遇到了一些麻烦,我正在寻找一种方法来使用相同的 isLeftOf(Eigen::Vector2...) 和 stl 函数,但我不明白如何。
在Eigen documentation 或in the forum 中有一些信息如何在 Eigen::Vector 或 Matrix 上执行 stl 操作,但它们适用于普通数字矩阵,因此我无法将 Eigen::Vector2 发送到我的 isLeftOf 函数。
有没有办法在我的函数中使用带有Eigen::Matrix 的stl 函数和处理条件,比如接受Eigen::Vector 类型的isLeftOf?
【问题讨论】: