시퀀스 컨테이너-리스트(list)

이글을 보기 전에 참조하시면 좋아요~
[프로그래밍/STL] - 일반화 프로그래밍, STL기초
[프로그래밍/STL] - 컨테이너 (시퀀스,연관,어댑터)

list
0. #include <list> 를 추가해야함.
1. std 네임스페이스 안에 있다. 
2. 더블 링크드리스트로 구현되있음. ( 연속되지 않은 메모리 공간 )
3. 중간요소 삽입 삭제가 빠름.
4. 임의요소 참조 느림.
5. 양방향 참조 반복자를 이용함.
6. 요소를 참조할때 반드시 반복자를 이용해야만 하고,  삽입, 삭제시 반복자 무효화 현상이 적다!


 

list의 특징
1. 랜덤 액세스를 지원하지 않기때문에 at(), []연산자 제공하지 않는다.
2. vector와 같이 연속된 메모리 구조가 아니다. 논리적으로 연결되어 있음.
3. 삽입삭제에 아주 좋지만, 메모리는 vector보다 훨씬 더 차지한다.
4. 반복자 무효화가 삭제때만 존재하기때문에 좋다. 즉, 삽입시에 반복자는 유효하다.
5. 재할당 관련된 함수들을 제공하지 않는다. ( 리스트는 연속된 공간이 아니므로 필요 자체가 없다. )
6. 원소를 이동시키기 위한 특별한 멤버 함수들을 제공함.



Member functions


Iterators : 

Capacity : 

Element access : 

Modifiers : 

Operations : 

Allocator : 

Member types

of template <class T, class Allocator=allocator<T> > class list; 
member typedefinition
reference Allocator::reference
const_reference Allocator::const_reference
iterator Bidirectional iterator
const_iterator Constant bidirectional iterator
size_type Unsigned integral type (usually same as size_t )
difference_type Signed integral type (usually same as ptrdiff_t )
value_type T
allocator_type Allocator
pointer Allocator::pointer
const_pointer Allocator::const_pointer
reverse_iterator reverse_iterator<iterator>
const_reverse_iterator reverse_iterator<const_iterator>


생성자 및 멤버함수 분석 (선언부)

1)생성자
 

explicit list(); 
explicit list(size_type n, const T& v = T());
           list(const list& x);

           
         list(const_iterator first, const_iterator last);

 



2)멤버함수들 

iterator insert(iterator it, const T& x = T());
void     insert(iterator it, size_type n, const T& x);
void     insert(iterator it, const_iterator first, const_iterator last);
 
iterator erase(iterator it);
iterator erase(iterator first, iterator last);

void swap(list& Right);
 
 

3)멤버함수중에 list에만 적용되는 특수한 함수들
 

void remove(const Type& val);    //값이 val인 모든원소 제거해준다.
void remove_if(UniPred F);

void reverse( );    //원소의 순서를 뒤 바꿈

void merge(list& Right);   //(두 컨테이너가 정렬되있다는 가정하에)
                                     //Right 의 모든 원소들을 this로 이동한다.
                                     //모든 원소 병합 되면서 정렬이 자동으로 됨

void splice(iterator it, list& x);      //x의 모든 원소들을 it 앞 위치로 이동시킴
void splice(iterator it, list& x, iterator first);     //x의 first에 있는 원소들을 it 앞 위치로 이동시킴
void splice(iterator it, list& x, iterator first, iterator last);      

void sort();                  // 디폴트인 < 연산자 기준으로 정렬
void sort(BinPred op);  // op(함수객체)기준으로 정렬

void unique();      //같은 값을 가지는 연속된 원소들의 중복을 제거
void unique(UniPred op);       // op()가 true를 반환하는 연속된 원소들의 중복을 제거



리스트의 또 다른 특징들
list 는 STL의 컨테이너 중 가장 강력한 예외 안정성을 제공해 준다.


참고 자료:
1) www.winapi.com
2) C++ Standard Library 책




STL의 list의 대해서 정리해보는 시간을 가졌다.






 

이 글을 공유하기

댓글

Designed by JB FACTORY