Tôi đang cố gắng tạo một unordered_map để ánh xạ cặp với số nguyên.unordered_map với cặp là khóa - không biên dịch
#include <unordered_map>
using namespace std;
using Vote = pair<string, string>;
using Unordered_map = unordered_map<Vote, int>;
Tôi có một lớp học mà tôi đã khai báo Unordered_map là thành viên riêng tư.
Tuy nhiên, tôi nhận được lỗi này khi tôi cố gắng biên dịch:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/type_traits:948:38: Implicit instantiation of undefined template 'std::__1::hash<std::__1::pair<std::__1::basic_string<char>, std::__1::basic_string<char> > >'
tôi không nhận được lỗi này nếu tôi sử dụng một bản đồ thông thường như map<pair<string, string>, int>
thay vì một unordered_map.
Không thể sử dụng pair
làm khóa trong bản đồ không có thứ tự?
Để tránh lỗi biên dịch, toán tử 'tùy chỉnh() (...)' này phải được khai báo là hàm ** const ** (bị nhầm lẫn với gcc-5.2.1, khai báo đúng trong câu trả lời bên dưới): 'std: : size_t operator() (smth const & p) const {...} ' – Trollliar
@Trollliar Cảm ơn, đã sửa. –
Bạn tham khảo 'hash_value' nhưng liên kết đi tới' hash'. Tôi nghĩ rằng 'băm' là vị trí chính xác vì các tài liệu cho' hash_value' khuyên bạn nên sử dụng 'băm'. Tôi nghĩ rằng tôi sẽ cho phép bạn chỉnh sửa thay vì tự làm ... – PeterVermont