Программирование


Ответить в тред Ответить в тред

<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
874 52 193

C++ тред #114 /cpp/ Аноним # OP 19/06/20 Птн 19:11:01 17283151
TimelineCpp20Bi[...].png (43Кб, 1113x384)
1113x384
cpp.png (213Кб, 1200x780)
1200x780
ithare.png (44Кб, 512x341)
512x341
Аноним 19/06/20 Птн 19:16:36 17283232
Аноним 19/06/20 Птн 19:20:19 17283263
Зачем нужны ranges? Пока выглядит как попытка писать на буквально 2 строки меньше
Аноним 19/06/20 Птн 19:24:06 17283294
>>1728326
Чтобы через пару десятков лет любой язык был подмножеством C++.
Аноним 19/06/20 Птн 19:32:13 17283375
>>1728326
Пайплайны, ленивые вычисления, генераторы, вот это всё.
int sum = accumulate(views::ints(1) | views::transform([](int i){return i*i;}) | views::take(10), 0);
Аноним 19/06/20 Птн 19:40:10 17283396
>>1728315 (OP)
Я правильно понимаю, что все кроме модулей добавляется просто созданием новой библиотеки, а сам язык фактически не изменяется?
Аноним 19/06/20 Птн 19:44:38 17283437
>>1728315 (OP)
А что, если появление модулей решит проблему с подключением либ/управлением зависимостями, и легаси cmake наконец-то сдохнет?
Аноним 19/06/20 Птн 19:52:38 17283458
>>1728315 (OP)
>C++20
Нахуя так усложнять язык? ещё stl нормально использовать не научился, а они уже пару новых парадигм успели придумать. Нахуя блять это всё делается, на каком-то тырпрайзе реально не хватало этих ranges и constexpr контейнеров, чтоб всё работало?
Аноним 19/06/20 Птн 20:30:47 17283599
>>1728343
cmake - это не пакетный менеджер. В cmake ты говоришь, как и что нужно для сборки твоего проекта.
Аноним 19/06/20 Птн 20:58:26 172837310
Аноним 19/06/20 Птн 21:00:03 172837511
>>1728345
А мне нравится. Язык становится ближе к нормальным Хаскелям-SMLям.
Аноним 19/06/20 Птн 21:14:13 172839112
>>1728375
Так и используй хаскель свой, нахуй это сюда пихать
Аноним 19/06/20 Птн 21:21:08 172839513
>>1728391
Не могу, он тормозит и не стыкуется с легаси говном.
А вот новые кресты позволят макакировать быстрее и проще. Но это не точно.
Аноним 19/06/20 Птн 21:46:23 172842214
>>1728395
Лучше бы разбили С++ на несколько подязыков, отдельный для каждой "парадигмы", и для каждого описали свой стандард, из которого были бы выброшены все элементы, не соответствущие этой "парадигме" конкретного подязыка. Логично, что многие подходы ranges так или иначе являются переосмыслением тех же stl итераторов. В проекте, в котором повсеместно используюется один подход, другой бы не применялся. Итого можно было бы получить подязыки С++STL, C++Functional, C++Ranges и т. д. И все они были бы совместимы друг с другом на уровне отдельных библиотек.
Аноним 19/06/20 Птн 21:47:44 172842315
>>1728337
Это блять дрочка вприсядку.
Всё что сложнее бесконечной последовательности факториалов суммы чисел в массиве в такой записи вырождается в непредставимый пиздец, который сосет у for(int i...) по скорости написания и читаемости.
Аноним 19/06/20 Птн 21:50:46 172842616
>>1728422
То есть ты утверждаешь, что программист обязан писать весь код исключительно в одной парадигме?
Аноним 19/06/20 Птн 21:51:32 172842817
>>1728422
Тут от обеспечения совместимости с прошлым-то стандартом жопы скрипят, а ты хочешь еще и диалектов наплодить.
Аноним 19/06/20 Птн 21:52:23 172843118
>>1728426
В рамках одного проекта - да. Так же как и должен придерживаться единого кодинг стайла
Аноним 19/06/20 Птн 21:53:47 172843419
>>1728431
*можно даже сказать не проекта, а модуля
Аноним 19/06/20 Птн 22:02:56 172845220
>>1728337
Все это делается на итераторах, ranges это буквально сахарок. Я не понимаю какие идиоты пропустили этот оверинжинирд бред в стандарт.
Аноним 19/06/20 Птн 22:03:56 172845621
>>1728431
В хоть сколько-нибудь больших проектх это не работает, как бы красиво и идеалистично это ни звучало. К тому же, кодинг стайл ещё не значит конкретная парадигма.
Аноним 19/06/20 Птн 22:04:02 172845722
>>1728434
⚹⚹можно даже сказать не модуля а функции

⚹⚹⚹можно даже сказать не придерживаться
Аноним 19/06/20 Птн 22:05:39 172846223
>>1728452
А итераторы делаются на указателях, так что итераторы - это тоже сахарок и нинужна. Да и вообще, нахуй кресты, ведь сишка тоже тьюринг-полная.
Аноним 19/06/20 Птн 22:06:46 172846324
Аноним 19/06/20 Птн 22:09:34 172846625
>>1728457
нельзя даже сказать
Аноним 19/06/20 Птн 22:10:55 172846826
>>1728466
⚹⚹⚹⚹
забыл надеть модные астериксы
Аноним 19/06/20 Птн 22:11:42 172847027
>>1728345
Ты парадигмами называешь ranges и constexpr-контейнеры? Ты ебанутый?
Аноним 19/06/20 Птн 22:13:08 172847128
Аноним 19/06/20 Птн 22:25:06 172848429
Короче вместо учебника по информатике чтобы стать ближе к байтоёбству, я собрался читать книгу Код Петцольда.
Я сделал правильный выбор?
Аноним 19/06/20 Птн 22:25:16 172848530
>>1728470
Да, и готов с этим поспорить.
Аноним 19/06/20 Птн 23:01:09 172851531
Анончики, как писать свой аллокатор, сам пишу учусь на QT, но с написанием подобного не сталкивался. На степике не очень хорошо объяснено я тупой просто. Что почитать чтобы реализовать Buddy и SLAB аллокаторы.
Аноним 19/06/20 Птн 23:57:25 172857732
Аноним 20/06/20 Суб 00:17:27 172858733
>>1728515
> Что почитать чтобы реализовать Buddy и SLAB аллокаторы.
Совет номер один от гуру цпп да и в принципе адекватных людей - использовать кастомные аллокаторы только по результатам профилирования и только если это bottleneck
Аноним 20/06/20 Суб 05:24:48 172868234
>>1728337
Это что-то типа Linq из шарпа что ли?
Аноним 20/06/20 Суб 06:50:07 172868735
>>1728252 →
>Есть какие-нибудь проблемы именно по части содержания?

Именно эту книгу я не читал, а читал его учебник "введение в профессию". По части содержания - всё очень-очень неплохо. Проблема только с тем как он хуево пишет. Натравить бы на эти книги хорошего редактора с писательским опытом - цены бы им не было.
Аноним 20/06/20 Суб 09:22:54 172870236
Двач, как несколько std::array разных размеров передавать в функцию?
Аноним 20/06/20 Суб 10:17:01 172872437
Допустим, у меня есть класс foo, в котором есть константный метод bar. У него есть ограничение только на изменение объекта, на который указывает this, или на что-то ещё?
Аноним 20/06/20 Суб 10:23:57 172873038
>>1728724
Всё неконстантное, не связанное с объектом + mutable члены класса
Аноним 20/06/20 Суб 10:26:11 172873239
>>1728702
Тащемта берешь и без задней мысли передаёшь. Или пишешь шаблон

template<class T, size_t n>
void foo(std::array<T, n> const &arr){}
Аноним 20/06/20 Суб 12:34:40 172880740
>>1728682
По скорости не уступает линку, да.
Аноним 20/06/20 Суб 12:42:14 172881241
>>1728682
>>1728337
Есть же уже либа с более адекватным синтаксисом https://github.com/mrange/cpplinq (правда ее уже никто не обновляет). Почему они решили сделать какую-то нечитабельную херню вместо этого?
Аноним 20/06/20 Суб 13:06:27 172882742
Как уточнить шаблон функции? Инет перерыл, нихера не нашёл.
Аноним 20/06/20 Суб 13:16:21 172884143
Аноним 20/06/20 Суб 13:33:44 172885244
>>1728812
>решили сделать какую-то нечитабельную херню
c++ way
Аноним 20/06/20 Суб 14:54:53 172893645
>>1728515
В большинстве случаев проще свой контейнер написать под конкретную задачу, чем прикручивать кастомный аллокатор к библиотечному контейнеру.
Аноним 20/06/20 Суб 15:07:14 172894346
image.png (22Кб, 407x457)
407x457
Почему в первом варианте с шаблонной функцией компилятор не может автоматом использовать оператор преобразования в TestView, а во втором спокойно использует?
Аноним 20/06/20 Суб 16:00:30 172899147
>>1728943
Указывай шаблонные параметры при вызовах функций. Должно работать.
Аноним 20/06/20 Суб 16:17:12 172900848
>>1728991
Работать то оно будет, но каждый раз писать аргументы шаблона заебывает. Вопрос почему второй вариант работает если это просто частный случай первого?
Аноним 20/06/20 Суб 16:38:22 172902749
>>1729008
>просто частный случай первого
Нет, это отдельный шаблон со своим выводом типов.
Аноним 20/06/20 Суб 17:24:51 172906050
Аноним 20/06/20 Суб 17:25:38 172906251
Объясните мне на пальцах, что такое линковка, и почему при смене abi все пойдет по пизде
Аноним 20/06/20 Суб 18:18:41 172909952
>>1729062
> что такое линковка
Склеивание скомпилированных единиц трансляции (cpp файлов) в единый бинарник
> почему при смене abi все пойдет по пизде
Потому какой-нибудь бинарник рассчитывает, что в твоём классе будет два поля, но после поломки ABI там осталось одно. Повезёт, если не соберётся. Если не повезёт, то оно соберётся и отстрелит тебе хвост по самое ебало
Аноним 20/06/20 Суб 18:21:08 172910053
>>1729099
Разве abi это не про системные вызовы?
Аноним 20/06/20 Суб 18:25:07 172910554
>>1729100
ABI это как раз про линковку. Системные вызовы все на сях, и там ABI слава аллаху неизменен.
Аноним 20/06/20 Суб 21:29:32 172924555
>>1728687
А мне нравятся все его шутеечки охуенные.
Аноним 20/06/20 Суб 21:46:00 172925156
>>1728587
Мне чтобы сертификатик получить надо его бахнуть. Да и вроде на собесах просят реализовать, в качестве тестового задания.
Аноним 20/06/20 Суб 22:18:11 172927157
>>1729251
> Мне чтобы сертификатик получить надо его бахнуть.
Про туалетную бумагу слышал, не? Никому твои всратые сертификаты не нужны, повезёт, если прогеры твоё резюме прочитают за пять минут до собеса.
>Да и вроде на собесах просят реализовать, в качестве тестового задания.
Я так понимаю, эту страшилку тебе на тех же говнокурсах рассказали?
Аноним 21/06/20 Вск 00:41:41 172935958
>>1729271
Не на киберфоруме с чуваками общался. На кст и собес был на мидла-байтоёба.
Аноним 21/06/20 Вск 13:17:17 172952359
>>1729271
>Про туалетную бумагу слышал
Слышал, я ей жопу вытираю

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

>если прогеры твоё резюме прочитают за пять минут до собеса
Шиз, а как они ему будут вопросы задавать ты подумал? Им не выгодно так на отъебись делать собес, потому что они блять к себе на работу принимают, чтобы он деньги приносил, смекаешь? Я тебя может удивлю, но в нормальной конторе делается несколько печатных копий твоего резюме для каждого собеседующего.

>страшилку тебе на тех же говнокурсах рассказали?
Ну хоть тут ты не обосрался, хотя опять же - что будет в качетсве тестового даже сам Аллах не знает. Всё, что требуется от кандитата так это соответствовать собственному резюме.
Аноним 21/06/20 Вск 15:18:31 172963060
>>1729523
>Я тебя может удивлю, но в нормальной конторе делается несколько печатных копий твоего резюме для каждого собеседующего.
Всем плевать на твое резюме, у собеседующих есть набор стандартных вопросов и задач которые они задают, после собеседования они отправляют фидбэк и забывают о тебе.
Аноним 21/06/20 Вск 17:04:53 172969261
Двач, с каждым запуском программы генерируются одни и те-же числа, подскажите как исправить.

std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> distrib(1, 6);
Аноним 22/06/20 Пнд 06:32:57 173026662
Аноним 22/06/20 Пнд 07:31:21 173028963
Аноним 22/06/20 Пнд 07:58:58 173029264
>>1729692
Посмотри что rd() возвращает. Если там одное и тоже то ищи друкгой компилятор. Ну или придумай что-то свое - может система может сгенерировать достаточно слуыайное число, или там инициализируй хешом от текущего времени.
Аноним 22/06/20 Пнд 08:02:43 173029465
>>1729692
> Двач, с каждым запуском программы генерируются одни и те-же числа, подскажите как исправить.
Блять, так там и должны генерироваться одни и те же числа. Ты хоть почитай про это.
Аноним 22/06/20 Пнд 11:59:01 173041866
>>1730289
А как ncurses работает?
Аноним 22/06/20 Пнд 12:30:54 173045267
>>1730289
>>1730418
Однажды я за пару часов написал затычки для некоторых функций этой либы через winapi, чтобы собрать код с ncurses на шиндовс. И оно даже работало почти так же.
Аноним 22/06/20 Пнд 13:06:14 173049968
изображение.png (58Кб, 800x881)
800x881
>>1730418



Быстро-быстро срет в консоль

Аноним 22/06/20 Пнд 13:15:24 173050969
>>1730499
эх, сонсолька...

попердолить бы тебя....
Аноним 22/06/20 Пнд 19:31:25 173078270
232412.png (65Кб, 649x634)
649x634
После выполнения блока else (зеленым выделил), происходит не понятная хуйня. Программа не выходит из этого блока и не передает управление оператору вывода после него. Вместо этого она словно подвисает на пару секунд и завершается без сообщений ошибок.

