קבוצה
שיעור 8 מתוך 23 בקורס C++ - ספריית התבניות הסטנדרטית של Coddy.
בפרק הזה תלמדו על מכולות אסוציאטיביות ועל אופן הפעולה שלהן. נתחיל במבנה הנתונים set.
ה־Set ב־C++ הוא סוג של מכולה אסוציאטיבית המאחסנת איברים ייחודיים מאותו סוג בסדר ממוין. פירוש הדבר הוא שכל איבר יכול להופיע ב־set פעם אחת בלבד.
קבוצות נמצאות בשימוש תכוף בתכנות תחרותי בכל פעם שיש צורך לאחסן איברים ייחודיים ממוינים בלי להשקיע זמן ומורכבות נוספים בשימוש במבני נתונים אחרים, כמו מערך, אלגוריתמי מיון והסרת איברים חוזרים.
set<int> mySet = {5, 10, 3, 5};מממשים קבוצות באמצעות קובץ הכותרת #include <set>, או שאפשר לכלול את כל קובצי הכותרת כפי שצוין בשיעורים הקודמים באמצעות #include <bits/stdc++.h>
set<int> mySet = {5, 10, 3, 5};
for (int i = mySet.begin(); i != mySet.end(); i++)
cout << *i << " ";Output:
3 5 10כפי שאפשר לראות למעלה, הכרזנו על set עם ערכים התחלתיים. השתמשנו באיטרטור שמצביע על האיבר הראשון, עברנו על ה־set והדפסנו את כל האיברים. אפשר לראות שה־set עצמו הסיר את האיברים החוזרים וגם מיין אותם, החל מהקטן ביותר.
מוסיפים איברים ל־set באמצעות המתודה insert().
mySet.insert(50);כמו כן, אי אפשר לשנות את הערכים של האיברים לאחר הוספתם ל־set; אפשר רק להסיר אותם ולהוסיף איברים חדשים.
מתודות של Set
| מתודה | תפקיד |
| begin() | מחזירה איטרטור שמצביע על האיבר הראשון ב־set |
| end() | מחזירה איטרטור שמצביע על האיבר האחרון ב־set |
| size() | מחזירה את מספר האיברים ב־set |
| empty() | מחזירה אם ה־set ריק (1) או לא (0) |
| count() | מחזירה 1 אם איבר נמצא ב־set, ואחרת 0 |
אתגר
קלנתונים 10 מספרים מהקלט. בעזרת קבוצה, הציגו רק את המספרים הייחודיים.
Input
5
10
1
5
3
5
10
8
6
7Output
5
10
1
3
8
6
7נסו בעצמכם
#include <set>
#include <iostream>
using namespace std;
int main()
{
// Enter your code here
return 0;
}כל השיעורים ביחידה C++ - ספריית התבניות הסטנדרטית
תרגלו בעצמכם: קומפיילר C++ אונליין