Namespaces
Variants

Algorithms library

From cppreference.net
Algorithm library
Constrained algorithms and algorithms on ranges (C++20)
Constrained algorithms, e.g. ranges::copy , ranges::sort , ...
Execution policies (C++17)
Non-modifying sequence operations
Batch operations
(C++17)
Search operations
Modifying sequence operations
Copy operations
(C++11)
(C++11)
Swap operations
Transformation operations
Generation operations
Removing operations
Order-changing operations
(until C++17) (C++11)
(C++20) (C++20)
Sampling operations
(C++17)

Sorting and related operations
Partitioning operations
Sorting operations
Binary search operations
(on partitioned ranges)
Set operations (on sorted ranges)
Merge operations (on sorted ranges)
Heap operations
Minimum/maximum operations
Lexicographical comparison operations
Permutation operations
C library
Numeric operations
Operations on uninitialized memory

알고리즘 라이브러리는 요소 범위에서 동작하는 다양한 목적(예: 검색, 정렬, 카운팅, 조작)의 함수들을 정의합니다. 범위 [ first , last ) 로 정의되며, 여기서 last 는 검사하거나 수정할 마지막 요소의 다음 요소를 가리킵니다.

목차

제약 알고리즘 (C++20부터)

C++20은 제약 조건이 지정된 대부분의 알고리즘을 std::ranges 네임스페이스에서 제공합니다. 이러한 알고리즘에서 범위 반복자 - 센티넬 쌍으로 지정하거나 단일 range 인수로 지정할 수 있으며, 프로젝션과 멤버 함수 포인터 호출 가능 객체가 지원됩니다. 추가로, 대부분의 알고리즘의 반환 타입 이 알고리즘 실행 중 계산된 모든 잠재적으로 유용한 정보를 반환하도록 변경되었습니다.

std::vector<int> v{7, 1, 4, 0, -1};
std::ranges::sort(v); // 제약 알고리즘

실행 정책 (C++17부터)

대부분의 알고리즘은 실행 정책을 수용하는 오버로드를 가지고 있습니다. 표준 라이브러리 알고리즘은 여러 실행 정책 을 지원하며, 라이브러리는 해당 실행 정책 타입과 객체를 제공합니다. 사용자는 해당 타입의 실행 정책 객체 로 병렬 알고리즘을 호출하여 정적으로 실행 정책을 선택할 수 있습니다.

표준 라이브러리 구현체들은(사용자들은 아님) 확장 기능으로 추가 실행 정책들을 정의할 수 있습니다. 구현에서 정의된 타입의 실행 정책 객체로 호출된 병렬 알고리즘들의 의미론은 구현에서 정의됩니다.

병렬 버전 알고리즘들( std::for_each std::for_each_n 제외)은 범위의 요소들을 임의로 복사할 수 있으며, 이는 std:: is_trivially_copy_constructible_v < T > std:: is_trivially_destructible_v < T > 가 모두 true 인 경우에 한합니다. 여기서 T 는 요소의 타입입니다.

헤더에 정의됨 <execution>
네임스페이스에 정의됨 std::execution
실행 정책 타입
(클래스)
(C++17) (C++17) (C++17) (C++20)
전역 실행 정책 객체
(상수)
네임스페이스에 정의됨 std
클래스가 실행 정책을 나타내는지 테스트
(클래스 템플릿)
기능 테스트 매크로 표준 기능
__cpp_lib_parallel_algorithm 201603L (C++17) 병렬 알고리즘
__cpp_lib_execution 201603L (C++17) 실행 정책
201902L (C++20) std::execution::unsequenced_policy

비수정 시퀀스 연산

배치 작업

헤더 파일에 정의됨 <algorithm>
범위의 요소들에 단항 함수 객체 를 적용함
(함수 템플릿)
범위의 요소들에 단항 함수 객체 를 적용함
(알고리즘 함수 객체)
(C++17)
시퀀스의 처음 N개 요소에 함수 객체를 적용함
(함수 템플릿)
시퀀스의 처음 N개 요소에 함수 객체를 적용함
(알고리즘 함수 객체)

검색 연산

헤더에 정의됨 <algorithm>
(C++11) (C++11) (C++11)
범위 내 모든 요소에 대해 조건자가 true 인지, 일부 요소에 대해 true인지, 또는 어떤 요소에도 true가 아닌지 검사합니다
(함수 템플릿)
범위 내 모든 요소, 일부 요소, 또는 어떤 요소에도 대해 조건자가 true 인지 확인합니다
(알고리즘 함수 객체)
범위가 주어진 요소나 하위 범위를 포함하는지 확인합니다
(알고리즘 함수 객체)
특정 기준을 만족하는 첫 번째 요소를 찾습니다
(함수 템플릿)
특정 기준을 만족하는 첫 번째 요소를 찾습니다
(알고리즘 함수 객체)
특정 조건을 만족하는 마지막 요소를 찾습니다
(알고리즘 함수 객체)
특정 범위에서 마지막 원소 시퀀스를 찾습니다
(function template)
특정 범위에서 마지막 요소 시퀀스를 찾음
(알고리즘 함수 객체)
요소 집합 중 하나를 검색합니다
(function template)
요소 집합 중 하나를 검색합니다
(알고리즘 함수 객체)
동일한(또는 주어진 조건자를 만족하는) 첫 두 개의 인접한 항목을 찾습니다
(function template)
동일한(또는 주어진 조건자를 만족하는) 첫 두 개의 인접 항목을 찾음
(알고리즘 함수 객체)
특정 조건을 만족하는 요소의 개수를 반환합니다
(함수 템플릿)
특정 조건을 만족하는 요소의 개수를 반환합니다
(알고리즘 함수 객체)
두 범위가 처음으로 다른 위치를 찾습니다
(function template)
두 범위가 처음으로 다른 위치를 찾음
(알고리즘 함수 객체)
두 요소 집합이 동일한지 판별합니다
(function template)
두 요소 집합이 동일한지 확인합니다
(알고리즘 함수 객체)
요소 범위의 첫 번째 발생을 검색합니다
(function template)
요소 범위의 첫 번째 발생을 검색합니다
(알고리즘 함수 객체)
범위에서 특정 요소가 연속적으로 지정된 횟수만큼 나타나는 첫 번째 위치를 검색합니다
(함수 템플릿)
범위에서 특정 원소가 연속적으로 지정된 횟수만큼 나타나는 첫 번째 위치를 검색합니다
(알고리즘 함수 객체)
범위가 다른 범위로 시작하는지 확인합니다
(알고리즘 함수 객체)
범위가 다른 범위로 끝나는지 확인합니다
(알고리즘 함수 객체)

폴드 연산 (C++23부터)

헤더 파일에 정의됨 <algorithm>
요소 범위를 왼쪽으로 폴딩
(알고리즘 함수 객체)
첫 번째 요소를 초기값으로 사용하여 요소 범위를 왼쪽으로 폴딩
(알고리즘 함수 객체)
요소 범위를 오른쪽으로 폴딩
(알고리즘 함수 객체)
마지막 요소를 초기값으로 사용하여 요소 범위를 오른쪽으로 폴딩
(알고리즘 함수 객체)
요소 범위를 왼쪽으로 폴딩하고 pair (반복자, 값)을 반환
(알고리즘 함수 객체)
첫 번째 요소를 초기값으로 사용하여 요소 범위를 왼쪽으로 폴딩하고 pair (반복자, optional )을 반환
(알고리즘 함수 객체)

시퀀스 수정 연산

복사 연산

헤더 파일에 정의됨 <algorithm>
요소 범위를 새로운 위치로 복사합니다
(함수 템플릿)
요소 범위를 새로운 위치로 복사합니다
(알고리즘 함수 객체)
(C++11)
지정된 개수의 요소를 새로운 위치로 복사합니다
(함수 템플릿)
지정된 개수의 요소를 새로운 위치로 복사합니다
(알고리즘 함수 객체)
요소 범위를 역순으로 복사합니다
(함수 템플릿)
요소 범위를 역순으로 복사합니다
(알고리즘 함수 객체)
(C++11)
요소 범위를 새로운 위치로 이동합니다
(함수 템플릿)
요소 범위를 새로운 위치로 이동합니다
(알고리즘 함수 객체)
요소 범위를 역순으로 새로운 위치로 이동합니다
(함수 템플릿)
요소 범위를 역순으로 새로운 위치로 이동합니다
(알고리즘 함수 객체)

스왑 연산

