מהם STL Containers ב-C++

Mhm Stl Containers B C



ב-C++, STL (ספריית תבניות סטנדרטית), מיכלים הם חפצים המשמשים לאחסון אוספי החפצים האחרים. הם פועלים בדומה לתבניות מחלקות ותומכים במספר רב של סוגי אלמנטים ומספקים פונקציות חבר לגישה לאלמנטים שלהם ישירות או דרך איטרטורים.

סוגי מכולות C++ STL

ב-C++, ישנם שלושה סוגים של STL מיכלים , המפורטים להלן:







1: מיכלים עוקבים

ב-C++, מיכלים רציפים מאפשרים לנו לאחסן פריטים שניתן לאחזר ברצף. אלה מיכלים מקודדים כמערכים או רשימות מקושרות של מבני נתונים. סוגים מסוימים של מיכלים עוקבים ניתנים להלן.



  • וֶקטוֹר: זהו מערך בגודל דינמי המאוחסן בזיכרון באופן רציף.
  • לגבי מה: הוא מייצג תור עם קצוות כפול התומך בפעולות הן להכנסה והן למחיקה.
  • מַעֲרָך: זהו מערך סטטי המוקצה במהלך ההידור תוך שמירה על גודלו קבוע.
  • רשימה: זוהי רשימה מקושרת כפולה המבצעת הכנסה ומחיקה מהירה של אלמנטים בכל מקום ברשימה.
  • רשימת העברה: זוהי רשימה עם קישור יחיד כמו רשימה, אבל אתה יכול לחצות אותה רק בכיוון אחד.

דוגמא



בדוגמה זו, נשתמש ב- מחלקה וקטורית להראות איך א סִדרָתִי מְכוֹלָה פועל.





#include
#include
שימוש במרחב שמות std;
int main ( ) {
// אתחול וקטור של int סוּג
וֶקטוֹר < int > מספרים = { 10 , 2 , 16 , 70 , 5 } ;
// להדפיס את הווקטור
cout << 'המספרים הם:' ;
ל ( אוטומטי & אני: מספרים )
{
cout << אני << ',' ;
}
לַחֲזוֹר 0 ;
}

הקוד לעיל מדגים את השימוש ב סִדרָתִי מיכלים בפורמט וקטור, המאפשר אחסון של מערכים שלמים. התוכנית מאתחלת וקטור מסוג מספר שלם, מקצה לו ערכים ומדפיסה אותם באמצעות לולאה. דוגמה זו מראה כיצד קל לאחסן ולגשת לנתונים ב-C++ באמצעות ה מיכל רציף .



2: מיכלים אסוציאטיביים

המיכלים האסוציאטיביים לאפשר לנו לאחסן אלמנטים בסדר המסוים שהוגדר על ידי אופרטור ההשוואה. בניגוד מיכלים עוקבים , סדר האלמנטים ב מיכלים אסוציאטיביים מתוחזק באמצעות מפתחות המאפשרים למשתמשים לארגן ולגשת לאלמנטים. כאשר אלמנט מוכנס לתוך an מיכל אסוציאטיבי , הוא ממוין אוטומטית במיקום הנכון על סמך המפתח שלו. סוגי קונטיינרים אלה מיושמים באופן פנימי כמו מבני נתונים עצים בינאריים.

ה אסוציאטיבי מיכלים מסווגים כ:

  • מַפָּה: אוסף של זוגות מפתח-ערך שמוינו באמצעות מפתחות ייחודיים
  • מפה מרובת: אוסף של זוגות מפתח-ערך שמוינו באמצעות מפתחות
  • מַעֲרֶכֶת: מפתחות ייחודיים שנאספו ומסודרים לפי מפתחות.
  • Multiset: אוסף מפתחות שמוינו באמצעות מפתחות

דוגמא

כדי להמחיש כיצד א אסוציאטיבי מְכוֹלָה עובד, נשתמש ב- להגדיר מחלקה בדוגמה זו.

#include
#include
שימוש במרחב שמות std;
int main ( )
{
// אתחול א מַעֲרֶכֶת של int סוּג
מַעֲרֶכֶת < int > מספרים = { 10 , 2 , 16 , 70 , 5 } ;
// להדפיס את מַעֲרֶכֶת
cout << 'המספרים הם:' ;
ל ( אוטומטי & אני: מספרים )
{
cout << אני << ',' ;
}
לַחֲזוֹר 0 ;
}

הקוד לעיל מאתחל קבוצה של מספרים שלמים ב-C++, שהיא דוגמה למיכל אסוציאטיבי. הסט מבטיח שהאלמנטים ממוינים בסדר עולה כברירת מחדל. לאחר מכן הקוד מדפיס את המספרים בסט באמצעות לולאת for.

3: מיכלים אסוציאטיביים לא מסודרים

ב-C++, אסוציאטיבי לא מסודר מיכלים משמשים לאספקת הגרסאות הלא ממוינות של an אסוציאטיבי מְכוֹלָה . הם מיושמים באופן פנימי כמו מבני נתונים של טבלת hash. ה אסוציאטיבי מיכלים מסווגים כ:

  • מפה לא מסודרת: אוסף של זוגות מפתח-ערך שעברו גיבוב באמצעות מפתחות ייחודיים.
  • מפה לא מסודרת: אוסף צמדי מפתח-ערך שעבר גיבוב באמצעות מפתחות.
  • סט לא מסודר: אוסף של מפתחות ייחודיים שעברו גיבוב באמצעות מפתחות.
  • ערכה לא מסודרת: אוסף מפתחות שעברו גיבוב באמצעות מפתחות.

דוגמא

על מנת להמחיש כיצד א אסוציאטיבי לא מסודר מְכוֹלָה עובד, נשתמש ב- סט לא מסודר כיתה בדוגמה זו.

#include
#include
שימוש במרחב שמות std;
int main ( )
{
// אתחול unordered_set של int סוּג
unordered_set < int > מספרים = { 10 , 2 , 16 , 70 , 5 } ;
// להדפיס את מַעֲרֶכֶת
cout << 'המספרים הם:' ;
ל ( אוטומטי & אני: מספרים )
{
cout << אני << ',' ;
}
לַחֲזוֹר 0 ;
}

סיכום

STL C++ מְכוֹלָה הוא החפץ המחזיק לאחסון אוסף של חפצים אחרים. הם פועלים בדומה לתבניות מחלקות ותומכים במספר רב של סוגי אלמנטים. במדריך זה, דנו בסוגים הנפוצים ביותר של מיכלי STL C++, שהם מיכלים עוקבים, מיכלים אסוציאטיביים בנוסף ל מיכלים אסוציאטיביים לא מסודרים .