Форум программистов, компьютерный форум CyberForum.ru

hash строк - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Просмотр текущей папки http://www.cyberforum.ru/cpp/thread86353.html
Доброго времени суток! Подскажите пожалуйста, как относительно несложно просмотреть текущую папку на наличие файлов определенного расширения. Поиск по маске проще говоря )) пытался запускать прогу отсюда, но она что-то у меня не компилится (ошибка "unresolved external symbol") читал, что не обязательно использовать функции FindFirst, FindNext, а можно самому как-то написать. Но куда копать не...
C++ Как осуществить Обработку бинарного файла? Файл содержит произвольные данные. Определить, встречается ли в файле определенная последовательность байт (заданных виде массива символов). Если встречается, то вывести на экран все смещения, где эта последовательность встречается. http://www.cyberforum.ru/cpp/thread86151.html
C++ Алгоритм Эрли
Народ, спасите мне жизнь!!!! С лабораторки нужно написать программу "Алгоритм Эрли", а моих знаний об етом алгоритме оочень мало!!! Подскажите пожалуста что он должен делатьи мб какие-то исходняки программы подкиньте.. очень прошу::help:help::help:
C++ Строка
Как в строке заключить слова начинающиеся с согласной буквы в двойные кавычки?
C++ Загрузка текстового файла в TreeView http://www.cyberforum.ru/cpp/thread85891.html
Здравствуйте! При написании программы возникла такая проблема: 1) Программно создается файл .txt 2) Хочу загрзить строки файла в компонент TreeView в GodeGear 2009 С++ Builder 3) Делаю загрузку TreeView1-> LoadFromFile(...); 4) Если до этого в файл ".txt" были внесены какие-то данные, то в TreeView строки отображаются; если же строки добавляю в TreeView программно и сохраняю TreeView:...
C++ Linked List na C kak perevernut na C LinkedList esli mo0jno kod pojaluista. подробнее

Показать сообщение отдельно
insideone
Модератор
Автор FAQ
3636 / 914 / 49
Регистрация: 10.01.2010
Сообщений: 2,465

hash строк - C++

16.01.2010, 17:36. Просмотров 5044. Ответов 23
Метки (Все метки)

Доброго времени суток! =)
Зачем: Для игры понадобилась база данных стандартных строк типа как данные для удобного перевода (всмысле весь текст вне игры). Чтобы в коде было удобнее обращаться к строкам хотелось бы ввести простые имена вида D12.S10 который допустим будет указывать на то что строка будет для диалога 12 и это будет 10 реплика. Это только пример и впринципе эти простые имена будут очень разные. Но чтобы обратиться к элементам массива строк нужен числовой индекс (иначе - смещение). В качестве этого индекса я буду использовать число возвращаемого из массива key в котором по индексу возвращаемого хэшем хранится реальный индекс где число лежит. Все это демонстрируется кодом:
C++
1
2
3
4
5
6
7
8
9
class DataBase {
    char* data[32676];
    unsigned short key[32676];
public:
    char* operator[] (char* strKey){
        return data[key[_hash(strKey)]];
    }
/* а также другие */
}
Вопрос: как написать функцию которая возвращает число в промежутке [0,x] исхода из входной строки. В общем как сделать правильно hash для строк и чтобы поменьше коллизий

Пока я написал что то вроде того, но помоему плохо очень
C++
1
2
3
4
5
6
7
8
9
10
11
12
    unsigned short _hash(char* hashed){
        unsigned short int seed = 0;
        unsigned short int temp = 0;
        while ( (*hashed) != NULL )
        {
            memcpy(&temp, hashed, sizeof(char));
            seed += temp;
            hashed++;
        }
    return strlen(hashed)+seed;
    }
};
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru