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

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

מהי ספריית התבניות הרגילה?

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

ספריית התבניות הרגילה ב- C ++ מורכבת מארבעה רכיבים:

  1. אלגוריתמים
  2. מיכלים
  3. פונקציות
  4. מחטבים

בואו נסתכל על האלגוריתמים והמכולות לעומק רב יותר, מכיוון שאלו הם הרכיבים הנפוצים ביותר של ה- STL.

אלגוריתמים ב- STL

ה קובץ הכותרת הוא חלק מ- STL המורכב ממספר פונקציות אלגוריתמיות שניתן להשתמש בהן במקום לקודד אותן ידנית. חלק מהאלגוריתמים הכלולים הם חיפוש בינארי, מיון והפוך, שהם מאוד שימושיים.

instagram viewer

ראשית, עליך לייבא את כותרת בקובץ C ++ שלך. התחביר הוא כדלקמן:

#לִכלוֹל 

לשיטות הקרובות, שקול דוגמה למשתנה מערך עם הערכים {6, 2, 9, 1, 4}.

int arr [] = {6, 2, 9, 1, 4};

סוג()

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

קָשׁוּר: מבוא לאלגוריתם המיזוג למיזוג

תחביר:

מיין (start_iterator, end_iterator);

הנה דוגמה מהירה:

מיין (arr, arr + 5);
עבור (int i = 0; אני <5; i ++) {
cout << arr [i] << "";
}

תְפוּקָה:

1 2 4 6 9

לַהֲפוֹך()

ה לַהֲפוֹך() פונקציה הופכת את סדר האלמנטים במבנה הנתונים שצוין. הוא מקבל שני פרמטרים: איטרטור מתחיל ואיטור סיום.

תחביר:

הפוך (start_iterator, end_iterator);

הנה דוגמה קצרה לשיטה שלעיל:

הפוך (arr, arr + 5);
עבור (int i = 0; אני <5; i ++) {
cout << arr [i] << "";
}

תְפוּקָה:

4 1 9 2 6

* min_element () ו- * max_element ()

הפונקציות * max_element () ו * min_element () להחזיר את הערך המקסימלי והמינימלי בתוך מבנה הנתונים שצוין, בהתאמה. שתי הפונקציות מקבלות שני טיעונים: איטרטור ההתחלה ואיטרטור הסיום.

תחביר:

* max_element (start_iterator, end_iterator);
* min_element (start_iterator, end_iterator);

בואו נגלה אילו ערכים פונקציות אלה מחזירות כשקוראים להן במערך הדוגמה:

cout << * max_element (arr, arr + 5) << endl;
cout << * min_element (arr, arr + 5) << endl;

תְפוּקָה:

9
1

חיפוש בינארי()

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

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

תחביר:

חיפוש בינארי (start_iterator, end_iterator, value_to_find)

הנה הדגמה של שיטה זו:

מיין (arr, arr + 5);
חיפוש בינארי (arr, arr + 5, 2)? cout << "אלמנט נמצא": cout << "אלמנט לא נמצא";
חיפוש בינארי (arr, arr + 5, 7)? cout << "אלמנט נמצא": cout << "אלמנט לא נמצא";

תְפוּקָה:

אלמנט נמצא
אלמנט לא נמצא

לספור()

ה לספור() שיטה מחזירה את ספירת המופע של הערך שצוין בתוך מבנה הנתונים. נדרשים שלושה טיעונים: איטרטור ההתחלה, איטרטור הסיום והערך שיש לספור.

תחביר:

ספירה (start_iterator, end_iterator, value_to_count);

הנה דוגמה לשיטה זו:

cout << ספירה (arr, arr + 5, 2) << endl;

תְפוּקָה:

1

מיכלים ב- STL

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

בעת אתחול המשתנה של המכולה, עליך להזכיר את הנתונים הפרימיטיביים כגון int, לְהַשְׁחִיר, חוּט בתוך ה <> סוֹגְרַיִם.

