Russian Qt Forum
Ноябрь 27, 2024, 13:25
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Безопасен ли такой код QList<QPushButton*>?
Страниц:
1
2
[
3
]
4
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Безопасен ли такой код QList<QPushButton*>? (Прочитано 21644 раз)
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Безопасен ли такой код QList<QPushButton*>?
«
Ответ #30 :
Август 30, 2010, 17:37 »
BRE, чтобы таких холиваров не раздувалось.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Alex_cs_gsp
Гость
Re: Безопасен ли такой код QList<QPushButton*>?
«
Ответ #31 :
Август 30, 2010, 17:42 »
Цитата: BRE от Август 30, 2010, 17:36
Цитата: Alex_cs_gsp от Август 30, 2010, 17:33
ИМХО разработчиками не нужно было документировать как вообще происходит распределения памяти.
Почему?
Не было бы таких вопросов. Ведь это реализация, а она не так уж важна.
Записан
Sancho_s_rancho
Гость
Re: Безопасен ли такой код QList<QPushButton*>?
«
Ответ #32 :
Август 30, 2010, 17:44 »
foreach - богомерзкий прием, богомерзкого С с шаблонами.
http://labs.trolltech.com/blogs/2009/01/23/iterating-efficiently/
Записан
BRE
Гость
Re: Безопасен ли такой код QList<QPushButton*>?
«
Ответ #33 :
Август 30, 2010, 17:45 »
Цитата: Alex_cs_gsp от Август 30, 2010, 17:42
Не было бы таких вопросов. Ведь это реализация, а она не так уж важна.
IMHO, чем больше ты будешь знать как "это" работает, тем более эффективно ты сможешь "это" использовать.
Записан
BRE
Гость
Re: Безопасен ли такой код QList<QPushButton*>?
«
Ответ #34 :
Август 30, 2010, 17:46 »
Цитата: Sancho_s_rancho от Август 30, 2010, 17:44
foreach - богомерзкий прием, богомерзкого С с шаблонами.
Ну, для использования итераторов не обязательно использовать foreach.
Записан
Alex_cs_gsp
Гость
Re: Безопасен ли такой код QList<QPushButton*>?
«
Ответ #35 :
Август 30, 2010, 17:47 »
Не давно осилил очередную книгу Рихтера по вынь-апи . Так вот в винде такое распределения памяти, что если юзать все возможности, то можно офигеть. Поэтому в большинстве случаев, если MFC, то используют new, а как оно там дальше мне по барабану, будет ли та память в страничный файл выгружена, какое там смещение или защита страницы. Вижу в этом аналогию.
Записан
Sancho_s_rancho
Гость
Re: Безопасен ли такой код QList<QPushButton*>?
«
Ответ #36 :
Август 30, 2010, 17:48 »
Цитата: BRE от Август 30, 2010, 17:46
Цитата: Sancho_s_rancho от Август 30, 2010, 17:44
foreach - богомерзкий прием, богомерзкого С с шаблонами.
Ну, для использования итераторов не обязательно использовать foreach.
Да я не серьезно. Просто потроллить после рабочего дня захотелось.
Записан
Alex_cs_gsp
Гость
Re: Безопасен ли такой код QList<QPushButton*>?
«
Ответ #37 :
Август 30, 2010, 17:53 »
А вообще хорошо, чтобы этот механизм каким-то образом был в стандарт с++ запихнутым , тогда точно вопросов не будет.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Безопасен ли такой код QList<QPushButton*>?
«
Ответ #38 :
Август 30, 2010, 18:13 »
Цитата: Пантер от Август 30, 2010, 17:32
for (QList <int>::iterator......
Чем тебе этот for не угодил?
Тем что строка длинная получается. и все это смахивает на "демонстрацию познаний" взамен содержательной работы
Цитата: BRE от Август 30, 2010, 17:33
Чем проще? А если индекс элемента не нужен вообще? Для чего инкрементировать/декрименторовать не нужную переменную, да еще постоянно вычислять по ней смещение до нужного элемента? А как быть с индексом при работе со связанным списком (его конечно можно приспособить, только нужно ли?).
Разговор о контейнерах с прямым доступом, для остальных (хочешь - не хочешь) итератор использовать придется. "Смещение до нужного элемента" по существу та же адресная арифметика, плюс небольшие накладные расходы. Утверждение что ++ итератора якобы "ощутимо быстрее" взятия по индексу лишено оснований. Это обойдется в 2-3 машинных команды даже для классического vector, что пренебрежимо мало по сравнению с тем что делается в теле цикла. Для остальных контейнеров вообще дело темное кто там быстрее. Так что дело вкуса что использовать - итератор или индекс.
Если речь идет о скорости - с удовольствием приму участие в обсуждении. Только по-честному. А то Вы спокойно относитесь к тому что контейнер перераспределяет память (что стоит сотен/тысяч команд), входит в EnterCriticalSection при добавлении нового элемента (напр std::set) и.т.п. В этом контексте говорить о "выжимании микронов" неуместно
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Безопасен ли такой код QList<QPushButton*>?
«
Ответ #39 :
Август 30, 2010, 18:18 »
Индексный - сишный подход. В с++ принято итераторами пользоваться.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
BRE
Гость
Re: Безопасен ли такой код QList<QPushButton*>?
«
Ответ #40 :
Август 30, 2010, 18:19 »
Цитата: Igors от Август 30, 2010, 18:13
А то Вы спокойно относитесь к тому что контейнер перераспределяет память (что стоит сотен/тысяч команд)...
Если это обращение ко мне, то мне не понятно почему я спокойно к этому отношусь?
А точнее мне не понятно какое перераспределение памяти имеется ввиду.
Записан
Alex_cs_gsp
Гость
Re: Безопасен ли такой код QList<QPushButton*>?
«
Ответ #41 :
Август 30, 2010, 18:33 »
Отнюдь не всегда перераспределение памяти стоит сотни тысяч команд. Например в винде, выделить блок памяти менее размера одной страницы попросту нельзя, а это 2 или 4 кб, тем не менее, каким то чудом new может вернуть память в один байт. Поэтому все зависит от диспетчеризации. Никто вам не мешает зарезервировать нужное количество памяти.
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Безопасен ли такой код QList<QPushButton*>?
«
Ответ #42 :
Август 30, 2010, 18:36 »
Цитата: Пантер от Август 30, 2010, 18:18
Индексный - сишный подход. В с++ принято итераторами пользоваться.
Ну так С++ всего лишь (небольшая) надстройка над базовым С. Так, флигелек в котором живет "наша малышь"
Цитата: BRE от Август 30, 2010, 18:19
Если это обращение ко мне, то мне не понятно почему я спокойно к этому отношусь?
А точнее мне не понятно какое перераспределение памяти имеется ввиду.
Никаких "персональных выпадов" (по крайней мере с моей стороны
). Просто если речь об эффективности контейнеров, надо говорить/обсуждать применяемые ими "стратегии" (мерзкое слово) распределения памяти/ресурсов, т.к. 95% эффективности определяется этим. Остальные 5% останутся пятью, как бы мы ни старались
Любой контейнер есть "растущий массив" и все зависит от того как он растет.
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Безопасен ли такой код QList<QPushButton*>?
«
Ответ #43 :
Август 30, 2010, 18:43 »
Цитата: Igors от Август 30, 2010, 18:36
Ну так С++ всего лишь (небольшая) надстройка над базовым С. Так, флигелек в котором живет "наша малышь"
"А мужики-то не знают..."
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
BRE
Гость
Re: Безопасен ли такой код QList<QPushButton*>?
«
Ответ #44 :
Август 30, 2010, 19:00 »
Цитата: Igors от Август 30, 2010, 18:36
Ну так С++ всего лишь (небольшая) надстройка над базовым С. Так, флигелек в котором живет "наша малышь"
Это совершенно не так.
C - это процедурный язык, C++ - объектно-ориентированный.
Между двумя этими подходами огромная разница, начиная от проектировании и заканчивая реализацией задачи. Там все по другому, и кто только не пытался это донести до пользователей, начиная с автора языка.
А то что синтаксис их похож... ну так исторически сложилось, Страуструп выбрал его.
Цитата: Igors от Август 30, 2010, 18:36
Просто если речь об эффективности контейнеров, надо говорить/обсуждать применяемые ими "стратегии" (мерзкое слово) распределения памяти/ресурсов, т.к. 95% эффективности определяется этим. Остальные 5% останутся пятью, как бы мы ни старались
Любой контейнер есть "растущий массив" и все зависит от того как он растет.
А какое отношение имеет стратегия распределения памяти к методам доступа. Начали с индексов/итераторов, закончили стратегией распределения.
В принципе можно обсудить и распределение памяти.
Записан
Страниц:
1
2
[
3
]
4
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...