📜  C++ STL中的forward_list :: swap()(1)

📅  最后修改于: 2023-12-03 14:59:46.480000             🧑  作者: Mango

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

C++ STL中的forward_list是基于单向链表实现的 STL 中的容器,使用 forward_list 时需要注意它与另一个链表容器 list 的不同:forward_list 没有了析构函数。因为它是用单独的链表节点实现的,所以它本身没有拥有节点的权限。

forward_list::swap()是forward_list容器的成员函数,用于交换两个列表的内容。

语法

下面是 forward_list::swap() 的语法:

void swap (forward_list& x) noexcept;
参数

x:与容器交换内容的 forward_list。

返回值

无。

示例

以下示例展示了 forward_list::swap() 的用法:

#include <iostream>
#include <forward_list>

using namespace std;

int main () {

   // 定义两个 forward_list 容器
   forward_list<int> list1 = { 1, 2, 3};
   forward_list<int> list2 = { 10, 20, 30 };

   // 输出交换前两个容器的值
   cout << "Before swap: " << endl;
   cout << "list1: ";
   for (int& i : list1)
      cout << i << " ";
   cout << endl;
   cout<< "list2: ";
   for (int& i : list2)
      cout << i << " ";
   cout << endl;

   // 交换两个容器的内容
   list1.swap(list2);

   // 输出交换后两个容器的值
   cout << "After swap: " << endl;
   cout << "list1: ";
   for (int& i : list1)
      cout << i << " ";
   cout << endl;
   cout<< "list2: ";
   for (int& i : list2)
      cout << i << " ";
   cout << endl;

   return 0;
}

输出结果:

Before swap: 
list1: 1 2 3 
list2: 10 20 30 
After swap: 
list1: 10 20 30 
list2: 1 2 3
注意事项
  • 使用 forward_list::swap() 时需要注意容器中元素的类型,要保证两个容器的元素类型相同才能进行交换。
  • 由于 forward_list::swap() 是 noexcept 函数,因此它不会抛出任何异常。
  • 如果限制条件允许,尽量使用 forward_list 容器代替 list 容器,因为 forward_list 容器的实现更加轻巧、高效。