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

std::map::key_comp

#include <map>

key_compare key_comp() const;

Trả về một bản sao của hàm so sánh (comparison object) được sử dụng bởi std::map để sắp xếp các key.

Tham số

Không có tham số

Giá trị trả về

  • key_compare: Trả về một bản sao của hàm so sánh (comparison object) đang được std::map sử dụng. key_compare là một kiểu (có thể là con trỏ hàm, functor, hoặc lambda) được định nghĩa bên trong std::map, cho phép so sánh hai key của std::map.

Đặc điểm

  1. Truy cập hàm so sánh: key_comp() cung cấp cách thức để lấy hàm so sánh đang được sử dụng bởi std::map.
  2. Bản sao: key_comp() trả về một bản sao của hàm so sánh, vì vậy bạn có thể sử dụng nó mà không ảnh hưởng đến std::map.
  3. const: key_comp() là một hàm const, nghĩa là nó không thay đổi trạng thái của std::map.
  4. Không ném ngoại lệ: Hàm key_comp() được quy định không ném ra ngoại lệ.
  5. Phụ thuộc vào cách khởi tạo: Hàm so sánh trả về bởi key_comp() phụ thuộc vào cách bạn khởi tạo std::map. Nếu bạn không chỉ định hàm so sánh khi khởi tạo, std::map sẽ sử dụng std::less theo mặc định.
  6. Độ phức tạp: O(1) - thời gian hằng số.

Ví dụ

#include <iostream>
#include <map>
#include <functional>

int main() {
std::map<int, std::string> mymap;

// Lấy hàm so sánh mặc định (std::less)
std::map<int, std::string>::key_compare comp = mymap.key_comp();

// So sánh hai key sử dụng hàm so sánh lấy được từ map
if (comp(5, 10)) {
std::cout << "5 is less than 10\n"; // Output: 5 is less than 10
}

// Sử dụng std::map với hàm so sánh tùy chỉnh (std::greater)
std::map<int, std::string, std::greater<int>> mymap2;
std::map<int, std::string, std::greater<int>>::key_compare comp2 = mymap2.key_comp();

if (comp2(5, 10)) {
std::cout << "5 is greater than 10\n"; // Output: 5 is greater than 10
}

return 0;
}

Các hàm liên quan

value_compTrả về một hàm so sánh dùng để so sánh các value_type trong std::map
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