בואו נחקור כמה מכולות אלה ביתר פירוט:

וֶקטוֹר

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

תחביר:

#לִכלוֹל 
וֶקטוֹר שם משתנה;

להלן מספר שיטות וקטוריות חשובות:

  1. push_back (ערך): שיטה זו מצרפת את הנתונים לווקטור.
  2. pop_back (): שיטה זו מסירה את האלמנט האחרון מהווקטור.
  3. הוסף (אינדקס, ערך): שיטה זו מכניסה אלמנטים חדשים לפני האלמנט במיקום שצוין.
  4. גודל(): שיטה זו מחזירה את גודל הווקטור.
  5. ריק(): שיטה זו בודקת אם הווקטור ריק או לא.
  6. חֲזִית(): שיטה זו מחזירה את הערך הראשון של הווקטור.
  7. חזור(): שיטת ה- back מחזירה את הערך האחרון של הווקטור.
  8. ב (אינדקס): שיטה זו מחזירה את הערך במיקום שצוין.
  9. מחק (אינדקס): שיטת המחיקה מסירה אלמנטים מהאינדקס הנתון.
  10. ברור(): שיטה זו מנקה את כל הפריטים בווקטור.
וקטור  v = {23, 12, 56, 10};
v.push_back (5);
v.push_back (25);
v.pop_back ();
אוטומטי i = v.insert (v.begin () + 1, 7);
cout << "גודל הווקטור הנתון" << v.size () << endl;
אם (v.empty ()) {
cout << "הווקטור ריק" << endl;
} אחר {
cout << "הווקטור אינו ריק" << endl;
}
cout << "אלמנט במיקום הראשון הוא" << v.front () << endl;
cout << "אלמנט במיקום האחרון הוא" << v.back () << endl;
cout << "אלמנט במיקום הנתון הוא" << v.at (4) << endl;
v.erase (v.begin () + 1);
עבור (int i = 0; i cout << v [i] << "";
}

תְפוּקָה:

גודל הווקטור הנתון 6
הווקטור אינו ריק
האלמנט במיקום הראשון הוא 23
האלמנט במיקום האחרון הוא 5
האלמנט במיקום הנתון הוא 10
23 12 56 10 5

תוֹר

במבנה נתוני התור, אלמנטים מוכנסים מאחור ונמחקים מלפנים. לפיכך, היא פועלת לפי גישת FIFO ("ראשונה פנימה, ראשונה החוצה").

תחביר:

#לִכלוֹל 
תוֹר שם משתנה;

להלן מספר שיטות תור חשובות:

  1. לדחוף (ערך): שיטה זו מוסיפה אלמנטים לתור.
  2. פּוֹפּ(): שיטה זו מוחקת את האלמנט הראשון בתור.
  3. גודל(): שיטה זו מחזירה את גודל התור.
  4. חֲזִית(): שיטה זו מחזירה את האלמנט הראשון בתור.
  5. חזור(): שיטה זו מחזירה את האלמנט האחרון בתור.
תור  q;
q.push (30);
q.push (40);
q.push (50);
q.push (60);
q.push (70);
cout << "האלמנט הראשון הוא" << q.front () << endl;
cout << "האלמנט האחרון הוא" << q.back () << endl;
cout << "גודל התור הוא" << q.size () << endl;
q.pop ();
cout << "הדפסת כל מרכיבי התור" << endl;
בעוד (! q.empty ()) {
cout << q.front () << "";
q.pop ();
}

תְפוּקָה:

האלמנט הראשון הוא 30
האלמנט האחרון הוא 70
גודל התור הוא 5
הדפסת כל האלמנטים של התור
40 50 60 70

לַעֲרוֹם

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

תחביר:

#לִכלוֹל 
לַעֲרוֹם שם משתנה;

להלן מספר שיטות ערימה חשובות:

  1. לדחוף (ערך): שיטה זו דוחפת את האלמנט בערימה.
  2. פּוֹפּ(): שיטה זו מוחקת את האלמנט העליון של הערימה.
  3. חלק עליון(): שיטה זו מחזירה את ערך האלמנט האחרון שהוזן בערימה.
  4. גודל(): שיטה זו מחזירה את גודל הערימה.
  5. ריק(): שיטה זו בודקת אם הערימה ריקה או לא.
מחסנית  s;
s.push (30);
s.push (40);
s.push (50);
s.push (60);
cout << "החלק העליון של הערימה מכיל" << s.top () << endl;
s.pop ();
cout << "החלק העליון של הערימה לאחר ביצוע פעולת פופ:" << s.top () << endl;
cout << "הדפסת כל האלמנטים של הערימה" << endl;
בעוד (! s.empty ()) {
cout << s.top () << "";
s.pop ();
}

תְפוּקָה:

החלק העליון של הערימה מכיל 60
החלק העליון של הערימה לאחר ביצוע פעולת פופ: 50
הדפסת כל האלמנטים של הערימה
50 40 30

מַעֲרֶכֶת

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

תחביר:

#לִכלוֹל 
מַעֲרֶכֶת שם משתנה;

להלן מספר שיטות סט חשובות:

  1. הוסף (ערך): שיטה זו מכניסה אלמנטים בערכה.
  2. התחל(): שיטה זו מחזירה את האיטרטור לאלמנט הראשון של הסט.
  3. סוֹף(): שיטה זו מחזירה את האיטרטור לאלמנט האחרון של הסט.
  4. גודל(): שיטה זו מחזירה את גודל הסט.
  5. ריק(): שיטה זו בודקת אם הסט ריק או לא.
  6. מצא (ערך): שיטה זו מחזירה את האיטרטור לאלמנט שהועבר בפרמטר. אם האלמנט לא נמצא, פונקציה זו מחזירה את האיטרטור לסוף הסט.
  7. מחק (ערך): שיטה זו מחקה את האלמנט שצוין מהסט.
הגדר  s;
s.insert (20);
s.insert (30);
s.insert (40);
s.insert (50);
s.insert (60);
s.insert (60);
s.insert (60);
אוטומטי i = s.begin ();
cout << "אלמנט במיקום הראשון" << * i << endl;
cout << "גודל הסט" << s.size () << endl;
s.find (20)! = s.end ()? cout << "אלמנט נמצא" << endl: cout << "אלמנט לא נמצא" << endl;
s.erase (30);
cout << "הדפסת כל האלמנטים" << endl;
עבור (אוטומטי i = s.begin (); i! = s.end (); i ++) {
cout << * i << "";
}

תְפוּקָה:

אלמנט במיקום הראשון 20
גודל הסט 5
אלמנט נמצא
הדפסת כל האלמנטים
20 40 50 60

C ++ לא צריך להיות קשה

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

עם זאת, אם זו הפעם הראשונה שאתה לומד C ++, התחל בללמוד את היסודות לפני שתמשיך להבין את ה- STL.

אימייל
כיצד ללמוד תכנות C ++: 6 אתרים להתחלה

רוצים ללמוד C ++? להלן אתרי האינטרנט והקורסים המקוונים הטובים ביותר ל- C ++ למתחילים ומתכנתים מנוסים כאחד.

קרא הבא

נושאים קשורים
  • תִכנוּת
  • הדרכות קידוד
  • תכנות פונקציונלי
על הסופר
ניטין רנגנת ' (22 מאמרים פורסמו)

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

עוד מ- Nitin Ranganath

הירשם לניוזלטר שלנו

הצטרף לניוזלטר שלנו לקבלת טיפים טכניים, ביקורות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!

צעד אחד נוסף !!!

אנא אשר את כתובת הדוא"ל שלך בדוא"ל ששלחנו לך זה עתה.

.