std::multimap::value_comp
#include <map>
value_compare value_comp() const;
Trả về một hàm so sánh (comparison object) dùng để so sánh các value_type
(tức là các std::pair) trong std::multimap. Hàm này so sánh các cặp key-value
dựa trên key
của chúng, sử dụng hàm so sánh key
(key_compare
) của std::multimap.
Tham số
Không có tham số
Giá trị trả về
value_compare
: Trả về một hàm so sánh (comparison object) có thể được sử dụng để so sánh hai đối tượngvalue_type
(tức là hai std::pair) của std::multimap. Hàm so sánh này so sánh các cặpkey-value
dựa trênkey
của chúng và sử dụng hàm so sánhkey
(key_compare
) của std::multimap để thực hiện so sánh.
Đặc điểm
- Truy cập hàm so sánh:
value_comp()
cung cấp cách thức để lấy hàm so sánh đang được sử dụng bởi std::multimap để so sánh các cặpkey-value
dựa trênkey
. - const:
value_comp()
là một hàmconst
, nghĩa là nó không thay đổi trạng thái của std::multimap. - Không ném ngoại lệ: Hàm
value_comp()
được quy định không ném ra ngoại lệ. - Phụ thuộc vào cách khởi tạo: Hàm so sánh trả về bởi
value_comp()
phụ thuộc vào cách bạn khởi tạo std::multimap (cụ thể là hàm so sánh keykey_compare
). - So sánh dựa trên key: Hàm so sánh trả về bởi
value_comp()
luôn so sánh các cặpkey-value
dựa trênkey
, không phảivalue
. - Độ phức tạp:
O(1)
- thời gian hằng số.
Phân biệt với key_comp()
key_comp()
trả về hàm so sánh để so sánh haikey
.value_comp()
trả về hàm so sánh để so sánh hai cặpkey-value
(kiểu std::pair), nhưng việc so sánh vẫn dựa trênkey
của cặp.
Ví dụ
#include <iostream>
#include <map>
int main() {
std::multimap<int, std::string> mymultimap;
mymultimap.insert(std::make_pair(10, "ten"));
mymultimap.insert(std::make_pair(5, "five"));
mymultimap.insert(std::make_pair(15, "fifteen"));
mymultimap.insert(std::make_pair(5, "five duplicated"));
// Lấy hàm so sánh value_compare
std::multimap<int, std::string>::value_compare comp = mymultimap.value_comp();
// Lấy phần tử cuối cùng trong multimap
std::multimap<int, std::string>::iterator last = --mymultimap.end();
// Duyệt multimap từ đầu đến cuối sử dụng value_comp()
std::cout << "mymultimap contains:\n";
std::multimap<int, std::string>::iterator it = mymultimap.begin();
do {
std::cout << it->first << " => " << it->second << '\n';
} while ( comp(*it++, *last) ); // So sánh các cặp key-value dựa trên key
return 0;
}
Các hàm liên quan
key_comp | Trả về một bản sao của hàm so sánh được sử dụng bởi std::multimap để sắp xếp các key |
find | Tìm kiếm một phần tử có key bằng với giá trị key cho trước trong std::multimap |
count | Đếm số lượng phần tử có key bằng với giá trị key cho trước trong std::multimap |
lower_bound | Trả về một iterator trỏ đến phần tử đầu tiên trong std::multimap có key lớn hơn hoặc bằng giá trị key cho trước |
upper_bound | Trả về một iterator trỏ đến phần tử đầu tiên trong std::multimap có key lớn hơn giá trị key cho trước |