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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
2 1796619
Есть ли какой-то аналог команды where или which в c++? Чтобы вывести полный доступ к файлу
3 1796625
>>796619
Нужно сильно больше контекста.
4 1796631
>>796625
В переменной среды PATH добавлена папка. Из командной строки я могу их любой папки написав название файла запустить любую программу лежащую в ней. Хочу тоже самое в коде, чтобы он мог найти файл лежащий в этой папке
5 1796638
>>796631

>папка. Из командной строки я могу


ну так забери PATH из энв варов и вперед проверять. Операционка делает именно так, С++ тут не причем.
6 1796653
>>796638
Не слишком костыльно? Разве нет для этого специальной библиотеки или функции?
7 1796675
>>796653
в стандартной библиотеке о таких не знаю.
8 1796684
>>796675
в ШИНАПИ наверняка есть
9 1796728
Аноны через 2 года кончается уник. Сидел в основном на плюсах хуйнёй страдал. Пара проектиков есть. Сделал торрент клиент криововатый на qt форм нашлепав и ещё говна поменьше. Достаточно для стажировки/джуновки? Или ещё нахуярить что-нибудь? Ибо я в основном на всяких спортивных программированиях хуярюсь
10 1796731
>>796728
Хуярь конечно, почему бы и нет.

мимокрокодилнепрограммист
11 1796738
>>1796190 →

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


Например как ты спарсить предлагаешь? 212022080115вав45203072220
На, вот строка тебе, парси хули, что последние джва символа это год
12 1796754
>>1795751 →

>Александреску


>>1795752 →

>Саттер


Еще Мейерс красаучик.

Труп страуса какой-то левый в этой компании, похоже, больше как популяризатор языка. Его базар не производит впечатление работы над реальными проектами.
И книги галимые по сравнению с Пратой.
13 1796755
>>796754
Ну, буду перекатывать в следующий раз - запостю Мейерса, акей
14 1796828
>>796738
юзани регулярку и не еби себе мозги, пчел
Стикер127 Кб, 512x512
15 1796900
>>796605 (OP)
Посоны, как сконпелировать это: https://github.com/satorigold/SatoriGold
чтоб оно на винде не крошилось?
А то крошится, падла, crush, crush, crush, crush...

ПАМАГИТИ, кароч. АААААААААААА!!!!
16 1796902
Какую билд систему вы используете для C++?

На плюсах не писал уже 6 лет, как закончил универ. За свою карьеру перепробовал кучу экосистем с различного рода менеджерами пакетов: go get, mvn, sbt, pip, nvm — всё вот это дерьмо.

Есть ли что-то подобное для крестов, чтобы можно было просто объявить нужную зависимость, и чтобы билд система сама стянула всё, что нужно?
17 1796908
>>796902
Сейчас conan популярен, но это чисто пакетный менеджер. Из билд систем с ним хорошо cmake интегрируется.
18 1796909
>>796902
Нет, ничего нормального нет.
Индустрия как сидела на cmake, так и сидит.
Можешь покопать в сторону meson.

Из пакетных менеджеров vcpkg вроде относительно неплох.

Но сильно вкусно в любом случае не будет, билды/пакеты — не сильная сторона плюсов.
19 1796914
Добрый вечер, пользуется ли кто clion'ом под никсами? Глянул на рутрекере, а там только виндовые сборки, сижу вот думаю где его взять
20 1796927
>>796914
https://download.jetbrains.com/cpp/CLion-2020.1.3.tar.gz это последняя версия для которой работает кряк
21 1796935
>>796914
а как же швабодка петухи коококо? Винду крякнуть скачать смс без регистрации мокрые писечки?

Будь последовательным - ебись с вимом
22 1796977
>>796914
Поставь wine, да и запускай с-под него. А что?
23 1797042
>>796927
Ага, понял

>>796935
Дядь, что за наезд? Зачем ты мне предъявляешь за свободу? Где в моем посте хоть что-то про винду?

У меня есть чужой плюсовый проект с достаточно большим количеством LOC. Мне нужно этот проект отрефачить а затем накидать туда нового функционала. При этом cpp - не мой основной язык. По предыдущему опыту я знаю, что при работе с подобными проектами CodeBlocks (для меня) удобнее консоли, но сейчас заметил, что IDE от Intellij значительно удобнее CB.

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

>>796977
Ай, блэт. И правда. Совсем забыл про вайн. Спасиб тебе.
24 1797211
>>797042

>Дядь, что за наезд?


Я таблетки забыл выпить, прости
25 1797330
Блять сука как первую работу найти без опыта заебало уже, на хх даже отказ не ставят просто смотрят и все сука. Уже скоро вуз закончу, а опыта так и нет аааа
9436324936321907219491369486342n.jpg30 Кб, 604x453
26 1797335
Хлопцы, подскажите, в какой IDE когда нажимаешь F4 для переключения между хедером/сорсом предлагает его создать, если такого нет.

Я точно помню что такая фича была где-то, просто сейчас не смог найти сходу.
27 1797549
Эта божественная вайпалка ещё и на c++ написана
28 1797630
Сап плюсачи. А всплывала ли где-нибудь проблема с переполнением стека в деструкторе мапы при использовании MSVC-компилятора?

Вкратце суть такова: если пилить оч.длинную конструкцию типа map<char, map<char, map<...>>> и заполнить её, то при удалении вылезает stackoverflow/segfault/еще какая дрянь.

Чтобы не быть голословным - вот очень простой код (25 строк, без выебонов): https://rextester.com/NBCLT14094
Если скопипастить его для clang/gcc, то всё отрабатывает без запинки, а вот с vc++ беда.

Проверил на своей VS19 (16.7.2) - то же самое. Есть ли идеи как с этим бороться?
29 1797633
>>797630
Когда-то встречался с подобным, там мапа заполнялась макросом, который разворачивался в тысячу вызовов insert.

Решил заменой на try_emplace, хотя хз чем это тебе поможет
30 1797647
>>797630
Если совсем худо будет, можешь увеличить размер стека. Видел такое в эмуляторе ps3
31 1797842
>>797630
Наследоваться от std-контейнеров это уже занятие для рисковых пацанов. А уж если сверху полирнуть CRTP...
32 1797844
>>797630
У тебя там деструктор не виртуальный.
33 1797848
>>797335
По f4 переключается у кют креатора, но такой фичи не помню, мож плагин? Или версия новее моей, я все ещё в 5.12.
Эсс.png17 Кб, 775x289
34 1797930
Почему с одномерным массивом прокатывает, А с двухмерным не хочет, как решить?
35 1797935
>>797930
Ты не можешь так принимать двумерные массивы в функцию.

Пиши : int ⚹⚹arr
36 1797937
>>797935
Понял
37 1797949
>>797930

> массивом


Пиздуй в си-тред. Тут мужики для такого либо std::array используют, либо std::vector
38 1797959
Как описать тип ссылки на массив фиксированного размера?
using arr_t = int[3];
arr_t& foo() {...}
Так вот как описать этот тип без using? int[3]& foo() выдает ошибку.
39 1797966
>>797959
Определи структуру с массивом внутри.
40 1797968
>>797966
Да это понятно, мне просто интересно во что раскрывается arr_t&.
41 1797996
Зачем учить C когда есть C++?
42 1797997
Зачем учить C когда есть C++?
43 1798004
>>797968

>Да это понятно, мне просто интересно во что раскрывается arr_t&.


https://cppinsights.io/lnk?code=YXV0byBmb28oKSAtPiBpbnQoJilbM107&insightsOptions=cpp17&std=cpp17&rev=1.0
44 1798007
>>797996
незачем
45 1798014
>>798004
Бля почему через auto -> можно а просто написать int(&)[3] foo() нельзя?
46 1798017
>>798014
Нажми на стрелку уже, или на Ctrl+Enter
47 1798229
C++20 DIS заапрувили (в 2:38 MSK письмо прилетело)
48 1798454
Можно ли везде писать auto вместо int, float, и т.д.?
49 1798457
Сложно ли переделать код с swift на нормальный язык?
C4525B1B-ADD4-4F11-9091-30D157369BD5.png553 Кб, 720x720
50 1798459
Вот вы все про форматирование, а есть ли вероятность стать пидором в результате UB?
51 1798460
>>798454
Если правая часть выражения без труда позволяет определить тип, то можно, иначе лучше указать тип явно.
52 1798461
>>797330
Первую работу на плюсах находят только краснодипломники-олимпиадники.
74476FAE-6BF2-4FAE-B8A8-41A81F8F5981.jpeg324 Кб, 1200x1195
53 1798462
>>798454
Да, даже нужно. Если не выводится, можно поставить сишное преобразование к желаемому типу перед выражением. Можно даже всегда его ставить для порядка, так сказать, альтернативный интересный синтаксис.
54 1798466
>>797930
Надо во вторую скобку размер дописать, например int arr[][10]
55 1798552
>>798461
Не пизди. Двум краснодипломникам месяц назад отказали, зато взяли паренька с неоконченным высшим. Он оказался гораздо сообразительнее первых двух.
56 1798827
Как delete [] p; понимает, когда кончается массив?
57 1798873
>>798827
Среда выполнения знает, сколько было выделено
58 1798892
>>798827
Для каждого блока памяти с++ тайно сохраняет размер.
59 1798928
>>798892

>тайно


Хуяйно, зачем анону мозги пудришь? То, что ты написал, работает только в STL контейнерах (например, когда у тебя есть std::vector, там в классе есть метод size, который возвращает размер вектора, все метаданные о векторе хранятся в объекте класса std::vector).

Но если идет работа с сырыми указателями прямо как в Си, а он имел в виду именно это, то размер куска памяти в куче хранится в хедере метаданных удаляемого куска, а это целиком и полностью работа аллокатора памяти (ptmalloc3, jemalloc и т.п., есть дохуя реализаций), который к твоему коду не имеет никакого отношения, это отдельная подпрограмма, которая управляется отдельно операционной системой. Для простоты понимая - glibc в Линуксе, там среди всего прочего есть аллокатор памяти ptmalloc3, в нем ресурсы такого плана и находятся под управлением.
60 1798959
>>798928

>размер куска памяти в куче хранится в хедере метаданных удаляемого куска, а это целиком и полностью работа аллокатора памяти


Именно это я и имел ввиду
61 1798961
62 1799097
Почему Node в классе Stack подчёркивается красным, если не добавлять шаблон перед каждым классом?
63 1799154
>>797630
Что делает код с 110 по 16 строчку?
изображение.png12 Кб, 318x487
64 1799176
>>799097
Блять, я же кидал картинку, ну абу, какого хуя то, а?!!!!!
65 1799177
>>799176
Потому что это шаблонный класс.
66 1799179
>>799177
Я T ещё нигде не использовал. Какого хуя?
67 1799191
Спросил в МВП, продублирую сюда.
Какая сейчас средняя рыночная зарплата на руки в ДС для C++ миддла? От чего вообще отталкиваться чтобы не продешевить? Опыт есть.
68 1799232
>>799179
Так убери тогда шаблон если не использовал
69 1799461
70 1799692
В java в хэшсете используется функция hashCode(), в которой я могу выбрать значимое поле объекта, в std есть что-либо похожее, либо надо лепить свою реализацию?
71 1799704
>>799692
Специализируй std::hash

https://en.cppreference.com/w/cpp/utility/hash
72 1800118
>>799154
Вставляет "ребра" из диапазона в дерево значений. Каждая итерация цикла внутри увеличивает "глубину" структуру на единицу.
>>797844
Виртуальность тут ни причем, я ж не наследуюсь ни от чего. Сделал виртуальным - ничо не поменялось
>>797633>>797647
Увеличение стека чуть помогло, но мне на вход по идее может придти строка хоть из мильона символов, а там необходимый размер должен уходить в небеса. Мне такую самодеятельность не зааппрувят. Похуй, поставлю ограничение на входящий размер строки.

Вообще основной вопрос был в том, почему другие компиляторы спокойно прожевали этот кусок, а msvc соснул. Раньше они бывало выдавали разные результаты для хитровыебанных случаев, но эксклюзивных крашей не было. Видимо надо перекатываться на clang.
73 1800119
>>799191
На хабре было неплохое исследование по зарплатам в IT: https://habr.com/ru/company/habr_career/blog/485146/
Вот недавнее, но статистики меньше: https://habr.com/ru/article/511700/
По ощущениям реально в районе 110-130к.
75 1800122
>>800119
Благодарю, примерная картина ясна.
76 1800140
Народ, можете объяснить как вкатиться в Qt? Там ебать много всяких тулов, без пол литра не разберешься. Я понял есть версия для бомжей и для бояр. Можете скинуть ссылку на гайд по старту с бесплатной версией? Т.е. какой софт качать чтобы начать. С меня тонны нефти.
1022581661.jpg75 Кб, 353x500
77 1800142
78 1800145
>>800140
зачем вкатываться в qt в 2020?
79 1800146
>>800145
А во что нужно вкатываться в 2020? Есть что-то столь же развитое в плане разработке оконных приложений?
80 1800149
>>800146
Оконные приложения на С++ немного мертвы. Лишь 3.5 немца ебут труп. Если ты хочешь пилить - скорее вкатывайся либо в шарпы, либо в электрон
81 1800159
>>800149
Лол, ты qml вообще видел? Современный интерфейс qt это не про кресты. Шарп/ксамль - говно, электрон похоже тоже, только мельком смотрел.
кро
83 1800279
>>800142
Копипаст документации, нинужно
84 1800282
>>798457
Легче чем с пайтон,тяжелее чем с Шарпа
85 1800300
>>800118
Если в разных компиляторах разный результат, значит где-то стоит хитрый флаг или твой код UB или баг в конпеляторе

>я ж не наследуюсь ни от чего


А это что, блядь?
class ValueTreeTest : public std::map<T1, ValueTreeTest<T1, T2>>

И вообще, пожалуйста объясни, чего ты хотел добиться этой строчкой, я непонел.
86 1800349
>>800140
Там хороший хелп, с туториалами и прочим, я на нем одном вкотился.
87 1800383
>>800300
Ну понятно что наследование от мапы, но никаких приблуд при наследовании от stl-контейнеров сроду не вводил, всё работало.

>class ValueTreeTest : public std::map<T1, ValueTreeTest<T1, T2>>


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


Шаблонный класс "m-ary tree" для поиска слов по дереву, ребра (T1) - char/wchar, значения (T2) - какие-нибудь инты. Поиск и прочую ерунду убрал, отставил только инициализацию (insert).

>где-то стоит хитрый флаг или твой код UB или баг в конпеляторе


Вот я и пытаюсь понять что за флаг там нужно поставить чтоб всё работало. Никакого UB нет, код рабочий на небольшом входе лет 10. Сейчас просто дошли руки до тестов на экстремальный вход и получилось вот такое.
88 1800400
>>800383

> никакого UB


> код рабочий уже много лет


Аххахахахаха.
89 1800436
>>800383
Посмотри в исходник либы и на ассемблер. Делов-то

мимо сищник
yoba.png5 Кб, 129x129
90 1800451
А, у тебя insert рекурсирует. Ну ты так не делай
91 1800576
>>800451
Да хоть делай, хоть не делай - один хуй это говно вылезает в деструкторе https://rextester.com/GJXW94491.
92 1800641
Ананасы, недавно слышал о такой штуке применительно к многопоточному программированию.
Вместо использования примитивов синхронизации можно посылать на loopback (каждый поток слушает порт свой) пакеты. Какую-то я такую мысль читал.
Может кто-то подробнее этим интересовался?
93 1800724
>>800641
Если у тебя есть шаредные данные - то тебе все равно нужна синхронизация
94 1800783
>>800641
Блокироваться на мьютексе или блокироваться на чтении из сокета (хоть и локального)? Такое чувство, что второе будет намного оверхеднее.
95 1801005
Суп, подскажите, есть ли ресурс с перечнем каких-нибудь проектов, которые можно пописать в качестве тренировки, да и более углубленного изучения языка.
96 1801064
>>801005
Трассировщик лучей.
Интерпретатор языка Х.
Текстовый редактор.
Шахматы и змейки.
Клиент и сервер хуйни.
Эмулятор 6502.
97 1801069
>>801064
яростно двачую насчет эмулятора, это один из лучших байтоебских проектов, по крайней мере в пространстве пользователя, не спускаясь в священное ядро, который только можно сделать.
98 1801159
>>801064

>Трассировщик лучей


Если я полный нуб в линейной алгебре, есть ли смысл начинать с книжек вроде "3D Math Primer for Graphics and Game Development"?
99 1801212
>>801159
На хабре была серия статей про самописный трассировщик на 200 строк кода
100 1801219
Есть конпелятор gcc 4.6.3 и собранная им же библиотека без исходников. Есть библиотека, которой для сборки нужен c++14. В наличии только компилятор с поддержкой c++11 gcc 4.8.3.
Как это всё подружить между собой?
101 1801232
Анон, можно как-то для std::partition указать максимальное количество элементов слева? Типа есть рандомный вектор чисел, я хочу разделить на те, что меньше 10, но чтобы их было не больше четырех штук
102 1801237
>>801219

> Есть библиотека, которой для сборки нужен c++14.


Переписать фрагменты 14 стандарта на 11?
103 1801244
>>801237
Это может быть не всегда возможно, ты же понимаешь?
104 1801260
>>801219
Я сейчас собрал библиотеку, которая наполовину C90, частично С++11, а в нижних слоях два ассемблера (yasm и jwasm). Полёт нормальный, тесты прошли, ещё и модуль ядра соберу потом.

Правда, у меня все исходники были и версии gcc/g++ соответствуют, но, я думаю, в плане совместимости ты можешь это всё попытаться подружить.

(кроме сборки c++14 компилятором, не поддерживающим с++14).
105 1801270
>>801244
Не понимаю, объясни
106 1801339
>>800641
Фаерфолы и антивирусы могут начать возбуждаться на твою прогу, когда увидят открытый порт.
107 1801340
>>801260
Вряд ли у меня получится слинковаться с проектом без исходников, собранным с c++98, если я начну собирать свой проект с c++11. Может быть написать обёртку над второй либой, обернуть там всё в extern "c" и продолжить писать на c++98? Есть у кого-нибудь опыт написания такого?
108 1801350
>>801064
Спасибо
109 1801358
>>801159
Вполне.
Есть старая pdf-ка, ищи по имени автора Roman Kuchkuda, там пошагово пишется простой трассировщик на си.
110 1801642
Есть ли смысл в noexcept specifier при сборке с -fno-exceptions?
111 1801729
Аноны, помогите прошу, умоляю. В пятницу собес на стажёра C++. Как подготовиться? Что зубрить, что учить? Прошу помощи...
112 1801748
>>801729
А хуё ево знает. Чем контора то занимается?
Стандарты пошерсти. Наверное будут вопросы про наследования и перегрузки функции при них.
Про структуры данных могу спросить: все эти списки, дек, очередь и тд. Может быть что-то про сложность алгоритмов.
Про универсальные ссылки и вообще move семантику.
Сложно так сразу сказать.
113 1801750
>>801748
Информационной безопасностью занимается
114 1801757
>>801729
Что за контора?
115 1801785
>>801757
Zecurion
116 1801790
>>801069
>>801064

>Эмулятор 6502.



Если есть желание копать до глубин - пиши симулятор 6502.
117 1802003
>>801790
А в чем отличие?
118 1802012
>>801729
Надень полосатые чулки
119 1802015
>>802003
Потактовая точность в чимуляторе
120 1802159
>>801642
Напиши тест:
Класс с конструктором копирования и конструктором перемещения. Запихни его в вектор. Перемести вектор. Если вызовется конструктор перемещения, то можешь не париться
121 1802291
>>802159
Про это читал. На этом нюансы заканчиваются?
Сейчас работаю над библиотекой, которая всё равно собирается с -nostdlib.
122 1802313
>>802291
Я не знаю. Пример привел потому, что это первый пришедший в голову способ проверить, что там по умолчанию задано. Полагаю, если noexcept == true, то и в остальных случаях тоже.
123 1802597
>>802003
Симулятор - детально моделирует внутреннее устройство.
Эмулятор - только воспроизводит внешнюю работу АПИ, типа черный ящик.
Пример из жизни (писал эмуляторы 6502 по работе):
В старых играх программисты использовали разные трюки железа чтобы выжать производительность.
Эти особенности железа не всегда были описаны в документации, и зачастую открывались случайно экспериментальным образом.
В нескольких играх на эмуляторе не работала мигающая анимация заднего фона при атаках, взрывах.
Оказалось, что в эмуляторе, как по документации, выводилась строка пикселей целиком. В реальности же, программисты меняли содержимое строки во время ее вывода на экран, прямо пока бежал луч по кинескопу.
Для того, чтобы вывести правильный эффект, надо точно рассчитать, в какой именно момент произойдет смена пикселей в оперативной памяти. Тут бы помог симулятор, который обрабатывает команды по тактам и точно знает что происходило в чипах. Но считать все по тактам и пикселям очень долго, неприямлимо для реал-тайм эмуляции на 50-60фпс.
Подобные трюки были использовались и со звуковыми чипами. По документации один канал использовал рандом для шума. В эмуляторе это и будет просто рандом. Но в реале программисты изучили и поняли устройство чипа, на самом деле там счетчик со сдвигом, и научились "дергать" его в определенный момент времени, чтобы получить конкретный шумовой эффект для ударных. Без знания устройства эмулировать это не получится.
Для создания симулятора процессора, в частности, спилили крышечку чипа и он рассматривали его в микроскоп, чтобы воспроизвести детальную работу логических элементов. В частности, таким образом через 30 лет разгадали загадку, почему одна недокументированная команда процессора работала на некоторых партиях компьютеров, а на других зависала. (а на третьих зависила от того, насколько компьютер прогрелся, буквально). После чего, даже разобрались, по каким адресам памяти ее можно располагать, чтобы она работала стабильно. В эмуляторе, без этих симуляторных знаний, у тебя были бы только документированные команды, а для недокументированных у тебя была бы просто заглушка, которая могла, к примеру, выводить ошибку, или игнорироваться.
123 1802597
>>802003
Симулятор - детально моделирует внутреннее устройство.
Эмулятор - только воспроизводит внешнюю работу АПИ, типа черный ящик.
Пример из жизни (писал эмуляторы 6502 по работе):
В старых играх программисты использовали разные трюки железа чтобы выжать производительность.
Эти особенности железа не всегда были описаны в документации, и зачастую открывались случайно экспериментальным образом.
В нескольких играх на эмуляторе не работала мигающая анимация заднего фона при атаках, взрывах.
Оказалось, что в эмуляторе, как по документации, выводилась строка пикселей целиком. В реальности же, программисты меняли содержимое строки во время ее вывода на экран, прямо пока бежал луч по кинескопу.
Для того, чтобы вывести правильный эффект, надо точно рассчитать, в какой именно момент произойдет смена пикселей в оперативной памяти. Тут бы помог симулятор, который обрабатывает команды по тактам и точно знает что происходило в чипах. Но считать все по тактам и пикселям очень долго, неприямлимо для реал-тайм эмуляции на 50-60фпс.
Подобные трюки были использовались и со звуковыми чипами. По документации один канал использовал рандом для шума. В эмуляторе это и будет просто рандом. Но в реале программисты изучили и поняли устройство чипа, на самом деле там счетчик со сдвигом, и научились "дергать" его в определенный момент времени, чтобы получить конкретный шумовой эффект для ударных. Без знания устройства эмулировать это не получится.
Для создания симулятора процессора, в частности, спилили крышечку чипа и он рассматривали его в микроскоп, чтобы воспроизвести детальную работу логических элементов. В частности, таким образом через 30 лет разгадали загадку, почему одна недокументированная команда процессора работала на некоторых партиях компьютеров, а на других зависала. (а на третьих зависила от того, насколько компьютер прогрелся, буквально). После чего, даже разобрались, по каким адресам памяти ее можно располагать, чтобы она работала стабильно. В эмуляторе, без этих симуляторных знаний, у тебя были бы только документированные команды, а для недокументированных у тебя была бы просто заглушка, которая могла, к примеру, выводить ошибку, или игнорироваться.
124 1802618
>>797330
На завод или в оборонной КБ или НИИ попробуй. Будешь всякое технологическое говно писать сначала, там же и диплом сделаешь.
125 1802690
>>801729
Базовый вопрос, который меня спрашивали НА КАЖДОМ собесе на миддла по плюсам: чем std::map отличается от std::unordered_map, начиная от реализации и заканчивая сложность поиска, удаления и вставки. Заучи так, чтобы проснувшись посреди ночи мог на него сразу ответить!
А так должны спросить по сортировки и их сложность, стандартные контейнеры вроде вектора/листа, основы ООП перечислить, скорее всего будет пара базовых вопросов по темплейтам и виртуальным функциям, статическим переменным и их особенностям, аллокация на стеке/куче и прочие заковыристые места языка (но сношать тебя по ним не должны, тут скорее просто знаю-не знаю). Может задачку с литкода дадут или SQL запрос небольшой попросят написать, у всех по разному. Но map спрашивали вообще везде, так что первым делом учи STL контейнеры.
126 1802722
for(;;) или while()?
127 1802732
128 1802776
>>802722
Первое бесконечный цикл, второе ошибка компиляции.
129 1802821
>>802732
Спасибо
>>802776
Я имел ввиду while(true)
130 1802894
>>796605 (OP)
посоветуйте книгу по c++ и stl. до этого я как-то без этого обходился но на собеседование оч нужно, в шапке непонятно
131 1803187
>>802894
По C++ Страуструп, по STL Николай Джосаттис (или ещё Джосьютис).
132 1803211
>>797996
Всё просто. Язык C есть везде, на всех платформах, под все процессоры и ОС. Он одинаков, прост, быстро работает.
С++ же не столь универсален. Не все фичи везде доступны, где-то даже компилятора не найти.
В общем, подлинно портируемые программы стараются писать на C. Тогда они заработают на любом утюге.
133 1803218
Здорова пацаны! А давайте поговорим на тему вакансий программистов под C++.
Правда ли, что язык сдувается? Что вакансий всё меньше, а зарплаты уступают разработчикам на других языках?
Не лучше ли вместо всех премудростей плюсов, просто проштудировать Java и идти грести бабло?
134 1803221
>>803218
Как может сдуться то на чём вертятся все современные архитектуры?
135 1803227
>>802597

>Для создания симулятора процессора, в частности, спилили крышечку чипа и он рассматривали его в микроскоп, чтобы воспроизвести детальную работу логических элементов.



