Russian Qt Forum
Май 23, 2024, 21:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: Универсальный итератор  (Прочитано 21307 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #15 : Ноябрь 03, 2015, 13:17 »

Игорь, я умею писать классы с методами и написание класса "координата" меня бы ничему новому не научило бы. Не вижу смысла создавать какие-то структуры, которые будут вносить дополнительные расходы в плане кода. Думаю, что если и появится необходимость в таком классе, то внесение изменений не будет нести катастрофичный характер.
QVector3D для большей гибкости вы можете заменить на QGenericMatrix либо найти другой уже написанный вариант этого класса. Не думаю, что такая задача осталась без внимания.
Конечно можно и готовое взять. Более того, так чаще всего и приходится поступать, все с нуля писать - не подход. Но вот беда - все это "использование готового" очень поверхностно и понимания не дает. Человек как бы скользит от одного готового решения к другому, что дает иллюзию прогресса. И вот он уже весьма уверенно заявляет "я умею", "не вижу смысла" Улыбающийся Ну в самом деле, что такого уж хитрого в классе "вектор"? Просто "класс с методами". Может с точки зрения "чистого программирования" это и так, но на практике означает - человек с 3D работал мало, или вообще только чего-то слышал.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #16 : Ноябрь 03, 2015, 13:38 »

Игорь, я не понимаю, к чему вы клоните. У вас какие-то рассуждения без полезных выводов.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #17 : Ноябрь 03, 2015, 15:46 »

оффтоп: о, новый срачок пошел Улыбающийся
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #18 : Ноябрь 04, 2015, 09:20 »

Игорь, я не понимаю, к чему вы клоните. У вас какие-то рассуждения без полезных выводов.
Я к тому что надо идти от жизни, от задачи. А у Вас погоня за "модой", пример использования явно надуман. Какой вообще смысл совместного использования контейнеров разной длины? Хз, а "хвосты" - что это, если не юзаете, то зачем храните? Ладно, пусть это гипотетический случай, но чего же в цикле 3 раза парить hasNext если эту проверку можно сделать один раз, и даже код короче?

Я понимаю что цели чисто учебные, типа освоить "traits" (который я, кстати, так и не знаю), и "приводить" контейнер к жаба-стилю (next, hasNext). Но все-таки полный отрыв от практики выглядит плохо.

оффтоп: о, новый срачок пошел Улыбающийся
Напомнило анекдот про мух  Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #19 : Ноябрь 04, 2015, 09:58 »

Но все-таки полный отрыв от практики выглядит плохо.
Где вы видите отрыв от практики? Да еще и полный? Улыбающийся
Человек сделал итератор, он может пробегаться по любым коллекциям. Что в этом плохого? Итераторы нужно уметь писать.
То что он в примере использует какие-то три контейнер чисел ни о чем не говорит. С таким же успехом там мог быть один контейнер пар или два контейнера строк или ...
Какие то у вас не состоятельные претензии. Улыбающийся
« Последнее редактирование: Ноябрь 04, 2015, 10:35 от Old » Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #20 : Ноябрь 04, 2015, 11:00 »

Пример использования не надуман. Этот пример, как я уже упоминал, есть часть моего проекта.
Я честно не вижу здесь погоней за модой. Код получился обобщённый и его с лёгкостью можно использовать в любом проекте не внося каких-либо изменений.
Вы утверждаете, что написав класс я научился бы чему-то больше... А вы не заметили, что я привёл 3 класса?
А на случай нелюбви к джава стилю предусмотрены привычные методы, которые не несут доп расходов
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #21 : Ноябрь 04, 2015, 11:46 »

Какой вообще смысл совместного использования контейнеров разной длины?

Вполне реалистичная задача. Например, мне не так давно нужно было сделать сравнение двух векторов разной длины - найти в них общие последовательности по определенному критерию. Перепробовал несколько вариантов, и с итераторами, и без, в итоге наиболее эффективным оказался поиск с задействованием SSE-интринзиков (но то уже детали).
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #22 : Ноябрь 05, 2015, 06:52 »

Вы утверждаете, что написав класс я научился бы чему-то больше... А вы не заметили, что я привёл 3 класса?
Да, утверждаю, и дело не в количестве классов.
Код
C++ (Qt)
rotateVertex(rotMatrix, *itX, *itY, *itZ);
Это как-то "еще терпимо", но уже кандидат на снос. Нужно стремиться к этому
Код
C++ (Qt)
rotateVertex(rotMatrix, &pos);
Где pos - нормальная структура. Часто говорят "С с структурами", мол, это примитивно написано, не используются современные средства и все такое. При этом, однако, забывают что если те самые структуры спроектированы плохо, то никакие мега-средства не помогут. А у Вас зияет дыра в самом базовом классе (точнее его у Вас просто нет). И надо его создавать, а не латать какими-то итераторами.

Ну вот не работают так люди с вертексами, никто не бегает с иксом, игреком и зет всякий раз. Вы упираетесь, дескать, "а в моей задаче так надо" - на здоровье, Ваше право. Но это совершенно бесперспективно, как для проекта, так и для творческого роста  Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #23 : Ноябрь 05, 2015, 07:08 »

Да, вот еще
Код получился обобщённый и его с лёгкостью можно использовать в любом проекте не внося каких-либо изменений.
Заниматься "общими" вещами очень приятно Улыбающийся Но вот когда доходит до конкретного использования - хммм... ну как-то не видно "особых выгод", а то и просто хуже чем написать это место без затей. Как в Вашем примере - почему бы не вычислить число итераций цикла один раз? (и не гонять воздух hasNext). Хорошо, задачи разные бывают, приведите др пример где эта обобщенная конструкция оказывается очень даже к месту. Словом - убедите.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #24 : Ноябрь 05, 2015, 09:47 »

Да, вот еще
Код получился обобщённый и его с лёгкостью можно использовать в любом проекте не внося каких-либо изменений.
Заниматься "общими" вещами очень приятно Улыбающийся Но вот когда доходит до конкретного использования - хммм... ну как-то не видно "особых выгод", а то и просто хуже чем написать это место без затей. Как в Вашем примере - почему бы не вычислить число итераций цикла один раз? (и не гонять воздух hasNext). Хорошо, задачи разные бывают, приведите др пример где эта обобщенная конструкция оказывается очень даже к месту. Словом - убедите.
А зачем человеку тебя убеждать? О_о Он сделал итератор и поделился им с общественностью. Тебе не подошло решение? Так и проходи мимо. Кому-нибудь решение понравится и он его заюзает.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #25 : Ноябрь 05, 2015, 10:03 »

не гонять воздух hasNext
А где тут воздух гоняется? Если сравнивать с #9, то чем это хуже i < limit?
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #26 : Ноябрь 05, 2015, 11:29 »

От себя пара маленьких замечаний:

1) Для stl совместимости, лучше наследоваться от std::iterator, где указать iterator_category и т.д.
2) Для универсальности можно было бы сделать его Random Access итератором..
3) Хорошо бы иметь возможность пробегаться и по обычным C-массивам.

 Улыбающийся

Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #27 : Ноябрь 05, 2015, 12:15 »

