2015-11-02 2 views
0

Я создаю таблицу хэша для домашних заданий правопреемника, и я бег корыта проблемы, у меня есть шаблон структура с ключом и типом данныхКак преобразовать класс шаблона к Int

template<typename T, typename K> 
struct Item 
{ 
    T data; 
    K key; 
    state flag; 
    Item() {} 
    Item(T d, K k, state f) { data = d; key = k; flag = f; } 
}; 

I нужно преобразовать ключ (тип K) в int, как я должен это делать?

+0

'static_cast (key);'? – user463035818

+1

Конечно, это зависит от того, какой тип вы хотите передать шаблону для 'K'. Например. если это «строка», вам, вероятно, придется написать специализированную специализацию, которая выполняет преобразование. – user463035818

+5

А что, если 'K' - это тип, который не является естественным образом конвертируемым в' int'? –

ответ

0

Самый простой, но не обязательно лучший способ: начиная с символа указателя на ключ и используя все байты в соответствии с sizeof (key), отбрасывая указатель на int и добавляя все возможные ints и учитывая дополнительные байты, которые не соответствует последнему int. Это всегда возвращает int, но гарантия уникальных значений зависит от типа ключа.


Edit: для производства кода, предпочитают std::hash, как уже упоминалось в комментариях.

Смежные вопросы