Вы видите копию треда, сохраненную 14 марта 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Ответы на все вопросы:
- http://en.cppreference.com/w/
- http://www.cplusplus.com/reference/
Прошлый:
- https://2ch.hk/pr/res/1110566.html (М)
А, я долбоеб, забейте.
Обязательно читать Эффективное использование C++ и потом Эффективный и современный C++? Или можно только последнюю?
>А что надо читать?
K&R штудируешь, прочитывая пару раз, делаешь упражнения, добиваешься чтобы каждая фраза в приложении где формально описан язык была тебе понятна
потом берешь страуструпа "с++ специальное издание" и оттуда зубришь ТОЛЬКо главы относящиеся непосредственно к языку (это будет около 150 страниц), остальное нахуй не нужно, тк страуструп любит лить воду, выполняешь несколько упражнений, потому что опять же страуструп любит в своих книгах давать дохуя упражнений, которые все хуй переделаешь если ты не ноулайфер ебаный
ну а дальше уже кодишь, время от времени почитываешь доки-статейки по тем аспектам языка что тебе непонятны и понадобились при решении практических задач
>K&R штудируешь
Проштрудировал года 3 назад. Не впечатлило. Нужно еще разок?
>берешь страуструпа "с++ специальное издание" и оттуда зубришь ТОЛЬКо главы относящиеся непосредственно к языку (это будет около 150 страниц)
Спасибо, так и поступлю.
И почему те книги не нужно читать? Вот интересно просто. Везде советуют, а тут наоборот.
Начни с последней
Тут у людей своё видение.
а что-нибудь на русском?
если совсем нулевой - то рихтера "windows для профессионалов", 4е издание
ну а дальше уже ебашишь по msdn или грызешь более специализированные книги, статьи
а вообще конечно, лучше не начинать - работу ты щас на крестах да еще и на винде хуй найдешь если новичек, искренне не советую в общем
В общем, онлайн инсталлер не работает. Скачал оффлайн отсюда http://download.qt.io/official_releases/qt/5.10/5.10.0/
Не сработает. В тернарном операторе обе ветки должны быть одного типа
Подскажите книгу для новичка. Желательно с большим кол-ом примеров.
>и совсем нулевой - то рихтера "windows для профессионалов", 4е издание
>ну а дальше уже ебашишь по msdn или грызешь более специализированные книги, статьи
>а вообще конечно, лучше не начинать - работу ты щас на крестах да еще и на винде хуй найдешь если нов
Сори, я уже нашёл, я раньше под Linux-ом прогал, а теперь мне надо будет копаться в тоннах legacy windows говна.
И переписывать его на сисярпе
>а вообще конечно, лучше не начинать - работу ты щас на крестах да еще и на винде хуй найдешь если новичек, искренне не советую в общем
ЛОЛ, а я тут в C++ усиленно вкатываюсь
мммм, какой ты дерзкий)
если ты молод то, блядь, вкат в кресты будет одним из самых твоих хуевых выборов в жизни
25 лет считается за молодость?
Вкатился в кресты в 26 лет, сейчас 29 и зарплата 4500 долларов по курсу ЦБ РФ (Контора в баксах все считает).
Это было лучшим решением в моей жизни.
>Подскажите книгу для новичка. Желательно с большим кол-ом примеров.
http://deti-knigi.ru/3000-примеров-по-математике-1-класс
ты это пиши в зарплата-тредах в /b, тогда к 35 будешь гарантировано выкинут на помойку и заменен молодым мясом
каким молодым мясом, артист?
молодые вокруг все ангуляр-программисты, и прочий веб. Чувак в моей команде, которому в районе 45 - получает больше 400к в месяц чистыми.
Ну блять, потому что молодой (или нет) человек сверху написал, что это учить кресты - хуёвое решение
Я бы поинтересовался аргументами. Затем послушал других, не ограничиваясь имиджбордами.
Ну ты можешь что-нибудь сказать про кресты и почему их стоит учить первым языком пездюку, как я?
Учи лисп.
Если тебе 18 лет, то вкатываться надо в то, что тебе интересно, будь это стоматологшия, С++, сьем видосов на ютубе и прочая хуйня. Только то, что тебе правда интересно может принести тебе доход и счастье в жизни. Если тебе похуй вообще все - вкатывайся в ангуляр, будешь ангуляр программистом
>Только то, что тебе правда интересно может принести тебе доход и счастье в жизни.
Тащемта опасное и вредное рассуждение
да, я в курсе что у пидорах принято страдать всю жизнь. БОХАТО НЕ ЖИЛИ, НЕЧА И НАЧИНАТЬ.
Не, из книжки профессора из мит почерпнул.
Ебашить на лиспе.
А иде? нужен или нет? если просто в текстовом пилить без подсветок? для больших работ обязательна иде?
Для C++ есть ровно 1 IDE - это Visual Studio, все остальное - полурабочее дерьмо. Так что ставь шиндошс десять и ебашь.
Clion
я уже вкатился в инженеры и я не думаю, что кресты будут сильно хуже. хотя бы по хх.ру там стабильный рейт х2. сука. знал бы прикуп, уже б давно постелил для переезда в сочи.
неа, строго мужиков. строго в сракотан
Ну, если честно - мне очень сильно повезло, что я нашел вакансию, за которую давали дохуя денег, и у меня по требованиям, даже рекомендованным было 100%ное попадание.
>и у меня по требованиям, даже рекомендованным было 100%ное попадание
А что за требования примерно были? Опыт работы с winapi?
Скажем так, требования были охренительно специфические, но они у меня были по счастливой случайности (с нужной областью на удаленке немного работал).
Умеешь поддержать, сразу видно.
>>20561
КутэКреатор. Что для меня важно в нём:
- умное автодополнение (не как в нотпад++)
- поиск определений/объявлений в инклудах
- проекты (компиляция без ебли с мейкфайлами, остаётся ебля с либами)
- подсветка структуры вложенности блоков кода
Полезные излишества:
- статический анализатор (включается в "плагинах")
- подсветка всего и вся, а не только базовых понятий
>>20564
Он IDE просил, а не OS.
>>20577
Съеби.
попробую пованговать что это nvidia а из специфических требований - perl в качестве второго языка
> Съеби.
Просто поставь студию 2017 и решарпер С++ - и сам увидишь, каким говном ты обмазывался все это время. Но да, культикреатор сильно лучше, чем остальные ИДЕ под луникс, типа ЭКЛИПСА, там такой пиздец, что я лучше в виме писать буду.
Который вообще ничего не умеет?
>Просто поставь студию 2017 и решарпер С++ - и сам увидишь, каким говном ты обмазывался все это время.
Всё это время - это студии 2010, 2012, 2013? В какой там студии вернули возможность отключить MRU при ктрл-табе без плагинов? Ты падения МСВС-компилятора не видел - зато я видел. У тебя манагед-код летает, а у меня нет. Ты баги студии не видел, зато я видел. Студия твоя ставится хуй знает куда, занимает гигов 10 (ЕМНИП), прошу поставить на Е - один хуй куча дерьма влетает на корневой диск. Поддержку других компиляторов там когда добавили хоть? Два года назад? (инбифо Интел ИЦЦ) Про встраивание блоба от майков в скомпилированный код коммунити-2015 ты не знаешь или забыл? Совместимость статических либ там уже проверяется или до сих пор нечитаемые сообщения компилятора или ошибки рантайма? В 2013 (или в какой там) не мог настроить цвет столбца номеров строк - всё тёмное, слева белая блямба. Редактор цветовых схем там в каком году завезли или нет его до сих пор? Вызов оффлайн-документации по нажатию кнопки там появился уже или нет?
Автодополнение в 2015 на моём E8500 работает секунды полторы на мало мальски значительном проекте. В QtCreator - доли секунды.
Что в ней такого охуительного, что всё остальное мусор - одному тебе известно. Ни одно положительное качество студии (я разве говорил, что их нет?) для меня не перевешивает недостатки.
> Автодополнение в 2015 на моём E8500 работает секунды полторы на мало мальски значительном проекте. В QtCreator - доли секунды.
Вопросов более не имею.
Зато я имею, отвечай.
>Поддержку других компиляторов там когда добавили хоть? Два года назад? (инбифо Интел ИЦЦ)
Сlang и gcc
https://blogs.msdn.microsoft.com/vcblog/2017/03/07/use-any-c-compiler-with-visual-studio/
> ты падения МСВС-компилятора не видел - зато я видел
Я их два зарепортил майкрософту.
> Ты баги студии не видел, зато я видел.
Сама студия работает близко к идеальному. Но мне нравится твоя уверенность в твоем, что твоя красноглазая параша без багов.
> Студия твоя ставится хуй знает куда, занимает гигов 10 (ЕМНИП), прошу поставить на Е - один хуй куча дерьма влетает на корневой диск.
Это вообще не проблема, а высосанная из пальца хуйня. Если у тебя винт на 80гб - ну, попробуй найти работу.
> Поддержку других компиляторов там когда добавили хоть? Два года назад? (инбифо Интел ИЦЦ)
Шланг есть, гцц ремоутно умеет.
> Про встраивание блоба от майков в скомпилированный код коммунити-2015 ты не знаешь или забыл?
Знаю, вообще ничего страшного.
> Совместимость статических либ там уже проверяется или до сих пор нечитаемые сообщения компилятора или ошибки рантайма?
Не сталкивался, но плохо представляю, как у тебя IDE разные ABI сама проверяет лул.
> Редактор цветовых схем там в каком году завезли или нет его до сих пор?
В 2015 был точно.
> Автодополнение в 2015 на моём E8500 работает секунды полторы на мало мальски значительном проекте. В QtCreator - доли секунды.
Тут самый главный кейс, что ты студентик-хеллоуворлдщик, который настоящую разработку не видел, а уже что-то придумывает. Давай, напиши мне в культекреаторе драйвер под винду. Или подебажь без пердолинга.
Оно пишет: Ошибка (активно) E0513 значение типа "const char *" нельзя присвоить сущности типа "LPSTR"
Погуглив, выяснил, что это что-то связанное с кодировкой, в свойствах проекта провбовал другие кодировки - не помогло.
LPSTR это char, у тебя const char. Компилятор корректно тебя бреет, т.к. ты пытаешься убрать константность.
С++ только начал изучать, прошел "Hello World"
Вместо
pe.szObjectName = "Processor";
поставил
pe.szObjectName = _strdup("Processor");
Вродебы откомпилировалось, но не работает как надо, ошибок нет.
>Здарова кореша
тут нет твоих корешей, уебок
тот только наивные лупогразые кодерки готовые отвечать на вопросы вкатывальщико-ньюфагом, и тем самым пилящие сук, на котором сидят
>Но мне нравится твоя уверенность в твоем, что твоя красноглазая параша без багов.
Мне не нравится твоя уверенность в моей уверенности. Это не я сравнивал все ИДЕ с визуалстудией, как говно с божьим даром, а ты.
>Шланг есть, гцц ремоутно умеет.
Я не спросил, что оно умеет, я спросил "когда". Правильный ответ - год назад, когда индустрия к стенке припёрла.
>Не сталкивался, но плохо представляю, как у тебя IDE разные ABI сама проверяет лул.
У меня IDE и компилятор разными организациями написаны, с IDE спрос невелик.
>Тут самый главный кейс, что ты студентик-хеллоуворлдщик, который настоящую разработку не видел, а уже что-то придумывает.
Адхоминем (правдивость суждений разбирать не буду). Олсо, обрати внимание на то, что я не тебе, напористому драйверописателю, советовал Креатор, а ньюфренду.
>Давай, напиши мне в культекреаторе драйвер под винду.
Надо будет - напишу.
>Или подебажь без пердолинга.
Есть разные подходы к дебагу, не только кнопочки в окошке тыкать.
>>20824
Хуёво быть тобой.
>>20850
Нет и нет. Я помню, что у меня были какие-то траблы в 4.0.3, иногда он не вызывался, хотя должен был бы. Вот прямо сейчас проверил в Qt Creator 4.4.0 - нет, не надо его вызывать сразу после создания.
https://stackoverflow.com/questions/12873437/force-qtcreator-to-run-qmake-when-building
В QT5.8 даже в этом случае надо вызывать его, например, тоже проверил.
Как будто написание драйвера под винду в креаторе это намного большее мучение, чем написание драйвера под винду в студии, в самом деле.
Ты не поверишь
Тут это где? Ебанутый шизик который скорее всего ниразу в жизни не писал комершал код и не сталкивался с говно-решениями от коллег высрал свое дохуя важное мнение касательно того что стоит читать ньюфагу, а что не стоит? Тогда да
UPD: я блять уже молчу про то что человек на вопрос про С++ отвечает книгой по совершенно другому ЯП который ебучему ньюфагу мало того что не всрался на стадии "ебать где я", так еще и отобьет нахуй желание делать что-либо (что хорошо, тут ему респект)
Шизан, иди-ка нахуй. Саттер и Майерс топовые мужики и в книгах обоих разобраны тонкие моменты стандартов и лайфхаки, которые предотвращают десяток ошибок, которые ты мог допустить просто прочитав Стауструпа
>Знаю, вообще ничего страшного.
гыыыы ну че там ептеть степашка нахо оно надо то сука хуйня ета ебать я кнопку жамкаю у меня билдит ептель я сука ему гвоорю РАБОТАИ ПАДЛА оно и работает то епта мне че надо нахуй сиську в рот пифко на столе мне аще похуй ептсель мопсель)))))))
если ты не будешь городить абстракции, а просто тупо писать приплюснутый структурный код (как и делают в большинстве коммерческих проектов по сути), то книги саттера и майерса - нахуй не нужны, тк они посвящены как раз решению проблем возникающих при проектировании "воздушных" замков
типа обсуждения на десятках страниц у майерса подводных камней, когда вы получаете наследование ромбиком, ну или вдруг решаете сделать функции, полиморфные ко множественным классам а не одному и прочую поеботу
и по молодости я прошуровал и саттера, и обе книжки майерса и прочие подобные книги
все это было лишь потерей времени
$que$вопрос?
$ans$ответ
Количество $ans$ может быть разным для каждого вопроса. Скажем, мне надо или оставить только первый вариант, или видоизменить формат, например, в
-1-
вопрос?
ответ
-2-
вопрос?
ответ
Как ньюфажику реализовать что-то подобное? Надоело ручками всё делать.
тащемта это тонкости и очень нужны все эти вещи, если ты архитектуру разрабатываешь всего. Даже типичные патерны проектирования стоит прочесть для образования.
>а просто тупо писать приплюснутый структурный код (как и делают в большинстве коммерческих проектов по сути)
Смотрите сюда зеленые нюфани желающие вкатиться в АЙТИ - это ваше будущее. Вы - это он. Бесконечный цикл мусора в природе, радует глаз и пугает своими масштабами одновременно.
на awk такое делается влет
>патерны проектирования
о, да, еще и "банду четырех" штудировал в свое время
каким же дураком был
Я тебе больше того скажу - ты все еще не особо умный, не надо себе льстить, тем более на убогой анонимной борде.
Я очень надеюсь что в новом году ты наконец понял что выбрал не ту дорогу и начал верстать лучшие в Подзалупинске одностраничники с рекламой пикап тренингов. Ведь самое главное - это счастье и внутренний баланс, а уже потом эта хуйня для задротов тупорылых со своими паттернами, кодинг-стайлами и советами.
Моя маленькая, глупая, наивная обезьянка. Когда-нибудь ты поймешь что угрозы в интернете выглядят также глупо, как и ты в попытках высрать свои новые мысли.
Чем больше ты знаешь - тем лучше. И майерсы и банда 4 маст рид. Знания тебе не мешают писать процедурный код, но ведь будут разные задачи с разными решениями. Я волбще сфинае хуярю в кернельный код, и мне норм. А в соседнем файле у меня си с классами. Все от задачи зависит
>майерсы и банда 4 маст рид
nop
как и талмуды от страуструпа, тащем-та
которые я тоже прочитал
дизайн и эволюцию, язык программирования с++ спец издание, плюс последнюю "принципы и практика"
чтиво уровня аластера рейнольдса, если вы читаете фантастику, такая же графомания и куча воды
Как угодно, только не на плюсах. Спроси в прикреплённом.
Расскажи или кинь ссылку где прочитать.
cmake хорош. Потому что без него в вижуал студии управлять проектом, состоящим из нескольких либ с зависимостями между собой - ад.
Месье, не охуели ли Вы?
Почему вы считаете, что malloc тормозной?
Почему вы считаете, что allocator сделан не через malloc или его эквивалент?
Отличие в том, что аллокаторы - это концепт, типы, соответствующие которому, принимают контейнеры, и написать свой аллокатор ты можешь, а написать свой new/delete - нет.
>На каждый чих дергать syscall'ы
Месье, Вы, верно, охуели. Извольте показать описание malloc в докуентации к ядру винды или линукса, я настаиваю.
О, точно, забыл. Но перегрузка будет одна на весь тип,и в шаблон ты её не передашь (инбифо пердолинг с ICS).
>(инбифо пердолинг с ICS).
Хер знает, о чём я подумал (implicit conversion sequence), не уверен, что это возможно.
Я чет бегло гугл посмотрел англоязычный чет картинв не сформировалось.
Где allocator_traits, когда отн создается, если он по умолчанию, какие та и там функции должны быть тид?
Я даун просто. Ткните еблом в туториал нормальный или в доку плез.
Начинай с Таненбаума, потом постепенно читай книги по алгоритмам, там поймёшь, какой тебе нужен аллокатор и т.д.
Google, how free knows memory size — расскажет кое-что об устройстве кучи в большинстве современных я/п.
Интел что ли?
Не, это я знаю все +- ибо на чистых сях писал мемори пулл. Я не могу синтакическое оформление в С++11 понять .
Я помогу, ибо я человек а не красноглазик.
Заходишь в propereties и меняешь кодировку на многобайтовую
Тогда тебе нужен Стенли Липпман. У него показаны все указатели: shared, unique, weak и т.д.
Правило, если кратко, такое: исчезает указатель — исчезает область памяти. Аллокатор там какой угодно может быть.
Применяя прямую запись в видеопамять получить на экране оригинальный динамический видеоэффект «пламя».
Спасибо
5k
А если мне нужен трёхмерный вектор, но в нём нужно изменять только два размера, как мне уточнять это? Не очень понимаю, как он объявляется, как вектор с элементами векторами?
> Дополню, что в студии охуенный конфигуратор проектов. Не надо зубрить флаги и в маны лазить на каждый чих.
Полное дерьмо, ИМХО. Конфигурации вперемешку блять, больше ебешься, чем делаешь. Лучше иметь генератор проектов, чем студийными проектами пользоваться.
> Не надо зубрить флаги и в маны лазить на каждый чих.
Зато надо как ебалас сидеть и мышкой тыкать часами в поисках того, что нужно.
> На работке сами сначала всё пишем в студии+кутя.
Ну че там, завезли UTF-8 для файлов по-умолчанию или все в Windows-1251 сохранеяете, что аж потом ни один редмайн не может нормально диффы показать
Алсо. Все IDE под кресты сейчас - сорта говна. MSVS становится еще более менее вменяемой, если накатить решарпер или Visual Assist X, но в первом случае, она становится пиздец какой медленной, а во втором мы имеем устаревшие фичи, которыми пользоваться не очень-то и удобно.
Нужна помощь.
В общем есть один проект, который пилили на VS2017, и есть второй проект, для которого нужен Intel Parallel Studio. Второй проект нужно заюзать в первом.
Проблема такая, что для VS2017 не могу накатить расширение от Parallel Studio. Уже заебался разные версии качать и устанавливать по часу.
Но для VS2012 нормально встал Parallel Studio 2013, но на ней не запускается первый проект, который требует Platform Toolset v141.
Как подружить 2017 студию с параллел студио?
Или как легко даунгрейднуть проект под platform toolset v110?
Или какие еще есть пути решения проблемы?
>Конфигурации вперемешку блять
>Зато надо как ебалас сидеть и мышкой тыкать часами в поисках того, что нужно.
Ай не пизди, всё там разбито по вкладочкам и найти не проблема. Ты точно студией пользовался?
>Лучше иметь генератор проектов
Генераторы проектов это заебись, я согласен, особенно если всё уже за тебя написано. Но лично меня просто воротит если надо писать всю поеботу вручную.
>Ну че там, завезли UTF-8 для файлов по-умолчанию
Да печалька, не завезли. Скачай экстеншн делов-то.
Кстати, чтобы компилер воспринимал сорцы как utf-8, можно добавить флаг /utf-8. Может антуанам эта инфа пригодится
ИМХО, решающими преимуществами студии является юзер-френди интерфейс и заебатый автокомплит. За это можно простить всё остальное.
cppreference.com - вот твой гугл.
http://en.cppreference.com/w/cpp/memory/allocator_traits
allocator_traits - это то, что должно быть в области видимости на момент использования аллокатора. Делаешь это так:
namespace std{
template<> //потому что аллокатор_трейтс - это шаблон, который ты доопределяешь для своего аллокатора
struct allocator_traits<moiALlocatttttor>{
}
}
как бы те сказать..
вот если ты работаешь на фирме где уже не достаточно производительности компилера от майков и где юзают компилер и инфраструктуру от интелл
то твоей квалификации, очевидно же, должно быть достаточно для решения таких текущих задач что описано в твоем посте
следовательно, можно сделать вывод, что ты просто занимаешь чье-то место, ты не тянешь на это место по знаниям
в идеальном мире ты должен быть уволен, выкинут на помойку и сдохнуть от голода
>начинаю свой путь в программирование
специализироваться на крестах в 2018 - самая гиблая затея для вкатывальщика, закрой этот тред и больше никогда сюда не заходи
ява, веб - иди туда
Я не работаю, лол. В универе задание по предмету дали такое.
Вручную все-таки получилось перенастроить проект под v110, но вылезла куча всяких синтаксических ошибок, возможно из-за неполной поддержки фич новых версий С++.
Сегодня подумал, что можно было бы наверное скомпилить проект на 2012 студии как библиотеку, и подключить ее в проекте на 2017 студии, но не уверен, что все прокатит.
Да и уже начал ставить 2015 студию, параллел студио накатилась туда, но всплыли снова проблемы с Windows SDK 10.
Нет. Я даже удаленщика-хаскеллиста знаю. А вот плюсовиков - не одного. Сам удаленил на 30к в месяц 10 часов в неделю по приколу, и все.
Указывать рамер массива можно же только константой
Что происходит?
inline Env::Env(napi_env env) : _env(env) {
}
inline Env::operator napi_env() const {
return _env;
}
Происходит то же самое, что происходит при входе в любой блок кода - сдвигается граница стека на любое заданное значение, внутри создаются переменные, массив этот, например. Причём статическим он быть не может.
Не по станарту эта хуйня.
#define hui pizda? constexpr - почти полный аналог.
тебе стоит самому почитать, лол
темплейты и constexpr позволяют "закрыть" почти все применения define
на долю define остается, по сути, только управление тем, какие куски кода будут включены-исключены при различных сборках
Ссать на голову - хороший навык, но на удаленке этот навык не нужен
бля, а я сижу как даун вкатываюсь. лол.
Пусть тогда в UE4 вкатывается. Там и C++ есть. Приятное с полезным будет совмещать.
поставь UE4, а там уже если надо будет и сишечку учить будешь.
может вообще в редакторе поклацаешь полдня и поймешь, что оно тебе НАХУЙ НЕ НУЖНО программирование ваше. и пойдешь в слесаря. кек
У них же: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=, что вообще есть что-то другое. Мне нужно что-то с полученной строкой после кодировки в sha1?
Ты по-моему в глазки долбишься или просто недосыпаешь.
xxd -r -p <<< "b3 7a 4f 2c c0 62 4f 16 90 f6 46 06 cf 38 59 45 b2 be c4 ea" | base64
s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Я дебил. Проблема в том, что я строку преобразую, а не hex числа. А вот как блять сделать правильно я не ебу. В php помню была функция pack которая hex строку (b37a4f2c...) упаковывает в бинарную строку (или как то так). Как это сделать не подскажешь?
В плюсах ничего такого нет, ищи либы или пиши сам по RFC (ссылка есть в той же статье).
https://github.com/fffaraz/awesome-cpp
ты че ск, а ну быстро поясняй как удаленку с 3 годами опыта серверной разработки под линукс на с/с++ искать
Был бы там пример парсера
Мой русский язык плохой. Я лучше пишу на английский:
Qt WebEngine provides functionality for rendering regions of dynamic web content.
Use google translator
Мой английский не лучше твоего русского.
Можешь ли ты привести пример получения схемы сайта и её парсинга?
Объясните, каким образом так получается динамический массив?
Совсем ебанутый? Прочитай про operator new в стандарте, вот таким образом и получается.
eel.is/c++draft
Зачем писать о том, что разжевано в 100% для ньюфагов?
Нихуя! Если C имеет числовой тип большего ранга/приоритета/вотевер, то приводится будет к нему. Это я уже не говорю о том, что оператор+ может быть перегружен.
>>22954
Потому что у второго варианта два операнда. Ещё лучше было бы ++C, но любая практическая разница между ++C и C++ может быть уничтожена после инлайнинга.
Для строки Edit1->GetTextBuf(Buffer, Size); выдаёт ошибки
- Cannot convert 'char ' to 'wchar_t '
- Type mistmatch in parameter 'Buffer' (wanted 'wchar_t *', got 'char'
Гугл выдал уот такое https://stackoverflow.com/questions/26073814/cannot-convert-const-char-to-wchar-in-argument-passing
Собсна вопрос от глупого меня тем, кто с этим билдером работал - где и что там нужно поменять в настройках?
Чем тебе ответ со стака не устраивает? Хуйню с настройками иде игнорируй.
String names = static_cast<String >(::operator new( BUFSIZ ));
Как понимать выделенное болдом?
inb4: как std::operator new(), который выделяет памяти в размере BUFSIZ байт.
А какой ответ ты еще ждешь, мудила блять?
Без контекста идёшь нахуй.
Да блядь, у меня программа при увеличении массива перестаёт работать, а увеличении стака не помогает
Вот-вот, блядь! Я тебе и говорю. В ЖС то нет таких проблем, понимаешь, какая зуевина-то? Вот и перепиши все на нем, нахуй. Понимаешь о чем я толкую?
Если бы там скорость была такая же, то перешел бы на ЖС
Для тяжелых вычислений можно дернуть по FFI либу, или использовать модуль написанный нативно, или IPC к программе, написанной на низкоуровневом языке.
А С++ глобальные массивы же в куче, а не стеке хранятся, или для этого нужно через указатели ебаться?
под них свой отдельный сегмент памяти
А как снять ограничение на количество элементов в глобальном массиве? Или его нужно по другому объявлять, а потом использовать указатели?
Просто пишут, что он не ограничен, но у меня при увеличении количества элементов он перестает работать.
Кресты
1) Можете мне рассказать, как вообще писать на плюсах нормальный и современный код?
Ну, я использую пару классов из стл, использую смартпойнтеры почти везде. Использую по максимуму всякие штуки, типа инициализации списком.
На что мне еще нужно обратить вниманию? Что почитать? Надоело писать на си с классами, как в первый раз.
И еще вопрос, схожий с первым.
2)Как правильно дизайнить классы/наследовать?
Например, я стараюсь всегда явно указывать оператор присваивания/конструктор копирования/деструктор с помощью default/delete. Потом стараюсь везде делать конструкторы explicit.
Как нормальные разработчики пишут классы?
А то иногда смотришь какой-нибудь проект на гитхабе и там темплейты, лямбда-выражения кругом, мув-семантикс кругом, в самом коде какие-нибудь ассёрты еще стоят. И я как-то даже не знаю, хорошо это или нет.
Нахуя мапу трогать кучу, если ты в него ничего не вставляешь? Если тебе нужна проверка наличия ключа, напиши сам.
Предложение которое начинается со слова "подскажите" само по себе является вопросом, то что ты безграмотный и тупой это объясняет твоё применение.
Хотел написать следующее :"Здравствуйте, хотел бы уточнить сроки выполнения тестового задания. Приступил к выполнению задания вчера, в связи с личными обстоятельствами."
Или просто написать про сроки выполнения? Задачки не сложные, я на джуна претендую.
Как быть анонимы? Как он отреагирует на это? Стоит ли ему сообщать что вчера только начал выполнять и в нагрузку намекуть почему? Или просто спросить по срокам выполнения? Как быть...
Тему перепутал
class State {
public:
//...
int population() const;
float aveTempF() const;
//...
};
inline bool popLess( const State &a, const State &b )
{ return a.population() < b.population(); }
State states[50];
//...
/
std::sort( states, states+50, popLess ); // по населению
/
struct PopLess : public std::binary_function <State,State,bool> {
bool operator ()( const State &a, const State &b ) const
{ return popLess( a, b ); }
};
sort( states, states+50, PopLess() );
Там такой текст:
>Положительный эффект применения объекта-функции в качестве компаратора в том, что сравнение будет подставлено в строку, тогда как в случае применения указателя на функцию этого сделать нельзя.
Не могу понять, в какую такую строку?
class State {
public:
//...
int population() const;
float aveTempF() const;
//...
};
inline bool popLess( const State &a, const State &b )
{ return a.population() < b.population(); }
State states[50];
//...
/
std::sort( states, states+50, popLess ); // по населению
/
struct PopLess : public std::binary_function <State,State,bool> {
bool operator ()( const State &a, const State &b ) const
{ return popLess( a, b ); }
};
sort( states, states+50, PopLess() );
Там такой текст:
>Положительный эффект применения объекта-функции в качестве компаратора в том, что сравнение будет подставлено в строку, тогда как в случае применения указателя на функцию этого сделать нельзя.
Не могу понять, в какую такую строку?
Я не хочу разбираться в твоей параше, но с первого взгляда я там вижу inline. Это и имелось ввиду, скорее всего.
Так вроде же и указатели на инлайн-функции превращаются в процессе конпеляции в тупо переписанный код этой функции, не?
>тогда как в случае применения указателя на функцию этого сделать нельзя.
Нагло пиздит.
https://godbolt.org/g/zrskMv
Называется это "встраивание функций", а вовсе не "подстановка в строку". Читайте оригиналы!
>>25057
Именно.
> указатели на
От ситуации зависит. В общем случае указатель нельзя заинлайнить, потому что он может указывать на разные функции. Инлайн возможен только если компилятор в состоянии доказать что конкретный указатель всегда указывает на одну и туже функцию.
В том примере важным моментом являетсято что инлайн (возможно) происходит в шаблонном коде. std::sort принимает в качестве одного из параметров шаблона тип компаратора. В случае использования функциональных объектов этим типом будет имя класса. Тоесть, если использовать три разных (по типу) компаратора будет сгенерировано три разных варианта шаблонной функции - каждая со своим шаблонным параметром соотвествующим имени класса компаратора. При чем в каждом конретном случае будет четко определен код компаратора - тоесть у компилятора будет возможность его заинлайнить. Если же использовать указатели на функции, то не смотря на то что функции будут иметь разные имена - эти имена будут именами указателей. А тип у этих указателей будет одинаков. Тоесть если использовать три разных функции, будет три разных указателя, но будет сгенерирован только один вариант шаблона std::sort где шаблонным параметром компаратора будет "указатель на функциию с двумя аргуменами типа Т" - так как имя функции не является частью типа указателя на эту функцию. В таком случае компилятор заинлайнить не сможет.
Обратноже, все зависит от ситуации. В примере из поста >>25016 я в общемта не вижу причин почему бы дохуя хитрожопый компилятор не смог бы заиланить и в случае с указателем на функцию, так как там можно доказать что указатель всегда указывает на одну функцию. Но именно в общем случае тот хуй из книги скорее всего прав. Если у тебя в одном юните трансляции генерится std::sort для указателей на разные функции то заинлайнить не получится.
>Но именно в общем случае тот хуй из книги скорее всего прав.
Хуй из книги немногословен и в этом неправ. Заинлайнить вызов функции через указатель можно во ВСЕХ случаях, в которых он получается напрямую из идентификатора функции, и во многих других тоже.
Нахуя писать книгу, если не знать того, что вызов по указателю тоже можно инлайнить?
>В том примере важным моментом являетсято что инлайн (возможно) происходит в шаблонном коде.
В том примере важно не то, что код шаблонный, а то, что он в заголовке определён. Такая же сишная функция чаще всего находится в динамической либе, например, и инлайнить там некуда.
>Тоесть если использовать три разных функции, будет три разных указателя, но будет сгенерирован только один вариант шаблона std::sort где шаблонным параметром компаратора будет "указатель на функциию с двумя аргуменами типа Т" - так как имя функции не является частью типа указателя на эту функцию. В таком случае компилятор заинлайнить не сможет.
Хуйня полная. Никакая часть стандарта не мешает компилятору зайнлайнить хоть аллаха, даже если аллахов три штуки, и инлайнить их невыгодно.
>>22772
>кек
............/´¯/)...............(\¯`\
.........../...//....ЗДОХНИ..\\...\
........../...//......МУСОР.\\...\
...../´¯/..../´¯\.ЕБАНЫй../¯` \....\¯`\
.././.../..../..../.|_......._|.\....\....\...\.\
(.(....(....(..../..)..)…...(..(.\....)....)....).)
.\................\/.../......\...\/................/
..\.................. /.........\................../
> Хочу писать игры на vulkan или directx. Что выбрать?
Если хочешь делать именно игры, а не пердолить байты и изучать GAPI - то бери готовые движки.
> Какие учебники прочитать? C++ практически не знаю.
Если тебе нужно именно пердолиться с GAPI и ты хочешь стать вторым кармаком (в ирл геймдеве - это на самом деле быть такой хардкорной байтомакакой, которую заставляютс ебаться со всеми GAPI (включая мобильные и консольные) одновременно и и которую долбят шипастой дилдой чтобы на всех платформах графическая подсистема работала одинаково), то:
Для начала страуструп (или шилдт).
Затем https://vulkan-tutorial.com/ и
https://msdn.microsoft.com/ru-ru/library/windows/desktop/dn899121(v=vs.85)
Если нужны примеры, как это все ИРЛ применяется, то вот исходники круйзис энжина на гитхабе:
https://github.com/CRYTEK/CRYENGINE/tree/release/Code
> Я сделал крестики-нолики в консольке на 400 строк и скомпилировал это дело. Какого хуя экзешник получился на 2,7 мегабайт?
Потому что в таргете Debug стоит, наверное? Поменяй на Release и скомпилируй снова.
>Заинлайнить вызов функции через указатель можно во ВСЕХ случаях, в которых он получается напрямую из идентификатора функции
Ну, когда тело обоих функций доступно, ясен хуй. А ещё там LTO есть (не разбирался ещё с этим).
Проверка будет происходить миллионы раз в секунду, поэтому надо спешить.
Самая примитивная функция определения принадлежности числа отрезку - две инструкции на АРМ и три инструкции на x86 после встраивания, на гигагерцовых процессорах это производительность порядка миллиарда раз в секунду.
Если у тебя там такая жопа, что ты написал эту примитивную функцию, и она недостаточно быстрая, то ты криворучка.
>на гигагерцовых процессорах это производительность порядка миллиарда раз в секунду
Ну так, блядь, это ж не единственное, что мне нужно делать.
https://godbolt.org/
Учимся писать эффктивный код без ебли байтов на асемблере/интринсиках.
О, классная штука.
Да, спасибо я уже передумал, лучше возьму unreal engine
{
sizeof(example) / example[0];
}
Это быдлокодец?
рофл
Чёто вообще странное. У тебя же example может передаваться по значению и не обязательно там будет ссылка.
А если будет нулевая ссылка, то вообще ud получится.
Или какой нибудь фортран
Ты нагло пиздишь, сучий выродок, не шути с нами. Этот код не находит длину строки.
Приятно встретить мыслящего человека на харкаче, вселяет надежду. Остальные проглотили молча.
Мы готовы предложить Вам вакансию синиор-С++-разработчика с окладом $17400 и релокейтом в Америку, вы согласны?
Мсье я еще слишком тупой, я сделаю только хуже, давайте начнем с уборщика в отделе разработки на С++
Существует ли вообще приличная удаленка на С++? Так, чтоб на $8к+. Какие технологии для этого надо шарить?
Занимался системными вещами, пилил веб-серверы, бэкэнды, алгоритмические либы. В сцаном яндексе два года тоже отпахал. Общий стаж (не считая студенчество, интернатуру) приличного кодинга чуть больше 5 лет. Топовое образование, вся хуйня. Ну и обширная системная экспертиза, зачатки машинлернига и какое-никакое знание еще парочки языков.
Уперся в 200к в ДС онсайт. Ну, максимум 250 может выпрошу. В принципе, готов двигаться в тимлидство, но по з/п разницы нету по сути, а работа куда менее интересная.
Валить в европку невыгодно, в штаты (гугл, фейсбук и прочие) - долго хайриться, делать визы - пару лет займет. Ну и наслышан, что там будет не весело, хоть и илитно.
Бесят жс макаки, которым удаленку найти все равно, что поссать сходить.
Че, тоже на жс перейти, или может чего подскажете, братки-браточки?
Проиграл.
Ты молодой, шутливый, тебе все по плечу. Но не стоит вскрывать эту тему...
Маленький провинциальный город, и у компании дела идут неважно (что не мешает принимать новых людей иногда). Вот и получается, что несмотря на то, что я делаю коммерческие проекты, зарплата такая, и не растет.
И чего ты со служебного кода инициализации стекфрейма и прочего ос-специфик байтоблудства так охуел?
На удаленку или в другу. контору не пробовал уйти?
На плюсах есть работа вообще? Или лучше что-то более high-level учить?
Ох, ну ты и выебнулся.
>На плюсах есть работа вообще?
Из мейнштрима - геймдев (Уеч, хотя и здесь юнька с сисярпом долю отжирают), куте-быдлоформочки, ну и легасня.
На Уече ты пишешь не на плюсах, а на Уече. Со сборкой мусора, интроспекцией, собственной системой сборки и прочими костыльными велосипедами.
Уеч - программируешь мышкой на визуальной хуете или на плюсах (на плюсах в лучших традициях MFC-ATL 90х в вижуал студии, если помнишь -
class huitka{
GLOBAL_UE4_PIZDULINA_MACRO
void Hui();
void Pizda();
void Jigurda();
}
)
Дают исходники зареганым быдлокодерам.
Юнька - более популярна, кодится на сисярпе, исходники не дают в сторе больше готовых хуиток для даунов чем в сторе уеча.
В Фейсбуке бэкэнд написан на плюсах, соответственно плюсовики там нужны тысячами.
Их подразделения Oculus, Oculus Research - тоже почти одни плюсы.
Я это почти ты. 200к потолок для погромиста. Профессия такая. Либо перекатываться, либо смириться.
>В Фейсбуке бэкэнд написан на плюсах, соответственно плюсовики там нужны тысячами.
>Их подразделения Oculus, Oculus Research - тоже почти одни плюсы.
И там наверняка одни 30-летние шевелюны усами требуются с опытом в сложных проектах овер 9000 и ньюфаней туда не возьмут.
В основном да, люди с опытом. Но выпускников тоже берут толковых. Они даже по университетам ездят (правда, только американским).
Знаю одного человека, который сразу после Бауманки уехал в Майкрософт в США.
Усы сейчас не носят, на западном побержье США принято одеваться, как бомж и носить мерзкую бородку.
>на плюсах в лучших традициях MFC-ATL 90х в вижуал студии
>// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
>#pragma once
>#include "GameFramework/Actor.h"
>#include "FloatingActor.generated.h"
> UCLASS()
> class QUICKSTART_API AFloatingActor : public AActor
> {
> GENERATED_BODY()
> public:
> // Sets default values for this actor's properties
> AFloatingActor();
> protected:
> // Called when the game starts or when spawned
> virtual void BeginPlay() override;
> public:
> // Called every frame
> virtual void Tick( float DeltaSeconds ) override;
> float RunningTime;
> };
Я думал ты шутишь, это ж пиздец.
>на плюсах в лучших традициях MFC-ATL 90х в вижуал студии
>// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
>#pragma once
>#include "GameFramework/Actor.h"
>#include "FloatingActor.generated.h"
> UCLASS()
> class QUICKSTART_API AFloatingActor : public AActor
> {
> GENERATED_BODY()
> public:
> // Sets default values for this actor's properties
> AFloatingActor();
> protected:
> // Called when the game starts or when spawned
> virtual void BeginPlay() override;
> public:
> // Called every frame
> virtual void Tick( float DeltaSeconds ) override;
> float RunningTime;
> };
Я думал ты шутишь, это ж пиздец.
Нет, я про то что getline не определен.
Не работает все равно.
Потому что ты в шары долбишься и в список ошибок не смотришь, не смотришь на соседние строчки, и вообще код не твой, иначе ты бы знал, зачем там в начале using.
Нет такого символа, уёбок. В файле могут быть любые символы в любых количествах.
Это я один думаю. Тут часто бывают уродцы, которым уже ссылку на докуменацию даёшь, а они всё "нет ты скажи где ошибка". Раз ты сам допедрил, то, быть может, у тебя не лаба.
vector
Сначала используешь reserve().
Потому используешь resize() туда-сюда в рамках capacity(), при этом размер не меняется.
Ну и pop_back() и push_back() тоже можно использовать.
ок спс
но почему-то VS не понимает такого шаблона, помогите, плиз
template<typename A, typename T>
void PrintContainer(const A<T>& a) {
A::iterator it = l.begin();
for (; it != l.end(); ++it) {
output << *it << endl;
}
}
http://www.cplusplus.com/forum/beginner/58978/
А вообще, тебе достаточно получать 1 аргумент и использовать auto it = container.begin();
Или вообще, использовать range-based loop
Написал так, но всё равно неверно
я не очень понимаю как здесь можно обойтись одним параметром в шаблоне
>typename A
>A<T>
У типа не может быть аргументов, и тимплейт - это не тип. В плюсах 11+ можно передават тимплейт в тимплейт.
На дваче только /b есть, ты тупой что ли?
и как это написать?
template<typename T template<typename В>>
void Info_vec(const Т<В>& container)
>>25995
>Хули ты там передаёшь в него? Контейнер с векторами?
да, на примере вектора,
но мне нужна функция, которая будет выводить любой последовательный контейнер на печать, то есть и вектор и список и аррей и дек
напишите хоть кто-нибудь хоть строчку кода ((
спс
какой же это кусок дерьма,
вот у меня выскочила ошибка
'vector': undeclared identifier
сначала на одной функции с шаблоном, хоть на то не было ни одной объективной причины, я везде включил
#include <vector>
потом я вынес все функции в отдельный .h,
создал новый пустой проект и загрузил теда заново все исходники и хедеры,
но та же самая ошибка сработала уже на другой функции
почему так я не могу понять
>и как это написать
Ты уже написал, поздравляю тебя. Со всеми остальными вопросами - к преподу и в гугл.
>да, на примере вектора,
Отлично, теперь напиши operator<< для вектора. Ты думал, что от того, что ты напишешь cout<<vector у твоего вектора появится operator<<?
>напишите хоть кто-нибудь хоть строчку кода ((
Препода еби.
>>26028
Скатертью дорога, нам конкуренция не нужна.
Зелёный, уйди
a = b + c
И
a = a + b
a = a + c
Компилятор достаточно умный (умней меня) чтоб такое оптимизировать?
Я имел ввиду, при a = 0
Сам С++ всегда будет востребован, но как язык он сам очень коряв.
Вкатись в Java, С#, Python если немного гей
Будет, если переопределить оператор +=
Скачал@с оффффициального сайта@МАКСИМАЛЬНО оффффициального из официальных сайтов@...Сайтов QT@Установил@Максимально установил@везде комплекты ставил, даже на ёкарный бабай Ведро@ну просто на ВСЕ галочки при выборе довнлоадинга нажал@началась установка@прошло пол дня, но ни хуя@при самой лёгкой сонсольной программы на вывод приведа МЕДВЕДА, компилироваться компилируется, но нажимая кнопку запуск, никакая сонсоль не появляется@пробовал много раз@даже другие компиляторы@помогите пжлс, сдавать скоро, а я нихуя не сделал
Есть сайт который компилирует с++ код и сразу показывает ассемблерных код для него, посмотри сам. Название не помню.
Да, стоял дебаг. Но я поменял на Релиз и вес конечной программы почти не изменился - стал 2,5 вместо 2,6 мегабайт.
Зато появилась странная хуйня - в режиме релиза программа стала работать неправильно - игра выдает ничью после первого хода.
Это что за нахуй и почему?
> Но я поменял на Релиз и вес конечной программы почти не изменился - стал 2,5 вместо 2,6 мегабайт.
Скорее всего, виновата статическая линковка. Хотя я диванный, но у меня хелловорлд с ней весит 2 Мб, а без нее десятки Кб, не помню точно.
>Зато появилась странная хуйня - в режиме релиза программа стала работать неправильно - игра выдает ничью после первого хода.
Это что за нахуй и почему?
Хуй знает, что ты там наговнокодил, но на скрине явно не крестики-нолики, либо я что-то не понимаю.
>Скорее всего, виновата статическая линковка.
Что это такое и как ее убрать?
>Хуй знает, что ты там наговнокодил, но на скрине явно не крестики-нолики, либо я что-то не понимаю.
Используй воображение. 9 - это ходы игрока, 8 - ходы компьютера. И экзешник в режиме дебага работает как надо, а в режиме релиза - нихуя не работает как надо. Из-за чего так?
>>26213
>Это UB, он изнасилует и убьёт твою мать.
Что такое UB и что с ним не так?
>Undefined Behavior
И что это значит?
Там аж 400 строк говнокода. И причем тут мой код, если он в режиме дебага работает как надо? Да и в с4droid на телефоне он работает как надо.
>Что это такое
Гугл
>как ее убрать?
Хз, чем ты компилируешь, если minwg, то она по умолчанию выключена, а включается "-static". Но скажи нахуя? Тебе жалко ссаные 2 Мб? Все равно придется вместе с программой тащить либы типа libstdc++.dll.
Вот что Codelite выдает в консольке при компиляции:
C:\WINDOWS\system32\cmd.exe /C C:/TDM-GCC-64/bin/mingw32-make.exe -j12 SHELL=cmd.exe -e -f "Prog_1.mk" MakeIntermediateDirs && C:/TDM-GCC-64/bin/mingw32-make.exe -j12 SHELL=cmd.exe -e -f "Prog_1.mk" ./Release/TIC-TAC.cpp.o
----------Building project:[ Prog_1 - Release ] (Single File Build)----------
mingw32-make.exe: 'Release/TIC-TAC.cpp.o' is up to date.
====0 errors, 0 warnings====
> Но скажи нахуя? Тебе жалко ссаные 2 Мб? Все равно придется вместе с программой тащить либы типа libstdc++.dll.
Мне не жалко, просто знакомые сказали что весит программа слишком уж дохуя для своего функционала.
>И причем тут мой код, если он в режиме дебага работает как надо?
Правильный код работает одинаково. Можешь попробовать доказать ошибку в компиляторе, но ты не сможешь.
400 строк говнокода? Можешь не постить, я всё равно читать не буду.
Компиляции не было (читай около слов "up to date"), команды компилятора здесь нет.
>400 строк говнокода? Можешь не постить, я всё равно читать не буду.
А нахуя тогда просил, раз читать не собирался? Я С++ изучаю по книжке пару дней, это моя первая программа, которая делает что-то нормальное и посложнее хэловорлда.
Хм, я Codelite'ом не пользовался, а только CodeBlock'ом, но подозреваю, что в нем такая же хрень: MinGW, который идет в комплекте, по умолчанию, линкует статически, как отключить это, я не знаю, я просто поменял сам компилятор, т.е. скачал с офсайта MinGW отдельно.
Гуглил, но находил инфу только про массивы, заданные указателем и длинной.
Указатели или обретка над массивом (std::array).
Ты обознался, я не просил. Могу тебе посоветовать лучше структурировать свою программу (сделать больше маленьких функций, правильность которых ты можешь проверить). Отлаживать релизный код дебуггером будет сложно, лучше всего делать это с помощью вывода текста в stderr и перенаправлять его в файл (если в stdout не хочешь выводить).
Могу провести с тобой сеанс отладки за деньги, вместе доведём твою лапшу до читаемого и проверяемого состояния.
>>26229
В твоём логе компиляции нет, для проверки настроек компилятора он бесполезен. Удаляешь экзешник, компилируешь - можешь постить лог заново.
>>26253
Функции не возвращают массивы с квадратными скобками. std::array - твой бро.
>>26259
Рад за тебя. Во всех программах, которые ты будешь использовать в разработке, есть вывод ошибок. Когда ты дёргаешь таких добрых людей, как мы, пошевели мозгами и найди вывод ошибок в интерфейсе или найди, как его включить.
Экзешник появляется если выбирать Build project
C:\WINDOWS\system32\cmd.exe /C C:/TDM-GCC-64/bin/mingw32-make.exe -j12 SHELL=cmd.exe -e -f Makefile
"----------Building project:[ Prog_1 - Release ]----------"
mingw32-make.exe[1]: Entering directory 'F:/C++/MySpace/Prog_1'
C:/TDM-GCC-64/bin/g++.exe -o ./Release/Prog_1 @"Prog_1.txt" -L.
mingw32-make.exe[1]: Leaving directory 'F:/C++/MySpace/Prog_1'
====0 errors, 0 warnings====
Ну, вообще охуеть, у тебя даже оптимизация выключена.
Ищешь свойства проекта, ищешь опции/аргументы компилятора, дописываешь туда:
-shared-libgcc -shared-libstdc++ -Os
И у тебя будут маленькие экзешники.
C:\TDM-GCC-64\bin
в свою переменную PATH в винде, так как либы будут отуда грузиться.
Да пока срать на оптимизацию. Почему релизная программа не работает? В дебаге же все работает как надо.
К чему ты это сказал? В дебагге программа ВСЕГДА работает как положено и на все ходы. В релизе же она выдает ничью сразу же на первом ходе, что даже физически невозможно.
Ты торгуешься со мной?
https://www.google.ru/search?q=stackoverflow+why+my+program+works+in+debug
Моя программа не крашится. Она выдает ничью после 1 хода. Хотя такого быть не может. Вот код, отвечающий за проверку условия ничьи:
//Проверка условия ничьи
if (a[0][0]!=0 && a[0][1]!=0 && a[0][2]!=0 && a[1][0]!=0 && a[1][1]!=0 && a[1][2]!=0 && a[2][0]!=0 && a[2][1]!=0 && a[2][2]!=0 && x==0)
{ x=1; draw=1;}
в общем, теперь как то помучался, погуглил, теперь другая проблема.
файл .pro он не правильно воспринимает, и не добавляет .cpp
пока делаю на тыртернетах, так что можете не отвечать
Да уж нет, ёб ТВОЮ мать. Пиздуй в гугл, найди там то, что я сказал, и найди такую же кнопку у себя на том же месте.
гхы
во всяком случае, спасибо за активность)
Попробуй другой язык. Чтобы хорошо писать на С++ нужно помнить дохуища всего, не только библиотеки функций.
Вопрос в тему. Есть такой код (Дьюхерст, Священные знания с++):
class X {
public:
X operator %( const X & ) const; // бинарный оператор нахождения модуля
X memFunc1( const X & );
void memFunc2();
//...
};
X operator %( const X &, int ); // оператор-нечлен
//...
void X::memFunc2() {
this % 12; // вызывает оператор-нечлен
}
operator %( this, 12 ); // ошибка! слишком много аргументов
Дальше он пишет:
>Для вызова инфиксного оператора компилятор рассмотрит обе функции, и член и нечлен (см. также тему 25 «Поиск, зависимый от типов аргументов»). Таким образом, первый инфиксный вызов operator % будет соответствовать нечлену. Это не экземпляр перегрузки, просто компилятор
проводит поиск функций в двух разных местах. Далее неинфиксный вызов подчиняется стандартным правилам поиска функций и выявляет функцию член.
Вот этот нюанс "инфиксные операторы - так, обычные - этак" - его тоже только запоминать или можно как-то (при случае) объяснить, зная "механику" языка?
Скажу максимально честно, я программирую за деньги на С++ больше трех лет, сменил несколько работ, и такой хуйни, как перегрузка одного и того же оператора вне и внутри класса - не видел ниразу. И никогда, надеюсь, не увижу
Проверь инициализацию переменных. Может быть такое что ты где-то читаешь неинициализованую переменную. При этом в дебаг версии она всегда попадает в (к примеру) заполненую нулями память. А в релиз версии нет.
С меня что нить, нужно хотя бы мат аппарат под это дело заточить, а я уже третий день голову ломаю и нихера сообразить не могу.
Кубик, грани которого помечены цифрами от 1 до 6, бросают N раз. Найти вероятность того, что сумма выпавших чисел будет равна Q.
Ограничения: 1 <= N <= 500, 1 <= Q <= 3000.
Входные данные
В первой строке находятся числа N и Q через пробел.
Выходные данные
Вероятность того, что сумма выпавших чисел будет равна Q.
Примеры
Входные данные
1 1
Выходные данные
1.66666666666667E-0001
Входные данные
2 2
Выходные данные
2.77777777777778E-0002
Но игровое поле и есть нули. Когда рисуется поле - вся матрица забивается нулями. Так что каким хуем выполняется условие проверки ничьи, где все поля! =0 - я хуй знает.
КРЕСТАНЫ, ИГНОРИРУЙТЕ ИХ, НЕ ОТВЕЧАЙТЕ ИМ
ВЕДЬ ТАКОЕ ДЕРЬМО, КОТОРОЕ НЕ МОЖЕТ НИ В ГУГЛ, НИ В КНИГИ, НИ В ОДНОГРУППНИКОВ ЛЕЗЕТ В ПРОФЕССИЮ, ДЛЯ КОТОРОЙ ОНИ СЛИШКОМ ТУПЫ И ЛЕНИВЫ, А ВАМ ПОТОМ С НИМИ РАБОТАТЬ, ОСТАНОВИТЕСЬ
Друг, я отсобесил больше 20 джунов. Поверь мне - ребята с лабами не устроются никогда.
Из всего, где скорость разработки > производительности.
https://macton.smugmug.com/Other/2008-07-15-by-Eye-Fi/n-xmKDH/i-Zb7vTpP
P(N,Q) = Sum1<=i<=6p(i)P(N-1,Q-i), где p(i) = 1/6
В простонародье это хуйня известна как формула свёртки и задача о размене монет.
1<=i<=6
Вот этот обмудок:
https://www.youtube.com/watch?v=rX0ItVEVjHc
Подумать только, целая религия байтоблядства из-за одной сраной соснули от сосони.
>Простые насколько? Твой вопрос порождает больше вопросов, чем ответов.
Например перевод строкового hex-байта ("1F") в uint8. Можно их все замапить и читать из массива, либо же каждый раз делать несколько простых вычислений.
Зависит от частоты использования, от размера таблицы, от сложности вычислений. Вычисления могут быть сложными относительно размера входных даных. Ответ на твой вопрос:
>Правильно ли я понимаю, что кэшировать простые вычисления нет смысла, т.к. чтение из памяти может быть намного медленнее, чем пара циклов процессора?
Нет, ты понял неправильно.
Элементарная задача? Ну намекни анон плс, какая это элементарная задача ПОЖАЛУЙСТА
или хотя бы название этой элементарной задачи, с возможным решением, а дальше решив эту задачу, я смело пойду куда ты просишь. Пожалуйста
Есть протоколы, где нулевой байт означает конец данных. Если тебе надо передать строку с нулевыми байтами, запрос просто обрежется после первого нуля.
>>26764
Ну почему же, если я точно знаю, что вычисление займет 3 цикла, а чтение из памяти - как минимум 10, можно быть уверенным, что кэширование бесполезно.
Попробуй, для начала, в глазки не долбиться, тебе ответили уже.
>>26962
>Ну почему же, если я точно знаю, что вычисление займет 3 цикла, а чтение из памяти - как минимум 10, можно быть уверенным, что кэширование бесполезно
Я это и имел ввиду, написав сообщение, на которое ты отвечаешь. Если ты такой умный и всё знаешь, зачем спрашивал?
>Я это и имел ввиду, написав сообщение, на которое ты отвечаешь. Если ты такой умный и всё знаешь, зачем спрашивал?
Вообще я ожидал какого-нибудь интересного ответа, например, можно ли заставить прогу хранить эти данные в L1-кэше, чтение из которого - 2-3 цикла, что явно лучше любых вычислений, либо что этого нельзя гарантировать и я прав.
Ты бы для начала почитал как работает кэш процессора, да и вообще процессор, прежде чем писать такую хуиту.
Можно попробовать механическим путем разорвать контакт на пластинке полупроводника процессора, тем самым приведя его кэш 3 уровня в нерабочее состояние. При обращении к нему, процессор будет обнаруживать кэш-промахи, и, таким образом, будет использоваться только кэш первого уровня, что тебе и нужно. Можешь спасибо не говорить, и не показывай это производителям процессоров, они поставят тебя на посмешище, потому что им нужно впаривать кэш третьего уровня всяким лохам, чтобы грести с них бабло.
Я уже разобрался. Проблема была в том, что я в начале обьявил переменную draw, но значения ей не указал. Из-за этого и получалась ничья на каждом ходу
>Я так понел, что для гарантии расположения полей объекта в памяти точно так, как пользователь указал, надо, чтобы объект был POD.
Нэт. POD - это отсутствие конструктора/деструктора/оператора присвоения копии/оператора присвоения перемещением/конструктора перемещения (rule of zero).
То, о чём ты спрашиваешь, это: http://eel.is/c++draft/basic.types#def:layout-compatible
И в частности это: http://en.cppreference.com/w/cpp/concept/StandardLayoutType
>у нескольких объектов одного класса расположение полей в памяти может быть разным?
Штоблядь.
>POD - это отсутствие конструктора/деструктора/оператора присвоения копии/оператора присвоения перемещением/конструктора перемещения (rule of zero).
Это я напиздел.
http://en.cppreference.com/w/cpp/concept/PODType
> Как данные не перемешиваются
Для обычного программиста это не имеет значения. Если теб чисто для себя то читай компьютерные сети таненбаума.
Либо по кругу (циклическая дорожка), либо как односвязный список (сообщение, сообщение, сообщение и т.д.)
А не перемешиваются они просто из-за того, что хранятся с заголовками. Там же записано кто был отправителем, длина и т.д.
1920x1080, 2:08
Реально перекатиться в кресты после веба? Есть истории?
Сам выкатился с крестов на пыху после года работы, но иногда скучаю. Да и чувствую, что было ещё что изучить, но донная работа не давала возможности.
Тут скорее вопрос более общий. Насколько силён барьер между разными сферами/языками в программировании?
Я щитаю, что барьер силён ровно настолько, насколько ты туп. Всякие объебосенные особенности языков ты можешь познавать долго, но вернуться в плюсы с пыхи, однажды уже писав на них, ты вполне сможешь.
[code]
String &String::operator =( const char str ) {
if( !str ) str = "";
char tmp = strcpy( new char[ strlen(str)+1 ], str );
delete [] s_;
s_ = tmp;
return *this;
}
[/code]
Вот это выделенное болдом присваивание указателю на const char - это тип особо оговоренная запись такой последовательности "Сделать пустую строку и сделать str указателем на неё"?
Да. Насколько я знаю, память под строку ещё на этапе сборки выделяется.
Какую из 3 книжек брать новичку? От автора c++?
C++ Primer
Нет, это просаживает производительность. С другой стороны, если ты точно знаешь, что 0 прилетать не должен, можно заменить на референсы.
Не просаживает, предсказатель переходов будет почти всегда правильно выбирать верную ветку.
Я обычно всегда ассерты ставлю и пишу тесты, брат жив
Ага, разогнался.
Без предиктора производительность снизится в РАЗЫ, если не в десятки раз.
Передавай по ссылке, хули ты как дурак
Есть функция сериализации двусвязного списка:
struct ListNode
{
ListNode prev;
ListNode next;
ListNode rand; // указатель на произвольный элемент данного списка
std::string data;
};
class List {
public:
void Serialize(std::ostream& stream) {
assert(stream.good());
stream << count << std::endl;
if (IsEmpty()) {
return;
}
int offset = 0;
for (auto node = head; node != nullptr; node = node->next) {
reinterpret_cast<int>(&(node->prev)) = offset;
++offset;
stream << node->data << std::endl;
}
for (auto node = head; node != nullptr; node = node->next) {
offset = reinterpret_cast<int>(&(node->rand->prev));
stream << offset << std::endl;
}
ListNode prev = nullptr;
for (auto node = head; node != nullptr; node = node->next) {
node->prev = prev;
prev = node;
}
assert(stream);
}
ListNode head;
ListNode tail;
int count;
}
Как я понял сериализация это запись структуры обьекта скажем в фаил. Почему просто не записать всю структуру? Слишком большие затраты по ресурсам или есть что то еще?
Есть функция сериализации двусвязного списка:
struct ListNode
{
ListNode prev;
ListNode next;
ListNode rand; // указатель на произвольный элемент данного списка
std::string data;
};
class List {
public:
void Serialize(std::ostream& stream) {
assert(stream.good());
stream << count << std::endl;
if (IsEmpty()) {
return;
}
int offset = 0;
for (auto node = head; node != nullptr; node = node->next) {
reinterpret_cast<int>(&(node->prev)) = offset;
++offset;
stream << node->data << std::endl;
}
for (auto node = head; node != nullptr; node = node->next) {
offset = reinterpret_cast<int>(&(node->rand->prev));
stream << offset << std::endl;
}
ListNode prev = nullptr;
for (auto node = head; node != nullptr; node = node->next) {
node->prev = prev;
prev = node;
}
assert(stream);
}
ListNode head;
ListNode tail;
int count;
}
Как я понял сериализация это запись структуры обьекта скажем в фаил. Почему просто не записать всю структуру? Слишком большие затраты по ресурсам или есть что то еще?
stream <<reinterpret_cast<int>(&(node->prev))
stream <<reinterpret_cast<int>(&(node->next))
stream <<reinterpret_cast<int>(&(node->rand))
stream <<node->data
Если у тебя value имеет ту же ширину, что и size_t, или меньше - ясен хер, не надо.
>>27969
Референсы - дерьмо собачье, они же висячие бывают. >>27961
Нужно соблюдать стиль остального кода. Если у тебя никакие либы на ноль не проверяют, то лучше и в твоей тоже не проверять. Не говорю уже о том, что в своей либе лучше умные указатели использовать.
>>27980
Пиздишь. Его отключили разве что в коде ядра и только там, где лучшего решения нет, а для x86 Гугл придумал retpoline.
>>28013
>Почему просто не записать всю структуру?
Если у тебя POD без указателей и ссылок - хоть конём ебись. Но это плюсы, и в классах не толко интегральные типы. Даже в Сях у тебя указатели есть, как ты их будешь восстанавливать их из файла, ёбушка?
Это и был мой изначальный вопрос: почему нет?
Прошу обьяснить более развернуто, нежели "Это хуита".
Чтобы это понять, тебе нужно знать две вещи - виртуальная память и ASLR.
И я не вижу тут кода десериализации.
Ты же понимаешь, что адрес node->next имеет смысл, пока весь список не был уничтожен?
Кто его обоссал-то? Я понял, что интеловцы ещё какую-то херь в линукс пушат, которую Линус обоссал, но статей о том, зачем это и почему, я ещё не видел.
От Meltdown он не защищает, ясен хуй, но если ты BTB для всего кода отключишь, включая юзерспесс - тогда совсем жопа будет, поэтому из двух жоп выбрали меньшую - полная защита привилегированного адресного пространства - от BTB не зависит.
>>28129
>Чтобы это понять, тебе нужно знать две вещи - виртуальная память и ASLR.
Ты знаешь, если человек не понимает, что восстановить объекты по тем же адресам он может мягко говоря не всегда, его это не спасёт.
100 баксов в час, деньги вперед
Блять ну нахуя вы вкатываетесь в ит? Нет тут денег, валите нахуй
Вот же препод ебанутый у тебя.
Нужно таблицу с приоритетами команд искать где-то. Наверняка в его методичке или материале есть что-то. В открытом доступе тоже есть, но может у него проще это расписано.
Ну да, примерно так конпелятор на ту конструкцию и ответит.
Просто иди нахуй. Если препод тебя не вывез на требуемый уровень, подай на шаражку в суд.
>>28368
Могу только сказать тебе, что препод твой гондон, и там в последней строчке ошибка, поэтому такая программа просто не соберётся.
>>28398
Понятнее не стало. Если ты хотел объяснить, надо было использовать дополнительные временные значения.
Пили дальше, ну.
Есть одна программа. В ней есть несколько тредов. Один тред должен заниматься сохранением и переносом данных. Я дошёл до момента когда необходимо перенести сохранённые файлы. Всё работает нормально, но при удалении скопированного файла всё намертво стопорится - окно программы не реагирует на клики, все потоки виснут, кнопки отладки в MVS становятся неактивными. При этом, это происходит только на удалении 6-10 файла. Если не удалять файлы, то всё работает нормально.
Сначала я думал что это qfile.remove отрабатывает криво и попробовал и стандартный .remove и winapi DeleteFile, всё приводило к тому же результату.
Как мне поймать ошибку?
1) Написанная криворукими дебилами кюпараша потоконебезопасна.
2) В написанном криворуком говнокодером высере исходный файл дергается где-то в других потоках.
3) и то и другое.
Это не разыменование нулевого указателя, выход за границы массива или ещё какая либо ошибка неправильной работы с памятью которую ОС и рантайм за тебя ловить будет. Это логическая ошибка, с точки зрения компуктера вполне адекватный код.
Попробуй выполнение QFile::remove оградить мютексом.
>Попробуй выполнение QFile::remove оградить мютексом.
В этом плане у меня всё ок. Только этот поток работает с данными файлами
>Ебать дебил.
Спасибо за помощь, понял в чём проблема. Пойду выпилю винишко-соседку и выпилюсь
Ещё уточнение. Баг возникает при переносе на сетевой ресурс. При переносе внтури пекарни всё работает как и задумано
>сам в программирование не могу
А нахера ты в него полез, раз ничего не понимаешь ?
Лаба реально простая, если ты открывал книгу
> Надо написать программу на лабу, сам в программирование не могу, ни слова не понимаю
Естественный отбор, мать его! В течение семестра пинал хуи? Идёшь нахуй. Препод ничему не научил? Подаёшь в суд на препода.
>Типичные мультипоточные фокусы.
Остановил все потоки кроме этого и основного в котором ничего не происходит кроме вызова этого потока.
Никаких изменений в нерабочести программы
Никакой многопоточности.
Чистый проект.
Всё-равно переносятся только 6 файлов
Сходку Нострадамусов себе нашёл?
Держи, анон.
https://gist.github.com/anonymous/ca6cd008ad23d07d5161bc83178b9cc5
Не тестировал, просто набрал в блокноте. Добавишь заголовочные файлы в начале какие нужно, ну и проверишь.
Использовал выше, винапи просто для разнообразия. Разницы нет.
Да я не лез, я вообще на самолетомтроении учусь, хочу сидеть модельки в солиде рисовать, а меня донимают программированием...
Ладно, не обращайте внимания
Перепроверил с
if (QFile::copy(infile->absoluteFilePath(), "Z:/aa/" + infile->fileName())) {
QFile::remove(infile->absoluteFilePath());
}
Всё ещё 6 файлов! Даже спустя несколько часов и переписываний код не заработал
Удалено всё ненужное.
Только код переноса файлов.
Перенос на свежую виртуалку с рабочей шарой
Переносятся только 6 первых файлов.
Если закомментировать строчку отвечающую за удаление файлов
>QFile::remove(files2.front().absoluteFilePath());
то копируются все файлы.
Почему?
Может у тебя с самбовой шарой какие-то проблемы? Попробуй циклом в консольке скопировать.
Попробуй вместо своего удаления:
if (скопировался) {
QFileInfo file = files2.takeFirst();
file.remove();
} else {
files2.pop_front();
}
Хуй знает что там у тебя, но, блять, с кутей используй форвард слеши в путях.
Ты поди в треде, отсветстенном за гуй все копируешь? В обработчике нажатия кнопки?
Не прокатило, пик1.
В связи с этим сделал пик2.
Получил опять всего 6 перемещённых файлов из множества.
>>28910
Ага. И вообще в конструкторе. Но это нормально и не важно, потому что выше я делал то же самое в отдельном потоке. Просто стараюсь максимально упростить задачу.
>>28888
Винда копирует нормально. Сейчас попробую переписать через
std::system("move c:\\1.txt \\\\test\\asd\\1.txt");
Ну выведи ты в лог все перед каждой операцией, и увидишь, на чем висит. Может там имя какое-то кривое или еще что.
Почему это везде пишут в подобной форме? В этом есть какой-то смысл? Почему первая скобка квадратная а вторая круглая?
Зависит от того, с какой целью ты купил эту книгу.
Если повыёбываться перед коллегами, то норм. А там может и пригодится.
Если ты так вкатываться решил, то эта книга не поможет.
А в книге про это есть? Можешь написать пример кода, выводящей на экран квадрат, например?
Исключительно используя API операционной системы. В случае шиндошс - кури CreateWindow и виндовый Event Loop для управления.
Для графона - GDI (медленно, уебищно) либо Direct2D (красиво, на видеокарте, сложнее чем GDI)
Смотря какие цели он преследует - если просто понять механику и разные приемы в рисовании графики - то вполне ок. Если же хочет разобраться в потрохах графичеких подсистем разных ОС, нахуй никому не нужных в 2к18, то конечно кутэ тут не поможет.
Двачую.
Норм.
Лично я пользовался и sfml, и sdl. Основная критерий в том, насколько сильно ты хочешь ооп.
А что легче в освоении тому, кто только С начал изучать?
Ай, наебался со второй к, да и хуй с ним
Мы дождёмся MCVE от тебя, блядь?
Ты хочешь сказать, что проблемы только с сетевым хранилищем? Ты хочешь сказать, что если ты убираешь копирование в \\хуйпизда, то баг пропадает?
Заставь маленький кусок своего кода работать и на пастбин пихни.
Но если ты допедришь до того, чтобы сделать MCVE, ты и багрепорт в жиру Куты можешь пихнуть.
>>29105
Если атомную бомбу тебе подарили и она размножается почкованием, то почему бы и нет?>>29082
>В голом С++ можно
НЕТ.
>Но если ты допедришь до того, чтобы сделать MCVE, ты и багрепорт в жиру Куты можешь пихнуть.
Да не бургути ты так. Я обосрался у меня что-то с системой, даже FAR не переносит нормально.
Что в оригинале, что в переводе, довольно много опечаток и ошибок, так что если ты ньюфаг и вообще не знаком с крестами, то будет довольно сложно, но сама по себе книга неплохая.
>В голом С++
Это такой реквест на Rule34?
>сделать графику? А управление курсором или хотя-бы клавиптурой?
Для этих потребностей используется библиотека SDL
А если байты хочу пердолить?
ты еще в блокноте код попиши.
Вы видите копию треда, сохраненную 14 марта 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.