Chuyển tới nội dung chính

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

  1. 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ới begin().
  2. 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).
  3. end() thường được sử dụng cùng với begin() để duyệt qua tất cả các phần tử của deque. Khi begin()end() bằng nhau, điều đó có nghĩa là deque rỗng.
  4. Gọi end() không làm thay đổi nội dung của deque.
  5. 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ệ.
  6. Độ 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

backTrả về tham chiếu đến phần tử cuối cùng trong deque
beginTrả về một iterator trỏ đến phần tử đầu tiên của deque
rbeginTrả về một reverse iterator trỏ đến phần tử cuối cùng của deque
rendTrả về một reverse iterator trỏ đến phần tử trước phần tử đầu tiên của deque