std::map::begin
#include <map>
iterator begin() noexcept;
const_iterator begin() const noexcept;
Trả về một iterator trỏ đến phần tử đầu tiên trong std::map. Do std::map lưu trữ các phần tử theo thứ tự được sắp xếp (theo key
), phần tử đầu tiên mà begin()
trỏ tới sẽ là phần tử có key
nhỏ nhất (theo tiêu chí so sánh được sử dụng khi khởi tạo std::map).
Tham số
Không có tham số
Giá trị trả về
iterator begin()
- Trả về một iterator có thể đọc và ghi, trỏ đến phần tử đầu tiên trong std::map.
const_iterator begin() const
- Trả về một iterator chỉ đọc, trỏ đến phần tử đầu tiên trong std::map. Phiên bản này được sử dụng khi std::map là một đối tượng
const
.
- Trả về một iterator chỉ đọc, trỏ đến phần tử đầu tiên trong std::map. Phiên bản này được sử dụng khi std::map là một đối tượng
Đặc điểm
- Trỏ đến phần tử đầu tiên (key nhỏ nhất):
begin()
luôn trả về iterator trỏ đến phần tử đầu tiên trong std::map theo thứ tự đã sắp xếp (theokey
). - Có thể dereference: Bạn có thể dereference (sử dụng toán tử
*
) iterator trả về bởibegin()
để truy cậpkey-value
của phần tử đầu tiên. Iterator của std::map trỏ đến một std::pair, vớiit->first
làkey
vàit->second
làvalue
. - 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 phần tử đầu tiên, trong khiend()
trỏ đến vị trí sau phần tử cuối cùng (past-the-end). - Không làm thay đổi map: Gọi
begin()
không làm thay đổi nội dung hay trạng thái của std::map. - std::map rỗng: Nếu std::map rỗng thì
begin()
sẽ trả về giá trị giốngend()
. - Không thể thay đổi key: Bạn không thể thay đổi trực tiếp giá trị
key
của phần tử thông qua iterator (phải xóa đi rồi chèn lại cặpkey-value
mới). Tuy nhiên, bạn có thể thay đổivalue
thông qua iterator. - Độ phức tạp:
O(1)
- thời gian hằng số.
Ví dụ
#include <iostream>
#include <map>
int main() {
std::map<std::string, int> mymap = {
{"apple", 1},
{"banana", 2},
{"orange", 3}
};
// Duyệt map sử dụng begin() và end()
std::cout << "mymap elements:\n";
for (auto it = mymap.begin(); it != mymap.end(); ++it) {
std::cout << it->first << ": " << it->second << '\n';
}
// Output:
// mymap elements:
// apple: 1
// banana: 2
// orange: 3
// Sử dụng begin() để truy cập phần tử đầu tiên
std::cout << "First element key: " << mymap.begin()->first << '\n'; // Output: First element key: apple
std::cout << "First element value: " << mymap.begin()->second << '\n'; // Output: First element value: 1
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::map |
rbegin | Trả về một reverse_iterator trỏ đến phần tử cuối cùng trong std::map |
rend | Trả về một reverse_iterator trỏ đến phần tử trước phần tử đầu tiên của std::map |