Вместо шапки:• https://github.com/sosachbot/cppthreadhat/wikiОтветы на вопросы:• https://en.cppreference.com/w/• https://www.cplusplus.com/reference/Прошлый тред:• >>1512466 (OP)
>>1517342Имеется в виду, что прямого доступа к указателям нет. Можно сделать ссылку или передать переменную в владение другой переменной
>>1517472последние книги старика так себе.. "язык программирования с++, специальное издание" годная книга у него, и то с оговорками.. "дизайн и эволюция" самая интересная, но не для тебя..
Вот я думаю: этот растошизик один срет в треде плюсов или таких сектантов несколько?Ебанутый, честное слово.
>>1517497Один, ибо у них совсем все тухло. Аналогично шизику, который под яблоко прогает и срет в си-треде и тут иногда, использует боевые картиночки.
А можно в ваших крестах лямбды в <>-скобках хуячить? Напримерunordered_set<Kluch,[](Kluch&k){return...},[](Kluch&k1,Kluch&k2){return...;}>чтоб в одну строку создать эту хуергу со своей простенькой хеш-функцией и предикатом тождества.
https://www.youtube.com/watch?v=ZQds2aGHwDAБьерн хвалит msvc компиль. Линуксоблядей попрошу выйти из треда. Microsoft топ-1 контора мира, уже совсем скоро сожрет всю индустрию целиком.
>>1517515> Линуксоблядей попрошу выйти из тредаЯ бы такой и не против стать линуксблядью, ну в нём нету нихуя, чтобы пописать музычку, и чтобы ваять дизайнчик в прогах от адобе, короче только кодить в нём.
>>1517322При желании все стандарты новые С++ позволяют писать без утечек и мне похуй, что вы там себе напридумывали про безопасность. Вы сосете член и даже не стесняетесь.
Есть ли разница между х86 и х64 PE форматом исполняемых файлов? Например, если я сделаю в студии компил под х86, то он определяет IMAGE_NT_HEADERS как IMAGE_NT_HEADERS32, а если под х64, то как IMAGE_NT_HEADERS64. Чо делать то?
>>1517634Короче, я сам посмотрел и единственная разница в структуре IMAGE_OPTIONAL_HEADER, где некоторые поля внизу инициализируются ULONGLONG вместо DWORD. То есть мне придется писать две версии класса для обработки ПЕшки под две архитектуры?
>>1517664>static_assertКстати, а вообще ветвить код в функции в зависимости от типа переданного шаблонцозавра порочно? Так делают истинные гуру?
>>1517646Епта, это называется абстракция. Можешь потом менять тип данных в куче мест одной строчкой. Плюс позволяет различать значения с разной семантикой, чтобы не складывать яблоки с пчелами (но для этого лучше настоящий strong typing).
>>1517679Если ты посмотришь, то и до этого так перекатывали, педеRUST-борщехлёбушка. Дрессируй лучше себя, чтобы не срать в треды.
>>1517515Лол, сейчас бы в 2к19 хвалить проприетарный компилятор. Дежурно напоминаю, что msvc пришлось наверстывать поддержку новых стандартов именно из-за clang. Не было бы шланга, сосали бы вы сейчас прямо как пользователи icc
>>1517683Дешевые оправдания с помощью былых заслуг. Если рантше перекатывали, то чего перестали, лалка?
>>1517626В том-то и проблема, что при желании можно писать с утечками. И не только при желании, можно тупо ошибиться. В этом и суть Rust: он не даёт прострелить колено, отсеивая подобные баги на этапе компиляции
>>1517670а бы сначала попробовал сделать через перегрузку функции, если не устроило бы, то через специализацию шаблонной функции и в крайнем случае стал бы использовать возможности новых стандартов..
>>1517686>лалкаТипичный расторебёнок.>Дешевые оправдания с помощью былых заслугПросто ты, манька, сидишь и высираешь в тред про то, что из-за тебя великого кто-то что-то там делает даже. На деле же всем похуй на тебя, юродивый.
>>1517687>он не даёт прострелить колено, отсеивая подобные баги на этапе компиляцииЕсли он такой ахуенный, то почему его никто не использует кроме пары бородатохипстерофирм? И не пизди, что %FIRMA_NAME% его юзает, педеРАСТ растёт крайне медленно и через лет 5 вообще сдохнет, потому что его создатели его окончательно превратят в говнофункциональную парашу по типу хаскеля.
>>1517689>Настолько похуй, что не могу тебя о этом не уведомитьНа будущее - чтобы продемонстрировать безразличие, лучше не отвечатьрастоблядь
>>1517693Через 5 лет в C++ перенесут и borrow checker из раста, и концепты оформят как в расте, и stdlib сделают человеческой как в расте, и std::move превратится в destructive move как в расте. И нихуя у тебя от современного C++ не останется. Ты еще не понял, что растобляди уже победили: или rust победит, или C++ по сути станет таким же, как rust.
>>1517698>продемонстрировать безразличиеЯ безразличен к твоим действиям, но небезралично потешаюсь с твоей тупости.
>>1517708>https://youtu.be/d67kfSnhbpAТы главное не нервничай, C++ не пиздит главную фишку Rust, повторяю - НЕ-ПИЗ-ДИТ
Самое забавное, что растобляди всячески агитируют за прогрессивные технологии и всячески радуются тому, что они появляются в других языках, в тоже время C++-сектанты как таксисты старой формации - протестуют против убера.
>>1517693Он по сути конкурирует с с++. И говорить, что его никто не использует, неправильно - просто язык относительно молодой. Если borrow checker перенесут на с++, то он превратится в монстра без обратной совместимости. А раст останется чистым и аккуратным
>>1517713>Ты главное не нервничайМне-то самому rust больше нравится, только что ты тут агитируешь аки проповедник? Тут люди серьезные сидят и у нас на крестах работа повязана, старые проекты, что, могут и на шее ярмом быть, но они есть, так что я тебя не понимаю, зачем ты тут полемику начинаешь.
>>1517636> То есть мне придется писать две версии класса для обработки ПЕшки под две архитектуры?Да. Можешь еще как лох на макросах и if/else.
>>1517736>Да. Можешь еще как лох на макросах и if/else.Я в итоге шаблоноеблей ограничился.>>1517732Да тред посмотри, он внутри него, ржавчиной растет.
>>1517322>Юзайте пикрилА как в расте low-level acces делают безопасно? Там я могу такой на понтах взять и тупо по адрессу 0x228 обратиться и записать что-то?
Растошизик все не успокоится, я смотрю. Ну пусть посидит еще чуть-чуть, забанить за нерелейтед всегда успеем.
>>1517720Ты понимаешь, что ты уже который тред агитируешь не за раст, а за собственную распиздатость? Ты молодец, весь такой прогрессивный и охуенный, создай себе тред и сиди в нем
>>1517578Кодить это необходимость, а не смысл жизни, тупая ты никчемная овца. Это как умение пользоваться молотком, отверткой, плоскогубцами, паяльником.
>>1517594> Очередные программситы с винтом на 80гб в треде рофлОчередная чмоха, сейчас будет рассказывать, что ради логотипчика любимой корпорации нужно непременно тратить бабло и увеличивать вычислительные мощностя, пусть того и требует лишь идеешечка с компилятором.
>>1517670Для этого и придумывали if constexpr. Только не вздумай потом писать в else-блоке !std::is_same<T,T>
>>1517515>Бьерн хвалит msvc компиль. Он очень тормозной. Даже со stdafx компилит в разы медленнее, чем mingw. Из плюсов - больше ворнингов ловит по дефолту, но сообщения об ошибках гораздо хуже, чем у GCC.
Так блэт, что у вас там за хуйня с новыми стандартами? Приставку Legacy к старым итераторами присрали, а новые не завезли? Хозмаг переезжает, не закрыв вход охуевающим покупателям?
>>1517687>В этом и суть Rust: он не даёт прострелить колено, отсеивая подобные баги на этапе компиляцииОбсудили же в прошлом треде. Он это делает, только пока ты данные располагаешь в виде дерева. Единственная альтернатива этому - использовать индексы и Rc (умные указатели) вместо ссылок, из-за чего вся магия раста сразу теряется, он перестает ловить ошибки во время компиляции, и становится ничем не лучше крестов.
>>1517721>А раст останется чистым и аккуратным Ага, менять синтаксис языка в минорных релизах - сама чистота и аккуратность.
>>1517825>из-за чего вся магия раста сразу теряется, он перестает ловить ошибки во время компиляции, и становится ничем не лучше крестовИ тут ты такой приносишь пример, где компилятор не детектит ошибку
Жил-был СТРАУСТРУП. Шел обычный, скучный день. СТРАУСТРУП занимался рутинными вещами, такими как ебля своей трехсоткиллограмовой матери в зад. Только успев кончить матери в пердак и вынуть измазанный в говне хуй, СТРАУСТРУП услышал стук в дверь. Не заметив, что его мать умерла от сердечного приступа еще 3 дня назад, он пошел открывать дверь и вышел на веранду. На веранде никого не было. СТРАУСТРУП, было, уже начал подозревать СТЕПАНОВА в очередной подъебке, но вдруг, из под крыльца что-то вылетело и понеслось на него. От перевозбуждения СТРАУСТРУП уронил скрепленнеые скотчем очки на пол и смиренно ждал, что будет дальше. ЛЯМБДА, с огромной скоростью пролетела мима СТРАУСТРУПА, квадратной скобкой отпихнула его и заползла в дом, крепко заперев дверь. ЛЯМБДА ясно дала понять, что она приняла дом в качестве аргумента, но отказывается возвращать функцию, которая принимает ПИЗДЮЛИ в качестве аргумента и возвращает дом. ЛЯМБДА заползла на стул перед компьютером и свернувшись в уютный клубок, зашла на ДВАЧ. СТРАУСТРУП знал ЛЯМБДУ. По крайней мере, это слово он точно слышал, но не знал, что оно значит. Он очень удивился, когда недавно узнал, что ЛЯМБДУ включили в НОВЫЙ СТАНДАРТ, принятый полгода назад. СТРАУСТРУП понял, что надо выгнять ЛЯМБДУ из дома, потому что желание в очередной раз залезть на мамочку было слишком велико. Будучи первоклассным инженером, СТРАУСТРУП начал искать решение проблемы. Для разминки он решил повторить таблицу умножения до 12 на 12. Он 2 часа стоял на одном месте и смотрел в никуда, потея как свинья. Пока он боролся с таблицей умножения, из за угла вышел измазанный в говне АНДРЕЙ АЛЕКСАНДРЕСКУ и осмотрелся. Рядом стояли несколько зданий, включая психбольницу для буйнопомешанных и тюрьму. АНДРЕЙ задумался и понял, что в округе нет ни одного настолько больного и гнилого человека, чтобы продать ему свою книгу. Небрежно посвистывая, АНДРЕЙ удалился. СТРАУСТРУП закончил разминку и начал думать, как прогнать ЛЯМБДУ. Вдруг его осенило. Его дом был скомпилирован последней версией GNU G++, которая поддерживает ЛЯМБДУ. Именно поэтому, ЛЯМБДА и смогла проникнуть к нему в дом. СТРАУСТРУП понял, что ему нужна более старая версия G++, которая не поддерживала ЛЯМБДУ и тогда, при попытке компиляции дома, ЛЯМБДУ выкинет вместе с СООБЩЕНИЯМИ ОБ ОШИБКАХ. Но старую версию было негде взять. СТРАУСТРУП нанял ФУНКЦИОНАЛЬЩИКА СО ШТАНГОЙ за 5 тысяч рублей. Так как компьютера у них не было, ФУНКЦИОНАЛЬЩИК вначале написал на бумажке компьютер в 1 строчку НА ХАСКЕЛЕ: Computer = Computer ФУНКЦИОНАЛЬЩИК сожрал бумажку и высрал работающий системный блок с ВОДЯНЫМ ОХЛАЖДЕНИЕМ и предустановленой WINDOWS 7. На компьютере уже был установлен АЛАН ВЭЙК и ХАСКЕЛЛ ПЛАТФОРМ. Корпус был красного цвета, с наклейкой ТУРБО на прозрачной боковой крышке. Затем ФУНКЦИОНАЛЬЩИК написал в 2 строчки старую версию G++: Compiler :: [C++SourceCode] -> [ExecutableFile] Compiler source =(Link . Compile) source СТРАУСТРУП взял исходники своего дома и запустил компиляцию. Компилятор начал дристать СООБЩЕНИЯМИ ОБ ОШИБКАХ. СТРАУСТРУП попытался разобрать первую строчку, но увидев такое, дальше лезть не решился(таблица умножения и так вымотала его): std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<std::basic_string<char, std::map<std::basic_string<std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,std::allocator<char> > const, std::basic_string<char, std::char_traits<char>,std::allocator<char> > > > >char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,std::allocator<char> > const, std::basic_string<char, std::char_traits<char>,std::allocator<char> > > > >std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,std::allocator<char> > const, std::basic_string<char, std::char_traits<char>,std::allocator<char> > > > > Высрав 10 000 СТРОК СООБЩЕНИЙ ОБ ОШИБКАХ, компилятор скончался от ЛЕНИВЫХ ВЫЧИСЛЕНИЙ ПРЯМОЙ КИШКИ и из монитора вылетела ЛЯМБДА. Придерживая круглые скобки квадратными скобками, ЛЯМБДА в ужасе съеблась под ближайший камень. Ей еще долго не захочется принимать и возвращать значения. Довольный СТРАУСТРУП плюнул в руку, чтобы наслюнявить хуй и уже решился залезать на мамочку, но передумал и решил вначале запостить эту историю на ИЗДАЧ.
>>1517914дзен заключается в понимании того что гигиенические макросы на плюсах - это шаблонытеперь уебывай
>>1517931>СТРАУСТРУП занимался рутинными вещами, такими как ебля своей трехсоткиллограмовой матери в зад.Тоже что ли видели то видео? Ебать я тогда ахуел.
>>1517965‹‹Записываю витал-икону+наши хромосомы из выделений в присос =кровь хромосомы::горизонт жидкостей тела=убить как собаку, разложенную до голого гена =ТВ/спазм// Я разочарован в объёмной инокуляции гидромашины::бесконечный круговорот масс плоти::исчезаю с телом машинной природы ТоК::‹‹высасываю порно нервный газ бойроида// Душа/грамма самосокрушения до квантовой трагедии NDRO// Выход=преступник внутренней-системы-органов›› Определяет++мазо=траффик::от ToKAGE, скапливающихся в городе Городе Трупов// Душа/грамм их разжижают внутренние жидкости тела++себя, что вызывает в цифровом вампире функцию насилия::чудовнще разрастающееся запечатлено в голограмме пса и реверберации// Жестокость замученной памяти/
>>1517975> педераст и либирал.Я так и решил оставить карьеру, когда сменив две галеры и придя работать в третью, увидел что там то же одни педерасты и либаралы и прочие подвиды хипстеров. Презираю всех вас, чмошек ебанных.
Кто, блядь, притащил на двачи ебаный термин "бумер". В этой стране эквивалентом американских бумеров является слово "совок". Именно совки это та пидарасня, которая ненавидит молодых и успешных либералов, потому что в их возрасте совки сосали хуи по всем фронтам и им завидно, что все, за что они боролись, современная молодежь имеет по умолчанию.
>>1518024>Что за видео?Он про видео, где СТРАУСТРУП занимался рутинными вещами, такими как ебля своей трехсоткиллограмовой матери в зад.
>>1518028>Кто, блядь, притащил на двачи ебаный термин "бумер".Никто вроде, тут только миллениалы и зумеры (но это не точно).
У питона есть urllib для работы с вебом. Есть ли среди дефолтных либ с++ аналоги? Если нет, то как тогда можно работать с SMTP, FTP, HTML, JSON итп? Что можно почитать на эту тему?
>>1518036>У питона есть urllib для работы с вебом. Есть ли среди дефолтнЭто троллинг, да? Ты специально давишь на это, ирод?
>>1518042В С++ нет дефолтных либ для этих задач. Либо используй какой-нибудь curl, либо подрбуй boost. Можешь сам, конечно, на сокетах навелосипедить или заюзать платформозависимую хуйню тибо winnet с std либы, но это порочно.
>>1518036К сожалению в крестах демократия, одобренных Партией либ мало, гугли типа "c++ json library"
>>1518052>на сокетах навелосипедитУ меня раньше был фетиш на то, что я делал велосипеды под все и дрочил на них. У меня был свой класс строки, была своя либа запросов, было все свое, но мне было стыдно это постить на гитхаб, так как это было говно уровня HippoString string = new HippoString("anus");
Хочу сам написать. Что можно читануть на эту тему? Ну вот, например, хочу получить html этой страницы и вывести его в консоль. С чего вообще тут начать?>>1518055Мне пойдет.
>>1518056>Ну вот, например, хочу получить html этой страницы и вывести его в консоль. С чего вообще тут начать?в современном мире это может быть проблематично, тк контент многих сайтов генерится динамически на клиенте при помощи jsно в качестве тренировки тебе можно начать просто с реализации либы которая реализовывала бы client http, те клиентскую часть протокола http
>>1518056>Хочу сам написать. Что можно читануть на эту тему?https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BD%D0%B4%D1%80%D0%BE%D0%BC_%D0%BD%D0%B5%D0%BF%D1%80%D0%B8%D1%8F%D1%82%D0%B8%D1%8F_%D1%87%D1%83%D0%B6%D0%BE%D0%B9_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8
>>1518036нужно отталкиваться от того, под винду тебе это надо, или под юниксы, или кроссплатформенное решениеиз кроссплатформы, к примеру, многим нравится cpprestsdk от майкрософтв нем есть http client, websocket client, ouath client, json и обертка для асинхронки..по итогу это позволяет работать (с клиентской стороны) с современным интернетом, где много данных гоняется поверх http (+webcocket)
>>1517825> ничем не лучшеЛучше, там в рантайме в случае бага будет вполне определенная ошибка, а не неведомое нечто (UB).
Бляяяяяяядь!!! Какого хуя даже в boost нет нормальной очереди?!?!?! В boost::lockfree::queue хуй ты положишь string, потому что нетривиальные конструкторы-деструкторы, матерей всех ебал! Неужели таки самому писать?!?!?!?!??!?!! Да нахуй тогда сдались ваши кресты ВШИВЫЕ, когда я на Сишке люблю чистые прямолинейные велосипеды писать, но не на крестах блядь из говна и палок запутанную хуету всякую.
>>1518164Я не ради того свой пет-прожект с няшной чистой сишечки на ваши ублюдские грязные кресты переношу, чтоб с поинтерами пердолиться в перемешку с говноабстракциями. Так-то я все вообще красиво сделаю, но вопрос нахуя тогда гигабайтные либы тащить??? Когда один хуй надо через маллокать буфер, класть в него .c_str() и аналогичную хуету при извлечении. При чем ебаная .pop() еще возвращается с ничем, вместо того чтоб дождаться, ЧТО БЛЯДЬ ЛОГИЧНЕЕ НАХУЙ!!!!!
>>1518164>>1518169Неужели так сложно сделать этоhttps://pastebin.com/bxcwjmacв крестовом стиле и положить для меня в STL???
>>1518188Да я в курсе, что lockfree и означает не блокировку потока процедурой .pop() при пустой очереди. Но ведь других вариантов и не завезли! Спрашивается, какого хуя? Разве не логично, чтоб поток-producer запушил туда столько null, сколько потоков-consumer, чтоб каждый попнул свое послание нахуй и за-join-ился? Я теперь, как мудак, должен рассчитывать на UB, что раз пусто, то скорее всего больше не будет, потому что producer в среднем быстрее обработчика? Хуита какая-то, ответственно заявляю-с, однако.
>>1518208Но ведь boost - это та самая околостандартная библиотека, фичи которой со временем прирастают к STL, не?
>>1518215Да, и именно из-за этого ничего хорошего ждать там не стоит. Если пытаться угождать всем и сразу — всегда получаются вот такие уёбища как stl/boost/java spring/итд.>>1518217Что сказать-то? Если делаешь гуйню на нём то уже только его использовать и можно (он сам на себе завязан с ног до головы), если хочешь лайтово и перформансно — это точно не про Qt.
>>1518227>качать цмейк гуй>устанавливать цмейк гуй>запускать цмейк гуй>нажимать на кнопку в цмейк гуй>вместо cd hui; cmake .Шиндушатники как обычно.
>>1518188A non-blocking algorithm is lock-free if there is guaranteed system-wide progress, and wait-free if there is also guaranteed per-thread progress. https://en.wikipedia.org/wiki/Non-blocking_algorithm
>>1518176>Когда один хуй надо через маллокать буфер, класть в него .c_str() и аналогичную хуету при извлечении. в modern с++ предполагается что буфер памяти будет представляться как std::vector<std::byte>
>>1518208>нормальные библиотеки (вроде folly)FBString.hо, да, деткане изменяй традициям!каждая уважающая себя компания пищая на крестах должна иметь свой класс строки
>>1518164возможно, глупый вопрос, но зачем класть обязательно shared_ptr, почему просто не unique_ptr?
>>1518239Т.е. тебя не смущает, что у них там вообще всё окружение своё (как и у всех), а свои строки смущают?>каждая уважающая себя компания пищая на крестах должна иметь свой класс строкиТ.е. ещё тебя не смущает тот факт, что даже в, блядь, джаве такое встречается?
>>1518119>2к19, а в ваш ссаный STL все еще не завезли многопоточную очередьда использовали стандартные контейнеры stl в многопоточке вовсю, четверть века уже используютпросто оборачивали в примитивы синхронизации, кто то писал классы-обертки для этогосейчас то же самое на изи делают, но уже со стандартной многопоточкой..
Есть два стула: возвращать unique_ptr с результатом в случае его наличия или возвращать bool флаг наличия результата, а сам результат записывать через параметр по ссылке. На какой сам сядешь, на какой мать Страуструпа посадишь?То естьstd::unique_ptr<T> zalupa();илиbool zalupa(T &resultat);
>>1518251да это известная шутеечка про свой класс строки в каждой крестовой фирме..но, в оправдание, мотивация то этого велосипедостроения была оправданна по соображениям производительности (особенно в геймдейве это людей раздражало)хотя щас то все вроде более менее норм, тк семантика перемещения есть и string_view есть.. так что и стандартная строка тоже норм стала..
>>1518271красноглазый полудурок в очередной серет в штаны в прямом эфире, ничего не понимая, но виновата шинда
>>1518272А что там писать-то? Он же простой как палка.Даже когда где-то обосрусь, поправляю и ебашу make — и он сам себя обновляет прекрасно.>>1518273Причём тут я-то? У меня никогда ничего и не отваливалось, хз зачем вообще чистить этот кэш.
>>1518274Какие преимущества? Я вижу потенциальную утечку, но это при неправильном использовании, разумеется. Если по указателю память выделена, но не стал записывать в юник_птр.
>>1518248http://www.cs.technion.ac.il/~sakogan/papers/ppopp11.pdfhttp://www.par.univie.ac.at/project/peppher/publications/Published/opodis10lfq.pdf
>>1518277>Какие преимущества?Простой и понятный код.> Я вижу потенциальную утечкуНу так и юзай раст, лол.Алсо, есть ещё гениальный вариант в стиле go-вна с кортежомif (auto [huita, err] = zalupa(); err != nullptr) { pizdos(); }
>>1518239>каждая уважающая себя компания пищая на крестах должна иметь свой класс строки Бывает, что у компании своя строка, да еще и в сторонних либах, которые эта компания использует, в каждой по своей версии строк и умных указателей.
>>1518256насколько я понимаю, в современном c++ типа модно возвращать значение (с передачей владения) через unique_ptr, заодно nullptr будет говорить об ошибке, еще плюс этого что можно возвращать полиморфные типы..есть еще второй вариант через std::optional, он удобный в том случае когда не возврат значения не является ошибкой, и еще удобный тем что дальше ты работаешь напрямую с объектом (а не косвенно через укзатели, будьто и умные указатели)может есть и еще какие новые способы возврата значения..
>>1518274>Возвращу сырой поинтерэто очень хуевое решение, оченьоно имеет пользу в одном случае - это когда из твоего контейнера есть необходимость показать наружу его потроха, к примеру, как в std::vector метод data()
>>1518279такой подход тоже использовался в крестахвозвращали std::pair, первый член - данные, второй - валидны или неточевидный минус этого что данные (в отличие от std::optional всегда должны быть, те всегда должен создаваться возвращаемый объект)
>>1518283>может есть и еще какие новые способы возврата значения..Стандартный способ еще до 11 стандарта - своя обертка, внутри которой указатель на данные, которая работает как value-тип. Вроде std::string и почти любого класса Qt (причем pimpl тут не обязателен).
>>1518286к примеру, результат вставки insert в множество возвращал пару где second было удачно ли завершилась вставка, а first - возвращала позицию вставки, это было оправданно тк итераторы stl - легкие объекты, зачастую это всего лишь указатели..
>>1518286>такой подход тоже использовался в крестахА я этот псевдокодкод на чем написал по-твоему?>>1518284Зависит от ситуации. Если писать коллекции для библиотеки, которая торчит везде - да, какой нибудь дебил обязательно отстрелит ногу всем. Если внутренняя залупа для проекта — то документации хватит с головой.
>>1518289ну это то понятнотипа out-параметр обычный, но тк это ссылка, то он должен быть проинициализирован, поэтому пропехивают пустой объект в обрабатывающую функцию, а тот с ней работаетпроблема такого подхода очевидна - в случает ошибки или отстутвия результата, все равно приходится "тратится" на создание пустого объекта..
>>1518292>А я этот псевдокодкод на чем написал по-твоему?на ободке своей сигары, очевидно же!потом выкурил ее, и понял, что все это только дым!
>>1518287не очень понимаюв ситуации отсутствия механики перемещения это же приводит к копированию внутренних данных, которые обернуты этим классом?
>>1518218Тебя с этой хуйней в прошлом треде обоссали, шизик. Там получишь внятную ошибку в рантайме с хорошим стектрейсом. А в C++ от этой ошибки можно защититься только с помощью санитайзеров
>>1518301>А в C++ от этой ошибки можно защититься только с помощью санитайзеров Можешь сделать проверку в рантайме без всяких санитайзеров, так же как в расте, никто не запрещает.
>>1518299>в ситуации отсутствия механики перемещения это же приводит к копированию внутренних данных, которые обернуты этим классом?Да, но в том же Qt это нормально работает. Если тебе не нужна какая-то суперпроизводительность, то почему бы и нет.
>>1518301>Там получишь внятную ошибку в рантайме А куда девается компиляторная чудо-магия? Я и в джаве могу на красивые стектрейсы посмотреть.
>>1518256Верну поинтер, но в функцию, по ссылке буду передавать логгер. Короче, как у тебя, но наоборот. Сам не догадался что-ли?
>>1518301> Там получишь внятную ошибку в рантайме с хорошим стектрейсомБудто я на крестах не могу в рантайме зарегать свой обработчик ошибок с блэкджеком, шлюхами и стектрейсом длиннее твоего. В очередной раз растоманя обосралась. Вот потом такие дебилы и не могут use after free от null pointer dereference отличить.
>>1518311Не пали контору этому коробочнику. Он думает, что если в стандарте нету, то все, нельзя и язык говно. Хотя язык здесь вообще не причем, это просто дополнительный инструментарий Сам же вообще нихуя не знает, как все это внутри устроено. Я уверен на 100% что этот школьник совершенно не знает кресты, насмотрелся в ютубе на сойбоев, начитался проплаченных на хабре статей про ржавоговно и пришел срать в тред.
>>1518316>А куда девается компиляторная чудо-магия? Я и в джаве могу на красивые стектрейсы посмотреть.Она возможна, но не в общем случае. Bounds checking - это частный случай проблемы остановки, так что с этим все грустно.В джаве со стектрейсами все хорошо, но там сложнее добиться такого же memory footprint, latency и throughput, как в rust и c++. Ну и NullPointerException вылетает не в том месте, где null реально появился.>>1518311>Можешь сделать проверку в рантайме без всяких санитайзеров, так же как в расте, никто не запрещает.А можешь и не сделать.>>1518325>Будто я на крестах не могу в рантайме зарегать свой обработчик ошибок с блэкджеком, шлюхами и стектрейсом длиннее твоего>мечтает о большом, длинном стектрейсеОх уже эти комплексы у секты свидетелей небитого стека>не могут use after free от null pointer dereference отличитьНе надоело срать под себя и смывать чужую мочу с лица?
>>1518339>А можешь и не сделать.В этом суть С++. Проверки небесплатные. Хочешь - делаешь, не хочешь - не делаешь.
>>1518341Сразу видно, что о бенчмарках ты только слышал, отсюда и фразы "не платишь за то, что не используешь".
>>1518360Аргументация уровня /bХотя, что еще ожидать от челика, который постоянно промахивается тредом, получает струю урины в лицо, и снова приходит за свежей струей
>>1518362>пукманя не в курсе, что серьезные дяди сперва профилируют и пишут бенчмарки, и только потом оптимизируют. Внезапно bounds check можно заоптимайзить и в расте, и джаве, и в js, если очень хочется. Удивительно, правда?
>>1518364Серьезные дяди достаточно обучаемы, чтобы не срать там, где их не просят. Однако все те же серьезные дяди упорно продолжают срать.
>>1518339Вот и подтверждение моей правоты. 0 аргументов, 0 опровержений, одни оскорбления. Попрошу тебя уйти из этого треда, ты совершенно некомпетентен.
>>1518278>faster threads help their slower peersПрости, но ты вообще не понимаешь, о чем речь.Совершенно очевидно, что в общем случае queue.pop не может быть wait free.
auto it = a.begin();...b.push_back(std::move(*it));a.erase(it); // Допустимо ли ерасить итератор после мувинга? Это всё ещё итератор на тот же элемент контейнера, пускай сам элемент уже и не валиден?
>>1518520Сделал два сравнения. В общем, итератор до мува равен итератору после мува, но в то же время итератор до ераса не равен итератору после ераса. Надеюсь, что это не UB и этих данных достаточно, чтобы полагать, что допустимо ерасить итератор после мувинга.
Кто знает что-нибудь похожее?Официальный сайт выдаёт 404https://www.semanticscholar.org/paper/Dragon%3A-A-Static-and-Dynamic-Tool-for-OpenMP-Hernandez-Liao/be9a77e3d67f49ba966cd4e5b6ad23b92e4383f4
C++ какой-то ебаный· Добавили перегрузку оператора кавычки, добавили ебучий спейшип оператор· Когда это говно закончится? Я хочу обратно свой ванильный C++·
Здорово крестьяныПочему move-семантику называют именно семантикой? Это что, очередная попытка повысить ЧСВ за счет охуенно умных слов?И что вообще значит это слово семантика применительно к проганью? Мб есть места где есть объяснения для даунов. Не уверен, что до конца вник в суть термина. Вот еще вдогонку: "++hui;" и "hui=hui+1;" - это семантически эквивалентные выражения?
>>1518749> это семантически эквивалентные выражения?Не совсем.>Это что, очередная попытка повысить ЧСВ за счет охуенно умных слов?Не совсем.>Почему move-семантику называют именно семантикой?Ну не совсем.
>>1518757>i -= -1;Очевидно это не совсем правильно.Для начала надо создать RAII для числовых вычислений, затем при помощи умного указателя инициализировать переменную i с определенным значением и инициаилизировать единичку, чтобы из соображений безопасности не было утечек мозгов в пендостан.
>>1518749>"++hui;" и "hui=hui+1;" - это семантически эквивалентные выражеНет, твой хуй может как угодно переопределить эти операторы.Даже в случае инта там возможно будет разный ассемблерный код, если отключить все оптимизацию.
>>1516856И снова я тут, тестовое успешно сделал, написал к нему 25 тестов, отправил сорцы и документацию компании. Спустя день позвонили и попросили меня скинуть готовый .exe файл и тут я охуел. Собрал эксешник, три раза скидывал его этой ебаной эйчарше, но только спустя 2 часа до нее дошло что письма с прикреплёнными эксешниками блокируются почтовым сервисом. В итоге они дали мне какой-то хостинг куда я должен был залить программу, что я и сделал. Спустя еще час они написали мне что не смогли скомпилировать мой проект и запустить эксешник. Я хуй знает чему можно научится в фирме, которая с инструкцией по сборке не может собрать программу, и при тестах на линукс команды работает на винде. Уже и хуй знает как от них тактично отказаться, чтобы репутацию среди других компаний не портить.
>>1518753>>1518757>>1518801Попытались выебнуться, но как обычно изговняли штаны, так и не ответив на вопросВы на мамкин вопрос "Почему обосрал трусы" также отвечать будете "Это не трусы, это стринги"?Элитный тред зк во всей красе
>>1518780В чём заключала задача для тестового задания? Насколько сложно? Можешь примерно почувствовать?
>>1518780Да им скорее всего впадлу разворачивать окружение для сборки, поэтому и попросили exe. Скинул бы им wannacry ради лулзов, HR можно даже попросить антивирус выключить - и сука выключит
>>1518914>Да им скорее всего впадлу разворачивать окружение для сборки>exe>>1518780>и при тестах на линукс команды работает на виндеДа нет, там всё куда хуже. Начальник смены — старший заместитель младшего руководителя среднего инженегра — Пидорасов Андрей Хуилович не для того сидит 40 лет на своёи заводе.
>>1518977Ладно, раз ты тупой, то придется объяснять.В первом случае у тебя будет выполняться только тело оператора++, а во втором - создастся временный объект, к нему прибавится единица и он будет присвоен левой части выражения. Хорошо если перемещением, но что-то мне подсказывает, что здесь будет копирующее присваивание без std::move.Чуешь? Семантически это нихуя не эквивалентные выражения.
>>1518749>Вот еще вдогонку: "++hui;" и "hui=hui+1;" - это семантически эквивалентные выражения?Зависит от определения операторов ++ и +, они могут любую хуйню творить, даже кофе заваривать. Эквивалентные ли они для примитивных типов данных -- уже другой вопрос.>>1519027Это еще не значит, что семантика одинаковая, т.к. компилятор оптимизирует автоматически. Т.е. де юре происходит вся та хуйня, которую описал анон выше, а де факто бинарный код одинаковый.
>>1519032Да блять понятно что для примитивных. Мб еще придеретесь к тому, что на системе с копилером должен англ язык быть установлен, чтобы код вводить?int a=0;++a;иint a=0;a=a+1;Синтаксически написано по разному с использованием разных операторов, а логически инкремент aВообще забавляет как такой казалось бы базовый вопрос насадил на бутылку весь тред
>>1519001Ты можешь за базар пояснить свой?Почему не эквивалентные, если итог в обоих случаях - инкремент?Что подразумевает собой семантичексая эквивалентность операций тогда
>>1519072Давай возьмем пример чуть посложнее, раз уж ты необучаемый.Посмотри пикрелейтед и пойми, в чем разница между += (чем является append семантически для строки) и var = var + increment;
>>1519079Ты не знаешь разницу между постфиксным и префиксным ++ но уже пытаешься в 8й класс информатики>чем является append семантически для строкиЕсли ты не пытаешься залить жиром просто выкатись на хуй отсюда
>>1518749Ну смотри. Есть три выраженияa = b;c = d;e = f;Синтаксис один и тот же. Однако в первом случае у тебя в a будет копия b, потому что его operator= ведет себя так как будто b значение.Во втором случае у тебя c и d станет одним и тем же, потому что тип d, точнее его оператор=, ведет себя так, как будто d как ссылка (что не обязательно значит что d это ссылка или указатель, это может быть класс с перегруженными операторами и счетчиком ссылок, или вообще что угодно)В третьем случае у тебя f превратится в e, а само использование f станет опасным. Потому что = в этом случае означает перемещение.Т.е. написано одно и то же, а делается совсем разное. Что написано - синтаксис, что делается - семантика>Вот еще вдогонку: "++hui;" и "hui=hui+1;" - это семантически эквивалентные выражения? Правильный ответ: неизвестно, потому что мы не видим имплементацию этих операторов
>>1518814>Вы на мамкин вопрос "Почему обосрал трусы" также отвечать будете "Это не трусы, это стринги"?Да, так и буду делать.the_pidor
>>1518914У них вакансия С/C++ джун и у них нет блять окружения для сборки проекта из 2 файлов? Зачем они вообще эти языки указали в вакансии, я так понял я вообще первый за всю их историю кто пишет на крестах, иначе я не знаю как обьяснить ситуацию с эксешником. >>1518822Тестовое не сложное, есть стена из блоков произвольной формы прямоугольной только, есть набор блоков, задача определить можно ли построить стену из этих блоков или нет, блоки можно ставить горизонтально или вертикально.
>>1519259хм, прочитав твой пост мне захотелось написать программу которая бы переводила в машинный код "ты пидор".
>>1517305 (OP)Выручайте анонасы.>Дано натуральное k. Определить, k-ую цифра последовательности 110100100010000100000, в корой выписаны подряд степени 10.Нужно делать без циклов и т.д. На просторах интернета нашел такое решение>Если 8*k - 7 точный квадрат натурального числа, то единичка, иначе нолик. Источник: Формула суммы последовательных натуральных чисел. Плюс голова.Не надо только говорить "но ведь источник есть, что понять не можешь?". Нет, не могу, к сожалению.Сижу битый час, не могу понять откуда эта формула взялась и как она работает. Т.е. прошу вас 1) объяснить смысл формулы 2)показать иное решение без этой формулы, если это возможно ну и как говорилось используя лишь if/else и стандартные функции вроде корня/квадрата
>>1519620> Определить, k-ую цифра последовательности 110100100010000100000, в корой выписаны подряд степени 10.Ты сначала русский или английский язык выучи, а потом за c++ берись.
Есть вектор. Он заполняется пользователем. После заполнения, юзеру предлагают ваести два числа - х и у. Далее прога сравнивает число х со всеми числами в векторе и вылаёт результат.Как заставить прогу сравнивать именно Х именно со всеми элементами вектора?
>>1519770int x, y;std::cin >> x >> y;for( const auto &v : vector ){if( v > x ) { std::cout << v << ' '; }}
Сап ананасы! Вкатываюсь в cpp и попал мне в руки один нерабочий кусок говна код.Игра экшон, суть токова. Есть базовый класс world в котором все объекты хранятся в векторе из поинтеров.std::vector<worldObject> worldObjects;Добавление объектов происходит таким образом: void AddObject(worldObject newObj) { worldObjects.push_back(newObj); } Дестрой таким: void RemoveObject(worldObject newObj) { auto it = std::find_if(worldObjects.begin(), worldObjects.end(), [&](GameObjPtr in) { return (in==newObj); }); worldObjects.erase(it); } Успешно напихав туда все новосозданные объектыПриложение валится при итерации внутри world for (auto it : worldObjects) { it->Update(this); // <- ТУТ с ошибкой "Exception thrown: read access violation. it was 0xFFFFFFFFFFFFFFFF." }Посему вопрос, насколько вообще разумно использовать std::vector для таких целей(динамический массив указателей)? Что лучше подойдет для таких целей? И чому происходит подобное?Пикрандом
>>1519781>насколько вообще разумно использовать std::vector для таких целей(динамический массив указателей)?Других динамических массивов не завезли. Правда, если тебе нужно именно постоянно добавлять-удалять элементы и похуй на доступ по индексу можешь попробовать std::list. Хотя, если в твоём векторе мало элементов — не надо.> И чому происходит подобное?Потому что ты где-то в it->Update() удалил объект и распидорасил итератор по которому шёл, из-за каждой операции вставки/удаления массив полностью переаллоцируется в другом месте и ты пинаешь труп. Гугли iterator invalidation.
>>1519784Он ещё в for берет не по ссылке, из-за чего происходит каст до worldObject, а для него может быть косячный Update.Хотя у него и добавление/удаление так же сделано.>>1519781Погугли как правильно вызывать виртуальные методы наследников.
>>1519885Reinterpret_cast в сочетании с виртуальными таблицами может давать очень весёлый результат. Вообще я его только с тривиальными типами использую.мимопроходил-кун
>>1517305 (OP)Что подразумевают под знанием/опытом работы с бустом? Там ведь дохуя библиотек, если я работал с hana или asio, можно писать есть опыт использования буста?
>>1520057Я очень долго думал на эту тему, пришел к выводу что это:1. Ты можешь собрать и прилинковать буст к твоему проекту2. Ты не боишься читать документацию с этими адовыми шаблонами3. Ты хоть примерно знаешь список библиотек в бусте и зачем они нужны.
Блять!Как настроить этот ебучий Qt creator? Какого хуя, когда я создаю консольное приложение с++ и собственно ввожу код, мне ошибками подсвечивается почти каждая строка? Мб я криворукий и что-то не поставил? Мб стоит накатить Eclipse?
>>1520060>Ты можешь собрать и прилинковать буст к твоему проектуХедер-онли хану то. Ну а так наверное так и есть, странно что компании не указывают какие конкретно либы из буста они используют, один раз только видел что нужен опыт с асио, остальным будто похуй. С Qt кстати аналогичная ситуация, может они там эмбед на кьюбасе ебошат, чем им мои знания виджетов помогут я не знаю.
>>1520141Использовать Qt ты можешь вообще в любой иде, просто создай в креаторе цмейк проект и открывай хоть студией, хоть цлионом, хоть эклипсом.
>>1520060>1. Ты можешь собрать и прилинковать буст к твоему проектуfind_package(Boost REQUIRED)include_derictories(${Boost_INCLUDE_DIR})target_link_libraries(huitaname ${Boost_LIBRARIES})Или надо как мужыг с зовода, руками в швиндовый прожект вижуал говностудии каждый путь добавить?
>>1520220Кто бы знал, ей богу.>>1520212> Хана> ПродакшенГде-то есть такое вообще?>>1520112Студия + QT VS Addin, не пердолься.
ненавижу блядь qt creator глючное тормозное говно но ничего лучше не завезли на линукс с поддержкой qt дiзайнера
>>1520239>Хана>> ПродакшенА что не так с ханой? Выглядит интересно, гетерогенные контейнеры, компайл-тайм алгоритмы, одни профиты же.
>>1520243Хана это круто с академической точки зрения, и я бы с удовольствием посмотрел, какие проблемы в проде ей решают. Не более того.
>>1520220>Или надо как мужыг с зовода, руками в швиндовый прожект вижуал говностудии каждый путь добавить?Для домашних поделок есть vcpkg (nuget с крестами не очень дружит), а в ентерпрайзе 100500 версий прописывается через props файлы
>>1520470Дополню сам себяСам бы хотел vcpkg и в проде использовать, нотам пока как то непросто сделать несколько версий одной либы и хз как это всё не только на рабочей станции держать но и на билд сервере.
Сап. Начал читать книгу про параллельное программирование (из шапки, не помню автора), назрел вопрос. В задаче, например, вектор 1000 чисел умножить на скаляр, или, хуй знает, любую другую функцию сделать, есть несколько вариантов решения.Первый, в c++11, это простой пул тредов, типа на 4 ядра положить вычисление по 250 элементов. Второй - использовать openmp, там параллельнуть for. Третий, маст хев на мой взгляд, c++17 и for_each с execution_policy, но 17 кресты есть не на всех специфических компиляторах.Что скажешь, анон, какой подход лучше?
>>1520112Это clang форматтер или типа того парсит твое говно на лету, где-то в настройках среды настраивается
>>1520510>чисел умножить на скаляр, или, хуй знает, любую другую функцию сделать, есть несколько вариантов решения.Для обучения реализуй всё руками, в проде если есть возможность используй стандартные средства а не костыли. Кстати интересная хуйня, что даже на 16 ядрях ускорение будет где-то в 4 раза, а не в 16, связано это с кэшами ядер, сеньор-помидор вообще говорил что вообще ускорения не должно быть
>>1520545>й помидор Я это сам тестил с разными флагами компиля и он охуевал с того что вообще какая-то оптимизация идёт
>>1520546Вот https://pastebin.com/F6X8e6zH даже отрыл пример и еще раз затестил, на 8 ядрах >однопоток 390мс>многопоток 83мсна 3 ядрах ситуация аналогичная. Если кому интересно, вот как это обьяснил тот самый сеньорДля умных>Короче говоря весь вопрос в том, какое отношение сложности задачи в тактах ЦПУ и необходимого потока обмена с оперативной памятью>Собственно в этом примере это между 3 и 4 на вашем железе на 64-битных машинных словах>Если компилятор таки достанет SIMD-инструкции, будет точно не больше 2Для дебилов>Ну давай как метафору о том, что такое bottleneck - представь, что у тебя 8 работяг лопатами раскидывают асфальт на дороге, который им подвозят общим самосвалом>Если 4 работяги достаточно проворны, остальным просто не остается асфальта>Более того, есть достаточно неприятное правило о том, что этот bottleneck при адекватной реализации почти всегда в памяти, и ускоряться будет если либо большая сложность вычисления на одном элементе памяти (в том числе потому, что ЦПУ не справляется с заказом асфальта заранее)(это касается только типовых 86-64)
>>1520510На 1000 чисел у тебя оверхед от запуска тредов будет больше, чем полезная работа. Лучше SIMD использовать, благо сейчас и в GCC и в clang платформонезависимые векторы есть, а уж SSE на простых циклах из коробки должно идти.
>>1520397По-твоему Qt только в QtCreator компилируется? Добавил инклюды, прилинковал библиотеки и готово
>>1520580Еще moc и uic надо запустить. Вообще мне обычного мейка для небольших проектов с qt хватает.
Я правильно понимаю, что если я делаю шаблонный класс, то ни о каких наследниках/интерфейсах и прочей динамической лабуды быть не может? Строго, либо статический, либо динамический полиморфизм?
Возник у меня вопрос системного характера, поэтому иду с ним сюда, в обитель самого высокоуровневого из низкоуровневыхКто-нибудь из местных может рассказать, как работает scheduler/cron в windows/linux соответственно. Интересует минимальный принцип работыЕдинственное мое предположение (при моем уровне знаний) состоит в том, что программа просто в цикле проверяет, не соответствует ли системное время запланированному и если оно соответствует, то выполняет задачу.Но этого не может быть, потому что не может быть никогда, потому что тогда программа сжирала бы всё процессорное время холостым кручением в бесконечном цикле и мы нихуя не смогли бы сделать.Тогда вопрос, как же это все-таки работает? Схожий вопрос: как работает что-то вроде setTimeout() в JavaScriptОчень интересует именно как это реализовано, буду счастлив если кто-то подскажет.
Требуется написать программу, которая считывает из входного файла числа и записывает их в массив, с последующей обработкой. Беда в том, что во входном файле могут быть не только числа, но и текст.Подскажите хороший способ проверки типа данных при считывании, желательно с наглядным примером.
>>1520649Ты гвозди тоже микроскопом забиваешь?>>1520620Почитай подробнее про std::cin. Если ты попытаешься считать строку в инт, то это можно увидеть и обработать.
Почему std::thread создаётся запущенным? Как создать поток, который сразу после конструктора будет спящим, пока я его явно не запущу - так чтобы компьютер вовсе на него не переключался для проверки мьютекса в начале потока? beginthread же позволяет создать спящий поток вроде бы.
>>1520655я бы обернул в отдельный класс, который принимает лямбду в конструкторе, а отдельным методом содает std::thread, но возможно достаточно и указателей (толковых) на std::thread для твоей цели
>>1520652Я пытаюсь считать вроде ifstream fin;float array[z][z]fin.open("in.txt");fin>>array[x][y];Я знаю, что можно отследить мусор по значениям на манер -0 или -.002301, но думал, что можно как-то поизящнее это сделать просто определив тип содержимого.
>>1520772Почему это в вашей шараге не проходят?https://en.cppreference.com/w/cpp/string/basic_string/stol
>>1520871Осторожнее с этой хуйней. Она от локали зависит, и будет брать разделитель дробной части из локали. То есть если в тексте "3.14", а в локали разделитель запятая, то будет ошибка конвертирования.
>>1520772Да ёпт.Смотри состояние fin после считывания. Если ок, то ты в во float считал корректное значение до разделителя, если нет - то мог что-то записать, но до разделителя осталось ещё что-то и в целом считывание не прошло.
Сап pr.В общем, есть код. При вводе '|' программа закрывается. Как сделать так, чтобы при вводе '|' (или другого символа) программа предлагала ввести значения c и у? И второй вопрос, как сравнить введённое значение с последним элементом вектора (после сортировки по возрастанию)?Типы данных и всё такое уже менял - не работает. Перед return ставить else - тоже. Пробовал:if (x != '/')while(cin >> x)elsecin >> y;cin >> z;Но это тоже не работоспособно.Где я обосрался?
https://www.youtube.com/watch?v=G5zCGY0tkq8Бьерн говорит, что Си не нужен даже в эмбеддеде. Всех шизанов ака сектантов ака линуксоблядей и прочих пидоров попрошу выйти из треда.
>>1520951Тебе к тому же анону, который выше не может отличить строку от числа при считывании.Так считываешь char в double, поток ввода помечается ошибкой и этот double пустой, ты пытаешься его писать в вектор.Либо считывай в char и, если это число, перегоняй в double, либо на каждом шаге спрашивай, продолжать ли ввод, либо прерывай поток через ctrl-Z(или ctrl-C, от ОС зависит).
>>1520971Да это хуйня, мне надо при вводе / остановить поток, а компилятор расценивает это как остановку работы программы
>>1520998А, так ты ж написал, что у тебя однократно будет выводиться только что введённый массив.Хочешь много раз заполнять/выводить массив - пихай цикл ещё сверху.
>>1521062Попробую.Я пишу вот что: пользователь вводит массив чисел. Потом этот массив выводится в консоль. Затем юзер вводит два целых числа и программа проверяет больше они или меньше всех чисел, которые в массиве. Типа если больше, то выводится "число х больше всех ранее введённых чисел" и наоборот, если меньше. Собственно второй вопрос вытекает из предыдущего абзаца: как сравнить вводимое число с v.end(), если я не знаю, каким по счёту будет конечное? С самым маленьким всё просто v[0]
>>1520957>>1521083а вообще страуструп продолжает бормотать мантры которые он еще в "дизайне и эволюции с++" писал: а именно все завязано на статической системе типов, на возможности определять пользовательские системы типов, определять у них операторы..на возможности задавать отношения между типами, те наследованиео том что связка конструктор-деструктор оказалось очень мощной, позволившей реализовать абстакции, заменяющие реалиацию gc или посчета ссылок в самом языке, вынести эти абстракции на уровень библиотек и исходного кода..и, касетельно к тому видео, он говорит про то что абстрагирование в с++ "бесплатно", класс с реализованными невиртуальными членами-функциями ничем не отличается по производительности от того если ты бы реализовал структуру со свободными функциями, обрабатывающими эту структуру..и, как всегда, он начал бормотать про то что реализация виртуальных функций сделала максимально производительной, что что если вы руками будете это делать (как это делают в си до сих пор), то будет так же по скорости.. опять же говорил что никто вас в языке не заставляет все члены-функции делать виртуальными, а только необходимые..опять же бормотал про то что реализация обобщенного программирования в языке (в отличие от тех же явы или шарпа) тоже абсолютно бесплатна с точки зрения производительности..
>>1520957>Zero-Overhead>платишь только за то, что пользуешьЗамануха. Формально-то принцип соблюдается, но зачастую весьма затруднительно сказать, что ты на самом деле используешь. А уж когда дело дойдет до расплаты, то торговаться никто не с тобой не станет - заплатишь ссполна, сколько конпелятор пожелает.
>>1520713динамический полиморфизм - это использование виртуальных функций, а не наследованиестатический полиморфизм - это когда ты используешь шаблонные функции (в которых происходит вывод аргументов шаблона), а не когда ты определяешь шаблонный класс
>>1520589динамический полиморфизм - это использование виртуальных функций, а не наследованиестатический полиморфизм - это когда ты используешь шаблонные функции (в которых происходит вывод аргументов шаблона), а не когда ты определяешь шаблонный класс
>>1521095>что ты на самом деле используешьты всегда сможешь увидеть результат кодогенерации - препроцессированный код, код после раскрытия шаблонов, ассемблерный листинг объектного модуля, соответствующими средставами
>>1521111>ты всегда можешь написать бенчмарк в джаве, померить футпринт или увидеть ir код соответствующими средствами
Так всё же, чем плох for_each() с параллельностью? Хорошо же компилятору отдать выбор стратегии параллеливания
А как занопать достаточный промежуток времени без цикла?asm("nop;") работает, но for (int i=100000;i>0;i--) asm("nop;") даёт не тот же самый результат (и другую задержку), что и for (int i=50000;i>0;i--) asm("nop;nop;"), а мне это выполнение цикла вовсе не нужно.Я конечно могу забить, оставив 64 последовательных нопа в асм-цикле, но может быть есть более красивая и выразительная конструкция?
>>1521181Оно вроде как выключает поток и передаёт нить выполнения другим, а на виндоусе это подходит только если интервал в несколько миллисекунд. Я же не просто так бесконечный цикл прикручиваю.
>>1521194ну окей, если у тебя известно количество нопов - можешь ебануть какую-нить адову кодогенерацию миллиарда нопов через BOOST_PP_REPEAT. Но бля
>>1521069Ну ты же проходишься по массиву для его вывода. Пройдись точно так же для введенных x, y.И да, cin >> x, x != '/' это не то же самое, что cin >> x && x != '/'.
>>1520561>>Короче говоря весь вопрос в том, какое отношение сложности задачи в тактах ЦПУ и необходимого потока обмена с оперативной памятьюДругими словами, если слишком быстро обрабатывать данные, то твоя задача станет упрётся в пропускную способность памяти, а не скорость процессора. Это... логично, можешь даже сам посчитать. Взять какой-нибудь IACA, посмотреть сколько тактов уходит на одну итерацию и сколько за одну итерацию ты обрабатываешь данных, посмотреть на свою память и в конце концов посчитать теоретический максимум. Но когда у тебя обработка относительно весомая и ты именно cpu-bound, вот тут треды-то и нужны будут. Просто твой комментарий с "связано это с кэшами ядер" вызвал у меня некоторые сомнения.Алсо, создание/уничтожение тредов тяжёлая операция, лучше считай время внутри функции.
>>1521095> но зачастую весьма затруднительно сказать, что ты на самом деле используешьЛол, если ты ньюфаг вкатывальщик, то да.
>>1521101Спасибо, что разъяснил и так понятные мне вещи, но вопрос был совершенно иной. Читай в следующий раз глазами, а не жопой.
>>1521302>Просто твой комментарий с "связано это с кэшами ядер" вызвал у меня некоторые сомнения.Да я нуфаг, пытался кратко передать смысл без глубокого понимания темы, виноват.
>>1521322Да нет, это ты хуй пойми чем читаешь, тебе анон все правильно ответил.Если бы ты ещё вникал и понимал, что есть шаблонный класс, то не было бы у тебя этого вопроса.
А в си++ нельзя чтобы 2 разных класса содержали поля с указателями друг на друга?Ну, например: class Road{Car r;};class Car{Road r;};int main(){Road road; Car car;road.r=car; car.r=road;}Верно-ли что только изменением кода классов эту программу пофиксить не получится?
>>1521371Вечно забываю что сраный движок любит жрать \* (звездочки)Ну, надеюсь по контексту понятно где они должны быть.
>>1521371Почитай про forward declaration.Но вообще такие циклические ссылки обычно до добра не доводят, так что будь аккуратнее с ними.
>>1517543 у линя концепция совсем другая, тут нет КОМБАЙНОВ, вроде адоба и прочих раздутых утоплеников. Каждая программулина делает только одну задачу. Функционал больших прог достигается скручиванием этих мелких прог в скриптах. Да сложно, да непривычно и придётся учится пользоваться ПеКа просто заново. НО! функционал такой что нахуй эту ёбаную Шинду с дебилами живущими на ней, а уж темболее яблопидоров и андроидодегенератов.Алсо, для всяких дизайнов и музычки софта хватает, ты просто не искал нихуя. Ну и да, в крайних случаях вайн вам поможет.БЕГИТЕ С МЕЛКОМЯГКОЙ ПОМОЙКИ!!!я прост сам начал недавно сетями заниматься, как бы вам сказать, плохие вещи реально есть, их много. Пиздец с безопасностью, ГЛОБАЛЕН
>>1521340Я ночью уставший писал. Для жопочтецов еще раз повторяю вопрос:> Строго, либо статический, либо динамический полиморфизм?
>>1521450Нет, пиши как хочешь. Просто в этом обычно мало смысла, ведь каждый инстанс шаблона будет иметь свою иерархию.
>>1521417> для всяких дизайнов и музычки софта хватаетНету нихуя. Для данного сегмента задач линь не пригоден.
Кто-нибудь может может дать ссылки на реальные опенсурс проекты, где все сделано правильно по гайдлайнам итд, по которым ньюфаг может составить хоть какое-то представление о реальной разработке.
>>1521450Нет, ты выебываешься и не хочешь погуглить немного.Тебе анон верно ответил, для каждого инстанса твоего шаблонного класса сгенерится свой обычный плюсовый код как для обычного класса. А кто мешает тебе в обычном классе использовать динамический полиморфизм?Но зачем - это другой вопрос.
>>1521489Ты хочешь абстрактный проект в вакууме чтобы получить картину реальной разработки? Ебанутый?В любом проекте будут свои костыли или ебанутая архитектура. Только не смей залазить в какие-нибудь гигантские проекты или проекты от крупных компанией - там полный пиздец, не найдёшь того, что ищешь.
>>1521533> Ты хочешь абстрактный проект> ссылки на реальные опенсурс проекты> В любом проекте будут свои костыли или ебанутая архитектура> где все сделано правильно по гайдлайнамЯ спросил про реальные проекты с правильной архитектурой еще скажи что таких нет, а ты мне про велосипеды пишешь.
>>1517305 (OP)Блять шесть лет, ебаных шесть лет потратил на эти кресты и знаете что. За это время не смогли высрать ни одной вменяемой IDE, которая бы не лагала и предоставляла приемлимый автокомплит и реафакторинг, просто нет.Блять, за что мне такое наказание.
>>1521710>>1521700Пробовал проект больше 200 строк открыть или шаблоны поделать, эта хуета от JB начинает как не в себя жрать все ресурсы. Проблема вот в этом, фичи есть, работает медленно пиздос. Смузиебский QtCreator работает кое-как (много левых ошибок).
>>1521716Ну, может ты на каком-то старье работаешь, я таких проблем не испытывал с поделиями от JetBrains. И вообще, они на Жабе написаны, так что все логично.Вот что реально хуево написано, это VScode, типа простой и нетребовательный, а в реале написан через жопу, и на Линуксе при подсоединении через ssh невозможно работать, все лагает. Ненавижу таких криворуких уебанов.
>>1521721>Вот что реально хуево написано, это VScode, типа простой и нетребовательный, а в реале написан через жопу, и на Линуксе при подсоединении через ssh невозможно работать, все лагает. Ненавижу таких криворуких уебанов. Вот тут согласен, а еще у меня под линупсом от него глаза вытекают, хуй знает почему.
>>1521731Умел еще до твоего рождения, пихаешь хоть весь Adobe Font Folio в ~/.fonts и настраиваешь свой Consolas с Segoe UI в PyCharm, и суешь Arno Pro и Helvetica Neue в XeLaTeX, и урчишь довольно.
>>1521735В чем состоит пердолинг, дебилушка?Раньше тебе может и нужно было поебаться с настройкой антиалиазинга и прочего ануслизионга, сейчас ты тупо кидаешь шрифты в папку, даже устанавливать не надо, как в мастдае.Или ты хочешь, чтобы тебе коммерческие шрифты вместе в бесплатной бубунтой поставлялись? В тот ли попен-сорс ты зашел, петушок?
>>1521738я не вижу смысла тратить время на это красноглазое говно, сорян. У меня из коробки все работает, мне не надо выебываться КАКОЙ Я КРУТОЙ ЛУНИКСОИД ПРОЕБЫВАЮ ВРЕМЯ НА ХУЙНЮ.
>>1521741К чему ты это написал вообще? Всем похуй на тебя и на твой быдлоэкспириенс. Речь шла о технологии.
>>1521731>Луникс не умеет в шрифтыв линуксе ты можешь выставить dpi в системе, равным ppi твоего мониторапосле этого взять растровый шрифт, это будет terminus, и использовать его в редакторахэто позволит буквам гореть пиксель в пиксель
>>1521489например, реализация стандартной библиотеки плюсов в проекте clang:https://github.com/llvm/llvm-project/tree/master/libcxxособенно то что появилось в 17м стандарте, а именно реализацию типа string_view, реализацию std::filesystem, типов any, variant и optional..если сидишь на компиляторе майрософт, то можешь глянуть и их реализацию стандартной библиотеки, но она постарше, с другой стороны, код для новых возможностей библиотеки так же свеженаписанный..
[code]class MyClass{public:static constexpr int def = -1;MyClass(): m_val(def) {}private:m_val;};[/code]Так можно делать? Порядок инициализации не нарушен? А если перенести m_val в самый вверх?
Вектор при изменении своих размеров вызывает деструкторы для элементов, что испортило мне все элементы.Понятно для чего так сделано - но я использую деструктор немного не по назначению. Элементы - структуры, чтобы избежать вызова деструкторов я в структуру добавил соответствующий флаг.Вектор при перемещении элементов может использовать конструктор копирования/перемещения и два соответствующих оператора присваивания. Как правильно сделать, чтобы он скопировал все поля структуры, но при этом ещё и поставил соответствующий флаг?Я оставил operator=(&) =default (чтобы не копировать весь список полей вручную), и написал operator=(&&) с установкой нужного флага. Тем не менее вектор не компилируется, ему не хватает конструктора копирования.Есть полная статья про перегрузки операторов?Для пример, есть перегрузка оператора сложения. Я могу поставить во всех местах, значения, (константные) ссылки или &&-ссылки. В чём разница между этими вариантами и какой смысл ставить ссылки, если даже без них не вызывются конструкторы или операторы присваивания? Особенно интересно про операторы присваивания и конструкторы. По идее пустой конструктор и оператор присваивания почти эквивалентны move-конструктору, но вектор их не кушает, например.Почему оно не жрёт "T static operator+(T a, T b)", хотя это наиболее интуитивный вид перегрузки сложения, например?
>>1521992>но я использую деструктор немного не по назначениюВот и ответ на все твои вопросы. Не выёбывайся, а пиши нормально.
>>1522006Не на все.Я сейчас создал класс где есть все возможные операторы присваивания и конструкторы. И вектор при изменении своих размеров использует T(const T&) несмотря на наличие move-операторов. Для чего?А если я его удаляю, он использует T(T&&). Не могу сказать, что такое поведение интуитивно понятно. Мне казалось он должен пробовать в очерёдности T(const T&&), T(T&&), T(const T&), T(T&) - так вроде как будет эффективнее в плане быстродействия, а он берёт сначала 3 вариант, а затем 2.
>>1522037Нет конечно. Спасибо, это помогло - теперь верно и предсказуемо работает как мой идеалогически неверный код, так и тестовый пример.Интересно, каким образом я должен был догадаться про noexcept. Избегаю исключений во всех случаях, больная концепция. Должно быть наоборот - по умолчанию вообще всё noexcept, и только в случае если что-то кидает исключения - только тогда на него надо явно прописать "yesexcept".
>>1522052это современные гайдлайны, что мув ктор\оператор и деструктор должны быть ноэксепт. Решарпер на это ругается, например
>>1522103Если ты сравниваешь с c-style двумерным массивами - то они оба хранятся в одном куске памяти.А если с vector<vector<type>> - то у него каждая строка хранится в своем куске памяти, из-за чего доступ будет медленнее при загрузке в кэш процессора, для понимания почитай подробнее, хоть того же Таненбаума.А так, если у тебя не невероятные объемы данных и делаешь для себя - то можешь вектор векторов использовать, будет удобнее.
>>1522123Медленнее в том случае, когда будешь последовательно проходиться по всем элементам и менять строку.Но вряд ли кто-то из нас это заметит. Вот нвидия-кун мб и должен о таком париться, думаю.
>>1522052>Должно быть наоборотНьюфага забыли спросить, лол.То-то в жабе в каждой функции нужно определять ее throws.
А что конкретно пишут на крестах в основной массе? Кроме серьезного геймдева, который есть только на западе и операционок.
>>1522180Как определить хуевость туториала?1. Если видишь слово Eclipse - то он гарантированно говно.
>>1522132Ебаный рот этатваказино блядь.В былые времена вся суть поместилась бы на полторы странички салфетки.Нет блядь, хотим жрать говно, хотим 4к видио на полтора часа.Уёбки блядь.
>>1522202А хулi ты ну тот "ты", который постил видос хотел, когда постил, а?Впечатлил тебя видос, ну напиши, блядь, хотя бы чем, почему.Осилил весь видос? - запили краткий конспект.А так, тупо видосиками перекидываться - этож шитпостинг, нахуй, все равно что сисечки-писечки сюда из вконтактика репостить.Кто, нахуй блядь, в здравом уме, полтора часа хуй пойми заведомо чего будет смотреть вообще?
>>1522207Ну тащемта видос запостил для широких каловых масс в лице >>1522123Суть вкратце: даже если логически после некоторых правок код "должен" начать работать быстрее, то это не всегда так, так что нужно писать бенчмарки.
>>1522207Тут есть такой момент, что зумеры только видосы умеют воспринимать нынче.Реально, студенты тупо смотрят видосы по любой теме, текст читать неспособны.
>>1522239че?александреску умный мужик, но тут он какой то трешовый талк запилилнафиг надо хардкордить стандартный std::sort? внутри у него все нормально - быстрая сортировка (с оптимизацией худшего случая, между прочим), плюс щас в стандарте есть stable_sort, partitional_sort, sort_heap для частных случаевнасколько я понял, он пытается минимизировать количество сравнений и свопов, и именно такие специализированные сортировки будут работать быстрее std::sort для "тяжелых" объектовно нахуя? гораздо проще держать в контейнере не объекты, а указатели на них (умные указатели), и все, на оптимизацию количества свопов пофигда и не стоит забывать про механику перемещения, щас внутри стандартных алгоритмов объекты муваются (при наличии такой возможности) а не копируются
>>1522251Читаешь книгу, прикладываешь 70% усилий. Ебешься с закладками, заметками, с бездушной простыней текста.@Смотришь няшный видосик на 2x промотке, наслаждаешься эмоциями докладчика, вопросы аудитории проясняют непонятные моменты. Уровень усилий - 30% для тех же знаний@Проклятые зумеры не хотят страдать как диды страдали без пеницилина
>>1522362Двачую, вообще не могу читать книги, использую их как справочники. Вон там с цппкона видосиков на целый год хватит, а потом еще зальют. Кроме того, ученые доказали, что на слух информация воспринимается лучше, чем зрительно.
А теперь не лаба01.Насколько реально написать компайл тайм компилятор? Из чего-то си подобного в апи для уже существующего генератора ассемблера для виртуальной машины.
>>1522362>Читаешь книгу, прикладываешь 70% усилий. Ебешься с закладками, заметками, с бездушной простыней текста.Gt
>>1522362>Читаешь книгу, прикладываешь 70% усилий. Ебешься с закладками, заметками, с бездушной простыней текста.Два слова: порог вхождения. Чтение - это навык, и умеющий читать, прикладывая 5% усилий, затратит минут пять на чтение блогпоста, в котором будет то же самое, что в полуторачасовом докладе.Основной плюс чтения - оно позволяет моментально скипать уже тебе известное, введения, заключения, быстро переходить к сути. Чем менее ты тупой, тем больше ты получаешь профитов от чтения.Большинство людей тупые. Тупые деды не страдали, они ходили в университет и слушали там лекции.>>1522374> Кроме того, ученые доказали, что на слух информация воспринимается лучше, чем зрительно.Теперь все программисты переходят на программирование на слух.
>>1522409и два чую, и нетчисто ознакомиться видос лучше.вникать уже легче читая.тут недавно скидывали плейлист с лекциями.Чувак половину времени ебланит и отвечает на вопросы студентиков.
C++ feature highlights:Zero-cost abstractionsScope-based resource lifetimesGenerics retain overloadingRust feature highlights: all of the above but with a usable type system.Ваши оправдания?
Аноны, подскажите пожалуйста. Можно ли на C++ или C# бесследно прочитать память процесса? То есть, сделать это так, чтобы, условно, часть кода в самом этом самом процессе, или же сторонний код не заметил, что я это сделал. Хочу написать код для взаимодействия программы на языке внутри компьютерной игры, чтобы он отправлял данные в программу, запущенную на десктопе
>>1522409> Основной плюс чтения - оно позволяет моментально скипать уже тебе известное, введения, заключения, быстро переходить к сути. Чем менее ты тупой, тем больше ты получаешь профитов от чтения.Если мы говорим про значительный объем материала, то по книге учиться значительно хуже, потому что книг, которые хорошо сделаны, как учебный материал, можно по пальцам пересчитать. Именно по этой причине нужны универы - большинство авторов книг банально не умеют писать интересно.Про шортриды тоже самое - если написано скучно, то ебал я в рот читать даже просты вещи. Так недолго и выгореть, в C++ и так приятного мало, а если меня говночтиво от александреску будет дизморалить своей унылостью, то я точно писать код перестану
>>1522573Ну не тролль, пожалуйста. Хотелось бы освоить плюсы, так как они охуенны, но скилла просто не хватает
>>1522409> Теперь все программисты переходят на программирование на слух.Ты жопу с пальцем перепутал. И да, на видосиках так-то и зрительный контакт имеется. Да и скипать видосики быстрее, чем переворачивать страницы, лазить туда-сюда в оглавление итд.
>>1522560Какая ОС? Если винда, то гугли MSDN ReadProcessMemory. Никакая ОСь не позволит тебе делать что-либо бесследно. Дальше сам.
>>1522556если тебе нравится поделие ебнутых мозилла-фанатиков (которые убивают щас второй свой браузер), то, пожалуйста, изучаи и пиши на раст, без проблемно зачем срать в крестотред?это раздражает
Напишите функцию count, которая возвращает количество совпадений (вхождений) в целевом вложенном списке.Вложенный список, это когда внутри списка есть еще списки.молю вас объясните мне что такое "совпадения(вхождения" и "Целевой вложенный список" вернее что такое вложенный я знаю, а целевой это как?
void f1(Pizda &&p){...}void f2(Pizda &&p){ f1(std::move(p)); }Вопрос: почему в f2 при вызове f1 нужно вызвать std::move, ведь p и так уже rvalue-ссылка?
>>1522723Я так понял, что принимаешь ты rvalue, но внутри это уже lvalue, потому и нужно делать std::move.Думаю, что без этого бы ты не смог использовать дважды этот аргумент - он же неявно мувнется и уже будет невалидным.
>>1522848Поменяй int на double4 и 4.0 имеет разные типы, int и double соответсвенноЕсли хочешь использовать именно с плавающей точкой, то пиши это явно
Доброе время суток. Столкнулся с проблемой работы sleep.На 1 скрине sleep не работает, все числа выводятся мгновенно при достижении конца цикла. На втором скрине всё работает, надпись выводит каждую 1 секунду. Среда Qt CreatorПрошу объяснить почему всё так, желательно адекватными терминами, или терминами которые я смогу загуглить. Большое спасибо.Code 1#include <iostream>#include <stdio.h>#include <unistd.h>using namespace std;int main(){ int number; cin >> number; for (number;number<50;number++) { cout << number << " "; sleep(1); }}Code 2#include <iostream>#include <stdio.h>#include <unistd.h>using namespace std;int main(){ for (int i;i<50;i++) { cout << "Hello" << endl; sleep(1); }}
>>1522960Скорее всего дело в том, что cout использует буфер для вывода, можешь попробовать в первом варианте std::cout << data << std::flush сделать, хотя я хуй знает
>>1522960>Прошу объяснить почему всё так, желательно адекватными терминами, или терминами которые я смогу загуглить.1. Вывод текста буферизируется иногда. Предположим, ты записываешь данные в файл - вместо того, чтобы записывать по одному байту насилуя жёсткий диск - он сохраняет некоторую очередь для записи, и потом пишет всё сразу одной пачкой. Вышеуказанный flush по идее должен принудительно эту очередь отсылать в консоль для вывода.2. Я не уверен насчёт sleep-а с маленькой буквы, но Sleep(1), это подождать 1 миллисекунду (в действительности там 3-7, что зависит от операционной системы и других вещей, но всё-равно мало). Ты можешь на глаз отличить 50 мс (это 1/20 секунды) от мгновенного вывода? Я не могу.
Есть код, который выводит данные из файла (x и y). Эти переменные должны использоваться в формуле, но как нормально прописать для этого счётчик? То есть программа должна брать за одну итерацию значение х и у первой строки, выводить результат (например х + у), брать вторые переменные и т.д.Кстати точное количество переменных неизвестно, Мб их вектором посчитать и вывести пользователю, чтобы он сам вводил границу цикла рассчёта?
Олды, нах нужен std::forward, если он возвращает тот же тип, который ему пришел, т. е. lvalue -> lvalue, rvalue->rvalue?
https://www.youtube.com/watch?v=5An1sNznblQБьерн говорит, что нужно знать минимум 5 языков программирования, иначе ты не можешь называть себя даже макакой.Интересно, сколько япов знает нвидия-кун?
>>1522968>>1522972>>1522996Огромное спасибо за ответы. Действительно, используя flush всё работает. Ещё буду разбираться в теме, ведь теперь знаю куда копать. Спасибо ещё раз
>>1522996Sleep используется в винде и работает от миллисекунд. sleep в библиотеке unistd работает от секунд
>>1523230да не пизди, небось алгоритм Чудновского в голове крутишь и по цифре выговариваешь в беспалевном темпе
>>1523050Знаю - только С++.Платили деньги за: Повершелл, Питон, ПХП (зашкварился в начале вкатывания), C#.
>>1523463Ебучий конец, отдельно его понмнишь, но когда доходишь от начала, он куда то съебывается постоянно
Анон, слили уже плейлист видосов с питерской конфы? Дайте будь ласкаКак так блять получается что сппкон основной в тот же вечер выкладывает, а тут за ким то хуем полгода ждать
Анон, объясни понять, откуда появляется мусор после запятой при делении числа float на 10.Задача перебрать и сложить все цифры 5-значного числа без перевода числа в строковый формат. Например, число 79813.Делаю следующим образом: делю число на 10 (получаю 7981.3).Далее вычитаю это число само из себя, переведенное в int:digit=result-int(result)Так вот, в данном конкретном примере программа выдает не 3, а 2. Потому что какого-то хуя результат приведенного выше выражения - 0.299805.Откуда берется эта погрешность и как от нее избавляться?
>>1523798Спасибо, буду изучать.В своей проге (на codeabbey задачки решаю) просто добавил 0.1 к изначальному значению и задачу выполнил, но сомневаюсь, что это правильное решение, лол.
>>1523793Какой-то сложный у тебя пример. Вот проще. Ошибка чисел с плавающей запятой про которую просто везде написано, в любой книжке и в любой статье с использованием дробных чисел.>Откуда берется эта погрешностьПредставь, что у тебя есть только обычные десятичные дроби, а тебе нужно записать 1/3 или 1/7. Вот и компьютер пишет 0.142857142857, но это ни разу не 1/7 и сколько бы он не старался, он 1/7 с абсолютной точность>как от нее избавляться?Не использовать float и double, там где тебе не нужны дробные числа и использовать символьную арифметику или другое представление чисел (например, в виде пары целочисленных числителя и знаменателя). Использовать float только когда ты понимаешь что тебе нужен именно float, во всех остальных случаях (в ситуации по умолчанию) использовать double.>Задача перебрать и сложить все цифры 5-значного числа без перевода числа в строковый формат>digit=result-int(result)У тебя очень неинтуитивный способ высчитывать число. Если так хочется сделать через него, можно было бы написать digit=N-(N/10)*10 и это бы сработало во всех случаях (N и digit типа int; делить именно на 10, не на 10.0 или 10.0f) выдавая 3.Но вообще вот такое решение больше напрашивается на ум: https://ideone.com/XEBmbd
>>1517305 (OP)Есть OpenBlocks+miniGW, нужно загрузить текстуру в формате png.Подключаю libpng в виде:#include "png.h"Но при компиляции выдает ошибки в виде:undefined reference to `png_sig_cmp'Как заставить его видеть библиотеку?
Где можно про смаке с нуля прочитать, чтобы максимально для даунов было? Хотел попробовать либу для qt poppler, а там, видимо, миллион зависимостей, которые авторы нигде не указали, или указали где-то совсем в жопе, что я просто не нашел.
Узнал, что std::future продлевает жизнь локальных переменных внутри std::async.// future from an async() std::future<int> f2 = std::async(std::launch::async, []{ return 8; });Типа если помимо return 8; там что-то насоздано, то оно будет живо, пока f2 жив.Kakov pizdec. uuuu suuuuka я из-за этого ловлю охуительные постэффекты
А есть какой-нибудь справочник или вроде того с рекомендациями по замене библиотечных функций си на труъ c++ ?
>>1524342Обновляешь легаси? Похвально.1<->1 соответсвия не будет, смотри, что делает код и ищи похожий функционал в STL. Попробуй начать с filesystem
>>1524384говорят, что воркфлоу современного cmake изменился за последние 5 летлучше таки глянуть доклады с последних конференций
>>1524384Спасибо, посмотрю, но выглядит таки не как для даунов, которые хотят научится компилить чужое говно из гитхаба без смс и регистраций.
>>1523997Это я уже видел и пробовал, нихуя не вышло. Ещё не понятно нужен ли либе zlib и что там вообще нужно из архива.
>>1524501vcpkg install libpng, только хз как оно с mingw работаетВ C::B указываешь путь к инклюдам и либам, указываешь нужные либы и ВСЁ.Либо собери сам (cmake-gui надеюсь освоишь?) и точно так же укажи путиЕсли ей нужен будет zlib, то она не соберётся. Тогда ещё и zlib соберешь
>>1524543собрал через visual studio который пришлось для этого ставить, получил заветные lib файлы, теперь ругается на undefined reference to `@__security_check_cookie@4'|я так понял нужна ещё библиотека bufferoverflowU.libбуду и её искать
>>1524554не мучайся, поставь студию и вцпкг. А не ебись с этим говном типа КОК БЛОКС, которое вообше никто никогда и нигде не использует. Откуда вы все его высираете вообще
>>1524554Ты собрал библиотеку через Visual Studio, чтобы потом использовать её вместе с mingw? Наркоман штоле?
Почему в Qt mouseMoveEvent работает только при нажатии мыши? Хотел приклеить QGraphicsItem к курсору мыши, чтобы он следовал за курсором, пока я не нажму кнопку мыши, но что то не получается.
>>1524747Выполняешь миллиард итераций пустого цикла, а потом миллиард итераций пустого цикла с нужной инструкцией/операцией. Замеряя время при этом. Вычитаешь одно из другого и делишь на миллиард. Повторяешь 100 раз и усредняешь.
>>1524747https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%84%D0%B8%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_(%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)воть так
Насколько сложно будет сделать такую игру на крестах: шутер от первого лица, 3д мир.Город таллин (столица эстонии), мы с оружием идем убивать местных эстонцев и разрушать город самыми разными способами. И главное чтобы весело было.Сюжет можно прикруть какой-нибудь маленький.
>>1524889Компилятор «оптимизировал» это, выкинув обращения, т.к. потом переменные нигде не используются. Пытался что-то родить через non-volatile, не поехало.
>>1524976Может я вообще не так делаю. У меня программа превышает допустимое время исполнения. Я хочу узнать в каком месте она долго исполняется
>>1524976Возьми любую либу для бенчмарканья, раздели код на ключевые фазы и напиши на них бенчмарки.>>1524994На пике хуйня какая-то, либо гугли гайды по этому профайлеру, либо бери другой, либо вообще бенчмаркай всё руками (самый точный вариант).P.S.Кста модер саси додик хуй ты меня забанишь за анрелейтед
>>1524973Поставь переменным volatile (всем, и для счётчика цикла, и нужным для замера). Пропиши вручную через asm два цикла, пустой и с нужными инструкциями. Выключи оптимизацию через -O0, хотя вот это уже очень плохая идея.Во всех этих случаях он не станет оптимизировать. >>1524972Идея использовать движок не такая плохая, не придётся ебаться с графическими апи, с загрузкой анимаций разных форматов, с физическими движками и линейной алгеброй. Вручную без наработок застрелишься. И всё ещё очень сложно сделать качественный разнообразный город в плане контента, где не только статичные стены, но ещё и всякие двери, окна есть. А чтобы разрушаемый, так это вообще. Просто так из коробки физический движок не потянет по идее, нужно надстройки поверх него писать, чтобы после разрушения строение архивировалось в статичную модель или ещё что-то такое.
>>1525356А нахуя мне избыточную информацию хранить? В теории могли бы добавить по аналогии с шарпом условный size_t, который на х64 будет 8 байт занимать, при этом в моей программе диапазон значений будет от 1 до 6, хватит и одного байта, и вот вопрос нахуй мне эта длина восьмибайтовая надо. В плюсах ты не платишь за то что не используешь если на Qt не пишешь ахахах
>>1525452А в чём проблема передать размер массива вторым параметром? Можно еще дохуя избыточной информации хранить для удобства, но это в концепцию языка не вписывается.
Какую библиотеку использовать, чтобы перекодировать jpg в битовое поле? И желательно сразу записать в матрицу. То же самое в обратную сторону.
Есть программа, которая как-то манипулирует со списком всех процессов на машине, как мне отделить оконные от остальных процессов?
>>1525516КАКно как бы это объект класса, а не примитивный тип. Но почему это ввели аж в 2011, когда в других язычках это было в конце 90-ых.
Аноны, как осваивать многопоток? Вот перечитываю Concurrency in Action, хотя всего месяца 3 прошло с момента когда я ее закончил. Вроде бы и не лениво учился, запоминал детали, переписывал то что работает там псевдокод по большей части, а теперь понял что в голове пусто, даже синтаксис std::packaged_task не смог вспомнить без цппрефа. Подскажите идею для программы, в которой можно будет нормально применить многопоток в идеале это какой-то проект с гуем, но сойдет что угодно
>>1525553в реальном программировании весь многопоток это МЮТЕКС ЗАЛОЧИЛ\РАЗЛОЧИЛ или std::async. Не переживай на эту тему
>>1525555>огопоток это МЮТЕКС ЗАЛОЧИЛ\Бля ну спросят у меня что за std::memory_order_relaxed а я такой>НУ БЛЯЯ Я Ж ЧИТАЛДа и даже на мьютексы что-то полезное же можно накодить. Вот ты анончик где-то в самописных проектах применял многопоток не на уровне auto result = std::async()?
>>1525557> Бля ну спросят у меня что за std::memory_order_relaxed а я такойОтветь, что вся эта параша работает только на ARM архитектуре. > Вот ты анончик где-то в самописных проектах применял многопотокИз того, что вспомню на память - пара атомарных счетчиков\флагов, которые читаются и модифицируются из разных тредов. Например log-level для логировалки.Парочка хэштаблиц, защищенных shared_mutex'ами, т.к. в них 1 запись в пятилетку, зато чтений 100500 в секунду.Ну а архитектура у нас сделана по принципу, есть слушающий тред, в пайп приходят команды. Этот тред спавнит новый тред на каждую команду. А внутри команд уже делается всякая хуйня. Есть глобальный вектор "обьектов-созданных-командами" и внутри этих обьектов есть так же треды, в которых обьекты живут.Короче, я хуевый обьяснитель, но общая идея дизайна нашего говна в том, что у нас shared-ресурсов - только вот пара атомиков и пара хэштаблиц, все остальное локально. Тредов много, но никаких рейсов и прочего нет.
>>1525559>Ответь, что вся эта параша работает только на ARM архитектуре.Не понял, откуда информация? В книге не упоминалось вроде-бы, можешь пояснить или ссылку дать? Или это момент когда теория расходится с реальностью?За остальную инфу спасибо, наверное буду стандартные контейнеры тред-сейф делать, потом может что-то в голову прийдет
>>1525560где-то читал, что большая часть всей это мемори-модел-хуйни просто не работает на интеле в связи с архитектурными особенностями. Т.е. что бы ты там не прописывал - все равно будет sequental.Могу ошибаться, конеш.
>>1525562>-хуйни просто не работает на интеле в связи с архитектурными особенностями. Т.е. что бы ты там неНадо в годболте поиграться с этим всем, сомневаюсь что это так на самом деле но и поспорить не осмелюсь
>>1525526Этот класс буквально 20 строчек, до 2011 года у всех были свои одинаковые реализации. Недавно откопал сразу две в проекте ~2004 года
>>1525601>Этот класс буквально 20 строчек,Да там один итератор строк 50 займет, а вообще да, класс простой
>>1525648Сам придумай же.Интуиция подсказывает мне, что нету - там же очень большое количество вариантов решения может быть, если все нужно найти. Можно просто на каждом шаге выбирать клетку с минимальным количеством вариантов и перебирать варианты, проверяя не образуется ли ошибки при дальнейшем разгадывании. Я сам вручную решаю таким способом минут за 5-8 любую, то есть компьютер там справится где-то за миллисекунду для судок из задачников, где всего одно решение.
>>1525648Когда-то видел на хабре статью, там у автора получилось очень быстро решать, но вот что-то не могу найти сейчас
>>1525633Да, что-то я спиздел немного. В msvc stl весь заголовок 500 строк, но это вместе с шаблонной дриснёй вроде специализации для нулевого размера, всякими deduction guides и кучей препроцессора. Если всё это выкинуть и убрать их ебанутое форматирование, останется строк 100.
Двач, посоветуй что гуглить в винапи, чтобы написать функцию, кликающую в открытое приложение в указанную координату
>>1525751mouse_event или postmessage/sendmessage с событием WM_LBUTTONDOWN.Но это не сработает с некоторыми играми и некоторыми прошаренными программами - там нужно уже добавлять виртуальной устройство с фиктивным драйвером, и тут проще использовать уже написанный vJoy, который умеет эмулировать мышку. Возможно, я наврал во всех пунктах, не воспринимай серьёзнее чем наводку с дивана.
>>1525332В общем собрал я и всё заработало, только проблема что zlib можно собрать в x64 а libpng в конфигурации только x32, это можно как-нибудь пофиксить в VS2019?
>>1525865Ты через vcpkg собирал? Там же можно указать libpng:x64-windows или что-то вроде этого.Если через cmake, то скорее всего проебался с генератором
Нужна помощь.На практике выдали задание,на стартовой форме приложения должно быть динамическое(подтягивать из БД) штатное расписание предприятия.Как это сделать?Проект пилю в Rad studio xe2
https://pastebin.com/8EuBGwB0Смотрю примеры многопотока, в описании сказано, что здесь возможен рейс за баланс, т.к. потоки могут постучаться одновременно, но за 1000 прогонов отрицательного баланса не было ни разу. Грешил на одноядерный celeron, но онлайн-компиляторы выдают то же самое. ЧЯДНТ?
>>1526231там условиеif (balance >= хуйня) - может быть труевым, но в процессе выполнение тела может невалидным, и логика будет сломана.И вообще, с точки зрения C++ - вся эта программа это Undefined Behavior, т.к. в разных тредах можно писать только в атомарные переменные или локи делать.
>>1526240Так я и жду этого UB, дальше по примеру как раз идут мьютексы и атомики (правильный вариант программы), но каждый раз все отрабатывает нормально и без них.
>>1526231Проверка if (a>3) a-=7 не атомарна. Тебе просто повезло из-за особенностей архитектуры. Твой пример не падает, но если добавить побольше вычитаний, например так: https://pastebin.com/YpKH4MpPПри N=10000 всё работает верно. При N=100000 оно уже ломается. Такая ошибка даже хуже, чем если бы оно всегда ломалось. На каком-нибудь arm оно будет ломаться при других условиях.
Программа не проходит тест. Пишет превышение максимального времени. Но что то тут не так. Сначала превышение времени было на 8 тесте. Я покорректировал программу и она стала выполняться за 0.02 секунды вместо секунды. На следубщем тесте оптять превышение времени. Мне кажется где то она входит в есконечный цикл, хотя такого не должно быть. Мне кажется я накосячил в написании. Может переменная переполняется и становится нулем? Типы взял максимаьные. Вроде не должно. Поэтому вопрос как найти ошибку
>>1526267Эти ошибки обычно о том, что ты даун теоретически обращаешься к несуществующему элементу массива (то есть индекс выходит за рамки). +1 тут не причем. Проблема скорее всего в индексах.
>>1526294У меня есть более важный вопрос. Как ускорить программу? Найти ошибки в алгоритме? А то ебанное превышение времени. Я вот удивляюсь почему тесты так резко меняются. Время выполнения 2 сотых на одном и больше секунды на следующем
>>1526304Ну во первых, рад студио это кусок говна для дидов. Во вторых - там должны быть коннекторы к БД (по кр. мере в СБилдере были, когда я его тысячелетие назад трогал).Кидаешь коннектор на форму и поехал
>>1526267У тебя там кстати в 16 строчке бессмысленное условие, т.к. используется unsigned. А чуть выше ты double в unsigned запихиваешь
>>1526267Заодно посмотрись к формуле, там всегда она выглядит как a - (a/n)*n, то есть 0. Если b = 0, то будет intmax итераций
>>1526315Спасибо. Действиткльно тип нужно поменять. Еще я забыл единицу вычесть. Эта формула вернет колличество элементов, в которых значение на единицу больше чем в других. То есть двум элементам будет соответствовать номера 0 и 1, поэтому нужно вычесть
>>1526322 (OP)>>1526322 (OP)>>1526322 (OP)>>1526322 (OP)>>1526322 (OP)>>1526322 (OP)>>1526322 (OP)>>1526322 (OP)>>1526322 (OP)>>1526322 (OP)>>1526322 (OP)>>1526322 (OP)>>1526322 (OP)>>1526322 (OP)>>1526322 (OP)>>1526322 (OP)Перекатил сотый тред
>>1526033Через VS2019, там sln файл. В готовых версиях только х86, zlib при чём есть в двух вариантах.
Как в VS2019 в зависимости от конфигурации определять define.Т.е. по умолчанию там Release, Debug, я создаю свою, например Test и хочу чтобы при этом режиме в коде что-то вроде:#ifdef TESTDEF...#else...#endif
>>1526656<ItemDefinitionGroup Condition="'$(Configuration)'=='MoyaConfiguraciya'"><ClCompile><PreprocessorDefinitions>MOY_DEFAIN;%(PreprocessorDefinitions)</PreprocessorDefinitions><ClCompile></ItemDefinitionGroup>Ну или в настройках проекта выбери свою конфигурацию и добавь дефайн, но студия туда ещё немного насрёт
Не могу нагуглить решение.SetConsoleTextAttribute(hConsoleHandle, FOREGROUND_GREEN);Сюда можно добавить параметр яркости?
Здорова, хелпаните Ввести массив целых чисел X(N). Определить среднее геометрическое положительных элементов, кратных трем, и записать его в начало массива, переместив элементы массива вправо (вспомогательный массив не создавать). Выдать на печать исходный и преобразованный массив. на C++