Суть функции: передаю корневой каталог в котором надо найти все файлы (включая файлы в под-директориях), извлечь из них информацию и засунуть в структуру, а структуру в вектор запушить (который на скрине пока не используется).
Аноним 22/06/20 Пнд 19:33:57 173078571
>>1730782
И да, если убрать этот блок else, то программа корректно выведет все файлы и директории (если выполнить cout << fullPath). При этом сам блок else, как я уже сказал, работает правильно.
Аноним 22/06/20 Пнд 19:39:01 173079272
Аноним 22/06/20 Пнд 19:57:23 173080373
>>1730782
Пройдись дебаггером да посмотри, что прога делает и где падает. Алсо, для дебажного вывода лучше делать флаш потока, иначе перед крашем может просто случайно не вывести какую-нибудь строку. Например, можно вместо "\n" делать std::endl.
Аноним 22/06/20 Пнд 19:59:34 173080974
>>1730782
Ну так запусти под отладчиком и посмотри где зависает и почему падает
Аноним 22/06/20 Пнд 20:13:09 173082175
>>1730782
Ты осознаешь почему ругаются на си с классами?
for(auto& p: std::filesystem::recursive_directory_iterator(dirname))
std::cout << p.path() << ' ' << p.file_size() << '\n';
Аноним 22/06/20 Пнд 20:24:23 173082676
>>1730821
У меня нет c++17 в gcc 8.1.0.

>>1730792
Я пробовал сигналами ловить его (SIGSEGV). Не ловит, значит это не он.

>>1730809
>>1730803
Если бы этот дебаггер еще работал сам нормально... Например, я сейчас смотрю как заполняются поля структур и вижу, что половина почему-то вообще не отображается после записи, хотя, если сделать cout этого поля, то все нормально. Хз, проблема ли это плагина для vscode, либо самого отладчика gdb.
Аноним 22/06/20 Пнд 20:28:19 173083277
>>1730826
>У меня нет c++17 в gcc 8.1.0.
Значит есть библиотеки со всем тем же искаропки.
Аноним 22/06/20 Пнд 20:42:19 173083878
>>1730782
Попробуй проект пересобрать заново. Такое бывает, когда какой-то объектный файл не обновился и срет в память. Если не поможет - смотри отладчиком или valgrind/drMemory.
Аноним 22/06/20 Пнд 21:55:48 173088879
014752.png (8Кб, 389x146)
389x146
Короче, нашел я проблему. Надо было заменить одно на другое (пик). Не думал, что std::string нужно выделять память вручную для такого. А главное - никто не жаловался, строки корректно заполнялись...
Аноним 22/06/20 Пнд 22:12:55 173090380
>>1730888
Ну ты даешь, перец.
Причем тут string, если ты в read передаешь char*?
Аноним 22/06/20 Пнд 22:22:28 173090581
>>1730903
При том, что я и просто приведение типа делал на [0], без выделения памяти все равно не работало.
>перец
Чем на пикабу/хабре не сиделось, залетный?
Аноним 22/06/20 Пнд 22:28:55 173090782
>>1730903
А что туда передавать, если не char*?
Аноним 22/06/20 Пнд 22:36:22 173091083
>>1730905
>>1730907
Нет ты залетный.

char* туда и передавать, только надо понимать, что в этом случае ты работаешь с си-массивом, а не плюсовым string. А то потом начинаются претензии, что string работает как-то не так.
Аноним 22/06/20 Пнд 22:47:40 173091984
>>1730910
Это отменяет факт того, что под строку надо выделять память? Нет. Вот и все. Какие еще притензии к строкам? Из контекста не выдирай.
Аноним 22/06/20 Пнд 23:49:26 173094885
Что происходит, когда функция возвращает ссылку? Что возвращается то? Адрес переменной? Её значение? Если с указателями всё более-менее понятно, то с ссылками какая-то хуйня.
Как вообще происходит возвращение переменной в конце выполнения функции, если этой переменной если она автоматическая уже не должно существовать?
Аноним 23/06/20 Втр 00:00:31 173095986
>>1730919
Какой же ты тугой.
Функция принимает на вход си-строку, там по дефолту нужно выделять память.
То, что методы string и методы, которые принимают ее на вход, сами это делают тут не при чем.
И нехуй потом жаловаться, что при использовании string в методе, который принимает char*, ты обсираешься на выделении памяти.
Аноним 23/06/20 Втр 00:07:07 173096687
Аноним 23/06/20 Втр 00:16:25 173097788
>>1730948
Посмотри дизассемблер. В зависимости от соглашения о вызовах переменная может быть на на стеке вызванной функции, который зачистит уже вызывающая после возврата (предварительно переложив результат вызванной в какую-то свою переменную), а может передаваться через регистр и тогда стирание фрейма вызванной её не затронет
Аноним 23/06/20 Втр 00:18:43 173098089
>>1730948
А ссылка это тот же указатель внутрях, только с ограничениями на уровне языка - нельзя разыменовывать, не может быть нулл
Аноним 23/06/20 Втр 00:19:44 173098290
>>1730959
Тупой ты, потому что не знаешь о перегрузках явного преобразования типов. А теперь съеби уже на свою голубятню на хабр, залетыш.
Аноним 23/06/20 Втр 02:02:13 173108691
>>1730982
Какой же ты дурень.
Когда ты передаешь куда-то внутренности string, они не обязаны делать выделять необходимую память под операцию.
Ты пытаешься воткнуть квадрат в круглое отверстие и пиздишь, будто квадрат виноват, а не ты тупой.
Аноним 23/06/20 Втр 02:31:02 173109292
>>1731086
>Какой же ты
>Какой же ты
Какой же ты жалкий. Нахуй ты свою пасть разеваешь вообще, уебище? Если до тебя десятый раз суть мысли не доходит, иди пробздись что ли, я хз. Ты как долбаеб одно и тоже повторяешь, сука. Съеби, реально. Тут для тебя места точно нет. Такие, как ты должны сидеть в своем углу и дрочить друг-другу на своих законных местах. Квадраты у него в отверстия пихают, долбаеб, блядь. Хррртьфу в ебало тебе, чмо пикабушное.
Аноним 23/06/20 Втр 08:01:53 173118293
>>1730977

Соглашение о вызовах существует в рамках интерфейсов библиотек. Внутри компилятор не обязан его соблюдать и имеет право срать лапшу как хочет.
Аноним 23/06/20 Втр 09:02:15 173119694
изображение.png (9Кб, 893x206)
893x206
Почему когда я разыменовываю возвращенный итератор и меняю значение оно не меняется?
Аноним 23/06/20 Втр 09:08:13 173119995
>>1731196
Уже понял, я забыл ссылку
Аноним 23/06/20 Втр 10:33:14 173122896
>>1731196
Bicycle.
auto mmin (std::vector<std::pair<int, bool>> &a) {
return std::min_element(a.begin(), a.end(), [](auto i, auto s){return i < s && i.second == true; });
}
Аноним 23/06/20 Втр 10:52:42 173123797
>>1731092
Ебать тебя порвало-то.
Аноним 23/06/20 Втр 10:53:03 173123898
Двач, напомните мне как в C++ (особенно на windows в qtcreator с cmake) подключить библиотеку? Какие файлы качать, куда ложить, что прописывать, я всё забыл.
Аноним 23/06/20 Втр 11:12:08 173124999
Аноним 23/06/20 Втр 11:15:42 1731253100
>>1731238
Иди на сайт библиотеки. Там должно быть написано
Аноним 23/06/20 Втр 11:17:04 1731256101
>>1731253
Ничего не написано.
Аноним 23/06/20 Втр 11:53:25 1731295102
photo2019-02-25[...].jpg (73Кб, 453x604)
453x604
>>1731256
Так что за библиотека?
Это именно внешняя C/++-либа, никак не связанная с Qt?
>>1731249
У Qt и так есть модуль для работы с SQL-базами, в т.ч. SQLite.
https://doc.qt.io/qt-5/qsqldatabase.html
Просто нагугли примеры. https://habr.com/ru/post/128836/

мимокрок, последний раз писал на Qt/С++ много лет назад в шараге
Аноним 23/06/20 Втр 13:19:12 1731385103
>>1731295
>У Qt и так есть модуль для работы с SQL-базами, в т.ч. SQLite.
Мне похуй что там есть или нет у Qt, обычную библиотеку как подключить
Аноним 23/06/20 Втр 23:54:26 1732244104
велосипед.webm (11731Кб, 768x432, 00:04:53)
768x432
Аноним 24/06/20 Срд 07:13:22 1732363105
Мне надо реализовать многопоточное приложение на winapi. Есть один поток, и в этом потоке цикл. При нажатии кнопки цикл должен завершать итерацию и останавливаться, при повторном нажатии вновь запускаться. Как это реализовать?
Аноним 24/06/20 Срд 08:23:39 1732369106
>>1732363
В общем тебе надо создать поток, а в нем сделать цикл. При нажатии кнопки цикл будешь завершать итерацию и останавливать его, а при повторном нажатии вновь запускать.
Удачи братан
Аноним 24/06/20 Срд 08:47:40 1732371107
Аноним 24/06/20 Срд 10:48:42 1732387108
>>1732363
Прям в цикле нельзя проверить, нажата кнопка или нет?
Аноним 24/06/20 Срд 18:18:19 1732790109
Анон, в последнее время часто применяю функциональный подход, вместо оопного. Нравится пиздец, супер удобные юнит-тесты, прекрасная переносимость кода и потенциально отличная распараллеливаемость со всякими фьючерсами и асинками (с которыми я пока не знаком). И мне кажется, что фп - единственно правильный способ программирования. Почему же тогда хаскель не захватил мир?
Аноним 24/06/20 Срд 18:18:32 1732792110
std::filesystem под виндой, если полез во всякое говно, типа $RECYCLE.BIN кидает исключение после того под капотом winapi выдал acess denied. У меня обработка исключений отключена. Есть ли какой-то платформонезависимый способ предварительно прочекать директорию прежде чем лезть в нее? directory_entry.status().permissions() для всех директорий выдает 511
Аноним 24/06/20 Срд 18:19:12 1732793111
Аноним 24/06/20 Срд 18:56:35 1732826112
>>1732790
Потому-что ни один вменямый человек не будет рисковать писать проекты на хаскелле
Аноним 24/06/20 Срд 19:34:40 1732871113
>>1732790
>функциональный подход

На счёт этого согласен, очень удобно
Аноним 24/06/20 Срд 19:42:04 1732880114
изображение.png (17Кб, 343x929)
343x929
Напишите функцию, которая обрезает пробелы в конце переданной ей строки. Функция должна быть написана в расчёте на работу с очень длинными строками с очень большим количеством пробелов, оптимизирована по количеству обращений к памяти. Сигнатура: void TrimRight( char *s );

Ананасы, выполнил такое задание, но оно неверно выполнено. Что не так, кроме того, что я немного поменял оглавление функции?
Аноним 24/06/20 Срд 20:26:53 1732940115
>>1732880
Она не оптимизирована по количеству обращений к памяти, например.
Ты сначала идёшь по всей строке до конца, а потом идёшь обратно по пробелам. Это O(n+m), где m - количество пробелов. Если вся огромная входная строка состоит из пробелов, то ты дважды пройдёшься по огромной строке.
Можно идти по строке и при встрече с пробелом сохранять его адрес и обнулять его, если встретил непробельный символ. Это O(n). Потом скопировать в новую строку всё от начала до полученного указателя, если он не нулевой. Ну и не забыть про налл терминейшн.

Конкретно ошибок в коде не искал.
Аноним 24/06/20 Срд 20:33:08 1732947116
>>1732792
> обработка исключений отключена
Включи
Аноним 24/06/20 Срд 20:34:40 1732948117
>>1732940
Понял. Или запоминать адрес непробельного символа, если после него пробел и не менять его до тех пор, пока не найдётся следующий непробельный и всё заново.
Аноним 24/06/20 Срд 21:03:27 1732965118
>>1732948
Есть разница записать 1000 раз или записать один? Хотя от данных зависит
Аноним 24/06/20 Срд 21:26:02 1732976119
>>1732940
Функция возвращает void, поэтому думаю, что по заданию нужно просто занулить символ, следующий за последним не-пробелом.
Аноним 24/06/20 Срд 21:27:30 1732977120
>>1732792
Если там по аналогии с бустом, то должны быть небросающие перегрузки, принимающие error_code.
Аноним 24/06/20 Срд 21:41:34 1732991121
>>1732965
У меня идея, что в процессе смещения адреса в цикле записываем адрес непробельного символа и так до конца, если он так и не попался, то строка пустая.
>>1732976
А в чём прикол такой херни? Понятно, что считывать будет до него, но это же херня. Или я что-то не понимаю?
Аноним 24/06/20 Срд 21:45:48 1732995122
>>1732991
Посмотри на сигнатуру, тебе char ★ приходит, а не char const ★
Аноним 24/06/20 Срд 21:52:29 1732998123
>>1732995
Что? Строка ещё и меняется в процессе что ли?
Аноним 24/06/20 Срд 21:58:21 1733008124
>>1732998
Блядь. Шли нахуй людей с такими заданиями. Если они не могут четко сформулировать задачу, значит они идут нахуй.
Аноним 24/06/20 Срд 22:02:08 1733013125
>>1733008
Лол, меня уже сегодня послали с таким решения, сюда пришёл узнать что не так с кодом, нуууу, теперь узнал, хотя тоже недоумевал с постановки задачи.
Аноним 25/06/20 Чтв 10:55:21 1733362126
sss.png (5Кб, 1216x84)
1216x84
Как можно сделать эту хуйню менее всратой?
Аноним 25/06/20 Чтв 11:02:00 1733367127
>>1733008
>>1733013
Лол. Эта задача по си, а не плюсам, но классические макакодебилы плюсовые как всегда тупят как дебилы, совершенно не разбирающиеся даже в сишных строках. Ну хуле, в крестах де объекты, лолкек, как в любой жабаскрипто/питоно дрисне, вот и интеллект того же уровня.
Аноним 25/06/20 Чтв 11:21:59 1733381128
Аноним 25/06/20 Чтв 11:39:22 1733404129
>>1733367
Это очевидно.

