给出的任务是显示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