ㅊ++

윤휘영·2024년 5월 25일
0
post-thumbnail

1.

  • ()를 오버로드한 클래스의 인스턴스가 펑터다.

  • 입력 반복자: 현 위치의 원소를 한 번만 읽을 수 있는 반복자

  • 출력 반복자: 현 위치의 원소를 한 번만 쓸 수 있는 반복자

  • 순방향 반복자: 입/출력 반복자 기능에 순방향(++)으로 이동이 가능한 재할당될 수 있는 반복자

  • 양방향 반복자: 순방향 반복자 기능에 역방향으로 이동(--)이 가능한 반복자

  • 임의 접근 반복자: 양방향 반복자 기능에 +, -, +=, -=, [] 연산이 가능한 반복자.

  • 양방향: 리스트, 셋, 멀티셋, 맵, 멀티맵

  • 임의 접근: 벡터, 덱

  • 알고리즘은 한 쌍의 반복자, [begin(), end())를 필요로 한다.

  • sort 알고리즘은 임의 접근 반복자를 요구하므로 벡터와 덱 외의 다른 컨테이너는 불가하다.

  • STL에서 펑터는 정의한 동작을 다른 구성 요소에 반영하려 할 때 사용된다.

  • sort(b, e, functor)는 sort(b, e)와 버전이 다른 알고리즘으로, 펑터를 정렬 기준으로 하여 정렬한다.

  • 어댑터는 구성 요소의 인터페이스를 변경한다.

    • 컨테이너 어댑터: stack, queue, priority_queue
  • 스택 컨테이너 어댑터는 일반 컨테이너를 스택 컨테이너로 변경한다. 디폴트 컨테이너는 덱이다.

  • 대표적인 반복자 어댑터가 reverse_iterator이다. reverse_iterator는 일반 반복자의 동작 방식을 반대로 동작시키는 역방향 반복자로 변환한다.

  • 모든 컨테이너는 자신의 역방향 반복자를 typedef로 정의하며 rbegin()과 rend() 멤버함수로 순차열의 시작과 끝 원소를 가리키는 반복자 쌍을 반환한다.

  • 역방향 반복자가 가리키는 원소의 실제 값은 원소의 다음(++) 원소가 된다.

  • next_permutation()은 배열을 오름차순으로 정렬한 뒤 써야 한다. 새로운 순열이 이전 순열보다 사전순으로 큰 경우 true를 반환한다.

  • 배열 기반 컨테이너(벡터, 덱, 배열)의 이터레이터는 (포인터처럼) 정수와의 연산 가능하다. 인덱스를 계산한다.

  • STL의 find는 목표를 못 찾을 시 end() 반환(또는 '배열명+크기' 반환)한다.

2.

2.1 벡터

  • 벡터는 앞쪽(왼쪽)이 막혀 있는 형태로, 뒤쪽에서만 추가/제거할 수 있다.

  • 시퀀스 컨테이너는 요소들의 순서를 유지하므로, 시퀀스 컨테이너는 push_back()으로 값을 저장한 순서대로 요소를 저장하고, 이 순서대로 출력된다.

  • size()는 저장 원소의 개수, capacity()는 실제 할당된 메모리 크기, max_size()는 컨테이너가 담을 수 있는 최대 원소의 개수이다. capacity를 넘어서면 벡터는 공간을 재할당한다.

  • resize() 멤버함수를 사용하여 컨테이너의 size를 변경할 수 있다.

  • 시퀀스 컨테이너는 삽입 위치(순서) 개념이 있으므로 모든 시퀀스 컨테이너 벡터, 리스트, 덱은 첫 번째와 마지막 원소를 참조하는 front(), back() 멤버함수를 제공한다. 참조이므로 원소 값을 수정할 수 있다.

  • 모든 시퀀스 컨테이너는 assign() 멤버함수를 제공하여 값을 재할당할 수 있다.

  • insert() 멤버 함수는 반복자가 가리키는 위치에 원소를 추가할 수 있다. 여러 개의 원소를 한 번에 삽입할 수도 있으며, 반복자 쌍(구간)을 통째로 삽입할 수도 있다.

  • erase() 멤버 함수는 반복자가 가리키는 위치의 원소를 제거할 수 있다.

  • 컨테이너 비교 연산은 문자열 비교처럼 원소를 하나씩 비교한다.

2.2 맵

  • map은 레블트 기반이다.

  • m[k] = v : m 컨테이너에 원소(k, v)를 추가하거나 해당하는 원소의 value를 v로 갱신한다.

  • insert()를 제공하며, 기본 정렬 기준은 less이다.

  • map의 원소는 pair로 저장되며 pair 객체의 first 멤버변수는 key, second 멤버변수는 value이다.

  • map의 insert() 멤버함수는 저장한 원소의 위치를 가리키는 반복자와 삽입 성공 여부를 나타내는 bool 값을 pair 객체로 반환한다.

0개의 댓글