이 영역을 누르면 첫 페이지로 이동
hoonDEV 블로그의 첫 페이지로 이동

hoonDEV

페이지 맨 위로 올라가기

hoonDEV

[C++ STL] list 알아보기

  • 2020.04.03 16:16
  • 공부/C, C++

개요

특징

  • vector와 deque와 같은 Sequence Container의 한 종류이다.
  • 이중 연결 리스트라고 잘 알려져 있는 자료구조를 구현해놓은 컨테이너이다.
  • 다른 Sequence Contianer와 달리 멤버 함수로 sort()와 merge() 그리고 splice()가 있다.
  • 이중 연결 리스트 자료구조의 특성상 노드 기반 컨테이너이므로 임의 접근이 불가능하다. (a[3], a.at(3))
  • 중간에 원소를 삽입(insert), 제거(erase)하는 작업은 O(1)의 시간 복잡도를 가진다.
  • 값의 비교로 원소를 제거하는 remove()와 remove_if()를 제공한다.

자세히 알아보기

선수 항목

  • #include <list>
  • using namespace std;

선언

  • std::list<Type> 이름;
  • (using namespace std; 되어 있을 시) list<Type> 이름;

선언 - 생성자

  • list lt;
    빈 list 컨테이너 선언
  • list lt(5);
    원소가 5개이고, 그 원소의 값이 0인 list 컨테이너 생성 (기본값)
  • list lt(5, 3);
    원소가 5개이고, 그 원소의 값이 3인 list 컨테이너 생성
  • list lt(lt_2);
    list<Type> lt_2 컨테이너를 list<Type> lt에 복사
  • list lt(iterator first, iterator last);
    이터레이터 구간 [first, last)의 원소로 초기화된 컨테이너 생성

멤버 함수

::iterator

  • begin() : 맨 앞의 원소를 가리키는 iterator 리턴
  • end() : 맨 뒤의 다음 원소를 가리키는 iterator 리턴
  • rbegin() : 맨 뒤의 원소를 가리키는 iterator 리턴, 기본 iterator와 다르게 뒤에서부터 순차적으로 접근할 때 사용
  • rend() : 맨 앞 이전 원소를 가리키는 iterator 리턴

추가

  • push_back(element) : list 맨 뒤에 element 추가
  • push_front(element) : list 맨 앞에 element 추가
  • insert(iterator, element) : list의 iterator가 가리키는 위치 앞에 element 추가

삭제

  • pop_back() : list 맨 뒤의 element 삭제
  • pop_front() : list 맨 앞의 element 삭제
  • erase(iterator), erase(iterator a, iterator b) : iterator가 가리키는 위치 / iterator a 부터 b 앞까지의 범위 삭제
  • remove(value) : value와 같은 값을 가지는 element를 모두 제거
  • remove_if(pred) : pred(조건자)가 참인 모든 원소를 제거한다.

접근

  • *(iterator)
  • front() : 첫 번째 원소를 반환
  • back() : 마지막 원소를 반환

기타

  • size() : list의 element 개수 리턴
  • empty() : list가 비었으면 true 아니면 false 리턴
  • reverse() : 원소를 뒤집음
  • sort() : 모든 원소를 오름차순으로 정렬, 매개변수로 다른 compare 함수가 오면 정렬 기준 임의로 지정 가능
  • unique() : 자기 자신과 다음에 있는 노드가동일하면 한 개만 남기고 삭제
  • lt.merge(lt2) : list형 lt를 lt2에 합병 정렬
  • lt.swap(lt2) : lt와 lt2를 swap

예시

'공부 > C, C++' 카테고리의 다른 글

[C++ STL] upper_bound, lower_bound 알아보기  (0) 2020.04.03
[C++] vector의 reserve()로 push_back() 시간을 줄이자!  (0) 2020.03.19

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [C++ STL] upper_bound, lower_bound 알아보기

    [C++ STL] upper_bound, lower_bound 알아보기

    2020.04.03
  • [C++] vector의 reserve()로 push_back() 시간을 줄이자!

    [C++] vector의 reserve()로 push_back() 시간을 줄이자!

    2020.03.19
다른 글 더 둘러보기

정보

hoonDEV 블로그의 첫 페이지로 이동

hoonDEV

  • hoonDEV의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그

카테고리

  • 분류 전체보기 (91)
    • 일상 (13)
      • 후기 (1)
      • 계획 (11)
    • 공지사항 (1)
    • 알고리즘 (54)
      • 문제풀이 (53)
      • 이론 (1)
    • 공부 (19)
      • React (0)
      • Angular (5)
      • Java (3)
      • C, C++ (3)
      • JavaScript (6)
      • WEB (2)
    • 디자인 (1)
      • UI, UX (1)
    • 개발 (0)
      • boom (0)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 알고리즘
  • es6
  • 백준
  • 그리디
  • 이분탐색
  • javascript
  • 문제풀이
  • dp

나의 외부 링크

정보

훈개발자의 hoonDEV

hoonDEV

훈개발자

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © 훈개발자. Designed by Fraccino.

티스토리툴바