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

C++ STL list::empty() 함수 완벽 정리: 개념, 문법과 예제


이 글에서는 C++에서 list::empty() 함수의 동작 원리, 문법 그리고 실제 활용 예제를 자세히 살펴보겠습니다.

STL에서 리스트(List)란 무엇일까요?

리스트는 시퀀스 내 임의의 위치에서 상수 시간(O(1))에 삽입과 삭제가 가능한 자료구조입니다. 리스트는 내부적으로 이중 연결 리스트(doubly linked list)로 구현되어 있으며, 비연속적인 메모리 할당을 허용합니다.

리스트는 배열(array), 벡터(vector), 덱(deque)에 비해 컨테이너의 어떤 위치에서든 요소를 삽입·추출·이동하는 작업에서 더 우수한 성능을 보입니다. 반면, 특정 요소에 직접 접근하는 속도는 느린 편입니다. 리스트는 forward_list와 유사하지만, forward_list는 단일 연결 리스트(singly linked list)라는 점과 앞쪽 방향으로만 순회할 수 있다는 차이가 있습니다.

list::empty() 함수란?

list::empty()는 C++ STL에 내장된 함수로, <list> 헤더 파일에 선언되어 있습니다. 이 함수는 주어진 리스트 컨테이너가 비어 있는지(크기가 0인지) 여부를 검사하며, 리스트가 비어 있으면 true, 비어 있지 않으면 false를 반환합니다.

문법

bool list_name.empty();

이 함수는 별도의 매개변수를 받지 않습니다.

반환 값

컨테이너의 크기가 0이면 true를, 0이 아니면 false를 반환합니다.

예제 1: 리스트가 비어 있는지 확인하기

아래 코드에서는 empty() 함수를 호출해 리스트가 비어 있는지 확인하고, push_back() 함수로 요소를 삽입한 뒤 결과가 어떻게 달라지는지 살펴봅니다.

#include <bits/stdc++.h>
using namespace std;

int main() {
    list<int> myList; // 리스트 생성

    // empty() 함수를 호출해 리스트가 비어 있는지 확인
    if (myList.empty())
        cout << "my list is empty\n";
    else
        cout << "my list is not empty\n";

    // push_back()으로 리스트에 요소 삽입
    myList.push_back(1);
    myList.push_back(2);
    myList.push_back(3);
    myList.push_back(4);

    if (myList.empty())
        cout << "my list is empty\n";
    else
        cout << "my list is not empty\n";

    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

my list is empty
my list is not empty

예제 2: empty()를 활용한 리스트 순회

다음 코드는 1부터 10까지의 숫자를 모두 곱하는 프로그램입니다. 동작 과정은 다음과 같습니다.

  • push_back() 함수를 사용해 리스트에 요소를 삽입합니다.

  • empty() 함수를 사용해 리스트가 빌 때까지 순회하면서 요소를 하나씩 제거합니다.

  • 최종 결과를 출력합니다.

#include <bits/stdc++.h>
using namespace std;

int main() {
    list<int> myList;
    int product = 1;

    // 1부터 10까지 리스트에 삽입
    for (int i = 1; i <= 10; ++i)
        myList.push_back(i);

    // 리스트가 빌 때까지 front 값을 곱한 뒤 제거
    while (!myList.empty()) {
        product *= myList.front();
        myList.pop_front();
    }

    cout << "product of numbers from 1-10 is: " << product << '\n';
    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 출력이 생성됩니다.

product of numbers from 1-10 is: 3628800