Trong C++, map
là một kiểu dữ liệu cấu trúc dữ liệu của STL (Standard Template Library). Nó là một loại associative container, tức là nó chứa các cặp key-value và cho phép truy xuất các giá trị thông qua các key. map
sử dụng cây nhị phân để quản lý các cặp key-value, do đó tốc độ truy xuất là logarithmic trong số lượng phần tử. map
là một kiểu dữ liệu độc lập với dữ liệu được lưu trữ.
Các bài viết liên quan:
map
có thể được sử dụng để lưu trữ và truy xuất các dữ liệu có cấu trúc như một từ điển hoặc bảng băm. Nó cũng có thể dùng để lưu trữ các dữ liệu có cấu trúc như các lớp hoặc cấu trúc. Nó có thể lưu trữ bất kỳ kiểu dữ liệu nào có thể so sánh bằng toán tử <
. Nếu bạn muốn sử dụng một khóa khác nhau, bạn có thể sử dụng unordered_map
thay thế.
Tại sao sử dụng map trong c++
Có nhiều lý do tại sao bạn nên sử dụng map
trong C++:
- Truy xuất nhanh:
map
sử dụng cây nhị phân để quản lý các cặp key-value, tức là truy xuất, chèn và xóa đều có thời gian logarithmic trong số lượng phần tử. - Tự động sắp xếp:
map
sẽ tự động sắp xếp các cặp key-value theo thứ tự tăng dần của key, giúp bạn dễ dàng tìm kiếm và duyệt qua các giá trị. - Dễ sử dụng:
map
là một container được định nghĩa sẵn trong STL, bạn có thể sử dụng nó như một biến bình thường, không cần phải tự viết code cho các thao tác cơ bản như truy xuất, chèn, xóa. - Tương thích với các kiểu dữ liệu khác nhau:
map
có thể lưu trữ bất kỳ kiểu dữ liệu nào có thể so sánh bằng toán tử<
, giúp cho việc sử dụng nó trong các trường hợp khác nhau trở nên dễ dàng hơn.
Một vài ví dụ sử dụng map trong c++
Ví dụ 1: Tạo một map chứa các cặp từ-định nghĩa
#include <iostream> #include <map> using namespace std; int main() { map<string, string> dictionary; dictionary["hello"] = "xin chào"; dictionary["world"] = "thế giới"; dictionary["computer"] = "máy tính"; cout << dictionary["hello"] << endl; // xuất "xin chào" cout << dictionary["world"] << endl; // xuất "thế giới" cout << dictionary["computer"] << endl; // xuất "máy tính" return 0; }
Ví dụ 2: Tạo một map chứa các cặp số nguyên-tên tháng
Copy code#include <iostream> #include <map> using namespace std; int main() { map<int, string> months; months[1] = "January"; months[2] = "February"; months[3] = "March"; months[4] = "April"; months[5] = "May"; months[6] = "June"; months[7] = "July"; months[8] = "August"; months[9] = "September"; months[10] = "October"; months[11] = "November"; months[12] = "December"; cout << "The 6th month is " << months[6] << endl; // xuất "The 6th month is June" return 0; }
Ví dụ 3: Tìm kiếm và xóa phần tử trong map
Copy code#include <iostream> #include <map> using namespace std; int main() { map<string, int> grades; grades["Alice"] = 90; grades["Bob"] = 80; grades["Charlie"] = 85; grades["David"] = 75; grades["Eve"] = 95; string name = "Bob"; if (grades.find(name) != grades.end()) { cout << name << "'s grade is " << grades[name] << endl; } else { cout << name << " not found" << endl; } grades.erase("Bob"); if (grades.find(name) != grades.end()) { cout << name << "'s grade is " << grades[name] << endl; } else { cout << name << " not found" << endl; } return 0; }
Hãy chú ý rằng, khi xóa một phần tử trong map, cần sử dụng hàm erase(key)
để xóa phần tử có key tương ứng. Không thể sử dụng hàm delete
hoặc gán giá trị cho key đó bằng null
hoặc 0
để xóa nó.
Các ví dụ trên chỉ là vài ví dụ cơ bản về cách sử dụng map trong C++, tuy nhiên map có thể sử dụng cho nhiều mục đích khác nhau, tùy thuộc vào nhu cầu cụ thể của bạn.