Просмотр сообщений
|
Страниц: 1 2 [3] 4 5 ... 166
|
31
|
Программирование / Общий / Re: Ускорить
|
: Апрель 26, 2021, 14:05
|
QVector кстати сам по себе - тормоз даже по сравнению с std::vector. А тут имхо лучше построить QMap с чилда на пэрент: QMap<CData*, CData*> childToParentMap Т.к. QList придётся всё равно просматривать.
|
|
|
32
|
Программирование / С/C++ / Re: Итераторы
|
: Апрель 23, 2021, 17:40
|
..что мешает тогда создать временный вектор ..
Угрызения совести Все-таки это говнокод Ну, это скажем так, простое решение малой кровью (без лишних классов-итераторов-шаблонов). Но лучшим решением было бы void processItem(CData& item).
|
|
|
33
|
Программирование / С/C++ / Re: Итераторы
|
: Апрель 23, 2021, 15:09
|
А что мешает тогда создать временный вектор поинтеров на mData? Это всего-то 2 строчки кода..
QList<CData*> dataList; for (auto& data: mData) dataList << &data;
ну и дальше где нужно выбирать:
auto & dst = useSelection ? mSelection : dataList; for (auto & data : dst) { .. }
|
|
|
34
|
Программирование / С/C++ / Re: Итераторы
|
: Апрель 23, 2021, 11:20
|
Что же нового/современного можно использовать? (вместо структур > 10 летней давности). Конечно "с выгодой", а не так, абы накрутить. Выходит что здесь и ничего. Или может задача "ну совсем уж серая, банальная", для нее и старого хватит? Или как?
Вот вообще не понимаю проблемы, если честно. Есть два вида массивов: со ссылками и с указателями. Элементы обрабатываются одинаково. Вывод: обработчик элементов должен быть общий, циклы - разнесены. for (auto& item: mData) processItem(item); и for (auto* item: mSelection) processItem(*item); И всю обработку столкать в void processItem(CData& item). Если надо, processItem к тому же можно сделать виртуальной, чтобы в возможных наследниках можно было бы (теоретичски) менять поведение.
|
|
|
35
|
Программирование / С/C++ / Re: Итераторы
|
: Апрель 21, 2021, 23:30
|
И в чём проблема? Это пайплайн. Он должен выполняться строго слева направо (ибо в этом его суть) и никак иначе. Сайд-эффект в чём?
В том, что gcc до 7.1 лажал и генерировал шляпу. А. Тогда стыдно им всем. Должно бы быть...
|
|
|
36
|
Программирование / С/C++ / Re: Итераторы
|
: Апрель 21, 2021, 17:08
|
И как вы предполагали - какой Rand будет вызван первым - левый или правый?
В 2ГИСе мы спрашивали похожую задачку std::cout << f() << f() << f() << std::endl; где f() имеет сайд-эффект (делает i++) никто не решил (я в том числе) И в чём проблема? Это пайплайн. Он должен выполняться строго слева направо (ибо в этом его суть) и никак иначе. Сайд-эффект в чём?
|
|
|
37
|
Программирование / С/C++ / Re: Итераторы
|
: Апрель 21, 2021, 10:36
|
Вот этот код дает UB (печатает -1 вместо ожидаемого 0)
Почему UB? Он и должен выводить -1. В коде же явно написано "*i = -1", а i передаётся поинтером 1 в 1. Другое дело, что такой код в продакшене никто использовать не будет. Разве что как тест для компилятора.
|
|
|
40
|
Программирование / С/C++ / Re: Ошибка компиляции cannot find -lGL
|
: Апрель 20, 2021, 20:21
|
Столько лет Qt существует, не могли до сих пор свой компилятор под него сделать (Qgcc) А зачем? GCC вполне хорош. Как зачем?? Был бы написан с использованием Qt-классов, компилировал бы виждеты сразу в нативный код...
|
|
|
41
|
Qt / Вопросы новичков / Re: Как вызываются деструкторы
|
: Апрель 20, 2021, 17:27
|
Я сидел на Turbo C, пока не вышел Borland C++ 3.0, тогда я перешел на него.
Помню, Турбо С, еще лабы на нём на 1 курсе делали... А я с Qt 2 начинал, причем нашел я его случайно, когда искал нормальную графическую оконную библиотеку вместо богом забытого MFC (потому что после TuboVision, это говно использовать было противно. И Qt в этом отношении не разочаровал. Кстати Qt внес значительный вклад в мой переход на linux, как основную платформу. На венде Qt был платным и его приходилось патчить, что бы он не показывал ничего лишнего и работал после 30-дневного периода, а на linux он был свободен. Да, MFC и TuboVision были настолько убоги, что никакого желания под них писать не было... А Qt был платным, да, приходилось его хакать) Помню, когда-то самопохаканные сборки на Qt Underground тогдашний выкладывал )))
|
|
|
42
|
Qt / Общие вопросы / Re: Хороший лог-вьювер
|
: Апрель 20, 2021, 15:57
|
Умел бы glogg фильтровать, цены бы не было.
Поднял приоритет фиче https://github.com/variar/klogg/issues/73 в своем TODO списке. Есть пожелания, как оно должно работать? Как в UI выглядеть? Фильтровать хочется в области просмотра исходного файла (верхняя панель), или в результатах поиска скрвать строки, которые попадают под условия поиска но не проходят фильтр? Сразу скажу, что второй вариант сильно проще в реализации. Представления примерно такие: - юзер выбирает фильтр "только ошибки", "только ворнинги" или подобное. - строки, не подпадающие под фильтр, прячутся. - пока активен фильтр, поиск ведётся только в видимых строках. - если убрали-поменяли фильтр, текущая строка должна оставаться видна на экране. Можно так? Спасибо)
|
|
|
43
|
Qt / Вопросы новичков / Re: Как вызываются деструкторы
|
: Апрель 19, 2021, 18:16
|
А вообще времена тогда были хорошие - деревья выше, трава зеленее. Я в те времена писал на ассемблере и C, и девочки клипающие на клипере бухгалтерскую фигню, смотрели на меня как на бога. Паскаль я знал, но относился к нему как к бейсику. Писал на нем курсовые для моей первой жены, она на мехмате училась. Эхх, молодость, молодость. Ага, паскаль, ассемблер, дельфи 6 как раз вышла тогда... Вот на ней много писал, пока с Qt не познакомился, 3.2 кажись ещё. После этого сразу забил на дельфи И пиво дешёвое тогда было, вот)
|
|
|
45
|
Программирование / С/C++ / Re: Ошибка компиляции cannot find -lGL
|
: Апрель 19, 2021, 11:25
|
А чего QT само не установило жизненно необходимые библиотеке, самому даже пришлось ставить gcc
Надо им в поддержку написать. Столько лет Qt существует, не могли до сих пор свой компилятор под него сделать (Qgcc)
|
|
|
|
|