gpt4 book ai didi

c++ - Eigen :std::set 与 VectorXd

转载 作者:行者123 更新时间:2023-11-28 06:32:12 26 4
gpt4 key购买 nike

我正在尝试将 std::set 与 Eigen 库中的 VectorXd 一起使用:

typedef VectorXd Vec;

bool(*fn_pt)(Vec,Vec) = vecCompare;
set<Vec,bool(*)(Vec,Vec)> yx (fn_pt);

函数vecCompare定义如下:

bool vecCompare (Vec v, Vec w) {
for (int i = 0; i < numCrit; ++i) {
if (v(i) < w(i)) return true;
}

return false;
}

不幸的是,yx.find(x) 无法正常工作,即即使 x 已经在 yx 中,它也会返回一个空迭代器。

我的代码有什么问题吗?

最佳答案

vecCompare 不是总排序。如果左操作数中的任何坐标小于右操作数中的对应坐标,则返回 true。对于 vector a = (1, 2), b = (2, 1),例如,vecCompare(a, b)vecCompare(b, a)是真的。

如果你的意思是字典顺序,这应该有效:

bool vecCompare (Vec v, Vec w) {
for (int i = 0; i < numCrit; ++i) {
if (v(i) < w(i)) return true;
if (v(i) > w(i)) return false;
}

return false;
}

关于c++ - Eigen :std::set 与 VectorXd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27337529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com