C++ STL 中的 list assign() 函数


本任务旨在展示 C++ 中 assign() 函数的工作原理。

list::assign() 函数是 C++ 标准模板库的一部分。它用于为列表分配值,以及将值从一个列表复制到另一个列表。

需要包含 <list> 头文件才能调用此函数。

语法

分配新值的语法如下:

List_Name.assign(size,value)

语法

将值从一个列表复制到另一个列表的语法如下:

First_List.assign(Second_List.begin(),Second_list.end())

参数

该函数接受两个参数:

第一个是 size,表示列表的大小;第二个是 value,表示要存储在列表中的数据值。

返回值

该函数没有返回值。

示例

Input: Lt.assign(3,10)
Output: The size of list Lt is 3.
The elements of the list Lt are 10 10 10.

**说明**:

以下示例演示了如何使用 assign() 函数为列表分配其大小和值。传递给 list 函数的第一个值将成为列表的大小,在本例中为 3;第二个元素是分配给列表每个位置的值,这里为 10。

示例

Input: int array[5] = { 1, 2, 3, 4 }
Lt.assign(array,array+3)
Output: The size of list Lt is 3.
The elements of the list Lt are 1 2 3.

**说明**:

以下示例演示了如何使用数组为列表分配值。将分配给列表的元素总数将成为列表的大小。

用户只需将数组的名称作为 assign() 函数的第一个参数传递,第二个参数应为数组的名称,后跟“+”号以及用户想要分配给列表的元素数量。

在上述情况下,我们写了 3,因此数组的前三个元素将被分配给列表。

如果我们写入的数字大于数组中存在的元素数量(例如 6),则程序不会显示任何错误,而是列表的大小将变为 6,列表中的额外位置将分配值为零。

**以下程序中使用的算法如下**:

  • 首先创建一个函数 ShowList(list<int> L),用于显示列表的元素。
  • 创建一个迭代器,例如 itr,它将包含要显示的列表的初始元素。
  • 使循环运行,直到 itr 达到列表的最后一个元素。
  • 然后在 main() 函数中使用 list<int> 创建三个列表,例如 L1、L2 和 L3,以便它们接受 int 类型的值,然后创建一个 int 类型的数组,例如 arr[],并为其分配一些值。
  • 然后使用 assign() 函数为列表 L1 分配大小和一些值,然后将列表 L1 传递到 ShowDisplay() 函数中。
  • 然后使用 assign() 函数将列表 L1 的元素复制到 L2 中,并将列表 L2 传递到 ShowList() 函数中。
  • 然后使用 assign() 函数将数组 arr[] 的元素复制到列表 L3 中,并将列表 L3 传递到 DisplayList() 函数中。

算法

Start
Step 1-> Declare function DisplayList(list<int> L) for showing list elements
   Declare iterator itr
   Loop For itr=L.begin() and itr!=L.end() and itr++
   Print *itr
   End
Step 2-> In function main()
   Declare lists L1,L2,L3
   Initialize array arr[]
   Call L1.assign(size,value)
   Print L1.size();
   Call function DisplayList(L1) to display L1
   Call L2.assign(L1.begin(),L1.end())
   Print L2.size();
   Call function DisplayList(L2) to display L2
   Call L3.assign(arr,arr+4)
   Print L3.size();
   Call function DisplayList(L3) to display L3
Stop

示例

 在线演示

#include<iostream>
#include<list>
using namespace std;
int ShowList(list<int> L) {
   cout<<"The elements of the list are ";
   list<int>::iterator itr;
   for(itr=L.begin(); itr!=L.end(); itr++) {
      cout<<*itr<<" ";
   }
   cout<<"\n";
}
int main() {
   list<int> L1;
   list<int> L2;
   list<int> L3;
   int arr[10] = { 6, 7, 2, 4 };
   //assigning size and values to list L1
   L1.assign(3,20);
   cout<<"The size of list L1 is "<<L1.size()<<"\n";
   ShowList(L1);
   //copying the elements of L1 into L3
   L2.assign(L1.begin(),L1.end());
   cout<<"The size of list is L2 "<<L2.size()<<"\n";
   ShowList(L2);
   //copying the elements of arr[] into list L3
   L3.assign(arr,arr+4);
   cout<<"The size of list is L3 "<<L3.size()<<"\n";
   ShowList(L3);
   return 0;
}

输出

如果我们运行以上代码,它将生成以下输出:

The size of list L1 is 3
The elements of the list are 20 20 20
The size of list L2 is 3
The elements of the list are 20 20 20
The size of list L3 is 4
The elements of the list are 6 7 2 4

解释

对于列表 L1,我们在 assign() 函数中将大小设置为 3,值设置为 20,从而生成了以上输出。

然后我们将列表 L1 的元素复制到 L2 中,这使得 L2 的大小和值与 L1 相同,如输出所示。

然后我们使用 assign 函数复制了数组 arr[] 的所有元素,这使得 L3 的大小等于 4,并且其元素与数组中的元素相同,如输出所示。

更新于:2020 年 1 月 20 日

2K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告