>совершенно не разбирающиеся даже в сишных строках

Чем отличается сишная строка от строки в С++?
Аноним 25/06/20 Чтв 12:26:09 1733478130
Читал про RB и AVL деревья, потому что мне больше нравятся вторые, а тот же map построен на первом, мне захотелось понять почему. Так вот, во многих туториалах, и на википедии, пишут, что преимущество (одно из, про количество поворотов при вставке/удалении говорить не буду) RB в том, что нужно дополнительно хранить всего лишь один бит информации о цвете ноды, по сравнению с unsigned char для высоты или balance factor АВЛ!

Как авторы этих туториалов собираются выигрывать это место? Каждый раз делать свои ноды и паковать там битики, потому что семь лишних бит это важно? Unsigned char, да даже просто char, для высоты АВЛ хватит с головой, потому что высота дерева это logN, и для высоты 30 должно быть миллиард нод.

GCC цвет далеко-далеко не в одном бите хранит. (строка 00090)
https://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.1/stl__tree_8h-source.html
Аноним 25/06/20 Чтв 12:35:38 1733484131
Аноним 25/06/20 Чтв 12:36:50 1733485132
code.png (4Кб, 650x57)
650x57
Аноним 25/06/20 Чтв 12:40:51 1733491133
>>1733484
Что "скорость"? Я разобрался, в чём преимущество. Да, в RB будет меньше вращений -> должно местами быстрее работать.

Я про том, что в туториалах и на википедии отдельным пунктом упоминают, что RB дерево будет занимать меньше места, чем АВЛ, но по факту так не делают, а если так делать, то это скорее всего убьёт всё преимущество по скорости.
Аноним 25/06/20 Чтв 12:43:30 1733492134
>>1733484

Скорость в наше время зависит от ублажения кеша, а не от битового кулхацкинга (им-то как раз наоборот можно перфоманс заткнуть, забив пайплайны и пролюбившись с кешем.)
Аноним 25/06/20 Чтв 12:43:53 1733494135
>>1733485
Если str способна принять rvalue, то можно же "суммирование" внутрь str засунуть, нет?
Аноним 25/06/20 Чтв 13:00:01 1733509136
Аноним 25/06/20 Чтв 13:01:33 1733510137
>>1733491
Инфа же всё равно в каком нибудь char хранится, который побитно обрабатываеся, всё равно надо по байту выделять, наверное.

>>1733492
И это хорошо, пердолинг никогда и ни к чему хорошему не приводит. Вчера поинтересовался хаскелем и понял, что лучше пожертвовать памятью с одинаковыми данными для каждого потока в программе, чем выгибаться от ментального напряжения в попытке сэкономить пару мегов инфы. Но хаскель по моему слишком куда-то далеко пошёл в своей идее функций.
Аноним 25/06/20 Чтв 13:23:07 1733525138
>>1733404
>Чем отличается сишная строка от строки в С++?
short string optimisation, крестовые строки не всегда выделяют память из кучи
кро
Аноним 25/06/20 Чтв 13:25:41 1733526139
>>1733525
>short string optimisation

Когда это бывает нужно? В нынешнее время экономить на памяти плохой тон, исключение разумеется всякие мелкие йобы.
Аноним 25/06/20 Чтв 13:29:28 1733529140
>>1733526
Это стандартная библиотечная фича, которая не знает, на чем ты там собрался запускать свою программу.
Плюс при этом меньше indirection, значит выше скорость.
Аноним 25/06/20 Чтв 13:41:46 1733537141
>>1733526
Особенно когда у тебя может быть несколько тысяч этих строк только с локализациями, ага, вообще плохой тон. Что ты несёшь, мартышка?
Аноним 25/06/20 Чтв 13:48:21 1733544142
>>1733526
>>1733529
>>1733537
Это экономия не на памяти, а на аллокации памяти. Нет смысла лезть в кучу за пятью байтами для строки "fuck", особенно учитывая хуевость стандартных аллокаторов.
Аноним 25/06/20 Чтв 13:56:59 1733555143
>>1733544
Thank you, captain, here, take this rock.
Аноним 25/06/20 Чтв 14:00:29 1733560144
>>1733555
Ты такой умный! Покажи свои работы!
Аноним 25/06/20 Чтв 14:24:49 1733580145
>>1733555
Если ты, анон, написал "экономить на памяти плохой тон", а указание на то, что это экономия на обращениях в кучу, называешь капитанством, то ты ультрадушный хуй.
Аноним 25/06/20 Чтв 14:25:30 1733581146
Аноним 25/06/20 Чтв 14:34:06 1733585147
>>1733510
>всё равно надо по байту выделять
Или просто протеггировать указатель. Не тратить же зря нижние биты.
Аноним 25/06/20 Чтв 14:54:28 1733596148
>>1733580
Это написал какой-то залетный питухонщик, душный кэп.
Аноним 25/06/20 Чтв 18:11:50 1733775149
Двач, использую заголовки github.com/p-ranav/tabulate
Как мне их закинуть в директорию и от туда подключать (к примеру #include "3rd_party/tabulate/table.hpp")? Использую cmake.
Просто эти заголовки друг друга подключают по пути #include <tabulate/*.hpp>
Подскажите
Аноним 25/06/20 Чтв 18:37:18 1733818150
>>1733775
CXXFLAGS=-I/путь/перед/tabulate?
Аноним 25/06/20 Чтв 18:38:25 1733822151
>>1733775
или include_directories(/папка/перед/tabulate)
Аноним 25/06/20 Чтв 19:38:41 1733878152
Когда в язык завезут хотя бы столько же сахарка, сколько в c#?
Аноним 25/06/20 Чтв 19:44:07 1733882153
Аноним 25/06/20 Чтв 19:59:22 1733899154
>>1733878
В C++50 можно будет
# include <c_sharp>
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
Аноним 25/06/20 Чтв 20:04:48 1733908155
>>1733878
Зачем? Писать приходится на обоих, и я чот не понимаю зачем в крестах больше сахара по-твоему.
Аноним 25/06/20 Чтв 21:56:21 1734001156
Аноним 26/06/20 Птн 01:30:14 1734118157
Где можно найти текст текущего стандарта? А то на сайте крестов за него предлагают платить. Чисто в ознакомительных целях хочу почитать
Аноним 26/06/20 Птн 02:22:21 1734134158
Аноним 26/06/20 Птн 11:27:15 1734353159
oa3EQ.png (99Кб, 713x295)
713x295
Двач, как мне проитерироваться в контейнере от элемента до этого-же элемента через конец вектора? Есть решения какие? Не хочу большие велосипеды писать.
Аноним 26/06/20 Птн 12:07:32 1734377160
>>1734353
Чем тебя пара циклов не устраивает?
Аноним 26/06/20 Птн 12:08:58 1734379161
Аноним 26/06/20 Птн 12:35:46 1734394162
>>1734377
>>1734379
>>1734353
Цикл по модулю длины вектора с break если дошел до нужного элемента
Аноним 26/06/20 Птн 12:36:52 1734396163
>>1734394
> модулю длины вектора
Что это?
Аноним 26/06/20 Птн 13:03:54 1734415164
>>1734396
int i = x+1; (x индекс твоего крестика )
int size = vec.size();
while(i!=x){
//обрабатывай элементы
i+=1;
i=i%size;
}

Типо такого я думаю. Че надо сам подправишь
Аноним 26/06/20 Птн 13:07:03 1734416165
>>1734415
Хотя мне кажется брать каждый раз остаток слишком дорого. Лучше действительно 2 цикла.
Аноним 26/06/20 Птн 13:13:59 1734420166
image.png (22Кб, 612x352)
612x352
Аноним 26/06/20 Птн 13:26:05 1734425167
Сап, двуч. А поястите, есть ли на C++ хуйня типа maven или npm? Ну типа чтоб зависимости тырить из гитхаба или ещё откуда и компилить?

Или этого можно добиться только написав делающий это вручную makefile?

Так же вопрос насчёт web framework'ов? Можно ли на C++ нормальный CRUD написать как на джувке?

Если всё хуйня, то как бы поясните чё вы сами-то кроме лаб на крестах пишите? Вы не подумайте, я не стебусь, я просто жабист и вот вкатываюсь.
Аноним 26/06/20 Птн 13:35:44 1734434168
1.png (13Кб, 524x158)
524x158
2.png (8Кб, 177x431)
177x431
Так, бля, епты бля. Почему так, нахуй, обэма?? Почему при первом же логическом сложении 0 с 1, я получаю 49??? (C++)
Аноним 26/06/20 Птн 13:44:44 1734437169
>>1734425
> есть ли на C++ хуйня типа maven или npm?
Vcpkg, conan.

> Или этого можно добиться только написав делающий это вручную makefile?
Вопреки здравому смыслу, здесь принято делать так. Или через cmake.

> Так же вопрос насчёт web framework'ов? Можно ли на C++ нормальный CRUD написать как на джувке?
Нормальный - нет . Хоть какой-то - да. Есть несколько либ, их никто не использует, и со спрингом в плане крудошлёпства они не сравнятся.

> Если всё хуйня, то как бы поясните чё вы сами-то кроме лаб на крестах пишите?
Открой hh, вбей кресты и почитай, что пишут, чем придётся заниматься. Что угодно, кроме веба.
Аноним 26/06/20 Птн 13:48:07 1734439170
Аноним 26/06/20 Птн 14:00:37 1734455171
>>1734437

> Vcpkg, conan.

А это кто-то юзает, или сделано для галочки?

> Вопреки здравому смыслу, здесь принято делать так. Или через cmake.

Божественный cmake

> Открой hh, вбей кресты и почитай

https://hh.ru/vacancy/37314205

Вот увидел. Как они пишут бэк на крестиках? Или на C++ только МИКРОСЕРВИСЫ и КОРЫ делают, а запросы резолвят чем-то ещё?

> в плане крудошлёпства они не сравнятся.

А почему? Язык бы мог джаву порвать...
Аноним 26/06/20 Птн 14:14:40 1734472172
code.png (7Кб, 432x110)
432x110
>>1734420
Но зачем, если двумя циклами гораздо понятнее.
Аноним 26/06/20 Птн 14:19:00 1734474173
>>1734455
> или сделано для галочки?
Да, но кто-то использует.

> https://hh.ru/vacancy/37314205
Там, похоже, не классический бекенд, отдающий html, а очереди и вебсокеты. Этим заниматься на плюсах не так больно.

> А почему? Язык бы мог джаву порвать...
Небезопасный и сложноват. Конкретно джаве конкуренты, наверное, только шарп и пщ. Бизнесу нужна проверенная временем и устойчивая к ошибкам кодера технология, которую может изучить куча разрабов, чтобы брать количеством.
Аноним 26/06/20 Птн 14:19:58 1734477174
>>1734353
юзай индексирование по модулю
в плюсах не сильно шарю, но чёт подобное

int el_idx = arr.index(your_element);
for(int i = 0; i < len(arr); i++) {
arr[(i + el_idx) % len(arr)] ...
}
Аноним 26/06/20 Птн 14:24:42 1734480175
Аноним 26/06/20 Птн 14:25:30 1734482176
>>1734472
Да, это пожалуй лучше будет т.к. это в отличии от >>1734420 не уходит в бесконечный цикл если i = v.begin() + 0;
Поэтому ещё большее спасибо!
Аноним 26/06/20 Птн 14:27:16 1734484177
>>1734480
uint8_t, но я пробовал приводить вручную к size_t, не помогло
Аноним 26/06/20 Птн 14:28:14 1734487178
>>1734474
>Там, похоже, не классический бекенд, отдающий html, а очереди и вебсокеты. Этим заниматься на плюсах не так больно.

А насколько рилтайм аппликации на вебносках лучше делать на C++, чем на каком-нибудь node или той же java?
Буст к производительности будет?

> Небезопасный

Ну хуй знает, завезли же smart-ptr. Или не безопасный это больше про еблю с потоками? Ну это да, есть немного. Сложнее будет. А так язык как язык. Не знаю чем прям он такой сложный. По-моему весь спринговысер разбирать не легче.
Аноним 26/06/20 Птн 14:28:41 1734488179
>>1734482
Вот бы только ещё в лямбду индекс передавать.
Аноним 26/06/20 Птн 14:42:21 1734499180
>>1734487
> А насколько рилтайм аппликации на вебносках лучше делать на C++, чем на каком-нибудь node или той же java? Буст к производительности будет?
Имеет смысл, только если будут интенсивные расчёты/вычисления. Судя по словам "реалтайм" и "крутая математика", там так оно и есть. В остальном толку мало, в обычном круде самое долгое - ждать ответ на запрос к базе, и стльного буста не было бы, что джава, что ассемблер.

> smart-ptr
Не универсальны, потому что куча либ и старого кода работает с сырыми указателями. Да и без этого хватает способов выстрелить себе в ногу, тот же move.

> весь спринговысер разбирать не легче
В спринге ты хоть разбираешь только то, что нужно. Учишь десяток аннотаций, ставишь их в правильных местах - и вот тебе готовое приложение. В плюсах тебе одни только шаблоны будут сниться в кошмарах, что уж UB.
Аноним 26/06/20 Птн 14:42:53 1734501181
Аноним 26/06/20 Птн 14:46:17 1734507182
>>1734501
Бля, я даун, я понял. Из-за того, что uint8_t это по сути unsigned char, то оператор вывода выводит data, как символ, а там как раз '1', а это 49 в ascii. Короче, попал в свою же ловушку жокира.
Аноним 26/06/20 Птн 14:48:08 1734510183
>>1734499
>крутая математика

А я этого не говорил :^)

> реалтайм

Под риалтаймом я как раз имел в виду не крудец.

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

Так они же сами должны уже мемори менеджить? Или я чего-то не ппонимаю.

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

Ну темплейты это слишком сильное колдунство иногда, это да.
Аноним 26/06/20 Птн 14:53:49 1734513184
>>1734510
> не говорил
Там в вакансии упоминается, имею в виду.

