>>2345665 С даблом там точно так же будет иногда выпадать, просто гораздо реже. На флоатах хорошо видно, что алгоритм не очень корректно с точностью обходится.
>>2345656 У меня IDE дает ошибки компиляции в строке 68-71 и 74. complex и norm без аргументов
auto const a = std::complex{dist(gen), dist(gen)}; auto const b = std::complex{dist(gen), dist(gen)}; auto const c = std::complex{dist(gen), dist(gen)}; for(auto const x : CubicEquation<float>::solve(std::array{a, b, c})) { auto const sum = x x x + a x x + b * x + c; auto const d2 = std::norm(sum);
>>2345672 В ВУЗе на втором курсе у нас есть предмет по Системной Разработке но преподают джаву и поэтому хочу сам найти себе учебник по операционным системам. Нашел по мультиядерности но это для мне рано. Просто изучить процессы мультипоточность, память и всякое такое.
>>2345673 а, ты студентик тогда совет единственно верный: НЕ учи системное программирование под винду если даже и решил системщиком заделаться то учи сразу линукс а еще лучше изучай явку
>>2345675 >сразу линукс Как будто линукс это более продвинутая система. Она бесплатная - в этом я вижу единственный плюс. Ну а значит разработка на ней для тех кто готов жертвовать функционалом ради копеек.
>>2345712 Windows - операционная система, среда для запуска приложений, оставляющая тебя на едине с самим собой и своими приложениями. Linux - куча поломанных костылей, говорящих тебе: "чини нас, бесконечно".
Итого: Линукс это РАБота, от тебя не требуется самостоятельности, только делать что "говорят". Винда же наоборот, ничем не обязыкает, ты предоставлен сам себе. Отсюда проистекает разница. Ничтожества без личности любят линукс, т.к. за ним удобно прятаться, ну как рабы прячутся за своим хозяином. А винда наоборот, оставляет тебя одного самого перед собой, так что винду любят полноценные талантливые люди, у которых есть свои цели, которым они и следуют. Таким людяв кнешние чужие приказы только мешаю, отвлекая от своих целей.
>>2345695 Boost spirit например. Жопаболь от волшебного сочетания функциональных ошибок не соответствия типов аля окамл + крестовых простыней гарантирована, хотя бы на первых порах.
>>2345770 Неприятно? Линукс это как приусадебное хозяйство (огород) - штука, обеспечикающая бесконечной работой. Такие вещи любят никчемные люди, вроде выживших из ума стариков, которые изжили своё, но тем не менее, как любой человек. не могут пребывать в бездействии, вот и обожают ковыряться в огородах, обеспечивающих их работой. Когда самому делать нечего, только и остается, что подчиняться "кому-то", быть рабом в данном случае огорода. Рабство как оно есть, слетствие отсутствия самостоятельности, собственной личности и жизни.
Свободный же человек - самостоятелен, сам рулит своей жизнью куда ему надо, поэтому ему не нужны "дилеры обеспечивающие работой". Не нужна свободному человеку чужая работа, у него есть свои занятия. Это суть винды - свобода для свободных людей, которую так ненавидят рабы, ведь винда оставляет раба наедине со своей ничтожностью. Рабу в винде просто нечего делать, у ничтожества нет его собственных целей (разрабатывать какой-то свой софт), а значит и занятий своих нет, только чужие, и тут линукс для малолетних ничтожеств так же хорош как огород для престарелых ничтожеств, избавляя от необходимости иметь собственные цели и делать собственные выборы, давая уже готовую работу.
>>2345759 >>2345782 >талантливые люди, у которых есть свои цели, которым они и следуют. двачую у меня есть цель. Хочу использовать её для того чтобы пользоваться тредами.
вкатываюсь в айти. с++ норм или лучше другой язык для вката выбрать. посмотрел вакансии. для джунов не много и зп не очень. что думаете по этому поводу?
>>2345656 Если кому интересно, то я починил. Логика выбора корня квадратного уравнения писалась под действительные коэффициенты. Если выбрать корень, который по модулю длиннее, то всё получается шикарно.
>>2346636 Он божественнен как минимум статической типизацией. Это уже выносит его на миллиард километров выше питона и пыхи. Но среди именно статических языков - имхо далеко не самый крутой. Не один и не два статических языка круче крестов (среди которых даже внезапно есть сишка). Но с удовольствием пообсуждаю эту тему.
>>2346794 >Не один и не два статических языка круче крестов (среди которых даже внезапно есть сишка) А можешь подробнее про такие языки рассказать? Я особо не знаю, какие яп есть, а это звучит интересно. другойанона
>>2346888 Владельцы устройств на IOS и Android ссут тебе в еблет и передают привет. К ним присоединяются, водители BMW, Mercedes и Tesla, да и в общем-то все, у кого есть деньги на прогресс, IoT и личный комфорт.
>>2345782 Си тред. Тут люди пишут SoC платформу для линукс + миллион драйверов, читают даташит на китайском без переводчика там просто нечего переводить, даташит на 100% состоит из названия и адресов регистров. Но для винды ты разве что сможешь написать драйвер для мышка-курсор-вжик-вжик, для чего-то другого винда бесполезна.. ну я понял какие у тебя хобби.
>>2346816 Если делать нехуй - managed effects, substructural types, dependent types, hott, session types etc; языки pony, agda, koka... Если программы писать - haskell, rust
>>2347005 >линукс + миллион драйверов Поэтому на линуксе нет драйверов, а они все на винде. Пиздеть - не мешки ворочать. На линуксе может и можно теоретически делать драйвера и т.д., но на практике никто не делает, все сидят и правят поломанные конфиги поломанной системы. Так же как на огороде - непаханое поле работы, потому что это огород, постоянно растут сорняки, надо полоть, червяки жрут, надо бороться, сарай разваливается, надо чинить. Вот вся суть линукса, бесконечная бессмысленная работа ради работы - пердолинг, самодроч, маструбация.
>>2347118 Если твоя моргалка светодиодами настолько убога, что требует линукс, достаточно wsl. Убогая затычка для убогих огрызков, кроме затыкания таких дыр больше ни на что не годится.
>>2346794 > реди которых даже внезапно есть сишка Хорошо, вот ты говоришь круче. В чем-то круче, в остальном не хватает. Нет классов, а значит проблемы с поддержкой большого кода. Нет конструкторов, из этого следует отсутствие смарт поинтеров. А как без динамического полиморфизма реализовать фабричный метод и стратегию? Ссылок нет. А шаблоны где, я без них не могу уже? И недавно я узнал, что даже динамических массивов нет, тупа дается тебе указатель и все. Че там с поддержкой многопотока, мьютексами и лямбдами я вообще не знаю.
>>2347183 >А как без динамического полиморфизма Ну это я думаю накостылять в сишке можно, хотя и неудобно и багоопасно. Думаю кресты в том числе и возникли, чтобы убирать эти костыли пол капот.
>>2347183 >В чем-то круче, в остальном не хватает. Чего? >Нет классов, а значит проблемы с поддержкой большого кода. Почему? >Нет конструкторов, из этого следует отсутствие смарт поинтеров. Зачем? >А как без динамического полиморфизма реализовать фабричный метод и стратегию? Зачем? >Ссылок нет. Зачем? >А шаблоны где, я без них не могу уже? Зачем? >даже динамических массивов нет Есть. >тупа дается тебе указатель и все Что такое массив по-твоему? >Че там с поддержкой многопотока, мьютексами Есть. >лямбдами я вообще не знаю Зачем?
>>2347183 А тут на самом деле вопрос не к сям, а к крестам. Ведь в крестах нет ООП (на самом деле). Почему нет? Потому что без инкапсуляции нет ООП. А где инкапсуляция в крестах? Её нет. Когда у тебя код ломается, то все твои объекты РРАЗ и протекают, и вместо объектов ты дебажишь просто оперативную память (как в сях), потому что в сиплюсплюс ты можешь переписать оперативную память произвольно в любом месте и нет ни единого человека или машины во всей вселенной, кто мог бы тебе это запретитьи соответственно ни в одном языке, где ты можешь так делать - нет инкапсуляции - нет ООП. И тут возникает вопрос - а где профит-то, если в языке по факту та же байда?
>>2347183 В сишке можно сделать всё, вопрос в целесообразности. Так как компилятор тупой и примитивный, все эти свистоперделки придется переносить в рантайм, а это доп расходы и доп проблемы (с безопасностью например) Вообще, щас как я понимаю тренд на компиляторно-ориентированный код, чтобы самого машинного было минимум и он был очень простой см новые фичи стандартов по типу constexpr/consteval и философию раста как такового
>>2347203 Всё так. Если тебе нужен низколевельный язык, а нужен он в двух случаях: 1. Не похуй на скорость 2. Нет доступа к управляемому окружению (драйвера, ОС, микроконтроллеры и тому подобное) То юзаешь си Во всех остальных случаях юзаешь управляемые языки - джавы, шарпы, пистоны, тысячи их. Кресты это попытка скрестить ужа с ежом - ооп с неуправляемым языком. В итоге вобрало в себя худшее от обоих миров.
>>2347203 Профит в структурировании кода, пчел. Инкапсуляция и вне ООП помогает не скатывать код в говно как в процедурных, так и в функциональных языках.
>потому что в сиплюсплюс ты можешь переписать оперативную память произвольно в любом месте и нет ни единого человека или машины во всей вселенной, кто мог бы тебе это запретить Ты это можешь сделать в любом (даже managed) языке. Но не делаешь — потому что даже со всем своим ебланским нигилизмом который вылечится как поработаешь хотя бы пол годика понимаешь что это отстрел своей же ноги.
>>2347183 >Нет классов, а значит проблемы с поддержкой большого кода. Вот тут с подливой проиграл.
>>2347243 В том, чтобы переносить всё что можно по максимуму в компайлтайм. Куда и плюсы двигаются, тащемта.
>>2347342 >Инкапсуляция и вне ООП помогает Причём тут инкапсуляция? Она в крестах как раз отсутствует, об этом и речь. >Ты это можешь сделать в любом (даже managed) языке Вопрос - какой ценой? Диких изъёбств? Ну ок, я согласен на такой расклад. Другое дело - когда ты можешь это делать постоянно, систематически, непреднамеренно, и компилятор тебе в этом никак не помешает. >который вылечится как поработаешь хотя бы пол годика Лучше не переходи на личности, иначе будешь обсираться в дальнейшем ещё сильнее, чем с этим детектом. Держись в лоне дискуссии. На остальное возражений нет.
>>2347353 Вернее дело не в изъёбствах, в ряде управляемых языков это достаточно просто делается, короче если интересно я поясню в чём разница между подходами.
Поясните за программирование под линукс. Gtkmm, из документации только официальная невменяемая, примеров и учебников нет даже на английском. Плохо ищу или не туда лезу?
>>2347373 >зачем же в си выражения существуют, с операторами всякими, если можно чисто тройками как в асме писать Причем тут асм? Очередной крестовик не может в аргументирование своей точки зрения?
>>2347373 >игры, браузеры, рантаймы managed языков, hpc Базара нет, во всех этих случаях юзаешь си, либо пишешь, что юзаешь кресты, чтобы нанять достаточно крестовиков (которых тупо больше), но заставляешь их писать си-стайл. Так многие те же геймдевы делают, потому что от протекающих абстракций крестов вреда нередко больше, чем пользы.
>>2347278 С++ используется для 2. С++ огромный яп, но почему не использовать только часть яп, которая пригодится в каком-то случае и не использовать если не нужно? Как бы, удобно, что из С есть возможность перейти к заимствованию фич из С++.
>>2347415 >>2347278 Говорить что Си круче С++ может только микрочелик который никогда тольком с Си не мучился по настоящему. Полнейший нуб или жирный Rust тролль.
>>2347384 в асме выражения пишутся не так как в си т.к. асм близок к машинному коду, си очевидно компилируется в похожие инструкции т.е. происходит некая трансформация выражений из смешанной записи, включающий в себя инфиксные, префиксные операторы, вызовы функций и т.п, в близкую к машинной я упомянул асм чтобы указать, что даже компилятор си делает некоторые преобразования кода, целью которых является облегчение работы программиста и многие вещи в спп, например шаблоны, так же упрощают жизнь программисту конечно, можно сказать что в спп эти вещи излишни, а в си идеальный баланс между абстракциями на уровне языка, но спп обрёл широчайшее применение, и появился после си, так что видно, что многие не согласны с такой позицией. просто отрицать пользу всех этих вещей. жизнь упрощают, вот "Зачем".
>>2347396 Я в команде на плюсах не работал, вполне допускаю, что использование некоторых вещей в плюсах, реализуемых лишь как побочный эффект длительного нагромождения возможностей языка, может помешать взаимодействию программистов с разным уровнем опыта, разными используемыми подходами и ТД. Пример - использование мутабельных значений во время компиляции. Но как любые плохие практики это нужно контролировать. Почему-то популярные языки (и Си в том числе) не считают ошибкой компиляции неверно (грамматически или стилистически) названный идентификатор. Зато везде есть свои стили кода. Плюс спп это выразительность и низкоуровневость, тут он пока один из лучших, как минимум потому что не много соперников (Д, Раст, все? из более менее известных). Минус - легаси и долгое развитие. В си не такого нагромождения, но и нет таких возможностей. Писать игру на си себе дороже ибо придется иногда почти повторять код (шаблоны), писать ручками многие автоматизирующиеся компилятором вещи (раии, корутины) итд. При этом судя по cppreference в си есть к.с. _Generic например. И managed императивные яп в основном довольно слабые (Шарп, жаба), а функциональные если выразительны, то неразвиты во всем кроме самих яп (хаскель, полупруверы). Лично я считаю что и си и спп надо и вполне возможно заменить (хотя бы просто дропнув легаси, задизайнив все с чистого листа, не делая нечто слишком радикальное, как проверятор боровов у раста, который видимо и мешает местами).
зачем приходить в тред по плюсам с хейтом и с >Очередной крестовик не может в аргументирование своей точки зрения? троллингом?
>>2347427 Не пробовал, хотел ибо вроде много удобного метапрограммировпния сразу, а не как статич рефлексия в спп которую ещё хуй пойми когда завезут. Но что слышал, так это: - нестабильный компилятор, стдлиба (2 шт?) - gc / nogc - тихое коммунити, из-за чего видится что и экосистема слабо развита Это из жирных причин, вроде было чето по мелочи но мб пофиксил уже.
>>2347353 >Она в крестах как раз отсутствует, об этом и речь. При том что она её не может быть в языке, маня. Это чисто концепция написания кода.
>ты можешь это делать постоянно, систематически, непреднамеренно, и компилятор тебе в этом никак не помешает. А он должен указывать тебе, как правильно структурировать код? Скорую вызвать?
>из документации только официальная невменяемая, примеров и учебников нет даже на английском. Плохо ищу или не туда лезу? Да нет, линукс он весь такой. Все в рот ебали сидеть писать тебе доки, это не микрософт с армией технических писателей.
>>2347396 Да нет, там обычно только часть плюсов выкидывают, типо исключений. А вот на всякие RAII, шаблоны и иже с ними в той же разработке браузеров дрочат настолько, что прям усираются вымазывая всё смартпоинтерами.
>>2347427 Фанател от него лет 10+ назад, когда ещё был D1 и какие-то надежды на язык. Потом авторы решили дропнуть нахуй весь софт на нём написанный и сделать D2 ради синтаксических плюшек, половина коммьюнити разбежалась. Я фанател ещё пару лет, а потом повзрослел и понял, что авторы — инфантилы ебаные, мне даже лень писать всю хуйню, которая накипела которые просто хотят ковыряться в компиляторе, а не развивать язык.
Сейчас он никому нахуй не нужен, даже в теории. RIP.
>>2347364 https://docs.gtk.org/ >>2347440 >лучше возьми Qt. Нихуя не лучше. >>2347430 >зачем приходить в тред по плюсам с хейтом и с >>Очередной крестовик не может в аргументирование своей точки зрения? >троллингом? Это не троллинг, каждый тред начинается с этого.
>>2347444 >Нихуя не лучше. Qt: — Нормальная документация (не прям заебись, но всегда up to date и +- и есть на всё); — Кроссплатформа (работает от мака и шиндовса до андроида и встроенной залупы в машинах); — Фреймворк с решениями на все случаи жизни. — Написан на плюсах и юзает современные фичи, а не куча обвязок с кривыми интерфейсами.
>>2347447 Зачем писать на кьюте, когда система гткшная и наоборот? Фрейм выбирается не из-за удобства кодера, а из-за того, как он впишется в целевую платформу. Electron: — Нормальная документация (не прям заебись, но всегда up to date и +- и есть на всё); — Кроссплатформа (работает от мака и шиндовса до андроида и встроенной залупы в машинах); — Фреймворк с решениями на все случаи жизни. — Написан на плюсах и юзает современные фичи, а не куча обвязок с кривыми интерфейсами.
>>2347451 >Фрейм выбирается не из-за удобства кодера, а из-за того, как он впишется в целевую платформу. На линуксе "нативного" тулкита всё равно не существует, поэтому кьют туда вписывается точно так же как гтк. А если это не хэлловорд — то будет даже консистентнее, ибо фреймворк, лол.
>>2347452 >Qt к санкциям присоединился, да и не тру с его лицензиями что-то. Ну ты же не собираешься коммерческий софт делать? Для линукса такое делать — быть ебланом. Тогда для тебя всё ок, и на санкции похуй, и на лицензию.
>>2347452 >Предлагаешь исходный сишный gtk? Предлагаю разграничить фронт и бек, чтобы в случае чего, можно было легко портировать на другой фрейм или вообще использовать программу без гуя.
>>2347443 вроде как zig щас хочет тоже "как сишка, только лучше" А можешь подсказать, стоит вообще щас на Д смотреть как расширение кругозора, мб на нем че-нибудь запилить, вместо плюсов не хейчу плюсы, но легаси убивает
>>2347450 чё сказать хотел? в унике курсач делал по jit x86_64 машинный код руками генерировал. Потом некст семестр легчайше сдал все лабы по всему, не имея именно в асме никакого опыта, вплоть до графических.
>>2347477 >вроде как zig щас хочет тоже "как сишка, только лучше" Ну сделать сишку но лучше — задача куда проще. Да и судя по сайту авторы там понимают что нужно делать, и заявляют что уже кросскомпиляция есть, выглядит интересно.
>А можешь подсказать, стоит вообще щас на Д смотреть как расширение кругозора Для такого можешь и посмотреть вообще на что угодно, там много крутой фигни вроде миксинов. Просто он проебал все ниши куда его можно было засунуть и теперь годен только для такого вот досуга.
>>2347505 Не совсем, во первых асм это текст. Во-вторых в асме есть макросы, перегруженные мнемоники (mov в асме это и мув в память и в регистр), идентификаторы для меток итп
Был массив объектов, который записали в память. У меня есть указатель на этот массив. Если я просто скастану нужный кусок памяти к объекту (точнее даже к структуре; никаких методов нет, просто друг за другом переменные идут), то мне анализаторы ругаются на ub. Что им не нравится и что мне делать?
>>2347537 Оно есть. Нельзя обращаться к массиву char'ов, как к объектам типа T. Это,вроде, нарушение strict aliasing rule. Я помню, что так нельзя делать, потому что есть замечательный пример когда это стреляет, но сейчас писать немного лень. Вот я хз как фиксить это
>>2347415 >Как бы, удобно, что из С есть возможность перейти к заимствованию фич Да, но там из фич есть ещё и сомнительные штуки уровня медленной компиляции. Не забываем, что интероперабельность между сями и крестами охуенная (внезапно лучше, чем между крестами и крестами), поэтому лучше, если уж нужно дорабатывать крестовый проект например - сишную часть писать на си, а не крестах (и ни в коем случае не компилировать её крестовым компайлером, хотя он это и может). Есть и другие причины держать сишный код в сях. >>2347425 Пошло нахуй от личности, говно. >>2347427 Норм язык, лучше и чище крестов, эдакие кресты-которые-сделаны-правильно. >>2347430 >Плюс спп это выразительность и низкоуровневость Выбери одно. Ооп в крестах не работает, за ооп надо идти в другие языки. В итоге имеем всё тот же низкоуровневый язык, просто возмождностей выстрелить в ногу стало неизмеримо больше. Почему так - выше говорил. Фичи фичами, а кор языка-то не работает. >Очередной крестовик не может в аргументирование своей точки зрения? Вопросы к тому, кто это написал, а не ко мне. Я не позволяю себе таких дерзостей первым. >>2347438 Пошло нахуй, говно х2. Либо разговариваешь как человек, либо теряешь право участвовать в дискуссии.
>>2347480 То что у тебя интересное представление об инкапсуляции, я уже заметил, но private и protected это не инкапсуляция, когда багованный код (заметь, в отличие от джавы - именно багованный код, а не сознательное залезание ручками) может переписать всю память. У меня простой вопрос: если у меня есть указатель на объект - этот указатель может быть испорченным? Что случится, если я начну что-то с ним делать? Программа крашнется или может случиться кое-что похуже? Вот в целом и всё, что мимокроку нужно знать по теме "инкапсуляция в с++"
>>2347527 Размер структуры (в байтах) получай через sizeof(s). Фактический размер зависит от компилятора (он делает выравнивание, а также добавляет указатели на таблицу/ы виртуальных функций и указатели на виртуальных предков) и от размера типов (int не обязательно 4). То есть надо так: s x = reinterpret_cast<s>(data + sizeof(s) * element_id);
>>2347548 >>Плюс спп это выразительность и низкоуровневость >Выбери одно. Ооп в крестах не работает, за ооп надо идти в другие языки. В итоге имеем всё тот же низкоуровневый язык, просто возмождностей выстрелить в ногу стало неизмеримо больше. Почему ооп не работает? Ну и ооп это не то, что отличает выразительные от невыразительных или низкоур от высокоур. В хаскеле нет ооп.
>>2347554 Как связано наличие уб и отсутствие инкапсуляции? А если я шнур выдерну (оп пик), в жабе все дальше работать будет? private память на диск сохранит? или в облако сразу
>>2347548 >Пошло нахуй, говно х2. Либо разговариваешь как человек, либо теряешь право участвовать в дискуссии. Жесть залётные нормисы ныне обидчивые. Привыкай зайка, тут такие правила.
>>2347514 >Не совсем, во первых асм это текст. Асм — это конкретно представление машинного кода.
>Во-вторых в асме есть макросы fasm/nasm/yasm/etc — это хайлевел ассемблеры, предназначенные конкретно для написания кода, а не отображения hex кодов в человекочитаемом виде.
>>2347596 >fasm/nasm/yasm/etc — это хайлевел ассемблеры, предназначенные конкретно для написания кода, а не отображения hex кодов в человекочитаемом виде. Да что такое ты, нахер, несёшь?
>>2347596 >Асм — это конкретно представление машинного кода.
Ассемблер - это программа. Язык ассемблера - язык разметки для последующего составления (ассемблером) исполнимого образа. На языке пишут (исходный) текст, а не код.
>>2347617 C++ - это программа. Язык C++ - язык разметки для последующего составления (ассемблером) исполнимого образа. На языке пишут (исходный) текст, а не код.
>А что же это? Язык, блять. Если прям упарываться в терминологию — семейство языков как лишп.
>Ну так, поверни и объясни, что там имелось в иду? То что ты обзываешь конкретные программы (nasm/fasm/etc) языком. Это всё равно, что назвать msvc/clang/gcc/etc С++-ом.
>>2347648 >То что ты обзываешь конкретные программы (nasm/fasm/etc) языком Я обзываю? Где?
>Язык, блять. Это assembly. А assembler? Короче уточняй, когда говоришь, что имеется в виду: программа или язык.
>Low-level_programming_language То есть ЯНУ - это все языки, которые не-ЯВУ. Т.е. это ассемблер. Т.е., ты хочешь сказать, что ассемблер - это ЯНУ, а ЯНУ - это ассемблер?
>>2347596 Assembler - переведи. И то, тогда получается я назвал ассемблером хай левел ассемблер - похуй, нет? Надо срать в тред? Я в любом случае приводил его просто как пример чего-то ниже уровнем чем си..
бтв тут звучит норм >>2347617 тут какую-то хуйню высрал типо слова поменял, молодец >>2347622
>>2347652 >Это assembly. А assembler? Сорри, ват лангвич ду ви спикинг райт нау? Мэйби рашн? У нас тут ассемблером называют всё это, и более приоритетный вариант интерпритации этого слова — язык.
>То есть ЯНУ - это все языки, которые не-ЯВУ. Т.е. это ассемблер. Т.е., ты хочешь сказать, что ассемблер - это ЯНУ, а ЯНУ - это ассемблер? Ну ты ссылку-то открой.
>>2347657 >Assembler - переведи. Пчел, переведи bear. А теперь to bear. Потом left и to left. После — продолжай, пока не поймёшь что дословно вне контекста слова переводить смысла нет.
>Надо срать в тред? Офк надо, это же суть всех срачей в интернете. Можно доебаться до пердежа и задоминировать его.
>>2347662 >bear Медведь. >to bear Медведить. >left Левый. >to left Леветь. >После — продолжай, пока не поймёшь что дословно вне контекста слова переводить смысла нет. Нихуя не понял.
Черти, заебали срать в тред, давайте че нить нормальное уже Я свое вкину: появилась надобность и не только у меня в том, чтобы во время компиляции пробежаться по полям структуры и сделать че-нить (допустим записать в компайл тайм массив sizeof этих полей для сериализации) Так вот, индусы люди в интернете советуют макросы, ну это же пиздец. Есть у кого мысли по этому поводу?
>>2347662 >более приоритетный вариант Нет никакого приоритета. Только контекст или уточнение. >Ну ты ссылку-то открой. Так сказать то ты что хотел? Для чего это всё?
>>2347671 >появилась надобность и не только у меня в том, чтобы во время компиляции пробежаться по полям структуры и сделать че-нить (допустим записать в компайл тайм массив sizeof этих полей для сериализации) constexpr, примерно так https://github.com/katursis/StringObfuscator
>>2347671 >Черти, заебали срать в тред, давайте че нить нормальное уже Что еще делать на форумах? Нового ничего нет, все старое уже миллион раз обсосано на каждом из форумов и гуглиться за пару минут, что-то сложное решать за кого-то никто не хочет, максимум направить.
>>2347671 статическая рефлексия, мб в спп23-26 завезут есть на кланг расширение с этим выше упоминали D, там это есть) а так да, макросы. Еще вроде можно попытаться сыницилизировать объект с разным колвом полей пока не сработает
>>2347685 Понял, грустно конечно, там выше по треду советовали costexpr и буст, но это походу не особо то (в клиентский код лезть не хочется) Короче буду хуи сосать кодогенерировать constexpr мапу через шланговский индексер видимо
Есть система компьютеров без центрального узла. Они обмениваются информацией, поэтому у каждого информация о всей сети может отличаться от информации у другого. Существуют ли механизмы, позволяющие "стабилизировать" данные у компьютеров - то есть каждый должен иметь одинаковую информацию? И какие ограничения тут могут быть? Если одна половина заходит по четным дням недели, а вторая по нечетным, то никак прийти к одному виду не получится, но надо хотя бы как то контролировать это.
Кто-нибудь может объяснить новичку какого хуя все до сих пор еще не собирается в контейнерах?
К примеру лежит какая нибудь тулза на гитхабе с инструкцями по сборке.Какого хуя программист до сих пор тратит время на еблю с настройкой окружения для сборки на пердоликсе и засирает свою систему ненужным говном, вместо того чтобы сам автор тулзы залил контейнер на докерхаб чтобы я одной командой его скачал запустил и оно само в своем уже настроенном, изолированном гадюшнике собралось и высрало мне исполняемый файл без мозгоебли для меня?
Заранее прошу не кидаться говном. Ведь сейчас же считай уже большинство перешло на docker driven.
>>2347784 Поясняю: плюсы мёртвый язык. На той же джаве уже лет 20 всё собирается через системы сборки типа мавена и никто ни с чем не пердолится, собирается всё 1 командой.
>>2347784 Если тебе просто либа нужна - скачай её пакетами. Если кастом - ебись сам. Откуда автору знать, под какую платформу и железку тебе надо. А если там докера не завезли, то педалить кросс компиляцию для либы и всех зависимосетй, необходимых для деплоя?
>>2347784 Докеры для арм отличаются на бинарном уровне от докеров под амд64 и т.д. Это у всяких джав всегда все работает на одной виртуальной машине, си и крестам приходится работать на любом говне, которое высрут производители электроники.
>>2347837 У тебя какие-то детские представления об индустрии. Например на оборудование для гражданской авиации ты должен ставить только сертифицированные ОС реального времени, накиких Виндоус Линукс или макоси ты там не увидешь, как и компилятора раста.
>>2347845 А так вот почему некоторые пользователи говорит что у них пека прям "летает". Основная масса ОС в индустрии это винда. Линукс - дл я бомжей либо извращенцев-нитакусиков-особо_одаренных. Мак - для мажориков-лохов которых системно наебывают на бабки.
Собственно оставим срач. У меня вопрос появился. В сети появились бинарники одной игры и мне охота узнать возможно ли получить профит. Бинарников несколько. Вот думаю это дает бонус для того кто захочет реверс инжениринг провести.
>>2347865 Пробовал провести реверс-инжениринг над одной готовой игрой с помощью Иды. Но там был какой-то tail и вообще я не разбираюсь в Иде толком. Теперь думаю будет проще. Мне надо ассемблер изучить? Чтобы смотреть по адресам и самому именовать их в классы и переменные? Это так работает?
>>2347869 >tail Хвост. >Мне надо ассемблер изучить? Да. >Чтобы смотреть по адресам и самому именовать их в классы и переменные? Подрочи асм листинги, которые генерируют компиляторы для различных языков, чтобы иметь хотя бы какие-то паттерны в голове и тебе было бы легче ориентироваться в отладчике. >Это так работает? Спроси у красноглазых в асм треде.
Эксперементирую тут с базама данных. Почему-то перестаёт работать в Qt когда добавляю AUTO_INCREMENT. Сам догадываюсь что надо инкрементировать id через qt-функции, может подскажите чё?
>>2347873 >листинги, которые генерируют компиляторы для различных языков Лол, я как-то открыл дизассемблер одного говна на дельфи, так там буквально всё было переёбано через тройные указатели⚹⚹⚹ на код.
>>2346951 Не понимаю всего этого дроча вокруг чисто серверной операционки. Какой толк от его открытости, если он пилится корпорациями сугубо для своих вычислительных задач в огромных датацентрах? С таким же успехом можно пытаться ездить в магазин на гусеничном тракторе, мотивируя это тем, что крупнейшие в мире лесозаготовительные концерны используют их в своей работе.
>>2348019 >чисто серверной операционки Почему ты так решил? >если он пилится корпорациями Не каждый. >сугубо для своих вычислительных задач в огромных датацентрах Почему ты так решил? >С таким же успехом можно пытаться ездить в магазин на гусеничном тракторе, мотивируя это тем, что крупнейшие в мире лесозаготовительные концерны используют их в своей работе. Из какой методички сравнение?
Я знаю, что исключения это долго (очень). Но вот не помню, программа замедляется уже в случае, если я имею кусок кода с throw или же в тот момент, когда бросается исключение вместо ручной обработки ошибок?
>>2348056 OpenSSL, боль в моя дырка задница. А, ты просил красивого. Такого не видел, при столкновении с реальностью всегда появляются костыли, увы. Но по возможностям, я конечно люблю boost и lua sol2
Где найти работу с основным языком - английским? На английском говорю свободно, но хочу еще лучше. Хотел в хуавей, но там образование нужно. Анон, накидай компаний пожалуйста.
Посмотрел на трубе собеседование, теперь вопросы 1. Спрашивали про свап-идиому, SFINAE, ADL. Я охуел, потому что про это первый раз услышал. Почему в учебниках ничего нет? 2. Уже не первый раз спрашивают про ебаное ромбовидное наследование и виртуальное наследование. Почему дрочат эту хуйню, если в учебниках написано, что это плохой паттерн и лучше так не делать? Неужели это на практике используется? 3. То же самое про ебаный pure virtual call. Ну давай обманем компилятор, ну давай вызовем исключение. Только вот нахуя, чистые виртуальные методы ля того и нужны, чтобы создавать абстрактные классы, нахуя вызывать то, что вызывать не нужно? 4. Уже не первый раз вопрос про перемещение из вектора при реаллокации. И про noexept в мув-конструкторе. Претензия у меня не собеседованию, а к языку. Почему нельзя было сделать, чтобы при реаллокации по умолчанию вызывался мув-конструктор?
>>2348063 >>2348158 >>2348130 Получается проблема не во мне, а просто язык не способствует красивым решениям, ясно. >>2348146 Я крестовый хотел посмотреть.
>>2348387 А как и где такие искать? В hh только по запросу "c++ fluent english", но это явно не полный нужный мне список. А сидеть перебирать компании я не хочу.
>>2348409 Для того чтобы писать хороший, удобный, быстрый код без ub, понимать как некоторые фишки языка работают под капотом. Ну и банально показывают примеры когда незнание чего то может привести к плохим последствиям. Иногда препод говорил, что ему это ни разу не понадобилось на практике (не про то что ты написал, а вообще на каких то лекциях), но знать нужно, чтобы понимать как язык работает
>>2348415 Кек, у меня тоже был современный с++ (тогда еще 17). Но кроме него и фортран, и паскаль, и башни на си. и какая-то функциональная залупа, которую похоже специально разрабатывали чтобы добиться максимальной уебищности мимо другой
>>2348394 Чел, на том конце сидят такие же европейцы с диким акцентом и уровнем upper intermediate++. Если тебе надо fluent - ищи релокацию в англоговорящие страны.
>>2348394 >В hh только На hh с английским ты только аутсорс гелары можешь найти. Хочешь работать с буржуями — ищи галеру на буржуйских сервисах (тот же linkedin), очевидно же.
>>2348381 1. Потому что это выходит за рамки среднего учебника; 2. Не используется, суть вопроса — как в пункте — просто доебаться до знания кишков; 3. Просто хотят доебаться; 4. Легоси.
Суть любого собеса — доебаться вопросами, не имеющими отношения к работе зачастую и сбить цену, так не только в плюсах, так вообще везде, привыкай.
>>2348381 1. Идиомы это просто идиомы. Сегодня они актуальны, а завтра тебя за них ногами пиздят (за паттерны синглтон, фабриаки, за блокировку с двойной проверкой и т.д.). 2. Просто забей. 3, 4. Увы, но знать надо. Язык про ручное управление ресурсами. Исключения в конструкторе/деструкторе, pwc, нехватка памяти - с этим придётся бороться на практике.
>>2348385 Нет, язык позволяет вполне красивые вещи. Проблема в том, что эти красивые вещи вполне делаются и на более удобных языках, а на плюсах делают то, особо по красоте и не сделаешь. Я так думаю. Всякие наивные вызовы, байтоёбство и прочий high performance, где красотой жертвуют.
>>2348582 Нам препод рассказывал, что в 23 стандарте случайно подвезут новый язык во время компиляции, при этом невозможно понять остановится ли выполнение программы или нет. И компиляторы тупо костылят, что если глубина рекурсии выше 100, то компиляция прекращается
>>2348621 > ввести ключевое слово Поэтому. Комитет боится вводить новые ключевые слова и придумывает синтаксические изъёбства. Туда же auto для вывода типов.
>>2348381 1. Значит ты читаешь хуевые учебники 2. Доебаться. На практике не видел, чтобы использовалось. Но иногда это может тебе встретиться (например при наследовании от чего-то std'шного), поэтому будет лучше - если ты знаешь. 3. Доебаться. И вопрос про понимание. На собесе можно дать понять, что ты выкупаешь и послать нахуй 4. А причем тут мув конструктор? Давай возьмем вектор. Давай возьмем указатель на его первый элемент. А потом дохуя раз вызовем push_back. Произойдет реаллокация и указатель уже не будет валидным. На уровне языка это довольно сложно поправить. И даже если это поправить - будет оверхед, который пользователь(тупой программист) будет не ожидать. Поэтому за скорость платит как программист, зная вот здесь может ебануть
Сап. Изучаю ООП, классы Для изучения языка я пользуюсь Ютубом, purecode, cppstudio — но везде только элементарные задачки и их решения. Из-за этого я не могу сделать что-то даже незначительно сложнее них
Хотел написать программу, в которой между двумя автомобилями с разными характеристиками проводятся гонки. Нужно выполнить лабу, в которой будут проводиться гонки, а в классе "Результат" выводиться собственно результат, автомобиль-победитель, расстояние, добавление/удаление автомобиля... Из-за того, что во всех уроках по теме ограничиваются тем, чтобы задать класс с парочкой объектов и вывести какие-то из значений объекта, я не могу писать что-то сложнее этого. Подскажите пожалуйста, где можно углубленнее посмотреть? Уже давно раздражает, что везде простенькие примеры и задачки, а мне нужно выполнять лабы, в которых задачи значительно сложнее. И поэтому штудирование информации в интернете как-то не способствует выполнению лаб. Уже кучу уроков по классам, кучу сайтов посмотрел — нигде что-то хитровыебаннее базы для чайников не предложили. А мне лабы делать надо, ебать их в сраку.
Я пишу в vs code, но лишь потому что не умею в vs быстро выбирать файлы для компиляции. А мне часто во время проги приходится компилировать основной исходник с разными другими cpp для тестов. Можно ли научиться быстро в vs включать и исключать файлы из проекта? Так бы я и дальше vs code юзал, но профилировщик в vs удобный слишком
Ну ты сравнил молодой питон и плюсы. И да, многие компании теперь просто сидят на старой версии питона, потому что переписывать на новую не хотят. У плюсов и так 100500 компиляторов, каждый из которых компилирует свой диалект языка, если еще и поддерживать компиляторы для разных форков, то люди совсем ебнутся. А поддерживать их придется, потому что баги в компиляторах находят не редко. Вообще да, я иногда тоже думаю, что было бы круто язык форкнуть, но понимаю почему это не делают. Возможно, мне даже немного обидно. Еще хотел вот что спросить: вроде же что то иногда признают устаревшим и просто выпиливают нахуй из стандарта. Может ли это привести к перерождению плюсов в язык без хуевой тучи костылей ради обратной совместимости лет через 15?
>>2348871 В динамикодрисне это хоть и больно, но терпимо. Можно по-быстрому раскидать костыли по коду, чтобы поддерживались обе версии петухона. А в крестах начинается адская ебля, когда тебе надо скомпилить проект, написанный кем-то в нулевых, и ты получаешь 100 мегабайт нечитаемых ошибок, сиди, ебись.
>>2348381 >чистые виртуальные методы ля того и нужны, чтобы создавать абстрактные классы, нахуя вызывать то, что вызывать не нужно? не, чел, это полезная вещь вообще то для определения поведения по умолчанию или для определения частичной функциональности можно даже сказать что это такой мини-паттерн, которому уж 30 лет как
>>2348893 чел, в том и сила ты берешь очен старую либу, пытаешься компильнуть ее новым компилятором, в новом окружении, присоединить к своему охуенному сверх современному коду и так далее ты должен вообще радоваться что компилятор такой строгий и вываливает кучу ошибок, потому что так и должно же быть.. а то что динамикодрисня (без тысяч модульных тестов) может сожрать любой код ну дак это и понятно, и то что у тебя "запустилось" с первого раза, это лишь означает что ты пошел по минному полю вот так
>>2348903 В жизни всякое бывает. При разработке с нуля эти проверки может и хороши, но потом при сопровождении, когда что-то, что всегда работало, вдруг работать перестало, тебе хочется только одну кнопку "запустить любой ценой", и не ебёт, что в одном из стандартов запретили какую-то залупу с енумами.
>>2348871 Питун до сих пор жепу не зашил после релиза v3. Ещё попадается залупа, которая работает только на 2.х. И обновлений не будет, так как автор давно перестал её поддерживать или вообще помер от геморроя..
>>2348903 Присоединяешь к сверхсовременному коду и потом начинаешь как сучка пилить адапторы, чтобы легаси говно не вытекло наружу и твои коллеги не растащили его по всему проекту. Охуенно, да.
>>2348419 Если касаемо только c++, то стандартная библиотека (без мозгоебства на шаблонах и виртуальных наследований), куте, буст и всякие мелкие библиотечки, немного шаблоны проектирования.
>>2348588 Не понял. Есть поподробнее статья? С другой стороны у меня была шизо идея о том как в процесоор загружаются инты и прочие типы. Возможно ли посмотреть как они туда будут попадать и как то оптимизировать чтобы как тетрисе они укладывались ровно в машинное слово? Или это нереально потому что помимо приложения еще и операцинная система работает?
Еще вопрос - реально ли может помочь замена интов на char если я использую очень малые числа. Не больше сотни. На стаковерфлоу сказали что процесоор работает на интах лучше чем на чарах. Это правда?
>>2348869 Так делай лабу. Вот и научишься. Когда будешь сталкиваться с проблемой - смотри конкретно по этой теме. А вообще тут Мейерса советовали почитать. Я лично его нашел но так и начал читать. Прочитал только что лучше везде использовать auto вместо типов.
>>2348869 >Хотел написать программу, в которой между двумя автомобилями с разными характеристиками проводятся гонки. Напиши. >>2348888 >У плюсов и так 100500 компиляторов 5 или компиляторы g++SuperSpeedAndSmallSizeEditionByCoolVasyanExtentedV3.0.1beta тоже учитываются? >было бы круто язык форкнуть, но понимаю почему это не делают Какая корпорация за это будет платить? >>2349031 >Возможно ли посмотреть как они туда будут попадать Через регистры. >они укладывались ровно в машинное слово Посмотри размеры и количество регистров на целовой архитектуре. >реально ли может помочь Кому? >Это правда? Посмотри инструкции, которые генерирует компилятор для чаров и интов.
>>2345617 (OP) Помогите с кодом пожалуйста. Хочу научиться разименовывать итераторы. Если это возможно. Мне приходится передавать значение в указатель, но хочу сразу доступ к переменным осуществлять через итератор.
>>2349043 >5 или компиляторы g++SuperSpeedAndSmallSizeEditionByCoolVasyanExtentedV3.0.1beta тоже учитываются? https://en.cppreference.com/w/cpp/compiler_support Только из значимых — уже 12 штук. А сколько их для всякого эмбедед говна... Ты молодой, шутливый, тебе все легко. Это не то. Это не Чикатило и даже не архивы спецслужб. Сюда лучше не лезть.
>>2349042 >>2349043 >Напиши. Логичный совет, я и начал писать, но быстро столкнулся с тем, что не знаю, как что-либо сделать. Гуглю — мне выдают ту же хуйню уровня хеллоу ворлд. Мне бы примеры решения готовых задач посмотреть, при чем задач посложнее, а не уровня "Создать класс с двумя объектами, вывести значения объектов"
>>2349235 Я не писал, что остальные не значимые, а написал, что вижу только 3 значимых компилятора. Где используются остальные? Какой софт собран с помощью них? В чем их преимущество? Почему нельзя было использовать гсс\шланг\студийный?
>>2349243 > Я не писал, что остальные не значимые, а написал, что вижу только 3 значимых компилятора. Где используются остальные? Я так подозреваю, что в сборке всяких внутренних прог или для лучшей оптимизации кода для своих продуктов. Может ител знают как лучше под свои процы собирать, чтобы работало быстрее > Какой софт собран с помощью них? Не изучал, не знаю > В чем их преимущество? Почему нельзя было использовать гсс\шланг\студийный? Я не работаю в интел, но могу предположить, что интеловчский собирает лучше для процов интел, а gcc просто не имеют ресурсов оптимизировать компилятор для разных процов
>>2349223 >Почему они значимые? Потому что в компаниях типо интела/оракла/ибм гарантированно есть ебейшее количество кода завязанного на них, а так же куча корпоративных клиентов которые не особо афишируют что у них там происходит.
>>2349310 Языковых фич. Потому что им не занимаются эффективные манагеры которым похуй на язык, лол.
Во всяких областях типо поддержки инструкций самых новых (либо редких/эксперементальных) фич процессоров (или сопроцесссоров, сейчас же модно сувать NPU в каждую щель), векторизации и прочим оптимизациям математики компиляторы вроде интеловского/амудешного ебали и скорее всего по прежнему ебут всех.
>>2349333 >интела/оракла/ибм гарантированно есть ебейшее количество кода завязанного на них Получается это корпоративный компилятор? Тогда зачем он обычным пользователям?
>>2349342 Востребованностью. Которая не различается по критериям вроде business-to-business, business-to-client или opensource-to-vasyan.
>>2349347 >по идее (того анона) надо компилировать на нем. Нет у меня такой идеи, пчел. Если у тебя там не какая-то охуительная математика, 10-20% ускорения которой будут покрывать лицензию на компилятор и кучу самого современного железа, конечно.
Аргумент про "обычные юзеры не юзают" — говно уровня "C++ нинужин" в соседних чатах.
>>2349350 >>2349354 Это не троллинг. Я просто не разбираюсь в компиляторах. Возможно бы даже прикупил интеловский если бы мне кто-нибудь доказал что он лучше gcc. И еще возможно это не улучшит байт код а только ускорит компиляцию. Я не шарю в этом вообще. Есть знающие аноны?
>>2349366 >Для индустрии в целом. Каким образом? >Индустрия != программисты Получается компиляторы и программисты не связаны? Кто тогда определяет какой компилятор использовать?
>>2349369 >Каким образом? Позволяют выжимать из железа больше. inb4: Рентабельнее что-то делать => больше проектов => нужно больше программистов (и не только).
>Получается компиляторы и программисты не связаны? Как ты до этого дошёл? Вроде на сосаче пиздим а не на форуме дислексиков. Программисты — составляющая индустрии, не вся индустрия.
>>2349372 >Позволяют выжимать из железа больше. Не факт. >Как ты до этого дошёл? >>2349366 >Индустрия != программисты >Программисты — составляющая индустрии, не вся индустрия. Получается компиляторы выбирают программисты, тогда к чему ты притянул индустрию?
>>2349376 >Не факт. Когда >компиляторы выбирают программисты это работает именно так.
>тогда к чему ты притянул индустрию? К тому, что выхлоп от компилятора который умеет юзать какие нибудь новые инструкции в новом проце получают не только программисты.
>>2349378 Вполне конкретно написал — не нужон какой нибудь интеловский MKL — нахуй не нужон и их компилятор.
>>2349385 >К тому, что выхлоп от компилятора который умеет юзать какие нибудь новые инструкции в новом проце получают не только программисты. Популярные компиляторы не умеют их использовать?
>>2348931 ничего я не путаю pure virtual функция член может иметь определение, и это используется для определения реализации по умолчанию или для определения частичной реализации
>>2349074 >Попробовал и получит результат. Только не знаю что происходит. вырубай флаги оптимизации все, когда только учишься читать сгенерированные ассемблерные листинги без таких флагов машинный код будет проще и его будет легче понять
>>2349385 >Пиздец, как же тяжко общаться с тиктокерами...
clang + cmake + VS enterprise. На мой думерский взгяд выросшего без интернета, с игрушками прибитыми к подоконнику и загуглившего тему за 5 минут это самая нормальная комбинация. Поклонники gcc конечно не согласятся, но я жду факты и внятные аргументы.
>>2349524 >Это чат бот? Почему ты так решил? >Не заробрался как cmake еще ставить. >>2349513 >clang + cmake + VS enterprise. >нормальная комбинация Почему тогда ты считаешь это нормальной комбинацией?
Тело pure virtual функции не нужно. Если в классах-потомках в реализации этой функции используется один и тот же код - сделайте в базовом классе отдельный protected метод, выполняющий этот код, а не пишите его в теле pure virtual.
>>2349606 >В плюсы завезли строки нормальные? const char*, std::string и юникодные варианты
>Ну или нормальную асинхронность? Может быть кроссплатформенную работу с сокетами? Или? бака boost asio, давно хотят вроде и вероятно в след-послеслед стд его завезут в стдлибу 1st class поддержка корутин уже давно есть если что >перекатился на "божественную" жаву clown
>>2349657 в стд есть функции конвертации, toupper, как я понимаю можно доставать из uNstring конвертером по символу в char32_t, делать toupper/tower и сравнивать (хотя описания этих функций с названиями аля qwerty cvt mcb просто ну их нахуй, благо мне что строки, что плюсы юзать пока что не придется) . Ебля, но однажды в функцию выделить и все нормально. Или все в стандарт тащить? Интересно, есть ли в жабе все фичи плюсов..
>>2349661 Не, я плюсокодер, просто эта фигня с юникодом (точнее, отсутствие вменяемых средств для работы со всем, выходящим за пределы Base Plane или имеющим культурные особенности) доебала уже. Обычно не сортирую, но вот потребовалось, и возник НЮАНС. >>2349665 Ты не шаришь. Эти символы в разных регистрах занимают разное количество code unit.
>>2349606 >перекатился на божественную жаву Перекатился в смысле новую должность получил или просто поковырял литкод? Почему не C#? В СНГ вроде это и есть путь.
Есть какой-нибудь структурированный гайд по работе с бинарниками? Сколько ни искал - всё по крупицам приходилось собирать да в опенсорсах копаться. Т.е. в целом алгоритм ясен: хуяришь структуру правильную, сики-хуики, райты-риды. Но структурировать всё и углубиться не помешало бы.
регистронезависимости не существует, сына если считаешь иначе, то ты или семибитный динозавр или запихал себе в очько весь стандарт юникода который уже толще плюсового наху это база
>>2349821 Проблема, если её так можно назвать в поверхностных знаниях и не(-знании/-понимании) всевозможных питфолов. Вот я например юзаю std::array чаров, на первый взгляд всё выглядит работающим но я хз, оптимально ли это на дистанции и мб тут есть более лучшая практика (С-массив, ага). Бтв я поначалу вообще пробовал в стрингу или вектор класть. Вот пишу я либу для архивирования файлов. Сделал RW, сейчас думаю как докинуть удаление => перезапись уже существующего файла. Идея такова, чтобы найти начало искомого файла, обнулить занимаемые им байты (скорее всего лишний шаг) и сдвинуть весь контент что шёл после него в позицию начала этого файла - це норм чи не норм? Это из основного и насущного, а так уверен, что есть ещё что-то с чем я не сталкивался.
>>2349848 >мб тут есть более лучшая практика Используй объединения (union) для хранения бинарных заголовков (упростится работа с ними и RW) и контейнеры для бинарных данных, типа std::array. >Вот пишу я либу для архивирования файлов. Какие задачи у архиватора? Безопасность, скорость, размер, удобство? >це норм чи не норм? Алгоритм говно. Создай заголовок у архива, где будут расписаны смещения до файлов и прочие их данные, после через этот заголовок загрузи весь архив в оперативную память и через реализацию списка с массивами бинарных данных оперируй уже файлами, после всех операций сохраняй все данные в свой архив. Не самый лучший алгоритм, но первое, что пришло в голову.
>>2349883 >Создай заголовок у архива, где будут расписаны смещения до файлов и прочие их данные, после через этот заголовок загрузи весь архив в оперативную память и через реализацию списка с массивами бинарных данных оперируй уже файлами, после всех операций сохраняй все данные в свой архив. Полное говно алгоритм тоже. Без задачи сложно описать адекватный алгоритм. Если кратко, то примерные основы такие: 1) Минимизировать работу с дисками. 2) Минимизировать сдвиги и копирование памяти. 3) Многопоточность. 4) Фича почему твой архиватор, а не любой другой. 5) Расширяемость.
>QML vs QtWidgets Первый — даст хуёвенький перформанс на сложных гуях, на втором ты писать будешь минимум в 5 раз дольше.
>vs веб интерфейс через фреймворк JS`a Если не нужны фичи которые дают десктопные приложения (нормальный персистенс, доступ к системным апи итд) то можно и так. Хоть сколько нибудь сложный гуй будет жрать ебические ресурсы.
>vs Электрон Прошлый пункт только с доступностью фич десктопных приложений (но кучей ебли с бриджем итд).
>>2349743 >>2349747 Нет, я про то что некоторые глифы в некоторых локалях при преобразовании регистра превращаются в два глифа (utf-32 в частности и кодировка вообще, тут ни при чем) Могли бы уже icu в стандарт запихнуть.
Сап Препод дал задание за неделю написать эмуль 8086 с четырьмя что-ли командами. В общем обращаюсь к вам, сейчас чёткое условие писать на плюсах. У меня ноль теории по тому как устроен 8086, как начинать писать сам эмуль и знания в плюсах околонулевые. Читал статью на хабре, видел эмуль на гитхабе, но моих мозгов пока не хватает понять. Порекомендуйте источников, книжек, может ютаб канал чтобы хоть с чего-то начать. Спасибо!
>>2349960 Пока для себя вижу такой фронт работ: Разобраться с тем как устроена архитектура любого процессора Разобраться с особенностями 8086 Попробовать написать эмуль какого-нибудь простого чипа Переходить непосредственно к 8086
>>2349981 Считай это риторический. Изучать как работает процесоор это для каких-нибудь компьютерных инженеров если только. Препод наверно шиз и омега если такую шляпу задал.
>>2349931 Что выбрать тогда чтобы и шустро работало даже с большим кол-вом элементов, было не всрато и чтобы простую кнопочку 500 строками описывать не пришлось?
>>2349997 Если про кресты, то их на начальном уровне я знаю, посидеть погуглить как какие конструкции пишутся в инете не сложно (лямбды, шаблоны их не трогал). Вот с архитектурой сложнее, я банально не знаю с чего начать (если что-то требуется, то беру ручку и блокнот и пишу), просто сижу перед листком и ничего в голову не лезет. Надо понять как вообще процессор работает, какие у него блоки, команды (это препод не дал). Ну и вообще что такое эмулятор и с чем его едят
>>2350069 >Шиз ты думаешь ты самый умный? Нет. >Я просто запалил 8086 на картинке. На какой? >>2350070 >Ты не мужчина что-ли заниматься таким гейским траллингом? Почему ты так решил? >Выйди со мной раз на раз посмотрим как не поманеврируешь. Зачем?
>>2349993 Всё так, Бро . Именно страшно. Такая же страшная фигня в операциях со временем с учётом истории изменения таймзон, летнего времени и високосных секунд.
>>2349991 >Что выбрать тогда чтобы и шустро работало даже с большим кол-вом элементов Qt.
> было не всрато Нейтив. Если таргет линукс — Qt.
>чтобы простую кнопочку 500 строками описывать не пришлось? Прям 500 нигде не придётся. У тебя требования взаимоисключающие, пчел. Быстро ты можешь либо софт написать, либо софт будет быстро работать.
В целом возьми что проще и больше приглянется — и решай проблемы по мере поступления, можешь например взять QML и растягивать анус пока не начнёт болеть, потом сможешь свичнуться на виджеты, если таки заболит.
>>2350091 Не в этом вопрос. Пока что я спрашиваю про то, что вообще сейчас применяется при написании нейронок и прочих игрушек в контексте языка. Так то конечная цель само собой сильный и независимый ии, лепить лица однокурсниц на тела порноактрис или высчитывать радиус углов нового айфона при которых продажи больше будут - 0 интереса.
>>2350102 >которых продажи больше будут - 0 интереса. Масленок интерес не может быть отрицательным и скорее всего не будет == 0. То есть он будет в любом случае.
>>2350108 Да? И почему же тогда мне интересно дрочить сабж, пресный матан который я что в школе ненавидел, что сейчас ненавижу и всё прочее и вытекающее только потому, что мне это внезапно интересно и по этому пути меня не ведёт ничего кроме энтузиазма и одиночества?
>>2350117 >матан это не математика Масленок, это математический анализ. Ну да, проебался с определением. В школе ненавидел математику, сейчас ненавижу математику и матан.
>>2350133 Везде, где может ввести юзер. Путь к файлу, idn имя хоста, что угодно. Ну и соответственно в лог надо писать. Текст ошибки от винды например.
>>2349722 Ну я был джуном на плюсах на заводе с первого курса, а потом препод подкинул халтурку на жаве связанную с банком одним забугорным и так вот пошло поехало.
>>2350102 Нейросеточки, cv и slam жрут как не в себя. Особенно если тебе нужна автономность. Посему - avx, neon, cuda, opencl, tbb, и параллелизм, доступный в языке. Кастомные контейнеры, структуры данных, теорвер, дифгем, алгебра, функциональный анал, местами матан.
Может лучше ограничишься робототехникой и на С делать робота Фёдора? За Фёдора сейчас льготную попотеку дают.
>>2350240 >Нейросеточки жрут как не в себя Ну типо, поэтому я в с++ тренде и пишу. >За Фёдора сейчас льготную попотеку дают. Как я уже говорил - материальных выгод я не ищу.
>>2350247 >выгод я не ищу А кто сказал, что попотека это выгодно?
Не очень понятно, что ты по факту писать собрался? Всё и сразу? Ты голову себе сломаешь.
Если тебе надо именно сетки писать, то параллелизм низкого уровня (avx, cuda, интринсики), представление о работе с памятью, умение писать свои аллокаторы, понимание механизмов обмена данными между cpu/gpu или ram и различными кэшами. По языку это первые несколько глав нормального учебника. Сам C++ вообще никак не приспособлен для такой работы. В языке нет ни типов данных (матриц/векторов) ни операций над ними.
Если бэк, использующий нейросети, то шаблоны/классы, библиотека std - оставшаяся часть учебника по c++. Ещё нужен параллелизм с++ - он обычно в конце книжки (описан на отъебись).
>>2350260 Оператор & это побитовое И: 1 & 0 = 0, 1 & 1 = 1. Двоичное представление чисел: 49 = 110001 51 = 110011 2 = 000010 Далее по всем позициям проходишься и применяешь попарно & В итоге для 49 будет 000000 = 0, а для 51 - 000010 = 2
>>2350255 >Всё и сразу? Всё, но не сразу. Ясное дело сначала я увязну в дроче с классификацией ириса и прочей базовой фигнёй. Нахуя мне это? Надоела пустая и бесцельная жизнь фуллстакомакаки, хочу чего-нибудь нового крутого. Паралеллизм не проблема, я зря Уильямса читал что ли?
>>2350266 Ну будешь драться с олимпиадниками за те 2 вакансии, которые сейчас размещены. Могу тебе сказать, что собес на такую позицию это 10-15 минут с++ и потом либо адовый параллелизм, либо матан.
>>2350267 Я НЕ буду искать никаких вакансий. Я НЕ буду работать в этой сфере на бизнес/НИИХУЯ. Мне хочется занятся этим ДЛЯ СЕБЯ исключительно потому, что мне это интересно. Может быть я обосрусь и скачусь в Qt-макаку, может быть стану крутым спецом и в мидтайме "каръеры" смогу сумею замутить каких-нибудь дроидов/андроидов - сейчас я об этом особо не думаю, сейчас мне тупо интересно с этим поебаться.
>>2350279 >Таким union { raw[sizeof(struct)], struct { a, b, c, d } }, read(from, union.raw, sizeof(union.raw)) union.a,b,c,d -> ... Хотя в любом случае структуру надо будет выравнивать, поэтому никаким, пиши, как хочешь.
>>2350268 >НЕ буду работать в этой сфере >стану крутым спецом Кекеке.
>замутить каких-нибудь дроидов/андроидов А это уже третье направление, не касающееся бэка и нейросетей. Системное программирование - RTOS/Linux, драйвера, распределённые системы, межпроцессное взаимодействие. Программирование под интерфейсы железяки (преимущественно на С) и ЦОС математика для потоков с этих интерфейсов - преобразования фурье, фильтры калмана/гаусса, дебаеризация, матан для калибровки.
>>2350268 Я просто чё тебе хочу сказать. Если ты хочешь сделать своими силами нечто умное и автономное, то покупай Малинку/Ардуинку. Накатывай на них официальные AI тулкиты и с помощью питона реализуй свои идеи. Если ты пойдёшь с другого конца, то оно тебя сожрёт.
>>2350283 >А это уже третье направление, не касающееся нейросетей. Ага, заебись, и будет мой дроид уметь только сварочным апаратом по заранее заданным координатам провести, 10/10.
>>2350299 Чтобы он что-то там мог ему надо научиться в пространстве ориентироваться. Но это уже четвёртое направление - SLAM, трекинг и теория управления (матан, матан, матан).
>>2350315 Да это всё и так понятно. Всё это отдельные модули которые так и так будут коммуницировать с этим самым "модулем ии" - тут без этого никак. Я же не говорю что-то в духе "Бля, сейчас почитаю авторанейм и завтра на иксвинге на Пандору". Тут и тупому ясно что это марафон в огромный пласт разнообразных наук и техник.
>>2350335 >бери малинку Подкинь промокод, ты же очевидно у них торговым представителем подрабатываешь. >потом снова иди формочки шлёпать Таков путь каждого краба в вашем ведре?
>>2350078 >вкат в робототехнику читай советские книжки по кибернетике и тау, например из них ты поймешь какой мат аппарат тебе нужен потом читаешь соответствующие книги с нужной математикой, тоже советские как то так но ты же не последуешь этому совету? ха ха
>>2350340 У меня другая железка. Малинка легче в освоении. Не хочешь - бери ардуинку. К ней много всяких сопутствующих железок продаётся - дисплеи, приводы, сенсоры простенькие.
>>2350240 лучший способ оптимизировать нейросетку - это отказаться от нейросетки, но пидорасы что делают 10к грина в месяц на этом дерьме никогда в этом не признаются :D
>>2350266 >Надоела пустая и бесцельная жизнь фуллстакомакаки лол, нахуя вы в кресты лезете у тебя же наверняка на хлебушек с маслом зарплата есть и еще джем сверху? так ведь? с жиру бесишься
>>2350268 чел если ты работаешь кодером 8м часов то самое хуевое что ты можешь сделать с собственным мозгом и телом - это приходить домой с работы и снова садиться еще на 3+ часа за комп, без разницы с какой целью, играть в игрушки или заниматься "другим" кодингом ты можешь спокойно выгореть и все, в 35 лет сдохнуть бомжем от нищеты
>>2350359 а) Я начинал с С б) Плюсы охуенные в) Я 4 года к ряду пилю охуительные бизнес решения, сраттапы и нфт-блокчейн-крипто хуйню что меня порядком подзаебало.
>>2350269 они не победили просто нет оплачиваемой работы, айтишников слишком много сегодня бизнес может снимать "верхушку" с выпускающихся вчерашних студентиков, брать лучших а середняк отправляется в помоечку а вот в конце нулевых в россии и середняк брали на РАБоту
>>2350363 >приходить домой с работы Но я работаю из дома... >садиться еще на 3+ часа за комп Я сижу по 16+ часов в день и что? >ты можешь спокойно выгореть и все, в 35 лет сдохнуть бомжем от нищеты А могу послезавтра отъехать от рандомного тромба. И что? Это повод скатываться в потреблядство и нихуянеделание?
>>2350358 захардкоженый алгоритм под решение частной проблемы для тех же задач распознавания образов есть сотни алгоритмов, с соответствующим мат аппаратом
>>2350373 чел ты очень странный хвастаешься тем что работаешь по 16+ часов в день и тут же сообщаешь что у тебя уже есть вариант умереть от инсульта? хм, может стоит все же начать работать 8м часов в день и заняться собственным здоровьем? не?
>>2350381 Ну он тебе дело говорит. Если речь идёт о поисках объектов на картинке, то часто их геометрия известна и не нужно гонять нейросеть. Достаточно сделать свёртку для edge detection и по маске найти то, что надо. Работает вот прям намного быстрее.
>>2350354 Я тебе назвал 4 из 11 направлений, необходимых для создания умного устройства. Так как ты сам не знаешь, куда хочешь двигаться, то очевидно что надо брать конструктор на базе эмбед решения и пробовать разные направления.
>>2350413 На сколько сократится количество рутины, если ты будешь работать не 16 часов, а 8? Описать мат модель и обосновать её. Написать на c++ код, вычисляющий количество рутины для произвольного интервала времени.
Хелпаните. Что такое резюме в Яндекс? Я заполнил все предыдущие поля кроме необязательных и все что можно рассказал. Но обязательно надо загрузить резюме, а я хз что там должно быть.
А еще такой вопрос: контест открывается сразу после отправки резюме или как? А то я надеялся в резюме написать хуйню, но зарешать контест. Будет обидно, если к контесту не допустят
>>2350741 >>2350749 Там надо написать о себе. Про то на каких языках кодил и тому подобноее. Кинь свой имэил может вместе поготовимся. Думаю тоже попробовать.
>>2350776 Номер можешь скрыть просто. Почта у меня есть, но там имя и фамилия в названии. А остальные я не чекаю и твои сообщения потеряются. Если ты закроешь номер, то никто не сдеанонит. В крайнем случае за 15 рублей номер купи и акк сделай фейковый
>>2350837 Ну у тебя 2 стула в таком случае: 1) Запилить всё на движке попроще. Если не станет похуй на гейдев — рано или поздно упрёшься в движок и пойдёшь учить UE (лучше сразу пиздуй туда); 2) Запилить всё с нуля. Та же буханка что и с Qt а ещё ты скорее всего никогда не допилишь своего игоря до вменяемого состояния, но вне зависимости от того забьёшь на гейдев или нет получишь кучу знаний.
>>2350849 >Хочу и знания Qt-хи прокачать Ну ты тык её не прокачаешь, напиши что нибудь полезное. Клиент для какой нибудь хуйни типо сосача матрикса там.
>запилить что-нибудь такое неплохое "Неплохое" в соло не запилишь. Можно что-то средне-хуёвое с пизженными ассетами.
>>2350865 Тоже пилю движок. Научился создавать окно, закружать текстуры, передвигать юниты (с текстурами), сейчас пишу логику для атаки. Клики мышки тоже сделал. Пока полет нормальный. Есть знакомый дизайнер который уже заинтересовался проектом. Думаю летом плотно за ней сидеть, каждый день (плюс-минус). Единственный подводный это то, что стим заблокирован. Так что надо будет еще и свой магаз пилить.
>>2350913 >А так у меня будет и пэт и навыки Неа, у тебя будет геморрой, выгорание и незаконченный проект. >а у тебя будет нескончаемая боль и кривой продукт. Какой продукт? Боль от чего? Я предпочту взять готовое решение везде, где это возможно а не писать всё с 0.
>>2350914 >выгорание Это для тех кому нужны бабки в глубине души. И зумеров которые не определились что им надо.
>геморрой Ты походу старый
>незаконченный проект твое воспитание масленок
>готовое решение везде, где это возможно а не писать всё с 0. Это рационально не спорю. Но на этом далеко не уедешь. Или у тебя получится пошлятина которая миксимум 5/10 по оценкам будет. Людей интересует что-то новенькое.
>>2350983 А чё сказать то? Обычный набор. Рантайм плюсов, рантайм куды, дефолтные либы для картинок, zlib для архивов с ресами и рантайм для иксов с компилятором (видимо для шейдеров).
Я уже заебался гуглить, помогите. Ебучий компилятор пишет что конструктор копирования implicitly deleted. Не могу класс скопировать, блять. При этом я проверил — все его элементы имеют конструктор без параметров и рабочие конструкторы копирования, если вдруг он не может элементы класса копировать. А ещё ссылку можно с класса взять, но операторы сравнения не работают — пишет портянку про отсутствие подходящего метода для сравнения. Что за ебень? Почему он не может дефолтный конструктор копирования сгенерить и почему операторы сравнения не сравнивают?
>>2351296 Тогда правило шести видимо? Если определить один из конструкторов, операторов присваивания или деструктор то дефолтные удаляются. Ты их должен explicitly объявить default.
>>2351322 У полей точно есть правильные публичные конструкторы копирования (c const&) и не deleted деструкторы? не говоря о ебучих случаях вроде полей типа T&&, надеюсь такой хуйни у тебя нет
>>2351387 Можно повесить PAGE_GUARD на нужный кусок памяти и ловить эксепшен STATUS_GUARD_PAGE_VIOLATION при любом обращении к нему. Будешь знать прям какая инструкция лезет туда, даже про попытки чтения узнаешь.
>>2351392 Бля, ну я даже проверил сейчас - сделал всё публичным, вручную создавал новый класс, каждое поле копировал в новый и всё копируется. Но дэфолтный всё так же удаляет. Если через STL пытаться что-то делать с этим классом, мне сблёвывает портянку на 10 строк про "no matching overloaded function found", "attempting to reference a deleted function" и "could not deduce template argument for '<unnamed-symbol>'". Пиздец кал, это кстати MS C++20.
>>2351556 YAP, Type Traits, TTI, CallableTraits, HOF, Fusion, Metaparse, Hana, Preprocessor, MPL - абсолютный минимум который должен знать каждый вкатывальщик! окей, это шутка на самом деле под "знанием буста" обычно подразумевают одну практическую библиотеку, а именно asio
>>2351439 >на корутинах а как сопрограммы реализованы в языке, кто знает? они используют "волокна" (fibers в windows) операционной системе или как то просто эмулируются на потоках операционной системы? нахуя тогда их было делать если выбрана вторая реализация?
>>2351572 Они не реализованы как у других, тут нет жесткой реализации. Корутины в крестах просто перемещают выполнение кода в другой фрейм, остальное как захочешь. Можешь продолжить выполнение корутины в другом потоке, можешь приостановить её через co_await, можешь возвращать из неё асинхронно данные. Через корутины ахуенно делать lock-free многопоточность, контролируя каждый поток, а не как во всяких растах где всё за тебя решили гомогеи.
>>2351645 Нет, но сможешь хотя бы быть джуном через пол года практики. Кто не читал спецификацию вообще не могут крестовиками считаться, они просто сишники, пишущие процедуры с классами.
>>2351776 >Интересно, как у нас hr зовут? А должно быть? Хз, какая-нибудь Алёна или Тимур? >>2351778 >Как это связано? Получил котлету бабла - покушол нормально, что за вопросы тупые? >Откуда? Из всех работ на которых я ебашил только будучи прогером я почувствовал себя человеком.
>>2351781 >Получил котлету бабла - покушол нормально Джуны не получают деньги, им сразу едой платят. >что за вопросы тупые? Я работаю по методичке. >Из всех работ на которых я ебашил только будучи прогером я почувствовал себя человеком. Мазохист?
>>2351782 >Джуны не получают деньги, им сразу едой платят. Это происходит только потому, что есть дебилы посмотревшие 1 курс, нихуя не умеющие и согласные на такие условия. >Я работаю по методичке. Это-то мне как раз понятно. >Мазохист? Снова тупой вопрос.
Зачем принимать указатель на указатель (void-звездочка-звездочка)? Функция принимает такой указатель в качестве out-параметра, создает объект (структуру), делает указатель на нее и кладет в эту переменную указатель на этот указатель. Не проще ли ограничиться одним уровнем указателей?
>>2351793 >Я общаюсь с лидами, так что да. Почему они являются для тебя авторитетами? Что они умеют? У тебя заниженная самооценка? >С какой целью интересуешься? Социальный опрос провожу.
>>2351796 >Социальный опрос провожу. А выглядит так что ты бот который моё время впустую тратит. >Почему они являются для тебя авторитетами? Они не являются. >Что они умеют? Пиздеть они точно умеют, об остальном не ебу. >У тебя заниженная самооценка? Не жалуюсь.
>>2351797 >А выглядит так что ты бот который моё время впустую тратит. Ты сам тратишь свое время на оправдания. >Они не являются. >>2351793 >Я общаюсь с лидами, так что да. Противоречие. >>2351797 >Пиздеть они точно умеют, об остальном не ебу. >Не жалуюсь. Ты принял потенциальное ложное утверждение от других людей и выдаешь его, как подтверждение твоей (навязанной) точки зрения, точно уверен, что у тебя нет проблем с ней?
Есть ли какая-нибудь сетевая песочница? Я пишу сетевое приложение и мне надо проверить как оно работает на куче компов и как они друг с другом взаимодействуют.
>>2351791 Если тебе надо вернуть указатель из метода, но не через return, а через параметры, то ты можешь либо передать его по ссылке либо через указатель на указатель. Чаще всего встречается при линковке с кодом на С, так как в С ссылок нет и там у них ⚹⚹ везде. В c++ это пидорская практика и, например, const T⚹⚹ = T⚹⚹ вообще запрещено.
Сап. Изучаю ООП, даётся сложно, путаюсь и постоянно забываю материал и все такое Объясните, в чем разница между двумя этими программами? Я написал программы с одними и теми же объектами и одинаковым результатом. В чем разница и в каких случаях как объявлять переменные объектов? Знаю два этих метода, но нахера они — пока в башке не отложилось, запутался сильно.
>>2352068 Слева вроде бы конструктор по умолчанию: переменные не инициализируются и выводятся те значения, которые записаны в конструкторе. А справа наоборот: в конструкторе нет значений, но они даются уже в объекте. А какая разница то? Где мне может понадобиться первый вариант, а где второй? Просто не понимаю, зачем мне эта информация.
>>2352069 Да, у меня совсем нет способностей в программировании, но и в универе хочу доучиться, и понять базу С++ для себя. А так, может, найду себя в чем-нибудь попроще веб-макака, 3d. Усугубляется проблема тем, что мне не хватает практики. До ООП я изучал С++ по курсу на Степике, и информация хорошо отложилась, проблем совсем не было. До курса я изучал так же, как сейчас, и у меня были проблемы. Но ООП курс не затрагивал, поэтому его я изучаю по сайтам: http://cppstudio.com/cat/274/ https://purecodecpp.com/ Канал SimpleCode на Ютубе И опять сталкиваюсь со старой проблемой: информация быстро забывается, не закрепляется, т.к нет практики. В курсе я писал программы, которые проверял преподаватель, мог спросить у него, что я сделал не так, получить помощь. Сейчас я придумываю задачи сам себе. А когда у меня что-то не получается — а у меня всегда что-то не получается — я начинаю простаивать. В лучшем случае мне смогут помочь на Cyberforum Может, есть какие-то советы, как практику получать, чтобы всё не забывалось и не путалось в башке? Если просто читать, смотреть, а самому либо не кодить, либо просто повторять то же самое, что в примерах — то будет как у меня: хуёво. А как нормально?
>>2352079 >В лучшем случае мне смогут помочь на Cyberforum Если тебе на нем могут помочь, то тебе уже ничего не поможет. >Может, есть какие-то советы, как практику получать Пиши код.
>>2352079 >Пиши код. И только. Причём не всякую хуйню вроде игрищ с i-o в cli а придумать что-нибудь крупное и работать над этим. Тебе не нужна жирная теория, базу выучил - начинаешь писать. Поначалу будет хуйня получаться, не будет компилиться, память потечёт. Ты должен учиться искать информацию, гуглить, читать референс, даже сорсы хедеров иногда. Стак и прочие форумы нужны только в рид онли моде, абсолютно всё, с чем ты столкнёшься - уже было решено до тебя. И самое главное, анон, и это не касается только прогерства, помни главное: не ешь жёлтый снег ты должен всегда и во всём стремиться прыгнуть выше головы.
>>2352133 Лол, вот почему так всегда? Честно, анончик, я искренне и продолжительно насосался, но только после гневного поста понял, что когда в байтиках попадается ненулевой sign бит, при конвертации uint64 он заполняет единицами весь остальной bitwise or.
>>2351660 >Кто не читал спецификацию вообще не могут крестовиками считаться, они просто сишники, пишущие процедуры с классами. А ну-ка, синьор-помидор, вот тебе вопрос: верно ли утверждение "чисто виртуальная функция - это виртуальная функция у которой нет тела"?
В одном из прошлых тредов кто-то как-то обмолвился, что сейчас за использование функций-фабрик могут отхлестать ссаными тряпками. Вопрос: почему? Ведь функции-фабрики можно для удобства по-разному назвать. Если такая фабрика бросит исключение (например, при попытке получения какого-нибудь ресурса) это исключение возникнет в функции-фабрике, а не в конструкторе, и его можно будет спокойно обработать. Код для примера https://0bin.net/paste/MZZRUmdk#dk7zaNNiLH4cyhJbelE9OGm0K3WuFmgqg+JQnPoRbFk Где подводные?
>>2352457 Таскать фабрику нужно будет вместе с объектом по всему коду. При этом тебе придётся закрыть часть конструкторов порезав интерфейс. Смысл есть только если Foo это ресурс, добываемый каким-то хитрым способом, о чём должна знать только фабрика. А ради исключение такой педалить точно не стоит.
>>2352159 Так никто внятно и не ответил "Эксперды" ояебу
>>2352457 >использование функций-фабрик Надо идти от задач, а не слушать долбоебов. Named constructor позволяет: 1. вместо 10 разных Xynta::Xynta иметь нормально проименнованные Xynta::fromSosach, Xynta::fromForchong и т.д. 2. зафорсить аллоцирование объекта только на куче (в shared_ptr)
>Если такая фабрика бросит исключение (например, при попытке получения какого-нибудь ресурса) это исключение возникнет в функции-фабрике, а не в конструкторе, и его можно будет спокойно обработать. Щито? По описанию похоже что ты не знаешь про function-try-block (https://en.cppreference.com/w/cpp/language/function-try-block --- просвящайся), хотя ловля эксепшонов в конструкторе нужна НУ ОЧЕ редко
Пишу архиватор. remove.cc отвечает за удаление файлов из архива. Насколько платформонезависимым, по вашему мнению, является такой жадный способ выгрызания кусков из середины файла?
>>2352728 Спокойно, я это все еще переделаю. Пока что функции addToArchive, extractFromArchive, removeFromArchive и listArchiveContents вызываются прямиком из мейна. Потом будет интерактивщина, чтоб один раз закешировав все Entry делать множество операций, и естественно я приду к другому интерфейсу. А пока я завернул это говно в Args. Правда, оно какого-то хуя не хочет работать с ranges::алгоритмами, хотя begin и end возвращает полноценные указатели. Хуй знает, чего ему в iterator_traits не хватает, заебался разбираться в логах.
>>2352663 >1. вместо 10 разных Xynta::Xynta иметь нормально проименнованные Xynta::fromSosach, Xynta::fromForchong и т.д. Шаблоны нинужны, да. Ты наверное ещё в название меременных тип вписываешь, ка диды из Микрософта советовали.
>>2352806 А вот если бы писал в ИДЕ, то она тебе бы сказала не писать такой хуйни как конструкторе или ифе. Кста, хули const нигде нет? На производительность кладешь хуй?
>>2351781 > >Интересно, как у нас hr зовут? > А должно быть? Хз, какая-нибудь Алёна или Тимур? Не, я имел в виду, что мне интересно какая у них должность по штатному.
>>2352083 >Если тебе на нем могут помочь, то тебе уже ничего не поможет. Почему? Хоть бы пояснил, а не многозначительно накинул дизморали. Если возникают проблемы, то можно создать тему там. Что не так? В разрабы С++ я никогда и не метил, надо просто программу ВУЗа осилить
>>2352105 Спасибо, вот тут годные советы, правда надо еще сообразить, что мне такое писать... Начну с того, чтобы писать лабы для универа
> базу выучил - начинаешь писать Напоминает изучение программ для видеомонтажа или работы с графикой. Я, как гуманитарий, привык много теоретизировать и читать книжки. Со временем понял, что в случае кодинга этот метод — полное дно, но в полной мере не избавился от этой привычки
>Поначалу будет хуйня получаться Я застрял на более ранних подводных: приходит в голову мысль, как что-то написать, а я не знаю, как это реализовать, что для этого использовать. Т.к даже непонятно, куда копать, чтобы что-то написать. Наверное, спрашивать тут, мб подскажут, куда копать, чтобы что-либо сделать. Например, недавно писал прогу по классам. Класс автомобиль и класс лошадь, у них какие-то свои параметры по типу скорости, массы. И мне нужно было, чтобы в отдельном классе "соревнование" они сравнивались по разным значениям. Я это реализовал через дружественные классы, но по заданию нужно было не так. Кстати, надо сейчас к этому вернуться. Может, мне нужно через наследование как-то? Надо разобраться и довести до конца дело
>>2345617 (OP) Нафига существует поток cin в С++, если им не возможно пользоваться? Нужно сделать простейшую вещь: сбросить как-нибудь этот поток, но нет, сделать это никак нельзя! cin.ignore() работает только, если в буфере есть символ '\n', которого там может и не оказаться, например, если пользователь ещё ничего не вводил. Проверить, пуст ли он тоже нельзя. В чем смысл всего этого, если приходится пользоваться getline? Причем всегда (я не могу придумать случай, когда это было бы полезно, кроме примитивных программок). Т.е. эта хрень cin вообще ни для чего не пригодна.
>>2352885 >>2352887 Просто это как-то по-уродски. Есть поток, со своим буфером там, методов у него куча, оператор >> для него перегрузили создатели и т.д. Но пользоваться им нельзя, потому что при всем этом нет простейших средств для работы с ним. Т.е. все сводится к использованию getline(). Альтернатива: нормальная реализация, а не эта хрень. Зачем нужно копировать в строку с помощью getline() ? А потом из этой строки создавать stringstream. Это лишняя трата ресурсов, когда уже есть готовый поток. Да и выглядит это все неестественно.
>>2352907 Ты не понял, предложи альтернативу назвав имя уже существующей либо приложив полностью работающий код который решал бы описанные тобой проблемы и который работает хотя бы не многим хуже оригинала. Пока не можешь этого сделать - все твои визги не более чем ослиная моча.
>>2352914 ослиная моча тебе читать мешает: проблема с вводом успешно решается с помощью getline. Далее stringstream или функции работы со строками (C-style или string).
>>2353049 >Комьюнити говно В чем это проявляется? Мне там помогали пару раз уже. До этого задавал вопросы на stackoverflow. Мне в принципе без разницы, где их задавать, отвечают везде
>Моча говно Возможно, частое явление на пидорашьих форумах, где могут забанить даже за мат
Поясните нубу, вот допустим я описал тип структуры MyStruct (структура держит в себе только примитивные типы, грубо говоря пару интов), далее если я например создаю локальную переменную в теле какой-то функции: >MyStruct s = MyStruct{1,2}; Нужно ли предварительно выделять (и, соответственно, освобождать) память, например, malloc-ом? И еще вопрос, если я например переприсвою значение этой переменной, кинув в нее новую структуру того же типа, куда денется память, которую занимала старая - значение в ней перезапишется, рантайм/ОС как-то высвободит ее или она будет болтаться где-то (грубо говоря, произойдет утечка памяти)?
>>2353135 В таком виде структура создаётся тупо на стеке, и выделять/освобождать память не нужно. При присвоении перезаписывается значение. Это всё равно что работать с примитивами наподобие int или double.
>>2353155 Когда в Сирии или на Украине дроны крошат людей я знаю что приложил к этому клавиатуру. Приходится как-то с этим жить. Это тебе не сайтики клепать.
>>2353155 >Какие подводные? никаких наконец то сможешь просто загружать-выгружать классы из динамически загружаемых модулей, а не городить подобия COM на структурах с указателями на функции
>>2352028 >С чего начать вкат в системное программирование не линупсе? начать нужно с оценки доступных ресурсов как минимум нужно иметь 2 квартиры: одну сдаешь, во второй живешь и 20 лет изучаешь это самое системное программирование, через это время может быть сможешь сделать что то полезное
>>2353138 > В таком виде структура создаётся тупо на стеке, и выделять/освобождать память не нужно. При присвоении перезаписывается значение. Это всё равно что работать с примитивами наподобие int или double. А если я передам в другую функцию указатель на созданную таким образом структуру? Она продолжит существование или умрет, когда завершится первая функция, в которой она (структура) была создана?
>>2353308 Т.е. если я хочу из функции вернуть структуру, надо вызывать new или аллоцировать память? Просто >return MyStruct{1,2}; Делать нельзя? Или возвращенное значение (структура) будет в стеке вызывающей функции?
Хочу поиграться с ASCII графикой, но мне не нравится виндовый терминал - и окно убогое, и цветов 16 и отзывчивость нулевая...
Кароч, есть самые простые эмуляторы терминала? чтобы: - дохулион цветов - можно менять размеры окна, в том числе на весь экран - реалтайм-рендер - поддержка юникода и шрифты ttf - не пердело на холодильниках - либа была в стиле header only, а не этом ебаном стиле "навалить говна и побольше" (я может в код поковыряю, да и не хочу ебаться с компиляциями, хочу кинуть себе в проект и чтобы работало)
Можно было бы и самому на opengl - но это вечная боль - вывод текста в opengl... Зачем велосипедить..
Прочитал 3 книги Мейерса, смотрю выборочно C++ weekly, уже на красном поясе, пилю 2 проекта. Но всё равно такое ощущение что я не знаю ещё овердохрена всего. Подскажите путь из такой позиции? Куда дальше раз я сам не знаю, чего я не знаю?
Анончик, какой из стандартных контейнеров гарантирует что если я сохраню указатель на его элемент, то после удаления/вставок - это указатель все еще будет валиден
>>2354314 Указатель на объект. То есть я добавляю объект в контейнер, затем беру указатель на этот объект (не итератор), и сохраняю его в другой переменной.
Теперь я хочу чтобы минимум при вставке или удалении каких-либо других объектов в этом контейнере эти указатели все еще были валидны, то есть контейнер не должен перераспределять память (ну конечно же указатели на удаленные объекты мне уже не нужны)
Мне не важно время доступа к элементу или порядок их хранения в памяти (можно хоть по всей памяти) Конечно же вставка-удаление хотелось бы за O(1), но тоже не критично.
Аноны, go тред полумёртвый, а мне нужна помощь. Как с помощью tcp передавать данные на go сервер? Вот есть например строка, массив и целое, как их передать? Пока кроме преобразования этого всего в строку и дальнейшего парсинга на самом сервере идей нет.
>>2354501 Полная хуйня. По спецификации эти выражения эквивалентны и не могут разный код генерировать, в обоих случаях там xvalue, никакого prvalue там нет. Вот таких чуханов, в глаза не видевших спецификацию, наслушаются, а потом пишут нечитаемый код-лапшу с багами.
>>2354545 >Полная хуйня. По спецификации эти выражения эквивалентны и не могут разный код генерировать Че? >>2354501 >Это правда?? Бля, а проверить самому? https://godbolt.org/z/aWGq3GKKM Внутри создастся еще один объект (a+b) - тут создается. *this = (a+b) -- тут скопируется Так что да, он прав
>>2354562 > а проверить самому Что за хуйню ты написал? У тебя же совсем две разные реализации, естественно они работают по разному. Переопределением ты можешь что угодно накостылять. А дэфолтные операторы так никогда не будут работать.
>>2354566 Ты долбоеб? Какие дефолтные операторы, сука? У тебя есть operator +. Ты, сын шлюхи, через него пишешь +=. Но. Оператор + возвращает не ссылку, а объект. Поэтому когда у тебя += пишется через +, то объект все равно создастся. Про это и говорит чел в видео.
>>2354568 Про move-семантику никогда не слышали, да? Серьёзно на C++98 пишете код? Это просто кринж. Если уж взялся писать свой оператор вместо стандартного, то пиши по человечески, а не говнокод.
Дело в том, что перестала видеть вызовы функций в CPP файле. VS выдает ошибку компиляции E0020. Хотя функция находится в том же CPP файле. До этого были глюки в ЗАГОЛОВКЕ где сигнатуры подчеркивались зеленым, но в итоге код компилировался, а теперь это зашло слишком далеко. Реквестирую помощь.
>>2354570 Ты долбоеб? Причем тут move-семантика? Ты понимаешь, что в видео чел объясняет, что нельзя писать += через +, а вот + через += можно Допустим у тебя там мув семантика. Но ты все равно создаешь объект, а создаешь ты его через + и как же ты его, долбоеб, сделаешь через move?
>>2354602 А какой контекст? Абсолютно вымышленный пример, не имеющий ничего общего с реальной реализацией этих операторов? Я тоже могу сделать из оператора сложения вычитание и говорить потом что складывать надо минусом, а не плюсом, потому что я так захотел. А факт в том что в реальном С++ эти операторы обязаны иметь одинаковое поведение, за исключением когда объект присваивания сам временный и может быть оптимизирован. Ну и как писалось выше, move и был придуман чтоб не копировать переменные лишний раз. Заканчивайте уже, сейчас зайдёт кто-нибудь из растотреда и засмеёт нахуй всех нас за копирование переменных.
>>2354625 Ты балбес? Ты заменил один конструктор (для которого есть принт) на конструктор для которого нет принта. Типа закрыл глазки и ничего там не создается. Крутааа
>>2354612 >>2354633 Вы реально долбоебы или в чем проблема? Какое нахуй велосепидирование? Какой нахуй контекст? Чувак говорит, что нельзя писать += через +. Либо вы показываете пример, где вы так написали и нет лишних операций по сравнению с наивной реализацией (val1 += oth.val1; ....) либо нахуй идите
>>2354630 > на конструктор для которого нет принта Ты ёбнулся? Где ты там увидел вызов конструктора? Уноси своего долбаёба, неумеющего складывать числа.
>>2354722 Пробовал, но это было давно. А так параллельно со Страуструпом читать довольно хорошо помогало в некоторых темах. Сейчас год не писал на плюсах, хочу знания освежить прежде чем камбек делать.
>>2354638 > показываете пример https://godbolt.org/z/f47zzrb6d Держи, никаких созданий объекта, никаких лишних вызовов конструктора. С -O1 там вообще одна инструкция add. Схуяли мне кто-то там будет запрещать писать += через +? В Си-тред с такой шизой идите.
Как в языке происходит работа с хардварью? Расскажите в общем, я вообще зелёный в этой теме. Как я понимаю, на около высоком уровне это работа с api системы, дёргание драйверов, прерываний и всего такого?
>>2354766 Ты долбоеб. Ты просто конченный хуесос Я в ахуе Ты. Чтобы доказать что-то написал такой шмат говна, что любой адекватный человек захотел бы выброситься из окна Foo& operator=(Foo&& oth) { return oth; } Реально? С ебалом все хорошо? А мать живая? Оператор присваивания будет возвращать ссылку. И ничего не присваивать. Гениально нахуй А оператор + будет тоже возвращать ссылку. И теперь давай напишем F(a, a+b); и сходим нахуй Потому что какой-то говноед решил что так будет правильно и никто ему ничего не запретит Ты наглухо отбитый долбоеб. Просто нахуй иди Ты поменял местами правильный вариант попутно разъебав всюлогику, чтобы доказать, что изначально ты не ошибся. Признай что ты сын шлюхи и выйди в окно
>>2354788 > Реально? Это называется move-присваивание. Ты первый день с крестами знаком? > И теперь давай напишем Пиши move-конструктор сначала или оборачивай в std::move так же, наркоман. Ты сам поставил ебанутую задачу, получай соответствующее решение. И нехуй тут вилять жопой, условия задачи выполнены, с другими требованиями ты следуешь нахуй.
>>2354794 Какое move присваивание, сын шлюхи? Где у тебя присванивание, хуесос? В move конструкторе идет мув членов класса. Где он у тебя, долбоеб? >условия задачи выполнены Охуенно. Открой буст, сука, открой stl, открой любую нормальную либу. Попробуй найти там хоть один оператор =, который возвращает ссылку. Ты не сможешь, хуесос. А знаешь почему? Потому что так никто не делает. У тебя оператор присванивания портит объект. Напиши просто a+b; Это валидно с точки зрения синтаксиса. И это не должно изменять а. А у тебя меняет. И все потому что твоя мать плотно сидела на герыче во время беременности.
>>2354803 Ожидаемо, абстракция над машиной запрещает (не может разрешить) полное использование всех ее возможностей, из-за этого образуются абстрактные решения в языках, в виде неопределенного поведения и неуточненного поведения.
>>2354801 > move конструкторе идет мув членов класса Дегенерат, не путай конструктор с присваиванием. https://en.cppreference.com/w/cpp/language/move_assignment > Ты не сможешь Потому что никто в здравом уме не будет через переопределённое сложение переопределять +=. Это же твой ебучий говнокодер из Яндекса такую хуйню из пальца высосал. > a+b Долбаёб, результат этой операции - rvalue. Чтобы его куда-то впихнуть тебе надо создать move-конструктором нормальный lvalue-объект, либо сконвертировать его через std::move. Сам объект там ничего не меняет, ты впервые ссылки видишь что ли?
>>2354810 >Дегенерат, не путай конструктор с присваиванием. По твоей ссылке A& operator=(A&& other) { s = std::move(other.s); std::cout << "move assigned\n"; return *this; } У тебя где мув члена класса? Где, хуесос? >Чтобы его куда-то впихнуть тебе надо создать move-конструктором нормальный lvalue-объект Я просто хочу его впихнуть в твою мертвую мать Ее на земле нет. Поэтому делаю это просто вот так https://godbolt.org/z/nfbjdGoWs Значение a.x изменилось. ЧТО С ЕБАЛОМ, хуесос?
>>2354825 > По твоей ссылке Чухан, глаза протри. Это просто второй объект перемещается в первый. > ЧТО С ЕБАЛОМ Нихуя ты как приложил. Только ты приложил не меня. В оригинальном коде такая же хуйня. Спроси вот у этого хуесоса что с его кодом >>2354562 https://godbolt.org/z/9b44PMf1h Я надеюсь это не ты его писал? Будет просто орево тогда.
>>2354831 https://godbolt.org/z/d5drnsa4q Окей, долбоеб. Вот тебе твое мув-присваивание. Почему а не меняется? А мне похуй чья это ошибка? Твой охуенный код для а меняет значение. Задачу ты не выполнил. Так что твоя дорога прямо нахуй и в окно
>>2354837 > Почему а не меняется? А схуяли должен? std::move принимает rvalue, идиотина. А "b" у тебя lvalue. Для копирования "b" в "а" тебе надо конструктор копирования определить: Foo& operator=(Foo& oth) =default; Это тебе не раст, чтоб ты мог вот так переменную переместить. Ты же понимаешь, что после того что ты пытаешься сделать b должна стать инвалидной? Ты точно кресты не первый раз видишь?
Как создать конструктор с несколькими обязательными параметрами и несколькими необязательными? И как можно проверить на то, инициализировано ли поле класса.
>>2354920 А потом жмёшь на компиляцию и тебе высерает что не может определить тип где-то в кишках STL. И начинаешь перебирать этот кал в поисках что не так.
>>2354929 >Макросы для быдла и сишников. >>2354933 >Хуя дэбил Чел прав объективно, любое юзание макросов кроме как для разн версий платформ - хуйня
>>2354903 struct a { a(int p1, int p2 = 42){} }; Поля инициализированы все после конструктора. Если нужно именно рациональное, а не дефолтн значение - std::optional, так и поля сделать можно "неинициализированными" и проверять с помощью has_value()
>>2354945 Избегать лишних выделений памяти, копирования (юзать move, передавать по ссылке), меньше индирекции (доступ нанапрямую, а не через цепь указателей), нормальное выравнивание (? вроде же можно делать упакованные структуры, с битами итп, хз в спп или ток си, это сто проц медленней обычн представления), максимально переносить вычисления на компайл тайм (вместо рантаймы, т.е. constexpr например), комптайм полиморфизм > рантаймового, оптимизировать на локальность доступов к памяти (например юзать массив (последовательный кусок памяти) вместо связных списков), ! использовать алгоритмы и структуры данных под задачи, включать оптимизации, fast-math, избегать простоя (типо ожидание ввода, решение - корутины), распараллеливать прогу, юзать статическую линковку вместо динамической, gpgpu, понимать оптимизации компилятора и как не мешать ему...
>>2354566 >>2354572 > дэфолтные операторы так никогда не будут работать. Он блядь не говорит про дефолтные. Он говорит что нельзя писать this = this + value; при чем тут блядь дефолтные? Он говорит про перегрузку
>>2354570 >Про move-семантику никогда не слышали, да? Сука, при чем тут move семантика? Просто есть дауны которые пишут в перегрузке операторв: return this = this OP value;
Тут никакая move сементика не спасет от лишнего присваивания и лишнего вызова перегрузки оператора. Смотри мой код >>2355010
Конечно компилятор может подумать что ты даун и убрать... А может и не убрать.
>>2355015 Ты траллишь тупостью что ли, почему на скринах какой-то левый код? Нахуя ты написал другой код и сам с собой споришь, дебил? Я тебе даже картинку нарисовал, тупая ты хуесосина.
Помогитепж, не программист вообще, так что не смейтесь в магазине имеется ассортимент из n флешек. о каждой флешке заданы сведения:название, объëм памяти, цена. напишите функцию, которая возвращает название и цену самой дешевой флешки
>>2355174 Ну создай объект флешка. Создай ему геттеры, которые возвращают его цену и название. Создай вектор флешек, заполни его. Напиши функцию, которая принимает ссылку на вектор, перебирает его и возвращает новый объект флешка (очевидно, потому что два значения возвращать в плюсах нельзя.)
Аноны, как бороться с "error LNK2001: unresolved external symbol" для моего же кода? Один класс внезапно перестал линковаться. Если копипастом переношу код из .cpp в .h и вставляю после объявления класса, то всё работает, с кодом в .cpp — нет. При этом при компиляции в консоли я вижу что он компилирует этот .cpp, но один хуй выдаёт ошибку линковки. Сама IDE никаких ошибок не показывает и видит код в .cpp. Что он хочет от меня? Как понять что не так?
Подскажите плиз. Мне нужен контейнер, чтобы можно было по key брать value, но в то же время чтобы этот контейнер можно было отсортировать по value. Сначала я стал использовать QMap<QString, MyStruct>, но оказалось, что он сортирует только по key и только по алфавитному порядку, что мне не подходит. Потом попробовал QVector<QPair<QString, MyStruct>>, но из него брать содержимое геморно, приходится перебирать весь вектор, хотя его вроде отсортировать можно. Что делать? Существуют ли вообще такой контейнер типа QMap, но который можно отсортировать по value?
>>2355399 Даже элетрон лучше того кала, xml + стили — очень хорошее решение для быстрого и красивого интерфейса, а для производительности wasm есть. Qt — просто самая отвратительная либа для крестов, изобретающая велосипед везде, куда смогла дотянуться.
>>2355390 Ну подставь вместо "Q" "std::". Та же хуйня, тот же вопрос. Как сделать то? Я пробовал гуглить, там кроме вектора с парой внутри ничего не предлагают. А мне че то не хочется такую конструкцию юзать, как то уродливо выглядит.
>>2355423 Я пробовал, не получилось. Ругается, что не определен operator-. Пока не разобрался, хули ему сдался этот минус. И я вообще не уверен, что мапа отсортируется по value. Мне кажется, этот компаратор подействует только на сортировку по key. Ну то есть map он итак по дефолту сортируется по key, просто ты дефолтный компаратор заменяешь своим.
>>2355376 если ты помнишь теорию реляционных баз данных что в вузике учил, то поймешь что для решения этой задачи нужно сделать 2 структуры поиска, если бы это была табличка в субд то ты навесил бы на ее 2 индекса, главный и вторичный ну а как сделать похожее на крестах для структуры в оперативной памяти, сам уже сообразишь, надеюсь
>>2355476 > в вузике учил Чё бля? > 2 структуры поиска, если бы это была табличка в субд то ты навесил бы на ее 2 индекса, главный и вторичный Это чё такое-то вообще?
>>2355057 потому что ты долбоеб, внимательно посмотри на operator+() - тебя за такое в продакшене кастрируют. Потому что этот оператор должен быть константным. Нахуя ты модифициуешь сам класс в нем? То есть ты в принципе всю логику написал неправильно (попробуй написать Foo c = a + b и посмотри что будет в a.
Из этого ты нахуя-то полез в мове-семантику, и дрочишь на единорожный асемблер в вакууме, забывая что компилятор не везде сможет так оптимизировать
И все это ради того чтобы не писать правильно operator+=().
Повторю, если писать operator+=() правильно, то никакие move не нужны, там в принципе нет никакого выделения памяти. И не должно ничего выделяться.
Память выделяется, если ты шизоуебан, пишешь this=this+value. И вот это уебанское решение ты подпер своим костылем move.
>>2355561 Соси хуй, дегрод. Я не менял поведение оригинального кода, на этом вопрос закрыт. И не должен был, задача была оптимизировать создание временного объекта - это сделано. > если писать operator+=() правильно Спроси у того питуха из Яндекса почему он решил не писать его правильно, а переопределять через переопределённый operator+. До меня-то ты нахуй доебался, шакал? Естественно со стандартным operator+ это всё пишется без костылей и временных объектов. > Память выделяется, если ты шизоуебан, пишешь this=this+value. Уебан, она выделяется при возврате результата этого выражения из метода, а не от наличия этого выражения. У тебя rvalue кастуется в lvalue через вызов конструктора, мудила. Если ты сам пишешь некорректный код с созданием временного объекта вместо явного запрета делать это, то это проблемы твоего говнокода.
>>2355563 >Спроси у того питуха из Яндекса почему он решил не писать его правильно, а переопределять через переопределённый operator+. Ты долбоеб? Он говорит, что так делать не стоит именно из-за создания объекта operator+ можем быть определен через += Но += не можем быть определено через operator+ И объясняет почему. Конец блять. Вы из какого-то видоса для школьников/студентов развели пиздец какой срач. Причем в видосе все и объяснено
Пара тупых вопросгв по asio. 1) Я правильно понял, что при смерти сокета другой компьютер не узнает о том, что сессия всё и будет по таймауту отрубаться? 2) Если я сделаю connect к тому же ip/порту к которому уже подключился, то мне вернётся копия сокета? И теперь если я буду писать парллельно в них, то данняе перемешаются?
>>2355783 >А вообще мне нужно отправлять пакеты, но с подтверждением доставки - Клиент: Привет! - Сервер: Привет! - Клиент: Вот тебе данные: "КАКОЙ-ТО БОЛЬШОЙ КУСОК ДАННЫХ", а вот их хэш: 0x12345678. - Сервер: Принял данные, а вот их хэш: 0x12345678. ... - Клиент: Пока!
>>2355784 Т говоришь юзать udp? Но там же 100500 нюансов. Я заебусь писать это всё так, чтобы оно везде хорошо и быстро работало. А еще файлы через udp одним паке ом не отправить
>>2355795 Ну тогда у меня остаются те же вопросы. Как одновременная отправка нескольких пакетов одному компьютеру будет происходить? Оно вообще будет работать?
>>2355797 >Как одновременная отправка нескольких пакетов одному компьютеру будет происходить? Очередь произойдет. >Оно вообще будет работать? Работает же.
Но при этом пик (кстати для write такого условия нет). То есть если один пакет уже отправляется, я хочу отправить второй, подключаюсь, от сервер у себя создает уже другой поток из которого я могу читать независимо от первого?
>>2355817 И даже если считать, что пока выполняется один read второй ждет, всё равно им нужно иметь разные потоки, чтобы порядок был сохранён и каждый считал своё
Как наиболее эффективно удалить n байт из определённого места в бинарном файле и после сдвинуть весь контент идущий после него на позицию начала удалённого куска?
>>2355461 >>2355477 Короче проблема решилась гораздо проще. Просто поменял местами key и value в QMap, получился QMap<MyStruct, QString> который и отсортировался автоматом по MyStruct. А уже из QMap можно брать и по key(value) и по value(key), как угодно.
Если прога довольно хорошо нагружает процессор (поток) то в какую сторону прежде всего смотреть? Математики особой не происходит, итерируюсь рекурсивно по директориям, читаю контент некоторых файлов.
>>2356081 Посмотри на файловые менеджеры и менеджеры процессов, посмотри сколько они потребляют ресурсов, посмотри сколько потребляет твоя программа, если больше и логика обработки данных небольшая, то ты проебался. Если программа однопоточная, то забей на потребление времени.
Есть ли способы выйти из множества вложенных циклов быстро, кроме как использовать goto? Может есть способ выйти из функции при этом сразу зайти в другую при выходе. А то заебало флаги городить и проверять. И я не пойму что такое callback функция
>>2345617 (OP) Доброго дня, аноны! Я в проге новенький, поясните, можно ли так делать? Из функции снова вызывать эту же функцию снова. А то goto - это очень дурной тон, насколько я знаю, но иных вариантов прекращения выполнения функции (или передачи управления предыдущей функции) в центре кода я не знаю.
И почему рекурсия хуже, чем goto? Я сколько не сталкивался с описанием гото - будь-то комментариями в интернетах или словами преподов - его все рекомендуют избегать.
>>2356208 Да, жор памяти, сделай цикл и булеву переменную о том что данные не правильно введены. Когда ты вызвал функцию считывающюю и проверяющую правильность данных она должна эту булеву переменную пометить, типо если правильно, то тру, а если не правильно то фолс. Патом когда программа из функции выходит, то цикл проверяет булеву переменную, если она тру то выходит из цикла, а если фолсе то опять функцию вызывает. Ну или сделай что бы функция не флажок меняла, а возвращала значение true или false, в результат от правильности или не правильности ввода данных. И помести в while(!имя_функции());
>>2356211 А если я сделаю функцию типа Int, по центру кода сделаю проверку условия, и при выполнении этого условия буду вызывать return xxx - правильно я понимаю, что return завершает выполнение этой функции, и сколько там кода дальше написано - не важно?
Что за ssize_t? Я либу какую то в qt юзал, всё нормально собиралось. Перенес на винду в visual studio и qt tools и теперь ошибка ssize_t неизвестный идентификатор
У меня есть много функций и методов, принимающих структуру из двух флоатов (vector2f), есть ли смысл передавать их через ссылку, или лучше во всех случаях передавать по значению? Собираю проект под 32 онли
>>2356446 Всегда по значению, всё в кешлайне бесплатное. Но могут быть варианты в зависимости от того откуда ты эту структуру взял, может быть эффективнее переместить её в метод.
>>2356580 Сыш, ты бы меня, гигачеда, вживую увидел, у тебя бы голос задрожжал, а твоя тян сама попросилась бы ко мне в Москвич. >>2356585 Если ты про test.cc, то это чисто для проверки работоспособности бэкенд части, я еще нормальную программулину на ncurses планирую сделать. Или ты про лесенки в archive.cc без фигурных скобок? Алсо, главной проблемой считаю наличие лютого хардкода с отрицательными оффсетами, в нескольких методах сразу. Это надо как-то капсулировать. Ну и в принципе sync-методы у меня разраслилсь маленько, надо рефакторить. Алсо, я забыл почистить deletedFolders после синка. >>2356598 Закину как-нибудь.
Тут кто-нибудь пользуется модулями? Как сделать чтоб инклюды из интерфесного файла можно было использовать в .cpp? Я пока только два варианта вижу - дублировать инклюды в .cpp или писать весь код в интерфейсе .ixx.
Какой канон обмена информаций между очень разными классами? Например сервер должен считать с сокета и вывести в форму. У меня обработчик сервера это класс. Мне в него как то передавать указатель на функцию формочки которая выведет сообщение? Заморочно как то
1) Можно ли перенести расширение с одного VS2019 на такой же другой, например не могу теперь найти расширение viasfora на другом ПК в той же VS2019 2) Почему оно исчезло 3) Есть ли ему замена, оно раскрашивает в разный цвет скобки например и легко заметить ошибки
Почему я слышу как язык С используется в высоконагруженных серверных приложениях или ядрах систем. Какие в нем инструменты, которых нет в С++ или даже в С#?
Посоветуйте примеры кода хорошие (желательно не огромные в которых несколько дней разбираться) с сложной архитектурой. Я закопался сильно очень и не знаю как правильно написать сложный код, как всё разделять и склеивать там, где это необходимо. Вот мне надо написать простую на словах штуку: синхронизацию с помощью паксоса файлов на диске. Тут нужно и с сетью работать, и паксос в отдельную сущность вынести, и структуру файлов поддерживать, понимать что когда надо засинькать. При этом паксос должен иметь взаимодействовать с синхронизируемым значением, значит полностью независимым его не сделать.
>>2356886 Да. Но я уже пофиксил - удалил проблемный, создал новый файл с таким же именем, скопипастил содержимое старого и оно собралось. Что за параша?
>>2356907 В чем фикс заключается? >>2356911 Ой бля, мне эти std::tri(std::chetire(std::ja), std::pidoras) на работе хватает, дай пообщаться с любимой STL-ечкой на ты. Спасибо, что напомнил, кста. Я там в паре мест по привычке написал std::string. ПОЙДУ-КА ИСПРАВЛЮ И УБЕРУ ЭТОТ НАХУЙ НЕНУЖНЫЙ ПРЕФИКС ВО ВСЕХ МЕСТАХ, ДО КОТОРЫХ ДОТЯНУСЬ. И ШО ТЫ МНЕ ТЕПЕРЬ СДЕЛАЕШЬ? А??? А???????
>>2356906 Вообще, я думал забить хуй и тупо хранить список пасов со слешами в конце, и тупо строить по ним рантайм-дерево, чтоб в таком же виде отсериализовать обратно. Но это я сейчас все дерево кеширую, а идея в том, чтоб обмазаться паттернами и усовершенствовать это все в будущем, чтоб как-то кусками подгружалось. Максимально жадно. Хотя, можно просто сплошных буферов со своими кастомными вьюхами наделать, уже экономнее выйдет, чем все эти векторы со стрингами.
>>2356915 >В чем фикс заключается? В спойлере. >>2356917 У тебя неопределенный порядок байт, неопределенная кодировка имен файлов, избыточное потребление памяти на формате и т. д.. Для лабы подойдет, для реального кода нет.
>>2356920 >В спойлере. Пиздец, охуенно пофиксил, прям сразу эффект появился. >неопределенный порядок байт Вообще-то, fileutils.hh как раз конвертирует endianness. >неопределенная кодировка имен файлов Похуй, главное чтоб нуль-терминатор был. Остальное - забота фронтенда. По той же причине я не проверяю на дубликаты имен, потому что archive.hh и поиск по имени не предлагает, а лишь дает итерироваться. Хочешь одноименными файлами и папками срать на одном уровне - сам менеджи как хочешь. >избыточное потребление памяти на формате Это да, особенно в моем примере. Я решил на абсолютных оффсетах в сегмент данных не экономить, чтоб хоть терабайт паковать, но можно какой-то бит придумать, чтоб оно кондишенали работало. Это все еще пересмотрю.
>>2356919 Да там с первой строчки говно какое-то. Нахуя static и лишняя нелинейность кода? Зачем constexpr, если оно никогда не выполняется во время компиляции? Буквально каждую строчку надо переписывать, не говоря уже про то что написано как будто сишником.
>>2356926 >Зачем constexpr, если оно никогда не выполняется во время компиляции? Я там в одном месте numFolders=0 передаю. >не говоря уже про то что написано как будто сишником Так и есть. Хотя, я иногда пытаюсь в функциональный стиль.
>>2356932 >Вот это? Где тут определенность? Он из машинной преобразует в альтернативную, в итоге образуется неопределенность. Все там нормально. convertEndianness всегда ставит в соответствие least significant byte с последним адресом. На big endian машине вернет без изменений, на little endian - вернет задом-наперед. То есть после сериализации всегда получится big endian, а после десериализации - по архитектуре. >Переносимость между системами нулевая, в одной может быть ютф-8 кодировка для имен, в другой ютф-16 и т. д.. Узнать в какой кодировке было исходное имя очень сложно. Это да, надо как минимум создать для фронтенда геттер-сеттер ендпоинт для дополнительной секции, которая всегда пишется в архив, чтоб продвинутый фронтенд умел в такую переносимость. Мой test.cc не в счет вообще.
>>2356940 > всегда ставит в соответствие least significant byte Ставил бы, если бы ты кастанул правильно. А в твоём варианте просто переворачивает. А вообще у тебя в STL есть платформонезависимый конвертер, нахуй ты велосипед изобретаешь.
И еще тупой вопрос по ООП и архитектуре. У меня есть класс A который работает с сетью (это не конкретно его цель, но сеть он использует). Есть класс, который занимается еще другой штукой B. И собственно сам класс, который занимается работой с сетью C. В и С должны быть внутри A. Как прокидывать связи между A,B,C. А->C понятной как. Он имеет к нему доступ, может просто дергать нужные функции. А как адекватно взаимодействовать между B и C. Они на одном уровне абстракции. Сделать C членом B не могу, поскольку экземпляр сети должен быть единственным. Просто ссылки делать?
>>2357081 > А как адекватно взаимодействовать между B и C. Это уже по умолчанию не адекватно. Если С - низкоуровневая работа с сеть, а А - абстракция над ней, то В не должно вообще знать о существовании С. Отправляй из А в С данные, которые нужны С. >>2357085 > коллбеки Лучше не надо, кидай лямбды как параметр функции. А ещё лучше корутины используй. Но для работы с сетью, опять же, лучше передавать данные куда надо, а не код.
>>2357094 A вообще занимается всем по сути. Это такой главный объект программы. B - некая довольно объемная логика, которая тоже использует сеть. Совсем оградить B от C я не могу. Значит буду наверх подниматься, а оттуда уже вниз. Спасибо
>>2357100 У тебя дерево зависимостей должно быть. Не пирамида и не кольцо. Сечёшь, чел? >>2357097 > главный объект программы Очень плохая хуйня. Делай дерево, не гриб ебаный.
А как лучше связывать объекты, если никто не является друг другу предком? Передавать в конструктор указатели на функции другого класса? Или делать эдакий коннектор, который внутри себя хранить что и когда куда перекидывать и в нём уже все связи разруливать? Что то типо системы событий получится. Я в qt похожее видел
>>2357116 Проблемы с менеджментом памяти порешали все шизоидные джава-паттерны. Взаимодействовать с экземпляром объекта должен владелец этого экземпляра, если прям очень сильно надо, то передавать ссылку на этот экземпляр, но стараться по минимуму. Отдавать указатель на себя кому-то нельзя, лучше делать грамотный интерфейс у потомка и взаимодействовать с ним через вызов его методов, передавать только то что ему надо. А ещё можешь получить цикличную зависимость - это вообще пиздец, сразу знай что ты обосрался когда такое получилось и надо серьёзно переосмыслить что ты делаешь. Алсо, вместо указателей должен быть unique_ptr, когда передаёшь по значению что-то желательно при любой возможности делать move или forward.
Писать на си вместо плюсов бред. Для низкоуровневых штук 0 разницы. Зато синтаксис приятнее во многом. На си обычно пишут там, где компилятор нормальный плюсовой не завезли
>>2357436 Понял тебя. Чувствую, ты человек шарящий. Недавно тут сказали, что красивый код в проектах OpenCL и BOOST. А есть маленькие проекты на гитхабе, по котором можно поучиться писать красивый и эффективный код?
>>2357529 Когда подключен дебаггером, то при вызове этой функции тебя в него выкинет на этой строчке. У каждого компилятора свой механизм этого, у тебя на пике чисто MSVC-шная реализация.
Сап, крестовый. ВУЗик ебёт прогой на самом лучшем ЯП конечно же я о С++. Надо отсортировать массив работников по фамилии. Ну а по правилам если первая буква одинаковая то сравнивать надо вторую. Но у меня почему-то код не хочет двигать элементы массива структур хоть убей. Код: https://0bin.net/paste/fE-I3J32#9JfraPh0wdd5a118sjRikedebIsdO3r9oehWfJeJY69 Скрин результата выполнения прикрепляю. Софт: VS 2022, MSVC Заворачивание функций и структуры в namespace в headerе не моя прихоть. Как видите: что-то там сортирует с ебейшим числом пропусков, в чём и проблема, но я так и не понял, какого хуя, но по факту хуй там. Функция вывода даёт массив в том виде, в котором я его заполнял. Примечательно что первая реализация, накиданная для каркаса, сравнивающая только первые символы, работала очень даже хорошо: https://0bin.net/paste/L2jk6YKV#AT3U11+R1+U3b7hVeqvFm35Dk0TysqJsxeO8YOGKypg Тут только функция сортировки, а не весь код, но больше ничего не менялось, кроме замены cin на cin.getline() и добавления скипа \n оба изменения чтобы читался пробел.
>>2357649 > с ебейшим числом пропусков, в чём и проблема, но я так и не понял, какого хуя Отбой с этим замечанием, в этот раз, почему-то, пропусков сколько и должно быть. До этого же оно мне по 30 раз выводил Skipping. Т.е., сейчас вроде всё верно, но толку всё равно нету, должно быть Алах -> Аллах -> Алллах.
Ответьте на вопрос пожалуйста. Через месяц надо идти на практику, после буду устраиваться на стажировку/работу. На выбор есть завод, там микроконтроллеры, ПО на c++/c. Так же есть офис, там c#.
Люди пишут, что на заводах все тухло с айти, мол там нет динамики и вообще на заводе нет проектов и тд. , будешь тухнуть. Я хз, мне главное освоиться в плюсах и поработать в реальных проектах.
Пишу сюда, потому что сам учу плюсы и надеюсь мне ответят те, кто работает прогером на заводе(на плюсах).
Что делать ? Идти на завод или учить шарпы и идти в офис? Работа на плюсах у нас только на заводе, либо в говно студии, где клепают визуальные новеллы.
>>2358090 Кодить под железо на С это самое дно по ЗП. Если на заводе именно это - сразу нахуй. Если с++, то смотри что за железка и какой уровень абстракции софта. В идеале если железка умеет обрабатывать серьёзные потоки данных (например от радаров, лидаров, камер) и работает под полноценной осью, имеет фронт и бэк.
С C# можно прокачать разработку бэкенд и сервисов, а потом перекатиться на нормальный язык в нормальную контору. Но опять же, если это тупо интерфейс к системе документооборота - то назуй.
За C# платят примерно как за c++, так что оба стула не очень.
>>2357314 Как и сказал >>2358144, С++ жирный. С банально быстрее. В нём нету ООП и всей этой модной хуиты, он может показаться довольно топорным для тех, кто знаком с Java/C# или ещё более простыми ЯП, но эта топорность вызвана чисто техническими ограничениями компьютеров. И если в иных языках эти ограничения обойдены костылями из коробки, то С перекладывает эту роль на пользователя, где он может поебаться и сделать тем, что есть, придумывая свои собственные костыли, которые, однако, куда меньше херят производительность, так как делают только то, что нужно в конкретном проекте. Это преимущество и С++, но С++ всё же куда гуманнее в этом плане. >>2358125 А я сказал с конца, значит с конца. Меня порядок пунктов слабо ебёт. Аж никак.
>>2358219 > которые, однако, куда меньше херят производительность На ходу фантазируешь? Кресты с кодом в си-стиле работают так же быстро как и сам си. Но при этом есть большое количество задач, в которых кресты быстрее си. Ну и вспомни хотя бы какое извращение выдумывали в ядре линукса, чтоб изобрести свой ООП с динамической диспетчеризацией.
>>2358237 В догонку ещё можно сказать, что на c# будет быстрый старт - открыл студию и пиши код. А вот с c/c++ тебе придётся поначалу тратить до 70% времени на борьбу с линуксом, системами сборки, кросскомпилцией, прошивками, редакторами типа vim, консольными отладчиками и ковыряниями в логах. Остальные 30% ты будешь писать код.
>>2358274 Потому что ты смотрел видосики как соевые няшатся с малинками и как робот Atlas весело скачет по коробочкам. На скрепных заводах такого нет обычно. Максимум какой-нибудь слабовичок из семейства STM и FPGA к нему впридачу.
>>2358287 >соевые няшатся с малинками и как робот Atlas весело скачет по коробочкам Ну так это я и хотеть. Я не в скрепной живу, потому повторю вопрос: как вкатиться?
>>2358459 Чел, сейчас фактически только две IDE существует: VS для винды и CLion для любителей опенсорсного говна типа линукса. Ну ещё есть текстовый редактор VS Code для любителей консольки. На этом всё.
>>2358478 2% вообще странные люди, они ничего не любят, кроме долбёжки в консольку. Про то что можно писать системный код на чём-то кроме С и питона узнали только пару лет назад. Больные люди.
>>2358484 Не знаю, я просто хочу комфорта. У нас писали в основном в CLion'е. Ну а мне нужна среда легкая (по ресурсам) ибо часто таскаю нетбук с собой, да и там i3 стоит, не будет гармонии. Хотя я не хейчу остальные Ide или ОС, мне просто так комфортно.
>>2358475 >текстовый редактор VS Code Расширение от мс не может распарсить средний проект на крестах, кланговское расширение выглядит, как говно. Проще сразу саблайм ставить.
>>2358288 >как вкатиться? Как и всюду: смотришь вакансии, если где-то половина строчек в requirements совпадает с твоими скиллами, то отправляешь резюме. Если нет, то осиливаешь требования.
>>2357868 Потому что ты хочешь остановиться и глазами посмотреть состояние программы в определённый момент. Это именно функция для отладки, не для обработки ошибок или чего-либо другого.
Безопасно ли записывать данные в объект по его адресу напрямую? Хочу с сети получить структурку и сразу записать ее без конструкторов и тд. Если бы я юзал просто struct или class без полей, то можно. Но мне хочется отнаследоваться от абстрактного класа и хранить вектор наследников. Не возникнет ли тут проблем?
>>2358796 Могу упороться и написать структуру чисто для записи и уже класс с конструктором от этой структуры, который буду в вектор писать. Но выглядит немного некрасиво
>>2358791 Всё, что не-POD, близко нельзя подпускать к read/write/memcpy и чтению сырых байт их экземпляров. А то ненароком vptr перетрёшь или залезешь на другое поле. Выдели отдельную структуру, оберни её в pragma pack и читай в неё хоть из файла, хоть из сети.
>>2345617 (OP) Сап. Qt Creator не доступен для скачивания в рф, удалось скачать open source версию ide, но там отсутствует комплект для c++. Где его взять отдельно без гомоебли с vpnнет такой возможности
Здравия желаю, аноны! Подскажите, как в плюсах можно написать консольный ввод так, чтобы символов не было видно или они выводились звездочками? Знаю про С-шный getch и putch('c'), а в стандартных библиотеках С++ есть что-нибудь с подобным функционалом? Допустим, чтобы я сразу мог писать в стринг, а не в массив чаров, потом стринг приравнивая с этому массиву
>>2359047 Ну хуй знает, попробовал посворачивать в разных файлах, сохранять и перезапускать студию - вроде при открытии всё остаётся как было при закрытии
Решил на днях начать разбираться в новом сорте говна
Будучи избалованной C#-макакой, привык к тому, что интеллисенс в Visual Studio на ходу объясняет, чё делает классы/методы/переменные, к которым я пытаюсь обратиться, чего теперь пиздецки не хватает, см. пикрел. (Методы на картинках абсолютно рандомные, чисто чтобы показать, о чём я.)
Есть, конечно, https://en.cppreference.com с вроде бы годными рефами, но очень хочется увидеть их прям в редакторе, не копипастя название метода в окно браузера. Находил какие-то упоминания doxygen, но как заставить его работать с интеллисенсом для стандартных библиотек так и не разобрался.
>>2359478 Собственно, вопрос: как пофиксить? на данный момент я использую Visual Studio, но мне в целом не принципиально до тех пор, пока мне не нужно слезать с винды.
>>2359486 Никак. Для дотнета документация тянется из xml doc комментов (если их кто-то написал) или метаданных сборки (куда она попадает из комментов). Для плюсов такого никто не писал, хорошо хоть плюсовый интелисенс научили работать с док комментами, так что если в какой либе (бусте например) они будут, то в подсказку потянутся, а так - увы. Пользуй cppreference, там все что надо есть, всё равно раз только начал, без подробностей не разберёшься, или протопчешься по всем граблям.
>>2359565 На cppreference есть несколько вариантов для скачивания документации, один из них это документация от doxygen - нельзя никак заставить интеллисенс тыкаться в неё? Если и это не прокатит, есть ли возможность в вижуал студии перенаправить "Search online" (пикрел) с богомерзкого бинга на cppreference?
>>2359567 Про скачивание знал, но думал, что там только html и pdf, про doxygen не знал. Надо расширение для студии поискать, может и есть, чтобы внешний док подхватывать.
Блять, как же неудобно, пиздец просто, почему плюсы так долго рожают это все, что я не доживу, по ходу? Хосспаде, как же хочется писать: std::set_intersection(std::views::keys(map), requiredKeys, std::back_inserter(result))
Я создаю функцию main, а в ней int i = 0; int n; int* ptr = &n;
Затем в бесконечном цикле 1) инкрементирую счетчик i, указатель ptr и мусорное значение по указателю ptr и 2) вывожу всех троих в cout.
В результате получаю непредсказуемо от 1200 до 2200 проходов цикла, причем последние несколько значений по разыменованному указателю перед сегфолтом всегда одинаковые. Как объяснить такой разброс? Больше в программе ничего нет.
>>2360205 > инкрементирую указатель ptr > Как объяснить такой разброс? Ты вообще вменяемый? Тут нечего объяснять, оно работает ровно как и должно - неопределённо. > UB > непредсказуемо Ахуеть просто.
>>2360205 >получаю непредсказуемо Неправильно. Ты предсказуемо получаешь больше трех итераций. >Как объяснить такой разброс? Неопределенное поведение. >Больше в программе ничего нет. Без оптимизаций собери, у тебя будет 3 вывода. Зависит от системы и компилятора, но скорее всего так и будет на x86_64 clang\gcc, возможно и со студийным.
Уи нид ту го дипер, я пытаюсь конкретизировать это определение, насколько возможно. Скажем, если указатель наоборот декрементировать, я получаю итераций минимум на 3 порядка больше. Также я никогда не получаю меньше 1000 итераций в первом варианте. Собственно меня интересует, что конкретно происходит в этот момент. >>2360215 >Без оптимизаций собери, у тебя будет 3 вывода. -fno-builtin попробовал, или это не то? Результаты те же.
>>2360243 > я пытаюсь конкретизировать это определение Что тебе не понятно? Оно может быть любым, тупая ты пизда. Твой код и сам компилятор не определяют конкретное поведение этого кода. > что конкретно происходит Выделенная память кончается, наркоман.
>>2360248 >Выделенная память кончается, наркоман Почему память кончается иногда после 1200, иногда после 1700, а иногда после 2200 итераций? Одна и та же система выделяет одной и той же программе разное количество памяти прикаждом запуске процесса? От чего это зависит?
>>2360254 >Почему память кончается Она не кончается. > иногда после 1200, иногда после 1700, а иногда после 2200 итераций? Возможно это связано с аслр.
>>2360260 > Она не кончается. Кончается read-write участок памяти, попизди мне тут. > Возможно Не возможно, а оно и есть. Релокации по дефолту динамические.
>>2360262 >Кончается read-write участок памяти, попизди мне тут. Но память не кончается. >а оно и есть Откуда ты знаешь какая у него система? Может быть там аслр нет?
>>2360444 Хз, я не он >>2360326, просто на создание нового объекта и уничтожение старого уйдет больше времени, чем на обнуление старого. Или компиляторы такое поведение умеют оптимизировать?
Кстати, про уничтожение объектов, можно ли вызывать их асинхронно? Например, чтобы деструктор не задерживал выполнение следующего кода? Просто стало интересно. Может быть есть какие-то нестандартные расширения компиляторов?
>>2360511 То, о чём ты говоришь обычно называют deferred reclamation. Но это уже другая парадигма времени жизни и владения объектами, нежели RAII, который стандартно используется в плюсах. В RAII ты точно знаешь, когда выполнится деструктор и какие ресурсы будут освобождены.
>>2360681 >Через месяц >Вспоминаю С++, подтягиваю знания ООП, решаю задачи, учу алгоритмы, разбираю библиотеку STD и умные указатели. В итоге идёшь нахуй по причине Segmentation fault
У меня базовый класс. Хочу чтобы все наследники имели одинаковую функцию (по имени), которая должна возвращать разные по типу значения. Такое возможно?
>>2360730 Ну если не баловаться с сырыми указателями, то для сегфолта надо что нибудь нетривиальное сделать. Например сотворить (global) static initialization order fiasco и дёрнуть разрушенный объект из деструктора другого глобального объекта.
Я чет туплю, но как сделать нормальный интерфейс для передачи данных пакетами? Если бы всё было фиксированной длины, то ок, но у меня могут быть строки переменной длины. Хочется не писать каждый раз простыню. Правильно ли я понимаю, что оптимальный вариант это перегрузка для каждого типа.
>>2345617 (OP) Кто-нибудь тут писал интерфейсы? Я осознал что пишу 100% hard code и мой класс для контролера к игре разрастается до слишком больших размеров. Раньше это был класс Mouse, но теперь туда добавилось много вычислений для юнитов. Я захотел расширяемости. Паттерны раньше не применял. Нужно ли мне написать интерфесы?
>>2360511 >Кстати, про уничтожение объектов, можно ли вызывать их асинхронно? В Qt есть deleteLater, можешь реализовать что-то аналогичное (очередь в которую перебрасываются объекты)
>>2360326 >Как обнулить инстанс структуры хранящийся в unique_ptr? std::memset(ptr.get(), 0, sizeof(⚹ptr.get()));
>>2360205 >получаю непредсказуемо Во-первых UB (уже сказали), во-вторых ты двигаешься по стеку внизу. В лялексном стеке будут лежать argv и env. Также расположение стека по ASLR может быть весьма рандомным (тоже уже сказали в треде)
>если указатель наоборот декрементировать, я получаю итераций минимум на 3 порядка больше Понятное дело, дефолтный размер стека в лялексе - 16 Мб, и двигаясь снизу-вверх ты просто проходишь неинициализированную память (точнее система ее заранее почистит нулями, но в стандартной glibc слишком дохуя чего происходит при стартапе)
Класс принимает лямбду при конструировании. Как сделать так, чтобы лямбда имела доступ к объекту класса?
Курсы SkillBox
Аноним22/05/22 Вск 15:09:42№23611631070
Привет Двач программисты. Мне 22,заканчиваю экономический институт и так как я нахуй не нужен как специалист за больше чем 900евро в месяц то решился изучить c++ через SkillBox.Cкажите,нормальное ли это обучение,и все так как они говорят? За себя могу сказать что готов к усилиям в этом направлений,но нуждаюсь в кураторе.
>>2361163 Скиллбокс(скиллфактори, и тд) это инфоцыгане. Гугли отзывы на подобные канторы, там расписано как преподают материал, какое качество материала и в чем будет менторство заключаться. Игра не стоит свеч.
Книжки, ravesli, learncpp и прочие условно бесплатные источники информации - вот путь.
Точку стабилизации уже прошли. Идёт откат к старым значениям с одновременным укреплением рубаса. Ну и как следствие участились попытки прописать зарплату в далларах (хотят ка раньше свои нищенские 3к платить).
>>2361199 Ладно, видимо подход хуевый. Надо иначе делать. Если интересно, то мне показалось хорошей идеей сделать максимально общий класс сервера, который будет новые соединения в переданную лямбду передавать, а она внутри себя их уже обрабатывать. Но затем мне понадобилось в лямбде использовать метод сервера и всё. Сделаю значит просто наследника от своего максимально общего класса.
>>2361215 Он должен был взаимодействовать с кучей других объектов и мне показалось хорошей идеей передвать в сервер лямбду, которая захватит эти объекты. Видимо придется преисполниться шаблонами и писать сервер, который примет ссылки на все те объекты и будет внутри себя их дергать.
>>2361229 Ну а вообще я хуй знает. Я в первый раз пишу прогу в которой несколько сущностей разных и они должны как то с собой взаимодействовать. + хочу писать максимально модульный код, поэтому qt с его слотами/сигналами не юзаю, а пытаюсь как то из сервера вызывать нужные функции. Хотя может этт и странно и лучше взять qt с его системой сигналов и слотов.
>>2361243 У меня то же самое по сути. Но мне в хэндлере надо другие объекты юзать. Вот их законнектить было проблематично. Сначала решил лямбду с нужными объектами передавать, но оказалось хуйня
>>2361299 Это вообще хуево или нет? Принято ли в проектах писать структуры заточенный под связь с другими или все стараются максимально модульным сделать?
>>2360964 бамп вопросу. Собственно писал на эмоциях от этого видео https://www.youtube.com/watch?v=Bw6RvCSsETI сорян за типа "рекламу инфоцигана левого", но все началось со спока с одной php макакой в /b про SOLID
Как по мне SOLID это противоположность YAGNI. И я больше за YAGNI и 100% hard code. В то время как SOLID это на самом деле софт код из за "D" который размывает структуру ИМХО.
второкурсник-кун (да еще один в влимание-особая-личность, тяжело...)
Как в QT задать время ожидания ответа на http запрос? Пока что написал пик, в целом работает, но как-то всрато. Пришлось родить целых две новых сущности (QTimer и QEventLoop)
>QEventLoop Лолщто, зачем это? У тебя ивентлуп крутится в QCoreApplication::exec уже. Надо делать коннект на QNetworkReply::finished и в обработчике слота уже вытягивать данные. А ты какую-то синхронщину ебашиш
>>2361813 > Лолщто, зачем это? Для ожидания же. Как sleep, только система по прежнему обрабатывает сигналы. > Надо делать коннект на QNetworkReply::finished и в обработчике слота уже вытягивать данные Надо, но я хз как. У меня все это дело в классе. Я вызываю метод с того пика для получения данных, так что он должен вернуть какое-то значение. Поэтому отдельный слот тут никак не вставить.
>>2362129 void⚹ это указатель. А указатель это адрес в памяти. А адрес в памяти это целое беззнаковое число от 0 до 2 ^ (разрядность системы) - 1. 8 байт = 64 бита и как раз позволяет закодировать весь диапазон адресов. В 32 разрядной системе void⚹ будет 4 байта.
Здорова педики, вопрос к шарящим. Как правильно организовать ебучий cmakelists? Вот есть проект, он хочет залинковаться на либу, лежащую на том же уровне что и он. Как это по-человечески сделать?
Можно ли сделать шаблонную функцию вида? template<typename T> T test(int n) { return 42; } test(55); Если в параметрах указать T то всё компилируется, а реально ли сделать без неё, как в примере?
>>2345617 (OP) Тут есть программисты микроконтроллеров? Хочу уйти из АСУТП к вам. На каком уровне крестов можно начинать открывать headhunter? На младшие позиции, естественно.
>>2362398 Ясно, просто не хочется передавать в функцию переменную только для определения. А что-нибудь подобное сделать можно? template<typename T> T testfunc(int n, T t) { int num = 5; std::string str = "ABC"; if (1) { return num; } else { return str; } }
Обновил qt, с удивлением узнал, что некоторые используемые функции были выпилены. Зачем так делать? Чем они мешали? Почему я должен перелопачивать код после перехода на новую версию?
>>2362504 > Обновил Qt5->Qt6? Да > Что такое мажорная версия? Из крестов же ничего не выпиливают, только настоятельно советуют не использовать, если было совсем непотребство.
>>2362510 Хах, когда писал пост как раз держал этот пример в голове, мол заменили, но не удалили, а оказалось в 17 версии таки выпилили. Но все же это буквально единичные случаи.
Давно не программировал на C++ Не подскажете, почему у меня русский текст не печатается? std::wstring str1(L"Жил был пёс."); std::wcout << str1 << std::endl;
>>2362586 >Если винда, У меня не винда, >пощелкать кодировками . Ничего не меняется.
В общем странная фигня, если перед wcout вывести обычный текст, то текст выведется транслитом (на сайте вместо транслита знаки вопроса): cpp.sh/3psus cpp.sh/35bkx
>>2362450 >Можно из с++ жопаскрипт сделать, но зачем? Есть библиотека при получении значения она выдает результат и можно запросить его тип (число, строка) моя задача написать функцию универсальную для запроса числа и строки. Реализация за исключением нескольких строк одинаковая. Писать две разные функции которые содержат почти одинаковый код не хорошая идея.
>>2362468 union в коде на C встречается. Там нет наследования или полиморфизма и поэтому убогие пишут вот такое (чтобы распарсить сообщение, пришедшее от железки): union { struct {} __(packed)__ header_base; struct {} __(packed)__ header_type1; struct {} __(packed)__ header_type2; } или для работы с указателями: union { void⚹; base_class⚹; child_1⚹; child_2⚹; } В с++ всё это особо не нужно. Ну а varaint вообще редкость. Слишком громоздкий и без задач.
Проконсультируйте или как загуглить про такой механизм: Приложение работает следующим образом: есть сервер который отправляет какие то данные, которые нужно обработать, делает он это не часто, но обработка занимает много процессорного времени, а само приложение должно работать параллельно с этим обработчиком. Создавать тред в классе с бесконечным циклом в ожидании данных плохая же идея? Это вообще можно при помощи стандартной либы как то сделать?
>>2362713 Для асинхронного выполнения тебе нужен std::future в качестве результата и нечто, что будет работать асинхронно - std::async или std::thread t(callable, args).detach() в паре с packaged_task или promise.
>>2362713 если отвечать формально на вопрос, то возможно тебе придется задействовать асинхронный ввод вывод, поэтому только при помощи стандартной библиотеки это сделать не получиться, придется использовать либо средства предлагаемые операционной системой, либо кроссплатформеные библиотеки
>>2362517 >s/auto_ptr/unique_ptr/g >добавляешь std::move, где компилятор ругается И никаких проблем. А у тебя что приключилось? inb4 старая либа без исходинков возвращала их в апишке
Классы A и B таковы, что B при конструировании просит ссылку на экземпляр A. Хочу создать пару A, B, но не могу. Есть решения? Я думал, думал, но не придумал
>>2363489 Довольно много ML/CV кода написано на Python. И считай он нужен банально для чтения и изучения примеров (как английский для чтения документации).
>>2363494 Ну ты не с того конца заходишь. Язык это только инструмент и не более. Сначала глянь насколько хорошо пойдёт сама тематика. Есть книжка от Szeliski (быстро гуглится). Она довольно много аспектов CV затрагивает (и про особенности нашего зрения и про цифровые камеры и про алгоритмы - сегментация/классификация/выделение особенностей/трекинг и ещё докучи). Полистай по диагонали и посмотри как оно вообще. Матана там ояебу конечно, но куда ж без него.
Сука, я рот его топал. Буст просто не кидает исключение если порт занят, хотя раньше кидал. Что изменилось? Я и 443 порт писал, и 1, и 10. Просто ничего не происходит
Тут уже спрашивали что то подобное, но там речь шла про наследников и variant, а у меня не наследники, а variant выглядит избыточным. Суть следующая: нужен десереализатор который получит на вход указатель на данные, а вернет объект. Но вот незадача: объекты разных типо и между собой не связаны. Вариант возвращать void указатель на объект и пометочку о типе, а потом кастовать выглядит гиперопасным.
>>2364227 >c++ 20, не кал, слышите. Чел, я педалю cv под эмбед и нам это ещё не скоро завезут в нормальном, рабочем состоянии. Для корутин есть пихонг.
Посоветуйте, пожалуйста комплятор на с\с++ под винду только чтобы он лёгкий был, быстрая установка быстрый запуск типа как текстовый редактор. А то я не хочу визуалку ставить она тяжёлая, много лишнего и т.д.
>И никаких проблем. А у тебя что приключилось? inb4 старая либа без исходинков возвращала их в апишке Старый цомпилятор не знал про unique_ptr (одна параше платформа), а новый - про auto_ptr (шланг на макоси).
Помогите, пожалуйста. У меня программа в которой создаётся множество объектов одного класса и их данные загружаются из базы данных расположенной на жёстком диске при запуске программы.
Так вот я хочу чтобы после загрузки программы объекты и их данные находились в оперативной памяти все чтобы не обращаться постоянно к жд за ними, а только 1 раз.
Но я не понимаю как это реализовать автоматически? Допустим у меня 157 объектов и как их программно именовать? a1, a2, a3... черзе шаблоны чтоли это делать? Или как? Опытные люди помогите, пожалуйста, как делаются подобные вещи.
>>2365188 типа записывать объекты в массив после записи каждого добавлять к индексу +1 и так пока база данных не закончится, а их номера в массиве и будут id идентификационными...
>>2365181 Ты докуда учебник успел прочитать?) Тебе нужен обычный вектор. Ну или мэп если в приоритете поиск по имени например. В общем разбирайся со стандартными контейнерами.
>>2365219 >вектор ну и я уже начал подозревать что массив. создать вектор классов. спасибо огромное, анон.
да я читал целиком его, оригинал от страуструпа все 1000 с лишним страниц пол года читал, но было это года 3-4 назад и я после этого не писал на плюсах, только на си. а щас нужны классы замахнулся на высокую программу.
>>2365317 благодарю. если с вектором не пойдёт рассмотрю list.
>>2365219 >>2365317 А можно ещё к вам вопрос. А какую базу данных лучше использовать для автономной программы на с++? Ну чтобы полегче там была. SQL или что-нибудь другое может есть получше что для этого подходит?
>>2365348 Программа работает со множеством объектов одного класса и нужно хранить их данные в базе данных чтобы прии запуске программы загружать их с жёсткого диска в озу, а затем при выходе сохранять их из озу назад в базу данных
>>2365353 спасибо, тогда наверное sqlite рассмотрю к тому же уже работал как-то с ними
У меня есть вектор, который хранит указатели на объекты. Вектор должен сохраняться между запусками, а еще он может разростись, поэтому хранить его полностью в оперативке нельзя. А еще он может содержать указатели на огромные объекты - файлы, которые моей программой даже не открываются. Можно ли как то кусок вектора на диск записать, а когда надо доставать обратно? И сложно ли это делать? Могу ли я пока что забить хуй, а потом эту возможность добавить? Или всё таки надо об этом скйчас думать?
>>2365416 Я конечно могу написать свою обёртку, которая по запросу будет файл на диск сбрасывать и куски подгружать, но выглядит довольно муторной задачей
>>2365416 Тебе нужен кеширующий провайдер данных. Пока можешь накатать его интерфейс, а в имплементации использовать вектор, ну а потом сделать как надо будет.
>>2365416 >хранит указатели на объекты >сохраняться между запусками >может разростись >хранить его полностью в оперативке нельзя >указатели на огромные объекты >Можно ли как то кусок вектора на диск записать, а когда надо доставать обратно? Маппинг+обертка кучей вокруг куска памяти.
Кто в изображениях разбирается, в кутах есть такая функция QPixmap::loadFromData, где она берет массив чаров. Так что это за массив? Это просто буфер где хранятся цвета каждого пикселя? Или этот буфер хранит еще всякую инфу типа размера изображения, метадаты?
Сап плюсач появилось два вопроса касательно использования std::thread в системах с несколькими CPU: 1) первый и самый важный - что вернёт std::thread::hardware_concurrency в системе с 2 CPU (допустим, у каждого CPU 16 ядер и 32 потока)? По идее, на том же cppreference говорится, что функция вернёт число всех поддерживаемых потоков, то есть для такой системы она должна вернуть 64. Вообще интересно почитать, что сам стандарт регламентирует в таких случаях 2) насколько мне известно, если создать все 64 потока из прошлого примера, то планировщик в ОС сам раскидает потоки между CPU. Однако я знаю, что планировщик в ОС может распределить эти потоки неравномерно между CPU, а также между ядрами конкретного CPU (банально из-за алгоритма регулирования температуры, расположения кэшей, etc). Однако эта проблема решается использованием affinity mask ( https://en.wikipedia.org/wiki/Processor_affinity ). То есть чисто технически при создании потоков я могу закрепить их к определённому CPU (32 на первый и 32 на второй), но только с помощью механизмов Windows API или линуха. В <thread> нет ничего для работы с этой маской? И как вообще стандарт на неё ссылается (если ссылается)?
>>2365908 >что вернёт std::thread::hardware_concurrency в системе с 2 CPU Самый простой способ - посмотреть исходники стандартной бибилиотеки, благо даже у мелкософта она открыта. https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/src/c%2B%2B11/thread.cc#L190 >int __n = _GLIBCXX_NPROCS; , где _GLIBCXX_NPROCS - макрос, вызывающий одну из кучи функций И все они, судя по мануалам, возвращают полное число потоков из всех цпу.
>В <thread> нет ничего для работы с этой маской? Не припомню такого. Но всегда можно вызвать std::thread::native_handle и работать с системными апи.
С чего начать свой путь в коммерции? Ясное дело, многого не знаю, но уже чувствую что петами сыт не будешь. В целом и шаблоны пишу, и с абстрактными классами наебался, поинтеры-аллокаторы, мультипоток копал, с бустом игрался. Qt не зашёл. Можно куда-нибудь с нынешним стеком податься чтобы уже боевой опыт зарабатывать? Язык пиздатый, а чего хочу от него - пока только в собственных проектах и отображается. Я бы вкатился наверное в нейронки/зрение, да это опять минимум несколько месяцев учёбы, дрочения примеров.
>>2366794 >В целом и шаблоны пишу, и с абстрактными классами наебался, поинтеры-аллокаторы, мультипоток копал, с бустом игрался. Qt не зашёл. >С чего начать свой путь в коммерции? С приношения денег кабанчикам, каким образом твои навыки могут принести ему денег?
>>2366794 Всем нужен опыт и конкретные навыки, те не с бустом поигрался, а я могу сделать то то и то то. Ну и да, никому ты не нужен, мужик. Вкатусю на плюсах видеть никто не хочет, это слишком кринж, тем более в этой стране
>>2366794 >вкатился наверное в нейронки/зрение Открываешь хехе.ру, вводишь там c++, потом вводишь c++ && machine learning. Получаешь <5% от общего числа вакансий. Затем убираешь оттуда senior, lead, knowledge of c++ is a plus, huawei/samsung/etc и в итоге идёшь в НИИ клепать аналоговнеты под линукс для stm32.
>>2367223 в нии норм работать, если есть хата от бабки доставшаяся, и не планируешь заводить семью (остаться девственником), на покушать будет хватать денежек
>>2367399 Конечно. На современных ЦП инструкции обращения к памяти могут начать выполняться одновременно, но вторая может выполниться раньше первой, если кэш-мисс или просто долгая инструкция. Естественно ты в одном потоке не сможешь увидеть эффект от такого, ЦП не станет выполнять одновременно инструкции, если есть рядом зависимая инструкция от того участка памяти. Но вот из другого потока реально запалить это. Гугли про memory order, чтоб понимать что за relaxed-память и чем отличается поведение strongly-ordered от weak-ordered архитектур. Но в твоём случае если чекнешь copied==true в другом потоке, то уже скорее всего не успеешь поймать такое. В стандартной библиотеке, кстати, разрешены такие проёбы в порядке выполнения и это даже не UB, потому что надо std::atomic юзать вместо простого обращения к памяти. Например std::latch умеет в такие фокусы, но шансы поймать это очень низкие, хоть и не нулевые.
А как скомпилировать 2 .cpp файла в одну файла не объявляя один из них .h заголовочным? Я в одном объявил класс и его функции и переменные. а в другой main пользуюсь. И при стандартноо компляции выдаёт что этот класс не объявлен. Если файл с классом сделать .h и через обычный инклуд включить от всё заебубма станвоится.
Алсо вообще модульную программу делаю у меня каждая функция и класс в отдельном исходники. Как это лучше всё держать в .h и подключать всё это или в .cpp и потом всё это вместе комппилировать? Помогите, молю, нюфаня я обосраная
>>2366145 >И все они, судя по мануалам, возвращают полное число потоков из всех цпу Подтверждает мои мысли и то, что написано на cppreference >std::thread::native_handle А вот за эту наводку огромное спасибо, анон!
>>2367609 >как скомпилировать 2 .cpp файла в одну файла Узнать разницу между объявлением и определением. Вынести объявления в .h, включить его везде где нужно, в том числе в .cpp с определением.
>>2367617 Годно годно. То есть можно сделать чистый .h 1 и там объявить все классы, функции и всё говно что хочу. А в остальных .cpp написать определение этому годно, годно. Мерси ещё раз
если я компилирую программу и ide написано что комплятор x64 release он точно сгенерирует код assemblera x64? это можно как-то проверить разрадяность программы кроме того что попытаться её запустить на 32 разрядной системе?
>>2368027 Нигде. Я всю жизнь изучаю только ассемлеры, с\с++, и просто где-то мельком читал про какие-то интерпретаторы в java я решил что они наверное переовдят этот код в c++
>>2368027 Хорошо а как тогда они построены? Так же как c++ переводятся в ассемблер, потом в двочиный код объектных файлов, а потом компоновщиком связываются в единый файл исходного кода? А? А? А? А? А?
>>2368041 >c++ переводятся в ассемблер, Неа, он сразу в двоичный, так больше возможностей для оптимизации. Шарп и джава компилируются в байт код, который исполняется (интерпретируется) виртуальной машиной.
>>2368053 спасибо. то есть у шарпа и джавы есть снизу какая-то виртуальная машина со своей маняархитектурой которая их код обрабатывает или что? как она работает? чем им не подходит нативный процессор?
>>2368147 ну погоди. скажи зачем им нужна виртуалка которая их будет преобразовывать в оригинальные команды процессора? нахуй им этот ёбаный интерператотор ебучий? почему нельзя а с\с++ это компилировать?
>>2368235 Чтобы один и тот же артефакт работал на любой платформе, а не "скачайте версию либы для винды, скачайте для линукса, скачайте для андроида, для x86_32, для x86_64, для ARM, для ещё какого-нибудь говна, или ебитесь со сборкой сами".
>>2368236 Я правильно понял что при компляции с\с++ языка идёт сперва создание объектного файла с двоичным годом а потом связывание их в один исполняемые?
сорри я ещё до книги по компляторам и отладчиков не дошёл, только ассемблеры читаю поэтому не знаю но интересно очень узнатт
>>2368244 Ну там есть не только интерпретируемый байт код, но и JIT компиляция (при выполнении часть байт кода на лету компилируется в платформенный бинарник). Но программист ручками её не может сделать - виртуальная машина сама решает как и когда это делать.
>>2368247 Компилятор из текстовых фалов делает бинарные объекты. Связывание бинарных объектов в исполняемые файлы делает линковщик.
>>2368244 В реальном мире компиляция не редко делается прям в процессе выполнения. Например JIT в виртуальных машинах или компиляция шейдеров, которые запускаются на видеокартах (c-подобные языки GLSL, HLSL).
>>2368296 на русский dynamic translation почему то переводят обычно как "динамическая компиляция", что создает некую путаницу все же имхо, прямой перевод был бы в этом случае точнее
Как правильно логи записывать? Мне много не надо, хочется только многопоточно писать в лог и потом достать его. Просто свой поток с мьютексом подойдет или за такое по рукам бьют?
Почему в qt не завезли нормальной документации по кастомизации? Почему я должен вслепую прописывать qstylesheet? Хочу вот сделать няшную табличку как на пике, как это реализовать?
>>2368558 > как это реализовать? Через нормальные фреймворки типа WPF. Там одним нажатием кнопочки исходники стилей нативных контролов экспортируются в XAML и можешь перепердоливать их как хочешь.
>>2368659 > Она опенсорсная и бесплатная. > бесплатная Чел... Вот у майков дотнет действительно опенсорсный и бесплатный, под MIT-лицензией. А у qt мало того что GPL, так ещё и есть чисто проприетарные зависимости с проприетарными qt-лицензиями. О какой бесплатности ты говоришь, если в реальном коммерческом продукте ты обязан башлять им бабло и сидеть под проприетарной лицензией? Вы там совсем ёбнулись, петучи?
>>2368558 Когда уже "комнатные дизайнеры" поймут, что красивый дизайн заключается не в том, как выглядит твое приложение, а как оно визуально вписывается в систему.
>>2368752 Тебе бабки платят (если канешна плотють, лол) за то, чтобы ты реализовывал хотелки заказчика (либо старшего по званию). Умничать о том, какой должен быть дизайн ты можешь, когда у тебя будет свой стартап и где ты сам будешь музыку заказывать
>>2369000 > Папизди мне тут И что ты принёс? У тебя же по ссылкам и написано, что опенсорс под зоопарком разных версий GPL, а коммерческая под проприетарной лицензией самой qt.
>>2369080 Глобальные неконстанты - зло. 1. приколы при рефакторинге 2. приколы при тестировании 3. приколы последовательности создания 4. приколы при остановке программы, деструкции 5. и вообще SOLID йопта
>>2369081 >объект должен жить все время >все время Всё да не всё
>>2369055 > Note: For open-source licensed Qt, some specific parts (modules) are not available under the GNU LGPL version 3, but under the GNU General Public License (GPL) instead. Иди нахуй, слепой петуч.
>>2369102 Нихуя пошли манёвры. У тебя базовый модуль многопоточности сразу под тремя лицензиями, в том числе и GPL, а ты тут виляешь жопой. Сейчас может ещё скажешь что половина qt ненужно, да? Так же как он у тебя стал бесплатным, так же и на LGPL натягиваешь, шиз. И я так и не услышал как в реальном коммерческом проекте использовать qt и не сидеть под анальной проприетарной лицензией. Понабежали тут студенты-прыщевики со своей вымышленной швабодкой, которая кончается ровно в тот момент, когда начинаешь писать код не для хобби.
>>2369080 Да нет в общем то. Но раз уж ты в плюсовом треде, то и пользуйся нарративом, который задает язык, ооп, инкапсуляция и тд. Это как на бэхе картошку возить, довольно странное решение, не находишь?
>>2369080 Любые данные хуй пойми где - зло. Классы с состоянием тоже так-то говно в плане архитектуры. Если зайдёшь в какой-нибудь нормальный проект типа UE5, то там в классах почти нет переменных. У тебя данные должны жить ровно столько, сколько нужно коду и уж тем более не валяться где-то снаружи. Подобное говно только во всяких джавах и сишарпах используется, где фанатичный ООП и бюджеты в десятки мегабайт ОЗУ на вывод Хэлоу ворлда в консоль. А кресты никогда не были чисто ООП-языком, нехуй и стрелять себе в ноги, намеренно оставляя потенциальные места для утечки памяти, багов и ухудшения читаемости кода.
>>2369110 >У тебя базовый модуль многопоточности сразу под тремя лицензиями, в том числе и GPL, а ты тут виляешь жопой >Что такое dual licensing Ну йопт тваю мать, тебе же сказали учить матчасть. Написано же английский по-белому "licensing options" - выбирай любую, а ты опять хуйню постишь
>И я так и не услышал как в реальном коммерческом проекте использовать qt и не сидеть под анальной проприетарной лицензией. Ну тебе же сказали узучать матчасть, там вообще ничего сложного нет.
>Понабежали тут студенты-прыщевики со своей вымышленной швабодкой, которая кончается ровно в тот момент, когда начинаешь писать код не для хобби. Ты такой молодой и юный, а уже старый закостенелый пердун, который не может RTFM. Еще и на мелкомягких дрочишь
>>2369122 > выбирай любую > Qt contains some code that is not provided under the GNU Lesser General Public License (LGPL) Вот ты хуесосина тупая, любую выбирать можешь только есть оно под LGPL. У тебя в половине модулей нет выбора. У тебя даже Qt Core не весь под LGPL, дегенерат. Не говоря уже про анальную Qt Commercial License, которую ты в любом случае будешь использовать в любом не опенсорс-проекте.
и все таки, указатели и символы * & это что такое? допустим на собесе спрашивают такое, что бы вы ответили? что это просто число? индекс в массиве байт памяти или как
>>2369206 & взятие адреса - получение адреса объекта в памяти ⚹ разыменование указателя - получение ссылки на объект по адресу указателя Указатель - переменная, хранящая адрес ячейки памяти (адрес 1 байта объекта). Адрес - целый беззнаковый тип от 0 до 2 ^ (разрядность ОС - 1).
>>2369265 >что такое переменная? абстрактная хуетень, которую ты используешь для временного хранения данных. На практике это либо часть стэка, либо область данных из секции данных(для x86-64 это .data) >что такое ссылка? Это синтаксический сахар для указателя. Позволяет менять данные в другой области видимости без разыменовывания указателя и прочей ебалы.
>>2369223 >Адрес - целый беззнаковый тип от 0 до 2 ^ (разрядность ОС - 1). Хуету несешь. FAR/NEAR указатель имеет размер, равный разрядности ОС[в битах].
Указатель стека имеет размерность, зависящую от многих факторов, но обычно это 2 байта.
>>2369345 > FAR/NEAR указатель имеет размер, равный разрядности ОС А вот теперь уже вы оба пиздите. Указатели бывают разные, но они почти никогда не бывают в полную ширину, если мы про машинный код говорим. Абсолютные адреса почти никогда не используются в реальном машинном коде, не говоря уже про то что не каждая 64-битная инструкция может принять 64-битный адрес в принципе.
>>2369345 >FAR/NEAR указатель Вспомнил турбо це и прослезился
>они почти никогда не бывают в полную ширину, если мы про машинный код говорим. Абсолютные адреса почти никогда не используются в реальном машинном коде Подменяешь понятия. Способы адресации в ассемблере - это не указатели.
>>2369353 > перелицензирование Вот же ты наркоман. Перелицензирование нельзя делать на несовместимые лицензии. У тебя copyleft-лицензии там. > совместимые лицензии Тебе там явно пишут что они не доступны под LGPL. Ты совсем дегенерат что ли?
>>2368296 >>2368295 Программы которые написаны на этом крайне медленое говно наверняка. Теперь я понял почему всё это говно написаное на шарпах, с .net фремворками и прочим такое медленое
>>2369367 > Кто они? Модули из Qt, у них список на сайте лежит, блять. Тебе черным по белому написано - те модули доступны только под лицензиями владельцев этих опенсорс-проектов, LGPL не доступна.
>>2368236 >Чтобы один и тот же артефакт работал на любой платформе Здесь логическая ошибка. Такой высер не работает ни на какой платформе. Точнее, он работает на одной единственной платформе виртуальной машины. Но виртуальные платформы это говно по многим причинам, хотя главная конечно тормоза, но там еще куча говна.
Раз у меня есть компьютер, мне нужны приложения именно под него, под мой компьтер, а не под какую-то левую виртуальную дерьмину. Это дерьмище, а не приложение. Так что этот мемчик "мультиплатформенность" это лозунг пропагандонов дерьма вместо софта. Мультиплатформенность это дерьмо и не нужна, рак убивающий софт, с которым нужно бороться, травить, уничтожать, обоссывать, а не нахваливать.
>>2369375 Ты мало того что матчасть не учишь, так и английского не знаешь? Код модулей перелицензирован под LGPL, точка. Прекращай пердеть в лужу, мастдайщик
>>2369382 >Так что этот мемчик "мультиплатформенность" это лозунг пропагандонов дерьма вместо софта. Мультиплатформенность это дерьмо и не нужна, рак убивающий софт, с которым нужно бороться, травить, уничтожать, обоссывать, а не нахваливать. Тыкнуть бы рожой вот этой базой всем питонистам, шебмакакам, джавистам и сишарперам, для которых "С++ — мертвый язык".
>>2369421 >>2369382 Хуясе боль. Пора понять, что выгода от мультиплатформенности в 90% случаев превышает выгоду от оптимизации. Поэтому на рынке кресты все менее и менее востребованы.
>>2369421 >всем питонистам, шебмакакам, джавистам и сишарперам Самое смешное, что несмотря на наличие виртуальной машинки, у каждой их параш ровно одна платформа, где они живут, и дальше не вылазят
>>2369424 >Что такое глубокая интеграция с системой? Ахаха, лол. То-то уже даже в мобайлговне отказываются от джавасрикт говна и переписывают всё на нативу >Поэтому на рынке кресты все менее и менее востребованы. Каком рынке? Очередных НИИ петухов? Или стартаперов смузихлёбов "теперь я тут кабанчик"?
>>2369382 Ты не осилишь на байтоёбском небезопасном языке с UB писать такое количество бизнес-говна, какое пишут на интерпретируемой параше. Там для заказчиков важна бизнес-логика, а не оптимизация вызовов методов ради 0.0001% перформанса. >>2369431 Не было такого "раньше" никогда. До жаб и петухонов писали бизнес-говно не на байтоёбских языках, а на коболе, PL/SQL, перле и другой хуйне. Байтоёбство всегда было нишевым.
>>2369345 В языке нет "указателя стека", нет far/near указателей. Есть абстракция, имеющая тип, который я указал. То что ты натужил - это аспекты реализации модели памяти ОС.
Как мне написать масштабирующийся график? Есть массив точек который я соединяю линиями. Я решил что масштабирование будет происходить путем умножение координаты точки на коэффициент масштабирования. Коэффициент масштабирования будет прибавляться и убавляться с помощью поворота колесика мышки. Можно будет перемещать график с помощью зажатой левой кнопки мыши. Осталась проблема как мне при увеличении масштаба оставаться в той же точке где мышка стоит. У меня в коде который я скину ниже есть offSetX и offSetY, я вот не пойму каким образом мне нужно добавлять и отнимать значения и что это за значения должны быть.
Двач, нужна помощь. Есть кнопка, создающая на windows форме массив кнопок. Нужно модифицировать этот код так, чтобы программа создавала эти кнопки в виде цветков. Пытался найти в гугле и что-то нифига дельного не нашел. Код можно глянуть тут https://0bin.net/paste/SxhzkgTX#9gwqRes9DFl4kdmFRL53+BLC-R6x36mzGCxLzG/6FtY
>>2369676 Что значит в виде цветка? Типо что бы они по кругу вокруг первой кнопки? или что бы они были повернуты перпендикулярно касательной относительно центра окружности вокруг которого они вытроились?
>>2369659 А еще я видел интерпретатор С, где можно говнякать скрипты без компиляции. Для С++ наверно тоже есть, хотя хз - для развлечения слишком сложный проект, а ни для чего больше такое не нужно..
>>2370079 Ну вообще-то да. И честно говоря устал уже потому что элементарной подсветки комментариев нет. Хорошо хоть комплятор ошибки выдаёт по которым можно понять. Устал от этого. Посоветуй, пожалуйста, редактор кода.
>>2370118 Все правы, в разных компиляторах сделано по-разному. В стандарте нигде не сказано "надо обязательно сначала компилировать в ассемблер и только потом в двоичный, иначе у вас не C++".
Как в 11 стандарте получить время модификации файла? Есть универсальный способ для всех систем? Сейчас трахаюсь с fs experimental, но ничего рабочего не могу найти.
>>2370140 Спасибо. Последний воропс и я отстану. А g++ по умолчанию в каком режиме компилирует в debug или release? У меня он компилирует программу, но стоит её переместить за пределы директории комплятора она ругается на отстствие библиотек, подозреваю что режим debug стоит
Собственно, поднимаю тему опять: есть ли кто-то знающий, как отображать описание методов из дефолтных виндузяцких либ? Альттабанье в гугл каждый раз, когда я не могу прочитать название аргумента, в некоторой степени заёбывает. особенно когда я вижу, что отображение документации в интельке это не пиздёж.
На данный момент могу представить только два возможных способа реализации: 1) Где-то раздобыть уже подписанные в формате doxygen файлы хедеров для сдк винды и заменить ими дефолтные 1.5) самому всё подписать нахуй 2) Научить интеллисенс читать doxygen документацию из стороннего архива.
Ни первый, ни второй, я не ебу где и как находить/делать. Всё ещё испражняюсь в Visual Studio не code, предпочёл бы ide не менять, но если совсем без вариантов - то хз.
>>2370148 debug/release это понятие VisualStudio. Фактически это наборы директив для компилятора, включая пути для объектных файлов, бинарников и всяких вспомогательных файлов типа pdb. Студия всё это делает за программиста. Проекты под gcc часто пишутся на make файлах и им подобных и там какие-то свои рукодельные конфигурации. Основное отличие debug от release это уровень оптимизации генерируемого кода. В случае с g++ задаётся флагом -O{0.2.3}. По умолчанию -O0 то есть без оптимизации, что эквивалентно debug. При этом если ты ничего более не указываешь, то всё будет валиться в одну папку перезаписывая то, что там есть.
А то что у тебя бинарь не запускается, так это дело не в уровне оптимизации. Зависимые модули должны либо лежать в одной папке, либо система должна знать где их искать. Допустим в лялексе их надо кинуть в /usr/local/lib и дёрнуть ldconfig.
>>2370195 >Заставить это дополнение работать у меня не получилось, см пикрел 2. Не исключаю свою рукожопость, кстати. У меня очень хуёво получалось работать с плюсами в vscode потому что, в отличии от вижуал студии, с компилятором приходится работать чуть ли не напрямую
Аноны, нахуя нужно ООП? В книгах и тытруба нашел примеры, аля, создают два класса - жук и паук. Если вводят цифру 6, то срабатывает первый, если 8 то второй. Зачем ебать себе мозги, вместо написания ифов в две строчки? С наследованием один тип вообще замудрил. Создал класс А, в нем переменную, унаследовал в класс Б, там унаследованную переменную посчитал со второй. После перекинул все это в класс В и вывел. Пиздец просто. Аноны, приведите, пожалуйста, примеры, где ООП облегчает работу, или без него вообще нихуя работать не будет. Заранее спасибо.
>>2370216 ООП как и почти все в программировании придумали для управления сложностью. Дебильные примеры про жуков, работников и т.п. из учебников вообще не дают понятия нахрена это надо, там слишком простые структуры данных и управления. Надо сразу давать делать что-то более менее структурно сложное, а когда человек охуеет от ифов - показывать как это элегантно решается с ООП
>>2370118 В ассемблер раньше компилировали потому что ассемблер обычно уже был написан, для простоты. Современным компиляторам это обычно не надо, в ассемблер лезут только для использования редких опкодов, которые компилятор не вывозит.
Господа, есть вопрос. Хочу написать программу-поисковик. Пользователь вводит название продукта, и код должен его найти в текстовом файле. С этим текстовым файлом довольно заебно работать и хочу спросить - чем его можно заменить?
>>2370216 Ну я понимаю опп, как свой тип данных. Вот у нас есть int, float, string. Я представляю это все ввиде коробочек в которые мы ложим значения и при необходимости можем их достать. А вот иногда нужно к примеру написать такую коробочку, но которая была бы с функционалом, например нужно написать коробочку в которую ты ложишь int, она этот int принимает в себя, но когда ты захочешь взять обратно, то что в ней лежит, то ты можешь попросить коробочку: "А ну ка, коробочка, выдай мне значение которое я тебе дал, но что бы оно было не в int, а в string. (типо положили число 123, а когда захотели получить в string, то получили строку "123")". Или же эта коробочка может вычислять квадратный корень, числа которого положили, и тебе не нужно писать sqrt(переменная), ты просто пишешь коробочка.квадратный_корень_числа_которое_лежит_в_тебе. Просто так удобно, и это позовляет писать меньше кода, но программа может становиться более многофункциональной. Ты просто знаешь что у тебя есть объекты с такими то функциями и такими то данными. Ну и опять же, с жучками пример. Допустим ты пишешь игру - шутер, где нужно стрелять по жукам, и в зависимости от того куда ты попадешь, наноситься жуку разный урон. Допустим есть класс Жук, и у него есть следующие поля(переменные класса):
int Здоровье_жука; координата Голова_жука; координата Тело_жука; координата Усы_жука; координата Ноги_жука; Также у жука есть метод(функция класса): int проверить_попадание(координата координата_пули); { if(координата_пули == Голова_жука) { return 50; } if(координата_пули == Тело_жука) { return 10; } if(координата_пули == Усы_жука) { return 5; } if(координата_пули == Ноги_жука) { return 5; } return 0; }
В классе Жук я использовал, класс(тип переменных) координата Он имеет следующие поля
class координата { public: int x; int y; //По хорошему нужно еще написать переопределение оператора == для класса координата, что бы можно было писать вот так - координата1 == координата2, типо что бы научить понимать компьютер, что из них больше, а что меньше. Но я ни разу не переопределял операторы(Не было нужды), поэтому не знаю как это делается. } Так вот теперь когда ты стреляешь, можно в каждом цикле игры вызывать следующий алгоритм: Жук.Здоровье_жука = Жук.Здоровье_жука - Жук.проверить_попадание(координата_пули); Ну вообщем ооп нужны что бы меньше кода плодить, это все равно что не использовать функции, а просто брать и копировать код. Гораздо легче написать функция такая то вот тебе данные сделай с ними что то. Чем каждый раз Ctrl+V код вставлять.
>>2370196 спасибо понял. просто проблема в том что эти модули не относятся к моей программы этоо библотеки комплятора самогоо. на другом компляторе она компилировалась и без всяких проблем перемащалась.
в любом случае сппасибо анон, годно пишешь. пойду тогда сам гуглить не буду тебе на мозг садиться
Как мне написать масштабирующийся график? Есть массив точек который я соединяю линиями. Я решил что масштабирование будет происходить путем умножение координаты точки на коэффициент масштабирования. Коэффициент масштабирования будет прибавляться и убавляться с помощью поворота колесика мышки. Можно будет перемещать график с помощью зажатой левой кнопки мыши. Осталась проблема как мне при увеличении масштаба оставаться в той же точке где мышка стоит. У меня в коде который я скину ниже есть offSetX и offSetY, я вот не пойму каким образом мне нужно добавлять и отнимать значения и что это за значения должны быть.
>>2370439 Написать функцию преобразования координат из оконных в координаты графика и обратно? При преобразовании запоминать реальные координаты, потом их восстанавливать.
У меня rsa в дебаг режиме генерируется порядка 4-9 секунд (как повезет) в дебажном режиме. Почему так долго? Понятно, что в релизе будет быстрее(интересно на сколько, ведь я еще не тестил). Но как то супер медленно, имхо. Как всякие i2p используют ассимнетричное шифрование и не грузят проц? Чяднт?
>>2370180 ой да ладно, по большому счету в бусте из действительно нужного только asio так как предоставляет кроссплатформенную обертку для асинхронного io
>>2370216 Работать начни, писать большие проекты и поймешь. Вообще ооп не панацея, тем более с современного взгляда на прогу, но без него не обойтись в любом болилимени крупном проекте, это коммерческий подход, профессиональный код над которым могут работать сразу несколько человек
Можно ли как то boost::asio::async_wryte для нескольких данных сразу вызвать, чтобы он друг за другом их записал? А то я хочу отправить размер файла и файл, а копировать целиком файл в новое место, чтобы вплотную размер записать долго. Писать async write внутри другого плохо и муторно.
Что за модули умножения? Это видимо что то от cryptopp. Почему это модули? Если это модули, то оно видимо дергает какие то либы постоянно для умножения?) Это разве не долго? Нельзя это оптимизировать?
У меня сервер хранит ссылку на мапу из объектов которые он дергает потом в обработчике. И получается такая забавная вещь: если вдруг объект в мапе удалится, то будет ub. Объекты могут удаляться - это дело рук пользователя приложения. Пока в голову приходят три костыля: 1) запретить пользователю вообще удалять объекты 2) Разрешить, но делать это при выходе из приложения когда все операции с объектами завершены 3) (Кстати это уже походит не на костыль, а на решение). Написать обертку, которая кстати будет потокобезоасность обеспечивать и которая будет за запросы к объекту возвращать shared_ptr на него и в случае если пользователь хочет удалить объект, проверять, что на него указывает всего один умный указатель и удалять. Иначе давать ошибку. Мнения?
>>2371818 ub из-за чего? У тебя итерация по мапе на серверсайде? Тогда это iterator invalidation. Если же на сервер сайде ты просто дергаешь по ключам элементы, то в чем проблема делать if (find(…)) {} ?
>>2372000 Хочешь что то сделать, гуглишь как это сделать, копипастишь. Всё, постепенно разберешься если регулярно писать будешь что-то. Ну а если нет, то и нахуй не надо
>>2370250 Вроде сейчас большая часть языков компилируются в LLVM IR где можно провести оптимизации под процессор/архетектуру. Длинная и нудная лекция на эту тему https://youtu.be/rLshTsxgDcw
>>2371818 Насколько помню shared_ptr имеет интересный контрольный блок. Он считает ссыки на shared_ptr и weak_ptr Если кол-во ссылок на шаред равно нулю - он удаляет объект, но продолжает существовать если есть живые ссылки слабый указатель.
>>2371818 Бля, я жоска уебался при попытке реализовать третий вариант. Я с атомными умными указателями не работал. Ладно, выглядит не запредельно сложно. Потом напишу как нибудь.
>>2372610 Тот чел сказал ((основное отличие)). Есть ещё ряд функций и макросов типа std::assert, которые убираются в "release" версии.
А то что отладочных символов нет в release версии - это ты жиденько серишь. Ты можешь дебажить и релизную версию. Чтобы удалить символы из объектника ему надо делать strip (команда в лялексе такая).
>>2372840 >Зачем нужны указатели? Только для работы с памятью? Указатель указывает на кусок памяти. При том память может быть как данными, так и функцией. Архитектура фон Неймана едить её. >в чем заключается принципиальное отличие присваивания значения переменной через вызов функции и просто объявлением? Не совсем понял вопроса.
>>2373096 Чел, ну что за хуита? Ты в прошлом треде что ли подхватил про std::move? Иди читай про copy elision и учись правильно пользоваться им. А ещё концепт убери, у тебя там одинаковые методы генерятся ещё и с кучей оверхеда, хотя строку можно и без этого говна в одну функцию передавать.
>>2373271 Как я понимаю && в описанном тобой контексте используется как обозначение Rvalue. Если смотреть глубже, то это короткоживущие объекты которые будут очень скоро удалены. Это позволяет тебе реализовывать вместо копирования - перемещение. К слову после функции можно то же поставить один или два амперсанта, что позволит компилятору вызывать разные функции при встрече с разными ссылками.
>>2373290 >Это позволяет тебе реализовывать вместо копирования - перемещение падажжи это как? Ка кэто реализовано? Вот копирование понятно как, mov dest, src или load effective address
>>2373295 Ну на сколько я помню lvalue - это у чего есть адрес в памяти, а rvalue - всё остальное (вроде есть ещё xvalue и gvalue но это фетишистам любящим стандарт оставим)
К примеру, если ты создал пустой объект и хочешь его инициализировать через левую ссылку, то тебе надо копировать все поля источника. Если там есть указатель на кусок памяти, то тебе надо выделить новый кусок и скопировать данные туда. И у тебя будет 2 одинаковых не зависящих друг от друга объекта
Если ты используешь правую ссылку для инициализации. Это значит, что источнику, откуда ты копируешь жить осталось 2 понедельника. И можно не выделять память, дрочить указатели и так далее. А просто свапнуть их местами.
Как пример - строки. Вроде с 11 года COW (копирование при записи) строки в стандарте запретили. По этому копируя строку по левой ссылке ты будешь выделять память. А через правую - просто переместишь.
>>2373271 && нужно, чтоб перегружать функции; можешь ебануть int f(int &x) {return x;} int f(int &&x) {return x + 1;}
и попробовать вызвать каждую из них всякими разными способами, маленько ощутишь, как оно работает
перегрузку с && у тебя получится вызвать с хуйнями, у которых имени нет, вроде литералов f(0) -> 1 или те штуки, которые вернула другая функция f(f(0)) -> 2
если у тебя уже есть переменная, вроде int x = 0; то ты можешь вызвать перегрузку с && вот так: f(static_cast<int &&>(x)); это и есть знаменитый std::move, который нихуя не двигает, а просто кастует
эта хуетень появилась примерно так -- пиздец как захотелось сделать альтернативу копированию, а именно -- перемещение, которое получает ссылку на объект, уродует его, пиздит все ресурсы и так далее, но! непонятно епта как между перемещением и копированием различать, как кого вызывать, какие у уонструкторов сигнатуры должны быть, типа T(T const &) и T(T &)? ты как минимум ебанешься педалить код так, чтобы вызывалось то, что нужно. ну и придумали хитровыебанные ссылки с хитровыебанными правилами. что тут хитровыебанного, казалось бы?
вспомним выше определенные f(int &) и f(int &&) и ебанем вот такое: template<typename T> auto g(T &&x) {return f(x);} ну и как ты думаешь, что вернет g(0)? 0 ебать, вот так вот!
чё происходит? T честно выводится как int, это можешь проверить сам; значит, что-то нехорошее происходит при вызове f(x) знакомься ебать, правило схлопывания ссылок! предлагается мыслить примерно так: упоминание переменной это же ну типа ты на переменную ссылаешься, да? так вот, при упоминании переменной ты прихуяриваешь к её типу &, вот и сослался. был у тебя int &&, стал int && &, и как-то дохуя стало этих &&&, поэтому, мы их схлопнем: T & & -> T & T & && -> T & T && & -> T & T && && -> T && запоминай как хочешь, лично мне напоминает булеаны и логическое умножение, или сложение, да в принципе похуй
ну вот тебе и разгадка: если был какой-то x с типом int &&, он входит в f(x) как int && & -> int &, соответственно, получается 0
ответом на вопрос "сука я хочу чтобы ссылка осталась такой, какой я её сунул в первую функцию" является конструкция std::forward<T>(x), где x был объявлен как T && -- это важно, именно &&, именно под эту хуйню и написали этот несчастный forward -- он, зная T и зная, какой получился x, выдаёт всё, как ты хочешь
че где копируется и перемещается: T t1 = {1}; 1. переменная копируется: T t2(t1); // t1.a -> 1, t2.a -> 1 2. перемещённая переменная перемещается: T t2(static_cast<T &&>(t1)); или, более человечно, T t2(std::move(t1)); // t1.a -> 0, t2.a -> 1 3. безымянное перемещается: T t3(T{2}); // t3.a -> 2, безымянное сначало обнулилось, потом умерло 4. константное хуй переместишь, скопируется: T const t4(t1); T t5(std::move(t1)); // t4.a -> 1, t5.a -> 1 потому что T const && может превратиться в T const &, а в T && не может. спасибо, что конст
>>2373615 Это инструмент для управления видеокартой. Как и vulkan и metal api. Их основное назначение - рисовать на мониторе. Ты можешь их включить в один проект, дабы была кросплатформенность. Но тебе нужно тогда будет придумывать более абстрактную обвязку к ним.
list <connection>::iterator it = listConnection.back();
почему подчеркивает ошибкой
и зачем во всех гайдах пишут вот так? it = listConnection.erase(it); почему нельзя просто удалить элемент, а нужно обязательно приравнивать итератор, типо приудалении он возвращает теперь новый элемент который теперь занял его место?
>>2373982 Предположу что в классе connection у тебя есть буфер вида char buff[16424]. Либо убирай флаг компилятора (или это санитайзер/решарпер/или что там у тебя стоит) либо выделяй в куче через new int[size].
>>2373995 это на работе, какой дали с таким и сижу, я до этого пользовался монитором 4 на 3, 1240 на 1024. Нормально, удобно, иногда приходиться шею чуть чуть поворачивать, что бы нужное увидеть
>>2374000 Выражение в скобках (connection()) это создание временного безымянного объекта на стеке, которое потом копируется/сдвигается в новый элемент std::list (который создан в куче).
А как вообще пишут сложные приложения на плюсах без кутов? Точнее без механизма сигналов слотов. Вот допустим у меня есть класс повар, готовящий печенья и класс, продавец эти печенья продающий, оба работают в отдельных тредах. И как вы сообщите продавцу что печенье готово и положите его в ящик очередь на продажу? На кутах понятно, просто сигнал вызвать соединяющий два класса. Кстати что вообще про сигналы-слоты думаете? Есть какие то подводные камни использования? Я пока не столкнулся, по-моему очень крутая штука. Подобное вообще есть в ядре других языков?
>>2374506 > На кутах понятно, просто сигнал вызвать соединяющий два класса. Это подход всяких джаваскриптов: верить в магию, не задумываться, как она работает, хуйнул готовый компонент из фреймворка, и всё заебись. Хотя хватило бы обычной конкурентной очереди.
>>2374506 Никак. Куты и существуют чтобы дрессировать макак-рабов которые без кутов не могут. Хитрожопая схема подсаживать на зависимость всякий слабохарактерный сброд, которого всегда дохуя, а значит стабильный бизнес гарантирован.
Блять я умолюя ну помогите на ёбаные советы из интернета не работают уже забеался. Ну как этой ёбаный sqlite3.h прилинковать на c++ умоляю блять поомгите нахуй заебался уже блять с этой поеботиной ебучей
Вот 2 файла в ебучей папке блять делаю всё сука по ебаному официальному гайду с их ебаного сайта блять и комплятор писал команды и чё только не далл и всё равно саука он не привязываей её нахуй. блять заебался уж сукас блять эта хуйня Ну помогите эту хуйню блять слинковать пиздец я на эту залупу ебаную времени выкинул.
Уже и блять вставлял туда оригинальный файл кэтому заголовку ебаному который sqlite.c и с ним комплировал и в связке блять и dll библоетку высрать пытался по официальной команде из гайда с оф сайта к моему копилятору один хуй ошилбки ошибки блять ебаные ошибки сука нахуй тогда вообще эти гайды ебаные елси там одни ошибки блять лучше бы вообще не пислаи нахуй
>>2374725 Ну как блять ну почему эта залупа пиздец что она не видит эту ебаную бибилиотеку ну в чём дело от блять7 Ну сука же объявлена она как в той же директории блять лежит там файл ну сука ну что блять что блять не так то нахуй что блять не атк ёбаная тварь?
>>2374735 Никак. Я не могу собрать эта ёбаную хуйню. Вот вот я слинковал нахуй по официальному гайду нахуй официальной командой блять вот оно нахуй .dll библиотека эта ебаная блять вот что у меня вышло блять сука. Не комлилируется ни библиотека, ни на голую этот ебаный файл не подключается НИ-ХУ-Я. нахуя этот гайд писали не знаю блять, с таким же блять усппехом могли бы и не писат эту хуйню ебаную
Я просто тупо беру и голвый .h файл инклюдом включаю и всё.
>>2374735 Я уже блядь эту ебаную библотеку с исходниками и в дефолтные либры комплятора впихивал и чё только блядь я не делал я уже блять не знаю как эту хуйню сликновать блять я сука блять ненавижу нахуй эту поеботину ебаную блять сука. Мне блять хуйню делать надо блять я на этой хуйне ебаной сижу из за того что эти гайды ебаные поеботина блять и эти пидоарсы из формов SOLVED блять которые пишту очевидную хунйю ой а блядь добавьте инклюд нахуй вы забыли её включить ВОТ Я ДОБАВИЛ НАХУЙ НЕ РАБОТАЕТ СУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУУКА
>>2374750 >>2374753 >>2374735 А всё я долбаёб. Прри компляции .dll ббилиотеки надо было убрать с третьего скрина назване исходника потому что он уже включен. я смотрю он пишет в ошибках множественное определение то есть я как бы один файл 2 раза компилировал. всё скопилировал. я долбаёб да я знаю
>>2374735 >>2374735 >>2374735 >>2374735 ОООООООООООООО КАЕФ ЭТО СКОМПИЛИРОВАЛОСЬ ВМЕСТЕ С .DLL БИБЛЕОТКОЙ. ТАКОЙ КАЕЕЕЕФ ПОЙМАЛ БЛИН. Ребят спасибо огромное вам.. ООООО ОНО СКОМПИЛИРОВАЛОСЬ НАКОНЕЦ-ТО Я СМОГ ЗАГРУЗОЧНЫЙ МОДУЛЬ ДОПИСАТЬ А ТО Я ОХУЕЛ СО ВЧЕРАШНЕГО ДНЯ.
Мммм. Я понял в чём ошибка была. Мало одного файла sqlite3.h положить в папку нужно ещё его sqlite3.c скомпилировать в либру .dll и потом .dll + sqlite3.h закинуть в папку с проектом.
А вот они пробелы в знании о работе компляторов и компоновщиков...
>>2374778 Типо после того как я удалил элемент списка, то функция erase вернула елемент который при удалении занял его место, тоесть если у меня одно соединение, то у меня получается удаляется единственный элемент, и патом он заменяется end(), а так как у меня в конце каждой итерации i++, то итератор пытается выйти за приделы списка и получается ошибка, так что ли? И как это обойти? А почему во всяких примерах это работает, а у меня нет?
Ходит слух что вкат в программирование через с++ самый сложный, но при этом именно на этом языке много вакансий где вроде как не требуют знания 9 тысяч технологий. Где правда ?
>>2374880 Пиздеж. Вакансий вообще нет для вкатунов. Учи шарп, там тоже особо не надо знать левые фреймворки, всё свое. Лучший язык для вката и первой работы.
>>2374880 лично мне повезло я вкатился в работу на С++ с уровнем знания - я умею создавать классы и писать функции. У меня специальность не программистская, у меня на 1 курсе было программирование С++, а дальше я сам изучал чуть чуть. Начал пытаться устраиваться на разные работы, делал тестовые задания, попутно изучая С++, меня не брали, а патом взяли. уже 5 месяц работаю
Ребята, не понимаю. Как в данной функции, вводя логин пароль сохранить полученные значения? Всё до чего я додумался, это привязать вводимые значения к конкретному человеку через объект класса(Но я не уверен что мыслю в нужном направлении).
>>2374880 Для вката достаточно получить техническое образзование и потом идти в гос или окологос контору. Сложен не сам вкат, а поиск сытого места в позиции мидл.
В текущих реалиях язык самодостаточен. В довесок может идти немного питона, Qt / boost, линукс и git. Всё остальное сильно специализировано и вкатуну не нужно.
>>2375230 Смысл в том, что есть такой ущербный язык как C. В этом чудесном языке нет ссылок. И вот допустим тебе надо из функции вернуть через параметры объект, созданный в функции:
Вот так не сработает: void func(object⚹ obj_ptr ) { obj_ptr = malloc(...); } object⚹ ptr = NULL; func(ptr); // ptr == NULL потому что ptr передаётся по значению и в func это локальная переменная
>>2375230 >А зачем нужен указатель на указатель? В чём смысл? Чтобы вернуть указатель, очевидно. Ошибка нубов и дебилов >>2375245 в том, что они думают что указатель это что-то особенное (типа ссылки), но это чушь. Указатель это просто переменная, как любая другая переменная. А что там конкретно хранится в переменной, тебя ведь не ебёт, когда ты учишь что такое переменные, верно?
Смотри где ошибка: Почему ты считаешь, что вернуть указатель на переменную int (int = число → переменная с числом) это имеет смысл, а указатель на переменную-указатель (указатель = число → переменная с числом) смысла не имеет? Это же чушь ёбаная, это буквально одно и то же. Указатель это никакая не ссылка, а переменная с числом (адресом), именно поэтому ссылка на ссылку не имеет смысла, а указатель на указатель имеет. Потому что ссылка не имеет смысла без того на что она ссылается, ссылка это лишь алиас, псевдоним, а указатель имеет, это самостоятельная переменная (с числом, но содержимое без разницы) кк любая другая, а переменная самодостаточна, ей кроме самой себя больше ничего не нужно. Переменные нужны ради их самих, их содержимого, а ссылки это абстракция, просто еще одно имя для чего-то другого.
Ты ведь согласен, что переменные нужны, верно? И указатели на переменные нужны, верно? Следовательно и указатели на указатели нужны, ведь указатели это и есть переменные. Указатель на указатель = указатель на переменную. Как можно спиздануть что это не имеет смысла?
Итого: Указатель на указатель нужен там, где нужно вернуть адрес, что тут непонятного? Почему вернуть например структуру через указатель это нормально, а вернуть например адрес через указатель это что-то странное? Ничего странного, адреса - нужны, как и всё остальное, а значит и указатели на переменные с адресами (указатель) тоже нужны.
--- А то, что указатель можно разыменовать изображая из него ссылку, это свойство РАЗЫМЕНОВАНИЯ, а не указателя. Указатель и процесс разыменования это отдельные вещи, не надо их лепить в одно.
Указатель это просто переменная с адресом (числом). Адрес это ссылка на память, а память вся одинаковая, состоит из одинаковых байтов, так что все адреса одинаковые, а соответственно и указатели - переменные их содержащие тоже одинаковые. Поэтому придумали дурацкий тип void который ничего не значит, а служит только для указателей, как затычка для несуществующего нечто, на которое этот адрес якобы ссылается - в никуда, ибо в контексте текста программы нет такого объекта "память", есть только объекты данных в хранящиеся в памяти. А адрес не подразумевает никаких объектов, это всего лишь место в памяти, ячейка ОЗУ, - void, пустой несуществующий объект, точнее самой концепции объекта не существует, но синтаксис языка требует объекта, вот и затычка.
Так вот, вернувшись к началу. Указатель это не ссылка, ссылкой является разыменование, поэтому для разыменования нужен объект-цель как для любой ссылки. Но указателю это не нужно, не его проблемы.
>>2375434 >Чтобы вернуть указатель, очевидно Нет. ⚹⚹ это также и способ задания многомерных массивов переменной длины. Например >>2375253. Соответственно void func(int⚹⚹ matrix) работает с матрицей и никаких указателей не возвращает.
В мире c++ подобная неоднозначность устраняется с помощью ссылки: void func(int⚹& vector). Если ты попытаешься в такую функцию передать матрицу, то получишь ошибку компиляции. Если же напишешь в стиле C, то получишь утечку/порчу памяти в рантайме.
Ссылки в языке с++ нужны для того, чтобы более точно и лаконично описывать поведение кода.
>указатель на переменную-указатель смысла не имеет Многоэтажные указатели несут те же проблемы, что и c-style cast.
>чушь ёбаная, это буквально одно и то же Вот такая операция неявно снимает константность: int⚹⚹ a = nullptr; const int⚹⚹ b = nullptr; b = a; Компилятор C++ выкинет ошибку, потому что такое в языке запрещено. Компилятор C скажет малаца и в рантайме будет беда. Для обычных указателей такое присваивание легально.
>>2375455 Сорян, я не читал выше, просто прокомментировал насчет двойных указателей, зачем они нужны, что ответ самоочевиден. Если конечно понимать что такое указатели, а не путать их со ссылками.
>void func(int⚹⚹ matrix) Если написал говнокод язык не виноват. Для матриц не нужны указатели, значит и нечего их пихать. Оберни как-нибудь красиво, чтобы без граблей пользователю твоих функций, включая тебя самого.
>>2375434 А твоя ошибка в том что ты думаешь будто бы переменная со звёздочкой - это реальный указатель. Нихуя подобного. Никто тебе не гарантирует что не получится dangling pointer после оптимизации. Делать указатель на указатель в крестах - быть конченым дебилом. Для борьбы с даунами уже даже volatile пытаются из языка убрать.
>>2375511 >Никто тебе не гарантирует что не получится dangling pointer после оптимизации. Делать указатель на указатель в крестах - быть конченым дебилом. Опять высосанный из пальца говнокод? Я же вроде ясно писал - возврат указателя. Твоя оптимизация его поломает? Нет? Ну вот и ответ. Дауны это клоуны мнящие себя умниками, сидят придумывают хуйню как поломать компилятор. Ну поломал, и что? Зачем ты нужен такой?
>>2375517 > высосанный из пальца говнокод > сидят придумывают хуйню как поломать компилятор При этом половина багов памяти в сишном коде связаны с dangling pointer. Все прям сидят и специально ломают компилятор, да? А ведь можно просто не ложить хуй на рекомендации, они же очень простые: использовать вместо указателей везде где можно ссылки или unique_ptr, не использовать сишные массивы, не использовать больше одного указателя на участок памяти.
>>2373982 >пик Кстати, а есть ли какое-нибудь расширение, в котором вместо всплывающего текста, показывалась бы аниме девочка, которая рассказывала бы этот текст? Необязательно для VS.
>>2375434 >указатель это что-то особенное (типа ссылки), но это чушь. Если мне память не изменяет, то в некоторых системах он мог иметь плавающий размер. Из-за разницы размеров машинного слова, и адреса памяти.
Имхо указатель - просто ячейчка, которая может куда-то указывать.
>>2375831 >Предположу что это груз наследства от СИ. Их в разработке используют? Просто не понимаю нахуя мне на курсе "для начинающих" рассказывали 2 часа про макроссы, а в конце сказали что это хуйня без задач для долбаебов.
>>2375860 >используют? Да. Они есть и в стандартной библиотеке. Например std::assert() сделан вот так: #ifdef NDEBUG # define assert(condition) ((void)0) #else # define assert(condition) /implementation defined/ #endif В релизной версии он полностью удаляется из кода, иначе будет вызываться std::terminate и завершение программы.
Условная компиляция на макросах используется при сборке с разными сторонними либами (допустим directx/opengl) или аппаратными особенностями (cuda, sse, neon).
>>2375778 На функциональных макросах можно делать всякие интересные вещи, чисто текстовые, которые ты не сделаешь на шаблонах. Их часто используют во всяких бустах уровня hof, библиотеках юнит тестирования, да в том же кюте, но там все серьёзней (вообще свой препроцессор).
>>2375945 В макросах надо знать меру, чтоб не получалась магия. Но вообще на шаблонах и consteval можно всё тоже самое сделать. В современных STL уже нет макросов. > кюте Кал.
>>2375998 > Вряд ли хуже электрона. Хуже какого-нибудь WinUI 3. Как по производительности, так и по функционалу. > универсальное и мейнстримное решение? Ну что-то вроде винформса у шарпистов, Qt примерно такое же отсталое говно. Но вообще всё упирается в задачу. Если надо написать побыстрее гуй без лишней ебли, то лучше и проще брать гибрид крестов с шарпом - шарп под фронт, кресты под бэк. Если нужна нативность, то брать нативный гуй - WinUI под виндой и GTK на линуксе. Если нужен красивый, то HTML+CSS - вариантов помимо электрона куча, в том числе и вполне производительных. Если нужен гуй для отзывчивых утилит с кучей элементов, то лучше взять какой-нибудь нормальный фреймворк на GPU без оверхеда и лишнего говна - CEGUI или ImGUI.
>>2376012 >гибрид крестов с шарпом Звучит как Франкенштейн какой-то. Такое вообще где-то практикуется помимо репозиториев с 0 звёзд? >HTML+CSS Звучит как план но есть ли для них нормальные решения на крестах? Ну и чтобы целое двигло за собой не тащило.
при помощи и макросов и метапрограммирования на шаблонах можно осуществлять кодогенерацию но макросы оперируют токенами языка, а при помощи оператора вставки токена могут так же генерировать новые токены, в то время как шаблоны работают только над типами, макросы используют там где шаблонов уже не хватает а добавление во встроенный препроцессор вариативных макросов упростило и усилило возможности кодогенерации
>>2376015 > Такое вообще где-то практикуется помимо репозиториев с 0 звёзд? Почти в любом крупном гуевом проекте на шарпе. Там же отличная поддержка FFI.
>>2376148 > фанбой шарпа Где ты у меня увидел там про шарп, кроме предложения пилить простые кроссплатформенные гуи в стиле хуйк-хуяк на шарпе? Альтернатив этому просто нет, разве что так ненавидимые вами веб-рендеры. В любом случае, retained-гуй - это забагованый кал, гуй должен быть отделён от основного кода или хотя бы использоваться immediate-фреймворк. А WinUI - это нативный гуй Винды на крестах в 2022, как бы ты не копротивлялся. Классический гуй на GDI уже легаси и не будет развиваться. Рендерить гуй на ЦП в 2022 уже должно быть стыдно.
>>2376194 >WinUI Мда.., шарпоскаму было мало шарпоговна, оно еще и uwp притащило, еще пара постов и будет втирать за html/js Индусы совсем одебилели, уже на людей бросаются, нужно изолировать буйных.
>>2376267 > uwp Чел, UWP больше не разрабатывается и легаси, гуй там был WinUI 2, никакого отношения в актуальному не имеет. Актуальный WinUI 3 писался с нуля и работает на подсистеме Win32 но всё же есть обратная совместимость с UWP, майки услышали кодеров, поняли что идея UWP и контейнеризации были говном и сделали нормально. Актуальный API Винды - крестовый WinRT, только он разрабатывается сейчас, но и WinAPI никто не запрещает параллельно использовать. Привязку к Стору выпилили, софт распространяется MSIX-пакетами или напрямую экзешниками. Шизам уже просто не к чему доебаться. > будет втирать за html/js Фактически весь интерфейс Windows 11 сейчас на XAML, который компилируется в нативный код. Даже проводник и пэйнт на нём переделан. Всё рендерится на GPU.
>>2376194 >Альтернатив этому просто нет, разве что так ненавидимые вами веб-рендеры. Тот же Кют давно клал на нативные оконные функции и рисовался опеглом, с 6 версии может в вулкан и метал. Ты реально долбоеб который ничего не видет.
Сап, в проге на qt есть модули(.pri). В одном из них есть свои подмодули, которые называются так же как и в основной части приложения. Файлы одинаковые, классы одинаковые, имеем множественное определение. Нашёл опцию object_parallel_to_source, которая раскидывает объектные файлы по папкам и нивелирует проблемы с одноимёнными файлами. Есть что-то что пофксит одинаковые названия классов, структур, переменных? Ограничит область видимости класса модулем/папкой. NameSpace не очень помогает, да и супергеморно руками всё править.
>>2376534 > давно клал на нативные оконные функции и рисовался опеглом Но работает он одинаково дерьмово. Самые уёбищные интерфейсы, которые я когда-либо видел как юзер, были именно на Qt. Возьми хотя бы qBittorrent, которым приходится пользоваться каждый день - эта параша работает как будто однопоточная срань на WinAPI, ещё и в нормальный HiDPI не может, регулярно распидорашивает его при перетаскивании на другой монитор.
>>237660 Работает он как заявлено. То, что некоторые его использующие его являются дебилами, не делает его плохим. Делает дебилом тебя твои заявления, though.
Как собирать консольные приложения, чтобы они занимали пару десятков килобайт? А то стоит статически прилинковать стандартные либы, и уже вес мегабайтами измеряется. Или такой размер возможен только на c# так как все либы хранятся в винде?
Есть кто по sqlite3? Пожалуйста. помогите. Что я делаю не так при вызове exec функции? Хули она не вызывает call back у меня, вообще ничего в консоль не выводится и никаких ошибок. Что я не так то сделал?
>>2377104 Ну очевидно что юзать либры которые доступны в винде по умолчанию. Я не претендую на истинность но наверное писать приложение с использованием windows.h либры он же win32api
>>2377191 спасибо, я о таких конструкциях просто не знал. учился в основном по С книге, с++ читал но упор больше на классы и шаблоны там делал, стараясь не обращаться внимания на то что итак есть в си.
>>2377194 Спасибо, но это всё для меня сейчас пустые слова. Мне бы сейчас минимально базово научиться хоть что-то делать, потом уже можно будет переписывать код лучше, думать о каких-то классах. Я щас даже не могу высрать хотя бы как могу то что мне нужно. Первая серьёзная программа крупная
>>2377321 >>2377323 Кстати, да. Анон а поясни в чём отличие между указателм функции и прямым вызовом функции? Разве обычный вызов функции не перенаправляет на исполнямый её блок кода?
>>2377104 неужели уже в интернете пропали все эти статьи и форумные посты как делать парукилобайтные экзешники и новое поколение мамкиных хакеров вынуждено подниматься на эверест заново?
>>2376726 с учебными целями пишешь fpt-сервер, например в процессе написания как раз и освоишь и многопоточку и сетевое программирование алсо, если хуево кодишь то первым учебным проектом можешь написать компилятор яп, например того же оберона
>>2377104 1. Используешь сторонние библиотеки по-минимуму, желательно вообще только стандартную+winapi. 2. Пишешь на C вместо плюсов. 3. При компиляции выставляешь флаги, чтобы оптимизировали размер (обычно за счёт понижения скорости работы). 4. Через strip выкидываешь таблицу символов и прочее.
>>2377485 Не вижу ничего плохого в winapi. Интересная и прикольная штука открывающая целый спект возможностей, зная winapi можно даже на ассемблее под винду писать
>>2377485 А какие альтернативы? Можно не брать винапи, обмазаться каким-нибудь Qt и получить хеллоуворлды на 50 мегабайт, но исходной цели 20 килобайт это не соответствует.
Блет один и тот же код в мейне, на тех же компиляторах, с той же версией языка, в той же иде, но на разных системах сборки (qmake, cmake) работает по-разному. Это вообще как нахуй
>>2378008 >gcc 12 на шинду msys2? >что модули поддерживает и не от майкрософт а какие сборщики поддерживают модули сейчас? симейк вроде не поддерживает ты будешь вручную прописывать команды компилятора?
>>2378048 Qt socket тоже гавно какое то если честно, ебал эти сигналы хуялы. Я разные либы тестирую. Собсно мне нужна небольшая часть кода и на асио у меня есть рабочая версия, но чет впадлу тянуть стороннюю либу, когда можно нативными инструментами обойтись
>>2378070 Наверное так и есть. Но она у меня подбаговано работала, принимает пустые сообщения иногда, с асио таких проблем нет. И асио быстрее работает
>>2377472 > Пишешь на C вместо плюсов. Шиз, плиз. Си-компиляторов не существует в 2022 году. А вообще в Винде просто релизный билд собирает бинарники размером в ~15 кб, остальное уже как сам наговнокодишь. Я вот писал простенький виндовый сервис с TCP-интерфейсом к нужному API одной либы, чтоб потом цепляться по вайфаю с ведроида - получил экзешник 18 кб, потребление ОЗУ 900-1600 кб. Естественно использовал ноль зависимостей, только API винды. Специально ничего для уменьшения размера не делал, просто писал на крестах как обычно.
>>2378698 В чём вообще проблема? Голый хелоу ворлд даже меньше 15 кб весит, а в O2 все классы ликвидируются, минимум отличий от простыни сишного кода. Просто используй системное API, а не всякие бесполезные комбайны вроде буста или Qt.
>>2378779 Чел, не бывает экзешника из голого main. У тебя всегда перед выполнением твоего кода происходит инициализация рантайма и окружения. Ты первый день что ли?
Сорян за нубовопрос: как включить freeglut.dll в exe при компиляции? Желательно на примере codeblocks. Знаю, что так делать не принято, но просто два файла уж больно уебищно выглядят. Один exe-шник для небольшой проги проще и красивше
>>2379370 Никак ты DLL в EXE не включишь, тебе нужна отдельная статическая версия либы. Гугли "freeglut static linking". Но там свои изъёбства, может понадобиться линковать ещё больше либ, чем с DLL.
>>2379377 >>2379375 >>2379402 Спс за ответы. Понял свою ошибку. DLL - вообще не про включение в exe. Спрошу еще: как в codeblocks задавать строку параметров компилятора? А то пока приходится вручную компилить (но оно хотя-бы работает без dll теперь)
Есть какой-нибудь адекватный способ проитерироваться по файлам в папке в порядке их времени создания? Нужно вообще достать самый последний сохрененный файл, но видимо придется всю папку обойти?
>>2379559 Смотря что у тебя за ФС там. В винде если включена индексация, то можешь через запрос Windows Search SQL получить файл из индекса. Если пердоликс с ext4, то не выёбывайся и обходи вся папку.
Ладно, что-то меня затрахало самому ковырять: как запилить в glut плавное перемещение на низких скоростях (меньше пикселя в секунду)? Все дергается, ебать. Видно, что фигуры перемещаются скачками в 1 пиксел
>>2379661 Как обычно, разобрался сам, сразу после того, как спросил. Нужен мультисемплниг крч. Хотя пока все равно не особо въехал, как его количественно задавать.
Компилил вручную glut-прогу вот этими командами 1) gcc -c -o 1.o main.cpp -D FREEGLUT_STATIC -I"C:\MinGW\include\GL" 2) gcc -o 1.exe 1.o -L"C:\MinGW\lib" -lfreeglut_static -lopengl32 -lwinmm -lgdi32 -Wl,--subsystem,windows Добавил в прогу #include <math.h> #include <string> и функции этих библиотек. В кодблоке (с динамической либой glut) все компилится нормально, а вот в командной строке выполняется, почему-то, только первая команда. Как дополнить вторую (а может еще и первую) команду, чтобы все заработало? Я прост рили пока нуб, не бейте сильно.
>>2380736 Это не копирование, а приведение типа - static_cast<T&&>(T vec). Применяется как обычно - приводишь аргумент к нужному типу, чтобы вызвать соответствующий ему метод.
Решил расширить область навыков в плюсах и захуярить условный хеллоуворлд с UI, чтобы посмотреть, как эта хуйня выглядит изнутри и заодно сравнить с шарпом, почему бы и нет. Собственно, весь код https://nekobin.com/tebejizela программы сгенерен вижуанал студией.
При запуске окно программы представляет из себя пикрел, а возможности добавить свистелок-перделок в виде кнопочек, галочек, радиокнопок и прочей хуйни (а-ля лепка петушков из c#) туда нет.
Покопавшись в доках мелкософтов, к какому-то конкретному выводу так и не пришёл. Разве что создать в пустом проекте ресурс с диалоговым окном (В котором все свистоперделки на месте) и делать всё с нуля, в т.ч. инициализацию окошка.
Объясните, пожалуйста, долбоёбу, почему небо голубое и как срать в окно кнопочками.
>>2385925 Всё верно, в винапи нет ничего визуального кроме ресурсов, так что без ресурса диалогового окна лепить кнопочки просто некуда, ведь твоё окно создается кодом, а не грузится из ресурса (смотри код, дура).
Там сгенерилось еще окно "О программе..." показываемое через меню "Помощь", вот посмотри его ресурс и код который окно из ресурса создает и показывает на экран, а потом замени код выводящий на экран главное окно на код этого диалога, чтобы при запуске программы показывался этот диалог, и лепи туда свои кнопочки. Вот тебе и программа куда можно лепить визуально, а ставший ненужным код старого окна удали.
>>2386247 У окна есть атрибут меню (смотри код создания окна, дура), куда меню присваивается как и остальные атрибуты. А в виде ресурса просто для демонстрации применения ресурсов, ну и проще же мышкой редактировать.
>я и думал Надо не думать, а читать. Тебе нахуя студия код нагенерила? Чтобы хуй забить и задавать тупые вопросы? Далеко так пойдешь, шарпомакака.
Это в шарпе генеренный код - магия, куда лезть руками нельзя, а в чистых сях это наоборот прямой твой код, в него нельзя не лезть, это тупо пример для демонстрации, который ты сам должен своими руками писать, или по крайней пере переделывать как тебе надо. Должен смотреть и понимать что там происходит, как раз удобно для примера расписано же. Иначе хули ты приперся вообще, клоун?
>>2386485 Код ответит на все вопросы, тупорылая свинина, не может осилить пару небольших функций выложенных студией на блюдечке. Кто тебя еще с ложечки будет кормить, тупое недоразвитое говно, мамашу-шлюху попроси, может поняньчится со своеё личинкой.
>>2386500 Ебать тебя рвёт с простых вопросов. Я код смотрел, поэтому и спрашиваю здесь. Ты же, в свою очередь, либо неумело троллишь тупостью, либо с серьёзным ебалом бугуртишь из-за того, что пытается разобраться в плюсах лучше тебя.
>>2386550 Это не простые и не вопросы. Это охуевшая свинина хочет залезть на шею, хочет няньку-слугу, которая за него всё думать и делать будет. Типичный дегенерат.
>>2386985 Эта "охуевшая свинина" сейчас в одной комнате с тобой, анон?
акак выучить алгоритмы и структуры
Аноним26/08/22 Птн 03:10:25№24456481753
Доброго времени суток, аноны! Подскажите, есть ли норм способ фастом выучить алгоритмы и структуры данных? Сейчас смотрю видосы на ютубе от препода М(ФТИ), но их штук 40 и они по 1.5 - 2 часа. Может быть, есть какие-нибудь годные книжки или видео-уроки?