web-dev-qa-db-ja.com

最大要素の位置を見つける

値の配列の最大要素の位置(値ではない)を返す標準関数はありますか?

例えば:

次のような配列があるとします:

sampleArray = [1, 5, 2, 9, 4, 6, 3]

3の整数を返し、sampleArray[3]は、配列内の最大値です。

62
Faken

STLでは、 std::max_element は、イテレータを提供します( std::distance 、本当に必要な場合)。

int main(int argc, char** argv) {
  int A[4] = {0, 2, 3, 1};
  const int N = sizeof(A) / sizeof(int);

  cout << "Index of max element: "
       << distance(A, max_element(A, A + N))
       << endl;

  return 0;
}
104
Stephen

または、1行で記述します。

std::cout << std::distance(sampleArray.begin(), std::max_element(sampleArray.begin(), sampleArray.end()))
18
Alex

max_element()関数を使用して、max要素の位置を見つけることができます。

int main()
{
    int num, arr[10];
    int x, y, a, b;

    cin >> num;

    for (int i = 0; i < num; i++)
    {
        cin >> arr[i];
    }

    cout << "Max element Index: " << max_element(arr, arr + num) - arr;

    return 0;
}
4
rashedcs

std::max_element は、シーケンスを区切る2つのイテレータを取り、そのシーケンスの最大要素を指すイテレータを返します。さらに、要素の順序を定義する関数に述語を渡すことができます。

1
avakar

STLにはmax_elements関数があります。以下に例を示します: http://www.cplusplus.com/reference/algorithm/max_element/

0
Uri