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

כפי שאפשר לראות, איטרטור גישה אקראית הוא איטרטור דו-כיווני תקף.
נלמד על התכונות של איטרטור דו-כיווני.
- אופרטור שוויון/אי-שוויון: אפשר להשוות איטרטור דו-כיווני באמצעות אופרטור שוויון או אופרטור אי-שוויון. שני האיטרטורים שווים רק כאשר שניהם מצביעים על אותו מיקום.
A == B // שוויון
A != B // אי-שוויון- ביטול הפניה
אפשר לבטל הפניה לאיטרטור דו-כיווני כדי להשתמש בשתי הפונקציונליויות: גישה לערך של האיבר שעליו האיטרטור מצביע, וכן השמת ערך באיבר שעליו האיטרטור מצביע.
*A = X;
X = *A;- ניתן להגדלה / להקטנה
אפשר להגדיל איטרטור דו-כיווני באמצעות האופרטור++, אך אפשר גם להקטין אותו באמצעות האופרטור--.
A++; // אופרטור הגדלה לאחר השימוש
++A; // אופרטור הגדלה לפני השימוש
A--; // אופרטור הקטנה לפני השימוש
--A; // אופרטור הקטנה לאחר השימוש- ניתן להחלפה
אפשר להחליף או להחליף בין הערך של איטרטור דו-כיווני אחד לבין ערכו של איטרטור אחר.
נסכם את השיעור בכך שאיטרטור דו-כיווני דומה מאוד לאיטרטור קדימה, שמאחד את איטרטורי הקלט והפלט, אך הוא גם מסוגל להקטין את ערכו, כלומר הוא יכול לגשת לאיברים ברצף בשני הכיוונים.
אתגר
קלנתונים לך 10 מספרים בשורה אחת בקלט. בשורה הבאה נתון לך מספר X שמייצג את האינדקס של המספר (האינדקסים 1-10). השתמש באיטרטור דו-כיווני והצג תחילה את המספרים החל מהאינדקס X ועד הסוף. לאחר מכן הצג את המספרים החל מהאינדקס X לאחור עד לתחילת הרצף.
Input
10 20 30 40 50 60 70 80 90 100
6Output
60 70 80 90 100 60 50 40 30 20 10נסו בעצמכם
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> numbers;
vector<int>::iterator it1, it2;
int x, y;
// Enter your code here
it1 = numbers.begin();
it1 += x - 1;
for(it1; it1 != numbers.end(); )
cout << << " ";
cout << endl;
for(it2; it2 != numbers.begin() - 1; )
cout << << " ";
return 0;
}כל השיעורים ביחידה C++ - ספריית התבניות הסטנדרטית
תרגלו בעצמכם: קומפיילר C++ אונליין