cbegin() và cend() cung cấp const_iterator để duyệt list từ đầu đến cuối chỉ đọc (không sửa đổi phần tử).
cbegin()
- Trả về const_iterator trỏ đến phần tử đầu tiên
- Cú pháp:
list_name.cbegin()
cend()
- Trả về const_iterator trỏ đến vị trí sau phần tử cuối (past-the-end)
- Cú pháp:
list_name.cend()
Ví dụ duyệt chỉ đọc
#include <iostream>
#include <list>
using namespace std;
int main() {
list<int> Lt = {4, 1, 7, 9, 6};
cout << "Elements (read-only): ";
for (auto itr = Lt.cbegin(); itr != Lt.cend(); ++itr)
cout << *itr << " ";
cout << endl;
// *itr = 100; // Lỗi compile: assignment to const reference
return 0;
}
Kết quả
Elements (read-only): 4 1 7 9 6
Khi nào dùng cbegin/cend?
- Duyệt container trong hàm nhận
const list& - Đảm bảo không vô tình sửa đổi dữ liệu
- API công khai trả về iterator chỉ đọc
So sánh
| Hàm | Trả về | Vị trí | Sửa được? |
|---|---|---|---|
| begin() | iterator | Đầu | Có |
| cbegin() | const_iterator | Đầu | Không |
| end() | iterator | Sau cuối | Có |
| cend() | const_iterator | Sau cuối | Không |
C++11: dùng auto itr = Lt.cbegin() tự suy diễn kiểu const_iterator.