Computer >> Máy Tính >  >> Lập trình >> C ++

Trình lặp lại hai chiều trong C ++

Các trình vòng lặp có đặc quyền truy cập vào chuỗi các phần tử của một phạm vi từ cả hai hướng là từ cuối và từ đầu được gọi là trình lặp hai chiều . trình vòng lặp có thể hoạt động trên các kiểu dữ liệu như bản đồ danh sách và tập hợp.

Trình lặp hai chiều có các thuộc tính giống như trình vòng lặp chuyển tiếp , với sự khác biệt duy nhất là chúng cũng có thể được giảm bớt -

thuộc tính biểu thức hợp lệ
Là mặc định-cấu tạo,
sao chép-xây dựng,
sao chép có thể chuyển nhượng và có thể hủy
X a;
X b (a);
b =a;
Có thể được so sánh về sự tương đương bằng cách sử dụng các toán tử bình đẳng / bất bình đẳng (có ý nghĩa khi cả hai giá trị của trình lặp lặp lại trên cùng một trình tự cơ bản). a ==b
a! =b
Có thể được tham chiếu đến dưới dạng rvalue (nếu ở trạng thái có thể tham chiếu). * a
a-> m
Đối với trình vòng lặp có thể thay đổi (trình vòng lặp không phải hằng số):Có thể được tham chiếu đến dưới dạng giá trị (nếu ở trạng thái có thể tham chiếu). * a =t
Có thể được tăng dần (nếu ở trạng thái có thể tham khảo được). Kết quả cũng có thể tham khảo được hoặc là một trình lặp quá khứ-cuối. Hai trình vòng lặp so sánh bằng nhau, hãy tiếp tục so sánh bằng nhau sau khi cả hai đều được tăng lên. ++ a
a ++
* a ++
Có thể được giảm bớt (nếu giá trị của trình lặp có thể tham chiếu đứng trước nó). --a
một--
*một--
Các giá trị có thể hoán đổi. hoán đổi (a, b)

Trong đó X là trình lặp hai chiều , a và b là các đối tượng của kiểu trình lặp này và t là đối tượng của kiểu được trỏ bởi kiểu trình lặp (hoặc một số kiểu khác có thể được gán cho lvalue trả về bằng cách tham chiếu một đối tượng kiểu X).

Khái niệm về trình vòng lặp hai chiều trong C ++.

  • Các trình vòng lặp hai chiều hỗ trợ tất cả các tính năng của trình vòng lặp chuyển tiếp cũng như các toán tử giảm dần tiền tố và hậu tố.

  • Loại trình lặp này có thể truy cập các phần tử theo cả hai hướng, như về cuối và về đầu.

  • Trình lặp truy cập ngẫu nhiên cũng là một loại trình lặp hai chiều.

  • Trình vòng lặp hai chiều có các tính năng của trình vòng lặp chuyển tiếp, nhưng sự khác biệt duy nhất là trình vòng lặp này cũng có thể được giảm bớt.

Input: 1 2 3 4 5 6 7 8 9 10
Output: 10 9 8 7 6 5 4 3 2 1

Ví dụ

#include <iostream>
#include<iterator>
#include<vector>
using namespace std;
int main() {
   vector<int> vec{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
   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<<" ";
}

Đầu ra

1 2 3 4 5 6 7 8 9 10
10 9 8 7 6 5 4 3 2 1