Этого треда уже нет.
Это копия, сохраненная 30 марта 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
38225a.jpg67 Кб, 500x651
2 1831654
Первый, как обычно.
3 1831661
Вкатился на указателе
image-dvach-b-230644857.jpeg167 Кб, 853x1280
4 1831675
Вкатился с лучшей девочкой
5 1831701
Пачаны какую ide кто использует на линуксе? Желательно не сильно продорливую.
По возможностям интересует:
Адекватное автодополнение, как стандартной библиотеки, так файлов проекта.
Ну понятно дебаггер, желательно, чтоб можно было выставлять условия для брейкпоинта. Да и очень хотелось бы иметь возможность пробежаться по стеку вызваных функций.
Подсказка типа переменной, например когда используешь auto либо просто встретил по коду, чтоб не лезть в объявление.
Возможность работы с cmake.
Какие-нибудь более-менее удобные средства работы с гит.
Ну в принципи и все основное наверное.
6 1831704
>>831675
У этой девочки мужская писька?
7 1831739
8 1831745
>>831701
NeoVim + Coc + NvimGdb + GitGutter
9 1831780
>>831701
Vs code - без пердолинга, полет нормальный и по всем твоим пунктам подходит
10 1831783
>>831651 (OP)
Короче, немного подосвоил теорию по simple code и ravesli, но понял что это всё быстро забывается и нужно чтобы каждая тема сопровождалась практической задачей, с повторением предыдущей темы. Учебники в шапке для этого я так понимаю не подходят. Как быть? денех на курсы нет
11 1831906
>>831745

>GitGutter


Спасибо, украл.
12 1831914
>>831783
веди конспекты
13 1832029
>>831914
А задачи по пройденным темам?
14 1832106
Как стать джуном в Беларуси? Вакансий 0, планирую ебать питон
15 1832154
>>831745
Cock тебе за щеку, консолеблядь
16 1832191
Чекнул гайд, решил попробовать вкатиться (один хуй в унике это преподают посредственно, решил изучать сам). Подойти хочу основательно, в гайде рекомендуют почитать про "алгоритмы, архитектура пк, операционные системы", посоветуйте книжек на темы выше.
17 1832202
>>832191
если ты прямо серьезно хочешь вкатиться - то пиши код. Читателей тут полный двач, а код надо уметь писать.

И только попутно, совсем немного времени - стоит посвящать чтению. От себя скажу, что читал танненбаума и windows internals - имхо, хуйня. Гораздо лучше сделать самому какой-нибудь проект который тарабанит операционку, и разбираться с этим
18 1832204
>>832202
Код я так или иначе простенький пишу, но все равно сам осознаю, что знаний в алгоритмизации не хватает.
19 1832219
>>832191
Просто вбиваешь в гугле: книги по теме_нейм
Тебе в первом же сайте огромную подборку даст
20 1832220
>>832191

> алгоритмы


Вот дофига же в Вики, с картинками и псевдокодом. А гугуль прям заваливает слайдами про деревья и прочее. Берешь и пишешь свою библятеку
21 1832308
15826630450630.png27 Кб, 546x565
22 1832546
>>831780

>запускать отдельный хром для редактирования кода

23 1832566
Можно же в qt потом добавить набор в проект? То есть при создании указать винду, а потом установить и добавить андроид?
24 1832594
И что бы обновиться с 14 на 15 qt мне надо полностью 15 скачивать?
25 1832601
>>832546

>пук

26 1832624
Посоветуйте проектов на гите которые стоит почитать вкатышу после 1 книги Страуса. Чисто почекать решения и реализации алгоритмов и неймспейсов других людей. + Ещё каких-нибудь старых игр с рандомной генерацией карт.
27 1832626
Итак, у меня тут случилась БОЛЬ. Пишу не первый год, но попал в тупик.
Сначала вводные:
1. Компилятор MSVC, тулсет v141, стандарт С++17
2. Платформа - Windows, соответcвенно sizeof(wchar_t) == 2

Есть txt файл в кодировке UTF-16LE, BOM присутствует, концы строк - \r\n (\r и \n конечно тоже по два байта) . Могут присутствовать суррогатные пары utf-16 (когда один unicode codepoint кодируется не 16 битами а парой 16 битных значений из оговорённого диапазона)

Как его построчно прочитать?
По большей части, можно даже построчно не читать - лишь бы читалось правильное количество байт чтобы потом конвертить в другую кодировку через WideCharToMultiByte

wifstream inFile(L"file.txt"); //опционально с ios::binary
wstring line;
std::readline(inFile, line);

- не подходит - поток без codecvt facet читает по одному байту и конвертит каждый байт в wchar_t и получается фигня, кроме того останавливается посередине L'\n' начиная следующую строку с \0.
codecvt_utf16<wchar_t> помог бы, но во-первых он deprecated, во-вторых он не корректно конвертит суррогатные пары - потому что потоки могут только в преобразование N:1, и поэтому этот facet читает 4 байта, получает правильный codepoint и обрезает его по границе 16 бит (размер wchar_t)
Помог бы codecvt_utf16<char32_t> (тоже естественно deprecated), но MS его поломали - не сделали где-то dllexport и хер забили чинить (да и специализации потока для char32_t тоже нет).

Велосипедить разбор файла самому через IS_HIGH_SURROGATE и прочее крайне не хочется - можно легко проебаться.

Куда ещё посмотреть? Бустовские io потоки? (никогда их не использовал, и хотелось бы тут обойтись по возможности без буста) Pure C stdio? Может в Winapi что-то есть а я неправильно ищу?
28 1832722
qmake или cmake для qt?
29 1832793
>>832722
>>832594
>>832566
как какать?
30 1832931
Еду тут в метроу и в мозг стукнула идея алгоритма для сверки строк. Короче, читаем нужное число строк, и в цикле читаем посимвольно переводя символ в инт и добавляя в соответствующую переменную. Потом тупо сверяем все интовые переменные и радуемся. Нормально чи не нормально? Как по скорости выйдет?
Без рофлов, я учусь 2 недели.
31 1832953
>>832931
"bb" == "ac"
32 1832958
>>832953
А если нужно сравнить пару файлов в несколько кб весом?
33 1832969
>>832953
Он не про единую переменную для строки, он - долбоёб.
34 1832985
>>832969
Нет ты, что не так то?
35 1832990
>>832931
винрар, который мы заслужили
36 1832992
>>832931
Ты знаешь как вообще данные в компе хранятся? Ему похуй символ это или целое число. В конце концов он все равно циферки сверяет. Так зачем сначала эти циферки в число загонять, если можно просто символы сравнить сразу?
37 1833002
>>832626
Считай весь файл в память и сконвертируй в массив 32 бит символов сам

>дин unicode codepoint кодируется не 16 битами а парой 16 битных значений из оговорённого диапазона


Это определяется первыми битами, несложно обработать.
38 1833005
>>832931
А если строки в разной кодировке? А если перевод строки в одном случае виндовский в другом линуксовый?
39 1833097
Есть какие нить книги для тех кто из мира жавы хочет почитать про с++?
40 1833164
>>831701
Из всего на чем работал QT creator лучшая, ИМХО
41 1833174
>>833005
Ты ещё скажи "а если юникод в разной степени нормализации"
42 1833202
>>833002
Я конечно могу так сделать (а точнее, уже попробовал перед тем как задавать вопрос и мне не понравилось), но

>Велосипедить разбор файла самому через IS_HIGH_SURROGATE и прочее крайне не хочется - можно легко проебаться.

43 1833206
>>831654
Диалектика почти
44 1833216
>>831704
Ты что, Тоню не знаешь?
45 1833224
>>831651 (OP)
На каком году изучения крестов надо понимать этот код?
46 1833226
>>833224
можно быть принципалом в FAANG, и не понимать этот код. Это адовая эзотерика, которую даже какой-нибудь Полухин не сразу распарсит
47 1833245
>>833226
Ну первое как-то ещё легко воспринимается, остальное специфично конечно.
48 1833280
>>833226

Полухин - питух
49 1833283
>>832106

Сначала становишься рядовым программистом. Потом сержантом. А уж потом младшим лейтенантом.
50 1833285
>>833224
Первое, что тебе нужно понять на нулевом дне обучения, это то, что код должен быть всегда отформатирован, а не как на оп-пиках.
image.png11 Кб, 459x207
51 1833300
Сап, пытаюсь сгенерировать GLFW файлы цмейком. Но компилируются почему-то под 32 разрядную винду. Пишет что упустило какой-то pthread и doxygen. Не генерируется либа glfw3.lib. Гугл ничего толкового не выдаёт.
52 1833374
>>831651 (OP)
Сап, тут есть аноны имевшие опыт с qml? Пишу приложение мобильное на нём, почти написал весь ui, и готов но остались некоторые вопросы.
53 1833386
>>833374
js-тред два блока ниже
54 1833529
>>833386
да ёпта, зашёл в андроид спросил, направили сюда, отсюда в жс, поликлиника ебучая
55 1833546
>>833300
Ну и?
Ты дальше продолжал сборку?
56 1833756
>>833374
скайп/вайбер, яндекс деньги, 700р час, устроит?
57 1833759
>>833280
имхо, он выглядит как 100% гетеросексуал
я понимаю что анонимныц ресурс и можно оскорблять как угодно, но..
58 1833770
>>833759
И мало того, он женат. Пересекался на конфах.
59 1833878
>>833300
Используй vcpkg
60 1833934
>>831701
emacs, magit, clangd
61 1833935
>>833756
вебкам уже и сюда добрался?
62 1833963
Шапке можно верить или лучше загуглить роадмап самому?
63 1833968
>>833224
просто вгрызаешься в
шаблоны вандервуда
и
последнюю книгу майерса
часов 300 усиленной дрочки и все
читать и понимать будешь

если по 10 часов в день ебашить, то месяц
+10 часов спишь в полной темноте, 2 часа жрать, срать, дрочить
64 1834013
>>833963
шапке миллиард лет
65 1834037
>>833968

>если по 10 часов в день ебашить


то сдохнешь через месяц.
я не понимаю зачем люди пытаются впихнуть невпихуемое, типа вызубрить жабакор хортсмана за неделю, меня через час потянуло сжечь его, или записатся на курсы чтобы отдать дохуя денег и получить выгорание, ненависть к програмированию в целом и проблемы со здоровьем от переутомления, вместо того чтобы изучать язык в своем темпе, сорт мазохизма что ли такой.
66 1834054
>>831651 (OP)
Проиграл с оппиков.
Никогда раньше не встречал вариадик темплейты, даже не задумывался об их существовании
67 1834085
>>834037
написал же, спишь 10 часов при этом
помимо еды и сранья, еще останеться 2 часа на чередование прогулки и силовой зарядки
в таком режиме можно год прожить
итого 3к+ часов в год
за три года 10к часов, а обычно 10к часов растягивают на 10 лет
10к часов это минимум, необходимый в том чтобы детально разобраться в некой сложной сфере деятельности, стать мастером
68 1834101
>>834085
Про 10к часов правда - а вот про месяц неправда, мозг не сможет, там тупо не выстроятся связи. Да еще ему надо делать это в фоне, когда ты не думаешь о теме активно. Да еще кривая забывания, чтобы повторять первые темы. Так что ты быстро упираешься в предел понимания, пока какая то предыдущая тема не усвоится, ты с какой то сложности будешь видеть тупо буквы, не понимая что происходит. Да еще тебя на второй неделе блевать потянет от однообразия, что ты потом месяцами программирование видеть не захочешь. Кроме того узкий специалист подобен флюсу, так что надо еще какие то предметные области осваивать и вообще саморазвиваться. Вот так и выходит 5 лет.
69 1834206
>>834101
простая физиология мозг в момент концентрации потребляет до 25% всей энергии организма и долго в таком напряжении работать не будет.
70 1834226
>>834101

>Кроме того узкий специалист подобен флюсу



А других специалистов не бывает - либо он узкий, либо не специалист,а, в лучшем случае, мамкин эрудит по верхам.
71 1834229
>>834206

>простая физиология мозг в момент концентрации потребляет до 25% всей энергии организма и долго в таком напряжении работать не будет.



Потому что мозг надо с детства было развивать, книжки там читать, головоломки решать всё свободное время, а не к быдлодрузяшкам во двор бегать в сифу и прятки играть.

Взрослый мозг ясен хуй уже не разовьешь, тут судьба только охранником в пяторочку, только хардкор.
72 1834259
>>834229
и он все равно будет потреблять столько же и не хотеть работать, неважно как ты его развивал, а будешь заставлять его реально пахать по 10 часов в день через пару недель получишь нервное истощение, тревожность, бессонницу и депрессию, я говорю по своему опыту прошедшему через кранчи.
с такой аргументацией пройди в мвп тред, там такое любят.
73 1834286
А может вы лучше найдёте то, что вам нравится? ¯\_(ツ)_/¯
74 1834322
>>834286

Проблема в том что

НРАВИТСЯ != МНОГАДЕНЕГ.

МНОГАДЕНЕГ = ВОРОВАТЬ OR ВЬЕБЫВАТЬ, УМЕНЬШАЯ ПРОДОЛЖИТЕЛЬНОСТЬ ЖИЗНИ, ПРИЧЕМ БЕЗ ВАРИКА ИХ ПОТРАТИТЬ НА ТО ЧТО НРАВИТСЯ ПО ПРИЧИНЕ ОТСУСТВИЯ ВРЕМЕНИ НА СОБСТВЕННО ЖИЗНЬ
75 1834323
>>834322

Именно по этой причине у звезд шоубизнеса пьянство разврат и наркотики - потому что жизнь есть только в трейлере в поездках от гига к гигу.
76 1834343
Есть набор фактов вроде
"BAD_WEATHER", "TIRED"
и набор правил вида
"BAD_WEATHER & TIRED -> BAD_MOOD"
, результат которых - новый факт. Факты и правила задаются из файла в рантайме. Результат работы программы - набор фактов

Вот над подобной задачей туплю, как это архитектурно реализовать красиво?
77 1834366
>>834343
Поддвачну вопрос, я похожее реализовывал через битовые флаги
78 1834375
>>834366
>>834343
Теперь это prolog-тред?
79 1834455
>>834343
клаузы Хорна второго порядка
80 1834464
>>831745
>>833934
могли бы поделиться вашими конфигами для них? с emacs я правда дел не имел, а вот вим обычный одно время использовал, правда в рамках typescript, ну честно заставить корректно работать автодополнение у меня не получилось, подсвечивал кучу слов нет носящихся к интерфейсам слов. Но пердолить конфиг до нормального состояния, это хз сколько времени удить нужно. А так бы попробовал зайдет или нет.
81 1834467
>>834343
Просто FSM не подойдет?
82 1834489
Страуструповские графлибы на fltk сейчас актульны вообще или всё qt вытеснил?
83 1834520
>>834489
гуй надо писать на шарповой Авалонии
84 1834524
>>834520
А что не на электроне? Нахуа вообще нужен шарп если знаешь плюсы?
85 1834577
>>834524
Я не он, но отвечу.
Как мне кажется, из-за отсутствия событий и делгатов, сборщика мусора и рефлексии, при написании сколько-нибудь сложных гуёв приходится сооружать совершенно монструозные велосипеды или использовать чужие - MFC с его message map, Qt с signal/slot, что-то там ещё в UWP (не сталкивался лично, может не прав и там всё норм - а может похоже на шарп).
Зачем же вообще писать гуй на плюсах? Ну, бывает что по ряду причин шарп не подходит. Например, недопустим managed код (рантайм), или гуй связан с байтоеблёй, WinAPI, драйверами, COM и создание биндингов неуместно/неудобно.
86 1834699
>>834577
Не, ну учить язык чтобы пилить красивые гуишки без вспомогательных средств это сильно. Такое реально достойно уважения + затраченного времени.
87 1834708
>>834577

> Зачем же вообще писать гуй на плюсах?


Да, лучше взять очередное говно на электроне которое будет для примитивнейших программ жрать память как целая ОС.
88 1834848
>>834708
Дак яи не спорю. А электрон (там же js?) чтобы побыстрее хуяк хуяк и в продакшн.
gui c++.PNG53 Кб, 1425x860
89 1834896
>>834577
Пишу в свободное время свой ГУИ на плюсах, с использованием SFML правда, но потом заменю на опенГЛ или другую хуйню. Можете оценить зачатки моего говна
90 1834904
>>834896
Мда, тебе бы основы дизайна пройти
Кстати, возможно ли сделать гуи одного приложения на Линукс который максимально повторяет все кнопки приложения на винде? Такой же крестик, шрифты, и т.д. На винде обратное видел - гтк выглядит прям как линуксовый
image.png108 Кб, 1366x768
91 1834909
Как грамотно распарсить пикрил. Нужно только 2 столбца и всех этих. Просто getline, потом делать cin пока до нужного столбца не дойду?
image.png108 Кб, 1366x768
92 1834910
93 1834918
>>834909
берешь getline и парсишь строку по символу '\t' судя по всему
94 1834929
>>834909
Скопировать в эксель..
95 1834950
>>834896
Симпатично
Тоже тыкаю sfml
96 1834951
>>834909
grep, awk
97 1834960
Памагити, начал изучать синтаксис с++, вначале я был полон сил, сейчас дальнейшее изучение туманно, так как не вижу денежной выгоды, кто в этом вертится подскажите актуальность языка на ближайшие 10 лет
98 1834967
>>834960
Актуальна любая технология, на которой ты можешь приносить пользу. Даже С++.
99 1834974
>>834960

>кто в этом вертится подскажите актуальность языка на ближайшие 10 лет


В ближайшие 10 лет он никуда не денется.
Вообще актуальна версия, что чем дольше язык живёт, тем дольше он будет умирать. Сейчас плюсы очень активно развиваются (быстрее чем когда-либо) и уходить не собираются.

Другое дело, что вкатываться в них долго и сложно. Особенно сложно искать первую работу.
100 1834977
>>834974
и последующие, провел 5 лет на с++ и Qt, везде оказалось нужно STL я иду на хуй, на двух собесах дропнули, на третьем взяли на 90 т.р. и то им нужны были тупо любые программеры которые не слишком тупо излагали
101 1834982
>>834974

>плюсы очень активно развиваются


Почему так, анон? С 90-x и 00-х то их популярность явно упала.
102 1834985
Нужно познать основы с++ для начеркания софтин типа списков, для домашнего использования. Образование не ИТ, скилы в коде заканчиваются ХТМЛ и немного цсс. Буду идти по гайдам на ютубе наверное. Какой посоветуете ide на окна, чтобы с компилятором, блекджеком и шлюхами?
От мелкософта не хочу ставить, ботнет
103 1834991
>>834977
5 лет писать и не знать СТЛ? Серьезно?
104 1834993
>>834985
от мелкософта - ИДЕ стандарт индустрии
105 1834994
>>834982
С популярностью вопрос спорный.
Индустрия развивается, появляются новые ниши, старые перераспределяются.
Для некоторых задач появились более подходящие инструменты (а иногда эти инструменты специально развиваются в каком-то более профильном направлении).

За пределами отдельно взятой сферы про их технологии можно и не слышать вовсе. Если быть "в курсе", то в плюсовом мире постоянно что-то происходит, msvc бешеными темпами подпиливает фичи, чтоб соответствовать стандарту, иногда даже gcc с clang'ом не поспевают, комитет тоже трудится, на выступлениях много всего интересного обсуждается.

Ну то есть происходит всё то же самое, что и в любой сфере.

>>834977
У меня на первой работе вообще плюсов не было, на второй искали кого-нибудь на Си, я им половину собеседования рассказывал про плюсы, так и взяли.

>>834991
У них там в Qt свой мир со своей парадигмой, стандартной библиотекой и макросами

>>834985

>Какой посоветуете


Посоветую не плюсы, они под твои критерии не подходят.
Возьми шарп.
106 1834998
>>834993
Я понимаю, но пытаюсь по возможности избегать софта проприетарного. Но если так, подожду еще ответов и наверное его накачу.

>>834994
а меж языками С разница большая в синтаксисе и в общем плане? Слышал что не проблема выучить сразу несколько родовых.
107 1835011
>>834998
В синтаксисе есть общие элементы, но в целом языки достаточно сильно отличаются друг от друга.

>Не проблема


Если знаешь один, то разобраться в другом будет легче, но не более.
Концепции и модели использования всё равно будут отличаться, так что придётся получать опыт.
Я вообще два новых языка учу сейчас в добавку к имеющимся, но это занимает много времени. "Не проблема" - неоднозначное понятие.
108 1835012
>>834982
Было стадо языков на которых можно писать быстро но некачественно. Плюсы сделали выводы и позаимствовали много концепций, позволяющих писать по современному, но чтобы все осталось прлизводительным.
109 1835013
>>834994
>>835012
Короче когда другие уйдут плюсы всё ещё будут живы?
110 1835014
>>834985
Vs codium без зондов.
111 1835015
>>834998

>Я понимаю, но пытаюсь по возможности избегать софта проприетарного


Не будь шизоидом. Либо ты сидишь под соснолькой в ОпенБЗД, либо не парься. Весь мир, весь энтерпрайз, все правительства, все военки сидят под виндой. Но ты боишься, что товарищ майор запалит, что ты прон с конями смотришь.
112 1835019
>>835013
Другие — это кто? Шарп никуда не уходит, джава никуда не уходит. Даже Си никуда не уходит.
113 1835021
>>835019
Ну вот в каком-нибудь 2077 какой прок будет от жопаскрипта, питона, сукасярпа, явы?
114 1835022
>>835014
А там разве есть компилятор?
115 1835027
>>835022
Clang возьми или тот же gcc
Настроишь за день и навсегда
116 1835030
>>835021
Не знаю. И тебе не надо знать про 2077.
117 1835038
Есть шаблон

template<typename T>
void BufferObject::allocate(const std::vector<T>& data, DrawMode mode) { ... }

А после навалено это

// explicit template definitions for common OpenGL types

template void BufferObject::allocate<GLboolean> (const std::vector<GLboolean>& data, DrawMode mode);
template void BufferObject::allocate<GLbitfield>(const std::vector<GLbitfield>& data, DrawMode mode);
template void BufferObject::allocate<GLbyte> (const std::vector<GLbyte>& data, DrawMode mode);

и т.д. для, походу, всех всех/большинства стандартных OpenGLовых typedefов. g++ ругается:

error: duplicate explicit instantiation of 'void zrv::BufferObject::allocate(const std::vector<T>&, zrv::BufferObject::DrawMode) [with T = int]' [-fpermissive]
template void BufferObject::allocate<GLsizei> (const std::vector<GLsizei>& data, DrawMode mode);

и т.д. для 10 из 14 типов. Я правильно понял, что причина в том, что некоторые тайпдефы пересекаются? Что таки делать?
118 1835039
>>835038

>10 из 14


5 из 14*
119 1835040
>>835038
Смотри, где предыдущее объявление.
Если код не библиотечный, смотри кто написал и спрашивай у него, зачем он это написал.
120 1835042
>>835040
Нет предыдущего объявления, похоже, что проблема в том, что

typedef int GLint
typedef int GLsizei

поэтому нет проблем с

template void BufferObject::allocate<GLint> (const std::vector<GLint>& data, DrawMode mode);

но на

template void BufferObject::allocate<GLsizei> (const std::vector<GLsizei>& data, DrawMode mode);

происходит то, что происходит
121 1835054
>>835042
Удаляй лишнее тогда. или используй то, что тебе коноплятор предложил, -fpermissive, но где-то будет грустить один некочан
122 1835119
>>834929
А Эксель перевод строки внутри поля воспримет?
123 1835132
>>831651 (OP)
Можете показать нормальные примеры натягивания Си-каши на современные кресты? Пердолю Вулкан и это пиздец. Всё зависит от всего, для нормальной инкапсуляции в классах надо везде лепить костыли, уже вчера словил цикличную зависимость в этом пиздеце и дебажил час. Как вообще работать с этим не в Си-стиле? В туториалах к Вулкану вообще в один класс сваливают портянки из 2к строк, выглядит как пиздец.
124 1835142
>>834974>>834967
Спасибо за поддержку, шлю вам любви
125 1835161
>>835132
Я вот так примерно делал.
https://gcc.godbolt.org/z/oPMTqz
Если хочется как-то обернуть, придётся смириться с избыточным хранением хэндлов где попало.
Я оборачивал так, чтобы во-первых, не уйти сильно далеко от вулкана мои хэндлы напрямую кидаются в функции вулкановские из-за возможности неявно кастовать, во-вторых, чтоб деструкторы были, и чтобы всю многословность вулкана с кучей опциональных параметров скрыть куда-нибудь к хуям.
126 1835166
>>835161
Неплохо, но...
Почему сишный интерфейс, а не официальный vulkan.hpp из SDK?
Почему не С++20?
Производительность не сосёт с таким?
127 1835179
>>835166
Почему не .hpp? Хуй знает, наверное, я о его существовании даже не знал. Или знал, но почему-то выбрал сишку. Не помню.
Не с++20 потому, что писалось, когда ещё не с++20. Ну и рановато пока, я в следующем году буду всякое своё говно на двадцатые плюсы переносить.
Производительность -- это ты про исключения? В Release конфиге у меня на все функции навешивается noexcept, и проброс исключения заменяется std::terminate. Но я задумываюсь о том, чтобы это убрать, потому что вроде и с исключениями не сосёт.
128 1835209
>>835166
А этот их vulkan.hpp хорош, зараза. Спасибо за инфу.
129 1835211
>>835166
Я, оказывается, сделал то же самое, что и они. У меня в моей велосипедной либе это даже называется точно так же. Только чуть иначе работает.

UniqueHandle for automatic resource management

Vulkan-Hpp provides a vk::UniqueHandle<Type, Deleter> interface. For each Vulkan handle type vk::Type there is a unique handle vk::UniqueType which will delete the underlying Vulkan resource upon destruction, e.g. vk::UniqueBuffer is the unique handle for vk::Buffer.

For each function which constructs a Vulkan handle of type vk::Type Vulkan-Hpp provides a second version which returns a vk::UniqueType. E.g. for vk::Device::createBuffer there is vk::Device::createBufferUnique and for vk::allocateCommandBuffers there is vk::allocateCommandBuffersUnique.

Note that using vk::UniqueHandle comes at a cost since most deleters have to store the vk::AllocationCallbacks and parent handle used for construction because they are required for automatic destruction.
130 1835260
Что происходит с переменной x в данном коде? Когда объект удаляется? В каждое итерации цикла?

for(...) { int x = 1; }
131 1835268
>>835260

> Что происходит с переменной x в данном коде?


Становится равна единице. Совсем тупой что ли?
132 1835274
>>835260

>Когда объект удаляется? В каждое итерации цикла?


Без оптимизации - да, если с оптимизацией, то компилятор скорее всего вообще уберет x
133 1835311
>>835260
Если б это был бы настоящий объект с конструктором и деструктором - то да, он каждую бы итерацию создавался и уничтожался.
Ты мог бы сам написать тестовую прогу и выяснить это.
А так, наверное компилятор тупо зарезервирует память под переменную (может даже регистр) на весь цикл, и будет записывать туда единицу каждую итерацию.
Никакого "удаления" не будет. У int нет деструктора. По окончании итерации, эта память попросту объявляется ненужным мусором, поверх которого можно записать всё что угодно.
134 1835319
>>835274
>>835311
То есть на самом деле объект как бы "выносится" за пределы цикла? И компилятор уничтожит ее после того как цикл завершится?
135 1835326
>>835319
"Объект" в C++ - это эфемерное понятие. Есть память, все объекты живут где-то в каких-то её местах. У них можно взять адрес (т.е. узнать, где именно в памяти они находятся). Как там распределяется память на стеке под автоматические переменные функции - это интимный вопрос компилятора. Язык C++ это никак не регламентирует.
Создание и удаление объектов - это условность. Сегодня мы считаем, что на этом участке памяти объект существует, а завтра его уже нет.
По правилам C++, создание объектов предваряется конструктором, а удаление завершается деструктором. Но вполне можно сделать трюк, начав считать некий участок памяти уже существующим объектом, без вызова конструктора. И попросту освободить память или переписать её, без вызова деструктора.
Ты просто кастуешь нужный указатель на void к желаемому типу указателя на объект, и обращаешься по этому указателю как ни в чём ни бывало.
136 1835328
>>835319
В таком простом примере обсуждать оптимизации бессмысленно.
Если это весь код, то переменной вообще может не быть, как и цикла.
137 1835333
>>835319
Лучше всего тебе ознакомиться с генерируемым ассемблерным кодом. Моя гипотеза в том, что возможно, в stack frame твоей функции, резервируется место под переменную i. Когда исполнение программы доходит до цикла, в эту переменную начинается записываться единица. После окончания цикла - про переменную все попросту напрочь забывают. Деструктора же нет, формальное уничтожение даже не требуется.
Но оптимизатор, ежели не выкинет переменную, может её разместить прямо в регистре процессора. Тем более, никто её адрес не берёт.
138 1835334
>>835328
Двачую.
139 1835337
>>835319
Нет, не выносится, для компьютера будет выглядеть как-то так

loop:
новая переменная х
присвоить х 1
если (условие выполняется goto loop)
140 1835342
>>835326

>Создание и удаление объектов - это условность. Сегодня мы считаем, что на этом участке памяти объект существует, а завтра его уже нет.


Поясню ещё. Вот есть создание объектов на куче, через new. Этот new выделяет участок памяти, размером ровно в твой объект, где он может быть размещён. Затем, если нужно, вызывает конструктор. После этого, считается (условно!), что на этом участке памяти объект существует. На самом же деле, тут никаких грома и молнии с небес не раздаётся, и ничего в компьютере внешне не меняется. Как была та память, так она и остаётся. В конечном итоге ничего может и не случиться - и даже значения байтов памяти на том участке могут остаться прежними.
Единственно что, гарантируется что до удаления объекта через delete, память на этом участке уже не будет повторно выделена кому-либо ещё. Т.е. объекты не будут пересекаться в памяти.
141 1835344
>>835337
В ассемблерном виде код
for (; ; )
{
int i = 1;
}

Выглядит так
$LN4@main:
movDWORD PTR _i$1[ebp], 1
jmpSHORT $LN4@main

То есть заносим 1 и начинаем цикл заново
142 1835345
>>835344
Ай мля, забыл, что тут рушится всё, надо было заливать куда-нибудь
https://pastebin.pl/view/97b19318
143 1835354
>>835337
Это очень туманные объяснения "на пальцах". Что скрывается за "новая переменная x"?
С точки зрения C++, да действительно, в цикле объявлена новая переменная x. Только вот, как это будет выглядеть внутри компьютера, и в ассемблерном коде, генерируемом компилятором?
Где в памяти она будет размещена? И в памяти ли вообще?
144 1835373
>>835354
Я ж вбросил чуть ниже - сохраняется в стек фрейме, если я правильно понял ассемблер.
145 1835443
Кто использовал doctest? Я пол-дня уже читаю доки, не могу понять - вот я хочу добавить тесты в мою небольшую программу, это не библиотека, у меня есть main с моей логикой. Предлагаемый вариант писать тесты прямо рядом с прод кодом предполагает, что запуск тестов будет производиться вместе с моим main'ом и будет менеджиться при помощи cli? Как мне разделить всё это дело? Или может в сторону чего-то другого лучше посмотреть? Первый раз за тесты взялся.
146 1835458
>>835337
Выносится, это же не скриптовая дрисня. Тут компилятор сначала сканирует всю функцию на создание переменных. И условно говоря выносит объявления переменных в начало.
Кстати не исключено что в каком нибудь случае типа
{ int x = 1; ...}
{ int y = 2; ... }
Он может использовать одну и ту же область памяти под обе, ведь их время жизни не пересекается.
147 1835465
>>835443
Любые тесты подразумевают что при запуске программы запустится не ее main, а main теста. Поэтому в их примере запуск экзешника печатает не факториал, а отчет по тестам.
Судя по докам, все что там требуется задать дефайн и сделать один инклюд.
В принципе это уже твое дело, ты можешь этот дефайн хоть в коде указывать, хоть в cli, хоть в cmake. Главное что main должен остаться либо твой либо их. (Ну или твой тестовый)
В принципе можешь и разделить по файлам, типа один файл с main настоящим, он подключает все остальные твои файлы, а второй файл с main тестовым, он тоже подключает все файлы, а собираешь ты либо тот, либо этот.
334215330.jpg26 Кб, 604x340
148 1835471
>>835458
Упустил этот момент
image.png115 Кб, 1366x768
149 1835505
Что я делаю не так? Не могу строки прочитать из файла
150 1835533
>>835465
Стало понятнее, спасибо, друг!
.png151 Кб, 978x1056
151 1835558
152 1835560
>>835505
проверяй на is_open, fstreamы не кидают эксепшены без конфигурации специальной
153 1835561
>>835560
>>835558
Хорошо. А как понять почему он не открывается? Сейчас все заработало кста. У меня файл для открытия лежал в папке, где права админа нужны, поэтому не работало
154 1835624
>>835561
Я process monitor расчехляю в таких случаях (серьезно, не шучу). Нормального эррор репортинга у фстримов нету просто
155 1835631
>>835624
Прикольно. А вот что делать человеку, который совсем не программист, но хочет программой попользоваться для работы с файлами, а программа файл не открывает? Как он поймет что не так? Должно же быть решение адекватное. Ок, пусть не адекватное, но хотя бы работающее
156 1835638
>>835631
пользоваться системным API (CreateFile) и отдавать нормальные ошибки
157 1835665
>>835561
if (!fstr) {...}
+
std::strerror(errno)
158 1835677
>>835558
Ляяя это специальный сервис для таких фотокарточек?
159 1835681
>>835260
Он удаляется перед } (закрытие области видимости). Не слушай клоунов-пердоликов на ассемблере.
160 1835684
>>835560
Лол бля, турбо паскаль наоборот.
161 1835685
>>835681
И как же он "удаляется", расскажи, нам очень интересно
162 1835687
>>835354
А почему ты не посмотришь на ассемблер?
cc++ -OSo - foo.c
163 1835689
>>835685
Концептуально. Это может быть пустая операция, а может и не. Стандарт ++С данный момент не фиксирует.
164 1835704
>>835685
Тот анон неправильно выразился. У переменной int x в конце каждой итерации деаллоцируется место хранения (automatic storage в данном случае): https://en.cppreference.com/w/cpp/language/storage_duration

>automatic storage duration. The storage for the object is allocated at the beginning of the enclosing code block and deallocated at the end. All local objects have this storage duration, except those declared static, extern or thread_local.


В результате этого у объекта закончится время жизни: https://en.cppreference.com/w/cpp/language/lifetime

>The lifetime of an object ends when: <...> the storage which the object occupies is released


В результате окончания времени жизни вызывается деструктор: https://en.cppreference.com/w/cpp/language/destructor

>A destructor is a special member function that is called when the lifetime of an object ends


Так как int тривиально разрушим, программа не обязана вызывать деструктор при его уничтожении: https://en.cppreference.com/w/cpp/language/lifetime

>A program is not required to call the destructor of an object to end its lifetime if the object is trivially-destructible or if the program does not rely on the side effects of the destructor.

165 1835715
>>835561
Как проверять тебе уже ответили - через is_open. А вот как понять почему не открывается я хз, можно ли вообще. С помощью winapi функций вроде можно.
>>835677
https://carbon.now.sh/
166 1835723
>>835311
на самом деле, у int есть деструктор
кхе кхе
мимо безработная хуйня
167 1835732
>>835723
по-этому ты и безработный
168 1835741
>>835723
У баб тоже хуй есть, но он тоже тривиальный)))))
169 1835745
>>835732
Нет, он, на самом деле прав
170 1835796
>>835681
Двачаю ентого.
171 1835813
>>835681
>>835689

> ну он там удаляется где то просто в уме пук среньк


И чем же ты лучше клоунов пердоликов на ассемблере?
cppAlreadyBugd.jpg109 Кб, 1281x904
172 1835909
Подскажите, хочу обучиться с++ и такая проблема:
1 - создаю пустой C++ проект
2 - пкм - Properties
3 - почему у меня нету настроек C++?
Во всех гайдах и постах он есть, а у меня нет. Что делать?
173 1835928
>>835909
Создать файл .cpp с кодом.
174 1836005
>>835909
Насколько я помню в студии разное меню если пкм на солюшне или на проекте.
175 1836010
>>835928
Правда нужно было файл создать и попробовать собрать проект, без этого этой настройки небыло, спасибо
16031329977090.png181 Кб, 472x505
176 1836082
ХОЧЕШЬ КОРУТИНЫ C++20 С ASIO
@
error: сосать, в asio ошибки с концептами, еще какая-то непоправимая хуйня
@
НАХОДИШЬ ИСПРАВЛЯЮЩИЙ КОММИТ ВЫПУЩЕННЫЙ РОВНО ЧЕРЕЗ ДЕНЬ ПОСЛЕ РЕЛИЗА
@
КАЧАЕШЬ МАСТЕР И СОБИРАЕШЬ
@
error: ваша версия gcc говно
@
КАЧАЕШЬ HEAD GCC И ЕБЕШЬСЯ С КОНФИГУРАЦИЕЙ AUTOTOOLS, ПОИСКОМ НУЖНЫХ ЗАВИСИМОСТЕЙ И ИХ ЗАВИСИМОСТЕЙ LIBBISON LIBFLEX LIBHYUSON, БУТСТРАПИШЬ КОМПИЛЯТОР ПО ГАЙДУ ИЗ ИНТЕРНЕТА
@
НЕ ПОФИКСИЛИ


Типичный C++xx в 20xx году. А столько же мучился, чтобы рабочий <filesystem> на винде в 2017 получить.
177 1836159
>>836082

>rolling release, нажал одну кнопку — получаешь всегда свежий gcc

ebatspermoblyad.jpg46 Кб, 700x502
178 1836167
>>836082

>использовать что-то кроме Gentoo или Nix для разработки на bleeding edge версиях



А теперь представь, сколько спермоблядям надо пердолиться.
179 1836196
Сап, дали в шараге нам изучать С++. Лекции не читают, кидают только методы и делайте лабы сами. Есть простенькая задачка по вычислению площади треугольника формулой герона. После того как вводишь значения сторон, нужно чтобы они были больше нуля и когда сумма любых двух его сторон больше третьей(существование треугольника).
Короче в if я задал несколько условий, но они не выполняются, ни одно. Че я сделал не так, помогите пожалуйста.
180 1836197
>>836196
Я такой хуйней в 7 классе занимался. Где ты учишься?
181 1836198
>>836197
Та я такой хуйней по сути и не должен заниматься, так что не так с условиями в иф?
182 1836202
>>836196
&& -> ||
183 1836232
>>836082
Качаешь вижуал студию
@
все, чего нету - ненужно
184 1836233
>>836196
Ебать нахуй, гото разве не выпилен из языка в прошлом веке?
sage 185 1836254
>>836232
Согласен.
186 1836262
>>836082
сейм. я из этой хуйни делал франкенштейна, откатив часть азио на старую реализацию без концептов
image.png158 Кб, 1366x768
187 1836333
Как фиксить? До этого dll просило, я все скопировал в папку с программой. Потом мне надо будет прогу другому человеку скинуть. Мне ему со всей этой швалью кидать или можно как то все в exe одно ужать? Ну это сейчас не важно.Важно что я программу запустить не могу
188 1836344
>>836333

>можно как то все в exe одно ужать


Использовать статические библиотеки, а не динамические
189 1836360
>>836344
А с пикрилом че делать?
190 1836390
>>836233
Нет конечно.
191 1836394
>>836233
С чего бы ему? Если что-то есть в сях и это не designated initializer или VLA - то это есть и в плюсах.
192 1836401
Аноны, а модели в Qt вообще сами обновляются, если я данные меняю, или нужно самому обновлять как то. Нихуя не могу понять.
Вот у меня QTableModel с контейнером QImage внутри. Когда я меняю один из QImage в модели, он же должен автоматом на QTableView меняться, не?
193 1836413
>>836344
Это мне в vs или в qt копаться?
194 1836424
>>836360
>>836413
В душе не ебу, из всего твоего я только понимаю, что где-то ошибка выскочила, а что там у тебя где в студии или еще где - не видно отсюда
195 1836427
>>836333
Нужно ещё копировать plugins/platforms/qwindows.dll
196 1836428
>>836401
emit dataChanged, вьюшки сами обновятся
197 1836429
>>836196
меня поражает логика совкового образования. Для такой хуйни плюсы использовать. Пайтон для этого в разы проще
198 1836433
setlocale(0, "") очень умилительно смотрится по соседству с namespace std. Да, таков он, ++С.
199 1836473
>>836433
пояснительную бригаду. Типа всё должно быть определено в пространстве стандартных имён?
200 1836477
>>836196

> printf("zbs")


Вот вы так пишите, а потом удивляетесь тому, что растошиза процветает.
201 1836481
>>836473
Нет, setlocale давно должен умереть. Это интерфейс из ада на уровне си восьмидесятых. А неймспесы ваши нормальная вещь, слизаны из sml.
202 1836483
>>836433
>>836481
Предлагаете комитету добавить в стандарт такое понятие, как консоль? Или объясните, как вы собираетесь выводить в консоль utf-8, если у вас cp886?
203 1836497
>>836483
Ты так заблудился, молодой падаван... У тебя есть ПОТОКИ ввода и вывода. У потоков есть операторы. Должен быть оператор, задающий желаемую кодировку для ПОТОКА. Прочего быть не должно.
204 1836503
Есть ли фриланс на плюсах? И если да то в чём он?
image.jpeg24 Кб, 270x400
205 1836506
Сап крестаны, я нечеловек фул прости господи стек на жс. Лет где-то 20 назад когда был школотроном занимался коданьем на Visual C++6 всякой 2д игройобы по книжке Ламота (пикрелейтед). Доставляло неимоверно. Ну кароч я великовозрастный долбаёб решил что грести на галерах до пенсии опасно для психики. Хочу медленно обратно вкатится в плюсы и нет, не геймдев, а скорее в проекты уровня Годота. Ну то есть как бы в качестве хобби делать тухлы, контрибьютить в открытие проекты, может быть написать рогалик. Так получилось что мой работодатель оплатил мне годовую подписку на электронную библиотеку О’Рилли. Собственно я себе составил план прочитать за год несколько книг и написать кода разного уровня сложности. Шапку читал, часть списка взял оттуда, часть нашёл на Амазоне по рейтингу. Кароч анон, закотируй мой список:

1. C++ Crash Course
2. Effective Modern C++
3. C++ Concurrency in Action
4. Game Programming Patterns (эта внешняя)
5. C++ Game Programming
6. SFML Game Development

Вот думаю всё это осилить, параллельно кодать классику на бесплатным арте: тетрис, понг, астероидс и так далее.
Великолепный план? Точный как швейцарские часы?
206 1836507
>>836503
в деланьи лабах для долбоебов.

Как же вы все заебали с мечтами о фрилансе. Фриланс - это нищая хуевая работа за копейки, тебе скидывают то дерьмо, которое лень засунуть кому либо еще.

Удаленная работа полноценная - это совсем другое, но там набор от сениоров начинается.
207 1836511
>>836506
Про краш курс нихуя не знаю. Я бы посоветовал страуструпа, но тут его не любят.

У Майерса есть смысл читать вообще все, не только Modern C++ in Action. Я бы даже сказал, что старые книги полезнее, там прям азы и кайф.

Concurrency in action тебе нахуй не надо.

Остальное - пересказ документаций скорее всего.
208 1836512
>>836506
>>836511
Professional C++ Development 4th ed.
209 1836516
>>836507
Почему джунов на удалёнку не берут? Бтв ещё идея - пилить годноту на гитхаб и везде писать свой палпал, будут профиты чи не?
210 1836522
>>836516
Может где-то и берут, но неохотно. Слишком они нуждаются в помощи и надзоре, чуть что потом заебешься разгребать
211 1836524
>>836516
Потому-что в мирочке С++ от джуна больше вреда, чем пользы. Если в каком-нить жопаскрипте или питоне худшее, что может быть это эксепшен, который ты поймаешь.

То в С++ ты можешь наворотить такого дерьма, которое будет репродюситься раз в пару тысяч попыток, и отлаживать это можно только анализом краш дампов.
212 1836527
>>836511
Майерс есть весь, понял, спасибо за совет. А по поводу конкаренси не раскроешь мысль? Чому не? Я даже в жс использую воркеры для того что можно параллелить. Думал в современных плюсах это классика, это знать надо, не? Ну там если захочу свой физический движок написать или какую-то хитрую систему ИИ.
213 1836530
>>836527
Это тебе потребуется через очень нихуевое количество времени. Я говорю о годах. Пиши в 1 поток и не парься.
214 1836533
>>836522
>>836524
Ясно, хуета этот ваш С++, пошла на панель, во фронтенд, спидранить до синьора, чё.
215 1836536
>>836533
Фронтэнд это правильное решение, вкатываться в С++ в 2021 году это надо иметь либо очень большое желание и мотивацию, либо охуенного ментора.
216 1836541
>>836536
Да ну нахуй. Я с малых лет в компах и электронике в целом, а с недавних пор ещё и в науке. Для меня этим макакингом заниматься - зашквар. Так что буду ловить балдёж на байтоёбстве.
217 1836558
>>836082

>>836427
Либо потрахаться и собрать Qt в статике, и прогу тоже собирать в статике, да ещё и ровно с теми же параметрами, что Qt. Оно того не стоит, лучше dll рядом таскай
218 1836560
>>836497
Потоки и кодировки это путь боли. Смотри мою простыню ближе к началу треда.
219 1836563
>>836558
Гм, первому случайно ответил.
220 1836577
>>836477
Где связь?
221 1836579
>>836506
Нормально.
222 1836599
>>836333
>>836558
vcpkg install qt5
windeployqt

Чё вы как маленькие
223 1836606
>>836541
>>836536
Вот это вот наверное нужно всем желающим вкатиться объяснять, мб даже в шапке написать. Устроиться на работу сложнее, чем в других областях. Там, где используют С++ (если мы не про гуи), обычно также нужно знать вузовскую математику, да и сам язык с устоявшейся инфраструктурой а-ля буст, симейк и т. п. Хочется денег - проще сразу реакт учить. Иначе велик шанс заработать синдром самозванца и ушатать нервы.
224 1836623
>>836606

>Хочется денег - проще сразу реакт учить



За счет этого с С++ приятнее работается, меньше случайных людей, суеты.
225 1836624
Пока не проебешь не преисполнишься

Если бы дрочил плюсы прследние гесть лет, то думаю, 100к имел бы(в мск побольше). Изучал бы сейчас предметную область с математикой и рос как инженер.

А пошло все изначально по пизде. Ебаный универ вместо задротства одного языка заставляет каждый пройти на пол шишечки.

По итогу четыре года в жопу. И еще два юнити разрабом, есть то что-то надо.

Все это время смотрел на другие технологии, языки, фреймворки. Так и хз, кого куда. Все какое-то уебанское. Даже норм кроссплатформенного ui нет в 2020 то году. Какое-то приложение запилить, где будет поток данных нон-стоп идти, так все эти виртуальные машины сыпятся из-за сборщиков мусора.

Какие опции есть в 2020? Плюсы довольно универсальны, но работы ноль. Изучать их пять лет, чтобы пойти работать за 50к, и то тебя выебут и высушат на собесах как проститутку конченную.

Дальше пердеть в гейдеве. Ну так опять, там если выйти из снг региона, то более-менее крупные студии со своими велосипедами на плюсах. Да и без этого там предметная область такая, что математика должна быть охуенно выдрочена (шейдера, рендер, геймплей, ии) плюс еще движок, который делают далеко не профессионалы мира программирования.

Либо раз c# косвенно немного познал, то идти в веб. Но там этот веб настолько непостояннен, что хз. Даже если .net брать тат уже за четыре последних лет все изменилось. Завтра наберется критическая масса индусов в майкрософт и они похерят абсолютно все, как и винду. Хотя в .net все вроде збс последнее время. Кроме пожалуй, мобильной разработки.

Также с реактами, хуяктами и иже с ними на js. Какая-то насмешка над миром программирования. Сюр

Что там остается? Java/kotlin. От первого в гугле отказываются на андроиде, второй только благодаря андроиду и живет. Дальше еще никуда не выходил, как я понял. Писать на Java сейчас, когда есть .net, говорят что это такое-себе. Плюс как с андроида уйдет, так никому кроме легаси в банках он не нужен будет.

Про функциональные языки и новые типо go. Ну работы порой больше чем на плюсах, но что там делать, если надо строить карьеру хз.

Резюмируя, не думал что когда буду программистом (хотя бы частично), что такая каша тут происходит. Я, наверное, скоро курить начну. А потом пойду на завод работать аппаратчиком, там до мастера недолго работать. Хоть 100к будет. На ипотеку хватит. А что с программированием делать, куда двигаться дальше?

Сори за простыню
225 1836624
Пока не проебешь не преисполнишься

Если бы дрочил плюсы прследние гесть лет, то думаю, 100к имел бы(в мск побольше). Изучал бы сейчас предметную область с математикой и рос как инженер.

А пошло все изначально по пизде. Ебаный универ вместо задротства одного языка заставляет каждый пройти на пол шишечки.

По итогу четыре года в жопу. И еще два юнити разрабом, есть то что-то надо.

Все это время смотрел на другие технологии, языки, фреймворки. Так и хз, кого куда. Все какое-то уебанское. Даже норм кроссплатформенного ui нет в 2020 то году. Какое-то приложение запилить, где будет поток данных нон-стоп идти, так все эти виртуальные машины сыпятся из-за сборщиков мусора.

Какие опции есть в 2020? Плюсы довольно универсальны, но работы ноль. Изучать их пять лет, чтобы пойти работать за 50к, и то тебя выебут и высушат на собесах как проститутку конченную.

Дальше пердеть в гейдеве. Ну так опять, там если выйти из снг региона, то более-менее крупные студии со своими велосипедами на плюсах. Да и без этого там предметная область такая, что математика должна быть охуенно выдрочена (шейдера, рендер, геймплей, ии) плюс еще движок, который делают далеко не профессионалы мира программирования.

Либо раз c# косвенно немного познал, то идти в веб. Но там этот веб настолько непостояннен, что хз. Даже если .net брать тат уже за четыре последних лет все изменилось. Завтра наберется критическая масса индусов в майкрософт и они похерят абсолютно все, как и винду. Хотя в .net все вроде збс последнее время. Кроме пожалуй, мобильной разработки.

Также с реактами, хуяктами и иже с ними на js. Какая-то насмешка над миром программирования. Сюр

Что там остается? Java/kotlin. От первого в гугле отказываются на андроиде, второй только благодаря андроиду и живет. Дальше еще никуда не выходил, как я понял. Писать на Java сейчас, когда есть .net, говорят что это такое-себе. Плюс как с андроида уйдет, так никому кроме легаси в банках он не нужен будет.

Про функциональные языки и новые типо go. Ну работы порой больше чем на плюсах, но что там делать, если надо строить карьеру хз.

Резюмируя, не думал что когда буду программистом (хотя бы частично), что такая каша тут происходит. Я, наверное, скоро курить начну. А потом пойду на завод работать аппаратчиком, там до мастера недолго работать. Хоть 100к будет. На ипотеку хватит. А что с программированием делать, куда двигаться дальше?

Сори за простыню
226 1836625
>>836624
Как же я тебя понимаю

мимо походу через недельку приму оффер в рога и копыта (но зато наконец на плюсах), потому что для других мест я до сих пор мало знаю, а от всего другого тошнит
227 1836713
Поясните за инстанс шаблона: почему в std-шные контейнеры можно передать любой тип и, самое главное, размер, а мой
template<class T, size_t N>
class CustomArray;
выдаёт undefined reference, если явно не написать
template CustomArray<int,1>;
228 1836879
>>836713
Небось реализация в .срр отдельно написана.
229 1836933
>>836879
Т.е шаблонные сущности приходится писавть в заголовке, в ущерб читаемости?
230 1836935
>>836933
Добро пожаловать в С++
231 1836977
>>836624
Походу лох.
232 1836978
>>836933
Выноси в отдельный хедер и инклудь из основного.
233 1837196
Покидайте годных сайтов типа https://ravesli.com/
Вообще хз на кой читать книги на 1к страниц если всё доступно и просто расписано в 100+ статьях.
image.png343 Кб, 614x614
234 1837227
Бля. А как дебажить эти самые корутины? GDB локальные переменные не показывает даже при -Og. Гугл говорит, что пока все плохо http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p2073r0.pdf

Че делать.
235 1837233
>>834896
Объясни, как ты собираешься маскировать переполняющийся текст за границами поля? Я охуел, SFML слишком игрушечный фреймворк.
У меня были идеи с GL_STENCIL_BUFFER и GL_SCISSORS, но это дохуя вмешательств в OpenGL и в кишки sfml, так что предстоит веселье.
236 1837240
>>836497
>>836497
Чел, есть <locale>, есть std::cout.imbue(std::locale("")). А вообще, сейчас достаточно использовать std::wcout с выводом в юникод.

Перестань учиться по говно-материалам 30-летней давности и прочим Borland Turbo C++ из 90-х годов.
237 1837248
>>837227
Пиши сразу нормально.
238 1837265
>>836713
Анон, не слушай дебила: >>836978
239 1837323
Сап, могу ли я использовать в DLL thread'ы и работать с файлами?
240 1837327
241 1837400
>>837265
Проиграл
Это нормальная популярная практика
242 1837428
Хотел написать локальную легковесную прогу для капчевания на дваче.
Все бы было легко. Если бы не ебучая капча. Она по определению работает только в браузерах. Меня бы даже устроило если бы она всегда показывала картиночки, а я на них кликал (она все равно мне всегда показывает после десятка сообщений). Но такой вариант видимо был бы слишком легким. Поэтому в гугле написали виртуальную машину на JS, которая там чет шифрует как денува, меняет свои опкоды, загружает говно с серверов.
Поэтому вопрос - какой есть самый минимальный встраиваемый браузер? Очевидно нужен html + css + js. Блджад, ну не CEF же тащить только ради капчи. Webkit предлагает на винде через Edge. Так это тот же хром будет в памяти висеть. Ну не писец ли? Нет чего помельче? Хотя подозреваю, что если соберу просто из какой нибудь либы рендера и либы жса, гугл меня просто нахуй пошлет за нестандартность.
243 1837432
>>837400
Это потому, что долбоёбов на планете много. На пустом месте геморрой с инклюдом якобы имплементации, геморрой с переключением между файлами, геморрой с навигацией по символам и т.д.
Если уж совсем невмоготу, можно в конец файла реализацию выносить.
244 1837448
>>837432

>геморрой


Хз, как-то ни разу не почувствовал проблем.
245 1837784
https://ravesli.com/uroki-cpp/#toc-0
Этот курс на английском есть в шапке, можно как-то поместить его в неё?
246 1837807
>>837784

>uroki


>на английском


Прыснула.
image.png18 Кб, 1286x221
247 1837824
>>837807
Тупые бабы, пиздос.
248 1838173
>>837240
Вывод ещё ладно. Ты мне про ввод >>832626 расскажи.
249 1838180
>>836599
Не использую vcpkg, так как с ним геморно держать несколько версий либы. Например, есть 50 проектов, 20 солюшенов, состоящих из некоторого сочетания проектов, и у каждого солюшена - где то 5 вариантов checkout по версиям, не считая 100500 тегов. И собирается это не только у каждого разраба, но и на едином билд сервере. Vcpkg тут похоже бессилен, только ручные props, только хардкор.
250 1838184
>>838180
Призови в тред нвидию-куна, у них там натянули версионность на vcpkg.
Алсо, у MS вроде в дорожной карте по vcpkg есть пункт по поводу поддержки версионности.
251 1838229
>>838184
Интересно, надо почитать. Было бы круто вместе с публичным либами и свои так опакечивать (с префиксом например). А то иногда случаются версионные казусы, когда две своих либы используют третью, разных версий
252 1838257
void __CRTDECL operator delete(void⚹ const block) noexcept

Как хрена у майкрософта в delete указано const?
У меня из-за этого по виндой пару аллокация-деаллокация распидорасило, потому что мой delete не вызывался.
Что за шутки такие?
Причём нигде это не указано, он должен быть void⚹, а не void⚹ const.
253 1838265
>>838180
Микрософт в этом месяце обещали выкатить версионирование (но хз, успеют ли уже, я бдю их репо)
254 1838328
>>837807
сельди не умеют даже в транслит
255 1838376
>>838257
Нахуя в принципе параметры функции нессылочных типов объявлять константными? Они ж и так, блять, копируются.
256 1838390
>>838229
Свои либы можно подружить с vcpkg 100%, у них в документации есть гайд
257 1838393
>>838257
Этот const ни на что не влияет, у тебя проблема в друго месте. А нужен он затем, чтобы внутри функции нельзя было случайно изменить тот указатель, что тебе пришёл
image.png2 Кб, 233x136
258 1838497
Че за бред нахуй? Не компилится
image.png17 Кб, 751x426
259 1838505
Ну это пиздец. Какого хуя оно ошибками сыпет? всю жизнь так писал. ЧТо сейчас не так?
260 1838524
ЧТО ДЕЛАТЬ?
image.png108 Кб, 1366x768
261 1838529
Всё ок?
262 1838535
263 1838537
>>838535
Так а че делать скажи
264 1838538
>>838537
Ты скобку проебал, блять
265 1838541
>>838538
В каком месте?
266 1838544
>>838541
Я ебу? Ты хуйни кинул милипиздрической по которой нихуяшеньки не понятно ничего и что-то хочешь, ты либо всё высри уж, будь добр, либо сам дальше ебись с этим и не сри в тред.
267 1838550
Хочу вкатиться в с++ 5й раз уже наверное.
Подскажите книги или статьи по которым можно. Да мог бы сам загуглить (и гуглил уже), но во всех гайдах замечаю резкие рывки между материалами из-за которых остается много вопросов (например прикрутим какую-то либу и в слепую используем её методы без разъяснений).
268 1838556
>>838550

>остается много вопросов


https://en.cppreference.com/w/ и гугл
269 1838561
>>838537
Писать как человек.
270 1838563
>>838550
>>838556
Тричую, как основу обучения бери это:
https://ravesli.com/uroki-cpp/
271 1838692
>>838393
После твоего поста я присмотрелся — действительно не может влиять никак, лол.
Но влияет, лол. msvc перестаёт воспринимать мой оверлоад как валидный.
272 1838700
>>838692
Всё, отмена.
273 1838748
сап двач, можете обяснить что за ошибка в VS code при запуске компилятора g++:
launch: program ' does not exist
уже несколько часов долблю себе голову как его запустить
274 1838778
>>838748

>как его запустить


Поставить студию

А вообще ты даже не гуглил, да?
https://stackoverflow.com/questions/47872250/cant-compile-code-launch-program-program-path-does-not-exist
275 1838779
Что в условии обозначают два знака "меньше" (типа if (i & (1 << j)))?
276 1838781
>>838779
Битовое смещение 1 влево на j позиций
277 1838796
>>838781
Благодарствую
32578945690 (3).jpg569 Кб, 1000x1000
278 1838798
>>838779

> (1<<j)


Люблю запах UB поутру
279 1838816
>>838798
Нормально там всё.
280 1838821
>>838798
если uint то нет ub
281 1838895
>>838821
1 это всегда int
282 1838905
>>838895
и правда, в шары ебусь
283 1838911
>>838748
Не надо ломать никакие головы, надо просто настроить все по оф инструкции.
284 1839014
>>838821
А с int в чём ub?
286 1839023
Мисрашизик, это ты пишешь?
if ((m != 0) && (m < (1u << (sizeof(n))))) {
return(ERROR_SUCCESS);
}
Я узнал тебя.
287 1839026
>>839017
Не увидел UB для положительного int.
288 1839031
>>839026
Это потому что его нет. Но смотреть надо не в ту сторону:

> if (i & (1 << j)))


i здесь скорее всего индекс, значит потенциально size_t, потенциально uint64_t.
А что происходит, когда мы делаем левый сдвиг 32 битной переменной с последующим расширением до 64 бит?
289 1839032
>>839031

>скорее всего


Или нет.
По этому куску кода нечего диагностировать.
Это как рак ставить через интернет.
290 1839075
>>838550
вандервурд шаблоны
майерс последняя книга
абсолютный минимум на сегодня
16035780041700.png4 Кб, 651x209
291 1839097
Сап программач, чем фиксить? cpp.sh/6e53c
292 1839115
Так, ананасы. Сделал класс небольшой. Суть в том что он принимает две лямбды: одна вызывается в конструкторе, а другая в деструкторе. Суть такая же как и у std::lock_guard практически.
https://pastebin.com/raw/ayciFuq6 (там это ещё внутри класса происходит)
Но v почему-то остаётся нулевым после конструктора. Почему оно не срабатывает как задумывалось?
293 1839117
>>839115
Ты ж v по значению схватил
294 1839120
>>839117
>>839117

Получается захват
⚹v по указателю
v значению
&v по ссылке?
295 1839121
>>839120
Алсо, кажется предпреждения при присваивании (внутри лямбды) не было
Поэтому не обратил внимания
296 1839133
>>839097
правильное имя локали пропиши
297 1839134
>>839120
захвата по указателю не существует. Ты скопировал нулевой указатель и потом что-то с ним сделал.
sage 298 1839140
>>839031
Происходит левый сдвиг с последующим рашширением. Ваш капитан.
299 1839150
Посоны, поясните, чем отличается
for()
{
}

от просто for()

или if()
{
}

от просто if

Почему некоторые выражения после объявления оператора оборачиваются в блок, а некоторые нет?
300 1839153
>>839150
Без фигурных скобок только следующая команда попадет под оператор if или for
301 1839221
>>831651 (OP)
Можно ли из exe-шника, скомпилированного из С++, получить исходный код, желательно со всеми именами переменных?
302 1839229
>>839221
Хуй там, если только кто-то не забыл отключить debug.

Попробуй snowman, но скорее всего получится нечитаемое говно.
303 1839243
>>837233

> Объясни, как ты собираешься маскировать переполняющийся текст за границами поля?



Что ты имеешь ввиду? Типа если в textbox какой-нибудь записали строку которая превышает визуально максимальную длину? Тогда тебе надо просто рендерить фрагмент строки который визуально влезет в поле.
Если про поле со скроллингом, то надо писать расчёт переноса строки учитывая размер шрифта, внутренний отступ и размер виджета.
Алсо, у sfml есть класс View, он может послужить заменой gl_scissors
304 1839305
void foo(mystruct const * const obj);

Что это за параметр? Константный указатель на константный объект?
305 1839315
Байтослесари, через какое время после начала изучения языка вы вкатились на работку? Что это была за работа и какая зп? С какими знаниями вы выходили и многому ли научились за время работы?
306 1839348
>>839305
Да. Читай справа налево:
const pointer to const mystruct
307 1839378
>>839348
спасибо
308 1839397
>>839221
нет, нельзя. Максимум - можно сишное говно получить адовое через HexRays. Иногда это даже полезно.
309 1839468
Кто нибудь работал в qt с qstyleditemdelegate? Нужно отобразить иерархический список с иконками,чекбоксами и текстом под ними (и точно такой же - горизонтально), в куте пишут что надо самостоятельно рисовать через делегаты. Долблюсь в документацию и 1.5 примера, но не могу догнать как там рисовать.
310 1839856
аноны, а как понять течет ли у меня память? я нубас
311 1839857
>>839856

Это в начале кода

#define __CRTDBG_MAP_ALLOC
#include <crtdbg.h>
#define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__)
#define new DEBUG_NEW


И это перед return 0

_CrtDumpMemoryLeaks();
312 1839858
>>839856
Гугли по слову Профайлер\Профилировщик
313 1839988
>>831651 (OP)
Какой же пиздец. Вместо написания кода утро началось с ебли со студией. Ебучая мокрописька от джетмозга после апдейта отказывается видеть stdint.h, вот просто не видит именно этот инклюд и серит ошибками на инты, уже как только его не прописывал.
А ещё эта поддержка симэйка в Студии, просто топ - половина плагинов отказываются с ним работать и просят солюшен, хоть одна пердоля обновила бы свой плагин за 2 года.
CLion в принципе говно с тирингом и автокомплитом для пердолей, не хочу даже шкварится. Ещё и clang не работает нормально, джетмозг же.
Хоть на голую студию садись - фич мало, но зато работает нормально.
314 1839997
>>839988

> отказывается видеть stdint.h


Почисти кеш

> симэйк


Пока что проигрывает солюшену практически во всём
1534694038654.png24 Кб, 665x370
315 1839999
>>839997

> Почисти кеш


Естественно погугли сам. Чистил кеш в настройках, чистил руками в папках, жал suspend, прожимал все возможные переиндексации проекта - нихуя не помогло. Собирается естественно без проблем.
316 1840007
>>839999
Смени версию студии, операционную систему, железо, страну проживания и пол.
317 1840018
>>839999
Попробуй заинклюдить cstdlib/cstddef. А лучше переустанови шиндовс.
Ох уж эти спермопроблемы.
318 1840020
>>840018
Но ведь без решарпера всё норм. Это пердоли со своей джавой объебались и пишут говнокод.
319 1840025
Собираю код под Windows и под Android, проблема с parallel for, десять строчек тут: https://codeshare.io/GAePqv
Под винду concurrency::parallel_for_each() работает потрясающе, под android ppl.h не существует, и единственный способ организовать параллельный for, который я нашел - это openpm. И как бы я не изгалялся, openmp дает внушительную просадку по производительности. Сравнивая скорости, обычный последовательный for работает медленее, чем виндовый, но намного быстрее, чем openpm.
Может, я что-то упускаю с openpm? Я допускаю случай, что на каждой итерации у меня настолько быстрые вычисления, что спавн новых потоков дает только перерасход по времени. Но виндовая параллельность как-то же с этим справляется.
Есть ли еще какой-то способ организовать параллельный for на андроиде?
320 1840069
Прошёл полный курс по языку, пококодил разной херни там + смачно так подрочил stl. Что ещё докинуть к этому всему чтобы меня взяли на работку? Высрать какой-нибудь годный пет в попенсор с и ждать инвайтов или нужно знать что-нибудь ещё?
321 1840075
>>840069

>Что ещё докинуть к этому всему чтобы меня взяли на работку


Опыта работы)))
322 1840078
>>840075
Вна2ре))))))
323 1840087
>>839221
То есть всякие исходники игр нереально получить, только нечитаемый билд? Или как?
324 1840091
>>840087
Можешь взять выложенные в опенсорс, квейк там и тп.
Безымянный.png18 Кб, 781x414
325 1840102
https://habr.com/ru/post/183830/

Зачем скобки нужны?
326 1840103
>>840102
А бля, забейте, я понял
327 1840146
>>840069
Бамп годному вопросу.
328 1840152
>>840069
современный с++ - это эзотерический язык, изучается с целью получения удовольствия как хобби
ни о какой работе за деньги речь не идет, тебя наебали если планируешь иначе
даже нвидиа-кун с зп 300кк в секунду занимается на работе всем, кроме собственно написания кода на с++, хотя по должности типа погроммист с++
вот так вот
329 1840154
>>840069

>Высрать какой-нибудь годный пет в попенсор



Вощем высри 64 бит avisynth vfw кодек который может avi stubs где внутри вшит avisynth скрипт чтобы такой avi файл можно было открыть в adobe after effects
330 1840164
>>840152
Толсто.
331 1840167
>>840152
Ты бы сам написал чем занимаешься, ну просто чтоб мы понимали
332 1840213
>>840152

>даже нвидиа-кун с зп 300кк в секунду занимается на работе всем, кроме собственно написания кода на с++, хотя по должности типа погроммист с++


Мне недавно дали немного пописать на сиплюсплюсе кстати! Но у меня должность такая ебанутая, т.к. у нас все могут писать на С++, а вещами которыми занимаюсь я - могу заниматься только я.
333 1840223
>>840213
ну и продолжая - мы недавно обсуждали, что вообще все наши компоненты (кроме драйвера офк) можно переписать на Сишарпе. Было бы сильно проще с точки зрения мейнтейнабили и скорости разработки, но увы. Быть может, когда-нибудь перепишем.
334 1840227
>>840025
Использовать С++17
template< class ExecutionPolicy, class ForwardIt, class UnaryFunction2 >
void for_each( ExecutionPolicy&& policy, ForwardIt first, ForwardIt last, UnaryFunction2 f );

В надежде, что при std::parallel_policy в твоей STL оно работает через какой нибудь пул потоков / concurrency рантайм и т.д.
335 1840249
>>840213
при всем увожении, это оправдание!
336 1840255
>>840167
не работаю щас погроммистом
но в качестве развлечения смотрю как меняется с++, те как те вещи которые делались в книжке александреску можно сейчас делать на крестах, стало удобней но скучней
то же самое с stl: как изменили язык чтобы делать библиотеки типа stl симпатичней с точки зрения синтаксиса
337 1840257
>>840255
А куда укатился и почему?
338 1840267
>>839397
Кстати да, иногда заглядывал в потроха kernel32 и ntdll? лбопытно как некоторые вещи работают именно в винде а не в Wine. Теперь можно попробовать утёкшие сорцы скачать
339 1840268
>>840223

> вообще все наши компоненты (кроме драйвера офк) можно переписать на Сишарпе



Но нужно кучу времени и добавится слой абстракции над байтоеблей и IOCTL
340 1840284
>>840069
Да хоть ты лопни, да хоть тресни - бамп на ровном месте.
341 1840353
>>840268
пожалуй я неверно выразился, само собой, юзермод компонент драйвера тоже на крестах, там перф нужен. А более он нигде не нужен у нас в стэке.
342 1840381
>>840255

>то же самое с stl: как изменили язык чтобы делать библиотеки типа stl симпатичней с точки зрения синтаксиса



Очень интересно это всё (stl, qt, com) может поменяться когда сделают метаклассы, и вместо пространных описаний-соглашений (типа что такое итератор, аллокатор, com-интерфейс, coclass, сигнал-слот, Q_OBJECT) будет код. Тогда и часть MOC можно будет выкинуть - смотри https://wg21.link/p0707
343 1840395
>>840227
Забыл написать, что ExecutionPolicy не реализован под Android, да.
Ошибка уже на этапе #include <execution>.
344 1840396
>>840381
А разве метаклассы это не просто синтаксический сахар для хитровыебанных конструкций SFINAE и static_assert ?
345 1840412
>>840396
Нее, там всё интереснее. Лучше сам почитай, чем я криво пересказывать буду.

Скажем так, это не только сахар вместо SFINAE и static assert (тут будет скорее концепты), но и кодогенерация, только не макросами а по-нормальному.
346 1840430
>>840396
ты глянь выступление джосаттиса на одном из cppcon, он понятно и со многими примерами показывает когда метаклассы были бы полезны
347 1840435
Аноны, помогите аутисту сварить лапшу. Как запилить лямбду, считающую в compile-time некую константу и возвращающую указатель на него? Строго в одну строчку.
Вот к такому constexpr прилепить или ещё что. Пытался куда-нибудь меж скобок присунуть, но не лезет.
[]() -> auto⚹ {auto a = 1; return &a; }()
348 1840439
>>840435

>compile-time


>указатель


Выбери одно
349 1840441
>>840439
А в чём проблема положить указатель сразу за интом в кучу, указывающий на -8 байт назад? Я могу заранее определить куда надо указывать, а компилятор не может?
350 1840445
>>840395

>Я допускаю случай, что на каждой итерации у меня настолько быстрые вычисления, что спавн новых потоков дает только перерасход по времени. Но виндовая параллельность как-то же с этим справляется.


>Забыл написать, что ExecutionPolicy не реализован под Android, да.



Тогда печаль. OpenMP как раз может быть сделан через создание новых потоков, и тогда всё грустно - это дорогая операция. Виндовая параллельность работает либо через свой пул потоков, либо через виндовский CreateThreadpool - начиная с висты. И вообще их много - Concurrency, AMP, PPL, OpenMP (в студии не свежий 2.0 и частично запилены SIMD extensions. Народ хочет 4.0+), STL Extensions for parallelism (тут надо смотреть как реализованы. причем в разных версиях винды может быть разный бекенд)

И вообще, нужно тщательно проверять - не упрешься ли ты в доступ к памяти, если делать параллельным в лоб. Посотри https://devblogs.microsoft.com/cppblog/using-c17-parallel-algorithms-for-better-performance/ - часть от параллелизма у них ухудшилась, и решили не параллелить.
351 1840446
>>840441
Нет никакой проблемы, но константа тогда тоже должна быть constexpr, но это не точно
352 1840447
>>840430
А скинь, я бы тоже посмотрел
353 1840448
>>840430

>джосаттиса


саттер вроде это был
не помню
354 1840451
355 1840464
>>840435
Хотя хуй с ним, компилятор эту лапшу оптимизирует до двух инструкций, оно и так заебись.
sage 356 1840520
>>840464

> Лапшу


Вся суть современного ++С
357 1840524
>>840520
Ну а хули нам, сначала пишем код, а потом смотрим в отладчике что он делает.
358 1840533
>>840520
>>840524
Жирные, вам в ньюфаг тред.
359 1840538
>>840435

>Пытался куда-нибудь меж скобок присунуть, но не лезет.


Смотри же спецификацию

>[ captures ] <tparams>(optional) (C++20) ( params ) specifiers exception attr -> ret requires(optional) (C++20) { body }


Куда specifiers, туда и constexpr:
https://godbolt.org/z/z6e6on
360 1840558
>>840538
Не вижу разницы с ним и без него.
361 1840569
>>840558
Это потому что лямбды по умолчанию constexpr
362 1840599
>>839468
через persistent editor задаешь виджет, у виджета перегружаешь метод paintEvent, рисуешь че хочешь, епта
363 1840613
>>840025
А у тебя железо андроида то позволяет?
364 1840620
Есть класс. Для него делаю move конструктор, но в теле этого класса есть POD структура. Нужно ли делать у этой POD структуры конструктор перемещения или компилятор сам делает?
365 1840626
>>840620
Сам делает
366 1840651
>>840613
Запускаю на Oculus Quest, там два проца по 4 ядра.
367 1840652
>>840445
Так может и мне у себя организовать пул потоков? Чтобы крутились весь рантайм и проверяли, не появились ли новые данные у них для обработки. Или только хуже сделаю?
368 1840726
Нихуя не понимаю как ебучая while работает, мб я тупой и ойти не мое, можете пояснить дауну почему блять в мейне вводится cin и блять в while вводится Син, какого хуя?
369 1840731
>>840726
Забей хуй. Прога это не твое
370 1840736
>>840731

>Забей хуй. Прога это не твое


Но я всегда мечтал вкатится в с++ и писать проги, есть желание, вроде мозги тоже есть, но многие вещи в голове не укладываются(
371 1840743
>>840069
Я всё ещё тут. Сейчас планирую заспидранить в opengl + qt. Какие подводные?
372 1840744
>>840736
Что у тебя в голове не укладывается? Простые языковые конструкции? Это еще даже не ЯП, а что-то общее. Как ты речь человеческую понимаешь вообще, у меня вопрос?
373 1840748
>>840726

>почему блять в мейне вводится cin и блять в while вводится Син, какого хуя


Велкам ту Си++, инжой ёр implicit conversions. Там суть в том, что cin можно неявно привести к типу bool, и внутри while именно это и делается. Если оператор приведения вернул false - входной поток закончился (или что-то пошло не так), если true - ещё можно оттуда читать. Вот документация: https://en.cppreference.com/w/cpp/io/basic_ios/operator_bool Если честно, cin и cout в принципе хреново спроектированы, лучше используй сишные функции fopen/fread/fwrite или какой-нибудь fmtlib.
374 1840750
>>840748

>Велкам ту Си++, инжой ёр implicit conversions. Там суть в том, что cin можно неявно привести к типу bool, и внутри while именно это и делается. Если оператор приведения вернул false - входной поток закончился (или что-то пошло не так), если true - ещё можно оттуда читать. Вот документация: https://en.cppreference.com/w/cpp/io/basic_ios/operator_bool Если честно, cin и cout в принципе хреново спроектированы, лучше используй сишные функции fopen/fread/fwrite или какой-нибудь fmtlib.


Добра тебе! Теперь понял
375 1840753
>>840748

>лучше используй сишные функции


Советы уровня /pr
376 1840754
>>840744

>Что у тебя в голове не укладывается? Простые языковые конструкции? Это еще даже не ЯП, а что-то общее. Как ты речь человеческую понимаешь вообще, у меня вопрос?


Сейчас бы сравнивать машинный язык и человеческий))) в жизни тоже через 101010101 отвечаешь ?
377 1840758
>>840754
Челик не в курсе что ЯП это и есть человеческий язык, только строго ограниченный компилятором
Что тебе конкретно не понятно допустим вот в этой конструкции:
Пока (есть моча)
{ ссать }
378 1840759
>>840753
Нет, в принципе стримы нормальная идея, но не конкретно iostream. Ну кто догадался иметь глобальный стэйт в стримах, кто догадался совместить флаш и новую строку, кто догадался сделать такое хреновое апи для получения ошибок?
379 1840761
>>840758

>Челик не в курсе что ЯП это и есть человеческий язык, только строго ограниченный компилятором


>Что тебе конкретно не понятно допустим вот в этой конструкции:


>Пока (есть моча)


>{ ссать }



Как ты думаешь?
Я Кун 25лвл получивший вышку по геологии и работаю сраным менеджером за 50к, сейчас осознал что мне нравится заниматься коддингом и начал его самостоятельно изучать
, собственно изучаю базовые понятия и как они работают, вопросов много и они для вас как сходить посрать, а для меня как целая вселенная
380 1840764
>>840761
А как ты понял что тебе нравится заниматься кодингом не кодируя?
381 1840766
>>840761
Тогда ты уже дважды обосрался. Первый что вообще начал изучать сраные, сцаные, обосранные уебищные блевотные вонючие кресты
382 1840767
>>840764

>А как ты понял что тебе нравится заниматься кодингом не кодируя?


Когда впервые смог написать код для обычного калькулятора
383 1840769
>>840766
Что не так? Сейчас на крестах поймет как работает память, указатели, стек и всю хуйню, после чего вкат в любой другой новомодный язык будет занимать неделю.
384 1840774
>>840766

>Тогда ты уже дважды обосрался. Первый что вообще начал изучать сраные, сцаные, обосранные уебищные блевотные вонючие кресты


Я прос
>>840767

>Когда впервые смог написать код для обычного калькулятора


Сейчас просто решаю задачи на stepik.org параллельно изучаю теорию, более менее знания накапливаются, желание и упорство заниматься этим у меня есть
385 1840775
>>840769
Че
Ты его вопросы видел? У него на вкат пару лет уйдет. Нет ну есть, конечно, разные подходы к изучению проги, но советовать челу 25+ лет начать вкатываться с изучения крестов, ну это я не знаю. Зачем так жестоко шутить кароче?
386 1840777
>>840766
>>840775
Правильно, лучше учить лучший язык программирования эвер - html. Чтобы все байтослесари завидовали.
387 1840781
>>840775

>Ты его вопросы видел? У него на вкат пару лет уйдет. Нет ну есть, конечно, разные подходы к изучению проги, но советовать челу 25+ лет начать вкатываться с изучения крестов, ну это я не знаю. Зачем так жестоко шутить кароче?


Даже пусть пару лет, я вообще под это дело планирую 5 лет потратить
388 1840786
>>840781
Ха, нормально. Ну мне даже интересен стал твой бизнес план. Потратишь ты в общем лет 5, дальше че?
389 1840789
>>840786

>Ха, нормально. Ну мне даже интересен стал твой бизнес план. Потратишь ты в общем лет 5, дальше че?


А что должно быть дальше? Если мне нравится, то можно назвать это дело как хобби, возможно стану писать проги на заказ или вкачусь в айти компанию на работу.
390 1840790
>>840789
Ясно, манямир кароче. Напишешь сюда через пять лет чего добился
391 1840856
>>840766
Прорвало-то как тебя, а
image.png72 Кб, 497x423
392 1840872
>>831651 (OP)
Поясните, почему так? И как фиксить?
393 1840875
>>840872
Почитай про UTF-8
394 1840878
>>840875
Как я понял из википедии, в UTF-8 для разных символов разная длина в байтах. Так, например, для английских букв - 1 байт, а для русских - 2. Но тогда возникает вопрос, каким образом обрабатывать такую строку, ведь пробел так же занимает один байт?
395 1840880
>>840875
А setlocale тут не поможет?
мимо
396 1840949
>>840878
Это... сложно. Если передать всю строку, то в линкусе будет работать как есть. Если же тебе нужно передать один символ, то придётся парсить входной поток и разделять его на code point'ы. Хорошее упражнение, кстати, там ведь довольно простая кодировка. В тяжёлых случаях используют какую-нибудь библиотеку для работы с юникодом, например ICU. В UTF-8 ещё есть одна полезная хакафича: если тебе важно только сравнение с определённым символов ASCII, например, пробелом, то тебе просто достаточно каждый char сравнивать с 0x20 (' ').

>>840880
Нет. Если настроишь локаль на условный CP1251, где русские символы однобайтовые, то входная строка тоже должна быть в CP1251. А вроде как во всех компиляторах по умолчанию строка вида "Привет, мир" будет кодироваться в UTF-8.
397 1841028
>>840753
Так-то дело говорит, это меньшее зло, хоть и зло.
Но я во все проекты тащу fmtlib
398 1841032
>>841028
Но не сишные же блять либы в 2к20...
399 1841034
>>841032
Ну если fmtlib под рукой нет, то я возьму printf/sprintf/fprintf, а не iostream.
400 1841037
>>841034
С кем я на одной борде сижу, пиздец. Пора ливать.
401 1841044
>>841037
Ну а если мне этот sprintf нужен в трёх местах на несколько тысяч строк, зачем целую либу для этого?
402 1841070
>>841032
У тебя есть выбор: нативные ос вызовы, fread/fwrite или iostream. Что бы ты выбрал?
403 1841086
>>840949

>во всех компиляторах по умолчанию строка вида "Привет, мир" будет кодироваться в UTF-8


В той же кодировке что исходный файл не? Плюс всегда есть -finput-charset=...
404 1841106
>>841086

>В той же кодировке что исходный файл не


Честно, не помню. Возможно и так.

>Плюс всегда есть -finput-charset=...


Тяжёлая артиллерия пошла в бой.

По моему мнению лучше уж тогда явно префиксы прописывать (u8, u, U).
405 1841183
Мда, doxygen не поддерживает unnamed parameters...
406 1841200
Есть класс А с нетривиальными конструктором и деструктором
Следующий код:
void Foo()
{
Shader shader(filename);
}
работает безошибочно в 100% случаев, тогда как
void Foo()
{
auto shader = new Shader(filename);
delete shader;
}
Вылетает с double free or corruption в 100% случаев
Как это можно объяснить?
407 1841202
>>841200
нужны конструкторы и деструкторы, что еще сказать
409 1841207
Что лучше? Это или это? Написанное dr я вообще не понимаю. Что происходит на второй картинке? Результат отличается от того, что с моим кодом, что слева.
410 1841208
>>841200
Ошибка где-то ещё.
411 1841210
>>841207
В первом случае взяли из массив сначала первый байт, потом второй байт, положили эти два байта рядом друг с другом и прибавили к результату. Первый байт при этом старший. Второй — младший.

Во втором случае взяли указатель на первый байт, преборазовали его в указатель на unsigned short, исходя из предположения, что он представляет собой два байта, а затем разыменовали указатель, присвоив полученные два байта переменной word.
Какой байт при этом окажется старшим, а какой младшим — зависиит от платформы.
На распространённой little-endian первый байт окажется младшим, а второй — старшим.
Тоак что да, результат может отличаться.
412 1841211
>>840949
Но ведь 0x20 может быть вторым байтом русской буквы Р.
413 1841214
>>841210
А если по условию надо ключи преобразовывать в числа для хеширования через "сложение двухбайтовых слов"? Что правильнее?
414 1841219
>>841214

>Что правильнее?


Без разницы.
Вся криптография во всём мире строится на том, что один раз кто-то делает reference-implementation, а все остальные, кто хочет соответствовать какому-то стандарту, делают так, "как у них".

Грубо говоря, нужно делать так, чтоб результат сходился.
Иногда для этого не приходится делать дополнительных действий, а иногда приходится разворачивать байты.

У тебя есть контрольный пример?
415 1841220
>>841219
Контрольный пример? Ты про список ключей для хеширования? Есть. Но с тем и с другим способом перевода ключа в число результат сильно отличается.
416 1841221
>>841220
Я про документацию, в которой есть пример исходных данных и пример того, какой результат должен получиться.
417 1841224
>>841221
Нет. Сказано только сделать заебись.
418 1841230
>>841207
Открой в годболте и посмотри. Там скорее всего одно и то же будет.
419 1841231
>>841207
На второй UB?
420 1841236
>>841231

>UB


Чё?
421 1841261
>>841231
Да, strict aliasing violation.
422 1841263
>>841261
Семён, не отвечай за других анонов.
423 1841266
>>841263
Не семён, я десять минут гуглил, чтоб убедиться, лол.
image.png89 Кб, 1191x1012
424 1841267
>>841266
Пруфаю.
425 1841270
>>841266
Это >>841231 мой пост. Это >>841231 вопрос мне. Это >>841261 написал ты, а не я. Ответил на вопрос мне от моего имени.
426 1841271
>>841266
Бля, нет. Это>>841207 мой пост.
427 1841274
>>841270
>>841271
С чего бы, блядь? От какого-то такого "твоего имени"? Ты где находишься?

Ты выложил кусок кода, кто-то спросил, а не похож ли второй скрин на UB. Спросил в треде. Не у тебя в личке.
Я посмотрел внимательно и одобрительно кивнул — да, действительно: UB (исходя из предположения, что key — [unsigned] char array).
изображение.png7 Кб, 428x242
428 1841275
>>841267
Я понял. Ты ответил на вопрос, что на второй картинке. Ладно, не семён. Я просто не разбираюсь в этой вашей проградристовской терминологии.
429 1841276
>>841274
Что такое UB?
430 1841277
>>841276
Undefined Behaviour
431 1841279
>>841277

>Behavior


фикс
432 1841284
>>841279
Не правильно фиксишь, по всем правилом английского языка там ou.
433 1841292
>>841284
Я вот так и подумал, потом что-то залип, погуглил, а интернет меня наебал. Лол.
434 1841295
>>841292
Это американцы неграмотные ou не пишут, от них это пошло. У них свой англюсек. И статьи на английском если без ou, где оно должно быть, это детектор безграмотного автора пиндоса.
435 1841301
>>841295
Пидарасы со своим armor, color, уххх, поубивал бы.
436 1841302
>>841236
UB. Это когда программа некорректна, но не настолько, чтобы выдать ошибку.
437 1841305
>>841211
Не может. В UTF-8 нет "перекрытия" между ASCII и не-ASCII. Большая "P" (U+0420) кодируется как 0xD0 0xA0.
sage 438 1841330
>>841231
На первой: переполнит инт 16 бит.
439 1841353
>>841302
Справедливо ли считать любой случай UB обязательным к исправлению?
440 1841356
>>841353

>Справедливо ли


Зависит
441 1841374
442 1841386
>>840949
Вот это да. Получается, что в C++ в 2020 году до сих пор нереализована поддержка UTF-8? А ещё высокоуровневый язык называется. В Java такой проблемы, кстати, вообще нет.
image.png89 Кб, 1200x1349
443 1841394
Здравствуйте! пытаюсь вкатиться в с++, первое что выдало гугл для написания кода в с++ это - vs code пользуюсь им два дня. И за эти два дня у меня запустилась только 1 программа(и то по какому-то пендосскому туториалу с 10 раза). Что удобнее использовать в этом плане или как можно настроить этот проклятый vs code для без геморрной работы?
444 1841399
>>841386
Используй ICU и не парься
445 1841405
>>841394

>как можно настроить этот проклятый vs code для без геморрной работы


Удалить и поставить обычный vs, не code
446 1841409
447 1841410
>>841409
Но есть нюансы.
448 1841411
>>841394
По инструкции. Хз, для простых примеров вообще хватает плагина code runner, и прописанного ручками пути к компилятоу.
449 1841412
>>841394
Обычная вижуал студия - лучше ничего нету
image.png42 Кб, 1250x133
450 1841446
>>841399
Да оно не работает.
451 1841448
>>841446
Научись линковать, полезно.
452 1841455
>>841394
Лучше начать с линукса, блокнота и консольного gcc
image.png78 Кб, 838x469
453 1841458
>>841448
Ну это в общем-то ничего не меняет.
454 1841460
>>841455
Если ты контуженный даун-пердоля, у которого цель поебаться с консолькой - то да.

Если ты вменяемый человек, который хочет выучить С++ - то это противопоказано
455 1841463
>>841460
gcc main.cpp очень пердольно.

В вижуал студио можно научиться разве что ебаться с Виндой и рисовать окошки не понимая процесса компиляции
456 1841467
>>841463
Во-первых, либо gcc main.c, либо g++ main.cpp.
Во-вторых, тот анон прав. Лучше всего Code::Blocks или Dev-C++ на Windows 7 с кодировкой Windows-1251. Потому что ни Си, ни C++ в любом случае UTF-8 нормально не поддерживают и на Линуксе ты будешь страдать.
457 1841474
>>841463
В разы пердольнее, чем 1 кнопочка c зеленым треугольничком.

А когда у тебя 2+ файла - еще пердольнее. И еще, и еще. А компиляцию рано или поздно все равно поймешь, не надо для этого ебаться с консолькой.
458 1841475
>>841467
Что кокблокс, что девС++ мертвая некропараша. Либо вижуал студия, ну либо шлион уж. Все, третьего не дано (ну окей, культикриэйтор еще, но он без кутей оно не нужно)
459 1841477
>>841475

>Что кокблокс, что девС++ мертвая некропараша.


Что значит "мертвая"? Байты в исходном коде испортились?

>Либо вижуал студия


А, ясно, это троллинг.
460 1841480
>>841446
vcpkg install icu
Чё ты такой тупой блядь?
image.png12 Кб, 548x82
461 1841482
>>841480
Он у меня установлен вообще-то, даун.
462 1841483
>>841477

>Что значит "мертвая"


Пикрелейтед

> А, ясно, это троллинг.


В чем троллинг? Вижуал студия это топ1 IDE в данный момент, очень дружелюбна к новичкам, дохуя всего дает профессионалам. В ней пишут дохуя профи, в консоли и прочих CODE BLOCKS пердолятся только студентики и сектанты.
463 1841485
>>841483
Пердолюсь в терминалах с вимом за 7400 евро в месяц. Спрашивай ответы.
464 1841488
>>841485
Пердолюсь в вижуалстудии за 9 килобаксов в месяц на руки. Тоже могу ответов подсказать.
465 1841489
>>841483

>пик1


Ну и что, оно же работает.

>пик2


Последний апдейт в этом году. Или тебе нужно, чтобы новая версия выходила каждую неделю, чтобы там обязательно что-нибудь ломали и из-за этого у тебя всё не работало?

>В чем троллинг?


Ну она же весит 50+ гигов, запускается несколько минут и вообще максимально перегруженная, тяжеловесная, неповоротливая и неудобная.
466 1841493
>>841489

> Ну она же весит 50+ гигов, запускается несколько минут и вообще максимально перегруженная, тяжеловесная, неповоротливая и неудобная.


Вот и спалили студентика с ноутбуком для учебы 2 ядра 2 гига. На моей машине она стартует несколько секунд, а ССД на 2 терабайта абсолютно похуй, сколько там гигабайт (и да, оно весит 8, а не 50).
467 1841495
>>841488
Как там с анальными зондами и загрузкой идеи по паре минут? ))))
Если не пиздишь - то кросс, что пишешь?
468 1841498
>>841493

>На моей машине она стартует несколько секунд


Расскажешь.
469 1841499
>>841489

>Ну и что, оно же работает.


Да, хуевасто как-то работает, без фичей С++14\С++17\С++20. Без статического анализа, без рефакторинга.

>>841495
Системное ПО на С++17, иногда хуйню всякую разную на неткоре шлепаю (IDE менять не надо).
470 1841501
>>841499

>без фичей С++14\С++17\С++20. Без статического анализа, без рефакторинга.


А ты часто этим пользуешься?
471 1841508
>>841458
Зачем ты число принтуешь? Тебе надо строку.

Понапридумывают своих cout и...
Я до сих пор на printf сижу, недавно только научился new и delete использовать вместо malloc/calloc и free.
472 1841509
>>841499
Какой опыт?
vs2019.mp43,1 Мб, mp4,
2076x1246, 0:13
473 1841510
>>841501
Ебанулся? У нас весь прод на С++17, с кучей всяких structured bindings, иф констэкспров и прочих клевых вещей. Статический анализатор в виде решарпера (и clang-tidy) используется всеми в команде. Мы же прод пишем, а не лабы.

>>841498
Держи открытие Анреал Энжина 4 в вижуал студии на компьютере, а не на ноутбуке для учебы.
474 1841518
>>841509
~10 лет
image.png83 Кб, 882x446
475 1841519
>>841508
Лол.
476 1841532
>>841467

>Во-первых, либо gcc main.c, либо g++ main.cpp.


Необязательно

>на Линуксе ты будешь страдать.


Толсто
477 1841533
>>841510
Куда идти к вам работать?
478 1841534
>>841533
Так платят ровно 2 конторы в Москве. И одна из них сбербанк. Вторую угадаешь сам.
479 1841538
>>841532

>Необязательно


Да, но так правильней. C и C++ это не одно и то же.

>Толсто


Всмысле? На винде просто прописываешь setlocale(LC_ALL, "Russian"); и работаешь с русскими буквами как с элементами массива. А на Линуксе... Ну, ты просто взгляни на пердолинг выше.
480 1841539
>>841534
Заинтересовала работа, а не зарплата.

В сбере хз кому столько платят, разрабам платят 100-200к.
481 1841543
>>841538

>C и C++ это не одно и то же.


Безусловно

Но gcc компилирует в зависимости от расширения файла, а gcc/g++ влияют на используемые флаги (и некоторые нюансы) — на линковку stdlib и прочее.
482 1841544
>>841510
Жесть
483 1841545
>>841538

>А на Линуксе..


Просто работает из коробки, всё сразу в utf-8
484 1841546
>>841545
А это >>840872 тогда что?
485 1841553
>>841546
Скриншот рандомного хуя. А ты что думаешь?
image.png2 Кб, 140x68
486 1841555
>>841553
Я думаю, у меня всё тоже самое https://ideone.com/PK4Hgf
sage 487 1841562
>>841538
Так, а какого типа эти элементы массива? На пинусе это 8-битные байты, дорогой.
488 1841566
>>841562
Допустим, но что это меняет?
sage 489 1841584
>>841566
Допустим что?
Какого типа элементы массива на Винде, если вмещают кириллицу? А кану они в то же время вмещают? Если нет, там кодовые страницы а ля Дос?
490 1841587
8 лет опыта коммерческой разработки (4 разные конторы), ни разу не имел необходимости выводить в консоли символы, отличные от латиницы. Вообще нигде кроме сраных лаб местных школьников не видел такого.
1590047426344.jpg33 Кб, 317x372
491 1841588
Охуеть, быдло уже сто постов не может вывести юникод в консоль. ВЫ ЧЁ, ЕБАНУТЫЕ? Это же жирный
492 1841591
>>841584

>Какого типа элементы массива на Винде, если вмещают кириллицу? А кану они в то же время вмещают? Если нет, там кодовые страницы а ля Дос?


Зачем нам эта информация? Мы на ассемблере будем программировать или на языке высокого уровня? Факт в том, что в Windows индексация по массиву из кириллицы просто работает, а на Линуксе - нет.
493 1841600
>>841555
Потому что один элемент строки != один символ.
494 1841607
>>841600
Очевидно. Но ты просто представь, на сколько это затрудняет и усложняет обработку строки. В той же Java этой проблемы с юникодом нет, и меня действительно удивляет, почему в C++ в 2020 настолько базовая вещь до сих пор не реализована.
495 1841612
>>841607
ЕМНИП в джаве UTF-16, и даже там ты очень сильно огребёшь, когда наткнёшься на суррогатные пары.
щрек.jpg19 Кб, 300x300
sage 496 1841613
>>841591

> Зачем


Чтобы оценить расход памяти под строки.
image.png2 Кб, 291x22
497 1841618
>>841612

>в джаве UTF-16


Уверен? В IntelliJ вроде UTF-8.
498 1841619
>>841613
В уме? А почему не через string.size();?
щрек.jpg19 Кб, 300x300
sage 499 1841622
>>841619
A она в мегабайтах вернёт или в килобайтах?
500 1841625
>>841622
В байтах.
501 1841626
>>841618
Если я не ошибаюсь, это только входная/выходная кодировка при конвертации по умолчанию. При работе с чистыми String там внутри UTF-16, и размер char 2 байта.
502 1841627
>>841626
Может быть и так, но итерироваться по utf-8 символам, и даже сравнивать их в Java мне это никогда не мешало.
503 1841629
>>841627
Потому что кодировка строго определена. Поэтому итерация по символам. В строке в плюсах элемент строки - не символ.
504 1841630
>>841629
Ну так что, это никак не пофиксить? А жаль, мне C++ нравился.
505 1841632
>>841627
И снова я тебе говорю, если тебе попадётся суррогатная пара, то одна из итераций у тебя будет на пол-символа. Да, все символы для которых они нужны находятся за пределами Basic Multilingual Plane, но они, блин, существуют, и все эмодзи и прочие там. То, что ты итерировался, лишь означает, что тебе просто повезло с входным текстом.
506 1841636
>>841632
Ладно, придётся обратно на винду перекатываться чтобы однобайтные кодировки без проблем использовать. UTF-8 был ошибкой.
507 1841641
>>841636

>однобайтные кодировки


Даже не думай, я в своё время настрадался с кодовых страниц. Мир не ограничивается 256 символами, EBCDIC и остальные должны были остаться в семидесятых, где им и место.
508 1841642
>>841630
Нечего фиксить.
509 1841644
>>841641
>>841642
Тогда какое решение использовать?
510 1841646
>>841644
Чтобы что? Я не понимаю эту проблему уровня laba2.cpp
511 1841647
>>841646
Чтобы нормально итерироваться по строке, а не на полсимвола.
512 1841652
>>841647
В ICU есть итераторы для этого: https://stackoverflow.com/questions/26446819/icu-iterate-codepoints
513 1841655
>>841652
Проблема в том, что UnicodeString это уже не просто String, и взаимодействовать с ней как с обычной String, использовать функции для String уже не получится. Ну и зачем тогда это?
514 1841675
515 1841761
Анон, хочу красиво, советуй паттерн

вот есть классы систем, они как бы главные. Например система EventManager которая узнает что были события, и передает об этом факте подписчикам. Или система ConfigManager которая хранит текущие глобальные конфиги. Или LogSystem который маневрирует логами. Ну и в таком духе. Систем десятки.

Как организовать между ними связи по красивому?

Синглтон не хочу (вдруг мне понадобится разные ConfigManager в зависимости от условий?).. Завязывать прям все на синглтоны не красиво. Завязывать только пару систем - задают вопросы, почему вот тут синглтон, а вот тут указателем передал.

Передавать между ними указатели не хочу - не люблю когда в методы (или конструктор) передается дохрена всякого.

А еще хочу чтобы каждая система не знала ничего о других кроме тех, которые ей могут понадобится...

Может подкинешь идей?
516 1841787
>>841761

>не люблю когда в методы (или конструктор) передается дохрена всякого.


