원소를 수정하지 않는 알고리즘
원소의 순서나 원소의 값을 변경하지 않고 원소를 읽기만 하는 알고리즘
종류
- adjacent_find()
p = adjacent_find(b, e)
- 현재 원소와 다음 원소가 같아지는 첫 원소의 반복자를 반환
- iter는 [b, e)의 순차열에서 현재 원소와 다음 원소가 같아지는 첫 원소의 반복자
p = adjacent_find(b, e, f)
- 인접한 원소가 특정 조건에 따라 그 조건을 만족하는 첫 원소의 반복자를 반환
- f는 이항 조건자
- count()
count(b, e, x)
- 순차열의 원소의 개수
count_if(b, e, f)
- 조건 f에 참인 원소의 개수
- equal()
equal(b, e, b2)
- [b, e)의 순차열과 [b2, b2 + (e-b))의 순차열이 모두 같은지 판단
equal(b, e, b2, f)
- 조건 f에 따라 [b, e)의 순차열과 [b2, b2 + (e-b))의 순차열이 모두 참인지 판단
- find()
find(b, e, x)
- [b, e)의 순차열에서 첫번째 원소 x를 찾음
find_if(b, e, f)
- [b, e)의 순차열에서 조건에 맞는 첫 원소를 찾음
find_first_of(b, e, b2, e2)
- [b, e)의 순차열과 [b2, e2)의 순차열을 비교하여 모든 원소 중 같은 원소가 하나라도 발견되면 발결된 첫 원소의 반복자를 반환
find_first_of(b, e, b2, e2, f)
- [b, e)의 순차열과 [b2, e2)의 순차열이 조건 f에 만족하는 첫번째 원소 반복자를 반환
find_end(b, e, b2, e2)
- [b, e)의 순차열에서 [b2, e2)의 순차열이 일치하는지 판단
- 일치하는 순차열 중 마지막 순차열의 첫 원소 반복자를 반환
find_end(b, e, b2, e2, f)
- 조건 f에 따라 [b, e)의 순차열에서 [b2, e2)의 순차열이 일치하는지 판단
- 일치하는 순차열 중 마지막 순차열의 첫 원소 반복자를 반환
- search()
search(b, e, b2, e2)
- [b, e)의 순차열에서 [b2, e2)의 순차열이 일치하는지 판단
- 일치하는 순차열 중 첫번째 순차열의 첫 원소 반복자를 반환
search(b, e, b2, e2, f)
- 조건 f에 따라 [b, e)의 순차열에서 [b2, e2)의 순차열이 일치하는지 판단
- 일치하는 순차열 중 첫번째 순차열의 첫 원소 반복자를 반환
search_n(b, e, n, x)
- 원소 x가 n번 연속하게 반복되는 첫 원소의 반복자 반환
search_n(b, e, n, x, f)
- 원소 x가 n번 연속하게 조건 f를 만족하는 첫 원소의 반복자 반환
- for_each()
for_each(b, e, f)
- 순차열의 모든 원소에 사용자 동작을 적용
- 원소를 수정하지 않는 알고리즘이자, 원소를 수정하는 알고리즘 모두에 속함
- lexicographical_compare()
lexicographical_compare(b, e, b2, e2)
- [b, e)의 순차열과 [b2, e2)의 순차열의 모든 원소를 문자열처럼 비교하여 참과 거짓을 반환함
lexicographical_compare(b, e, b2, e2, f)
- 사용자 정의 비교 가능
- max()/min()
max/min(a, b)
max/min(a, b, f)
max/min_element(b, e)
- 해당 구간에서 최대/최소 값
max/min_element(b, e, f)
- 해당 구간에서 비교 기준이 f가 되는 최대/최소 값
- mismatch(): 두 순차열을 비교, 원소의 값이 서로 다른 위치를 찾음
mismatch(b, e, b2)
- [b, e)의 순차열과 [b2, b2 + (e-b))의 순차열 모든 원소를 비교
- 원소 값이 서로 다른 첫 원소의 반복자 쌍을 반환
mismatch(b, e, b2, f)
- [b, e)의 순차열과 [b2, b2 + (e-b))의 순차열 모든 원소를 비교
- 원소 값이 조건 f에 맞지 않는첫 원소의 반복자 쌍을 반환
찾기 관련 알고리즘은 찾는 원소를 발견하지 못하면 찾는 구간의 끝 반복자를 반환함
컨테이너의 끝 표시(past-the-end) 반복자가 아님을 주의하자.
원소를 수정하는 알고리즘
원소의 값을 변경하거나 목적지 순차열로 원소를 복사하는 알고리즘
- 순차열 복사 모드
- 덮어쓰기(Overwrite)
- 모든 알고리즘의 기본 동작
- 삽입(Insert)
- 반복자 어댑터 등을 사용하여 삽입 모드로 동작
- 덮어쓰기(Overwrite)
종류
- copy()
copy(b, e, t)
copy_backward(b, e, t)
- fill()
fill(b, e, x)
fill_n(b, n, x)
- for_each()
for_each(b, e, f)
- generate()
generate(b, e, f)
generate_n(b, n, f)
- swap()
iter_swap(p, q)
swap(a, b)
swap_ranges(b, e, b2)
- merge()
merge(b, e, b2, e2, t)
merge(b, e, b2, e2, t, f)
- replace()
replace(b, e, x, x2)
replace_if(b, e, f, x2)
replace_copy(b, e, t, x, x2)
replace_copy_if(b, e, t, f, x2)
- transform()
transform(b, e, t,f)
transform(b, e, b2, t, f)
'C++ > 뇌를 자극하는 C++ STL' 카테고리의 다른 글
Chapter11&12 (0) | 2021.03.03 |
---|---|
Chapter7 연관 컨테이너 (0) | 2021.02.03 |
Chapter6 시퀀스 컨테이너 (0) | 2021.01.26 |
Chapter5 STL 소개 (0) | 2021.01.26 |
Chapter4 템플릿 (0) | 2021.01.18 |
최근댓글