2013-11-27 2 views
1

Мне был предоставлен фрагмент кода, который поможет мне в задании, но у меня возникли проблемы с его реализацией в моем решении. Вот кусок кода:Хэш-структура с использованием объекта

#include<iostream> 
#include<tr1/unordered_set> 

using namespace std; 
using std::tr1::unordered_set; 


struct ihash 
    : std::unary_function<int, std::size_t> 
{ 


    std::size_t operator()(const int& x) const 
    { 
     return x; 
    } 
}; 

У меня есть объект, который я хотел бы использовать, чтобы решить, размер hashval я хотел бы использовать. Я пришел с этим:

/*int myhash(const Play & key, int tableSize){ 
    int hashval = 0; 
    string keysize = key.getoTeam()+key.getdTeam(); 
    for(int i=0;i<keysize.length(); i++){ 
     hashval = hashval*5 + keysize[i]; 
    } 
    return hashval; 
}*/ 

Но я не могу найти примеры кода, которые используют для-структуру хеш-таблицы, что делать что-то подобным, и ИНТ версия не работает с моей декларацией моей unordered_set. Я заявляю следующее:

unordered_set<Play, myhash> PlaySet; 

Может ли кто-нибудь помочь мне соединить точки?

Update:

Новая ошибка: main.cpp: 38: ошибка: ожидается, неквалифицированный-идентификатор, прежде чем âreturnâ

я закончил с моим имеет бытие:

struct hashbrowns{ 
    size_t operator()(const Play & a) const 
    { 
     string keysize = a.getoTeam()+a.getdTeam(); 
     size_t seed = 0; 
     for(int i=0;i<keysize.length(); i++) 
      seed = seed*5 + keysize[i]; 
    } 
    return seed; 
}; 

линия 38 существо, вернуть семя;

+0

Я думаю, что этот вопрос и ответ описывают то, что вы ищете: http://stackoverflow.com/q/17016175/777186 (это предполагает, что C++ 11, а не TR1, хотя это актуально?) – jogojapan

+0

Спасибо , это было полезно. Пожалуйста, перечитайте мой вопрос, если сможете, так как я столкнулся с новой проблемой. –

+0

+1 просто для отличного имени для хэш-функтора = P ('hashbrowns' заставлял меня усмехаться). Ну, хорошо, сам вопрос довольно хорошо представлен. В стороне, похоже, вы на правильном пути для предоставления типа хеш-функции вашей неупорядоченной карте, особенно с найденной синтаксической ошибкой woolstar. Вы могли наконец заставить это работать, или вам нужна дополнительная помощь? – WhozCraig

ответ

1

В обновленном коде ваше возвращение должно быть выше. Прямо сейчас за пределами функции operator().

+0

К сожалению, спасибо, что поймали, что –

+0

+1 на ловле этого. Я * думаю *, который решает проблему OP, если что-то еще не появилось, мы еще не видели. – WhozCraig

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