在二维数组的每一列中查找最大元素
Find max element in each column in a 2-D array
为了在二维矩阵[n][m]中找到第 i 行的最大元素,这是有效的
int t= *max_element(matrix[i],matrix[i]+m);
但我不知道如何以相同的方式在第 i 列中找到最大元素。
std::max_element
对行起作用的原因很简单:该算法接受 前向迭代器 来指定范围,因此也可以传递指针:指针指向行中的第一个元素,指针指向最后一个元素的后面。行中的元素在内存中形成一个连续的块,因此使用指针的方法效果很好。
另一方面,没有办法对列元素使用std::max_element
,因为列元素不会在内存中形成连续的块。
最自然的方法就是只写一个简单的循环,不使用 STL 算法。
为了在二维矩阵[n][m]中找到第 i 行的最大元素,这是有效的
int t= *max_element(matrix[i],matrix[i]+m);
但我不知道如何以相同的方式在第 i 列中找到最大元素。
std::max_element
对行起作用的原因很简单:该算法接受 前向迭代器 来指定范围,因此也可以传递指针:指针指向行中的第一个元素,指针指向最后一个元素的后面。行中的元素在内存中形成一个连续的块,因此使用指针的方法效果很好。
另一方面,没有办法对列元素使用std::max_element
,因为列元素不会在内存中形成连续的块。
最自然的方法就是只写一个简单的循环,不使用 STL 算法。