> Так они же сами должны уже мемори менеджить?
Менеджат, да. Но в местах вызова можно проебаться. Это всё равно нужно постоянно держать в голове вместо джавовского "я создал объект, передал куда-то ссылки, а дальше пусть GC разбирается".
Аноним 26/06/20 Птн 15:01:05 1734515185
>>1734507
Вот поэтому лучше юзать printf
Аноним 26/06/20 Птн 15:04:37 1734519186
>>1734515
Тогда лучше заставить сделать отдельные *int8_t, а не алиас на char.
Аноним 26/06/20 Птн 17:37:06 1734658187
>>1734507
И как с этим бороться?
Аноним 26/06/20 Птн 17:40:15 1734660188
Создал enum, можно ли несколько значений из enum присвоить переменной? Подскажите.
Аноним 26/06/20 Птн 17:44:16 1734661189
>>1734658
Быть внимательным. Я же смотрел на вывод, видел там 1 и не понимал нихуя, а по факту это был символ '1' со значением 49.
Аноним 26/06/20 Птн 17:51:11 1734666190
>>1734660
Одновременно? Нет. Храни список значений в каком-нибудь векторе.
Аноним 26/06/20 Птн 18:02:55 1734675191
>>1734660
Флаги, как деды завещали.

enum {
  A = 1,
  B = 2,
  C = 4,
  D = 8,
};
...
int v = A | C | D;
...
if (v & A) { ... }
if (v & D) { ... }
Аноним 26/06/20 Птн 18:18:02 1734685192
Аноним 26/06/20 Птн 18:36:52 1734704193
Аноним 26/06/20 Птн 19:34:23 1734746194
>>1734661
Не, а если я хочу вывести восьмибитовый инт как число? Кастовать к инту? А это не затратно?
Аноним 26/06/20 Птн 19:48:14 1734752195
Аноним 26/06/20 Птн 20:04:57 1734764196
>>1734474
> Да, но кто-то использует.
А ты как собираешь зависимости? Неужели проще вручную пердолить, а не vcpkg install mylib?
Аноним 26/06/20 Птн 20:16:57 1734779197
Как в крестах правильно форматировать строки?
stringstream выглядит как говно, особенно если формат строки сложный. Склеивать строки c std::to_string ещё более неудобно. Нет какого-то стандартного sprintf, чтобы вывод был сразу в std::string без ёбли с буферами?
Аноним 26/06/20 Птн 20:25:39 1734783198
Аноним 26/06/20 Птн 20:41:53 1734793199
>>1734779
Напиши свой враппер вокруг sprintf который возвращает std::string и используй атрибуты компилятора для валидации строки формата.
Аноним 26/06/20 Птн 20:46:48 1734797200
Сап господам программистам. Вопрос: зачем нужен указатель this->, какие функции он выполняет? И да, я совсем долбоеб нуб и только начал изучать ооп
Аноним 26/06/20 Птн 21:55:51 1734839201
>>1734764
На линуксе обычно хватает make-файлов или вообще build.sh, там системный менеджер пакетов сам тащит то, что нужно.
На винде cmake, архивы с либами качаю вручную. Неудобно, но это делается один раз.
Аноним 26/06/20 Птн 22:20:39 1734857202
>>1734839
>На линуксе обычно хватает make-файлов или вообще build.sh, там системный менеджер пакетов сам тащит то, что нужно.
Детектор говноеда красноглазого
Аноним 26/06/20 Птн 22:46:49 1734873203
>>1734857
> Красноглазого
Линукс у меня только в виде WSL и докера. Но говноед я не поэтому.
Аноним 26/06/20 Птн 22:55:18 1734875204
>>1734134
Я знаю об этом. Это же draft
Аноним 26/06/20 Птн 23:19:48 1734895205
>>1734797
В явном виде пишется только в dependent коде из-за ебанутых правил инстанцирования шаблонов. А так - указатель как указатель
Аноним 27/06/20 Суб 00:33:07 1734949206
>>1734783
>https://github.com/fmtlib/fmt
Похоже это лучший вариант, спасибо.

>>1734793
>Напиши свой враппер вокруг sprintf
Ну я так и делал через snprintf с локальным буфером, просто надоело ощущение велосипеда.
Аноним 27/06/20 Суб 00:38:43 1734952207
>>1734474
>от 210 000 до 260 000

И тут я понял, что по меркам ДС это не так много, ибо квартира будет стоить рядом все 15 000 000, и даже если ужаться и отдавать по 200 000, то потребуется шесть лет и три месяца, а гарантии такой ЗП как и существования конторы нет.
Аноним 27/06/20 Суб 00:52:22 1734960208
Аноны, а есть у кого-нибудь итт опыт создания приложений реального времени? Когда например какая-нибудь операция должна выполниться за время T, не дольше? Есть ли какие-нибудь либы, или паттерны проектирования?
Аноним 27/06/20 Суб 02:51:02 1734997209
>>1734952
Можно начать с малого, устроиться на подобную работу, через несколько лет питания исключительно гречкой купить за 5 лямов где-нибудь за МКАДом, чтобы добираться до работы за 2 часа. Затем поднакопить ещё сколько-то, взять новую и т.д, пока внезапно не обнаружишь, что тебе уже 50 лет, здоровье посажено, тяночки нет и никогда не было.
Аноним 27/06/20 Суб 03:09:58 1735003210
Тут есть, кто пишет и дебажит в vscode? Вас устраивает, как работает дебаг? Какой дебаг используете? Вас не смущает то, что stl коллекции нельзя просматривать полностью в удобном виде, а только добавлять каждый интересующий элемент? А это дрочево бесконечное по всяким библиотечным аллокаторам, когда хочешь просто зайти в свою функцию? Или это у меня что-то не так настроено/работает?
Аноним 27/06/20 Суб 03:17:26 1735006211
>>1735003
Алсо, что скажете о clion? Думаю, может туда перейти... Но мне нравились все эти редакторы простенькие типа sublime text, vscode, только постоянно в них проблемы какие-то с удобством использования gui дебага у меня. VS studio вообще не нравится, тяжелая, открывается годами. Если clion окажется таким же тяжеловесом медленным, то скорее всего продолжу жрать кактус.

Вообще не понимаю людей, топящих за vim/emacs. Неужели там действительно все так удобно, включая дебаг? А автодополнение там есть вообще?
Аноним 27/06/20 Суб 05:14:22 1735012212
Если я читаю из файла 4 байта сразу в float, то я получаю правильно число. Но если я читаю 4 байта в unsigned char, а потом сдвигаю биты в порядке LE (моя архитектура именно так и считывает), собирая в int, то после приведения (float)int число не верное. Как вручную из 4 charов собрать float правильно?

Т.е.
Содержимое файла: 01 02 03 04
1 вариант:
file.read((char*)&floatVar, sizeof(floatVar)); -> floatVar = 1.53999e-36 (ПРАВИЛЬНО)

2 вариант:
file.read((char)&charArr[0], 4);
intVar = ((((((((0x00 << 8) | charArr[3]) << 8) | charArr[2]) << 8) | charArr[1]) << 8) | charArr[0]);
floatVar = (float)intVar; -> floatVar = 1.69091e+07 (ХУЙНЯ)
Аноним 27/06/20 Суб 05:52:35 1735017213
Как в 17 стандарте работает placement new? У меня есть класс с конструктором по умолчанию, new работает, а placement new не хочет. Более того, он даже для int не работает, хотя я точно помню что использовал его без каких-либо проблем, правда в 14 стандарте.

https://en.cppreference.com/w/cpp/memory/new/operator_new
Там ниже идёт operator new(std::size_t sz, bool b) - что это за bool, откуда он берётся? Там написано что placement-версия должна иметь 2 или более параметров, но если я меняю на int - то оно не компилируется. С bool всё работает, но не хотелось бы писать однотипный ctrl+c/ctrl+v оператор во всех классах.
27/06/20 Суб 07:45:52 1735038214
>>1728337
Как по мне только усложняет код. Буквально на днях написал похожий интерфейс для аналогичный фичи на сях. Зачем мне в С++ такое? Даунгрейд ас ис.
27/06/20 Суб 07:53:40 1735041215
Аноним 27/06/20 Суб 08:01:53 1735043216
>>1735041
А для ++14 есть что-нибудь?
Аноним 27/06/20 Суб 08:10:19 1735046217
>>1735043
std::memcpy(blah, blah, sizeof(float))
Аноним 27/06/20 Суб 08:20:07 1735048218
Аноним 27/06/20 Суб 08:22:56 1735049219
>>1735048
Еще можно вот так auto floatVal = ⛧(float⛧)(&charArr[0]);
Аноним 27/06/20 Суб 08:49:54 1735051220
>>1735017
> что это за bool, откуда он берётся
Это и есть тот самый user defined параметр.
Аноним 27/06/20 Суб 09:33:32 1735055221
>>1734960
Формально, игоры это такой софт реалтайм. что не мешает писать их на джаве
Нужен как минимум аллокатор с гарантированым временем худшего случая. Либо по возможности обходиться без динамической памяти.
Аноним 27/06/20 Суб 10:24:00 1735069222
>>1735055
Игоры это не реалтайм. Если комп не успевает выдавать много фпс, то он просто выдаёт меньше, вот и всё.
Аноним 27/06/20 Суб 10:26:01 1735070223
>>1735069
А что тогда есть реалтайм?
Аноним 27/06/20 Суб 10:28:06 1735071224
чё почитать если я ВООБЩЕ ничего не знаю и не слышал про С++ и программирование?
Аноним 27/06/20 Суб 10:30:08 1735072225
>>1735071
накопал
учебник П.А.Орленко, Евдокимов П.В. - C++ на примерах. Практика, практика и только практика [2019]
нормально епта?
Аноним 27/06/20 Суб 10:42:22 1735074226
>>1735072
>>1735071
Cори, не увидел шапку, не отвечайте мне, забудьте обо мне.
Аноним 27/06/20 Суб 10:59:16 1735079227
>>1735070
Может всякие медицинские приборы, аэс.
Аноним 27/06/20 Суб 11:06:40 1735085228
>>1735069
Эээ, ну и что из этого следует? Риалтайм — это про константное время выполнения, а не про твои маняфантазии. Если на одной железке фпс в одной сцене одинаковый — то это уже риалтайм.

>>1735079
Если этот софт запустить на приборах 15+ летней давности — он перестанет быть риалтаймом из-за возросшего времени выполнения?

Пример отсутствия риалтайма — это разработчики компиляторов и иде, уже середина 2020, а модулей как не было так и нет.
Аноним 27/06/20 Суб 12:18:38 1735113229
>>1735070
1) это когда ОС (если она есть) даёт гарантию, что ты точно получишь сколько-то процессорного времени (и других ресурсов). Если есть многозадачность, то в правилах переключения между задачами нет никакого рандома и эвристики, всё документировано.
2) и ещё это когда ты сам используешь алгоритмы, которые занимают предсказуемое время, и не имеют никаких "скрытых" просадок. Под такими просадками я имею ввиду всякие аллокаторы и прочие разновидности функций типа ДайЧтоНибудь(), которые могут дать быстро, а могут не найти чего-то и начать грузить, искать где-то ещё, и т.д.
Аноним 27/06/20 Суб 12:28:45 1735117230
изображение.png (23Кб, 1002x425)
1002x425
>>1735051
>user defined параметр
Какой у него смысл? Я нигде его после же не указываю, верно?
Если это просто сигнатура для компилятора как с префиксным и постфиксным ++, то по идее там бы явно было написано про bool. Причём при наличии обоих вариантов оно выбирает в пользу void✱ (его я случайно подобрал).
Аноним 27/06/20 Суб 12:57:06 1735131231
Аноним 27/06/20 Суб 13:09:43 1735137232
Аноним 27/06/20 Суб 13:11:41 1735139233
>>1735070
Есть софт риалтайм и хард риалтам.
Хард риалтайм - это когда точно известно, что операции выполняются за столько-то времени и не больше(меньше), и кушают столько то ресурсов и не больше(меньше). Какая-то погрешность может быть заложена, но она обычно весьма мала и тоже точно определена. Обычно хард риалтайм на заводском оборудовании, в военке, авиации, мед оборудовании и так далее.

Софт риалтайм это когда тоже что-то выполняется в реальном времени, но нет требований к высокой точности, например, внезапный проход GC не приведёт к аварии/смерти/прочим фейлам, а просто юзер увидит лаг, или даже не увидит.
Аноним 27/06/20 Суб 13:11:57 1735140234
>>1735117
> Какой у него смысл? Я нигде его после же не указываю, верно?
У него смысл быть user defined параметром. Ты эти параметры явно указываешь в скобках: new(myparam)
> Причём при наличии обоих вариантов оно выбирает в пользу void✱ (его я случайно подобрал).
Ты в свой placement new передаёшь указатель, ясное дело, что void ★ лучшая альтернатива bool. В третьем случае у тебя не собирается, потому что указатель к инту так просто не приведёшь.
Аноним 27/06/20 Суб 13:25:35 1735147235
Аноним 27/06/20 Суб 18:36:42 1735345236
>>1735131
Можешь объяснить почему ub без просмотра видео на час?
Фигня с выравниванием, потому что компилятор пытыется считать число как выровненное, но никаких гарантий этого у него нет?
У меня не получается сломать: https://ideone.com/ika5RK

>>1735012
Можешь более полный код показать? Я создал файл с одним флоатом, и у меня всё корректно считывает даже по байтам. И если в начале дописать какие-то байты, то тоже нормально работает.
Аноним 27/06/20 Суб 18:44:44 1735352237
>>1735345
Самый страшный undefined behavior - это тот, который работает так, как ты думаешь.
Аноним 27/06/20 Суб 22:32:50 1735532238
>>1735352
Если этот "UB" работает везде как и написано, то получается, что это и не UB вовсе...
Аноним 27/06/20 Суб 22:41:25 1735540239
>>1735532
Бля будешь, что раз в этом тривиальном случае так совпало, что работает, то никогда в более сложном кейсе не выстрелит?
Аноним 27/06/20 Суб 23:05:02 1735552240
>>1735532
UB это когда в стандарте не прописано,не?
Все компиляторы могут сделать его результат одинаковым, но можно написать компилятор у которого результат будет другой и компилятор будет прав а погромист не прав, не? мимо проходил
Аноним 27/06/20 Суб 23:08:11 1735555241
>>1735552
Да. Более того, существующие компиляторы могут изменить своё поведение в будущем, и те, кто думал, что можно хоть иногда полагаться на UB, пососут больших жилистых хуйцов.
Аноним 27/06/20 Суб 23:55:33 1735575242
>>1728462
итераторы абстрагируют от реализации контейнера, а что твои ranges?
Аноним 28/06/20 Вск 00:13:41 1735581243
>>1735575
А они не абстрагируют от реализации контейнера. Как и исключения, модули, темплейты, смартпоинтеры, ссылки, поддержка ООП, небо, аллах. Кто тебе сказал, что задача ranges в том, чтобы полностью вытеснить итераторы?
Аноним 28/06/20 Вск 04:51:14 1735673244
>>1735345
> Можешь объяснить почему ub без просмотра видео на час?
Потому что области в памяти перекрываются. Например кто то запишет float в байты с 0 по 3й, а другой считает с байтов 2 по 5й. И кое что может пойти по пизде, из за предустановки что второй флоат никем не мог поменяться.
Аноним 28/06/20 Вск 04:58:03 1735675245
>>1728423
Только потом в этих форах ошибки off by 1 и переполнения буферов годами отлавливать.
Аноним 28/06/20 Вск 06:10:37 1735685246
>>1735673
Непонятное объяснение. Один записал в одно место, а другой считал это из другого, и закономерно получил херню. Вполне себе defined бехавиор.
Аноним 28/06/20 Вск 06:17:03 1735688247
>>1735685
Компилятор может выкинуть чтение, если считает что в то место никто не писал. Думаю так.
float f=blabla[0..3];
blabla[2..5] = 3.1415;
f=blabla[0..3] //выкинуто, компилер считает что в f уже считано
Аноним 28/06/20 Вск 06:41:24 1735690248
>>1735345
Я заметил что ты используешь слово выравнивание. Возможно у тебя произошла путаница с aligning? Aliasing это скорее "псевдониминг". Если совсем просто, то он означает, что в каждом участке памяти находится только одна переменная. Можно сказать, что этому участку памяти дан псевдоним с именем этой переменной. Если компилятор видит что области двух переменных перекрываются, он может решить да ну нахер такого не может быть это UB ) И вернуть просто 1. Можешь нагуглить это реальный пример.
Аноним 28/06/20 Вск 06:45:10 1735691249
1593315908849.png (226Кб, 1080x1920)
1080x1920
>>1735690
Сорри не понял что за слово в спамлисте, вторая половина ответа !картинкой
Аноним 28/06/20 Вск 10:38:55 1735734250
>>1735690
Нет, я именно про выравнивание. Предположил, что на каких-то архитектурах чтение невыровненного флоата сильно медленнее, и потому компилятор использует предположение, что указатели выровненные (что верное в 99% случаев), чтобы программы не работали в два раза медленнее.
Первый раз за десять лет самообучения слышу что есть какая-то проблема с тем, что в одной и той же памяти две переменные.

>>1735691
Так union вроде как сам язык определяет - для чего он тогда нужен, если он ub? Я понимаю если там указатели отдельные - тогда он мог бы предположить, но union это же явное указание неадекватности переменных?
Ну и ладно, всегда можно пометить как volatile - тогда оно вроде как раз должно отключать подобные оптимизации и предположения.

Единственная известная мне "ошибка" (я не знаю на сколько это ub - случайно нашёл когда пытался понять для чего нужен const_cast) стабильно возникает с const - то что компилятор излишне сильно предполагает что const сохраняет значения. Вот эта: https://ideone.com/pFSkKv
Аноним 28/06/20 Вск 10:46:10 1735735251
>>1735734
>на каких-то архитектурах чтение невыровненного флоата сильно медленнее
Мужик в видео >>1735147 сказал что на ARM крашится.
Аноним 28/06/20 Вск 11:12:07 1735743252
>>1735688
язык для байтоебства
@
нельзя ебать байты
Аноним 28/06/20 Вск 11:21:47 1735745253
>>1735743
собственно, даже в видео тот чел сказал, что одно из UB там высосано из пальца, и надо поменять стандарт, чтобы это не было UB
Аноним 28/06/20 Вск 11:23:03 1735746254
Использую Qt Creator, как мне один проект открыть в разных гит ветках что-бы сравниваясь со старой веткой переносить изменения в новую?
Аноним 28/06/20 Вск 12:23:57 1735777255
>>1735746
Можно открыть проект в гитлабе и туда подглядывать. Состояние репа на любой коммит.
Аноним 28/06/20 Вск 12:32:35 1735785256
>>1735777
Грузить в онлайн я ничего не буду.
Аноним 28/06/20 Вск 13:09:32 1735820257
изображение.png (55Кб, 1741x373)
1741x373
>>1735746
Прям открыть скорее всего никак (только если скопировать проект и открыть сразу две), но при смене ветки если ты настроил gui-утилиту для merge, то ты можешь просматривать и вручную сливать изменения.

Ещё можно вот так, переходишь на нужно ветку, правой клавишей кликаешь по другой и нажимаешь сравнить - и потом можно райткликом применять отдельные строки - но я не пробовал, не знаю насколько это будет удобно.
Аноним 28/06/20 Вск 13:10:03 1735821258
>>1735012
Тут кто-то вроде писал, что плоские использовать нет смысла, что они типа из двойных преобразуются в итоге.
Аноним 28/06/20 Вск 13:11:54 1735824259
>>1735820
>Ещё можно вот так, переходишь на нужно ветку, правой клавишей кликаешь по другой и нажимаешь сравнить - и потом можно райткликом применять отдельные строки - но я не пробовал, не знаю насколько это будет удобно.
Неудобно
>только если скопировать проект и открыть сразу две
Походу единственный приемлимый вариант
Аноним 28/06/20 Вск 13:22:14 1735833260
Простите, но я не могу молчать, сегодня впервые я осилил сложную задачу на лит коде, это было не просто, но я смог, теперь я хакер! ДА!
Аноним 28/06/20 Вск 13:49:56 1735862261
nyfaas41f4x41.png (933Кб, 3200x1800)
3200x1800
Аноним 28/06/20 Вск 13:50:13 1735863262
изображение.png (10Кб, 537x250)
537x250
Радость была не долгой.

Почему так объявлять шаблон неверно, хотя в VS 2010 всё без бэ работает?
Аноним 28/06/20 Вск 14:06:05 1735877263
>>1735863
struct кто за тебя ставить будет?
Аноним 28/06/20 Вск 14:07:31 1735880264
>>1735877
Благодарю, а про специализацию в инете хрен найдёшь чего, или как там это называется, эх.
Аноним 28/06/20 Вск 14:09:06 1735881265
>>1735734
union для экономии памяти, когда ты точно знаешь, что у тебя или int, или float. Записал int полчитал int - ок. Записал float прочитал float - тоже ок. Записал float прочитал int - UB.
> Первый раз за десять лет самообучения слышу что есть какая-то проблема с тем, что в одной и той же памяти две переменные.
Ну, теперь знаешь.
Аноним 28/06/20 Вск 16:45:35 1736011266
Подождите, то есть это тоже UB?
union
{
struct { int ★ a; int ★ b; } s;
int v[2];
};
Аноним 28/06/20 Вск 16:45:58 1736013267
>>1736011
Массив указателей разумеется
Аноним 28/06/20 Вск 16:58:55 1736018268
изображение.png (14Кб, 878x305)
878x305
Что это такое? Зачем это и почему это?
Аноним 28/06/20 Вск 17:23:25 1736029269
Почти любые попытки обойти типизацию и получить доступ к напрямую к битам нецелочисленных типов - это UB.
Аноним 28/06/20 Вск 17:35:25 1736043270
image.png (2Кб, 642x20)
642x20
image.png (2Кб, 649x19)
649x19
Пытаюсь получить указатель на метод класса, код из методички дает эту ошибку. Что за хуйня как фиксить?
Аноним 28/06/20 Вск 17:37:21 1736044271
>>1736018
Address Sanitizer, написано же. Чтобы искать выход за границы массива и всякие преколы в коде от любителей высрать вот такое >>1736011
На самом деле если не понимаешь что это и зачам — лучше даже не смотри в эту сторону, рано ещё.

>>1736029
Да не почти, все попытки наебать систему типов это UB, просто потому что это обход вообще всего чего можно.
Аноним 28/06/20 Вск 17:38:18 1736045272
>>1736043
Просит передать адрес некоторого значения вроде
Аноним 28/06/20 Вск 17:39:25 1736048273
Почему в qt для передачи типа сигналом, этот тип сначала надо зарегистрировать? Например DWORD
Аноним 28/06/20 Вск 17:39:45 1736049274
>>1736044
Понятно, а то я думал, что там выделяет только определённый объём памяти и я малость перестарался. Интересно, что VS на такое жалуется только тогда, когда ты лезешь в память чужого процесса, иначе молча принимает происходящее.
Аноним 28/06/20 Вск 17:44:55 1736055275
>>1736049
Ну так ты действительно перестарался, засунув свои ручонки в чужое адресное пространство, но это лишб один из кейсов.

VS тут вообще не при чём, просто видимо они используют вот эту либу в дебажных билдах https://github.com/google/sanitizers/wiki/AddressSanitizer — там же есть и полный список приколов которые она ловит с примерами.
Аноним 28/06/20 Вск 17:47:52 1736059276
Аноним 28/06/20 Вск 18:48:26 1736101277
>>1736011
Это может быть и не ub, не помню. Вот если бы там были разные типы, int[] и short, тогда было бы. Но в случае union только при доступе по другому типу, не тому который ты в него поместил.
Аноним 28/06/20 Вск 18:50:19 1736104278
>>1736043
Ты точно тредом не ошибся? void*, #define, больше на Си похоже.
Аноним 28/06/20 Вск 18:53:29 1736106279
>>1736104
> void*
Будто в крестах придумали что-то другое.
Аноним 28/06/20 Вск 19:00:43 1736111280
Аноним 28/06/20 Вск 19:43:06 1736135281
У меня вопрос по pure c
Как сделать так чтобы моя порога выводила LF вместо CRLF?
Аноним 28/06/20 Вск 19:48:01 1736139282
>>1736135
Выводить \n вместо \r\n. Если не работает, ты что-то делаешь не так, и сишка тут не при чём.
Аноним 28/06/20 Вск 19:55:38 1736146283
>>1736139
Мне надо чтобы оно и на винде работало, а там оно автоматически переводит.
Аноним 28/06/20 Вск 20:02:48 1736153284
Читаю книгу "Программирование: принципы и практика с использованием C++" И там первый же пример с hello world не совсем рабочий, стоит ли вообще изучать эту книгу? Или есть что-то более стоящее?
Аноним 28/06/20 Вск 20:06:46 1736158285
Аноним 28/06/20 Вск 20:10:50 1736161286
>>1736146
Куда пишешь, в файл? Если да, открывай как бинарный - "wb".
Аноним 28/06/20 Вск 20:13:48 1736162287
>>1736158
Считаешь ли ты данную книгу хорошим путеводителем?
Аноним 28/06/20 Вск 20:17:17 1736167288
>>1736153
Там все рабочее, просто автор решил "упростить" вынеся в файл std_lib_facilities.h всякий бойлерплейт.
Аноним 28/06/20 Вск 20:19:21 1736171289
>>1736162
Некоторые примеры использую. Но думаю, что верный путь такой - Керниган Ритчи, Страуструп, и что-то дальше.
Аноним 28/06/20 Вск 20:22:29 1736173290
>>1736162
Я другой, у Шилдта чистал только про чистый си, и это больше на справочник было похоже - подходит если ты с другого не слишком высокоуровневого языка перекатываешься, но как справочник оно было очень хорошо - прям за час или два можно всё прочитать и вкатится. Не думаю что в книге по си++ что-то поменялось, но не читал.
По с++ мне Прата понравился, прям на порядок лучше страуса на полторы тысячи страниц, где дыры в информации и нет ответов на закономерные вопросы.
Аноним 28/06/20 Вск 20:33:12 1736186291
>>1736167
> упростить
М-да. С таким подходом ему лучше книжки по питону и JS писать.
Аноним 28/06/20 Вск 20:41:19 1736205292
>>1736186
Дело в том, что он автор языка. Запутался наверное, сам то себе костылей уже написал и привык к ним.
Аноним 28/06/20 Вск 20:49:22 1736224293
>>1736205
Много раз уже говорилось, что этот автор языка умеет писать книги так себе.
Аноним 28/06/20 Вск 20:52:04 1736227294
>>1736224
Да и с языками не очень зашло
Аноним 28/06/20 Вск 22:00:21 1736321295
>>1736029
Да и целочисленных тоже
Аноним 28/06/20 Вск 22:03:04 1736327296
>>1735345
>Можешь объяснить почему ub без просмотра видео на час?
Берёшь стандарт и читаешь релевантные параграфы. Там всё просто в том смысле, что про UB сказано явно.
Аноним 28/06/20 Вск 22:04:32 1736331297
>>1735147
>Да, memcpy не уб
И memcpy — UB.
Аноним 28/06/20 Вск 22:05:50 1736333298
>>1735345
>Можешь объяснить почему ub без просмотра видео на час?
Видео вообще не при чём. Доступ к элементам массива char через glvalue с типом float это нарушение strict aliasing. А в видео про более тонкие вещи.
Аноним 28/06/20 Вск 22:22:15 1736350299
>>1736331
Неудивительно. В С/С++ даже умножение интов UB.
Аноним 28/06/20 Вск 22:34:49 1736369300
>>1736350
Это везде вроде так.
Аноним 28/06/20 Вск 22:51:05 1736403301
>>1735552
Не совсем.
То, о чем ты говоришь - это unspecified behaviour, т.е. зависящее от разработчиков компилятора, но всегда одинаково.
А undefined behaviour - это когда на одном и том же компиляторе сегодня так, а завтра по-другому.
Аноним 28/06/20 Вск 22:53:30 1736407302
>>1736333
Ну там есть интересный пример того насколько бывают компиляторы пидоры. https://godbolt.org/z/cpFd-T msvc и clang выдают адекватный и ожидаемый вывод строки Test1 (объект t1 был инициализирован конструктором Test1, который в свою очередь задал виртуальную таблицу класса Test1). И только gсс, компилятор пидор, начинает выебыватся и кричать "РЯЯЯЯЯ UB" не выдавая вообще нихуя.
Аноним 28/06/20 Вск 22:56:20 1736410303
Аноним 28/06/20 Вск 22:59:15 1736413304
Аноним 28/06/20 Вск 23:00:00 1736414305
Анончики, вкатываюсь в WinAPI. На кой хуй нужно регистрировать класс? Зачем нужно делать это?
WNDCLASS wc = { };

wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = CLASS_NAME;


И что в таком случае это:

HWND hwnd = CreateWindowEx(
0, // Optional window styles.
CLASS_NAME, // Window class
L"Learn to Program Windows", // Window text
WS_OVERLAPPEDWINDOW, // Window style

// Size and position
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,

NULL, // Parent window
NULL, // Menu
hInstance, // Instance handle
NULL // Additional application data
);



Аноним 28/06/20 Вск 23:07:25 1736417306
>>1736413
Ты перепутал C++ и "ассемблер с классами"
Аноним 28/06/20 Вск 23:09:59 1736419307
>>1736414
это все параша чтобы беспонтовое окошко появилось. Руками окошки через винапи нынче рисуют только пенсионеры и дебилы
Аноним 28/06/20 Вск 23:10:26 1736420308
>>1736161
Мне проще через трубы.
Аноним 28/06/20 Вск 23:11:36 1736423309
>>1736419
А как иначе нужно делать?
Аноним 28/06/20 Вск 23:12:50 1736424310
>>1736414
Ну, класс в смысле категория. Есть класс окон-кнопок, окон-чекбоксов, окон-полей-ввода и так далее. Винда не знает что будет делать окно твоей программы, поэтому тебе надо зарегистрироваться в системе.
Аноним 28/06/20 Вск 23:13:10 1736425311
Аноним 28/06/20 Вск 23:16:04 1736427312
>>1736425
Я хочу работать с виндой и придти на работу и такой ебать, WinAPI знаю.
Аноним 28/06/20 Вск 23:18:25 1736429313
>>1736403
В чем указанное различие?
Зависящее от компилятора == не прописано в стандарте, а значит может измениться в новой версии компилятора, так что ждать там одно и то же поведение на разных версиях глупо. UB в одном и том же компиляторе скорее асего ведет себя одинаково, так в чем отоичие unspecified от undefinef?
Если ты про реализацию каких то стандартных алгоритмов или про тот же vtable(его нет в стандарте), то не понимпюч при чем тут это.
Аноним 28/06/20 Вск 23:27:12 1736436314
>>1736423
qt, WinRT, Сишарп и прочее.

Окошечки - это лишь небольшая часть винапи.
Аноним 28/06/20 Вск 23:29:05 1736439315
>>1736436
Я понимаю. Вот я и хочу овладеть WinAPI целоиком как API, а не как штуковиной для рисования окошечек.
Аноним 28/06/20 Вск 23:29:31 1736441316
>>1736439
целиком
>быстрофикс
Аноним 29/06/20 Пнд 00:30:33 1736500317
>>1736331
А вот и нет, memcpy как раз не ub. И bit_cast это обертка над memcpy. Видео выше я уже скинул, там ответ почему и как.
Аноним 29/06/20 Пнд 00:48:55 1736506318
Как добавить в программу параметры командной строки?
Многие gnu программы принимают их по одному и тому же принципу -f par --foobar par. Это всё пишется вручную или есть какая-то либа, которая всё это облегчает?
Аноним 29/06/20 Пнд 00:56:35 1736509319
>>1736500
memcpy тоже может быть ub в каких то случаях
Аноним 29/06/20 Пнд 00:57:43 1736511320
Аноним 29/06/20 Пнд 01:00:30 1736513321
>>1736506
В сишке getopt стандартный парсер командной строки. В крестах куча сторонних библиотек, boost::program_options, cxxopts итп
Аноним 29/06/20 Пнд 01:25:24 1736528322
>>1736500
>А вот и нет, memcpy как раз не ub
Ну тащи определение поведения что будет если я поверх объекта какого-то типа скопирую байтики, которые я взял с потолка с какого-то левого файла
Аноним 29/06/20 Пнд 01:27:03 1736530323
>>1736407
>И только gсс, компилятор пидор, начинает выебыватся и кричать "РЯЯЯЯЯ UB" не выдавая вообще нихуя.
Действительно пидор. Нет бы файлы в хомяке тебе затереть рандомом, он всего лишь нихуя не делает.
Аноним 29/06/20 Пнд 02:08:06 1736544324
Просто игнорируйте конченных долбоёбов, не согласных с тем, что допускание UB - абсолютное зло. И они сами уйдут.
Аноним 29/06/20 Пнд 02:11:05 1736546325
Аноним 29/06/20 Пнд 06:13:35 1736577326
>>1736544
union
{
struct
{
float x, y, z;
};
float values[3];
}

UB, но работает и будет работать во всех компиляторах.
Аноним 29/06/20 Пнд 08:16:18 1736604327
>>1736577
Так почему уб? Я пару постов назад спрашивал - никто не ответил
Аноним 29/06/20 Пнд 09:29:29 1736624328
>>1736544
У тебя двусмысленно получилось. Долбоебы - те кто пишут код с UB, или долбоебы, кто допустили само существование UB в стандарте.
Аноним 29/06/20 Пнд 09:35:58 1736628329
>>1736624
Те, кто пишет кол с UB, причём зная об этом.
Аноним 29/06/20 Пнд 09:41:09 1736629330
>>1736628
А, такое согласен. Мудаки какие-то.
Аноним 29/06/20 Пнд 10:59:30 1736650331
>>1736624
UB было необходимостью для Си, а точнее UNIX - без него она не была бы переносимой.
Аноним 29/06/20 Пнд 13:20:46 1736749332
>>1736577
ОБОСНУЙ. Я вижу 100% корректное определение.
Аноним 29/06/20 Пнд 13:42:49 1736770333
>>1736429
Да я вроде понятно написал, давай ещё подробнее.
Unspecified behaviour действительно ведёт себя одинаково, реализация зависит от разработчика. Как, например, некоторые стандартные алгоритмы, где порядок обработки не всегда регламентируется стандартом.

Undefined behaviour никогда не ведёт себя одинаково, а зависит от положения звезд, планет, Аллаха, оперативной памяти, секса соседа с женой и непредсказуем.
То, что ты скомпилил и оно ведёт себя так, как ты ожидаешь - не значит, что при следующем запуске программы или после следующей компиляции будет вести себя так же.
Самый простой пример:
int* a = new int[2];
std::cout << a[100500];
что не отменяет того, что ты можешь десять лет подряд тестить UB код и получать одно и то же.
Аноним 29/06/20 Пнд 13:56:08 1736781334
Есть ли работа вообще в области написании нативных C++ модулей для node.js. Меня что-то очень заинтересовала тема. Насколько это вообще живая хуйня. Делает ли кто?
Аноним 29/06/20 Пнд 14:39:21 1736823335
>>1736419
Тоже это всегда выбешивало
Аноним 29/06/20 Пнд 14:41:58 1736829336
>>1736781
Ну всякие нетфликсы юзающие ноду в проде под хуйлоадом точно делают, на равне с хуйлоад-питонистами и всеми остальными.
Аноним 29/06/20 Пнд 14:57:24 1736856337
>>1736829

Я просто сижу пишу на C++ приложение под Windows для отечественной компании и хочу в web highload. Какие подводные вообще? Как делать?
Аноним 29/06/20 Пнд 14:58:22 1736860338
>>1736856
Идти в яндекс, и писать хуйлоад на крестах
Аноним 29/06/20 Пнд 15:00:15 1736862339
>>1736860

В ШАД не хочу идти. Не примут боюсь
Аноним 29/06/20 Пнд 15:03:42 1736868340
>>1736862
А зачем тебе а шад? Ты же байтойобом идёшь работать, а не датасатанистом. Хотя алгоритмы для собеса выдрочить придётся. У нас хуйлоада на плюсах кроме хуяндекса я лично не помню (видел вакансии от авито и баду, но то такое).
Аноним 29/06/20 Пнд 15:09:39 1736874341
>>1736868
>алгоритмы для собеса выдрочить придётся
Но их же дохуище просто. Невозможно знать их все и помнить. Я только поэтому и не хочу идти ни на какие собесы, боюсь забыть где надо инкрементировать j, а где декрементировать k, епта... Вообще, кто придумывает эти собесы ебанутые? На практике всегда есть возможность найти нужный алгоритм и по гайду написать. Имхо, если на помидора идешь и от тебя требуют опыт, достаточно только знать примерное название алгоритма, который подошел бы для решения задачи.
мимо
Аноним 29/06/20 Пнд 15:11:19 1736881342
>>1736868

> Ты же байтойобом идёшь работать, а не датасатанистом

Да это шутка. Но типа алгоговно учить запарно, могут дать пососать.

> нас хуйлоада на плюсах кроме хуяндекса я лично не помню

А чё ты пишешь?
Аноним 29/06/20 Пнд 15:13:11 1736884343
bool operator==(const MyStructure& other) const {return "Двач, как по быстрому сравнить все переменные this со всеми переменными other?"}
Аноним 29/06/20 Пнд 15:16:25 1736891344
>>1736868
Кстати да, весь хуйлоад нынче на ГОвне.
Аноним 29/06/20 Пнд 15:17:30 1736893345
image.png (1Кб, 165x137)
165x137
Аноним 29/06/20 Пнд 15:17:57 1736894346
Аноним 29/06/20 Пнд 15:19:16 1736897347
Аноним 29/06/20 Пнд 15:22:02 1736900348
>>1736874
Ну, там обычно смотрят на параметры как ты это решаешь, иногда не дают тебе всех данных чтобы посмотреть насколько ты хикка и ссышь открыть рот и тд. Если не знаешь тему — так и говори, и прямо говори с чем хорошо знаком, это же не егэ, результат энивэй будет зависеть от общего впечатления а не от баллов. Я сам в таком говне с обоих сторон участвовал, хз что в яндексе, но всякого бреда уровня верчения деревьев на досках лично я не видал.

>>1736881
>Да это шутка. Но типа алгоговно учить запарно, могут дать пососать.
Ну тут уж либо ты не ссышь и ходишь по собесам, либо тебе рано или поздно дадут пососать по з/п.
>А чё ты пишешь?
А я вообще выкатился из плюсов в мобилки после пары месяцев практики кое где на плюсах, и с тех пор вижу их только браузя вакансии. Сюда обычно забегаю спросить как там модули поживают.

>>1736891
На го по ощущениям пишут скорее там, где пыха/нода/итд жирные, а жаву лень разворачивать, а не в прям ХУЙЛОАДЕ.
Аноним 29/06/20 Пнд 16:01:44 1736937349
На чем пишут текстовые редакторы? Используют ли для этого графические апи типа opengl или directx? Если нет, то что используют? Хочу написать свой hex редактор, ибо нигде, блядь, вообще нигде, не смог найти нормальный, разве что hxd больше всех понравился, но и там не все идеально для меня. Так же, наверное, не хочу использовать никакие готовые формы типа TextBox и т.п. Как ни странно, инфы я найти на эту тему не смог особо... Ну и сама архитектура редактора интересует велосипедить особо не хочется. В качестве хранимого буфера могу представить какой-нибудь стек. Ну, а для поиска по файлу - обычный поиск подстрок.
Аноним 29/06/20 Пнд 16:07:07 1736943350
Перекатывать будем?
Аноним 29/06/20 Пнд 16:10:09 1736947351
>>1736937
>к же, наверное, не хочу использовать никакие готовые формы типа TextBox и т.п. Как ни странно, инфы я найти на эту тему не смог особо... Ну и сама архитектура редактора интересует велосипедить особо не хочется. В качестве хранимого буфера могу представить какой-нибудь стек. Ну, а для поиска по файлу - обычный поиск подстрок.
На как раз Direct2D или там OpenGL, Рисуют внутри консоли, без виндового API

>>1736943
ноп
Аноним 29/06/20 Пнд 16:13:51 1736956352
>>1736937
>На чем пишут текстовые редакторы?
На чём удобнее конкретной команде/программисту.
>Используют ли для этого графические апи типа opengl или directx?
Ты ебанёшься на шейдерах рисовать гуи, это оверкил.
>Если нет, то что используют?
Гуи фреймворки или пилят свой (если писали игру и дописывают что-то к ней — то на своём слою абстракций или берут какую нибудь готовую либу вроде саблайма на skia).
>Так же, наверное, не хочу использовать никакие готовые формы типа TextBox и т.п. Как ни странно, инфы я найти на эту тему не смог особо... Ну и сама архитектура редактора интересует
5 минут гугла и вот такой вот рещультат
https://chromium.googlesource.com/skia/+/e73aa7573279cda200b80c1a858ae00762a5516b/experimental/editor
Аноним 29/06/20 Пнд 16:17:58 1736960353
>>1736956
>Ты ебанёшься на шейдерах рисовать гуи, это оверкил.

Но ведь уже есть WPF
Аноним 29/06/20 Пнд 16:18:27 1736961354
>>1736937
Со стороны геймдева я бы взял что-то типа freetype для вывода букв, и sdl для обертки над окошками. А может, даже взял бы что-то вроде litehtml для рендера, собственно, html. А то, что ты ищешь, называется text rendering component, и одна из самых распространенных, это Scintilla
Аноним 29/06/20 Пнд 16:20:21 1736963355
>>1736960
Ну есть и есть, сказать-то ты что хотел? Свой гуй фреймворк строить с самого низкого уровня чтобы показывать массив битиков — это оверкил.
Аноним 29/06/20 Пнд 18:17:27 1737067356
>>1736960
Отстой, qml гораздо удобнее. Пользоваться приходится обоими.
Аноним 29/06/20 Пнд 18:28:07 1737077357

Насколько часто ща требуется Qt?

