본문 바로가기

분류 전체보기39

std::deque Double-ended-queue의 약자로, 양 끝에서 삽입, 삭제가 가능한 indexed sequence container 1. 특징 - std::vector 와 다르게 원소를 연속적으로 저장하지 않고 고정 크기의 메모리 블록으로 나누어 저장하고 이들의 주소를 따로 관리한다. - 데이터를 연속적으로 저장하지 않기 때문에 확장 시에 복사할 필요가 없어, 크기 확장이 std::vector 보다 오버헤드가 적다. - 고정 크기의 메모리 블록을 사용하는데 이 블록의 최소 크기가 크다. - 삽입 시 iterator 가 무효화되지 않는다.(push_back, push_front, emplace_front, emplace_back); 2. 정의 template class deque; - T : T가 complete.. 2021. 9. 16.
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.
Value categories 1. glvalue(generalized lvalue) : 객체의 identity를 결정하는 expression으로, reference가 이 범주에 속한다. - 다형성 적용 가능 - 때에 따라서 prvalue로 암시적 변환이 이뤄진다. ex) sizeof( object ) 2. xvalue(expiring value) : 객체의 자원을 재사용할 수 있는 glvalue 즉, rvalue의 identity를 부여하여 재사용 가능한 expression으로 rvalue reference, rvalue 객체의 non-reference 멤버 변수가 이에 속한다 - 다형성 적용 가능 3. lvalue : xvalue가 아닌 glvalue 변수, 함수, 멤버 변수의 이름이 이에 해당한다. (+전위 증감연산자, lval.. 2021. 9. 15.