Duyệt multimap trong C++ | Laptrinhcanban.com

Duyệt multimap trong C++

Hướng dẫn cách duyệt multimap trong C++. Bạn sẽ học được 2 cách căn bản để duyệt multimap trong C++ sau bài học này.

Trong bài multimap trong C++ chúng ta đã biết các phần tử trong multimap được xác định thông qua key của chúng chứ không phải là bằng index như các containers khác trong C++ như list vector. Do đó chúng ta cũng không thể sử dụng index của các phần tử để truy cập vào phần tử của multimap theo cách thông thường được.

Thay vào đó thì chúng ta có 2 phương pháp duyệt multimap trong C++ như sau:

  • Sử dụng vòng lặp dựa trên phạm vi
  • Sử dụng iterator

Duyệt multimap trong C++ bằng vòng lặp dựa trên phạm vi

Có rất nhiều thứ tiện lợi đã được thêm vào trong C++, và một trong số đó chính là vòng lặp dựa trên phạm vi.

Bằng cách sử dụng vòng lặp dựa trên phạm vi, chúng ta có thể duyệt multimap trong C++ với cú pháp như sau:

for ( auto& x : mp) {
    cout << x.first << “: “ << x.second << endl;
}

Trong đó:

  • mp là tên multimap.
  • auto là kiểu suy luận giúp tự xác định kiểu dữ liệu của giá trị lấy từ multimap.
  • x là tên một biến dùng để gán từng phần tử được lấy từ multimap.
  • x.firstx.second lần lượt được sử dụng để lấy key và value của phần tử

Ví dụ cụ thể:

#include <iostream>
#include <map>
using namespace std;

int main()
{
multimap<string,int> mp = {
{ "alpha", 10 },
{ "beta", 20 },
{ "alpha", 20 },
{ "gamma", 30 } };

for (auto x: mp) {
cout << x.first << ": " << x.second << endl;
}
}

Kết quả:

alpha: 10
alpha: 20
beta: 20
gamma: 30

Duyệt multimap trong C++ bằng iterator

Trong C++, các kiểu dữ liệu như vector, multimap, multimap đều được thêm một chức năng là iterator nhằm giúp biến chúng thành các trình lặp để dễ dàng xử lý.

Bằng cách sử dụng iterator, chúng ta có thể duyệt multimap trong C++ với cú pháp như sau:

for(auto itr = mp.begin(); itr != mp.end(); ++itr) {
    cout << itr->first << ": "<< itr->second << "\n";
}

Trong đó:

  • mp là tên multimap
  • itr là tên iterator dùng để trỏ đến phần tử
  • itr->firstitr->second lần lượt được sử dụng để lấy key và value của phần tử

Ví dụ cụ thể:

#include <iostream>
#include <map>
using namespace std;

int main()
{
multimap<string,int> mp = {
{ "alpha", 10 },
{ "beta", 20 },
{ "alpha", 20 },
{ "gamma", 30 } };

for(auto itr = mp.begin(); itr != mp.end(); ++itr) {
cout << itr->first << ": "<< itr->second << "\n";
}
}

Và kết quả thu về cũng tương tự với phương pháp duyệt multimap bằng vòng lặp dựa trên phạm vi ở trên:

alpha: 10
alpha: 20
beta: 20
gamma: 30

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về cách duyệt multimap trong C++ rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về C++ trong các bài học tiếp theo.

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.