Я тут пью пиво и придумал тест на синьора помидора: надо посмотреть на строку ниже 10 секунд и объяснить, что она делает. auto _=<::>(auto&_)<%_%=_;%>; ЗЫ для компиляции достаточно 14 стандарта.
>>1413616 >>1413622 Делает меня ругаться. Сейчас бы спрашивать говно всякое типа альтернативного синтаксиса на собесах. Вам на работу важнее кого взять: инженера, который задачу решить может, или фокусника, который на крестах умеет кодить без [], {} на клавиатуре?
>>1413616 Иди на хуй, ретард-фокусник. Не устаю удивляться тому, как эпоху хакеров-вирусописателей, ковыряющих ядро винды, сменило поколение ибонатов-синтаксических дрочеров. Так-то для большинства задач хватит PureBasic с ассемблерными вставками и годным оптимизирующим конпелятором. Как максимум - сишка. Все остальное - выбросы современного общества с изобилием хуйни для говноедов всех мастей.
>>1413616 >тест на синьора помидора Merge request denied. Reason: "Пиши код без изъёбств. Третий раз за неделю пытаешься что-то в таком духе написать, ну нахуй уже."
>>1413672 Синтаксические обезьяны же. Уебки не знают, как виртуальный адрес транслируется в физические или что уровень привилегий это не что-то в процессоре, а свойство сегмента, но выебываются друг перед другом синтаксическими извращениями, ебучими liftM, темплейтным говном, тайпклассами (типичный любитель тайпклассов на работе осваивает новый логгер для записи в базу) и прочим. Как меня баттхертит с современной индустрии, пиздец.
Сейчас приложение перемещает круг при нажатии на мышку (на её же позицию). Как сделать так, чтобы оно не просто меняло локацию одного PictureBox, а создавало новый, оставляя старую точку на месте?
>>1413726 Блядь. А сам подумать не можешь? На нажатие мыши у тебя скорее всего стоит перерисовка и рисовальщик знать не знает про твой первый круг. Поэтому храни его где-то и рисовальщику скажи, что его нужно рисовать.
>>1413742 Я же код рядом оставил. Сейчас там просто стоит Show скрытого до этого элемента, на месте нажатия мышкой. Как хранить и как рисовать заново я не знаю, где-то есть какое-то гайды по этому поводу?
>>1413747 В нише кодинга втупую кресты останутся только для легаси. В рокет саенс (не эмбед байтоебля, а computer vision, HFT или low-latency, графические движки, обработка звука/видео) может немного уступить Rust, но в целом будет цвести.
>>1413814 Возможно. Если хочешь быть высокоплачиваемым и востребованным в C++, стоит в первую очередь учить математику и алгоритмы. Если по жизни интересует только кодинг (хотя ты еще не знаешь), стоит вкатываться в что-нибудь помоднее типа котлина.
>>1413811 Не он, а я. Но я согласен с этим байтоебом. Алсо, нахуй кьюти, каллбэки им не нравятся, ахуеть теперь. Только неосилятор не может в каллбеки с 17 стандартом.
>>1413905 Скриншот рабочего стола сделай. Уверен что там только 1-2 браузера и тонны всего остального. Какая блять веб-эпоха, дебил? Она в нулевых еще закончилась.
>>1413663 >Не устаю удивляться тому, как эпоху хакеров-вирусописателей, ковыряющих ядро винды, сменило поколение ибонатов-синтаксических дрочеров. чувак, сегодня черного софта, работающего на нулевом уровне (как инфраструктурные вещи, так и боевую нагрузку), пишут не меньше чем тогда, просто этот "бизнес" сильно посерьезнел - по сути, это уже кибер-оружие как бы ни пафосно звучало, пишется это спецслужбами государств либо своими силами либо частным подрядом у провереных фирм и лиц; те же кто этим занимаются, щас молчат в тряпочку, ибо светит просто снос башки за треп "коммерческий" же блек софт, те тупо воровство у населения, лол, переместился в юзерспейс, ибо все что нужно спиздить с компа можно просто спиздить боевой нагрузкой, работающей в юзерспейсе с правами хомячка же, болеее того он пеместился еще выше, на уровень скриптовых расширений в тех же браузерах, ворде и офиса в целом, pdf-документов и прочего и да, тк все это коммерциализировалось, то никто не спешит писать статьи и вообще хвастаться всем этим в интернетах вот и кажется что нет движухи
>"коммерческий" же блек софт, те тупо воровство у населения, лол, переместился в юзерспейс, ибо все что нужно спиздить с компа можно просто спиздить боевой нагрузкой, работающей в юзерспейсе с правами хомячка же, болеее того он пеместился еще выше, на уровень скриптовых расширений в тех же браузерах Вот, я знаю что я буду копать если не вкачусь в фронт, с детства мечтал стать хакером (:
А ну ка, пидорасы, вот вам тест на быдлокодера. Есть тупой спинлок ("мьютекс"). Впишите в код вместо ... порядок: acq_rel, acquire, release или relaxed. Вписанный порядок должен работать на всех архитектурах и быть максимально слабыми. Ответ без объяснения не принимается.
>>1413687 >Пока единственное что нашел из годного - это https://www.tutorialspoint.com/makefile/ Что там годного? Устаревший синтаксис записи правил (которые и так неявно определены), закат солнца вручную (прописывание зависимостей от хедеров, вместо автогенерации зависимостей) и т.д.
>>1414317 При локе: acquire при удачном CAS, relaxed при неудачном. При анлоке: release. Объяснение: acquire-release поведения требует стандарт. Почему relaxed — очевидно.
>>1414431 Это не кас, ну да ладно, правильно. Вот только почему exchange можно делать с acquire а не acq_rel -- вообще ни разу не очевидно. Жду указания на нужный абзац стандарта, который говорит, что таки можно.
>>1414388 Поведай, чем же кас будет лучше чем эксчендж вот конкретно здесь. Про ещё один цикл с лоадом внутри для ублажения кэшей знаю, для простоты опустил.
>>1414528 >Вот только почему exchange можно делать с acquire а не acq_rel -- вообще ни разу не очевидно. Вообще ни разу не очевидно почему надо начинать с acq_rel и доказывать, что одного acquire достаточно. >>1414532 >Уточню, почему при твоей расстановке порядков будет выполняться взаимное исключение? Не понимаю, что ты хочешь услышать. То, что успешные RMW-операции всегда читают последнее значение (в смысле modification order) атомарного объекта?
>>1414901 Рекомендую самоучитель по C++ от Джеффа Кента, там все очень разжевано хорошо, даже я понял(вроде). У тебя была какая-то переменная х, ты ее передал в функцию. По умолчанию копируется просто значение, а само значение х не изменится после манипуляций над ним в функции. Когда по ссылке (&) передаешь, то соответственно значение поменяется при манипуляциях внутри функции. Ты обычно будешь пользоваться оператором return все равно, не зацикливайся пока, потом вернешься и разберешься получше.
>>1414940 Да, но вряд ли для того, что ты подразумеваешь. Он быстро распарсевает хуево сделанные (некорректные отступы в основном) мегабайтные конфиг файлы на ксамеэле, за секунды, где нотепад++ будет пару минут скрежетать. Для собственно кодинга не использую.
>>1414944 Именно для этого. Вроде если допилить плагинами должно быть сносно. Нужно перекатиться из ламповой студии в кроссплатформу без моральных потерь.
"х" указывает на номер ячейки , где лежит значение 100.
Я адрес значения var кладу в номер ячейки? То есть я номер ячейки (например 315) переименовал на адрес переменной (например f594g7) и теперь у меня в ячейке f594g7 лежит 100. По этому когда я пишу cout var он выводит мне значение из ячейки f594g7 то есть 100.
Херня написана на твоей картинке. Никакого выбора одного из двух способов передачи у тебя нет. Аргументы всегда передаются одним способом - копированием.
Различие есть в том, что из себя представляет параметр функции (ссылочный или не), а не как он был передан.
>>1414950 Можешь еще обратить внимание на sublime. VSCode по функционалу намного ближе к легковесным текстовым редакторам вот только он нихуя не легковесный, чем к IDE.
Не могу разобраться с code-style. Тема тянет на холивар, но все же. lower_case или camelСase? Венгерская нотация все? Или еще актуально? Как определиться со стилем написания кода и какой более правильный?
>>1415435 Написать другую функцию с таким же именем, но другим типом аргумент это называется перегрузка функции void f( float x ); void f( bool x ); И так далее
У строк есть префикс u8, который делает std::string с кодировкой utf8. Есть ли портативный способ вывести это дело на консоль, шобы работало на винде и на линухе? Без плясок с локалью и без смс. Вроде в виндовсе консоль по умолчанию использует utf16, поменял на utf8, шрифт поменял, пока не помогло. И вообще, какой лучше на сегодняшний день, в c++17, способ хранить строки в human-readable формате, с поддержкой максимально большого числа символов?
>>1413747 Не умрет. Кроме того, язык активно развивается во всех направлениях, то есть укрепляет свои позиции. Раст никогда не догонит кресты, к сожалению.
>>1415498 Мне просто нужно показать как это делается, я не знаю как создать множество объектов во время выполнения, а умею только изменять уже готовые.
Я тут подумал. А зачем мне ебаться с Qt, если можно приколхозить тупа C# формочки склепанные абы как за 10 минут и все будет выглядеть красиво? Зачем вообще фронтенд делать нативным?
Читаю страуспопа и нихуя непонятно какие-то токены, лексемы, термы все в кучу навалено с обращением к пендоской грамматике причем сразу. Есть нормальная книга где последовательно и нормально поясняют?
В книжке C++ Templates: The Complete Guide, в одной из последних глав, про Variant, есть пример: template<typename... Types> class Variant : private VariantStorage<Types...>, private VariantChoice<Types, Types...>... { ... using VariantChoice<Types, Types...>::VariantChoice...; ... } Так вот это выражение с using не компилится. Я так понял, тут мы просто объявляем конструкторы всех базовых классов VariantChoice в Variant, раскрывая Types. Однако, компилятор пишет "Types: пакет параметров должен раскрываться в этом контексте". Памагите, пожалуйста, я запутался.
>>1415812 >C++17 не завезли в компилятор Не правда, у меня включен c++17. Точно помню, что подключал его, когда не компилились fold expressions. Даже перепроверял перед тем, как постить в тред. Так что дело точно не в этом.
>>1415836 > С `VariantChoice<Types, Types...>...` в списке базовых классов у него проблем нет, кстати. Да, здесь глухо, ни ошибок, ни предупреждений. > GCC и Clang нормально переносят такой using. Что ж, спасибо, сам бы попробовал на gcc, но у меня тут, блджад, сочетание отдыха с древним ноутом с виндой и изучением шаблонов.
>>1415853 >Полноценная поддержка 17 стандарта у msvc появилась только в версии 19.15. Пруф Пруф не стоит выеденного яйца. Код с pack expansion в using-declaration не компилится даже в 19.20 https://godbolt.org/z/XMAy0d
Объясните все-таки, что такое полиморфизм, а то какая-то путаница вокруг этого определения. Как я понимаю - это когда виртуальные функции переопределяются в производных классах. Но где-то видел что это дескать просто "наследование", а полиморфизм это когда конкретно абстрактные классы и чисто виртуальные функции.
>>1415919 > Объясните все-таки, что такое полиморфизм
Короче, когда один тип "мимикрирует" под другого. Например, базовый класс "Сущность" игровая какая-нибудь, у них есть функции Update, Draw и тд. В наследниках ты пишешь свои определения этих функций и в итоге всё работает единообразно.
>>1415919 полиморфизм в с++ - это очень просто, в отличие от других языков, всего 3 разновидности: есть зашитый в язык динамический полиморфизм через виртуальные функции классов есть статический полиморфизм через шаблоны есть так называемый ad hoc полиморфизм (не путать с функциональщиками, они в этот термин другое вкладывают) в виде перегрузки функций и функций-членов все просто
>>1415943 Не благодарю, я читал это, нихуя не понял. Меня интересует определение в контексте ООП под с++. >>1415928 Ну то есть обычно динамический полиморфизм подразумевают, так?
>>1415955 > Наследование в С++ реализуется набором ad-hoc-механизмов, однако, его использование называется в сообществе языка «полиморфизмом» (а сокрытие полей — «абстракцией») Ну теперь я вообще запутался. Сокрытие полей это же ведь инкапсуляция? А ad-hoc в C++ вон выше анон тоже писал, что это перегрузка функций.
>>1415960 >Наследование в С++ реализуется набором ad-hoc-механизмов я ж говорю, термин ad-hoc в различном контексте имеет отличающиеся коннотации в данном случае имеется ввиду что ты в крестах явно задаешь связи наследования между классами, выстраивая тем самым иерархию классов, в других же языках механизм наследования может быть по другому сделан
>>1413564 (OP) >>1008826 (OP) Здравия, изучаю C++ несколько лет, но с большими перерывами, вот недавно опять начал, для того чтобы освежить знания прошел на edx курсы: Introduction to C++, Intermediate C++ и Advanced C++. Вопрос в том что делать дальше? Понятно что можно(и наверное так и нужно бы сделать) начать изучать stl. НО! Скорее всего мне опять не хватит мотивации это сделать, потому что я не знаю где это все применять. Аноны, покидайте области в которых применяется С++ и ресурсы или книги с помощью которых их можно начать изучать.
То есть мне кажется моя проблема в том что я не знаю где в принципе применяется программирование, поэтому нет мотивации, так как не знаю куда развиваться.
P.S ХЗ куда писать этот вопрос, если написал не туда подскажите куда лучше его написать.
>>1416198 Да, как уже написали разберись что такое присваивание, а что такое инициализация. Если ты именно про присваивание то 2 и 3 вариант не работают. Если про инициализация то, насколько я знаю, предпочтителен последний вариант, так как он исключает неявное привидение типов, что исключает неявные ошибки.
>>1416522 нормально но щас делают проще: кидают тебе тест на литкоде, ты его прорешиваешь дальше уже разговаривают по результатам имхо, вполне годный способ
>>1416405 >...не знаю где это все применять >начать изучать математику Не еш, подумой. Для математика самое зашкварное - это задаваться вопросами в стиле "а где это в жизни пригодится?". Это противоречит самым основам математики.
Судя по твоим вопросам, тебе лучше начать с научно-популярных книжек.
>>1416522 >cppquiz Спасибо за наводку. Только я что-то не понял тут подвоха у этого вопроса "повышенной сложности". Без задний мысли сначала ответил ошибка компилятора, что у него int main() ничего не возвращает(хотя это ок оказывается, всегда так было?), потом ответил "1" ну как если бы я вообще первый день читал о С++ и прокатило. Что за триграф вообще, это какая-то управляющая последовательность?
Вот тоже интересно, я как-то сталкивался, что у меня не работала какая-то манипуляция с char массивом через указатель, но заработала через обращение с []. В чем все-таки разница между массивом и указателем?
>>1416673 Нет, 3 затем 4. Потому что постфиксный вариант инкремента. Сначала в функцию отправляется 3 затем i увеличивается на 1. Как вообще может получится 4, 3?? Даже при ++i будет 4 4.
>>1416683 Надеюсь такую хуйню на собесах не спрашивают. Зачем мне вообще это нужно в голове держать? У меня есть иде и дебаггер. Только не говорите, что на собеседованиях заставляют еще на листочке что-то писать без подсказок.
>>1416703 Это чё троллинг тупостью? Ты боишься что тебя завалят на собеседке инфой со второй главы любого учебника по си/сипп? Если захотят тебе задать задать сложный вопрос по фишкам языка то спросят чё посложнее чем хуйню с пика. Но судя по тому что ты откуда-то аутпут 4 3 надумал, тебе ещё рано на собеседки.
>>1416697 Да я это знаю, просто char массив хранится по-моему по разному в памяти, там как символьная константа если, он не модифицируется при передаче в функцию. У меня было что-то вроде char a="hello"; foo(a);функция что-то делала с массивом, меняла регистр по-моему И был access violation. А вот когда char[6]="hello"; Все работало. Ну и ответ примера, typeid(int)==typeid(int[]) возвращает ложь в ответе, это не совсем одно и то же.
>>1416794 Одинаково они хранятся. char *a = "hello"; - это указатель на символьную константу и попытка ее изменения - UB. А char a[6] "hello"; - это массив с копией символьной константы и его ты можешь менять сколько хочешь.
>>1416802 Ну я же говорю, не одинаково же. В описании к тому вопросу на ccpquiz написано, что массив преобразуется к указателю все равно для компилятора. UB потому что размер не задан четко в случае *a?
>>1416725 >>1416706 Это вы толстите видимо. Такие вопросы задавать, это тоже самое если тебя сейчас спросить какую-нибудь хитровыебанную хуйню из программы матана 6 класса, которой вы посветили пару уроков. Ответишь правильно? Сомневаюсь. Такие вопросы никак не отражают действительности о знании предмета. Из таких контор надо бежать.
>>1416867 > программы матана 6 класса Это где в 6-м классе проходят матанализ? > Такие вопросы никак не отражают действительности о знании предмета. Да. Такие вопросы проверяют элементарную вменяемость. Если ты проваливаешь такой тест, то о знании предмета спрашивать смысла нет.
>>1416699 > заставляют еще на листочке что-то писать без подсказок Конечно, а потом обмазываются своими инструментами для программированию и рассказываю как всё охуенно.
Почаны, не бейте, лучше обоссыте. Поясните, плиз, за file system в с++. create_directories, если ему передать путь типа "\1\4\8\8", создает папки в корне (например "С:\1\4\8\8"). Если создать файл ofstream'ом, передав open'у неполный путь, файл будет в папке проекта. Почему fs remove, которому передали неполный путь, находит то, что создавалось ofstream'ом? Я не понимаю, почему у меня работает то, что работать не должно.
>>1416909 Потому что так работают системные вызовы в операционной системе - если ты передал неполный путь, то путь будет считаться относительно текущей директории приложения. Текущую директорию можно поменять через chdir/std::filesystem::current_path
Поменял название папки, в которой лежит проект. Везде, где мог поменял название, но не могу избавиться от ошибки "QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly" и еще дюжины из нее вытекающих. Где лежит конфигурационный файл этой залупы?
>>1416936 Текущая директория — это понятно. Непонятно вот что:
Проверяю current_path — все как ожидалось, путь до папки с исходниками проекта. fs::create_directories(неполный_путь) создает папки в C:\ fs::remove_all(первая_папка_неполного_пути) находит их там и удаляет.
Через ofstream создаю файл, передав open(), опять же, неполный путь. Файл лежит в рядом с исходниками. fs::remove(неполный_путь_к_файлу) находит его и там и удаляет.
>>1416952 Нет. Проект лежит в папке пользователя. Полтзователь на русском. Из-за этого возникала другая ошибка. Переименовал на английский. Теперь вот что
>>1416958 Странно, кстати - обещают, что create_directory вызывает mkdir, а тот должен нормально работать с относительными путями. Ты чем компилишь? Может, это играет роль. Но я не уверен, поскольку я везде в своем проекте при использовании filesystem писал через current_path, т.е. абсолютными путями пользовался, можешь делать так же - только храни путь не в string, а в path, чтобы правильно слеши разруливались.
>>1416961 >>1416963 Я юзаю VS на винде. >писал через current_path, т.е. абсолютными путями пользовался, можешь делать так же - только храни путь не в string, а в path, чтобы правильно слеши разруливались Так и сделаю, потому что странно все это. >>1416971 да, это говно, я же сельдь
>>1416992 Хорошие прогеры разбежались на нормальные зарплаты в современные языки и технологии. Остались только свитерки, пишущие процедурную лапшу за гроши.
>>1417018 Пришло время переустанавливать шиндовс. У тебя система по пизде пошла. Тебе вместо переименовая нужно было просто перенести папку прокта в другую. Возможно получится обойтись только переустановкой Qt, но я бы рекомендовал ресет всей системы.
Анончики, сейчас вот начинается лето, и у меня появляется уйма свободного времени. Подскажите, где можно найти опытного человека, который бы просто давал разные задачи и какие-то сроки на выполнения, а потом, по возможности, смотрел результат и давал критику? Из навыков недоджун-уровень знание плюсов, знаком с Qt. В целом я и так буду решать разные задачи, но хотелось бы делать это под надзором более опытного кодера, который подскажет как делать лучше.
>>1417113 >Из навыков недоджун-уровень знание плюсов, знаком с Qt. Иди на фриланс.ру и upwork и работай, в чем проблема-то? С такими навыками уже можно на мороженку заработать.
>>1417135 Одни говорят что олимпиадники это ужасные программисты в продакшене, а другие говорят что нужно решать олимпиады для развития логики. Да и хотелось бы порешать что-то более приближенное к реальности, а не сортировать матрицы 1000 и одним способом. Часто видел как опытные люди описывали свой путь как: >хорошо учился >нашел ментора сеньора-помидора >теперь я сам сеньор/тимлид/архитектор Я на кодварсе и так решаю иногда, но вот иногда вижу что требуют алгоритмическую базу, а алгоритмов настолько много, что даже не поймешь какие из них реально нужны, а какие не используются с 60-х годов. С фриланса на плюсах проиграл немного, у нас в городе миллионнике вакансий то штук 20 всего, а фриланс это что-то невероятное.
>>1417137 Просто забей. Ваше поколение уже ничему толковому не научится. Настоящий программист, чтобы быть тру кодером, должен писать свою ОС в течение многих лет. А вам это неинтересно.
>>1417137 ну, бля, задач 300 надо набрать, чтобы тупо руку набить когда еще студентик те и не задротить олимпиадки, но и хуй не забивать на компетив ресурсы с задачками средний путь, в общем
>>1417046 >string_view - замена const string& в аргументах функции, да ещё и без нулевого символа. не забывай что стринг вью еще жрет строковые литералы и строки в си стиле это важно особенно в шаблонохераченье
>>1417042 бля, чувак, зачем нужен стринг вью можно выяснить за 10 минут гуглежа ебаный в рот, целые доклады на конференциях есть где только эту фичу обсасывают нахуй тут это спрашивать
Я сейчас работаю над проектом, который будет хранить в озу довольно большой объем информации. Так вот, правильно ли я поступлю, если напишу вот так: std::list<Ray> *rayl = new std::list<Ray>(60); А когда мне этот список не потребуется, то delete rayl; rayl = nullptr; Какие подводные?
>>1417238 не умный, но, сука, эрудированный сечешь разницу? на конференциях (в частности cppcon) есть особый формат доклада длительностью 5 или 7 или 10 минут, люди подходят быстро рассказывают-показывают и отходят, все это за одну сессию за частую это самая интересная часть конференции интересней, наверное, только практикумы на конфах
>>1417430 Инфа которая отсылается в QTcpSocket не отправляется сразу, а накапливается в внутреннем буфере (что бы уменьшить количество системных вызовом). flush заставляет сразу отправить всю накопленную инфу.
\tif (!server->listen(QHostAddress::Any, 777)) { \t\tlabel_3 ->setText("Бля. Чет не фурычит"); // Вот тут и дальше я хз как вывести текст в форму \t} \telse { \t} }
>>1417734 Твой сервер не знает, про существование лейблов, и это норма. Все твои ГУИ элементы лежат в структуре ui, а она является членом класса Chat. ИМХО, лучше listen вызывать не в конструкторе, а сделать отдельный метод. При возникновении ошибки сервера, можно емитить сигнал (ну например myServerError(const QString&)). А в чате приконектится к этому сигналу слотом лейбла setText. Также можно транслировать сигнал об ошибке самого сокета. (Надо добавить серверу нужный сиглал, аналогичный QTcpServer, и законектить их).
>>1417757 > Твой сервер не знает, про существование лейблов, и это норма. Все твои ГУИ элементы лежат в структуре ui, а она является членом класса Chat. То есть надо написать Chat::ui.label.setText()?
>>1417760 Так можно написать, если ui статический публичный член класса Chat. Но так делать не нужно. Можешь серверу сделать член класса - указатель на лейбл и инициализировать его передав твой лейбл как параметр конструкрора. Но это тоже хреновое решение - оно разносит твой гуй по компонентам, которые о нем знать не должны.
>>1417768 Я же в первом ответе написал, при ошибке емитить сигнал, в сигнале можно передать текст или код ошибки. В Chat сделать слот, и законектить его с этим сигналом. В слоте уже обработать и вывести текст. Где ты сервер создаёшь?
>>1417859 Всегда какой-то объект не виден. У меня есть объект server моего класса MyServer и объект w класса Chat (основной класс). Я не знаю где их связать
>>1417914 Мне сложно сказать что-то конкретное, так как я не знаю какую архитектуру ты напедалил. >Как это сделать? Первый вариант: делаешь геттер для вложенного класса и потом где-то пишешь QObject::connect(obj->getInnerObj(), SIGNAL(signal), mainWindow, SLOT(slot)); Второй вариант (получше): во внешнем классе делаешь сигнал c такой же сигнатурой как у внутреннего можно тупо скопировать. В конструкторе внешнего соединяешь сигналы connect(innerObj, SIGNAL(signal), SIGNAL(signal));. Теперь можно приконектить главное окно так: QObject::connect(obj, SIGNAL(signal), mainWindow, SLOT(slot));
>>1418017 Его главное окно может спокойно выполнять роль контроллера и вьюхи. И мы даже не знаем что там за модель и есть ли она. Но ведь главное это паттернодрочинг и оверинжинирнутое решение для лаба1, да? Чувак только учится, сделает криво раз, второй раз уже будет лучше.
>>1418471 Даже стажёр ответит, чисто из предположений, что эта штука похожа на лямбду (на самом деле это она и есть) и что тут используются диграфы. На диграфах синьоры начнут кукарекать, что их удалили в 17 плюсах, но это не так
>>1413564 (OP) Бля посоны, не бейте лучше обоссыте плешь может волос отрастет обратно.
Как запустить программу из мейна? Я имею ввиду вот у меня есть класс в котором все реализовано, допустим игра угадай загаданную цифру от одного до охуллиона. Как этот класс запустить из мейна и зациклить его на выполнение до успеха, ну или до усрачки, без goto? И как его потом вырбить нахуй? А то у меня только с костылями все выходит. Я заглядывал в другие сорсы и видел там что то в духе int main { class vasyan; vasyan.Run(); return 0; } Но когда я делаю то же самое у меня компиятор ругается и все валится. ЧЯДНТ
Если что, дописывать и улучшать чужые сорсы я умею.
>язык который чуть ли не лично гитлера в попку целовал переживет свою осовремененную реинкарнацию Хладен сказ боярин
И не надо мне тут про то какой С чоткий. Он устарел морально, как телефоны алкатель. Вроде работает и можно даже обойтись без главного правила связи громче крикнешь дальше услышат но использовать его сейчас, когда даже ссаный китаефон с цианом за 20 баксов может сделать все то же самое но намного лучше? Нахуя?
>>1418522 Да ты траллиш. Таких тупых овощей не бывает.
Самый последний пхпшник знает про оператор условия и цикла. Но если вдруг что-то мешает тебе погуглить и прочитать про это самостоятельно, можешь начать погружение в удивительный мир программирования отсюда: https://ru.cppreference.com/w/cpp/language/while
извини, что ссылка на русский цппреференс, но ты своим постом себя несколько дискредитировал
>>1418586 Это я и так знаю. А что делать если я какую то более серезную программу уровня "ебашишь мышкой по квадратикам и они меняют цвет" сделать захочу? Или тот же тетрис ебучий ссука. Тоже цикл вставлять? Я что то упускаю.
>>1418592 Так-то во всяких там qt тоже есть цикл – цикл сообщений. Только он заранее написан и спрятан. Из него вызывается всякая хуйня при разных условиях. Тебе остается только переопределить какой-нибудь OnClick, и при нажатии вызовется не пустая затычка, а твой говнокод.
В принципе, такую систему легко изготовить самому. Например делаешь класс с виртуальным методом OnUpdate и обычным методом Run, внутри run тот самый бесконечный while(1) {OnUpdate();} Потом тупо наследуешь класс от него, переопределяешь ОnUрdate. В мейне как раз и остается только создание этого класса и c.Run();
>>1418735 >А как же там тогда Многопоточно, иногда даже неблокирующе - если не совсем дебилы вроде тебя делали. А в тридемаксах еще и в шейдеры дохуя вынесено, а исполнение на гпу - это просто мечта шизофреника вроде меня
>>1418738 Хуета какая то выходит тогда. Вот смотрю я на исходники блендера (он написан на С но да похуй примерно понятно что там происходит) и я вижу где он там создает треды , вижу какие то костылики чтобы создать не гомогенный мемпул. Но я блять нигде не вижу никакого цикла который бы крутился хоть в одном треде для того чтобы блендер работал.
>>1418744 >нигде не вижу никакого цикла который бы крутился хоть в одном треде Потому что их там нет, капитан. >>1418747 >эти нелепые оправдания Ебать ты омеган.
>>1418738 Нету никакого другого способа чтобы бесконечно выполнять программу кроме как while(true). Просто это иногда может быть спрятано в библиотеках или еще в каких-то механизмах.
>>1418759 Вот у тебя есть main(){}. Все что делает ОС - последовательно выполняет операции, которые ты в мейне написал. Всё. Ты можешь создать дополнительный процесс. Но он также будет выполняться до тех пор, пока не дойдет до конца программы.
>>1418763 >делает ОС >выполняет операции, которые ты в мейне написал А может и толстота. Хотя нет, скорее всего просто школьник. То есть хуже червя-пидора и тупее табуретки.
>>1418766 Я сторонний человек в вашем споре, но скажу, что любая программа, имеющая пользовательский интерфейс, имеет и главный цикл, в котором проверяется наличие событий типа нажатия клавиш и движения мыши. Если создается второе окно программы (открыт второй документ), то будет создан отдельный поток для него, который также будет включать в себя главный цикл для взаимодействия с пользователем. Асинхронно могут выполняться задачи, не требующие внимания пользователя вплоть до своего завершения. Но человек взаимодействует с программой всегда через главный цикл, который программой и управляет (либо несколько таких циклов в случае нескольких окон).
>>1418779 >любая программа, имеющая пользовательский интерфейс, имеет и главный цикл >проверяется наличие событий типа нажатия клавиш Дурачок, ты отстал от жизни лет на 20 на 10 если мерять плюсами, хаха
>>1418780 >Продолжать или забить хуй? Забей, если ты не готов убивать всё свободное время на изучение программирования то ты и через 5 лет будешь на уровне laba1.cpp.
>>1418791 >события или сообщения Зависит от языка. > >есть такой механизм называется операционная система >И откуда появляются они? И где они хранятся? Кто их обрабатывает? Ебать дебил. И да, обилие риторических вопросов - верный признак омегана и лоха по жизни.
>>1418805 А что конкретно нужно знать из матана? У нас за весь курс конкретно матана были дифуры, интегралы, производные и пределы. Где это использовать то?
>>1418810 Что характерно - на вопрос не ответил. >>1418811 Если надо объяснять то не нужно объяснять. Жизнь научит. >>1418812 И да, добро пожаловать в МВП тред.
>>1418818 Блять я всё помню, это логически следует из моего ответа. Ты то ответишь на вопрос, который тебе уже трижды задали, или дальше будешь жопой вилять?
>>1418821 >логически следует из моего ответа Вообще-то не следует, и в большинстве случаев подобные "отличники" ничего не помнят. >я всё помню Тогда малаца, принимается. >по часу занимаюсь >каждую тему разбирал по многу часов Сам себе и ответил.
>>1418812 Я просто привык помогать по мере сил. Лучше отвитить неправильно/неточно, чем тред уплывет. >>1418801 И чего такого в новых ос, чего не было до этого?
>>1418822 В чего ты взял что тебе один и тот же человек отвечал. Может перестанешь вилять жопой и придираться к формулировкам предложений, а ответишь на вопрос? Жду момента, когда начнутся придирки к запятым и построению предложений
>>1418830 >чего такого в новых ос, чего не было до этого? Практически всё, например. Можешь сам сравнить те же ДОСы с виндой/пингвином/бздями. >>1418832 >ответишь на вопрос? Что характерно - самого вопроса так и нет.
>>1418837 >Можешь сам сравнить те же ДОСы с виндой/пингвином/бздями. Во всем ИТ идеи одни и те же, начиная с 30-х годов. Ничего кардинально нового не было придумано. Только костыли подкладывают для новой аппаратуры и для безопасности.
>>1418837 >самого вопроса так и нет >>1418841 >я ушел. Пиздец ты омежная чмоша. >>1418844 >начиная с 30-х годов Кодерок на пидорской ленте детектед. Правильно его замочили, кстати - мало что пидорас и чмо, так еще и как математик говно полное.
>>1418610 >Так-то во всяких там qt тоже есть цикл – цикл сообщений. у тебя ос замораживает поток потом по событию размораживает его а цикл сообщений сделан потому чтобы за раз обработать несколько сообщений, если такая ситуация случится у тебя программа не будет крутить постоянно while(true), это каким надо быть ебанутым чтобы так думать while(true) - это такой шаблон когда надо в цикле обработать столько сколько ты еще не знаешь надо, а по завершению обработки выйти из цикла по break (как раз это и происходит в случае обработки сообщений)
>>1418871 >у тебя программа не будет крутить постоянно while(true), это каким надо быть ебанутым чтобы так думать Но ведь так делаются все lab1.cpp с менюшками.
>>1418871 >у тебя ос замораживает поток >потом по событию размораживает его Это если ты делаешь в лупе слип или вешаешь процесс на системный таймер. Просто луп грузит одно ядро на 100%, я проверял, когда некое приближение рт системы на винде изображал. кро
>>1418872 >while(true) while(true) это не более чем идиома для обработки в цикле неизвестного количества итераций в случае с обработкой событий от gui этот цикл нужен лишь по той причине, что когда ос "пробуждает" по событию поток, может произойти еще несколько событий, + когда собственно поток работает, могут прилететь еще события, вот и нужен этот цикл
Чем можно проверить кот? Наговнокодил либу на 10к строк, напустил на неё шланг-анализатор, что-то пофиксил, теперь он говорит, что всё ок. Какие еще инструменты? (кроме написания юнит тестов вручную)
>>1418906 > в случае с обработкой событий от gui этот цикл нужен лишь по той причине, что когда ос "пробуждает" по событию поток, может произойти еще несколько событий, + когда собственно поток работает, могут прилететь еще события, вот и нужен этот цикл таким образом, если бы >когда ос "пробуждает" по событию поток, не могло бы произойти еще несколько событий и >когда собственно поток работает, не могли бы прилететь еще события т.е. если бы прилетали события только в то время, когда поток заморожен, то цикл не был бы нужен?
хуйню несешь, школьник тупой. схуяли после разморозки поток начнет новое событие обрабатывать без цикла? разморозка его состояние как-то ресетит? можешь не отвечать.
>>1418923 Если у тебя там нет функций на сотню-другую строк - то все нормально. >кроме написания юнит тестов вручную Можешь еще написать интеграционные тесты вручную
>>1418925 >эта визгливая мелкобуква Тебе даже ответили исчерпывающе, гнида - >>1418920 И не брегливо же было всерьез на этой дебилопараше отвечать, хаха.
>>1418925 у тебя в приложении может сформироваться очередь событий, требующих обработки по этому там цикл и нужен но этот цикл НЕ крутится все время работы приложения когда приложение обработало все события, то главный поток приложения засыпает, вызвав соответствую функцию операционной системы я специально стараюсь объяснить попроще, буквально на пальцах
Блядь. Прямо сейчас пишешь while(true) doSmth(). Открываешь, смотришь как загружен процессор. Сравниваешь с любым гуём, который ничем не занят. Убеждаешься, что не всё так просто, иначе не было бы понятия "энергосбережение"
>>1418975 просыпается приложение у тебя по определенному событию НО когда приложение регистрирует свои события в операционной системе, оно указывает для каждого события коллбек - код, на который операционная система передаст управление чаще всего же это оказывается общая для большинства событий гуи функция, в которой и крутится этот самый несчастный цикл обработки сообщений
>>1418980 > оно указывает для каждого события коллбек - код Тоесть после выполнения всех событий и сразу перед засыпанием все дерьмо на стеке умирает, ведь у колбека будет свой стек? Откуда берется тред для выпонения колбека?
>>1418980 > приложение регистрирует свои события в операционной системе Ты ебанутый? Нет такого механизма, чтобы зарегистрировать твои ебаные кнопочки в системе. Все делается посредством внутрянки самой библиотеки.
>>1419016 да, так и есть: целевой ос глубоко похуй на кнопочки что ей от процесса надо (когда он регистрирует событие в системе) дак это куда передать исполнение касательно гуи тут будет некая разница в том, нативный ли гуй либо приложение (либо фреймвор) сам его целиком отрисовывает но суть не меняется от этого
>>1418989 ну ебать, стек и стек в стеке же нет никакой магии, просто кусок памяти в виртуальном пространтсве процесса более того, у процесса может быть аж до 8 системных стеков, между которыми процесс будет переключатся туда-сюда самое простое, это когда процесс переключается с кернелла (свой стек) на юзерспейс(другой стек), но это вообще простейшие вещи которые должен знать любой крестоблядок гуевое приложение с активным вводом-выводом вообще большую часть времени выполняется в кернелле это приложения с вычислительной нагрузкой могут в юзерспейсе сидеть большую часть своего времени
а вообще эти системы построенные на обработке событий, позволяют рализовывать отзывчивые gui-приложения, но которые при этом выполняют либо интенсивные фоновые вычисления либо интенсивный ввод-вывод при этом делая это все это в однопоточном режиме вообще, этим и занимались кодеры на дельфи, на winapi, на mfc, на qt десятки лет уже, все работало
забавное, что текущее поколение кодеров вообще, похоже, не понимает этого для них типа если у тебя прога с гуем и надо что-то длительно выполнять, то, бля, обязательно надо начать костылить многопоточку
>>1418953 понятное дело что он засыпает и не крутится постоянно. но если бы там не было цикла, то что бы он делал, если бы проснулся во второй раз? он бы проснулся и завершился.
>>1419050 на уровне прикладного программиста, использующего некий гуй-фреймворк это именно так и выглядит, я согласен если же попытаться объяснить как это работает уровнем чуть ниже, то настолько простое объяснение не прокатит
>>1419070 Высокий уровень на то и высокий, что независим от низкого в общем случае. Низкий уровень не добавляет ничего принципиально иного. Процессы - это процессы, они просто запущены и делают код, пока он есть; ОС только менеджит их запуски, ни в какие внутренние события она не лезет. Клики мышью - это клики мышью, они не триггярят сами по себе никакие события.
>>1419040 если вкратце, когда ос по событию пробуждает твой процесс, коллбек же дожен перейти на какой то код? да? дак вот, переходит то он на функцию содержащую цикл обработки сообщений в winapi эту функцию чаще всего называют WndProc те "бесконечный" цикл не будет на самом деле бесконечным эта функция будет много-много раз выполняться, возможно за раз будет обрабатывать несколько сообщений, именно для этого в ней и нужен цикл
>>1419079 Какое еще событие пробуждает процесс? Ты можешь ответить? ОС не будет шурудить твой код, чтобы выбрать нужный коллбек. Коллбеки у тебя в либе/приложухе хранятся и она как раз вызывает их, а не ОС.
>>1419081 бля, чувак, это таки не так какой бы высокоуровневый фреймворк ты не пользовал, в самом низу будет парочка системных событий потому что только ос управляет потоками: останавливает и пробуждает а когда поток пробуждет ос же надо знать с какой точки кода начать его выполнение, да? дак вот эта точка входа указывается коллбеком при регистрации события в качестве точки входа часто как раз оказывается фунция, содержащая главный цикл обработки сообщений, но не всегда
>>1419092 >указывается коллбеком при регистрации события Какой коллбек? Какое события? Кто чего регистрирует? У тебя какая-то магия вместо объяснения.
При условном sleep ОС забирает выполнение у процесса. По завершению слипа процесс продолжает выполняться с того же места. Все, нет никаких событий. while (true) { вызываешь обработку гуя; sleep(100); }
>>1419098 Поток в итоге 99.9% времени тупо спит и нихуя не делает. Найс производительность, вам бы в джава тред съебать уебкам, да даже там вас засмеют. Про асинхронность никто не слышал. Сразу видно лето, вкатывальщики пол треда уже засрали.
>>1418763 >Вот у тебя есть main(){}. Все что делает ОС - последовательно выполняет операции, которые ты в мейне написал. Всё. Ты серьезно так считаешь? Щитпостинг 80 уровня, просто пиздец.
>>1419114 >Ты так и не ответил какие такие события заставляют процесс проснуться. в зависимости от того, как отрисовывает контроллы gui-фреймворк, который ты используешь под виндой, к примеру он может использовать нативные контроллы - тогда ос будет просыпать твой поток, "отловив", к примеру, клик по конкретной кнопке, и "пробудив" поток, отошлет ему именно это сообщение или, если фреймворк сам отрисовывает свои контроллы, то ос будет пробуждать поток просто по наиболее "общему" событию, типа такого "на полотне" приложения что-то случилось, вот тебе тип клика (или нажатие клавиши) и его координаты, а приложение уже дальше само решает что делать и само отрисовывает
>>1419304 алсо, в случае нативного gui-фреймворка, в ядре будет зарегистрировано целая куча сообщений от приложения а в случае когда фреймворк сам отрисовывает - только минимум сообщений
Ебанутся, я думал меня уже в говно макнули ответом на вопрос как программу запустить на объектах а тут срачельник устроили по этому поводу что цеклы не цеклы и вообще иди нахуй.
Такое чувство что тут только пхписты с жабаебами в основном сидят. Пойду на стаковерфло спрашивать.
>>1419257 >На Русском давай Also, why u hate some English sources, but don't write code on Cyrillic yet ? Maybe u must use all authentic in this case (software/standards/etc) ? Nope, u cant' ? Well, shut up.
>>1419304 >тогда ос будет просыпать твой поток, "отловив", к примеру, клик по конкретной кнопке, и "пробудив" поток, отошлет ему именно это сообщение Приведи, пожалуйста, примерный кусок кода, которым реализуется регистрация нажатия кнопки гуи в ОС.
Парни, не серчайте, я сисадмин, с гуем работал очень мало (хотя и пишу много скриптов). Хочу приблуду сделать, которой можно мониторами рулить, наподобие arandr. Я так понял, самое простое - это взять Qt и запилить на нём. Но у меня две проблемы: 1. Виджеты какие-то не такие (мне тупо надо несколько прямоугольников нарисовать, где их брать?) 2. Qt Creator очень часто крашится на моей системе (но это ожидаемо). Можно как-то без него обойтись, ну типа как с командной строки GCC компилировать?
>>1419410 Не, надо нативным и без зависимостей. Я питон с горем пополам знаю, можно было бы PyQt попробовать, но это полагаться на питон и опять же мне всего-то виджет нужный взять
>>1419395 Можно на winsock сделоть >>1419375 Приятно наверное всякую такую мемную чушь в голове держать, покрыть нечем, извини. >A quick Google search Я общался с гуглом несколько часов на нескольких языках. Мне нужно наипростейшее решение, без мультипотоков, без подключения хуевой горы библиотек от нехуй делоть, без обработки сообщений как там автору заблагорассудилось, тупо пример эхо запроса с выводом, все. Ну и для шинды офк. >безанглийскаваникуда Ну так ты уже захуячил все нарусском ? Так неси показывай ! >с таким уровнем языка Уровнем средней руки америкоса что ле ? Коли мой уровень так низок, подсоби, укажи на недостатки.
>>1419468 Твои посты это wordbyword перевод кальки, которую ты придумал на русском. Не знаю что такое уровень средней руки америкоса, но это максимум уровень В1-В2 и способность воспринимать большую часть неформальной речи. Я не могу даже представить себе как ты путая предлоги способен читать тех. документацию по языку, да ещё и наезжать с таким уровнем мол учите английский быдло еп))
>>1419478 >Твои посты это wordbyword Кхм, я все же ожидал более предметной критики. Пример, цитаты, с референсом к конкретным синтакисческим/семантическим правилам. И я и средний американец мыслят и зачастую говорят так как оно появляется у них в голове, не стихами и прозой. Я не заявляю о владении языком на fluent уровне илитипа того, но и найти здесь (в тройке достаточно простых предложений без времени) что - то изрядно безграмотного немогу. >Не знаю что такое уровень средней руки америкоса >способность воспринимать большую часть неформальной речи
>Я не могу даже представить себе >представить > способен читать Кхм, во - первых меньше фантазируй, а то вот это >наезжать с таким уровнем мол учите английский быдло еп)) как раз - таки выдумака на русском. Во - вторых, чтение, письмо и прочее немного разные вещи, уж читать при хорошем сл. запасе, и уж тем более если тех. документация из сферы которой ты занимаешься много способностей не надо. Вот 16 времен юзать в хвост и гиву, да. В прочем, ты меня уже утомил, можешь пойти нахой. >>1419480 Может быть, гляну, пасиба.
>>1419484 Да кстати, насчет >наезжать с таким уровнем мол учите английский быдло еп)) Не ты ли это осуществил, а ? >с таким уровнем языка Как бы намекая вот у меня то он вот такой, не то что у тебя. А зачем я это вообще написал, опять же придумав >кукарекают про безанглийскаваникуда? ну так чтобы показать им тут всем что > учите английский быдло еп
мимо крокодил Как правильно подключать С библиотеки при общем использовании крестов? Подключаю хеадер, добавляю главный исходник библиотеки и ставлю флаги на языки, но линкер выдаёт кучу помоев.
>>1419535 Что за главный исходник библиотеки? Тебе надо либо все сурсы подключить в проекте, либо указать в линкере на .lib. При этом в additional include directories нужно путь ко всем хедерам указать. Возможно еще нужно в extern "C" { } обернуть инклюд.
>>1419560 Пробовал все включать и с порядком разным, сейчас пробую скомпилить отдельно, но линкер всё равно ругается. Если конкретно, то https://github.com/astrand/xclip Через мейк собирается, но его понять не могу пока. >>1419568 Нет, проблема в другом.
Сейчас ругается и не видит XrmInitialize и смежные. man XrmInitialize говорит, что лежит оно в <X11/Xresource.h>, но при подключении никакого эффекта.
Ананасы, слышал в последних версия языка добавили замену использования __func__ __line__ и прочих переменных, но как она называется. Гугол выдаёт говно старое.
Обновил qtCreator и теперь он показывает вот эту F1 при наводке на что угодно. Как отключить? Просто место занимает и глаз мозолит. Уже даже F1 разбиндил, и всё-равно.
>>1420008 bind есть, return есть, последовательность функций сохраняется и потом по вызову return(ну у меня это run()) вычисляется значение. Или ты к тому, что функции нечистые, cout используется и тд?
>>1420014 Аа, ну ладно тогда. А то я читал про монады, https://ru.wikipedia.org/wiki/Монада_(программирование) там был пример на джаве и типа сделал на плюсах аналог, но там прямо сразу вычисляется значение, короче вычисление нихуя не отложенное получается, монада же должна именно последовательность вычислений хранить, а не тупо последний результат. Это тупо в общем.
>>1419753 Так подсказки то не так плохи - они показывает родное имя типа хотя бы, а вот зачем добавили уродскую F1 я так и не понял. На форуме написали, мол это Clang Code Model, я пробовал отключать-включать модули, и никаким образом вот эту всплывающую подсказку так и не смог найти, там уже просто ничего не работает, но F1 оно всё-равно рисует (в тех местах, где всё ещё может вывести подсказку).
Поставил 4.7.2 - и всё заработало как надо. Кошмар просто, поехавшие, только посмотри насколько так минималистичнее.
>>1420000 Я давно на этих ваших плюсах не программировал, но у вас что, уже ссылки на функции нельзя делать? На хуя городить такой злоебучий огород, когда можно просто передавать ссылку на функцию туда, где тебе НУЖНА ЕБАНАЯ ФУНКЦИЯ?
>>1420180 Никогда не пробовал main.cpp инклюдить, не знаю. >>1420182 Лучше не надо. Пиши в заголовочнике объявление классов и функций, в цппшнике определение их, а в main инклюдь заголовочник.
>>1420183 Я только сейчас понял что я написал непонятно. Не метод определен в main, а объект, но сделал как вы сказали. Теперь даже ошибку не могу понять
>>1420215 Ты какой-то хуйней занимаешся. Если хочешь продолжать то в Chat.cpp объяви Chat(Класс) w с модификатором extern Но такого быть не должно, тебе стоит серьезно задуматься над своим поведением.
>>1420225 Опишу че хочу сделать, все равно делать нехуй. Хочу вывести сообщение из tcpsocket в plaintext. Забиндил сигнал ReadyToRead или как он там[/spoiler на свой слот, в котором вызываю метод объекта Звучит как то странно, поэтому, пацаны, не бейте, лучше обоссыте
>>1420227 Коментируй все кроме пустой main(). Проверяй что компилируется. Потом постепенно раскомментируй стараясь на каждом шаге добавлять как можно меньше строк и компилируй. Ошибки исправляй.
>>1420229 Не понял. Зачем? Самая главная проблема в том, что объект не виден в других файлах, кроме того в котором он объявлен. Тут всего одна ошибка о неопределенном идентификаторе выскакивает. Десяток других при попытке исправить одну.
В gcc/mingw есть ключи -mavx2 -msse4 и прочее. Если прописать mavx/mavx2, то быстродействие только падает раза в полтора. Это совсем бесполезная штука, верно?
Как эти расширения использовать, посоветуйте книжку/статью, чтобы цельное представление составить? Как оно с многопоточностью сочетатется, например, есть ли какая-то задержа-загрузка перед первым использованием инструкции из этих расширений и всё в таком роде. Ассемблерные вставки более-менее умею, но в gcc они довольно уродские, мягко говоря. Ещё увидел в примерах x86intrin.h, который выглядит человечнее.
>>1420422 Погугли статьи про векторизацию и автовекторизацию. На счет книг хз какие есть. Тут по практическому использованию интринсиков есть: https://www.codeproject.com/Articles/874396/Crunching-Numbers-with-AVX-and-AVX Накладные расходы могут возникать при загрузке/выгрузке данных из регистров, при использовании каких-то хитрых манипуляций внутри регистров. Но при автовекторизации это по идеи сам компилятор должен оценивать. Плюс сами элементы в памяти крайне важно как расположены. Лучше всего если это линейных массив элементов без пропусков, и выровненный в памяти (aligned_alloc). Алсо, векторизацию можно комбинировать с распараллеливанием, эти векторные модули на каждом ядре процессора есть.
Иногда бывает так, что нужно сделать массив типа какой-то структуры (пикрелейтед). Обычное такое нужно для описания данных для какого-то состояния. Нужные данные получаю просто по индексу (кастя, например, STATE1 к инту). Так вот, такое мне кажется не очень хорошим решением. Можно ли это всё как-то сделать иначе?
Как вариант добавить в структуру поле типа этого самого enum class и когда нужно получить данные, то через какой-нибудь std::find_if нахожу нужное. Можно с помощью map или unordered_map, но это кажется перебором, особенно если этих состояний несколько штук.
>>1420479 > Нихера не понятно, что ты хочешь делать? Строчку 20 переделать на что-то другое. Два вариант я привёл в прошлом посте.
> Какая проблема при этом? Проблема в том, что данные в массиве должны всегда идти в строгом порядке (как указано в перечислении). Легко запутаться в этом и, также, когда решу по каким-то причинам поменять порядок в перечислении, я должен буду менять данные и в массиве.
>>1420484 > Проблема в том, что данные в массиве должны всегда идти в строгом порядке (как указано в перечислении). std::map<State, std::vector<MyStruct>> > Легко запутаться в этом и, также, когда решу по каким-то причинам поменять порядок в перечислении, я должен буду менять данные и в массиве. За смену порядка в перечислении обычно пиздят до потери сознания
При объявлении MyStruct yoba {}, как я понял, компилятор делает memset(&yoba, 0, sizeof(MySturct)). Я могу как-нибудь перегрузить эти скобочки, чтобы вместо мемсета там была моя имплементация?
>>1420544 Ну, например, в конструкторе (класса std) происходит какая-нибудь аллокация, а ты своим мемсетом затрёшь переменные которые отвечают за размер памяти, указатель и тд.
>>1420599 Типа компилятор неявно её использует даже без инклюдов и всего, если запустить с флагом -nostdlb тогда не будет, может ещё какие-то флаги есть, чтобы конкретную функцию выключить из линковки, но я хз.
>>1420645 Нет, ты в этой строке создаешь временную переменную, которая сразу же удаляется. Конструктор базового класса будет вызван до входа в тело конструктора. Если не веришь, посмотри ассемблерный вывод твоего говна.
>>1420441 За статью спасибо, то что нужно, про логику названий, про всё это, а остальное можно вручную проверять и выяснять в конце-концов, что и как быстрее работает. >aligned_alloc Хм, его нет. Даже с -std=c++17. А _aligned_malloc треует своего собственного _aligned_free, там прям то же самое, что я уже почти собрался сделать из обычного malloc-а. >эти векторные модули на каждом ядре процессора есть 10/10, зачем я вообще эту видеокарту мучил, которая хоть и быстрее, но меньше чем охулиард штук считать на ней мало смысла.
>>1420663 >Не верю Твое право, но ассемблер и стандарт не обманывают: https://gcc.godbolt.org/z/8knfmF Если тебя этот код не убедил, то добавь в базовый класс деструктор и сразу все станет понятно. Ну и да, у тебя очень опасный код: сначала создается объект базового класса веришь ты или нет, а потом ты с помощью SZM все внутренности нахер затираешь. И если в базовом классе происходит какая-либо аллокация, то можно таким образом утечку получить.
Помогите нубу. Пишу бинарное дерево поиска. У вершины есть ключ и указатели на потомков. Дерево строится динамически, понятное дело. Дерево поддерживает поиска потомка по ключу: Tree& find(K key). Далее, хочу написать метод Tree& pop(Tree& node), который выкидывает node из дерева, ставит ему потомков null и возвращает ссылку на него. У меня такое ощущение, что, если я просто сделаю return node, то при запуске чего-то типа t.insert(узел с ключом i); t.pop(t.find(i)); у меня произойдёт утечка памяти. Я прав? Как это обойти? Как это вообще работает?
>>1421014 >>1420500 Боже, ебанутый. Очевидно, если компилятор по дефолту генерирует memset внутри конструктора, то нет там никаких аллокаций и я спокойно могу пихать свою имплементацию. У тебя с логикой проблемы? Почему я должен слушать Васянов с двача, если я все перепроверил по 100 раз и на стеке аналогичное решение? Или ты тот самый тролль который поселился в треде с начала лета и скорее всего ебаный школьник и всех шлет нахуй?
>>1421020 Сука, что ты несёшь, еб твою мать. Какой нахуй memset внутри конструктора, ебливая ты зараза. > я все перепроверил по 100 раз Проверялка не выросла видимо. https://www.viva64.com/ru/examples/v603/
Ты ничтожество, бесполезная биомасса, у тебя никогда ничего не получится, лучше сразу иди в грузчики, не порти чужой говнокод
>>1421039 Как же приятно смотреть на то, как бомбанутый школьник мне 2 день с порванной жопой и пеной у рта пытается доказать что-то, хотя я уже давным давно написал код, который полностью правильно работает и удовлетворяет мои требования. Eye candy.
Как подружить stl с int[4]? Второй блок не компилируется из-за ошибках в шаблонах, если расскомментировать sort. Не вижу никаких концептуальных проблем, структура аналогичного содержания хорошо себя чувствует.
Всем времени суток. Пытаюсь разобраться с winsock, написал простейшую прогу для скачивания страницы, но притэтом она ИСКАЖАЕТ некоторые символы. Это так и задумано тли баг? Как исправить?
>>1422031 Отдельные символы заменяются мусором, каждый раз разные. Почти весь текст html-странрцы загружается верно кроме них. Мусор это нечитаемые символы которые отображаются в браузере как <?>b32<?>. b32 - может быть любое случайное число в hex, необязательно это. <?> это чёрный ромб с вопросительным знаком в браузере, на мэйлаче я вообще хз, будет ли он отображаться, скорее всего нет.
Сап двач. Есть одна программа. Она на каком то моменте просто перестает что либо выводить в консоль, даже значения переменных над которыми выполняются действия. Программа не может работать настолько долго. Навереное попала в бесконечный цикл. Можно ли средствами visual studio понять в каком месте зарылось колесо сансары?
>>1422137 Я понял в чем ошибка. Как сбросить счетчик строк в объекте класса ofstream. Мне нужно чтобы в какой то момент объект начал считывать файлы с первой строки, а не с предыдущей
Какая функция в Qt каждый раз при обращении возвращает рандомное число? Пробовал QRandomGenerator::global()->bounded() и QRandomGenerator::system()->bounded(), одно и то же, генерируется один раз на запуск программы.
>>1422158 Я насчет qt хз. C++ вроде не имеет хорошего рандомизатора, поэтому я бы на твоем месте взял псевдослучайные данные из памяти или по времени нажатия на кнопку в силлисекундах
>>1422175 >always uses the facilities provided by the operating system to generate random numbers. The system facilities are considered to be cryptographically safe on at least the following operating systems: Apple OSes (Darwin), BSDs, Linux, Windows. That may also be the case on other operating systems.
>>1422173 А как ограничить? Мне надо bounded(). Попробовал написать друг за дружкой QRandomGenerator::global()->seed(QDateTime::currentMSecsSinceEpoch()); int a = QRandomGenerator::global()->bounded(360); но стало выбивать ошибку при компиляции.
Можно ли посмотреть значение переменной в момент выполнения программы без breakpoint'ов? Вот программа выполняется, я ее на паузу ставлю и смотрю что нужно. Такое возможно?
Вот выполняется у меня программа. Почему она не грузит ни один параметр компа на 100%? Больше всего цп. Всего 70, 30 из которых моя программа. Приоритер высокий. Реального времени боюсь ставить, а то потом комп зависнет.
>>1422219 > Break all? Она точно ничего не сломает?)) А что она по-твоему может сломать? >>1422198 В студии можно бряк поставить, который вместо остановки будет в консоль выводить то, что тебе нужно. Или вручную чем-то вроде printf >>1422201 Выше уже это обсуждали, в сраче про qt
>>1422222 А программа многопоточная? У меня виснет на отличненько, например. И занять вообще всю память тоже можно без особых проблем, тогда остальные программы сходят с ума, окна перестают корректно отображать и всё в таком роде.
>>1422230 > А программа многопоточная? Нет, если только компилятор ничего за меня не сделал. НО если в диспетчере задач поставить сходство на одно ядро то оно начинает нагружаться по максимуму (обычно нет), а остальные чуть меньше грузит > И занять вообще всю память 2 мб весит.
>>1422234 >Нет Ну вот потому и не лагает. Могу предположить, что без "сходства" планировщик поочерёдно перекидывает её на разные ядра, и это выглядит как неполная загрузка нескольких ядер.
Нужна работа с пикчами. Выбрал opencv. Обрезка, уменьшение, обесцвечивание, контраст - запилил. Теперь нужно либо сравнить 2 пикчи, либо узнать, что одна из них полностью белая/пустая пикрил. Хотел сначала в сторону гистограммы смотреть, но эта оказалась весьма непонятная часть. Может кто что посоветовать? Или курс "запили то же самое без абстракций и либ".
>>1422313 >|| Это логическое ИЛИ. && это И. Попробуй if (defined(IDA_SDK_VERSION) || PIN_BUILD_NUMBER >= 76991) если я правильно понял то, что тебе требуется.
>>1422550 >Или курс "запили то же самое без абстракций и либ" Вот это. Белый фон (и любой другой однотонный) делается очень просто, схожесть тоже не слишком сложно, если картинки совмещены. Если же там вращения, светофильтры, смещения и отзеркаливания, то можно сразу пристрелиться. Не знаю зачем тебе opencv для того что ты перечислил, он для задач посерьёзнее вроде бы - поиск линий/кругов на картинке и всё в таком роде.
Аноны, как писать 3d-графику? Решил научиться использовать SDL2. С 2d все ясно, а как с 3d? Там есть определенные классы и методы для этого, или же мне надо научиться работать с проекциями и прочей математической магией?
>>1422645 >пытался осилить bmp/png А, да, форматы долбанутые, эн/декодер вручную конечно не стоит писать, если ты в самом деле пытался это сделать. Даже в простейшем bmp рутина унылая с разными битовыми форматами. Когда-то давно для загрузки файлов (текстур для opengl) я DevIL/OpenIL использовал и он нормально работал, сейчас под виндой вовсе через gdi+ загружаю, а это совсем дно. Я имел ввиду, если тебе нужно массив пикселей обрабатывать на уровне поиска фона/сравнения совмещённых картинок, то вряд ли тут нужны библиотеки для обработки массивов пикселей. А форматы очень сложные, это немного другая область и нет никакого смысла их писать, для них совершенно точно почти на 100% нужна либа - форматы то одни на всех, какой-то специфический вряд ли потребуется, в отличие от специфической обработки пикселей.
>>1422635 >или же мне надо научиться работать с проекциями и прочей математической магией? Вот это. Не знаю насчёт sdl, но в glu были наглядные человеческие функции, по типу разместить камеру в таких-то координатах, с таким-то направлением и таким-то углом обзора. То есть если нужен схематичный вид в виде линий и точек, то можно и не вникать - но если будешь писать шейдеры с отражениями и тени, отсекать невидимые объекты с помощью объёмных деревьев, делать какие-то костные анимации, то тут совсем никак без проекций и другой линейной алгебры.
>>1422581 >>1422628 Спасибо огромное! Вы оба правы. Всё скомпилилось!!! п.с. какое-же всё-таки дерьмецо эта Студия - никакой совместимости! Разные СДК, компили, заголовки... Да просто держать три версии студий (13, 15 и 17) чтобы компилить "почти без проблем" это более сотни гигов диска надо!
Аноны, есть класс QWidget в Qt, и внутри него есть всякие функции и глобальные переменные. Я хочу некоторые функции, типа открытия файлов, вынести за пределы кувиджета в отдельные хедеры, но эти функции привязаны к некоторым глобальным переменным. Например, открытие файла привязано к названию файла, ширине файла, длине файла (это картинка), глобальным мапам с пикселями. Что делать, как можно решить проблему? Перечислять все глобальные переменные в параметрах функции очень не хочется.
>>1422661 Один знакомый наоборот клялся, что это как семки щёлкать :c
Собственно, перешёл за пару часов на magick++ и реализовал прошлое и новое, но вновь уткнулся в стену, ибо встал вопрос о поиске по темплейту, чего API не предусматривает.
>>1422849 Угу, именно поэтому во всём мире полтора видеоэнкодера vp9, да и к изображениям по три с половиной, который скорее всего копируют какую-нибудь открытую библиотеку в большинстве своём. Там же в коде все жадные алгоритмы сжатия, двумерные фурье-преобразования, особенности человеческого зрения и так далее. Это нужно быть очень крутым спецом (и иметь кучу информации), чтобы написать это на достойном уровне или ещё большей занудой, чтобы вычитывать спецификации/документации и ремейкать то же самое в своём коде.
>>1422859 Ну, благо такие люди есть и пишутся новые кодеры для какого-нибудь AV1. >Что такое поиск по темплейту? Поиск по шаблону, но обошёл это наведением курсора самостоятельно.
Бтв, сырой проект закончен, без кроссплатформенности и с уймой костылей.
>>1422963 > , откуда там открытие файлов? У меня программа, которая является экземпляром класса QWidget. Функцию открытия файла я сам писал. Но так как я ее часто использую при создании следующих программ, я решил, что проще будет вынести ее в отдельный файл и подсоединять потом, когда понадобится.
Вместо шапки - https://github.com/sosachbot/cppthreadhat/wiki
Ответы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/