Какие-то сказки венского леса. Интересно, сколько они положили сил, времени и денег на это "спиливание крышечки и изучение"?
Ради чего такие заморочки? Ради парочки глючных игр? Да ещё 30 лет спустя. Кому это понадобилось?
136 1803231
>>802597
И да. Засунь свою доморощенную терминологию в задницу. Меня как-то не ипёт это твоё деление на "симуляторы" и "эмуляторы".
Откуда ты это притащил? Каждый гандон будет изобретать термины и тонкий их смысл, а все остальные должны послушно всё это жрать.
137 1803237
>>802597
Если что, могу ещё сообщить шта эмулировать ньюансы работы электроники - это не хуй собачий. Имею скромный опыт разработки цифровой схемы. На симуляторе её логики (на уровне вентилей) она ведёт себя не вполне так, как вживую в железе.
В симуляторе все относительно прямо и просто. А в железе вылезают косяки. Воспроизвести это программно совсем не просто.
138 1803242
>>803221
Относительно других языков - вполне. Говорят, сейчас на плюсах нужно работать в нишевых областях, где требуется высокая квалификация, дабы прилично зарабатывать.
Плюсы сдали поляну языкам, на которых писать код проще и быстрее (не код быстрее, а производительность программиста выше).
Посмотрите -- даже в геймдеве, традиционной поляне C++, Unity использует C#.
Что на чём вертится не так важно, эти фундаментальные вещи не занимают большой доли рынка.
Впрочем я не говорю про примитивные задачи, которыми занимаются толпы кодомакак. Клепание сайтиков на PHP каком-нибудь.
Я про языки и области применения с оптимальным соотношением профит/усилия_на_изучение.
139 1803245
>>801064
Можно ещё софтвер-рендерер или 3D игру, вместо трассировщика.
Впрочем, если это не по зубам, можно и 2D игру. Изометрическую какую-нибудь. Стратегию, например.
140 1803249
>>798928

>сырыми указателями


Сыро только у твоей мамки в трусах, анон. Raw pointers переводится как "голые указатели".
141 1803259
>>803231
Это общепринятые термины, маня. Можешь погуглить.
142 1803274
>>803227
Это сделали демосценеры, потому что охуевали с мистики почему у одного работает а у другого нет, а компов у них и так навалом. А фанатов у 6502 полно, комьюнити огромное, очень уж удачный проц был. До сих пор под него игры каждый год выходят.
143 1803345
>>803242

>производительность программиста выше


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

>даже в геймдеве


Ни один ААА проект не станет использовать юнити и шарп в качестве инструментов. Даже при современных идиотских стандартах.

>эти фундаментальные вещи не занимают большой доли рынка


Архитектуры x64 и arm самые распространённые в мире на сегодняшний день. Весь лоулевельный софт для взаимодействия остальной системы с ними написан на чистом С или порой на С++. Это львиная доля рынка и пока не будет готов полностью рабочий квантовый компьютер тут и говорить нечего.

>с оптимальным соотношением профит/усилия_на_изучение


JS макаки радуются 120к в месяц в лучшем случае, люди с реальными знаниями и страстью к технологиям уезжают в Германию/Калифорнию/Канаду.
144 1803353
>>803218
Плюсы начали сдуваться в начале 200х, сейчас их положение стабильно, они остались там, где нужны и заменить их нечем.
145 1803396
>>803242
Экстремальное байтоёбство сейчас на Zig модно писать. Это по сути обёртка на LLVM с кучей сахара. Крестовики обзавидуются местным чудесам синтаксиса.
146 1803470
пчелы, норм ли для в качестве работы для диплома написать текстовый редактор ? (со шрифтами, поиском редактированием). Вначале хотел сделать что-то типа экселя, но понял, что не справлюсь с таким объёмом работ.
147 1803474
>>803470
Ну если ты на программиста учился чтобы по итогу текстовые редакторы делать - то да, вполне.
148 1803478
>>803470
Разве это дохуя сложно? Разве это показывает все, чему ты за 5 лет научился?
149 1803482
>>803478
Вообще то это дохуя.
150 1803483
>>803482
Человеку с 4 годами опыта (если там опыт какой-то есть конечно) программирования это задача на 2 вечера.
151 1803485
>>803483
Шрифты и поиск? Ахаха, удачи. Ну естественно если речь не идет о вставить готовый компонент типа RichEdit.
152 1803486
>>803474
А для чего учатся программисты си? Ты для чего учился? Мигать светодиодом?
153 1803487
>>803483
Если использовать готовые либы то да, за 2 вечера можно взять какой-нибудь imgui и юзать просто textbox. С нуля даже просто отрисовку текста пиздец как сложно сделать.
>>803470
Сомневаюсь, что тебе в вузе разрешат такое брать на диплом. Я вот тоже хотел на плюсах что-то низкоуровневое на дипломе писать, так меня нахуй послали и сказали "А КАК ЭТА МОЖНА ИСПОЛЬЗАВАТЬ В БИЗНЕСЕ??7" ну и пошел делать сайт на шарпе...
154 1803492
>>803249
У меня на работе один чувак называет их "лысыми указателями"
155 1803494
>>803485
>>803487
Извините, парни. Совсем забыл где посчу.
>>803486
Сочетаю образование физика с образованием софтварного инженера и работаю в лабе по изучению виртуальных частиц. Светодиодами мигать тоже умею.
156 1803497
>>803494
Ничего страшного, малыш. Если попробуешь отрендерить шрифт со всеми нюансами выключки, скейлинга, кернинга, трекинга, сглаживания, прокрутки без глюков, немного собьешь спесь, может за полгодика научишься рисовать что-то более менее сносное.
157 1803499
>>803494
Ну понятно, то есть ты в общем то и не программист, а так, readByte()
158 1803509
>>803497
Дедуль, чтобы получать свои 13к евро в месяц мне не нужно дрочить никакие шрифты, это прерогатива людей уровень развития которых остался на уровне текстовых редакторов в качестве дипломки.
>>803499

>с образованием софтварного инженера


Даже близко не он, сижу код за другими комментирую.
159 1803512
>>803509

>13к евро


Извините СТО гугла не признал вас.
160 1803514
>>803509
Ну то есть написать редактор текста ты не сможешь, так и запишем.
161 1803537
>>803514
Я тебе уже всё сказал - суметь скопировать нотпад это тир 5 навык. С таким подходом ты один хуй через полгода-год перекатишься в веб.
162 1803543
>>803537
А что тогда тир 1? Написание "умных" штучек с нейронками на питоне в 6 строчек?
163 1803547
>>803537
Ну ок, для такого маэстро как ты не составит труда показать легкость тир5, сейчас как выходные будут, значит сможешь сделать такую легкую вещь как копия нотпада за вечер, верно? Ты же не пустозвонный тролль.
164 1803550
>>803483
Какая связь между временем на реализацию, и временем на то, сколько нужно учить компьютерные науки, чтобы уметь это написать?
А главное, причем тут опыт (который нарабатывается в коммерческих компаниях) и академическое обучение?
165 1803553
>>803550
Забей, это троль(малолетний дебил) категории /math.
166 1803561
>>803543
Точно не изобретение жигуля и претензия на то, что это ауди.
>>803547
Обязательно. Ты ещё методичку скинь, я тебе и диплом с 0 напишу. О, и адрес, адрес тоже. Я тебе свою тян пришлю, поебёшься на халяву.
>>803550
В условиях постсоветского ущербного образования - связи никакой. В то время как в Европе и Северной Америке 4 года обучения выдают абсолютно готовых к комерческой деятельности спецов методички Священной в лучшем случае к 4 курсу высрут человека способного выёбываться умением в рендеринг текста. Плюсом идёт всеобщее ебланство, но об этом даже говорить не приходится.
167 1803562
Имеется следующий класс
class Alpha {
Alpha(const Alpha& a){/.../}
};
Какие члены класса в данном случае будут автоматически определены при создании класса?

Ответьте пожалуйста.
Я тупой бака.
168 1803568
Хееееелп.
169 1803575
>>803561

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


Ну то есть это уровень ПТУ, а не Вузов, которые должны давать научные знания, понятно.
170 1803576
>>803561
Ясно, и тян у тебя есть, угу, и $13к, совсем не тролль. А блокнот написать не можешь. Вся суть выебывальшиков-наебщиков.
171 1803577
>>803561
>>803470
Вот тебе пример тем дипломов из моей шараги. Мб что-то подойдет

«Разработка стохастического метода оптимизации на основе механической аналогии»
«Анализ вариабельности сердечного ритма»
«Модификация комплекса ПА9»
«Создание платформы для локального развертывания клиентской части веб-приложений»
«Разработка клиентской части информационной системы по организации гоночных такси»
«Модельно-ориентированное проектирование в основе программирования логических интегральных схем»
«Исследование многосеточных методов решения систем линейных алгебраических уравнений»
«Разработка модуля экспорта для системы проектирования калибров для профилегибочного производства»
«Разработка витрины интеллектуального анализа данных биржевых операций»
«Исследование режимов максимальной и минимальной диссипации механической энергии в простейших силовых сетях методами математического моделирования»
«Динамический и прочностной анализ робота-манипулятора»
«Разработка программной реализации удаленного запуска графоориентированных решателей систем инженерного анализа»
«Разработка хранилища данных для анализа биржевых операций»
«Разработка приложения для организации бизнес-процессов проектирования ПО»
«Оптимизация хранения медицинских данных на основе использования технологии блокчейн»
«Численное моделирование движения многосекционного бурильного инструмента внутри скважины»
«Разработка системы детектирования дороги для мобильного робота»
«Разработка информационной системы автоматизированного доступа к онлайн-сервису товаров и услуг»
«Разработка безопасного генератора случайных чисел в блокчейне»
«Разработка серверной части информационной системы для заказа скоростного такси»
«Разработка мобильной части программно-аппаратной системы голосового управления транспортным средством»
«Модельно-ориентированное проектирование в основе программирования микроконтроллеров»
«Разработка NX приложения для редактирования размерных цепей в ТУ»
«Использование концепций создания пользовательского интерфейса для кроссплатформенных приложений на основе UX-исследований»
«Разработка Web-ориентированных CASE инструментариев для автоматизации генерации объектов на основе шаблонов»
«Разработка пользовательского интерфейса инвестиционной игры с использованием Unreal Engine 4»
«Исследование масштабируемости работы серверного программного обеспечения в «облачной» инфраструктуре»
«Разработка редактора нейтрального слоя профилей для системы проектирования калибров профилегибочного производства»
«Разработка подсистемы структурного анализа сложных изделий»
«Разработка аналитической подсистемы для исследования банковских операций юридических лиц»
«Разработка web-ориентированных CASE инструментариев автоматизации построения исходных кодов графоориентированных решателей»
«Разработка нейросетевого ансамбля для прогнозирования банкротства ресурсоснабжающих предприятий»
«Разработка автоматизированной системы поддержки трейдинга»
«Разработка WEB-аналитической подсистемы исследования цифровых биологических сигналов»
«Разработка редактора профиля для системы проектирования калибров профилегибочного производства»
«Разработка подсистемы визуализации для системы проектирования калибров для профилегибочного производства»
(хвост по КП за прошлый семестр) «Разработка математической модели амортизатора самолета для комплекса ПА9»
«Разработка системы автоматизированного проектирования приложений среды ROS»
«Исследование распределения статического заряда по поверхности проводящего тела»
«Разработка программного комплекса для линеаризации избыточных механических структур»
«Разработка архитектуры и реализация программного комплекса оптимизации робототехнических приложений»
«Разработка веб-приложения для визуализации многомерных данных»
«Анализ конечно-элементной сетки в приповерхностном слое изделия, усиленного «наклепом»
«Динамический и прочностной анализ элементов механизма перекоса винта вертолета»
«Машинное обучение на основе непрерывных динамичечких систем»
«Реконструкция эффективных кривых деформирования ПКМ на основе аппроксимации кривых деформирования отдельных компонентов ПКМ»
«Разработка информационной системы балансирующего рынка электроэнергии»
«Разработка модели деформации листовой заготовки при формовке роликами в системе LS DYNA»
«Разработка web-приложения для визуализации многомерных дан-ных»
«Исследование динамики контактных сил в неконсервативных упругих системах»
«Разработка эффективного алгоритма поиска с возвратом на основе эвристик»
«Разработка распределенного комплекса дистрибуции программного обеспечения»
171 1803577
>>803561
>>803470
Вот тебе пример тем дипломов из моей шараги. Мб что-то подойдет

«Разработка стохастического метода оптимизации на основе механической аналогии»
«Анализ вариабельности сердечного ритма»
«Модификация комплекса ПА9»
«Создание платформы для локального развертывания клиентской части веб-приложений»
«Разработка клиентской части информационной системы по организации гоночных такси»
«Модельно-ориентированное проектирование в основе программирования логических интегральных схем»
«Исследование многосеточных методов решения систем линейных алгебраических уравнений»
«Разработка модуля экспорта для системы проектирования калибров для профилегибочного производства»
«Разработка витрины интеллектуального анализа данных биржевых операций»
«Исследование режимов максимальной и минимальной диссипации механической энергии в простейших силовых сетях методами математического моделирования»
«Динамический и прочностной анализ робота-манипулятора»
«Разработка программной реализации удаленного запуска графоориентированных решателей систем инженерного анализа»
«Разработка хранилища данных для анализа биржевых операций»
«Разработка приложения для организации бизнес-процессов проектирования ПО»
«Оптимизация хранения медицинских данных на основе использования технологии блокчейн»
«Численное моделирование движения многосекционного бурильного инструмента внутри скважины»
«Разработка системы детектирования дороги для мобильного робота»
«Разработка информационной системы автоматизированного доступа к онлайн-сервису товаров и услуг»
«Разработка безопасного генератора случайных чисел в блокчейне»
«Разработка серверной части информационной системы для заказа скоростного такси»
«Разработка мобильной части программно-аппаратной системы голосового управления транспортным средством»
«Модельно-ориентированное проектирование в основе программирования микроконтроллеров»
«Разработка NX приложения для редактирования размерных цепей в ТУ»
«Использование концепций создания пользовательского интерфейса для кроссплатформенных приложений на основе UX-исследований»
«Разработка Web-ориентированных CASE инструментариев для автоматизации генерации объектов на основе шаблонов»
«Разработка пользовательского интерфейса инвестиционной игры с использованием Unreal Engine 4»
«Исследование масштабируемости работы серверного программного обеспечения в «облачной» инфраструктуре»
«Разработка редактора нейтрального слоя профилей для системы проектирования калибров профилегибочного производства»
«Разработка подсистемы структурного анализа сложных изделий»
«Разработка аналитической подсистемы для исследования банковских операций юридических лиц»
«Разработка web-ориентированных CASE инструментариев автоматизации построения исходных кодов графоориентированных решателей»
«Разработка нейросетевого ансамбля для прогнозирования банкротства ресурсоснабжающих предприятий»
«Разработка автоматизированной системы поддержки трейдинга»
«Разработка WEB-аналитической подсистемы исследования цифровых биологических сигналов»
«Разработка редактора профиля для системы проектирования калибров профилегибочного производства»
«Разработка подсистемы визуализации для системы проектирования калибров для профилегибочного производства»
(хвост по КП за прошлый семестр) «Разработка математической модели амортизатора самолета для комплекса ПА9»
«Разработка системы автоматизированного проектирования приложений среды ROS»
«Исследование распределения статического заряда по поверхности проводящего тела»
«Разработка программного комплекса для линеаризации избыточных механических структур»
«Разработка архитектуры и реализация программного комплекса оптимизации робототехнических приложений»
«Разработка веб-приложения для визуализации многомерных данных»
«Анализ конечно-элементной сетки в приповерхностном слое изделия, усиленного «наклепом»
«Динамический и прочностной анализ элементов механизма перекоса винта вертолета»
«Машинное обучение на основе непрерывных динамичечких систем»
«Реконструкция эффективных кривых деформирования ПКМ на основе аппроксимации кривых деформирования отдельных компонентов ПКМ»
«Разработка информационной системы балансирующего рынка электроэнергии»
«Разработка модели деформации листовой заготовки при формовке роликами в системе LS DYNA»
«Разработка web-приложения для визуализации многомерных дан-ных»
«Исследование динамики контактных сил в неконсервативных упругих системах»
«Разработка эффективного алгоритма поиска с возвратом на основе эвристик»
«Разработка распределенного комплекса дистрибуции программного обеспечения»
172 1803578
>>803562
Вроде бы деструктор всегда, копи конструктор потому что класс простой, все остальное отключено явным конкструктором копирования. Могу ошибаться, я не эксперд в стандарте.
173 1803579
>>803578
Так какие члены классов? Что преподу сказать?
174 1803581
>>803579
Я ж назвал. Но это не точно.
175 1803583
>>803581
Деструктор и конструктор?
176 1803587
>>803583
Ой, блин, я имел в виду деструктор и оператор копирования.
177 1803589
>>803577
Не вижу здесь ничего смежного с "Текстовым редактором".
178 1803594
>>803589

> «Разработка редактора профиля для системы проектирования калибров профилегибочного производства»


А вообще одна хуйня типа посчитать говно по формуле. Вообще не программирование. Зато лохчейны порадовали, но вот там реально на 2 вечера работы.
179 1803610
>>803594

>«Разработка редактора профиля для системы проектирования калибров профилегибочного производства»


Так при чём тут текстовый редактор со шрифтами, поиском редактированием?
180 1803615
а блокнот и не надо на крестах писать
на как не нужно - "движок" то все равно придется на си или крестах писать
но нужен быстродействующий высокоуровневый скриптовый язык, он должен лежать в основе любого редактора
что больше всего бесит в емаксе и виме? - это емакслисп и вимскрипт
бесит просто до зубовного скрежета
но коммьюнити вложило в эти редакторы миллионы человеко-часов, и все продолжают стонать и писать на этих хуевых скриптовых расширениях
181 1803618
>>803615

>стонать и писать на этих хуевых скриптовых расширениях


Для авторов может и да, а у меня они просто работают, стонать не приходится.
(не отрицаю их хуёвость).
182 1803620
>>803610

>смежного


Действительно, ты же аутист.
А это тоже не смежное?

>Использование концепций создания пользовательского интерфейса для кроссплатформенных приложений на основе UX-исследований


>Разработка web-приложения для визуализации многомерных дан-ных


Это еще в разы проще.
183 1803628
>>803620
Это становится всё менее смешным. Если 1 ещё можно хоть как-то притянуть то каким образом здесь клеится веб приложение с визуализацией?
184 1803641
Можно ли в VS2019 увидеть где в коде ещё используется переменная как в Notepad++, там при двойном клике на слове оно выделяется везде где встречается в том числе и на прокрутке, в VS только в текущем окне.
185 1803650
>>796605 (OP)
Что учить после шаблонов и контейнеров?
186 1803653
>>796605 (OP)
Что учить после шаблонов и контейнеров?
Хочу на джуна пойти 19 годиков 0 опыта.
187 1803654
>>803653
Код пиши.
188 1803661
>>803654
Задачки которые в унике дают делаю. А если делать свой проект то на матан времени не хватит. Думаю забить хуй на задачки уника и делать что-то своё, тупа списывая у одногруппов дз
189 1803664
>>803661
В реальной работе матан нахуй никому не нужен, кроме машинлернеров и дата сатанистов. Даже обидно, что на него тратить время надо.

Но тем не менее - читай книги по всякому С++20 и старайся писать код
190 1803665
>>803664
Матан не нужен прикладному математику?!
Спасибо за ответ, удачи анон.
191 1803666
>>803628
То есть шрифт - это не визуализация? Ок.
192 1803676
>>803666
Я тебя понял. Отвечаю последний раз и ухожу на работу а ты продолжаешь троллить своей тупостью других.

>визуализации


Не принта, а именно визуализации

>многомерных дан-ных


Это могут быть данные любого вида. Что подразумевает что текстового вывода здесь может вовсе не быть

В подобного рода проектах тебе нужно будет реализовать оптимизацию быстродействия и защиту от битых данных/устранение шумов etc. а не ебаться со шрифтами.
193 1803677
>>803665
Я хуй знает на кого ты учишься. Я системный программист, опыта пошел 7ой год. Никакая математика не пригождалась ниразу.
194 1803713
>>803497

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


ага, а потом понимаешь что это все костыли-костылики
а идеал это растровый шрифт + система с выстовленным ppi==dpi (и да, винда тут уже не подходит)
195 1803716
>>803713
С растровым шрифтом это никуда не денется.
196 1803720
>>803676
Ты считаешь что в шрифтах не надо ебаться с быстродействием? Лол, я понимаю если бы мы сидели в js треде, но в с++ такие перлы выдавать это конечно лол.
197 1803731
>>803716
чому?
с растровым шрифтом нужно только воткнуть картинку этого шрифта и все
198 1803770
>>803470
Я бы на защите спросил а зачем миру ещё один редактор ?
А команды TECO вы знаете, молодой человек?
199 1803790
>>803654
И оглядывайся на примеры (хорошего) кода. Почитай, как другие люди пишут. Передирай у них удачные моменты. Как они оформляют код, как его организуют, как устроены и работают программы.

Вот можно поковырять исходники:
- Библиотека xerces-c. Это XML парсер. Очень чисто написана.
- Стандартная библиотека, которая прилагается к твоему компилятору. Поковыряй, как там написаны контейнеры, например.
- Исходники игр, игровых движков. Doom 2, Doom 3, Unreal
- Исходники всякого софта, вроде Linux, FreeBSD, Libre Office, Apache, Chromium Browser

Разработай свой собственный styleguide для того кода, что ты сам пишешь.
200 1803796
>>796605 (OP)
Как же меня рожа этого Александреску на первой картинке бесит. Так и хочется в неё кирпичом запульнуть. Ну почему программисты сплошь и рядом выглядят не как фотомодели?
201 1803804
>>803790

>примеры (хорошего) кода


>Стандартная библиотека, которая прилагается к твоему компилятору


Ебанутый?
Там же тысячи строк #ifdef __CXX_EXPERIMENTAL_CXX0X__ костылей под разные версии крестов/архитектуры/ОС с __gnu_debug_std::__М_такими_именами_переменных___ и мудацким форматированием пробелами пополам с табами.
202 1803810
>>803770
Но ведь все существующие говно.
203 1803816
>>803731
Потому что большая часть перечисленного касается больше расстановки буковок, какими бы они не были (растер/вектор). А если масштабировать шрифт (растр то у тебя под 1 размер будет), то и со сглаживанием тоже возиться.
204 1803818
>>803796
Это ты еще ролевиков-настольщиков не видел.
205 1803824
>>803796
The third picture is pretty badass, though.
206 1803831
>>803824
хз, саттер еблом похож на шимпанзе
207 1803842
Напомните как специализироватб функции.

Вот есть типа определение
template<class...> void foo();

вот специализации для пустого и непустого списка типов
template<> void foo<>() { cout << ".\n"; }

template<class T, class... Ts>
void foo<T, Ts...>()
{
cout << typeid(T).name() << " ";
foo<Ts...>();
}

Но оно во-первых не компилится, а во-вторых определяется как перегрузки, а не специализации. Где я проебался?
208 1803848
>>803810
Кроме nvi
209 1803852
>>803848
Само собой. Я, конечно же, говорил о работающих в не-текстовых режимах.
210 1803854
>>803842
Вроде бы template void foo<T, TS...>()
211 1803860
>>803804
Нуу. Пусть это не хороший код, но тоже экспириенс на тему "вот так тоже бывает". Разве не интересно, как устроены и работают вот эти самые контейнеры, про которых столько говорилось?
212 1803862
>>803831
У нас опенспейс, и мне приходится буквально целыми днями просиживать, вперясь в ебло соседа-программиста. И кодить-кодить-кодить. Не видя ничего кроме компа и офиса.

Уже не уверен, правильно ли я выбрал профессию. Вон - адвокаты. Постоянно какая-то драма, люди всякие, интересные случаи, поездки, трепаться надо. А тут што?
213 1803874
>>803862
Потому что кодить надо для души и себя, а работы в ИТ кроме кодинга полно. Я вот хожу на работу, пью чай, скролю двачи и попутно запускаю скрипты на PowerShell, которые делают почти всю работу за меня. А платят как местным макакам, которые по 12 часов сидят за мониторами и не могут даже пернуть. Ещё и ходят на работу по СКУДу, повинуясь бездушной машине, считающей их часы и опоздания.
214 1803891
>>803537

>суметь скопировать нотпад это тир 5 навык.


Лолват. Тир 5 пять это window gdi, функции отрисовки которого дёргает нотепад.
215 1803952
>>803874
Ещё одна трабла - преимущественно мужской коллектив. Что в инсте одни мужики, что на работе. Где-б няшных тяночек найти? Меня от мужиков уже воротит.
Особенно на работе. В инсте все молодые, а тут какой-то мрак.
216 1803971
>>803790

> Исходники всякого софта, вроде Linux, FreeBSD



Хочется почитать исходники разного ПО, но вот без навигации по вызовам функции, подсветка используемых переменных и прочего крайне не просто.
Какой редактор может просто "сожрать" папку с исходниками по которым хоть как-то можно будет перемещаться?
217 1803976
>>803562
Закинь в cpp insights и посмотри
218 1803981
>>803860
Да хуй ты там разберёшься без 0.5
219 1803984
>>803577
Не знал, что здесь кто-то с РК6 сидит...
На плюсах пишешь что-то?
220 1803994
>>803984
кто-то сидит -_-
кто-то пишет.
221 1804029
Куда вкатиться на плюсы в москве джуном? Около часа листал хх, обнаружил штук 10-15 вакансий на весь город. Так и должно быть?
На джаве в разы больше почему-то.
222 1804038
>>804029
Недавно листал, довольно много вакансий.
Правда, я не джунов листал.
А хуле ты хотел?
На джаве больше вакансий по всему спектру скилла, да.
223 1804108
>>803816
не, я так подогнал чтобы без масштабирования были, чтобы чисто точка в пиксель горела
224 1804170
Парни, завтра собеседовать челов на джунов. Первый раз такое да. Хз что спрашивать даже. Что вообще джуны знать должны? А то боюсь планку завысить
225 1804230
>>804170
Пару задачек на логику придумай, спроси про современне фишки языка - чтобы не шарахались от твоего проекта. Указатели умные; попросить записать из двух потоков в один ресурс; виртуальный деструктор; мув-семантика; crtp, специализация шаблонов;
Спроси, читал ли он/она какие-нибудь книги и что оттуда вынесли.
Ну и правило номер ноль: если от кандидата воняет, то с собеседованием нужно не затягивать.
226 1804382
Вопрос по поводу архитектуры сервера. Сначала идет команда, потом данные. Даннве и команду отправить в одном запросе или сначала отправляю команду, а в следущем запросе данные что мне кажется более плохим вариантом. Тогда мне лучше придумать для каждой команды свой код, чтобы размер команды был одинаковый для любой команды?
227 1804395
>>804382
Эти два сообщения в любом случае попадут в один буфер сокета. Даже если ты как-нибудь сумеешь разделить их при отправке, со стороны приема всё в один буфер улетит.

Можешь сначала посылать пару байтов, сигнализирующих, что это команда либо данные. Потом размер команды\данных. А после уже данные согласно размеру.
228 1804398
>>804395
Спасибо. Раньше никогда не писал чего то большого. Обычно задачи какие нибудь решал или редко что то для себя. Там обычно так: есть идея, чуть обдумал, может на листике че то написал и записал на компе. Тут блин нужно сначала продумать заранее как оно все будет работать, а потом писать, иначе хуйня получится
229 1804399
>>804382
я бы выбрал уже существующий протокол обмена (бинарный или текстовый) и использовал его
либо бы готовую реализацию, либо, если бы захотелось велосипедостроения, то сделал бы сам по существующим спекам
но даже второе не советую
а "проектировать" свой протокол это надо очень умным и опытным быть
раз ты задаешь такие вопросы, ты явно не из тех ребят
230 1804402
>>804395