Что вообще ща для интерфейсов в моде?
Аноним 29/06/20 Пнд 18:30:33 1737078358
>>1737077
>Что вообще ща для интерфейсов в моде?
Джаваскрипт.
Аноним 29/06/20 Пнд 18:31:37 1737080359
>>1737078
То есть даже для какого-нибудь потошопа тоже?
Аноним 29/06/20 Пнд 18:44:02 1737089360
>>1735006
Clion по-моему медленнее VS
Аноним 29/06/20 Пнд 18:51:02 1737099361
>>1736436
А builder'ом сейчас пользуются? Там ведь не чистый винапи вроде
Аноним 29/06/20 Пнд 19:04:41 1737110362
Двач, перегружаю operator<< для вывода класса в консоль, но что если мой класс содержит std::wstring? Как этот тип строк выводить в std::ostream?
Аноним 29/06/20 Пнд 19:16:16 1737129363
>>1737110
А, всё, существует std::wostream.
Аноним 29/06/20 Пнд 19:25:07 1737133364
>>1737099
сейчас гуйню на С++ впринципе делают только немцы, дрочащие на кутя, и эстеты. Очень рекомендую освоить шарпы всем крестобогам, отличное дополнение к крестам
Аноним 29/06/20 Пнд 19:25:11 1737134365
Screenshot2020-[...].jpg (435Кб, 1080x2340)
1080x2340
>>1737080
Ну смотри что на qt, что какой нибудь пикрелейтед, кишки на крестах, интерфейс на жс.
Аноним 29/06/20 Пнд 19:29:30 1737138366
>>1737133
Шарп довольно удобный, но ксамл говно сраное.
Аноним 29/06/20 Пнд 19:30:20 1737139367
>>1737134
Пользуясь случаем спрошу.

Как всё это скрещивается?

Типа пишется некий графический интерфейс, по задействованию элементов которого запускаются некие функции, написанные на С++?
Аноним 29/06/20 Пнд 19:30:48 1737140368
>>1737133
И мне оч понравился т4, встроенное ПО для генерации кода это супер.
Аноним 29/06/20 Пнд 19:39:02 1737148369
>>1737139
Там qml, ты пишешь очень простой код с вставками на жс, оно дёргает функции на крестах, которые ты специально объявил на подъязыке кюта. Звучит странно но это реально удобно.
И все это можно рисовать мышкой, и добавлять скрипты чтобы автоматом переводить из формата тз в прогу, я очень апнул скорость программирования как допер.
Аноним 29/06/20 Пнд 19:44:43 1737157370
>>1737148
Про объявление я кажется понял, ибо недавно видел пример на хабре.

Поглядел по диагонали и теперь вопросы.
Я создаю игру со стадиями
Интро
Меню
Уровень
Настройки

Всё это дело есть абстрактный класс, наследники которого есть эти самые стади с общими методами для выполнения.

Далее, есть стадия настроек, в которой я могу поменять
Разрешение экрана
Режим экрана
Сложность
Количество кадров

Всё это дело пишется в некий файл конфиг

Возможно ли такое забабахать на qml?
Аноним 29/06/20 Пнд 19:52:12 1737161371
>>1737157
Не, qml это просто gui в твоём случае, почти. Разрешение экрана будет автоматом, а вот остальное... Конфиг наверное будет искаропки, даже от ОС не зависит, может быть в файле, может в реестре, и тебе не важно где.
Аноним 29/06/20 Пнд 19:54:01 1737162372
>>1737157
Хотя в qml есть state machine, я хз насколько тебе подойдёт.
Аноним 29/06/20 Пнд 19:56:12 1737164373
>>1737162
Я про это и говорю. Значит вполне сойдёт.

Я сам осилил сделать интерфейс с кнопками и текстом, но это малость напрягает, ибо больше по механике хочется напрячься.
Аноним 29/06/20 Пнд 22:12:22 1737301374
>>1736528
>>1736509
Долбаебы, кейс то выше смотрите. В этом случае memcpy подтвержденный стандартом метод решения данной проблемы.
Аноним 29/06/20 Пнд 22:53:56 1737341375
>>1737080
У меня при открытии лайтрума вызывается нвидия оверлей, будто драйвер чекает, что это типа игры
Аноним 29/06/20 Пнд 22:54:48 1737342376
>>1737133
А как же рест и жаваскрипт?
Аноним 29/06/20 Пнд 23:07:12 1737350377
>>1737133
This. И C++/CLI есть, если извращенец, и P/Invoke, если не в падлу все интерфейсы два раза переписывать.
Аноним 30/06/20 Втр 00:00:13 1737382378
Аноним 30/06/20 Втр 00:16:00 1737388379
>>1737382
Безопасный язык без GC, ебущий кресты по бенчмаркам, вершина компьютерных технологий и будущее системного программирования - говно? Ох лол.
Аноним 30/06/20 Втр 00:21:17 1737391380
>>1737301
>В этом случае memcpy подтвержденный стандартом метод решения данной проблемы.
Так значит тебе не составит труда притащить определение поведения
Аноним 30/06/20 Втр 00:28:54 1737397381
>>1737350
>C++/CLI
Как на нем сейчас пишут, руками от и до? Убрали ведь шаблон windows forms из VS для c++ после 2010 версии что ли.
Аноним 30/06/20 Втр 01:04:29 1737422382
>>1737388
О, растошизик в тред вернулся, с возвращением.
Аноним 30/06/20 Втр 01:05:38 1737423383
>>1737422
Аргументы будут или от бессилия нечего сказать?
Аноним 30/06/20 Втр 01:12:04 1737425384
>>1737388
Будет подмножеством C++30
Аноним 30/06/20 Втр 01:38:20 1737438385
>>1736604
>>1736749
Это все из-за strict aliasing rule. Если упрощенно, то если указатель видит два указателя несовместимых типов, то он считает что они указывают на разные объекты. Соответственно когда код пишет в первый указатель, компилятор может посчитать что второй не поменялся и соптимизировать чтение из него нафиг.

Вот тут про такие вещи расказано, даже есть пример кода на котором это проявляется (в онлайн компиляторе с дизассемблером, но такое случается только при включении дополните).
https://gist.github.com/shafik/848ae25ee209f698763cffee272a58f8
Аноним 30/06/20 Втр 01:41:13 1737439386
>>1737438
>но такое случается только при включении дополните
но такое случается только при включении дополнительных флагов, насколько я знаю даже gcc по умолчанию позволяет делать type punning с enum.

Вот еще неплохая лекция на эту тему: https://www.youtube.com/watch?v=_qzMpk-22cc
Аноним 30/06/20 Втр 02:01:39 1737446387
>>1737423
Да мне-то зачем.
Я ведь ~свою жену~ плюсы сам пользую и другим не навязываю, а вот ты ходишь по другим тредам и ноешь, что твой раст всем нужен, но все тупые и не используют его.
Аноним 30/06/20 Втр 02:09:24 1737449388
>>1737438
Там совместимые типы.
Аноним 30/06/20 Втр 02:18:15 1737454389
>>1737449
float[3] и struct { float x,y,z; } не совместимые типы
Аноним 30/06/20 Втр 02:29:33 1737461390
>>1737454
Это pod без виртуальной таблицы.
Аноним 30/06/20 Втр 02:53:25 1737469391
>>1737461
Это неважно, в контексте type aliasing понятие "совместимые типы" имеет четкое определение.

https://en.cppreference.com/w/cpp/language/reinterpret_cast

>Informally, two types are similar if, ignoring top-level cv-qualification:
> they are the same type; or
> they are both pointers, and the pointed-to types are similar; or
> they are both pointers to member of the same class, and the types of the pointed-to members are similar; or
> they are both arrays of the same size or both arrays of unknown bound, and the array element types are similar.
> they are both arrays of the same size or at least one of them is array of unknown bound, and the array element types are similar.


Аноним 30/06/20 Втр 03:08:31 1737470392
>>1737342
Мне по работе надо было написать REST сервис - я нашлепал на ASPNet core. Кресты таки для другого. Хотя, в последнее время, меня мучает мысль о том, что 90% нашего софта можно переписать на шарпе а еще есть кернелдрайвер который переписать нельзя. Но остальное то можно.
Аноним 30/06/20 Втр 03:21:08 1737473393
>>1737391
Смотри видео выше, шизан.
Аноним 30/06/20 Втр 03:22:49 1737475394
>>1737469
Двачую, единственный адекват в треде, шизики уже 3 день мусолят и доказывают, что не уб, хотя все пруфы уже 3 раза запощены итт.
Аноним 30/06/20 Втр 03:33:41 1737476395
>>1737469
Это явно не все, потому что тогда любой указатель, любая рефка была бы ub.
int i;
int* r = &i;
А в твоей цитате рассматриваются только пары типов или пары указателей.
Аноним 30/06/20 Втр 03:38:30 1737478396
>>1737476
Посмотри/почитай что я выше запостил.
Аноним 30/06/20 Втр 03:49:57 1737480397
Аноним 30/06/20 Втр 03:52:54 1737483398
Аноним 30/06/20 Втр 03:56:44 1737485399
>>1737483
Кейс не про указатели, а про унион структуры и массива.
Аноним 30/06/20 Втр 04:05:18 1737489400
>>1737483
Дополню что
struct POD { float f;} pod;
float pf = &(pod.f)
Точно не UB.
Сложнее если полей в поде больше, потому что может быть паддинг.
sruct POD2 {
float f1
char[4] possible_padding;
float f2 }
float
pf2 = (&(pod.f))[1]

Но тут вопрос именно в том UB это вполне defined.
Аноним 30/06/20 Втр 04:21:53 1737493401
>>1737489
>>1737485
Изучай матчасть. Я раньше тоже думал, что это норм, но как оказалось нет если точнее то в С норм, а в С++ нет
Аноним 30/06/20 Втр 04:33:59 1737496402
>>1737493
Влпрос не в том норм это или не норм, а в том определенное или неопределенное поведение.
Аноним 30/06/20 Втр 04:38:48 1737497403
>>1737496
ну так может быть тебе стоит изучить плюсы вместо того чтобы фантазировать? Материалы тебе дали.
Аноним 30/06/20 Втр 04:44:00 1737498404
>>1737497
Ну так может ты просто укажешь конкретный пруф на то что это UB, а не будешь просто пердеть в треде?
Аноним 30/06/20 Втр 04:49:28 1737500405
>>1737498
Ох уж эти зумеры с 10ти секундным пределом внимания.
Аноним 30/06/20 Втр 04:52:28 1737501406
>>1737500
Ты там с зеркалом разговариваешь? Может ты не понял, но я тебе уже указал что пруфы "для двух указателей на разные типы" никак не доказывают ub в унионе с под структурой.
Аноним 30/06/20 Втр 05:36:00 1737506407
>>1737501
Еще раз, я не буду тебе объяснять то, что уже много раз разжевано другими людьми, просто потому что тебе лень прочитать текст по ссылке
Аноним 30/06/20 Втр 06:19:30 1737518408
Аноним 30/06/20 Втр 06:57:33 1737526409
Для чего предназначен класс вектор?
Аноним 30/06/20 Втр 08:31:44 1737540410
>>1737526
Для векторов в N-мерном пространстве.
Векторы завезли, а матрицы — нет. В этом весь C++
Аноним 30/06/20 Втр 08:39:42 1737541411
Аноним 30/06/20 Втр 09:30:20 1737569412
>>1737541
>Нет.
Чё ты скучный такой))0
Чай не ньюфаг-тред чтобы на такие вопросы отвечать правильно.
Аноним 30/06/20 Втр 10:19:33 1737605413
>>1737388
Раст это такая современная Ада. В лучшем случае будут на нем забивать координаты в ядреные ракеты, в худшем - отправится вслед за прологом.
Аноним 30/06/20 Втр 10:46:18 1737624414
image.png (309Кб, 450x300)
450x300
>>1737423
Дак там это тамщета фаерфокс хуя пососала с растом в прочем как и любой кто его действительно использовал. А вообще язык хуйня неимоверная, какую еще поискать надо, что это блять за убийца C++, который безопасно работает с памятью? Ты там ебу дал?
Аноним 30/06/20 Втр 11:08:20 1737641415
Аноним 30/06/20 Втр 11:25:23 1737657416
image.png (11Кб, 507x237)
507x237
image.png (11Кб, 494x232)
494x232
Аноним 30/06/20 Втр 11:27:54 1737661417
Аноним 30/06/20 Втр 11:35:48 1737670418
>>1737624
>Дак там это тамщета фаерфокс хуя пососала с растом
соус?
Аноним 30/06/20 Втр 11:57:02 1737691419
>>1737670
Он уже давно эту хуйню несет, пруфов так и нет. Хуево быть сектантом.
Аноним 30/06/20 Втр 12:04:34 1737694420
1.png (36Кб, 1614x354)
1614x354
2.png (42Кб, 1614x354)
1614x354
>>1737657
Так что это получается, плюсы тоже нинужны?
Аноним 30/06/20 Втр 12:15:37 1737698421
Аноним 30/06/20 Втр 12:27:01 1737715422
>>1737694
Так а че это ты привел две совершенно разные категории? Продавец вроде бы не заявлялся как "будещее системного программирования".
Аноним 30/06/20 Втр 12:35:51 1737729423
>>1737624
И где фф пососала хуй с растом? В чем это, блять, выражается?
>безопасно работает с памятью
тащемта да
Аноним 30/06/20 Втр 13:15:09 1737770424
>>1737506
> у меня нет пруфа, я просто верю что там ub
Ладно.
Аноним 30/06/20 Втр 13:29:00 1737782425
>>1737388
Язык с unsafe - не безопасный по определению.
Аноним 30/06/20 Втр 13:44:44 1737790426
>>1737782
Любой современный язык небезопасен, так как компилятор содержит ошибки (статистически должен из-за сложности) и может сгенерировать некорректный код.
Аноним 30/06/20 Втр 14:03:01 1737810427
>>1737782
Что тебе мешает не абузить ансейф?
Что тебе мешает тестить точечно ансейф код, повышая шанс отлова опасного бага? Ведь в С/С++ весь код - UB, а в расте хотя бы знаешь где может быть заложена свинья.
Есть проекты и без ансейф кода вообще, он не везде нужен.
Аноним 30/06/20 Втр 14:05:40 1737813428
>>1737790
Удачи тебе найти переполнение буфера в джаве или сисярпе, лол (они уже могут компилиться в нативные бинари). Не, в самой инстраструктуре могут быть такие дыры, ибо она написана на С/С++, но есть языки, которые неуязвимы к ошибками памяти (тащемта любой managed язык)
Аноним 30/06/20 Втр 14:14:04 1737819429
>>1737133
Ой, да конечно блет. C# это кал который нормально работает только под вундоуз. Зачем, когда есть wxWidgets, или накрайняк КУТЭ?

