max_element我有一个二维矩阵使用std ::在二维矩阵
double TotalEnergy[200][47];
该矩阵被填充有适当的值。现在我正试图在每一列中找到最大值。
在这种情况下,我该如何使用std::max_element
?
非常感谢。
问候
Chintan
max_element我有一个二维矩阵使用std ::在二维矩阵
double TotalEnergy[200][47];
该矩阵被填充有适当的值。现在我正试图在每一列中找到最大值。
在这种情况下,我该如何使用std::max_element
?
非常感谢。
问候
Chintan
转换每一列到一个std ::矢量和使用std :: max_element函数的向量。 STL容器非常高效地处理所有内存问题,而不必担心它。
double maxElements[47]; //This will contain the max of each column of TotalEnergy
std::vector<double> vec;
for(int k=0; k<47; k++)
{
for(int l=0; l<200;l++)
vec.push_back(TotalEnergy[l][k]);
maxElements[k] = *std::max_element(vec.begin() , vec.end());
vec.clear();
}
根据cppreferencestd::max_elements
只适用于迭代器。除非你想创建遍历2D矩阵的每个元素的迭代器,否则我建议对矩阵的每一行(或列)运行std::max_element
。
实施例(未测试的)代码:
double result{std::numeric_limits<double>::min()};
for(int iX{0}; iX < 200; ++iX) {
result = std::max(result, std::max_element(std::begin(TotalEnergy[iX]),
std::end(TotalEnergy[iX])));
}
Thanks dude。我想要一个简单的方法,但这工作得很好。干杯。 Chintan –