Tôi chắc rằng bạn biết rằng một std::vector<X>
cửa hàng toàn bộ các X
đối tượng, phải không? Nhưng nếu bạn có một std::map<X, Y>
, những gì nó thực sự lưu trữ là cả một std::pair<const X, Y>
s. Đó chính xác là bản đồ là gì - nó kết hợp các khóa và các giá trị liên quan.
Khi bạn lặp lại qua một std::map
, bạn đang lặp lại tất cả những điều này std::pair
. Khi bạn hủy đăng ký một trong các trình vòng lặp này, bạn sẽ nhận được một std::pair
khóa chứa và giá trị liên quan của nó.
std::map<std::string, int> m = /* fill it */;
auto it = m.begin();
Ở đây, nếu bạn làm bây giờ *it
, bạn sẽ nhận được std::pair
phần tử đầu tiên trong bản đồ.
Bây giờ loại std::pair
cho phép bạn truy cập vào các phần tử của nó thông qua hai thành viên: first
và second
. Vì vậy, nếu bạn có một cuộc std::pair<X, Y>
gọi p
, p.first
là một X
đối tượng và p.second
là một Y
đối tượng.
Vì vậy, bây giờ bạn biết rằng việc hủy bỏ hội thảo mà một std::map
trình vòng lặp cung cấp cho bạn std::pair
, sau đó bạn có thể truy cập các phần tử của nó với first
và second
. Ví dụ, (*it).first
sẽ cung cấp cho bạn chìa khóa và (*it).second
sẽ cung cấp cho bạn giá trị. Đây là tương đương với it->first
và it->second
.
std::map
lưu trữ một khóa và một giá trị .map::iterator.second
đề cập đến giá trị .