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

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

STL中的Forward List实现了单链表。自C++11引入以来,Forward List比其他容器更适合插入、移除和移动操作(如sort),并允许常量时间插入和移除元素。它与list的区别在于,forward_list只跟踪下一个元素的位置,而list则跟踪上一个元素和下一个元素的位置。

forward_list::emplace_front()

该函数用于向forward list容器插入一个新元素,新元素将添加到forward list的开头。

语法:

forwardlistname.emplace_front(value)
参数:
作为参数传递的要插入到forward list中的元素。
结果:
参数添加到forward list的开头。

例如:

输入:myflist{1, 2, 3, 4, 5};
      myflist.emplace_front(6);
输出:myflist = 6, 1, 2, 3, 4, 5

输入:myflist{};
      myflist.emplace_front(4);
输出:myflist = 4

错误和异常

1. 它具有强异常保证,因此,如果抛出异常,不会进行任何更改。

2. 参数应与容器的类型相同,否则会抛出错误。

// INTEGER FORWARD LIST EXAMPLE
// CPP program to illustrate
// Implementation of emplace() function
#include <forward_list>
#include <iostream>
using namespace std;

int main() {
  forward_list<int> myflist;
  myflist.emplace_front(1);
  myflist.emplace_front(2);
  myflist.emplace_front(3);
  myflist.emplace_front(4);
  myflist.emplace_front(5);
  myflist.emplace_front(6);
  // forward list becomes 6, 5, 4, 3, 2, 1

  // printing the forward list
  for (auto it = myflist.begin(); it != myflist.end(); ++it)
    cout << ' ' << *it;

  return 0;
}  

输出:

6 5 4 3 2 1
// STRING FORWARD LIST EXAMPLE
// CPP program to illustrate
// Implementation of emplace() function
#include <forward_list>
#include <iostream>
#include <string>
using namespace std;

int main() {
  forward_list<string> myflist;
  myflist.emplace_front("Geeksforgeeks");
  myflist.emplace_front("is");
  myflist.emplace_front("This");
  // forward list becomes This, is, Geeksforgeeks

  // printing the forward list
  for (auto it = myflist.begin(); it != myflist.end(); ++it)
    cout << ' ' << *it;

  return 0;
}  

输出:

This is Geeksforgeeks
// CHARACTER FORWARD LIST EXAMPLE
// CPP program to illustrate
// Implementation of emplace() function
#include <forward_list>
#include <iostream>
using namespace std;

int main() {
  forward_list<char> myflist;
  myflist.emplace_front('z');
  myflist.emplace_front('y');
  myflist.emplace_front('x');
  myflist.emplace_front('b');
  myflist.emplace_front('a');
  // forward list becomes a, b, x, y, z

  // printing the forward list
  for (auto it = myflist.begin(); it != myflist.end(); ++it)
    cout << ' ' << *it;

  return 0;
}  

输出:

a b x y z

时间复杂度: O(1)

应用: 使用emplace_front()函数输入一个空的forward list,该forward list包含以下数字和顺序,然后对给定的forward list进行排序。

输入:7、89、45、6、24、58、43
输出:6、7、24、43、45、58、89
// CPP程序,演示emplace_front()函数的应用
#include <forward_list>
#include <iostream>
using namespace std;

int main() {
   forward_list<int> myforwardlist{};
   myforwardlist.emplace_front(43);
   myforwardlist.emplace_front(58);
   myforwardlist.emplace_front(24);
   myforwardlist.emplace_front(6);
   myforwardlist.emplace_front(45);
   myforwardlist.emplace_front(89);
   myforwardlist.emplace_front(7);

   // 前向链表变为
   // 7、89、45、6、24、58、43

   // 排序函数
   myforwardlist.sort();

   for (auto it = myforwardlist.begin(); it != myforwardlist.end(); ++it)
      cout << ' ' << *it;
}  

输出

6 7 24 43 45 58 89

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 教程