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

C++ STL forward_list::cbefore_begin() 함수 완벽 정리

이 글에서는 C++에서 forward_list::cbefore_begin() 함수가 어떻게 동작하는지 자세히 알아보겠습니다.

forward_list란?

forward_list는 일반 리스트(list)와 달리 다음 요소와의 연결만 유지하는 자료구조입니다. 일반 리스트는 앞뒤 요소 모두와 연결되어 있어 양방향 순회가 가능하지만, forward_list는 앞쪽(순방향)으로만 순회할 수 있습니다.

forward_list::cbefore_begin() 함수는 C++ 표준 템플릿 라이브러리(STL)의 일부로, 리스트의 첫 번째 요소 에 있는 위치를 가리키는 데 사용됩니다.

이 함수를 호출하려면 <forward_list> 헤더 파일을 포함해야 합니다.

구문

Forward_List_Name.cbefore_begin();

매개변수

이 함수는 어떠한 매개변수도 받지 않습니다.

반환 값

forward_list의 첫 번째 요소 앞 위치를 가리키는 상수 반복자(constant iterator)를 반환합니다.

동작 원리 예시

입력: 8, 9, 32, 21
출력: 56 8 9 32 21

설명: 먼저 요소 8, 9, 32, 21을 가진 forward_list를 생성합니다. 그다음 cbefore_begin() 함수를 호출하여 리스트의 첫 번째 요소(8) 앞 위치를 가리키고, 해당 위치를 반복자 itr에 저장합니다. 이후 insert_after() 함수를 사용해 이 위치에 요소 56을 삽입합니다. 최종 출력이 56 8 9 32 21이 되어 56이 리스트 맨 앞에 추가된 것을 확인할 수 있으며, 이는 cbefore_begin() 함수가 올바르게 동작했음을 보여줍니다.

프로그램 접근 방법

  • int 타입의 forward_list(예: "Lt")를 생성하고 값을 할당합니다.
  • auto 타입의 객체 "itr"를 생성하고, cbefore_begin() 함수가 반환한 반복자를 저장합니다.
  • insert_after() 함수를 사용하여 리스트 맨 앞에 새 요소를 삽입합니다. 첫 번째 인수로 반복자 "itr"를, 두 번째 인수로 삽입할 값을 전달합니다.
  • for 루프를 시작하여 리스트를 출력합니다.
  • 루프 내에서 auto 타입의 객체 "itr"를 생성하고, begin() 함수를 통해 리스트의 첫 번째 요소로 초기화합니다.
  • cend() 함수를 활용하여 "itr"가 리스트의 마지막 요소가 아닌 조건으로 루프의 종료 조건을 지정합니다.
  • *itr를 출력합니다.

알고리즘

시작
1단계 → main() 함수 내에서
    forward_list<int> Lt={} 초기화
    auto itr = Lt.cbefore_begin() 초기화
    insert_after(itr, new_element) 호출
    auto itr = Lt.begin(), itr != Lt.end(), ++itr 조건으로 루프 실행
    *itr 출력
종료

전체 예제 코드

#include<iostream>
#include<forward_list>
using namespace std;
int main() {
    forward_list<int> Lt = { 40, 55, 67, 89 };
    auto itr = Lt.cbefore_begin();
    Lt.insert_after(itr, 77);
    for (auto it = Lt.begin(); it != Lt.end(); ++it)
    cout << *it << " ";
    return 0;
}

출력 결과

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

77 40 55 67 89

실행 결과 77이 리스트의 맨 앞에 성공적으로 삽입된 것을 확인할 수 있습니다. 이처럼 cbefore_begin()insert_after()와 함께 사용하여 리스트 맨 앞에 새로운 요소를 손쉽게 추가할 수 있도록 도와주는 유용한 함수입니다.