Hướng dẫn cách thêm chèn phần tử vào map trong C++. Bạn sẽ học được cách dùng toán tử [] cũng hàm insert và hàm emplace để chèn thêm phần tử vào map trong C++ sau bài học này.
Để thêm chèn phần tử vào map trong C++, chúng ta sử dụng tới toán tử [] hoặc 2 hàm thành viên là insert() và emplace(). Do khi chèn phần tử vào map thì vị trí chèn sẽ được tự động quyết định tùy thuộc vào bộ sắp xếp trong map, nên lưu ý khác với các containers khác như list hay vector thì trong map không tồn tại</> các hàm push_back() hay push_front() để thêm phần tử vào đầu hay cuối map.
Thêm 1 phần tử vào map trong C++ bằng toán tử []
Để thêm 1 phần tử vào map trong C++, chúng ta sử dụng toán tử []
với cú pháp sau đây:
mp[key] = value;
Trong đó
mp
là tên biến mapkey
vàvalue
là khóa và giá trị của phần tử cần thêm vào map
Ví dụ:
map<char,int> foo,bar; |
Lưu ý do mỗi key trong map đều là duy nhất nên nếu chúng ta thêm một phần tử mới vào map nhưng lại có key trùng với một phần tử đã tồn tại trước đó, thì giá trị của phần tử mới này sẽ được dùng để ghi đè lên phần tử trước đó.
Ví dụ:
|
Chèn 1 phần tử vào map trong C++ bằng hàm insert
Hàm insert là một hàm thành viên trong class std:map, có tác dụng chèn một hoặc nhiều phần tử vào map cũng như tăng độ dài tương ứng của nó.
Để chèn 1 phần tử vào trong map C++, chúng ta sử dụng hàm insert với cú pháp sau đây:
mp.insert(std::pair<k_type,x_type>(k,v));
Trong đó
mp
là map ban đầupair<k_type,x_type>(k,v)
sử dụng để chỉ định key và value của phần tử cần thêm, trong đók_type,x_type
là kiểu vàk,v
là key và value.
Trong trường hợp không rõ kiểu, hoặc muốn rút bỏ chỉ định kiểu của key và value, chúng ta có thể dùng hàm make_pair() để thay thế cho pair() trong hàm insert, với cú pháp sau đây:
mp.insert(std::make_pair(k,v));
Hàm map insert sẽ trả về một cặp kết quả pair<iterator, bool>
với iterator
là trình lặp trỏ đến map kết quả, và bool
là việc có thực hiện việc chèn hay không, dưới dạng 0 hoặc 1.
Bởi vì các phần tử trong một map là duy nhất, nên thao tác chèn sẽ kiểm tra xem mỗi phần tử được chèn đã tồn tại trong map hay chưa. Nếu chưa tồn tại thì phần tử đó sẽ được chèn và ngược lại nếu đã tồn tại thì không được chèn.
Đây là điểm khác biệt so với cách dùng toán tử [], vì khi một key đã tồn tại trong map, nếu chúng ta dùng toán tử [] thì giá trị mới sẽ được ghi đè, còn nếu dùng hàm insert thì việc chèn sẽ thất bại.
Trong trường hợp tất cả các phần tử chèn vào vốn đã tồn tại từ trước trong map, thì bản thân map ban đầu sẽ được trả về.
Lại nữa, phần tử trong map được sắp xếp theo thứ tự cụ thể trước khi được lưu, nên các phần tử cần chèn thêm vào map sẽ được tự động quyết định vị trí dựa trên bộ sắp xếp, và chúng ta sẽ không quyết định được vị trí cần chèn của phần tử.
Ví dụ cụ thể:
|
Kết quả:
a:100 b:200 |
Chúng ta cũng có thể kiểm tra việc chèn phần tử đã thực hiện hay chưa bằng phương thức first() hoặc second() từ kết quả trả về của hàm như sau:
|
Thêm chèn 1 phần tử vào map trong C++ bằng hàm emplace
Hàm emplace là một hàm thành viên trong class std:map, có tác dụng chèn một hoặc nhiều phần tử vào map thông qua hàm tạo của kiểu dữ liệu, cũng như tăng độ dài tương ứng của map.
Để chèn thêm 1 phần tử vào trong map C++, chúng ta sử dụng hàm emplace với cú pháp sau đây:
mp.emplace(k,v);
Trong đó
mp
là map ban đầuk,v
là key và value.
Hàm map emplace sẽ thực hiện việc chèn phần tử nếu key của nó chưa tồn tại trong map. Ngược lại nếu key đó đã tòn tại, việc chèn thất bại và false sẽ được trả về
Và Hàm map emplace sẽ trả về một trình lặp trỏ tới vị trí phần tử vừa được chèn vào, nếu việc chèn thành công.
Lại nữa, phần tử trong map được sắp xếp theo thứ tự cụ thể trước khi được lưu, nên các phần tử cần chèn thêm vào map sẽ được tự động quyết định vị trí dựa trên bộ sắp xếp, và chúng ta sẽ không quyết định được vị trí cần chèn của phần tử.
Ví dụ cụ thể:
|
Kết quả:
x:100 y:200 z:100 |
Chèn nhiều phần tử vào map trong C++ bằng hàm insert
Để chèn nhiều phần tử vào trong map C++, chúng ta sử dụng hàm insert với cú pháp sau đây:
mp.insert(iterator_first, iterator_last);
Trong đó
mp
là map ban đầuiterator_first
vàiterator_last
là các trình lặp xác định phạm vi chứa các phần tử cần chèn ở trong một map khác vào map ban đầu.
Lưu ý ở đây, các phần tử cần chèn được lấy ra từ một phạm vi trong một map khác, và phạm vi này được chỉ định thông qua 2 trình lặp như trên
Ví dụ cụ thể:
|
Và kết quả:
1: a 2: b 3: c 4: d 5: e |
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn về cách thêm chèn chèn phần tử vào map trong C++ rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.
Và hãy cùng tìm hiểu những kiến thức sâu hơn về C++ trong các bài học tiếp theo.
URL Link
https://laptrinhcanban.com/cpp/lap-trinh-cpp-co-ban/map-trong-cpp/them-chen-map-trong-cpp/
HOME › lập trình c++ cơ bản dành cho người mới học lập trình>>24. map trong c++