Ну сделай класс контекст, в котором ссылки на текущие системы, и только его передавай. Класс будет реализовывать интерфейсы получения этих систем, и другие системы будут дергать только нужные доступные им интерфейсы а не целиком контекст.
Как сделать перевод в обратный код на си++? Cybeer 517 1841840
нужно короче ввести в 10сс сложить в дополнительном коде, и перевести результат в обратный код, всё работает если числа с положительным знаком, если отрицательный знак как эту херь организовать?
Код который работает:
#include <iostream>
#include <locale.h>
#include <stdio.h>
int main()
{
setlocale(LC_ALL, "Russian");
int A,B,C;

printf("Введiть перший операнд:\n");

scanf("%d", &A);

printf("Введiть другий операнд:\n");

scanf("%d", &B);

C=A+B;
for(unsigned q=1U<<3; q; q>>=1)
putchar('0'+!!(A&q));// вывод первого операнда
putchar('\n');
putchar('0'+!!(B&q)); //вывод второго операнда
putchar('\n');
putchar('0'+!!(C&q)); //вывод результата сложения

}
Как сделать перевод в обратный код на си++? Cybeer 517 1841840
нужно короче ввести в 10сс сложить в дополнительном коде, и перевести результат в обратный код, всё работает если числа с положительным знаком, если отрицательный знак как эту херь организовать?
Код который работает:
#include <iostream>
#include <locale.h>
#include <stdio.h>
int main()
{
setlocale(LC_ALL, "Russian");
int A,B,C;

printf("Введiть перший операнд:\n");

scanf("%d", &A);

printf("Введiть другий операнд:\n");

scanf("%d", &B);

C=A+B;
for(unsigned q=1U<<3; q; q>>=1)
putchar('0'+!!(A&q));// вывод первого операнда
putchar('\n');
putchar('0'+!!(B&q)); //вывод второго операнда
putchar('\n');
putchar('0'+!!(C&q)); //вывод результата сложения

}
518 1841855
>>841655

>UnicodeString это уже не просто String, и взаимодействовать с ней как с обычной String, использовать функции для String уже не получится


Внезапно, в C++ почти все алгоритмы построены на итераторах. Тебе вообще не важно, как устроен контейнер, если он предоставляет интерфейс к ним. Степанов всё-таки не зря старался, когда STL писал.
519 1841917
>>841761
Pubsub
520 1841921
>>841840
Js тред чуть ниже.
521 1841956
>>841483

> Вижуал студия это топ1 IDE


Перетолстил, все профессионалы работают под линуксом.
522 1841962
>>841761

>Передавать между ними указатели не хочу - не люблю когда в методы (или конструктор) передается дохрена всякого.


Во всех компаниях, где я был (целых трёх, две из них большие), сначала использовали самописные сервис локаторы, но потом все всё равно переходили на обычную инъекцию зависимостей через передачу сервисов в конструкторы. Логгеры, настройки, всякие сервисы, даже время - всё явно.
523 1841995
>>841956
нахуя?
524 1842007
>>841995
Сервера. Микроконтроллеры.
525 1842013
>>841956
Под линуксом работают только маргиналы. Посмотри на любую конференцию - у всех либо маки, либо синкпады. Пердоликов с линуксом - статистическая погрешность.
526 1842016
>>842013

>синкпады


Какая связь с ОС?
527 1842017
>>842016
На корпоративные ноутбуки часто нельзя ставить ничего, кроме той винды, которая там есть. У нас, например, нельзя.
528 1842088
Аноны, смотрю все вакансии, это некое сетевое программирование и многопоточность. Я и с тем и с тем плохо знаком. Где можно поднатаскаться?
529 1842110
>>841519
Представь, приходишь такой к тимлиду, он тебе протягивает руку пожать, а ты ему средний палец на ноге тянешь.
Я бы на его месте тебе тоже сегментацию зафаултил.
530 1842122
>>842110
Проиграл
531 1842125
>>842088
Раскуривай boost::asio, пиши говночат, который умеет в 100к RPS
532 1842238
>>842017
Что запрещает?
533 1842335
Аноны, есть иерархическая модель собранная на QStandardItemModel. Отображаю её в QTreeView, нужно еще отобразить эту модель в QListView, но эта view не видит элементы вложенной иерархии. Можно как-то заставить её их увидеть, не дублирая все в новую? Думал что QProxyModel спасет, но не нашел пока способа.
534 1842407
>>842017
Корпоративная политика с битлокером и всякой конторской телеметрией.
535 1842416
Ананасы, есть такая либо для интерфейса imgui. Всё заебись с нею, конечно, но пока пара окошечек на экране.
Кто-нибудь делал интерфейс где чуть больше чем два окошечка? Как всё это организовать вместе?
536 1842419
>>842335
Вложенные узлы имеют column соответствующий уровню вложенности. ListView скорее всего читает только первый столбец.
537 1842423
>>842419
>>842335
А хотя может и один столбец... Что у тебя в data()?
538 1842463
>>842423
Ничего. Я сделал сабкласс от QStandrItem, данные храню в них (пары значений имя - индексы sql-евской БД), ну и по QIcon в каждом объекте.

>А хотя может и один столбец...


Один, посмотрел по дебагеру. Там скорее всего просто parent хранит ссылки на childов как в дереве.

>ListView скорее всего читает только первый столбец.


Известно, каким методом читает? Его можно переопределеить?
540 1842478
>>842125
хорошо, так boost::asio это уже все готовое, а как вот самому поебаться с select, poll и т.д.
541 1842479
>>842478
beej guide to network programming
542 1842480
>>842419
>>842335
>>842463
Нашел решение - достаточно переопределить в ProxyModel RowCount(), ColumnCount(), MapToSource(), MapFromSource() и слоты при изменении данных. Таким образом можно "распрямить" дерево.
543 1842668
Ньюфаг итт. Следуя рекомендациям повторяющийся участок кода оформил в виде функции-процедуры, но вот незадача, переменные стали локальными. Очень хотелось сделать их глобальными, но рекомендации запрещали это, тогда оформил доступ к переменным через указатели. Но интуиция подсказывает, что это дрисня и есть более изящный способ. Или нет?
544 1842686
>>842668
Передавать переменные по ссылке не пробовал?
545 1842755
>>1829146 →
Обалдеть, анончики, прислали оффер!
546 1842765
>>842755
Красавец.
547 1842766
>>842755
Решил всё-таки писать САПРы? Как контора называется? первую и последнюю букву
548 1842780
>>842765
Спасибо!

>>842766
Да, там такие серьёзные дяди-академики работают, а я студент-долбоёб с галерным опытом
LS
549 1842782
>>842766
Пошёл ты нахуй, чёрт.
550 1842797
>>842668
Функции нужны для того, что принимает одно и выдаёт другое.
Если у тебя участок кода работает с локальными переменными, то оформи его в макрос. Такое может быть полезно, например, при генерации меша куба или каких-нибудь проверок (рейтрейсинг) того же куба. У него 6 и код почти одинаков.
551 1843091
Покидайте годных проектов на гите чтобы перенять полезных привычек и в целом и прокачать скилл понимания чужого кода.
552 1843095
>>842797
Какие макросы, дядя, про шаблоны не слышал?
553 1843171
>>843095
Какие шаблоны, сыне, достаточно инлайн функций.
>>842797
Особенно это полезно при нахождении ошибок, тк у редактора и компилятора разное количество строк.
555 1843268
Ананасы, можно ли не прибегая к шаблонам (или использовав их по минимуму, скажем в конструкторе) делать псевдонимы?

Например такой псевдокод:

enum class Usage { Read, Write, ReadWrite };

using BufferRead = Buffer( Usage::Read, 1024 );
using BufferWrite = Buffer( Usage::Write, 1024 );
using BufferReadWrite = Buffer( Usage::ReadWrite, 1024 );
556 1843301
>>843091
qbittorrent
557 1843456
>>843268
нет
558 1843549
>>843268
Просто сделай три функции, которые возвращают три различные структуры.
559 1843554
>>843268
Хз что ты пытаешься сделать
560 1843600
Поясните за статическую сборку qt приложений. Сильно ли большим получается размер программ? Долго ли все это настраивать? На производительность влияет? Компиляция сильно дольше?
561 1843607
>>843600
Да да да да + проблемы с лицензией
562 1843610
>>843607

> проблемы с лицензией


Не ебет. Я же для себя.
Вот есть у меня программка небольшая. Просто график по физике строит. Нужно скинуть преподу. Я ему блять должен скидывать еще 5 dll, папку platforms на 100 мб?
563 1843775
>>843610
Большая программа - солидная программа! Вес - это надёжность!
Сделай ему инсталяшку.
564 1843778
>>843610

>Просто график по физике строит


Вывод данных в файл + gnuplot. Или питон + matplotlib
565 1843784
567 1843854
>>843825
Ну потому что шин10
Вроде как этот защитник можно было под шконку загнать. Но антивирусом пройтись стоит.
568 1843857
>>843554
В опенгл есть буферы: вершинный и индексный на самом деле их больше да и их структуру определяет юзер, но не суть. Вершинный - позиции вершин в пространстве, текстурные координаты и тд. Индексный - порядок их отрисовки.
Так вот, работа с этими буферами осуществляется через один и тот же интерфейс, отличие там только в том что указывается (передача константы) что это за буфер - вершинный или индексный.
Сейчас я этот тип указываю в конструкторе, а не хочется у каждой переменной это писать. Хочется сделать псевдоним и писать VertexBuffer, а не просто Buffer.
569 1843891
>>843268
Ответ:
>>843549
570 1843892
>>843778
Очень не хочу переписывать. Точно нет способа проще?
>>843775

> Сделай ему инсталяшку.


Хуита какая то

Вот че за бред? Почему так сложно собрать небольшую программу? Получается ваш qt хуйня по типу электрона. Ощущение, что чтобы написать эффективную программу с гуем нужно самому все на опенгл или вулкане делать.
571 1843898
>>843892
Можешь попробовать посмотреть, как qBittorrent сделан. Там у меня в папке всего один бинарник весом 25МБ.
572 1843899
>>843610

> Вот есть у меня программка небольшая. Просто график по физике строит. Нужно скинуть преподу.


На, держи. Думаю бинарник + дллки вместе меньше 10мб будут весить
https://github.com/epezent/implot
573 1843904
Так а если я статически в qt соберу сколько будет? Сам бинарник весит 60кб.
574 1843915
>>843892

>Получается ваш qt хуйня по типу электрона.


Не, это хуйня по типу дот нет. На нем можно делать небольшие проги, но для этого основные либы должны стоять у каждого юзера по умолчанию.
575 1843960
>>843857
Ну ты можешь делать наследование, если так хочется писать тип. Но мне кажется проще сделать функции конструкторы и потом типа auto b = makeBufferWrite( параметры );
576 1843969
>>843960

> Но мне кажется проще сделать функции конструкторы и потом типа auto b = makeBufferWrite( параметры );



Сейчас у меня тоже самое и не никаких лишних функций не надо.
577 1843975
>>843857
То есть ты хочешь некий аналог newtype из Хаскеля: по сути тот же объект, просто с другим типом, чтобы случайно их не спутать?
578 1843996
>>843975
Наверное, не знаю как это в хаскеле работает.
Короче говоря. Хочется алиас конструктору с определёнными параметрами и всё.
Чтобы я только объявил переменную и начал с нею работать без уточнений в конструкторе.
579 1844000
>>843996
Так унаследуйся просто от Buffer и сделай там конструктор который будет вызывать конструктор Buffer с нужными параметрами.
580 1844010
>>844000
Да, наверное, это самое простое что можно сделать.
581 1844012
Как насчёт named constructor?
582 1844019
>>844012
https://en.wikibooks.org/wiki/More_C++_Idioms/Named_Constructor Оно?
Всё равно присваивание и вызов каких-то функций.
583 1844146
>>844019
auto reader { Buffer::Reader() };
auto writer { Buffer::Writer() };
584 1844156
А пачиму нельзя компилировать qt из исходников как какой нибудь boost? Разве так не проще?
585 1844158
>>844156
Можно
586 1844162
>>844158
Почему это по умолчанию не происходит? Разве это не лучше по всем пунктам?
587 1844170
>>844162
По умолчанию где?
Лучше чем?
588 1844172
>>844170

> По умолчанию где?


Ну везде, не?

> Лучше чем?


Размером => быстродействием. Ну может компилироваться будет дольше.
589 1844179
>>844000
Это же притянет vtable в класс который мог быть pod, не?
590 1844347
>>844156

> А пачиму нельзя компилировать qt из исходников как какой нибудь boost? Разве так не проще?


Сборка Qt с флагами по умолчанию занимает несколько часов, спасибо веб-быдлу, которое везде суёт свой говнохром.
Без webengine сборка занимает около получаса.
591 1844348
>>844179
Если нет virtual, то не притянет.
592 1844349
>>844179
А если добавить final, то скорее всего вообще никакого оверхеда
593 1844464
>>844347
Ты про весь фреймворк? Я про свою собственную прогу. Вот в бусте я заинклудил файлы, и компилятор потом просто функции которые я использую скомпилировал. С qt чому так нельзя?
594 1844536
>>844464
В boost почти все библиотеки - header-only. Например, boost::threads ты вряд ли сможешь использовать, не собирая предварительно.
Qt имеет кучу внутренних зависимостей, т.е. чтобы использовать виджет нужно компилировать очень много файликов из qtgui и qtcore. Охуеешь это делать каждый раз.
1552122240683.png199 Кб, 777x957
595 1845060
>>843825
Распространенная проблема судя по всему.
Почему так? Ну хз, последовательность байт совпадает с каким то вирусом может быть.
596 1845118
>>845060

> Почему так?


Тебе же сказано: шин10. Теперь мелкософт за тебя решать будет что можно запускать на твоём компе за твои деньги, а что нет.
14496662847850.png754 Кб, 973x1410
597 1845167
Доброго времени суток. Я ньюфаг, прошу не закидывать меня говном сразу, у меня всего несколько небольших вопросов.

Какой консенсус или общепринятый стандарт по структурированию заголовков и реализации? Когда гуглил, очень часто натыкался на мнение, что заголовки должны содержать только объявление классов, напрмер, а вся реализация должна быть в .cpp файлах. Но в то же время я вижу много header-only библиотек, если реализация в заголовках это антипаттерн, то почему его так активно используют в достаточно популярных инструментах?

Правильно ли я понял, что строку с #include "my_header.hpp" компилятор распарсит как обычную копипасту, а сами заголовки не компилируются? Т.е. в случае если у меня есть файл main.cpp, и в нем я сделал #include "my_header.hpp", то при компиляции содержимое заголовка будет вставлено в main.cpp как инклюд, и скомпилирован будет только main.cpp?
598 1845197
>>845167
Header-only библиотеки удобнее, но компилируются медленнее (т.к. их каждый раз надо компилить и парсить в каждом .cppшнике). Хедеры + .cpp - менее удобно, зато быстрее компиляция.

Если библиотека состоит из ехали шаблоны через шаблоны - там ничего нельзя положить в .cpp файл, вот они все и в хедере.

>Правильно ли я понял, что строку с #include "my_header.hpp" компилятор распарсит как обычную копипасту, а сами заголовки не компилируются? Т.е. в случае если у меня есть файл main.cpp, и в нем я сделал #include "my_header.hpp", то при компиляции содержимое заголовка будет вставлено в main.cpp как инклюд, и скомпилирован будет только main.cpp?


да
599 1845302
>>845197

>Если библиотека состоит из ехали шаблоны через шаблоны - там ничего нельзя положить в .cpp файл, вот они все и в хедере.


А если имплементация шаблона в срр файле?
600 1845319
>>845302
Уже который раз писали в треде, что только в hpp можно шаблоны инициализировать
601 1845320
>>845319
Имплементировать
быстрофикс
602 1845348
>>845319
Дебилы значит, все это можно и нужно делать в срр. Хедеры для объявлений.
chel.PNG30 Кб, 505x186
603 1845351
>>845348
Пчел ты
604 1845420
чо по qt почитать? Какие книги хорошие. Или достаточно видео на ютубе? Или может есть какие-нибудь курсы?
605 1845479
Неделю назад начал вкатываться в эти ваши "сложные" плюсы. Сейчас на ООП которое мои знакомые называли самой сложной частью языка. Но мне нихуя не сложно, всё понимаю + конечно же пишу код. Я гений или дальше будет жёстче или мне всю жизнь врали что плюсы сложны?
606 1845489
>>845479
Сложность в подводных камнях которые могут появится там где ты не ожидаешь. Ну и шаблоны тоже довольно таки сложная штука.
607 1845494
>>845479

>Сейчас на ООП которое мои знакомые называли самой сложной частью языка. Но мне нихуя не сложно, всё понимаю


Смоделируй в ООП лифт для бизнезцентра, знаешь такой который подбирает людей по пути.
608 1845535
>>845479
Знакомые это вася из девятого класса?
ООП не только в плюсах есть кстати. А сложность крестов в том, что туда понапихали всякого разного, не фильтруя ничего, и продолжают пихать. Один и тот же код ты можешь написать столькими вариантами, что когда придет время прогать на плюсах ты будешь думать не о задаче, а какие технологии языка вообще юзать. Ну и еще есть такая штука как UB.
Так что если ты школьник, а ты скорее всего он и есть, то выучи паскаль и не выебывайся - толку больше будет.
609 1845546
>>845489

>Сложность в подводных камнях которые могут появится там где ты не ожидаешь


Это-то понятно, оно всё с опытом придёт.

>шаблоны


Ну посмотрим що це таке, вдруг и их не прочувствую.
>>845494
Сам делай свои тз, тем более что задача на первый взгляд тривиальна.
>>845535
Один пчёл из яндеxса, другой по его рассказам на аутсорсе что-то для проджектов делает.

>ООП не только в плюсах есть кстати.


Это понятно.

>А сложность крестов в том, что туда понапихали всякого разного, не фильтруя ничего, и продолжают пихать. Один и тот же код ты можешь написать столькими вариантами, что когда придет время прогать на плюсах ты будешь думать не о задаче, а какие технологии языка вообще юзать.


Ну так круто же, не люблю загонять себя в рамки.

>Ну и еще есть такая штука как UB.


В курсе, читал + сталкивался, учусь не допускать.

>а ты скорее всего он и есть


Мимо

>паскаль


Нет, спасибо.
610 1845547
>>845546

>Сам делай свои тз, тем более что задача на первый взгляд тривиальна.


Ну то есть ты не шаришь в ООП и просто пришел выебнуться, ясно.
611 1845555
Ебаные собаки вгшные со своим чел пчел, не тред а раковник, сука.
612 1845570
>>845547
Шарю и уже неплохо так поработал с этой темой. Конечно не без нюансов но суть я понимаю и с многиими задачами справиться смогу. Но лифт для бизнезцентра который подбирает людей по пути если мы говорим о простой модели без ухода в лоулевел и электронику - дело пары-тройки методов и не более того.
613 1845573
>>845570

>дело пары-тройки методов и не более того.


Разумеется имхо, не триггеритесь в случае чего.
614 1845595
>>845302
Для инстанцирования шаблона в транслейшен юните необходим его полный код.
615 1845596
>>845479
Эффект Даннинга-крюгера
616 1845760
>>845555
Ну давай, вынеси реализацию шаблона в .cpp, умник
617 1845779
Ананасы, как научиться проектировать программу\её структуру?
Вот, например, есть некий виджет который отображается в определённом режиме редактора (скажем, как в графическом редакторе рисуешь кистью у которой куча настроек). Что-то он хранит во внутреннем своём состоянии, а что-то получает извне: текущий выбранный цвет, текстура и тд.
Так вот, как хранить это внешнее состояние? Нужен какой-то класс, на вроде, контекста?
618 1845801
>>845760
Вообще можно попроббовать так сделать - будет похоже на шаблоны
619 1845846
как вкатиться в ШМП? очень сложно, как будто другой язык
Capture.JPG87 Кб, 1905x204
620 1845947
посоны не бейте, я в крестах и cmake вообще не разбираюсь, мне была нужна одна утилита, автор выдал только исходники, а это одна из необходимых либ для этих исходников
boost_root и boost_librarydir добавил после того как find_package(boost ...) этот самый буст не нашел, а тут вот это говно вылезает.
как править? пробовал закомментить find_package, вроде собирается, но студия потом ошибками плюется.
621 1846033
>>845947
Тебе похоже надо скачать библиотеку буста.
622 1846056
>>845947
Удали кэш и заново сконфигурируй, видишь, он пишет, что буст фуллкапсом, хотя ты уже так сделал
623 1846549
>>845846
Из плюсов только в ШУЕ ППШ можно вкатиться
624 1846682
>>846033
>>846056
решил добавлением BOOST_ROOT, BOOST_LIBRARYDIR и BOOST_INCLUDEDIR в PATH винды. вроде как нашлось, но забилдить все равно не могу, тонны ошибок уже в студии. почему с крестами такая морока посоны?
625 1846688
>>846682
Никакой мороки, просто

>посоны не бейте, я в крестах и cmake вообще не разбираюсь

626 1846708
>>846688
не отрицаю, если бы в крестах разбирался, у меня бы и вопросов скорее всего не возникло бы
но вот в шарпе я тоже совсем не главный индус, а сколько реп не качал, ну день максимум ебался, большая часть и сразу с полпинка на моей машине заводилась.
а тут одна либа из пачки - уже два дня ебусь.
627 1846747
>>846682
vcpkg install boost
628 1846750
>>846708
vcpkg install boost
629 1846919
Как в классе создать одну функцию с шаблонными переменными???
Что не делал всегда ошибки

https://pastebin.com/MiAN6Fpz
630 1846971
>>846919
В .h
template<class T>
void SwapAB(T n1, T n2)
{ }
.png13 Кб, 613x131
631 1847431
632 1847435
300к наносек senior C++ программист. Хочу вкатиться в какой-нибудь НИИ пилить софт для какой-нибудь военной йобы. ЗП не важна, готов работать за идею. Кто-нить знает где таким занимаются? И че-нить там реально разрабатывается, или все времен СССР?
633 1847438
>>847435
В ДС, понятное дело
634 1847555
>>847435
Иди в команду разрабов эльбруса
1604430389312.png339 Кб, 1106x583
635 1847627
ох ебать
636 1847661
>>847435
Есть вакансии в ИКИ РАН.
637 1847671
>>847627
да уж.
и раньше весь C++ никто целиком не знал, а теперь и подавно.
638 1847672
>>847671
где мой старый добрый C++98?
639 1847675
>>847627
>>847671
Чё ебало скрючили? Язык стал в разы выразительнее.
640 1847685
>>847627
Нечитаемое говно с кучей подводных камней, исключений из правил, хуй знает во что разворачивающееся в асме. for(int i = 0; i<...; i++) в разы понятнее.
unnamed.png201 Кб, 480x209
641 1847704
>>847435
Я занимаюсь) гугли компании входящие в Ростех, и находи ближайшую. Платят так се, зато будешь за копейки ездить в санаторий зелёная роща, сразу за Мацестой и у нас нет печенек.
642 1847723
>>847685

>хуй знает во что разворачивающееся в асме


Верь в компилятор. Полагайся на него. Надейся на него. Делай ему регулярные жертвоприношения. Компилятор даст тебе мудрость и ответы на все вопросы. Верь в компилятор.
643 1847765
Ребята, подскажите пожалуйста нубасу, почему этот цикл работает так медленно и как сделать правильно?
limit равен 320х320 = 102400, а heightmap - это QVector<quint16>
644 1847797
>>847765
Ты проверяешь производительность в дебаге? Пиздец.
1604484010763.jpg17 Кб, 332x332
645 1847834
>>847765
Бамп вопросу. Как можно быстрее манипулировать содержимым конейнеров?
646 1847872
>>847834
>>847765
Мб у тебя heightmap() каждый раз копирует массив? Попробуй перед циклом сохранить heightmap() в переменную и по ней пройти.
647 1847915
>>847671
я, наверное, знаю
но я безработный (есть время) и почитываю книжки по плюсам для развлечения
648 1847920
>>847675
он не стал выразительней, он стал скучнее
к примеру, раньше для программирования в компайл-тайм приходилось использовать по сути функциональный подход - вместо циклов была рекурсия через инстанцирование, вместо условных конструкций была форма паттерн-матчинга, компайл-тайм переменные эмулировались через enum, и прочее
это было забавно
1604491310300.png554 Кб, 900x900
649 1847922
>>847872
Ты был прав, анон! Спасибо большое.
650 1847936
std::vector<MyClass*> vec;
for (int i = 0; i != 666; ++i) vec.push_back(new MyClass());

В каком случае будет утечка, в этом
for (auto& i : vec) delete i;
или этом?
for (auto&& i : vec) delete i;
651 1847955
>>847671
Не знаю, я вот С++11-14-17 очень хорошо скушал.
Концепты и модули тоже понемногу кушаю, обзорно по фичам С++20 проехался.
Проседаю в некоторых сложных темплейтах, но это исправлю.
652 1847967
>>847936
Ни в каком.
653 1847976
>>847936
В случае если в push_back вылетит исключение.
654 1848187
>>847936
Слушай, если ты работаешь с стл векторами, попробуй умные указатели.
655 1848217
>>848187
Любители класть шаред_птр в вектора могут сразу отправляться в джава-тред.
656 1848294
>>847920

> к примеру, раньше для программирования в компайл-тайм...


