- 
          
          [C++ STL] algorithm.hC++ STL 2023. 3. 31. 22:49
원소를 수정하지 않는 작업들
for_each
Windows에서 이거 쓰지말라고 한다
짧게 쓰고 싶으면 이렇게 쓰라네
vector<int> x(10); for( int y : x ){ cout << x << "\n"; } for( int &y : x){ y = 1; } for( auto &y : x ){ y = 10; }find O(N)
왜 O(logN)이 아닌지 물어보았다

find_if
count O(N)
순열
next_permutation
prev_permutation
원소를 수정하는 작업들
swap
transform O(N)
replace
fill
remove
reverse
rotate
파티션
특정 조건을 만족하는 원소들은 앞으로 보내고 나머지들은 뒤로 보내는 작업을 말합니다.
partition
정렬
1. sort O(N*logN)
// 사용예시 sort(vec.begin(),vec.end(),compare);true 일때 첫번째 인자를 우선이라 판단한다
즉 첫번째 인자를 두번째 인자보다 앞에 배치한다
bool compare(int a, int b) { return a > b; } ssort(myVector.begin(), myVector.end(), compare);즉, 이거는 a가 더 크면 true 이고 앞에 배치하므로
이건 내림차순 정렬인거다.
내부적으로는 퀵소트로 구현되어 있다
사실 퀵소트 최악의 경우가 O(N^2)인데
이걸 팀소트인가 뭐랑 합체해서 구현한거라 N*LOGN 으로나온다
이진탐색
lower_bound O(logN)
upper_bound O(N*logN)
binary_search O(logN)
이진탐색(이분탐색)
범위를 1/2 절반으로 줄여가며 탐색하는 O(logN) 의 탐색 방법
vector deque list set map 등 선형자료구조가 아닌 자료구조에도 적용가능하다
반드시 해당 자료구조가 정렬상태여야한다!
병합
merge
집합 관련 함수
includes
set_union
set_intersection
set_difference
HEAP 관련
push_heap
pop_heap
make_heap
sort_heap
is_heap
최대최소
min
max
min_element
max_element
'C++ STL' 카테고리의 다른 글
[C++ STL] bitset (0) 2023.07.07 [C++ STL] STL 전체 (0) 2023.05.14 [C++ STL] unordered_map (2) 2023.03.31 [C++ STL] sstream (0) 2023.03.07 [C++ STL] string (0) 2023.03.07