Hàm map trong C++
Quyền hạn của bạnTrong 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. Map được cài đặt dựa trên nguyên lý Hashing – băm. Để hiểu về Hashing, chúng ta cần nắm được 3 khái niệm: Hash function, hash value và bucket. Hash function, hay còn gọi là hàm băm, là một hàm mà khi ta lấy đầu vào là một giá trị bất kỳ thì ở đầu ra, hash fuction sẽ cho ta một dãy code – được gọi là hash value. Mỗi đầu vào chỉ có duy nhất một hash value. Bạn đang xem: Top 15+ Cách Sử Dụng Map Trong C++ Thông tin và kiến thức về chủ đề cách sử dụng map trong c++ hay nhất do Truyền hình cáp sông thu chọn lọc và tổng hợp cùng với các chủ đề liên quan khác.Các lớp vector, list thuộc cấu trúc Sequence Containers (cấu trúc tuần tự), riêng với lớp pair4 thuộc 1 cấu trúc khác đó là Associative Containers (cấu trúc liên kết), là kiểu dữ liệu cho phép quản lý 1 cặp pair5 - khóa và giá trị, nghĩa là muốn xác định được nội dung pair6 thì phải biết được vị trí pair7 mà pair4 đang quản lý. Nội dungNếu như lớp pair4 quản lý cặp đối tượng pair5, vậy đối tượng nào sinh ra được cặp đối tượng đó. Để sinh ra cặp đối tượng pair5 cần sử dụng lớp map2, lớp map2 nằm trong thư viện map4. Trước khi tìm hiểu về lớp pair4 cần biết về lớp map2. [A] Lớp pairmap2 cho phép gộp 2 đối tượng thành 1 cặp, 2 đối tượng có thẻ cùng kiểu hoặc khác kiểu, với thuộc tính map8 là pair7 và // default constructor map0 là pair6. Cú pháp khai báo: // default constructor map2 Ví dụ: // default constructor map3 map2 có các constructor như:
Ví dụ: // default constructor pair Lớp map2 có các thuộc tính map8 và // default constructor map0 cho phép lấy dữ liệu pair [B] Lớp mapLớp pair4 nằm trong thư viện pair4 vì vậy muốn sử dụng trước tiên phải map0. Cú pháp khai báo: map1 Ví dụ: map Biến map2 được khai báo với cặp dữ liệu là map3, vì vậy:
Lớp pair4 cũng giống như những lớp map5, map6 đều được định nghĩa các hàm thành viên hỗ trợ cho việc truy xuất, lấy kích thước, các constructor đã được override, … Các phương thức thường dùng trong mapConstructorCũng giống với những lớp map5, map6 đều có:
Các hàm thành viên này hoạt động hoàn toàn giống với lớp map5, map6. Ví dụ: // default constructor map Ngoài ra còn có map1 cho phép các lớp pair4 có thể sao chép nội dung cấu trúc dữ liệu với nhau. map Duyệt mapLớp pair4 quản lý pair6 bằng pair7, nếu trường hợp quên pair4 thì làm sao có thể truy xuất để lấy dữ liệu pair6. Để giải quyết vấn đề trên trong lớp pair4 định nghĩa thao tác iterators cho phép truy xuất đến phần tử trong pair4 để lấy dữ liệu pair6 và pair7 cần thiết. Có các iterators đã được cung cấp như: map2, map3, map4, map5, ... chúng hoạt động như nhau nhưng chỉ khác phần tử truy cập ở vị trí nào trong lớp pair4. Ví dụ: map Kết quả tại sao không phải là: map7 hay map8, ... đó là do trong lớp pair4 quy định pair7 chỉ được tồn tại duy nhất (không được trùng), vì vậy khi khai báo ở dòng map1 sẽ làm thay đổi dữ liệu của map2 từ map3 thành map4. Lấy kích thước của mapmap5 cho phép lấy kích thước của pair4. Ví dụ: map Kiểm tra map có rỗng hay không?map7 cho phép kiểm tra pair4 có rỗng hay không? Ví dụ: map Truy xuất theo chỉ sốmap9 hay map0 cho phép truy xuất trực tiếp đến pair7 của từng phần tử. map Thêm dữ liệu vào mapmap2 cho phép chèn thêm 1 đối tượng. Ví dụ: map Lưu ý việc chèn ở vị trí nào thật ra là vô nghĩa, vì vị trí của nó phụ thuộc vào pair7 trong cặp đối tượng "key/ value", trong ví dụ trên thì "key" là kiểu số nguyên vì vậy vị trí của các cặp đối tượng pair5 sẽ được xác định theo các pair7 sắp xếp tăng dần. |