원소를 수정하지 않는 알고리즘

원소의 순서나 원소의 값을 변경하지 않고 원소를 읽기만 하는 알고리즘

종류

  • 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)
      • 반복자 어댑터 등을 사용하여 삽입 모드로 동작

종류

  • 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
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기