А вообще, зачем писать гуи в принципе... всё в веб уползает.
Владимир Владимирович Путин 30/06/20 Втр 14:51:28 1737845430
Реально ли фрилансить на c++?
Аноним 30/06/20 Втр 15:06:55 1737864431
Аноним 30/06/20 Втр 15:08:35 1737868432
>>1737845
Было пару раз в 2018 брал заказы, на QT быстренько нашлепать приложение, однако потом это перерастало в обычную работу. Но это большая редкость.
Аноним 30/06/20 Втр 15:10:03 1737872433
>>1737810
Ансейф будет в либе, которую юзает другая либа, а проявляться будет в твоем коде который это вызывает. Ну и в расте тоже есть ub.
Аноним 30/06/20 Втр 15:13:27 1737876434
>>1737819
Дедуль, неткор привет передает
Аноним 30/06/20 Втр 15:28:15 1737896435
>>1737872
Ну будет и будет, это не ответ на вопрос почему тебе надо на это ложить хуй.
Аноним 30/06/20 Втр 15:31:01 1737900436
>>1737896
Так ты и в крестах не клади.
Аноним 30/06/20 Втр 15:33:33 1737902437
>>1737900
Ну использование крестов это уже по умолчанию ложение хуя.
Аноним 30/06/20 Втр 16:11:26 1737955438
>>1737872
Интересная теория.
А какой в расте есть UB? Можно примеры?
Аноним 30/06/20 Втр 16:14:08 1737958439
Аноним 30/06/20 Втр 16:20:25 1737969440
>>1737876
>неткор

Кто-то это говно вообще юзает помимо виндузятников? Понятно что у майкрософта кучу gachi-технологий которые никому не упали
Аноним 30/06/20 Втр 16:21:50 1737971441
>>1737955
Это не теория, с actix именно так и произошло.
Аноним 30/06/20 Втр 16:30:29 1737984442
Чет не могу вкатиться в С++ или C#

Скачал курсы по обоим, а там просто трата времени бессмысленное. Какие-то дроби, числа огромные. И самое главное, что там нихуя не объясняется что они делают. Просто блять пишут всякие дроби, а потом говорят - это дроби. Ну ахуеть! Я понял, что бывают разные переменные, но причем тут всякие дроби? Вы что программируете дробями? Пиздец нахуй. Нечто подобное помню было когда изучал HTML. Там тоже какую-то хуйню втирали, которую нигде не используют. А верстать на нем я научился когда делал себе одностраничный сайт. Вот только с С# и C++ так не получается. Помогите с чего начать, как научиться использовать эти языки, чтобы потом дополнять нехватку знаний дробями из курсов?
Аноним 30/06/20 Втр 16:33:02 1737993443
Аноним 30/06/20 Втр 16:34:46 1737997444
>>1737958
ну, UB только в ансейф блоках
Вне ансейфа UB нет
Аноним 30/06/20 Втр 16:43:07 1738013445
Аноним 30/06/20 Втр 16:48:34 1738025446
>>1737997
Протекающие абстракции.
Аноним 30/06/20 Втр 17:07:41 1738080447
Аноним 30/06/20 Втр 17:13:30 1738102448
>>1737969
дохуя кто, отличная штука.
Аноним 30/06/20 Втр 17:39:49 1738152449
>>1735038
>Даунгрейд
Читабельность когда, с форлупами и итераторами где много конструкций заебешься отслеживать что и где, а тут такие красивые пайпы
Аноним 30/06/20 Втр 18:30:40 1738197450
>>1738152
Главное не написать blabla | 0 вместо blabla, 0, зато красиво.
Аноним 30/06/20 Втр 18:48:03 1738215451
Двач, как вообще сжатие работает? Планирую засовывать в SQLite текст по 50кб, можно ли перед отправкой его как-нибудь сжимать?
Аноним 30/06/20 Втр 18:57:10 1738233452
Аноним 30/06/20 Втр 18:58:29 1738235453
>>1738215
Читни про алгоритм Хаффмана и информационную энтропию.
Аноним 30/06/20 Втр 19:01:20 1738238454
>>1738215
Грубо говоря, в языке всего 32 буквы, а в байте 256. Значит уже на букву надо около 5 битов, а не 8. Дальше, буквы встерчаются с разной частотой. Гласные ОЕАИ занимают 33% текстов, а цщф - меньше процента. Значит, можно частые буквы кодировать 2-3 битами, а редкие более длинными последовательностями.
zlib, сейчас вроде еще brotli
Аноним 30/06/20 Втр 20:18:06 1738324455
Безымянный22.png (64Кб, 1197x900)
1197x900
Почему так?
C++20 уже вышел?
Аноним 30/06/20 Втр 20:43:27 1738360456
>>1738324
Не обязательно ждать окончательного утверждения нового стандарта, чтобы уже начинать писать компилятор, реализуая сначала устоявшиеся фишечки, которые редизайнить потом не будут.
Аноним 30/06/20 Втр 20:44:20 1738362457
Двач, как из stringstream удалить последний символ std::endl без перевод stringstream в текст?
Аноним 30/06/20 Втр 20:51:07 1738371458
>>1738362
Гугл говорит, что никак.
Аноним 30/06/20 Втр 20:53:25 1738374459
>>1738362
Это же поток, там должна быть перемотка, не?
Аноним 30/06/20 Втр 20:58:14 1738380460
>>1738371
Как тогда сделать что-бы строка из stringstream переместилась в мою строку без копирования? std::string&& string = stringstream.str(); сработает копирование или перемещение? Я немного не в теме всех этих перемещений.
https://en.cppreference.com/w/cpp/io/basic_stringstream/str
Аноним 30/06/20 Втр 21:12:49 1738399461
Аноним 30/06/20 Втр 21:16:30 1738404462
Аноним 30/06/20 Втр 22:34:41 1738470463
Правда что для оптимистик локов больше подходит спинлок вместо мьютекса?
Аноним 01/07/20 Срд 00:13:14 1738521464
>>1738470
Я бы посоветовал вообще не юзать спинлок если ты не уверен на 100% что делаешь. Понять нужен ли он тебе можно по следующим пунктам:
— У тебя мало потоков (желательно <4, иначе накладных расходов из-за дрочащих циклы потоков будет явно больше чем от переключения контекста каким нибудь мутексом), т.е. использовать с какими нибудь корутинами шедулящимися по потокам точно хуёвая идея;
— Изменение быстрое (по крайней мере не особо жирное, если будешь переиндексировать всю базу эти спинлоки отправят тебе процессор нахуй в троттлинг).

Насколько я понимаю понятие оптимистик лока — да, но если хочешь спать спокойно лучше выбери что нибудь более предсказуемое.
Аноним 01/07/20 Срд 02:35:25 1738578465
Аноним 01/07/20 Срд 03:28:42 1738595466
Аноним 01/07/20 Срд 03:43:53 1738600467
>>1738521
>в троттлинг
Есть инструкция pause для этого, специально для спинлоков чтобы такого не было
Аноним 01/07/20 Срд 11:22:06 1738730468
>>1738595
Комитет его утвердил в Праге в феврале. Де-факто стандарт 20 готов.
Аноним 01/07/20 Срд 12:33:28 1738803469
Можно задать sizeof для указателя, как это автоматически делается для статического массива?
Аноним 01/07/20 Срд 12:36:43 1738810470
Аноним 01/07/20 Срд 13:15:35 1738857471
Двач, можете пояснить в двух словах где надо ставить const, а где нет.
Нужен ли const параметрах функций для фундаментальных типов и нужен ли он для переменных в телах функций?
Аноним 01/07/20 Срд 13:37:51 1738876472
>>1738857
1. литеральные строки автоматически const
2. желательно ставить const перед таблицами констант
3. все указатели на сущности, которые ты не собираешься менять, объявлешь как "const foo ⛧"
4. опционально
const int pi = 4; // здесь const запрещает pi++
Аноним 01/07/20 Срд 14:10:33 1738904473
>>1738857

Вообще, везде где только можно
Аноним 01/07/20 Срд 14:34:24 1738927474
>>1738521
while (m_locked.test_and_set(std::memory_order_acquire)) std::this_thread::yield();
Аноним 01/07/20 Срд 14:37:29 1738930475
>>1738857
const нужен там, где ты внезапно не собираешься менять содержимое.
Например: если у тебя функция возвращает длину строки, не меняя ее, то size() const. А если ты делаешь функцию set_value(int x) которая меняет состояние объекта, то не она не const.
Параметры функций примитивных значений не надо - они передаются копией по значению. То что ты поменяешь параметр внутри функции, внутри функции и останется. Если же ты передаешь объект внутрь функции, то опять же, если ты гарантируешь что не будешь его менять, а только считаешь из него данные - то const. Если же ты именно меняешь полученный объект - то не const.
Зачем он переменным - загадка. Зачем заводить константную переменную внутри функции? Константы надо хранить где-то в другом месте. Завести отдельный класс или неймспейс.
Аноним 01/07/20 Срд 14:43:47 1738934476
>>1738930
Спасибо за обширный ответ.
Аноним 01/07/20 Срд 14:52:48 1738941477
Аноним 01/07/20 Срд 15:07:35 1738959478
Константность влияет на производительность?
Аноним 01/07/20 Срд 15:09:35 1738962479
>>1738959
Ну, наверное компилятор сможет оптимизировать больше, если он видит что это константа. С другой стороны, есть const_cast.
Аноним 01/07/20 Срд 15:10:30 1738964480
>>1738959

Да, но при компиляции с -O2 конпилятор чаще всего расставит за тебя const там где ты не поставил, поэтому ставишь больше для себя
Аноним 01/07/20 Срд 15:36:02 1739001481
>>1738959
Обычно почти не влияет. Она влияет на корректность.
Аноним 01/07/20 Срд 17:10:16 1739145482
>>1738962
const_cast нужен, чтобы приводить неконстантные вещи к константным в стиле "современных плюсов". Снятие константности таким образом ведет к UB, что и написано в стандарте.
Компилятор как раз может конст каст соптимизировать и положить значение в read only память.
Аноним 01/07/20 Срд 19:09:53 1739292483
>>1739145
>приводить неконстантные вещи к константным
А смысл? Если они внутри либы остаются неконстантными. А значит это все равно UB когда их поменяют.
Аноним 01/07/20 Срд 19:21:45 1739309484
Аноним 01/07/20 Срд 21:51:48 1739452485
>>1738876
> const int pi = 4; // здесь const запрещает pi++
Дедуля, все уже давно constexpr пишут, обновляйся
Аноним 01/07/20 Срд 22:07:28 1739469486
>>1738930
> Зачем он переменным - загадка. Зачем заводить константную переменную внутри функции?
Что значит зачем? Затем же, зачем и параметры передавать по константной ссылке.
auto const values = GetValues();

Единственный случай, когда не нужно - это в RVO
Аноним 01/07/20 Срд 22:09:47 1739471487
>>1738964
vector<int> a;
a.push_back(1);
...дальше a не меняется...

Удачи в оптимизации, лол
Аноним 02/07/20 Чтв 00:24:11 1739541488
15515601615950.jpg (60Кб, 640x425)
640x425
Блджад, я не понимаю. Подскажите как организовать проект, чтобы можно было его одной кнопкой собирать, генерировать документацию, устанавливать зависимости и т.п. Хотя бы последнее.

Хочу сделать это с помощью cmake. Желательно версии 3.10, но если очень надо, можно и свежую скомпилировать.
Сейчас есть следующие директории (может это надо как-то реорганизовать, я не знаю):
build
doc
test
lib ­— сюда хочу запихивать сторонние библиотеки
src — собственно, исходники проекта. Вероятно тут будет лежать только main.cpp, а остольное распихано по директориям типа src/core/, src/server/ и т.п.
Сейчас это собирается баш скриптом, который выглядит так
cd build
cmake ..
cmake --build .
cd ..
doxygen Doxfile # генерирует документацию для всего, что в src/*

CMakeLists.txt в корневой директории выглядит так https://pastebin.com/VBWVG2ZY .

Есть одна либа с гитхаба, которую я хочу использовать. Если сделать git clone, то создастся следующая структура
YetAnotherLib/
YetAnotherLib/doc/
YetAnotherLib/cmake/
YetAnotherLib/CMakeFile.txt
...
YetAnotherLib/YetAnotherLib/ — собственно, сами исходники.

Сейчас я в main.cpp могу написать
#include "core/MyObj.h"
Но не могу написать
#include "YetAnotherLib/YetAnotherObj.h"
А хотелось бы.
Не "YetAnotherLib/YetAnotherLib/YetAnotherObj.h" и не "lib/YetAnotherLib/YetAnotherLib/YetAnotherObj.h". Тем более, что в той либе есть инклюды типа "YetAnotherLib/subdirectory/SomeOtherObj.h", так что даже если тупо скопиастить директорию с исходниками или всю директорию с гита в src/, собираться не будет.

Джва часа проковырялся с этим, но так и не понял.
Аноним 02/07/20 Чтв 00:52:06 1739561489
>>1739541
> устанавливать зависимости
ахахах
АХАХАХ
АХАХАХАХАХАХ

Я как раз решил сегодня обмазаться conan'ом и vcpkg'ом, уже часа 3 копаюсь. Первый работает так, будто я взял альфа-версию, второй - будто бету.
Аноним 02/07/20 Чтв 01:47:57 1739600490
>>1739561
Ладно, vcpkg в ебанной вижуалке работает нормально, с cmake+mingw же полный пиздец.
Аноним 02/07/20 Чтв 02:28:23 1739605491