Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ STL list 컨테이너에 요소를 삽입하는 방법 총정리

C++에서 STL list 컨테이너에 여러 개의 요소가 들어 있다고 가정해 봅시다. 여기에 새로운 요소를 추가하려면 리스트의 맨 앞, 맨 뒤, 혹은 원하는 임의의 위치에 삽입할 수 있습니다.

STL list의 대표적인 삽입 방법

1. 맨 앞에 삽입 — push_front()

push_front() 함수를 사용하면 리스트의 시작 부분에 새 요소를 추가할 수 있습니다.

2. 맨 뒤에 삽입 — push_back()

push_back() 함수를 사용하면 리스트의 마지막 부분에 새 요소를 추가할 수 있습니다.

3. 임의의 위치에 삽입 — insert()와 반복자 활용

특정 위치에 요소를 넣으려면 먼저 반복자(iterator)를 선언한 뒤 advance() 등으로 원하는 위치까지 이동시키고, insert() 메서드를 호출하여 해당 자리에 값을 삽입해야 합니다.

예제 코드

#include<iostream>
#include<list>
using namespace std;
void display(list<int> my_list){
    for (auto it = my_list.begin(); it != my_list.end(); ++it)
        cout << *it << " ";
}
int main() {
    int arr[] = {10, 41, 54, 20, 23, 69, 84, 75};
    int n = sizeof(arr)/sizeof(arr[0]);
    list<int> my_list;
    for(int i = 0; i<n; i++){
        my_list.push_back(arr[i]);
    }
    cout << "삽입 전 리스트: ";
    display(my_list);
    //맨 앞에 100 삽입
    my_list.push_front(100);
    //맨 뒤에 500 삽입
    my_list.push_back(500);
    //인덱스 5 위치에 1000 삽입
    list<int>::iterator it = my_list.begin();
    advance(it, 5);
    my_list.insert(it, 1000);
    cout << "\n삽입 후 리스트: ";
    display(my_list);
}

실행 결과

삽입 전 리스트: 10 41 54 20 23 69 84 75
삽입 후 리스트: 100 10 41 54 20 1000 23 69 84 75 500

정리

위 예제에서 볼 수 있듯이, push_front(100)으로 맨 앞에 100이 추가되고, push_back(500)으로 맨 뒤에 500이 추가되었습니다. 또한 반복자를 인덱스 5까지 이동시킨 후 insert(it, 1000)을 호출하여 기존 값 23 앞에 1000이 성공적으로 삽입된 것을 확인할 수 있습니다. STL list는 이중 연결 리스트로 구현되어 있어 맨 앞과 맨 뒤에서의 삽입·삭제가 O(1)의 시간 복잡도로 매우 빠르다는 장점이 있습니다.