Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Hàm map::at() và map::swap() trong C++ STL


Trong bài viết này, chúng ta sẽ thảo luận về cách hoạt động, cú pháp và ví dụ của hàm map::at() và map::swap() trong C++ STL.

Map trong C++ STL là gì?

Map là container liên hợp, cho phép lưu trữ các phần tử được hình thành từ tổ hợp khóa (key) và giá trị ánh xạ (mapped value) theo một thứ tự xác định. Trong container map, dữ liệu luôn được sắp xếp nội bộ nhờ các khóa liên kết. Các giá trị trong map được truy xuất bằng khóa duy nhất của chúng.

map::at() là gì?

map::at() là hàm built-in trong C++ STL, được định nghĩa trong header . Hàm at() dùng để truy cập một phần tử cụ thể của container map liên hợp. Hàm này trả về tham chiếu đến giá trị cụ thể liên kết với khóa.

Nếu khóa không khớp với bất kỳ khóa nào trong container map, hàm sẽ ném ngoại lệ out_of_range.

Cú pháp

map_name.at(key& k);

Tham số

Hàm chấp nhận một tham số:

  • k – Đây là khóa mà chúng ta muốn tham chiếu đến.

Giá trị trả về

Hàm trả về tham chiếu đến giá trị liên kết với khóa k cần tìm.

Ví dụ

Đầu vào

std::map<int> mymap; mymap.insert({'a', 10}); mymap.insert({'b', 20}); mymap.insert({'c', 30}); mymap.at('b');

Đầu ra

b:20

Ví dụ hoàn chỉnh

#include <bits/stdc++.h> using namespace std; int main() {    map<int, int> TP_1;    map<int, int> TP_2;    TP_1[1] = 10;    TP_1[2] = 20;    TP_1[3] = 30;    TP_1[4] = 40;    TP_2[5] = 50;    TP_2[6] = 60;    TP_2[7] = 70;    cout<<"Phần tử tại TP_1[1] = "<< TP_1.at(1) << endl;    cout<<"Phần tử tại TP_1[2] = "<< TP_1.at(2) << endl;    cout<<"Phần tử tại TP_1[3] = "<< TP_1.at(3) << endl;    cout<<"\nPhần tử tại TP_2[7] = "<< TP_2.at(7) << endl;    cout<<"Phần tử tại TP_2[5] = "<< TP_2.at(5) << endl;    return 0; }

Kết quả

Phần tử tại TP_1[1] = 10 Phần tử tại TP_1[2] = 20 Phần tử tại TP_1[3] = 30 Phần tử tại TP_1[7] = 70 Phần tử tại TP_1[5] = 50

map::swap() là gì?

map::swap() là hàm built-in trong C++ STL, được định nghĩa trong header . Hàm swap() dùng để hoán đổi nội dung của hai container map. Hàm này hoán đổi giá trị của hai container map bất kể kích thước của chúng.

Khi hàm này được gọi, nó nhận tham số là một container map khác và hoán đổi nội dung với container liên hợp.

Cú pháp

map_name.swap(map& map_name2);

Tham số

Hàm chấp nhận một tham số:

  • map_name2 – Đối tượng container map khác mà dữ liệu của nó sẽ được hoán đổi với container map liên hợp.

Giá trị trả về

Hàm không trả về giá trị nào.

Ví dụ

Đầu vào

std::map<int> odd, eve; odd.insert({'a', 1}); odd.insert({'b', 3}); odd.insert({'c', 5}); eve.insert({'d', 2}); eve.insert({'e', 4}); eve.insert({'f', 6}); odd.swap(eve);

Đầu ra

Odd: d: 2 e:4 f:6 Eve: a:1 b:3 c:5

Ví dụ hoàn chỉnh

#include <bits/stdc++.h> using namespace std; int main() {    map<int, int> TP_1;    map<int, int> TP_2;    TP_1[1] = 10;    TP_1[2] = 20;    TP_1[3] = 30;    TP_1[4] = 40;    TP_2[5] = 50;    TP_2[6] = 60;    TP_2[7] = 70;    swap(TP_1, TP_2);    cout<<"Các phần tử của TP_1 sau hoán đổi:\n"<< "\tKHOÁ\tGIÁ TRỊ\n";    for (auto i = TP_1.begin(); i!= TP_1.end(); i++) {       cout << "\t" << i->first << "\t" << i->second << '\n';    }    cout << "Các phần tử của TP_2 sau hoán đổi:\n"<< "\tKHOÁ\tGIÁ TRỊ\n";    for (auto i = TP_2.begin(); i!= TP_2.end(); i++) {       cout << "\t" << i->first << "\t" << i->second << '\n';    }    return 0; }

Kết quả

Các phần tử của TP_1 sau hoán đổi: KHOÁ   GIÁ TRỊ 5     50 6     60 7     70 Các phần tử của TP_2 sau hoán đổi: KHOÁ   GIÁ TRỊ 1     10 2     20 3     30 4     40