ไลบรารี C ++ - <list>
บทนำ
รายการเป็นคอนเทนเนอร์ลำดับที่นิยมใช้ คอนเทนเนอร์เป็นวัตถุที่เก็บข้อมูลประเภทเดียวกัน คอนเทนเนอร์รายการถูกนำไปใช้เป็นรายการที่เชื่อมโยงเป็นสองเท่าดังนั้นจึงให้การเข้าถึงข้อมูลตามลำดับแบบสองทิศทาง
รายการไม่ได้ให้การเข้าถึงแบบสุ่มอย่างรวดเร็ว แต่รองรับการเข้าถึงตามลำดับในทั้งสองทิศทางเท่านั้น รายการช่วยให้สามารถแทรกและลบได้ทุกที่ภายในลำดับเวลาคงที่
องค์ประกอบของรายการสามารถกระจัดกระจายไปตามหน่วยความจำต่างๆ คอนเทนเนอร์เก็บข้อมูลที่จำเป็นเพื่อให้สามารถเข้าถึงข้อมูลได้ตามลำดับ รายการสามารถย่อหรือขยายได้ตามต้องการจากปลายทั้งสองด้านในเวลาดำเนินการ ข้อกำหนดในการจัดเก็บจะถูกเติมเต็มโดยอัตโนมัติโดยตัวจัดสรรภายใน
รายการขนาดศูนย์ก็ใช้ได้เช่นกัน ในกรณีนั้น list.begin () และ list.end () ชี้ไปที่ตำแหน่งเดียวกัน แต่พฤติกรรมของการเรียก front () หรือ back () นั้นไม่ได้กำหนดไว้
คำจำกัดความ
ด้านล่างนี้คือคำจำกัดความของ std :: list จากไฟล์ส่วนหัว <list>
template < class T, class Alloc = allocator<T> > class list;
พารามิเตอร์
T - ประเภทขององค์ประกอบที่มีอยู่
T อาจถูกแทนที่ด้วยประเภทข้อมูลอื่น ๆ รวมถึงประเภทที่ผู้ใช้กำหนด
Alloc - ประเภทของวัตถุผู้จัดสรร
โดยค่าเริ่มต้นเทมเพลตคลาสตัวจัดสรรจะถูกใช้ซึ่งกำหนดรูปแบบการจัดสรรหน่วยความจำที่ง่ายที่สุดและไม่ขึ้นกับค่า
ประเภทสมาชิก
ประเภทสมาชิกต่อไปนี้สามารถใช้เป็นพารามิเตอร์หรือประเภทการส่งคืนโดยฟังก์ชันสมาชิก
| ซีเนียร์ | ประเภทสมาชิก | คำจำกัดความ |
|---|---|---|
| 1 | value_type | T (พารามิเตอร์แรกของเทมเพลต) |
| 2 | จัดสรร _type | Alloc (พารามิเตอร์ที่สองของเทมเพลต) |
| 3 | เอกสารอ้างอิง | value_type & |
| 4 | const_reference | const value_type & |
| 5 | ตัวชี้ | value_type * |
| 6 | const_pointer | const value_type * |
| 7 | iterator | ตัววนซ้ำการเข้าถึงโดยสุ่มไปยัง value_type |
| 8 | const_iterator | ตัววนซ้ำการเข้าถึงโดยสุ่มไปยัง const value_type |
| 9 | reverse_iterator | std :: reverse_iterator <iterator> |
| 10 | const_reverse_iterator | std :: reverse_iterator <const_iterator> |
| 11 | size_type | size_t |
| 12 | different_type | ptrdiff_t |
ฟังก์ชั่นจาก <list>
ด้านล่างนี้คือรายการวิธีการทั้งหมดจากส่วนหัว <list>
ตัวสร้าง
| ซีเนียร์ | วิธีการและคำอธิบาย |
|---|---|
| 1 | list :: list ตัว
สร้างเริ่มต้น สร้างรายการว่างที่มีองค์ประกอบเป็นศูนย์ |
| 2 | รายการ :: ตัว สร้างการเติมรายการ
สร้างรายการใหม่กับnองค์ประกอบและกำหนดValกับองค์ประกอบของแต่ละรายการ |
| 3 | รายการ :: ตัว สร้างการเติมรายการ
สร้างรายการใหม่ด้วยองค์ประกอบnและกำหนดค่าเป็นศูนย์ให้กับแต่ละองค์ประกอบของรายการ |
| 4 | รายการ :: ตัว สร้างช่วงรายการ
โครงสร้างรายการที่มีองค์ประกอบเป็นจำนวนมากในช่วงแรกของการที่ผ่านมา |
| 5 | list :: list copy constructor
สร้างรายการพร้อมสำเนาของแต่ละองค์ประกอบที่มีอยู่ในรายการที่มีอยู่ |
| 6 | list :: list move constructor
สร้างรายการที่มีเนื้อหาอื่น ๆโดยใช้ความหมายการย้าย |
| 7 | list :: list initializer list constructor สร้างรายการที่มีเนื้อหาอื่น ๆโดยใช้ความหมายการย้าย |
Destructor
| ซีเนียร์ | วิธีการและคำอธิบาย |
|---|---|
| 1 | รายการ :: ~ รายการ
ทำลายวัตถุในรายการโดยการยกเลิกการจัดสรรหน่วยความจำ |
ฟังก์ชั่นสมาชิก
| ซีเนียร์ | วิธีการและคำอธิบาย |
|---|---|
| 1 | รายการ :: กำหนด เวอร์ชันของช่วง กำหนดค่าใหม่ให้กับรายการโดยแทนที่ค่าเก่า |
| 2 | รายการ :: กำหนด รุ่นเติม กำหนดค่าใหม่ให้กับรายการโดยแทนที่ค่าเก่า |
| 3 | list :: กำหนด เวอร์ชันรายการ initializer กำหนดค่าใหม่ให้กับรายการโดยแทนที่ค่าเก่า |
| 4 | รายการ :: กลับ
ส่งกลับการอ้างอิงถึงองค์ประกอบสุดท้ายของรายการ |
| 5 | รายการ :: เริ่มต้น
ส่งคืนตัววนซ้ำการเข้าถึงโดยสุ่มซึ่งชี้ไปที่องค์ประกอบแรกของรายการ |
| 6 | รายการ :: cbegin
ส่งคืนตัววนซ้ำการเข้าถึงแบบสุ่มคงที่ซึ่งชี้ไปที่จุดเริ่มต้นของรายการ |
| 7 | รายการ :: cend
ส่งคืนตัววนซ้ำการเข้าถึงแบบสุ่มคงที่ซึ่งชี้ไปที่ส่วนท้ายของรายการ |
| 8 | รายการ :: ชัดเจน
ทำลายรายการโดยลบองค์ประกอบทั้งหมดออกจากรายการและกำหนดขนาดของรายการเป็นศูนย์ |
| 9 | รายการ :: crbegin
ส่งคืนตัววนซ้ำแบบย้อนกลับคงที่ซึ่งชี้ไปยังองค์ประกอบสุดท้ายของรายการ |
| 10 | รายการ :: crend
ส่งกลับค่าตัววนซ้ำแบบย้อนกลับคงที่ซึ่งชี้ไปที่องค์ประกอบทางทฤษฎีที่อยู่ก่อนองค์ประกอบแรกในรายการ |
| 11 | รายการ :: emplace
ขยายรายการโดยการแทรกองค์ประกอบใหม่ในตำแหน่งที่กำหนด |
| 12 | รายการ :: emplace_back
แทรกองค์ประกอบใหม่ที่ส่วนท้ายของรายการและเพิ่มขนาดของรายการทีละรายการ |
| 13 | รายการ :: emplace_front
แทรกองค์ประกอบใหม่ที่จุดเริ่มต้นของรายการและเพิ่มขนาดของรายการทีละรายการ |
| 14 | รายการ :: ว่างเปล่า
ทดสอบว่ารายการว่างหรือไม่ |
| 15 | รายการ :: จบ
ส่งคืนตัววนซ้ำการเข้าถึงโดยสุ่มซึ่งชี้ไปยังองค์ประกอบสุดท้ายของรายการ |
| 16 | รายการ :: ลบตำแหน่งรุ่น ลบองค์ประกอบเดียวออกจากรายการ |
| 17 | รายการ :: ลบเวอร์ชันช่วง ลบช่วงขององค์ประกอบออกจากรายการ |
| 18 | รายการ :: ด้านหน้า
ส่งกลับการอ้างอิงถึงองค์ประกอบแรกของรายการ |
| 19 | รายการ :: get_allocator
ส่งคืนตัวจัดสรรที่เกี่ยวข้องกับรายการ |
| 20 | รายการ :: แทรก เวอร์ชันองค์ประกอบเดียว ขยายตัววนซ้ำโดยการแทรกองค์ประกอบใหม่ที่ตำแหน่งในรายการ |
| 21 | รายการ :: ใส่ รุ่นเติม ขยายรายการโดยการแทรกองค์ประกอบใหม่ในคอนเทนเนอร์ |
| 22 | รายการ :: แทรก ช่วงเวอร์ชัน ขยายรายการโดยการแทรกองค์ประกอบใหม่ในคอนเทนเนอร์ |
| 23 | รายการ :: แทรก รุ่นย้าย ขยายรายการโดยการแทรกองค์ประกอบใหม่ในคอนเทนเนอร์ |
| 24 | list :: แทรก เวอร์ชันรายการ initializer ขยายรายการโดยการแทรกองค์ประกอบใหม่ในคอนเทนเนอร์ |
| 25 | รายการ :: max_size
ส่งคืนจำนวนองค์ประกอบสูงสุดที่สามารถถือได้ตามรายการ |
| 26 | รายการ :: ผสาน
รวมรายการที่เรียงลำดับสองรายการเข้าด้วยกัน |
| 27 | รายการ :: รวม ฟังก์ชันเปรียบเทียบ รวมรายการที่เรียงลำดับสองรายการเข้าด้วยกัน |
| 28 | รายการ :: ผสาน ย้ายเวอร์ชัน รวมรายการที่เรียงลำดับสองรายการเข้าด้วยกันโดยใช้ย้ายความหมาย |
| 29 | รายการ :: ผสาน เปรียบเทียบฟังก์ชันการย้ายเวอร์ชัน รวมรายการที่เรียงลำดับสองรายการเข้าด้วยกันโดยใช้ย้ายความหมาย |
| 30 | list :: operator = copy version กำหนดเนื้อหาใหม่ให้กับรายการโดยแทนที่เนื้อหาเก่า |
| 31 | list :: operator = ย้ายเวอร์ชัน กำหนดเนื้อหาใหม่ให้กับรายการโดยแทนที่เนื้อหาเก่า |
| 32 | list :: operator = เวอร์ชันรายการ initializer กำหนดเนื้อหาใหม่ให้กับรายการโดยแทนที่เนื้อหาเก่า |
| 33 | รายการ :: pop_back
ลบองค์ประกอบสุดท้ายออกจากรายการ |
| 34 | รายการ :: pop_front
ลบองค์ประกอบแรกออกจากรายการ |
| 35 | รายการ :: push_back
แทรกองค์ประกอบใหม่ที่ท้ายรายการ |
| 36 | list :: push_back รุ่นย้าย แทรกองค์ประกอบใหม่ที่ท้ายรายการ |
| 37 | รายการ :: push_front
แทรกองค์ประกอบใหม่ที่จุดเริ่มต้นของรายการ |
| 38 | list :: รุ่นpush_front move แทรกองค์ประกอบใหม่ที่จุดเริ่มต้นของรายการ |
| 39 | รายการ :: rbegin
ส่งคืนตัววนซ้ำแบบย้อนกลับซึ่งชี้ไปยังองค์ประกอบสุดท้ายของรายการ |
| 40 | รายการ :: ลบ
ลบองค์ประกอบออกจากรายการที่ตรงกับค่า |
| 41 | รายการ :: remove_if
ลบองค์ประกอบออกจากรายการที่ตรงตามเงื่อนไข |
| 42 | รายการ :: rend
ส่งคืนตัววนซ้ำแบบย้อนกลับซึ่งชี้ไปที่จุดสิ้นสุดย้อนกลับของรายการ |
| 43 | รายการ :: ปรับขนาด
เปลี่ยนขนาดของรายการ |
| 44 | รายการ :: ปรับขนาด เวอร์ชันค่า เปลี่ยนขนาดของรายการ |
| 45 | รายการ :: ย้อนกลับ
กลับลำดับขององค์ประกอบที่มีอยู่ในรายการ |
| 46 | รายการ :: ขนาด
ส่งคืนจำนวนองค์ประกอบที่มีอยู่ในรายการ |
| 47 | รายการ :: เรียงลำดับ
จัดเรียงองค์ประกอบของรายการ |
| 48 | รายการ :: เรียงลำดับ เปรียบเทียบฟังก์ชัน จัดเรียงองค์ประกอบของรายการ |
| 49 | รายการ :: ประกบ
ถ่ายโอนองค์ประกอบทั้งหมดจากรายการไปยัง * this |
| 50 | รายการ :: ประกบ องค์ประกอบเดียว บริการรถรับส่งเป็นองค์ประกอบที่ชี้ไปตาม iterator ฉันจากรายการxเข้า* นี้ |
| 51 | รายการ :: รุ่นการต่อรอยต่อ ถ่ายโอนองค์ประกอบทั้งหมดจากรายการxไปยัง*โดยใช้ย้ายความหมาย |
| 52 | รายการ :: เวอร์ชันช่วงต่อรอย
โอนองค์ประกอบในช่วงแรกจะมีอายุการใช้งานจากxไป* นี้ |
| 53 | รายการ :: ประกบ องค์ประกอบเดียวรุ่นย้าย ถ่ายโอนองค์ประกอบที่ชี้ไปโดย iterator iจากรายการxเป็น*โดยใช้ย้ายความหมาย |
| 54 | รายการ :: ช่วงต่อและย้ายเวอร์ชัน ถ่ายโอนองค์ประกอบในช่วงแรกถึงสุดท้ายจากxถึง*โดยใช้ย้ายความหมาย |
| 55 | รายการ :: แลกเปลี่ยน
แลกเปลี่ยนเนื้อหาของรายการที่มีเนื้อหาของรายการอีกx |
| 56 | รายการ :: ไม่ซ้ำกัน
ลบองค์ประกอบที่ซ้ำกันทั้งหมดออกจากรายการ |
| 57 | รายการ :: ไม่ซ้ำกัน
ลบองค์ประกอบที่ซ้ำกันทั้งหมดออกจากรายการ |
ฟังก์ชันที่ไม่มีสมาชิกมากเกินไป
| ซีเนียร์ | วิธีการและคำอธิบาย |
|---|---|
| 1 | ตัวดำเนินการ ==
ทดสอบว่าสองรายการเท่ากันหรือไม่ |
| 2 | ตัวดำเนินการ! =
ทดสอบว่าสองรายการเท่ากันหรือไม่ |
| 3 | ตัวดำเนินการ <
ทดสอบว่ารายการแรกน้อยกว่ารายการอื่นหรือไม่ |
| 4 | ตัวดำเนินการ <=
ทดสอบว่ารายการแรกน้อยกว่าหรือเท่ากับรายการอื่นหรือไม่ |
| 5 | ตัวดำเนินการ>
ทดสอบว่ารายการแรกมากกว่ารายการอื่นหรือไม่ |
| 6 | ตัวดำเนินการ> =
ทดสอบว่ารายการแรกมากกว่าหรือเท่ากับรายการอื่นหรือไม่ |
| 7 | แลกเปลี่ยน
แลกเปลี่ยนเนื้อหาของสองรายการ |