...приходилось дрочить вприсядку.
657 1848309
>>848217
Клади unique_ptr.
658 1848337
>>847920
Я правильно понимаю что теперь хуй проссышь, выполняется данный конкретный код в компайл- или рантайме? Раньше хотя бы маркером служили трехэтажные конструкции из шаблонов.
659 1848359
>>848337
хм, нет, понять можно конечно же
просто стал возможен императивный подход в компайл тайм
это скучно
660 1848375
>>848359
Скучно ему, блядь. Я вот затрахался городить длиннющие простыни. Сегодня же, хвала constexpr-у, подобное проще писать, читать и поддерживать. Ну и если аккуратно использовать новые финтиплюшки, то время компиляции оказывается ощутимо ниже, чем у соответствующих по функционалу старых конструкций.
661 1848376
>>847920
Эта ебля конечно угарная, с точки зрения академической ценности, но в прод ее никто бы никогда не пустил. А с современными иф констэкспрами и прочими вариадиками - это реально теперь в проде писать, как например делаю я.
662 1848379
>>848375
constexpr не гарантирует компайл тайм.
663 1848381
>>848379
Нечего по сути сказать? Значит, доебёмся до слов. Я же писал художественного стиля пост на двачике, а не технические спецификации, смысл докапываться?
664 1848388
Вам не кажется что ваш язык ПИЗДЕЦ НАХУЙ какой раздутый? Я конечно все понимаю, но такое ощущение, что комитет пытается впихнуть все что можно просто. Все что в других языках есть, все абсолютно. Пусть эта фишка будет использоваться раз в год, но зато будет чуууть удобнее писать, но похуй что выучить все это невозможно нахуй.
665 1848392
>>848388

> выучить все это невозможно нахуй


Как-то ты долго подводил к признанию своей тупизны
666 1848394
>>848388
Просто не надо учить то, необходимости чего не осознаёшь. Пользуйся сначала малым подмножеством языка, по нужде со временем потихоньку освоишь всё, что есть, и будешь просить комитет выкатить уже наконец те самые давно обещанные плюшки.
667 1848399
requires тоже сделал многие конструкции сильно короче и проще
668 1848400
>>848394
В целом согласен, но не хватает что-то вроде uniform (now for real) uniform initialization
669 1848404
>>848399
Это точно. Жду, когда на работе коллеги перейдут на свежий msvc. Выкину наконец велосипедный span, вставлю в энное количество мест концепты вместо шаблонных уродцев и комментариев
670 1848459
>>848394
Не выучив не сможешь читать код коллег/опен сорса, где вася добавил конструкцию просто потому что захотел выебнуться.
671 1848468
>>848379
Ну consteval, какая разница
672 1848558
>>848400
Ух сука, не напоминай. Кстати, в 20 же наконец выпилили list-initialization в пользу aggregate+designed?
673 1848709
>>848459
Требуемая компетенция для чтения кода и его порождения всё-таки сильно различается. Для чтения часто хватает общего понимания и гугла.
674 1849538
>>847955
И че это тебе дало, вопросец такой вот нахуй старина
675 1850419
Почему так? Программа просто не работает. Проц не грузит вообще? Решается перезапуском, но почему такое иногда случается?
676 1850469
Мне нужно перебрать все простые числа до 10^12. У меня на компе памяти столько нет (нужно завести массив буллов с 10^12 элементами). Как быть?
677 1850479
>>850469
Понятно конечно, что можно перебирать делители, но это ебнуться можно. А решето не подходит по описанной выше причине. Хз че делать.
678 1850485
>>850479
Наверное, я все таки так и сделаю, потому что другого выбра у меня нет. Тем более у меня есть некоторые ограничения на эти числа. + в отличии от решета это можно распаралелить довольно просто.
679 1850516
>>850469
Так это задача супер компьюеторов нахуя её делать на своем пк кроме как для эксперимента? Найди лучше их в интернете
680 1850524
Почему c++ так популярен? В какую программу не глянь везде присутствует c++
681 1850525
>>850524
Немного не так поставил вопрос. Почему с++ популярнее просто c? Или того же rust?
682 1850550
>>850525
Почему условная дрель бош популярнее ручной дрели? Почему она популярнее дрели завода "ударник"?
683 1850563
>>850550
Не знаю! Почему???
684 1850587
>>850525
В C++ есть куча плюшек, которые нравятся даже сторонникам девственно чистого Си. Плюс под виндой Си компилятор от мелкософтов до недавнего времени только C89 поддерживал, поэтому все компилили даже сишный код как плюсовый. Ну а раз так, то грех не воспользоваться каким-нибудь из овердохрена фишек.
685 1850612
>>850525
Так нахуй нужен просто си если есть с++ который по сути то же самое, но с дополнительным функционалом?
686 1850617
>>849538
Веду эффективную разработку, продвигаю использование новых фич в имеющихся проектах (при создании новых подсистем в них), выступаю с презентациями среди остальных коллег по конторе.
Ну и саммоу приятно в хобби-проектах.
687 1850618
https://godbolt.org/z/TaWqoh

Почему наглый компилятор совершенно спокойной генерирует в данном случае copy-constructor, при использовании которого второй объекта инициализирует свой reference с помощью member variable первого объекта?

В итоге когда кончается lifetime первого объекта, во втором получается dangling reference.

