找到最大元素的位置

时间:2010-06-01 21:31:17

标签: c++ algorithm

是否有一个标准函数返回值数组的max元素的位置(而不是值)?

例如:

假设我有一个这样的数组:

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

我想要一个返回3的整数的函数,它告诉我sampleArray[3]是数组中最大的值。

5 个答案:

答案 0 :(得分:99)

在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;
}

答案 1 :(得分:16)

或者,用一行写成:

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

答案 2 :(得分:4)

您可以使用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;
}

答案 3 :(得分:1)

std::max_element需要两个迭代器来分隔一个序列,并返回一个迭代器,指向该序列中的最大元素。您还可以将谓词传递给定义元素排序的函数。

答案 4 :(得分:0)

STL有一个max_elements函数。 以下是一个示例:http://www.cplusplus.com/reference/algorithm/max_element/