C++에서 벡터의 최대값과 최소값

Shikha Chaudhary 2023년10월12일
  1. for 루프를 사용하여 C++의 벡터에서 최대값과 최소값 찾기
  2. std::max_elementstd::min_element 함수를 사용하여 C++의 벡터에서 최대값 및 최소값 가져오기
  3. std::minmax_element 함수를 사용하여 C++의 벡터에서 최대값 및 최소값 가져오기
C++에서 벡터의 최대값과 최소값

C++에서 벡터는 자동으로 크기를 조정할 수 있는 동적 배열에 불과합니다. 벡터는 요소의 컨테이너이므로 벡터에 포함된 최대값 또는 최소값을 찾고 싶을 수 있습니다.

벡터를 처리하는 동안 배열에서 최대 또는 최소 요소를 검색할 때와 마찬가지로 루프를 사용할 수 있습니다. 이 기사에서는 동일한 작업을 수행하는 데 도움이 되는 몇 가지 라이브러리 기능도 살펴봅니다.

for 루프를 사용하여 C++의 벡터에서 최대값과 최소값 찾기

아래 예에는 두 개의 함수 템플릿이 있습니다. maxElement는 최대 요소를 찾고 minElement는 최소 요소를 찾습니다. main() 블록 내에서 marks 벡터를 정의하고 템플릿 함수에 전달합니다.

minElement 함수와 maxElement 함수에서 반환된 값은 각각 min,max 변수에 저장되고 이 변수를 화면에 인쇄합니다. maxElement 함수에는 매크로 INT_MIN 값이 포함된 max 변수가 있으며 for 루프를 사용하여 모든 벡터 요소를 살펴보고 max에 저장된 값과 비교합니다.

저장된 값보다 큰 요소를 찾은 경우 max 값을 업데이트하고 벡터의 모든 요소에 대해 수행합니다. maxElement 함수는 max 변수의 마지막 업데이트 값을 반환하며 이것이 marks 벡터에서 최대값을 얻는 방법입니다.

minElement 함수도 같은 방식으로 작동하며 벡터의 최소값을 반환합니다. 루프를 사용하여 C++의 벡터에서 최대값과 최소값을 찾는 예를 들어 보겠습니다.

암호:

#include <climits>
#include <iostream>
#include <vector>

using namespace std;

template <typename D>
int maxElement(vector<D> const &v) {
  int max = INT_MIN;
  for (const D &i : v) {
    if (max < i) {
      max = i;
    }
  }
  return max;
}

template <typename D>
int minElement(vector<D> const &v) {
  int min = INT_MAX;
  for (const D &i : v) {
    if (min > i) {
      min = i;
    }
  }
  return min;
}

int main() {
  vector<int> marks = {23, 45, 65, 23, 43, 67, 87, 12};

  int min = minElement(marks);
  int max = maxElement(marks);

  cout << "The minimum marks are: " << min << endl;
  cout << "The maximum marks are: " << max << endl;

  return 0;
}

출력:

The minimum marks are: 12
The maximum marks are: 87

이것은 C++의 벡터에서 최대 및 최소 요소를 찾는 쉬운 방법입니다.

std::max_elementstd::min_element 함수를 사용하여 C++의 벡터에서 최대값 및 최소값 가져오기

C++의 벡터에서 최대값과 최소값을 찾으려면 std::max_elementstd::min_element 함수를 각각 사용할 수 있습니다.

max_element 함수는 가장 큰 값을 가리키는 반복자를 반환하고 min_element 함수는 (start, end) 범위에서 가장 작은 값을 가리키는 반복자를 반환합니다.

통사론:

*min_element(start_index, end_index);
*max_element(start_index, end_index);

다음 예에서는 먼저 벡터의 시작과 끝, marks에 대한 포인터를 두 함수 max_elementmin_element에 인수로 전달합니다. max_elementmin_element 함수에서 반환된 값은 각각 maxmin 변수에 저장됩니다.

암호:

#include <algorithm>
#include <iostream>
#include <vector>

using namespace std;

int main() {
  vector<int> marks = {23, 34, 56, 75, 23, 44, 58};

  int max = *max_element(marks.begin(), marks.end());
  int min = *min_element(marks.begin(), marks.end());

  cout << "The minimum marks are: " << min << endl;
  cout << "The maximum marks are: " << max << endl;

  return 0;
}

출력:

The minimum marks are: 23
The maximum marks are: 75

이 두 함수는 비교를 수행하기 위해 미리 정의된 함수의 도움으로 사용할 수 있습니다. 이러한 기능에 대한 자세한 내용은 여기를 참조하십시오.

std::minmax_element 함수를 사용하여 C++의 벡터에서 최대값 및 최소값 가져오기

std::minmax_element는 위의 두 함수를 압축한 버전과 비슷합니다. 별도로 사용하는 대신 std::minmax_element 함수를 사용하여 한 쌍의 반복자를 반환된 값으로 가져올 수 있습니다.

이 함수는 첫 번째 값이 최소 요소를 가리키고 두 번째 값이 최대 요소를 가리키는 한 쌍의 반복자를 반환합니다. 예를 들어, 우리는 벡터의 첫 번째와 마지막 색인 marks를 함수 minmax_element에 전달하고, 이 함수가 반환하는 값은 auto 키워드로 정의된 변수 res에 저장된다.

그런 다음 dot(.) 연산자를 사용하여 반복자 쌍에서 최소값과 최대값을 분리하고 변수 minmax에 저장합니다. minmax_element 함수를 사용하여 C++의 벡터에서 최대값과 최소값을 얻습니다.

암호:

#include <algorithm>
#include <iostream>
#include <vector>

using namespace std;

int main() {
  vector<int> marks = {34, 23, 56, 75, 23, 67, 88, 12};

  auto res = minmax_element(marks.begin(), marks.end());
  int min = *res.first;
  int max = *res.second;

  cout << "The minimum marks are: " << min << endl;
  cout << "The maximum marks are: " << max << endl;

  return 0;
}

출력:

The minimum marks are: 12
The maximum marks are: 88

아래는 벡터의 최대값과 최소값 인덱스도 반환하는 위 코드의 수정된 버전입니다. 이것은 첫 번째 요소와 마지막 요소 사이의 요소 수를 계산하는 std::distance 함수를 사용하여 수행됩니다.

암호:

#include <algorithm>
#include <iostream>
#include <vector>

using namespace std;

int main() {
  vector<int> marks = {34, 23, 56, 75, 23, 67, 88, 12};

  auto res = minmax_element(marks.begin(), marks.end());
  int min = *res.first;
  int max = *res.second;

  int indx_max = distance(marks.begin(), res.first);
  int indx_min = distance(marks.begin(), res.second);

  cout << "The minimum marks are: " << min << endl;
  cout << "Found at index: " << indx_min << endl;

  cout << "The maximum marks are: " << max << endl;
  cout << "Found at index: " << indx_max << endl;

  return 0;
}

출력:

The minimum marks are: 12
Found at index: 6
The maximum marks are: 88
Found at index: 7

이 기능에 대한 자세한 내용은 이 문서를 확인하십시오. 이것은 C++의 벡터에서 최대값과 최소값을 얻는 방법에 관한 것입니다.

관련 문장 - C++ Vector