m_ax, спасибо. Посмотрю.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #28 : Ноябрь 06, 2015, 06:53 »

Кому-нибудь решение понравится и он его заюзает.
Ну пока в это совершенно не верится. Привлекаем чужой класс (уже отсев 90%), но в рез-те получаем бОльший размер кода, заметно хуже читаемого, и заметно медленнее на выполнении. Может я не понял как юзать? Но простого ясного примера почему-то не находится. Ну так и может и вся затея была мертворожденной?

От себя пара маленьких замечаний:

1) Для stl совместимости, лучше наследоваться от std::iterator, где указать iterator_category и т.д.
2) Для универсальности можно было бы сделать его Random Access итератором..
3) Хорошо бы иметь возможность пробегаться и по обычным C-массивам.
Ага-ага, и вот уже пестуется очередной класс-упырь о который будут ломать ноги. Общность - так уж общность! А кому оно надо и зачем - неважно. Осталось только повтыкать его везде в код Плачущий

А где тут воздух гоняется? Если сравнивать с #9, то чем это хуже i < limit?
Тем что i < limit зовется один раз, да и сравнение чисел пошустрее
« Последнее редактирование: Ноябрь 06, 2015, 06:54 от Igors » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #29 : Ноябрь 06, 2015, 07:13 »

Еще одна тема переросла в "охоту на ведьму", имя которой итератор. Улыбающийся
Жалкое зрелище.
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.093 секунд. Запросов: 23.