본문 바로가기
Study About Computing/언어_Language

[C++/ETC] algorithm

by gamgok 2022. 5. 3.

# Algorithm 헤더

C++의 algorithm 헤더에는 유용하게 사용할 수 있는 여러 기능들을 효율적으로 프로그래밍해둔 표준 함수들을 내장하고 있는 Standard Template Library입니다. algorithm 헤더에 포함된 다양한 함수들과 사용법에 대해서 설명드리겠습니다.

 


#1 max, min, minmax

함수 인자로부터 최대, 최소를 찾는 함수들입니다.

 

함수 인자

  1. (1, 2) 자료형이 같은 값 또는 변수 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
	*/
}

 

maxminminmax자료형이 같은 두 개의 인자 또는 모든 원소의 자료형이 같은 하나의 배열을 입력으로 받습니다. struct, class로 선언된 자료도 사용할 수 있으며 이 경우에는 자료형에 대한 연산자 <에 대해서 정의(연산자 오버라이딩)가 되어있어야 합니다.

 

함수의 결과로는 max는 인자(원소) 중 가장 큰 값을 가진 변수를 min은 인자(원소) 중 가장 작은 값을 가진 변수를 반환하고 minmax는 pair의 형태로 first에 min의 결과를 second에 max의 결과를 저장하여 반환합니다.

 


#2 max_element, min_element

자료형의 컨테이너로부터 최대, 최소의 주소를 찾는 함수입니다.

함수 인자

  1. (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

컨테이너를 정렬하는 함수입니다. 

함수 인자

  1. (arr, arr+n) 컨테이너에서 정렬하려는 시작 주소와 끝 주소
  2. (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 글 생성, 내용 추가

댓글