std::deque::cend
#include <deque>
const_iterator cend() const noexcept;
Trả về một iterator hằng (constant iterator) trỏ đến phần tử sau phần tử cuối cùng của deque.
Tham số
Không có tham số
Giá trị trả về
- Trả về một
const_iterator
trỏ đến phần tử sau phần tử cuối cùng của deque. Đây là một vị trí "past-the-end".const_iterator
chỉ cho phép đọc giá trị, không cho phép thay đổi.
Đặc điểm
cend()
("constant end") được sử dụng để xác định điểm kết thúc khi duyệt qua các phần tử của deque bằngconst_iterator
, thường kết hợp vớicbegin()
.- Sử dụng
cend()
đảm bảo an toàn hơn khi không muốn vô tình sửa đổi container trong quá trình duyệt. cend()
trả vềconst_iterator
trỏ đến phần tử sau phần tử cuối cùng. Dereferencing (toán tử*
) iterator này sẽ dẫn đến hành vi không xác định (undefined behavior).- Iterator trả về bởi
cend()
làconst_iterator
, nghĩa là không thể thay đổi giá trị của các phần tử trong deque thông qua iterator này. cend()
được đánh dấu lànoexcept
, nghĩa là nó được đảm bảo không ném ra ngoại lệ nào.cend()
thường được sử dụng cùng vớicbegin()
để duyệt qua toàn bộ deque. Khicbegin()
vàcend()
bằng nhau, điều đó có nghĩa là deque rỗng.end()
trả vềiterator
(có thể đọc và ghi), trong khicend()
trả vềconst_iterator
(chỉ đọc).- Gọi
cend()
không làm thay đổi nội dung của deque. - Độ phức tạp:
O(1)
- Thời gian hằng số.
Ví dụ
#include <iostream>
#include <deque>
int main() {
// Tạo một deque chứa các số nguyên
std::deque<int> myDeque = {1, 2, 3, 4, 5};
// Duyệt qua các phần tử bằng cbegin() và cend()
for (auto it = myDeque.cbegin(); it != myDeque.cend(); ++it) {
std::cout << *it << " "; // In các phần tử
}
std::cout << std::endl;
// Cố gắng thay đổi giá trị thông qua iterator (Sẽ gây lỗi biên dịch)
// *myDeque.cbegin() = 10; // Lỗi: const_iterator không cho phép thay đổi giá trị
return 0;
}
Các hàm liên quan
end | Trả về một iterator trỏ đến phần tử sau phần tử cuối cùng của deque |
cbegin | Trả về một iterator hằng (constant iterator) trỏ đến phần tử đầu tiên của deque |