> Эти два сообщения в любом случае попадут в один буфер сокета.


Как будет время я это на компе проверю . Да и вообще уточню как boost данные обрабатывает, но вопрос тогда. Раз сообщения с любом случае попадут в один буфер, то как тогда данные скачивают большие. Программы не хранят же в буфере 10гб игры. Скачали кусок, очистили буфер. Как я понимаю. Ну я по идее тоже так смогу. Ну и так буду разделять сообщения
231 1804403
>>804399
Ну не будет же в интернете конкретного протокола под мои цели.
232 1804413
>>804403
да ладно
233 1804443
>>804382
В заголовке сообщения передаешь метаданные (ID команды, бла-бла), затем в теле сообщения сами данные. Отправляешь как единое целое.
234 1804449
посоны, поступил в вузик, будет с++, сказали будем работать по книге "всеволод иванов прикладное программирование на с/с++ с нуля"
по отзывам - книга максимальная хуета, или для сойдёт?
image.png83 Кб, 933x770
235 1804451
>>804449
Проорал с ТУРБО СИ.
236 1804454
>>804451

>не учат boost ряяяяя


Сейчас бы "учить" библиотеку
237 1804455
>>804454
Ну изучатели буста это отдельная секта, солидарен. Но ТУРБО мать его СИ. Серьезно. Даже в 2010 это был лол кек чебурек. А уже в 2020 подавно.
238 1804456
>>804449
На самом деле не важно.
Ну, то есть, понятное дело, что книга говно. Как и Turbo C.

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

А в каком там виде вам будут хеллоу-ворлды демонстрировать — на мой взгляд без разницы.

>>804455
Да, к остальному не придираюсь, очень смешно.
239 1804458
>>804451
>>804455
что делать тогда? шилдт или страуструп?
240 1804459
>>804456
ебаться самому и придётся, да, похуй, чего не сделаешь ради вылеза из говен не спиться бы в общаге, лол
241 1804464
>>804458
Я по страуструпу в свое время выучил со статьями по отдельным непонятным темам. Вроде даже хорошо получилось.
242 1804468
>>804458
Му Липман, Лажойе, C++ Prime

Мне зашло, 150 стр до конца осталось
243 1804475
>>804402
Ты вызов read() видел? Ты ему задашь считать 10ГБ, а функция вернет что считал, например, 1 Мб. По хорошему ты её в цикле вызываешь, до тех пор, пока все данные не будут считаны. Параллельно, при достижении определенного размера буфера, пишешь в файл, чтобы не держать всё в оперативке.
244 1804477
[code]
std::test
[/code]
245 1804480
>>804458
Так себе С или С++?
Для С есть другой тред, в конце концов бери Кернигана и Ричи. Тоненькая книжечка просто и лаконично описывает язык.
Для С++ Липпман и Прата, Шилд ещё (синенькая такая кажется, в чём-то устарела наверняка, но для примитивного уровня достаточно)
246 1804492
>>804480
c++ именно
спасибо за советы
247 1804532
>>804382
Собираешь в достаточно большом буфере команду фиксированной длины, длину данных и данные, сколько влезет. Пишешь в сокет. Продолжаешь писать остаток данных.
248 1804675
Аноны, спрошу тут. На работе есть большая прога, ~3 МБ исходников, написана 50/50 в С/С++ -стиле В ней проблемы с памятью, работает в 95% при компиляции в VS2008 в релизе, в дебаге падает с рандомными ошибками assess violation и т.д, в VS2015 работает неправильно и иногда падает.

Прошу советов как это можно дебажить.
Есть ли какая-нибудь прога чтоб туда логи сырой памяти структуры вставить и ее описание и посмотреть как со временем значения в этой структуре менялись? (околориалтайм и взаимодействие с несколькими железками, брейкпоинт в студии только 1 раз поставить можно, после всё собьётся и перезапуск и всё чуть по другому будет)
249 1804731
>>804675
Для начала пройдись статическими анализаторами, например clang-tidy.
Потом прикрути формирование дампов, узнаешь хоть, где вылет происходит.

Напиши пару тестов на предполагаемые методы. Введи логирование входных/выходных данных.
Поиграйся с брейкпойнтами в студии: им можно задавать условия или смотреть количество срабатываний без остановки программы.

> большая прога


> ~3 МБ исходников


Лол
250 1804737
>>804731
Скомпилируй шлангом и натрави дохуя всех санитайзеров
251 1804745
Стоит ли вкатываться в Qt если собираюсь делать приложения только под винду? Вообще считаю что Unix подобные системы должны сдохнуть, это тупиковый путь развития
252 1804752
По моей задумке пользователь в браузере должен сгененрировать карту и потом сохранить ее на сервер. При этом нужно исключить момент, когда два человека случайно создали одну карту. Карт может быть, много, хоть и весят они мало. Сравнивать все созданные карты с только что созданной выглядит долго. Заранее создать пул со всеми возможными картами тоже кажется не идеальным решением. Потому что размеры могут быть любыми. Конечно можно сначала создать пул сначала с размерами до 100x100 например , а потом его расширять, но тогда будет много не используемых карт, но место занимающих. Вероятнее всего, проблема не нова, и уже есть какое то оптимальное решение.
253 1804761
>>804752
Хотя можно наверное и оставлять дублткаты. Возможно ничего страшного не случится, если будут созданы 2 одинковые карты. Единственный мнус в том, что когда пользователь будет потом искать карты, он может найти две одинаковых. хотя можно будет вручную такое отслеживать переодически, в моменты, когда сервер не нагружен и дубликаты сливать в один элемент.
254 1804791
>>804731

>Для начала пройдись статическими анализаторами


PVS Studio юзаю, оно норм?

>прикрути формирование дампов


Как правильно это сделать, чтобы

>узнаешь хоть, где вылет


если они в рандомных местах

>Напиши пару тестов


Почти вся прога - симуляция физических процессов, написана давно не нами, вообще хз что там внутри происходит (принимает структуру 1000+ полей)

>Введи логирование входных/выходных данных


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

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


Уже мало помогает

>>804737

>шланг


?? это clang?

На с++ полгода, на 800 строк максимум проги делал, для меня пиздец большая
255 1804825
>>804791

> структуру 1000+ полей


Пока декомпозицию не проведешь, ничего не получится.
256 1804841
>>804675
Оберни все new delete.чтобы искать memory corruption
257 1804856
>>804841
Дедуля, уже давно есть asan
258 1804901
>>804752
Хешировай.
1599465569772.gif412 Кб, 220x139
259 1804917
>>796605 (OP)
Помогите студню-дебилу
Из навыков программиста обладаю только умением гуглить поэтому нашёл решение своей задачи на спп
Проблема такая - возможно ли перевести это решение на python или pascalABC.net? я НЕ прошу переводить просто подскажите софт/идеи, ибо я совершенно не знаю спп, а сроки горят. Ну или нахуй пошлите тоже можно
Собственно код:

#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <cstdlib>
#include <cstdio>
#include <ctime>

using namespace std;

int main() {
int n, m;
scanf("%d%d", &n, &m);
int a[n], prev[n], next[n], maxlt[n], maxrt[n];
int maxNow = 0;
for (int i = 0; i < n; ++i) {
scanf("%d", &a);
if (!i) {
prev = (a == 0) - 1;
maxlt = a;
} else {
prev = prev[i - 1];
maxlt = max(maxlt[i - 1], a);
if (a == 0) {
prev = i;
}
}
if (a == 0) {
maxlt = 0;
}
}
for (int i = n - 1; i >= 0; --i) {
if (a == 0) {
next = i;
maxrt = 0;
} else {
if (i != n - 1) {
next = next[i + 1];
maxrt = max(maxrt[i + 1], a);
} else {
next = -1;
maxrt = a;
}
}
}
for (int i = 0; i < m; ++i) {
int l, r, h;
scanf("%d%d%d", &l, &r, &h);
if (next[l - 1] != -1 && next[l - 1] < r) {
printf("Yes\n");
continue;
}
if (prev[l - 1] != -1) {
if (maxlt[l - 1] < h) {
printf("Yes\n");
continue;
}
}
if (next[r - 1] != -1) {
if (maxrt[r - 1] < h) {
printf("Yes\n");
continue;
}
}
printf("No\n");
}
return 0;
}
1599465569772.gif412 Кб, 220x139
259 1804917
>>796605 (OP)
Помогите студню-дебилу
Из навыков программиста обладаю только умением гуглить поэтому нашёл решение своей задачи на спп
Проблема такая - возможно ли перевести это решение на python или pascalABC.net? я НЕ прошу переводить просто подскажите софт/идеи, ибо я совершенно не знаю спп, а сроки горят. Ну или нахуй пошлите тоже можно
Собственно код:

#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <cstdlib>
#include <cstdio>
#include <ctime>

using namespace std;

int main() {
int n, m;
scanf("%d%d", &n, &m);
int a[n], prev[n], next[n], maxlt[n], maxrt[n];
int maxNow = 0;
for (int i = 0; i < n; ++i) {
scanf("%d", &a);
if (!i) {
prev = (a == 0) - 1;
maxlt = a;
} else {
prev = prev[i - 1];
maxlt = max(maxlt[i - 1], a);
if (a == 0) {
prev = i;
}
}
if (a == 0) {
maxlt = 0;
}
}
for (int i = n - 1; i >= 0; --i) {
if (a == 0) {
next = i;
maxrt = 0;
} else {
if (i != n - 1) {
next = next[i + 1];
maxrt = max(maxrt[i + 1], a);
} else {
next = -1;
maxrt = a;
}
}
}
for (int i = 0; i < m; ++i) {
int l, r, h;
scanf("%d%d%d", &l, &r, &h);
if (next[l - 1] != -1 && next[l - 1] < r) {
printf("Yes\n");
continue;
}
if (prev[l - 1] != -1) {
if (maxlt[l - 1] < h) {
printf("Yes\n");
continue;
}
}
if (next[r - 1] != -1) {
if (maxrt[r - 1] < h) {
printf("Yes\n");
continue;
}
}
printf("No\n");
}
return 0;
}
260 1804922
>>804917
Пашол нахуй гандон и лишние либы с собой забирай
261 1804926
>>804917
Замени scanf на input и printf на print и у тебя получится прога на питоне
262 1804971
>>804856
А он точно умеет все то же?
263 1804975
>>804731

> Лол


Но это действительно дохуя. Boilerplate & Copy-paste.
264 1804988
>>804901
Нет смысла
265 1805055
>>803187
Спс
266 1805122
>>803187
ток какого страуса a tour of c++?
image.png108 Кб, 725x316
267 1805136
аноны обьясните плиз этот синтаксис, что делает двоеточие после функции Player?

class Player : public Entity
{
private:
string m_Name;
public:
Player(const string& name)
: m_Name(name) {}
string GetName() { return m_Name; }
};
268 1805141
>>805136
Инициализация полей в конструкторе
Как бы
Player()
{
m_Name = name;
...
}
269 1805145
>>805141
понял, большое спасибо!
270 1805229
>>805122
Я про книгу Страуструпа "Язык программировния C++". Желательно читать 4-е издание, про C++11. Только вот он на английском. Перевода нет.
Ну можно ещё 3-е специальное издание. Но тогда ты будешь изучать старую версию плюсов. В новой многое поменялось.
Я рекомендую эти толстые книги. Именно в них расписана вся-вся-вся суть языка. А другие его книжки - фуфло, язык по ним ты не выучишь. Там дополнительная или обзорная информация.
271 1805235
>>805141
Не совсем, у тебя сначала вызывается дефолтный конструктор для поля, а потом копирующий конструктор. После двоеточия только один вызов конструктора с аргументом.
272 1805250
>>805235
nm_Name{name};
Исправит проблему или все равно дефолтный вызовется?
273 1805252
>>796605 (OP)
C++ - это Си с классами?
274 1805260
>>805250
Только после двоеточия, ну или прямо в теле класса значением по умолчанию. Компилятор не знает, что ты будешь делать в теле конструктора, поэтому все члены класса так или иначе должны быть сконструированы до него, включая ссылки и объекты без дефолтных конструкторов.
275 1805264
>>805252
Нет блять питон со структурами
276 1805265
>>805264
а что в питоне нету структур?
277 1805268
>>805265
Там по моему вообще динамическая типизация
278 1805269
>>805229
мб с++11 тоже устарел ещё 14 17 и 20 успели появиться
279 1805290
>>805269
Там уже в целом не такие большие потрясения.
280 1805304
>>805269

>14 17


Ничего серьезного, по большей части синтаксический сахар и небольшие улучшения.

>20


Ещё пару лет на него только переходить будут, успеешь догнать
281 1805394
>>805268
Звучит как пост для бугурт треда
ДИНАМИЧЕСКАЯ
@
ТИПИЗАЦИЯ


Кто вообще придумал неявные рантайм-проверки неявного же параметра назвать типизацией.
282 1805559
>>805394
А потому, что каждый объект несёт свой тип. И это безумно мощно и удобно. Неявные проверки, кстати, в старину отключали в отлаженных программах.
мимо из лиспа
283 1805573
>>805559
Объектов не существует, как и типов, есть только байты!
Нет б-га кроме Ричи и Страуструп пророк его. Покайтесь, ибо пиздец!
284 1805587
>>805573
Каких еще байтов? Слов.
285 1805603
>>805559

> И это безумно мощно и удобно.


Ну я в qt тоже могу в рантайме узнать какого класса объект каким методом меня вызывает, узнать все про его поля и методы, но требуется это обычно чуть чаще чем никогда.
286 1805675
>>796605 (OP)
Пацаны! Кто программировал WinAPI GDI, подскажите плиз.
Вот есть такая функция GetDeviceCaps(), она для Device Context возвращает его характеристики, вроде разрешения экрана.
Меня интересует её параметр PLANES - количество цветовых плоскостей. Функция выдаёт мне тут 1.
Кто-нибудь, может объяснить, что это такое? Я понимаю, что есть BITSPIXEL - количество бит на пиксель (у меня 32). Оно может быть 8, 16, 24, 32. Это настраивается в Свойствах Экрана. Но PLANES?
Что это за плоскости такие? Нигде в официальной документации описания этого я не нашёл. Я слышал, в видеопамяти, бывает отдельно лежат массивы красных, зеленых и синих пикселей экрана. Друг за другом. Вот это и есть плоскости. Это правда? Если так, нахуя так странно делать, и какой прок мне знать их количество?

А ещё, мне хотелось бы знать про GDI - есть ли в нём способ получить прямой доступ к памяти, и рисовать прямо устанавливая цвета пикселей без вызова SetPixel(), т.к. это тормозит.
Вот в DirectX можно сделать Surface, для неё вызвать Lock() и получишь искомое. А в GDI можно? Что-то я это не нахожу.

Заранее спасибо, с меня сотни нефти.
287 1805681
>>805675

> А в GDI можно?


Неа, директ и создали чтобы это обходить, гди слишком тормозной для игор. Я где-то слышал это даже изначально не мс разработка.
Про остальное хз, наверное что-то связанное с рендером на любом говне.
288 1805682
>>805394
Это пиздос, когда нужно написать больше 30 строчек на питоне, ты вместо этого сидишь и дрочишь преобразования одних типов в другие, потому что явно сука нигде не указано, что функция возвращает и какого типа у неё параметры.
289 1805743
>>805682
очевидно что когда тебе нужно "преобразовывать" типы, то ты уже проебался
в лучшем случае делаешь костыль, а в худжем вообще используешь предложенный тебе программный код не по назначению
в этом и смысл статической типизации
290 1805754
>>805743
Я про свой экспириенс с питоном написал. Со статической типизацией у нас в треде проблем нет.
291 1805772
>>805743
Когда будешь писать что то сложнее laba.cpp, узнаешь зачем преобразовывают типы.
292 1805778
>>805675

> GDI


ПЧувак, одумайся. Оно тебя медленно сожрёт.
Не стоит вскрывать эту тему.
293 1805805
>>805252

Братан, сосредоточься лучше на девочках. Может там у тебя что-нибудь получится.
294 1805806
>>796900

Докерфайл видишь? Ставь докер на винду.
295 1805810
>>805772

> laba.cpp


20 лет назад написал уже
296 1805823
>>804988
Ты ж сказал

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


А с хешированием надо сравнивать не все, а только где хеши совпали
297 1805824
>>805675

>есть ли в нём способ получить прямой доступ к памяти, и рисовать прямо устанавливая цвета пикселей без вызова SetPixel()


Да, посмотри GetBufferedPaintBits

Вкратце делаешь пару BeginPaint/EndPaint как обычно, внутри них делаешь пару BeginBufferedPaint/EndBufferedPaint, и внутри них уже вызываешь GetBufferedPaintBits чтобы получить буфер, куда писать пиксели
298 1805843
>>805675

> Planes


Плоскость может содержать для каждого пикселя один или несколько битов. Так делали для экономии памяти и упрощения адресации: 3-битный цвет удобно раскидать по трем плоскостям, например. А если тебе при этом нужно только 2 цвета, ты работаешь с одной плоскостью, а остальные две просто сидят в устройстве и забиты нулями. Современные драйверы, скорее всего, будут всегда содержать одну плоскость.
299 1805848
>>805823
Ну так в чем разница будет между хешем и картой? У меня при хранении карты лишних байтов нет.
300 1805865
>>805848
В том, что когда ты ищешь по хешу, ты не сравниваешь хеш каждой старой карты с хешем новой. Ты считаешь хеш новой, и он тебе сразу дает адрес "хранилища" всех остальных карт с таким же хешем, и дальше ты уже ищешь только среди них, сокращая количество перебора на порядки.
Что является "хранилищем" зависит от того, где это всё хранится. Если на диске, то хеш может использоваться как имя папки, например. Ну или если это добро целиком в память загружено, то можно просто в unordered_map все эти карты затолкать, и скормить ему функцию хеширования, остальное он сам сделает.
301 1805867
>>805865
точнее, в unordered_set
302 1805879
>>805867
Спасибо
Снимок.PNG15 Кб, 390x516
303 1806353
Сап аноны. Вот задача. Вот решение. Оцените:
Задача:
Вычислить число повторений в заданном разряде (не выше единиц тысяч)
случайного десятичного числа. Использовать оператор множественного выбора
switch и генератор случайных чисел rand(). Вывести результат.
Пояснение: нужно посчитать сколько раз будут повторяться цифры 0, 1 .. 9 в одной
из позиций числа для N случайных генераций числа.

Решение на пике
304 1806360
>>805824
>>805843
Спасибо
305 1806406
>>806353
Нахуя тебе этот свич кейс если у тебя в любом случае независимо от результата ch%10 будет инкремент в sum[ch%10]? Можешь просто оставить sum[ch%10]++.
306 1806407
>>806406
я бы с радостью, но в задаче просят, чтоб свич точно был
охуеть.png15 Кб, 673x261
307 1806451
Репетиторы с авито в конец охуели, анончик, может ты подскажешь почему компилятор схлопывается? В коде пытаюсь рандомному слову из вектора поменять символы на черточки:

#include <iostream>
#include <vector>
#include <algorithm>
#include <ctime>
#include <cctype>
#include <string>
using namespace std;
int main()
{
vector <string> words;
words.push_back("ooo");
words.push_back("oooo");
words.push_back("ooooo");
words.push_back("oooooo");
words.push_back("ooooooo");
srand(static_cast <unsigned int>(time(0)));
random_shuffle(words.begin(), words.end());
string theWord = words[0];
vector <string> changedWord(theWord.size(), "-");
for (int i = 0; i <= theWord.size(); ++i)
{
cout << changedWord;
}

return 0;
}
охуеть.png15 Кб, 673x261
307 1806451
Репетиторы с авито в конец охуели, анончик, может ты подскажешь почему компилятор схлопывается? В коде пытаюсь рандомному слову из вектора поменять символы на черточки:

#include <iostream>
#include <vector>
#include <algorithm>
#include <ctime>
#include <cctype>
#include <string>
using namespace std;
int main()
{
vector <string> words;
words.push_back("ooo");
words.push_back("oooo");
words.push_back("ooooo");
words.push_back("oooooo");
words.push_back("ooooooo");
srand(static_cast <unsigned int>(time(0)));
random_shuffle(words.begin(), words.end());
string theWord = words[0];
vector <string> changedWord(theWord.size(), "-");
for (int i = 0; i <= theWord.size(); ++i)
{
cout << changedWord;
}

return 0;
}
308 1806458
>>806451
Очевидно ты хотел написать string changedWord, а не vector<string> changedWord.
309 1806459
>>806451
Но цикл в любом случае бессмысленнен. Что ты считаешь? Количество букв в слове. И что дальше ты делаешь?
310 1806475
>>806451
Пидор демпингует, а ты в 2020 не можешь:

1)Скомпилировать сам и посмотреть какую ошибку компилятор выдает
2)Поискать её в гугле
3)Если на предыдущие пункты айкью не хватило, то хотя бы дать анончикам код в удобоваримом варианте, которые на доске описаны.

Поэтому этому соси хуй.
311 1806549
>>806451
700 рублей? Я бы с тебя минимум косаря 2-3 брал, лал.
312 1806709
>>806549
Да что такое 700 руб нынче? Это пшик!
Я их трачу за один поход в магаз за ёбаными продуктами. Или 1 раз пообедать в забегаловке.
313 1807154
>>796605 (OP)
Есть где-то Argon2id/chukwa майнер, с поддержкой СUDA 8.0,
для GPU-майнинга Nvidia-видеокартами,
TurtleCoin-based монет с кастомными префиксами,
и прямо на daemon?
Насколько сложно заебенить такую хуйню?
Можно ли её заебенить, дополнив этот майнер https://github.com/turtlecoin/turtlecoin/tree/development/src/miner
какими-то cuda-файлами и задав кастомный префикс, в виде магического аргумента командной строки?

Не шарю в двух плюсах ваще.
image.png235 Кб, 409x405
314 1807161
Можете посоветовать ютуб канал где норм обьясняют плюсы, мне для ue4 надо, знаю некоторые темы поверхостно типа абстрактные классы виртуальные функции и тд но как то не уверен в своих знаниях, практики не было особо, например ща не знаю как реализовать поиск предметов в инвентаре для квеста, нужно написать предикат но я хз как, там еще и лямбду использовать надо которую я впервые вижу и это пугает, да и вообще не понимаю как эту документацию читать, https://docs.unrealengine.com/en-US/API/Runtime/Core/Containers/TArray/FilterByPredicate/index.html в синтаксисе одно а на примерах вообще другое вижу, простите за такой высер, если не канал то хотя бы дайте темы я там сам нагуглю
315 1807296
>>807161
Что непонятного то? Вот у тебя массив предметов допустим items. Пишешь просто что-то вроде этого https://pastebin.com/g0PcxYnH и все.
XIoBwpLwhptStFu0.mp45,3 Мб, mp4,
720x720, 0:44
316 1807329
Приветики
317 1807380
>>807161

>ютуб канал


Почитай условного Прату с C++ Primer или любую другую книгу из шапки. А так для твоей конкретной проблемы можешь поискать конкретные примеры на гитхабе. Вот первое, что попалось по запросу " "FilterByPredicate" TArray ":
https://github.com/MasteraVodoProvodchiki/frox-ue4/blob/5daa4e50467dcab4cd0f1104106be020e5da5fcc/Plugins/FroxPlugin/Source/FroxPlugin/Private/FroxComputeFlowAsset.cpp#L203
https://github.com/SheepShanker/UE4-4.23.1-release-toon/blob/37596dc49be3f95af5355422d942ad26ea7c4789/Engine/Source/Runtime/Online/BuildPatchServices/Private/Tests/Fake/ChunkReferenceTracker.fake.h#L39
318 1807402
>>807329
какой же он долбоеб
319 1807407
>>807329
Если плюсы не в правом верхнем углу политических координат, то что же там?
320 1807408
>>807329
Такой чепушила от одной плюхи отлетит. Его вид дискредитирует крестобояр
321 1807460
>>807329
Столкнуться с подобным на рабочем месте — мой основной страх перед трудовой эмиграцией. Как блядь насмотришься на этих хуесосов, настроение сразу падает.
322 1807464
>>807296
>>807380
спасибо анончики
323 1807478
>>807161
ты роботаешь уже, челик?
или только учишся?
324 1807479
>>807154
какой у тебя бюджет?
325 1807501
326 1807505
>>796914
Так он недорогой...
327 1807533
Аноны, подскажите, а бывают хипстерские digital-nomad c++ девелоперы в 2020? Или это только в потном офисе полном задротов сидеть и писать микрооптимизации? Я не троль, вопрос искренний
image.png9 Кб, 459x476
328 1807580
Почему char выводит 13? Я думал чар будет указывать на первый байт инта. Но он указвает на последний. Я не понимаю
329 1807582
>>807580
У тебя последний байт идёт первым. Остроконечник сраный.
330 1807585
>>807582
Блять. Я перепутал порядок.
image.png14 Кб, 1346x310
331 1807609
>>807582
стой. я не понял. На пике то как я понимаю числа представлены. Где ошибка?
332 1807614
>>807580
Это UB
333 1807617
>>807609
Про endianness почитай
334 1807618
>>807617
Прикольно. Я как узнать какой порядок у меня, компилятора на левом сайте, и от чего от зависит?
335 1807620
>>807580
Младший байт инта у x86[_64] это и есть первый его байт в памяти, Little Endian называется, гугли.
336 1807625
>>807618
#include <bit>

if constexpr (std::endian::native == std::endian::big)
{
}
else if constexpr (std::endian::native == std::endian::little)
{
}
337 1807629
>>807625
Это зависит от ос?
338 1807630
>>807629
От архитектуры процессора.
339 1807634
>>807629
Это зависит от железа, по большей части. При разработке на пк с big endian столкнешься пожалуй только в обработке изображений, да передаче данных по сети.
340 1807635
>>807630
Фух. Мне возможно мой код надо будет с винды на линукс переносить. Думал мозгоебля обеспечена
341 1807639
>>807618
Лучше всего прогать так, чтобы зависимости от порядка байтов не было. Не нужно из указателя на int извлекать char. Прочитай весь int, выдели char операцией типа & 0xFF.
342 1807643
>>807639
Мне нужно данные с клиента на сервер принять, вот и ебусь. С клиента они пришли с порядке о большего к меньшему
343 1807644
>>807643
Все эти обработки уже есть в стандартных сетевых либах.
344 1807645
>>807329
Этот чувак кста делает вашу и мою любимую студию
345 1807647
>>807645
Поэтому я использую VS code
346 1807648
>>807644
Ну мне нужно отправить поле игровое. Я его так и отправлял. Привык, что порядок такой ну и отправил. А на сервере какая то ерунда началась. Когда вывожу в сыром виде, все ок, работает. Пытаться обработать, запихнуть в примитив через указатели и начинается что то странное.
347 1807653
>>807647
Не только студию, но и поддержку студии в vs/vscode......
348 1807656
>>807648
Чтобы что-то куда-то отправить (и где-то принять), нужно это сперва сериализовать в соответствии со строгим протоколом, иначе уязвимая система получится.
349 1807665
>>807645
Он ее не делает, он пиздит и на конфочках выступает. Девелопер адвокат он, или чето такое
350 1807669
>>807656
Ну как я это представил: первый байт тип команды, потом в зависимости от команды структура разная. Для команды сохранить поле структура такая: в начале 2 четырехбайтовых поля размера поля, а потом само поле в бинарном виде. Поле это по сути размеченый в клеточки прямоугольник, так что по размерам можно спокойно работать с полем. Двоичные данные приходят нормально, я проверил. Дальше что произошло я уже объяснил.
351 1807712
>>807669

