ใน C++, STL (ไลบรารีเทมเพลตมาตรฐาน) ตู้คอนเทนเนอร์ เป็นวัตถุที่ใช้เก็บคอลเลกชันของวัตถุอื่นๆ ทำงานคล้ายกับเทมเพลตคลาสและรองรับประเภทองค์ประกอบจำนวนมาก และมีฟังก์ชันสมาชิกเพื่อเข้าถึงองค์ประกอบโดยตรงหรือผ่านตัววนซ้ำ
ประเภทของคอนเทนเนอร์ C++ STL
ใน C++ มี STL สามประเภท ตู้คอนเทนเนอร์ ซึ่งมีรายชื่ออยู่ด้านล่าง:
1: คอนเทนเนอร์ตามลำดับ
ใน C++ คอนเทนเนอร์แบบลำดับช่วยให้เราสามารถจัดเก็บรายการที่สามารถดึงข้อมูลตามลำดับได้ เหล่านี้ ตู้คอนเทนเนอร์ ถูกเข้ารหัสเป็นอาร์เรย์หรือรายการเชื่อมโยงของโครงสร้างข้อมูล คอนเทนเนอร์แบบต่อเนื่องบางประเภทแสดงไว้ด้านล่าง
- เวกเตอร์: เป็นอาร์เรย์ขนาดไดนามิกที่จัดเก็บไว้ในหน่วยความจำในลักษณะที่ต่อเนื่องกัน
- เกี่ยวกับอะไร: มันแสดงถึงคิวสองปลายที่รองรับการดำเนินการทั้งการแทรกและการลบ
- อาร์เรย์: เป็นอาร์เรย์แบบสแตติกที่จัดสรรระหว่างการคอมไพล์ในขณะที่รักษาขนาดให้คงที่
- รายการ: เป็นรายการเชื่อมโยงสองเท่าที่ดำเนินการแทรกและลบองค์ประกอบอย่างรวดเร็ว ณ ที่ใดก็ได้ในรายการ
- รายการส่งต่อ: เป็นรายการที่เชื่อมโยงอย่างโดดเดี่ยวเหมือนรายการ แต่คุณสามารถสำรวจได้ในทิศทางเดียวเท่านั้น
ตัวอย่าง
ในตัวอย่างนี้ เราจะใช้ คลาสเวกเตอร์ เพื่อแสดงให้เห็นว่าก ตามลำดับ คอนเทนเนอร์ ดำเนินการ
#รวมถึง
#รวม <เวกเตอร์>
ใช้เนมสเปซ std;
int หลัก ( ) {
// เริ่มต้นเวกเตอร์ของ int พิมพ์
เวกเตอร์ < นานาชาติ > ตัวเลข = { 10 , 2 , 16 , 70 , 5 } ;
// พิมพ์เวกเตอร์
ศาล << 'ตัวเลขคือ: ' ;
สำหรับ ( อัตโนมัติ & ฉัน: ตัวเลข )
{
ศาล << ฉัน << ', ' ;
}
กลับ 0 ;
}
โค้ดด้านบนนี้แสดงให้เห็นถึงการใช้ ตามลำดับ ตู้คอนเทนเนอร์ ในรูปแบบเวกเตอร์ซึ่งช่วยให้สามารถจัดเก็บอาร์เรย์จำนวนเต็มได้ โปรแกรมเริ่มต้นเวกเตอร์ประเภทจำนวนเต็มกำหนดค่าให้กับมันและพิมพ์โดยใช้ลูป ตัวอย่างนี้แสดงให้เห็นว่าการจัดเก็บและเข้าถึงข้อมูลใน C++ นั้นง่ายเพียงใดโดยใช้ คอนเทนเนอร์ตามลำดับ .
2: คอนเทนเนอร์ที่เกี่ยวข้อง
คอนเทนเนอร์ที่เชื่อมโยง ช่วยให้เราสามารถจัดเก็บองค์ประกอบตามลำดับเฉพาะที่กำหนดโดยตัวดำเนินการเปรียบเทียบ ไม่เหมือน คอนเทนเนอร์ตามลำดับ ลำดับขององค์ประกอบใน ภาชนะที่เชื่อมโยง ได้รับการดูแลโดยใช้ปุ่มที่ช่วยให้ผู้ใช้สามารถจัดระเบียบและเข้าถึงองค์ประกอบต่างๆ เมื่อองค์ประกอบถูกแทรกเข้าไปใน ภาชนะที่เชื่อมโยง จะถูกจัดเรียงโดยอัตโนมัติในตำแหน่งที่ถูกต้องตามคีย์ของมัน คอนเทนเนอร์ประเภทนี้ถูกนำไปใช้ภายใน เช่น โครงสร้างข้อมูลไบนารีทรี
เดอะ เชื่อมโยง ตู้คอนเทนเนอร์ แบ่งเป็น:
- แผนที่: ชุดของคู่คีย์-ค่าที่จัดเรียงโดยใช้คีย์เฉพาะ
- มัลติแมป: ชุดของคู่คีย์-ค่าที่ได้รับการจัดเรียงโดยใช้คีย์
- ชุด: คีย์เฉพาะที่รวบรวมและจัดเรียงตามคีย์
- หลายชุด: ชุดของคีย์ที่ได้รับการจัดเรียงโดยใช้คีย์
ตัวอย่าง
เพื่อแสดงให้เห็นว่า เชื่อมโยง คอนเทนเนอร์ ใช้งานได้ เราจะใช้ ตั้งชั้นเรียน ในตัวอย่างนี้
#รวมถึง#รวม
ใช้เนมสเปซ std;
int หลัก ( )
{
// เริ่มต้น ก ชุด ของ int พิมพ์
ชุด < นานาชาติ > ตัวเลข = { 10 , 2 , 16 , 70 , 5 } ;
// พิมพ์ ชุด
ศาล << 'ตัวเลขคือ: ' ;
สำหรับ ( อัตโนมัติ & ฉัน: ตัวเลข )
{
ศาล << ฉัน << ', ' ;
}
กลับ 0 ;
}
โค้ดข้างต้นเริ่มต้นชุดของจำนวนเต็มใน C++ ซึ่งเป็นตัวอย่างของคอนเทนเนอร์ที่เชื่อมโยง ชุดนี้ช่วยให้แน่ใจว่าองค์ประกอบต่างๆ เรียงตามลำดับจากน้อยไปหามากตามค่าเริ่มต้น จากนั้นรหัสจะพิมพ์ตัวเลขในชุดโดยใช้ for loop
3: คอนเทนเนอร์ที่เกี่ยวข้องที่ไม่ได้เรียงลำดับ
ใน C ++ การเชื่อมโยงที่ไม่มีลำดับ ตู้คอนเทนเนอร์ ใช้สำหรับจัดเตรียมเวอร์ชันที่ไม่เรียงลำดับของ เชื่อมโยง คอนเทนเนอร์ . มีการนำไปใช้ภายในเช่นโครงสร้างข้อมูลตารางแฮช เดอะ เชื่อมโยง ตู้คอนเทนเนอร์ แบ่งเป็น:
- แผนที่ไม่เรียงลำดับ: ชุดของคู่คีย์-ค่าที่ได้รับการแฮชโดยใช้คีย์เฉพาะ
- Multimap ที่ไม่ได้เรียงลำดับ: คอลเลกชั่นคู่คีย์-ค่าที่ถูกแฮชโดยใช้คีย์
- ชุดที่ไม่ได้เรียงลำดับ: ชุดของคีย์เฉพาะที่ถูกแฮชโดยใช้คีย์
- Multiset ที่ไม่ได้เรียงลำดับ: ชุดของคีย์ที่ถูกแฮชโดยใช้คีย์
ตัวอย่าง
เพื่อแสดงให้เห็นว่า การเชื่อมโยงที่ไม่มีลำดับ คอนเทนเนอร์ ใช้งานได้ เราจะใช้ ชุดไม่เรียงลำดับ คลาสในตัวอย่างนี้
#รวมถึง#รวม
ใช้เนมสเปซ std;
int หลัก ( )
{
// เริ่มต้น unordered_set ของ int พิมพ์
unordered_set < นานาชาติ > ตัวเลข = { 10 , 2 , 16 , 70 , 5 } ;
// พิมพ์ ชุด
ศาล << 'ตัวเลขคือ: ' ;
สำหรับ ( อัตโนมัติ & ฉัน: ตัวเลข )
{
ศาล << ฉัน << ', ' ;
}
กลับ 0 ;
}
บทสรุป
STL C++ คอนเทนเนอร์ เป็นที่เก็บวัตถุเพื่อจัดเก็บคอลเลกชันของวัตถุอื่น ๆ ทำงานคล้ายกับเทมเพลตคลาสและรองรับประเภทองค์ประกอบจำนวนมาก ในบทช่วยสอนนี้ เราได้กล่าวถึงประเภทคอนเทนเนอร์ STL C++ ที่ใช้บ่อยที่สุด ได้แก่ คอนเทนเนอร์แบบลำดับ คอนเทนเนอร์แบบเชื่อมโยง เช่นเดียวกับ คอนเทนเนอร์เชื่อมโยงที่ไม่ได้เรียงลำดับ .