Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++ STL의 forward_list::cbefore_begin()

<시간/>

C++에서 forward_list::cbefore_begin() 함수의 작동을 보여주는 작업이 주어진다.

forward_list는 이전 요소뿐만 아니라 다음 요소와의 연결을 유지하는 일반 목록과 달리 다음 요소와의 연결만 유지하므로 양방향 반복을 돕습니다. 하지만 forward_list는 순방향으로만 반복할 수 있습니다.

forward_list::cbefore_begin() 함수는 C++ 표준 템플릿 라이브러리의 일부입니다. 목록의 첫 번째 요소 앞의 위치를 ​​얻는 데 사용됩니다.

이 함수를 호출하려면 헤더 파일이 포함되어야 합니다.

구문

Forward_List_Name.cbefore_begin();

매개변수

함수는 매개변수를 허용하지 않습니다.

반환 값

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

Input: 8, 9, 32, 21
Output: 56 8 9 32 21

설명 − 여기에서 요소 8,9,32,21로 순방향 목록을 만들었습니다. 그런 다음 목록의 첫 번째 요소 앞의 위치를 ​​가리키고 해당 위치를 반복자 itr에 저장하는 cbefore_begin() 함수를 호출했습니다. 그런 다음 insert_after() 함수를 사용하여 요소 56을 첫 번째 요소 앞의 위치, 즉 8에 삽입합니다. 따라서 인쇄할 때 생성된 출력은 56 8 9 32 21이며, 이는 56이 시작 부분에 있음을 보여줍니다. 목록 및 따라서 cbefore_begin function()이 올바르게 작동했습니다.

아래 프로그램에서 사용하는 접근 방식은 다음과 같습니다. -

  • 먼저 forward_list를 만들고 int 유형의 "Lt"라고 말하고 값을 할당하겠습니다.
  • 그런 다음 auto 유형의 객체 "itr"을 만들고 cbefore_begin() 함수를 호출하여 반환된 반복자를 저장합니다.
  • 그런 다음 insert_after() 함수를 사용하여 목록의 시작 부분에 새 요소를 삽입합니다. 반복자 "itr"을 첫 번째 인수로 전달하고 삽입할 숫자를 두 번째 인수로 전달합니다.
  • 그런 다음 목록 인쇄를 위한 For 루프 시작
  • 그런 다음 end() 및 begin() 함수의 반환 값을 수신하기 위해 for 루프 내부에 auto 유형의 객체 "itr"을 만듭니다. begin() 함수를 사용하여 목록의 첫 번째 요소를 지정하여 "itr"을 초기화합니다.
  • 그런 다음 cend() 함수를 사용하여 목록의 마지막 요소와 같지 않은 "itr"을 작성하여 for 루프의 종료 조건을 지정합니다.
  • *itr을 인쇄합니다.

알고리즘

Start
Step 1->In function main()
   Initialize forward_list<int> Lt={}
   Initialize auto itr= Lt.cbefore_begin()
   Call insert_after(itr, new_element)
   Loop For auto itr = Ltcbegin() and itr != Lt.end() and itr++
   Print *itr
   End
Stop

#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 itr = Lt.begin(); it != Lt.end(); ++itr)
   cout << *itr << " ";
   return 0;
}

출력

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

77 40 55 67 89