정의된 헤더 <algorithm> (C++11까지)
정의된 헤더 <utility> (C++11부터)
정의된 헤더 <string_view>
두 객체의 값을 교환
(함수 템플릿)
정의된 헤더 <algorithm>
두 요소 범위를 교환
(함수 템플릿)
두 요소 범위를 교환
(알고리즘 함수 객체)
두 반복자가 가리키는 요소를 교환
(함수 템플릿)

변환 연산

헤더 파일에 정의됨 <algorithm>
요소 범위에 함수를 적용하여 결과를 대상 범위에 저장함
(함수 템플릿)
요소 범위에 함수를 적용함
(알고리즘 함수 객체)
특정 조건을 만족하는 모든 값을 다른 값으로 대체함
(함수 템플릿)
특정 조건을 만족하는 모든 값을 다른 값으로 대체함
(알고리즘 함수 객체)
범위를 복사하며 특정 조건을 만족하는 요소를 다른 값으로 대체함
(함수 템플릿)
범위를 복사하며 특정 조건을 만족하는 요소를 다른 값으로 대체함
(알고리즘 함수 객체)

생성 연산

헤더 파일에 정의됨 <algorithm>
주어진 값을 범위의 모든 요소에 복사 할당
(함수 템플릿)
요소 범위에 특정 값을 할당
(알고리즘 함수 객체)
주어진 값을 범위 내 N개 요소에 복사 할당
(함수 템플릿)
여러 요소에 값을 할당
(알고리즘 함수 객체)
연속적인 함수 호출 결과를 범위의 모든 요소에 할당
(함수 템플릿)
함수 결과를 범위에 저장
(알고리즘 함수 객체)
연속적인 함수 호출 결과를 범위 내 N개 요소에 할당
(함수 템플릿)
함수를 N번 적용한 결과를 저장
(알고리즘 함수 객체)

제거 연산

헤더 파일에 정의됨 <algorithm>
특정 조건을 만족하는 요소들을 제거함
(함수 템플릿)
특정 조건을 만족하는 요소들을 제거함
(알고리즘 함수 객체)
특정 조건을 만족하는 요소들을 생략하고 범위의 요소들을 복사함
(함수 템플릿)
특정 조건을 만족하는 요소들을 생략하고 범위의 요소들을 복사함
(알고리즘 함수 객체)
범위에서 연속된 중복 요소들을 제거함
(함수 템플릿)
범위에서 연속된 중복 요소들을 제거함
(알고리즘 함수 객체)
연속된 중복 요소가 없는 일부 범위 요소들의 사본을 생성함
(함수 템플릿)
연속된 중복 요소가 없는 일부 범위 요소들의 사본을 생성함
(알고리즘 함수 객체)

순서 변경 연산

헤더에 정의됨 <algorithm>
범위 내 요소들의 순서를 뒤집음
(함수 템플릿)
범위 내 요소들의 순서를 뒤집음
(알고리즘 함수 객체)
뒤집힌 범위의 복사본을 생성함
(함수 템플릿)
뒤집힌 범위의 복사본을 생성함
(알고리즘 함수 객체)
범위 내 요소들의 순서를 회전시킴
(함수 템플릿)
범위 내 요소들의 순서를 회전시킴
(알고리즘 함수 객체)
요소 범위를 복사하고 회전시킴
(함수 템플릿)
요소 범위를 복사하고 회전시킴
(알고리즘 함수 객체)
범위 내 요소들을 이동시킴
(함수 템플릿)
범위 내 요소들을 이동시킴
(알고리즘 함수 객체)
(until C++17) (C++11)
범위 내 요소들을 무작위로 재정렬함
(함수 템플릿)
범위 내 요소들을 무작위로 재정렬함
(알고리즘 함수 객체)

샘플링 연산

헤더 파일에 정의됨 <algorithm>
(C++17)
시퀀스에서 N개의 무작위 요소를 선택함
(함수 템플릿)
시퀀스에서 N개의 무작위 요소를 선택함
(알고리즘 함수 객체)

정렬 및 관련 연산

요구사항

일부 알고리즘은 인수로 표현된 시퀀스가 "정렬됨" 또는 "분할됨" 상태를 요구합니다. 이 요구사항이 충족되지 않을 경우 동작은 정의되지 않습니다.

