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
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
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