C ++ STL中的forward_list :: cbefore_begin()

给出的任务是显示C ++中forward_list::cbefore_begin()函数的工作。

与正常列表不同,forward_list仅与下一个元素保持链接,而普通列表与下一个以及前面的元素保持链接,这有助于双向迭代。但是forward_list只能在向前方向上进行迭代。

forward_list::cbefore_begin()函数是C ++标准模板库的一部分。它用于获取列表第一个元素之前的位置。

应包含<forward_list>头文件以调用此函数。

语法

Forward_List_Name.cbefore_begin();

参数

该函数不接受任何参数。

返回值

该函数返回一个常量迭代器,该迭代器指向forward_list的第一个元素之前的位置。

示例

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

说明 -这里我们创建了一个包含元素8,9,32,21的转发列表。然后,我们调用cbefore_begin()函数,该函数指向列表的第一个元素之前的位置,并将该位置存储在迭代器itr中。然后,我们使用insert_after()函数将元素56插入到第一个元素之前的位置,即8。因此,当我们打印该元素时,生成的输出为56 8 9 32 21,这表明56获取到元素的开头。该列表,因此cbefore_beginfunction()正常工作。

以下程序中使用的方法如下 -

  • 首先创建一个forward_list,让我们说int类型的“ Lt”并为其分配一些值。

  • 然后创建一个类型为auto的对象“ itr”并存储在其中,该迭代器通过调用cbefore_begin()函数返回。

  • 然后,使用insert_after()函数在列表的开头插入一个新元素。将迭代器“ itr”作为第一个参数传递,将要插入的数字作为第二个参数传递。

  • 然后启动For循环以打印列表

  • 然后在for循环内创建类型为auto的对象“ itr”,以接收end()andbegin()函数的返回值。通过使用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