본문 바로가기
개발/C++

C++ 자료구조 - List

by devsu 2020. 6. 19.

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 : 오름차순)

 

 

아래 링크 설명이 좋아 직접 타이핑하면서 외우는중

출처

https://blockdmask.tistory.com/76?category=249379

'개발 > 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