시퀀스는 비교자 comp 에 대해 정렬되어 있다 는 것은 시퀀스를 가리키는 모든 반복자 iter 와 음이 아닌 정수 n 에 대해 iter + n [1] 가 시퀀스의 원소를 가리키는 유효한 반복자 일 때, comp ( * ( iter + n ) , * iter ) == false [1] 인 경우를 말한다.

(C++20 이전)

시퀀스는 비교자 comp 와 투영 proj 에 대해 comp proj 에 대해 정렬되어 있다 는 것은 시퀀스를 가리키는 모든 반복자 iter 와 음이 아닌 정수 n 에 대해 iter + n [1] 가 시퀀스의 원소를 가리키는 유효한 반복자일 때, bool ( std:: invoke ( comp, std:: invoke ( proj, * ( iter + n ) ) ,
std:: invoke ( proj, * iter ) ) )
[1] false 인 경우를 말한다.

시퀀스가 비교자 comp 에 대해 정렬되어 있다 는 것은 시퀀스가 comp std:: identity { } (항등 투영)에 대해 정렬되어 있는 경우를 말한다.

(C++20 이후)

시퀀스 [ start , finish ) 표현식 f ( e ) 에 대해 분할되었다 는 것은, 모든 i 에 대해 [ 0 , std:: distance ( start, finish ) ) 범위 내에서 f ( * ( start + i ) ) [1] true 인 것이 i < n 인 경우에만 성립하는 정수 n 이 존재함을 의미합니다.

  1. 1.0 1.1 1.2 1.3 1.4 iter + n 는 단순히 " iter n 번 증가된 결과"를 의미하며, iter 가 임의 접근 반복자인지 여부와 관계없이 적용됩니다.

파티셔닝 연산

헤더 파일에 정의됨 <algorithm>
주어진 조건자로 범위가 분할되었는지 확인
(함수 템플릿)
주어진 조건자로 범위가 분할되었는지 확인
(알고리즘 함수 객체)
요소들의 범위를 두 그룹으로 분할
(함수 템플릿)
요소들의 범위를 두 그룹으로 분할
(알고리즘 함수 객체)
요소들을 두 그룹으로 나누어 범위를 복사
(함수 템플릿)
요소들을 두 그룹으로 나누어 범위를 복사
(알고리즘 함수 객체)
요소들의 상대적 순서를 유지하며 두 그룹으로 분할
(함수 템플릿)
요소들의 상대적 순서를 유지하며 두 그룹으로 분할
(알고리즘 함수 객체)
분할된 범위의 분할 지점을 찾음
(함수 템플릿)
분할된 범위의 분할 지점을 찾음
(알고리즘 함수 객체)

정렬 연산

헤더 파일에 정의됨 <algorithm>
범위를 오름차순으로 정렬
(함수 템플릿)
범위를 오름차순으로 정렬
(알고리즘 함수 객체)
동일한 요소들 사이의 순서를 유지하며 범위 정렬
(함수 템플릿)
동일한 요소들 사이의 순서를 유지하며 범위 정렬
(알고리즘 함수 객체)
범위의 처음 N개 요소 정렬
(함수 템플릿)
범위의 처음 N개 요소 정렬
(알고리즘 함수 객체)
범위의 요소를 복사하고 부분적으로 정렬
(함수 템플릿)
범위의 요소를 복사하고 부분적으로 정렬
(알고리즘 함수 객체)
(C++11)
범위가 오름차순으로 정렬되었는지 확인
(함수 템플릿)
범위가 오름차순으로 정렬되었는지 확인
(알고리즘 함수 객체)
가장 큰 정렬된 부분 범위를 찾음
(함수 템플릿)
가장 큰 정렬된 부분 범위를 찾음
(알고리즘 함수 객체)
주어진 요소로 분할되도록 범위를 부분 정렬
(함수 템플릿)
주어진 요소로 분할되도록 범위를 부분 정렬
(알고리즘 함수 객체)

이진 검색 연산 (분할된 범위에서)

