Bộ lặp hai chiều
Bài học 17 trên 23 trong khóa học C++ - Thư viện mẫu chuẩn của Coddy.
Bộ lặp hai chiều là bộ lặp hỗ trợ mọi tính năng của bộ lặp tiến, đồng thời hỗ trợ hai toán tử giảm (tiền tố và hậu tố). Vì vậy, bạn có thể dùng bộ lặp hai chiều để truy cập và sửa đổi một dãy phần tử theo cả hai hướng, về phía cuối cũng như về phía đầu.

Như bạn có thể thấy, bộ lặp truy cập ngẫu nhiên là một bộ lặp hai chiều hợp lệ.
Vậy, chúng ta sẽ tìm hiểu các tính năng của bộ lặp hai chiều.
- Toán tử bằng/không bằng: Bạn có thể so sánh một bộ lặp hai chiều bằng toán tử bằng hoặc toán tử không bằng. Hai bộ lặp chỉ bằng nhau khi cả hai cùng trỏ đến một vị trí.
A == B // Bằng nhau
A != B // Không bằng nhau- Giải tham chiếu
Bạn có thể giải tham chiếu một bộ lặp hai chiều để sử dụng hai chức năng: truy cập giá trị của phần tử mà bộ lặp trỏ đến, và gán giá trị cho phần tử đó.
*A = X;
X = *A;- Có thể tăng/giảm
Bạn có thể tăng bộ lặp hai chiều bằng toán tử++, đồng thời có thể giảm bộ lặp bằng toán tử--.
A++; // Toán tử tăng sau
++A; // Toán tử tăng trước
A--; // Toán tử giảm trước
--A; // Toán tử giảm sau- Có thể hoán đổi
Bạn có thể đổi hoặc hoán đổi giá trị của một bộ lặp hai chiều với một bộ lặp khác.
Ta có thể kết thúc bài học bằng cách tóm tắt rằng bộ lặp hai chiều rất giống với bộ lặp tiến, vốn kết hợp bộ lặp đầu vào và bộ lặp đầu ra, nhưng còn có thể giảm. Điều này có nghĩa là nó có thể truy cập các phần tử trong dãy theo cả hai hướng.
Thử thách
DễBạn được nhập 10 số trên một dòng. Ở dòng tiếp theo, bạn được nhập số X, biểu thị chỉ số của số đó (chỉ số từ 1 đến 10). Hãy dùng một trình lặp hai chiều, trước tiên in ra các số từ chỉ số X đến cuối dãy. Sau đó, in ra các số từ chỉ số X theo thứ tự ngược lại đến đầu dãy.
Input
10 20 30 40 50 60 70 80 90 100
6Output
60 70 80 90 100 60 50 40 30 20 10Tự làm thử
#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;
}Tất cả bài học trong C++ - Thư viện mẫu chuẩn
Tự luyện tập: Trình biên dịch C++ online