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

std::set::end

#include <set>

      iterator end() noexcept;
const_iterator end() const noexcept;

Trả về một iterator trỏ đến vị trí sau phần tử cuối cùng trong std::set. Vị trí này, thường được gọi là "past-the-end", không phải là một phần tử thực sự trong set, mà là một vị trí đặc biệt dùng để đánh dấu kết thúc của set.

Tham số

Không có tham số

Giá trị trả về

  • iterator (phiên bản không const): Trả về một iterator có thể đọc và ghi, trỏ đến vị trí sau phần tử cuối cùng trong std::set.
  • const_iterator (phiên bản const): Trả về một iterator chỉ đọc, trỏ đến vị trí sau phần tử cuối cùng trong std::set. Phiên bản này được sử dụng khi std::set là một đối tượng const.

Đặc điểm

  1. Vị trí "past-the-end": end() không trỏ đến một phần tử thực sự trong std::set, mà là một vị trí sau phần tử cuối cùng.
  2. Không thể dereference: Bạn không thể dereference (sử dụng toán tử *) iterator trả về bởi end() vì nó không trỏ đến một phần tử hợp lệ.
  3. Đánh dấu kết thúc set: end() được sử dụng để đánh dấu điểm kết thúc của std::set trong các vòng lặp và thuật toán.
  4. noexcept: Cả hai phiên bản của end() đều được đánh dấu là noexcept, nghĩa là chúng được đảm bảo không ném ra ngoại lệ nào.
  5. Phân biệt với begin(): begin() trỏ đến phần tử đầu tiên, trong khi end() trỏ đến vị trí sau phần tử cuối cùng.
  6. std::set rỗng: Nếu std::set rỗng thì end() sẽ trả về giá trị giống begin().
  7. Không làm thay đổi set: Gọi end() không làm thay đổi nội dung hay trạng thái của std::set.
  8. Độ phức tạp: O(1) - thời gian hằng số.

Ví dụ

#include <iostream>
#include <set>

int main() {
std::set<int> myset = {5, 2, 8, 1, 9, 4};

// Duyệt danh sách sử dụng begin() và end()
std::cout << "myset:";
for (auto it = myset.begin(); it != myset.end(); ++it) {
std::cout << ' ' << *it;
}
std::cout << '\n'; // Output: myset: 1 2 4 5 8 9

// Sử dụng begin() để truy cập phần tử đầu tiên
std::cout << "First element: " << *myset.begin() << '\n'; // Output: First element: 1

return 0;
}

Các hàm liên quan

beginTrả về một iterator trỏ đến phần tử đầu tiên trong std::set
rbeginTrả về một reverse_iterator trỏ đến phần tử cuối cùng trong std::set
rendTrả về một reverse_iterator trỏ đến phần tử trước phần tử đầu tiên của std::set