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

Хранение и поиск связанных пар строк - C++

Восстановить пароль Регистрация
 
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
23.03.2013, 12:53     Хранение и поиск связанных пар строк #1
Есть строковые данные:
имя - логин - данные1 - данные2
пара имя-логин всегда уникальная, данные привязанные к ней могут легко повторяться. Задача:
1)Реализовать функцию добавления проверяющую нет ли такой связки логин-пароль перед добавлением.
2)Реализовать функцию поиска которая ищет заданную пару логин-пароль и если такая есть возвращает данные1 и данные2 для этой пары, иначе ничего не делает.
3)Реализовать функцию удаления пары по паре логин-пароль.

Для этих целей я использую хеширование (каждый раз при добавлении считаю хеш для логина и пароля)
C++
1
2
3
4
5
6
7
8
9
    it = one.begin();
    end = one.length() < 5 ? one.end() : one.begin()+5;
    while(it != end)
        hash = hash << 1 ^ *it++;
 
    it = two.begin();
    end = two.length()<5 ? two.end() : two.begin()+5;
    while(it != end)
        hash = hash << 1 ^ *it++;
(Кстати попутный вопрос: что быстрее: итератор или просто навигация по строке string вида [i] ?)
И потом получаю 12бит от этого хеша и ложу в эту ячейку массива свой Element с этой связкой из 4х элементов (если ячейка пустая или же добавляю в хвост списка если нет).
Размер хеша сейчас 8192, а примерное количество записей для тестирования ~ 15 000.

Проблема: я не укладываюсь по времени Всё хорошо работает, при поиске я провожу только поиск по хешу (столкновения даже не возникают), но всё равно при поиске данных сервер выдаёт что моя программа в лимиты времени не вписывается, что тогда посоветуете применить для ускорения для решения такой задачи?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2013, 12:53     Хранение и поиск связанных пар строк
Посмотрите здесь:

Работа со строками. Связное хранение строк. C++
C++ Поиск противоположных пар чисел
Для встречающихся в заданном тексте пар расположенных символов указать, сколько раз встречается каждое из таких пар C++
C++ Для встречающихся в заданном тексте пар расположенных символов указать, сколько раз встречается каждое из таких пар.
C++ Поиск строк
поиск нечетных пар C++
C++ Хранение большого (15000) количества строк в строковом массиве
C++ Бинарный поиск таких пар чисел массива, чтобы их сумма попадала в заданный диапазон

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 20:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru