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

C++ STL list::front() 함수 완벽 가이드: 사용법과 예제

이 글에서는 C++ STL의 list::front() 함수가 어떻게 동작하는지, 그 문법과 실제 예제를 통해 자세히 알아보겠습니다.

STL에서 리스트(List)란 무엇인가?

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

리스트는 배열(array), 벡터(vector), 덱(deque)에 비해 컨테이너 내 임의의 위치에서 요소를 삽입, 추출, 이동하는 작업에서 더 뛰어난 성능을 보입니다. 다만 리스트는 특정 요소에 직접 접근하는 속도가 느리다는 단점이 있습니다.

리스트는 forward_list와 유사하지만, forward_list 객체는 단일 연결 리스트(singly linked list)로 구현되어 있어 앞쪽 방향으로만 순회할 수 있다는 차이점이 있습니다.

list::front() 함수란?

list::front()는 C++ STL에 내장된 함수로, <list> 헤더 파일에 선언되어 있습니다. 이 함수는 리스트 컨테이너의 첫 번째 위치에 있는 요소에 대한 직접 참조(reference)를 반환합니다.

주의할 점은 빈(empty) 리스트에 이 함수를 호출하면 정의되지 않은 동작(undefined behavior)이 발생한다는 것입니다. 따라서 호출 전에 리스트가 비어 있는지 반드시 확인해야 합니다.

문법(Syntax)

list_container.front();

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

반환 값(Return Value)

리스트 컨테이너의 첫 번째 요소에 대한 참조를 반환합니다. 반환값이 참조이기 때문에 이를 활용하면 첫 번째 요소의 값을 읽거나 수정할 수 있습니다.

예제 1: 첫 번째 요소 가져오기

아래 코드는 front() 함수를 사용하여 리스트의 첫 번째 요소를 가져와 화면에 출력하는 예제입니다.

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

int main(){
    // 리스트 생성
    list<int> myList;
    // 리스트에 요소 삽입
    myList.push_back(3);
    myList.push_back(2);
    myList.push_back(21);
    myList.push_back(11);
    // 리스트의 첫 번째 요소 가져오기
    int first_ele = myList.front();
    cout << "first element in a list is : " << first_ele;
    return 0;
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

first element in a list is : 3

예제 2: 첫 번째 요소 수정하기

front()는 참조를 반환하기 때문에 첫 번째 요소의 값을 변경하는 데에도 활용할 수 있습니다. 아래 코드는 front()back() 함수를 호출하여 리스트의 첫 번째 요소 값을 마지막 요소 값으로 교체하는 예제입니다.

#include <iostream>
#include <list>

int main (){
    std::list<int> myList;
    myList.push_back(77);
    myList.push_back(2);
    myList.push_back(21);
    myList.push_back(23);
    // 첫 번째 요소를 마지막 요소로 교체
    myList.front() = myList.back();
    std::cout << "replacing first element with the last element : " << myList.front() << '\n';
    return 0;
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

replacing first element with the last element : 23

정리

list::front() 함수는 리스트의 첫 번째 요소에 빠르게 접근하고 싶을 때 유용하게 사용됩니다. 반환 타입이 참조이므로 값을 읽는 것뿐만 아니라 수정까지 가능하다는 점을 기억하면 됩니다. 단, 빈 리스트에 호출하면 정의되지 않은 동작이 발생하므로, 필요하다면 empty() 함수로 리스트가 비어 있는지 먼저 검사하는 습관을 들이는 것이 좋습니다.