- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在自学 c++ 和 eigen,所以也许这是一个简单的问题。
给定 n 和 0 "<"m "<"n,以及一个 n vector d 的 float 。具体来说:
VectorXf d = VectorXf::Random(n)
我想要一个包含整数的 m vector d_prim onfd 中小于或等于的所有条目的索引d 的第 m 个最大条目。效率很重要。如果有平局在数据中,然后填充 d_prim d 的前 m 个条目小于它的第 m 个最大条目是可以的(我真的需要不大于第 m^th 大条目的 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);
}
但是它有两个问题:
最好的,
最佳答案
std::nth_element
是你想要的(与我之前所说的相反)。它执行部分操作,以便 [first, mth)
范围内的元素小于 [mth, last)
范围内的元素。因此,在运行 nth_element
之后,您只需将第一个 m
元素复制到新 vector 。
VextorXf d = VectorXf::Random(n);
VectorXi d_prim(m);
std::nth_element(d.data().begin(), d.data.begin() + m, d.data().end());
std::copy(d.data().begin(), d.data().begin() + m, d_prim.begin());
This answer有更多关于执行此操作的算法的信息。
关于c++ - 在 eigen 中使用 std::nth_element 和相关的询问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9507923/
我很难掌握应该如何使用 std::nth_element ,因为我有点生疏。 裁判说: Rearranges the elements in the range [first,last), in su
有人知道 std::nth_element 的不同实现的预期运行时间和最坏情况下的运行时间吗?我几乎每天都使用这个算法。 我对最近的 Microsoft 编译器附带的 STL 版本特别感兴趣,但有关此
StackOverflow 和其他地方有很多声称 nth_element 是 O(n) 并且通常使用 Introselect 实现的声明:http://en.cppreference.com/w/cp
我明白 (1) std::nth_element对跨越 [first, last) 的数组元素进行排序,使得 !(*j > *i) 适用于 [first, nth) 中的任何 i 和 [nth, la
我正在尝试使用第 nth_element 找到 (x,y) 点的 vector 的中值 cv::Point2f medOffset; vector tempOffset
我想在一个类中将函数 nth_element 与我自己的排序函数(应该可以访问对象的数据)一起使用。目前,我正在做以下事情: class Foo { public: glm::vec3 *po
我想用 C++ 计算 float 组的中值: float Median( FloatArray const * constFloatArray ) { FloatArray scratc
我想从给定的未排序 vector 中获取第 n 个最小的元素。我发现标准库中有一个方法。但是我不明白下面的结果。 我使用条目为 {3,4,5,2,3} 的 vector ,并希望获得第二小的元素。如果
来自 std::nth_element 的文档我们有: template void nth_element( RandomIt first, RandomIt nth, RandomIt last )
前面章节中,已经给大家介绍了 sort()、stable_sort()、partial_sort() 这些函数的功能和用法,本节再介绍一个排序函数,即 nth_element() 函数。 不过,在系统
我看过一段代码: template T getMedian(vector& data_vec) { assert(!data_vec.empty()); typename vector
下面的代码将无法编译。第 2 行到最后一行 (nth_element...) 有错误。这似乎与比较器有关。编译器声称“术语不计算为采用 2 个参数的函数”。如何修复编译错误? struct R
我想在 python 中实现 Vantage Point Tree,但它使用 C++ 中的 std::nth_element。 所以我想在 Python 或 numpy 中找到等效的“nth_elem
根据 cppreference.com,C++ STL 排序算法的复杂度为: 排序:O(N log(N)) partial_sort:“大约”O(N log(M)),其中 M 是距离(中间优先) nt
我不想得到排序数组,只是第 n 个元素的值。例如,给定数组 a = [20, 5, 1, -3] 我希望能够查询 nth_element(a,2) = 1 在 C++ 中,有一个函数 std::nt
我在任何地方都没有找到这个特定的主题... 我在 23 个整数的 std::vector 中调用 nth_element() 算法大约 400,000 次,更精确的“无符号短”值。 我想提高计算速度,
我有一个算法可以在我的双核 3 GHz Intel 处理器上平均运行 250 毫秒,我正在尝试优化它。目前,我有一个 std::nth_element在 std::vector 上调用了大约 6,00
我正在将一些 C++ 代码移植到 C#。 C# 是否有等价于 std::nth_element()还是我需要自己动手? 最佳答案 我假设您正在寻找一个访问器,该访问器通过对集合执行部分排序来返回无序集
我感兴趣的是找到 vector 中等于中位数的第一个(最左边)元素的最有效方法。找到中位数很简单: std::nth_element(first, middle, last); auto median
我正在自学 c++ 和 eigen,所以也许这是一个简单的问题。 给定 n 和 0 "<"m "<"n,以及一个 n vector d 的 float 。具体来说: VectorXf d = Vect
我是一名优秀的程序员,十分优秀!