std::map::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::map. Khác với key_comp()
chỉ so sánh key
, value_comp()
so sánh các cặp key-value
dựa trên key
của chúng.
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::map. 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::map để 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::map để 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::map. - 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::map (cụ thể là hàm so sánhkey
key_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::map<int, std::string> mymap;
mymap[10] = "ten";
mymap[5] = "five";
mymap[15] = "fifteen";
// Lấy hàm so sánh value_compare
std::map<int, std::string>::value_compare comp = mymap.value_comp();
// Lấy phần tử cuối cùng trong map
std::map<int, std::string>::iterator last = --mymap.end();
// Duyệt map từ đầu đến cuối sử dụng value_comp()
std::cout << "mymap contains:\n";
std::map<int, std::string>::iterator it = mymap.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::map để 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::map |
count | Đếm số lượng phần tử có key bằng với giá trị key cho trước trong std::map |
lower_bound | Trả về một iterator trỏ đến phần tử đầu tiên trong std::map 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::map có key lớn hơn giá trị key cho trước |