Map trong C++ là gì? Cách sử dụng Map trong C++?

Map trong C++ là gì?

Map trong C++ là một cấu trúc dữ liệu cho phép lưu trữ dữ liệu dưới dạng cặp khóa và giá trị. Mỗi khóa trong map là duy nhất và được sử dụng để truy cập giá trị tương ứng.

Cách sử dụng Map trong C++?

Cú pháp khai báo map trong C++ như sau:

C++

map<Kiểu khóa, Kiểu giá trị> tên_map;

Vui lòng thận trọng khi sử dụng mã.

Ví dụ:

C++

map<string, int> student_scores;

Vui lòng thận trọng khi sử dụng mã.

Cú pháp này sẽ tạo ra một map có tên student_scores với khóa là kiểu string và giá trị là kiểu int.

Để thêm một cặp khóa và giá trị vào map, ta sử dụng toán tử insert():

C++

map<Kiểu khóa, Kiểu giá trị>::iterator it;

it = tên_map.insert(pair<Kiểu khóa, Kiểu giá trị>(khóa, giá trị));

Vui lòng thận trọng khi sử dụng mã.

Ví dụ:

C++

student_scores.insert(pair<string, int>("John Doe", 90));
student_scores.insert(pair<string, int>("Jane Doe", 80));

Vui lòng thận trọng khi sử dụng mã.

Để truy cập giá trị của một khóa trong map, ta sử dụng toán tử []:

C++

Kiểu giá trị giá_trị = tên_map[khóa];

Vui lòng thận trọng khi sử dụng mã.

Ví dụ:

C++

int john_doe_score = student_scores["John Doe"];

Vui lòng thận trọng khi sử dụng mã.

Để kiểm tra xem một khóa có tồn tại trong map hay không, ta sử dụng toán tử find():

C++

map<Kiểu khóa, Kiểu giá trị>::iterator it;

it = tên_map.find(khóa);

if (it != tên_map.end()) {
  // Khóa tồn tại
} else {
  // Khóa không tồn tại
}

Vui lòng thận trọng khi sử dụng mã.

Ví dụ:

C++

if (student_scores.find("John Doe") != student_scores.end()) {
  // Khóa "John Doe" tồn tại
} else {
  // Khóa "John Doe" không tồn tại
}

Vui lòng thận trọng khi sử dụng mã.

Để xóa một cặp khóa và giá trị khỏi map, ta sử dụng toán tử erase():

C++

map<Kiểu khóa, Kiểu giá trị>::iterator it;

it = tên_map.find(khóa);

tên_map.erase(it);

Vui lòng thận trọng khi sử dụng mã.

Ví dụ:

C++

student_scores.erase("John Doe");

Vui lòng thận trọng khi sử dụng mã.

Một số phép toán cơ bản khác của map trong C++ bao gồm:

  • clear(): Xóa tất cả các phần tử trong map.
  • size(): Trả về số lượng phần tử trong map.
  • empty(): Kiểm tra xem map có rỗng hay không.
  • begin(): Trả về iterator cho phần tử đầu tiên trong map.
  • end(): Trả về iterator cho phần tử cuối cùng trong map.

Map là một cấu trúc dữ liệu hữu ích cho các bài toán cần lưu trữ dữ liệu dưới dạng cặp khóa và giá trị. Map được cài đặt dựa trên nguyên lý băm (hashing), vì vậy các phép toán truy cập và tìm kiếm trong map có tốc độ rất cao.

Dưới đây là một số ví dụ về cách sử dụng map trong C++:

  • Lưu trữ thông tin danh bạ: Mỗi người trong danh bạ có thể được đại diện bởi một cặp khóa và giá trị, trong đó khóa là tên người và giá trị là số điện thoại.
  • Lưu trữ thông tin sản phẩm: Mỗi sản phẩm có thể được đại diện bởi một cặp khóa và giá trị, trong đó khóa là mã sản phẩm và giá trị là thông tin chi tiết về sản phẩm.
  • Lưu trữ thông tin điểm số: Mỗi học sinh có thể được đại diện bởi một cặp khóa và giá trị, trong đó khóa là tên học sinh và giá trị là danh sách các điểm số của học sinh.