Chuyển tới nội dung chính

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ượng value_type (tức là hai std::pair) của std::map. Hàm so sánh này so sánh các cặp key-value dựa trên key của chúng và sử dụng hàm so sánh key (key_compare) của std::map để thực hiện so sánh.

Đặc điểm

  1. 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ặp key-value dựa trên key.
  2. const: value_comp() là một hàm const, nghĩa là nó không thay đổi trạng thái của std::map.
  3. Không ném ngoại lệ: Hàm value_comp() được quy định không ném ra ngoại lệ.
  4. 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ánh key key_compare).
  5. 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ặp key-value dựa trên key, không phải value.
  6. Độ 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 hai key.
  • value_comp() trả về hàm so sánh để so sánh hai cặp key-value (kiểu std::pair), nhưng việc so sánh vẫn dựa trên key 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_compTrả 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
findTì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_boundTrả về một iterator trỏ đến phần tử đầu tiên trong std::mapkey lớn hơn hoặc bằng giá trị key cho trước
upper_boundTrả về một iterator trỏ đến phần tử đầu tiên trong std::mapkey lớn hơn giá trị key cho trước