> четырехбайтовый размер


man ntohl
352 1807776
>>807161
Ты как на работу устроился бля?
353 1807779
>>807625

>if constexpr


У меня с++11...
354 1807786
>>807779
Ну так перейди на c++17
355 1807789
>>807786
Дома перешёл. На работе не перешёл.
356 1807791
>>807789
а почему не перешел? Мы вон вообще все наши проекты мигрировали на С++17 + /permissive.

Как только выйдет новая студия - поедем на C++20, т.к. весь преворк уже сделан.
357 1807795
>>807779
Тогда только дефайнами, а их уже подставляй из мейкфайла или что там у тебя.
358 1807808
>>807791
Потому что проекты не мигрировали.
359 1807810
>>807808
ну так в чем проблема взять и мигрировать? Чинишь ошибки компиляции пока не взлетит и всё.
360 1807815
>>807810
Ой далбаеб...
361 1807816
>>807810
Есть тысяча и одна причина, ты серьёзно сейчас? Или джун?
No offence
362 1807828
>>807816
Нет я очень далеко не джун, я просто вьебал 3 дня и перевел все наши, и так достаточно хорошо написанные проекты. на С++17.

Единственное, конечно, что у нас все депенденси либо хедер-онли, либо не заброшенное говно.
363 1807838
У нас на одном из проектов в телекоме была либа написанная в стиле до-С89 скомпиленная в 95 году. Переписали ток в прошлом году на с++17 когда под изменения в спецификации надо было добавить небольшой функционал и то просто потому что тот сурц ни одним компилятором уже нахуй бы ни собрался
364 1807846
>>807838
Надо было на Яву переписать
365 1807847
Мб кто то шарит, вот сделал курсач в clion сервер на линукс, стандартная библиотека + сокеты и даже в режиме отладки в clion он мгновенно отвечает, а как запускаю в рабочей среде, то все пиздец, ответ от моего сервера 10 секунд блять, да как так то?
366 1807849
>>807847
ой бля, он в простое забивает одно ядро в 100%, да как так то
367 1807859
>>807849
Слушает в бесконечном цикле, это нормально.
368 1807868
>>807859
я уже нашел вроде, надо заPOLLить его, вроде должно скрыть очевидные недостатки
369 1807885
>>807847
Вот она, непредсказуемость ++с
370 1807918
>>807816
Ну расскажи мне про сложности тестирования своей лаба2.cpp
371 1807963
1464402838317.png85 Кб, 584x431
372 1808581
373 1808671
>>808581

>even in the presence on threads


Ага, и там в хотлупе потом боттлнек из-за thread-safe-static-initialization. Проходили.
374 1808675
>>808671
Но в целом миленько, да.
375 1808774
>>808581
call_once для кого придумали?
376 1808818
>>808774
call_once нужно откуда-то вызывать, а тут декларативно.
377 1808833
>>808818
Ох блядь. А iile - это не вызов?
378 1808868
https://ideone.com/1Mt6od

Какого хуя здесь происходит. Почему эта залупа вообще скомпилировалась?
379 1808886
>>796605 (OP)
Внимание, нюфага вопрос.
Почему когда я гуглю какой-то вопрос, то там обязательно присутствует кусок говно кода?
По типу гуглишь какую-то функцию из стандарт библиотеки, а какой-то 12лет пробраммист переписал эту функцию на свой лад с лярдом костылей и говностилистикой.
380 1808891
381 1808894
>>808833
Так в случае с call_once надо будет написать все то же самое, только оно будет еще и в call_once обернуто и заведена дополнительно переменная под флаг. Может я что то не так понял?
382 1808898
>>808868
warning: variable 's' is uninitialized when used within its own initialization
383 1808976
>>808868
Потому что передается указатель, известный до создания переменной.
384 1809024
>>808898
Не смог заставить g++ сказать что-то похожее
385 1809175
Обьясните дегенерату на пальцах. Что это означает?

"Значение типа const char * нельзя присвоить сущности типа LPWSTR"
Говорят нужно включить в настройках проекта многобайтовую кодировку, но не могу найти где.
387 1809184
>>809180
БЛАГОДАРОЧКА,
Дай бог здоровья.

Прям бля, пиздец, шоб шишка стояла.
388 1809213
Бля, а теперь ругается что:
Значение типа "const wchar_t *" нельзя присвоить сущности типа LPSTR
Осталось это победить.
389 1809216
>>809213
Тупит на эти две нижнии строчки.
STARTUPINFO startInfo1 = {}, startInfo2 = {};
startInfo1.lpTitle = "Child Process 1";
startInfo2.lpTitle = "Child Process 2";
390 1809225
>>809216
Чем убрать ошибку?
const wchar_t нельзя присвоить сущности типа LPSTR
На многобайтовую кодировку переключил.
391 1809251
>>809216
STARTUPINFOW
392 1809284
>>809225
Нашел. Надо было отключить режим совместимости.

Тогда все заработает
393 1809862
Кто-нибудь писал на ардуине, пользуясь библиотекой FastLed?
394 1809898
Можно ли делать на с++ приложения для андроид?
395 1809905
>>809898
Можно. Компилируешь ndk и получаешь .so
Минимальная обвязка на java там все равно будет чтобы запустить + многие функции API тебе придется дергать через jni интерфейс.
396 1809921
>>809898
Qt кажется сам все спокойно под андроид собирает
398 1809931
>>809921
Не сам, ндк все равно нужен.
399 1809934
>>809931
Ну да. Там че то нужно скачивать. Я в том смысле что тебе будет похуй под какуб платформу писать. Он скомпилирует и под андроид и под комп
400 1809957
Ананасы.

При создании массива:

int *Arr;
Arr = new int[ 4 ];

Шо происходит?

Как я это понимаю - создаётся массив из указателей, которые хранят адреса на данные типа инт.

Иле же второй вариант - выделяется группа адресов под тип инт?

Нахрена я это спрашиваю.

Идея следующая - избежать лишних копирований. Вот есть массив размером 30 и два по 5. Задача скопировать туда данные с неким смещением от начала массива и есть два варианта первый и простой - просто копируем со смещением, второй - заполнить итоговый массив лишь адресами на элементы каждого из массивов. У меня путаница и недопонимание - мне для воплощения второго плана нужен просто массив созданный как выше или всё таки нужен массив указателей на указатели.
sage 401 1809959
>>809957
Выделяются четыре слова памяти, Arr = адрес начала.
402 1809960
>>809957
Все неправильно. Выделяется одна область памяти под 4 инта и на первый элемент указывает твоя переменная Arr.
403 1809961
>>809959
>>809960

Понятно. Тогда каким должен быть массив, в который бы копировались лишь адреса из этих двух? Такое вообще возможно?
404 1809967
>>809957

>массив размером 30 и два по 5


Куда сам сядешь, куда данные скопируешь?
405 1809969
406 1810002
>>809961

Две звезды.
407 1810010
>>809961
Нихуя не понял, адрес если что больше весит чем инт в х64, так что не сработает твой план оптимизации. Оставь как есть копирование и не еби себе мозг.
15975425666630.png352 Кб, 850x850
408 1810092
>>809967
UB раз или segfault в глаз?

Как правильно заходить в функцию? Стек фрейм под ноги бросят - не поднимай.

void* из стека или optional c кучи?

Две ветки в деструкторе - в одной abort, в другой throw. Куда приземлишься?

Мать жива?
409 1810145
>>810092
Шуе цпп! Благодарю, анончик.
410 1810228
Простите сетевого инженера за вероятно тупой вопрос. У меня знакомый пытается найти джуном/стажером вакансию на крестах. Знает судя по всему не очень много, в основном сам синтаксис и с winapi работал. Печатает двумя пальцами. Я ему говорю что затея выглядит тупой и пусть с его уровнем изучает другой стек куда проще вкатиться. Он всё ищет вакансию. Мне интересно, это реально вообще такое найти? Или стажерских/джуновских вакансий на данном языке в России нет в 2020?
411 1810258
>>810228
Вакансии есть, но требования пиздец. С ЧУТЬ ЧУТЬ СИПЛЮСПЛЮС и ЧУТЬ ЧУТЬ ВИНАПИ - это дохлая тема.
412 1810264
>>810258
А какой стек вообще вкатышу надо знать? У меня создаётся впечатление что с++ язык для того чтобы лазить под капот систем, соответственно нужны хорошие знание в целом в компьютер сайнс.
413 1810269
>>810264
Достаточно знать С++, но хорошо.
414 1810274
>>810269
Понятно. Эхх, бедолага... А мог бы PHP учить. Или даже пакеты ловить ртом и выпердывать жопой как я. Всё больше денег было бы
415 1810279
>>810274
ну я, не смотря на свою адовую зарплату крестовиком таки считаю, что сейчас правда 0 смысла вкатываться в кресты, только по очень большой любви.

Сишарп\го\тупоскрипт - сьедобно и оплачивается, как минимум, не хуже
416 1810283
>>810279
Ну я так понимаю ты как раз человек который разбирается в очень большом спектре IT знаний и наверное обслуживает легаси при этом?
417 1810309
>>810092
> Две ветки в деструкторе - в одной abort, в другой throw. Куда приземлишься?

throw конечно, там хоть выбраться можно
418 1810316
>>810283
я вкатился по очень большой любви, и потом мне 3 раза подряд охуительно повезло с работой. С++ я знаю на очень серьезном уровне, и вообще да, разбираюсь дохера в чем.

Но, судя по всему, я бы мог еще х2 получать, удаленя на какой-нить параше типа тайпскрипта.
419 1810398
>>810316
Заходишь в компилятор, тебе ассемблер под ноги кидает strcmp, в какой регистр каунтер положишь?
420 1810416
>>810398

>strcmp


Си тред два блока вниз
421 1810429
Сап ночной, есть небольшая самописная либа на плюсах, для сборки которой используется cmake. Вопрос: чем бы вы воспользовались для тестирования либы? Я хз юнит-тесты это или нет, но нужно просто подергать на либе нужные функции с известными параметрами и убедиться, что возвращаются правильные значения.
422 1810438
>>810429
Любая библиотека для юниттестов. Например Catch2 или Doctest, и отдельный таргет в симейке, который будет запускать их.
423 1810462
Можете плез пояснить, какого хуя для си есть хвостовая оптимизация, а для плюсов нет? Компилятор gcc, код тот же самый.
424 1810463
>>810462
а бля, я дебил сонный, не из той лабы в си компилятор код запихнул
425 1810466
>>810463
и ты бы еще все таки -O2 добавлял
426 1810710
>>810092
bullshit
427 1810716
>>807533
ряженые челики на конфах
это наш максимум
428 1810718
>>807478
чому не отвечаешь?
как такие челики как ты роботу находят?
429 1810851
>>807533
бывают бывают. В Нвидии пара команд, типа той же КУДЫ - полностью на удаленке еще до пандемии была. Другое дело, что там официальное трудоустройство и с налогами есть нюансы, если ты будешь больше полугода жить не в стране устройства...
430 1810893
Пришел с C# и что я вижу? Чтобы сделать гуй - надо ставить и учить фреймворк, чтобы юзать шифрование - надо искать либу, и разбирать тонны кода, да бля - самое простое base64 надо писать с нуля (искать либу). Конечно супер, что сказать.
431 1810895
>>810893
Труе язык общего назначения, конечно тут не будет как в пхп json_encode()
432 1810898
>>810893
Бери го
Проблемы?
433 1810899
>>810893
Можно подумать в сисярпе не так, лол. Так же будешь учить фреймворки для гуя (что там с WPF под линупс?), так же будет какой нибудь BouncyCastle или BCrypt (постоянно вижу кучу thirdparty dll в папках с прогами, тот же Newton для json). Ничем тащемта не отличается от поиска всяких пакетов в нугете или что там у вас, только они распространяются в естественной форме - в виде исходников.
435 1810917
>>810901
Очень крутой набор ресурсов, спасибо.
1573329129477.jpg4 Кб, 160x160
436 1810925
>>810917

>не благодари


>благодарит

437 1810978
>>810901
Ещё бы научиться подключать эти библиотеки
438 1810989
>>810978
А в чем проблема? Добавляешь в проект все .cpp и в дополнительных каталогах включаемых файлов указываешь путь к папке с хедерами.
439 1811006
>>810978
vcpkg integrate install
vcpkg install mOyA_BiBlIOteka
440 1811039
Народ,помогите сделать лабочку,как это сделать используя только ветвления и циклы?
441 1811048
>>811039
Я понимаю, что помогаю тому кому не надо бы помогать, но if тут видимо нужен чтобы проверить четность степени и поставить минус, а цикле ты просто пробегаешься по степеням x как указано в формуле и получаешь итоговую сумму
442 1811058
>>811039
Только ветвления и циклы никак не получится, будет еще как минимум вызов фунции (main) и арифметические операции.
443 1811062
>>811006
Вот долго мучался с этим vcpkg но никак не смог подключить ffmpeg
image.png65 Кб, 939x438
444 1811087
>>811039
Харкни в лицо за такие ограничения. Лучше учись стандартными функциями пользоваться. Они бы ещё тебе на ассемблере сказали это писать
445 1811093
>>811048
Можно заабузить умножение на -1. Завести переменную равную -1 в каждой итерации делать *= для нее на -1. В итоге выходит как надо в первой итерации -1 х -1 = 1, во второй 1 х -1 = -1 и т.д.
изображение.png26 Кб, 591x525
446 1811095
>>811039
Бля пацаны,я дибил,там есть пример.Но так как я дибил я все равно ничего не понял
447 1811097
>>811087
Здравая мысль, ибо лезть в такие дебри только если это действительно имеет смысл, иначе трата времени получается. Узнаю наше бобразование, где за шесть лет ничему не научат.

>>811039
REVERSE
448 1811107
>>811087
Какой всратый код.
449 1811189
>>811062
vcpkg integrate install
vcpkg install ffmpeg
450 1811195
>>811189
Я конечно тупой, но не до такой степени, это всё я проделал как в туториале, как визуал студио не видела никакого ffmpeg и всё
451 1811253
Сап, заусманенный. Нужен совет.
Есть 2 структуры (пикрил 1), как видно они почти похожи, но некоторые поля имеют другой размер, почти все значения этих полей будут повторяться, что для одной структуры что для другой. Структуры будут записаны в файл.
Так вот, как заполнить структуру так, чтобы не плодить одинаковый код как на (пикриле 2)? Может это нормально, но как по мне всрато выглядит.
Думаю можно разбить структуру и составлять её по кускам и также по кускам записывать в файл как на (пикриле 3).
452 1811275
>>811253

> Так вот, как заполнить структуру так, чтобы не плодить одинаковый код как на (пикриле 2)?


Сделать какой-нибудь make класс\функцию которая будет возвращать нужное значение.
Типа
if( q == 1 ) { return { 0x1, 0x2 }; )
if( q == 2 ) { return { 0x1001, 0x20001 }; )
453 1811312
>>811253
Вся труевая сишная системщина - блевота.
Могу только предложишь обернуть это все в нормальный С++.
454 1811320
>>811253
Можно написать макрос #define, заполняющий общие поля одинаковыми значениями. И просто вызвать его и там, и там.
455 1811321
>>811320
Ещё, если это C++, можно определить эту структуру как шаблон, и передавать тот тип ULONGLONG в 64-битной версии как параметр шаблона. Сделать ему typedef внутри структуры и применять.
Аналогично, сделать шаблонную функцию для инициализации полей структуры.
456 1811346
>>811321
И вот это отличное идиоматичное решение, если наплевать, что получишь на выходе раздутый код.
457 1811354
>>811346
А он полюбасу выходит раздутым. Он и сейчас такой.
Правда, есть ли у чела C++ ?
458 1811365
>>811346
Ещё, если структуры отличаются не просто типом отдельных полей, а уже и их составом (где-то больше, где-то меньше) - тут уже с шаблоном туго. Правда можно юзать наследование. Но тогда опять, различия должны приходится лишь на последние поля. Вперемешку не выйдет.
.jpg40 Кб, 517x396
459 1811371
>>811253
Всех благодарю за ответы.
Даже не ожидал такой адекватности.
Программу писал на сях, вот этот только момент с структурами мне покоя не дает. Хочу переписать на плюсыси с классами, кода не много и использовать обертки над винапи, никогда такого ещё не делал. Буду дальше ковырять. Как подметил этот господин >>811365 вперемешку может и не получиться так как они ещё и одним полем отличаются. В любом случае попробую с шаблонами поиграться.
460 1811382
>>811253
Тут проще всего генерацией кода по текстовому шаблону.
461 1811395
>>811095
Беги с этого института
image.png34 Кб, 350x250
462 1811397
Есть карта для того, чтобы вкатиться в джуны по плюсам. Я просто хз что учить посе шаблонов и классов... Планирую на стажировку идти в игродел компанию по плюсам, тестовое просил - игнорят.
463 1811436
>>811397

>Есть карта для того, чтобы вкатиться в джуны по плюсам


Карты нет, так как плюсы во многом опираются на предметную область, в которой ты собираешься работать.
464 1811450
>>811436

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


А разве не везде так??
465 1811461
>>811450
нет
466 1811473
>>811450
Так, но во всех остальных местах предметная область называется ВЕБ, поэтому затруднений с планом меньше.
image.png617 Кб, 1126x814
467 1811488
Вкатываюсь в плюсы и стало страшно. Спп прогеры реально так выглядят?
468 1811492
>>811488
А чем тебе Бьорк не нравится?
469 1811497
>>811492
Старая уже, предпочитаю помоложе, а что?
image.png1,7 Мб, 1500x500
470 1811612
>>811488

>1488


Дави всех этих блядей
471 1811623
>>811488
Ты еще не видел растовиков.
472 1811628
>>811612
АСУЖДАЮ
>>811623
Видел, половина общаги таких.
473 1811878
>>796605 (OP)
Вкатываюсь(пытаюсь, во всяком случае) в С++ из Си (да да, я байтоеб микриков ебучих) и пытаюсь понять, чем подход ООП в С++ отличается от процедурного программирования в Си.

Я правильно понял:

Задача: написать прогу чтобы волк ел мяско и коровка кушала травку постоянно.

В Си инструкции выполняются одни за другой и там нужно писать так:

while (1)
{
wolf_eat(meat);
cow_eat(grass);
};

Когда в С++ объекты занимаются своими делами сами по себе, и если им поставить задачу, они будут ею заниматься без постороннего участия:

wolf.eat(meat);
cow.eat(grass);
while (1);
474 1811886
>>811878
В си ты заполняешь структуру указателей на функции своими колбеками и передаёшь получившийся объект дальше в функцию.

В плюсах ты реализуешь методы абстрактного класса. Вот и вся разница.
475 1811887
>>811878
Нет, там тоже будет цикл
while(1)
{
wolf.speak();
cow.speak();
}

разница начнется в том что на плюсах можно делать так

class Animal { virtual speak(); }
class Wolf : Animal { speak() { cout << "uwu"; } }
class Cow : Animal { speak() { cout << "moo"; } }

while(1)
{
for(animal& : list_animals)
animal.speak();
}
476 1811889
>>811887
Алсо цикл в каком нибудь фреймворке, конечно, можно спрятать.
Сделать какую нибудь регистрацию.
Впрочем это в любом языке.
477 1812001
>>810925
Я вредный вор просто.
478 1812003
>>811886
Иди выебывайся умными словами в другое место, гандон.
479 1812029
>>811886
Почему, объясните мне, почему вы называете это колбеками?
Да, ты эмулируешь "методы" таким образом, но это не само себе не обязательно должно использоваться коллбеков.
Это перпендикулярные вещи.
480 1812031
>>812029
Я проебался со склонениями, пока редактировал сообщение, но суть передана, надеюсь.
На всякий случай поправлю:

>Да, ты эмулируешь "методы" таким образом, но получившаяся конструкция может быть и никак не связана с понятием колбека.

481 1812085
>>796605 (OP)
Аноны, в чём отличие стандартов? Ну я более менее уже освоил С++(основы по книге одной книге Страуструпа), но так и не понял в чём отличие стандартов?

С++11 С++14 и т.д.

И сильные ли различия между этими стандартами?
482 1812089
>>811878

>Вкатываюсь(пытаюсь, во всяком случае) в С++ из Си


как будто сюда как то по другому попадают. все с++ выходцы из си.

обычно тру байтолюб после плюсов на асмы вкатывается. у меня лично такие планы после осовения с++ до приемлемого уровня перекатываться в асмы
483 1812090
>>812085
Довольно сильные, добавляют мощные фичи и чуть меняют смысл написанного ранее кода.
484 1812092
>>812090
То есть перегружают некоторые синтасические конструкции\символы\обозначения и добавляют поддержку каких-либо функций\библиотек?
485 1812107
>>812089
Я начал с плюсов, потом ушёл в си, асм и криптографию, потом ушёл в другую криптографию, в которую протягиваю плюсы.
486 1812118
>>812107
Ну ты олигарх прямо
487 1812136
>>811253
обычно такое делают иерархией наследования pod классов
488 1812149
>>812085
Рикаминдую Бартека Филипека: C++17 in detail. Там в основном про отличия именно 17 стандарта, но иногда и исторический экскурс, типа, "в 11 было так, в 14 так, а в 17 еще и так".
Приобрести можно на рутрекере
489 1812150
>>812149
many thanks to you
490 1812301
За сутки прочитал 300 страниц Страуса. Хули так просто? Всё схватываю читая по диагонали, задания на раз-два. До этого не кодил вообще (максимум шарил за типы данных и пупы с лупами). Если так дальше пойдёт месяца через 3-4 на работку вкачусь?
491 1812455
>>812301
Так там и написано так, чтоб было просто.
492 1812507
Мoжнo ли изменить стрoку типа string?
493 1812511
>>812507
В чем вопрос? Без выделения памяти или что?
494 1812540
495 1812558
>>812540
каким oбразoм?
496 1812561
>>812558
Str[0] = 'a';
497 1812572
>>812561
красава. гoднo. заменил элемент в массиве. тoчнo. благoдарю
498 1812578
>>812572
Каком массиве?
Вызвал operator[] для класса string, обратившись таким образом к элементу строки.
499 1812582
>>812578
стрoка этo пo сути массив oбъектoв типа char, маня
500 1812588
>>812582

>по сути


implementation-defined
501 1812639
ПОЧЕМУ? Почему c++ не такой популярный, как тот же шарп или джава... - CPP же просто АХУЕННЫЙ!!
502 1812643
>>812639
Медленно пишится код.
503 1812646
>>812639
Зачем это говно нужно? Всё ещё жалею что купил книгу по cpp, а не по нормальному языку, жалко денег теперь приходится читать
504 1812650
>>812646
Приходите, когда дочитаешь. Обоссышь
505 1812651
>>812650
Приходи*

быстрофикс
506 1812659
>>812301
а теперь попробуй сам написать калькулятор
507 1812664
>>812639
Потому что говно. Писать сложно так же как и на С, зато куча костылей и каша из сахара. В том же Zig намного приятнее сделано, но это пока что полигон для компилятородрочеров.
Я вообще начинал с C#, перекатывался на кресты и в итоге укатился на сишку в ожидании релиза Zig или хотя бы V.
508 1812676
>>812664
На плюсах писать так же легко, как и на C# С++ выглядит гораздо локаничней по сравнению с шарпом.
509 1812681
>>812676

> На плюсах писать так же легко, как и на C#


В С-стиле, да...
510 1812747
Есть сурс одной программы и Makefile для винды. Нужно скомпилировать под линукс. С чего тут вообще начинать? Билдиться из main.cpp не хочет
4k vs 1080p.jpg904 Кб, 3840x2160
511 1812748
>>812646

>купил книгу


Пикрелейтед. Книги покупать нужно пост-фактум, если тебе понравились или поставить на полку на высокое место, чтобы все видели.
512 1812750
>>812748
Ну так на первых порах мне понравилось, это когда начал углубляться осознал
513 1812817
Сап, ананасы.

Вкатываюсь в плюсы, есть два вопроса:
1. Что изучать после стандартной библиотеки? Вроде как основы уже знаю, хочется делать что-то большее, чем задачки с хакерранка решать, но знаний для стажировки даже, вероятно, мало еще, а сам я еще не настолько преисполнился, чтобы в свободное время пет-проекты пилить, да и идей ноль.
2. Каков шанс, что слова вроде "плюсы не нужны, нового на нем не пишут, хочешь денег - учи джаву" являются правдой? Спрашиваю у опытных крестописцев, хочется писать интересные и сложные вещи на божественном с++, двигать технологии вперед (да, розовые очки присутствуют), но с голой жопой под смешки джавистов, продавшихся банкам за 100к+, тоже сидеть нет желания.
Короче, как думаете, следовать зову сердца или забить уже и метить на позицию говнокодера в банке?
514 1812823
>>812817
В банк без вышки не берут
515 1812830
>>812823
Гы, вот это они лохи конечно.
516 1812836
>>812823
Я студент, с вышкой проблем не будет
517 1812840
>>812089

>как будто сюда как то по другому попадают. все с++ выходцы из си.


Нормальные люди поступают в вуз на программную инженерию и там учат computer science(ооп, алгоритмы и данные, архитектуру компьютера) и там же на лабах учат с++. Из них становятся хорошие программисты после окончания вуза.
А если ты пару лет байтоебил микрики с не-прогерским образованием(радиотехника, асутп, электроника и т.д.), а потом ты решил вкатиться в с++, чтобы больше зарабатывать, то нормальным прогером ты никогда не станешь, разве что каким нибудь быдлокодером-макакой.
518 1812841
>>812817

>интересные и сложные вещи


Ты индустрией ошибся. Попробуй медицину там, или какую-нибудь инженерию.
519 1812843
>>812841
Учусь на инженегра и мы тут все изучаем плюсы. Вопросы?
Мимо
520 1812846
>>812843
Плюсы в инженерных вещах сбоку припарка, причем самая неинтересная
521 1812849
>>812843
Охуенно изучаем, примерно до написания класса Stroka.

сам студень-инжинер
522 1812851
>>812841
Не ошибся. Понимаю, что чаще всего программирование это рутина, а не парк развлечений, но всякая рутина это часть чего-то большого. Понимаю, что во мне говорит энтузиазм начинающего, когда-то он пройдет, но сейчас мне просто нужно мнение более компетентных людей о современном положении дел, так сказать. Ну и совет, куда глядеть после STL, конечно.
523 1812853
>>812846
А что ещё можно учить на направлении мехатроника? Плюсы тут как по-мне незаменимы. А нет, вру. Пару раз на питоне модули писал.

