我找不到以下问题的解决方案:
我试图找到 C++ 数组中的最小值,但不查看内部的所有元素,只查看具有指定索引的元素。
例如,如果给定一个索引 k 和一个数组 int* mylist = int[n]
,那么我只想在元素的“子列表”中查找 mylist 中的最小元素,其中例如各个元素 i 的索引满足 i%n = k
。
在Python中,这可以通过以下方式轻松解决
min([mylist[i] for i in range(n) if i%n==k]),
但是据我所知,C++ 中没有等效的东西。另外,据我所知,lambda 函数并不能解决问题。
知道如何有效地做到这一点吗?任何建议将不胜感激!
最佳答案
这是一个示例,说明为什么标准算法与迭代器一起使用,而不是直接与容器/集合一起使用。它允许您编写一个包含您关心的索引的迭代器。
问题在于,编写迭代器的工作量超出了大多数人的预期,或者认为对于这个简单的任务来说是合理的。 Boost 有一些实用程序可以更轻松地实现迭代器,例如 filter iterator ,但据我所知,这些仅基于集合的内容应用,而不是索引。
创建 index_filter
所涉及的代码相当简单(例如,应该很容易从上面链接的 filter_iterator
代码中推断出来),但是还有更多的锅炉 -那里的盘子比大多数人想要的还要多。除非您经常做这样的事情,否则可能很难证明其合理性。
关于python - C++:仅在具有指定索引的元素中查找数组中的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46892857/