iterator code>), có nhiều loại. Iterator - cấu trúc dữ liệu « biểu thị» ; trên một số phần tử vùng chứa và (đối với một số vùng chứa) có thể điều hướng đến phần tử trước đó/tiếp theo. Vectơ sử dụng - trình lặp truy cập ngẫu nhiên(Trình lặp truy cập ngẫu nhiên) mạnh mẽ nhất. Trình lặp truy cập ngẫu nhiên có thể truy cập một phần tử tùy ý của vectơ ngoài chuyển động tuần tự. Lợi ích của Iterator 1) Khi xóa phần tử và lặp qua phần tử bằng chỉ số ([]), chúng ta cần luôn theo dõi số lượng phần tử còn lại để không vượt quá vectơ và sử dụng trình vòng lặp, bạn có thể sử dụng end() để chỉ điểm cuối của vectơ. 2) Sử dụng một trình vòng lặp, bạn có thể dễ dàng tự động loại bỏ và chèn các phần tử vào một vectơ. Khai báo iterator 1) Khai báo một trình vòng lặp cho một vectơ số nguyên và trỏ nó tới phần tử đầu tiên trong vectơ. vectơ <int> myvector = { 1, 2, 3, 4, 5 }; vectơ <int>::iterator it = myvector.begin(); 2) Khai báo một trình vòng lặp cho một vectơ số nguyên và trỏ nó tới phần tử sau cuối trong vectơ. vectơ <int> myvector = { 1, 2, 3, 4, 5 }; vectơ <int>::iterator it = myvector.end(); // trỏ đến phần tử sau phần tử cuối cùng, vectơ <int>::iterator it1 = myvector.end() - 1 ; // trỏ đến phần tử cuối cùng. Nhận và hiển thị giá trị Nhận và hiển thị phần tử được chỉ ra bởi iterator. cout << *nó; Di chuyển vị trí trình vòng lặp Di chuyển vị trí lặp 3 vị trí về phía trước. trước(nó, 3); Tạo một trình vòng lặp mới từ một trình vòng lặp hiện có Tạo một trình vòng lặp mới dựa trên một trình vòng lặp hiện có, tăng 3 vị trí. auto it1 = next(nó, 3); Hiển thị giá trị véc-tơ bằng trình vòng lặp vector<int>::iterator it; for (it = myvector.begin(); it != myvector.end(); ++it) { cout<<*nó<<" "; } Vectơ duyệt Để duyệt vectơ từ phần tử cuối cùng đến phần tử đầu tiên, một trình vòng lặp ngược reverse_iterator được sử dụng, nó được lấy bằng cách: 1) rbegin() - trả về một trình lặp ngược trỏ đến phần tử cuối cùng của vectơ, ứng dụng của thao tác ++ dẫn đến chuyển đổi sang phần tử trước đó; 2) rend() - trả về một trình vòng lặp ngược trỏ đến phần tử trước đó của vectơ, việc áp dụng thao tác ++ dẫn đến quá trình chuyển đổi tiếp theo. vector<int>::reverse_iterator it = myvector.rbegin(); // trỏ đến phần tử cuối cùng vector<int>::reverse_iterator it = myvector.rend(); // trỏ đến một phần tử, // cái nào đến trước cái đầu tiên, Problem Bạn được cung cấp một dãy số nguyên. Viết chương trình đảo ngược một vectơ sử dụng reverse_iterator. Đầu vào Số cho trước N - số phần tử trong dãy (1<= N <= 100). Sau đó, các số N được viết cách nhau bằng dấu cách. Đầu ra Xuất tất cả các phần tử của vectơ kết quả trên một dòng, phân tách chúng bằng khoảng trắng. Ví dụ <đầu> # Đầu vào Đầu ra điều> 1 5 1 2 3 4 5 5 4 3 2 1 1000 ms 256 Mb Rules for program design and list of errors in automatic problem checking Teacher commentary
Trình lặp truy cập ngẫu nhiên
[]
end()
reverse_iterator
rbegin()
++
rend()
N
1000 ms 256 Mb Rules for program design and list of errors in automatic problem checking