std::unordered_multimap::end
#include <unordered_map>
iterator end() noexcept;
const_iterator end() const noexcept;
local_iterator end(size_type n);
const_local_iterator end(size_type n) const;
Trả về một iterator trỏ đến vị trí sau phần tử cuối cùng trong std::unordered_multimap. 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 multimap, mà là một vị trí đặc biệt dùng để đánh dấu kết thúc của multimap.
Tham số
end()
không có tham số nào trong trường hợp muốn lấy iterator trỏ đến cuối std::unordered_multimap.end(n)
có tham số đầu vào là n để lấy iterator trỏ đến cuối của bucket thứ n.
Giá trị trả về
iterator
- Trả về một iterator có thể đọc và ghi, trỏ đến vị trí sau phần tử cuối cùng trong std::unordered_multimap. (phiên bản không const).
const_iterator
- Trả về một iterator chỉ đọc, trỏ đến vị trí sau phần tử cuối cùng trong std::unordered_multimap. Phiên bản này được sử dụng khi std::unordered_multimap là một đối tượng
const
(phiên bản const).
local_iterator
- Trả về iterator trỏ đến cuối bucket thứ n.
const_local_iterator
- Trả về const_iterator trỏ đến cuối bucket thứ n.
Đặc điểm
- Vị trí "past-the-end":
end()
không trỏ đến một phần tử thực sự trong std::unordered_multimap, mà là một vị trí sau phần tử cuối cùng. - Không thể dereference: Bạn không thể dereference (sử dụng toán tử
*
hoặc->
) iterator trả về bởiend()
vì nó không trỏ đến một phần tử hợp lệ. - Đánh dấu kết thúc map:
end()
được sử dụng để đánh dấu điểm kết thúc của std::unordered_multimap trong các vòng lặp và thuật toán. - 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. - Phân biệt với
begin()
:begin()
trỏ đến một phần tử bất kỳ (thường dùng để bắt đầu duyệt), trong khiend()
trỏ đến vị trí sau phần tử cuối cùng. - std::unordered_multimap rỗng: Nếu std::unordered_multimap rỗng thì
end()
sẽ trả về giá trị giốngbegin()
. - Không làm thay đổi map: Gọi
end()
không làm thay đổi nội dung hay trạng thái của std::unordered_multimap. - Độ phức tạp:
O(1)
- thời gian hằng số.
Ví dụ
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_multimap<std::string, int> myumap = {
{"apple", 1},
{"banana", 2},
{"orange", 3},
{"apple", 4}
};
// Duyệt unordered_multimap sử dụng begin() và end()
std::cout << "myumap elements:";
for (auto it = myumap.begin(); it != myumap.end(); ++it) {
std::cout << " (" << it->first << ", " << it->second << ")";
}
std::cout << '\n';
// Output: myumap elements: (orange, 3) (banana, 2) (apple, 1) (apple, 4) (thứ tự có thể khác)
return 0;
}
Ví dụ về sử dụng begin()
và end()
để kiểm tra map rỗng
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_multimap<int, int> myumap;
if (myumap.begin() == myumap.end()) {
std::cout << "myumap is empty\n"; // Output: myumap is empty
}
return 0;
}
Các hàm liên quan
begin | Trả về một iterator trỏ đến phần tử đầu tiên trong std::unordered_multimap |
cend | Trả về một const_iterator trỏ đến vị trí sau phần tử cuối cùng trong std::unordered_multimap |
find | Tìm kiếm một phần tử có key bằng với giá trị key cho trước trong std::unordered_multimap |