C++ – list

By | 2023년 7월 4일
Table of Contents

C++ – list

list 사용법을 정리해 봅니다.
자주 사용해야 하는 기능인데 매번 인터넷 검색하기가 귀찮네요.

변수 생성

#include <stdio.h>
#include <list>

using namespace std;

int main() {
    // 변수 생성만으로 초기화가 이루어진다.
    list<int> lst;

    printf("list size : %zu\n", lst.size());

    return 0;
}

데이타입력

#include <stdio.h>
#include <list>

using namespace std;

int main() {
    list<int> lst;

    lst.push_back(10);
    lst.push_front(20);

    list<int>::iterator iter;
    for(iter = lst.begin(); iter!= lst.end(); iter++) {
        printf("%d\n", *iter);
    }

    return 0;
}

데이타 반환

// 맨 앞의 원소를 반환(return), 제거 XXX
lst.front()

// 맨 뒤의 원소를 반환(return), 제거 XXX
lst.back()

// 맨 첫번째 원소를 제거합니다.
lst.pop_front()

// 맨 마지막 원소를 제거합니다.
lst.pop_back()

remove_if

#include <stdio.h>
#include <list>
#include <algorithm>

using namespace std;

int main() {
    list<int> lst;

    lst.push_back(10);
    lst.push_front(20);

    auto it_test = remove_if(lst.begin(), lst.end(), 
        [](int i) {
            return (i < 15);
        }
    );
    lst.erase(it_test, lst.end());

    list<int>::iterator iter;
    for(iter = lst.begin(); iter!= lst.end(); iter++) {
        printf("%d\n", *iter);
    }

    return 0;
}

sort, reverse_iterator

#include <stdio.h>
#include <list>
#include <algorithm>

using namespace std;

int main() {
    list<int> lst;

    lst.push_back(20);
    lst.push_back(10);

    // operator< 를 이용해 정렬합니다.
    lst.sort();

    list<int>::iterator iter;
    for(iter = lst.begin(); iter!= lst.end(); iter++) {
        printf("%d\n", *iter);
    }

    list<int>::reverse_iterator riter;
    for(riter = lst.rbegin(); riter!= lst.rend(); riter++) {
        printf("%d\n", *riter);
    }

    return 0;
}

구조체 정렬

#include <stdio.h>
#include <list>
#include <algorithm>

using namespace std;

struct Rank {
    int score;
    char userName[32];

    // operator< 를 정의해 줍니다.
    bool operator<  (const Rank &rhs) const {
        return score < rhs.score;
    }
};

int main() {
    list<Rank> lst;

    Rank man1 = {
        80, "man1"
    };

    Rank man2 = {
        70, "man2"
    };

    lst.push_back(man1);
    lst.push_back(man2);

    lst.sort();

    list<Rank>::iterator iter;
    for(iter = lst.begin(); iter!= lst.end(); iter++) {
        printf("%s\n", (*iter).userName);
    }

    return 0;
}

답글 남기기