• [C++] list 의 기본 문법과 반복문, list에만 존재하는 함수 실습

    2023. 9. 5.

    by. KAEY

     


    list 사용법

    #include <list> // list 헤더파일을 추가해야 사용 가능

    리스트는 해더파일을 추가해야 사용이 가능하다. 따라서 위와 같이 선언해주어야 함.

     

     

    list<int> v = { 1,2,3,4,5 };
    
    list <int> v(4);
    	//int형 리스트 생성 후 크기를 4로 할당(모든 리스트요소 0으로 초기화)
    list <int> v(5, 1);
    	//int형 리스트 생성 후 크기를 5로 할당(모든 리스트요소 1로 초기화)
        
    v.assign(5, 1); //0~4인덱스의 값을 1로 초기화

    위의 방법은 벡터의 사용법과 크게 다르지 않다.

     

     

     

    list 의 모든 요소 출력하기.

    for (const int& num : myList){
    	cout << num << " ";
    }

    반복문을 통해 리스트의 내용을 전부 출력할 때,

    일반적인 for문의 형태를 가지지 않고 위와 같은 형태를 취한다.

     

     

     

    list 에서만 사용되는 문법

    • remove() – 특정 값 삭제
    • remove_if(함수) – 특정 함수의 조건에 맞는 값 삭제
    • splice() – 리스트간 요소 이동
    • merge() – 정렬된 리스트 병합
    • unique() – 중복 요소 제거
    • sort() - 정렬

     

     


    list 실습

    ✅ list 를 선언해보기.

    ✅ 4가 몇개인지 출력하기.

    ✅ 리스트를 정렬하기.

    ✅ 리스트의 중복 값을 제거하기.

    ✅ 리스트에 뒷쪽에 원하는 값 추가하기.

    ✅ 리스트의 앞쪽에 원하는 값 추가하기.

    ✅ 추가 : { 1 , 2 , 3 , 4 ,5 }의 리스트에서 앞에 0을 추가하고 가장 뒷 값을 제거하여 { 0 , 1, 2, 3, 4 }가 출력되게 하세요.

     


    ✅ 4가 몇개인지 출력하기.

    	int target = 4;
    	int cnt = 0;

    target 변수는 원하는 값 (4)을 지정하는 숫자로 설정하고, cnt는 리스트의 원소를 확인하며 

    target 과 동일하면 1씩 늘려가며 개수를 세는 역할을 할 것 입니다.

     

     

    	for (const int& num : myList) {
    		if (num == target) {
    			cnt++;
    		}
    	}

    이를 코드로 구현하면 위와 같습니다.

     

     

     

    ✅ 리스트를 정렬하기.

    myList.sort();

    리스트는 해더파일로 알고리즘을 불러오지 않아도, 리스트명.sort() 를 통해 정렬을 할 수 있습니다.

     

     

     

    ✅ 리스트의 중복 값을 제거하기.

    myList.unique();

    중복 값 제거 역시 알고리즘을 따로 추가하지 않아도, unique() 함수를 통해 리스트 내에 존재하는

    중복 값을 제거할 수 있습니다.

     

     

     

    ✅ 리스트에 뒷쪽에 원하는 값 추가하기.

    myList.splice(myList.end(), myList2);

    push_back() 을 통해 원하는 값 하나를 지정하여 뒷쪽으로 삽입할 수 있지만,

    두 개를 동시에 삽입하기를 원하므로, 하나의 리스트를 추가로 생성 ( list<int> myList2 = { 6, 7 }; ) 하고

    이를 splice 를 통해 합칠 것 입니다. 또한 뒤쪽에 삽입해야 하므로 end()를 사용합니다.

     

     

     

    ✅ 리스트의 앞쪽에 원하는 값 추가하기.

    myList.splice(myList.begin(), myList3);

    splice를 사용해서 0 이라는 원소 하나만 가진 myList3을 앞쪽으로 합치는 방법을 사용했습니다.

     

     

     

    ✅ 추가 : { 1 , 2 , 3 , 4 ,5 }의 리스트에서 앞에 0을 추가하고 가장 뒷 값을 제거하여 { 0 , 1, 2, 3, 4 }가 출력되게 하세요.

    	myList4.push_front(0);
    
    	while (myList4.size() > 5) {
    		myList4.pop_back();
    	}

    가장 앞에 0을 추가하는 push_front() 와 가장 뒤에 있는 값을 제거하는 pop_back()을 동시에 사용했습니다.

    위의 splice의 개념과 비슷하지만 약간은 다르다는 것을 확인할 수 있습니다.

    또한 while 문은 문제 내에서는 많이 중요한 내용은 아니지만,

    mylist4 배열의 크기가 5 라는 것을 고정시키기 위한 하나의 장치입니다.

    단순히 앞 추가, 뒤 제거 였다면 필요한 작업은 아니였지만

    코드가 길어졌을 때 놓칠 수 있는 상황을 대비한 작업입니다.

     

     

     

    출력 화면 :

     


    🎉해당 글의 내용은 "포스코 x 코딩온 스마트 팩토리 과정 수업" 에서의 수업 자료 및 실습 과제 등에서 일부 발췌되어 작성 되었습니다.


    댓글 (비로그인 댓글 허용하지 않습니다.)