본문 바로가기
C++ 200제/코딩 IT 정보

C++ STL 컨테이너 알고리즘 함수 반복자 (Standard Template Library)

by vicddory 2019. 4. 5.

C++ STL 컨테이너 알고리즘 함수 반복자 (Standard Template Library)


STL은 크게 3가지로 분류됩니다.


  1. 컨테이너 Container : 체계화된 방법으로 데이터를 저장하는 공간 (방법).
  2. 알고리즘 Algorithm : 컨테이너에 담긴 데이터를 처리하는 방법 (절차).
  3. 반복자 Iterator : 포인터 개념. 알고리즘에서 컨테이너 데이터를 가리킴.



■ STL 컨테이너

순차 컨테이너 Sequence Container

  • 순차적으로 시각화할 수 있는 데이터 (원소) 집합

컨테이너

특징

장단점

 Array

 고정 크기

 빠른 임의 접근 (인덱스 번호 이용)

 도중 삽입, 삭제 느림

 실행 중 크기 바꿀 수 없음

 Vector

 위치 변경, 확장 배열

 빠른 임의 접근 (인덱스 번호 이용)

 도중 삽입, 삭제 느림

 끝에서 빠른 삽입, 삭제 가능

 List

 이중 연결 목록

 임의 위치에 빠른 삽입, 삭제 가능

 양 끝에서 빠르게 접근 가능

 임의 접근 속도 느림

 Deque

 벡터와 비슷
 양 끝에서 접근 가능

 빠른 임의 접근 (인덱스 번호 이용)

 도중 삽입, 삭제가 느림

 시작 및 끝 위치에서 빠르게 삽입, 삭제(푸시, 팝) 가능



c++ 알고리즘 함수 vector[C++ 프로그래밍 팁]



연관 컨테이너 Associate Container

  • 키를 사용하여 데이터 접근


컨테이너

특징

장단점

 Map

 키, 데이터 연계

 빠른 임의 접근 (인덱스 번호 이용)

 값 하나에 한 키만 허용

 키가 균등하게 분포되지 않을 경우 비능률적

 Multi Map

 키, 데이터 연계

 빠른 임의 접근 (인덱스 번호 이용)

 여러 키 값 허용

 키가 균등하게 분포되지 않을 경우 비능률적

 Set

 키만 저장

 빠른 임의 접근 (인덱스 번호 이용)

 값 하나에 한 키만 허용

 키가 균등하게 분포되지 않을 경우 비능률적

 Multi Set

 키만 저장

 빠른 임의 접근 (인덱스 번호 이용)

 여러 키 값 허용

 키가 균등하게 분포되지 않을 경우 비능률적



c++ stl 라이브러리 사용법[C++ 프로그래밍 팁]


■ STL 구성 함수 Function

  • 주요 함수는 아래와 같습니다. 컨테이너 다루게 되면 가장 많이 사용하게 될 함수입니다.


size()

 컨테이너 항목 수를 리턴

 empty()

 컨테이너가 비어 있으면 TRUE 리턴

 max_size()

 가장 큰 컨테이너의 크기 리턴

 begin()

 컨테이너의 시작 위치에 대한 반복자 리턴

 end()

 컨테이너의 끝 다음 위치에 대한 반복자를 리턴

 rbegin()

 컨테이너의 끝에 대한 역 반복자를 리턴

 rend()

 시작 위치에 대한 역 반복자를 리턴, 역방향 반복을 끝내기 위해 사용


전체 함수는 아래 cplusplus.com 사이트를 참조하세요.





C++ STL 컨테이너 알고리즘 함수 반복자 (Standard Template Library)[C++ 프로그래밍 팁]

■ STL 알고리즘 Algorithm

  • 컨테이너 데이터를 활용해 무언가를 할 때 사용하는 함수
  • STL 알고리즘 = 독립형 템플릿 함수


알고리즘

설명

 find

 지정된 값과 같은 첫 번째 원소 리턴

 count

 지정된 값을 가진 원소 수 리턴

 equal

 두 컨테이너의 내용을 비교, 모든 원소들이 같으면 TRUE 리턴

 search

 다른 컨테이너에서 해당 값의 순서를 찾음

 copy

 컨테이너에 해당 값, 해당 위치에 데이터 복사 붙여넣기

 swap

 한 위치의 값을 또 다른 위치의 값과 교환

 iter_swap

 한 위치의 값 순서를 다른 위치의 값 순서와 교환

 fill

 값을 위치의 순서에 복사

 sort 

 데이터를 지정된 순서에 따라 정렬

 merge 정렬된 두 원소의 범위를 결합
 accumulate 특정 범위 원소들의 합계를 리턴
 for_each 각 원소에 대해 지정된 함수를 실행




c++ stl 컨테이너 함수[C++ 프로그래밍 팁]


■ STL 반복자 Iterator

  • 컨테이너 데이터 항목(원소)에 접근하기 위해 사용하는 엔티티. 포인터 개념
  • 원소를 순차적으로 조회하는 데 사용
  1. 3대 반복자
    1. 정방향
    2. 양방향
    3. 임의 접근
  2. 전문화 반복자
    1. 입력 반복자
    2. 출력 반복자


반복자

읽기/쓰기

저장

방향

접근

 임의 접근

 읽기 쓰기

 가능

 정방향 역방향

 임의

 양방향

 읽기 쓰기

 가능

 정방향 역방향

 선형

 정방향

 읽기 쓰기

 가능

 정방향만

 선형

 출력

 쓰기 전용

 불가능

 정방향만

 선형

 입력 읽기 전용 불가능 정방향만 선형


C++ STL 컨테이너 알고리즘 함수 반복자 (Standard Template Library)