오븐 노트

[C++] list #1 본문

Develop/C++

[C++] list #1

오 븐 2023. 6. 8. 19:09
#include <iostream>
using namespace std;
#include <vector>
#include <list>

class Node // 단일 연결 리스트
{
public:
    Node*   _next;
    int     _data;
};

// 단일 / 이중 / 원형
// list : 연결 리스트

// [] 한칸이 노드의 개념
// [1] -> [2] -> [3] -> [4] -> [5]
// [1] <-> [2] <-> [3] <-> [4] <-> [5]
// [1] <-> [2] <-> [3] <-> [4] <-> [5] <-> [1]

int main()
{
    // list (연결 리스트)
    // - list의 동작 원리
    // - 중간 삽입/삭제
    // - 처음/끝 삽입/삭제
    // - 임의 접근

    list<int> li;

    for (int i = 0; i < 100; i++)
        li.push_back(i);

    //li.push_front(10);
    int size = li.size();
    //li.capacity(); // vector와 다르게 동적 배열 형태가 아니기 때문에 용량의 개념이 없다.

    int first = li.front();
    int last = li.back();

    //li[3] = 10; // 임의 접근을 허용하지 않음

    list<int>::iterator itBegin = li.begin(); // vector의 iterator와는 완전히 다르게 동작
    list<int>::iterator itEnd = li.end();

    for (list<int>::iterator it = li.begin(); it != li.end(); ++it)
    {
        cout << *it << endl;
    }

    li.insert(itBegin, 100);

    li.erase(li.begin()); // 중간값까지 삭제 가능
    
    li.pop_front(); // 첫 값 삭제(빼오기)

    li.remove(10); // vector에서는 for문을 돌며 하나씩 삭제를 해야했는데 list는 remove를 지원

    return 0;
}

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문 - 인프런 | 강의
 
C++ 카테고리의 글은 인프런 Rookiss님의 강의를 공부하며 정리하는 내용입니다.
이미 알고 있는 내용도 다시 정리 되어있을 수 있습니다.

 

모든 글은 제가 공부하기 위해 작성합니다.

'Develop > C++' 카테고리의 다른 글

[C++] list #3  (0) 2023.06.09
[C++] list #2  (0) 2023.06.09
[C++] vector #4  (0) 2023.05.31
[C++] vector #3  (0) 2023.05.29
[C++] vector #2  (0) 2023.05.29