Ни одного ворнинга!
Я щитаю, в таком примере copy-constructor должен быть implicitly-deleted. Или хотя бы не делать то, о чём не просят.
688 1850624
>>850516
НАДО. Ну вообще я думаю мой комп справится. На андроид есть приложения для поиска простых множителей. До 12 степени за секунду находит. А мне 11 нужна, правда много. Короче так и сделаю. Что, ни у кого такого желания не было?
689 1850626
>>850469
Причём тут память? Промежуточные числа хранить же не надо.
690 1850627
>>850626
Для решета эратосфена
691 1850628
>>850624
Тебе нужны прямо все простые в этом интервали, или только проверить, является какое-то конкретное число простым или нет?
692 1850629
>>850628
Многие. Пару условий есть на них. Ну читай мои ответы. Я там уже почти определился.
693 1850701
>>850618
Говнокод да и только
694 1850706
>>850701
По делу нечего сказать?
Пример набросан для иллюстрации.
695 1850724
>>850706
Пчел, ты не знаешь, что такое ссылка, следовательно твой код по умолчанию говнокод.
696 1850730
697 1850731
>>850724
Я прекрасно знаю, как работает этот код и что происходит внутри compiler-generated copy-constructor в данном случае, мне просто это не нравится.
698 1850780
>>850618
Ты -O0 что ли оцениваешь? Пробуй с -O2 или -Ofast
699 1850795
Программач как в этом ебучем VS 2019 Community изменить цвет комментариев??? Пробовал два расширения одни из которых Color.comment на цвет всех комментариев сделался серыми, в настройках чуть больше чем нихуя.
700 1850800
Как в с++ .netframework форме получить значение в виде строки из editbox`а??? Число у меня без проблем получается вывести:
int v = int::Parse(eFName->Text);
а как получить тип string?
701 1850839
>>850800
Во-первых, пошел нахуй.
Во-вторых, какой тип по-твоему имеет eFName->Text? Если такое непредставимо богомерзкое творение хаоса как С++.NET имеет в бездне своей архитектуры безумия хоть частичку логики постижимой разумом смертных, то это как раз и будет тип string.
702 1850882
>>850731

> мне просто это не нравится


Ну что же ты такой тупой блядь.
https://stdcpp.ru/
6371.image01E29095.png105 Кб, 640x355
703 1850884
>>850795
Ну что же ты такой тупой блядь.
704 1850907
>>850612
затем, что в этом мире есть очень много экзотического железа, под которое нужно писать компиляторы (да, С компиляторов есть на бОльшее кол-во железок). Написать нормальный компиль на Си еще реально, написать же рабочий и валидный, не срущий багами, компиль на С++, который, к тому же, поддерживает современные стандарты языка, это ЕБАНЫЙ АД, легче с нуля написать полноценную ОС, ей богу.
705 1850911
>>850524
зрелый язык со всеми возможными реализованными парадигмами, позволяет обмазываться и ООП, и процедурщиной, позволяет перекидывать овердохуя вычислений на компайл-тайм (привет метапрограммирование и constexpr), в виду присутствия UB позволяет фривольно творить больные вещи, правда на страх и риск говнокодера, имеет Тьюринг полные темплейты (да, это отдельный язык программирования внутри плюсов), имеет 250 миллиардов слоев абстракций, при этом высранный компилятором бинарный код по скорости исполнения очень близок к скорости исполнения бинарного кода после компиляции чистого Си кода (на аналогичной машине, ессна). Плюсовые компиляторы уже умеют хорошо оптимизировать машинный код, что тоже немаловажно. Всеми известный и уже фактически родной С-подобный синтаксис. Очень хорошая интеграция с Си (лучшая так-то), а на С написано овердохуя софта за 50 лет существования языка (примерно 90% библиотек, все ядра всех известных ОСей и т.п.). Из-за ебанутых темплейтов позволяет внаглую читерить - например, в С++ возможен статический полиморфизм, который эксплуатирует поведение темплейтов при наследовании, минуя нужду в виртуальных таблицах, по которым работает динамический ad-hoc полиморфизм, который довольно медленный. Причин еще очень много, плюсы одновременно и манна небесная, и говно ебаное червипидорское, но это обязательные условия для того, чтобы язык был юзабельным в широких массах, как бы парадоксально это ни звучало.
706 1850913
>>850525

>с++ популярнее просто c


Это неправда. С популярнее плюсов, даже в 2к20. Такие дела, да.

>rust


В лучшем случае займет околоГОшную нишу, в худшем - сдохнет, так и не выстрелив как следует. С и С++ он никогда не сместит с царства байтослесарства по очень многим причинам, многие из которых даже больше связаны с экономикой и челоеческой ебанутостью, нежели непосредственно с программированием.
707 1850945
>>850525
ООП
О
П
1.png3 Кб, 314x85
708 1851046
господа программисты помогайте, как записать этот пример на c++
709 1851049
>>851046
Тупой?
710 1851050
>>851049
был бы умным тут не сидел
711 1851058
>>850907
Бэкенд для шланга написать несложно
713 1851470
Есть программа, которая очень сильно грузит процессор. Как сделать так, чтобы я хоть закрыть мог ее если понадобится?
714 1851476
>>851470
Выносить работу из ui-треда
715 1851481
>>851476
Консольное приложение
716 1851536
А vs умеет автоматом параллелить проги? У меня приложение жрет 40% цп. Я думал если оно однопоточное то максимум 25, типо одно ядро, все дела.
717 1851543
Еще интересно узнать как vs оптимизацию проводит. Есть прога, в которой неменого переменных. Меньше десяти. Самые большие из них это строка из 11 символов и 10 байтовый массив. Компилирую с максимальным быстродействием. Прога жрет по гигу памяти. Нахуя? я просто не понимаю куда столько.
718 1851588
>>851481
Выносить работу из основного треда.
719 1851591
>>851588
Или в цикле периодически проверять наличие сигнала.
720 1851655
Почему в Release версии всегда вываливается исключение, даже при корректной дате? В чём проблема? В debug всё норм. Компилятор msvc последний

Date::Date(int yy, int mm, int dd)
: y{ yy }, m{ mm }, d{ dd }
{
if (!is_valid()) throw Invalid{};
}

bool Date::is_valid() {
if (m < 1 || 12 < m) return false;
if (d < 1 || 31 < d) return false;
}
721 1851661
>>851655
Потому что читай варнинги. Ничего не возвращать - это UB.
722 1851715
>>851536
Ты в курсе, сколько дополнительных потоков создаётся при запуске твоей программы?
723 1851717
>>851543
(((спиздили)))

Ну сам-то как думаешь?
724 1851722
>>851715
Нет. Я думал только поток консоли и сама прога.
725 1851723
>>851717
Хз честно. Говорю же, я не понимаю зачем столько
726 1851743
ТУПОЙ ВОПРОС

В cpp20 с появлением модулей как нибудь сборка облегчиться? Или все так же надо будет страдать от cmake с миллионами строк?
можно ли будет какой то аналог cargo получить, пусть даже без пакет менеджмента?
727 1851749
Как можно получить доступ к элементу richLog??
https://pastebin.com/vRCvnjAr
728 1851757
>>851715
Сколько?
729 1851760
>>851743
Уже давно есть conan
730 1851777
>>851760

> пусть даже без пакет менеджмента


> conan


Я опять всё проспал чтоли
Он перестал быть чистым пакетным менеджером?
731 1851899
>>851591

>Или в цикле периодически проверять наличие сигнала.


хех, коммент прекрасно отображает на каком дне крестоблядский тред в /pr
732 1851936
>>851899
Доброе утро, всё так и работает.
733 1851985
>>851936
нет, дружок, события гуи лет 30 как уже НЕ так обрабатывают
734 1852031
>>851985
Я ничего не говорил о событиях гуя.
735 1852033
>>851985
>>852031
Хотел ещё добавить, что не 30, а максимум 15 (с каким-нибудь processMessages в delphi), а потом посмотрел на календарь, лол.
736 1852054
>>851661
Спасибо
737 1852074
>>851543
Посмотри ассемблер, посмотри профилировщиком по памяти (емнип он входит в Community версию студии).
738 1852090
>>850913

>В лучшем случае займет околоГОшную нишу, в худшем - сдохнет, так и не выстрелив как следует. С и С++ он никогда не сместит с царства байтослесарства по очень многим причинам, многие из которых даже больше связаны с экономикой и челоеческой ебанутостью, нежели непосредственно с программированием.


Уже смещает, FAGMAN активно начал топить за Раст
739 1852114
>>852090
Одногруппник твой?
740 1852166
>>852090
Нахер он нужен когда уже есть Zig.
741 1852176
>>851760

> conan


Ну не может быть пакетный менеджер, библиотеки для которого собирает какой-нибудь васян
742 1852184
>>852166
хайль
743 1852191
>>852176
Покажи невасянов.
744 1852228
>>852090
маняфантазии свои оставь при себе
Гугл за свой дарт тоже топил, якобы убийца джава скрипта. И что из этого вышло? нихуя :) Если мелкософты скромно пукнули по поводу раста, мол, пук-среньк, безопасность лучше, то это не значит, что для раста реально достигнуть уровня С и С++ в плане глобальной распространенности. Все равно ниша С и С++ - это ебать байтики, где раст должен обмазываться ансейфом, дабы тоже ебать байтики как следует, что возвращает проблемы безопасности памяти как в С и плюсах. Короче, не в этой жизни.
745 1852293
746 1852298
>>852293

>M$


>не васяны


Кекнул.
747 1852307
>>852298
Кекай дальше, зуммер.
vcpkg - это будущее. Ни одна уважающая себя контора не будет использовать собранные непонятно кем библиотеки.
в microsoft васянство прекратилось примерно году в пятнадцатом, вместе с выпуском vs2015
748 1852314
>>852307
От того что индус носит бейджик менее васянским он не становится.
а когда результаты начнут на продуктах сказываться?
749 1852335
сопля тут?
750 1852337
Сап! Сделал бесконечный цикл a += 500000; просчитал он только до 1.147.000.000 вроде. Потом начал отнимать по 500000 вплоть до -1.147.000.000. Это и есть переполнение буфера? Если это оно, то почему не крашнулось, а бесконечно туда сюда бегало?
751 1852389
>>852314
что не так с продуктами? Они охуенные и лидеры в своих отраслях.

Тот же компилятор МСВЦ первым начал модули поддерживать, например
752 1852420
>>852337
Это целичисленное переполнение. Переполнение буфера это выход за границы массива типо char buff[10]; buff[228] = 0;
753 1852672
Мне так и не ответили >>851543
754 1852704
>>852672
Тупой ворос.
755 1852717
Крестогоспода, как работает мув семантика в современный компилях?
Я знаю, что если я верну, допустим, вектор из функции, то он не скопируется в функцию, куда возвращается поток исполнения, а переместится само владение над ним (NRVO вроде как называется). Это работает только для возвращаемых значений, верно?
756 1852740
>>852717
Это не мув и не семантика. Это просто оптимизация, буква О в NRVO
757 1852801
Аноны, нужно послать картинку, вырезанную из видеопотока в браузер на той же машине, что можете посоветовать?Пока остановился на websocketpp. В интернетах его советуют за удобный интерфейс. Есть ещё libwebsocket, но там как-то слишком много всего надо настраивать через структуры. Может я не в ту сторону воюю, и есть более простое решение или библиотека, которая является стандартом?
758 1852916
>>852704
Что тупого? Если ты умный, объясни мне, тупому, почему vs мои пару байт переменных оптимизирует в гигабайт?
759 1852955
>>852801
Картинка одна на рефреш? Можно притвориться HTTP сервером (тупо захардкодить все ответы сервера) и отдать нужную картинку на каждый запрос.
760 1852971
Есть задача которую надо решить. Нужен dfs. Но вызов функции насколько я помню довольно дорог, а тут таких вызовов много, а сами тела фунцкий довольно простые. То есть на мой взгляд очень много времени тратится на вызов функции относительно времени выполнения всей программы. Прошу вашего совета, как с этим бороться. Я больше по придумыванию алгоритмов, а не непосредственному программированию их.
761 1852977
>>852740
Кстати, если не удалось выполнить эту оптимизацию, то вызывается конструктор перемещения (если его нет, то конструктор копирования)
chel.PNG30 Кб, 505x186
762 1852979
>>852971

> на мой взгляд


Пчел, ну запусти ты разок профилировщик
763 1852982
>>852971

>Но вызов функции насколько я помню довольно дорог


Зависит от множества факторов. Если компилятор заинлайнил функцию, то вызова по сути нет. Если функция листовая (не вызывает других функций), то компилятор возможно положил болт на соглашение вызовов и соптимизировал их. Если вызовы непрямые (indirect) то возможно тратится не на вызов, а на хождение по указателям. И тд. А может у тебя вообще не там время теряется. Всё возможно.

tl;dr профилируй и читай асм
764 1852986
>>852982

> Зависит от множества факторов. Если компилятор заинлайнил функцию, то вызова по сути нет.


Dfs предполагает рекурсию, а как я помню рекурсивные функции инлайниться не могут

> Если вызовы непрямые (indirect) то возможно тратится не на вызов, а на хождение по указателям.


Тут я даже хз что этт

> И тд. А может у тебя вообще не там время теряется. Всё возможно.



> tl;dr профилируй и читай асм


Ок
765 1852987
>>852986

>Dfs предполагает рекурсию, а как я помню рекурсивные функции инлайниться не могут


Depends. Tail call optimization.
766 1852995
767 1853026
>>852986

>Dfs предполагает рекурсию


Ты не через явный стек делаешь? Я думал у тебя куча вызовов каких-то других функций происходит.
768 1853172
>>852995
Никому не интересен твой вопрос, ты вообще не пытаешься потратить время на изучение.
769 1853265
>>852979
Запустил. Твои действия?
770 1853289
>>852955
Не, картинок много, и посылаются в различные интервалы времени. Сам сервер обратную связь не получает.
771 1853299
>>852916
Чел, как мы без кода должны определить, что ты там понаписал на 1гб?
772 1853373
>>831651 (OP)
Сап хлопцы, скажите пожалуйста где вы юзаете лямбды, и сильно ли это ЮЗФУЛ, я просто в connect В qt заюзал и понял что годнота для этой цели, но потом задумался а где они ещё полезны, и как то не придумал ничего.
773 1853381
>>853373
Предикаты во всевозможные find_if, sort, transform и т.п.
774 1853537
>>853373
помимо довода крестогосподина свыше, лямбды можно использовать для того, чтобы писать короткие функции (т.н. анонимные) внутри функций, если не хочешь писать отдельную функцию под какое-то относительно простое действие.
775 1853538
>>853537
и превращать код в js-дрисню, поддерживать такое просто песня
776 1853565
>>853373
Только там где реально нецелесообразно плодить классы и функции, что-то короткое и понятное.
Так-то обычно это нарушение абстракции и выкладывание наружу кишков.
777 1853582
>>853538
Не хочешь - не используй, тебя сам язык не форсит юзать лямбды, даже в качестве прекдикатов (хотя там это норм выглядит, в отличии от функторов, что есть бойлерплейт еще тот)
778 1853584
>>853582
предикатов*
быстрофикс
779 1853585
>>853582
в отличие*
дабл быстрофикс
image.png2 Кб, 405x93
780 1853590
Задали на программирование написать программу, которая решает вот эту формулу. Уже неделю мучаюсь, но ничего придумать не могу
Помогите, пожалуйста
781 1853591
>>853590
Как вообще можно решать формулу? Что ты несёшь, поехавший?
782 1853600
>>853590
В латехе это просто
f(x,N)=\sum_{n=1}^{N} (-1)^n \frac{x^n - 0.1 \cdot n}{n}
Как я понял, тебе нужно посчитать f(x,19) для заданного x?
783 1853618
>>853582
Ок, а как заставить других не загаживать код?
784 1853622
>>853590
Программы не придумывают, а составляют по шагам.
Первый шаг - запрограммируй рассчет только первой дроби.
Потом - двух. Потом - трех. Потом увидишь повторяющиеся части твоего кода, которые сможешь обобщить.
785 1853635
>>853590
Ты циклы проходил вообще, гуманитарий?
786 1853652
>>853590

> Уже неделю мучаюсь, но ничего придумать не могу


Сожалею, но пора сменить направление.
787 1853656
>>853590
Вижу здесь широкий простор для темплейтов.
788 1853660
>>853590
Скажи, нахуя ты поступал на такое направление? Мало того что вам хуйню школьную преподают, так ты даже в этом не шаришь
789 1853665
>>853565
>>853537
>>853381
Спасибо большое!
790 1853705
>>853590
Анон, ну камон, здесь же телескопический ряд налицо. Возьми произвольное значение степени икс (или знаменателя, неважно, в этой последовательности они идут нога в ногу каждую итерацию) и разложи дробь. Тем самым тебе будет легче увидеть закономерность последовательности. Как только загуглишь телескопический ряд, разложишь последовательность как следует, тогда и алгоритм решения уже будет ясен. Как можно такое решать НЕДЕЛЮ? Пиздец, не обессудь.
791 1853722
>>853590
Тебе тут ответили достаточно злые люди, хотя в чем-то я с ними согласен, но не буду размусоливать, как они. Сделай как говорит анон>>853705
Если не осилишь, то я спасу твою домашку, на код, сиди и вникай. По типам если есть какие-то особые требования от препода - поправь сам. И да, вангую, что такие задания дают с ограничением - не юзать либы типа math.h, а чисто от руки ебануть цикл, который все посчитает, что я, в принципе, и сделал.
https://pastebin.com/6Ygfb3by
792 1853725
>>853722
Нахуя ты это делаешь? Хочешь чтобы потом самолеты падали из за неучей?
793 1853735
>>853725
Ты думаешь, что если он рили гуманитарий до мозга костей, то закончит инст по технической специальности? Даже если закончит, хуй его возьмут на что-либо ответственное.
794 1853738
>>853725
Максимум, что этому челику светит - это веб-макакерство или куа, какие самолёты, кек
15588730144580.jpg91 Кб, 600x600
795 1853745
>>853590
Так-то ничего сложного - берешь и делаешь.
https://ideone.com/TY7SC2
796 1853759
>>853745
салют за метапрограммирование (бедный анон-неосилятор походу вскроется, когда откроет твою простыню), но у тебя невалидная программа кажись. При х = 3 и степени 2 получается -1.5, а у тебя 4.3 (засим и по знаменателю 19 выйдет неверное число, так как ты не учел наличие телескопического ряда)
797 1853793
>>853745

>ЖНИ КАЛ


О, я вижу вы из андроида
blue-ballerina-art-carmen.jpg317 Кб, 1000x1001
798 1854002
Сап плюсаны. Допустем есть такой код:
while (true) {
std::string command;
std::getline(std::cin, command);
if (command == RESTART) {...}
...
foo();
}
Как сделать так, чтобы программа не ждала ввода, а цикл крутился дальше, пока пользователь не напишет что-то и не нажмёт энтер? Я пробовал через std::cin.peek(), но что-то как-то не понял как нормально это сделать.
По идее, под это можно отдельный тред выделить, но это как-то слишком расточительно, если я правильно понимаю как это работает.
799 1854005
>>854002
Отдельный тред и очередь команд.
800 1854008
>>854005
А отдельный тред не отожмёт целое ядро, учитывая, что 99% времени в нём ничего не происходит? Или нормально всё будет?
801 1854013
>>854008
Поищи в интернете, как работает планировщик ОС
802 1854017
>>854008
Не отожрёт, равно как и std::getline в твоём примере не отжирает целое ядро в ожидании инпута.
803 1854023
>>854013
>>854017
Понял , благодарю.
804 1854123
>>854002
Другой вариант, без тредов, это использовать системное API для работы с консолью. То есть PeekConsoleInput для винды и ебатня с termios для юниксов. Но это, естественно, будет работать только для конкретной операционной системы и разбивать на строки тебе придётся самому. Поэтому да, всё-таки проще вынести обработку ввода в отдельный тред.

>А отдельный тред не отожмёт целое ядро


Пока поток заблокирован в ожидании чего-то (в данном случае ввода с клавиатуры/чтения из stdin), ему система даже не будет выделять время.
805 1854167
>>854123
Спасибо за инфу, но да, хотелось бы переносимости.
806 1854343
>>854167
Портабельность в виде nodelay + getch: https://pdcurses.org/
807 1854656
Каков примерный минимум знаний для человека желающего вкатиться на джуна?
808 1854677
Что может вырезать компилятор при оптимизации? Например если я заведу переменную, в цикле произведу арифметические действия, но никуда кроме как самой переменной сохранять значение не буду он ее вместе с циклом вырежет? А если я память через new выделю?
809 1854680
>>854677
Переменная шрёдингера - если ты не используешь результат вычислений, то и узнать осталась ли переменная ты не сможешь. А если используешь, то не узнаешь, была ли там переменная или только результат.
1479911529134.png41 Кб, 1232x341
810 1854685
811 1854689
>>854685
Нихуя он умный (я про компилятор)
812 1854724
Как использовать шаблоны в .h и .cpp?

В .h:
template < typename T >
void func(T.......);

В .cpp
template < typename T >
void func(T.......) {
......
}

Выдает ошибку undefined reference to. Что не так?
813 1854725
>>854724
а все, я понял какой там прикол с компиляцией
814 1854790
>>854724
Дефайнить темплейты в хедеры или пользоваться explicit instantiation.
Либо инклудить имплементацию из хедера (в духе какого-нибудь .inl)
Три варианта.
815 1854835
Дваач, пытаюсь подцепить oop GoogleBreakpad к проге на Qt на маке. Всё вроде работает, но вылезает ебучее стандартное маковское сообщение о том, что программа крашнулась. Какого хуя, как его убрать, может кто знает?
816 1854836
>>854835
Проинжирь шаблон
817 1854840
>>854836
Эм... А можно чуть подробнее?
818 1854848
>>854840
как у кебя oop лаунч делает? через какой метод?
819 1854859
>>854848
Примерно как тут: https://github.com/google/breakpad/blob/78180df608bf0d0181fd1b096ec98d1354b640d0/src/client/mac/tests/crash_generation_server_test.cc#L218

Запускается launcher, в нём создаётся CrashGenerationServer. Дальше он стартует, если успешно, то в fork'е открывается моя приложуха. В ней создаётся ExceptionHandler с таким же портом, как и CrashGenerationServer

В CrashGenerationServer передаю callback только на краш
В ExceptionHandler callback'и не передаю
820 1854915
>>854656
Бамп
821 1855025
>>854656
Знать ключевые слова с++98 и фишки из нескольких последующих стандартов.
Знать STL на уровне "создать коллекцию с составным ключем и проитерировать, удаляя элементы".
Знать вумные указатели.
Уметь написать свой String.
Уметь читать исходники Boost.
822 1855028
>>855025

> Уметь написать свой String.


> Уметь читать исходники Boost.


Это нахуй не надо. String уже до тебя будет написан, с бустом если что google поможет
823 1855040
>>855025
Изи же
824 1855041
>>855025
Звучит слишком просто. В чём подвох?
825 1855073
>>855041
Ну так и джун не сильно далеко.
826 1855162
При каких случаях может падать reversed_mutex при попытке lock? Если при попытке лока падает помойка с ошибкой !pthread_mutex_lock(&m) assertion failed
827 1855172
>>855162
Чаще всего объекта уже нет, он делетед
828 1855191
>>855028
String в каждом проекте пишут свой, поэтому входит в обязательный список джуна.
829 1855209
>>855028
Почему бы не написать свой стринг просто чтобы разобраться как это работает?
830 1855223
>>855209
Хули там непонятного?
831 1855240
>>855223
На разных проектах бывают нужны разные стринги. Например ropestring для текстовых редакторов. В БД могут быть нужны другие.
832 1855241
>>855223
Unicode in C++ when?
833 1855276
>>855025

>Уметь читать исходники Boost


Я сдаюсь
834 1855298
>>855223
Там столько нюансов, что ты пизданёшься.
835 1855313
>>855241
В ICU
Стикер512x512
836 1855324
>>855313

>C API

837 1855339
>>855324
У неё же есть официальная плюсовая обёртка. Да даже если и так

>C API


Как будто что-то плохое
838 1855414
https://ideone.com/p4xrWa
Вообще не соображаю, уже пару часов долблюсь. Почему 21 строка выбрасывает free(): invalid pointer? Почему утечка? Почему строка не возвращается? Нихуя не пашет, помогите
839 1855418
>>855414

18 строчка, как я понимаю ты передвигаешь указатель на начало строки в обратную сторону. Как следствие указатель у тебя улетает в неизвестном направлении. Попробуй пройтись по шагам. Но могу и ошибаться.
840 1855428
>>855414
Бред какой-то
841 1855436
>>855414
Не меняй никогда исходные указатели. Завели новый и его инкрементируй/декрементируй/складывай, да хоть корни извлекай, если сумеешь.
Исходный и удалишь потом и увидишь заодно, что та копия, которую ты гонял, не равна исходной.

Либо ты при заполнении массива за границу уполз.
842 1855447
Аноны, подскажите гуманитарию. Хотела установить игру Алладин. Старенькая аркада, с запуском через dos. Установила dosbox и игру. Запускается, но без звука. Нашла и открыла файл с настройками. Требует какой-то irq звуковой карты. Где это все найти и как сделать? Если с этим вопросом не в этот раздел, то в какой? Спасибо.
843 1855448
>>855414

> for (;s++; str_ptr++ = *s);


Я тебе сейчас по рукам дам, хуесос
844 1855449
>>855447
Это С++ тред.
845 1855453
>>855414
>>855448

> Do not use any standard library functions. Do not use subscripting;


use the dereference operator * instead.
И тому, кто таск дал, тоже по рукам дам. Долбоебы, блядь. И поэтом это в С++ тред приходит. Пиздец.
846 1855458
>>855418
>>855436
Будем смотреть, спс.
>>855428
Согласен, я совсем запутался.
>>855448
Я просто экспериментирую, спокойно. Бтв что не так?
>>855453
Это Бьярн.
847 1855459
>>855414
ptr_returned_from_new: 0x556615aece70
ptr_passed_to_delete: 0x556615aece6f

На байт переехал
848 1855497
>>855447
В личку, с фото сисек.
https://www.dosbox.com/wiki/GAMES:Aladdin
849 1855511
>>855414
Зачем тебе освобождать память по адресу, который ты возвращаешь?
850 1855544
>>855453
Переписал короче с strcpy: https://ideone.com/nULSR1
Вроде даже работает
851 1855559
>>855544

>sizeof(char)

852 1855563
>>855544
Не слушай дебила>>855559, всё правильно, так лучше читается.
853 1855816
Ой всё короче, наигрался. Отписавшимся спс.
854 1855893
>>855447
Ищи dosbox-0.74-2.conf или как-то так.
Там в разделе [sblaster] указан этот irq, dma и порт (220), это все параметры.
855 1855993
>>855816
В условии просят не использовать standard library functions.
tumblrnd5ievJFgA1thk6vpo11280.gif1,7 Мб, 900x506
856 1856179
Допустим у меня есть такие классы:
Tile — клетка на карте;
Chunk — двумерный массив тайлов;
Map — двумерный массив чанков;
WorldMap — содержит несколько объектов Map, например, общую карту и карты данжей/энкаунтеров/личного дома игрока и т.п.
Так вот. Собираюсь объявить их вложенными друг в друга, т.е. Tile в Chunk, Chunk в Map и т.д. Всё правильно делаю?
Или лучше объявить их вообще без вложений, но в анонимном неймспейсе, чтобы наружу не торчали?
857 1856207
>>855816
подскажите шрифт, кому не лень
заранее спасибо
858 1856227
>>855993
Да это я уже делал. У меня затуп был по указателям и утечке.
>>856207
JetBrains Mono
859 1856249
>>856179
Заебёшься с ns1::class1::cyka::blyat::name = ns2::ty::pidor::generate()
860 1856256
>>856179
Ты не ООП
861 1856270
>>856249
Я надеюсь, что они будут использоваться только внутри соответствующего внешнего класса. Разве что Tile можно вытащить наружу. Хотя, конечно, такое возможно.

>>856256
А как ООП?
862 1857081
Объясните кому не лень и парой слов - при каких условиях стоит оборачивать код в отдельные неймспейсы а когда можно обойтись десятком отдельных файлов с классами (и стоит ли вообще)?
863 1857168
>>832029
А в чём проблема просто практиковать то, что изучил за прошедший урок, дроч и ебля нудная, но ты и не на питон решил залезть. А вообще, всякие хакерваны и иже с ними, если лень ставить самому себе адекватные задачи.
864 1857195
>>831783
Чекни C++ Primer 5/6 издание, они вроде как раз об этом.
И еще Карьера программиста, там тоже задачки с ответами.
865 1857199
>>857081

> при каких условиях стоит оборачивать код в отдельные неймспейсы


При конструкциях всяких шаблонов. Можешь поглядеть какие-нибудь либы и ты увидишь, что там основная реализация находится в detail. Туда погромист ходить не должен и юзать функции оттуда тоже не надо.
А так вообще для структуризации кода: вот функции математические, вот работа со строками какая-нибудь и тд
866 1857311
>>857081
класс может предоставлять минимальный интерфейс, а часть функционала может быть вынесена в функции-помощьники, а объединены они могут быть в единую логическую единицу неймспейсом
867 1857317
>>831651 (OP)
Господа, а что можно писать на плюсах? Нет-нет, все мы знаем, что то угодно. Вот конкретно. Где работать, что делать. Желательно побольше конкретики. Слышал про игры. Хорошо, а где, а как, если не sfml. Что ещё можно? А о про питон также писали что можно всё, а в итоге один бэкэнд по вакансиям
868 1857330
>>857317

>Господа


так и представил как ты сидя в белоснежной рубашке и галстуке-бабочке (но в обтруханых трусах за проперженным стулом) отстукиваешь этот мессидж
"господа, где бы мне поднять бабла"
водишь жалом
ну ничего скоро ты поймешь всю глубину кроличьей ямы

с++ эзотерический язык программирования и работы на нем в 20к нет и не будет больше
869 1857333
>>857317
Открываешь вакансии — смотришь.

Альтернативный вариант: берёшь проект — пилишь.
870 1857351
>>857330
Перетолстил.
871 1857403
>>857351
Всмсл ? Вообще-то так и есть, и в 2020 году уже всем известно, что теперь на рынке эзотерического программирования нечего делать, если это не программирование на картах таро. Читай Scratch
872 1857491
>>857330
Всегда поражало, к каким выводам могут прийти люди, никоим образом не связанные с C++.
Признайся, ты же его в последний раз использовал на первом курсе?

мимо 2к/нс крестовик
873 1857498
>>857403

>Scratch


>не Лого


Ду ю ивин вижуал программинг?
video.mp41,3 Мб, mp4,
1280x544, 0:09
874 1857503
875 1857577
>>856179
Все отдельно кроме чанк, т.к. чанк это не игровая сущность, а деталь реализации карты, и должна быть на другом уровне абстракции, т.е. вообще не видна при написании игровой логики.
876 1857797
А нужны ли вообще структуры если есть классы? Если да, то когда что применять?
877 1857801
>>857797
Можно складывать данные без логики и не писать public.
878 1857873
>>857797
Мне всегда представляется, что класс это что-то большое с капитальной работой и логикой.
А структура это что-то небольшое, в ней 3-4 переменных которые могут являться какими-то указателями или индексами на что-то другое.
879 1857912
880 1857918
>>857797
Структура это просто способ синтаксически показать что там независимые друг от друга данные, которые ты можешь задавать без каких либо ограничений.
881 1857976
>>857491
несколько лет поработал на с++, однако
882 1857985
>>857797
неверное представление
в с++ структура - это не более чем класс с чутка измененной семантикой, а именно с тем что по умолчанию данные в нем имеют модификатор доступа public
забавно, что семантика была изменена в угоду синтаксическому удобству
ну а применение, да - POD
883 1858229
>>857976
Если ты несколько лет проработал на плюсах за 20к то у меня для тебя плохие новости.
884 1858256
>>835909
Блять, да куда вы лезете, долбоебы? Нахуй тебе visual studio блять? Тебе чтоб вкатываться хватит компилятора в консоли + sublime text. Visual studio вкатывальщику только лишний геморрой добавит.
885 1858261
>>858256
Двачую. Дебилам которым всё изкаропки подавай в крестах делать нечего.
886 1858274
>>858256
>>858261
Идите нахуй, вместо со своими пердолингом и командной строкой. Никто в проде такой хуйней не занимается, только дауны, которые почему-то думают, что это по хакерски.

Как раз - вижуал студия + вцпкг + решарпер, и ничего тебя от кода не отвлекает. Просто пишешь и все.
887 1858277
>>858274
Неосилятора рвёт
888 1858279
>>858277

> Неосилятора рвёт


Найс у тебя детектор, пердольная манюня. Я всего-то сениор уже больше 4х лет.
889 1858282
>>858274
Все профи с+= на линуксе, какая еще студия ебин
890 1858283
>>858279
Ну если сейчас действительно такие синьоры пошли то я спокоен в вопросах конкуренции.
891 1858285
>>858282
Угу, Микрософт, Нвидия, Яндекс - все сидят на вижуал студии из известного мне. Яндекс деплоится на линукс, но разработка вся в вижуалстудии. Говно из жопы, а не профессионалы, что с них взять.

>>858283
Я тоже спокоен в вопросах конкуренции, пока есть ебланы с консолькой и пердолькой.
892 1858289
>>858285

>Микрософт, Нвидия, Яндекс


Намомни-ка, в какой компании из этого списка ты работал, а, синьор-помидор без консольки-пердольки?
893 1858291
>>858289
Какая разница, где я работал? Я на своей работе так же использую студию, 1 кнопка - сборка и деплой. 1 команда в CI - сборка и деплой. Без каких-либо скриптиков и прочего васянства.
894 1858292
>>858291
Я понял, значит толстота. Но несмотря на то, что ты очередной даун коих большинство на этой планетке дам совет - чем тролить на сабж параше почитай образовательных книг. Тогда быть может и воплотишь часть своих желаний в жизнь.
895 1858295
>>858292
А сказать то что-то по делу можешь, советчик хуев? Поверь, я то знаю о чем говорю.
896 1858298
>>858295
Конечно могу, сможешь ли ты правильный вопрос задать. Я же именно ради маргиналов вроде тебя магистра получал. Сейчас буду расписывать вниманиебляди на двачах основы выпуска проекта в релиз.
897 1858300
>>858298
Ну то есть ничего, кроме как попонтоваться бумажкой, которой можно сраку вытереть. Достойно.
Стикер512x512
898 1858304
>>858291

>без васянства


>мокрописька от M$ которая даже не работает если не залогиниться под именем фамилией

899 1858312
>>858300
Как оригинально. Ты всего лишь десятитысячный синьор без высшего которого я повстречал.
900 1858313
>>858291
Расскажи, анон, как происходит "деплой" и что делать, если он должен происходит как-то иначе.
901 1858314
>>858312
щас бы на полном серьезе считать, что проперженная вышка из любых говновузов что-то дает. Ну окей, кроме НГУ и еще 2.5 вузиков.
902 1858315
>>858314
НГУ == МГУ
903 1858316
>>858313
https://docs.microsoft.com/en-us/windows-hardware/drivers/develop/deploying-a-driver-to-a-test-computer

На 1 кнопочку нажал, все автоматом собралось и пролилось туда, куда тебе нужно. Если нужно что-то иначе - там менюшечки есть, где можно кастомизировать все, что нужно. Но в моих юзкейсах достаточно было стандартной конфигурации. То самое ИЗКАРОПКИ
904 1858326
>>858313
Очевидно придется идти к пердоликам, умолять их написать скрипт для тебя.
Такие вот "програмизды" в 2к20.
905 1858378
Сижу и не понимаю, как из файла удалить одну строчку не помещая при этом весь файл в программу?
906 1858385
>>858378
Так или иначе придётся все строки после удаленной переписать.
907 1858390
>>858378
Читай файл по строчкам.
Если не знаешь даже такого - читай по символам, собирай в строчки сам.
908 1858391
>>858390

>Читай файл по строчкам


Ну и? Как удалить-то строчку не помещай всё в новый файл? Неужели никак нельзя удалять символы прям из файла?
909 1858396
>>858391
Ну, ты можешь читать и писать в тот же файл, вроде бы открыв его как "rw" и гоняя взад-вперед Seek.
910 1858403
>>858378
mmap\MapViewOfFile
911 1858411
>>858403
Да я уже письмо написал, что они ахуели и можно сделать всё легче. Буду сидеть жать. Надеюсь не пригодится и не придётся в этом ковыряться
1494646872397.jpg8 Кб, 308x164
912 1858439
913 1858450
>>858411
Это все очень просто. Может быть ты просто не туда работать устроился?
1517325761001-копия.jpg58 Кб, 750x750
914 1858469
Такая история: использую CLion. Компилирую, запускаю прогу, всё работает. Запускаю её же под отладчиком с теми же аргументами: сегфолт. При этом, если посмотреть по шагам, то происходит следующее: через std::ifstream открывается файл, из него считываются данные, всё нормально, вызывается inFile.close(), но не вызывается. Вместо inFIle.close() вызывается метод getF(0) из моего класса Key. При этом это не статический метод, и до этого в программе ни одного объекта класса Key не создается. Соответственно, внутри происходит обращение к элементу несуществующего вектора и сегфолт. Запускал этот же бинарник через gdb, всё отработало нормально.
915 1858481
>>858378
Узнаю своё тестовое задание. Как контора называется? первую и последнюю букву давай
916 1858492
>>858378
Загрузи в облако каждую строку в отдельном файле с именем строка№.txt. Потом читай все файлы назад, кроме одного, и дописывай в исходный.
917 1858514
>>858481
Да пошёл ты нахуй
918 1858526
>>858469
Ищи в своем коде UB. Оно может вызывать другие функции. Либо порчу стека.
919 1858528
>>858492

> в облако


Лучше сразу в libastral
920 1858538
>>858481
Блин, где вы работаете? Эта хуйня для школьников, а не задание. Еще говорят что в C++ высокий порог вхождения
921 1858539
>>858378
Весь файл кроме строки для удаления начать писать в другой. Потом оригинал удалить, новый файл переименовать
922 1858542
>>858539
А потом удивляются, почему при апдейте игрушки размером 30Гб не хватает жесткого диска на 50Гб.
15853621377710.webm7,1 Мб, webm,
1280x720, 0:26
923 1858558
>>858439
Эти беды мне помогают. Один прогер изобрёл не повторяющийся лабиринт в игре из 90-х под ЛСД, так до сих пор понять не могут как работает код

>>858481
A S S we can

>>858492
Сколько лет вы работаете в костылистроении?

>>858539
НЕЛЬЗЯ в другой файл. В итоге сделал так, что при чтении строки |pidori| каретка переходила на новую строчку. Составил два списка с полными строчками и с пропущенными.
924 1858612
Как c++ корень вычисляет?
925 1858643
>>858612
Инструкции процессора
926 1858683
>>858612
Как угодно, это не регулируется языком.
927 1858733
Сижу читаю Бьярна. Отвлёкся и подумал почему бы не сделать либу-обертку для динамической памяти чтобы хотя бы минимизировать количество ошибок. Думаю, мечтаю и тут новая глава и... Смарт принтеры. Ну обидно чё. Суть вопроса вот в чём? Какова вероятность того что проект который я загадаю ну или хотя бы его значимая часть уже реализованы до меня но мб не в опенсорсе и о нём мало кто знает?
928 1858736
>>858733

>принтеры


Поинтеры аka pointers
929 1858740
930 1858752
>>858740
Ок, а что например в сфере каких-нибудь нейронок? Там же уникальность явно побольше? И что вообще учить/практиковать чтобы уметь и быть востребованным именно в оригинальный контент?
931 1858756
>>858752
Один из главных скиллов программиста - не изобретать велосипеды как раз, а максимально переиспользовать существующие наработки
932 1858758
>>858756
Ок. Какие-нибудь советы как искать эти наработки помимо очевидного гугления и дрочинга гита?
934 1858802
>>858782
Огонь, спс.
935 1858968
>>858538
Ты даже представить не можешь, сколько человек не может написать хоть какое-то решение, пиздец просто.

Спасибо ушлым долбоёбам, которые впаривают быдлу говнокурсы
936 1859032
>>858968
Но ведь для плюсов не достаточно тупо посмотреть курсов, это же не веб.
image.png10 Кб, 793x367
937 1859083
Я глупенький. Как сделать вывод точнее?
938 1859086
>>859083
<iomanip>
std::setprecixion(N)
939 1859116
>>858752
Нейронки по большей части "переизобретают" уже открытое в 1950-х, просто тогда вычислительных мощностей не было.
940 1859128
>>858229

>за 20к


25 зарплата была, а однажды дали премию 3 тыщи рублей
вот
941 1859208
Как вернуть каретку в самое начало файла, без закрытия и открытия файла заново?
942 1859216
>>859208
seekg если ifstream, аналогичные OS API функции а-ля SetFilePointer, если не ifstream
943 1859259
>>859208
rewind(FILE ⛧);
944 1859308
Стоит ли стучаться на вакансию разраба с++ с указанным опытом работы 3-6 лет, если есть опыт около 3-х лет но на других языках? Брат орёт (120к+) - напизди им, шо под нда половина. А я вот честным долбаёбом родился. И по этому уже пол года работу на джуна ищу. Ну не долбаёб ли в самом деле?
945 1859319
>>859308
Ты с очень большой вероятностью нихуя собес не пройдешь
946 1859321
>>859319
Да знаю, но там тестовое предлагают пройти в начале. Хотя бы потренируюсь.
947 1859322
>>859321
я не вижу ничего плохого в тренировке
948 1859329
>>859308
И зачем тебе переходить в низкооплачиваемую область с других языков?
949 1859331
>>859329
Ну там был недоязык и галера. А к си сплюснотуму какие-то тёплые чувства, из-за возможности байтоёбствовать и писать высокоуровневые вещи. Что-то мне в нём нравится.
950 1859345
Я правильно понимаю что в современном стандарте стоит инициализировать всё uniform`ом и не париться?
951 1859368
>>859345
Нет, есть нюансы.
952 1859373
>>859368
Например?
953 1859392
>>859373
vector<int> some_vector(5, 10);
Создает вектор с пятью элементами, каждое из них инициализирует значением 10.

vector<int> some_vector { 5, 10 };
Создает вектор с двумя элементами: 5 и 10.

Плюс есть разные контексты (auto type deduction, template type deduction (especially forwarding references)), когда uniform initialization object deduced as initializer_list, а это может быть не то, что нужно.
954 1859394
>>859345
Щас наоборот главные по сиплюсплюсу признали, что uniform initialization хуйня, и рекомендуют вернутся к круглым скобкам
955 1859418
Анон, расскажи, как убить тред, подскажи правильный способ.

Есть программа, которая запускает один-единственный тред, и хочет его время от времени убивать и использовать заново.

Что-то типа:

std::thread thr(f);
//stop();
thr.join();
thr = std::thread(g);

1) Завести обычный bool. Менять его значение из основного потока и проверять его значение в дочернем потоке, чтобы съебнуть.

2) То же самое, но с atomic_bool. Есть ли смысл, если поток один?

3) Условная переменная (conditional_variable) с мьютексом, wait и notify_one. Читал, что иногда у wait происходят ложные пробуждения и с этим нужно что-то делать.

4) То же самое, но добавить bool или atomic_bool для перестраховки от ложных пробуждений. Самый сложный вариант.

Есть ли какие-то книги или статьи с хорошими примерами по типу описанной задачи и с грамотным разбором, как нужно и ненужно делать?
956 1859420
>>859394
У них так всегда происходит, то же самое было с передачей параметров по ссылке и возврату, потом тоже назад отмотали, сказали лучше по значению как в 80-х.
957 1859425
>>859418
Достаточно проверять значение atomic bool
958 1859426
>>859418

>происходят ложные пробуждения и с этим нужно что-то делать.


Проверять условие. В данном случае условием будет значение atomic bool.
Только в таком простом кейсе достаточно этого самого atomic bool.
959 1859428
>>859425
>>859426
А расскажите, почему нельзя обычный bool использовать? Потому что дочерний поток может не сразу увидеть изменение обычной переменной (хотя мы же обращаемся к конкретному участку памяти), а atomic как-то синхронизируется между потоками?
960 1859441
>>859394
можно референс какой-то? первый раз слышу
961 1859461
>>859441
Не было такого потому что.
Но круглоскобковой инициализации действительно поправили пару корнер-кейсов в последнем стандарте.
962 1859466
А чем вообще {} отличаются от обычной инициализации, кроме возможности контейнеру явно задать элементы?
Например, int i{228} или MyClass j{359} имеют какое-то преимущество по сравнению с int i = 228 и MyClass j(359)?
963 1859468
>>859466
В твоём примере это одно и то же, если только MyClass не имеет отдельный конструктор, принимающий initializer_list
964 1859471
>>859466

>кроме возможности контейнеру явно задать элементы


