Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

array::crbegin() và array::crend() trong C++ STL

Tìm hiểu crbegin() và crend() của std::array trong C++ STL.

array::crbegin()

Trả về constant reverse iterator trỏ đến phần tử cuối cùng (bắt đầu duyệt ngược). Không nhận tham số.

array::crend()

Trả về constant reverse iterator trỏ đến vị trí "trước phần tử đầu tiên" (kết thúc duyệt ngược). Là nghịch đảo của crbegin().

Cặp crbegin()/crend() dùng để duyệt ngược mảng chỉ đọc (không thể sửa đổi phần tử qua iterator này).

Ví dụ

#include <iostream>
#include <array>
using namespace std;

int main() {
    array<int, 10> arr = {0, 11, 22, 33, 44, 55, 66, 77, 88, 99};
    
    cout << "Duyet nguoc (chi doc): ";
    for(auto it = arr.crbegin(); it != arr.crend(); ++it) {
        cout << *it << " ";
        // *it = 100; // LỖI compile: không thể sửa qua const_reverse_iterator
    }
    return 0;
}

Kết quả

Duyet nguoc (chi doc): 99 88 77 66 55 44 33 22 11 0

Các cặp iterator liên quan

IteratorLoạiHướngCó sửa được?
begin()/end()iteratorXuôiCó
cbegin()/cend()const_iteratorXuôiKhông
rbegin()/rend()reverse_iteratorNgượcCó
crbegin()/crend()const_reverse_iteratorNgượcKhông

Khi nào dùng crbegin/crend?

  • Duyệt ngược mảng trong hàm nhận const array&.
  • Đảm bảo không vô tình sửa đổi dữ liệu khi chỉ cần đọc.
  • Kết hợp với algorithm: find(arr.crbegin(), arr.crend(), value).