![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
имею
вообщем задача простейшая, ввиду трудностей работы с БД ассеss связанных с специфическим методом выполнения полседовательностей скюл команд принято решения на этапе работы программы подменить бд ассоциативным массивом... параметром которых являеться структура необходимо организовать поиск и сортировку массивов понятно что нужно использовать find_if и sort c предикатом.. прошу специалистов либо по шагам объяснить либо написать код по примеру из мсдн я понимаю как написать предикат для поиска, но не понимаю как туда запихнуть значение на условия.. и главное я не понимаю как с этим работать когда записей будет много спасибо -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| chipset |
|
||||||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
В ассоциативном массиве все данные и так лежат отсортированными. Тебе надо лишь перегрузить оператор "<" (меньше) чтобы map мог отсортировать их.. ... Кроме того, я не пойму зачем ты используешь map когда можно ограничиться простым vector'ом?
К примеру предикат:
А кроме Access альтернатив нету?
Из-за скорости переживаешь? Могу посоветовать качнуть STLPort (http://stlport.org), гораздо быстрее.. --------------------
|
||||||||||||
|
|||||||||||||
| Step |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
не катит так как один раз по одному полю другой раз по другому а в третий по двум я буду вычислять что меньше
я бы сказал что это проблема не только аксеса... -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
||||
|
|||||
| chipset |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Если хочешь динамически создавать запросы на поиск:
1) Перегрузи оператор "==" у класса. 2) Вызывай функцию find, например так:
Добавлено @ 11:04
sort из <algorithm> подойдет? --------------------
|
||||||
|
|||||||
| Step |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
в этом случае я должен буду проверять в == какое поле установлено, а какое нет - не катит так как я перегружаю уже = и он уменя если объект существует то производит замену а одно поле просто уменьшает на 1 если не установлено то заполняет и одному полю присваивает 3, а искать придеться и по этому полю... Добавлено @ 11:14
подойдет, вот про предикат сорта мне тоже интересно, хотя я уже врубил... отказаться от ассоциативного массива я не могу и еще одно. как проверить что в маре нет объекта с заданным ключом не используя поиска ну типа a=p_instrument_info["step"]; он мне в а NULL вернет или нет -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
||||
|
|||||
| chipset |
|
||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
А в чём взаимосвязь между == и =? Первое оператор сравнения, второе оператор присваивания. Сейчас тебе ничего присваивать не нужно. Добавлено @ 11:19
Проверь
Если ты хочешь использовать стандартный ассоциативный массив STL тебе в любом случае придется перегружать "<", без этого не запашет. Если надо избежать, то придется использовать метод симулирования хэша вектором, Майерса (Effective STL, #23). --------------------
|
||||||||
|
|||||||||
| Step |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
при сравнении мне нужно будет определить по какому полю сравнивать а = будет написанно таким образом что для каждого поля уже чето выставлено будет... ну тобишь конструктор по умолчанию будет заполнять поля какимито значениями, причем при каждом вызове конструктора по умолчанию значения будут разными.. вопрос в том как узнать по какому полю провести сравнения
Понял
вот примерно так до сегодняшнего момента и было -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
||||||
|
|||||||
| chipset |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Ухх... А у меня ещё более сумасшедший вариант так шо не подумайте: Сделать функтор - класс у которого перегружен оператор (). Сообщить функтору по каким полям ты хочешь произвести поиск. Попытаться подсунуть вместо предиката sort функтор --------------------
|
||||
|
|||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
вот тут ты меня и сломал -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| chipset |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Типа такого:
--------------------
|
||||||
|
|||||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
chipset, круто, спасибо...
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| chipset |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
В общем функтор это обьект ведущий себя как функция и обьект одновременно.
Пардон, опечутка:
Добавлено @ 11:50 И в качестве предиката работает. Такой пример компилицца на ура:
--------------------
|
||||||
|
|||||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |