![]() |
|
Модераторы: bsa |
![]()
|
|
| TheDestroyer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
Подскажите плз, есть данные: логин - пасс, id, time. Т.е. одному ключу соответствует более одной записи. Необходимо хранить их в массиве и при необходимости сравнивать пары, например логин - пасс (id и time не учитывать). Это было бы возможно при использовании map, но там к сожалению возможно в одну запись вставить только ключ - значение, а у меня значений для ключа более одного. Можно было бы в качестве значения для ключа использовать струтуру, заданную мной, но тогда для сравнения данных надо заполнять структуру полностью и уже после сравнивать. Возможны случаи когда мне известно что-то одно и надо поэтой информации вытащить остальное о логине. Есть ли что-то вроде map, но для бОльшего числа значений для ключа?
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
хранить ключ как структуру и написать предикат/ы для поиска по неполной структуре
Добавлено через 1 минуту и 29 секунд а лучше имхо хранить не в мапе. |
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
Написать контейнер самому проще всего. И определить в нём перегруженный оператор сравнения.
-------------------- ![]() |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
перегрузить в контейнере ? чтоб сравнивать два контейнера ? а это разве требуется ? если имелась ввиду структура (класс), то перегруженный оператор будет сравнивать только для одного пункта, а требуется для разных (несколько вариантов). |
|||
|
||||
| Cheloveck |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1578 Регистрация: 26.7.2008 Где: Тула Репутация: 5 Всего: 32 |
чтоб сравнивать с чем-то другим... например парой логин-пас... Ну не обязательно именно operator ==, можно ведь и метод написать compare какой-небудь. Это я так, в общем виде сказал. Это сообщение отредактировал(а) Cheloveck - 18.6.2009, 20:51 -------------------- ![]() |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
||||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
а нельзя ли пояснения к этому ?
Зачем писать это в классе, когда можно сделать снаружи ;) Тогда если соблюсти подход стл, то 1. Можно будет не меняя класса добавить предикат для любого нужного сравнения 2. Использовать готовые алгоритмы. 3.. |
||||
|
|||||
| zim22 |
|
||||||||||||||||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
я это так представляю: main.cpp
LoginTimeCompositor.h
Composition.h
Compositor.h
IdDateCompositor.h
IdPasswordTime.h
user_info.h
Composition.cpp
Это сообщение отредактировал(а) zim22 - 18.6.2009, 22:58 |
||||||||||||||||
|
|||||||||||||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
а если проще ? например так :
P.S. к тому же все расчеты по стратегии и лишние сравнения останутся в компил тайм. если ж требуется динамичность, то можно заменить на обычную функцию с передачей стратегии как аргумент. Это сообщение отредактировал(а) mes - 19.6.2009, 00:00 |
|||
|
||||
| W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 2 Всего: 121 |
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
||||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
поскольку о уже написали, мне остается добавить одно: хранить пароли и логины в оперативной памяти, в неизменном виде - опасно, вместо этого, лучше хранить их хэш к примеру, можно использовать такую структуру данных:
|
|||
|
||||
| TheDestroyer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
Спасибо за информацию! Буду разбираться.
|
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |