STL Containers ใน C++ คืออะไร

Stl Containers Ni C Khux Xari



ใน 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++ ที่ใช้บ่อยที่สุด ได้แก่ คอนเทนเนอร์แบบลำดับ คอนเทนเนอร์แบบเชื่อมโยง เช่นเดียวกับ คอนเทนเนอร์เชื่อมโยงที่ไม่ได้เรียงลำดับ .