บทนำ
งานนี้แสดงการทำงานของ forward_list::assign() ใน C++
forward_list เก็บลิงก์เฉพาะอิลิเมนต์ถัดไป วนลูปได้เฉพาะทิศทางหน้า
forward_list::assign() เป็นส่วนหนึ่งของ C++ STL ใช้แทรกอิลิเมนต์เข้าไปใน forward list หากลิสต์มีข้อมูลอยู่แล้ว จะถูกแทนที่ด้วยข้อมูลใหม่
ต้อง include <forward_list>
Syntax
มี 3 รูปแบบ syntax สำหรับวิธีการต่างกัน:
Forward_list_name.assign(initializer_list);Forward_list_name.assign(iterator itr1, iterator itr2);Forward_list_name.assign(count, value);
Parameters
- Initializer_list - ลิสต์ได้ค่าตามลำดับที่ส่งเข้าไป
- Iterator - ลิสต์ได้ค่าระหว่าง itr1 ถึง itr2 (รวม itr1 ไม่รวม itr2)
- Count และ Value - count = จำนวนอิลิเมนต์, value = ค่าที่จะกำหนดให้ทุกอิลิเมนต์
Return Value
ไม่คืนค่า
ตัวอย่าง
Input: assign(5, 1) Output: 1 1 1 1 1
คำอธิบาย - สร้าง forward list Lt แล้ว assign(5, 1) → 5 อิลิเมนต์ ค่า 1 ทุกตัว
แนวทางในโปรแกรม
- สร้าง forward_list 3 ตัว: Lt1, Lt2, Lt3
- assign() ให้ Lt1 ด้วย initializer list
- assign() ให้ Lt2 ด้วย count และ value
- assign() ให้ Lt3 ด้วย iterator ชี้ Lt1.begin() ถึง Lt1.end()
อัลกอริทึม
Start
Step 1 → In main()
Declare forward_lists<int> Lt1, Lt2, Lt3
Call Lt1.assign(initializer list)
Call Lt2.assign(count, value)
Call Lt3.assign(Lt1.begin(), Lt1.end())
Stop
ตัวอย่างโค้ด
#include <forward_list>
#include <iostream>
using namespace std;
int main() {
forward_list<int> Lt1;
forward_list<int> Lt2;
forward_list<int> Lt3;
// กำหนดค่าให้ Lt1
Lt1.assign({4, 9, 7, 8});
// กำหนดค่าให้ Lt2
Lt2.assign(3, 6);
// คัดลอกจาก Lt1 ให้ Lt3
Lt3.assign(Lt1.begin(), Lt1.end());
// แสดงลิสต์
cout << "Lt1: ";
for (int& D : Lt1) cout << D << " ";
cout << endl;
cout << "Lt2: ";
for (int& D : Lt2) cout << D << " ";
cout << endl;
cout << "Lt3: ";
for (int& D : Lt3) cout << D << " ";
return 0;
}
ผลลัพธ์
Lt1: 4 9 7 8 Lt2: 6 6 6 Lt3: 4 9 7 8
คำอธิบาย
Lt1: ใช้ initializer list ได้ 4 ค่า
Lt2: ใช้ count=3, value=6 ได้ 3 ตัวค่า 6
Lt3: คัดลอกจาก Lt1 ทั้งหมด ได้ค่าเหมือน Lt1