Не путай. Фича uniform initialization (то есть конструирование через {}) в том, что ты не натыкаешься на Most Vexing Parse и в некоторых случаях не надо явно писать имя класса, чтобы его создать (более подробно см. https://softwareengineering.stackexchange.com/a/133690).

Явное задание элементов - это вызов конструктора через initializer_list. И он всё портит, потому что конструкторы с его участием самые приоритетные и конвертируют всё подряд. Почему Комитет снова выбрал самое ужасное решение? Почему нельзя было сделать uniform initialziation действительно uniform и, чтобы достать до initializer_list, сделать что-то вроде vector<int>{{1,2,3}}?
966 1859478
>>859468
>>859471
>>859477
Благодарю.
967 1859480
>>859428
Бамп, видимо, тупому вопросу.
968 1859483
>>859480
Сам гугли.
969 1859489
>>859483
Так я нуб. Уже джва года пытаюсь понять, что такое гонки, блокировки и прочая. Мне бы именно статью/учебник, в которой/ом демонстрировались бы данные проблемы и откуда у них ноги растут.
48271c9eb1d525d327807e3ef7e12410.png112 Кб, 480x480
970 1859501
>>859428

> дочерний поток


А я напоминаю, что поток - сыновний.
971 1859503
>>859501
Ты педофил?
972 1859506
>>859501
Родительский поток.
Ребёнковый поток.
973 1859517
>>859428
Есть несколько причин.
1) Оптимизации компилятора. Согласно стандарту, обычные булы не участвуют в общении между тредами. То есть если в коде у тебя нет специальных операций (обращения к атомарным переменным, захватов мьютекса и прочего), то компилятор может посчитать, что в коде типа
bool run = true;
auto t = std::thread([&run]() { run = false; });
while (run) {}
переменная run никогда не изменится. И просто дооптимизирует тебе до бесконечного цикла. Скорее всего он этого не сделает, но в теории это законно. Даже если конкретно этой оптимизации не произойдёт, компилятор (и процессор) могут переставлять операции чтения/записи относительно неатомарных переменных, что тоже может привести к печальным последствиям.

2) Собственно атомарность. Read-modify-write операции должны быть атомарными. Например, у тебя следующий код:
// Инициализация
int counter = 0;
// Тред 1
a = counter++
// Тред 2
b = counter++
counter++ - RMW операция (mov rax [counter], inc rax, mov [counter] rax). Оба треда могут одновременно загрузить x, увидеть, что он равен нулю, и оба последовательно запишут единицу. А могут и двойку. А вот операции над атомарными переменными... атомарны. Ни один тред не сможет увидеть половину операции. То есть если же counter был бы типа std::atomic<int>, то ответ был бы всегда 2, как и ожидалось.

На самом деле всё сложнее и в современных процессорах relaxed memory ordering, но по умолчанию в атомарных переменных используется самая сильная модель упорядочивания (sequential consistency), при которой не бывает никаких странностей. Поэтому если не ударяться в wait-free головного мозга, то про всякие release-acquire можно почитывать лишь на досуге, они нужны только если у тебя специфические задачи и тебе нужно выжать 100% перформанса.
974 1859525
>>859517
Хороший человек. То есть все переменные, которые делятся между потоками, должны быть обязательно atomic?
975 1859535
>>859525
Если кто-то записывает, а кто-то читает - да, либо атомарные переменные, либо использовать мьютексы.
976 1859543
Как в list из STL искать элемент с конца списка?
977 1859546
Я имею в виду тут >>859543, что мне надо иногда искать самое левое самое последнее вхождение ряда одинаковых элементов, а иногда самое первое.
978 1859548
>>859543
Использовать не list.
979 1859553
>>859543
std::find?
980 1859559
>>859535
Хорошо. А подскажешь, откуда лезут ложные пробуждения при использовании условных переменных? Один пример вроде понятен. Родительский поток шлёт оповещение многим дочерним потокам, несколько потоков могут успеть пробудиться, но захватить управление успеет только один, значит, остальные потоки словили ложное пробуждение.

Но насколько я понимаю, ложное пробуждение может произойти, даже если дочерний поток один. Вот этого я не понимаю. Если никто не слал сигнал, то почему он пробуждается?
981 1859568
Что читать после Страуструпа?
982 1859570
>>859568
Двачи.
983 1859595
>>859441
твиттеры читай ихние
984 1859634
>>859559
Это требование ещё с посиксовых pthread_cond_t пошло. Наверняка в каких-нибудь восьмидесятых был какой-то вендор, *nix система у которого имела такую багофичу. Вот и внесли в стандарт. Бывает ли на современном линуксе - хз, говорят что возможно.
985 1859637
>>859634
А, вот, погуглил и нашёл.
https://pubs.opengroup.org/onlinepubs/009604599/functions/pthread_cond_signal.html

>The effect is that more than one thread can return from its call to pthread_cond_wait() or pthread_cond_timedwait() as a result of one call to pthread_cond_signal(). This effect is called "spurious wakeup".


То есть, в плюсовых терминах, ты вызываешь notify_one, а пробуждаются сразу несколько тредов.
986 1859792
>>859637
Спасибо. Жесть какая-то.

Появился ещё странный вопрос. Если я использую условную переменную в сочетании с atomic_bool, то как правильно сделать вызов notify?

Пример работы потока:

std::unique_lock<std::mutex> lock(mtx);
cv.wait_for(lock, std::chrono::seconds(10), []{ return exit; })

Пример основного потока:
exit = true;
cv.notify_one();

1) Насколько я понимаю, это неправильно, потому что компилятор может переупорядочить команды и получится, что сперва вызывается notify, а уже потом меняется atomic. Как сделать правильно?

2) Не совсем понимаю, как работает счётчик времени в wait. Он сбрасывается после пробуждения и начинает заново отсчитываться или нет? Не получится ли, что из-за ложного пробуждения поток будет стоять 20 секунд, а не 10?

3) Может ли поток проспать пробуждение? Например, посылается сигнал notify, и, пока происходит проверка предиката, время пробуждения проходит, а сам предикат оказывается ложным. Получается wait продолжит работать, но время будет отсчитываться заново?

Короче, очень странно это всё работает. Надеюсь на ваши ответы, потому что не хочу, чтобы люди умирали.
987 1859802
>>859792

>компилятор может переупорядочить команды


Не может.
988 1859836
>>859802
Не может в принципе или конкретно в этом примере? Если в этом примере, то почему?
989 1859862
>>859836
atomic store acts like a memory barrier
990 1859877
>>859862
То есть не совсем верно.
atomic это и memory barrier и compiler barrier. В данном случае актуально второе.
991 1859897
>>859543
rbegin rend
992 1859978
Кто-нибудь вкатился в джунство на этом языке без опыта? Или это в принципе затея довольно бессмысленная?
993 1859985
>>859978
Пытаюсь сейчас вкатиться. На связь вышло несколько компаний (многие сами), хотя опыта в программировании не было в принципе. Жду результаты тестовых заданий.
994 1859987
>>859985
ДС, ДС2? Опыта не было, ты имеешь ввиду коммерческой разработки? Что ты там в резюме написал, что аж сами на тебя вышли?
995 1859993
>>859792

>Насколько я понимаю, это неправильно, потому что компилятор может переупорядочить команды и получится


Нет, как раз относительно атомиков компилятор не имеет право переставлять. С этой точки зрения всё нормально. Здесь неправильность в том, что conditional_variable заточен на работу с мьютексом, поэтому условие (собственно condition, переменная exit) должно изменяться только под мьютекстом, иначе ты сильно огребёшь.
Как работает wait в кондваре

>захватывается мьютекс


>проверяется условие


>если true, идём дальше


>если false, атомарно разлочить мьютекс и заснуть до вызова notify/таймаута


Атомарность на последнем шаге нужна, чтобы не было пропущенных notify вида "разлочили мьютекс, какой-то другой тред вызвал notify но мы его пропустили, заснули".
В твоём случае похожий кейс: ты можешь потерять notify, если произойдёт следующая последовательность событий:

>Тред 1: захватывается мьютекс


>Тред 1: проверяется условие -> exit == false


Тред 1 ВНЕЗАПНО прерывается

>Тред 2: exit=true


>Тред 2: cv.notify_one();


>Тред 1: разлочивается мьютекс и тред засыпает (уже навечно)


Так что мьютекс обязателен в обоих потоках.
tl;dr std::atomic здесь не нужен, просто используй схему из https://en.cppreference.com/w/cpp/thread/condition_variable, она железобетонна.

>Не совсем понимаю, как работает счётчик времени в wait


Нет, запоминается время t="сейчас + 10 секунд" и поток блокируется либо до notify, либо до времени t. Никаких сбросов нет даже при ложных пробуждениях. Возьми и почитай исходники wait, wait_for и остальных, там они довольно простые. Если интересно, как это внутри ОС работает, почитай про системный вызов futex.

>Не получится ли, что из-за ложного пробуждения поток будет стоять 20 секунд, а не 10?


Нет. Но нужно помнить, что поток будит планировщик ОС. А он разбудит не ровно через 10 секунд, а по крайней мере через 10 секунд. То есть поток может проснуться через 10 секунд 2 миллисекунды, 10 секунд 15 миллисекунд.

>Может ли поток проспать пробуждение


См пункт 1 в моём посту. Если всё правильно делаешь - никогда не проспит.
995 1859993
>>859792

>Насколько я понимаю, это неправильно, потому что компилятор может переупорядочить команды и получится


Нет, как раз относительно атомиков компилятор не имеет право переставлять. С этой точки зрения всё нормально. Здесь неправильность в том, что conditional_variable заточен на работу с мьютексом, поэтому условие (собственно condition, переменная exit) должно изменяться только под мьютекстом, иначе ты сильно огребёшь.
Как работает wait в кондваре

>захватывается мьютекс


>проверяется условие


>если true, идём дальше


>если false, атомарно разлочить мьютекс и заснуть до вызова notify/таймаута


Атомарность на последнем шаге нужна, чтобы не было пропущенных notify вида "разлочили мьютекс, какой-то другой тред вызвал notify но мы его пропустили, заснули".
В твоём случае похожий кейс: ты можешь потерять notify, если произойдёт следующая последовательность событий:

>Тред 1: захватывается мьютекс


>Тред 1: проверяется условие -> exit == false


Тред 1 ВНЕЗАПНО прерывается

>Тред 2: exit=true


>Тред 2: cv.notify_one();


>Тред 1: разлочивается мьютекс и тред засыпает (уже навечно)


Так что мьютекс обязателен в обоих потоках.
tl;dr std::atomic здесь не нужен, просто используй схему из https://en.cppreference.com/w/cpp/thread/condition_variable, она железобетонна.

>Не совсем понимаю, как работает счётчик времени в wait


Нет, запоминается время t="сейчас + 10 секунд" и поток блокируется либо до notify, либо до времени t. Никаких сбросов нет даже при ложных пробуждениях. Возьми и почитай исходники wait, wait_for и остальных, там они довольно простые. Если интересно, как это внутри ОС работает, почитай про системный вызов futex.

>Не получится ли, что из-за ложного пробуждения поток будет стоять 20 секунд, а не 10?


Нет. Но нужно помнить, что поток будит планировщик ОС. А он разбудит не ровно через 10 секунд, а по крайней мере через 10 секунд. То есть поток может проснуться через 10 секунд 2 миллисекунды, 10 секунд 15 миллисекунд.

>Может ли поток проспать пробуждение


См пункт 1 в моём посту. Если всё правильно делаешь - никогда не проспит.
996 1859997
>>859987

>ДС, ДС2?


Нет, но миллионник.

>Опыта не было, ты имеешь ввиду коммерческой разработки?


Ну да, выразился плохо. Опыта работы не было, а для себя программировал иногда: писал разные программы в стол, алгоритмы сложные реализовывал.

>Что ты там в резюме написал, что аж сами на тебя вышли?


В резюме у меня только образование указано и навыки. В навыках указал всё, с чем умею работать (git, c++ и прочие вещи, которые все разработчики должны знать).

Кинул резюме на hh. Потыкал вакансии привлекательные. За первую неделю на связь вышла только одна компания. Ещё одна компания мне два раза отказала, но потом предложили немного другую вакансию, неплюсовую (собес пройден, оффер уже получен). Через неделю активно начали звонить, писать, но не все из них предлагают плюсовые вакансии (есть предложения на неплохие вакансии от очень крупных компаний типа сбербанка и промышленных, завязанных на оборонку, но в таких иногда указывается про допуск к ГТ).

Проблема в другом. Предложение получить — это одно, но нужно ещё пройти собес и выполнить какое-нибудь тестовое задание, особенно если у тебя никакого опыта неуказано. Короче, жду результаты, но в любом случае оффер у меня уже есть, хотя вакансия неплюсовая, но очень денежная.
997 1860000
>>859997

>есть предложения на неплохие вакансии от очень крупных компаний


Здесь лучше говорить о приглашениях. Опять неточно выразился.
998 1860003
>>859877
>>859993
Спасибо большое за ответы.

>>859993

>>Тред 1: захватывается мьютекс


>>Тред 1: проверяется условие -> exit == false


>Тред 1 ВНЕЗАПНО прерывается


>>Тред 2: exit=true


>>Тред 2: cv.notify_one();


>>Тред 1: разлочивается мьютекс и тред засыпает (уже навечно)



Понятно и доступно, спасибо. Тред заснёт навечно, если использовать обычный wait, а если wait_for он же всё равно должен по таймеру проснуться? И ещё я так понял, после выхода из wait мьютекс остаётся заблокированным?

>std::atomic здесь не нужен, просто используй схему


> {


> std::lock_guard<std::mutex> lk(m);


> ready = true;


> std::cout << "main() signals data ready for processing\n";


> }


> cv.notify_one();



Здесь барьером для компилятора служит notify или вложенный контекст {} с мьютексом?

Остальное вроде понял.

Нашёл годную книгу, как я понимаю, от одного из тех, кто как раз разрабатывал boost::thread, а потом std::thread. Очень классно и красиво.

Энтони Уильямс, «C++. Практика многопоточного программирования».
998 1860003
>>859877
>>859993
Спасибо большое за ответы.

>>859993

>>Тред 1: захватывается мьютекс


>>Тред 1: проверяется условие -> exit == false


>Тред 1 ВНЕЗАПНО прерывается


>>Тред 2: exit=true


>>Тред 2: cv.notify_one();


>>Тред 1: разлочивается мьютекс и тред засыпает (уже навечно)



Понятно и доступно, спасибо. Тред заснёт навечно, если использовать обычный wait, а если wait_for он же всё равно должен по таймеру проснуться? И ещё я так понял, после выхода из wait мьютекс остаётся заблокированным?

>std::atomic здесь не нужен, просто используй схему


> {


> std::lock_guard<std::mutex> lk(m);


> ready = true;


> std::cout << "main() signals data ready for processing\n";


> }


> cv.notify_one();



Здесь барьером для компилятора служит notify или вложенный контекст {} с мьютексом?

Остальное вроде понял.

Нашёл годную книгу, как я понимаю, от одного из тех, кто как раз разрабатывал boost::thread, а потом std::thread. Очень классно и красиво.

Энтони Уильямс, «C++. Практика многопоточного программирования».
999 1860010
>>854724
Шаблонные функции и декларируются, и имплементируются в хедер файле.
1000 1860014
>>860003

>а если wait_for он же всё равно должен по таймеру проснуться


Да. Но полагаться на это чтобы писать иногда не работающую логику всё равно неправильно, сам понимаешь.

>И ещё я так понял, после выхода из wait мьютекс остаётся заблокированным?


Да. Каждое просыпание внутри wait тред снова захватывает мьютекс. Предикат проверяется под мьютексом, и после выхода мьютекс останется у треда.

>Здесь барьером для компилятора служит notify или вложенный контекст {} с мьютексом?


Не очень понял вопроса, но постараюсь объяснить. Захват/разблокировка мьютекса жёстко накладывают ограничения и для компилятора, и для процессора. Когда следующий тред захватит мьютекс, он должен будет увидеть результат всех операций, совершённых внутри критической секции. То есть если кондвар проснулся вследствие notify_one, он обязан будет увидеть то ready=true.

>Энтони Уильямс, «C++. Практика многопоточного программирования».


Говорят ещё у Таненбаума норм про основы синхронизации тредов. По крайней мере нам давно в универе с него читали лекции. Хотя там было больше про сами алгоритмы и примитивы, без всяких моделей памяти и lock-free и прочего.
1001 1860017
>>859792

>потому что не хочу, чтобы люди умирали.


Не пользуйся тредами. Сделай один луп, в начале которого проверяешь все нужное руками сам. И потом по свитчам часть работы. Сорт оф корутины.
1002 1860024
>>860017
Господин эмбеддедщик знает толк.
1003 1860047
>>860014

>критической секции


Что это? Много раз уже встречал это выражение, но так и не понял.

>Говорят ещё у Таненбаума норм про основы синхронизации тредов.


Тоже гляну, спасибо.

>>860017
Сомневаюсь, что в моём случае такой подход приемлем, но можно подумать, как это организовать. Проблема в том, что каждый тред должен засыпать на разный промежуток времени. С одним лупом пришлось бы выбирать, с какой периодичностью мы теребим условия: 1 мс, 10 мс или 100 мс? Мне кажется, это не очень удобно.
1004 1860055
>>860047

>проблема в том, что


Ещё забыл добавить, что потоков может быть несколько десятков. Думаю, с такими условиями одним лупом не отделаться.
1005 1860061
>>860055
А лупом и пупом?
1006 1860078
>>860061
Уже ближе. Лупы крутятся — пупы мутятся. Пожалуй, возьму на вооружение такую методологию разработки.
1007 1860111
>>860055

>потоков может быть несколько десятков.


А ядер у тебя столько есть? Если нет, то не стоит заикаться о заботе о чьих-то жизнях.
1008 1860122
>>860111

>А ядер у тебя столько есть?


Около 400 000.
1009 1860129
>>860047

>Что это? Много раз уже встречал это выражение, но так и не понял.


Это та область кода, которая требует эксклюзивного доступа только одного треда. По сути всё, что между mutex::lock() и mutex::unlock(). В винде мьютекс, работающий в пределах одного процесса, даже называется CRITICAL_SECTION.
1010 1860136
>>860129
Понял, спасибо. То есть критический контекст — это всегда мьютексы? Например, атомарные или условные переменные сами по себе не создают критической секции при использовании? Или всё-таки создают? Условная переменная, например, создаёт при проверке условия в wait, но не создаёт при использовании notify. Атомарные переменные, наверно, тоже создают, когда к ним обращаются или пишут в них. Правильно? Наверно, атомарные переменные через мьютексы и работают?
1011 1860165
>>860136

>это всегда мьютексы


Мьютексы, спинлоки, семафоры, мониторы, алгоритм Лампорта - что угодно, что позволяет только одному треду находиться в определённой секции кода.
https://en.wikipedia.org/wiki/Critical_section

>атомарные или условные переменные сами по себе не создают критической секции при использовании


Нет, не создают. В conditional_variable это происходит за счёт мьютекса, который ты ему передаёшь.

>Атомарные переменные, наверно, тоже создают, когда к ним обращаются или пишут в них


И да и нет. Несколько тредов одновременно могут выполнять одну и ту же операцию над атомарной переменной. Но по сути результат получается, как будто каждый тред по очереди выполнял операцию.

>атомарные переменные через мьютексы и работают


Нет, это примитивы процессора. Хотя в теории такого же эффекта можно достичь, обернув все операции над атомарной переменной в мьютекс.
1012 1860170
Хуйня какая-то, ничего не гуглится. В оконном приложении на Винде переключил ввод-вывод на родительскую консоль, сру в консоль, но он вместо этого пишет текст после путь> и надо потом жать энтер, чтоб перейти дальше ко вводу в консоль. Как мне писать нормально в консоль и возвращать управление родительскому окну консольки, из которого я запускаю свою мокропиську? Переключать подсистему на консольную не хочу, сломается всё нахуй.
1013 1860173
>>860165
Спасибо тебе, анон. Теперь гораздо понятнее, с чем я имею дело. Пойду читать про многопоточное проектирование.

Хотя один вопрос ещё имеется. Рассчитана ли стандартная либа на использование в многопотоке? Например, методы у контейнеров, объекты (статические?) по типу std::cin/cout или алгоритмы из <algorithm>?
1014 1860178
>>860170
Ничего не понял. Ты своё приложение запускаешь из консоли или тупо отправляешь текст на консоль?
1015 1860184
>>860178

> Ты своё приложение запускаешь из консоли


Это. Но т.к. у меня оконная подсистема, надо вручную переключать вывод в консоль. Я переключил как нагуглил, но он криво пишет в консоль. Как сделать чтоб было как в обычном консольном приложении?
https://stackoverflow.com/questions/191842/how-do-i-get-console-output-in-c-with-a-windows-program
Перепробовал отсюда всё и ничего не работает нормально.
1016 1860193
>>860173

>Рассчитана ли стандартная либа на использование в многопотоке?


Нет. И это сделано специально.
1017 1860315
Чому h=0; z = ++h + h++, z будет 3 а не 2?
1018 1860317
>>860315
В моем компиляторе будет 42.
image.png9 Кб, 280x327
1019 1860339
>>860317
Юморить будешь в бэ, отвечай на вопрос!
1020 1860341
>>860339
Я и ответил. Это неопределенное поведение. Ответ может быть любым, например форматирование диска Цэ. Откуда вы лезете?
1021 1860353
Ну так бы и сказал, что неопределнное, теперь знаю что гуглить.
1022 1860425
Meson + Ninja vs CMake
Какое из двух говен менее воняет?
1023 1860427

> C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2390,5): error MSB3774: Could not find SDK "Microsoft.VCLibs, Version=14.0".


Как это говно чинить? Пробовал уже переустанавливать студию - не помогает. Что он хочет? Установлено всё что можно, но он просит зачем-то 14.0. Это вообще что такое, блять? В параметрах проекта указан вообще другой SDK.
1024 1860428
>>860427
Какой?
1025 1860430
>>860428
Любой пробовал из кучи доступных, даже 14.00 от VS 2015. Он всегда просит эту хуйню 14.0.
1026 1860462
>>860427
Установить gcc, очевидно.
1027 1860488
>>858274
>>858285
Оправдывайся, ведь ты пукал что в студии нет пердолинга

>>860427
image.png41 Кб, 1024x194
Winsock2 Аноним4826239 1028 1860492
Есть одна игра, мне нужно сделать так чтобы я имел возможность отклонять неугодные мне данные, как входящие так и исходящие. Пытался сделать это при помощи return 0 в hook'нутой функции WSASend, но оно продолжало спамить этими данными до тех пор пока они не отправятся. Пробовал шаманить с lpCompletionRoutine но ничего не получилось. С WSARecv вообще дичь, при return 0 разрывает соединение с игрой. Как я понял, самым хорошим и разумным решением будет поднятие такого-же сервера (или как это называется я не знаю) в том же процессе и переадресация данных на него, а он уже будет фильтровать и отправлять только то что угодно мне. Только проблема в том что я не знаю как это делается. Пожалуйста, помогите.
image.png45 Кб, 787x551
1029 1860496
>>860427
Кинь скриншот пропертей проекта
1030 1860497
Какой сааааамый минималистичный плюсовой компилятор? И сколько он весит?
изображение.png22 Кб, 872x911
1031 1860498
>>860315
Возможно потому, что при ++h она становиться единицей. Затем h++ становиться двойкой, и после происходит сложение.
1033 1860505
>>860488
Лучше бы помог, я всё ещё пердолюсь. Всё началось после установки превью-версии студии, естественно удалил нахуй сразу её. Даже пустой проект не собирается и требует 14.0. Сейчас второй раз начисто всё удалил, почистил все папки вилкой и поставил заново студию - нихуя не помогло. Если делаю ретаргет, то он пишет типа после этого нельзя будет собрать проект в 2015 студии, для сборки под ней выберите в параметрах таргет 14.0. Но у меня нет 2015 студии, а установка 14.0 ничего не даёт. Какого хуя, блять? Алло, индусы!
>>860496
Чистый тоже не работает. Вообще нихуя не работает.

А ещё теперь постоянно такое ещё пишет:

> error : Designtime build failed for project 'C:\Users\Admin\source\repos\App10\App10\App10.vcxproj' configuration 'Debug|Win32'. IntelliSense might be unavailable.


> Set environment variable TRACEDESIGNTIME = true and restart Visual Studio to investigate.


Он мне тут предлагает заниматься расследованием почему эта хуита не работает из коробки и не собирает пустой проект!
1034 1860512
>>860315

>++h + h++


UB, баян же
1035 1861187
>>859568
Джосатиса, Мейерса
1036 1864149
Как сделать pascal -> c++? Похуй на читаемость. Главное промто перевести с одного на другой язык
1037 1883969
За сколько отсоритруется вектор размером 3000^2? Если это просто инты. А если это вектор объектов?
1038 1885236
Поцоны, а вы в принципе зачем плюсы учите, если сейчас платят где угодно больше при меньшем затрате усилий?
Разве что в геймдев идти, который в России в парочке компаний и в десятке инди студий с копеечной зп?
1039 1887309
>>885236
Не в деньгах счастье

есть и те кому много платят, тут в треде когда то был кун с нвидии, получают там ахуеть
1040 1888834
>>887309
я все еще во всех С++ тредах, просто не подписываюсь без нужды
изображение2021-01-16113317.png14 Кб, 763x115
Проммирование уровня де/b/ила (меня) 1041 1911492
помоги нахуй плез я не ебу в это с++ честно есть код и задание .
помогите бля объяснить как это хуйня выполняется в цикле
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
int main()
{
float eps = 0.001, s1, s2, p;
int k = 0;
s1 = 1;
s2 = 0;
p = s1;
while (fabs(4 s2 - 4 s1) > eps)
{
k++;
s2 = s1;
s1 = (pow(-1, k) / (2 k + 1));
p += s1;
}
cout << "PI=" << round((4
p)*1000) / 1000 << endl;
return 0;
}
Тред утонул или удален.
Это копия, сохраненная 30 марта 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски