C++/STL4 std::list 1. 특징 - 상수 시간에 삽입 및 삭제가 가능 - 이중 연결 리스트로 구현(양방향 탐색 가능) - 임의 접근(Random access)을 지원하지 않음 - 원소 자체가 소멸되지 않는 한 삽입, 삭제 등의 연산으로 iterator는 무효화되지 않는다. 2. 정의 template class list; - T : T가 complete type이어야 하고 Allocator에 의해 소멸이 가능해야 한다.(Erasable) - Allocator : 메모리 할당과 해제, 원소의 생성과 소멸을 담당하며 value_type이 T와 같아야 한다. 3. 시간 복잡도 - 임의 접근 : O(1) - 삽입 및 삭제 : O(n) 4. 멤버 함수 - operator=(const list& other) : allocator가 oth.. 2021. 9. 16. std::vector 동적 사이즈의 배열을 캡슐화한 sequence container이다. 1. 특징 - 원소를 연속적으로 저장하여 iterator뿐만 아니라 포인터 연산으로도 접근이 가능하다. - 필요에 따라서 자동으로 크기가 변하며 크기를 추가할 때 여유공간을 염두해 재할당한다. ( capacity() 멤버 함수로 할당된 메모리 크기를 구할 수 있다. ) - 재할당은 오버헤드가 크기 때문에 이미 알고 있는 크기에 대해서는 reserve()로 한 번에 수행한다. - 고정된 크기로 사용할 경우 shirink_to_fit()으로 여유공간을 제거할 수 있다. 2. 정의 template class vector; - T : T가 complete type이어야 하고 Allocator에 의해 소멸이 가능해야 한다.(Erasable) -.. 2021. 9. 15. Iterator 컨테이너에 접근하는 방법을 일반화하여 제공하는 객체 1. std::iterator : Iterator로서 필요로 하는 타입들에 대한 정의를 간단하게 만들어주는 기본 클래스 template struct iterator; 2. std::iterator_traits : Iterator의 특성에 대한 인터페이스를 제공하는 클래스 Iter::difference_type // difference_type Iter::value_type // value_type Iter::pointer // pointer Iter::reference // reference Iter::iterator_category // iterator_category 2021. 9. 12. Container 다른 객체를 저장하고 메모리를 관리하기 위해 사용되는 객체 1. 시퀀스 컨테이너(Sequence container) : 데이터를 순차적으로 저장하여 관리하는 컨테이너 - array : 정적 배열 - vector : 동적 배열 - forward_list : 단일 연결 리스트 - list : 이중 연결 리스트 - deque 2. 연관 컨테이너(Associative container) : 키(key)와 값(value) 쌍으로 데이터를 저장하여 관리하는 컨테이너 - [unordered_] set : 중복되지 않는 여러 키로 이루어진 컨테이너 - [unordered_] multiset : 중복을 허용하는 여러 키로 이루어진 컨테이너 - [unordered_| map : 중복되지 않는 키-값 쌍들로 이루어진 컨테이.. 2021. 9. 12. 이전 1 다음