如何检查以前是否C++找到过最大值位置

How to check if a max value position has previously been found C++

本文关键字:C++ 位置 最大值 是否 何检查 检查      更新时间:2023-10-16

作为更大函数的一部分,我正在迭代二维数组以找到每行中最大值的位置。

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,因此可以两次接收相同的位置 - 在这种情况下,我想返回下一个最大值的位置。

有没有简单的方法可以做到这一点?

我通过使用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)));}));
}