정의된 헤더 <algorithm>
주어진 값보다 작지 않은 첫 번째 요소에 대한 반복자를 반환
(함수 템플릿)
주어진 값보다 작지 않은 첫 번째 요소에 대한 반복자를 반환
(알고리즘 함수 객체)
특정 값보다 첫 번째 요소에 대한 반복자를 반환
(함수 템플릿)
특정 값보다 첫 번째 요소에 대한 반복자를 반환
(알고리즘 함수 객체)
특정 키와 일치하는 요소들의 범위를 반환
(함수 템플릿)
특정 키와 일치하는 요소들의 범위를 반환
(알고리즘 함수 객체)
부분적으로 정렬된 범위에서 요소가 존재하는지 확인
(함수 템플릿)
부분적으로 정렬된 범위에서 요소가 존재하는지 확인
(알고리즘 함수 객체)

집합 연산 (정렬된 범위에서)

헤더 파일에 정의됨 <algorithm>
한 시퀀스가 다른 시퀀스의 부분 시퀀스이면 true 를 반환
(함수 템플릿)
한 시퀀스가 다른 시퀀스의 부분 시퀀스이면 true 를 반환
(알고리즘 함수 객체)
두 집합의 합집합을 계산
(함수 템플릿)
두 집합의 합집합을 계산
(알고리즘 함수 객체)
두 집합의 교집합을 계산
(함수 템플릿)
두 집합의 교집합을 계산
(알고리즘 함수 객체)
두 집합의 차집합을 계산
(함수 템플릿)
두 집합의 차집합을 계산
(알고리즘 함수 객체)
두 집합의 대칭차를 계산
(함수 템플릿)
두 집합의 대칭차를 계산
(알고리즘 함수 객체)

병합 연산 (정렬된 범위에서)

헤더 파일에 정의됨 <algorithm>
두 개의 정렬된 범위를 병합
(함수 템플릿)
두 개의 정렬된 범위를 병합
(알고리즘 함수 객체)
두 개의 정렬된 범위를 제자리에서 병합
(함수 템플릿)
두 개의 정렬된 범위를 제자리에서 병합
(알고리즘 함수 객체)

힙 연산

랜덤 액세스 범위 [ first , last ) 는 비교자 comp 에 대한 입니다, 만약 bool ( comp ( first [ ( i - 1 ) / 2 ] , first [ i ] ) ) 가 모든 정수 i 에 대해 ( 0 , last - first ) 범위에서 false 인 경우.

(C++20 이전)

