作为更大函数的一部分,我在迭代二维数组以找到每行中最大值的位置。
pos = std::distance(A_T[k].begin(), std::max_element(A_T[k].begin(), A_T[k].end(),
[](T a, T b) {return (abs(a) < abs(b)); }));
由于我的数组是2D,因此可以两次接收相同的位置 - 在这种情况下,我想返回下一个最大值的位置。
有一种简单的方法吗?
答案 0 :(得分:0)
我使用Steve Lorrimer提出的解决方案解决了这个问题。
我开始初始化最大位置历史的向量。然后我循环了位置历史向量,将A_T的相应列设置为0.0。然后,我可以重复搜索下一个最大值,满足我的要求,即无法选择相同的列两次。
这是我的代码:
std::vector<unsigned> posHist;
for (unsigned k = 0; k < A.size(); k++)
{
for (unsigned q = 0; q < posHist.size(); q++)
for (unsigned i = 0; i < A_T.size(); i++)
A_T[i][posHist[q]] = 0.0;
posHist.push_back (std::distance(A_T[k].begin(),
std::max_element(A_T[k].begin(), A_T[k].end(),
[](T a, T b) {return (abs(a) < abs(b)));}));
}