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 的 forward list。然后我们调用了 cbefore_begin() 函数,该函数指向列表第一个元素之前的 位置并将该位置存储在迭代器 itr 中。然后我们使用 insert_after() 函数在第一个元素(即 8)之前插入元素 56。因此,当我们打印它时,生成的输出为 56 8 9 32 21,这表明 56 被放在了列表的开头,因此 cbefore_begin() 函数工作正常。

下面程序中使用的步骤如下:

  • 首先创建一个 forward_list,例如名为“Lt”的 int 类型 forward_list 并为其赋值。
  • 然后创建一个 auto 类型的对象“itr”,并在其中存储调用 cbefore_begin() 函数返回的迭代器。
  • 然后使用 insert_after() 函数在列表开头插入一个新元素。将迭代器“itr”作为第一个参数,将要插入的数字作为第二个参数。
  • 然后启动一个 For 循环来打印列表。
  • 然后在 for 循环内创建一个 auto 类型的对象“itr”来接收 end() 和 begin() 函数的返回值。使用 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

更新于:2020年1月20日

浏览量:69

开启您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.