std::deque::end
#include <deque>
iterator end() noexcept;
const_iterator end() const noexcept;
Trả về một 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 iterator đại diện cho vị trí sau phần tử cuối cùng trong deque.
iterator end()
- Trả về iterator có thể sửa đổi các phần tử trong deque.
const_iterator end() const
- Trả về iterator chỉ đọc, không thể sửa đổi phần tử.
Đặc điểm
end()
thường được sử dụng trong các vòng lặp để xác định điểm kết thúc khi duyệt qua các phần tử của deque, kết hợp vớibegin()
.- Iterator này không thể dereference (truy cập giá trị), vì nó không trỏ đến một phần tử hợp lệ trong deque. Dereferencing (toán tử *) iterator này sẽ dẫn đến hành vi không xác định (undefined behavior).
end()
thường được sử dụng cùng vớibegin()
để duyệt qua tất cả các phần tử của deque. Khibegin()
vàend()
bằng nhau, điều đó có nghĩa là deque rỗng.- Gọi
end()
không làm thay đổi nội dung của deque. - Khi dùng trong vòng lặp, phải luôn kiểm tra điều kiện
it != dq.end()
để tránh lỗi truy cập bộ nhớ không hợp lệ. - Độ phức tạp:
O(1)
- Thời gian hằng số.
Ví dụ
Duyệt qua các phần tử
#include <iostream>
#include <deque>
int main() {
std::deque<int> myDeque = {10, 20, 30, 40, 50};
std::cout << "myDeque contains:";
for (std::deque<int>::iterator it = myDeque.begin(); it != myDeque.end(); ++it) {
std::cout << ' ' << *it;
}
std::cout << '\n';
return 0;
}
Sử dụng với <algorithm>
#include <iostream>
#include <deque>
#include <algorithm> // for std::find
int main() {
std::deque<int> myDeque = {10, 20, 30, 40, 50};
// Tìm kiếm phần tử có giá trị 30
std::deque<int>::iterator it = std::find(myDeque.begin(), myDeque.end(), 30);
if (it != myDeque.end()) {
std::cout << "Element 30 found at position: " << (it - myDeque.begin()) << '\n';
} else {
std::cout << "Element 30 not found.\n";
}
return 0;
}
So sánh end()
với một iterator hợp lệ
#include <iostream>
#include <deque>
int main() {
std::deque<int> dq = {10, 20, 30};
auto it = dq.end(); // Iterator tới sau phần tử cuối cùng
--it; // Lùi về phần tử cuối
std::cout << *it << std::endl; // Output: 30
return 0;
}
Các hàm liên quan
back | Trả về tham chiếu đến phần tử cuối cùng trong deque |
begin | Trả về một iterator trỏ đến phần tử đầu tiên của deque |
rbegin | Trả về một reverse iterator trỏ đến phần tử cuối cùng của deque |
rend | Trả về một reverse iterator trỏ đến phần tử trước phần tử đầu tiên của deque |