Cách lặp lại bản đồ trong C ++

How Iterate Over Map C



Trong hướng dẫn nhanh này, chúng ta sẽ xem cách lặp lại trong bản đồ trong C ++.

Có nhiều cách để lặp lại bản đồ trong C ++. Với các phiên bản C ++ mới hơn, có nhiều cách nâng cao hơn để lặp qua bản đồ trong C ++.







Chúng ta hãy đi qua từng cái một.



Sử dụng vòng lặp for với stp :: map

Chúng tôi đã tạo một bản đồ có tên countryCapitalMap và đã chèn các cặp khóa-giá trị vào nó.



<>
#bao gồm
#bao gồm
#bao gồm
#bao gồm
#bao gồm
sử dụng không gian têngiờ;
NSchủ chốt() {
// Khởi tạo bản đồ
bản đồ>'Ấn Độ','Delhi'));
countryCapitalMap.chèn(đôi<chuỗi, chuỗi>('Nepal','Kathmandu'));
countryCapitalMap.chèn(đôi<chuỗi, chuỗi>('Trung Quốc','Bắc Kinh'));
countryCapitalMap.chèn(đôi<chuỗi, chuỗi>('Pháp','Paris'));

// Lặp lại bằng cách sử dụng trình lặp trong vòng lặp for
(tự độngitr=countryCapitalMap.bắt đầu();itr!=countryCapitalMap.kết thúc();itr++)
{
giờ::Giá cả <<itr->đầu tiên// Khóa truy cập
<< ':'
<<itr->thứ hai// Giá trị truy cập
<<giờ::endl;
}
trở lại 0;
}
</>
Đầu ra:
<>
Trung Quốc:Bắc Kinh
Nước pháp:Paris
Ấn Độ:Delhi
Nêpan:Kathmandu
</>

Như bạn thấy, chúng tôi đã in country: capital (key: value) bằng cách sử dụng vòng lặp for.





Nếu bạn để ý, chúng ta đã sử dụng auto gõ chỉ định cho trình lặp bản đồ vì tính dễ đọc. Bạn có thể sử dụng map::iterator rõ ràng là tốt.
Ghi chú: Nếu bạn nhìn thấy đầu ra, nó được sắp xếp theo các khóa theo thứ tự tăng dần. Điều này là do std :: map là một vùng chứa kết hợp được sắp xếp với Bộ so sánh được cung cấp (phiên bản C ++ 11 trở đi). Vì chúng tôi không cung cấp bất kỳ bộ so sánh nào, vì vậy C ++ đã sử dụng Bộ so sánh mặc định cho chuỗi.

Sử dụng vòng lặp while với stp :: map

Chúng ta cũng có thể sử dụng vòng lặp while thay vì vòng lặp for.



<>
#bao gồm
#bao gồm
#bao gồm
#include>
sử dụng không gian têngiờ;
NSchủ chốt() {
// Khởi tạo bản đồ
bản đồ<chuỗi, chuỗi>countryCapitalMap;
// Chèn các phần tử khác nhau vào bản đồ
countryCapitalMap.chèn(đôi<chuỗi, chuỗi>('Ấn Độ','Delhi'));
countryCapitalMap.chèn(đôi<chuỗi, chuỗi>('Nepal','Kathmandu'));
countryCapitalMap.chèn(đôi<chuỗi, chuỗi>('Trung Quốc','Bắc Kinh'));
countryCapitalMap.chèn(đôi<chuỗi, chuỗi>('Pháp','Paris'));


// Tạo một trình lặp cho bản đồ và Khởi tạo với begin
tự độngitr=countryCapitalMap.bắt đầu();
// Lặp lại bằng cách sử dụng trình lặp trong vòng lặp while
trong khi (itr!=countryCapitalMap.kết thúc())
{
giờ::Giá cả <<itr->đầu tiên// Khóa truy cập
<< ':'
<<itr->thứ hai// Giá trị truy cập
<<giờ::endl;
itr++;
}
trở lại 0;
}
</>
Đầu ra:
<>
Trung Quốc:Bắc Kinh
Nước pháp:Paris
Ấn Độ:Delhi
Nêpan:Kathmandu
</>

Sử dụng vòng lặp dựa trên Phạm vi cho (phiên bản C ++ 11 trở đi)

Nếu bạn đang sử dụng phiên bản C ++ 11, thì đây là cách tốt nhất để lặp lại bản đồ trong C ++. Bạn có thể tránh các vòng lặp hình khối truyền thống và sử dụng vòng lặp này thay thế.

<>
#bao gồm
#bao gồm
#bao gồm

sử dụng không gian têngiờ;
NSchủ chốt() {
// Khởi tạo bản đồ
bản đồ<chuỗi, chuỗi>countryCapitalMap;
// Chèn các phần tử khác nhau vào bản đồ
countryCapitalMap.chèn(đôi<chuỗi, chuỗi>('Ấn Độ','Delhi'));
countryCapitalMap.chèn(đôi<chuỗi, chuỗi>('Nepal','Kathmandu'));
countryCapitalMap.chèn(đôi<chuỗi, chuỗi>('Trung Quốc','Bắc Kinh'));
countryCapitalMap.chèn(đôi<chuỗi, chuỗi>('Pháp','Paris'));


// Lặp lại bằng cách sử dụng trình lặp trong vòng lặp for
(hăng sô tự động &anh ta:countryCapitalMap) {
Giá cả <<anh ta.đầu tiên << ':' <<anh ta.thứ hai<<' ';
}

trở lại 0;
}
</>
Đầu ra:
Trung Quốc:Bắc Kinh
Nước pháp:Paris
Ấn Độ:Delhi
Nêpan:Kathmandu

Sử dụng vòng lặp for dựa trên phạm vi với các cặp khóa-giá trị (phiên bản C ++ 17 trở đi)

Phiên bản này được hỗ trợ từ c ++ 17 trở đi và cung cấp một cách linh hoạt hơn để lặp lại trên bản đồ. Bạn có thể truy cập rõ ràng cặp khóa-giá trị trong bản đồ để cung cấp giải pháp dễ đọc hơn.

<>
#bao gồm
#bao gồm
#bao gồm

sử dụng không gian têngiờ;
NSchủ chốt() {
// Khởi tạo bản đồ
bản đồ<chuỗi, chuỗi>countryCapitalMap;
// Chèn các phần tử khác nhau vào bản đồ
countryCapitalMap.chèn(đôi<chuỗi, chuỗi>('Ấn Độ','Delhi'));
countryCapitalMap.chèn(đôi<chuỗi, chuỗi>('Nepal','Kathmandu'));
countryCapitalMap.chèn(đôi<chuỗi, chuỗi>('Trung Quốc','Bắc Kinh'));
countryCapitalMap.chèn(đôi<chuỗi, chuỗi>('Pháp','Paris'));


// Lặp lại bằng cách sử dụng trình lặp trong vòng lặp for
(hăng sô tự động& [giá trị cốt lõi] :countryCapitalMap) {
Giá cả <<Chìa khóa<< ':' <<giá trị<< ' ';
}

trở lại 0;
}
</>
Đầu ra:
Trung Quốc:Bắc Kinh
Nước pháp:Paris
Ấn Độ:Delhi
Nêpan:Kathmandu

Đó là tất cả về cách lặp lại bản đồ trong C ++. Chúc bạn viết mã vui vẻ!