시퀀스 컨테이너-리스트(list)
- 프로그래밍/STL
- 2011. 4. 26. 14:14
[프로그래밍/STL] - 일반화 프로그래밍, STL기초
[프로그래밍/STL] - 컨테이너 (시퀀스,연관,어댑터)
1. std 네임스페이스 안에 있다.
list의 특징
1. 랜덤 액세스를 지원하지 않기때문에 at(), []연산자 제공하지 않는다.
2. vector와 같이 연속된 메모리 구조가 아니다. 논리적으로 연결되어 있음.
3. 삽입삭제에 아주 좋지만, 메모리는 vector보다 훨씬 더 차지한다.
4. 반복자 무효화가 삭제때만 존재하기때문에 좋다. 즉, 삽입시에 반복자는 유효하다.
5. 재할당 관련된 함수들을 제공하지 않는다. ( 리스트는 연속된 공간이 아니므로 필요 자체가 없다. )
6. 원소를 이동시키기 위한 특별한 멤버 함수들을 제공함.
Member functions
(constructor) | Construct list (public member function) |
(destructor) | List destructor (public member function) |
operator= | Copy container content (public member function) |
Iterators :
begin | Return iterator to beginning (public member function) |
end | Return iterator to end (public member function) |
rbegin | Return reverse iterator to reverse beginning (public member function) |
rend | Return reverse iterator to reverse end (public member function) |
Capacity :
empty | Test whether container is empty (public member function) |
size | Return size (public member function) |
max_size | Return maximum size (public member function) |
resize | Change size (public member function) |
Element access :
front | Access first element (public member function) |
back | Access last element (public member function) |
Modifiers :
assign | Assign new content to container (public member function) |
push_front | Insert element at beginning (public member function) |
pop_front | Delete first element (public member function) |
push_back | Add element at the end (public member function) |
pop_back | Delete last element (public member function) |
insert | Insert elements (public member function) |
erase | Erase elements (public member function) |
swap | Swap content (public member function) |
clear | Clear content (public member function) |
Operations :
splice | Move elements from list to list (public member function) |
remove | Remove elements with specific value (public member function) |
remove_if | Remove elements fulfilling condition (public member function template) |
unique | Remove duplicate values (member function) |
merge | Merge sorted lists (public member function) |
sort | Sort elements in container (public member function) |
reverse | Reverse the order of elements (public member function) |
Allocator :
get_allocator | Get allocator (public member function) |
Member types
of template <class T, class Allocator=allocator<T> > class list;member type | definition |
---|---|
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의 대해서 정리해보는 시간을 가졌다.
이 글을 공유하기