ที่นี่เราจะเห็นแนวคิดของตัววนซ้ำสองทิศทางใน C++
- ตัววนซ้ำแบบสองทิศทางสนับสนุนคุณลักษณะทั้งหมดของตัววนซ้ำการส่งต่อ และยังรวมถึงตัวดำเนินการลดคำนำหน้าและหลังการแก้ไข
- ตัววนซ้ำประเภทนี้สามารถเข้าถึงองค์ประกอบได้ทั้งสองทิศทาง เช่น ไปจนสุดทางและไปยังจุดเริ่มต้น
- ตัววนซ้ำการเข้าถึงโดยสุ่มยังเป็นประเภทของตัววนซ้ำแบบสองทิศทางอีกด้วย
- ตัววนซ้ำแบบสองทิศทางมีคุณสมบัติของตัววนซ้ำแบบไปข้างหน้า แต่ความแตกต่างเพียงอย่างเดียวคือตัววนซ้ำนี้สามารถลดค่าได้
ตัววนซ้ำแบบสองทิศทางมีคุณสมบัติบางอย่าง เหล่านี้เป็นเหมือนด้านล่าง
คุณสมบัติ | นิพจน์ |
---|---|
ตัววนซ้ำแบบสองทิศทางเป็นค่าเริ่มต้น สร้างได้ คัดลอกกำหนดได้ และยังสามารถทำลายได้ | A p ถาม(p) q =p |
เราสามารถเปรียบเทียบได้โดยใช้ตัวดำเนินการความเท่าเทียมกันและความไม่เท่าเทียมกัน | p ==q p !=q |
สามารถยกเลิกการอ้างอิงได้ เราสามารถใช้ตัวดำเนินการ dereference (*) เพื่อรับค่าได้ | *p |
ตัววนซ้ำที่ไม่แน่นอนสามารถยกเลิกการอ้างอิงเป็น lvalue | *p =t |
เราสามารถเพิ่มหรือลดโดยใช้ตัวดำเนินการเพิ่ม (++) และตัวดำเนินการลด (--) | p++ q-- |
โค้ดตัวอย่าง
#include <iostream> #include<iterator> #include<vector> using namespace std; int main() { vector<int> vec{10, 20, 30, 40, 50, 60, 70, 80, 90, 100}; vector<int> ::iterator it; vector<int> :: reverse_iterator rev_it; for(it = vec.begin(); it != vec.end(); it++) cout<<*it<<" "; cout<< endl; for(rev_it = vec.rbegin(); rev_it!= vec.rend(); rev_it++) cout<<*rev_it<<" "; }
ผลลัพธ์
10 20 30 40 50 60 70 80 90 100 100 90 80 70 60 50 40 30 20 10