我正在一次自学 c++ 和 eigen,所以也许这是一个简单的问题。
给定 n 和 0 "<" m "<" n,以及一个 n 向量 d 的浮点数。为了使其具体:
VectorXf d = VectorXf::Random(n)
我想要一个 m 向量 d_prim onf integers,其中包含 d 的所有条目的索引,这些条目小于或等于 d 的第 m 个最大条目。效率很重要。如果数据中有抽取,则填充 d_prim 的前 m 个小于其第 m 个最大条目的 d 条目就可以了(我真的需要不大于第 m 个最大条目的 m 个数字的索引d)。
我试过(天真地):
float hst(VectorXf& d,int& m){
// VectorXf d = VectorXf::Random(n);
std::nth_element(d.data().begin(),d.data().begin()+m,d.data().end());
return d(m);
}
但它有两个问题:
- 它不起作用
- 即使它确实有效,我仍然必须传递 d 的(副本)一次才能找到那些小于 d(m) 的条目的索引。这是必要的吗?
最好的,