【发布时间】:2018-04-04 04:59:39
【问题描述】:
我找不到以下问题的解决方案:
我试图在 C++ 数组中找到最小值,但不查看内部的所有元素,只查看具有指定索引的元素。
例如,如果给定一个索引 k 和一个数组 int* mylist = int[n],那么我只想在元素的“子列表”中查找 mylist 中的最小元素,例如各个元素的索引 i 满足 i%n = k。
在 Python 中,这可以通过以下方式轻松解决
min([mylist[i] for i in range(n) if i%n==k]),
但是 afaik,C++ 中没有等价物。此外,据我所知,lambda 函数并不能解决问题。
知道如何有效地做到这一点吗?任何建议将不胜感激!
【问题讨论】:
-
C++ 中没有等价物。我不同意那个..有 lambda 以及有 stl 来找到 min
-
到目前为止,我无法弄清楚在这种情况下如何使用 lambda,但我希望我不必为此使用循环,我只是不知道如何
-
std::vector
::iterator result = std::min_element(std::begin(v), std::end(v),[] (int val) { return val %n = k;); val%n = k (你可以把你的表达方式 -
std::begin(v), std::end(v) ,你可以在开始和结束时修复索引
-
boost range 可能包含您需要的内容。但是,我会选择循环。它只有几行代码,可能是最有效的方式(这是 c++ 而不是 python!)
标签: python c++ arrays lambda minimum