포스트

STL - 알고리즘 (Algorithm)

STL 알고리즘(Algorithm)은 데이터를 처리하고 조작하는 데 사용되는 함수 템플릿의 집합입니다.

C++ STL의 <algorithm> 헤더 파일에는 다양한 알고리즘 함수들이 포함되어 있습니다.

이 알고리즘들의 일부를 나름대로 카테고리별로 나누어 표로 정리해 봤습니다.

정렬

알고리즘설명사용 예
sort범용 정렬 알고리즘sort(begin, end, pred)
stable_sort안정(순서 유지) 정렬stable_sort(begin, end, pred)
partial_sort부분적 정렬partial_sort(begin, middle, end, pred)
nth_elementn번째 요소를 찾아 정렬nth_element(begin, nth, end, pred)

검색

알고리즘설명사용 예
find값 검색find(begin, end, value)
find_if조건에 맞는 값 검색find_if(begin, end, pred)
find_if_not조건에 맞지 않는 첫 번째 값 검색find_if_not(begin, end, pred)
binary_search이진 검색binary_search(begin, end, value, pred)

변환

알고리즘설명사용 예
transform요소에 함수 적용transform(begin, end, dest, func)
replace값 변경replace(begin, end, old, new)
replace_if조건에 따른 값 변경replace_if(begin, end, pred, new)

순열

알고리즘설명사용 예
next_permutation다음 순열 생성next_permutation(begin, end, pred)
prev_permutation이전 순열 생성prev_permutation(begin, end, pred)

수치 연산

수치 연산 관련 알고리즘은 <numeric> 헤더 파일에 존재하지만, 이터레이터를 사용하기 때문에 알고리즘 부분에 포함해서 작성했습니다.

알고리즘설명사용 예
accumulate요소들의 합 계산accumulate(begin, end, init)
inner_product두 범위의 내적 계산inner_product(begin1, end1, begin2, init)
adjacent_difference인접 요소 간의 차이 계산adjacent_difference(begin, end, result)
partial_sum부분 합 계산partial_sum(begin, end, result)

집합 연산

알고리즘설명사용 예
set_union합집합set_union(begin1, end1, begin2, end2, result)
set_intersection교집합set_intersection(begin1, end1, begin2, end2, result)
set_difference차집합set_difference(begin1, end1, begin2, end2, result)
set_symmetric_difference대칭 차집합set_symmetric_difference(begin1, end1, begin2, end2, result)

기타 알고리즘

기타 알고리즘은 <algorithm> 뿐만이 아니라 <xutility><xmemory>등에 존재하는 것들도 포함되어 있지만, 이들은 <algorithm> 내부 구현에 포함되어 있으므로 <algorithm> 헤더 파일 만으로 사용할 수 있습니다.

알고리즘설명사용 예
for_each각 요소에 함수 적용for_each(begin, end, func)
max_element최대값 요소 찾기max_element(begin, end)
min_element최소값 요소 찾기min_element(begin, end)
count값의 개수 세기count(begin, end, value)
count_if조건을 만족하는 요소 개수 세기count_if(begin, end, pred)
remove값 제거remove(begin, end, value)
remove_if조건에 맞는 요소 제거remove_if(begin, end, pred)
swapswap 은 두 변수의 값을 교환합니다.
이 함수는 <utility> 헤더나, 일부 컨테이너 타입에 대한 특수화된 버전도 있을 수 있습니다.
swap의 정확한 사용 방법은 변수의 타입과 상황에 따라 달라질 수 있으므로,
필요에 따라 IDE의 인텔리센스나 문서를 참조하세요.
IntelliSense 참조

참고

STL - Standard Template Library 란?

STL - 컨테이너 (Container)

STL - 반복자 (Iterator) (with.C++)

이 기사는 저작권자의 CC BY-NC-ND 4.0 라이센스를 따릅니다.