>причем самая неинтересная


Очень спорно
>>812849
Не, у нас не так. В крайнем случае будет класс Čára.
524 1812854
>>812851
Программирование - это пиздец какая рутина. И тебя никто никогда не допустит ни до чего интересного первые лет 5 точно. И далеко не факт, что пустят дальше.

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

А глядеть никуда не надо - пиши полноценный код. Хуй знает, 2д игру, уебанскую базу данных, какой-нить говнопарсер парсер, хоть что-нибудь, только пиши.
525 1812857
>>812823
Берут, меня звали
526 1812858
>>812854
Спасибо за ответ!
527 1812885
>>812853

>А что ещё можно учить на направлении мехатроника?


Ардуины.
528 1812892
>>812840
радиoтехника и электрoника этo крутo. высoкoурoвневoе прoграммирoвание нинужнo
529 1812908
>>812892

>радиoтехника и электрoника


С пару сотен вакансий по 30-40к.

>высoкoурoвневoе прoграммирoвание


Десятки тысяч вакансий с зп 100-150к в среднем.
530 1812909
>>812854

>Вся работа - это дрочево, где ты лишь винтик.


Фикс.
531 1812917
>>812639
До первого UB.
532 1812919
>>812908
я обсуждаю это как хобби. гораздо интереснее с микроконроллерами тусоваться, с драйверами и методами ос, нежели со всякими сайтиками, играми и прочим фуфлом.

ну а так с твоей логикой что главное вакансии и деньги можешь вообще в js тред выкатиться
533 1812954
>>812909
ну у нас есть всякие системные архитекторы и исследователи, которым интересно все таки.
534 1813038
>>807479
А те не похуй?
Или ты типа за шиши сраные, пендосские, собрался пилить мне чо-то, своим кривым былдокодом, да капиталистоблядок?
Так я, лучче, сам запилю себе "Годный майнер" ©®™, а ты иди дальше клянчи бюджеты, в каких-нибудь мочерских гитхабах туртлакойна.
535 1813052
>>812817

>Что изучать после стандартной библиотеки


Очевидно буст
1600766552582.png369 Кб, 640x556
536 1813139
Сап. В шараге начали изучение цпп. Знаю самые азы можно сказать, что нихуя вообще не знаю и вкатываюсь с 0, но хотелось бы выучить какую-нибудь не очень сложную и потную, ибо время ограничено, но интересную тему во время написания курсача - приложения консольного/оконного с документацией, заливом в репозиторий и все как демка взрослого рабочего процесса. От какой области цпп лучше отталкиваться при выборе темы тему самому придумать надо чтобы на выходе она оказалась полезной для общего развития или актуальной/перспективной в ближайшем будущем?
537 1813156
>>813139
Win32+boost+курлы+жонглирование жсонами. рикаминдую
538 1813195
Какую-нибудь визуализацию для аудио. И UI, и байтоёбство, и матан. Hard: самим написать декодер. Dante Must Die: в реальном времени, с проигрыванием самой музыки.
539 1813246
>>813139
Работа с сетью, работа с графикой.
Бери либу imgui и ебашь какие-нибудь интересные проги, расчёты-хуёты, построение графиков и кривых десятого порядка.
540 1813274
Посоветуйте каких нибудь тестиков перед собесом на джуна
541 1813276
>>813274
cppquiz.org
45.png418 Кб, 680x680
542 1813480
>>813139
Напиши сетюидную прогу, которая печатает файл тогда и только тогда, когда у пользователя есть к нему доступ.
image.png137 Кб, 512x512
543 1813496
544 1813500
>>813156

>Win32+boost+курлы+жонглирование жсонами. рикаминдую


Слишком сложно.

>>813195

>Какую-нибудь визуализацию для аудио. И UI, и байтоёбство, и матан. Hard: самим написать декодер. Dante Must Die: в реальном времени, с проигрыванием самой музыки.


Если это мне, то тоже очень сложно, хотя я думал об этом.

>>813246

>Работа с сетью, работа с графикой.


>Бери либу imgui и ебашь какие-нибудь интересные проги, расчёты-хуёты, построение графиков и кривых десятого порядка.


С сетью думал об этом, что интересно, но я в этой области слабовато ориентируюсь. Графики слишком легко же, нет? Вбил x, получил y.

>>813480

>Напиши сетюидную прогу, которая печатает файл тогда и только тогда, когда у пользователя есть к нему доступ.


Что значит сетюидная прога и в чем смысл такой программы? Типа, кто-то обходит это ограничение и получает неправомерно информацию?

Кстати, интересно, какие перспективы у байтоебства? Мощности пк нарастают, и манагеры в основном требуют скорость разроботки в угоду производительности, по крайней мере, я про это читал. Получается, лучше прогать быстро, чем за каждый бит оперативы сражаться?
545 1813507
>>813500

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


От сферы зависит.
Моя софтина считает сто тысяч подписей в секунду на сферическом процессоре, а у конкурентов — 80 штучек в секунду. И перекрыть скейлинг количеством серверов при таком разрыве просто нереально. Это влияет на то, в какие секторы рынка можно протолкнуть ваш продукт, а в какие нет.

Но в очень многих случаях важно, чтоб работало, а ресурсов хватит, лишь бы не слишком хуево работало, а там дальше разберемся, если будет необходимо. Конечно в таких случаях лучше сделать до завтра, чем никогда.
546 1813516
>>813500

>Графики слишком легко же, нет? Вбил x, получил y.


Ну так сделай.
547 1813705
Аноны, в шараге начался с++ и всякие говнозадачки на массивы. 100500 циклов наворачивать желания нет, есть ли здесь какие-нибудь стандартные библиотеки наподобие linq в паскале и шарпе или стримов в джаве, чтобы лямбдовать в одну строчку и не париться?
548 1813714
>>813705
Пшёл вон.
549 1813718
>>813714
Не-а.
550 1813732
>>813705
Ranges v3
551 1813743
>>813732
Без дополнительных скачиваний не обойтись, видимо.. Вряд ли позволят, ну ладно.
552 1813750
>>813743
Есть в свежих компиляторах.
Ну тогда просто range for
for (auto &item : array) ...
553 1813767
>>813743

> Вряд ли позволят, ну ладно.


Ебанат? Что тебе там должны позволить? Нахуй такое заведение идёт
554 1813781
>>813705
#include <algorithm>
555 1813832
Подскажите - чем убрать имена функций в таблице экспорта, при статической линковке, в бинарнике?
556 1813923
>>813832
Емнип objcopy предназначен для стрипа символов.
557 1814002
>>813781
То что нужно, спасибо!
558 1814031
559 1814517
В ФАКе нихуя не понятно, что читать/смотреть после Бьёрна?
560 1814524
>>814517
Ну и раз тут у вас так людно провокну мини-бугурт: винда со студией или линукс с терминалом?
561 1814531
>>814524
Оба два.
Я обычно всю разработку веду под линуксом в терминале.
Там же отладка, тесты, етц.

Потом пулю ветку под виндой, собираю всё, доделываю виндо-специфичный функционал, вношу виндо-специфичные правки, етц.

Не понял с чего бугуртить. С того, что кто-то делает иначе? Ну и ладно.
562 1814534
>>814524
Винда + студия - если нужно, то кросскомпилирую через студийные ремоут средства на ВМке линуксовой.

Дедов с терминалом не слушай, они безнадежны
563 1814598
>>814524
Винда с вскодом, в котором есть терминал.
564 1814603
Раз зашла речь про линух, объясните вкатывальщику - нахуя он сдался? В плане, какие преимущества дает наличие этой оси на машине отдельно или в совокупности с виндой? Что такого там можно делать, чего нельзя сделать в VS?
565 1814604
>>814603
Тебе не надо.
566 1814615
>>814603
ПО разрабатывается обычно для какой-то операционки. Если говорить про РАБОТУ - то полноценная кроссплатформа там достаточно редкая вещь (ниразу не видел ни я, ни мои знакомые\коллеги). Соотв-но если ты пишешь какое-то серверное говно - то оно будет под линукс. Значит и разработка будет удобнее под линукс Хотя из этого есть исключения. Весь яндекс сидит на вижуал студии, хотя у них почти весь софт под никсы внутренний

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

Почти 3 года писал под линукс, когда увольнялся последний раз - работу с линуксом просто не рассматривал даже, ибо идут они нахуй. Сейчас уже 4 года на винде пишу на работе - полет отличный
567 1814627
>>814615
Понял, спасибо
568 1814658
Сап, есть бинарный файл, который нужно прочитать. Как байт я использую uint8_t. Однако, ifstream напрочь отказывается воспринимать значение как шестнадцатеричное. Но если определить uint16_t как байт, то все нормально. Что я делаю не так?
Формат файла:
ff e0 ab 22 14 88 и т.д.
Чтение:
file >> std::hex >> byte;
sage 569 1814692
>>814658
У тебя в файле ASCII, Юникод или что вообще записано?
С кодировкой разберись.
sage 570 1814695
>>814517
На работу джуном устроится.
(Про многопоточку читай, везде надо)
image.png56 Кб, 774x498
571 1814698
sage 572 1814700
>>814698
Что за NORMAL и сеточка?
Что вообще изображено на пике?
573 1814703
>>814700
Прочитал бинарный файл с содержимым как >>814658
Вывел его же через iostream

>>814658
>>814698
При выводе делай каст к int или используй +x.
iostream имеет overload для char, где последний интерпретируется как символ, а не как число.
sage 574 1814704
>>814703
Не, я имею ввиду, что за консоль такая.
575 1814705
>>814704
zsh + tmux + vim + powerline
sage 576 1814706
>>814705
Понял.
577 1814718
После прочтения принцип и практик страуструпа что изучать для вката в геймдев? Unreal engine?
578 1814727
>>814698
Блять, я что даун?
579 1814729
>>814727
Почему у меня b равно 0x63, а не 0xc0?
580 1814735
>>814698
Бля, я даун. Как создать БИНАРНЫЙ файл через консоль? Я создал текстовый через нано и думал, что если открыть через байнари, то все получится
581 1814736
>>814729
0x63 это 'c'
0x30 это '0'

А ты как думал?
582 1814739
>>814735
Можешь читать текстовый как бинарный, какая разница?
Просто игнорируешь смысловую нагрузку ASCII

А вообще: man xxd
583 1814740
>>814739
Лол, я ошибся. Я создал текстовый файл, в котором написал байты, а работал с ним, как с бинарным. У меня же байтовое представление отличается от строчного.
584 1814741
>>814740
Да это понятно
585 1814767
>>814718
Sdl и opengl
586 1814775
>>814658

> Бинарный файл


> Как шеснациричное


Ты ебобо?
587 1814786
>>814695
Если бы нашёлся кто-то кто возьмёт меня на работу после 1 прочитанной книги то я бы здесь уже не сидел.
588 1815213
>>814786
прочитал книг пятнадцать чисто по языку
безработный
589 1815221
>>815213
РНН или кроме чтения ничем полезным не занимался?
590 1815224
>>814603
можно выставить любой dpi, сделать его равным ppi монитора
есть растровые шрифты
по итогу можно сделать буквы что будут гореть пиксель в пиксель

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

по итогу идеальный ui можно организовать для кодинга

в винде, к сожалению, этого нет
591 1815232
>>814517
фак говно, тебя наебали
у страуструпа хорошие книги - 4 special ed, и "дизайн и эволюция языка"
592 1815234
>>815224
Причём не из-за того, что это невозможно, а просто она в этом направлении не развивается, там у людей немного другой workflow.

А я без вот этого

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


в нормальном виде жить уже не могу
593 1815238
>>815232

>фак говно


В этом то я уже убедился. Но раз уж я уже прочитал 2 издание то что делать дальше? Есть роадмап какой-нибудь или мне за нормальным факом на какой-нибудь реддит идти?
594 1815245
Сап анон, поясни это блядкую оптимизацию и кеширование. Короче есть код, который определяет длины отрезков в 3д пространстве для m начальных и n конечных точек. Я сделал тест производительности, и делаю различные реализации. Использую Eigen для операций.
Короче, анон, как бы я не улучшал математику (делаю матрицы поворота или n точек выстраиваю в матрицу, какие-то ухищрения в духе "если длина < порога, то вернуть ноль), и нет качественного прироста скорости.
Запускаю профилировщик, узкие места да, в моих функциях, больше всего тратитится ресурсов на sin, cos или atan2. Но анон поразительно то, что я кардинально менял подход вычислений, а на финальной скорости сказывается незначительно. В лучшем случае прирост был на 70%, хотя я ожидал раз в 100.
Как так? Как поступать?
595 1815260
>>815238
рекомендую
4 special ed страуса, шаблоны вандервуда, последнюю книгу майерса про 14е кресты
это в качестве минимума, чтобыхотя бы понимать современный код чуть-чуть
596 1815263
>>815245
делай тесты на больших данных
597 1815266
>>815263
Я и делаю. Тест около 100мс занимает, это много. Количество точек 1000 х 1000, попыток 20. Рандом при запуске
598 1815281
>>815245
cachgrind че говорит?
Ассемблер смотрел?
На SIMD сесть готов?
599 1815282
>>815260
За контент спасибо, это деду надо. А с какого момента примерно можно начинать пилить пет проекты и где подсмотреть идеи для оных? (понятно что я и сейчас с гуглом и стаком наперевес могу начинать но я бы базы ещё поднабрался). Ну и вообще в какие направления лучше всего уходить сейчас?
600 1815290
>>815245

>В лучшем случае прирост был на 70%


Нормальный прирост
601 1815325
>>815281
Про кншгрид не слышал, спасибо. Ассемблер не хочу смотреть, боюсь, не увижу каких-то там откровений, будут sincos.
А simd.. Eigen вроде учитывает всю эту хуйню, там тема выравнивания данных в топе. Короче, я думаю Eigen лучше меня соптимизирует векторизумые участки.

Анон, а что там с gpu? Есть ли смысл взять вулкан апи, там же вроде есть линал? Просто cuda проприетарна
602 1815413
>>815325

>Ассемблер не хочу смотреть, боюсь


Пора взрослеть
603 1815476
>>815245
Есть же либы с матрицами для того же opengl - glm

Не совсем в теме о чём речь слоупок
604 1815572
https://www.youtube.com/playlist?list=PLRDzFCPr95fL_5Xvnufpwj2uYZnZBBnsr
Норм тема вроде. Стоит смотреть?
605 1816244
>>796605 (OP)
Аноны, как сконвертировать

>uint64_t baseReward


отсюда:
https://github.com/satorigold/SatoriGold/blob/f36f7d003a7051818ba72f8d1142ae573f550a31/src/CryptoNoteCore/Currency.cpp#L155

в строчку, и вывести её здесь: https://rextester.com/l/cpp_online_compiler_gcc

Хочу рассчитать в цикле, все награды за все блоки в сети SatoriGold (SAU), которая без премайна, и которую мы майним вот здесь: https://miningpoolstats.stream/satoricoin
606 1816262
Чем дальше погружаюсь в кресты, тем больше начинаю понимать, что cpp это ёбанный мутант нахуй. Создать этого мутанта и была цель Страуструпа?
607 1816267
>>816262
Он его не контролирует. А мутант потому, что в комитете каждый добавляет фичу нужную ему (Nvidia, M$, Google и тд)
608 1816348
>>815572
Унылая ненужная хуйня
609 1816372
>>816348
js тред два блока вниз
610 1816381
>>816372
Алгоритмодаун, плиз
611 1816392
>>816267

> в комитете каждый добавляет фичу нужную ему


Только для принятия любой фичи не должно быть ни одного члена комитета, проголосовавшего против.
612 1816398
>>816392
А им похуй если не касается их области.
613 1816476
>>815282

>где подсмотреть идеи для оных


Даю идею, не благодари. Напиши игру - скроллер. Где самолёт внизу экрана летит вперёд, а сверху на него надвигаются всякие враги (и ландшафт на фоне). И надо сбивать врагов, или уворачиваться стрейфясь влево-вправо. Вот это была моя первая программа на плюсах.
614 1816477
>>816267

>M$


Вот, понимаешь, прилепился значок. MS уже не та что раньше.
Теперь у Apple самые загребущие руки. Вот к нему надо значок приделывать.
615 1816931
Анон, что такое SYCL? Который от Chronos Group (Vulkan, OpenCL). Зачем это нужно? Это какая-то обёртка на опенцл? Я тупенький, не понимаю
616 1817001
Сяп аноны. Создал мини хуету на плюсах с qt. Хочу сделать как ножницы винды, ток в выделенной области записывается гифка.

Вопрос, как захуячить гифку из набора кадров QPixmap, как прихуячить программу к кнопку принтскрина на линухе
image.png2 Мб, 1479x1180
617 1817026
Неделя вката в язык позади. Пока что всё выглядит сексуально. Это у всех так и я скоро перегорю или язык реально годнота? БТВ ещё вопрос - грамматики вроде пикрила у Страуса имеют практическое применение или это тупо способ выражать идею программы? Чёт какой-то страшно вырубай контент.
618 1817032
>>817001
Делай сразу шебмку
619 1817035
>>817026
Сколько шаблонов написал?
За неделю ты если только азы Си изучил - а он действительно няшный.
620 1817036
>>817026
Грамматика это грамматика. Компилятор так видит. Это то же самое, как если бы писал разбор по русскому - два - числительное, простое, количественное, целое, именительный падеж.
621 1817045
>>817032
gif формат хоть и имеет гораздо больший размер, всё же более удобен. В пересылке в телеге или другом мессенджере gif файлы в большинстве случаях запускаются автоматически и без каких либо проблем.
Впринципе уже знаю как сделать mp4, думаю и с webm проблем не будет. Но вот сука gif не поддаётся, хотя казалось бы самое простое.

Я хуй знает, буду благодарен даже если скинут адекватную статью по кодекам'/декодекам гифок. Хоть что-то за что можно зацепиться.
622 1817047
>>817045
бтв уже нашёл ImageMagick++. Сам для создания mp4 хуеты юзаю няшный OpenCV(хоть он и для другого предназначен лол).
ImageMagick я в рот трахал, там такая страшная документация, не удивительно что он не поддерживается.
Кароче реквестирую способы создания gif файла, имея массив картинок, которые сами по себе массивы x, y, RGB or HSV
623 1817058
>>817047
Там была какая то залупа с патентом, поэтому поддержку гифа все неохотно внедряли. Так то либ дофига
https://project-awesome.org/davisonio/awesome-gif#libraries
624 1817060
>>817058
да, вроде какая-то компания в далеком далёком году взяла да и сказала мол, права на гиф у меня, платите. А тогда гифками все уже активно пользовались и как ты понимаешь большая часть платить не собиралась. Что-то подобное и сейчас есть, какие то проблемы с правами/патентом, в общем комерческая жопа, ненавижу. Блять, права на самую простую кодировку в мире блять, ахуенно. Алсо гифка ко всем минусам ещё и уёбищно сжимает размер, раз в 6 хуже avc. Но увы, веб на ней хорошо сидит, как на героине) Хотя уже давно юзают на сайтах и урезанные mp4, у которых включили автоповторение и вырубили звук. Свои костыли

Да, видел это. Хотел почитать про то как это делается конкретно в коде, без юзания функций из коробки.

Спасибо.
625 1817075
>>817060
Как делать файл руками? Ну описаний формата полно, там довольно типично все - заголовок, размер картинки, палитра, потом кадры (со своими палитрами и размерами, если кусочек анимируется, и временем задержки) и все эти потоки упакованы lzw.
https://habr.com/ru/post/274917/
626 1817086
>>817075
опа, годная статья. Хз как пропустил, уже почти на второй странице гугла был. Спасибо, анонче.
627 1817105
>>816267
Не. Мутант ещё из-за необходимости обратной совместимости. Сначала с C, а теперь и с предыдущими стандартами C++
628 1817120
Вашу ж мать, почему на дебильный джаве дозуя либ и фреймворков, а в плюсах зато сраный three-day comparison.
А я, как дебил, в два часа ночи, вместо того, что бы давно вкорячить какой нибудь Спарк, пилю сраное говно на плюсах, потому что "мы не тащим в наш стек лишние технологии".
629 1817216
>>817120
Джавист порвался)
Сложно всё ручками делать, самому, да? А теперь представь титанов, что твои Лиды на джава написали, иди джаву машину
photo2020-09-0711-21-51.jpg164 Кб, 960x1200
630 1817230
аномисты, а что будет если в main.cpp подключить условный govno.h и map.h, а в govno.h подключить снова map.h, про pragma once я знаю, а map то по итогу будет подключен 2 раза? В плане размера файлов, компилятор оптимизирует это, или что вообще произойдёт.
То, что не будет проблем, я в курсе, сказочные ifndef endif pragma once, но я спрашиваю именно про размер выходных файлов, он будет больше нежели бы мы один раз подключили Map?
631 1817237
>>817230
Не больше.
632 1817251
>>817237
Спасибо
633 1817507
Поясните за выравнивание данных. Зачем это нужно? Я понимаю, когда double помещается в одну ячейку, а не разбивается на две. Тогда доступ к нему требует одной операции чтения.Но в чем профит выравнивания адреса для кратности с размером данных?
634 1817545
>>803790

> примеры (хорошего) кода


> - Исходники игр, игровых движков. Doom 2, Doom 3, Unreal



Давай теперь послушаем настоящего профессионала (мехмат МГУ, 20 лет в Калифорнии пишет для Playstation)

https://kunaifusu.livejournal.com/467799.html

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

... Кармак же, со своим программированием на уровне шестиклассника ...

... Там куча проблем с перформансом и с логикой
635 1817550
>>817545

>консоледаун


