【发布时间】:2020-12-24 01:30:04
【问题描述】:
我有一个 double 类型的多维数组 (double someArray[10][20])。我愿意:
a) 使用 std::count_if() 遍历该数组的单个列,返回大于某个数字的值的数量
b) 还要求该数字的行索引在一定范围内。
我知道使用std::count_if 的基础知识(例如,我知道如何迭代某些向量并返回大于/小于/等于某个值的值),但我不确定如何在多维数组的列上执行此操作,或者如何检查元素的索引是否也满足某些条件。
【问题讨论】:
-
能否至少给我们展示一下多维数组的定义,并告诉我们您要检查哪一列?
-
@πάνταῥεῖ 数组是 10 x 20。我最终会多次调用 std::count_if(),检查某个条件选择的列。所以,我可能想检查第 3 列的值是否大于 7,行索引介于 2 和 12 之间。这只是一个例子。它或多或少取决于外部条件和用户输入。
-
所以你有一个
std::array<std::aray<double,20>,10>? Edit您的问题,而不是让我们猜测。 -
@πάνταῥεῖ 我有双倍 myArray[10][20]
-
See if you can use this answer as a starting point。二维数组中的数据是连续的,因此您可以使用开始和结束迭代器轻松地将任何算法应用于数据,即开始:
&somearray[0][0],结束:&somearray[9][20]。步数只是20。所以你只需要做一个简单的计算就可以算出列的起始地址。