![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Здравствуйте.
У меня есть такой функтор
я его успешно использую для поиска в контейнерах, состоящих из структур
http://liveworkspace.org/code/3f8197f05bae...d16944cff3303b7 Возникла задача искать в чуть более сложной структуре:
http://liveworkspace.org/code/fdb9f3e12a52...1a6dc083f333b7d Вопрос: 1) Можно ли без переделки функтора это организовать ? 2) Если ответ на 1) положительный, то - как ? Спасибо. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
mes, спасибо. жаль. а есть что-нибудь подобное в boost'е, чтобы не городить для этого своего монстра ?
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
Result |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 15.5.2011 Репутация: 2 Всего: 5 |
может посмотреть в сторону traits...
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Собственно, монстра понятно как делать
http://liveworkspace.org/code/9475f7faa2e4...7ae5900fc45a915 но... ИМХО, это уж слишком... Добавлено через 2 минуты и 21 секунду mes, а не подскажете на моём примере, как при помощи bind это организовать ? А то как с "одномерной" структурой мне понятно, а с "двумерной" - не очень... -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
вложенный бинд :
|
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
mes, спасибо.
А можно ещё вопрос в догонку ? этот оператор ==, который подставляется в find_if в качестве предиката, какой-то переопределённый boost'ом ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
да, также как и бинд, возвращает binder от своих аргументов.. Добавлено через 2 минуты и 13 секунд т.е. сравнение будет происходить позже, в момен вызова биндера, а не в в момент его определения... Добавлено через 4 минуты и 18 секунд вместо == можно прибиндить тот же std::equal, но с оператором нагляднее.. Добавлено через 4 минуты и 49 секунд в C++11 у бинда, насколько я знаю, эти операторы не переопределены.. |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Ясно. Спасибо.
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
тему помню ![]() -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 1 Всего: 20 |
borisbn, Интересный код, есть несколько вопросов:
что означает строка: typedef EqualBy< A, QString, &A::x > EqualByX; И также не совсем ясно, какой адрес возвратится здесь &A::x, ведь объекта еще нет -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
а откуда взялся QString ??? код значит следующее: Имеется шаблонная структура с тремя параметрами шаблона: 1) тип структуры, с которой она работает, 2) тип поля в этой структуре, 3) адрес этого поля внутри структуры (можно сказать смещение, относительно начала). Далее, даётся определение (typedef) для конкретной реализации этой шаблонной структуры, и этой конкретной реализации даётся новое имя - EqualByX. Этот EqualByX - это та же структура EqualBy, но не для всех случаев жизни, а для 1) A 2) int 3) &A::x
возвратится не адрес, а, грубо говоря, смещение внутри A. Затем в структуре EqualBy вычислится конкретный адрес или -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 1 Всего: 20 |
Это я попробовал как од будет работать с типом QString. За разъяснения спасибо, все понял. -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |