C++ STL 프로그래밍(연결 리스트)





4. 연결 리스트
    - STL은 C++클래스 템플릿을 사용해 만든 표준 라이브러리
    - STL컨테이너는 list, vector, deque, map, set



4.1 list의 자료구조
    - '연결 리스트'를 템플릿으로 구현한 것


4.2 연결 리스트의 특징
    1) 배열에 비해 길이가 가변적 : 동적으로 크기 변경
    2) 중간 데이터 삽입, 삭제가 용이
    3) 랜덤하게 접근할 수 없다.


4.3 STL list 를 사용하면 좋은 점
    4.3.2 list를 사용해야 하는 경우
        1) 저장할 데이터 개수가 가변적일 때
        2) 중간 데이터 삽입 삭제가 빈번할 때
        3) 데이터 개수가 많고, 검색을 자주하면 다른 컨테이너 라이브러리 쓸 것
            - list보다 map, set, hash_map이 검색 빠르다
        4) 데이터를 랜덤하게 접근하는 경우가 많지 않을 때
            - list는 순차 접근만 가능하기 때문에 iterator 를 통해 접근해야 한다.
            - 아이템 정보는 빈번하게 랜덤접근하므로 list 보다 배열이 좋다.


4.4 list 사용방법
    - 헤더 파일 포함 #include <list>
    - 선언 : list<자료형> 변수명;
    - 동적할당 : list<자료형>* 변수이름 = new list<자료형>;

    4.4.2 반복자(iterator)
        - 포인터의 일반화된 개념
        - 포인터와 비슷하게 ++, --로 이동하고 대입, 비교 가능
        - STL의 반복자 선언 : 컨테이너<자료형>::iterator 변수이름;
        - STL의 역반복자 선언 : 컨테이너<자료형>::reverse_iterator 변수이름;
            
        - 정방향 순차 접근 예시 begin(), end()
           
        - 정방향 순차 접근 예시 rbegin(), rend()
            


    4.4.3 list의 주요 멤버들
        

        
        


        * insert 세 가지 방법
            

        * erase 두 가지 방법
           - erase는 iterator를 통해 삭제하지만 remove는 값을 통해 삭제한다.
            


        * 자료형에 포인터를 담는 예시
            



        * remove_if 사용 예시
            


        * sort 정렬
            - STL에 정의된 방식으로 정렬뿐 아니라 사용자가 정렬을 정의 할 수 있다.
            - 사용자 정의 정렬 방법은 필요할 때 찾아볼 것
            


        * unique 인접 요소 중복 제거
            






댓글