Это копия, сохраненная 29 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
⚹ https://github.com/sosachbot/cppthreadhat/wiki
Ответы на вопросы:
⚹ https://en.cppreference.com/w/
⚹ https://www.cplusplus.com/reference/
Для указателей: ⚹
Прошлый: >>1871183 (OP)
2 из 3 оппиков проприетарные!
у нас тут С++ тред, а не петушиная параша
Тупая картинка. То, что на современных плюсах делается в одну строку, на С надо пилить на 20 строк. Да даже плевать на плюхи из коробки. Автоматический вызов деструктора - это уже величайшее изобретение человечества, из которого вытекли смарт поинтеры, локеры мьютексов и другое авто управление ресурсом.
- иметь кнопки с настройками и циферки секундомера как два разных окна
- держать окно с циферками поверх всех окон, в то время как окно с настройками было бы НЕ поверх всех окон или могло бы сворачиваться в трей отдельно от окна с циферками
- реагировать на комбинации нажатых клавиш даже если окно секундомера не активно
Ну пока наверное всё. Пока асилил логические/циклические конструкции, вот это всё, ООП прям на четверть шишечки (вроде всё понел, но хуй знает как пойдет). Скачал Qt для своей цели, планирую посмотреть на Ютубе какой-нибудь плейлист по обучению Qt и пытаться что-то зделоть параллельно гугля код Qt приложений и секундомеров в целом.
Насколько сильные по шкале от 1 до 10 меня ждут обосрамсы и превозмогания?
Все это проще на шарпе написать.
С динамической памятью -то понятно. А тут я хз как
(в идеале вообще чтобы можно было увидеть все имена таких переменных, но это совсем хотелки)
Сначала effective modern c++ прочитай а потом уже переходи к конкретной сфере.
Да, а что?
Без задней мысли ищешь размер data & bss в листинге и складываешь.
576x1024, 0:10
>Гораздо лучше будет начать с другого языка и базовых вещей алгоритмы, архитектура пека, операционные системы, а уже потом вернуться к крестам.
У меня типичная ситуация: я в 2014 еще будучи школяром выбрал ПЛЮСЫ как язык для вката (до этого знал qbasic и Pascal, но эту хуйню даже в расчет не беру, поэтому будут плюсы первыми), прочитал книгу "С++ для чайников", дошел до указателей, охуел, закрыл книгу. Вернулся через два года, прочитав параллельно Таненбаума про архитектуру ПК. Дочитал ту книгу "для чайников" полностью, но особо не въехал, при попытке самостоятельного кодирования не мог ничего сложнее чем калькулятор сделать. Еще через два года поступил на ИБ, там был сем где мы кодили на плюсах, плюс я параллельно прочитал Лафоре про плюсы и сделал все задания. Но при попытке самостоятельного кодинга ситуация почти полностью повторилась. Сейчас решил заново изучить плюсы, чтобы работать с Unreal Engine, но решил сделать это более цивильно, чтоли.
Собсна у меня вопрос по строчке, приведенной выше гринтекстом: я могу уже приступать к изучению плюсов, или мне надо изучить еще какой литературы про устройство пеки/ос/железа/памяти/ассемблера нахуй/неба/аллаха?
Огромная просьба не крыть меня хуями, и не орать о том, что такому дауну как я даже пытаться нихуя не надо, а сразу идти в макдональдс. Спасибо заранее
Бери да читай Страуструпа. Там минимум информации об >алгоритмы, архитектура пека, операционные системы
ты получишь.
Понял, спасибо
никак
такие вещи на собесах не спрашивают, лал.
А почему в 17 это собирается?
Неверно вопрос задал. В зеленом квадрате ничего менять не нужно
Никак, initializer_list<int> не кастится в указатель на unsigned
Тогда переделай конструктор на вектор или задрочись с шаблонами и сделай std::array
Так если на вектор переделывать, нужно дрочиться будет с копированием элементов и как в си с памятью работать. Про шаблоны я даже не понял о чем ты, если честно.
>>889627
Да это не мой код собственно, это из каты. Если кому интересно:
https://www.codewars.com/kata/58c8c723df10450b21000024
> Так если на вектор переделывать, нужно дрочиться будет с копированием элементов и как в си с памятью работать. Про шаблоны я даже не понял о чем ты, если честно.
https://wandbox.org/permlink/exdgSm1CtJUsK4a1
Исходя из того что я там прочитал, ты должен копировать элементы.
Переживаешь за тех, кто не сможет сюда перекатиться? А ведь они так и будут сидеть в прошлом треде, пока он не уйдёт в архив, и тогда им придётся уйти из C++.
postfix ++ возвращает rvalue, или как?
Если быть точнее, то prvalue
https://en.cppreference.com/w/cpp/language/operator_incdec
The result is prvalue copy of the original value of the operand
17 и 20 стандарты - это сахарочек и суперадванцед фичи. Для изучения - С++14 достаточно, серьезно.
Ты хотел сказать CFront
Помогите советом пожалуйста. Я хочу вращать плоскую фигуру в 3 осях, и отображать получившуюся проекцию на плоскость картинки.
В документации Qt нашел подходящий метод rotate, но почему то он вращает фигуру неправильно, смещает и искажает ее. Как сделать правильно? Может есть другие методы?
transform.rotate(60.0, Qt::YAxis);
poli->setTransform(transform);
На второй картинке результат.
Да изучить я уже более менее изучил QT. Хочется как то окунуться в более продвинутую часть, а информации по ней хуй да нихуя.
Это я на пикче кста.
Похоже, ось Y это "вверх", а тебе нужно вращать его с осью, направленной на "экран". А это обычно ось Z.
С кутэ не работал-кун
Я кручу ее по клику мыши. Неправильно крутится, очевидно же.
Ось Y это вниз обычно, а Х вправо. Вокруг оси Z правильно вращает кста. А вот вокруг X и Y искажать начинает почему то.
Я ее не трогал вообще. Просто создал QTransform, крутанул его и сделал setTransform() для QGraphicItem-а.
Читай Николая Джоссутиса по С++17, и жди пока он допишет про С++20, хуле
>А вот вокруг X и Y искажать начинает почему то
Правильно. Представь как ты в 3D вращаешь по оси X или Y.
Ну в OpenGL то да, но у меня здесь оконные координаты, получается.
Представляю, это может быть правильно, только если ось Z направлена ко мне под каким то углом, а не точно перпендикулярно монитору. А она направлена перпендикулярно монитору.
если виртуальная функция занимает место поинтера, то она прост по другому названный указатель на функцию?
Кажется, твой QTransform делает тебе перспективу, откуда такой и эффект.
QTransform differs from QMatrix in that it is a true 3x3 matrix, allowing perspective transformations. QTransform's toAffine() method allows casting QTransform to QMatrix.
Чел...
А еще у меня угол поворота с каждым разом становится все меньше и меньше, хотя я ожидаю, что он всегда будет на 60 градусов поворачивать.
А еще когда он все таки поворачивается на 90 градусов, он дальше не поворачивается, хотя по идее должен крутиться и дальше, в том числе и в отрицательном направлении.
Только мне бы сначала разобраться, почему при повороте происходит искажение.
Я читал вчера весь вечер, но как то упустил этот момент.
> А еще у меня угол поворота с каждым разом становится все меньше и меньше, хотя я ожидаю, что он всегда будет на 60 градусов поворачивать.
Функция принимает угол в радианах или градусах? Угол там суммируется при повороте или просто присваивается новое значение?
Градусы. Скорее всего он просто каждый раз умножает на cosa текущую длину по оси Х. А для того, что мне нужно, он должен умножать на cosa изначальную длину фигуры по оси Х. Хз, как это контрить, видимо я должен сам ручками скейлить фигуру после поворота, видимо так и задумано. Плюс еще надо каждый раз ручками сдвигать фигуру подальше от оси Y, иначе она к ней постоянно стремится.
Проиграл.
не?*
но только для статичных мемберов
- главный app.cpp, дополнительный alpha.cpp
- alpha.h инклюд в оба, но ввиду указания ифндеф в какой-то один, какой?
- если в app заинклюд а в alpha.cpp нет - тогда откуда pts знает о SOME, ведь она const а значит static и должна быть видна только в alpha.h & app.cpp
-если в alpha заинклюд а в app.cpp нет - откуда в мейн знает о pts?
подозреваю конечно что это тупой вопрос, наверное в app инклюдит сначала а pts просто начинает искать SOME в области видимости app.cpp
ну короче можете начинать обсирать
энивей эта залупа в ^1488 раз сложнее пистона и в столько же интереснее!
Тут прикол в том что дефайн объявляется не глобально на весь проект. А только конкретно внутри каждого cpp.
Поэтому на самом деле и app.cpp и alpha.cpp инклюдят все содержимое из alpha.h...
Вот так:
- app.cpp инклюдит alpha.h и объявляет дефайн из ифндефа.
- alpha.cpp инклюдит все содержимое из alpha.h, потому что оно не знает ничего про app.cpp и то что там был дефайн
Вся суть что в с++ единица трансляции (тобишь файл cpp) не имеет никаких связей с другими единицами - она не знает ни о каких переменных /дефайнах/функциях из других единиц.
Поэтому, какие бы дефайны не были объявлены в app.cpp, но в alpha.cpp их нет. Тяжелое наследие древних времен, когда код писали в одном-двух файлах.
Так для чего нужен этот ифндефайн? А для того, что у тебя может быть длинная цепочка инклюдов, и чтобы внутри например app.cpp этот alpha.h не вставлялся стопятсот раз.
Короче, смотри как
- каждый cpp файл независим и ничего не знает о содержимом других cpp файлов
- исключение, если cpp файл видит что-то типа extern, тогда он знает что эта переменная/функция описана где-то в другом месте и это будет разруливать уже линковщик, а не компилятор.
- команда include - это не какой-то там подключение чего либо, как в других языках. Это команда "взять содержимое из файла, и вставить его в место этой команды". Вставлять можно что угодно - например строки текста в стринг
Поэтому если еще не понял, просто скопируй все содержимое из файла alpha.h, и вставь в оба файла app.cpp и alpha.cpp это содержимое вместо инклюда. Тогда по компилятору поймешь как работают дефайны
p.s. сейчас лучше использовать "#pragma once" вместо ифндефайна - быстрее будет компилироваться и не придется придумывать ебанутые названия дефайнов.
каждая виртуальная функия занимает место в классе? или только 1 указатель за полиморфизм
Согласно стандарту, это имплементейшн-дефайнд™. Ну а вообще всё хранится в виртуальной таблице, так что да - один указатель. Можешь сдлеать sizeof на различные классы и посмотреть, когда он появляется.
Похоже на установщик драйвера от нвидии.
Этл штука для клепания интерфейсов. Огромная либа. Там пол стандарта, но в своей реализации
QT - это QuickTime, такая эппловская штуковина для слушания музычки.
А Qt - это фреймворк, в первую очередь для создания десктопных приложений с окошками, но в нём есть ещё всякое, в частности, работа с сетью и БД.
Также есть Qt Creator -это уже IDE с поддержкой Qt.
> WinAPI
А ещё LinAPI, MacAPI, AndroidAPI ...
> неосиляторов
Осиляторы, наверное, вместо одной строчки на Qt каждый раз пишут пикрил, где в каждом блоке кода по 100 строчек заполнения структур, выделения памяти, дескрипторов, ресурсов, вызовов процедур, проверок, обработок ошибок.
print("Всё так")
Зачем создали язык си++, ведь можно было улучшать си. В чем профит ? Я гуглил ответа не нашел
Сишка должна быть простой насколько возможно, чтобы было легко написать компилятор даже для самых экзотических платформ и мочь портировать на эти платформы существующий код. Можно было бы улучшить сишку до уровня крестов и юзать на таких платформах подмножество, но это подмножество было бы везде разное, и вместо универсальной сишки получилось бы дохуя диалектов.
Нет, оно означает что мы улучшили си, но вы получили прежнее значение.
Комитет Си невероятно консервативный, хрен чего добавишь. Поэтому все пишут на GNU C, а не обычном
Так C++ это и есть улучшенный С. Просто в Си добавили классы и шаблоны, а дальше пошло поехало.
Это больше похоже на правду
На голой сишке приходится очень много однотипного кода писать, и при этом в некоторых местах требуют именно сишку из-за её простоты.
Матрасы и шаблоны плохо на скорость компиляции влияют. Есть конечно кросскомпиляция, но с ней тоже возни хватает.
Представляешь, как поверх таких макросов появится овердохуяллион кривых языков без документации? Читая исходники проектов на сишке, будешь каждый раз учить кучу языков?
> cmacro
M4 давно придумали.
Тогда иди к сишникам, там пишут алгоритмы самостоятельно.
>и мочь портировать на эти платформы существующий код
Пишешь int на десктопе: 32 бита, всё работает.
Пишешь int на ардуину: программа багает по непонятной причине, у тебя нет COM-порта, чтобы отладить, бежишь покупать новый программатор, он не работает, для него нужны проприетарные драйвера, закачиваешь проприетарные драйвера и прошиваешь прогамматор, программатор видит, что ты работает не с винды и говорит строгое "нет", бежишь за новым программатором, бежишь за новым ПК с ком-портом, принтфишь ошибки в UART, спустя час узнаёшь, что здесь sizeof(int) равен двум байтам.
> узнаёшь, что здесь sizeof(int) равен двум байтам.
А ещё здесь, внезапно, нельзя вызывать функции WinAPI, ой, как же так?
Он может не сортировать и тогда да.
>спустя час узнаёшь, что здесь sizeof(int) равен двум байтам.
Так а тебе никто не обещал что будет определенного размера
Так и называется? Как гуглить?
> Influenced by
> C
Ему же на основе крестов нужно, а не сишки. Если уж сишка, то тут можно и Objective-C, и D предложить.
Вот в каком месте они перегружены? Может если ты пытаешься выучить плюсы со всеми их нюансами за неделю, то да, так может показаться. А иначе нет. Никто же не заставляет тебя в каждой твоей laba1.cpp использовать как можно больше нюансов
Стой. Ты винапи используешь что ли? Там да. Хуйня бывает не удобная, но потом втягиваешься. А так есть всякие штуки из std для упрощения жизни. Можно почти как на питоне писать
>Код на C++, как правило, медленнее аналогичного кода на C приблизительно на 0-20% а в ряде случаев C++ оказывается даже быстрее
И в каких интересно случаях кресты быстрее Си??
Когда на си ручками циклы анроллят. В наши дни переиграть компилятор практически нереально.
Ну например покажи json-либу быстрее крестов.
> Неоптимизированный код на C++, как правило, медленнее аналогичного оптимизированного кода на C++
Меня не интересует кто там что анроллит, мне интересно посмотреть пример кода на С++ который быстрее кода на Си. И Все.
Странная пикча. Рейму бедная и глупая, совершенно не похожа на программистов C++!
Описать структуру с именем TRAIN, содержащую следующие поля: название пункта назначения; номер поезда; время отправления. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив, состоящий из шести элементов типа TRAIN;
записи должны быть упорядочены по времени отправления поезда;
вывод на экран информации о поездах, направляющихся в пункт, название которого введено с клавиатуры;если таких поездов нет, выдать на дисплей соответствующее сообщение.
Надень наушники, там небось еще 8-битка играет, в лучших традициях так сказать
охуительно
Мне лень писать, используй воображение, на си цикл for(int i=0; i<100000;i++)
на c++ перед ним #pragma omp parallel for
Ты утверждаешь, что в C нет OpenMP?
Исключения действительно правильный и годной способ обработки ошибок. Но, сцуко, легаси в котором миллиарды ликов ты уже не перепишешь.
В новых проектах активно в проде использую, брат жив
Ну вот например. Охуенное type safe форматирование обгоняет парашный сишный printf.
При эксепшене где? Если в конструкторе соответствующего класса, то нет, вызовутся только деструкторы объектов-членов, которые успели сконструироваться. И тем не менее, ничто не мешает отловить исключение в конструкторе и зачистить ресурсы хотя за такое и положено пиздить.
Бамп :3
ДС 2,но я никуда не пойду пока не сделаю 7 лаб,а это только вторая и мне нужно УСПЕТЬ ДО НОВОГО ГОДА ААААААААААА
Смотри ёпт, взял пример из офф доки и немного переделал
https://pastebin.com/KHyHf211
Сам еще учу ++
От души братуха,не проверял работает ли твоя прога,но спасибо огромное,я бы год голову над этим ломал
есть какой нибудь дарк веб сайт где можно заработать? а то работы нет нихуя на плюсах
Типа такого
std::vector<std::vector<int>> tmp(10, std::vector<int>(10, 1));
int⚹⚹ ptr = (int⚹⚹)&tmp[0][0];
std::cout << ptr[0][0];
Никак, вектор векторов - это не двумерный массив интов, а одномерный массив указателей на самостоятельные одномерные массивы интов.
Через tmp.data() можно получить указатель на "внешний" массив.
Спасибо, не знал
Да хуита ваш код, ниразу не ide. И вообще майкрософта рот ебал, ща убунту накачу и будет 0 проблем.
Хочу, чтобы единственную нормальную ide вижуалку портировали на линукс, но там в легаси-исходниках всё настолько плохо, что даже на x64 не могут портировать, что там лялех.
Я на vim и gcc сижу. Шланг когда-нибудь потыкаю, к емаксу так и не привык.
Установил vcpkg. Пытаюсь через него подтянуть sfml. Ошибка линковщика 2019: ErrorLNK2019 unresolved external symbol _WinMain@16 referenced in function "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
. Пробывал абсолютно все, что только можно. Вскод вроде как саму либу видит, синтаксис подсвечивает, но все равно почему-то выдает ошибку.
Что за хуйня? Гугол не помогает.
Подсказки для автодополнения внутри шаблонов. Единственная иде, которая может в эту фичу.
>Error LNK2019 unresolved external symbol _WinMain
https://stackoverflow.com/questions/12972134/sfml-linker-error-unresolved-external-symbol-winmain16-visual-studio-2012
Это специфика SFML.
>>892394
В емаксе и виме сидят деды и каргокультисты. Третьего не дано.
Спасибо! Почему-то на этот вопрос не получилось сразу наткнуться.
пчел, как ты используешь свой обоссаный optional, если у тебя в конструкторе происходит неведомая хуйня, требующая обработки? Вставишь булевый флаг валидного состояния объекта в качестве костыля? Камон...
В плюсах ты можешь выжать максимум хотя бы.
Исключения при правильном использовании не дают ебейшего пенальти по рантайму, уже не 2000 год.
Только писать на чистом си - анальный ад. Правильные проекты смотрят, где реально перф проседает, и то переписывают на чистый си, который идеально юзает кэш ЦПУ, а все остальное, за пределами hot-loop'ов можно хоть на джаваскрипте писать.
мб где номера кредитных карточек воруют. и за деньги. джуниор с++ - 0 вакансий
Зверович, залогинься
Ладно бы ты еще Clion посоветовал, но культекреатор это прям классическое попенсорсное малоюзабельное уебанство.
ты явно хотел использовать идиому void_t здесь
> Lower bound бинпоиском ищет или нет?
да
> А если массив не отсортирован он же тоже находит, не?
Хуйню находит нерелевантную
Что-то еще, как вы думаете?
Где связь между бинарным поиском и неотсортированным массивом, ты совсем поехавший что ли?
1) итератор по контейнеру всегда будет проходить в том же порядке, как числа были добавлены или, в моём случае это всё равно, что пройтись по сортированному списку на возрастание.
2) в идеале, константная проверка на есть ли число в контейнере или нет. ну можно, конечно, и log_n
выручай, Стасян.
Ретрограды в консоли пердолькаются, пока VS-боги пишут код
Запили на обычном set, потом проверь, удовлетворяет ли тебя производительность. Если в результате профилирования оказалось, что виноват set, то только тогда можешь начинать думать в сторону танцев вектора и lower_bound
Настраивать её по-моему какая-то пытка, цветовую схему просто так не поменяешь, ЕМНИП. Да и за лицензию надо платить, Community по-моему в коммерческих целях использовать нельзя.
Майки же не просто так выпустили vscode. Это как переход с COM на .Net. Деды продолжают копротивляться, а прогрессивная часть комьюнити уже вовсю перекатывается.
Да я. Ещё вопросы?
VS Code - это же просто текстовый редактор типа Vim/Atom/Notepad++/Emacs/Sublime, где часть функционала необходимо прикручивать сторонними программами, где даже настройки необходимо выполнять через конфигурационные файлы. Или я отстал от жизни?
Для пердоли и такой огрызок - уже счастье. Ведь нормального софта не завезли и не завезут
да, а до этого работал в Blizzard Ent
Описать структуру с именем TRAIN, содержащую следующие поля: название пункта назначения; номер поезда; время отправления. Написать программу, выполняющую следующие действия:
ввод с клавиатуры данных в массив, состоящий из шести элементов типа TRAIN;
записи должны быть упорядочены по времени отправления поезда;
вывод на экран информации о поездах, направляющихся в пункт, название которого введено с клавиатуры;
если таких поездов нет, выдать на дисплей соответствующее сообщение.
Нет :3
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
#include <cmath>
using namespace std;
int main()
{
srand((int)time(0));
int n, m;
cout << "Введите количество строк "; cin >> n;
cout << "Введите количество столбцов "; cin >> m;
int a = new int[n];
for (int i = 0; i < n; i++)
a=new int[m];
int c = new int[m]();
cout <<"Matrix a:\n";
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
a[j]=rand()%19 - 9;
cout << setw(3) << a[j] << " ";
}
cout << "\n";
}
for (int j = 0; j < m; j++)
{
for (int i = 0; i < n; i++)
if(a[j]<0 && a[j]%2!=0) c[j]+=abs(a[j]);
cout << "col " << j+1 << ": sum=" << c[j] << "\n";
}
for (int j = 1; j < m; j++)
for (int k = 0; k < m-j; k++)
if (c[k]>c[k+1])
{
swap(c[k],c[k+1]);
for (int i = 0; i < n; i++)
swap(a[k],a[k+1]);
}
cout <<"\nSorted matrix a:\n";
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
cout << setw(3) << a[j] << " ";
cout <<"\n";
}
for (int i = 0; i < n; i++)
delete[]a;
delete[]a;
delete[]c;
system("pause");
return 0;
}
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
#include <cmath>
using namespace std;
int main()
{
srand((int)time(0));
int n, m;
cout << "Введите количество строк "; cin >> n;
cout << "Введите количество столбцов "; cin >> m;
int a = new int[n];
for (int i = 0; i < n; i++)
a=new int[m];
int c = new int[m]();
cout <<"Matrix a:\n";
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
a[j]=rand()%19 - 9;
cout << setw(3) << a[j] << " ";
}
cout << "\n";
}
for (int j = 0; j < m; j++)
{
for (int i = 0; i < n; i++)
if(a[j]<0 && a[j]%2!=0) c[j]+=abs(a[j]);
cout << "col " << j+1 << ": sum=" << c[j] << "\n";
}
for (int j = 1; j < m; j++)
for (int k = 0; k < m-j; k++)
if (c[k]>c[k+1])
{
swap(c[k],c[k+1]);
for (int i = 0; i < n; i++)
swap(a[k],a[k+1]);
}
cout <<"\nSorted matrix a:\n";
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
cout << setw(3) << a[j] << " ";
cout <<"\n";
}
for (int i = 0; i < n; i++)
delete[]a;
delete[]a;
delete[]c;
system("pause");
return 0;
}
пукнула тебе в нос
А куда это?
vec1.swap(vec2);
Да. Есть специализация swap для векторов: https://en.cppreference.com/w/cpp/container/vector/swap2
(0.3 == (0.1 + 0.2)) или все пишут велосипеды по алгоритмам умных дядек?
Зачем для этого отдельная функция? Набирать её название будет дольше, чем написать это:
abs(0.3 - (0.1 + 0.2)) < 1e-8
тоже верно, спрашиваю что бы потом не быть обоссаным что пишу свои бициклы вместо либ
Где точно не обоссут за бициклы - так это в крестах, в которых на любой вопрос "подскажите либу, чтобы X" отвечают "напиши сам, чо как не мужик".
залей для начала на pastebin
И отсутствие пердолинга с конфигами, удобные настройки (а не так, как, например, в Atom, где хоткеи настроить целая наука)
const PREFIX_HUI = 0;
const PREFIX_PIZDA = 1;
?
Составить описание класса для определения одномерных массивов целых чисел(векторов). Предусмотреть возможность обращенияк отдельному элементу массива с контролем выхода за пределы массива, возможность задания произвольныхграниц индексов при создании объекта и выполнения операций поэлементногосложения и вычитания массивов с одинаковыми границами индексов, умноженияи деления всех элементов массива на скаляр, вывода на экран элемента массива позаданному индексу и всего массива.Написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса
ну это пока..
ну принудительное добавление break после каждого case и проваливание выполнения до конца всех case это точно уебанство, я думал намного лучше будет, сколько раз программировал,
Вот есть tasks.json. Там задаются параметры сборки: путь к компилятору, с какими аргументами запускается, etc. Запускается по Ctrl+Shift+B.
Есть launch.json. Там описан запуск экзешника, дебаг. F5, Ctrl+F5.
А есть ещё c_cpp_properties.json. Он нахуй нужен?
>>893964
Потому что enum в теории - это
enum MyEnum {FOO, BAR};
MyEnum myEnum;
myEnum = MyEnum::FOO; // ок
myEnum = BAR; // пошёл на хуй, не знаю что за BAR.
И во всех нормальных языках оно сделано так. Но в крестах то ли ради совместимости с сишкой, то ли ещё за каким-то хуем имеем то, что имеем.
Для тебя enum class сделали, нет, хочу ебаться с легаси говном.
Чтобы не проебатьса, когда значения должны быть Па Парядку.
Тебе же блядь на человеческом языке прямо в ассерте написали, что нужно читать документацию по ассертам.
в коде есть assert, который разворачивается во что-то, где есть __FILE__ и __LINE__, которые подставляются на этапе компиляции
вопрос не в ошибке а в том откуда в проекте этот путь? пытался найти вручную, не нашёл нигде упоминаний
Ты чё, тупой блядь? Есть макрос __FILE__, который при сбороке нетвоей говнолибы раскрылся в то, что ты видишь. Найти него можешь в скомпилированной dll
Это по сути конструктор IDE. У тебя есть проект, ты решаешь какими инструментами его лучше делать (языки, версионка, тулчейн, devops) и потом всё что тебе нужно накатываешь плагинами (и чутка донастраиваешь json конфигами). Всё что нужно под рукой, в едином UI и под любую ось.
Программирование - это не твоё.
>Описать структуру с именем TRAIN
Гуглишь структуры с++. Читаешь, создаёшь её с необходимыми полями:
>содержащую следующие поля: название пункта назначения; номер поезда; время отправления.
>ввод с клавиатуры данных в массив, состоящий из шести элементов типа TRAIN;
Гуглишь чтение с клавиатуры с++, массивы с, циклы с++
>записи должны быть упорядочены по времени отправления поезда;
Гуглишь сортировка массивов пузырьком/перестановкой
>вывод на экран информации о поездах, направляющихся в пункт, название которого введено с клавиатуры;
Гугли вывод в консоль с++
Надеюсь как писать хелоу ворд ты знаешь сам.
Если ты скачал заранее предсобранную либу - то это путь на той тачке, где эту либу собирал кто-то другой.
Та же беда, вроде конструкции языка знаю, однако что по архитектуре почитать - чёрт знает.
Музыкальный плеер. Чтобы был осциллоскоп прямо как у меня в фубаре. Хард мод: декодирование и вывод аудио сам, без библиотек.
>Я хочу делать то, что до меня никто не делал
Лмао. "То, что до тебя никто не делал" ты будешь делать, только работая в R&D какой-нибудь топовой в своей области компании. Всё остальное, что бы ты ни придумал, было уже сделано 10 раз
Возьми сколь угодно маленький, но полноценный, практически полезный, проект и охуей от того, сколько там существует собственных решений - от самого приложения до функционала которое оно реализует. На выходе всегда получается нитакоекаквсе решение.
Ок, когда вкачусь со своим стартапом в Долину скажешь мне то же самое.
Ну во-первых телепаты давно тут не работают. Давай код. Желательно не пейст биние.
Код не запускал, но возможно, что дело в неинициализированных указателях. Если ты явно им не присвоишь nullptr (например, в конструкторе или прямо в объявлении полей), то там может лежать случайный мусор. Более того, некоторые компиляторы в дебаг режиме специально инициализируют указатели в невалидные значения, чтобы потом можно было легче ловить баги. Можешь пройтись дебаггером и посмотреть, чему равны твои right и left.
280x240, 0:04
Вам в бугурто-тред.
Как минимум, в методе m_add при добавлении нового узла хоть под него выделяется память, но указатель на нее в this->right или в this->left предыдущего узла не записывается
Если ссылки так хороши, то почему this не ссылка?
Страуструп считает это своим самым большим проёбом в дизайне языка.
пусть считает. нн какой то, он вообще кто? все юзают - пусть и он юзает
Так я о чём. Потушил пердак. Теперь вопрос. Как мне ML пердолить на крестах без питона? Cuda слишком сложно, уже пробовал, на уровне написания игрового движка. А есть ли более высокоуровневые фреймворки? Чтоб хуяк-хуяк слоёв, трэйндату на них и в продакшен. Или только в D или джулию вкатываться с такими запросами?
dlib, но это калмоча
Крестики просто работают. Они делают что я хочу. А питон живёт своей жизнью в аквариуме. Даже у красноглазых пердолей нет такого, у них хоть man есть. А в мире животных питона даже кодеры фреймворков не знают что делать с багами и как фиксить.
Мне нужно было пару лет назад для диплома поставить pytorch. Внезапно оказалось, что на венде было намного проще поставить, чем на бубунте.
Так под CPU он одной командой ставится, да. А вот как с CUDA завести не понятно, гуглится тысяча проблем и миллион нерабочих костылей. Всё сводится к откату на прошлогодние версии или использование старой Винды.
Я именно с кудой ставил. Ну ладно, разбирайся.
Сформулирую свою мысль иначе. Что писать идеи есть. Вопрос, где можно посмотреть на структуры программ. При этом не уровня hello world но и не архи сложные проекты. Дабы не набивать набитые другими шишки.
Самое лучшее ПОЗНАНИЕ - это набивать шишки самому. Только так понимаешь, те или иные бест практисы. Или наоборот, понимаешь, что они хуйня (такое тож есть, например все многоуровневое ООП с паттернами от банды 4х)
какой блять man? ты что мужика хочешь, содомит?
Сама по себе куда очень простая и учится за один-два вечера. Только вот для того, чтобы писать на ней нейронки, нужно абсолютное понимание как они работают. С простыми архитектурами ты справишься, но писать с нуля state-of-the-art - заебешься. Вдобавок, большая доля машоба - это обработка данных и анализ результатов. Для этого всего тоже необходим питон.
Спалю мини инсайдик. В Озоне идет серьезный разговор о переписывании самых нагруженных микросервисов с го на С++, т.к. го просто не вывозит. Такие делы.
В гугле вывозит, а в озоне не вывозит. Хыч хыч. Инсайд в туалете смыть забыли и ты подобрал?
При чем тут поиск? Да и я не понмаю зачем ты срач хочешь начать, гошка никогда не позиционировалась как более быстрый язык, чем плюсы, суть в более простой и быстрой разработке. Да и вообще это тред плюсов
Так свой напиши чё лох чтоле))
А почему не раст?
Итерируй по значениям в своей мапе
bitset::count? Смотри исходники библиотеки. Недолгое гугление показало, что MSVC через цикл считает (https://news.ycombinator.com/item?id=20915547).
Если хочешь гарантированной скорости, то используй напрямую интринсики __builtin_popcount / __popcnt, правда тебе на всякий случай предстоит сношаться с CPUID, если хочешь полной переносимости.
Я кстати недавно делал ачивку на кодингейме, где надо решить 15 задач на каждом языке. Так вот среди всех поддерживаемых языков, включая баш, пхп, паскаль, перл, бейсик и хаскелль, самым хуёвым и дегенеративным я считаю именно ГО.
Тому есть несколько причин. Во-первых, довольно мудацкий кодстайл, закреплённый СИНТАКСИЧЕСКИ. Пиздец даже в питухоне такого нет, поставил скобочку на следующей строке - всё критикал еррор нахуй, переписывай.
Во-вторых, отсутствие дженериков не обоссал только ленивый. Гофобляди очень долгое время сопротивлялись что НИНУЖНА, пока даже их необучаемый фюрер (выступающий, кстати, еще и против подсветки синтаксиса) не осознал, что копипаста и ?interface в 2020 это нихуя не хорошая идея. Тогда они, конечно, мгновенно переобулись.
Ну и наконец множество просто откровенно ебанутых решений в дизайне, наподобие оператора := , имени типа справа, НЕИСПОЛЬЗУЕМЫЕ ПЕРЕМЕННЫЕ как критические ошибки. В целом, ГО считает тебя за дебила, и похоже только они, не замечая подвоха, языком и пользуются.
В opencv есть DNN. Глянь, может тебе хватит.
Ты прикалываешься? У меня даже в c++ настроено чтобы неиспользуемая переменная давала ворнинг, а все ворнинги ошибки. Потому что в реальном применении (а не хеллоуворлдах на кодегольфах) это 99% опечатка где то и ошибка в логике или вообще дыра в безопасности
я не путаю: сначала "старые пердуны" написали инфраструктуру озона на си-шарпике и все более-менее работало, потом пришли эффективные менеджеры или старым манагерам моча в голову ударила, они разогнали старую команду, выкупили новую команду хипсторов, которые начали пилить им микросервисы на говне, и тут, внезапно, инфраструктура перестала держать нагрузку?
лол
А какие именно типы складываешь? предположу что-то в духе int и long int
Как я понимаю она тебя тупо предупреждает о том, что в начале нужно привести всё к 8 байтовому типу а потом уже складывать.
все плюс минус так, за исключением того, что инфраструктура на сишарпике не видела и 1\20 от текущих нагрузок Озона.
Нет, ну в каком-то смысле ты прав. Язык все-таки имеет право на существование.
Гоферы они как дети же. А спички, как известно, детям не игрушка. Дай типичной гомакаке кресты, так он и сам покалечится, и хату спалит такого в проект накоммитит, что откатывать замучаешься.
Без ГО некоторым категориям людей программирование было бы недоступно. А так они могут работать в тех областях, где не важна производительность, читаемость и здравый смысл.
Фига маняпроекции, то-то же требования для джу на на гошке - знать как работает память и шелдуеры горутин с шелдуером процессора, элкэшей и поднаготной ос, а для синьора с++ достаточно в штаны не срать
там же сука английским по белому написано, сначала кастуй, потом плюсуй. ты читаешь хоть, что тебе пишут, сучёнышь?
некого не спалю, ведь и так все знают, в озоне работают пидарасы, клиенты озона пидарасы. вот такие вот дела.
Про деньги не знаю, т.к. дружаня, который имел там 350к, и потенциально бы занимался этим всем - сьебал в другое место на 400к
достаю свой лонг лонг из штанов
На руки денюшками. Нахера писать зарплату брутто, у нас тут не штаты с формулами анальными.
Приключения крестобляди или как сложить int a + b
Как все уже поняли, недостаточно просто написать
sum = a + b;
Ведь при переполнении это UB.
Понятно, но наверное можно же проверить?
sum = a + b;
if(a + b > INT_MAX) error();
Стоп. Так же условие никогда не выполнится из-за переполнения.
Да и это уже целых 2 UB
sum = a + b;
if(sum < a) error();
Ну не, так не выйдет, ведь UB уже произошло, компилятор имеет право выкинуть всю проверку.
Ладно, шутки в сторону, давайте проверим заранее. Так, а что писать?
(a + b < INT_MAX) мы уже пробовали. (Ахаха, подловил. Надо писать не меньше, а меньше или равно) А, точно.
if(a <= INT_MAX - b)
sum = a + b;
else error();
Так, пагадите!
Что-то тут не так.
Допустим у нас a < 0 и b = 0
И мы только что (наберите воздуха в грудь), во время сравнения
Вычли с underflow.
Минус сколько-то минус макс_инт меньше чем влезает в инт.
Переполнение в другую сторону, тоже UB
Переписываем нахуй
if((b > 0 && a <= INT_MAX - b) ||
(b < 0 && a >= INT_MAX - b))
sum = a + b;
else error();
Скобочки посчитали? && и || не перепутали?
Вот теперь заебись!
И это крестоблядь должна писать вместо каждого сложения в программе.
Ассемблерный выхлоп показывать не буду. Чтобы ночных кошмаров не было.
Приключения крестобляди или как сложить int a + b
Как все уже поняли, недостаточно просто написать
sum = a + b;
Ведь при переполнении это UB.
Понятно, но наверное можно же проверить?
sum = a + b;
if(a + b > INT_MAX) error();
Стоп. Так же условие никогда не выполнится из-за переполнения.
Да и это уже целых 2 UB
sum = a + b;
if(sum < a) error();
Ну не, так не выйдет, ведь UB уже произошло, компилятор имеет право выкинуть всю проверку.
Ладно, шутки в сторону, давайте проверим заранее. Так, а что писать?
(a + b < INT_MAX) мы уже пробовали. (Ахаха, подловил. Надо писать не меньше, а меньше или равно) А, точно.
if(a <= INT_MAX - b)
sum = a + b;
else error();
Так, пагадите!
Что-то тут не так.
Допустим у нас a < 0 и b = 0
И мы только что (наберите воздуха в грудь), во время сравнения
Вычли с underflow.
Минус сколько-то минус макс_инт меньше чем влезает в инт.
Переполнение в другую сторону, тоже UB
Переписываем нахуй
if((b > 0 && a <= INT_MAX - b) ||
(b < 0 && a >= INT_MAX - b))
sum = a + b;
else error();
Скобочки посчитали? && и || не перепутали?
Вот теперь заебись!
И это крестоблядь должна писать вместо каждого сложения в программе.
Ассемблерный выхлоп показывать не буду. Чтобы ночных кошмаров не было.
уточнил, потому что у нас в гейвропе на руки столько не платят, хоть ты супер мега Себястьян Лёб 15 чемпионатов мира по погроммированию подряд выиграл
вот пример, гугол в Австрии предлагает аж целых
43 тыщи евро год конечно брутто - Васян конечно съёбывает со мкада в Австрию, получает первую зарплату жалкие 2 тыщи на руки азаза и охуевает, половину надо за жильё отдать
Та самая причина, почему я так и не сьебал в европу, хотя было минимум 3 оффера
Мимо-700к-сами-знаете-кто
ты когда последний раз больше 100 строчек с++ кода написал? а, бля
закрывай тред, он не для тебя, епт
о том и речь...
вот приведи пример реальной задачи, где надо инта сложить, чтобы оверфлоо не запорол нам
допустим привёл пример, тогда как два лонг лонга сложить?
на что ты оветишь - а нахуй оно?
логично, что если пиздец как приспичило факториалы комбинаторики высчитывать - то ты воспользуешься длинной арифметикой, а в 99.999992% случаев складывая 2 инта проверку на оверфлоо ты только за бонус к зарплате сделаешь
Если мне память не изменяет, то на ассемблере после сложения проверить флаг переполнения надо и всё.
тогда у конпелятора должен бить интринс на проверку этого бита, не?
или как идиот писать ассемблерный кусок и фраппер на него?
хотяяя для дядиного кода почему бы и нет... и заодно добавить пятистрочник со скобочками и битовыми операциями
и ведь хуй кто настучит - формально и практически код правильный и надёжный, дядя не потеряет клиентов и бабки изза оферфлоо
В ассемблере всё детерминировано, там нет никакого UB, так что ничего плохого не случится в отличие от "высокоуровневых" крестов.
педо-раст. пишы правильно.
В общем мне 24, есть опыт работы во встраиваемых системах - 2 года, и в разработке высокого уровня (пилим один научный софт на Юнити-с# + задачи по комп зрению на питоне) - тоже два года. Присутствует профильная вышка
Сейчас контора, а точнее стартап, в котором я работал - распался и ищу новую работу. вопрос следующий: стоит ли вкатываться в с++ разработку, имея следующие факты
1. С++ знаю на уровне курсов, поделок и пр, то есть НЕ промышленная разработка
2. Не хочу терять в зп (на прошлом месте было 80)
3. Запас денег на два месяца - ровно столько могу зарыться и ботать
И вообще в целом стоит ли вкатываться в с++? Что на нем сейчас разрабатывают? Что именно Вы делаете на своей работе?
Вообще я сильно в недоумении что делать: легче всего свалить также в Юнити или питон, но душа лежит в нормальное программирование, на нормальном языкеочень прошу не кекать с меня и палками не пиздить) буду очень рад адекватным анонам)
оставайся на решётке и питончике. более злачного места чем зрение сейчас трудно найти. пройдись по конторам, которые автоматы приёма стеклотары и прочей встраиваемой хуйни производят.
Ну только если вкатываться в комп. зрения на крестах... Если есть такие вакансии - то можно, иначе - нахуй не надо. Помни, что предметная область важнее языка.
Тебе верно советуют - смотри на содержание/предметную область. Сам копаюсь со зрением в эмбед. И у нас всё что ты перечислил плюс вёб. Вкатываться можно через любое место.
так а я кому-нибудь нужен без опыта на крестах? у меня зрение на питончике было, а вакансии питон + cv это, как правило, пилить сеточки. Хз насколько это интресно, но звучит не очень.
А что касается крестов, так куда ни гляну, там кресты
сбердевайс, беспилотник, яндекс беспилотник - сполшные кресты
эшелон ниже - тоже сплошные кресты, так что черт его знает кому я там всрался со своей решеткой да питоном
так хочется же. Да и в основном интересные предметные области - это кресты
ну, как я уже говорил, я хз нужен ли я кому-то без промышленного опыта в плюсы
Ты не догадываешься, почему тебе никто не отвечает? Что значит "наладить взаимодействие"?
Ты хочешь встроить в свою программу браузер, или что? Если да, копай в сторону веб-движков, в том же Qt есть WebEngine.
Или тебе нужно просто отправлять HTTP-запросы? Тогда бери любой HTTP-клиент и копай в сторону API (например, https://2ch.hk/api/index.html (М) ), только с двачем тебе всё равно придётся юзать webEngine, чтобы показывать капчу.
Да.
создать тред
Не, ну а каких задач ты ожидаешь например от беспилотников?
Сбор данных с навигационного оборудования (радары, лидары, камеры) - системы реального времени и низкоуровневые пердоли с железом.
Обработка данных - овердохуя матана. Лидары - дифгем. Трекинг объектов - теорвер. Камеры и радары - функциональный анализ. Конечный автопилот для коптера - теория управления (самое сложное).
По всем сценариям на голом с++ не вывезещь и будешь обоссан.
Дебич, ты когда последний раз работал с числами больше 262?
Что ты собираешься делать во время выполнения, если overflow всё-таки произойдёт?
В общем, пиздуй в py-js тред, быдло
> Дебич, ты когда последний раз работал с числами больше 262?
Толсто.
> Что ты собираешься делать во время выполнения, если overflow всё-таки произойдёт?
В приведенном коде не произойдет.
да, в этом треде полно беспелотников
это значит что ты проявил интерес не к тому чем занимается человек и к самому человеку, а к тому что он зарабатывает много денег
> Толсто.
Ты уж потрудись ответить.
> В приведенном коде не произойдет.
Ну дык и в c = a+b не произойдет. Пруф ми вронг
> фубар
Уверен, что им пользуются только из-за кулхацкерского названия, а на самом деле это не плеер, а неюзабельное говнище.
ну а кто же еще
Им пользуются потому что больше нихуя нет.
Наоборот, фубар самый удобный, в отличие от неюзабельного говна выебывающегося внешним видом.
Но я фубар всё равно дропнул, но из за звука. У фубара плохой звук, так что удобство уже перестало иметь значение.
Я решил просто нахуй отключить варнинги и все. Как вообще можно их использовать если при подключении ЛЮБОЙ библиотеки там какая-нибудь хуйня да будет. Вот банальный пример, библиотека которая уже почти часть стандарта все равно срет варнингами. В итоге оно все перемешивается и хуй поймешь где твой варнинг, а где либовский.
Нигде не замечал разницу качества в фубаре. Чем пользуешься на венде?
> не забивать хуй на ворнинги в языке такого низкого уровня, что без костылей вообще невозможно работать
А ты недавно в плюсах, да?))0
К слову, понимаю что кормлю толстого, однако в стандарте есть описание NaN (Not a Number)
Как итог переполнение можно определить через сравнение самого с собой.
NaN только для float и double, с целыми не сработает.
А судьи кто?
Нашёл пока Crypto++. Но может есть ещё годные варианты?
OpenSSL?
Так я и забиваю
Botan
Пошёл нахуй.
Это да, но для написания веб сервисов раст больше подходит. Хотя очень сомнительно что go не может закрыть эту потребность.
Собстно го они там люто профилировали, меняли\тюнили GC и прочее прочее, в итоге пришли к выводу, что надо переписывать.
Почему у других компаний таких проблем нету? В вебе основной затык же идет в io или они числа фибоначчи в заказе считают?
Компаний с нагрузкой уровня озона на карантине - не так много. И учитывая, что бэкенды тех, о ком я знаю - на С++ (Амазон\Гугл\етц), то вероятно по-этому у других компаний затыков и нету. Ну и там люди еще работают сильно квалифицированнее и опытнее, чем микрочелики из озона.
Сомневаюсь, т.к. меня хайрили в лавку на крестовика. И тот же маркет и такси - все на С++, например.
Не очень понятно, у Озона по идее тоже не очень большие нагрузки должны быть.
Сколько у них заказов в день? Ну миллион, допустим. В пике может быть до 100 заказов в секунду.
Это чудовищные объёмы для именно торговой инфраструктуры, вот упаковывать и перевозить такой объём заказов, но не для бекенда, если он нормально спроектирован.
Естественно, количество просмотров будет больше, то это более простые операции.
По-моему это и на питоне можно сделать.
Мне кажется, что в таких случаях сам бекенд спроектирован неудачно, база товаров и магазинов и работа с ней.
у озона гигантские нагрузки, но про проектирования бэкенда и прчоее я уже не знаю
Ну никогда не поверю что для такого не хватило go, ну и думаю что там куча микросервисов и на передачу данных тратится гораздо больше времени чем на вычисления.
Там обнаруживается знаковое переполнение для 2's complement.
мне кажется они так решили сэкономить, потому что типа считается что держать инфрастуктуру на технологиях майкрософт выходит дороже, чем на каком-нибудь опен-сорс стеке
ну это первый слой понимания
ну а второй слой понимания, что когда решают перейти с одного технологического стека на другой, это просто топ-менеждеры наебывают реальных собственников компании, это идеальный способ выдоить с фирмы как можно больше бабла
как правило, после такого переписывания компания начинает загибаться
очевидно что в россии озон сегодня давит вайлдберрис, да даже ламода, лол, также его дават небольшие специализированные интернет-магазины
те не смотря на то что объемы озона растут, они растут не так хорошо как должны были
а сейчас кризис будет долгий, снижение потребления, не вариант вообще что озон не загнеться
uint_least64_t
Ну, они правильно все говорят, другое дело, что в 99% кода это нахуй не надо делать
pimpl в public хедерах
Посоветую не высирать новый говнокод, а взять существующий типа dyninst.
Ну и бросай IT. 1 января, нормальные люди в миске оливье задыхаются, а ты сидишь в С++ треде на дваче. Задумайся.
Двачую.
Я ноулайфер-задрот, наевшийся оливьешки уже вчера. 1 января, самое время кодить на плюсах.
олсо, dyninst - оверкилл для меня. Вся моя инструментация по большому счету заключается в инжекте бряка в адрес каждого базового блока в заданном диапазоне адресов, потом процесс трейсера ловит сигтрапы и снимает соответствующие бряки.
Нужно было бы мне инжектить трамплины - заюзал бы dyninst или в крайнем случае фриду.
Это в упомянутых дби влёт делается без надобности городить всякие трейсеры.
Берешь фриду, пишешь пару строк на JS которые выполнятся в контексте нужного процесса, получаешь трассу
Единственная с натягом причина писать что-то новое - минимальный функционал для каких-нгибудь обрезанных систем. Но даже в этом случае выдрать из той же фриды кусок и подпилить - более быстрое решение (если ты не шиз офк)
https://ideone.com/zweIS9
n1array[1]=0 второй элемент не был инициализирован явно
Позже заметил...Ой, нихуя себе, с++14 с идеона даёт другой ответ...
> int n1array[n1] {1}
Когда в {} не указываешь оставшиеся значения, они по умолчанию считаются нулями.
как видите на первом скрине вторые элементы заполнены случайным числом. компилятор gcc 9.3.0
В n1array, про который ты спрашиваешь, везде 0. В других массивах ты не юзал {}, вот он и не инициализировал их чем попало.
> int n1array[n1] {1};
> int n2array[n2];
> int n3array[2];
Твой const int ничего не инициализирует
Он просто указывает какого размера будет массив (забитый мусором)
про инициализацию значениями в {} вроде понял, но вот такой ещё момент https://ideone.com/oQgVyD
Что за момент? Если тебя удивляет, что в неинициализированных то нули то нет, считай, что это просто совпадение. При обращении к неинициализированным переменным в программе начинается undefined behavior, это значит, что дальнейшее поведение программы не определено стандартом, то есть вести себя она может как угодно. Поэтому нельзя вообще допускать подобных ситуаций.
всё понял спасибо. Иду дальше грызть.
Тебе дебаггер подсказывает, что shellcode - это указатель на функцию. Ты уверен, что именно его хочешь писать?
Обязательно через delete, это динамчески выделенная память в куче, а в С++ нет сборщика мусора.
Когда почитаешь о выделении динамической памяти, почитай про RAII, и будет тебе счастье.
Так у меня ниче не работает, ты мне сначала помоги указатель починить, а потом сообщай куда хочешь))00)
>без надобности городить всякие трейсеры
Нет. В Линуксе dyninst использует ptrace в качестве отладочного API, засим тот процесс, где используется dyninst, и является т.н. "трейсером"
Хотелось бы самому всё сделать. Сначала там ввести понятие сетки пиксилей, потом создать инструмент кисть, который при зажатой кнопке перекрашивает близ лежащие к курсору пиксели. Вот на что нужно опираться ТУТ?
Очевидно, нужно вводить какое-то состояние и изменять его, подключившись к событиям ОС.
На грамотную иерархию классов. Начни с RisovableFactoryInterface.
Я фриду имел в виду, написал же js-скрипт
А логику ведения логов можно в самом скрипте реализовать (правда раз это ИО из джса, то могут быть проблемы со скоростью)
бери текстуру OpenGL и рисуй в ней
То что у меня на первом пике в первых двух строчках памяти записано(60 e8 00 00 00...), если перевести эти 16ричные числа, то это будет набор ассемблерных команд, которые я оформил в виде ассемблерной ставки, на которую ссылается shellcode.
Сап, двач.
1. Хочу сделать такой же красивый gui, как пикрелейтед1. В окошке несколько прямоугольников c надписями(до 10^6), между некоторыми рёбра-курвы. Разумеется далеко не все прямоугольники надо рендерить одновременно, нужна навигация в таком окне + изменение масштаба - удалить, приблизить, чтобы не слишком эти самые прямоугольники руинило.
2. Хочу сделать такой же красивый gui, как пикрелейтед2
Чем воспользоваться, чтобы сделать, так чтобы не лагало? Qt, Opengl, winapi, directx?
>>897179
>>897250
> не забивать хуй на ворнинги
> нахуй отключить варнинги
> мимо 1.5кк варнингов с этой хуйнёй
Пиздец говнокодеры. С кем только в одном треде сижу...
Даже жалко стало того, кто запустит ваш проект через пару лет и не сможет собрать это говно с тысячами варнингов. Или будет отладчиком десятки багов вылавливать...
Ну и что по твоему надо делать если либа с 10к звезд на гитхабе срет тебе варнингами в проекте?
Очевидный gcc -w
imgui + SDL2
Правильно ли я сделал, что скачал визуал студию и поставил галочку только у "стандартные приложения виндовс на С++"?
Только вкатываюсь, собираюсь хеллоу ворлд писать из книжки какой-то птицы 2016 года. Пофилософствовать любит автор конечно, неудивительно для пернатых.
да, все правильно
Отмена Симён, ебанул модуло делением поразрядно столбиком, прямо как Клара Гершомовна в третьем классе учила.
Кретин. Варнинги варнингам рознь. У меня вчера студия написала "ОШИБКА: название функции должно быть с большой буквы", при том что это имя она сама сгенерила))
>низкоуровневые пердоли с железом.
Как перестать работать низкоуровневым пердолей за копейки и стать нормальным программистом?
std::array<int, 4> arr {10, 20, 30, 40};
std::array<int, 2> arr2 {60, 70};
int what = 50;
const int res = std::find(arr.begin(), arr2.begin(), what);
std::cout << res //10 -- чего блядь?
Оно работает, но выдаёт хуйню. Что там происходит внутри?
https://pastebin.com/z0BXNTze
Отбой, тредом промахнулся
перекатиться в жс и признаться самому себе, что оплот компьютерных технологий на данный момент и на ближайшие лет 30 - веб. Лоу лвл пердолинг остался в 80ых, сейчас не нужОн, так как 80-90% этой работы выполняют сами железячники, которые высирают платы и двигают электронами туда-сюда.
Посоветуйте еще какие-либо ресурсы, книги, каналы, etc.
Кроме этого, прошу пояснить за операторы изменения типа данных: статик и динамик каст. Со статиком ясно, я даже его применял, а динамик-то как используется?
А, еще в свободное время смотрю лекции по Архитектуре ЭВМ и основам ОС. Насколько это вообще нужно крестовику?
>динамик-то как используется
Практически нет, в 99% это признак хуевой архитектуры, и _ОЧЕНЬ_ _ОЧЕНЬ_ редко он нужен в каких-то сложных плагин-системах, и то не факт
Какая разница что там происходит? Ты не можешь на это полагаться в своих программах.
Тупо дальнейшая жизнь вместе с зачетом решается сейчас этим
Есть две задачи, которые нужно сделать, они обе решаются через fstream или чот такое
Я валенок, нихуя не понимающий в С++, я пытался блять чот нагуглить, чот решить, но просто нихуя не помогает и меня кроет паничка сейчас, я не в состоянии тупо это написать
Если кто-нибудь из анонов сможет написать за меня эти две проги - скину косарь или мб даже 2, мне уже похуй на деньги на всё остальное, есть вот ток эти два косаря из того что могу предложить, реально пизда как нужно
Задачи:
1) В файле задан список слов. Составить список уникальных слов с указанием, сколько раз они встречаются в исходном списке.
2) В файле задан текст. Написать функцию, определяющую длину слова. Применяя эту функцию, в выходной файл записать слова с указанием их длины.
Вот, сегодня последний срок, иначе еду в армейку
Пишешь в телегу. Кидаешь 2к. Через 10 минут присылаю решение обеих задач. Только так.
danetta
Ладно, я спать, теперь ты забота кого-нибудь другого.
Кайф, минус один неосилятор.
Короче с мобилки мне писать лень да и твоя судьба мало интересна.
В первом случае тебе нужна структура данных хэшмап. Алгоритм примерно такой
Пока есть слова в файле
Прочитать слово
Если слово есть в хешмапе увеличить этой записи значение на 1
Если нет то добавить в хешмап запись об этом слове с значением 1
Потом вывести все слова где счетчик ровно 1
Вторая задача примерно так
Заводишь два вектора, для слов и для длин
Пока есть слово в файле
Прочитать слово, записать его в первый вектор, а посчитав его длину, во второй
Потом выводить в файл чередуя слово и длину
Анон, спасибо тебе огромное, спас <3
>так как 80-90% этой работы выполняют сами железячники
Ну нет же. В любой конторе, которая делает что-то, что можно потрогать руками, нужно к одной железке присобачить другую. Оттуда и возникают пердоли.
>оплот компьютерных технологий на данный момент и на ближайшие лет 30 - веб
в тесной связке с эмбед и его пердолями
все сделал и отправил, спасибушки)
Да не, это же просто отступы, после открывающей скобки, например. А мне нужно выравнивание текста когда нажимаешь ; либо }
ну как в visual studio, я ж написал
которые получают 20к деревянных, жря говно с паяльником в очке и имея х50 знаний веб-господин по объему. Веб-господин же получает 100к+, не будучи даже синьором, и ссыт на пердолю-опущенца свысока.
Кто-нибудь юзал уже? Какие подводные?
Давно уже. Багов много, фиксят быстро. Толку пока мало.
> и признаться самому себе, что оплот компьютерных технологий на данный момент и на ближайшие лет 30 - веб. Лоу лвл пердолинг остался в 80ых,
Да я это понимаю. И размер зп и возможности карьерного роста/трактора в вебе несравнимо выше, чем у железячникав. На порядок выше.
>перекатиться в жс
Так и сделаю. Уже все коллеги-железячники выучили жс и стали веб-господами, один я прогаю микрики как долбобоб за копейки.
Привет субпиксельному рендерингу. Благодаря нему больше в своей жизни ты никогда не увидишь чётких букв.
Да ты шиз, всем похуй на рендеринг. Бесишь даже больше звёздочки.
>100500й способ решить одну и ту же задачу, чтобы теперь ты мудохался еще и с либами на модулях.
https://godbolt.org/z/Y8xW3M
По идее с модулями можно обеспечить нормальную область видимости без всяких namespace detail, модули изолируют максросы и, программа максимум, можно в большинстве случаев вообще обойтись без хедеров, а просто сделать import foo.
И в конце концов получится мешанина из всего подряд
Альтернатива чему?
Зачем юзать хедеры, когда есть модули ? ? ?
class Book
{
std::string name;
double price;
Book(double _price, std::string _name): price(_price), name(_name) {}
}
Если я делаю массив из интов, мне достаточно одних фигурных скобок
std::array<int, 2> ints {10, 20};
Но если делаю массив объектов, мне нужна дополнительная пара фигурных скобок. Почему?
std::array<Book, 2> books { {49.15, "Akunin"}, {20.90, "Bulgakov" } }; //не робит
std::array<Book, 2> books { { {49.15, "Akunin"}, {20.90, "Bulgakov" } } }; //робит
>работодателю вообще похуй на мой гитхаб и всратые пет-проекты уже 10 раз всеми реализованные
this м на либы тоже похуй - они постоянно новые появляются
да хоть что-то будет неплохо (особенное если C++ Concurrency In Action,2E)
https://dropmefiles.com/GoRNY
Ааа, вирус/скачал и умер брат/ВNШМАСТЕР v2.28, никому не советую
Разве нельзя отключить в системе?
Почитай про маршалирование
Стэк у меня с компьютерной графикой.
Просто не хочется прийти и обосраться от вопросов про какой-нибудь сpp20 с каким-нибудь нерелейтед говном типа реджекса или что-нибудь низкоуровневое с какими-нибудь оптимизациями под разные архитектуры и прочее.
Сейчас почитываю про cpp14/17/20, решаю задачки на литкоде. На плюсах я давно пишу, и читал всякие бест практисес конечно, но код у меня на уровне cpp11 всегда или даже ниже, так как в компьютерной графике все эти новые фичи особо не нужны.
Что мне стоит знать/уметь? И стоит ли на новые стандарты вообще налегать?
Вызов функции всегда не бесплатный. Дальше зависит от глубины рекурсии, способа передачи параметров и того, что функция делает.
Глубина примерно 10. Параметр один: usigned long long. Но она впринципе очень часто вызывается. Каждую губину несколько раз. Если я перепшу это через какие нибудь циклы с goto это может существенно ускорить?
Ну так требования уровня "хорошее знание C++". Мне и интересно, что люди в индустрии понимают под "хорошее знание С++".
Вызов никогда не "бесплатный". Нужно сохранить какие-то регистры, какие-то восстановить, провести несколько манипуляций со стекаом. Но дорого или нет - зависит от конкретной решаемой задачи. Если у тебя внутренний цикл больше трёх-четырёх десятков инструкций процессора, то скорее всего вызов функции вообще не играет роли с точки зрения скорости.
>>901704
>>901683
Понятно, что идейно рекурсия всегда дороже и по времени и по памяти. Но еще даже в сишке была tail recursion оптимизация, не говоря про современные компиляторы. Зависит от юзкейса кароче. Иногда это будет прочти то же самое. Иногда нет.
Ну и непонятно, что происходит с кэшем на самом деле.
НУ почему же. У меня однажды была задача, которая рекурсивно не решалась, а решалась тем же алгоритмом, но переписанным через обычные циклы
c++11 вполне хватит. если на графений пойдёшь - спросят за геометрию, модели освещения/тени, работу с текстурами. начнут с простого и пока не завалят, чтоб понять насколько хорошо соображаешь.
Понял, спасибо. Нормально тогда.
А, еще. Обычно нужно разбираться в многопоточности? Я просто стандартными либами вообще не пользовался, только intel tbb.
>работу с текстурами
Это еще что? В смысле интерполяции всякие и мипмапы?
ну ла. фильтрация, мипмапинг (сколько памяти ему нужно). альясинг - как бороться. лоды там всякие (в общих чертах).
многопоточность скорее как плюс ко всему остальному (этим обычно какой-нибудь синьёр заведует).
ну и там традиционно спрашивают контейнеры и оценку сложности алгоритмов (O-нотация)
зависит от дохуя всего, включая базовый тип енума, битность платформы и тд
Сравни 3*sizeof(std::underlying_type_t<MyEnum>) и sizeof(long)
Enum под капотом может оказаться и int8t, и uint64_t.
Размер long зависит от разрядности и от ОС (в win64, win32 и unix32 это int32_t, в linux64 это int64_t)
9/10 превозмаганий, но ты справишься. В основном из-за кривых кутей а лучше ничего нет
Сделай сначала все в одном стандартном окне, потом по запросам в Гугле поймёшь как сделать второе модальное окно и глобальные хоткеи.
Потому что вызовы вложенные. Если у тебя три функции, внутри одной из которых вызывается две других, которые занимают по 40% общего времени, то слева у тебя будет 80+40+40, справа 80
И что значат циферки? Я алгоритм ускорил, а цифры наоборот увеличились. Нихуя не понимаю.
Так ты на общее время выполнения смотри, а не на его распределение между кусками кода.
Я наоборот говорю, что бинарный поиск не работает на неотсортированных массивах, ты в глаза что ли ебёшься?
А самая лучшая система контроля версий VSS/TFVC.
Профилировать прод все равно реально через xperf\WPR
Ты там написал так, что я прочитал как: "сортировка контейнера не связана с двоичным поиском".
Он вроде честно считает сколько времени выполняется именно твой код без учёта переключения контекста.
Всё что в большинстве случаев нужно - сократить количество вызовов и время вызова каждого метода.
Вопрос как сделать типо такую игру? у меня есть идея сделать clash of clans но в браузере. То есть чат плюс строительство.
Как это все устроено изнутри?
я так понимаю сервер должен принимать много сообщений, общаться с базой данных (я выбрал postgres) отсылать что то назад при этом копий сервера должно быть много то есть впереди нужен прокси балансировщик какой то(наверно?)
так что реквестирую гайды (и книги) по таким темам как
- как на c++ писать свое api
- как писать такие сервера, которые и жнец (общение с базой) и на дуде игрец (принимает и отсылает сообщения)
- как работать с базой (right way)
- как написать вот эту приемку сообщений ( я так понял нужен типо брокер сообщений)
- как писать прокси балансер, возможно писать его не придется и есть готовые решения (я нищюк и мне нужно чтобы я смог арендовать какой нибудь серверок за 4 баксов на дигитал океане, при необходимости взять еще один ввести пару команд, и вуаля у меня уже два сервера)
- как все это соединить вместе
библиотеку общения я уже выбрал это будут uws - websokect
для клиента меня интересует - как наилучшим образом делать графику в веб ( opengl норм?)
Хотелось бы именно гайды с уклоном на продакшн. Не просто статью подключаемся к базе, а типо вот пишем реальный брокер сообщений пригодный для боя хоть сейчас, с глубоким объяснением что и как и где устроено внутри.
Сенкс!
советую всем посомтреть как сделана игра agar io и deep io (их сделал один человек)
Используй профилировщик студии, базарю
Где мои бабки сучара?
Собери из готовых компонент. На c++, gl и прочем ты до седых мудей будешь проект делать.
почему у некоторых маслят есть непонятная привычка выбирать неправильный инструмент для достижения цели?
Wut?
Деточка! А вам не кажется, что ваше место возле параши?
Я бы посоветовал пикнуть С# для твоей цели, на плюсах охуеешь все это писать с нуля в одиночку, особенно если у тебя опыт программирования на плюсах меньше 6 лет.
> wasm
> Я бы посоветовал пикнуть С#
Чел, не советуй такое. Васм в шарпе очень медленный, медленнее жс. Если уж хочется игру в браузере на шарпе, то комбайн в виде Юнити и то лучше будет. Алсо, 2дэ можно и на жс написать.
Чем можно его заменить в полной мере, учитывая что там практики много?
Чё то пахнет хуем. Ничего такого чего нельзя прочитать у Бьярна я не увидел.
Лучший курс из существующих, увы. Если сам не можешь читать книги - то надо брать.
Заведи несколько буферов в оперативке. В один пишешь числа свои и при заполнении свапаешь. Полный буфер вторым потоком дампаешь в файл.
Ну эт топорное решение. Тебе ещё надо будет придумать как дамп сделать если exception вылетит.
Приняли давно уже, официально редакция в декабре вышла.
у тебя будут большие накладные расходы при вызове методов fstream (если ты по одному числу записывать будешь)
https://stackoverflow.com/questions/12997131/stdfstream-buffering-vs-manual-buffering-why-10x-gain-with-manual-buffering
Спасибо большое. Вероятно, я потом еще вернусь с вопросами при потоки и организацию записи, чтобы не было такого, что первый буфер заполнился, а второй еще не освободился, а я писать в него хочу.
используй гото и не еби мозг.
Еще вопрос. Как числа быстро записывать? То есть их в строку надо переводить. Это не долго?
Напиши прогу тестер, там может быть много нюансов, этож профилирование. Тоже таким занимался для читалки проприетарного формата файлов.
перекатываюсь к вам из си шарпа, и немного удивился, когда увидел крестовый синтаксис конструктора
можно написать так:
struct P
{
P(int x, int y) : x(y), y(y) {}
int x;
int y;
}
в простых случаях пишется ок, но жопой чую, что нечитабельность будет охуевшая, если код разрастется
разве не удобнее так?
struct P
{
P(int x, int y)
{
this->x = x;
this->y = y;
}
int x;
int y;
}
Есть какие-то причины писать 1 способ, а не 2? Вроде как второй с способ понятнее и читабельнее
Дебил, пока не напишешь код и не запустишь профилировщик студии, всё свои высеры про "медленно" и "не хочу тратить время" можешь засунуть себе в очко
std::to_chars отработает очень быстро
Я имел ввиду время тратить на наисание кода, потому что задачу совсем о другом. Ну ок
В первом случае члены класса сразу инициализируются, во втором сначала вызываются конструкторы по умолчанию, потом происходит присваивание.
На практике обычно пишут что-то вроде:
MyClass(int param1, int param2, ...)
````: m_param1(param1)
````, m_param2(param2)
````...
{}
прикольно, спасибо
Идиоматически - 1
Первый способ работает быстрее. Хотя компилятор скорее всего догадается как сделать из второго то же самое.
Да уже делаю, но цель устроиться на работку, потому и хочу освоить теор. минимум. Winapi норм тема или нужны пререквизиты какие-нибудь?
Ну а хотя бы общее представление о нём имеет смысл получить?
Идёшь и беседуешь. По месту станет понятно что тебе ещё освоить. Чтоб не рефлексить сходи сначала в конторы которые тебе не сильно интересны.
Ну типа в школе инсте универе у тебя есть 2-3 попытки сдать. А собесов у тебя штук 20 в разные конторы и потом каждый год ещё повторно можно собеситься. Короче изи мод.
Да не. Так бы я написал просто return 0. Как закрыть ее в нужный мне момент?
Ну я конечно могу раз в секунду проверять нажата ли кнопка или что то такое. Но выглядит костыльно
Какая разница?
В винде придётся задавать callback через winapi. Создай оконный проект в студии и копипастой оттуда забери нужный код.
В линуксе можешь сделать callback на нажатие Ctrl+C:
void on_exit(int);
signal(SIGINT, on_exit);
Спасибо. То что надо. Если использовать только обычный fstream, то ситуация печальная. Из за дрочки диска проц грузится на процент. Завтра буду делать что то
SetConsoleCtrlHandler в шинде
откуда компилятор знает что это стринг? он ведь считает этот литерал массивом чаров, верно?
2) использование макросов моветон?
#define to_int(x) static_cast<int>(x)
так, например.
1. Там и нет стринга. Там operator<<(const char*)
https://www.cplusplus.com/Й/ostream/operator-free/
(А вообще то бывают неявные приведения типов)
2. Пиши просто функцию. Она оптимизируется скорее всего. В макросах нет типов, это минус.
>А вообще то бывают неявные приведения типов
это когда:
std::string s = "mamku"
std::cout << s + "ebal"
я так понимаю
за макросы пример неудачный, просто в общем не раз читал что говно и нинужно
бля тут еще приоритеты надо учитывать и скобки расставлять сложнаа лул, пистон конечно как для деток после крестов
вроде верно
Тогда вызовется https://www.cplusplus.com/reference/string/string/operator<</
Не парься operator<< это просто функция
Принцип не отличается от того как компилятор различает вызов foo(int) и foo(char*)
thx
Есть причины. Если у тебя есть константные member variables в классе, ты не сможешь их инициализировать, не используя первый вариант.
Вроде нету вредоносного кода, но всё равно ругается.
> константные member variables в классе
Антипаттерн.
Правило звучит так: always const, except for class members
Лучше бы он браузеры мейл ру так удалял.
Алсо я однажды скомпилировал пример программы для подмены событий с клавиатуры. Так там такое началось, что я подумал мне сейчас омон дверь вынесет..
Нигде нахуй не нужно, кроме собеседований
> Надо писать код
Код из туториалов? Из книг? Свои проекты? Используя фреймворки? Решая задачи на литкод? Опен сорс проекты на гитхабе? Всё сразу?
Постоянно это слышу, но никто не объясняет какой именно код нужно писать.
мимокрокодил
Ты не понимаешь. НАДО. ПРОСТО. ПИСАТЬ. КОД. Пусть он не компилится и пишешь ты синтаксическое говно - главное писать. А потом хоба - и ты сео яндекса. Ясно?
Подскажите, можно ли здесь получить размер динамического массива через указатель name? Насколько я понимаю, нет, но понимаю я пока примерно нихуя, поэтому обращаюсь с вопросом.
Про искусственность примера знаю.
Любые хуевые пет-проекты. Хуевый тетрис, марио для даунов, беспонтовый п2п чат. Что угодно, главное писать самому, пытаться хуево дизайнить.
Самый важный совет, который я могу дать с высоты своего помидорского опыта - никогда не старайся сделать идеально. Перфекционизм не нужен. Самое важное - делать корректно, а хуевый код потом порефакторишь.
> хуевый код потом порефакторишь
Ахуенный совет. По своему опыту знаю, что говнокод из первых свои проектов проще переписать с нуля, чем рефакторить.
Да даже если переписать - все равно ок. Самая распространенная ошибка, на которую и я наступал - пытаться сразу написать хорошо, и в итоге не написать вообще ничего.
Я тормоз, имелся в виду размер в байтах. sizeof по отношению к name вернет размер указателя, а не массива. Можно ли узнать его?
ну то есть длина массива: strlen(name) + 1 (+1 потому что в конце строки /0)
размер одного элемента sizeof(char) == sizeof(*name) == 1 байт (но не всегда)
В с++ это так не работает. Тут надо дрочить и практику, и теорию (чтобы знать все 13 видов инициализации)
Просто писать говнокод никуда не продвинет.
Вот единственное, что продвинет любого программиста куда-либо, это писать код. Я не знаю 13 видов инициализации, это не мешает мне работать. Но штук 7 знаю, да.
Не надо ничего дрочить. Нужно научиться стабильно закрывать таски (закрывать чтоб работало и стабильно, чтоб не упираться в крупный рефакторинг).
Ты не поверишь, но кроме тебя ещё есть целая стая долбаёбов, которые обсираются с выработкой требований, тестированием, сроками, бюджетами и прочими делами. Твой код никогда не дойдёт до прода, если ты его будешь облизывать.
Из моих знакомых: Бэкенд яндекс маркета, поиск мейлру, Местный 3Д около-САПР в Align Technology, Говнобраузеры в яндексе и мейле, кернель драйвера в Нвидии, всякие роутеры\свитчи. Ну и игры само собой.
недавно пилил видеонаблюдение с распознаванием лиц, машин, забытых сумок и прочей хуйни. сейчас ADAS систему пилим - чтоб машина сама подсказывала водиле, что впереди столб и надо руль повернуть.
Нет. Я сейчас чекнул в инете эту тему. Там часто много чего мне не надо. Мне важно чтобы проц на ядро был сильный. Программа не параллелится. И 10гб диска. Видюха не нужна. Программа должна отработать. Гигов 5 файлов она на диск запишет. Я это потом заберу к себе.
https://cloud.google.com/compute/docs/benchmarks-linux
Могу на полтора часа дать N2 с 6 ядрами и 24гб ОЗУ.
А ты можешь, например, вычисления разбить на части? Могу 5 машин дать, только они работать будут полтора часа.
Как работать перестанут можно ещё сделать.
Дай свой, я напишу.
> на данном этапе я не могу распараллелить
Всё таки нужна машина более чем на полтора часа?
@DoniR112
> Всё таки нужна машина более чем на полтора часа?
Да. Я пикрил пока присмотрел. 160 рубей в сутки.
https://cloud.google.com/compute/all-pricing
Тут смотрел?
На GCP как раз платишь за то, сколько ты пользовался.
бля забыл что тут другие лимиты
Ну естественно, что ты нихуя не можешь себя выдавить, я же тебя на протяжении пяти лет в череп ебал без усталости, в частности в уши. Раздолбал все в твоей смешной пониёбской башке до неузнаваемости. Забавно осознавать, что ты еще способен функционировать как живой организм, тупо калобактерия, пародия на человека разумного, хотя с какой стати парашная прыщеблядская грязь стала походить на человека, я хуею блять, нахуй ты такой говнопидор живешь?
Если обмазаться ComPtr, то вполне себе норм.
Плагины, которых нет в других IDE (обычно пердольные под всякий эмбед). Есть даже целый кастомный Eclipse от nvidia.
А если я например захочу свою поделку выложить куда-то, VS поможет как-то?
Или надо будет CMake добавлять?
А он чем хорош?
Ну я shitаю что самая норм тема - создавать папочку lib и заливать все внешки туда и заливать в таком виде без всяких sln и смаков.
Как вообще лучше всего оформлять проект чтобы другому пользователю было максимально удобно компилировать?
А что ты вообще подразумеваешь под оформлением?
Я делаю как описал, а там уж пусть компилят как им удобно.
https://cliutils.gitlab.io/modern-cmake/modern-cmake.pdf
Ещё можешь почитать/послушать доклад о том, как делать библиотеки удобными для экспорта в vcpkg
Я просто вспомнил как пытался на винде скомпилить какую-то штуку, а там был premake5 внутри.
В итоге остался с окровавленным нечто вместо зада.
Ну значит я молодец и поступаю правильно. Ну может быть однажды мне станет не лень и я буду прикручивать смак.
А можно ли вообще без всего этого проекты делать?
Что-то такое:
/src/main.cpp
/src/gui/gui.cpp
Компилятор сам такое сможет разобрать?
Ну а почему нет? Ты же хедеры подключаешь, да и конпилятору можно явно указывать директории/файлы.
ЛевЪ денег стоит. Дома его можно крякнутый юзать, а типичная контора работягам его покупать не станет.
было также, только с nmake
> FREE for Open Source projects
> FREE for students and teachers
> FREE for education and training
Так же можно EAP версию использовать, если совсем плохо с деньгами.
А так оно стоит 90$ в год.
Давай предположим, что ты работяга 200к\м на руки, крепкий ДСовский мидл.
Контора до налогов платит за тебя, допустим, 300к в месяц (округлим) -> 3.6кк в год. Шлион для организаций стоит 200 бачей в год - 15к рубасосов.
Используя математику уровня /b понимаем, что если покупка Clion'а сделает нас на 0.4% продуктивнее, чем в работа вскоде\эклипсе\любой другой бешплатной параше - то это выгодная покупка. И догадываемся о том, что хороший тулинг сделает нас ОЩУТИМО продуктивнее, а не на десятые доли процента.
Контора оплачивает студию и решарпер - где-то косарь триста бачей в месяц, и это капля в море, по сравнению с зарплатой годовой. А продуктивность выше ощутимо, если бы я ебался с бесплатным софтом
1300 в год[, не в месяц, фикс/spoiler]
Стек в этом случае это структура данных абстрактная или стек именно операционки? Потому что стек на линуксе - 8МБ, на шиндовсе - 1МБ, если брать первый же запрос из гугла. Не совсем понимаю как всё в один мегабайт укладывается то.
так у тебя на стэке очень мало инфы обычно, мегабайта дохера для этого всего.
В виндовом кернеле стек 8кб (!!!) для 32хбитного драйвера, и ниче, хватает.
А это можно как-то отследить? Может в VS есть инструменты для этого из коробки? Из диспетчера я вижу, что простейший пример для расчёта массы коробки в один поток занимает мегабайт оперативы, но это не то ведь.
можно дергать CL.exe и потом LINK.exe, но нахуя.
Зачме?
А когда ты выходишь из манямирка, то оказывается, что в конторе есть ещё июни за 70к/м и контора твоя в ДС2-3-4-5... с зп на 25-30-35% меньше. Потом оказывается, что сэкономленные деньги падают прямо в карман гендиру (~3k$ карман не тянут). И становится не так однозначно.
Да убережёт тебя Бог от такой участи.
так не надо работать в такой залупе.
А до этого?
>Статическая ведь вся не выделяется на стеке
Статическая вся на стеке. Я тебе больше скажу - когда ты выделяешь память в куче (ака динамическая память), указатель, содержащий адрес в куче, возвращаемый нью или маллоком, сохраняется на стэке. Стэк всему голова.
>С динамической кое-как понятно
Куда сложнее, чем статическая. Статическая память выделяется на стэке и саморазрушается при выходе из области видимости или вообще из функции (что тоже сама по себе область видимости), если бы ты знал хотя бы один из языков ассемблера - вопросы о статической памяти отпали бы сами по себе. Погугли что такое стэковый фрейм и как вызов функции выглядит в ассемблерном листинге, сразу все поймешь.
По поводу динамической - она не привязана к ABI в отличие от статической, а привязана к реализации аллокатора памяти в куче (а таких дохуя - ptmalloc3 (реализация в glibc), jemalloc (браузер огнелис ее юзает, например, ну и в бздяхе она дефолтная), виндовый аллокатор памяти и т.п.). В гугл хроме вообще кастомный гугловский маллок. Если ты не лоу лвл хакер или не разрабатываешь аллокаторы памяти, то устройство оной изнутри тебе знать необязательно, просто помни, что в unmanaged языках ты должен освобождать динамическую память вручную (офк мы не говорим про умные указатели и RAII в целом в плюсах, но за кулисами там такой же delete, просто обеспеченный деструктором классов-оберток над указателями).
> Куда сложнее, чем статическая.
Я имел в виду именно вот принцип, то что компилятор в каком-то нужном (для меня рандомном считай) месте выделяет память, которую потом нужно освободить. Просто сложно представить, как вот какой-то большой проект весь хранится на одном стеке, даже учитывая, что объекты на стеке умирают за областью видимости.
> если бы ты знал хотя бы один из языков ассемблера
Писал только на ассемблере процессора intel i8085 математические функции и уравнения в вузе, и позже немного на gas подобное же делал, где и со стеком больше уже работал, вопросы не отпали.
> Погугли что такое стэковый фрейм и как вызов функции выглядит в ассемблерном листинге, сразу все поймешь.
В том смысле что он сохраняет адрес возврата? Про стековый фрейм погуглил, как я понял, заносится сначала адрес возврата, за ним аргументы и локальные переменные, по возвращению это всё "освобождается" (указатель на стек возвращается назад и снова идёт вниз, затирая старый мусор). Если я правильно всё понял. Вообще да, теперь работа статической памяти понятней выглядит.
>Статическая вся на стеке
По-моему ты пиздишь.
Возьмем к примеру статическую переменную в функции. Она не разрушается при выходе из функции, но и не находтся в куче.
Assist классная штука, но бывает тормозит. На новой (ну как, 1.5 года) работу пока не просил купить, вроде 2017 и 2019 студии и так до фига чего могут сами. Но иногда не хватает.
Да, анон, слегка пизжу, ты прав.
В случае со статическими переменными - они хранятся в data секции бинарника (тонкости зависят от формата бинарного файла, но в целом везде все работает по одинаковому принципу).
Могу такое дать до 15 числа. 15 блокнут за неуплату.
В смысле проверяют? Ты или хуевый или нет
Type traits, perfect forwarding + universal reference, RVO, move semantics, variadic templates, CRTP
Ну не знаю. На моей предыдущей работе, когда окружение виндовое было и стояла студия, VA только в самом начале жутко тормозил. Пришёл, включил комп, студию - и идёшь за чаем. Затем всё бодро работало.
Hi guys, Im Bjarn Stroustroup. Been sitting in /b ("You laugh - you shit pants") and decided to read c++ thread, you know Im a bit related to this great language.
And honestrly i dont give a fuck what the "CRTP" is, moderators please ban this troll account
Когда след издание журавля, дедуль?
чому книги говно такое, нахуй мне твой фултик устанавливать что бы классы изучать, столько воды будто я курсовую юрфака читаю.
Алсо, потцоны, вопрос:
Clion c Qt можно подружить или все таки ебаный qtcreator тащит
> Clion c Qt можно подружить
Можно https://www.jetbrains.com/help/clion/qt-tutorial.html
но нахуя? Если вдруг понадобится дизайнер для формочек, то в любом случае придётся открывать кьютишную ide. Ну и главная фича QtCreator в документации прямо в редакторе. Можно пользоваться сразу несколькими редакторами и никто по жопе за это не даст, базовый функционал везде одинаковый, а хоткеи накатить сможешь тоже любые.
Это как задрачивать паттерны и прочую терминологию. Дохуя времени что-то юзаешь и даже не подозреваешь, что какие-то умники придумали названия для всего этого и ебут на собесах из-за незнания названий.
я изучаю кресты написанием всяких тетрисов как и питон когда то а для этого формочки нахуй не нужны, ебашишь кастомный виджет и русуешь паинтером все что хочешь. Просто там qmake какой-то, я конечно разберусь пойже но не хочеться пересаживаться на креатор только потому что qmake будет правильнее собирать или быстрее.
I fuck you fucking bitch fucking braindead russian who uses goto. My both pluses are in your mouth and a big C in your dads ass.
Pwned, now go JS thread to ladyboys party
> I fuck you fucking bitch fucking braindead russian who uses goto. My both pluses are in your mouth and a big C in your dads ass.
> Pwned, now go JS thread to ladyboys party
Когда говорят "знание стандарта C++17", обычно подразумевают именно умение использовать плюшки этой редакции языка, а не сакральное знание сего талмуда.
а нехуй было начинать программировать с пиздона или жса, теперь терпи, смерд.
Алсо, если для тебя это сложно, то плюсы это не твое. Ты просто еще в душе не ебешь что есть СЛОЖНО в плюсах.
Покопипастю картинки 120 треда
Я учу вторую неделю и просто в шутливой форме делюсь впечатлениями. Алсо понимание любой сложности приходит с опытом так что если я сохраню свою заинтересованность то тогда в душе выебу
ну тогда молодец, анон, удачи. Плюсы - интересный язык с бесконечными возможностями, особенно современные стандарты. Втянуться легко и не слушай ебланов-неосиляторов, будешь достаточно топовым - заведешь трактор и будешь жить припеваючи. Главное не прекращай, удачи.
И действительно, зачем?
Ну да учишь такой язык, а потом смотришь на вакансии в своей 800к мухосрани, а там всего пара мест и те ждут кандидатов с опытом.
Ну так с педерастом в этом плане все еще хуже я и не спорю.
>1 pic
", ...)" Что это за хуета? Многоточия так не используются, что они раскрывают, запятую чтоли?
Этот выебон детсадовский не скомпилится, зря в метросексуальный дизайн обрамляли
Даже байтоебы из ASM треда справились и запилили демку: https://youtu.be/dQw4w9WgXcQ
Легко, даже для крестов есть веб-фреймворки. Но какой в этом смысл?
Надо с разворота предложить все на Qt переписать.
Для инициализации рефов нужно
struct ChlenView
{
ChlenView(const Hui& h) : m_zalupa(h.GetZalupa())
{
// Компилятор скажет: "соси эту залупу сам
// m_zalupa = h.GetZalupa();
}
private:
const Zalupa& m_zalupa;
};
ЕБУЧИЙ Vulkan БЛЯТЬ.
Qt потихому на Cmake перекатывается.
>Ну и в чём смысол этой хуйни?
source code obfuscation, способ который используют senior c++ programmers чтобы не быть выкинутыми на помоечку как outdated!
Есть даже целый кастомный Eclipse от Галактической Империи (Galactic Empire)
ничего не знаю, но знаю что ради этого поделия (eclipse) ibm прибила прикольную ide visualage
решили свою корпоративную ide переписать на модной-молодежной тогда яве, по результату проебали часть собственного рынка средств корпоративной разработки
>>904344
Что насчёт организации проекта по лекалам Pitchfork скажете?
https://api.csswg.org/bikeshed/?force=1&url=https://raw.githubusercontent.com/vector-of-bool/pitchfork/develop/data/spec.bs#submod
На сайте с зарплатами
Нормальная тема, сам так делаю.
По-моему, на С++ обычно пишут сервера для того, чтобы их не скейлить. Они просто работают так быстро, что им это не нужно.
мне нужна книга как их писать с примерами кода и словами почему так а не так
и с главой про горизонтальное масштабирование и raft алгоритм
есть такая?
Чтобы умело камеру юзать и страничку из веба подтягивать.
это конечно можно написать на плюсах, для гуя есть Qt, но зачем? Если ты кроме плюсов больше ничего не знаешь и тебе лень учить, то почему бы и нет, дерзай.
Это вообще не костыльно, а считай тру вэй.
А, так сейчас просто заворачивают сайт в приложение и так отдают пользователю.
Каких, например? С classpath в андроиде ебаться не нужно, всё делается само. Дженерики в джаве бессмысленны и беспощадны, их лучше избегать. Остальное довольно логично, достаточно понимать, что все указатели как shared_ptr, только ещё умнее. Изучил одну джаву по стековерфлоу, когда надо было сделать приложение.
я на Qt+Qml писал небольшую хуйню, работало без проблем
да, я лох и не умею гуглить
напиши НЕСКОЛЬКО предложений и запости код на каком-нить пастебине.
Правда хуй ты получишь ответ, если твой вопрос сложнее тривиального
>ещё умнее
Ага, особенно когда сборщик мусора в самых подходящий момент начинает активно чистить за тобой говно, лол.
RAII > сборщик мусора.
Вот это уже действительно pitfall. Вроде бы как-то вручную его можно контролировать, когда вызывать, когда нет, моё приложение не требовало высокой производительности.
Ну если говнокодить и не понимать как работает GC, то конечно будет пиздец.
RAII ещё неплох в расте, но в крестах это та ещё залупа, которая лишь немного снижает шанс прострелить себе ноги.
uint8_t это unsigned char, и печатается как чар. Смени его на uint16_t как самый простой фикс
Разве в реальных проектах пишут постоянно intxx_t? Есть же стандартный (или базовый) int, к которому всё кастится по умолчанию, не?
Этого не скажу, я только 5 дней как Страуструпа дочитал. Мне просто кажется так экономнее, вот и делаю так.
Всё объект, а что не объект - тоже объект (с)
Вот тут смайл из консоли, код которого 02 www.theasciicode.com.ar/ascii-control-characters/start-of-text-ascii-code-2.html
У тебя int кастится в char при выводе, попробуй перед выводом преобразовать в строку через to_string.
Это концепт
Я просто всё под инты переписал пока. Потом в эту тему углублюсь чтобы понять нужны эти тшки-кастраты или нет.
сущность, предоставляющая интерфейс для обхода элементов контейнера
> сулит что-то хорошее?
Да, на одну шарпомакаку станет меньше.
> что нужно знать для классического крепкого мидла?
Примерно как шарпосеньор.
если перекатываться - то лучше в вебговно
пол книги за джве недели, при этом скипнул фултик и графику. Насколько я понел фултик с апдейтами сменил апи а этот лысый страус даже не указал какой версией пользовался при написании книги. Очень выбешивает его стиль изложения, много воды и такого когда тебе вываливают всякие плюхи с оговоркой ну это, мол, хуйня потом будет в следующих главах, но без понимания этих плюх ты не поймешь о чем текущая глава. Забей в хуюгл ravesli, пчел локализировал какой то забугорный курс все по полочкам и без воды. Читаю сначала его статьи и только потом читаю о том же у трупострауса так как сходу ну никак мне он не заходит, хуевый писака как по мне.
Алсо, вопрос:
Есть какой-то коммон гайдлан по стилю кода или каждая контора по своему ебашит. Читаю разные источники и часто вижу:
int x;
int x;
void foo(int& x) {}
void foo(int &x){}
Алсо, вопрос:
я так понял override в виртуальных функциях чисто самому не проебаться a la assert и сути кода не меняет.
>Есть же стандартный (или базовый) int, к которому всё кастится по умолчанию, не?
Нет, это ваще от процессора зависит.
Везде, где работал (аж в трёх местах), использовались только int32_t (без std::, естественно) или алиасы типа i32, даже в обычном коде. Правда, везде было серьёзное отношение к бинарной совместимости и/или передаче данных через всякие протоколы, где точный размер каждого поля офигеть как важен. Тот же long, например, в некоторых 32-х битных компиляторах имеет размер 4 байта, а на 64-х битных - 8 байт
>пол книги за джве недели
Рофлишь что ли? Или ты скипал все упражнения и делал только задания (drill в англ версии)? Все-таки у него есть очень непростые упражнения, с которыми я долго ебался. Ну с фултиком тоже я поебся, но мне удалось справиться. Прорешал почти все, кроме некоторых упражнений. Ушло где-то полгода.
все именно так
Допустим у тебя массив {4, 1, 1024}, который занимает 12 байт. Под него придётся создать вспомогательный массив размером в 4кб.
Сортировка слиянием дополнительной памяти не просит.
Потому что сортировать обычные целые числа нужно только на лабах.
потому-что отсортируй массив uint64_t подсчетом
В hpp декларируешь, в cpp определяешь. В чём проблема?
Че? Покажи код, ничего не понятно. Что еще за стартование конструктора раньше срока?
Он видимо про глобальный объект говорит, когда конструктор вызывается до main().
Что толстого?
C++ компилятор для кваки? Зачем это мне?
Никак. Результат даже в ОЗУ не влезет.
Я сначала думаю, потом пишу. Короче пришол к выводу, что задачу можно решить по другому. До свидания
Вангую 36 вложенных форов.
Ну естественно, что ты нихуя не можешь себя выдавить, я же тебя на протяжении пяти лет в череп ебал без усталости, в частности в уши. Раздолбал все в твоей смешной байтоёбской башке до неузнаваемости. Забавно осознавать, что ты еще способен функционировать как живой организм, тупо калобактерия, пародия на человека разумного, хотя с какой стати парашная прыщеблядская грязь стала походить на человека, я хуею блять, нахуй ты такой говнопидор живешь?
Ну вот(((
https://pastebin.com/TfLSvjXf
чек комент. строки 31-40
я сейчас начал читать книгу по 17 стандарту, Nicolai M. Josuttis - C++17 The Complete Guide, и я не понимаю эту строчку, которая с assert начинается. Я знаю, что это не из 17 стандарта слово, но к сожалению не понимаю, что на этой строке написано. Объясните пожалуйста, что это зн>>888626 (OP)
ачит.
Судя по всему, он берет структуру MyStruct и раскладывает ее при помощи structured bindings на оба ее поля.
И потом доказывает вот таким ебанутым образом, что layout на стэке такой же, как бы и была просто структура.
я понимаю, что тут про structured bindings. Мне не ясно, что происходит на строчке, где написано assert.
Стал писать на винапи руками. Есть же MFC или WTL
>Простой перебор не подходит
А как ещё ты хотел? Тебе нужны ВСЕ суммы - считай ВСЕ суммы. Если, конечно, не дана дополнительная информация про массив (например в нём много элементов одинаковые, из-за чего многие перестановки эквивалентны).
>за секунду
Не, не выйдет. Я набросал быстро алгоритм на AVX - получил чуть меньше пяти минут рантайма (хотя я в SIMD мало что понимаю и сильно тупил при написании). Ну, скажем, у тебя последний райзен и ты распараллелишь на 24 потока - 13 секунд.
И это без какого-либо I/O, которое тебе понадобится и которое к тому же будет сильно тебя тормозить. Посчитаем на коленке: общий объём 2^36 чисел по 4 байта - 256 гигабайт. Throughput 256gb/s - тебе уже кластер настоящий нужен.
>Throughput 256gb/s - тебе уже кластер настоящий нужен.
Я магмой на simd шифровал 800 mb/s на одно ядро.
Уж точно без шифрования можно больше выжать.
^^ но пока я это писал, я уже передумал
оба указателя абсолютно одинаковы за исключением адресов
оба позволяют получить a[n] (любой вплоть до sigsegv)
оба позволяют ⚹(a+n) (любой вплоть до sigsegv)
второй просто гарантирует зарезервировать место в стеке от себя до sizeof(тип)⚹количество элементов, последовательно один за одним.
под капотом оба одинаковы
мои догадки ковырянием
хотя есть догадка все таки что они разные под капотом, так как второй может в sizeof а первый нет, а при передаче в функцию я так понимаю второй конвертируется в первый и уже не может в sizeof
В первом случае аллоцируется память, достаточная для размещения одного int, который затем инициализируется значением 1488
Второе — невалидный код
Теперь так:
В первом случае аллоцируется память, достаточная для размещения одного int, который затем инициализируется значением 1488
Во втором случае вместо operator new вызывается operator new[], аргументами вызова являются размер одного объекта и количество объектов, таким образов аллоцируется память, достаточная для размещения 4 int, то есть 4 -умножить- sizeof(int)
Ебать, там реально написано "указатели на объекты". Хорошо что я сначала в С вкатывался. Если бы начал сразу с крестов, да еще с книг страуса, охуел бы заживо.
a и b это указатели. размер у них одинаковый.
если бы было int b[] {1,4,8,8} то размер был бы разный.
>b знает свой размер а при передаче в функцию уже не знает сложнаа, кек
Наследие C, array to pointer decay при первом чихе.
Тут сравнение не того, чего надо.
sizeof(звезда а) это sizeof(int).
sizeof(b) это sizeof(int[4]), так decay ещё не произошёл.
Собственно накатал пик1, где столкнулся с проблемой, что выводится следующее число, после заданного.
Покопался в гугле, нашёл решение на пик2. Работает идеально, но я так и не понял чем оно принципиально отличается от моего и где была ошибка. Условия одинаковы, значения переменных тоже.
В чем я не прав?
Ну не знаю. По идее у моих двух плашек DDR4 с частотой 3600 мегагерц предельный throughput ~110 гигабайт в секунду. Нужно что-то в два раза быстрее. А уж если на диск писать ещё хуже будет.
доперло сейчас что int != int[4] и это разные типы
т.е цикл while сначала выполняет инструкции и только потом проверяет условия, а for выполняет после проверки?
спасибо
Цикл for это:
Проверка
Тело цикла
Инкремент
Цикл while это:
Проверка
Тело цикла
А за инкремент ответственен ты сам. И он у тебя не там, где надо. По идее должен быть после вывода.
мимо нуб, я в цикле for пробовал пре- и постфикс инкремент оба работают вроде однохуйственно, значит в проверке идет обращениее к счетчику по адресу а не по значению после выполнения инкремент выражения
For на первой итерации: инициализация, условие, тело
For дальше: инкремент, условие, тело.
Как видишь, инкремент всегда идёт первым вне зависимости от пост/пре записи. (Ты вообще можешь что хочешь там написать, for по барабану)
short cache [some_n] = {0, 1};
немного потестировал это и так работает, но всегда ли это будет так, или мне просто 100 раз повезло, что на стеке были нули?
фиксну, что some_n это не два, а большое число.
Прописывание длины массив в сигнатуре не поможет, для компилятора это равноценно указателю, это работает только как хинт программисту.
Есть трюк через template type reference для массивов
В общем случае — никак
Используй стандартный контейнер
ну хз, я короче прописал по хардкору, ублюдочно, но вроде работает.
...
const uint LIMIT = 10'000;
short cache [LIMIT] = {0, 1};
bool check(uint n, short (& cache)[LIMIT] ){
...
}
std::span
(Есть подозрение, что проблема в компиляторе, ибо на onlinegdb все работает. Это возможно?)
Такой код со обычным массивом по идее не легитимен и вообще не должен компилится. Если нужен массив с динамическим размером то используй new int[n + 1];
Сам понял. Надо было объявление массива перенести в тело if. Совсем дурак.
Работает с переменной u как если бы она была структурой, берёт адрес её поля, и он совпадает с адресом переменной в правой части условия. Переменные что в структуре одна за другой, что при структурном binding, и адреса совпадают. Адрес первой переменной структуры совпадает с адресом самой структуры (вроде бы у этого правила нет исключений)
>вроде бы у этого правила нет исключений
Наследование, но это скорее не исключение, а дополнение.
for (;;) { f(); g(); sleep(2s); }
Но ведь это хуйня, не так ли?
Зависит от ситуации.
Если есть очередь, которую надо периодически проверять, то лучше спать на конд-варе, пока тот, кто пополняет в очередь, не ткнет конд-вар.
А что писал в основном? Только упражнения из книг? А вообще можешь про свой путь рассказать немного, если не сложно? В треде такое чувство, что все тут родились сразу сеньёрами с умением писать новый хромиум с нуля и как-то даже стыдно, что вроде что-то читал, а в итоге особо ничего не писал даже, даже задачки из книг не все делал.
Я никак не практиковался. Просто пришёл, попиздел за алгоритмы и матан и получил работу июнем. Плюсов не знал, страуса не читал.
Qt.
Попробуй Qt.
PyQt. Вызывай плюсовый код через биндинги.
Или сделай обвязку на C++/CLI и гуй на шарпах с WPF, если ты вендузятник.
Как насчёт кути?
Не знаю советовали тебе уже или нет, но ты попробовал qt?
>>910661
Хм а вот это мне нравится вот это да, попробую. А ты сам писал что-то? Дашь глянуть?
>Дашь глянуть?
Тебе ещё и глянуть? Бесстыдник! Не писал, это из мира всяких игроделов и рядом
А по wxwidgets знаешь че нить? Это старый кал дидов или все таки норм тема для пацанов и стоит разобраться?
Так я туда и не лазил, только на кмл писал интерфейсы, хотел что-то другое я ж сказал уже. А тебе есть что поведать про виджеты?
мимо кьютовиджетошлепатель
Есть мнение, что Qt как таковой неактуален, раз макакам завезли десктопный жопаскрипт в виде электрона.
Я занимаюсь в мелком стартапе обработкой облаков точек и классическим цв. Но на питоне, тк эта задача лежит на одном мне, а кресты я знаю на уровне уника
Вопрос такой: если я решу свалить в похожую область (обработка данных с лидаров и прочее робототехническое говно), то что важнее там: знание алгоритмов и методов или опыт продакт кода на плюсах? просто первое у меня есть, а второго нет.
Ну плюсы хоть немного подтяни, и все будет ок
Вообще ни разу на реакт не похоже ведь
Во многих местах нужны именно алгоритмисты, так что тебе достаточно базовые конструкции пару дней поизучать (ссылки, указатели, массивы, работа с памятью). Намного реже нужно дрочилово с хардварной оптимизацией - там тебе вообще без шансов.
а чтобы туда попасть откуда нужно начать?
Я НЕ ТОТ КТО С ПИТОНОМ, только в этом году закончил вуз
*нуб
Использовать конечно
ненавижу ебаных радикалов
ко ко ко, если с 5-ти лет хайлоад не ебашишь, значит нечего и начинать
скажи мне, человек, что такого можно сделать, учась в вузе (а значит процентов 60 времени отдавать учебе, если не шарага), чего нельзя сделать после него? Причем через ПОЛГОДА после него? Типа в вузе у тебя такой пиздец пик интелектуальных способностей что все языки за день учишь, а через день становишься дегрод-дегродом?
Короче не неси пургу, мань
> с хардварной оптимизацией - там тебе вообще без шансов.
да я и не рвусь, тк я не программист, а робототехник. У нас в этом плане все немного по-другому устроено и за 0.004 секунды скорости работы программы не боремся (по крайней мере пока)
> что такого можно сделать, учась в вузе (а значит процентов 60 времени отдавать учебе, если не шарага), чего нельзя сделать после него?
Сидя у мамки на шее тратить то самое свободное время на самообучение и на выходе из своей шараги (а может даже на последних курсах) идти на джуна с нужным тебе стеком. Если на бюджете и не ебланишь, то даже стипендию будешь получать. А 60% времени на айти-специальность ты тратить никогда не будешь, если варишься в этой теме постоянно и что-то дома помимо этого делаешь сам. Если же ты чисто 4 года пивас пил и однокурсниц ебал, забыв при этом всю программу, то >ПОЛГОДА тебе не хватит, мань.
мимо другой анон
>что такого можно сделать, учась в вузе (а значит процентов 60 времени отдавать учебе, если не шарага), чего нельзя сделать после него
В вузе легче всего заводить знакомства. Если не совсем тухлая шарага была, то куча людей с потока устроится по разным направлениям в разных компания, и знать их - только плюс. Networking, ёпт.
ну вот он написал, что если не заниматься именно, мать его, с++ и, более того, оптимизацей, то туда хуй попадешь
лично мое мнение, что если человек в унике занимался тем же питоном, тем же си, но не оптимизацией на крестах, то в область оптимизации ему все равно НЕ закрыта дорога
поэтому я так и заагрился на анона, потому что его слова - чистой воды фашизм
Я вообще только мипс-ассемблер ковырял и на плюсах какие-то кривые хуки для эмуляторов писал, но это даже плюсами нельзя назвать, какие-то студентопопытки полу-сишные скорее. В шараге в это время просто лабы сдавал и всё
А уже потом попав на работу начал развиваться, и в области оптимизации, и в криптографии, потом начал ходить на плюсовые собеседования, подтянул и плюсы и так далее.
Прохожу тутор по крестам в УЕЧ. Есть массив из стуктур. Задача - поменять поле в структуре. Если я просто заношу структуру в переменную, в крестах это копия, а в других языках это ссылка. А я хочу чтобы у меня была ссылка и я просто ссылку редактировал, ну как в норм языках хочу.
Как я хочу.
https://pastebin.com/qC2dXL2x
Как сделано в туторе.
https://pastebin.com/ML0qMBxN
А есть статья для чайников про это? Я нашел что-то по теме, но там много букв. https://www.learncpp.com/cpp-tutorial/returning-values-by-value-reference-and-address/
И я чет не могу найти мой случай.
ну у микрософта все правильно https://docs.microsoft.com/en-us/cpp/cpp/data-type-ranges?view=msvc-160
Это же вообще не стандартная хуйня, не? IEEE 754 вообще ничего про него не говорит и соответственно на разных компиляторах разные варианты
А если идти дальше вглубь по структуре.
То Quest.Progress похуй ссылка или нет, потому что примитив?
А если не примитив, то надо опять ссылку делать.
Я правильно понял?
Более того, стандарт C++ не гарантирует IEEE-754.
Прочитай майерса (александреску не нужен), напиши еще какой-нибудь беспонтовый сетевой чат на Qt, и потом смело иди на собесы
Не, по-моему, ты что-то недопонял. Тут нет разницы, примитив или нет.
Вглубь можно сколько угодно ходить, например
Quest.Progress.Level = 5;
Всё дело в том, как объявлен сам Quest. Если это ссылка, то ты будешь менять потроха того элемента массива, на который ссылаешься. Если самостоятельный объект, то, соответственно, потроха этого объекта.
Спасибо, попробую не обосраться на собесе.
Ясно, спасибо.
Но мне нужно с ней действия совершать. Например +-*/. Еще и корень хочу
Спасибо
Ну со сложением, вычитанием и умножением все понятно. Деление чуть сложнее. А вот корни пока хз как вычислять
Можешь для начала простейшие итерационные методы попробовать.
В VS создаю проект из кода, пытаюсь запустить, он выдает это. Причем все ошибки в external dependencies, которые VS создал при создании проекта. Удалить их не могу. В свойствах проекта добавил C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.16.27023\include в Additional Include Directories, но не помогло.
Можете подсказать? Спасибо.
Что-то с редактором, уже и простой hello world не запускает. Хотя вчера работал.
Не пиши свой бигнум, возьми готовую либу для длинной арифметики, их 100500 уже написали.
Мне на олимпиаде может понадобиться. Нужно уметь самому писать
посоветуйте книжку по IDA Pro
Так и все же, у меня вопрос, есть тут люди, которые могут предложить волк тру по написанию дров под окна, неплохо было бы ещё и за пингвина затереть, но я до него ещё не добрался и сейчас грызу Комисарову, посматриваю всякие презенташки шинды на тытрубе, но всё это не совсем то, что хотелось бы.
Презенташки направлены скорее на сеньоров помидоров, у которых возникают совершенно другие вопросы, Комисарова вроде не плохо, но книга объективно стара, мала, да и даже на тот момент времени она неоднократно кашляла, мол, книжка пиздец ужатая, в любом случае беги читай MSDN и иже с ним, я и это потрогал, но честно, виндовская вики скорее больше напоминает набор фактов(что от неё и требуется по сути, и тут никаких вопросов), но для того, что бы эволвнуть в адеквата не только могущего, но ещё и понимающего что к чему, хотелось бы заиметь какой-то список сурсов, которые мне в этом помогут
//Английского не боюсь, спокойно смотрю/читаю в ориге
// //Заранеее спасибо, с меня как обычно
Пробовал смотреть в редактор конфигураций ? Мб проект настраиваешь под х64, а ранишь Win32 сборку ?
В никсах модуль ядра можно писать прямо с лёту, по пути гугля всё что нужно.
Я так делал.
Под виндой нужно поебаться
Норм ты подорвался.
Есть работа с низким порогом входа, где нужен язык и какой-нибудь фреймворк (допустим энтерпрайз на Java). За полгода туда и школьник вкатится.
Есть работа где язык+фрейм1+матан (осилишь матан за полгода без вузика?).
Есть работа где язык+фрейм2+матан+unix+cpu/gpu/fpga (ты написал охуенно быстрые свёртки, преобразования фурье, а железка жалобно тебе моргает и хуй его знает что ей надо и куда в неё тыкать).
Речь не только о динамической памяти, а вообще о любых ресурсах, требующих инициализации и деинициализации.
И да, весь смысл именно в том, что в деструкторе происходит освобождение всех ресурсов объекта.
смысл в том, что время жизни объекта совпадает с временем владения внешними ресурсами
То что придётся поебаться, это честно не новость, т.к. винда, винда никогда не меняется, да и юникс так же, хоть и с другого бока, но в любом случае, сяпки, буду знать, что в ядро можно срать с разбегу не сильно переживая
братишка, не стукай
братишка, это все понятно
но смотри
1) энтерпрайз - полностью с тобой согласен (к сожалению, там и денег больше всего)
2) ТОЖЕ согласен, но я думаю, что в кресты не лезут люди, которым на проганье похуй и они только пивандрий пили. Думаю худший случай вкатывальщика в плюсы - челик, который в унике только учился - без работы вообще
3) Третий пунк у тебя самый збс. Ты описал уровень минимум мидла. Но мидл это далеко не вкатышь 23 года, особенно в хардварных вещах. Это уже проработавший программистом чел (мб даже перекатывальщик из энтерпрайза - знаю такие случаи), лет 26+, у котого за плечами года 4-5 опыта. Тут уже случайно залетных нет и быть не может
Так что я не понимаю, что мешает человеку-не еблану устроится на вакансию типа 2) джуном после уника БЕЗ практического опыта
*тем более, что я именно так и устроился в свое время
Переустановил VS, установил SDK по-новой и заработало
А у тебя правильно проект настроен ? Я Qt только через Qt/CLion трогал, с vs не знаю, нужна ли там какая-то настройка, погугли vs+qt, мб у тебя сборка не знает откуда брать qt, Плюс к
Посмотри источник ошибки, это можно сделать через ПКМ, источник, не исключено, что это IntelliSense тебе говна на винтилятор кидает, если так, может забить, если интересно почему, гугли что такое IntelliSense
Windows Kernel Programming
Pavel Yosifovich
Для тех, кто вдруг столкнётся с подобным реквестом, просто снова лазал по трубе среди сеньоров помидоров и наткнулся на этого дядю, только только начал читать, но тут он уже собирает дрова в vs, книга как никак 19го года, в любом случае, должно быть получше Комисаровой
>что мешает человеку-не еблану устроится на вакансию типа 2
Тысячи таких же выпускников не ебланов и нужда. Льготы и стипуху у тебя отобрали, из общаги выгоняют, мамка денег не шлёт, тянка не хочет идти в ресторан "золотые дуги"... Ты копротивляешься пару месяцев и идёшь в тестеры/вёб/энтерпрайз.
Язык всё же важен, можно заодно подтянуть и синтаксис, чтобы потом лучше уметь писать сходу работающий код. Но если думаешь, что знаешь синтаксис крестов вдоль и поперёк, то разницы и правда нет.
вот как организовывать заголовочные файлы своих либ
допустим есть сипипишник в нем сам класс с интерфейсом алгоритма, который, допустим, имеет члены классы из этого же файла, наследует базовый класс из этого же файла, итд.
стоит ли в заголовочный файл вписывать объявления всей этой пиздобратии ведь мне при подключении детали реализации не нужны, нужен только сам центральный класс который обеспечит весь функционал, тоесть я могу только его и объявить в хедере а остальное в спп?
кажется я догадываюсь, объявление в хэдере этих членов класса и базового класса потребует искать в области видимости хэдера эти же члены класса и базовый класс и я буду вынужден их тоже объявить
forward declaration
да мне то пох, я с уника работал и успел уже и байтоеблей позаниматься и высокоуровнеными хуйнями
просто ты реально хуйню несешь: я тебе говорю, что человек, нормально учайщийся в унике, но не работающий в это время вполне может устроиться джуном при должном старании, а ты говоришь что ООО ДЕВУШКА НЕ ХОЧЕТ В ЗОЛОТОМ КОЛЬЦЕ СИДЕТЬ МАМКА ДЕНЕГ НЕ ДАЕТ ИДИ В ИНТЕРПРАЙЗ
если у тебя какие-то травмы есть, ты их на других не проецируй а разберись с ними лучше, окда?
и, кстати, что плохого в интерпрайзе?
пользоваться всем нравится, а разрабов оттуда хуесосим, да?
на том, на котором тебе комфортнее всего. На литкоде ты не научишься новому языку.
Ну я бы тогда делал как на олимпиаде. Первую задачу, где просто ифы или формула, можно на питоне, ибо писать быстрее. А дальше онли плюсы
В основном это просто презентации vs и прочие эвенты, гуглил просто вводя что-то в духе windows driver и что-то там
Если что игра использует TCP протокол
как декомпилировать h.gch?
как бы выбор у тебя небольшой
имеет смысл тупо прочитать internals преодолевая себя и не пытаясь че-то до конца понять с первого раза
потому что информация сложная, но при это это базовые знания, требующиеся для того чтобы писать драйвера
Ну слушай, исходя из того, что я уже понял, драйвера, это просто dll, у которых есть фильтры разбирающие говно которое гоняется от объекта девайса, до объекта драйвера и обратно. То что мне сейчас нужно понять, по моим представлениям, это употребление IRQL, покушать KMDF/UMDF ну и познать прелести новых инструментов разработки всего этого зоопарка
Я в любом случае потрогаю интернов, но просто на данный момент есть сроки по драйверам, и мне надо выкатить хоть что-то, а как следствие, распыляться не охота, хоть и понимаю, что скорее всего выкачу калл говна
В прогах есть таймеры, как поточнее ( <1 мсек) узнать разницу между ними?
Часы компа синхронизировать нельзя, прав админа нет, можно слать любые данные по udp между этими прогами.
Посоветуйте алгоритм или микробиблиотечку
NTP же системные часы меняет, мне надо просто разницу между QueryPerformanceCounter(&counter); у двух компов узнать и оттуда разницу срабатывания датчиков.
Я думал два потока пакетов со временем посылать навстречу и записать время приёма каждого, а потом как-нибудь вычислить, имея 2 массива, может делал кто уже похожее
>я с уника работал и успел...
С тех пор многое изменилось, дедуль. Плюсы выдавили из десктопа, энтерпрайза и ещё ряда отраслей. Количество хороших вакух упало, конкуренция выросла.
>вполне может устроиться джуном
чекни на hh по россиюшке сколько c++ июней надо (не забудь из поиска убрать web и java). Ты не поверишь, но меньше 200. Зарплаты тоже чекни.
>что плохого в интерпрайзе? пользоваться всем нравится, а разрабов оттуда хуесосим, да?
Энтерпрайз это как сфера ЖКХ. Все им пользуются, ругаются и постоянно вливают туда бабло, потому что хуёво спроектировано или сделано на отъебись (часто умышленно). Если ты откроешь электрощиток в своей хрущёвке, то увидишь там enterprise in a nutshell.
>NTP же системные часы меняет
Не обязательно, ты можешь получат ьнужную тебе разницу (остаешь / спешишь) и использоват ьеё как тебе надо
Сначала по NTP получаешь разницу локального времени (d) и времени NTP сервера для обоих компов. Затем время опроса датчика (t) и дельту передаёшь пакетами между компами. Нужная тебе разница == (t1 + d1) - (t2 + d2).
У нас была задача с кучей железок в разных ебенях и мы их через NTP синхронизировали. Делал ессно не я, так что может я тут хуйню написал.
> С тех пор многое изменилось, дедуль.
мне 24
> Количество хороших вакух упало
ну тут соглы, наверное
> Энтерпрайз это как сфера ЖКХ. Все им пользуются, ругаются и постоянно вливают туда бабло, потому что хуёво спроектировано или сделано на отъебись (часто умышленно).
хуйню спорол. Так можно про все сказать: я знаю радиотехнический стартап, в который ПОСТОЯННО вваливается бабло, а работают там хуево и результат выдают еле-еле как
и в тоже время я сам поработал в крупной конторе, в которой ну все заебись - и к новым технологиями относятся норм, и свободу дают
так что ты мне никак не докажешь, что энтерпрайз разработка говно. Пока у меня прилога тинокфффа работает нормально и охуено
Я веслал на крупной галере и знаю какой там контингент занимается энтерпрайзом (код я тоже видел). Фикс говна и доработка приносят хорошие деньги, потому что у клиента нет выбора (гендир об этом открыто говорил). Что до тинькова или сбера, то они могут содержать свой департамент разработки и ебать за качество. Бизнесы в сфере медицины, логистики, торговли такого позволить себе не могут.
Конторы на плюсах это часто конторы полного цикла (RND+софт+железо+сбыт) и там больше возможностей контроля за происходящим.
>Конторы на плюсах это часто конторы полного цикла (RND+софт+железо+сбыт) и там больше возможностей контроля за происходящим.
Плюсую
а ты - да?
аноны, я вот на 2 курсе учуь и выбираю куда развиваться
скажите, действительно ли такая огромная разница между зп-хами плюсовиков и джавистов?
Разницы в зп нет, но работы на джаве найти легче.
Хабр часто публикует статистику по отрасли.
https://habr.com/ru/article/511700/
Весомый отрыв по пайке обычно у июней и мидлов. Потом выравнивается. Материальное благосостояние растёт нелинейно (раньше купил хату - больше сэкономил на аренде, раньше бабло вложил в финансовые инструменты - больший гешефт получил), поэтому даже с++ синьёр находится в позиции догоняющего.
хорошая статистика если ты попал на корабль, один хуй гребцом или капитаном, будешь жить
а сколько за бортом сдохло никто уже не посчитает
Энтерпрайэ это жаба, пихон, пхп, шарп, го (бывает легаси на с++, но это лютый пиздец). Заказчики - крупнейшие российские коммерческие конторы и куча европейских заказчиков средней руки на аутсорсе за валюту.
Плюсы - в основном конторы с госучастием и малыми бюджетами. Небольшой островок стабильности - геймдев. Штучные вакансии от топ тир контор типа huawei, nvidia, intel (ну и там яндекс/хуяндекс человек 20 возьмёт).
За почти два года веслания я пережил всех. Я видел как юнги прыгали в пучину за рублём, как заказчик высадил капитана в обосранных штанах на необитаемом острове... Но галера имеет ту особенность, что даже без команды и с пробитым дном она продолжает идти вперёд к релизу... Так и случилось. Мы пришли в порт... втроём... со сломанной мачтой и странным вкусом во рту. Каждый из нас побывал фронтендером, бекендером, девопсом, аналитиком, железячником и продукт овнером. Молча мы ёбнули водки за тех, кого с нами нет и за то, чтобы больше никогда не служить на флоте.
Дана прямая. Она описывается функцией у=2х+7
Если точка лежит ниже прямой, она должна удовлетворять условию у-2х-7<0
Если точка лежит на прямой, она должна удовлетворять условию у-2х-7=0
Если точка лежит выше прямой, она должна удовлетворять условию у-2х-7>0
Напишите программу, которая будет получать на вход координаты точки и определять как эта точка лежит относительно прямой.
На вход:(0;7) (-10;-20) (-4;20)
На выход:на прямойниже прямой выше прямой
Ну писать игори на плюсах всяк интереснее, чем систему скидок и программу лояльности для магазина пятёрочка. Ещё тырпрайз имеет неебически долгий жизненный цикл и часто подразумевает копание говна 15 летней давности, написанного немецкими дидами (мы как-то у заказчика спросили за тех, кто систему писал и там ответили, что один на пенсии, а второй умер, кек).
я вообще думал, что плюсы только в железе и остались
какая еще система скидок? там джава шарп и питон
так я об этом и говорю, что игры на плюсах, а энтерпрайз говно для ритейла на джаве
мне поесть не на что, уеба
пошел нахуй тогда
Спасибо
PTP
ставь линупс и не ебись с энвайронментом.
Это копия, сохраненная 29 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.