랜덤 액세스 범위 [ first , last ) 는 비교자 comp 와 투영 proj 에 대한 입니다, 만약 bool ( std:: invoke ( comp, std:: invoke ( proj, first [ ( i - 1 ) / 2 ] ) ,
std:: invoke ( proj, first [ i ] ) )
가 모든 정수 i 에 대해 ( 0 , last - first ) 범위에서 false 인 경우.

랜덤 액세스 범위 [ first , last ) 는 비교자 comp 에 대한 입니다, 만약 해당 범위가 comp std:: identity { } (항등 투영)에 대한 힙인 경우.

(C++20 이후)

힙은 std::make_heap ranges::make_heap (C++20부터) 을 사용하여 생성할 수 있습니다.

힙의 더 많은 속성에 대해서는 max heap 을 참조하십시오.


헤더 파일에 정의됨 <algorithm>
최대 힙에 요소를 추가함
(함수 템플릿)
최대 힙에 요소를 추가함
(알고리즘 함수 객체)
최대 힙에서 가장 큰 요소를 제거함
(함수 템플릿)
최대 힙에서 가장 큰 요소를 제거함
(알고리즘 함수 객체)
요소 범위로부터 최대 힙을 생성함
(함수 템플릿)
요소 범위로부터 최대 힙을 생성함
(알고리즘 함수 객체)
최대 힙을 오름차순으로 정렬된 요소 범위로 변환함
(함수 템플릿)
최대 힙을 오름차순으로 정렬된 요소 범위로 변환함
(알고리즘 함수 객체)
(C++11)
주어진 범위가 최대 힙인지 확인함
(함수 템플릿)
주어진 범위가 최대 힙인지 확인함
(알고리즘 함수 객체)
최대 힙인 가장 큰 부분 범위를 찾음
(함수 템플릿)
최대 힙인 가장 큰 부분 범위를 찾음
(알고리즘 함수 객체)

최소/최대 연산

헤더 파일에 정의됨 <algorithm>
주어진 값 중 더 큰 값을 반환
(함수 템플릿)
주어진 값 중 더 큰 값을 반환
(알고리즘 함수 객체)
범위 내 가장 큰 요소를 반환
(함수 템플릿)
범위 내 가장 큰 요소를 반환
(알고리즘 함수 객체)
주어진 값 중 더 작은 값을 반환
(함수 템플릿)
주어진 값 중 더 작은 값을 반환
(알고리즘 함수 객체)
범위 내 가장 작은 요소를 반환
(함수 템플릿)
범위 내 가장 작은 요소를 반환
(알고리즘 함수 객체)
(C++11)
두 요소 중 더 작은 값과 더 큰 값을 반환
(함수 템플릿)
두 요소 중 더 작은 값과 더 큰 값을 반환
(알고리즘 함수 객체)
범위 내 가장 작은 요소와 가장 큰 요소를 반환
(함수 템플릿)
범위 내 가장 작은 요소와 가장 큰 요소를 반환
(알고리즘 함수 객체)
(C++17)
값을 한 쌍의 경계 값 사이로 고정
(함수 템플릿)
값을 한 쌍의 경계 값 사이로 고정
(알고리즘 함수 객체)

사전식 비교 연산

헤더 파일에 정의됨 <algorithm>
한 범위가 다른 범위보다 사전순으로 작으면 true 를 반환함
(함수 템플릿)
한 범위가 다른 범위보다 사전순으로 작으면 true 를 반환함
(알고리즘 함수 객체)
3-way 비교를 사용하여 두 범위를 비교함
(함수 템플릿)

순열 연산

헤더 파일에 정의됨 <algorithm>
원소 범위의 다음으로 큰 사전식 순열을 생성함
(함수 템플릿)
원소 범위의 다음으로 큰 사전식 순열을 생성함
(알고리즘 함수 객체)
원소 범위의 다음으로 작은 사전식 순열을 생성함
(함수 템플릿)
원소 범위의 다음으로 작은 사전식 순열을 생성함
(알고리즘 함수 객체)
한 시퀀스가 다른 시퀀스의 순열인지 결정함
(함수 템플릿)
한 시퀀스가 다른 시퀀스의 순열인지 결정함
(알고리즘 함수 객체)

수치 연산

헤더에 정의됨 <numeric>
(C++11)
범위를 시작 값의 연속적인 증가값으로 채움
(함수 템플릿)
범위를 시작 값의 연속적인 증가값으로 채움
(알고리즘 함수 객체)
요소 범위의 합계를 계산하거나 접음
(함수 템플릿)
두 요소 범위의 내적을 계산함
(함수 템플릿)
범위 내 인접 요소 간의 차이를 계산함
(함수 템플릿)
요소 범위의 부분 합을 계산함
(함수 템플릿)
(C++17)
std::accumulate 와 유사하지만 순서가 보장되지 않음
(함수 템플릿)
std::partial_sum 와 유사하지만, i 번째 입력 요소를 i 번째 합계에서 제외함
(함수 템플릿)
std::partial_sum 와 유사하지만, i 번째 입력 요소를 i 번째 합계에 포함함
(함수 템플릿)
호출 가능 객체를 적용한 후 순서가 보장되지 않은 축약을 수행함
(함수 템플릿)
호출 가능 객체를 적용한 후 배타적 스캔을 계산함
(함수 템플릿)
호출 가능 객체를 적용한 후 포함적 스캔을 계산함
(함수 템플릿)

초기화되지 않은 메모리 연산

헤더 파일에 정의됨 <memory>
객체 범위를 초기화되지 않은 메모리 영역으로 복사합니다
(함수 템플릿)
객체 범위를 초기화되지 않은 메모리 영역에 복사합니다
(알고리즘 함수 객체)
객체들을 지정된 개수만큼 초기화되지 않은 메모리 영역에 복사합니다
(함수 템플릿)
지정된 개수의 객체를 초기화되지 않은 메모리 영역에 복사합니다
(알고리즘 함수 객체)
범위로 정의된 초기화되지 않은 메모리 영역에 객체를 복사합니다
(함수 템플릿)
범위로 정의된 초기화되지 않은 메모리 영역에 객체를 복사합니다
(알고리즘 함수 객체)
시작 위치와 개수로 정의된 초기화되지 않은 메모리 영역에 객체를 복사합니다
(함수 템플릿)
시작점과 개수로 정의된 초기화되지 않은 메모리 영역에 객체를 복사합니다
(알고리즘 함수 객체)
객체 범위를 초기화되지 않은 메모리 영역으로 이동
(function template)
객체 범위를 초기화되지 않은 메모리 영역으로 이동
(알고리즘 함수 객체)
여러 객체를 초기화되지 않은 메모리 영역으로 이동
(함수 템플릿)
지정된 개수의 객체를 초기화되지 않은 메모리 영역으로 이동
(알고리즘 함수 객체)
초기화되지 않은 메모리 영역에서 기본 초기화 를 통해 객체를 생성합니다. 범위로 정의된 영역에 적용됩니다.
(함수 템플릿)
범위로 정의된 초기화되지 않은 메모리 영역에서 기본 초기화 를 통해 객체를 생성함
(알고리즘 함수 객체)
시작점과 개수로 정의된 초기화되지 않은 메모리 영역에서 기본 초기화 를 통해 객체를 생성합니다
(함수 템플릿)
시작점과 개수로 정의된 초기화되지 않은 메모리 영역에서 기본 초기화 를 통해 객체를 생성함
(알고리즘 함수 객체)
초기화되지 않은 메모리 영역에서 범위로 정의된 객체들을 값 초기화 를 통해 생성합니다
(함수 템플릿)
초기화되지 않은 메모리 영역에서 값 초기화 를 통해 객체를 생성하며, 범위로 정의됨
(알고리즘 함수 객체)
시작점과 개수로 정의된 초기화되지 않은 메모리 영역에 값 초기화 를 통해 객체를 생성합니다
(함수 템플릿)
시작점과 개수로 정의된 초기화되지 않은 메모리 영역에 값 초기화 를 통해 객체를 생성함
(알고리즘 함수 객체)
(C++17)
객체 범위를 파괴합니다
(함수 템플릿)
객체 범위를 파괴함
(알고리즘 함수 객체)
(C++17)
범위 내의 여러 객체를 파괴합니다
(함수 템플릿)
범위 내의 여러 객체를 파괴함
(알고리즘 함수 객체)
(C++17)
주어진 주소의 객체를 파괴합니다
(함수 템플릿)
주어진 주소의 객체를 파괴함
(알고리즘 함수 객체)
주어진 주소에 객체를 생성합니다
(함수 템플릿)
주어진 주소에 객체를 생성함
(알고리즘 함수 객체)

난수 생성 (since C++26)

헤더 파일에 정의됨 <random>
범위를 균일 난수 비트 생성기로부터 생성된 난수로 채움
(알고리즘 함수 객체)

참고 사항

기능 테스트 매크로 표준 기능
__cpp_lib_algorithm_iterator_requirements 202207L (C++23) 비-레인지 알고리즘에 대한 입력으로서의 레인지 반복자
__cpp_lib_clamp 201603L (C++17) std::clamp
__cpp_lib_constexpr_algorithms 201806L (C++20) 알고리즘에 대한 constexpr
202306L (C++26) Constexpr 안정 정렬
__cpp_lib_algorithm_default_value_type 202403L (C++26) 목록 초기화 for algorithms
__cpp_lib_freestanding_algorithm 202311L (C++26) <algorithm> 내의 독립형 기능
__cpp_lib_robust_nonmodifying_seq_ops 201304L (C++14) 비수정 시퀀스 연산의 강화 (두 범위 오버로드 for std::mismatch , std::equal and std::is_permutation)
__cpp_lib_sample 201603L (C++17) std::sample
__cpp_lib_shift 201806L (C++20) std::shift_left and std::shift_right

C 라이브러리

헤더 파일에 정의됨 <cstdlib>
지정되지 않은 타입의 요소 범위를 정렬합니다
(함수)
배열에서 지정되지 않은 타입의 요소를 검색합니다
(함수)

결함 보고서

다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.

DR 적용 대상 게시된 동작 올바른 동작
LWG 193 C++98 힙이 * first 가 가장 큰 요소여야 함 * first 와 동일한 요소가
존재할 수 있음
LWG 2150 C++98 정렬된 시퀀스의 정의가 부정확했음 수정됨
LWG 2166 C++98 힙 요구사항이
최대 힙 정의와 충분히
일치하지 않았음
요구사항 개선됨

참고 항목

C 문서 참조: Algorithms