List
- 더블 링크드 리스트로 구현되어 있다.
- 더블 링크드 리스트의 장점을 그대로 가져오며 중간에 삽입/삭제가 빠르다.
- 하지만 특정 원소에 접근하려면 선형탐색을 해야한다. 상호 포인터 정보를 가지고 있기 때문에 메모리 사용비율이 높다.
1. 사용
- #include<list>
- list<[Data Type]> [변수 이름];
- list<int> l1;
2. 생성자와 연산자
- list<int> lt;
- 비어있는 list lt를 생성
- list<int> lt(5);
- 0으로 초기화 된 5개의 원소를 가지는 list를 생성
- list lt(5,2);
- 2으로 초기화 된 5개의 원소를 가지는 list를 생성
- list lt2(lt1);
- list lt1을 lt2로 복사
3. list의 멤버함수
- lt.assign(5,2);
- 2의 값으로 5개의 원소 할당
- lt.front();
- 첫번째 원소를 참조.
- lt.back();
- 마지막 원소를 참조.
- lt.begin();
- 첫번째 원소를 가리킴(iterator 반환)
- lt.end();
- 마지막 원소를 가리킴(iterator 반환)
- lt.rbegin();
- reverse 첫번째 원소를 가리킴(iterator 반환)
- lt.rend();
- reverse 마지막 원소를 가리킴(iterator 반환)
- lt.push_back(7);
- 마지막 원소 뒤에 원소 7을 삽입
- lt.push_front(7);
- 맨앞에 원소 7을 삽입
- lt.pop_back();
- 마지막 원소를 제거.
- lt.pop_front();
- 첫번째 원소를 제거.
- lt.insert(iter, k);
- iter가 가리키는 위치에 k값을 삽입
- lt.erase(iter);
- iter가 가리키는 원소를 제거
- 삭제한 원소의 다음 원소를 가리키는 iter를 반환
- lt.size();
- 원소의 갯수를 리턴
- lt.remove(k)
- k와 같은 원소를 모두 제거
- lt.remove_if(Predicate)
- 단항 조건자 predicate에 해당하는 원소를 모두 제거
- lt.reverse()
- 원소들의 순차열을 뒤집는다
- lt.sort()
- 모든 원소를 default(오름차순)으로 정렬
- lt2.swap(lt1);
- lt2와 lt1을 swap
- lt2.splice(iter2,lt1)
- lt2에서 iter2가 가리키는 곳에 lt1의 모든 원소를 잘라 붙임
- lt2.splice(iter2, lt1, iter1);
- lt2의 iter2가 가리키는 곳에 lt1의 iter1이 가리키는 원소를 잘라 붙임
- lt.unique()
- 인접한(양옆의) 원소가 같으면 유일하게 만듦(하나만 빼고 삭제)
- lt2.merge(lt1)
- lt1을 lt2 내부로 합병 정렬(default : 오름차순)
아래 링크 설명이 좋아 직접 타이핑하면서 외우는중
출처
'개발 > C++' 카테고리의 다른 글
C++ 자료구조 - Deque (0) | 2020.06.21 |
---|---|
C++ 자료구조 - Set (0) | 2020.06.21 |
C++ 자료구조 - Map (0) | 2020.06.21 |
C++ 자료구조 - Vector (0) | 2020.06.19 |
C++ 자료구조 정리 (1) | 2020.06.19 |