std::unordered_set::begin
#include <unordered_set>
iterator begin() noexcept;
const_iterator begin() const noexcept;
local_iterator begin(size_type n);
const_local_iterator begin(size_type n) const;
Trả về một iterator trỏ đến phần tử đầu tiên trong std::unordered_set. Tuy nhiên, vì std::unordered_set không lưu trữ phần tử theo thứ tự cụ thể nào, "phần tử đầu tiên" ở đây chỉ mang ý nghĩa là một phần tử bất kỳ trong set, không phải là phần tử nhỏ nhất hay lớn nhất.
Tham số
Không có tham số (Nếu không truyền tham số, nó sẽ trả về iterator cho phần tử đầu tiên của std::unordered_set, nếu có tham số n thì hàm sẽ trả về iterator cho phần tử đầu tiên của bucket thứ n).
Giá trị trả về
iterator
- Trả về một iterator có thể đọc và ghi, trỏ đến một phần tử trong std::unordered_set (phiên bản không const).
const_iterator
- Trả về một iterator chỉ đọc, trỏ đến một phần tử trong std::unordered_set. Phiên bản này được sử dụng khi std::unordered_set là một đối tượng
const
(phiên bản const).
local_iterator
- iterator trỏ đến phần tử đầu tiên của bucket n (có thể sửa đổi giá trị).
const_local_iterator
- iterator trỏ đến phần tử đầu tiên của bucket n (chỉ đọc).
Đặc điểm
- Trỏ đến phần tử bất kỳ:
begin()
trả về iterator trỏ đến một phần tử bất kỳ trong std::unordered_set, không đảm bảo thứ tự. - Có thể dereference: Bạn có thể dereference (sử dụng toán tử
*
) iterator trả về bởibegin()
để truy cập giá trị của phần tử. - noexcept: Cả hai phiên bản của
begin()
đề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. - Phân biệt với
end()
:begin()
trỏ đến một phần tử (không xác định thứ tự), trong khiend()
trỏ đến vị trí sau phần tử cuối cùng (past-the-end). - Không làm thay đổi unordered_set: Gọi
begin()
không làm thay đổi nội dung hay trạng thái của std::unordered_set. - std::unordered_set rỗng: Nếu std::unordered_set rỗng thì
begin()
sẽ trả về giá trị giốngend()
. - Độ phức tạp:
O(1)
- thời gian hằng số.
Ví dụ
#include <iostream>
#include <unordered_set>
int main() {
std::unordered_set<std::string> myset = {"apple", "banana", "orange", "kiwi"};
// Duyệt unordered_set sử dụng begin() và end()
std::cout << "myset elements:";
for (auto it = myset.begin(); it != myset.end(); ++it) {
std::cout << ' ' << *it;
}
std::cout << '\n'; // Output: myset elements: kiwi orange banana apple (thứ tự có thể khác)
// Sử dụng begin() để truy cập một phần tử (không đảm bảo thứ tự)
if (!myset.empty()) {
std::cout << "An element in myset: " << *myset.begin() << '\n';
}
return 0;
}
Các hàm liên quan
end | Trả về một iterator trỏ đến vị trí sau phần tử cuối cùng trong std::unordered_set |
cbegin | Trả về một const_iterator trỏ đến phần tử đầu tiên trong std::unordered_set |
find | Tìm kiếm một phần tử có giá trị bằng với giá trị cho trước trong std::unordered_set |