3

次のような int の 2D ベクトルがあるとします。

1   4   3   0
1   5   6   3
2   0   0   1
6   5   9*  3
3   5   4   2

上記の例では、[2][3]==9 という 2D ベクトルの最大値の位置を見つけるにはどうすればよいでしょうか。答えは 2,3 になります。

std::max_element() を使用できることは知っていますが、イテレータを提供します。

もう1つのポイントは、最初に最大値を見つけてから、 std::find() メソッドを使用してその場所を見つけたくないということです.(効率的ではないため)

実際、単一の反復でこのタスクを実行するカスタム比較関数を定義するにはどうすればよいですか。

どうもありがとう。

4

3 に答える 3

3
int Array[4][4] = { {2, 3, 4, 6}, {1, 98, 8, 22}, {12, 65, 1, 3}, {1, 7, 2, 12}};

struct location
    {
       int x;
       int y;
    };

int main()
{
    int temp = 0;
    location l;

    for(int i = 0; i < 4; i++)
        for(int j = 0; j< 4; j++)
            if(temp < Array[i][j])
            {
                temp = Array[i][j];
                l.x = i+ 1;
                l.y = j+ 1;
            }

            cout<<"Maximum Value is "<<temp<<" And is found at ("<<l.x<<","<<l.y<<")";
system("pause");
}
于 2012-10-12T20:01:43.353 に答える