Спасибо, не надо.
636 1817572
>>817507
SIMD
I
M
D
637 1817576
>>817507
Некоторые процессоры типа АРМ вообще не умеют читать невыровненное.
На остальных невыровненные могут читаться медленнее.
Скажем в кэш-линии помещается 16 интов
Ты читаешь по адресу на границе
Может понадобиться чтение двух линий по 16 интов из памяти
----xx][xxxxxx----
Плюс может быть промах мимо страницы что вообще займет в 100 раз дольше времени.
638 1817577
>>817507
Процессоры любят, чтобы те данные что они читают/пишут в память, лежали по адресам, кратным 2-м, 4-м, 8-и, и т.п. Это и есть требование выравнивания.
Некоторые марки процессоров попросту отказываются работать с невыровненными данными (возникает ошибка). Это сделано для их удешевления и/или ускорения.
Другие марки, как тот же x86, всего лишь испытывают доп. тормоза на невыровненных данных. Впрочем SSE инструкции требуют выравнивания на 16-байтной границе, иначе генерируют ошибки.
639 1817603
>>817545
Тут слово "хороший" не зря в скобках стоит. Оно опционально.
Даже если в коде Кармака есть проблемы, это не значит что он никчёмный, и оттуда ньюфагу (и не только ему) ничего полезного подчерпнуть не выйдет.
Пусть изучает, как код люди пишут. Разный код.

А что касается этого персонажа... Код Кармака мы видели, а код персонажа что-то ещё нет. А обосрать на словах, много труда не требуется.
640 1817604
>>817545
Покажи более хороший код 3д шутера времен doom 2, толстяк
641 1817610
>>817545
зачем вообще постить этого шизоида?
642 1817611
>>817604

> Покажи более вкусную пищу в сельском толчке, чем понос бабы-сраки



Ты в каком году живёшь, дедуля? auto и лямбды хоть используешь?
643 1817612
>>817611
Авто постоянно, лямбды зло размазывающее логику по коду и провоцирующее копипаст.
644 1817627
>>817611
Модерновый С++ не в использовании авто и лямбд но без авто, конечно, было бы тяжеловато
645 1817633
>>817610

Ну да, мы лучше будем слушать анонимный скот с двача, чем того, кто над $120,000.00 to $130,000.00 /year смеется...

https://kunaifusu.livejournal.com/648138.html
646 1817641
>>817603

Вот тебе примеры кода.. Конечно, реальный боевой тебе никто не выложит, но компетентность оценить можно

https://kunaifusu.livejournal.com/299377.html
https://kunaifusu.livejournal.com/283667.html
647 1817644
>>817641

>объявить статическую переменную, скопировать ее по ДМА (естесвенно посрав на все конструкторы копирования и прочия операторы присваивания), вызвать несколько функций


Да, компетенция уровня UB
648 1817650
>>817644

Нет, это твоя некомпетенция... ты не понимаешь, о какой среде выполнения кода вообще ведется речь
649 1817658
>>817650
Отлично понимаю, мань - UB это свойство стандарта языка, а не среды выполнения. А по чему копируешь - это дело десятое, хоть по SPI.
650 1817663
>>817658

Конечно же, твои запартные представления о применимости стандартов стоит выслушать
651 1817666
>>817663
Еще хрюкни.
652 1817681
>>817612
Да лямбды самое что ни на есть естественное выражение мыслей
653 1817867
>>817633
я тоже смеюсь над $120k\y в штатах, это на руки меньше, чем у меня в Москве.

Другое дело, что этот микрочелик - реально шизоид какой-то.
654 1818090
Многопроцессные программы(fork) отличаются от многопоточных(thread, future) тем, что многопроцессные находятся уже в другом процессе и имеют раздельное для каждого процесса адресное пространство?
655 1818104
656 1818174
>>817681
А мне они больше кажутся шизофренией - когда человек писал книгу и вдруг вместо новой главы начал вести записи о покупках в магазине прямо поверх текста.
657 1818250
А есть ли вообще смысл учить другие стандарты кроме актуального? Я уверен на 120% что не стану копаться в легаси никогда.
658 1818264
int x = 5;
x = ++x + ++x;

x = (x = x + 1) + (x = x + 1)
x = (6 = 6 + 1) + (x = 6)
x = (6 = 7) + (x = 6)
x = 7 + 7
x = 14

это правильно?

С++17
659 1818267
>>818250

>Я уверен на 120%


Тогда нет смысла.
660 1818269
>>818264
Нет, это UB.
661 1818271
>>818269
А не, неправильно прочитал
1495347907000.png7 Кб, 686x65
662 1818286
>>818269
Таки UB
663 1818320
Кто-нибудь юзает setjmp и longjmp, вместо try/catch?
664 1818323
>>818269
в C++17 вроде не UB уже
665 1818404
>>818320
Да, си-тред два блока ниже
73363.jpg94 Кб, 818x700
666 1818427
Читаю Страустурпа сейчас про классы, наследования всё показывается на базе создания гуйной библиотеки, довольно прикольно. В целом понимаю суть, но чтобы точно понять как работает нужно самому покодить. Блин там с этими классами довольно сложно, их можно наследовать, есть абстрактные и не абстрактные...
667 1818428
>>818427
Держи в курсе
668 1818431
>>818428
Пoнял, буду прoдoлжать. Пoсле Страуса, хoтел бы в архитектуру эвм вкатиться и ассемблеры(си уже знаю). Нo тут рoдаки капают на мoзг усиленнo пoэтoму пoка упoр сделал на задачи с литкoда и алгoритмы, вкачусь и буду в свoбoднoе время oбмазываться архитектурoй и асмами
669 1818568
Там конфу 2020 выкладывают

https://youtu.be/FRkJCvHWdwQ
670 1818570
>>818568
Когда там его примут?
671 1818591
Товарищи, как организованно данное дерево и добавление в него? Если вы были преподом, то что бы спросили?
typedef struct Node //"связанное представление"
{
int value; //Значение
Node left; //потомки
Node
right;
} Node;

Node root = NULL; //Дерево (корневой элемент)

//Добавить в указанный узел значение, описанное в строке
void Add(Node
root, char * s)
{
if (s[0] == '0') //Это левый потомок
{
if (!root->left) root->left = newNode(); //Если потомка не было - создать
Add(root->left, &s[1]); //и добавить остаток строки в потомка
return;
}
if (s[0] == '1') //Это правый потомок
{
if (!root->right) root->right = newNode();
Add(root->right, &s[1]);
return;
}

//Это не потомок, это значение
root->value = atoi(s);
}
671 1818591
Товарищи, как организованно данное дерево и добавление в него? Если вы были преподом, то что бы спросили?
typedef struct Node //"связанное представление"
{
int value; //Значение
Node left; //потомки
Node
right;
} Node;

Node root = NULL; //Дерево (корневой элемент)

//Добавить в указанный узел значение, описанное в строке
void Add(Node
root, char * s)
{
if (s[0] == '0') //Это левый потомок
{
if (!root->left) root->left = newNode(); //Если потомка не было - создать
Add(root->left, &s[1]); //и добавить остаток строки в потомка
return;
}
if (s[0] == '1') //Это правый потомок
{
if (!root->right) root->right = newNode();
Add(root->right, &s[1]);
return;
}

//Это не потомок, это значение
root->value = atoi(s);
}
672 1818632
>>818591

> Если вы были преподом, то что бы спросили?


"Зачем вы пошли вайти? Есть же разные специальности - лес валить там"
673 1818637
>>818591
Вот, возьми, ты уронил: ⚹⚹⚹⚹
674 1818666
>>818591
Я считаю, это говно не работает и падает с переполнением стека. Согласны?
675 1818689
Чё-то я в смятении каком-то: плюсы обожаю, в свободное время много читаю и смотрю по ним, но по ощущениям работы на плюсах, которая бы понравилась, нет на рынке. Куда ни плюнь - гуй на кьют и винапи, какое-то легаси поддерживать, эмбеддед, где всё-таки наверняка будет си... А чё делать-то? Нахера изучать всякие тонкости и инфраструктуру языка кроме как попробовать какую-то либу написать? Жить-то на что-то надо.

Аноны, кто работает, в какой области ваши проекты? Нравится или заебало, что проку нет?
676 1818713
>>818689
САПРы

о х у е н н о
677 1818796
>>818632
Ну надо же доучиться, Няш Няшович.
Поставьте лабы, плез. Что вам стоит?
678 1818879
Cап аноны, с фантазией у меня туговато, подскажите какую тему можно придумать для диплома
679 1818892
>>818879
тредик почитать не?
>>803577
680 1818970
>>818689
Очевидный геймдев, собственный движок
681 1818986
>>818970
Он спрашивал про то как заработать, лалка.
682 1819055
>>818689
Аудио/видео оборудование. На, так сказать, критическом пути (собственно кодеки и обработка потоков) никаких примочек. Там довольно сильное байтоёбское колдунство с примесями асма, которое понимают несколько человек во всей компании. Зато обвязка вокруг (у софта ещё тысяча других близких и не очень функций) - пожалуйста, пользуйся всем чем душа пожелает. Недавно перешли на С++17.
683 1819090
Люди, есть код https://pastebin.com/XQjFPWcZ

Почему-то он при стандартной компиляции в g++ без флагов или с флагом -O0 делает мой код много поточным. В чем может быть загвоздка? Это только у меня так или у всех?

ISO 2020, Linux Arch
684 1819100
>>819090
Зачем тебе рач?
685 1819116
>>819090
какой еще многопоточный код шизик, у тебя самый простой однопоточный код.
686 1819117
>>819090
Что такое start_t?
687 1819119
>>819100
Он охуенен.
688 1819124
>>819116
Я поэтому и спрашиваю, потому что у меня при запуске бинарника код поточится и это фиксируется прогой htop
689 1819142
>>819119
Чем? Не с целью доебаться пишу, прости интересно что есть в нём чего нет в условном дебиане?
690 1819149
>>819124
винда в несколько потоков внутри Loader'a грузит всякие библиотеки в процесс, типа kernel32.dll, но потом эти потоки пропадают, и программа остается однопоточной.

Может в у тебя что-то подобное
691 1819153
>>819090
Делай strace, красноглазик.
692 1819180
>>819142
Обновляется гораздо быстрее deb-based дистрибутивов. В остальном тот же линукс, конечно.
693 1819197
>>819090

Я очень бегло посмотрел
time ./a.out
У тебя тут сплошной ввод-вывод, и нагружено ядро, которое внутри использует потоки, или что-то еще в юзерспейсе, например, код эмулятора терминала
694 1819259
>>819142
Ничем, не слушай этого говноеда, это говно постоянно какие-то проблемы только устраивает
695 1819261
>>819259
Никаких проблем
696 1819262
>>819261
Держи в курсе, красноглазик
697 1819264
Очередной гениальный замысел Кармака

... Кто не знает, так работала его мегатекстура, только даже она была чуть умнее - делала feedback pass сначала и находила все страницы в сцене, но все равно это был страшный тормоз. Останавливать GPU и грузить страницу по первому fault - будет тормознее на порядки.

https://kunaifusu.livejournal.com/566139.html

... Не стоит забывать, что CTO у них Кармак, который в железе ничего никогда не понимал.

https://kunaifusu.livejournal.com/550721.html

... Кармак задвинул очередную телегу о том, что ПС4 и Хуян - одно и то же.
У меня большая уважуха к этому поцану. Растянуть полдюжины шареварных платформеров в карьеру "Гуру 3Д" - никому больше не удавалось.

https://kunaifusu.livejournal.com/487221.html

... Кармака, который, оказывается, был CTO их Окюлуса - уволили! Это же великий гений, который буквально придумал всю 3Д графику, ай-ай-ай. Наверное, Цукерберг, все же, посчитал сколько бабла туда влили и сколько выхлопа получили. На Кармака лично ушло 500М+! А что в результате? В результате Кармак был замечен на пресс-конференции Майкрософта, с привязанным к морде телефоном Самсунг и рекламирующим Майнкрафт. Если бы я заплатил за такое 500М, я бы подумал, что меня наебали.

https://kunaifusu.livejournal.com/625042.html

... Я, лично, никогда не понимал как люди платили бабки за такое гумно. Не, на SNES это, наверное, круто было - 3д графичка все дела, однакож поиграв в Вольфенштайн я ничего нового от Ид не видел. Тем более Black Stone, сделаный на том же движке был куда круче.

Технически игры сами по себе ничего серьезного не представляли, движок - да, хороший движок, который можно было дать обезьяне и та что-нибудь смогла бы с ним сделать. А "3д грфичка" там была по самым нижним стандартам. Клоуны, ее делавшие, однако почему-то считались богами графики. ...

https://kunaifusu.livejournal.com/145499.html
698 1819269
>>819264
Опять шизик помойку принёс.
699 1819301
>>796605 (OP)
Ищу бесплатное IDE под с++ для линукса, как VS CODE, только нужна ф-ция для дебага - Watch variable
700 1819302
>>819301
Ф-ция, когда дебаг останавливается, если переменная меняется. Такое в VS Studio Было
sage 701 1819341
>>819264
Напомни хоть одну игру этого кинафусу, которую он продал в 90-х.
702 1819425
>>819264
У меня такое подозрение, этот kunaifusu сам лично здесь ссылки постит на собственный блог, поглощенный лютой завистью к Кармаку. Он у него идея-фикс. Всячески хочет его очернить.
703 1819433
>>819425
Наверное это потому, что kunaifusu нищеброд и доедает последний доширак - а у Кармака Ferrari водились уже в 90-х, когда этот хуй ещё в школу ходил.
704 1819652
>>819264
Как бы ни для кого не секрет что Кармак не гений. И с Окулусом у него не вышло, и мегатекстуры из дума выпилили из-за багов.
Но разве это как то умаляет его достижения?
Грубо говоря пока все программисты болтались на 2-м уровне развития, он вышел на 3-й. И только тогда уже все увидели что так можно и тоже стали развиваться. Ну допустим он дошел только до 4-го уровня и это его предел. А другие пошли дальше, до 6-го, 7-го. Но что тут зазорного?
Часто высказывается мнение мол он ничего не изобрел. И быстрый обратный квадратный корень был до него известен и он просто позаимствовал его из научной работы, и вообще его 3д это просто проекции из геометрии, которые он в вузике только что проходил. И мол если бы он не сделал 3д, то это сделал бы кто-то другой.
Ну так а чего же не сделал? Вот и все. Кармак определил ландшафт, лицо компьютерных игр, на десятилетия вперед. История не знает слова "бы".
705 1819684
>>819302
Watchpoint, он же Data Breakpoint
Есть в любом дебаггере
706 1819805
>>818427

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


Слава аллаху, хоть одна здравая мысль на весь тред
707 1819808
>>819652

Он как бы говорит в самой первой копипасте выше по треду, что не Кармак страшен, а его тупые поклонники. К примеру, есть куча опенсорсных дураков, которые до сих пор копи-пастят его исходники, думая, что вот это-то и есть священный Грааль.
708 1819815
>>819652

По поводу 3Д, ну это вообще пушка. Ты вообще в курсе, когда вышла PSX (Playstation(1)), и что у нее внутри стояло?
709 1819819
>>819652
шизик с жжшечки, просто нахуй иди
710 1819852
>>819815

>Ты вообще в курсе, когда вышла PSX (Playstation(1)),


Через год после Doom

>что у нее внутри стояло?


Говнецо с кривыми проекциями текстур и без z-буфера - по сути растянутые прямоугольные спрайты

Я не очень знаю первые 3д ps1-игры, но в 1994 там похоже был аналог вульфа3д, в лучшем случае - клон дума.
Да, до Кармака тоже уже пытались делать 3д игры - но они были или тупо векторными, или слайд шоу, или и то и другое. К примеру в 1986-87 были Sentinel и Driller на спектрумах, почти неиграбельные.
711 1820077
Я хз про что вы тут сретесь, но 3д со спрайтами уже было в ультиме андеворлд, и вышла она до Вольфа. И там можно было смотреть вверх/вниз, прыгать, летать и тп.
S01001-12125437.jpg27 Кб, 426x327
712 1820266
>>796605 (OP)
скиньте плиз обучалку как решить задачи пикрил на с++ с подробным обьяснением каждого шага
713 1820269
>>820266
А может тебе еще подрочить?

Решаешь на листочке, потом на с++ пишешь std::cout << 42;
tmp1601537278249(1).jpg111 Кб, 488x1297
714 1820275
>>820269
мне вот так решить надо
715 1820288
вообще блять поступил на сис. админа в универ, а нас заставляют решать задачи в с++ и прочем говне. я думал нас чисто будут учить как поддерживать работу серверов, интернета, и др., но никак не создание программ. что за хуйня
716 1820290
>>820275
Поздравляю, решил.

Скорей бы тебя отчислили..
717 1820292
>>820290
это не я решил, у меня другой пример, вот и прошу гайд с подробным описанием как решить так же, но другую задачу
718 1820307
>>820292
Инструкция как в 9 строке заменить х+5 на х+6 или что?
foundamentalement.mp43,1 Мб, mp4,
360x360, 3:10
719 1820401
Подскажите по Variadic templates. Есть шаблонная функция

>template<typename... Args> void func(Args... args)


Как внутри неё сделать std::tuple из этих аргументов?
720 1820402
>>820288
Когда откроешь для себя баш уйдёшь заявление о переводе на програмную инженерию писать.
721 1820410
>>820288
Ах да, это >поддерживать работу серверов, интернета
учится за 2 книги и неделю практики.
722 1820419
>>820401
Первый ответ в гугле же:
https://habr.com/ru/post/228031/
tl;dr std::make_tuple(std::forward<Args>(args)...);
723 1820425
>>818689
С++ не предназначен для чего-то серьёзного. Пишешь на плюсах - баги обеспечены, причем не только логические но и те опечатки, которые прошли компиляцию. Недаром существуют 1000 и 1 всяких cpp-checkerов, потому что язык кривой
724 1820434
>>820425

>С++ не предназначен для чего-то серьёзного


Сказал петушок, открывший двачик из браузера, написанного на С++
725 1820473
В каких вообще случаях может потребоваться перегрузка базовых операторов и где работает быдло которое это делает?
726 1820477
блять помогите, задали решить задачу z=(5f+7k)/2b, пик 1 чел решил свою задачу, я пытаюсь примерно как он решить и свою задачу, но нихуя не выходит. дайте мне мануал как такие задачи решать, сам не могу найти
727 1820478
>>820473
Банальный пример операции с векторами в пространстве. Типо у тебя есть класс Vector3 и чтобы каждый раз не писать кучу лишнего кода типа vec.x /= 3; vec.y /= 3; vec.z /= 3; перегружаешь деление и кайфуешь.
728 1820484
>>820477
Учебник алгебры за 7 класс, читать всем.
729 1820513
>>820478
А спустя 100 строчек ты не задумываясь ебашишь этот же оператор и потом 3 часа сидишь в поисках проблемы. Неужели я не прав?
730 1820556
>>820513
Хуйню какую-то несёшь, если честно.
731 1820564
>>820513
Не понял в чем проблема, перегруженный оператор это просто функция. Если ты какую-то левую функцию случайную вызвал то тоже 3 часа будешь искать проблему?
1542053468528.webm13,6 Мб, webm,
1920x1080, 3:35
732 1820586
>>820275
1 строчка комментарий - все после // игнорируется
2 строчка подключает библиотеку для ввода вывода в консольке
3 строчка задает сокращение чтобы использовать все из этой библиотеки
5 строчка объявление главной и единственной функции программы
6 строчка начало этой функции
7 строчка объявление переменных икс и зед
8 строчка ввод из консольки в переменную икс
9 переменной зед задается значение равное матану справа
это не уравнение, а именно перезаписывание содержимого зед
10 вывод в консольку значения хранимого в переменной зед
11 конец функции и программы
733 1820589
>>820425
Ну да, а твой js то предназначен, лол.
734 1820590
>>820586
нихуя говнокод
735 1820591
>>820513
Ну это доебка типа второй раз ту же переменную объявил. Чтобы такого не было - собирай их все логически в одном месте класса, файла и т.д.
736 1820593
>>820477
Сравни первые строчки. Считай что это заклинание, которые ты должен произнести богу-машине.

Алсо поскольку вы пользуетесь int, а не float, результаты могут весело округляться.
737 1820594
>>820590
О, первый неосилятор чистого и понятного кода пошел. Уже все 100500 файликов полупустых поскроллил сегодня?
738 1820605
>>820594
я бы посмотрел, как ты ревью с таким говном будешь проходить
739 1820607
>>820605
Я ревью принимаю, мань.
740 1820609
>>820607
ты за щеку принимаешь максимум, с таким чудо кодом
741 1820611
>>820609
Портфель собирай, завтра рано.
742 1820612
>>820611
Уважаемый говношлепатель без кнопки enter, я портфель собирал в школу последний раз в районе 14 лет назад
743 1820670
>>820473

>В каких вообще случаях может потребоваться перегрузка базовых операторов


Ну смотри:
1. Операции над векторами и матрицами. Любая мат либа
2. Конкатенация строчек или файловых путей.
3. Перегрузка -> в итераторах, смартпоинтерах
4. Перегрузка () в функторах или делегатах
5. DSL дристня для хитрой инициализации чего-нибудь типа как boost::program_option.

>где работает быдло которое это делает?


Как правило это делают разработчики всяких либ, ну или в каком-нибудь утилитарном классе. В пользовательском коде, баловаться таким наверное плохой тон. Прикольная же штука, когда сделоно нормально и в нужном месте, коммон.
744 1820672
>>820473

>где работает быдло которое это делает


Гугл, фейсбук, Микрософт, блумберг...
745 1820780
>>820670

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


Как-то читал про цепочку перегрузок -> с использованием той фичи, что если у возвращаемого значения оператора-> тоже переопределен орератор-> , то также сразу вызывается.
Короче вызов, a->foo() лочил мютекс, че-то еще делал и потом разлочивал.
Вот где настоящая шиза.
746 1820784
>>820607

Такая параша никогда не пройдет код-ревью. Дело не только в том, что она нечитаемая и неидиоматичная.
Тут в первую очередь играют роль сугубо утилитарные свойства, значимые для командной разработки
1) Диффы при изменении этой хуйни будут кошмарные
2) Частично связано с п.1. Нет лимита на длину строк, т.е. смотреть это в тулах неудобно.
747 1820797
>>820594
Код с таким уебанским форматированием априори не может быть простым и понятным. Какой-то пиздец просто, ты блядь код на дискетах хранишь или переносы платные? Раздели эту кашу на логические блоки хотя бы, уёба, нихуя ведь непонятно. Отступы же научился как-то ставить, хотя бы в 2 символа, значит какие-то зачатки интеллекта имеются. Потом уже можешь поупражняться называть переменные понятными названиями. Подтянешь математическую базу и возьму тебя джуном на 40к
748 1820801
>>820797
Там каждая строчка логический блок, у тебя дефицит внимания что ли?

> возьму тебя джуном на 40к


Я бы тебя сам взял за 60к, но боюсь ты писать код не умеешь, а только воду лить в файлах.
/////////
//
/////////

Я прав?
749 1820804
>>820784

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


На экран влезает? Влезает.

> Диффы при изменении этой хуйни будут кошмарные


Наверное первое замечание по делу.
750 1820807
>>820801
Конечно приятно что ты меня заранее оценил выше самого себя, уёба, но вот у меня вопрос: как ты с таким кодом на классы делишь? Просто есть сомнения, что ты хуяришь всё в 1 файл
751 1820808
Хотел бы поинтересоваться, как обстоят дела в программировании на c++на старых макбуках 2011-2012 года?
752 1820822
>>820808

Если там есть проблемы с новыми версиями, всегда можно поставить прыщеблядикс. Я тем не менее не рекомендую использовать ноутбуки. Даже при наборе кода в нормальной ИДЕ они будут переходить в режим "ахтунг, взлетаем!".
753 1820829
>>820807
Классы занимают 7 и 8 строчку на видео.
754 1820831
>>820797
А что надо по матеше кстати?
755 1820846
>>820594

>чистого и понятного


>тернарник в тернарнике в тернарнике


Ну тут даже хуй знает
756 1820849
>>820846
Только потому что разработчики шиндоус и юникода мудаки.
757 1820864
>>820473
перегрузка базовых операторов считается одним из самых важных инструментов проектирования в крестах, наравне с шаблонами
758 1820915
>>820586
Я бы в HMap сделал бы LUT из аски в индекс. Понтово и branch-free.
759 1820948
Сап двач, такой вопрос.

Пишу свою первую базу даных на плюсах в качестве тренировки.
И соотвественно пытаюсь делать по учебнику разносить интерфейс в .h файлы, а декларацию в .cpp.
Но тут мне понадобилось в одном классе реализовать темплейтный метод. Я его объявил, задекларировал но компилятор начал ругаться довольно непонятной ошибкой. Погулив ее я увидел такое:
"That means that we cannot separate the interface in a separate header file, and that we must include both interface and implementation in any file that uses the templates."

оесть получается я не могу разнести по разным файлам определение и объявление темлпейтной функци? Может я что-то не так понял?

Алсо возможно мою проблему можно будет решить иначе.
Как можно иначе написать функции которая принимает аргументом лямбду?

"
760 1820951
>>820948
Для того, чтоб компилятор мог сделать template instantiation, ему необходимо "видеть" defintion.

Поэтому просто так отделить template defintion не получится.
Есть несколько способов решить вопрос.

1. Просто оставить функцию в хедере.
2. Перенести definition в .inl файл и заинклудить его в конце хедера. Получится то же самое, что и в пункте один, но с разбиением на несколько файлов.
3. Воспользоваться explicit template instantiation. Это когда ты сам в той части кода, откуда доступен template instantiation указываешь те типы, для которых нужно сделать template instantiation. Все варианты имеют свои нюансы, тут нет одного лучшего.

>Как можно иначе написать функции которая принимает аргументом лямбду?



В каком смысле?
Как описать принимаемые аргумент?
Можно через function pointer, можно через std::function
761 1820953
>>820951

>откуда доступен template definition


Фикс
762 1820955
>>820915
Сука блядь ты русские слова забыл что ли? Пиздец БЛЯДЬ что ни слово то какой-то ебучий англицизм. Уёбок блядь, расстроил меня на пустом месте.
763 1820956
>>820951
Спасибо за овет, хотя я и мало понял из того что ты сказал, буду гуглить.

про лямбду аргументом я имел ввиду такое:

Вот например у меня есть мап и я хочу для него написать некий аналог erase_if по предикату который может быть разным, назовем эту функцию remove_if.

Так вот я просто ничего не придумал умнее чем написать
template<typename Lambda>
void remove_if ( Lambda predicate);

может я просто тупой и не знаю как можно это иначе сдлеать.
764 1820969
>>820956

>буду гуглить


Я на это и рассчитываю. Так лучше поймёшь.

>template<typename Lambda>


Нормально сделал
Но сюда заедет не только лямбда, а в принципе любой callable-object. Лямбда, функтор, function-pointer, etc.
765 1821034
>>820948

>оесть получается я не могу разнести по разным файлам определение и объявление темлпейтной функци? Может я что-то не так понял?


