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,并且其元素与数组中的元素相同,如输出所示。
广告