Вместо шапки — https://github.com/sosachbot/cppthreadhat/wikiОтветы на все вопросы:- http://en.cppreference.com/w/- http://www.cplusplus.com/reference/Прошлый: >>1119750 (OP)
Использую CodeLite. Написал программу (эхо сервер вебсокетов), и когда я ее открываю в самом CodeLite, она запускается, а когда я открываю исполняемый файл сам, то вылезает ошибка libgcc_s_seh-1.dll не найден и т.д. Вопрос: в чем блять разница между тем что я просто жму RUN в CodeLite, и открываю exe файл своими кривыми ручками? Между тем, скачал я эту dll, закинул ее, и выходит ошибка при запуске приложения (0xc0000007b).
>>1129289Под Windows нет IDE, кроме MSVC. Между RUN и запуском руками разница в working directory, в которых ищется дллка. а ошибка - хуй знает вообще почему, может АБИ не то, может либа не той версии.
>>1129289> c++> windows> codelite> mingwРаз уж решился писать на крестах под виндой, так скачивай visual studio, для винды лучше нее пока что ничего не придумали
>>1129289Гугли отличия между статической и динамической линковкой. А чтобы все работало, то просто скопируй дллки, которые просит программа, из /MinGW/bin/.
>>1129290Да вроде бы они в одном месте ищутся. Я еще использую sfml-system-2.dll (вроде так), и когда ее нет, он ругается при RUN и при запуске руками.>>1129299Первое, что я попробовал. Только там нету libgcc_s_seh-1.dll , зато есть libgcc_s_seh_64-1.dll. Я пробовал его переименовывать и засовывать в директорию с exe файлом, и как итог - та же самая ошибка.>>1129294А могу ли я не используя их среду использовать их компилятор? Она у меня медленно работает.
>>1129315>Первое, что я попробовал. Только там нету libgcc_s_seh-1.dll , зато есть libgcc_s_seh_64-1.dll. Я пробовал его переименовывать и засовывать в директорию с exe файлом, и как итог - та же самая ошибка.Непереименнованный файл тоже пробовал? Хз в чем проблема, но тогда компилируй с параметром "-static", может поможет.>А могу ли я не используя их среду использовать их компилятор? Она у меня медленно работает.Да, из командной строки. Правда студия все равно должна быть установлена.
>>1129324>Правда студия все равно должна быть установлена.Не, там компилятор можно отдельно установить, точно помню.
>>1129255 (OP)Дебил, нумерацию проебал
>>1129331В который раз
>>1129289 >>1129290 >>1129315Хотите - можете почитать МСДН, но разница в том, где ищутся дллки для процесса, запущенного из под другого процесса.>>1129289В папке компилятора есть папка bin, добавь её в PATH (фгугл).>>1129315Если программа просит какую-то либу, то она, блядь, где-то таки есть. Найди её поиском по ЖД.>>1129330Из последних SDK его исключили, компилятор из WDK убрали. Качаёшь инсталятор коммьюнити-студии - выбираешь декстоп ц++ - получаешь визуал студио коре едитор с неотключаемой галочкой.>>1129331Чиркнул моду.
>>1129349>В папке компилятора есть папка bin, добавь её в PATH (фгугл).Уже добавлена>Если программа просит какую-то либу, то она, блядь, где-то таки есть. Найди её поиском по ЖД.Искал, нашел только libgcc_s_seh_64-1.dllТакой пиздец
>>1129289Проверь еще нет ли разделения на дебаг и релиз версии. Откомпилируй и запускай именно релиз версию. Дебаг может быть расчитана на запуск с помощью иде через какие-то местные мокрописьки, а не обычное исполнение. Посмотри еще в консоли иде какой командой запускается файл на исполнение - там обычно(часто) пишутся команды запуска. Есть ли такое в CodeLite не знаю.
>>1129356Есть такая хуйня:C:/TDM-GCC-64/bin/g++.exe -o ./Release/sockets @"sockets.txt" -L. -LC:\SFML-2.4.2\lib -lsfml-system -lws2_32в sockets.txt object файлы прост прописаны. Тут просто линковка вродь, хотя я хз. У меня даже надежда появилась когда ты про Release сказал (есть такое разделение да), но в итоге все та же хуйня происходит.Блять, может все таки сесть на стул с майкрософтом и не ебаться, но мне уже тупо интересно что за хуйня.
>>1129331Не баг, а фича.
>>1129361Ну да это компиляция. Посмотри может в консоли когда программа запускается - может там команда запуска есть. Поищи в настройках где флаги компиляции можно добавлять и попробуй добавить -static-libgcc -static-libstdc++ это статическая линковка рантайм библиотеки. Еще может почитай про динамическую линковку в операционной системе виндоуз. Потому что в линуксе для динамической линковки не достаточно просто закинуть библиотеку в нужные папки. Еще должен обновиться кеш динамического линкера (ldconfig) - может в виндовс тоже что-то подобное есть.
>>1129349>Из последних SDK его исключили, компилятор из WDK убрали. Качаёшь инсталятор коммьюнити-студии - выбираешь декстоп ц++ - получаешь визуал студио коре едитор с неотключаемой галочкой.Три наносекунды в гугле: https://blogs.msdn.microsoft.com/vcblog/2016/11/16/introducing-the-visual-studio-build-tools/
Нахуй студию с ее троянами и телеметрией
Накатил вроде Visual C++ в CodeLite. Но когда даже тупой хелло ворлд пытаюсь откомпилить вылезает дохуя вот этого: https://ideone.com/gSFSyD В чем проблема может быть? Я наверное должен был понять, но я пока еще не совсем шарящий.
>>1129354Тогда лобовое решение: качаешь process explorer и смотришь список путей к DLL-кам у своей программы, запущенной из коделите, раз ты такой пиздоглазый.>>1129411Я про это не знал, но там линк мёртвый, и в каталогах этих билд тулз нет.https://www.visualstudio.com/downloads/?q=build+tools#build-tools-for-visual-studio-2017-rc>>1129454Тебе нужно либы подключить (наследие 80х годов).Берёшь одну функцию, ищешь ей так:https://www.google.ru/search?q=WideCharToMultiByte+winapi+msdnНа MSDN есть название либы:https://msdn.microsoft.com/en-us/library/windows/desktop/dd374130(v=vs.85).aspx (в самом низу описания каждой функции)А дальше пихаешь эту либу куда-то в аргументы линкера (без расширения .lib ).http://codelite.org/LiteEditor/BuildSystem#toc5Потом собираешь снова и ещёшь ошибки снова. Каким образом это упрощается в обычной студии - хуй знает, она, скорее всего, генерит список зависимостей из заголовочных файлов.
Народ, вот такой вот нубовопрос:Есть строка, выполняется проверка: присваевается ли её содержимое через StrToFloat переменной типа float. Является ли это действие проверкой на то, что содержимое строки - вещественное число?
>>1129488Смотря что этот StrToFloat делает. Он может, к примеру, зажрать первые символы, которые могут составлять float и на этом закончить
>>1129488В общем смысле - нет.
я ебу собак
>>1129552>>1129550Спасибо за ответ.Тогда я правильно понял, что наиболее верной будет сперва проверка строки на содержание только цифр + не более одной точки (при этом не первым/последним символом) + возможным минусом первым символом?Краем уха слышал про регулярные выражения, но вот беда, поскольку я совсем-совсем начинающий и в синтаксисе языка ещё не разбираюсь, а в интернетах примеры в основном для всякой джавы и пхп, то не мог бы кто подсказать учебник или статью, где пишут про регулярные выражения для с++ (операторы, их атрибуты, какие нужны библиотеки)? Ну или тут рассказать. Думал с помощью них попробовать вытаскивать из строки заданные выше символы и сравнивать потом с оригинальной строкой.
>>1129585> Тогда я правильно понял, что наиболее верной будет сперва проверка строки на содержание только цифр + не более одной точки (при этом не первым/последним символом) + возможным минусом первым символом?Возможно, он пропускает начальные пробельные символы (табы, перенос строки и прочее), и затем считывает float в одном или нескольких форматах (научный, который представляет собой запись с показателем десятичной степени, например 10e5, или какой-нибудь еще). А вот когда он натыкается на неожиданный символ - тут уже без знания доков или механизмов по одному названию ничего не скажешь. Ну разве что может быть семантика у метода с указанием флага успешного выполнения, к примеру.> Краем уха слышал про регулярные выражения, но вот беда, поскольку я совсем-совсем начинающий и в синтаксисе языка ещё не разбираюсь, а в интернетах примеры в основном для всякой джавы и пхп, то не мог бы кто подсказать учебник или статью, где пишут про регулярные выражения для с++ (операторы, их атрибуты, какие нужны библиотеки)? Ну или тут рассказать. Думал с помощью них попробовать вытаскивать из строки заданные выше символы и сравнивать потом с оригинальной строкой.Регулярные выражения слишком жирные, чтобы заниматься парсингом чисел. Думаю, что методов, которые представляет те же стандартные потоки, тебе будет вполне достаточно.А если ради интереса, то синтаксис там вполне простой, для этого книг читать не надо, достаточно мануалов.
>>1129624>семантика у метода с указанием флага>заниматься парсингом>стандартные потокиДля меня это пока нецензурные выражения, но всё равно спасибо. Буду смотреть что это.
>>1129636Дерьмо, книгу хоть одну по С++ почитай сперва. Нахуй тебе аноны шапку делали?
>>1129641Чего такой агрессивный? Читаю, но медленнее чем хотелось, особенно учитывая, что задачки нужно сдать гораздо раньше, чем успею это все нормально почитать.
>>1129645Падажжи, когда отменили золотое правило С++ треда?ЛАБЫ ИДУТ НА ХУЙЯ бы тебе все подробно объяснил, но это бессмысленно.
>>1129646А я и не просил мне ничего решить. Не хочешь - не объясняй, твоё дело.
>>1129636> парсингВ твоем случае парсинг - выделение чисел из строки> стандартные потокиИмеется в виду cin/cout/fstream
Анчоусы, поясните дебилу, как dpointers в qt позволяют сохранять бинарную совместимость?
>>1129843The trick is to keep the size of all public classes of a library constant by only storing a single pointer. This pointer points to a private/internal data structure that contains all the data.http://wiki.qt.io/D-Pointer
>>1129454Ты зачем один ide запихнул в другой?
>>1129488Для того, чтобы это проверить, тебе нужно использовать потоки - создаёшь stringstream из строки, считываешь оттуда число, узнаешь число сожранных символов. Если число сожранных символов не равно длине строки, то в строке не только число.
Анон, а подскажи, - как при помощи QT логиниться на ресурсе в локальной сети? Нормальных примеров в сети не нашёл, мануал читалПока понял что мне нужен QAuthenticator в который я кладу логин и пароль Затем мне нужен QNetworkAccessManager, а так же слот, который бы обрабатывал запрос ресурса.Со слотом всё в целом понятноvoid onAuthenticationRequestSlot(QNetworkReply aReply, QAuthenticator aAuthenticator) { aAuthenticator = &myLoginPass;}Но непонятно как при помощи QNetworkAccessManager сделать запрос на аутентификацию. Пытался myNM->get(QNetworkRequest(QUrl("\\\\Test\\")));Никакой реакции. Как это правильно сделать?
https://metanit.com/sharp/tutorial/3.29.phpЕсть ли подобный гайд, но по плюсам?
>>1129982ОНИ СЪЕДЯТ ОДИН В ДРУГОЙ
Ананасы, посоветуйте простой веб-сервер для плюсов, в котором было бы сложнее выстрелить себе в ногу нубу, и который поддерживал бы https.
>>1130130Средствами винапи, маня.
>>1130202И где я их возьму, если даже на офф сайте 2 с половиной команды и те на собачьем?
>>1130130Костыль: http://www.prog.org.ru/topic_10080_0.html
>>1130177https://github.com/fffaraz/awesome-cpp#networkingСам не пробовал.
>>1130277ThnksТоже это нагуглил, видимо так и придётся, если других вариантов не будет.
Сап. В Qt Creator 4.4.1, версия под вин почему-то при пошаговом выполнении по F10/F11 стал переключаться на листинг дизассемблера и идет по нему. Галочка/её отсутствие в меню Отладка-Уровень инструкций ничего не меняют. Что делать?
>>1130349Пробую использовать cURL для smb-целей. Норм?
>>1130356Может ты слишком глубоко во вложенность функций лезешь? Например внутрь библиотек кути, которые распространяются как бинарники.
>>1130356>Что делать? Качать дебаг-симболы.
>>1130434Там листинг даже для простой программы без модулей в виде дизассемблерного листинга показывается.
>>1130135А если серьезно? Нахуя ему сразу жва иде?
>>1130356Имеется ввиду то, что текст программы вообще не показывается? А это дебуг билд хоть?>>1130551Ему компилятор нужен был. Про Build Tools не все знют, раньше компилятор с обновлениями проще всего было получить из студии.
>>1130661>А это дебуг билд хоть?Спасибо, переключение в дебуг билд помогло. Привык, что на линупсе сразу в таком режиме шло.
Что в STL C++ означает, когда у меня есть некий мой пользовательский класс A, который конструируется из 2х чисел, предположими я создаюА<int> a(1,2); что это вообще за контейнер или объект?? встретил в коде и не могу понять
>>1130767Что за хуйню я только что прочитал. Не мешай STL с шаблонами как частью языка.
>>1130767(1,2) - это параметры конструктора (и если их много, выбирается подходящий). Что там у тебя конструируется - контейнер, мутекс, или ещё какая залупа - никому, кроме тебя, неизвестно.
>>1130767Олсо, если ты не в курсе, A - это шаблон класса.
Двач, наверное это тупой запрос, но тем не менее, подскажите алгоритм на то что если больше одной переменной стоят в true, то завершать программу.
>>1131084Отвечаю на свой тупой вопрос:Достаточно просто сложить все bool переменные и получится число сколько bool переменных стоят в true.
Запилил вот такой синглтон для логирования, собственно, прошу посмотреть, попинать ногами и ткнуть носом вдерьмо, там где я неправ. (Про то что синглтоны вообще считаются злом я знаю).Ещё хотелось бы задать вот какие вопросы:1) Правильно я понимаю, что правильнее будет заменить (const std::string& message) -> (std::string_view message)?2) Почему, когда я закомментировал в статическом методе Get() последнюю строку(т.е. return *pThis) у меня всё нормальноскомпилировалось и работало. У меня было два указателя, которые указывали на разные адреса, но откуда они это взяли, еслифункция ничего не возвращала?3) Правильно ли я понимаю, что здесь избыточно явное запрещение функций с мув-семантикой?4) Насколько вообще рационально создать обертку для более удобной работы с файлами из функций filesystem(ака QFile)?5) Что делать с деструктором? Ну, то есть, код деструктура вообще же не будет вызваться, а по-хорошему ведь нужно жефайл закрывать. А что делать, если в деструктуре надо удалять динамическую память, это же утечки, как решают тогдатакую проблему?https://pastebin.com/yUTL2hrW
>>1131109Код - кошмар. Перенеси все внутрь класса и используй синглтон МаерсаLogger& getLogger(){static Logger logger;return logger;}Сырые пойнтеры тоже не используй. Тогда будет все разрушаться как надо. Но не здесь, здесь пойнтеры вообще не нужны.
Двач, а filesystem собирается из expiremental вытаскивать или нет?
>>1131117уже вытащили в с++17http://en.cppreference.com/w/cpp/filesystem
>>1131120Не вытащили.
>>1131125Что значит не вытащили? >The filesystem library was originally developed as boost.filesystem, was published as the technical specification ISO/IEC TS 18822:2015, and finally merged to ISO C++ as of C++17.
>>1131145Совсем наркоман?
>>1131159"Вытащили из experimental" != "сразу стало поддерживаться всеми компиляторами"Ну и вот: https://www.reddit.com/r/cpp/comments/7o9kg6/gcc_80_support_stdfilesystem_include_filesystem/>GCC 8.0 support std::filesystem (#include <filesystem>) nowОбновляйся
Есть ли разница в производительности между gcc, vc, Intel компиляторами?
>>1131233В каком плане производительности? То, как быстро они собирают твой код, или производительность генерируемого кода? Если второе, то гцц пока лучшее, что придумал мир в общем случае. Интел в конкретных ситуациях может использовать оптимизации, т.к. знает устройство своих процов лучше других. vc - говно.
>>1131247>то гцц пока лучшее, что придумал мир в общем случае.>vc - говно.Можешь объяснить почему? Работаю в VS2017, на другие IDE кроме вижака без злости вообще смотреть не могу, но если разница между компиляторами значительная, то пересилю себя.
>>1129255 (OP)Господа, есть пара вопросов.Как можно в 2к18 получить адекватные графы всех сортов из исходников?
>>1131295И ещё один.Давно юзаю cmake для сборки, но это же полный аутизм. Есть сейчас смысл укатываться на всякие там мезоны и ниндзи?
>>1131254IDE - это не компилятор. К студии уже можно подключть и кланг и ICC (сто лет как).
>>1131486Да, только для этого всё равно нужно заморачиваться как это сделать, настроить, что делать если какая то хуйня в тексте ошибок компиляции и т.д. И я вот спрашиваю, стоит ли оно того. В чем охуенное преимущество g++ над vc++? Можно со всякими низкоуровневыми подробностями
>>1131493Очевидно тем что vs собирает программы для никому не нужной параши.
Нормально ли то, что у меня компилируется char a[body_length + 2];
>>1131608Просто насколько я помню, динамические массивы объявляются через new, а тут у меня байт body_length вообще из recv приходит.
>>1131609VLA
>>1131610Принял
>>1131610А их разве завезли?
>>1131617в gcc и clang давно уже. Других компиляторов на свете нет.
>>1131597Каким образом он собирает программы под Linux? Я нигде такого параметра не нашел
Почему в С нет честного рандома? Он каждый раз выдает одни и те же последовательности?
>>1131656>Он каждый раз выдает одни и те же последовательности? Его в таком виде используют в алгоритмах шифрования.
>>1131656Честный рандом это слишком сложная штука для стандартной библиотеки.
>>1131629Пояснение для дебилов: Очевидно что он собирает программы для никому не нужной windows параши.
>>1131694Почему линуксодрочеры такие тупые?
>>1131694> никому не нужной windows параши> виндой пользуются 82.68%> никому не нужнойПроиграл с 1.43% дебила
>>1131694Дурачок-максималист не зарабатывает деньги программированием.
>>1131715Вообще-то 36.56%http://gs.statcounter.com/os-market-share
плюсаныпоясните, почему binary_search возвращает bool, а не итератор на нужный ( или end() ) элементкакая-то неявная (как по мне) хуйня
>>1131724> Linux 0.66%В глаза долбишься?
>>1131724http://gs.statcounter.com/os-market-share/desktop/worldwide
>>1131730Есть lower_bound
>>1131715Пояснение для совсем умственно отсталых: Очевидно же никому не нужная windows параша никому не нужна среди нормальных людей и уж тем-более для программистов, школьники гоняющие крузис в перерывах написания хелло ворлдов не в счёт.
А поясните за умные указатели - нахуя они нужны и примеры использования, если есть new/delete ?
>>1131756Помимо удобства, в С++ что угодно может выбросить исключение, и до delete дела не дойдет.
Какого хуя хром ликает память? После ~недели браузинга, даже если закрыть все вкладки, кроме одной, он занимает 2 гига в памяти. Как понять, где лик?
>>1131597Ну это всё понятно, арряя, кроссплатформенность, лепукс рулез венда маздай)0.А вот так чисто в сухом остатке на уровне сырых байтов в чем преимущества gcc++ над vc++?
>>1131756RAII базовое понятие C++, почитай. В принципе shared ptr в большинстве случаев нахуй не нужон, а юник это лучше нововведение эвер, 20 лет ждал.
>>1131747Конечно, дурачок. Ты же один в мире, и твое мнение единственно верное. Но ты не переживай - через некоторое время пройдет
>>1131771У гцц стандарты лучше и быстрее поддерживаются. Другое дело что мсвс сильно удобнее. Под никсы нормальной иде нет просто
>>1131789На работе пишу под линукс и использую VSCode. Оказалось лучше, чем я думаю - легко настраивается сборка и отладка, более-менее сносно работает навигация по коду и автокомплит. Сам редактор как в студии практически.
>>1131794Между более менее сносно и идеально + статический анализ + авторефакторинг все таки большая разница
>>1131789>У гцц стандартыв каком плане? понимаю, никому не захочется по пунктам расписывать, в чем vc++ с заглотом всасывает у гцц, но хотя бы один убойный пример можно?
>>1131815Вывод тимплитов в конструкторах. Студия все еще не умеет. Вроде структуред биндингс еще не умеет
>>1131815Помню, когда в MSVC13 перемещающие операции компилятор не генерировал... во жара была.Я то думал, хули = default не работает.
>>1131669Да ладно? Помню в средней школе изучали бейсик, так там вроде был рандом. А бейсик - это самый днищеязык.
>>1131910Он не был честным. Для честного рандома нужен источник энтропии - или аппаратный, или его имитация на основе нажатых клавиш/трафика/содержимого экрана/звука с микрофона и т.д. Все это слишком сложно, чтобы запихивать в стандартную библиотеку.
>>1131911Почестнее чем в С. В бейсике он хотя бы выдавал разные значения при каждом запуске программы.
>>1131917Если бы ты почитал документанцию, то и тебя и сишный рандом разные бы выдавал.
>>1131919Ага, если подключить ctime и использовать srand от времени. Но это такие костыли, что пиздец
>>1131921Кто-то не знает как генератор случайных чисел работает.
>>1131923И как же он работает?
>>1131295>>1131297Бамп вопросу.
>>1131297Cmake, хоть и инопланетное говно - де-факто стандарт индустрии нынче.
>>1132046cmake работает, спору нет, но у мезона уже неплохой список проектов появился. Интересны идеи про потенциал, хотелось бы перекатиться чуть раньше чем вся индустрия на что-нибудь более удобное.
Посоны, а чо ставить то, аа-а? Визуал студио если целиком то там пиздец дохуя всего, какой минимальный набор чтобы ковыряться в языке создавая консольную хуйню.Коротко вопрос, такой. Где качать компилятор и нубовской набор библиотек. IDE среды идут без компилятора, насколько я понимаю.Пока установил голый VS Community 2017 без нихуя.
>>1132284Студия или кьют. Если совсем начальный уровень можешь попробывать ideone обойтись.
>>1132284Студии тебе за глаза навсегда - это топ1 профессиональный инструмент разработки под С++.Нубовской набор библиотек у тебя на первый год есть - собстно, стандартная библиотека С++.
>>1132284Clion лучшее IDE.
>>1132410Нет бесплатной версии? Значит не лучший
>>113241085 гигабайт должно хватить.
>>1132432>Нет бесплатной версии?Есть.https://rutracker.org/forum/viewtopic.php?t=4976066
>>1132432>бесплатноЕсть комуннити версия.>значит не нуженЗа хорошие продукты таки стоит заплатить
>>1132446Причём тут студия?
>>1132543Где взять ссылку на комьюнити версию? На сайте только триал и всякие предложения для студентов и опен-сорса.
>>1131619Портэбл стэндэрт конформинг коуд? Вотс зэт?>>1131617Расширение стандарта, нинужно.>>1131921Вы к нам их РНР-треда причапали?>>1131815В блогах MSDN сам найди нововведения и их даты.http://en.cppreference.com/w/cpp/compiler_support
>>1132544Без понятия, причем тут студия, у нас же беседы джава господ.пнг
>>1132585Community версия есть у божественной Вижуал Студии. У Слиона ее никогда не было. Либо плати, либо пирать, либо сиди на EAP'ах
>>1132729Кстати, в 17 студии завезли какой-никакой рефакторинг, но работает это все, как обычно, хуево.
>>1132913решарпер С++ поставь, и ты приятно удивишься
>>1132974Как гуглится?
>>1132997Resharper C++ ?
>>1132997Resharper от jetbrains
>>1132728Как же хорошо на Clion. Не чувствую себя чуханом, как на VS.
Тупой вопрос, но почему в числах с плавающей запятой запятая плавает? Куда блядь она плавает?
>>1133116у тебя с головой проблемы, если ты себя чувствуешь чуханом
>>1133124https://ru.wikipedia.org/wiki/Число_с_плавающей_запятой
>>1132974его ценойТы забыл добавить. Решарпер для крестов продается только в Ultimate-версии, которая стоит пиздец как дорого, если уж о ценах речь зашла
>>1133273Решарпер для крестов продается отдельно, лол. 200 баксов для конторы, 100 для себя.
>>1132974>решарпер Visual Assist - наше всё.
>>1133367Ох ты, не знал. Круто, но для дома я предпочту использование пиратского сервера ключей
>>1133129Только на VS
https://ideone.com/G38I0cПодобная реализация возведения в степень - говнокод?
>>1133946да
>>1133954воднустрочкужыыыы
>>1133946За такое надо пиздить ногами.
>>1133961Почему? Надо на if заменить вопросы?
>>1133961>>1133954https://ideone.com/3nC4fCТак лучше?
>>1133970https://ideone.com/9VwwEeЛучше читается, как думаешь?
>>1133977Отрицательные степени?
>>11339701. Алгоритм быстрого возведения в степень придумали чуркобесы?2. Нахуй тебе рекурсия глубины power, да ещё и нехвостовая?3. Не используй тернарный оператор, пока не научишься в форматирование.
>>1133979>Отрицательные степени?https://ideone.com/9VwwEeНо теперь уже тоже говнокод, а вообще >>1133983 этот господин все верно написал, нахуй нужна именно рекурсия, хотя если это просто задачка какая, то ладно.
>>1133983>нехвостоваяЗачем?>быстрого возведенияДля умников и пидоров.
>>1133993Стек - не твоя баба.
>>1133993У меня баб куча.ОП КОКОЙ КОЛОМБУР
На плюсах работы больше чем на питоне?
>>1134024А ты шутник
>>1134026Меньше что ли?
>>1134023Выходит у тебя баб нет, а только есть указатели на них?
С++ ДЛЯ ЛОХОВ.
>>1134027На https://www.indeed.com забанен ?
>>1133992https://ideone.com/rU520rКак-то так.пидор и умник
>>1134084Сколько лет стажа?
>>1134034Проиграл что-то.
>>11340853 года лаб
>>1134091Сильно.
>>1131086Неплохо.
>>113409021 век
>>1134033>ЛОХОВХаха, да я зарабатываю 30 тысяч рублей в ДС. Пуфонисты соснули> ЛОХОВСоснул я :(
>>1134164А я зарабатываю 250 тысяч рублей в ДС. Соснули все.
>>1134176Ура! Все у всех соснули.Мы все на ВТОРОМ месте!
>>1131086> сложить Использовать || уже слишком сложно?
>>1134211>если больше одной переменной стоят в true, то завершать программу>больше одной>Использовать ||Земля тебе пухом.мимо
>>1134164У меня работа, что и на плюсах и на питоне кодю.
https://github.com/eggman/ldacenc/blob/master/ldacenc.cПоясните насчёт этого файла, как он работает? Можно ли сделать decoder
Сам, крестаны. Решил вкатится в плюсы, посоветуйте какого-нибудь чтива про stl, а то в шапке какое-то старье из начала нулевых.
>>1134407Effective STL. Осилишь это - уже хорошо
>>1134419Я про нее и говорил. Не слишком старая?
>>1134440как будто в стл с тех пор что-то изменилось. Как степанов написал, так и пользуемся до сих пор.
>>1134440Освой хоть на каком-то уровне, пойми дизайн СТЛ. И потом уже сам по cppreference догонишься
>>1134442Много чего изменилось.>>1134440Старая. Почитай для общего развития, а потом прочитай Effective Modern C++.
>>1134508Я к тому, что эти книги по стл как фундаментальный матан, врядли когда-то устареют. это классика блять
Есть какой-нибудь достопочтенный господин, готовый помочь мне разобрать 2к строк кода?Большая часть кода — это огромный однородный свитч, так что реального чтения там намного меньше.Писал эту портянку не я, но мне надо внести туда изменения и пересобрать. Проблема в том, что там есть некая UB-дыра, приводящая к segfault под линуксом, но нормально работающая под виндой.Возможно, чей-то опытный глаз поможет быстрее определить проблему.
Как комбинацией клавиш в КЛИОНЕ зделоть, чтобы он сам расставил правильные пробелы в моем говнокоде? Настройки всего дефолтные.
Двач, не могу понять частичную специализацию шаблона, может кто объяснить что это и зачем нужно? Или может быть у вас найдётся доступный пример?
>>1134620> приводящая к segfault под линуксом, но нормально работающая под виндой.Худшая система снова обоссана
>>1134676Ну толсто же.
>>1134641Ctrl-alt-L
>>1134676Ну так подебажь. А, постой, у вас же консольный кусок залупы вместо дебаггера
>>1129255 (OP)Здарова, котаны. Студент-почти-второкурсник итт.Выбрал своим профилем кресты, посмотрел требования на hh и появился ряд вопросов1) Под какой осью сидеть/ разрабатывать?2) Насколько большая разница между кодингом под никсы и форточки?3) Когда осилю Страутструпа , в какую сторону копать?4) Классика вопросов для джуна? Два стула, какие библиотеки?
>>1134866>Выбрал своим профилем крестыхудшее решение в твоей жизни с точки зрения будущегохуже наверное только начать ставится герычем по вене
>>11348661. Винда\Студия.2. Разница огромная, у красноглазых ублюдков нет нормальных тулзов. Щас бы в 2018 пердолиться в сосноли.3. В любую другую, чем дальше от С++, тем лучше.4. Любые, главное, не С++ные
>>11339461) Вложеный тернарный оператор говно, особенно в одну строку.2) У тебя одинаковое условие в подоператорах и одинаковый исход для false.3) Рекурсия с хуй знает каким числом вложений - это охуеть.4) сукоблядь, в большинстве процессоров с FPU есть инструкция для этого! В стдлибе есть функция для этого!>>1134620
>>1134620Могу попробовать.>>1134645Это один из методов описания шаблона в целом. Частичная специализация может быть описана для произвольного условия, при выполнении которого она будет использоваться.
>>1134936> Разница огромная, у красноглазых ублюдков нет нормальных тулзов. Щас бы в 2018 пердолиться в сосноли.Кому пиздишь тут? Есть нормальный qt editor.
>>1135035Говна кусок твой qtCreator.
>>11349361. Пользоваться обосранной системой и обосранным ide от индусов, проиграл.
>>11349363. Дальше от лучшего и безальтернативного языка, а этот школьник в ударе сегодня.
>>1135181Хуево, когда у тебя все обосраное. Но ты продолжай из сельского толчка вещать, с тобой весело.
>>1133946Ебаный пиздец.
>>1134960Отправил на почту.
>>1135345А нет, не отправил, давай другую почту.
>>1135347>>1135345Теперь отправил.
Плюсаны, посоветуйте литературу по написанию высокопроизводительного кода на плюсах. Сам шарпист, но сейчас понадобился DLL на кроссплатформенных плюсах для Xamarin.
>>1135381В шапке все есть
>>1134866> 1) Под какой осью сидеть/ разрабатывать?Это требования проекта, а не твой выбор.> 2) Насколько большая разница между кодингом под никсы и форточки?Если писать хорошо, то никакой. Иначе будешь чинить под другой осью.> 3) Когда осилю Страутструпа , в какую сторону копать?Копай шапку дальше> 4) Классика вопросов для джуна? Два стула, какие библиотеки?Копай шапку
https://ideone.com/SiQOk2Задания обрезать первый символ в строке и засунуть новую строку в переменную a. Сделал через memcpy. Как можно там автоматизировать 3 аргумент с количеством копируемых байт? Шоб через sizeof. Помогите, пожалуйста:3
>>1135823Первое правило треда: лабы идут на хуйВторое правило треда: остальные языки идут на хуй
>>1135035QtCreator уебищное говно, а все кто в нем пишет - умственные инвалиды. Вообще все qt несвежая подзалупная смазка. Сука вот же ебучий фреймворк, заставили на новой работе на этом говне писать.Тру крестобляди, вы согласны? Может создадим тред унижения qt-дебилов?
>>1136064А что насчёт Clion? Или ты за создание только программ под одну платформу? Windows конечно же
>>1136081Нет я уже давно угорел по кроссплатформе.Но вот только дестопные приложухи лучше уж на джаве какой нибудь писать.А как студия разработки кроссплатформенных либ - очевидный Clion, да. Хотя недавно открыл для себя https://nuclide.io/ и https://buckbuild.com/, просто ульмитативное ультракроммплатформенное решение.Ну вот пришлось из-за кучи легаси писать либы с использование qt (не ui), это пиздец, ну есть же boost ребята. Для асинхронности - boost::asio, он скоро въедет в стандарт, а qt - тухлое несвежее дерьмищще.
Есть у меня одна идея. Абсолютно тривиальная хуета. Но я уже долгое время пытаюсь понять, как внутренние компоненты будут взаимодействовать друг с другом. И всё гавно какое-то. Мне уже кажется, что нахуячить монолитный код это нормально.Книги на амазоне, что я видел, это вода о воде. Статьи всякие про декомпозицию читал. Когда читаешь, это кажется так легко. А потом делаешь сам и ловишь рейдж.Помогите, или я поеду. Может есть какая нормальная книга, чтобы даже такой даун, как я, просветлился.
>>1134550Refactoring Фаулера почитай. А лучше начинай писать, в процессе хождения по граблям сам до всего дойдешь.
>>1136350Отталкивайся от глобальных паттернов и потом начинай декомпозицию к более локальным. Для первого случая советую к прочтению Pattern Oriented Software Architecture, да и для остального тоже. Одна из самых годных серий книг по паттернам в архитектуре приложений.
Можете посоветовать какой-нибудь интересный проект, который будет делаться неделю-месяц и поможет в процессе освоить плюсы и библиотеки std? В вузе задали самому выбрать задание, а идей нет. На плюсах учусь писать около полугода, основы знаю.
>>1136497>stdstl. На всякий случай поправлю, а то мало ли.
Сап проганы.Есть ли смысл использовать в качестве аргумента функции std::shared_ptr<Someclass> someobj, если для Someclass определен move constructor?Т.е., чтобы в некоторых случаях не писатьsomefunc(std::make_shared<Someclass>(args));, а писатьsomefunc(Someclass(args));когда я хочу сэкономить на памяти и вызовах всяких конструкторов копирования, при передаче объекта через несколько функций подряд.
Есть ли хоть сколько-нибудь ощутимая польза от noexcept? Или это всё просто хороший тон?
>>1136705Есть. Подробности в Effective Modern C++
Посоны, даю LsaEnumerateAccountRights корректный сид, полученный через NetUserEnum, но она почему-то отвечает мне ERROR_FILE_NOT_FOUND. Запускаюсь под админом, возвращает ошибку, когда пытается получить привилегии обычного пользователя (в этом случае, когда пытаюсь получить свои привилегии). В чем может быть проблема?
>>1136706Ага, спасибо, действительно, там есть целая глава про это.
>>1136708Где-то пишут, что это означает, что у пользователя не привилегий, но посмотрел через "whoami /priv", пишет, что есть.>>1136708 - кун
>>1136537>, а писать> somefunc(Someclass(args));В этом случае конструктор тоже будет вызван. Если ты хочешь создать объект из нихуя (только из аргументов) то move constructor никак не поможет.> при передаче объекта через несколько функций подрядСоздание копий std::shared_ptr будет скорее всего быстрее чем вызовы move constructor (так как std::shared_ptr в большинстве случаев будет меньше чем остальные классы). Как-то ускориться можно только через allocate_shared - чтобы не дергать кучу, зависит от ситуации, может и нихуя не помочь, а то и замедлить.
>>1136732шаред птр там на каждое копирование каунтеры на атомиках инкрементирует и проверки делает, что конечно легкая операция, но не бесплатная, может и не быстрее move быть
>>1136732>В этом случае конструктор тоже будет вызван. Если ты хочешь создать объект из нихуя (только из аргументов) то move constructor никак не поможет.Ну я имею в виду, что в случае вот такого кода и наличия move constructor для Someclass:// тут вызывается обычный конструктор, потом move constructor при передаче аргумента в функцию do1do1(Someclass(obj));void do1(Someclass obj){// move constructor при передаче аргумента в функцию do2do2(obj);}void do2(Someclass obj){// move constructor при передаче аргумента в функцию do3do3(obj);}void do3(Someclass obj){// move constructor при передаче аргумента в функцию do_finaldo_final(obj);}Таким образом за всю цепочку вызовов функций (do1 -> do2 -> do3 -> do_final), обычный конструктор вызывается 1 раз, а все остальные разы move constructor.Я прав? Не знаю, понятно ли написал, лул.Просто я обычно использую в таких случаях std::shared_ptr, но писать std::make_shared<Someclass>() каждый раз довольно длинно, да и читать это не так удобно.
Посоны! Нахуй нужны ссылки? С указателями всё понятно, это полезная и хорошая вещь чтобы крашить программу самым неожиданным методом.Но нахуя ссылки? Они просто заменяются препроцессором на имя ссылочной переменной или как то по другому? Есть профит от использования ссылок, кроме как создания константного типа ссылки чтобы не покрашить данные случайно?
>>1136805 алсо, лет 10 назад забил на вышку на втором курсе. На сишнике писал успел написать одну тупую лабу. Так вот, с той поры С++ обновил две, а то и три версии. Можно в двух словах, разница кардинальна или просто новых функций в стандартные библеотеки понапихали.Про ссылки вот я кстати не помню, были они в С++99 или нет.
>>1136805Ссылка это автоматически разыменовываемый указатель. Профиты те же самые.
>>1136805ссылка ощутимо "безопаснее" чем указатель, за счет того, что не может быть нулем. А висячую ссылку сделать сильно сложнее, чем кривой указатель.
>>1136775> вызывается 1 раз, а все остальные разы move constructorДа> std::make_shared<Someclass>() каждый раз довольно длинноЕсли под "каждый раз" ты подразумеваешь один раз на цепочку вызовов, то да. Если рассматривать именно со стилистической точки зрения то использовать смарт поинтер может быть действительно не совсем правильно. std::shared_ptr нужен для того чтобы гранить указатели на объект в нескольких местах, с автоматическим контролем за использованием. Просто передача объекта по цепочке вызовов не совсем использование по прямому назначению. Лучше передавать просто объект и надеяться на оптимизации. Может в будущем компиляторы смогут вообще оптимизировать эту хуйню, так чтобы никаких мув конструкторов не вызывалось (они то в принципе нахуй не нужны). Но по эффективности это примерно одинаковые подходы. Асло, есть же еще std::unique_ptr - я где-то читал что компиляторы во многих случаях способны оптимизоровать std::unique_ptr так что у него вообще нет накладных расходов, незнаю насколько это правда - но он может оказаться эффективней.
>>1136497Бамп.
>>1136817>>1136872А вот ещё спросить хотел тип bool в новых редакциях имеет автоматическю защиту от переполнения?
>>1136881>Асло, есть же еще std::unique_ptr - я где-то читал что компиляторы во многих случаях способны оптимизоровать std::unique_ptr так что у него вообще нет накладных расходов, незнаю насколько это правда - но он может оказаться эффективней. Я изначально его и попытался заюзать, но в моем компиляторе был какой-то косяк, поддержка shared_ptr была, а unique_ptr не было или типа того. Ну, это давно было.Поэтому заюзал shared_ptr, чтобы не греть голову по поводу своевременного освобождения памяти.
>>1136900От какого переполнения?bool++ - так делать просто не надо и все. Скорее всего даже варнинг схватишь.
class B {explicit B(int a);};class A : public Bexplicit A(int a, int c);};A::A(int a, int c): B(a) // 1{DoSomeShit(a); // 2B(a);}Можно ли сделать, чтобы конструктор предка вызывался не перед вызовом конструктора, а после? Без аггрегации
>>1137037Нет. Предок должен быть полностью сконструирован перед тем как конструируется потомок.
Что значит int? То есть это указатели на указатель?
>>1137406Да но зачем
>>1137409Динамический массив.
>>1137413Так и объявляй динамический массив.
>>1137447Ну я объявил.
>>1137452Пiчальна, чо.
>>1137406Удалил плохо.
>>1137453А что не так? Как правильно, сеньор?
>>1137456Надо циклом удалять сначала все строки массива, потом весь массив?
>>1137475У тебя десять массивов, которые являются элементами другого массива. Ты стер массив из десяти указателей на десять массивов, но те десять массивов по десять чисел в каждом всё ещё существуют.
>>1137478Вот так надо?А вообще как я сейчас делаю, делают? Или юзают векторы и тому прочее?
>>1137480Да, вот так.Юзают, абсолютно верно - векторы, или std::array. Сырые владеющие указатели после 2011 года юзать запрещено.
>>1137495>запрещеноПочему? Утечки хуечки?
>>1137495>абсолютно верно - векторы, или std::arrayА они же больше жрут ресурсы?
>>1137504
>>1137518Меньше что ли жрут?
>>1137498exception safety равный нулю. И да, человеческий фактор с утечками.>>1137504std::array - жрет столько же сколько обычный массив на стэке.vector - чуточку тяжелее. Но если ты будешь делать reserve\resize для пре-аллокации нужного количества памяти - то по производительности будет почти тоже самое
>>1137523Значит лучше array там где надо СКОРОСТЬ.
>>1137529лучше сначала профайлером пройтись, а потом уже на скорость дрочить.
Вот смотрите, если делать так, вместо using std::cout, то я буду пидором?
>>1137537да, будешь. Макросы в современном С++ использовать строжайше не рекомендуется, кроме для кроссплатформенной разработки ну или когда код шарится между кернел-модом и юзер-модом, как у меня на работе
Возможно ли в 2018 студенту устроиться стажёром с++ в ДС за еду? Или сразу идти учить джаву/sharp?
>>1137553> устроиться стажёром с++ в ДС за еду? Или сразу идти учить джаву/sharp?ЦМС 1С, чекай
>>1137553С++ вообще такой язык, где нужны только мидлы и выше, а лучше вообще одни сениоры. Это не ангуляр-мартыха.
>>1137566Не рождаются же C++ кодеры мидлами. К тому же, на hh есть вакансии, где указано без опыта, но как-то подозрительно всё это. Что вообще в сейчас на крестах пишут?
>>1137569Без опыта != студент-интерн. Я собесил на вакансию "без опыта", приходили совсем нулевые дауничи. То, что у тебя нет опыта - это значит, что ты что-то заебись умеешь и знаешь.Что пишут - я писал в разное время;qt-парашу для железной дороги, сервер управления поездами для нее же, бэкенд-утилитки для хостинг панели, прошивку для роутера, сейчас пишу драйвер для винды.
>>1137570> То, что у тебя нет опыта - это значит, что ты что-то заебись умеешь и знаешь.Да как так то. Ну знаю всякие основы ОС, сетей, алгоритмы, жму/пинусы с гитами и С++ на уровне базового курса, я нулёвый даунич?
>>1137573>>Да как так то. Ну знаю всякие основы ОС, сетей, алгоритмы, жму/пинусы с гитами и С++ на уровне базового курса, я нулёвый даунич?Знание алгоритмов и прочих основ не делает из тебя не говнокодера. Нужно иметь умение структурировать код и проектировать его, чтобы потом через полгода или год, тебя ногами не пиздили за то, что ты написал. Ну еще знание всяких жизненных ситуевин очень помогает. Опыт карочи.
>>1137573C++ на уровне базового курса == не подпускать к продакшен кодбазе на расстояние пушечного выстрела.
>>1137583> Чтоб получить опыт, нужно устроиться на работу, чтоб устроиться на работу, нужен опыт.>>1137592Понял, пойду выпиливаться, спасибо за ответы.
>>1137602>Понял, пойду выпиливаться, спасибо за ответы.Короче блять. Совет тебе. Пробуй делать хоть какие-то мизерные, но все же проекты. Со временем ты увидишь, что у тебя начинают возникать бойлерплейты и ты постараешься их избегать и изобретешь для себя паттерны, но пока ты ничего не понимаешь в этом, паттерны будут только во вред, потому что их нужно грамотно применять. Попробуй написать какой-нибудь обменник сообщениями по TCP, потом улучшай, улучшай и улучшай. Переписывай все заново. Так и набивается опыт.
>>1137611> Попробуй написать какой-нибудь обменник сообщениями по TCP, потом улучшай, улучшай и улучшай. Переписывай все заново. Так и набивается опыт. Спасибо за совет, няша. Родители уже гонят на работу, а на собеседования страшно идти. Может ещё успею, а то сейчас вообще тьма, депрессия и боль.
Так, а такой вопрос, возможно ли вообще проверять в шаблоне, что не было передано никакого параметра? template<typename T, typename std::enable_if< std::is_signed<T>::value || std::is_void<T>::value ,T>::type>void f(T t = 0);Можно ли вообще такое сделать валидным?
>>1137712обычная перегрузка?
>>1137712вдогонку - в вариадик шаблоне да, sizeof...(), а в обычном - только специализация\перегрузка и тд
>>1137721Можно, но хотелось, чтобы было одной функцией.>>1137722Спасибо, почитаю.
Подскажите самый простой компилятор кода под Винду, чтобы ещё был без установки
>>1137880https://nuwen.net/mingw.htmlесли ты совсем маргинал - то www.cpp.sh
>>1137495>Сырые владеющие указатели после 2011 года юзать запрещено.А мне норм.
Собираюсь полностью перейти с g++ на clang, какие подводные?
>>1137885Как всё сложно.В никсе нажал две кнопки и уже собираешь.
>>1138023Лови сишника>>1138027Если тебе архив сложно распаковать - ну, хуй знает, что тут сказать
Бля, как хуёво жить.Не было доступа к родной пеке, быстро накатил dev-c++ на виндах, написал всё, прогнал тесты - всё ок.Перегнал исходники на никсы, написал скрипт, который генерирует скрипт запуска по передаче 500+ аргументов в последовательных запусках. Где-то на сотом файле всё умерло. Ну, думаю, что-то упустил. Ручками запускаю с этим файлом под виндой - всё ок. Ручками запускаю в никсах - обрабатывает файл по кругу, не останавливаясь в eof, лог вырастает в гигабайт за 10 секунд.Хуле ему надо.
>>1138045Нет, это, блядь, невозможно просто.Шапка цикла: while(pos < length) {Вывод в конце цикла:[code]code_length = length - pre_pos;rintf("END OF FILE in %d bytes\n", code_length);printf("length is %04x\n", length);printf("pos is %04x\n", length);[/code]END OF FILE in 5 byteslength is 0f5bpos is 0f5bpos больше не меняется. length больше не меняется.После этого проверяется шапка цикла.Под виндой ок, под никсами файл начинает обрабатываться заново (то есть pos = 0).
>>1138056Блядь.
>>1138062Разобрался, всем спасибо.
А в плюсы нормальный билд тул с менеджментом зависимостей подвезли или мне надо устанавливать либы в систему?
>>1138092vcpkg
>>1137689>Родители уже гонят на работу>ещё успею, а то сейчас вообще тьма, депрессия и бользря ты решил в кресты инвестировать свое время
>>1137553>Возможно ли в 2018 студенту устроиться стажёром с++ в ДС за еду?если совсем кратко, то в случае если ты учишься по профильной специальности, те на программиста, тогда, да, возможно
>>1137523все же различия между std::vector и std::array глубже рассуждений быстрее-медленней..
>>1138096А что-нибудь не для винды и не для vs?
АХУЕТЬ МОЖНО ЧТО ЛИ ТАК БЕГАТЬ ПО МАССИВУ? ЕБАННЫЙ В РОТ, ЭТО ТАК КРУТО ПРЯМ КАК ЧЕЧНЯ
>>1138238Ага, оно ж по порядку лежит.
>>1138263Есть профит от такого способа?
>>1138270Это одно и тоже, просто квадратные скобки - это синтаксический сахар для читаемости кода, особенно, когда у тебя двух-, трех- и т.д. мерный массив через указатели совершенно нечитабельно. А так компилятор генерирует абсолютно один и тот же код. Пруф: https://godbolt.org/g/5oxxc6
>>1138067Что сделал то?
Чому биты представляют не в десятеричной системе исчисления?
Пацаны, клевый код?
>>1138357Нахуя, если у него два положения?
>>1138358Сильный.
>>1138359Чтобы ты вопрос задал.
>>1138308Прости, что доебываю, но у меня вопрос. Массив же состоит из элементов типа int? Почему тогда при смещении адреса указателя на единицу выдается другое число? По идее же, должно быть смещение адреса на 4. Выходит, в массиве хранятся указатели на числа по которым можно так проходить?
>>1138363Вот, что написал Прата в "Языке программирования С": "добавление1 к указателю" означает добавление одной единицы хранения. Для массивов данныйфакт означает, что адрес увеличивается до адреса следующего элемента, а не простодо следующего байта. Это одна из причин того, почему нужно объявлятьвид объекта, на который указывает указатель. Одного лишь адреса недостаточно, т.к.компьютер должен знать, сколько байтов требуется для хранения объекта.
>>1138374Норм книга? Стоит почитать под пивас?
>>1138374Спасибо большое. Добра тебе.
>>1138374Если я указал int, то он по байту будет прибавлять значит?
>>1138396Не знаю, многовато воды и совершенно неинтересные упражнения, но очень подробно все объяснено, так что решай сам.>>1138400Будет прибавлять к адресу sizeof(int) байт. Стандарт не гарантирует, что это будет 4 байта, но, как правило, это именно столько. Чтобы прибавлять по байту нужно сделать приведение в Си-стиле к указателю на char.
Не тренировался на крестах где-то год. Переустановил lubuntu 16.04 установил g++ geany. Открыл файлики( типа a.cpp b.cpp c.h) с учебника праты и получаю ошибки undefined reference. Помню раньше надо было открыть и нажать сборку именно на том файле где есть функция int main, сделал именно так, всё равно таже ошибка. Пробуюв консолечке g++ a.cpp b.cpp -o a всё норм работает. Понимаю что почему-то geany теперь не хочет автоматом подхватывать второй файл b.cpp (c.h он должен вставить ведь он заинклюжен). Как исправить?
>>1138358замени на 'new long long'
>>1138469я нихуя не понял, но .cpp файлы надо руками указывать, а хедеры "подцепятся автоматически" (препроцессор их хуйнет текстом в cppшники)
>>1138476Может и я чето подзабыл, может и не было такой функции в geany чтоб *.cpp подхватывались сами
>>1138479я не знаю, что такое geany, но абсолютно точно уверен, что .cpp нужные надо вручную перечислять
>>1138238Ща я тебе мировосприятие сломаю. Попробуй cout<<2[andron];
Анчоусы, а вообще описывать метод вне класса, а в классе оставлять онли прототип функции - это норм? Как по мне - это ухудшает понимает понимание кода и читаемость в разы. Нахуй оно вообще нужно, можете объяснить?<пример. где такая хуйня встречается https://pastebin.com/Qstf02Wv
>>1138528Зачем ты так с неокрепшим умом...>>1138238Анончик, если уж занялся изучением плюсов, то дам пару советов:1. Создавая проект в Visual Studio, создавай "Пустой проект". Тогда, у тебя не будет лишних файлов в твоем проекте по типу stdafx и иже с ними. Плюс уберутся лишние флаги к компилятору, суть которых ты не будешь понимать еще пару лет.2. Изучая разделы плюсов, отвади по 1-2 дня на каждый раздел, нарешивая задачки. Или придумай задачку по-крупнее (написать консольный калькулятор, игру в слова, крестики-нолики, решить квадратное уравнение, запилить класс Matrix для матричных вычислений и т.п.)3. Даже не пытайся запилить игры. Minecraft ты не напишешь еще очень долго. Могут уйти годы. Причем, minecraft это пожалуй один из немногих проектов, которые вмещаются в одну голову, все дальше только командная разработка, готовые фреймворки (Unity, UE4, CryEngine и т.п.).Gamedev это вообще, глубокая область. Тебе придется разобраться в матане, графических библиотеках, работе со звуком, работа с артефактами (ассетами), разобраться как работает GPU (что такое Vertex Shader, Fragment Shader, Computer Shader и т.п., Shader buffer и т.п.). Плюс тут еще много подводных камней касаемых target platform, drivers, deploying, native OS API, hardware, build (dynamic linking vs static linking). Понятно, что тут еще будет накручен сбоку VCS, и всякие гиты ты должен будешь знать как пять пальцев. Это Single Player Game.Если игра будет Multi-player specific, то нужен будет чувак, который еще шарит в сетях, сетевых протоколах, знает про то как мониторить и тестировать RPS, будет знать в каких БД хранить инфу о пользователях и т.д и т.п....Еще можно долго писать про наличие Художника, Звуковика, Сценариста._______Если хочешь для себя сделать что-то не сложное и за короткие сроки (пару месяцев, год). То бери только готовые решения - Unity (C#), UE4 (Blueprints, C++), м.б. какой-нибудь GameMaker. (GoDot не трогай, там много нюансов).4. Если не планируешь изучать в дальнейшем английский, хотяб на уровень B1, C2, то спецом ты НЕ станешь однозначно. В доках ты ничего прочитать не сможешь - инфа 100%. Статьи ты будешь понимать коряво, а не то что пытался передать автор. И т.д.5. (Если знаешь EN, или хотяб планируешь его изучать). Начинай смотреть канал - TheCherno (https://www.youtube.com/channel/UCQ-W1KE9EYfdxhL6S4twUNw). Отруби русский язык везде, где только возможно. Телефон и Компьютер на анг. поставь. Каждый день пытайся проговаривать в слух все что говорят Англоговорящие с youtube.6. Держи в голове поговорку: "Повторение - мать учения". Также следуй принципу: "Все решения доводить до конца". Старайся концентрироваться на задаче/проблеме. Хотя, пох, можешь не следовать им, все равно через пару лет ты к ним придешь. Не всё сразу....7. Старайся мыслить своей головой, и лишь затем пользоваться готовым решением.Думаю к остальному, что я здесь не перечислил ты сам придешь или столкнешься в скором времени.______________П.С. Сам 23 лвл. Играл лет 10 в дотку и лол, а потом захотелось создать игру.За 5 лет, так игру и не создал, зато прочитал 20 книжек по программированию. Узнал кучу полезной и бесполезной инфы. И еще 10000 статей с хабра и прочей фигни. По-работал по 2+ лет на каждой из популярных ОС.Похоронил для себя C++ и перешел в web (пару лет назад) - мучу RESTful сервисы.
>>1138597нет, не норм. Потенциальное замедление компиляции - плюс в наших петушиных кругах принято отделять интерфейс от реализации
>>1129255 (OP)[fq
>>1138597Похоже на пример из Лафоре.Это чувак посмотри на мой пост, там я канал посоветовал где, все очень хорошо объясняется:>>1138609
>>1138614>>1138619Спасибо)
>>1138609>Даже не пытайся запилить игрыЯ уже сделал гениальные крестики-нолики и арканоид... Дороги назад нет?
>>1138528Как так? Почему это работает?
>>1138649a это (a+b). b[a] это (b + a).Догадался?
>>1138659ебаный двач звездочки перед круглыми скобками сьел
>>1138659Агаa[5]==(a+5)==(5+a)==5[a]
>>1138659АХУЕТЬ. ЕБАТЬ СПАСИБО. АХ ВОТ КАК КВАДРАТОСКОБКИ РАБОТАЮИТ.
>>1138660>>1138664Лол, та же хрень. Короче ты понял
>>1138644Если тебе интересна эта тема (gamedev), то развивайся конечно!!Просто сделать что-то большее чем minecraft в одного будет почти нереально, если ты конечно не со школьлной скамьи фигачил лин.алг, computer science и т.п.Арканоид - норм. Если прям шаришь, в том что сделал и все понимаешь, и можешь уместить весь проект в голове, то пробуй что-то большее. А если нет, то смотри в сторону UE4.Лично, я дальше 2д поделок не смог уйти. Теперь понимаю, что нужно было в школе учить косинусы, тангенсы и нарешивать всякие СЛАУ. Щас, уже времени нет на все это, да и голова не свежа. У тебя память кстати норм? Родичи заставляли в свое время учить стихи и прочее?
>>1138528ЕБАТЬ МОЙ ХУЙ
>>1138676>2д поделокКак будто что-то плохое.Жаспер Брин же смог в Lone Survivor, например.
Господа байтобоги, пытаюсь разобраться с Cmake на примере одного опенсурс проекта, но что-то нихуя не выходит, чувствую только боль и унижение. Вечно какие-нибудь субдиректории не так подключаться/не найдуться и т.д. Куча магических переменных, пзц. Есть ли какая-нибудь годная книга по этой системе сборки, чтобы все аспекты сразу пояснили?
>>1138726Начните с корневой директории. Всего доброго.
>>1138676>У тебя память кстати норм? Родичи заставляли в свое время учить стихи и прочее?С памятью все хорошо. В школе много зубрил всякой терминологии гуманитарной.>Теперь понимаю, что нужно было в школе учить косинусы, тангенсы и нарешивать всякие СЛАУ. Щас, уже времени нет на все это, да и голова не свежаНасколько нужен сильный уровень математики? Если он чуть выше/равен школьному, то сойдет?>UE4Мне почему-то удобнее работать с SDL. Уеч слишком монструозен.
У С++ вообще есть перспективы или скоро всему настанет пиздец и нужно будет всего полтора специалиста, поддерживающих древее говно? Есть смысл перекатываться в нейронки или ещё куда?
>>1138664Вот коммутативность такой операции нихуёвый такой брейнфак
>>1138774Если перекатываться, то только в веб.
>>1138794
Есть на С или крестах нормальные serverless базы данных? Про SQLite знаю, там Decimal всратый.
Господа, делаю задачи из учебника Лафоре застрял. Не пойму в чем проблема. Признателен буду за помощь.https://pastebin.com/4vzmApEi
>>1138733Слишком сложно для меня. Много нерелевантной инфы. https://github.com/mapsme/omim/blob/master/CMakeLists.txtЯ хочу скомпилить только нужный мне кусок.https://github.com/mapsme/omim/blob/master/qt/CMakeLists.txtНо как я не ебусь с этими мэйклистами нихуя не выходит, постоянно какая-нибудь хуитка не находиться.1.Можно ли в cmake как то добавлять префиксы для инклюдов в исходниках?Т.е. если у меня huilta1.hpp и huita2.hpp чтобы между собой в коде писать не #include "huita1.hpp", а #include "PREFIX/huita1.hpp"?2.Можно ли как-то вывести список всех директорий, которые подключаются к проекту?3.Можно ли то же самое сделать для всех файлов?
>>1138737Память это core resource. Успех интеллектуальной деятельности от нее слишком сильно зависит. Мне вот не повезло, я прочитал от силы 3 книги за всю школу и выучил "Бородино". Теперь, вот даже не получается запомнить функции фреймворков с которыми работаю, каждый день. Всегда держу откртыми доки и стак. Углубленный матан нужен, если ты пишешь с нуля физический движок. (движение частиц, упрогость объектов, кинематические функции для скелетов гуманойдов, баллистические уравнения и т.п.), все это нужно будет быть способным понять и реализовать.Конечно есть готовые либы и функции на github, в частных блогах, книгах.Если с матаном будет не очень складываться, то тогда только готовые движки, либы и т.д. Ну хотя, может с школьными знаниями (геометрия, тригонометрия, лин.алг) дейсвительно можно делать примитив на уровне 2Д платформеров и др. жанров.
>>1138910>3 книги за всю школу и выучил "Бородино"Ничего себе. У нас в школе палками пиздили если ты не читал и не учил.Спасибо за ответы вообще. Ты сам почему с плюсов ушол?
>>1138910>если ты пишешь с нуля физический движокМожно про вот это по-подробнее? Как их вообще пишут? На OpenGl и DirectX?
>>1138841В проверке символа ты делаешь переприсваивание. поставь ==
Какой же вас язык лаконичный! Такой простой, изящный и прямолинейный! И главное, он всегда делает то, что ты задумывал. Никаких подвохов!
>>1138919Как будто где-то жизнь проще.
>>1138926Всяким пыхаблядям, джаваскриптопидорам и питонистом проще.
>>1138774C++ активно используется в яндексе и мейле из русского. В Фейсбуке, Гугле, Майкрософте, Амазоне из зарубежного.Я ответил на твой вопрос?
>>1138911>>Ты сам почему с плюсов ушол?0. Ну про память я тебе написал свою. Как рыбка Дори =). 1. Слишком долго разбирался в тонкостях языка и его экосистемы, как итог - просто перегорел, стало даже тошнить от расширения файлов cxx, cpp и тд. Теперь понимаю, что нужно было искать работу после двух лет изучения (и идти пусть даже стажером). Пожалуй, основная причина. Все-таки, на старте нужна хоть какая-то отдача. Если то, чем ты знаимаешься не приносит тебе денег в течение года, то что-то тут не так..2. Интерес к основным штукам для которых предназначен сейчас C++ - у меня пропал. (Embedded, gamedev, ROS, OS, "SUPER ULTRA HIGH PERFORMANCE SYSTEMS", и т.п.) - эти области Мне более неинтересны.3. Архаичность. Когда имеешь дело с C++, то нужно всегда помнить про тонкости и хаки чистого C. Количество подходов к тому как писать либы и код, менялось более 40 лет, отсюда слишком разная структура у third party либ. Каждый раз нужно разбираться, как inject-ить либу в проект, потом настривать compiling, linking, building. Всегда нужно читать все header файлы. Ибо может быть какая-нибудь особенность конкретной либы. Порядок подключения хедеров, тоже иногда может быть важен.4. Просто выпишу из своего дневника пару минусов:- Total absence of Unified Package manager- Total lack of Unified Best Practices- Exuberant Syntax, therefore it has Poor Readability && Many ways to solve a problem- If you write C++ code, then you need understand old C code. Because C++ founded on top of C.- Hard to configure IDE or code editor to make a builds. Real good IDE is just for Windows.- Dependency Injecting is so fucken mindgames. You always need to read source code and headers to understand library specific traps and pitfalls.- (RAII) Manual work with memory allocation/deallocation. (OFC if you work with C++ approx 5 years, then you know about SMART POINTERS), but this approach has overhead, and decrease performance of target system.В целом я рад, что начал в свое время с C++. Мир веба, кажется теперь простым детским садиком."Куда ушел?"Веб. Здесь гораздо проще людям с памятью рыбки "Дори". Программирование, как таковое выливается в чтение доков, а затем примение какого-то готового шаблона из фреймворка. Почти что декларативный стиль программирования. Ситуаций, когда ты можешь что-то сломать на уровне логики - очень мало.>>1138914>>Можно про вот это по-подробнее? Как их вообще пишут? На OpenGl и DirectX?Да это обыкновенный набор cpp, h, c, cxx, hpp, dll, lib, dll.lib, so и д.р. файлов.В этих файлах описываются шаблоны игрового мира, шаблоны объектов, шаблоны устройств ввода (джойстики, клавиатуры, мышки, геймпады, рули, стики и т.п.), шаблоны свойств объектов и т.д. Там очень богатая иерархия шаблонов классов.Там будет обязательно реализация state machine. Реализация renderer (отрисовщика кадров) и т.п. В отрисовщике кадров уже используются всякие функции Direct3D (если проект собирается под Windows платформу), OpenGL (под все поддерживаемые им платформы, опять же видеокарта должна поддерживать соотв. стандарт OpenGL-ля), Metal (для MacOS), Vulkan (под все, если производитель карты замутил соотв. драйвера) и тд.Понятно, что пишут их только спецы, которые понимают как работает ОС и Железки.Остальные их только дорабатывают, фиксят баги.
>>1138938> нужно будет всего полтора специалиста, поддерживающих древее говноЗначит, всё так.
>>1138939Спасибо большое тебе. Удачи. Не гори.
>>1138659А если это как у дверного массива? Andron [3][3]
>>1138977нет.
>>1138528добьюint * ukoz = &andron
#ятупойпочему эта хуйня работает? Под неё будет выделена какая то память или что?const int &r=42;
>>1139074Нет конечно, но будет одна косвенная адресация.https://godbolt.org/g/3xReRN
>>1138978Спасибо) И тебе удачи, не забрасывай, не теряй мотивации, доделывай дела до конца и все будет пучком. :)
>>1139002Это я знал. Так в Qt пишут.
>>1138659А как это просиходит с двумерный массивом?b[a][b1], это (b+a) и *(b + b1)?
>>1139208проебал указатель
Это по-пацански так пихать везде указатели?
>>1139243Да.
>>1139208Чтобы макакопараша не сходила с ума {} - это []звездочка это 'з'arr{a}{b} это з(з(arr + a) + b)Это валидно и для статических двумерных массивов, и для динамических
>>1139243чем меньше указателей - тем лучше. В идеале справлятся вообще без них.
>>1139299Хм...
>>1139243 вместо указателей лучше бы ссылки использовать.
>>1139137И если не утомил тебя, то ты не можешь сказать о том стоит ли учить Си? Мне он просто больше как-то заходит.
>>1139357Гей плез
сап, программач!понадобилось подправить cout, это я нагуглил, но не пойму, как его использовать правильно в нескольких файлах .cpp(с одним работает), компилятор говорит что-то об ошибке линковщика. https://pastebin.com/bXEz814y
Как я понял, длительные цепочки else if преобразуются компилятором в switch? Switch вообще быстрее else if?
>>1139515Неправильно ты понял. Компилятор делает из всех условных конструкций последовательности cmp и jump
>>1139297Спасибо!
>>1139517нет, свитч-кейсы оптимизируются в O(1), если могутhttps://godbolt.org/g/sTqvj7
>>1139427Не, не утомил)В первую очередь определись с тем, что тебе интереснее - какая конкретно область тебя интересует (может тебе хочется железки программировать, писать драйвера для GPU, или там Движки писать для игр).Твой вопрос очень сильно похож на:"Какой язык учить? немецкий, японский, итальянский или иврит?"Без доп. информации я не смогу нормально ответить)__________Если ты точно не знаешь, или еще не определился с областью, то тогда три КЛАССИЧЕСКИХ варианта для старта:1. Архаичный вариант (Turbo Pascal), неплох для совсем новичков, чтобы пройти именно след. темы: Алгоритмизация, Структуры данных, Array, functions, procedures, input/output stream, и тд. Потом перескакивают на прагматические языки, на которых можно будет зарабатывать.В отличии от C, имеет понятный для новичков синтаксис.2. Более сложный вариант (C). В начале будет сложнее, но зато не нужно тратить время на Turbo Pascal. Изучая язык, ты столкнешься со всеми важными топиками: Алгоритмы, структуры данных, looping, conditional statements, память, stack, heap, calling conventions, functions, functions returning void (procedure), linker, compiler, input/output streams, descriptors, pointers, constant values, ascii, posix/winapi, memory allocations/deallocations/reallocation и т.д.3. Самый простой в начале это Python. Но многие моменты (по типу адресной арифметики, указателей (pointers), структуры данных, типы, и почти все выше перечисленное из пункта 2 - пройдут вскользь, а следовательно - будет плохая база, если ты соберешься делать что-то крутое и продвинутое. Тот же CPython будет уже так просто не заюзать. Но зато, на нем ты быстро можешь заценить результат твоих трудов, сможешь делать более крупные задачи раньше чем на C или C++. Начинать вкатываться в программирования с применением этого языка, это как - учиться вождению на Mercedes S Class, а потом придется вдруг пересесть на Subaru (у которой еще движок не собран), а потом вообще в копейке придеться копаться. К хорошему быстро привыкаешь. Не советую начинать вкатываться с этого языка._______________Прямой ответ на твой вопрос:C++ не бывает без C. Используя C++, ты так или иначе юзаешь C.А юзая C ты всегда используешь часть C++.С лишь подмножество C++.Если ты новичок, то иди по пункту 2 (выше).В противном случае бери любую Толстую книжку по C++ и прорешивай, осмысливай все что там написано. В таких книжках косвенно объясняется весь твой C. А затем начинается специфика самого C++. Параллельно можешь, смотреть канал - "TheCherno" на youtube. Как только наберешься умных слов и практики, начинай мутить сколько-нибудь сложные программы (десяток консольных программ и пару графических). Дальше ищи работу стажером.Вообщем, действуй!! Карты еще могут сто раз переиграться.
>>1139620Спасибо за такие полные развернутые ответы!Вообще, я не особо нуб. Я два месяца до этого кодил на C#, но мне захотелось чего-то более низкоуровневого.Меня больше всего интересует создание драйверов/программирование движков и т.п. Только не знаю, потянул ли, ибо с физикой проблемы.Кстати, насколько сильно нужна физика программисту?
>>1139635Астрофизика, говорят, нужна
>>1139645Я играл в kerbal space program. Я знаю ее.
>>1139635А если серьезно, то вообще не нужна. Именно для программирования физика не нужна. Программисту нужно знать алгоритмы, а анализ этих самых алгоритмов происходит с помощью всеми любимой математики.Если речь идёт о разработке движков, то, опять же, всё зависит от конкретной задачи, т.к. такие штуки обычно создаются командой, где есть четко распределенные роли.
>>1139649А то мне бухой батя втирал про ее важность.
>>1139652Ну, изучать CS обычно начинают с самого "низа", т.е. с самого базового устройства ПК (устройство процессора, транзисторы, логические вентили, триггеры и т.д.). Может он умудрился связать с физикой работу транзистора, например?
>>1139657Видимо да. Он еще с ламповыми компами работал...
Жрется ли память при абстнакциях?
Сап. Читаю книгу по джаве Шилдта, там такие слова:>В C++ можно определить значение, которое будет принимать параметр, при вызове функции без аргумента, соответствующего этому параметру."Это вроде как он на вариадики намекает? Или это про обычную перегрузку void foo(int p) <===> void foo()?
>>1139712http://en.cppreference.com/w/cpp/language/default_arguments
>>1139635Я тебе отвечу конечно, но тебе лучше начать решать практические задачи (больше практики, меньше форумов на болтовню).Физика тебе как-таковая ненужна, если ты будешь программировать Software. Но она дает, некоторые фичи для тебя, как для будущего инженера, а именно знание и понимание физических процессов (напр. процесс кипения, процесс перемещение объектов, процесс изменения состояний какого-либо вещества, процесс движения частиц (в зависимости от агрегатного состояния - газ, плазма, жидкость, тверд. тело), интерференция волн, и т.п.). Таких процессов просто овер 9999999999, поэтому нет смысл это все досконально изучать.Посмотри основные темы - кинематика, электричество, термодинамика, магнитизм, волновая физика, оптика. Пожалуй основные, вот они помогут тебе в жизни. (Пусть знающие поправят, если что забыл). Короче физику нужно знать и понимать на уровне 7,8, 9 класса. По-крайней мере, мыслить ты будешь шире, чем человек без понимания физических процессов и законов.Вся остальная физика только от задач с которыми, ты будешь сталкиваться. Просто так, не имеет смысла изучать, скажем Ядерную физику. Ну будешь, ты знать какие-то периоды полураспада хим. элементов, но практического толку будет - 0. Или там, скажем принцип суперпозиции, зачем оно тебе?
>>1139804UPD: Если че, я оффаюсь на пару недель. Много работы.А тебе анончик здоровья и воли, не ленись и все будет оки-доки. =)
Какой проект можно создать, чтобы он выглядил нормально в портфолио(я же правильно понимаю, что джуна без хотя бы парочки проектов никто даже рассматривать не будет?). У меня была идея кое-что запилить на boost asio, но по сути же это будет куча функционала библиотеки а поверх немного моей логики. Про OpenCV и SFML тоже думал, но в обоих случаях надо лопатить огромные библиотеки ради написания достаточно простеньких вещей. Делал свои реализации стандартных вещей(библиотеки для работы с большими числами, математики кватернионов, обертку для сокетов и tcp/udp соединений), но быстро бросал, потому что это всё уже тысячу раз делали и много лучше чем я. Может у вас есть какие мысли?
>>1139913блокчейн
>>1139922Серьёзно? Это же какое-то дануство, не? Не, конечно, можно как-то сделать это более интресно, но разве в этом есть что-то кроме модного слова?
>>1139913boost asio это очень круто, если сделаешь даже говночат
>>1139947Хм, я даже не думал, что это будет кому-нибудь интресно, а вот если взять идею говночата и на него накрутить ssl, всякий функционал в виде комнат, конф, может гуи, возможность передавать зашифрованные файлы и тп. Это нормальный проект для портфолио?
>>1139947А что по распространению либ? Вот есть буст асио, а есть ливень, а есть вангл. На что из этого стоит посмотреть в первую очередь?мимо тоже хочу написать хоть говночат
>>1140022Ливень -> либивент
>>1140022буст асио скоро в стандарте будет. Стандарт > все остальное.>>1139956если ты просто сделаешь говночат с комнатами и личкой - уже отлично.
>>1139804Спасибо, анон.пока не могу практиковаться ибо ноутбук продать пришлось
>>1139913>SFML Не такой он огромный.
Что не так?
Почему во многих крутых фреймворках пишут свои контейнеры, которые схожи с теми, что есть в стл?У нас с другом две теории, он считает что они пишут более производительные/оптимизированные варианты. Я считаю, что они скорее расширяют как-то функционал и серьезно оптимизировать стл не получиться.(Иначе почему это еще не в стл?). Есть еще варианты?
>>1140237Видимо стл слишком тяжеловесен для их нужд?
Стоит ли кидать в гитхаб текстовый рогалик? Или работодателю будет ПОХУЙ?
Пацанлар, допустим, я решил написать свой велосипед-аналог list. Как реализовать удаление элементов правильно? Иначе же хуита выходит! Всем элементам нужно сместится на единичку, что при больших объемах затруднительно?
>>1140266Посмотри «Mastering Algorithms with C» (Kyle Loudon), там в картинках рассказано.
>>1140263Стоит.
>>1140263Работодатель посмотрит на то, какие используешь указатели, как оформлен код, нет ли диких констъюкций вроде оператора возврата из середины функции и т.д. Текстовый режим или графика — менее важно. По крайней мере, насколько знаю лично я (лично).
>>1140284>Работодатель посмотрит на то, какие используешь указатели, как оформлен кодТо есть их не волнует просто наличие/не наличие.
>>1140218не прилинковал библиотеку>>1140237STL обязана соблюдать контракт, написанный в стандарте. Стандарт позиционируется как универсальная штука-дрюка. Свои велосипдеы, если будут писаны крутыми чуваками - конечно лучше. Можно в векторе сделать Small Vector Optimization, можно изменить паттер аллокации с x2 на что-то более сложное. Можно нахуй выкинуть все эксепшены еще. Вариантов так-то много очень. Та же хэш-таблица может быть реализована разными способами.>>1140263Кидай конечно.>>1140266В варианте листа ты просто соединяешь линками предыдущий и следующий элемент. А текущий нахуй удаляешь потом.
>>1140288Так, а треугольные скобки у него для множественного наследования?Расстрелять.
>>1140293>треугольные скобки для множественного наследованияТак делают?
>>1140293>множественного наследованияУже стоит растрелять.
Я написал проект. Ни разу не тестил. Нажал кнопу запуска... все заработало с первого раза... что за хуйня?
>>1140322Теперь попробуй написать что-то сложнее, чем Hello world
>>1140337В этом то и прикол, что я написал крестики и нолики с ИИ...
Есть аналог system("PAUSE")? Эта функция слишком медленна для моей задачи.
>>1140351_getch()
>>1140351system("cls")*
>>1140353Взять хэндл на стдаут и насрать в буфер при помощи оснвого апи
>>1140368Лол. Я так и сделал, думал что говнокод сраный.
Если я в map нахуячу разного невпопад в духе:map[0xF4] = "asd";map[0x09] = "ffgf";map[0xAB13] = "eed";map[0x00] = "cvcccc";map[0x05]= "ddd";А потом пройдусь по ней итератором от начала до конца, то значения будут отсортированы по ключу или нет?Допустим, в данном примере std::map<int, std::string>
>>1140438Сортировка по ключу идет, а не по значению
>>1139678https://www.youtube.com/watch?v=_fu0gx-xseY
Cтарый хрен, сука. На хую вертел Седжвика и его книгу. Примеры - самое кривое, что я видел в своей жизни после Кочана
>>1140237Др. аноны уже все расписали. Можешь глянуть EA STL, как раз писалась для перформанса и юзабилити.
>>1140351std::cin.ignore();std::cin.get();
>>1140501Мне почему-то кажется, что они специально так сделаны, чтобы у тебя горело и ты разбирался.дважды кидал книга на пол, когда читал обход бинарного дереваДойди до сортировок анон, дальше попроще
>>1140524*книгуслепой дебил
https://ideone.com/zy8aBHПри завершении программы выдает ошибку. На сколько правильно я создал алгоритм увеличивающегося массива.В прошлый раз я приходил сюда с этим же алгоритмом и мне сказали использовать vector. Не уже ли нельзя нормально реализовать программу с увеличивающимся массивом?Жду ваших советов.
>>1140578https://en.wikipedia.org/wiki/Variable_shadowing28 строка
>>11405781)Ты увеличил n и лезешь за границу первого массива в цикле на 24 строке. 2)Ты не удаляешь первыц массив после копирования во второй и переопределяешь в 28 строке
>>1140578А да, ты еще и в 28 строке сокрытие имени делаешь, как правильно заметили. Короче смотри правило. Если ты переопределяешь переменную, инициализированную через new,то ее нужно скопировать, удалить, создать, скопировать.
>>1140501Потому что алгоритмы нужно учить по Кормену (и Ко) или Кнуту.
>>1140501Когда главы разбираешь, там есть текст описания алгоритма и есть текст в рамке с программой, читай сначала текст в рамке, сразу начнешь понимать текст в книге при описании алгоритма
>>1140579>>1140581>>1140583Это другой код здесь я удаляю оба массиваhttps://ideone.com/fPExiYПримерно месяц назад я приходил сюда с таким же кодом, мне сказали используй вектор, а затем спросили зачем ты создаешь и удаляешь массивы по два 2 раза, но на мой взгляд все логично. Вообще вся эта проблема пошла с лабораторной работы по программированию. Тогда мы долго с учителем сидели и думали что не так, ну затем он тоже сошелся на том что массив объявленный внутри цикла невидно в другой части программы. Вчера я написал программу где я не удаляю массив arr_one а просто присваиваю ему другой размер и у меня впервые результат был верный я ввел 1 2 3 и мне вывело 1 2 3. Но только выводило ошибку. До этого на лабораторной тоже все было нормально, но в конце мне выводило массив не с моими числами, а со случайными числами. Теперь у меня код примерно такой же как на лабораторной. Но теперь выдает вот эту ошибку.
>>1140741Я тебе уже ответил. Ладно, я сегодня добрый, поэтому разжую тебе всё , но лабы всё равно идут нахуй.Разберем твой говнокод по шагамТы инициализируешь n=1. Переменная k, которая на 1 всегда меньше n нахуй не нужна. Далее ты создаешь arr_one в куче размера n==1.Далее ты заходишь в цикл, инициализируешь единственный элемент массива с клавиатуры. После этого спрашиваешь добавить или нет.Если да, то ты инкреметируешь n. На первой итерации цикла оно становится n==2. Далее ты создаешь arr_two размера n==2.Заходишь в цикл с условием (i=0; i<2;i++)При i==0 arr_two[0]= arr_one[0]При i==1 arr_two[1]= arr_one[1]Но arr_one у тебя размера 1, поэтому элемента arr_one[1] не существует и ты вылазишь за границу массива.Исправь условие в цикле на i<n-1И добавь в конце функции delete [] arr_one;А вообще за ебучий месяц ты мог всю блядскую книжку зазубрить, но нет, пацаны помогите, я сам не хочу разбираться в том, что наваял. А теперь иди читать книжки и доебывать своего мудака препода
>>1140764 https://ideone.com/ExAbIdВсе равно ошибка
>>1140768ты совсем долбоеб?
>>1140812ну давай скажи что не так
>>1140820Сотри весь код и напиши заново, без всех этих new и delete, никто ими в современном мире уже не пользуется, всю необходимую информацию тебе уже дали. Если твоя цель - просто сдать лабу, пройди нахуй и не трать наше время на дваче, лол, время ну вы поняли
>>1140823даже несмотря на то что программа выдавала, ошибку лабу мне зачли. Информацию необходимую мне не дали. Мне сказали что сделать я сделал, все равно не работает.
>>1140825хах как смешно я запятую поставил
https://ideone.com/5cmvPSПочему выдает только 3 названия.
>>1140906srand нужно вызвать один раз в самом начале.
>>1129255 (OP)Котаны, джаваблядок в треде: какие шансы у меня вкатиться в разработку на C++, если я уже привык к тому что меня неплохо кормят? В теорию программировани умею, инженерный бэкграунд и инглиш в наличии. Просто внезапно осознал, что занимаюсь какой-то хуйнёй.
>>1140913>что занимаюсь какой-то хуйнёйс технологией никак не связано, смысла тебе перекатываться нет
>>1140918Всё так плохо?
Что за хрень? Схуяли они меня ограничивают, пидоры. Скоро блять вооббще хуй соснуть без их слова нельзя будет.
>>1140949Во-первых, ты пишешь на С, поэтому ты попутал тред. Во-вторых, если все же ты пишешь на С++, то используй iostream и потоки ввода-вывода. Во-вторых, conio.h НЕ является файлом стандартной библиотеки, вместо этого лучше используй getchar() из stdio.h (в С++: cstdio), или cin.get() из iostream.
>>1140921С одной стороны мне нравится, что я на С++ пишу охуенно сложные вещи (сейчас на работе виртуализацией файловой системы занимаюсь, кернельный драйвер пишу) - с другой стороны, у меня иногда прям истерики, что кто-то шлепает формы копипастой на ангуляре, а я реально очень сильно напрягаю голову.
>>1140993Ну и пусть, зато ты ГЕНИЙ, а они ПИДОРЫ.
>>1140962Си - подмонжетство С++. Не выебывайся, умник.
>>1140999Страуструп, плес.
Следующий код не скомпилируется:int main(){int a[10], b[10];a = b;}Но при этом в стандарте нельзя найти никаких правил, которые бы запрещали такой код.
>>1141267>Но при этом в стандарте нельзя найти никаких правил, которые бы запрещали такой код.Да неужели.Objects of array type are not modifiable lvalues, and although their address may be taken, they cannot appear on the left hand side of an assignment operator.
>>1141276>Objects of array type are not modifiable lvaluesЭто с цепепереференс, верно? А я говорил что в стандарте нельзя найти.Кстати,http://eel.is/c++draft/basic.lval#10: "An lvalue is modifiable unless its type is const-qualified or is a function type."Поэтому откуда взята информация на цепепереференс — непонятно.
>>1141290>откуда взята информация на цепепереференс — непонятноТочнее, понятно: откуда-то из прошлого. Из C стандарта или из старой версии C++-стандарта. C++ стандарт до сих пор ссылается на отсутствующее правило:http://eel.is/c++draft/dcl.array#7 [ Note: Conversions affecting expressions of array type are described in [conv.array]. Objects of array types cannot be modified, see [basic.lval]. — end note ]Только вот [basic.lval] говорит то, что я процитировал выше. Ни слова про массивы.Так что вот так.
Пишу FTP клиента, и в протоколе FTP есть такая команда как PORT, вместе с которой я должен передать IP адрес клиента и порт, к которому сервер будет подключаться и по которому будет передавать данные. Вопрос: как получить IP адрес клиента? Именно тот, что например я вижу на 2ip.ru (мой IP в сети интернет, или типо того. Я не силен в сетях пока что).
>>1141267>>1141290Но ведь логично, что это нельзя сделать - не зная, сколько элементов лежит в массиве пытаться его перезаписать - гиблое дело, и хуй знает чем бы оно кончилось.
>>1141336>Но ведь логично, что это нельзя сделать Может быть.Но внятно написанных формальных запретов это делать нет.Это, конечно, не проблема. Просто такой маленький забавный факт. Возможно, этот дефект когда-нибудь пофиксят.
>>1141335getpeername()
Почему std::cout быстрее printf?
>>1141441всегда медленнее был
>>1141443Кто?
Как объявить через typedef прототип для scanf()?пытаюсь делать так:typedef int(__cdecl scanfPrototype) (const char format);но потом обсираюсь в scanfPrototype read = &scanf;Типа сигнатуры не те. Действительно, у scanf там еще ",...". Так вот, как это указать в прототипе ИЛИ как еще можно кроме std::cin >> var и scanf("%d", &var) считать инт в переменную? Желательно без считывания строки с дальнейшей конвертацией в int. Или все эти scanf и cin изолированно от меня всё равно конвертят ввод пользователя из ascii в нужный тип?
>>1141478Былять, разметка съела указатели. Ну ты понел
>>1141478>Как объявить через typedef прототип для scanf()?typedef decltype(scanf) scanfPrototype;>Или все эти scanf и cin изолированно от меня всё равно конвертят ввод пользователя из ascii в нужный тип? Ну не телепатически из его головы же читают.
>>1141505>typedef decltype(scanf) scanfPrototype;Шаман, однако. Спасибо
>>1141478> scanfPrototype read = &scanf;auto read = &scanf;
>>1141478> через typedefЕсли не пишешь на с, закопай обратно.https://ideone.com/DuT52u
>>1141510От __cdecl не сломается?
std::vector<T> vec;// какой-то код, сующий в vec, допустим, 3 элемента`&vec[0] + 2` и `&vec[2]` — не одно и то же, первое приводит к UB на любой реализации вектора, у которой push_back реализован по стандарту, т.е. работает за амортизационно константно евремя.
>>1141516В поле тема я написал "Трудно поверить, но факт", но оно почему-то не отобразилось.
Есть ЭТО:void SetKeyCallBack(KEY_CALLBACK callback); typedef void (CALLBACK * KEY_CALLBACK)(int iRow, int iColumn, bool bPressed); Как мне получить два инта и бул? Да, я умственно отсталый, пожалуйста помогите и объясните во всех деталях.
>>1141681тебе их передадут прямо в твой коллбек который ты зарегестрируешь через SetCallbackмимотян, пруфов не будет
Решил я тут вкатиться в кодинг на C++ + Qt. Объясните, почему статически слинкованные приложения имеют такой-то размер? И это простой хеллоу ворлд. DEBUG-версия вообще линкуется неадекватно долго (минуты три).
Как нормально скачать и подключить ипаный буст на clion?
>>1141516Проверь, &vec[0] и vec.begin() - одно и то же?
>>1141820Нормально все. Ты при статической линковке весь рантайм собираешь и тянешь. А ликовка долгая, т.к. плюсы с шаблонами.
>>1141820Собери релизную версию без отладочной инфы, будет меньше.
>>1141869> With Visual C++ (and other Microsoft compilers) on Windows, symbols aren't part of the binaries. Instead, they are stored in separate files called "Program Database" files (.pdb files). Just don't provide the .pdb files.Отладочной инфы там нет.
>>1141870Только вот оптимизатор уменьшает код все равно. Иногда в разы.
>>1141977Так релизная оптимизированная версия весит 23.4Мб, а неоптимизированная 57.2Мб + 180Мб отладочной инфы в отдельном файле.Может это из-за того, что я использую Intel C++ Compiler? Я его по большей части спиздил с рутрекера и поставил потому, что MSVC отображает ошибки конпеляции на русском языке и Qt Creator не в состоянии их отобразить. Подключить clang-cl к Qt Quick я не асилил, а icl полностью мимикрирует под MSVC и для его подключения достаточно заменить батник инициализации и mkspec.
>>1141979> Qt QuickQt Creator если быть точнее.
>>1141979Английскую версию мсвц ты не смог поставить?
>>1142019Она мультиязычная изначально, лол. На SO есть старые способы удаления языковых пакетов, но с VS2017 они не работают.
Пишу в Code Blocks с SFML, пытаюсь открыть файл, пишет undefined reference to. Файл лежит в той же папке, кириллицы в пути нет, расширение поддерживается. В чём может быть ошибка?
>>1142039> Пишу в Code BlocksВот здесь
>>1142041Есть нормальные альтернативы кроме VS?
>>1142045Самый удобный инструмент разработки - это VS. В нем пишут вообще все, кроме поехавших вимоблядей, и всяких унылых дядь с эмбедом, где свои инструменты.
>>1142045если ты хочешь делать упор на изучение qt, но знаний у тебя явно маловато, то наверное удобней будет поставить какой-нибудь user-friendly вариант линукса, кодить в qt creator и в качестве компилятора использовать gccно если говорить вообще - похоже, у тебя явно не хватает бэкграунда чтобы спокойно делать что-то рабочее на qt
>>1142063да еще: линукс ты можешь поставить на виртуалку, в этом есть множество преимуществ
Ответь на пару вопросов, плюсач1. Что такое embedded? 2. Реально ли писать на Qt в VS?
>>1142072> 2. Реально ли писать на Qt в VS? Ну как бы да. Только вот официальный аддон так и не допилен. Какие-то подвижки есть, но например Qt Quick не поддерживается вообще и в ближайшее время не будет. Только если сам хочешь ебаться с cmake (который в последние VS, кстати, встроен).
>>11420721. Программы для всяких кастомных крошечных микросхемок. Обычно там свои IDE (не всегда) и тулчейны (всегда), и это не совсем типичный С++, скорее просто С с классами. У данных девайсов могут веселейшие ограничение типа 32кб оперативки, отсутствие Heap'a вообще, и прочее. 2. Да, писал с официальным аддоном, все норм. Причем цмейк тут у предыдущего оратора я не понял, но qtquick да, не поддерживался. Мое скромнейшее имхо в том, что удобство студии перевешивает убогость qt creator'a, даже если надо немного поебстись с аддоном.
>>1142082Получается, Arduino - сорт оф эмбед?
Антон, я пишу не на плюсах, а на си с классами. Что делать?
>>1142185
>>1142189В том то и дело, что на это у меня агрессия.
Бля, как я заебался, в общем пытаюсь сделать свой велосипед - режим подсветки для клавиатуры
>>1142345Бля, обосрался даже тутДетектить кейпресы - ✔Делать всякую хуйню - ✔Иметь хоть какую-то логику - ❌В общем че я сделал, завел вайл который просит Сдк клавы задектить мне кейпрес, если детектит то срет мне в другую функцию, а я в этой функции делаю что-то еще, теперь блять нужно как-то сделать так, чтобы если я нажал кнопку, эта кнопка подсветилась, попытался через треды и детач, но получилась хуйня, жму кнопку и жму её опять, два треда как альфачи дерутся за ебаную посдветку и кнопку хуярит то ярко, то тускло, пока не погаснет, как вообще логику сделать для этой хуеты?
>>1142185что хочешь то и делай. тебя никто не заставляет использовать все фичи языка. если твои "си с классами" сообразны задаче, то пиши на них. как грится: "ты платишь лишь за то, что используешь".
>>1142351Блять, опять обосрался, нужно сделать чтобы она не просто подсветилась, а ушла из полностью яркой в погашенную, 256 -> 0, такие дела, помогите или подкиньте идей каких-то
>>1142351>завел вайл который просит Сдк клавы задектить мне кейпресцпу в соточку бьёт?
>>1142354Ты хоть что за клавиатура скажи. И откуда SDK брал?
>>1142351Ну учись бороться с race-condition, хули. Ебани там очередь какую-нибудь, блокировок понаставь.
>>1142356Если бы там, с учетом того, что я сделал, должно было бить в 2 соточки, а бьет в 1 процент макс, это при этом что два вайла и куча потоков>>1142358CM masterkeys pro L rgb, брал с их сайта>>1142359Да я итак на кнопки очередь ебанул, че дальше делать не ебу
Двач, есть ли смысл делать геттеры/сеттеры когда в них смысла нет и отдать пользователям класса просто публичную переменную? Просто в отличии от других языков, в C++ я не видел что-бы кто-то оставлял в классах публичные переменные вместо геттеров/сеттеров.
>>1142363Ну если под "пользователями" класса ты понимаешь себя любимого, то не похуй ли?
>>1142351> В общем че я сделал, завел вайл который просит Сдк клавы задектить мне кейпрес,Что-то я в их пдфе функция для получения клавиши не вижу: https://makerhub.coolermaster.com/custom-lighting/assets/sdk/sdk-document.pdfМожет просто сделаешь старый добрый глобальный хук в винде?
>>1142371Да забей ты хуй на их SDK, я хук уже делал, да у них в SDK все есть(SetKeyCallBack()), там просто в самом SDK Тайваньские комментарии от 2008 года, а на сайте 3/4 SDK
>>1142373Короче, почитал про эти рейс кондишон, пиздаааа, я ж головой ебанусь там, ну да ладно, пара вопросов:Как можно избавиться от бесконечных циклов чтобы задектить кейпрес и можно ли вообще от них избавиться? Как один тред бить по голове, если он лезет вперед другого и срет ему в руки?
>>1142373Так в чём проблема? Ты хочешь убрать дребезг (debounce)? Ну, таймер тебе в руки. После прихода сообщения устанавливаешь таймер, по окончании которого он вызывает функцию установки цвета с последним сообщением. При каждом новом сообщении таймер сбрасывается, и пришедшее сообщение ставится последним пришедшим. И так для каждой клавиши.
>>1142380> При каждом новом сообщении таймер сбрасываетсяТочнее сбрасывается и устанавливается вновь.
>>1142380Алсо, если есть такая логика: Нажатие -> Ярко -> Нажатие -> тускло, то чтобы не терять слишком быстрые нажатия клавиш, можно добавить Atomic-переменную, которая будет считать нажатия с момента последнего срабатывания таймера. Таким образом можно будет сохранить логику и при этом игнорировать слишком быстрые изменения.
>>1142390> AtomicХотя её будет мало. Лучшеиспользуй полноценный мютекс. http://en.cppreference.com/w/cpp/thread/lock_guard
>>1142390На счет атомиков гуглил, но чет хз, логика такая, нажатие->кнопка и 4 ближние к ней загораются ярко->изначальные 5 кнопок чуть тускнеют, загорается следующий слой кнопок(ряд/колонка + 1)->опять кнопки предыдущий стадии тускнеют(кнопки самой первой стадии уже почти погасли) загорается следующий слой и на этом следующие слои больше не загораются, все предыдущие уходят в фейд, вот на моменте фейда и нажатие кнопок которые задевают уже нажатые кнопки проблема
>>1142394Бля, а мютекс может помочь, спасибо, попробую потестить потом
>>1142395У тебя там лапша из ифов небось? Наворачивай MVC. Делаешь контроллер. Он подписывается и получает вызовы колбеки (тоесть метод контроллера передается как колбек в SDK). И связан с моделью. Модель (предположительно) сосоит из массива с яркостями кнопок. По вызову колбека контроллер передает модели инфу что нажата такая то кнопка (вызывает метод модели "кнопка нажата"). Модель обновляет свою инфу - пробегается по всем кнопкам и у всех кнопок где яркость больше нуля уменьшает яркость и добавляет в массив обновленных кнопок, после этого яркость нажатой кнопки и соседних повышается до максимума и их айдишки тоже добавляются в массив обновленных кнопок. После этого этот массив передается контроллеру. Контроллер разгребает массив обновленных кнопок и посылает в SDK команды с новыми яркостями. Все ждут нового колбека. Естественно, это как вариант. Может повляют какие именно возможности предоставляет SDK. Что-то подобное можно и на лапше ифов сварганить. Если совладаешь с таким то можешь дальше навернуть абстракций, например DI - всю логику по которой определяется яркость кнопок выделить в отделную стратегию. Модель будет заниматься только собственно хранением инфы, общением с контроллером и вызовами стратегии. Если тебе захочеться изменить правила по которымподствечиваются кнопки - тебе нужно будет только заменить стратегию.
> атомиик!> мьютекс!> запускай таймер!> наворачивай MVC!А могли просто взять FRP-фреймворк и сделать throttle.
>>1142451Только не throttle, а debounce, как я и писал. Можно сделать на https://github.com/Reactive-Extensions/RxCpp если нужен именно С++. Только вот нужно хоть как-то понимать что такое реактивное программирование, а он даже про мютексы не в курсе.
>>1142460>Только не throttle, а debounceДа, debounce более правильное название. Я решил сохранить терминологию из кода на картинке.
>>1142189Ох нахлебался я от парня, который темплейты как недо-миксины использовал. Просьба всему треду - используйте темплейты по назначению, а не как средство превратить код в кашу.
>>1142030на VS2017 инсталлятор жи, там все настраивается легко
>>1142363Геттеры/сеттеры вообще зло, особенно которые "лишь бы были". Могу пояснить поподробнее где-нибудь.
>>1142652Поясни-ка.
>>1142681Ну вообще всё помещается в одну фразу:Don't ask for the information you need to do the work; ask the object that has the information to do the work for you.Если у тебя весь код в геттерах и сеттерах, то это может (но не обязательно) свидетельствовать о проблемах в архитектуре.Это не всегда так (а в каком-нибудь шарпе или спринге геттеры и сеттеры вообще являются НЕЗЫБЛЕМЫМ ЦЕНТРОМ МИРОЗДАНИЯ, вокруг которого всё крутится), так как некоторые хитрые алгоритмы работы с объектами не могут без этого обойтись (либо требуют один рефакторинг за другим снова и снова), поэтому если ты видишь, например, в плюсах, что тебе оба класса надо значительно перекраивать, чтоб изменить логику их работы, то можно вместо этого дать геттер в одну сторону или сеттер с поинтером/референсом в другую (тут уже тоже надо смотреть по ситуации, чтоб выбрать из двух зол меньшее, иначе иногда получаются совсем дикие цепочки, где референс/поинтер передается на 3+ родителя вверх / ребёнка вниз, потому что там что-то с ним надо сделать).А создание геттера и сеттера для каждого поля — вообще слабоумие (ну или необходимость, если этого требует какой-нибудь слабоумный фреймворк, который не может адекватно воспользоваться конструктором), потому что это равнозначно public type x, но лишь с другой формулировкой. Инкапсуляция, понятное дело, идёт по пизде.А вообще вот статья:http://www.yegor256.com/2014/09/16/getters-and-setters-are-evil.html
>>1142700Туда же.https://www.javaworld.com/article/2073723/core-java/why-getter-and-setter-methods-are-evil.html
>>1142577>>1142700> а в каком-нибудь шарпе или спринге геттеры и сеттеры вообще являются НЕЗЫБЛЕМЫМ ЦЕНТРОМ МИРОЗДАНИЯ, вокруг которого всё крутитсяТому що это единственный способ сделать виртуальную переменную, которая определена в интерфейсе. Множественное наследование ведь не завезли.
>>1142707>множественное наследование не завезлиИнтерфейсы для кого придумали?
>>1142740Ну так и переменные в интерфейсе можно определить только геттерами/сеттерами. Ты бы мой пост прочитал сначала.
>>1142747Что-то я слепой пиздец.
>>1142394Короче получилась хуета, которая послала мою многопоточность нахуй, шо делать не знаю...
>>1142082> Мое скромнейшее имхо в том, что удобство студии перевешивает убогость qt creator'a, даже если надо немного поебстись с аддоном. Кстати, для студии рекомендую использовать недавно релизнувшийся verdigris. Там всего два hpp-файла добавить в проект. Тогда вместо emit, slots и прочих непотребностей можно будет использовать старые добрые макросы и не смущать intellisense и всякие статические анализаторы. Т.е. в итоге получается чистейший C++ без каких либо дополнений. Алсо, qt quick писать вполне себе можно. Просто нужно при создании проекта подключить в аддоне нужную библиотеку, и в готовый *.qrc-файл добавлять qml-формы с гуем. Ну и заменить сгенерированный main.cpp файл на qt quick-ный.https://github.com/woboq/verdigris
>>1142806> рекомендую использовать недавно релизнувшийся verdigrisТолько из недостатков: ему нужен C++14 конпелятор.
Сап ананасы. Хотел такой вопрос задать. Начал учить плюсы (до этого был си диез) чисто для себя. В последствии хочу вкатитца в ИИ/микроконтроллеры/реверс- инженегринг шото из этого (не хочу я ваш питон, нинужон он мне). Взял книжку лафоре. Оч годная. Прохожу с примерами где-то 1 главу за 1-2 дня. День читаю главу\разбираю какую- никакую алгоритмитизацию примеров, другой день - решаю примеры с книжки и кодварса. Вопрос. Сколько примерно времени пройдет, прежде, чем я начну понимать что к чему и куда мне двигаться ?
>>1142809Недостатком является отсутвтсие С++14 компилятора на твоей работе
>>1142964~полгода минимум, а то и год.
>>1142964> чем я начну понимать что к чему и куда мне двигаться ? Для программирования мк C++ нинужен. Достаточно Си с классами, а на изучение этой хуйни много времени не уйдёт. Ты же не собираешься постигать template-fu? Для мк более важно понимать как работают процессоры, про организацию памяти, про способы взаимодействия с периферией и прочее. Короче работа с железом. Для нейросетей нужно изучать алгоритмы, и опять таки ЯП тут не так важен.
>>1142992Для MSVC требуется минимум версия 2017, поскольку он использует фичи C++17 для обхода багов компилятора. Там вообще хеадери пиздец какие сложные. Как такую хуйню вообще написать можно?https://github.com/woboq/verdigris/blob/master/src/wobjectdefs.hhttps://github.com/woboq/verdigris/blob/master/src/wobjectimpl.h
>>1143001Это не так сложно, как кажется. Надо понимать, что вся эта компайл-тайм параша - фактически свой собственный язык
>>1143011Там не просто теймлейты. Они ещё приправлены макросами и на всём это сделан синтаксический анализатор и транслятор.
КТо нибудь пробовал к vs2017 прикрутить gcc вместо/рядом с vc++? Получилось? Есть ссылка на гайд рабочий? Как себя потом intellisence ведет?
>>1143126gcc только на ремоутной линуксовой машине, или локально через WSL.Для локальной шиндоразработки вроде как-то clang\LLVM можно прикрутить, но не пробовал.
Я недавно вкатился в C++ из C#. И мне кажется я пишу не на C++, а на C# со странным синтаксисом. Особенно касаемо генериков и абстрактных классов. Например мне нужен класс с двумя типами, которые должны наследоваться от interface1 и interface2 соответственно и должны иметь конструктор не принимающий аргументов.В сишарпе я это опишу так:public class azaza<T1, T2>where T1: interface1, new()where T2: interface2, new() {...}В плюсах пишу так:template <typename T1, typename T2, typename = std::enable_if_t<(std::is_base_of_v<interface1, T1> && std::is_constructible_v<T1>)>, typename = std::enable_if_t<(std::is_base_of_v<interface2, T2> && std::is_constructible_v<T2>)>>class azaza {...}Это нормальный C++ код или надо делать как-то по-другому?
>>1143347> typename = std::enable_if_t<(std::is_base_of_v<interface1, T1> && std::is_constructible_v<T1>)>,> typename = std::enable_if_t<(std::is_base_of_v<interface2, T2> && std::is_constructible_v<T2>)>>Хотя судя по тому какие непонятные ошибки компиляции выходят при несоответствии проверкам, наверное лучше добавлять в конструкторstatic_assert(std::is_base_of_v<interface1, T1> && std::is_constructible_v<T1>);static_assert(std::is_base_of_v<interface2, T2> && std::is_constructible_v<T2>);вместо аргументов шаблона?
>>1143347И ещё один вопрос. Если я захочу использовать статический полиморфизм вместо динамического, то единственный нормальный способ проверить соответствие "интерфейсу" аргументов шаблона (пока не сделали концепты), это создать такие структуры:template<typename T>struct interface1_check{ static_assert(std::is_class_v<T> && std::is_default_constructible_v<T>); static_assert(std::is_same_v<decltype(std::declval<T>().method()), void>);};(в данном случае тип должен быть классом, иметь конструктор по-умолчанию и метод `method` который без аргументов возвращает `void`)а затем наследовать эту структуру вот так:template <typename T1>class azaza: interface1_check<T1> {...}?Просто я не хочу, чтобы ошибки вылезали только когда полиморфный объект будет непосредственно использоваться. Хочу, чтобы всё вылезало ещё при создании класса azaza.
>>1143437Хотя, ещё можно сделать так:template<typename T>struct interface1_check_t{static constexpr bool value = std::is_class_v<T> && std::is_default_constructible_v<T> &&std::is_same_v<decltype(std::declval<T>().method()), void>;};template<typename T>constexpr bool interface1_check = interface1_check_t<T>::value;template <typename T1>class azaza {static_assert(interface1_check<T1>);...}Код выглядит красивее, правда сообщение об ошибке стало похуже.
>>1143450Наверное гибрид будет самым лучшим решением. Как-то так:template<typename T>struct interface1_check_t: std::true_type{static_assert(std::is_class_v<T> && std::is_default_constructible_v<T>);static_assert(std::is_same_v<decltype(std::declval<T>().method()), void>);//static_assert(std::is_same_v<decltype(std::declval<T>().method1()), bool>);};Тогда если будет много методов, можно будет сразу увидеть какой не совпадает.
>>1143437>>1143450>>1143468Это какой-то вайп?
>>1143518Чувак, похожу, шаблонов объелся. Несите сюда пуфон
>>1143526>> похожеИзвините
>>1143518Нет, я просто изучаю C++ и спрашиваю, правильно я делаю или нет. Вот придумал макрос для определения наличия метода в типе#define PP_CAT(a, b) PP_CAT_I(a, b)#define PP_CAT_I(a, b) PP_CAT_II(~, a ## b)#define PP_CAT_II(p, res) res#define LINE_NAME(base) PP_CAT(base, __LINE__)#define HAS_METHOD(type, method, result) \template<typename, typename = std::void_t<>> \struct LINE_NAME(m) : std::false_type {}; \template<typename U> \struct LINE_NAME(m)<U, decltype(std::declval<U>().##method())> {\static constexpr bool value = std::is_same_v<decltype(std::declval<U>().##method()), ##result>;\}; \static_assert(LINE_NAME(m)<##type>::value);Теперь можно просто написать:template<typename T>struct interface1_check_t{static_assert(std::is_class_v<T> && std::is_default_constructible_v<T>);HAS_METHOD(T, method, void)HAS_METHOD(T, getBool, bool)};и выдаются очень красивые ошибки при несовпадении сигнатуры.
>>1143548Ты какую-то хуйню делаешь.
>>1143585Чому? Я "переизобретаю" концепты (которые обещают к C++20), чтобы компилятор не выводил кучу непонятных ошибок при работе с типами из шаблонов.
>>1143548Пиздец, хотел научиться программировать на C++, а тут такие страшные сообщения.Это вы так реально программируете?
>>1143627Нет, это он балуется.
>>1143627> а тут такие страшные сообщения.А что там страшного? Алсо, удалось упростить проверку. Теперь она выполняется один раз, а не два как в предыдущем варианте.#define HAS_METHOD(type, method, result) \struct LINE_NAME(struct) { \template<typename U, typename = std::enable_if_t<std::is_same_v<decltype(std::declval<U>().##method()), ##result>>> \static std::true_type test(void*); \template<typename> static std::false_type test(...); \}; \static_assert(std::is_same_v<decltype(LINE_NAME(struct)::test<##type>(nullptr)), std::true_type>);
>>1143627я подобную хуету на работе пишу фо фан. Проект маленький, всем похуй, что там я и как хуярю. У меня там модерн С++ курильщика во всей красе, рофл
Ииии, последняя версия:#define HAS_METHOD(type, method, result, ...) \template<typename... Args> \struct LINE_NAME(struct) { \template<typename U, typename = std::enable_if_t<std::is_same_v<decltype(std::declval<U>().##method(std::declval<Args>()...)), ##result>>> \static std::true_type test(void*); \template<typename> static std::false_type test(...); \}; \static_assert(std::is_same_v<decltype(LINE_NAME(struct)<__VA_ARGS__>::test<##type>(nullptr)), std::true_type>);Теперь можно проверять как возвращаемый тип, так и типы аргументов.HAS_METHOD(T, method, void) // возвращает void, аргументов нетHAS_METHOD(T, method1, const bool&, int, bool, float) // возвращает const bool&, аргументы int, bool, float
>>1143794> так и типы аргументов.Только вот он их почему-то не проверяет, только количество. При этом никак заставить его сделать это невозможно. Видимо какая-то "фича" `declval` либо я криворук.
>>1143730В реальном коде я и близко к самописным темплейтам не подхожу и считаю их в почти любом проявлении вредными, что они должны быть только в библиотеках общего пользования и самим писать - только схватишь потом, поэтому настоятельно не рекомендую. Но вот ради прикола и самообразования конечно можно. Например, я реализовал монады на концептах, которые "подключаются" к стандартным вещам вроде std::vector и std::optional. И можно делать вещи вродеstd::vector<int> x {1, 10};auto y = x >>= [](int x) { return std::vector<int>{x, x*2}; };Там примерно похожий уровень магии темплейтов, хотя концепты и позволили повысить читаемость.
>>1143851>Только вот он их почему-то не проверяет, только количествоПосмотри в сторону is_invocable. Если нужны точные параметры, то придётся какой-нибудь трейт писать (или использовать бустовский). Смотри: https://stackoverflow.com/questions/9065081/how-do-i-get-the-argument-types-of-a-function-pointer-in-a-variadic-template-clahttp://www.boost.org/doc/libs/1_41_0/libs/type_traits/doc/html/boost_typetraits/reference/function_traits.html
Что делать, если я ленивое хуйло и даже не могу прочитать первую книжку? Как заставить себя
Короче я ебанутый, но мне нужно нацти ответ на этот вопрос, есть консольная приложуха, в ней дрочево с битмапой, создаю битмапу 22на 6, крашу ее в красный, сохраняю как пнг, круто, теперь делаю функцию, которая мутит всякую хуцню с битмапоц и изменчет цвет раз в пол секунды или быстрее, да, я успеваю сохранять битмапу, но просомтр картинок не успевает так бытсро обновлятьсч и я из за этого пропускаю какие то моменты, вопрос следующий, как эту ебаную битмапу видеть как изображение в риалтайме???да я бы мог перецти на какую нибудь хуету вроде цлр, сделать канвас в канвас запихнуть битмапу и ноль проблемы, но я бы и собаку тоже мог выебать, но мне нкжно именно в консоли это все делать, думал на счет того, чтобы вывести в консоль тупо один и тот же символ и тупо красить отпут консоли в разные цвета, но там цвета ограниченные, вроде бы можно через констыли сделать ргб, но костыль нашел только один с нулем апвотов на стаке, так шо надежды на это особо нет
>>1144011https://stackoverflow.com/questions/931093/how-do-i-make-my-program-watch-for-file-modification-in-c
А вот такой вопрос, есть ли какой простой способ сделать регулярку рекурсивной? Как я понял, в стандарте такая вещь не поддерживается, надо использовать буст или другую библу, но такой возможности нет. Суть проблемы - есть условная строка, которая разбивается на подстроки согласно регулярке, но эти сами подстроки тоже могут содержать подстроки и так далее.
>>1144051Регулярные выражения, совершенно внезапно, могут матчить только регулярные языки. Это ограничение _частично_ обходится разными реализациями, но только частично. Погугли что такое регулярные языки и why you shouldn't parse html with regex.
>>1143964> http://www.boost.org/doc/libs/1_41_0/libs/type_traits/doc/html/boost_typetraits/reference/function_traits.html> The template argument F is a function type, note that this is not the same thing as a pointer to a function. Видимо проблема в этом. У меня именно ссылка на функцию. А так я делаю так же как и стандартный std::invoke_result из C++17, (только вместо std::declval<Args>()... надо написать std::forward<Args>(std::declval<Args>)... чтобы он prvalue-ссылки не убирал). И даже если заменить мою самописную проверку на `invoke_result`, он тоже работает точно так же неправильно. А именно: все примитивные типы неявно приводятся друг в дружку, а вот типы классов он определяет нормально.
>>1144064> У меня именно ссылка на функцию.Точнее указатель.
>>1143794Таки сделал эту хуйню. Кто сделает мне code review? https://pastebin.com/sGCwjXcUПрикольно писать функции времени компилирования на чистом Си, поскольку фичи С++ не поддерживаются.TODO: портировать на GCC и CLANG. Сейчас работает только с MSVC.
>>1144140Немного исправленная версия: https://pastebin.com/fx29X2mM
>>1144143Добавил поддержку проверки указателей на функции в агрументах: https://pastebin.com/VuaqADVsА вот с возвращением указателей на функции бида-бида. Если с простыми функциями ещё можно замутить простую предварительную проверку на SFINAE, то вот при возврате указателя на метод класса только вручную писать проверку. Слишком сложно. И так сойдёт.
>>1144172Одно слово: github
>>1144207Что гитхаб? Выложить туда мою библиотеку рефлексии для бедных? Тогда надо ещё поддержку GCC/CLANG добавить (там нужен макрос __PRETTY_FUNCTION__ вместо __FUNCSIG__ и формат функций/шаблонов чуть другой). Ну и тесты + CI. Я вообще гитхабовские библиотеки не скачиваю, если там нет CI.
>>1141858Конечно нет.
//8===================================3#include <iostream>class A{public: int foo(double x) {return 0;}};class B: public A{public: int foo(short x) {return 777;}};int main(){ B b; std::cout << b.foo(1.1) << std::endl; return 0;}//8===================================3Чому этот код у меня выдаёт 777 ? По идее ведь 1.1 - это double, и потому должен вызваться метод класса А. Или если метод с именем foo() найден внизу иерархии наследования, то под него уже подгонится полученный параметр (ну тип 1.1 урежется до 1)? В джаве не так, там аналогичный код вызвал метод суперкласса.Есть ли специальное выражение, по которому можно это загуглить подробнее?
>>1145025Вообще http://en.cppreference.com/w/cpp/language/overload_resolution плюс http://en.cppreference.com/w/cpp/language/adlКонкретно в твоем случае проблема в том что поиск (вообще) происходит по имени, начиная с самого узкого скоупа постепенно его расширяя пока не будет найдено имя. Когда найдено имя, только тогда в текущем скоупе ищется подходящий вариант. Если его нет то поиск прекращается. Тебе нужно или напрямую указывать в каком скоупе искать имя b.A::foo(1.1), или включить функцию суперкласса в скоуп наследуемый класс, добавив using A::foo; где-то среди деклараций методов. Какого хуя так сделано не знаю, может хотели максимально ограничить видимость "по умолчанию" методов классов чтобы не происходило непонятной хуйни с вызовом каких-то странных методов.
Что ему нахуй нужно?inb4 посадить программиста за клавиатуру: ха-ха
>>1145304точку с запятой он ждет, а не запятую
>>1145306Я в глаза ебусь, извините.
>>1145307кстати, твой алгоритм копирования настолько неэффективен, насколько это вообще возможно.
>>1145308Да это для лабораторной, там обязательное условие - использование буферной переменной. Хотя я и в полевых условиях делал бы что то такое же, либо memcpy
>>1145310Может ты задание не правильно понял? Условие какое-то слишком уж тупое.
>>1145330Не не, 5% выполнения за это задание. Суть всей лабораторной - подготовка различных задач под распараллеливание под openMP
>>1145333> распараллеливание > буферная переменнаяНеплохо.
Вечер в хату, подскажите, что он хочет и как это исправить? Пытаюсь третью неделю в кресты с абсолютного нуля, переписал листинг этого говна из книги Лафоре, выдает ошибку ссылаясь на 19 строку, гугол молчит, надежда только на вас, просветлённые
>>1145717Раз уж занимаешься байтоёбством, то используй c_str и memcpy.http://ru.cppreference.com/w/cpp/string/basic_string/c_str
>>1145717strncpy
Какая IDE самая пиздатая ?
>>1145752Windows - Visual StudioLinux - QtMac - Xcode / Qt___Еще можно глянуть CLion, но мне лень и она на java.
>>1145752Любая, поддерживающая cmake-проекты.
Как при создании экземпляра класса string сделать так чтобы в нем имелось место для 4 членов без такой хуйни как на пике?
Кто шарит в ImGui Есть ли ру документация ?
>>1145960>место для четырёх членовКакое ещё место и для каких членов?
>>1145971Место для четырех символов.
>>1145960buffer.reserve(4);
>>1145960в конструкторе задай
>>1145961программист без знания английского должен писать только на 1С
Че тред на дне?
Что, к вам или в с# или в яву?
>>1146896Все заебись по-маленьку.
>>1146975Ну тогда к вам, нет! к нам! гвахаха
>>1146896в JS-петухам
Отдельный qt-тред есть или всё тут можно поныть?