Все ты можешь.
В хедере в классе пишешь например
template<class T> void f(T t);
В сурсе соответственно
template<class T> void ClassName::f(T t)
{ // }
Шаблоны в хедере только замусоривают интерфейс и нарушают инкапсуляцию.
766 1821041
>>821034

> Шаблоны в хедере только замусоривают интерфейс и нарушают инкапсуляцию.


Не слушай его, нечего они не нарушают
767 1821105
>>820955
я все понял
768 1821248
А может есть сервисы, где всякие быдло студенты будут просить делать за них лабы за гроши?
96718[1].jpg54 Кб, 300x450
769 1821250
>>821248
Лучше места не найдешь, где брать заказы
770 1821316
Есть два енума.
Для одного енума есть to_string функция, для другого — нет.

Сейчас я логирую енум так.
template<typename T, std::enable_if_t<std::is_enum<T>::value, int> = 0>
Logger& operator<<(T i) {
log(std::to_string(static_cast<typename std::underlying_type<T>::type>(i)));
}

А хочу вот так, но только в том случае, если to_string существует для этого енума. Если нет, то выводить первым вариантом (выше).

template<typename T, std::enable_if_t<std::is_enum<T>::value, int> = 0>
Logger& operator<<(T i) {
log(to_string(i));
}

Как это сделать?
image.png892 Кб, 1280x720
771 1821318

>Лямбду я тебе заинлайню.


>Указатель на функцию я не заинлайню.

772 1821325
>>821318
Я тут недавно пилил проект, у которого часть имплементации на ассемблере

Сделал пачку класс-темплейтов, которыев зависимости от темплейт-аргумента набирают себе в constexpr-таблицу указатели на функции, написанные на ассемблере в отдельном файле

А затем этот класс уже между этими указателями разруливает, как ему операции выполнять

Когда оптимизировал это всё — посмотрел асм и optimization log — почти все функции (кроме слишком больших) заинлайнились в LTO. Было приятно
773 1821437
>>821316
template<typename T>
Logger& operator<<(T i)
{
if constexpr (std::is_invocable<decltype(to_string), T>::value)
{
log(to_string(i));
}
else
{
log(std::to_string(static_cast<typename std::underlying_type<T>::type>(i)));
}
}

Это если, конечно же, C++ 17 поддерживается
774 1821445
>>821325
Ставлю анус что компилятор из кода на си++ (конечно, нормально написанного) сделал бы ассемблер еще эффективнее чем рукописный.
775 1821446
>>821445
Увы, нет.
776 1821451
>>821437
Сначала так и сделал, но не знаю, как пробиться через ADL для выбора правильного scope (не работает с namespace)
https://godbolt.org/z/M15veK

Зато вариант с оверлоадами зашёл
https://godbolt.org/z/hvnoxs
777 1821453
>>821445
>>821446
Но я был бы только рад, это ж больше портативности и меньше ручного портирования.
778 1821546
Мне как вкатышу посоветовали накатить генту мол там все пакеты вручную собираешь из опенсорсов и можешь на лету для самого себя какую-то фичу замутить тем самым прокачивая скилл прогерства. Так ли это и стоит ли того эта практика?
779 1821565
>>821546
Это так, но тебя троллят.
780 1821567
>>821565
В чём троллинг заключается?
781 1821573
>>821034
хм, я вроде так и делал но ничего не компилилсоь

А это так же работает для метода класса а не обычной функции?

Возможно для метода класса мне надо темплейт до обьявления класса писать, или непосресдвтенно над методом?
782 1821575
>>821573
Я тебе уже пояснил всё. >>820951
783 1821593
>>821546
Лучше Linux From Scratch.
митап.jpg59 Кб, 604x388
784 1821705
>>820955
Сэ ля ви, анон.
785 1821719
>>821451
Как насчёт концептов? По виду вроде работает.
https://godbolt.org/z/eaPohW
786 1821724
>>821719
Заодно и от богомерзкого SFINAE можно избавиться:
https://godbolt.org/z/a9v1Yj
787 1821737
>>821719
>>821724
Круто, спасибо. По поводу sfinae тоже согласен.
Но решение для c++17 тоже хотелось бы иметь.
788 1821819
>>821573
Я тебе и написал для метода класса, а не свободной функции.
789 1821910
Подскажите как лучше поступать: реализовывать отдельные конструкции в глобальном скопе и применять что нужно в мейне или всё прописывать в функции? Разумеется в случае когда прога маленькая и всё ограничивается одним сорсфайлом и выносить всё в хедеры смысла нет.
790 1821987
>>821910
Разбивай на логические блоки
791 1822109
Как бледж правильно прописать enum в классе и указывать на значение из него в конструкторе?
792 1822150
>>822109
class A {
enum dvach { mertv = 0 };

A(dvach dv = dvach::mertv) {}
};
793 1822198
>>822150
Не, это я как раз понимаю. Но я хочу реализовать через отдельную функцию инициализацию объекта класса где юзер задаёт параметры в том числе и один из енама. Неужто такое не реализовать?
794 1822241
>>822198
void foo(A::dvach dv);

foo(A::mertv);
795 1822453
>>822198
Нихуя не понятно, что ты хочешь сделать.
796 1822461
Доброго вам настоящего, посоветуйте нормальных книжонок с задачами по с++, недавно начал учить, было бы круто чтоб уровень сложности поаышался постепенно, спасибо
797 1822486
Сап программач.
"Погроммист на Qt" в треде.
Есть кудахтер с core i5-7500, на котором я дома пишу код.
Меня напрягает скорость сборки даже небольшого проэкта на пару десятков тысяч строк.
Компилятор g++.
Кто-нибудь ради интереса пробовал собирать на многоядерных системах, типа двух Зионов E5-2678v3, насколько хорошо оно скалируется?

На али по прикидкам можно собрать комплект с мамкой/камнями/памятью, остальное докупить на месте и уложиться тыров в 50-55.
798 1822496
>>822486
Ты уверен, что у тебя проблема в количестве ядер?

> скалируется


а не в хромосомах?
799 1822497
>>822486
Почему просто не перейти на линукс?
800 1822502
>>822496

>Ты уверен, что у тебя проблема в количестве ядер?


Проблема только в том, что мне хочется увеличить скорость сборки.
Камень наверное собирает так, как и должен.
Как ещё дёшево увеличить скорость сборки, если не количеством ядер/потоков?

>>822497
Дык это на нём.
801 1822507
>>822502

>Дык это на нём.


Земля тебе пухом, братишка. Ты на каком-то говне вроде юбунты или дикина изкаропки сидишь? Подрочи неделю генту, сможешь оптимизировать до такой степени что компы за тысячи баксов на шинде возьмут в рот.
802 1822508
>>822507

> компы за тысячи баксов на шинде возьмут в рот.


Маняфантазии красноглазика
803 1822509
>>822508
Ты правда думаешь что мне не похуй на твоё мнение?
Факт в том, что у меня древний ультрабук на сабже работает шустрее стационарника с топовым райзеном на десятке.
15856421231880.png127 Кб, 445x365
804 1822512
805 1822517
>>822512
Чего сказать то хотел?
806 1822519
>>822486

Зеоны, по крайней мере, того поколения, которое дешево, раза в два медленнее современных процессоров, так что лучше брать нормальную современную мейнстримную систему вместо двухсокетника с помойки
807 1822521
>>822502

> Проблема только в том, что мне хочется увеличить скорость сборки.


Давай ТТХ своей сборочной системы:
-сколько проектов
-сколько в среднем файлов в проектах
-сколько сейчас длится сборка
808 1822533
Всё зависит от проекта, от уровня связности, етц.

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

Собираю на i9 9900k с разгоном 5.0 ghz на всех ядрах, некоторые даже небольшие вещи собираются достаточно долго
809 1822545
>>822509
Пруфов конечно же не будет
810 1822549
>>822521

>-сколько проектов


Конкретно напрягает меня один проект.
Файлов ~350.
Собирается полторы минуты (за это время я успеваю отвлечься на какую-нибудь хуйню и залипнуть, проебав 5-10-15 минут).

Остальные проекты, с которыми я работаю, обычно мелкие программы, собираются быстро.

>>822519
Так-то да, я ради интереса пошерстил ютуб, в тестах два таких камня примерно как один 3900X-3950X, только он один стоит как мать+камни+память.
811 1822605
Сап, народ.
Программа, собранная mingw с ключом O3, начала падать. При этом если собирать её же с O2 или в дебаге, то она отрабатывает без падений и, на взгляд, без ошибок. Также работает нормально, если собрать в студии.
Что это вообще может значить и как с таким бороться?
812 1822606
>>822605

> Что это вообще может значить и как с таким бороться?


Говнокод
Под msvc не судьба собрать?
813 1822636
>>822549

>Собирается полторы минуты


Лол, попробуй свой qt пересобрать.
814 1822653
>>822606
Собирал с ним в 19-й студии, работает без ошибок.
sage 815 1822667
>>822486

> 486


Проект свой на файлы небольшие разбей ты, молодой падаван. Компилируй в объектный код их.
816 1822673
>>822605

> падать


- падать как?
- у тебя говнокод (прогони через статические и динамические анализаторы)
- прога зависит от тонкостей IEEE и т.п.
- баг в кунпеляторе
817 1822690
>>822605
UB скорее всего
818 1822716
>>822549

> Собирается полторы минуты


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

мимо проекты собираются около полутора часов
819 1822717
>>822673

>- падать как?


Падает молча, но в журнале ошибок винды код исключения: 0xc0000005.
820 1822744
>>822636
При чём тут Qt? Мне не нужно его пересобирать по несколько раз на дню.
>>822716
Как ты их отлаживаешь тогда? Типа внёс правок на 20-30 строк, надо проверить, что всё работает. Каждый раз по полтора часа куришь бамбук?
821 1822762
>>822717
Проверь порчу стека, или на куче удаление уже удаленного либо обращение к удаленному. есть инструменты для такого. Возможно возвращаешь указатель на локальную переменную.
822 1822790
>>822744

> внёс правок на 20-30 строк, надо проверить, что всё работает. Каждый раз по полтора часа куришь бамбук?


Нет конечно, я о том и говорю, что инкрементальные сборки времени почти не занимают, а если у тебя после мелких правок собирается всё заново, то не в процессоре дело.
823 1822813
>>822790

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


Ну я собираю в среде разработки QtCreator.
Я так понимаю, он просто чекает, были ли внесены изменения в некий файл. И если изменения были внесены, он тупо пересобирает все файлы, в которых изменённый файл используется. Поэтому зависит от того, какой именно я файл поправил.
824 1822850
>>822762

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


Типа Address Sanitizer?
Попробовал на FreeBSD скомпилировать на g++ и clang++ с -fsanitize=address, но в обоих случаях не возникло никаких ошибок.
825 1822873
>>822717
это ты пытаешься записать что-то в неаллоцированную память, или стэк сломан
826 1823004
>>822605
Похоже какие-то ошибки в моём mingw. Скомпилировал с помощью mingw с ключом -O3 на ноутбуке - всё работает.
827 1823020
>>822850
Я только с такими знаком https://github.com/ofan/memcheck
https://github.com/seladb/MemPlumber
А как стек проверить не помню
Снимок.PNG29 Кб, 499x622
828 1823054
как научиться решать пикрил простые задачи на с++? какие книги по с++ можете посоветовать мне, у кого 0 знания в математике, программировании и вообще в информатике? я не собираюсь становится прогером, просто задания с универа
829 1823104
>>823054
На кого учишься?
830 1823115
>>823104
на сис. админа, "Администрирование систем и сетей", хз почему нас учат с++ и писанию калькулятора на делфи 7
831 1823121
>>823115
Что ты там забыл с 0 знаниями в информатике? И без знания английского ты на кой туда полез потому что знай ты английский хотя бы на B1 ты бы сумел прочитать ошибки конпилятора и исправить их. Изучение программирования хорошо тем, что определённому проценту людей из твоего потока оно поставит мозги на место и на выходе выйдут мало-мальски грамотные тела. И очень скоро у тебя и многих других развеется миф о том, что сисадмины - смузихлёбы со 100% автоматизацией и вы, скорее всего, отсеетесь что благо.
832 1823127
>>823004
Или в твоем коде.
833 1823145
>>823121
да я уверенный юзер пк, могу чинить итд, английский как раз примерно ниже среднего, ну не могу я кодить, тупо не интересно все эти операторы, переменные и др. термины программирования, на сис. админа поступал пушто думал нас будут учить только поддерживать работу серверов, инета и компов, а не этот кодинг злоебучий
834 1823147
>>823145

> поступал пушто думал нас будут учить


Вот здесь твоя ошибка.
835 1823150
>>823147
ну ахуеть теперь
836 1823152
>>823147
Двачую.
>>823145
"Уверенный юзер пк" это моя бабушка. А ты хоть раз павершелл юзал? Рейд массивы собирал? TCP/IP знаешь, простой трафик netbios`a сниффнуть сможешь? Запросы сформируешь, логи прочитаешь? Про линуксы даже не спрашиваю. Кодить тебе так или иначе придётся, хотя бы простенький скрипт на баше или не дай бог шелле но где-нибудь да понадобится написать. А не станешь учить потом у тебя гарантированно возникнут вопросы типа "А почему 777? Гыы, Линус, нормальная такая интеграция".
837 1823153
>>823145
Админу, желающему получать больше 25к в местной школе, необходимо хотя бы общее знание скриптовых языков.

Сложность твоей задачи настолько низкая, что ты бы уже успел сам найти книжку страуструпа для вката, прочитать 15 страниц и выполнить задачу. Но ты почему-то решил, что срать в этом треде тебе более предпочтительно.
838 1823163
>>823150
>>823152
Ладно. К счастью для нас обоих я двачер с маленьким стажем, потому постараюсь реабилитроваться из статуса токсика.
На вот, это для формирования общей картины с чем тебе предстоит иметь дело: https://www.youtube.com/playlist?list=PLmxB7JSpraiep6kr802UDqiAIU-76nGfc
По твоему вопросу - https://ravesli.com/urok-53-prostranstva-imen/
Только вникни и пойми почему так. И учись учиться + гуглить, за тебя это никто делать не будет.
839 1823170
>>823163

> По твоему вопросу - https://ravesli.com/urok-53-prostranstva-imen/



глянул я, там другое, а мне надо научиться пока решать простые матем. задачи
840 1823177
>>823170
Там в точности описано что нужно делать чтобы твой код заработал.
Удаляешь инклуд строки, после пишешь using namespace std;
Всё что в мейне табулируешь, в конец добавляешь return 0;
Если проверка на деление на ноль не требуется то задание ты выполнил.
841 1823180
>>823177
окей спасибо попробую
842 1823307
>>823127
Нет, я заново скачал mingw, и теперь всё работает без ошибок.
843 1823370
>>823170
Я же тебе уже отвечал >>820586
844 1823382
>>823115
Потому чта:
1. си/си++ это языки наиболее близкие к железу, после ассемблера. Тебе бы надо знать как работает комп и программы на нем, на таком уровне - читает переменную, складывает с другой, записывает в перемнную.
Это нужно хотя бы для понимания сетевых протоколов - они же не из воздуха берутся, а вот так гоняют байты по порядку.
2. си/си++ это всякие линуксы, которые наверняка придется ковырять, например я даже дома изменял и собирал прошивку для роутера. Если будешь админить какой нибудь хайлоад, наверняка придется оптимизировать какие то штуки, как минимум выделение памяти.
3. большинство уязвимостей связаны с ошибками в си/си++ программам, например переполнение буфера, так что надо бы понимать откуда оно берется, что именно происходит в программе почему буфер портится.
4. Как уже написали придется работать со скриптами, башем, батниками, павершелом и т.д. Основные принципы программирования сохранятся, отличаться будет только обвзяка и свистелки (пока это не хаскель)
845 1823505
>>820586
Каков пиздец.
Впрочем, с шаблонодрочером на VS2008 и C++03 с моей текущей работы не сравнится.
846 1823677
>>823505
А почему на твоей работе VS2008 и C++03 ?
847 1823768
>>823677
C++03 в студии это ещё по божески.
мимо пишу на c++98 в эклипсе для одного хобби-проекта под qnx
848 1823773
>>823505
>>823768
Проиграл с этих стагнирующих дебилоидов.
849 1823784
>>823768
Ухх бля
850 1823805
>>823768

> хобби проект


> qnx


Сильно
851 1823818
>>823677

>А почему на твоей работе VS2008 и C++03 ?


Сейчас всё норм.
Но был чел, код которого был написан в начале 10-х на сабже чисто на шаблонах (потому, что чел прочитал Александреску и впечатлился) и собственных костылях для той же многопоточности (хуле, std::thread не завезли ещё).
И я этот код немного ковырял и просто охуевал.
sage 852 1823894
>>823773
Пишу на ANSI C89. Как тебе такое?
853 1823895
>>823894
В перфокарты умеешь? Хуи сосёшь?
854 1823957
Visual Studio 2015 выдаёт следующий warning:

warning C4291: 'void operator new(std::size_t,void ) noexcept': no matching operator delete found; memory will not be freed if initialization throws an exception

Но при этом соответствующий operator delete я сделать не могу, ведь это placement new.
Насколько безопасно это игнорировать?
Visual Studio 2017 на этот же проект такую ошибку не выдает.
855 1823971
>>796605 (OP)
Помогите бесплатно получить русский вариант книги по AMP
"C++ AMP. Построение массивно параллельных программ с помощью Microsoft Visual C++"
856 1823974
>>823971
https://1lib.eu/book/2755310/610482
Вы такие беспомощные
857 1823985
>>823773
Ты не подумай, на работе я c++17 /permissive-

>>823805
>>823784
Пишу клиент для имиджборд для Blackberry OS10.
RIM предоставила NDK, в комплекте есть gcc 4.6.3 и 4.8.3. По умолчанию 4.6.3, хотя всё равно на 4.8.3 стандартная GUI библиотека скорее всего собрана без c++11. В интернете информации по этому поводу практически нет, на гитхабе проектов с этим флажком тоже нет.
Вручную писать красивый интерфейс на голом и древнем Qt не очень хочется, поэтому вот терплю.

Если у кого-нибудь есть информация, которая может облегчить мои старания, делитесь пожалуйста. Спасибо.
858 1823996
>>823985

>Ты не подумай, на работе я c++17 /permissive-


Какой опыт? Что пишешь и где? Сколько учился, через сколько вкатился? Какая зп? Нравится?
859 1823997
>>823985

>Ты не подумай, на работе я c++17 /permissive-


Какой опыт? Что пишешь и где? Сколько учился, через сколько вкатился? Какая зп? Нравится?
860 1823999
>>823996
>>823997
Спасибо, мистер веб-макака
861 1824007
>>823996
Пишу разное, высоконагруженные серверные системы, сети, немного криптографии и безопасности. На работе в основном c++14, три года опыта, 150к.

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

Другой анон
862 1824011
>>824007
Неплохо. Только на крестах пишешь или ещё на чём-то? Что за проект? Хотя бы в 2 словах.
863 1824074
>>823997

> Какой опыт?


Джва с половиной года

> Что пишешь и где?


САПРы nuff said, где не скажу

> Сколько учился, через сколько вкатился?


Устроился на втором, шарагу бросил на третьем. В общем где-то год написания разного рода laba2.cpp и ещё год написания синтетических разного рода крудов и редакторов неба и аллаха (laba6.h laba6.cpp main.cpp)

> Какая зп?


120к

> Нравится?


Да, очень
864 1824138
>>823768
>>823505
>>823985
А в чем проблема просто использовать самую последнюю версию? Стандарт же вроде как топит за обратную совместимость.
865 1824142
>>824138
Читай внимательнее. Сломается ABI. Это тебе не студия 15-19
866 1824184
>>824142
Типо либа скомпилена уже на старой верии, а исходников чтоб перекомпилировать нет?
867 1824228
868 1824253
>>824184
Старая либа даже с исходниками может не собраться, а еще семантика языка менялась поэтому она собравшись может делать не то что раньше.
https://stackoverflow.com/questions/63290846/have-there-ever-been-silent-behavior-changes-in-c-with-new-standard-versions
869 1824428
Алсо. Что если декомпилировать либу через какую-нибудь Ida Pro или Ghidra, перевести в Си-код, а потом собрать новым компилятором? Несу бред?
870 1824471
>>824428
Много ручной работы.
871 1824680
>>823974
Большое спасибо, что помог мне.
872 1824684
>>824680
Только учи блять, я проверю!
873 1824725
Хочу вкатиться. Программирование. Принципы и практика использования из гитшапки актуальна? Вообще, насколько большая разница между разными версиями?
Сейчас пишу на питоне, в инсте был один курс плюсов уровня хэлоуворд.
874 1824797
>>824725
Учи сразу последний стандарт, книга страуструпа норм
875 1824807
Стена текста, но может кто подскажет.

Написал кастомный аллокатор с интерфейсом под std::allocator
Написал кастомные make_unique и make_shared, которые используют мой аллокатор и CustomDeleter, который деаллоцирует с помощью моего аллокатора.
C shared_ptr проблем не было.
Но у unique_ptr deleter это часть типа, а не объекта, поэтому при вызове CustomDeleter не получится корректно удалить дочерний полиморфный объект, имея указатель на родительский объект. Деструктор вызовется правильно, а вот память нормально не освободить, так как неизвестен размер объекта.

Понял, что избрал не совсем верный подход. Узнал, что у полиморфных объектов два деструктора, один просто деструктор, а другой для динамической деаллокации, который зовётся как раз тогда, когда происходит вызов delete на полиморфный объект. В итоге вызывается "второй" деструктор через dynamic dispatch, где внутри уже overloaded delete, так как тип объекта уже определён.

Поэтому для корректного поведения достаточно не вызывать dellocate из CustomDeleter, а сделать просто delete (или вообще оставить дефолтный deleter).
А вот в оверлоаде delete уже сделать deallocate с указанием размера.

НО НЕ ТУТ-ТО БЫЛО
g++/clang не позволяет сделать один overload delete, но не сделать второй.
Более того, нет гарантии, что будет вызван один а не другой.
Это не позволяет сделать им универсальное поведение (а именно — не хранить размер аллокации перед каждым аллоцированным блоком).
Хотя при этом g++ всегда зовёт именно sized-version.
clang тоже, но требует для этого -fsized-deallocation

Единственная ситуация, при которой я смог триггернуть вызов non-sized delete — это вызов delete на pointer-to-incomplete-type. Тогда-то компилятора размер и неизвестен. Но эта тест бесполезный, ведь вызов delete на pointer-to-incomplete-type — это UB и потребовало включить игнор ворнинга.

В итоге красивого выхода из ситуации я не нашёл

Перый вариант:
1. Оформить нормально пару new/sized-delete с вызовами аллокатора с указанием размера напрямую.
2. Оформить пару new[]/delete[] с хранением размера аллокации в дополнительном блоке.
3. Вызов sized-delete[] оформить так же, как и delete[]. Проигнорировать size.
4. Делать std::terminate() в случае вызова non-sized-delete, ибо нехуй. Либо он никогда не вызовется, либо я что-то не учитываю (поэтому и пишу это всё, вдруг кто подскажет).

Второй вариант:
Первые три пункта как в первом варианте.
4. В случае вызова non-sized-delete делать вызов deallocate с указанием какого-нибудь специфичного размера, например, -1.
В аллокаторе отдельно обрабатывать такой вызов. Вместо поиска чанка в готовой бочке (найденной по размеру), мы перебираем все бочки в поисках нужного блока для деаллокации. Потом деаллоцируем. Требует дополнительных костылей в деаллокаторе, но зато работает всегда. Но наличие этих костылей не ухудшает нормальный case (когда размер известен).

Собственно, стоит ли второй вариант того? Это долнительный костыли в обход стандартного интерфейса аллокатора ради того, чтоб избежать проблемы, которая может и не возникнуть.
875 1824807
Стена текста, но может кто подскажет.

Написал кастомный аллокатор с интерфейсом под std::allocator
Написал кастомные make_unique и make_shared, которые используют мой аллокатор и CustomDeleter, который деаллоцирует с помощью моего аллокатора.
C shared_ptr проблем не было.
Но у unique_ptr deleter это часть типа, а не объекта, поэтому при вызове CustomDeleter не получится корректно удалить дочерний полиморфный объект, имея указатель на родительский объект. Деструктор вызовется правильно, а вот память нормально не освободить, так как неизвестен размер объекта.

Понял, что избрал не совсем верный подход. Узнал, что у полиморфных объектов два деструктора, один просто деструктор, а другой для динамической деаллокации, который зовётся как раз тогда, когда происходит вызов delete на полиморфный объект. В итоге вызывается "второй" деструктор через dynamic dispatch, где внутри уже overloaded delete, так как тип объекта уже определён.

Поэтому для корректного поведения достаточно не вызывать dellocate из CustomDeleter, а сделать просто delete (или вообще оставить дефолтный deleter).
А вот в оверлоаде delete уже сделать deallocate с указанием размера.

НО НЕ ТУТ-ТО БЫЛО
g++/clang не позволяет сделать один overload delete, но не сделать второй.
Более того, нет гарантии, что будет вызван один а не другой.
Это не позволяет сделать им универсальное поведение (а именно — не хранить размер аллокации перед каждым аллоцированным блоком).
Хотя при этом g++ всегда зовёт именно sized-version.
clang тоже, но требует для этого -fsized-deallocation

Единственная ситуация, при которой я смог триггернуть вызов non-sized delete — это вызов delete на pointer-to-incomplete-type. Тогда-то компилятора размер и неизвестен. Но эта тест бесполезный, ведь вызов delete на pointer-to-incomplete-type — это UB и потребовало включить игнор ворнинга.

В итоге красивого выхода из ситуации я не нашёл

Перый вариант:
1. Оформить нормально пару new/sized-delete с вызовами аллокатора с указанием размера напрямую.
2. Оформить пару new[]/delete[] с хранением размера аллокации в дополнительном блоке.
3. Вызов sized-delete[] оформить так же, как и delete[]. Проигнорировать size.
4. Делать std::terminate() в случае вызова non-sized-delete, ибо нехуй. Либо он никогда не вызовется, либо я что-то не учитываю (поэтому и пишу это всё, вдруг кто подскажет).

Второй вариант:
Первые три пункта как в первом варианте.
4. В случае вызова non-sized-delete делать вызов deallocate с указанием какого-нибудь специфичного размера, например, -1.
В аллокаторе отдельно обрабатывать такой вызов. Вместо поиска чанка в готовой бочке (найденной по размеру), мы перебираем все бочки в поисках нужного блока для деаллокации. Потом деаллоцируем. Требует дополнительных костылей в деаллокаторе, но зато работает всегда. Но наличие этих костылей не ухудшает нормальный case (когда размер известен).

Собственно, стоит ли второй вариант того? Это долнительный костыли в обход стандартного интерфейса аллокатора ради того, чтоб избежать проблемы, которая может и не возникнуть.
876 1824811
>>824725
>>824797

>книга страуструпа


Бляяять, нет. Если совсем зелёный - то лучше сначала пройти K&R по чистому Си. Книга Страуса - это спидран в котором новичок потеряется. Вот ты учишь объявление переменных и вот ты уже пишешь калькулятор с 10 неймспейсами и кучей вложенных юзертипов и ловишь конфликты имён по 100 штук на вызов.
877 1824831
>>824811
Ага, а перед Си надо выучить ассемблер.

>Если совсем зелёный


Не совсем.
878 1824832
>>824811
Си - худший возможный совет. Си - это устаревший нахуй никому не нужный, кроме шизоидов и дедов кусок говна.
879 1824834
>>824832
Съеби, жирный
880 1824840
>>824834
Я знаю 1 юзкейс использования си - когда под твое говно компилятора C++ нету. Да и вообще нихуя нету, кроме си.

Во всех остальных случаях си нахуй не нужен. Да, включая операционные системы\драйвера\HFT и прочее
881 1824841
>>824840
а, ну да, еще стабильное сишное ABI забыл. Теперь точно все.
882 1824842
>>824811

> сначала пройти K&R по чистому Си


Нихуя подобного, в этой книге как раз это объясняется. Сразу учи c++. А про калькулятор согласен, пиздец полный
883 1824845
>>824725
у страуса годные книжки - "с++ специальное издание" 2000 года и "дизайн и эволюция языка"
еще он годные статейки иногда пишет))
а последние книги у него неудачные, особенно та книга типа для новичков
884 1824850
>>823818
на 98 стандарте было интересней городить шаблончики для статики и метапрограммирования
в последних стандартах надобавляли синтаксического сахарку, а раньше нужно было трюки делать)
885 1824853
>>822461
страус, специальное издание
в четвертом тоже много задачек, можно не читать, а брать только их
886 1825155
>>821451
>>821719
>>821724
А можно сделать, чтоб ещё и для енума, который определн в class scope, работало?
887 1825192
>>825155
И его to_string соответственно там же.
888 1825260
>>824807
Пиши в КОМИТЕТ с такими охуеительными вопросами.
889 1825295
>>824807
Сеньор, ты?
890 1825432
>>796605 (OP)
Труп страуса вводит в заблуждение, если честно. Уже в который раз читаю что поинтер к функции нельзя привести к void*. Но я могу..
891 1825442
>>825432
Стандартом не разрешено. Причём тут то, что ты там можешь?
POSIX, кстати, разрешает, но только для free функций.
892 1825449
>>825192
Если to_string в классе, то нет. Выноси из класса
893 1825450
>>825442
void lolcout(int x)
{
cout << endl << x;
}
void u = &lolcout;
(
(reinterpret_cast<void(*)(int)>(u)))(128);
Зато я твою маму ебал
894 1825462
>>825442

Размер поинтера на код и на данные может быть разным
895 1825467
>>825462
разве что на машинах где данные и код отдельно хранятся. но в целом скорее можно чем нельзя
896 1825521
>>825432
А я могу в свитче писать case 5...55: но стандарт это никак не меняет.
897 1825526
Аноны, как мне сделать ссылку на переменную класса, вызывающую функцию?
Что-то вроде:
Описание метода класса: void имя_класса::имя метода()
{
имя_класса::имя_другого_метода(какая-то переменная, та переменная_которая_ вызывает_первую_функцию)
...
}
898 1825536
>>825449
Почему? Нельзя и нельзя, окей, но хочется познать причины.
899 1825537
>>825467
Просто нельзя.
Да и зачем? Кастишь в указатель на примитивную функцию и всё
900 1825538
>>825450
Кастить в указатель на функцию как раз можно.
901 1825543
>>825526

> ссылку на переменную класса, вызывающую функцию


Иди проспись, окаянный
902 1825544
>>825536
Потому что енам в классе - это тот же енам, а вот функция-член класса, пусть и статическая, - это не то же самое, что и глобальная функция
903 1825545
>>825544
В итоге методы класса не учитываются при adl в том примере с темплейтным принтом енума?
904 1825549
>>825526
Ссылки, лямбды.
905 1825557
Сап, понимаю, что многого прошу, но я не знаю, что делать.
Задали реализовать алгоритм шифрования ГОСТ 28147-89.
Проблема в том, что программа шифрует, но вот назад не расшифровывает правильно даже один блок.
Не могу понять с чем я проебался, надеюсь на помощь.
С меня как всегданихуя.
https://pastebin.com/Khti8mvJ
1602110537220.gif1,3 Мб, 202x360
sage 906 1825559
>>825557

> С меня как всегданихуя.

907 1825563
>>825557
Ну ищи ошибку, чо.
908 1825566
if (this->mode == SIMPLECRYPT) //Режим шифрования
else if (this->mode == SIMPLEENCRYPT)//Режим дешифровки

Уверен?
909 1825567
% 4294967296;
Это зачем?
910 1825572
https://onlinegdb.com/rkKw7RiLP

Почему у меня для raw pointers производительность выше?

#include <iostream>
#include <chrono>
#include <memory>
using namespace std;
using namespace std::chrono;
#define TIMEUNIT high_resolution_clock::time_point
#define TIMENOW high_resolution_clock::now()
#define TIMESECONDS(x) duration_cast<seconds>(x).count()
#define TIMEMICROSECONDS(x) duration_cast<microseconds>(x).count()
const size_t size_x = 300;
const size_t size_y = size_x;
const size_t windows_x = 10;
const size_t windows_y = windows_x;

int main()
{
// unique pointer test
{
size_t number_of_operations = 0;
unique_ptr<bool[]> mask = unique_ptr<bool[]> (new bool[size_y size_x]);
unique_ptr<bool[]> mask_local = unique_ptr<bool[]> ( new bool[(windows_x
2 + 1) (windows_y 2 + 1)]);
TIMEUNIT t1 = TIMENOW;

for(int i = 0; i<size_y; i++)
for(int j = 0; j<size_x; j++)
mask[i size_x + j] = ((i+j)%2) == 0;

for(int i = 0; i<size_y; i++)
for(int j = 0; j<size_x; j++)
{
int ii0 = i - windows_y;
if(ii0<0) ii0 = 0;
int ii1 = i + windows_y;
if(ii1>size_y) ii1 = size_y;
int jj0 = j - windows_x;
if(jj0<0) jj0 = 0;
int jj1 = j + windows_x;
if(jj1>size_x) jj1 = size_x;
for(int ii = ii0; ii< ii1 ; ii++)
for(int jj = jj0; jj< jj1 ; jj++)
{
mask_local[(ii - ii0)
(windows_x 2 + 1) + jj - jj0] = mask[iisize_x + jj];
number_of_operations++;

}

}
TIMEUNIT t2 = TIMENOW;
cout<<"Unique pointer: "<< TIMEMICROSECONDS(t2 - t1)/1000.0/1000.0 << " sec" << "; nop = " << number_of_operations << endl;
}

// raw pointer test
{
size_t number_of_operations = 0;
bool mask = new bool[size_y size_x];
bool mask_local = new bool[(windows_x 2 + 1) (windows_y 2 + 1)];
TIMEUNIT t1 = TIMENOW;

for(int i = 0; i<size_y; i++)
for(int j = 0; j<size_x; j++)
mask[i size_x + j] = ((i+j)%2) == 0;

for(int i = 0; i<size_y; i++)
for(int j = 0; j<size_x; j++)
{
int ii0 = i - windows_y;
if(ii0<0) ii0 = 0;
int ii1 = i + windows_y;
if(ii1>size_y) ii1 = size_y;
int jj0 = j - windows_x;
if(jj0<0) jj0 = 0;
int jj1 = j + windows_x;
if(jj1>size_x) jj1 = size_x;
for(int ii = ii0; ii< ii1 ; ii++)
for(int jj = jj0; jj< jj1 ; jj++)
{
mask_local[(ii - ii0)
(windows_x 2 + 1) + jj - jj0] = mask[iisize_x + jj];
number_of_operations++;

}

}
TIMEUNIT t2 = TIMENOW;
cout<<"Raw pointer: "<< TIMEMICROSECONDS(t2 - t1)/1000.0/1000.0 << " sec" << "; nop = " << number_of_operations << endl;
delete[] mask;
delete[] mask_local;

}

return 0;
}
910 1825572
https://onlinegdb.com/rkKw7RiLP

Почему у меня для raw pointers производительность выше?

#include <iostream>
#include <chrono>
#include <memory>
using namespace std;
using namespace std::chrono;
#define TIMEUNIT high_resolution_clock::time_point
#define TIMENOW high_resolution_clock::now()
#define TIMESECONDS(x) duration_cast<seconds>(x).count()
#define TIMEMICROSECONDS(x) duration_cast<microseconds>(x).count()
const size_t size_x = 300;
const size_t size_y = size_x;
const size_t windows_x = 10;
const size_t windows_y = windows_x;

int main()
{
// unique pointer test
{
size_t number_of_operations = 0;
unique_ptr<bool[]> mask = unique_ptr<bool[]> (new bool[size_y size_x]);
unique_ptr<bool[]> mask_local = unique_ptr<bool[]> ( new bool[(windows_x
2 + 1) (windows_y 2 + 1)]);
TIMEUNIT t1 = TIMENOW;

for(int i = 0; i<size_y; i++)
for(int j = 0; j<size_x; j++)
mask[i size_x + j] = ((i+j)%2) == 0;

for(int i = 0; i<size_y; i++)
for(int j = 0; j<size_x; j++)
{
int ii0 = i - windows_y;
if(ii0<0) ii0 = 0;
int ii1 = i + windows_y;
if(ii1>size_y) ii1 = size_y;
int jj0 = j - windows_x;
if(jj0<0) jj0 = 0;
int jj1 = j + windows_x;
if(jj1>size_x) jj1 = size_x;
for(int ii = ii0; ii< ii1 ; ii++)
for(int jj = jj0; jj< jj1 ; jj++)
{
mask_local[(ii - ii0)
(windows_x 2 + 1) + jj - jj0] = mask[iisize_x + jj];
number_of_operations++;

}

}
TIMEUNIT t2 = TIMENOW;
cout<<"Unique pointer: "<< TIMEMICROSECONDS(t2 - t1)/1000.0/1000.0 << " sec" << "; nop = " << number_of_operations << endl;
}

// raw pointer test
{
size_t number_of_operations = 0;
bool mask = new bool[size_y size_x];
bool mask_local = new bool[(windows_x 2 + 1) (windows_y 2 + 1)];
TIMEUNIT t1 = TIMENOW;

for(int i = 0; i<size_y; i++)
for(int j = 0; j<size_x; j++)
mask[i size_x + j] = ((i+j)%2) == 0;

for(int i = 0; i<size_y; i++)
for(int j = 0; j<size_x; j++)
{
int ii0 = i - windows_y;
if(ii0<0) ii0 = 0;
int ii1 = i + windows_y;
if(ii1>size_y) ii1 = size_y;
int jj0 = j - windows_x;
if(jj0<0) jj0 = 0;
int jj1 = j + windows_x;
if(jj1>size_x) jj1 = size_x;
for(int ii = ii0; ii< ii1 ; ii++)
for(int jj = jj0; jj< jj1 ; jj++)
{
mask_local[(ii - ii0)
(windows_x 2 + 1) + jj - jj0] = mask[iisize_x + jj];
number_of_operations++;

}

}
TIMEUNIT t2 = TIMENOW;
cout<<"Raw pointer: "<< TIMEMICROSECONDS(t2 - t1)/1000.0/1000.0 << " sec" << "; nop = " << number_of_operations << endl;
delete[] mask;
delete[] mask_local;

}

return 0;
}
911 1825573
>>825572
там знак умножение проебался. По ссылке все компилируется
image.png90 Кб, 783x420
912 1825578
>>825573
Оптимизации не включены.
913 1825589
>>825578
Значит у меня INTEL компилятор сломан на машине

$ sh command_line.sh
Results for ICPC
Unique pointer: 8.98449 sec; nop = 9506250000
Raw pointer: 1.36868 sec; nop = 9506250000
Results for GCC
Unique pointer: 0.763707 sec; nop = 9506250000
Raw pointer: 0.752126 sec; nop = 9506250000

$ vi command_line.sh
#!/bin/bash
echo "Results for ICPC"
icpc --std=c++11 -Ofast cc_raw_uni.cc -o run_new
./run_new
echo "Results for GCC"
g++ --std=c++11 -Ofast cc_raw_uni.cc -o run_new
./run_new
sage 914 1825649
>>825462

Войд укащатель есть указатель только
на данные?
sage 915 1825652
>>825572
В ойсемблер погляди.
916 1825693
>>825545
Конечно не учитываются
917 1825869
918 1825871
>>825693
Понял, спасибо
919 1825874
>>825155
Просто сделай как в fmtlib сделано, будет проще и тебе и остальным. https://fmt.dev/latest/api.html#formatting-user-defined-types
tl;dr специализируй структуру, в которой и хранится метод to_string
Недавно смотрел одну презентацию Тита Винтера, в которой он говорил, что у языка большая проблема, если в библиотеках люди отказываются от простого написания свободных функций из-за угрозы огрести от ADL.
1602163099732.gif1,3 Мб, 202x360
sage 920 1825953
921 1826235
>>825155
Какая-то лаба002.
Ты лучше сделай чтобы это работало в рантайме: на вход подавался std variant с твоими енумами и выполнялись функции в зависимости от доступных операций.
922 1826308
>>826235
Хуйню несешь
923 1826362
>>826308
Ладно, лаба003
924 1826774
>>824807
По моему из за подобной хуйни добавили полиморфические аллокаторы, посмотри может тебе подойдет.
925 1827014
Объясните ньюбису почему #define - плохо?
sage 926 1827026
>>827014
#define ++ --
927 1827043
>>827014
Потому что тупо текстовая замена без контекста, типов не видит, нихуя не видит.
Как тебе такое
#define SQR(x) (xx)
SQR(2+3)

>11 //а не 25, так как развернулось в 2+32+3



Или например
#define STEP() x++; y++;

int x=y=0;
if(false)
STEP();
return y; //бабах - y++ сработает всегда
928 1827045
>>827043
Спасибо, Абу.
SQR(x) x * x

2+3 x 2+3
sage 929 1827180
Шаблоны появились в помощь низкоквалифицированных мартыхам, для которых макросы слишком опасный инструмент, хотя мощный и простой в реализации.
930 1827210
>>827180
Макросы в плюсах калл
931 1827211
>>827180
С появился в помощь низкоквалифицированных мартыхам, для которых ассемблер слишком опасный инструмент, хотя мощный и простой в реализации.
932 1827229
>>827180
Макросы (как и разделение на хедеры/исходники, да и вообще вся система компиляции C) - хак, потому что в маломощный PDP-11 нельзя было завести нормальные компилятор с линкером. Прости, анон, но это так.
933 1827248
>>827180
Не особо то и мощный - многие хотелки не получится реализовать.
sage 934 1827251
С помощью шаблонов можно сделать только подстановки типов, а макросы этим не ограничены. Поэтому макросы мощнее. Ну да, писать чутка сложнее, если много строк. И в ногу легко выстрелить. Но настоящим программистам норм.
935 1827302
Игнорьте толстяка
936 1827309
>>827251

Как мне сделать диспатч по типам в зависимости от типа данных, который является параметром макроса (т.е. подставить разный код для разных типов)? А если макрос использует другие, которым тоже не помешал бы диспатч по типам?

"Настоящий программист" - это кто? Покажь, что написал.
937 1827311
>>827309
Лол, сначала не увидел, кому ты отвечаешь, и не много охуел с того, что ты просишь реализовать.
938 1827331
>>827309
В C11 добавили _Generic ахахахаха, как будто кто-то им когда-либо пользовался
939 1827397
>>827309

> диспатч по типам в зависимости от типа данных


Не нужно. Ты знаешь тип в точке вызова - ты вызываешь нужную версию макроса. Результат: невозможен код, который разворачивается хз во что (обычная болезнь ++С).

> макрос использует другие


#define iprint(x) printf("%d\n", x)
#define wrap(x) do{ x; }while(0)
#define twice(f,x,y) wrap(f(x);f(y))
#define iprint2(x, y) twice(iprint,x,y)
940 1827474
Сап двач, мне нужно назвать файл "в честь" переменной. То есть

int a = 9;
ofstream fn;
fn.open("(тут должно быть значение а).txt");
как мне это сделать?
941 1827479
>>827474
Всмысле 9.txt или a.txt?
942 1827481
>>827180
0\10 тралинг, попробуй получше.
943 1827482
>>827474
int a = 9;
const auto name = std::to_string(a) + ".txt";
std::ofstream ofs{ name };
944 1827483
>>827397
И зачем это малочитаемое говно? Это выглядит не по ХАКЕРСКИ МАМ Я СМАТРИ КАК МОГУ - это неподдерживаваемое error-prone дерьмо
945 1827489
Пацаны, почему g++ требует определить int main, но не требует сделать return 0 ?
946 1827492
>>827489
По стандарту main это единственная функция, в которой можно не писать return - тогда будет подразумеваться, что return 0. Нахуя так сделали - без понятия.
947 1827506
>>827482
два чаю анону
948 1827522
>>827397

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

Как мне получить численные значения диапазона для данного типа? С шаблонами я могу использовать std::numeric_limits<T>::min/max(). Как мне это сделать в макросах без того, чтобы я везде протаскивал диапазон?

Это самый простой пример из того, что я имею в нашей кодовой базе.
949 1827532
Ребят кто в треде, предлагаю поучаствовать в пиксель батле и увековечить с++
950 1827558
>>827532
Пиздуй обратно в свой загон, студентик.
sage 951 1827590
>>827522
Вот тут шаблоны мощнее. Но когда компилятор поддерживает что-то вроде typeof, то можно получить этот эффект. А вообще, зачем? Наверняка ваш код можно переписать без этого.
952 1827616
>>827590

Как мне из typeof() получить численные значения диапазона (ну да, есть хаки, которые основаны на ~(typeof(T)0 и (T)-1 < 0), но это просто удачно можно задействовать арифметику в данном конкретном смысле). Мы говорим об общем принципе построения кода, который позволяет обойтись без бойлерплейта в каждом из call sites, где применяется шаблонный код.
sage 953 1827617
>>827616
* в данном конкретном случае, ~(typeof(T)0)
954 1827618
>>827590

>А вообще, зачем? Наверняка ваш код можно переписать без этого.


Следуя этой логике, нужно избавляться от всего лишнего. Вообще любую программу можно написать с помощью только while и if, остальное не нужно.
955 1827636
>>827618
movfuscator
956 1827655
>>827558
Не нравится, спи красавица
957 1827671
>>827489
По линукс-вей, подразумевается что у тебя много маленьких программок, выполняющих простые действия. Они общаются между собой через пайпы (грубо говоря stdout одной подается на stdin другой).
Но кроме этого программа может завершиться с ошибкой. Код ошибки 0 традиционно означает отсутствие ошибки, ну и соответственно, отсутствие return из main подразумевает что твоя программа отработала штатно.
958 1827674
>>827636
Так вот она какая, денува.
959 1827760
>>827671

>пайпы


Они тоже сделаны в ranges на шаблонах, давайте повторите на макросах=)
960 1827900
Ну когда уже рабочие модули с концептами завезут
961 1827920
Когда перекат? Есть вопрос, который вызывает у меня БОЛЬ - streams и кодировки, но не хочу начинать в тонущем треде
962 1827944
>>827900

>концептами


Да уже можно пользоваться
963 1828179
Молю о помощи.
Как в c++ хранить и делать арифметические операции с большими числами с помощью стандартных библиотек?

Например, сумму всех 10 значных цифр (От 1000000000 до 9999999999)
964 1828196
>>827900
Нафиг не нужны.
965 1828197
>>828179
Через строки, конечно.
966 1828202
>>828179
Что-то из этого
1. Использовать готовую библиотку для работы с длинными числами.
2. Написать свой инструментарий для работы с длинными числами.
3. Если не требуется производительность, то достаточно примитивного подхода с хранением значений разрядов в виде символов строки.
sage 967 1828439
>>827671
Спасибо, капитан. Вопрос был - почему кнопелятор требует объявлять тип main, но не требует вовзарщать значение.
968 1828460
969 1828469
>>828439

>отсутствие return из main подразумевает что твоя программа отработала штатно.

970 1828519
>>828469
1. Кто знает, почему такое исключение сделали?
2. Зачем требовать int, если можно сделать еще исключение и разрешить void или ничего?
971 1828618
>>828519
На сколько я помню там такие варианты.
return 0 - штатное окончание
А иначе код ошибки.
972 1828619
>>828519

>1. Кто знает, почему такое исключение сделали?


Так получилось ради совместимости с сями, в которым это стандартизировано ради старых долбанутых компиляторов. Конечно это можно было оставить на откуп конкретным имплементациям и сделать это как compiler extension, но Комитет мыслит не идёт простыми путями. Только недавно Корентин Жабо убедил комитет, что не надо создавать своё надмножество Юникода (причина: вдруг появятся новый набор символов не в Юникоде, нужно же нам быть готовыми к такому).
973 1828679
Читаю пикрил. Почему автор использует прямую инициализацию? Не лучше ли использовать инициализацию с фигурными скобками?
974 1828819
>>796909

>Индустрия как сидела на cmake, так и сидит.


CMake тоже говно
975 1828825
>>828679
Потому что автор еблан. Нормальные люди пишут auto a = type();
976 1829110
Анон, который всё пишет про САПРы, название твоей компании случайно не на L начинается?
977 1829137
>>829110
Нет
7OjoK7NIG50.jpg174 Кб, 1080x1047
978 1829146
>>829137
Пиздец конечно, решил сменить работу, нашёл просто прекрасную вакансию, но объективно понимаю, что как бы я не знал С++, без всей вузовской математики, которую я естественно проебал на первых курсах, я им нахуй не нужен. До того чё-то стало грустно, аж внутри нехорошо.
Можешь посоветовать, как изучать всё это дело лучше всего?
979 1829158
>>829146
Не знаю, мы математику особо не требуем. Обычно достаточно школьного уровня. Гораздо важнее, чтобы ты умел решать задачи на c++, потому как непосредственно математика - это всего лишь процентов десять из того, что тебе придется писать. Всё уже до тебя написано.
980 1829215
>>829146
Да хотя бы первые курса 2 освой. Не скажу что там трудно. Просто надо быть упёртым.
981 1829294
Нахер этот свич нужен, если там только целочисленные типы можно сравнивать?
982 1829300
>>829294
Ну а как по твоему мнению сравнивать типы с точкой?
983 1829306
>>829300
А в чем проблема объясни мне, а то я не понимаю. В if их же можно сравнивать.
Да и при чем тут типы с точкой? А если мне, например, строки нужно сравнить?
984 1829364
>>829306
Проблема в том, что строго сравнивать( через ==) типы с точкой не кошерно, поскольку они могут отличаться на очень маленькое число из-за округлений. Особенно, если они получены разными путями.

Начал гуглить о том как оно работает тут проясняется общая идея
https://www.cyberforum.ru/blogs/18334/blog91.html
Грубо говоря мы преобразуем число в некий адрес и переходим по нему без сравнения со всеми остальными.

>А если мне, например, строки нужно сравнить?


В с11 вроде как завезли. Тут разбор работы.
https://habr.com/ru/post/166201/

Возможно в моих рассуждениях есть ошибки, надеюсь старшие товарищи поправят.
985 1829511
Сделал на работе Performance Report по проекту, выступил с презентацией. Все порадовались цифрам и тому, насколько сильно результаты выше, чем у конкурентов.

Но всё равно попросили сделать так, чтоб новая реализация могла работать не только Windows/Linux x64 с привязкой к процессору.
Сейчас оно тоже работает, но в случае несовместимости (другая ось, другая битность, другой процессор) переключается на Fallback-имплементацию, значительно менее производительную.

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

Вот только производительность в этом случае падает в 10 раз, потому что без асма и интринсиков работать с длинной арифметикой невозможно. Ну, то есть, возможно конечно, но это всегда будет значительно медленнее, чем использование асма или интринсиков.

Конечно, круто, что в C++ 20 появился <bit> и теперь не нужно писать десять оберток над popcnt и прочими lzcnt, но вот если бы ещё иметь стандартные способы работы с carry-flag и _mulx_u64, то все заботты бы решились.
image229 Кб, 1643x181
986 1829665
Привет, анон. Возник вопрос из праздного любопытства: где посмотреть размер динамического массива?
Вроде, как я понимаю, это значение хранится перед первым элементом массива в куче, однако, начинаю смотреть память и в упор не вижу ничего похожего, что я делаю не так?
На пике фиолетовое - как раз объекты в массиве в количестве трёх штук, но что до них, что после - дебажный мусор.
987 1829671
>>829665

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


Не обязательно
988 1829673
>>829665
Возможно глупая идея, но подёргай длину массива, и посмотри на изменяющиеся переменные с помощью чит енджина.
989 1829677
>>829665
Как ты думаешь, почему в векторе размер - это разность указателей? Почему в строке по крайней мере до недавнего времени хранят указатель и размер?
990 1829680
>>829677
Контейнеры всё равно по умолчанию используют std::allocator, который хоть и получает длину в deallocate — в стандартной имплементации это (почти нигде?) не используется.

Из гарантированной пользы только знание того, для скольки объектов вызывать деструкторы.
991 1829698
>>829511
Сделай fallback'и под разные процы, вынести в библиотеки с pure C API
992 1829713
>>829671
Собственно да, порылся еще в вариантах, как это реализуют, понял, что не обязательно
>>829677
Даже не знаю, какой вывод я должен был по этим двум вопросам сделать? Что зависит от реализации?
>>829673
Это я сразу пробовал, но нет, не сработало
993 1829717
>>829680
std::allocator - обертка над malloc. malloc это обертка над какой нибудь парашей уровня HeapAlloc или чем-то там линуксовым.

Это все операционкой манажится
994 1829720
>>829717
Вот именно. Но для построения более эффективных кастомных аллокаторов этот size всё же можно использовать, что и предполагается интерфейсом std::allocator.
995 1829722
>>829713
Я прогнал тестик на своей системе, нашёл размер как раз перед первым элементом.
Заглянул в отладчике в delete[], оттуда в free, там увидел чтение как раз этого значение из памяти (с заметной овер-аллокацией)
996 1829724
>>829720
Зачем вообще заниматься аллокаторостроительством, когда уже все построили за тебя?
997 1829725
>>829722
Компилятор какой?
998 1829726
>>829725
g++ (GCC) 10.2.0
999 1829727
>>829724
Так можно про всё что угодно сказать
1000 1829728
>>829726
Благодарствую
1001 1829736
>>829665
Это implementation defined. Так что ищи как это устроено в твоём тулсете. (std::allocator, malloc, calloc, менеджер памяти операционной системы)
1002 1829738
>>829724
Для специфических задач. Посмотри например про pmr аллокаторы
1003 1829743
>>829738
Я читал про них, честно говоря плохо понимаю, где и когда они могут быть нужны. Идея комбинирования разных аллокаторов в одной программе - странная. Я видел софт, где на старте выделяется 1 кусок в хипе, и далее 0 аллокаций. Я видел софт, где используется кастомный мималлок, я видел софт, где дефолтного new достаточно.

Но вот идейно разные аллокаторы в одном месте я еще не видел. Мож чего-то не понимаю.
1004 1829789
>>829724
Оптимизации. Например арена аллокатор - когда выделаяешь память на много маленьких объектов, а потом пристреливаешь всю арену целиком за раз.
>>829743
Сами по себе они может и не нужны одновременно, зато апи либы можно пилить единым.
1005 1829844
>>829713

> Даже не знаю, какой вывод я должен был по этим двум вопросам сделать? Что зависит от реализации?


Что в общем случае размер выделенной памяти тебе нужно запоминать самому.
1006 1829851
>>829844
А, так просто. Это более чем понятно, меня просто в какой-то момент зацепила полумагическая реализация delete[], вроде как и использую иногда, а как она понимает сколько именно нужно делитнуть - не знал
1007 1830063
>>829851
delete[] почти всегда в плане деаллокации реализован так же, как и delete, ему самому размер нужно знать только для того, чтоб правильно вызватть деструкторы для всех объектов массива.

При этом, если это массив примитивных типов или trivially_destructuble типов, то их деструкторы при delete[] не вызываются и размер массива компилятор больше не заботит. Он даже может начать вызывать operator delete[](void ptr) при наличии operator delete[](void ptr, size_t).

Но тот факт, что размер там всё равно может лежать перед первым элементом — используется как дедаль имплементации malloc-free.

То есть, если ты заоверлоадишь new/delete и new[]/delete[] (включая sized-версию), прибив там везде руками имплементацию, которая НЕ ЗАПИСЫВАЕТ размер перед первым элементом — у тебя delete[] всё равно будет работать, потому что компилятор не может гарантированно знать, что имплементация malloc/free/whatever хранит там размер, он не может на это полагаться, поэтому он дополнительно хранит где-то у себя размер ЕЩЁ РАЗ, чтоб знать, сколько деструкторов вызывать.

Ещё из этого вопроса можно почерпнуть всякое: >>824807
1008 1830066
>>830063
tldr:
1. Вызов delete[] с точки зрения языка должен вызывать деструкторы, так что он всегда знает размер. При этом он всё ещё может аналогично делать это с помощью over-allocation. А может и нет.

2. Имплементация operator delete[] может использовать allocator, производительность или работоспособность которого может зависить от того, известен ли размер. Это отдельный слой и он может быть связан, а может быть и не связан с первым пунктом.
1009 1830073
>>829724
Всё — это что?
Ты имеешь ввиду кучи готовых опенсорсных аллокаторов, которые можно без проблем втянуть в свой проект? Если да, то, в принципе, можно согласиться.

Или ты про то, что готовых new-malloc/delete-free должно быть и так достаточно?
1010 1830119
>>830073

> Всё — это что?


tcmalloc, jemalloc, mimalloc
1011 1830269
Посоветуйте либ для разработки приложений на андроид.
1013 1830726
>>830405
Qt6 актуальнее для новых разработок. Выйдет 1 декабря.
1014 1830732

>C++


>100т.р.


>C#


>250т.р.



ну ептваю мать анон что такое
1015 1830743
>>830732
Учи шарп в чем проблема? Он же проще
1016 1830767
>>830732
Если ты вкатыш - то вкатываться в С++ сейчас правда не стоит. Шарп\вебговно\девопс денежнее и проще
sage 1017 1830774
>>830767
Но мне больше нравится c++, у него столько возможностей, производительность, лучшие программы написаны на нём
1018 1830779
>>830774
Пиши тогда
1019 1830796
>>830774
Тебя предупредили. Я в свое вкатывался ради именно этого, охуенный язык, можно пердолиться вообще через все, что угодно, скорость. И если бы не nvidia мой потолок был бы унылое говно на С++98 за 80к в моем мухосранске. Сейчас я понимаю, что с точки зрения уютненько пристроить свою жопку - лучше было бы учить любой другой язык, а, в идеале, вообще фронтэнд, ебись он конём
1021 1830959
посоветуйте норм компилятор на с++, не требовательный и без лишних вещей, мне бы чисто задания с универа выполнять на нем
1022 1830967
>>830959
На первом курсе хватит и wandbox
1023 1830968
>>830959
Если тебе чистый компилятор нужен то gcc в помощь. Но учти там всё надо делать руками. Не думаю что тебе нужен именно компилятор, скорее ide.
А так visual studio возьми. Можешь взять свежую, можешь 08-ого году, у неё интерфейс более виндовый.
1024 1831356
>>829110
Таки да.
L"Компаниянейм"
Unews20201006lasvegasatomic1.jpg94 Кб, 742x960
1025 1831401
1024 ответа, давайте уже же перекат.
32578945690 (3).jpg569 Кб, 1000x1000
1026 1831470
>>831356
Вот с этого капитулировал
1027 1831565
>>830732
Где вы такое откапываете, я ебал. Живу в центре Гейропки на 6.5к рейхсмарок с 3 годами опыта. Сваливайте из рашки и снг говна как можно раньше, мой вам совет.
1028 1831578
>>831565

>Сваливайте из рашки и снг говна как можно раньше


Я работаю над этим.
1029 1831582
>>831578
Успехов, анон.
1030 1831588
>>831582
Спасибо. И тебе.
1031 1831597
>>831579 (Del)

>тапсырмалар

1032 1831604
>>831597
хех
1034 1845154
Что думаете насчёт обучения за счёт реализации разных классов/функций из STL самостоятельно?
1035 1845361
>>845154
Сойдет чтобы набить руку на шаблонах.

Проблема в том, что в реальном проекте ты за пол года можешь ни одного шаблона не написать
Тред утонул или удален.
Это копия, сохраненная 2 апреля 2021 года.

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

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