# Algorithm 헤더
C++의 algorithm 헤더에는 유용하게 사용할 수 있는 여러 기능들을 효율적으로 프로그래밍해둔 표준 함수들을 내장하고 있는 Standard Template Library입니다. algorithm 헤더에 포함된 다양한 함수들과 사용법에 대해서 설명드리겠습니다.
#1 max, min, minmax
함수 인자로부터 최대, 최소를 찾는 함수들입니다.
함수 인자
- (1, 2) 자료형이 같은 값 또는 변수 2개
- ({1,2,3}) 모든 원소의 자료형이 같은 배열값 1개
함수 결과(반환값)
- 함수 인자 중 가장 큰 값 또는 변수 반환
{
int a = 1, b = 2, c = 3, d = 4, e = 5;
cout << max({ a,b,c,d,e }) << ' ' << min(a, b) << '\n';
pair<int, int> mmx = minmax({ 1,2,3 });
cout << mmx.first << ' ' << mmx.second;
/*
int arr[5] = { 1,2,3,4,5 };
cout << max(arr); // ERROR
*/
// OUTPUT
/*
5 1
1 3
*/
}
max와 min과 minmax는 자료형이 같은 두 개의 인자 또는 모든 원소의 자료형이 같은 하나의 배열값을 입력으로 받습니다. struct, class로 선언된 자료도 사용할 수 있으며 이 경우에는 자료형에 대한 연산자 <에 대해서 정의(연산자 오버라이딩)가 되어있어야 합니다.
함수의 결과로는 max는 인자(원소) 중 가장 큰 값을 가진 변수를 min은 인자(원소) 중 가장 작은 값을 가진 변수를 반환하고 minmax는 pair의 형태로 first에 min의 결과를 second에 max의 결과를 저장하여 반환합니다.
#2 max_element, min_element
자료형의 컨테이너로부터 최대, 최소의 주소를 찾는 함수입니다.
함수 인자
- (arr, arr+n) 컨테이너에서 탐색하려는 시작 주소와 끝 주소
함수 결과(반환값)
- 함수 인자 중 가장 큰 원소의 위치 또는 가장 작은 원소의 위치를 반환
{
int arr[5] = { 3,2,1,4,5 };
cout << *max_element(arr, arr + 5) << ' ' << *min_element(arr, arr + 5);
/* OUTPUT */
/* 5 1 */
}
배열, 벡터 등의 원소의 반복과 원소간 대소 비교가 가능한 컨테이너에 적용할 수 있습니다.
컨테이너에서 가장 큰(작은) 원소의 값과 위치를 알기 위해 사용합니다.
최대(최소)값을 알기 위해서는 포인터 연산자를 사용하면 알 수 있고,
최대(최소)값의 위치를 알기 위해서는 (반환 값 - 시작 주소)의 값을 이용하여 알 수 있습니다.
#3 sort
컨테이너를 정렬하는 함수입니다.
함수 인자
- (arr, arr+n) 컨테이너에서 정렬하려는 시작 주소와 끝 주소
- (arr, arr+n, comp) 1의 인자에 비교 기준을 추가할 수 있다.
함수 결과(반환값)
- 없다. (void 자료형)
bool comp(const int& a, const int& b) {
return a > b;
}
void func() {
int arr[5] = { 3,2,1,4,5 };
sort(arr, arr + 5);
for (int i = 0; i < 5; i++) cout << arr[i] << ' ';
cout << '\n';
sort(arr, arr + 5, comp);
for (int i = 0; i < 5; i++) cout << arr[i] << ' ';
cout << '\n';
/* OUTPUT */
/* 1 2 3 4 5 */
/* 5 4 3 2 1 */
}
LOG
2022. 05. 03 글 생성, 내용 추가
'Study About Computing > 언어_Language' 카테고리의 다른 글
[C++/2] 자료형과 변수 (0) | 2022.04.26 |
---|---|
[C++/ETC] C++ 연산자 우선순위 (0) | 2022.04.19 |
[C++/ETC] C++ 예약어(keywords) (0) | 2022.04.17 |
[C++/0] 언어에 대해서, C++의 특징 (0) | 2022.04.05 |
[C++/STL] vector container (0) | 2020.03.23 |
댓글