목차
머리말
#include <알고리즘>은 C++ 표준 템플릿 라이브러리(STL)에서 가장 중요한 헤더 파일 중 하나이며, 반복자를 기반으로 하는 많은 비구성원 템플릿 함수를 제공합니다.
구체적으로 수정되지 않은 시퀀스 작업, 수정된 시퀀스 작업, 파티션 작업, 정렬 작업, 이진 검색 작업, 병합 작업, 힙 작업, 최대값 및 최소값 작업 및 기타 작업이 포함됩니다.
이 글은 라이브러리에 있는 함수의 사용법과 자주 사용하는 함수에 대한 설명을 자세하게 기록하고 있습니다.
1. 비수정 시퀀스 연산( 12 )
1.for_each()
시퀀스의 각 요소에 대해 연산을 수행합니다.
for_each(v1.begin(),v1.end(),add);//将v1执行add方法
2.찾기()
시퀀스에서 값의 첫 번째 항목을 찾습니다. 기본 요소에 대해 같음 연산자를 사용하여 범위의 요소를 입력 값과 비교합니다. 일치하면 검색을 종료하고 요소에 대한 InputIterator를 반환합니다.
find(v1.begin(),v1.end(),value);//在v1中找到value的索引值
3.find_if()
술어를 만족하는 시퀀스의 첫 번째 요소 찾기
4.find_end()
시퀀스에서 하위 시퀀스의 마지막 발생 위치 찾기
5.find_first_of()
시퀀스의 지정된 값 집합에서 값의 첫 번째 항목을 찾습니다.
6.adjacent_find()
시퀀스에서 인접한 값 쌍 찾기
7.카운트()
시퀀스에서 값의 발생 횟수 계산
count(v1.begin(),v1.end(),value);//统计v1中value出现的次数
8.count_if()
시퀀스에서 술어에 대한 일치 수를 계산합니다.
9.불일치()
비교: 서로 다른 두 시퀀스의 첫 번째 요소 찾기
10.같음()
두 시퀀스의 해당 요소가 동일한 경우 참
11.검색()
시퀀스에서 하위 시퀀스의 첫 번째 발생 위치 찾기
12.검색_n()
시퀀스에서 n개의 연속된 값 찾기
2. 시퀀스 작업 수정( 27 )
1.복사()
시퀀스의 첫 번째 요소에서 복사
copy (v1.begin(),v1.end(),v2.begin());//v1复制给v2
2.copy_backward()
시퀀스의 마지막 요소에서 복사
3.스왑()
두 요소 교환
swap(a,b);//交换ab
4.swap_ranges()
지정된 범위의 요소를 교체합니다.
5.iter_swap()
반복자가 가리키는 두 요소를 바꿉니다.
6.변환()
지정된 범위의 각 요소에 연산을 적용합니다.
transform(v1.begin(),v1.end(),v2.begin(),add);//将v1复制到v2同时先执行add方法 将其改变后放入v2容器中
7.대체()
일부 값을 주어진 값으로 대체
replace(v1.begin(),v1.end(),old_value,new_value);//在v1中找old_value,并用new_value替换
8.replace_if()
술어를 만족하는 일부 요소를 대체하십시오.
9.replace_copy()
시퀀스를 복사할 때 요소를 주어진 값으로 바꿉니다.
10.replace_copy_if()
시퀀스를 복사할 때 술어를 만족하는 요소 교체
11.채우기()
모든 요소를 주어진 값으로 바꿉니다.
fill(v1.begin(),v1.end(),value);//遍历v1,value替换所遍历的值
12.fill_n()
처음 n개의 요소를 주어진 값으로 바꿉니다.
13.생성()
모든 요소를 작업 결과로 바꿉니다.
14.generate_n()
처음 n개의 요소를 작업 결과로 바꿉니다.
15.제거()
주어진 값을 가진 요소를 제거합니다.
remove(v1.begin(),v1.end(),value);//删除v1中所有值为value的数据
16.remove_if()
술어를 만족시키는 요소 제거
17.remove_copy()
시퀀스를 복사할 때 주어진 값을 가진 요소를 제거합니다.
18.remove_copy_if()
시퀀스를 복사할 때 술어를 만족하는 요소 제거
19. 고유()
인접한 중복 요소 제거
vector<int> ModuleArr;
sort(ModuleArr.begin(), ModuleArr.end());//排序
ModuleArr.erase(unique(ModuleArr.begin(), ModuleArr.end()), ModuleArr.end());//去重
20.unique_copy()
시퀀스를 복사할 때 인접한 중복 요소 제거
21.반전()
요소의 순서를 반대로
reserve(v1.begin(),v1.end());//反转v1次序
22.reverse_copy()
시퀀스를 복사할 때 요소의 순서를 반대로 합니다.
23.회전()
요소 순환
24.rotate_copy()
시퀀스 복사 시 요소 순환
25.random_shuffle()
무작위: 균일한 분포를 사용하여 요소를 무작위로 이동합니다.
26.파티션()
파티션: 술어를 만족하는 모든 요소를 앞에 배치
27.stable_partition()
술어를 만족시키는 요소를 앞에 두고 원래의 순서를 유지한다.
3. 시퀀스 정렬 및 관련 작업( 27 )
1.정렬()
평균 효율이 좋은 정렬
sort(v1.begin(), v1.end());//v1排序
2.stable_sort()
정렬: 동일한 요소의 원래 순서 유지
3.partial_sort()
시퀀스의 이전 부분 정렬
4.partial_sort_copy()
복사하는 동안 시퀀스의 이전 부분 정렬
5.nth_element()
n번째 요소 각 n번째 요소를 올바른 위치에 배치
6.lower_bound()
값보다 크거나 같은 값의 첫 번째 항목 찾기
7.upper_bound()
특정 값보다 큰 첫 번째 항목 찾기
8.equal_range()
주어진 값을 삽입할 수 있는 가장 큰 범위를 찾습니다(순서를 끊지 않고).
9.binary_search()
주어진 요소가 순서대로 존재하는지 확인
10.병합()
두 개의 정렬된 시퀀스 병합
merge(v1.begin(),v1.end(),v2.begin(),v2.end(),v3.begin());//合并v1和v2到v3
11.inplace_merge()
두 개의 연속 정렬 시퀀스 병합
12.포함()
순서가 있는 구조에 대한 연산 설정: 하나의 시퀀스가 다른 시퀀스의 하위 시퀀스인 경우 참
13.set_union()
두 세트의 정렬된 합집합을 구성합니다.
14.set_intersection()
두 집합의 정렬된 교집합을 생성합니다.
15.set_difference()
두 세트의 순서차를 구성합니다.
16.set_symmetric_difference()
두 집합의 정렬된 대칭 차(합집합-교차)를 구성합니다.
17.push_heap()
힙에 요소 추가
18.팝_힙()
힙에서 요소 팝
19.make_힙()
시퀀스에서 힙을 구성합니다.
20.sort_heap()
힙 정렬
21분()
두 값 중 작은 값
min(a,b);
22.max()
두 값 중 더 큰 값
max(a,b);
23.min_element()
시퀀스에서 가장 작은 요소
max_element(first,end,cmp);//第三个参数cmp可写可不写,max_element()和min_element() 默认是从小到大排列
24.max_element()
시퀀스에서 가장 큰 요소
min_element(first,end,cmp)
25.사전식_비교()
두 개의 시퀀스는 사전순으로 첫 번째 순서입니다.
26.next_permutation()
사전순으로 다음
27.prev_permutation()
사전 순으로 선행
요약하다
이 문서에서는 알고리즘 라이브러리의 템플릿 함수 메서드를 요약하고 일반적으로 사용되는 함수 메서드의 사용법을 자세히 소개합니다.