Hướng dẫn hàm map trong c++

Trả về một mảng được hình thành bằng cách ánh xạ mỗi giá trị trong [các] mảng với một giá trị mới bằng cách áp dụng lambda để tạo một giá trị mới.

Cú pháp

=MAP [array1, lambda_or_array]

Cú pháp hàm MAP có các đối số và tham số sau đây:

  • array1   Một mảng cần ánh xạ.

  • lambda_or_array   Một LAMBDA phải là đối số cuối cùng và phải có tham số cho mỗi mảng được truyền hoặc một mảng khác được ánh xạ.

Lỗi

Việc cung cấp hàm LAMBDA không hợp lệ hoặc số tham số không chính xác sẽ trả về giá #VALUE! được gọi là "Tham số Không chính xác".

Ví dụ

Ví dụ 1: Số vuông cao hơn một giá trị nhất định

Nhập dữ liệu mẫu vào các ô A1:C2, rồi sao chép công thức vào ô D4:

=MAP[A1:C2, LAMBDA[a, IF[a>4,a*a,a]]]

Ví dụ 2: Tìm giá trị từ hai cột trong một hàng và cả hai cột đều LÀ TRUE

Tạo bảng có tên "TableA" với hai cột có tên là "Col1" và "Col2" bắt đầu từ ô D1. Thêm cột có tên "BothTrue" vào ô G1. Sao chép công thức vào ô G2:

=MAP[TableA[Col1],TableA[Col2],LAMBDA[a,b,AND[a,b]]]

Ví dụ 3: Tìm giá trị từ ba cột trong một hàng đáp ứng các tiêu chí nhất định

Tạo một phạm vi dữ liệu mẫu với hai cột có tên là "Kích cỡ" và "Màu" trong các ô D1:E11. Thêm hai tiêu đề cột có tên tương ứng là "Kích cỡ Hợp lệ" và "Màu Hợp lệ" trong các ô F1 và G1. Sao chép công thức vào ô F2:

Trong 1 số ngôn ngữ lập trình, Map được gọi là Dictionary [như Python hay C#]. Trong khuôn khổ bài viết này, mình dùng từ map do thông thạo với C++ và Java.

Các cấu trúc dữ liệu như mảng hay xâu kí tự, khi truy xuất dữ liệu bạn sẽ sử dụng một tham số gọi là chỉ số, ví dụ như arr[1], str[2], … Đối với cấu trúc dữ liệu map, để truy xuất dữ liệu bạn sẽ sử dụng một tham số gọi là key

Cấu trúc dữ liệu kiểu map là một cấu trúc dữ liệu ánh xạ giữa cái gọi là khoá [key] sang giá trị của khoá đó [gọi là value]

Trong cấu trúc dữ liệu này, mỗi một key sẽ nhận một giá trị khác nhau.

Ứng dụng

Ứng dụng của map có rất nhiều. Mình đưa ra 1 số bài toán cơ bản nhé:

  • Cho một danh sách các số điện thoại kèm theo tên của chủ thuê bao đó. Yêu cầu đầu vào là một số điện thoại [key], hãy đưa ra tên của chủ thuê bao [value]
  • Cho danh sách thể hiện lịch sử đi muộn của các nhân viên một công ty nào đó. Hãy tìm xem nhân viên [key] nào có số lần đi muộn [value] nhiều nhất?
  • Cho một danh sách các IP kèm theo các domain. Hãy trả ra ip [value] tương ứng domain [key] hoặc ngược lại trong thời gian nhanh nhất?

Với các bài toán này, bạn có thể sử dụng 2 mảng dữ liệu có cùng độ dài. Một mảng bạn lưu danh sách key, một mảng bạn lưu danh sách các value tương ứng với key đó [cùng chỉ số truy cập mảng]. Khi bạn cần tìm value của một key nào đó, bạn duyệt mảng key, tìm chỉ số của phần tử trong mảng có giá trị bằng key cần tìm rồi trả ra giá trị tương ứng ở mảng value. Mã giả của đoạn code này như sau:

for [int i=0; i

Chủ Đề