Этого треда уже нет.
Это копия, сохраненная 31 декабря 2020 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
C++ тред #114 /cpp/ # OP 1728315 В конец треда | Веб
Вместо шапки:
https://github.com/sosachbot/cppthreadhat/wiki

Ответы на вопросы:
https://en.cppreference.com/w/
https://www.cplusplus.com/reference/

Звездочки для указателей:
⚹★☆☀⚛✱✬⛧ ✭ ✮ ✯ ✰ ✡⛥ ⋆ ✢ ✣ ✤ ✥ ❋ ✦ ✧ ✩ ✪ ✫ ★⚹

Прошлый тред: https://2ch.hk/pr/res/1719888.html (М)
2 1728323
>>728315 (OP)
Смешно.
3 1728326
Зачем нужны ranges? Пока выглядит как попытка писать на буквально 2 строки меньше
4 1728329
>>728326
Чтобы через пару десятков лет любой язык был подмножеством C++.
5 1728337
>>728326
Пайплайны, ленивые вычисления, генераторы, вот это всё.
int sum = accumulate(views::ints(1) | views::transform([](int i){return i*i;}) | views::take(10), 0);
6 1728339
>>728315 (OP)
Я правильно понимаю, что все кроме модулей добавляется просто созданием новой библиотеки, а сам язык фактически не изменяется?
7 1728343
>>728315 (OP)
А что, если появление модулей решит проблему с подключением либ/управлением зависимостями, и легаси cmake наконец-то сдохнет?
8 1728345
>>728315 (OP)

>C++20


Нахуя так усложнять язык? ещё stl нормально использовать не научился, а они уже пару новых парадигм успели придумать. Нахуя блять это всё делается, на каком-то тырпрайзе реально не хватало этих ranges и constexpr контейнеров, чтоб всё работало?
9 1728359
>>728343
cmake - это не пакетный менеджер. В cmake ты говоришь, как и что нужно для сборки твоего проекта.
10 1728373
>>1728189 →
Ну и на том спасибо.
11 1728375
>>728345
А мне нравится. Язык становится ближе к нормальным Хаскелям-SMLям.
12 1728391
>>728375
Так и используй хаскель свой, нахуй это сюда пихать
13 1728395
>>728391
Не могу, он тормозит и не стыкуется с легаси говном.
А вот новые кресты позволят макакировать быстрее и проще. Но это не точно.
14 1728422
>>728395
Лучше бы разбили С++ на несколько подязыков, отдельный для каждой "парадигмы", и для каждого описали свой стандард, из которого были бы выброшены все элементы, не соответствущие этой "парадигме" конкретного подязыка. Логично, что многие подходы ranges так или иначе являются переосмыслением тех же stl итераторов. В проекте, в котором повсеместно используюется один подход, другой бы не применялся. Итого можно было бы получить подязыки С++STL, C++Functional, C++Ranges и т. д. И все они были бы совместимы друг с другом на уровне отдельных библиотек.
15 1728423
>>728337
Это блять дрочка вприсядку.
Всё что сложнее бесконечной последовательности факториалов суммы чисел в массиве в такой записи вырождается в непредставимый пиздец, который сосет у for(int i...) по скорости написания и читаемости.
16 1728426
>>728422
То есть ты утверждаешь, что программист обязан писать весь код исключительно в одной парадигме?
17 1728428
>>728422
Тут от обеспечения совместимости с прошлым-то стандартом жопы скрипят, а ты хочешь еще и диалектов наплодить.
18 1728431
>>728426
В рамках одного проекта - да. Так же как и должен придерживаться единого кодинг стайла
19 1728434
>>728431
*можно даже сказать не проекта, а модуля
20 1728452
>>728337
Все это делается на итераторах, ranges это буквально сахарок. Я не понимаю какие идиоты пропустили этот оверинжинирд бред в стандарт.
21 1728456
>>728431
В хоть сколько-нибудь больших проектх это не работает, как бы красиво и идеалистично это ни звучало. К тому же, кодинг стайл ещё не значит конкретная парадигма.
22 1728457
>>728434
⚹⚹можно даже сказать не модуля а функции

⚹⚹⚹можно даже сказать не придерживаться
23 1728462
>>728452
А итераторы делаются на указателях, так что итераторы - это тоже сахарок и нинужна. Да и вообще, нахуй кресты, ведь сишка тоже тьюринг-полная.
24 1728463
>>728462
Чистая правда
25 1728466
>>728457
нельзя даже сказать
26 1728468
>>728466
⚹⚹⚹⚹
забыл надеть модные астериксы
27 1728470
>>728345
Ты парадигмами называешь ranges и constexpr-контейнеры? Ты ебанутый?
28 1728471
>>728337
Вербозно((
29 1728484
Короче вместо учебника по информатике чтобы стать ближе к байтоёбству, я собрался читать книгу Код Петцольда.
Я сделал правильный выбор?
30 1728485
>>728470
Да, и готов с этим поспорить.
31 1728515
Анончики, как писать свой аллокатор, сам пишу учусь на QT, но с написанием подобного не сталкивался. На степике не очень хорошо объяснено я тупой просто. Что почитать чтобы реализовать Buddy и SLAB аллокаторы.
32 1728577
>>1728159 →
>>1728252 →
Автор ебанутый наглухо.
33 1728587
>>728515

> Что почитать чтобы реализовать Buddy и SLAB аллокаторы.


Совет номер один от гуру цпп да и в принципе адекватных людей - использовать кастомные аллокаторы только по результатам профилирования и только если это bottleneck
34 1728682
>>728337
Это что-то типа Linq из шарпа что ли?
35 1728687
>>1728252 →

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



Именно эту книгу я не читал, а читал его учебник "введение в профессию". По части содержания - всё очень-очень неплохо. Проблема только с тем как он хуево пишет. Натравить бы на эти книги хорошего редактора с писательским опытом - цены бы им не было.
36 1728702
Двач, как несколько std::array разных размеров передавать в функцию?
37 1728724
Допустим, у меня есть класс foo, в котором есть константный метод bar. У него есть ограничение только на изменение объекта, на который указывает this, или на что-то ещё?
38 1728730
>>728724
Всё неконстантное, не связанное с объектом + mutable члены класса
39 1728732
>>728702
Тащемта берешь и без задней мысли передаёшь. Или пишешь шаблон

template<class T, size_t n>
void foo(std::array<T, n> const &arr){}
40 1728807
>>728682
По скорости не уступает линку, да.
41 1728812
>>728682
>>728337
Есть же уже либа с более адекватным синтаксисом https://github.com/mrange/cpplinq (правда ее уже никто не обновляет). Почему они решили сделать какую-то нечитабельную херню вместо этого?
42 1728827
Как уточнить шаблон функции? Инет перерыл, нихера не нашёл.
43 1728841
>>728827
Разобрался
44 1728852
>>728812

>решили сделать какую-то нечитабельную херню


c++ way
45 1728936
>>728515
В большинстве случаев проще свой контейнер написать под конкретную задачу, чем прикручивать кастомный аллокатор к библиотечному контейнеру.
image.png22 Кб, 407x457
46 1728943
Почему в первом варианте с шаблонной функцией компилятор не может автоматом использовать оператор преобразования в TestView, а во втором спокойно использует?
47 1728991
>>728943
Указывай шаблонные параметры при вызовах функций. Должно работать.
48 1729008
>>728991
Работать то оно будет, но каждый раз писать аргументы шаблона заебывает. Вопрос почему второй вариант работает если это просто частный случай первого?
49 1729027
>>729008

>просто частный случай первого


Нет, это отдельный шаблон со своим выводом типов.
50 1729060
>>728943
Платиновый вопрос
51 1729062
Объясните мне на пальцах, что такое линковка, и почему при смене abi все пойдет по пизде
52 1729099
>>729062

> что такое линковка


Склеивание скомпилированных единиц трансляции (cpp файлов) в единый бинарник

> почему при смене abi все пойдет по пизде


Потому какой-нибудь бинарник рассчитывает, что в твоём классе будет два поля, но после поломки ABI там осталось одно. Повезёт, если не соберётся. Если не повезёт, то оно соберётся и отстрелит тебе хвост по самое ебало
53 1729100
>>729099
Разве abi это не про системные вызовы?
54 1729105
>>729100
ABI это как раз про линковку. Системные вызовы все на сях, и там ABI слава аллаху неизменен.
55 1729245
>>728687
А мне нравятся все его шутеечки охуенные.
56 1729251
>>728587
Мне чтобы сертификатик получить надо его бахнуть. Да и вроде на собесах просят реализовать, в качестве тестового задания.
57 1729271
>>729251

> Мне чтобы сертификатик получить надо его бахнуть.


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

>Да и вроде на собесах просят реализовать, в качестве тестового задания.


Я так понимаю, эту страшилку тебе на тех же говнокурсах рассказали?
58 1729359
>>729271
Не на киберфоруме с чуваками общался. На кст и собес был на мидла-байтоёба.
59 1729523
>>729271

>Про туалетную бумагу слышал


Слышал, я ей жопу вытираю

>Никому твои всратые сертификаты не нужны


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

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


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

>страшилку тебе на тех же говнокурсах рассказали?


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

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


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

std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> distrib(1, 6);
62 1730266
63 1730289
>>730266
Ncurses
c
u
r
s
e
s
64 1730292
>>729692
Посмотри что rd() возвращает. Если там одное и тоже то ищи друкгой компилятор. Ну или придумай что-то свое - может система может сгенерировать достаточно слуыайное число, или там инициализируй хешом от текущего времени.
65 1730294
>>729692

> Двач, с каждым запуском программы генерируются одни и те-же числа, подскажите как исправить.


Блять, так там и должны генерироваться одни и те же числа. Ты хоть почитай про это.
66 1730418
>>730289
А как ncurses работает?
67 1730452
>>730289
>>730418
Однажды я за пару часов написал затычки для некоторых функций этой либы через winapi, чтобы собрать код с ncurses на шиндовс. И оно даже работало почти так же.
изображение.png58 Кб, 800x881
68 1730499
>>730418

Быстро-быстро срет в консоль
69 1730509
>>730499
эх, сонсолька...

попердолить бы тебя....
232412.png65 Кб, 649x634
70 1730782
После выполнения блока else (зеленым выделил), происходит не понятная хуйня. Программа не выходит из этого блока и не передает управление оператору вывода после него. Вместо этого она словно подвисает на пару секунд и завершается без сообщений ошибок.

Суть функции: передаю корневой каталог в котором надо найти все файлы (включая файлы в под-директориях), извлечь из них информацию и засунуть в структуру, а структуру в вектор запушить (который на скрине пока не используется).
71 1730785
>>730782
И да, если убрать этот блок else, то программа корректно выведет все файлы и директории (если выполнить cout << fullPath). При этом сам блок else, как я уже сказал, работает правильно.
72 1730792
>>730782
segfault
73 1730803
>>730782
Пройдись дебаггером да посмотри, что прога делает и где падает. Алсо, для дебажного вывода лучше делать флаш потока, иначе перед крашем может просто случайно не вывести какую-нибудь строку. Например, можно вместо "\n" делать std::endl.
74 1730809
>>730782
Ну так запусти под отладчиком и посмотри где зависает и почему падает
75 1730821
>>730782
Ты осознаешь почему ругаются на си с классами?
for(auto& p: std::filesystem::recursive_directory_iterator(dirname))
std::cout << p.path() << ' ' << p.file_size() << '\n';
76 1730826
>>730821
У меня нет c++17 в gcc 8.1.0.

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

>>730809
>>730803
Если бы этот дебаггер еще работал сам нормально... Например, я сейчас смотрю как заполняются поля структур и вижу, что половина почему-то вообще не отображается после записи, хотя, если сделать cout этого поля, то все нормально. Хз, проблема ли это плагина для vscode, либо самого отладчика gdb.
77 1730832
>>730826

>У меня нет c++17 в gcc 8.1.0.


Значит есть библиотеки со всем тем же искаропки.
78 1730838
>>730782
Попробуй проект пересобрать заново. Такое бывает, когда какой-то объектный файл не обновился и срет в память. Если не поможет - смотри отладчиком или valgrind/drMemory.
014752.png8 Кб, 389x146
79 1730888
Короче, нашел я проблему. Надо было заменить одно на другое (пик). Не думал, что std::string нужно выделять память вручную для такого. А главное - никто не жаловался, строки корректно заполнялись...
80 1730903
>>730888
Ну ты даешь, перец.
Причем тут string, если ты в read передаешь char*?
81 1730905
>>730903
При том, что я и просто приведение типа делал на [0], без выделения памяти все равно не работало.

>перец


Чем на пикабу/хабре не сиделось, залетный?
82 1730907
>>730903
А что туда передавать, если не char*?
83 1730910
>>730905
>>730907
Нет ты залетный.

char* туда и передавать, только надо понимать, что в этом случае ты работаешь с си-массивом, а не плюсовым string. А то потом начинаются претензии, что string работает как-то не так.
84 1730919
>>730910
Это отменяет факт того, что под строку надо выделять память? Нет. Вот и все. Какие еще притензии к строкам? Из контекста не выдирай.
85 1730948
Что происходит, когда функция возвращает ссылку? Что возвращается то? Адрес переменной? Её значение? Если с указателями всё более-менее понятно, то с ссылками какая-то хуйня.
Как вообще происходит возвращение переменной в конце выполнения функции, если этой переменной если она автоматическая уже не должно существовать?
86 1730959
>>730919
Какой же ты тугой.
Функция принимает на вход си-строку, там по дефолту нужно выделять память.
То, что методы string и методы, которые принимают ее на вход, сами это делают тут не при чем.
И нехуй потом жаловаться, что при использовании string в методе, который принимает char*, ты обсираешься на выделении памяти.
87 1730966
88 1730977
>>730948
Посмотри дизассемблер. В зависимости от соглашения о вызовах переменная может быть на на стеке вызванной функции, который зачистит уже вызывающая после возврата (предварительно переложив результат вызванной в какую-то свою переменную), а может передаваться через регистр и тогда стирание фрейма вызванной её не затронет
89 1730980
>>730948
А ссылка это тот же указатель внутрях, только с ограничениями на уровне языка - нельзя разыменовывать, не может быть нулл
90 1730982
>>730959
Тупой ты, потому что не знаешь о перегрузках явного преобразования типов. А теперь съеби уже на свою голубятню на хабр, залетыш.
91 1731086
>>730982
Какой же ты дурень.
Когда ты передаешь куда-то внутренности string, они не обязаны делать выделять необходимую память под операцию.
Ты пытаешься воткнуть квадрат в круглое отверстие и пиздишь, будто квадрат виноват, а не ты тупой.
92 1731092
>>731086

>Какой же ты


>Какой же ты


Какой же ты жалкий. Нахуй ты свою пасть разеваешь вообще, уебище? Если до тебя десятый раз суть мысли не доходит, иди пробздись что ли, я хз. Ты как долбаеб одно и тоже повторяешь, сука. Съеби, реально. Тут для тебя места точно нет. Такие, как ты должны сидеть в своем углу и дрочить друг-другу на своих законных местах. Квадраты у него в отверстия пихают, долбаеб, блядь. Хррртьфу в ебало тебе, чмо пикабушное.
93 1731182
>>730977

Соглашение о вызовах существует в рамках интерфейсов библиотек. Внутри компилятор не обязан его соблюдать и имеет право срать лапшу как хочет.
изображение.png9 Кб, 893x206
94 1731196
Почему когда я разыменовываю возвращенный итератор и меняю значение оно не меняется?
95 1731199
>>731196
Уже понял, я забыл ссылку
96 1731228
>>731196
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; });
}
97 1731237
>>731092
Ебать тебя порвало-то.
98 1731238
Двач, напомните мне как в C++ (особенно на windows в qtcreator с cmake) подключить библиотеку? Какие файлы качать, куда ложить, что прописывать, я всё забыл.
99 1731249
>>731238
К примеру sqlite.
100 1731253
>>731238
Иди на сайт библиотеки. Там должно быть написано
101 1731256
>>731253
Ничего не написано.
photo2019-02-2519-33-31.jpg73 Кб, 453x604
102 1731295
>>731256
Так что за библиотека?
Это именно внешняя C/++-либа, никак не связанная с Qt?
>>731249
У Qt и так есть модуль для работы с SQL-базами, в т.ч. SQLite.
https://doc.qt.io/qt-5/qsqldatabase.html
Просто нагугли примеры. https://habr.com/ru/post/128836/

мимокрок, последний раз писал на Qt/С++ много лет назад в шараге
103 1731385
>>731295

>У Qt и так есть модуль для работы с SQL-базами, в т.ч. SQLite.


Мне похуй что там есть или нет у Qt, обычную библиотеку как подключить
104 1732363
Мне надо реализовать многопоточное приложение на winapi. Есть один поток, и в этом потоке цикл. При нажатии кнопки цикл должен завершать итерацию и останавливаться, при повторном нажатии вновь запускаться. Как это реализовать?
105 1732369
>>732363
В общем тебе надо создать поток, а в нем сделать цикл. При нажатии кнопки цикл будешь завершать итерацию и останавливать его, а при повторном нажатии вновь запускать.
Удачи братан
106 1732371
>>732363

>на winapi.


Удачи
107 1732387
>>732363
Прям в цикле нельзя проверить, нажата кнопка или нет?
108 1732790
Анон, в последнее время часто применяю функциональный подход, вместо оопного. Нравится пиздец, супер удобные юнит-тесты, прекрасная переносимость кода и потенциально отличная распараллеливаемость со всякими фьючерсами и асинками (с которыми я пока не знаком). И мне кажется, что фп - единственно правильный способ программирования. Почему же тогда хаскель не захватил мир?
109 1732792
std::filesystem под виндой, если полез во всякое говно, типа $RECYCLE.BIN кидает исключение после того под капотом winapi выдал acess denied. У меня обработка исключений отключена. Есть ли какой-то платформонезависимый способ предварительно прочекать директорию прежде чем лезть в нее? directory_entry.status().permissions() для всех директорий выдает 511
110 1732793
>>732790
Толсто.
111 1732826
>>732790
Потому-что ни один вменямый человек не будет рисковать писать проекты на хаскелле
112 1732871
>>732790

>функциональный подход



На счёт этого согласен, очень удобно
изображение.png17 Кб, 343x929
113 1732880
Напишите функцию, которая обрезает пробелы в конце переданной ей строки. Функция должна быть написана в расчёте на работу с очень длинными строками с очень большим количеством пробелов, оптимизирована по количеству обращений к памяти. Сигнатура: void TrimRight( char *s );

Ананасы, выполнил такое задание, но оно неверно выполнено. Что не так, кроме того, что я немного поменял оглавление функции?
114 1732940
>>732880
Она не оптимизирована по количеству обращений к памяти, например.
Ты сначала идёшь по всей строке до конца, а потом идёшь обратно по пробелам. Это O(n+m), где m - количество пробелов. Если вся огромная входная строка состоит из пробелов, то ты дважды пройдёшься по огромной строке.
Можно идти по строке и при встрече с пробелом сохранять его адрес и обнулять его, если встретил непробельный символ. Это O(n). Потом скопировать в новую строку всё от начала до полученного указателя, если он не нулевой. Ну и не забыть про налл терминейшн.

Конкретно ошибок в коде не искал.
115 1732947
>>732792

> обработка исключений отключена


Включи
116 1732948
>>732940
Понял. Или запоминать адрес непробельного символа, если после него пробел и не менять его до тех пор, пока не найдётся следующий непробельный и всё заново.
117 1732965
>>732948
Есть разница записать 1000 раз или записать один? Хотя от данных зависит
118 1732976
>>732940
Функция возвращает void, поэтому думаю, что по заданию нужно просто занулить символ, следующий за последним не-пробелом.
119 1732977
>>732792
Если там по аналогии с бустом, то должны быть небросающие перегрузки, принимающие error_code.
120 1732991
>>732965
У меня идея, что в процессе смещения адреса в цикле записываем адрес непробельного символа и так до конца, если он так и не попался, то строка пустая.
>>732976
А в чём прикол такой херни? Понятно, что считывать будет до него, но это же херня. Или я что-то не понимаю?
121 1732995
>>732991
Посмотри на сигнатуру, тебе char ★ приходит, а не char const ★
122 1732998
>>732995
Что? Строка ещё и меняется в процессе что ли?
123 1733008
>>732998
Блядь. Шли нахуй людей с такими заданиями. Если они не могут четко сформулировать задачу, значит они идут нахуй.
124 1733013
>>733008
Лол, меня уже сегодня послали с таким решения, сюда пришёл узнать что не так с кодом, нуууу, теперь узнал, хотя тоже недоумевал с постановки задачи.
sss.png5 Кб, 1216x84
125 1733362
Как можно сделать эту хуйню менее всратой?
126 1733367
>>733008
>>733013
Лол. Эта задача по си, а не плюсам, но классические макакодебилы плюсовые как всегда тупят как дебилы, совершенно не разбирающиеся даже в сишных строках. Ну хуле, в крестах де объекты, лолкек, как в любой жабаскрипто/питоно дрисне, вот и интеллект того же уровня.
127 1733381
>>733367
Хуя порвался
128 1733404
>>733367
Это очевидно.

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



Чем отличается сишная строка от строки в С++?
129 1733478
Читал про 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
130 1733484
>>733478
Может скорость?
code.png4 Кб, 650x57
131 1733485
132 1733491
>>733484
Что "скорость"? Я разобрался, в чём преимущество. Да, в RB будет меньше вращений -> должно местами быстрее работать.

Я про том, что в туториалах и на википедии отдельным пунктом упоминают, что RB дерево будет занимать меньше места, чем АВЛ, но по факту так не делают, а если так делать, то это скорее всего убьёт всё преимущество по скорости.
133 1733492
>>733484

Скорость в наше время зависит от ублажения кеша, а не от битового кулхацкинга (им-то как раз наоборот можно перфоманс заткнуть, забив пайплайны и пролюбившись с кешем.)
134 1733494
>>733485
Если str способна принять rvalue, то можно же "суммирование" внутрь str засунуть, нет?
135 1733509
>>733494
Да, так ещё короче.
136 1733510
>>733491
Инфа же всё равно в каком нибудь char хранится, который побитно обрабатываеся, всё равно надо по байту выделять, наверное.

>>733492
И это хорошо, пердолинг никогда и ни к чему хорошему не приводит. Вчера поинтересовался хаскелем и понял, что лучше пожертвовать памятью с одинаковыми данными для каждого потока в программе, чем выгибаться от ментального напряжения в попытке сэкономить пару мегов инфы. Но хаскель по моему слишком куда-то далеко пошёл в своей идее функций.
137 1733525
>>733404

>Чем отличается сишная строка от строки в С++?


short string optimisation, крестовые строки не всегда выделяют память из кучи
кро
138 1733526
>>733525

>short string optimisation



Когда это бывает нужно? В нынешнее время экономить на памяти плохой тон, исключение разумеется всякие мелкие йобы.
139 1733529
>>733526
Это стандартная библиотечная фича, которая не знает, на чем ты там собрался запускать свою программу.
Плюс при этом меньше indirection, значит выше скорость.
140 1733537
>>733526
Особенно когда у тебя может быть несколько тысяч этих строк только с локализациями, ага, вообще плохой тон. Что ты несёшь, мартышка?
141 1733544
>>733526
>>733529
>>733537
Это экономия не на памяти, а на аллокации памяти. Нет смысла лезть в кучу за пятью байтами для строки "fuck", особенно учитывая хуевость стандартных аллокаторов.
142 1733555
>>733544
Thank you, captain, here, take this rock.
143 1733560
>>733555
Ты такой умный! Покажи свои работы!
144 1733580
>>733555
Если ты, анон, написал "экономить на памяти плохой тон", а указание на то, что это экономия на обращениях в кучу, называешь капитанством, то ты ультрадушный хуй.
145 1733581
>>733485
Добра
146 1733585
>>733510

>всё равно надо по байту выделять


Или просто протеггировать указатель. Не тратить же зря нижние биты.
147 1733596
>>733580
Это написал какой-то залетный питухонщик, душный кэп.
148 1733775
Двач, использую заголовки github.com/p-ranav/tabulate
Как мне их закинуть в директорию и от туда подключать (к примеру #include "3rd_party/tabulate/table.hpp")? Использую cmake.
Просто эти заголовки друг друга подключают по пути #include <tabulate/*.hpp>
Подскажите
149 1733818
>>733775
CXXFLAGS=-I/путь/перед/tabulate?
150 1733822
>>733775
или include_directories(/папка/перед/tabulate)
151 1733878
Когда в язык завезут хотя бы столько же сахарка, сколько в c#?
152 1733882
>>733878
Завези сам
https://stdcpp.ru/
153 1733899
>>733878
В C++50 можно будет
# include <c_sharp>
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
154 1733908
>>733878
Зачем? Писать приходится на обоих, и я чот не понимаю зачем в крестах больше сахара по-твоему.
155 1734001
>>733822
Благодарю
156 1734118
Где можно найти текст текущего стандарта? А то на сайте крестов за него предлагают платить. Чисто в ознакомительных целях хочу почитать
oa3EQ.png99 Кб, 713x295
158 1734353
Двач, как мне проитерироваться в контейнере от элемента до этого-же элемента через конец вектора? Есть решения какие? Не хочу большие велосипеды писать.
159 1734377
>>734353
Чем тебя пара циклов не устраивает?
160 1734379
>>734377
Зачем пара циклов?
161 1734394
>>734377
>>734379
>>734353
Цикл по модулю длины вектора с break если дошел до нужного элемента
162 1734396
>>734394

> модулю длины вектора


Что это?
163 1734415
>>734396
int i = x+1; (x индекс твоего крестика )
int size = vec.size();
while(i!=x){
//обрабатывай элементы
i+=1;
i=i%size;
}

Типо такого я думаю. Че надо сам подправишь
164 1734416
>>734415
Хотя мне кажется брать каждый раз остаток слишком дорого. Лучше действительно 2 цикла.
image.png22 Кб, 612x352
165 1734420
>>734353
>>734415
>>734416
Все делается в 1 цикл легко.
166 1734425
Сап, двуч. А поястите, есть ли на C++ хуйня типа maven или npm? Ну типа чтоб зависимости тырить из гитхаба или ещё откуда и компилить?

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

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

Если всё хуйня, то как бы поясните чё вы сами-то кроме лаб на крестах пишите? Вы не подумайте, я не стебусь, я просто жабист и вот вкатываюсь.
167 1734434
Так, бля, епты бля. Почему так, нахуй, обэма?? Почему при первом же логическом сложении 0 с 1, я получаю 49??? (C++)
168 1734437
>>734425

> есть ли на C++ хуйня типа maven или npm?


Vcpkg, conan.

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


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

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


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

> Если всё хуйня, то как бы поясните чё вы сами-то кроме лаб на крестах пишите?


Открой hh, вбей кресты и почитай, что пишут, чем придётся заниматься. Что угодно, кроме веба.
169 1734439
>>734420
Спасибо!
170 1734455
>>734437

> Vcpkg, conan.



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

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



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

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



https://hh.ru/vacancy/37314205

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

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



А почему? Язык бы мог джаву порвать...
code.png7 Кб, 432x110
171 1734472
>>734420
Но зачем, если двумя циклами гораздо понятнее.
172 1734474
>>734455

> или сделано для галочки?


Да, но кто-то использует.

> https://hh.ru/vacancy/37314205


Там, похоже, не классический бекенд, отдающий html, а очереди и вебсокеты. Этим заниматься на плюсах не так больно.

> А почему? Язык бы мог джаву порвать...


Небезопасный и сложноват. Конкретно джаве конкуренты, наверное, только шарп и пщ. Бизнесу нужна проверенная временем и устойчивая к ошибкам кодера технология, которую может изучить куча разрабов, чтобы брать количеством.
173 1734477
>>734353
юзай индексирование по модулю
в плюсах не сильно шарю, но чёт подобное

int el_idx = arr.index(your_element);
for(int i = 0; i < len(arr); i++) {
arr[(i + el_idx) % len(arr)] ...
}
174 1734480
>>734434
У data какой тип?
175 1734482
>>734472
Да, это пожалуй лучше будет т.к. это в отличии от >>734420 не уходит в бесконечный цикл если i = v.begin() + 0;
Поэтому ещё большее спасибо!
176 1734484
>>734480
uint8_t, но я пробовал приводить вручную к size_t, не помогло
177 1734487
>>734474

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



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

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



Ну хуй знает, завезли же smart-ptr. Или не безопасный это больше про еблю с потоками? Ну это да, есть немного. Сложнее будет. А так язык как язык. Не знаю чем прям он такой сложный. По-моему весь спринговысер разбирать не легче.
178 1734488
>>734482
Вот бы только ещё в лямбду индекс передавать.
179 1734499
>>734487

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


Имеет смысл, только если будут интенсивные расчёты/вычисления. Судя по словам "реалтайм" и "крутая математика", там так оно и есть. В остальном толку мало, в обычном круде самое долгое - ждать ответ на запрос к базе, и стльного буста не было бы, что джава, что ассемблер.

> smart-ptr


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

> весь спринговысер разбирать не легче


В спринге ты хоть разбираешь только то, что нужно. Учишь десяток аннотаций, ставишь их в правильных местах - и вот тебе готовое приложение. В плюсах тебе одни только шаблоны будут сниться в кошмарах, что уж UB.
180 1734501
>>734434
бамп
181 1734507
>>734501
Бля, я даун, я понял. Из-за того, что uint8_t это по сути unsigned char, то оператор вывода выводит data, как символ, а там как раз '1', а это 49 в ascii. Короче, попал в свою же ловушку жокира.
182 1734510
>>734499

>крутая математика



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

> реалтайм



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

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



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

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



Ну темплейты это слишком сильное колдунство иногда, это да.
183 1734513
>>734510

> не говорил


Там в вакансии упоминается, имею в виду.

> Так они же сами должны уже мемори менеджить?


Менеджат, да. Но в местах вызова можно проебаться. Это всё равно нужно постоянно держать в голове вместо джавовского "я создал объект, передал куда-то ссылки, а дальше пусть GC разбирается".
184 1734515
>>734507
Вот поэтому лучше юзать printf
185 1734519
>>734515
Тогда лучше заставить сделать отдельные *int8_t, а не алиас на char.
186 1734658
>>734507
И как с этим бороться?
187 1734660
Создал enum, можно ли несколько значений из enum присвоить переменной? Подскажите.
188 1734661
>>734658
Быть внимательным. Я же смотрел на вывод, видел там 1 и не понимал нихуя, а по факту это был символ '1' со значением 49.
189 1734666
>>734660
Одновременно? Нет. Храни список значений в каком-нибудь векторе.
190 1734675
>>734660
Флаги, как деды завещали.

enum {
A = 1,
B = 2,
C = 4,
D = 8,
};
...
int v = A | C | D;
...
if (v & A) { ... }
if (v & D) { ... }
191 1734685
>>734675
Выглядит как UB.
192 1734704
>>734685
схуяли?
Обоснуй.
193 1734746
>>734661
Не, а если я хочу вывести восьмибитовый инт как число? Кастовать к инту? А это не затратно?
194 1734752
>>734685
Нет
195 1734764
>>734474

> Да, но кто-то использует.


А ты как собираешь зависимости? Неужели проще вручную пердолить, а не vcpkg install mylib?
196 1734779
Как в крестах правильно форматировать строки?
stringstream выглядит как говно, особенно если формат строки сложный. Склеивать строки c std::to_string ещё более неудобно. Нет какого-то стандартного sprintf, чтобы вывод был сразу в std::string без ёбли с буферами?
197 1734783
>>734779
https://en.cppreference.com/w/cpp/utility/format/format который уже ДОЛЖЕН быть, но вроде пока нет в стандартной либе. Поэтому приходится вручную подключать https://github.com/fmtlib/fmt
198 1734793
>>734779
Напиши свой враппер вокруг sprintf который возвращает std::string и используй атрибуты компилятора для валидации строки формата.
199 1734797
Сап господам программистам. Вопрос: зачем нужен указатель this->, какие функции он выполняет? И да, я совсем долбоеб нуб и только начал изучать ооп
200 1734839
>>734764
На линуксе обычно хватает make-файлов или вообще build.sh, там системный менеджер пакетов сам тащит то, что нужно.
На винде cmake, архивы с либами качаю вручную. Неудобно, но это делается один раз.
201 1734857
>>734839

>На линуксе обычно хватает make-файлов или вообще build.sh, там системный менеджер пакетов сам тащит то, что нужно.


Детектор говноеда красноглазого
202 1734873
>>734857

> Красноглазого


Линукс у меня только в виде WSL и докера. Но говноед я не поэтому.
203 1734875
>>734134
Я знаю об этом. Это же draft
204 1734895
>>734797
В явном виде пишется только в dependent коде из-за ебанутых правил инстанцирования шаблонов. А так - указатель как указатель
205 1734949
>>734783

>https://github.com/fmtlib/fmt


Похоже это лучший вариант, спасибо.

>>734793

>Напиши свой враппер вокруг sprintf


Ну я так и делал через snprintf с локальным буфером, просто надоело ощущение велосипеда.
206 1734952
>>734474

>от 210 000 до 260 000



И тут я понял, что по меркам ДС это не так много, ибо квартира будет стоить рядом все 15 000 000, и даже если ужаться и отдавать по 200 000, то потребуется шесть лет и три месяца, а гарантии такой ЗП как и существования конторы нет.
207 1734960
Аноны, а есть у кого-нибудь итт опыт создания приложений реального времени? Когда например какая-нибудь операция должна выполниться за время T, не дольше? Есть ли какие-нибудь либы, или паттерны проектирования?
208 1734997
>>734952
Можно начать с малого, устроиться на подобную работу, через несколько лет питания исключительно гречкой купить за 5 лямов где-нибудь за МКАДом, чтобы добираться до работы за 2 часа. Затем поднакопить ещё сколько-то, взять новую и т.д, пока внезапно не обнаружишь, что тебе уже 50 лет, здоровье посажено, тяночки нет и никогда не было.
209 1735003
Тут есть, кто пишет и дебажит в vscode? Вас устраивает, как работает дебаг? Какой дебаг используете? Вас не смущает то, что stl коллекции нельзя просматривать полностью в удобном виде, а только добавлять каждый интересующий элемент? А это дрочево бесконечное по всяким библиотечным аллокаторам, когда хочешь просто зайти в свою функцию? Или это у меня что-то не так настроено/работает?
210 1735006
>>735003
Алсо, что скажете о clion? Думаю, может туда перейти... Но мне нравились все эти редакторы простенькие типа sublime text, vscode, только постоянно в них проблемы какие-то с удобством использования gui дебага у меня. VS studio вообще не нравится, тяжелая, открывается годами. Если clion окажется таким же тяжеловесом медленным, то скорее всего продолжу жрать кактус.

Вообще не понимаю людей, топящих за vim/emacs. Неужели там действительно все так удобно, включая дебаг? А автодополнение там есть вообще?
211 1735012
Если я читаю из файла 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 (ХУЙНЯ)
212 1735017
Как в 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 оператор во всех классах.
sage 213 1735038
>>728337
Как по мне только усложняет код. Буквально на днях написал похожий интерфейс для аналогичный фичи на сях. Зачем мне в С++ такое? Даунгрейд ас ис.
sage 214 1735041
>>735012
std::bit_cast<float>(var)
215 1735043
>>735041
А для ++14 есть что-нибудь?
216 1735046
>>735043
std::memcpy(blah, blah, sizeof(float))
217 1735048
>>735046
Спасибо
218 1735049
>>735048
Еще можно вот так auto floatVal = ⛧(float⛧)(&charArr[0]);
219 1735051
>>735017

> что это за bool, откуда он берётся


Это и есть тот самый user defined параметр.
220 1735055
>>734960
Формально, игоры это такой софт реалтайм. что не мешает писать их на джаве
Нужен как минимум аллокатор с гарантированым временем худшего случая. Либо по возможности обходиться без динамической памяти.
221 1735069
>>735055
Игоры это не реалтайм. Если комп не успевает выдавать много фпс, то он просто выдаёт меньше, вот и всё.
222 1735070
>>735069
А что тогда есть реалтайм?
223 1735071
чё почитать если я ВООБЩЕ ничего не знаю и не слышал про С++ и программирование?
224 1735072
>>735071
накопал
учебник П.А.Орленко, Евдокимов П.В. - C++ на примерах. Практика, практика и только практика [2019]
нормально епта?
225 1735074
>>735072
>>735071
Cори, не увидел шапку, не отвечайте мне, забудьте обо мне.
226 1735079
>>735070
Может всякие медицинские приборы, аэс.
227 1735085
>>735069
Эээ, ну и что из этого следует? Риалтайм — это про константное время выполнения, а не про твои маняфантазии. Если на одной железке фпс в одной сцене одинаковый — то это уже риалтайм.

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

Пример отсутствия риалтайма — это разработчики компиляторов и иде, уже середина 2020, а модулей как не было так и нет.
228 1735113
>>735070
1) это когда ОС (если она есть) даёт гарантию, что ты точно получишь сколько-то процессорного времени (и других ресурсов). Если есть многозадачность, то в правилах переключения между задачами нет никакого рандома и эвристики, всё документировано.
2) и ещё это когда ты сам используешь алгоритмы, которые занимают предсказуемое время, и не имеют никаких "скрытых" просадок. Под такими просадками я имею ввиду всякие аллокаторы и прочие разновидности функций типа ДайЧтоНибудь(), которые могут дать быстро, а могут не найти чего-то и начать грузить, искать где-то ещё, и т.д.
изображение.png23 Кб, 1002x425
229 1735117
>>735051

>user defined параметр


Какой у него смысл? Я нигде его после же не указываю, верно?
Если это просто сигнатура для компилятора как с префиксным и постфиксным ++, то по идее там бы явно было написано про bool. Причём при наличии обоих вариантов оно выбирает в пользу void✱ (его я случайно подобрал).
230 1735131
>>735049
Нет, нельзя. Это UB.
231 1735137
>>735131
А memcpy не UB тогда?
232 1735139
>>735070
Есть софт риалтайм и хард риалтам.
Хард риалтайм - это когда точно известно, что операции выполняются за столько-то времени и не больше(меньше), и кушают столько то ресурсов и не больше(меньше). Какая-то погрешность может быть заложена, но она обычно весьма мала и тоже точно определена. Обычно хард риалтайм на заводском оборудовании, в военке, авиации, мед оборудовании и так далее.

Софт риалтайм это когда тоже что-то выполняется в реальном времени, но нет требований к высокой точности, например, внезапный проход GC не приведёт к аварии/смерти/прочим фейлам, а просто юзер увидит лаг, или даже не увидит.
233 1735140
>>735117

> Какой у него смысл? Я нигде его после же не указываю, верно?


У него смысл быть user defined параметром. Ты эти параметры явно указываешь в скобках: new(myparam)

> Причём при наличии обоих вариантов оно выбирает в пользу void✱ (его я случайно подобрал).


Ты в свой placement new передаёшь указатель, ясное дело, что void ★ лучшая альтернатива bool. В третьем случае у тебя не собирается, потому что указатель к инту так просто не приведёшь.
234 1735147
>>735137
Да, memcpy не уб. Рекомендуется к просмотру https://www.youtube.com/watch?v=_qzMpk-22cc
235 1735345
>>735131
Можешь объяснить почему ub без просмотра видео на час?
Фигня с выравниванием, потому что компилятор пытыется считать число как выровненное, но никаких гарантий этого у него нет?
У меня не получается сломать: https://ideone.com/ika5RK

>>735012
Можешь более полный код показать? Я создал файл с одним флоатом, и у меня всё корректно считывает даже по байтам. И если в начале дописать какие-то байты, то тоже нормально работает.
236 1735352
>>735345
Самый страшный undefined behavior - это тот, который работает так, как ты думаешь.
237 1735532
>>735352
Если этот "UB" работает везде как и написано, то получается, что это и не UB вовсе...
238 1735540
>>735532
Бля будешь, что раз в этом тривиальном случае так совпало, что работает, то никогда в более сложном кейсе не выстрелит?
239 1735552
>>735532
UB это когда в стандарте не прописано,не?
Все компиляторы могут сделать его результат одинаковым, но можно написать компилятор у которого результат будет другой и компилятор будет прав а погромист не прав, не? мимо проходил
240 1735555
>>735552
Да. Более того, существующие компиляторы могут изменить своё поведение в будущем, и те, кто думал, что можно хоть иногда полагаться на UB, пососут больших жилистых хуйцов.
241 1735575
>>728462
итераторы абстрагируют от реализации контейнера, а что твои ranges?
242 1735581
>>735575
А они не абстрагируют от реализации контейнера. Как и исключения, модули, темплейты, смартпоинтеры, ссылки, поддержка ООП, небо, аллах. Кто тебе сказал, что задача ranges в том, чтобы полностью вытеснить итераторы?
243 1735673
>>735345

> Можешь объяснить почему ub без просмотра видео на час?


Потому что области в памяти перекрываются. Например кто то запишет float в байты с 0 по 3й, а другой считает с байтов 2 по 5й. И кое что может пойти по пизде, из за предустановки что второй флоат никем не мог поменяться.
244 1735675
>>728423
Только потом в этих форах ошибки off by 1 и переполнения буферов годами отлавливать.
245 1735685
>>735673
Непонятное объяснение. Один записал в одно место, а другой считал это из другого, и закономерно получил херню. Вполне себе defined бехавиор.
246 1735688
>>735685
Компилятор может выкинуть чтение, если считает что в то место никто не писал. Думаю так.
float f=blabla[0..3];
blabla[2..5] = 3.1415;
f=blabla[0..3] //выкинуто, компилер считает что в f уже считано
247 1735690
>>735345
Я заметил что ты используешь слово выравнивание. Возможно у тебя произошла путаница с aligning? Aliasing это скорее "псевдониминг". Если совсем просто, то он означает, что в каждом участке памяти находится только одна переменная. Можно сказать, что этому участку памяти дан псевдоним с именем этой переменной. Если компилятор видит что области двух переменных перекрываются, он может решить да ну нахер такого не может быть это UB ) И вернуть просто 1. Можешь нагуглить это реальный пример.
1593315908849.png226 Кб, 1080x1920
248 1735691
>>735690
Сорри не понял что за слово в спамлисте, вторая половина ответа !картинкой
249 1735734
>>735690
Нет, я именно про выравнивание. Предположил, что на каких-то архитектурах чтение невыровненного флоата сильно медленнее, и потому компилятор использует предположение, что указатели выровненные (что верное в 99% случаев), чтобы программы не работали в два раза медленнее.
Первый раз за десять лет самообучения слышу что есть какая-то проблема с тем, что в одной и той же памяти две переменные.

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

Единственная известная мне "ошибка" (я не знаю на сколько это ub - случайно нашёл когда пытался понять для чего нужен const_cast) стабильно возникает с const - то что компилятор излишне сильно предполагает что const сохраняет значения. Вот эта: https://ideone.com/pFSkKv
250 1735735
>>735734

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


Мужик в видео >>735147 сказал что на ARM крашится.
251 1735743
>>735688
язык для байтоебства
@
нельзя ебать байты
252 1735745
>>735743
собственно, даже в видео тот чел сказал, что одно из UB там высосано из пальца, и надо поменять стандарт, чтобы это не было UB
253 1735746
Использую Qt Creator, как мне один проект открыть в разных гит ветках что-бы сравниваясь со старой веткой переносить изменения в новую?
254 1735777
>>735746
Можно открыть проект в гитлабе и туда подглядывать. Состояние репа на любой коммит.
255 1735785
>>735777
Грузить в онлайн я ничего не буду.
изображение.png55 Кб, 1741x373
256 1735820
>>735746
Прям открыть скорее всего никак (только если скопировать проект и открыть сразу две), но при смене ветки если ты настроил gui-утилиту для merge, то ты можешь просматривать и вручную сливать изменения.

Ещё можно вот так, переходишь на нужно ветку, правой клавишей кликаешь по другой и нажимаешь сравнить - и потом можно райткликом применять отдельные строки - но я не пробовал, не знаю насколько это будет удобно.
257 1735821
>>735012
Тут кто-то вроде писал, что плоские использовать нет смысла, что они типа из двойных преобразуются в итоге.
258 1735824
>>735820

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


Неудобно

>только если скопировать проект и открыть сразу две


Походу единственный приемлимый вариант
259 1735833
Простите, но я не могу молчать, сегодня впервые я осилил сложную задачу на лит коде, это было не просто, но я смог, теперь я хакер! ДА!
nyfaas41f4x41.png933 Кб, 3200x1800
260 1735862
>>735833

>теперь я хакер!

изображение.png10 Кб, 537x250
261 1735863
Радость была не долгой.

Почему так объявлять шаблон неверно, хотя в VS 2010 всё без бэ работает?
262 1735877
>>735863
struct кто за тебя ставить будет?
263 1735880
>>735877
Благодарю, а про специализацию в инете хрен найдёшь чего, или как там это называется, эх.
264 1735881
>>735734
union для экономии памяти, когда ты точно знаешь, что у тебя или int, или float. Записал int полчитал int - ок. Записал float прочитал float - тоже ок. Записал float прочитал int - UB.

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


Ну, теперь знаешь.
265 1736011
Подождите, то есть это тоже UB?
union
{
struct { int ★ a; int ★ b; } s;
int v[2];
};
266 1736013
>>736011
Массив указателей разумеется
изображение.png14 Кб, 878x305
267 1736018
Что это такое? Зачем это и почему это?
268 1736029
Почти любые попытки обойти типизацию и получить доступ к напрямую к битам нецелочисленных типов - это UB.
269 1736043
Пытаюсь получить указатель на метод класса, код из методички дает эту ошибку. Что за хуйня как фиксить?
270 1736044
>>736018
Address Sanitizer, написано же. Чтобы искать выход за границы массива и всякие преколы в коде от любителей высрать вот такое >>736011
На самом деле если не понимаешь что это и зачам — лучше даже не смотри в эту сторону, рано ещё.

>>736029
Да не почти, все попытки наебать систему типов это UB, просто потому что это обход вообще всего чего можно.
271 1736045
>>736043
Просит передать адрес некоторого значения вроде
272 1736048
Почему в qt для передачи типа сигналом, этот тип сначала надо зарегистрировать? Например DWORD
273 1736049
>>736044
Понятно, а то я думал, что там выделяет только определённый объём памяти и я малость перестарался. Интересно, что VS на такое жалуется только тогда, когда ты лезешь в память чужого процесса, иначе молча принимает происходящее.
274 1736055
>>736049
Ну так ты действительно перестарался, засунув свои ручонки в чужое адресное пространство, но это лишб один из кейсов.

VS тут вообще не при чём, просто видимо они используют вот эту либу в дебажных билдах https://github.com/google/sanitizers/wiki/AddressSanitizer — там же есть и полный список приколов которые она ловит с примерами.
275 1736059
>>736055
Вот это в тему
276 1736101
>>736011
Это может быть и не ub, не помню. Вот если бы там были разные типы, int[] и short, тогда было бы. Но в случае union только при доступе по другому типу, не тому который ты в него поместил.
277 1736104
>>736043
Ты точно тредом не ошибся? void*, #define, больше на Си похоже.
278 1736106
>>736104

> void*


Будто в крестах придумали что-то другое.
279 1736111
>>736106
Лямбды, функторы.
280 1736135
У меня вопрос по pure c
Как сделать так чтобы моя порога выводила LF вместо CRLF?
281 1736139
>>736135
Выводить \n вместо \r\n. Если не работает, ты что-то делаешь не так, и сишка тут не при чём.
282 1736146
>>736139
Мне надо чтобы оно и на винде работало, а там оно автоматически переводит.
283 1736153
Читаю книгу "Программирование: принципы и практика с использованием C++" И там первый же пример с hello world не совсем рабочий, стоит ли вообще изучать эту книгу? Или есть что-то более стоящее?
284 1736158
>>736153
Я Шилда читал
285 1736161
>>736146
Куда пишешь, в файл? Если да, открывай как бинарный - "wb".
286 1736162
>>736158
Считаешь ли ты данную книгу хорошим путеводителем?
287 1736167
>>736153
Там все рабочее, просто автор решил "упростить" вынеся в файл std_lib_facilities.h всякий бойлерплейт.
288 1736171
>>736162
Некоторые примеры использую. Но думаю, что верный путь такой - Керниган Ритчи, Страуструп, и что-то дальше.
289 1736173
>>736162
Я другой, у Шилдта чистал только про чистый си, и это больше на справочник было похоже - подходит если ты с другого не слишком высокоуровневого языка перекатываешься, но как справочник оно было очень хорошо - прям за час или два можно всё прочитать и вкатится. Не думаю что в книге по си++ что-то поменялось, но не читал.
По с++ мне Прата понравился, прям на порядок лучше страуса на полторы тысячи страниц, где дыры в информации и нет ответов на закономерные вопросы.
290 1736186
>>736167

> упростить


М-да. С таким подходом ему лучше книжки по питону и JS писать.
291 1736205
>>736186
Дело в том, что он автор языка. Запутался наверное, сам то себе костылей уже написал и привык к ним.
292 1736224
>>736205
Много раз уже говорилось, что этот автор языка умеет писать книги так себе.
293 1736227
>>736224
Да и с языками не очень зашло
294 1736321
>>736029
Да и целочисленных тоже
295 1736327
>>735345

>Можешь объяснить почему ub без просмотра видео на час?


Берёшь стандарт и читаешь релевантные параграфы. Там всё просто в том смысле, что про UB сказано явно.
296 1736331
>>735147

>Да, memcpy не уб


И memcpy — UB.
297 1736333
>>735345

>Можешь объяснить почему ub без просмотра видео на час?


Видео вообще не при чём. Доступ к элементам массива char через glvalue с типом float это нарушение strict aliasing. А в видео про более тонкие вещи.
298 1736350
>>736331
Неудивительно. В С/С++ даже умножение интов UB.
299 1736369
>>736350
Это везде вроде так.
300 1736403
>>735552
Не совсем.
То, о чем ты говоришь - это unspecified behaviour, т.е. зависящее от разработчиков компилятора, но всегда одинаково.
А undefined behaviour - это когда на одном и том же компиляторе сегодня так, а завтра по-другому.
301 1736407
>>736333
Ну там есть интересный пример того насколько бывают компиляторы пидоры. https://godbolt.org/z/cpFd-T msvc и clang выдают адекватный и ожидаемый вывод строки Test1 (объект t1 был инициализирован конструктором Test1, который в свою очередь задал виртуальную таблицу класса Test1). И только gсс, компилятор пидор, начинает выебыватся и кричать "РЯЯЯЯЯ UB" не выдавая вообще нихуя.
302 1736410
>>736407
Кем ожидаемый?
303 1736413
>>736410
Мной
304 1736414
Анончики, вкатываюсь в 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
);
305 1736417
>>736413
Ты перепутал C++ и "ассемблер с классами"
306 1736419
>>736414
это все параша чтобы беспонтовое окошко появилось. Руками окошки через винапи нынче рисуют только пенсионеры и дебилы
307 1736420
>>736161
Мне проще через трубы.
308 1736423
>>736419
А как иначе нужно делать?
309 1736424
>>736414
Ну, класс в смысле категория. Есть класс окон-кнопок, окон-чекбоксов, окон-полей-ввода и так далее. Винда не знает что будет делать окно твоей программы, поэтому тебе надо зарегистрироваться в системе.
310 1736425
>>736423
А тебе для чего?
311 1736427
>>736425
Я хочу работать с виндой и придти на работу и такой ебать, WinAPI знаю.
312 1736429
>>736403
В чем указанное различие?
Зависящее от компилятора == не прописано в стандарте, а значит может измениться в новой версии компилятора, так что ждать там одно и то же поведение на разных версиях глупо. UB в одном и том же компиляторе скорее асего ведет себя одинаково, так в чем отоичие unspecified от undefinef?
Если ты про реализацию каких то стандартных алгоритмов или про тот же vtable(его нет в стандарте), то не понимпюч при чем тут это.
313 1736436
>>736423
qt, WinRT, Сишарп и прочее.

Окошечки - это лишь небольшая часть винапи.
314 1736439
>>736436
Я понимаю. Вот я и хочу овладеть WinAPI целоиком как API, а не как штуковиной для рисования окошечек.
315 1736441
>>736439
целиком

>быстрофикс

316 1736500
>>736331
А вот и нет, memcpy как раз не ub. И bit_cast это обертка над memcpy. Видео выше я уже скинул, там ответ почему и как.
317 1736506
Как добавить в программу параметры командной строки?
Многие gnu программы принимают их по одному и тому же принципу -f par --foobar par. Это всё пишется вручную или есть какая-то либа, которая всё это облегчает?
318 1736509
>>736500
memcpy тоже может быть ub в каких то случаях
319 1736511
320 1736513
>>736506
В сишке getopt стандартный парсер командной строки. В крестах куча сторонних библиотек, boost::program_options, cxxopts итп
321 1736528
>>736500

>А вот и нет, memcpy как раз не ub


Ну тащи определение поведения что будет если я поверх объекта какого-то типа скопирую байтики, которые я взял с потолка с какого-то левого файла
322 1736530
>>736407

>И только gсс, компилятор пидор, начинает выебыватся и кричать "РЯЯЯЯЯ UB" не выдавая вообще нихуя.


Действительно пидор. Нет бы файлы в хомяке тебе затереть рандомом, он всего лишь нихуя не делает.
323 1736544
Просто игнорируйте конченных долбоёбов, не согласных с тем, что допускание UB - абсолютное зло. И они сами уйдут.
324 1736546
>>736544
i++ + i++
325 1736577
>>736544
union
{
struct
{
float x, y, z;
};
float values[3];
}

UB, но работает и будет работать во всех компиляторах.
326 1736604
>>736577
Так почему уб? Я пару постов назад спрашивал - никто не ответил
327 1736624
>>736544
У тебя двусмысленно получилось. Долбоебы - те кто пишут код с UB, или долбоебы, кто допустили само существование UB в стандарте.
328 1736628
>>736624
Те, кто пишет кол с UB, причём зная об этом.
329 1736629
>>736628
А, такое согласен. Мудаки какие-то.
330 1736650
>>736624
UB было необходимостью для Си, а точнее UNIX - без него она не была бы переносимой.
331 1736749
>>736577
ОБОСНУЙ. Я вижу 100% корректное определение.
332 1736770
>>736429
Да я вроде понятно написал, давай ещё подробнее.
Unspecified behaviour действительно ведёт себя одинаково, реализация зависит от разработчика. Как, например, некоторые стандартные алгоритмы, где порядок обработки не всегда регламентируется стандартом.

Undefined behaviour никогда не ведёт себя одинаково, а зависит от положения звезд, планет, Аллаха, оперативной памяти, секса соседа с женой и непредсказуем.
То, что ты скомпилил и оно ведёт себя так, как ты ожидаешь - не значит, что при следующем запуске программы или после следующей компиляции будет вести себя так же.
Самый простой пример:
int* a = new int[2];
std::cout << a[100500];
что не отменяет того, что ты можешь десять лет подряд тестить UB код и получать одно и то же.
333 1736781
Есть ли работа вообще в области написании нативных C++ модулей для node.js. Меня что-то очень заинтересовала тема. Насколько это вообще живая хуйня. Делает ли кто?
334 1736823
>>736419
Тоже это всегда выбешивало
335 1736829
>>736781
Ну всякие нетфликсы юзающие ноду в проде под хуйлоадом точно делают, на равне с хуйлоад-питонистами и всеми остальными.
336 1736856
>>736829

Я просто сижу пишу на C++ приложение под Windows для отечественной компании и хочу в web highload. Какие подводные вообще? Как делать?
337 1736860
>>736856
Идти в яндекс, и писать хуйлоад на крестах
338 1736862
>>736860

В ШАД не хочу идти. Не примут боюсь
339 1736868
>>736862
А зачем тебе а шад? Ты же байтойобом идёшь работать, а не датасатанистом. Хотя алгоритмы для собеса выдрочить придётся. У нас хуйлоада на плюсах кроме хуяндекса я лично не помню (видел вакансии от авито и баду, но то такое).
340 1736874
>>736868

>алгоритмы для собеса выдрочить придётся


Но их же дохуище просто. Невозможно знать их все и помнить. Я только поэтому и не хочу идти ни на какие собесы, боюсь забыть где надо инкрементировать j, а где декрементировать k, епта... Вообще, кто придумывает эти собесы ебанутые? На практике всегда есть возможность найти нужный алгоритм и по гайду написать. Имхо, если на помидора идешь и от тебя требуют опыт, достаточно только знать примерное название алгоритма, который подошел бы для решения задачи.
мимо
341 1736881
>>736868

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



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

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



А чё ты пишешь?
342 1736884
bool operator==(const MyStructure& other) const {return "Двач, как по быстрому сравнить все переменные this со всеми переменными other?"}
343 1736891
>>736868
Кстати да, весь хуйлоад нынче на ГОвне.
image.png1 Кб, 165x137
344 1736893
>>736884
MEMCMP
345 1736894
347 1736900
>>736874
Ну, там обычно смотрят на параметры как ты это решаешь, иногда не дают тебе всех данных чтобы посмотреть насколько ты хикка и ссышь открыть рот и тд. Если не знаешь тему — так и говори, и прямо говори с чем хорошо знаком, это же не егэ, результат энивэй будет зависеть от общего впечатления а не от баллов. Я сам в таком говне с обоих сторон участвовал, хз что в яндексе, но всякого бреда уровня верчения деревьев на досках лично я не видал.

>>736881

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


Ну тут уж либо ты не ссышь и ходишь по собесам, либо тебе рано или поздно дадут пососать по з/п.

>А чё ты пишешь?


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

>>736891
На го по ощущениям пишут скорее там, где пыха/нода/итд жирные, а жаву лень разворачивать, а не в прям ХУЙЛОАДЕ.
348 1736937
На чем пишут текстовые редакторы? Используют ли для этого графические апи типа opengl или directx? Если нет, то что используют? Хочу написать свой hex редактор, ибо нигде, блядь, вообще нигде, не смог найти нормальный, разве что hxd больше всех понравился, но и там не все идеально для меня. Так же, наверное, не хочу использовать никакие готовые формы типа TextBox и т.п. Как ни странно, инфы я найти на эту тему не смог особо... Ну и сама архитектура редактора интересует велосипедить особо не хочется. В качестве хранимого буфера могу представить какой-нибудь стек. Ну, а для поиска по файлу - обычный поиск подстрок.
349 1736943
Перекатывать будем?
350 1736947
>>736937

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


На как раз Direct2D или там OpenGL, Рисуют внутри консоли, без виндового API

>>736943
ноп
351 1736956
>>736937

>На чем пишут текстовые редакторы?


На чём удобнее конкретной команде/программисту.

>Используют ли для этого графические апи типа opengl или directx?


Ты ебанёшься на шейдерах рисовать гуи, это оверкил.

>Если нет, то что используют?


Гуи фреймворки или пилят свой (если писали игру и дописывают что-то к ней — то на своём слою абстракций или берут какую нибудь готовую либу вроде саблайма на skia).

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


5 минут гугла и вот такой вот рещультат
https://chromium.googlesource.com/skia/+/e73aa7573279cda200b80c1a858ae00762a5516b/experimental/editor
352 1736960
>>736956

>Ты ебанёшься на шейдерах рисовать гуи, это оверкил.



Но ведь уже есть WPF
353 1736961
>>736937
Со стороны геймдева я бы взял что-то типа freetype для вывода букв, и sdl для обертки над окошками. А может, даже взял бы что-то вроде litehtml для рендера, собственно, html. А то, что ты ищешь, называется text rendering component, и одна из самых распространенных, это Scintilla
354 1736963
>>736960
Ну есть и есть, сказать-то ты что хотел? Свой гуй фреймворк строить с самого низкого уровня чтобы показывать массив битиков — это оверкил.
355 1737067
>>736960
Отстой, qml гораздо удобнее. Пользоваться приходится обоими.
356 1737077
Насколько часто ща требуется Qt?

Что вообще ща для интерфейсов в моде?
357 1737078
>>737077

>Что вообще ща для интерфейсов в моде?


Джаваскрипт.
358 1737080
>>737078
То есть даже для какого-нибудь потошопа тоже?
359 1737089
>>735006
Clion по-моему медленнее VS
360 1737099
>>736436
А builder'ом сейчас пользуются? Там ведь не чистый винапи вроде
361 1737110
Двач, перегружаю operator<< для вывода класса в консоль, но что если мой класс содержит std::wstring? Как этот тип строк выводить в std::ostream?
362 1737129
>>737110
А, всё, существует std::wostream.
363 1737133
>>737099
сейчас гуйню на С++ впринципе делают только немцы, дрочащие на кутя, и эстеты. Очень рекомендую освоить шарпы всем крестобогам, отличное дополнение к крестам
Screenshot2020-06-09-19-57-18-571com.android.chrome.jpg435 Кб, 1080x2340
364 1737134
>>737080
Ну смотри что на qt, что какой нибудь пикрелейтед, кишки на крестах, интерфейс на жс.
365 1737138
>>737133
Шарп довольно удобный, но ксамл говно сраное.
366 1737139
>>737134
Пользуясь случаем спрошу.

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

Типа пишется некий графический интерфейс, по задействованию элементов которого запускаются некие функции, написанные на С++?
367 1737140
>>737133
И мне оч понравился т4, встроенное ПО для генерации кода это супер.
368 1737148
>>737139
Там qml, ты пишешь очень простой код с вставками на жс, оно дёргает функции на крестах, которые ты специально объявил на подъязыке кюта. Звучит странно но это реально удобно.
И все это можно рисовать мышкой, и добавлять скрипты чтобы автоматом переводить из формата тз в прогу, я очень апнул скорость программирования как допер.
369 1737157
>>737148
Про объявление я кажется понял, ибо недавно видел пример на хабре.

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

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

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

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

Возможно ли такое забабахать на qml?
370 1737161
>>737157
Не, qml это просто gui в твоём случае, почти. Разрешение экрана будет автоматом, а вот остальное... Конфиг наверное будет искаропки, даже от ОС не зависит, может быть в файле, может в реестре, и тебе не важно где.
371 1737162
>>737157
Хотя в qml есть state machine, я хз насколько тебе подойдёт.
372 1737164
>>737162
Я про это и говорю. Значит вполне сойдёт.

Я сам осилил сделать интерфейс с кнопками и текстом, но это малость напрягает, ибо больше по механике хочется напрячься.
373 1737301
>>736528
>>736509
Долбаебы, кейс то выше смотрите. В этом случае memcpy подтвержденный стандартом метод решения данной проблемы.
374 1737341
>>737080
У меня при открытии лайтрума вызывается нвидия оверлей, будто драйвер чекает, что это типа игры
375 1737342
>>737133
А как же рест и жаваскрипт?
376 1737350
>>737133
This. И C++/CLI есть, если извращенец, и P/Invoke, если не в падлу все интерфейсы два раза переписывать.
377 1737382
>>737342
Раст параша. /thread
378 1737388
>>737382
Безопасный язык без GC, ебущий кресты по бенчмаркам, вершина компьютерных технологий и будущее системного программирования - говно? Ох лол.
379 1737391
>>737301

>В этом случае memcpy подтвержденный стандартом метод решения данной проблемы.


Так значит тебе не составит труда притащить определение поведения
380 1737397
>>737350

>C++/CLI


Как на нем сейчас пишут, руками от и до? Убрали ведь шаблон windows forms из VS для c++ после 2010 версии что ли.
381 1737422
>>737388
О, растошизик в тред вернулся, с возвращением.
382 1737423
>>737422
Аргументы будут или от бессилия нечего сказать?
383 1737425
>>737388
Будет подмножеством C++30
384 1737438
>>736604
>>736749
Это все из-за strict aliasing rule. Если упрощенно, то если указатель видит два указателя несовместимых типов, то он считает что они указывают на разные объекты. Соответственно когда код пишет в первый указатель, компилятор может посчитать что второй не поменялся и соптимизировать чтение из него нафиг.

Вот тут про такие вещи расказано, даже есть пример кода на котором это проявляется (в онлайн компиляторе с дизассемблером, но такое случается только при включении дополните).
https://gist.github.com/shafik/848ae25ee209f698763cffee272a58f8
385 1737439
>>737438

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


но такое случается только при включении дополнительных флагов, насколько я знаю даже gcc по умолчанию позволяет делать type punning с enum.

Вот еще неплохая лекция на эту тему: https://www.youtube.com/watch?v=_qzMpk-22cc
386 1737446
>>737423
Да мне-то зачем.
Я ведь ~свою жену~ плюсы сам пользую и другим не навязываю, а вот ты ходишь по другим тредам и ноешь, что твой раст всем нужен, но все тупые и не используют его.
387 1737449
>>737438
Там совместимые типы.
388 1737454
>>737449
float[3] и struct { float x,y,z; } не совместимые типы
389 1737461
>>737454
Это pod без виртуальной таблицы.
390 1737469
>>737461
Это неважно, в контексте 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.

391 1737470
>>737342
Мне по работе надо было написать REST сервис - я нашлепал на ASPNet core. Кресты таки для другого. Хотя, в последнее время, меня мучает мысль о том, что 90% нашего софта можно переписать на шарпе а еще есть кернелдрайвер который переписать нельзя. Но остальное то можно.
392 1737473
>>737391
Смотри видео выше, шизан.
393 1737475
>>737469
Двачую, единственный адекват в треде, шизики уже 3 день мусолят и доказывают, что не уб, хотя все пруфы уже 3 раза запощены итт.
394 1737476
>>737469
Это явно не все, потому что тогда любой указатель, любая рефка была бы ub.
int i;
int* r = &i;
А в твоей цитате рассматриваются только пары типов или пары указателей.
395 1737478
>>737476
Посмотри/почитай что я выше запостил.
396 1737480
>>737478
Ты про какой пост?
398 1737485
>>737483
Кейс не про указатели, а про унион структуры и массива.
399 1737489
>>737483
Дополню что
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.
400 1737493
>>737489
>>737485
Изучай матчасть. Я раньше тоже думал, что это норм, но как оказалось нет если точнее то в С норм, а в С++ нет
401 1737496
>>737493
Влпрос не в том норм это или не норм, а в том определенное или неопределенное поведение.
402 1737497
>>737496
ну так может быть тебе стоит изучить плюсы вместо того чтобы фантазировать? Материалы тебе дали.
403 1737498
>>737497
Ну так может ты просто укажешь конкретный пруф на то что это UB, а не будешь просто пердеть в треде?
404 1737500
>>737498
Ох уж эти зумеры с 10ти секундным пределом внимания.
405 1737501
>>737500
Ты там с зеркалом разговариваешь? Может ты не понял, но я тебе уже указал что пруфы "для двух указателей на разные типы" никак не доказывают ub в унионе с под структурой.
406 1737506
>>737501
Еще раз, я не буду тебе объяснять то, что уже много раз разжевано другими людьми, просто потому что тебе лень прочитать текст по ссылке
407 1737518
>>737473
Быстро ты слился.
408 1737526
Для чего предназначен класс вектор?
409 1737540
>>737526
Для векторов в N-мерном пространстве.
Векторы завезли, а матрицы — нет. В этом весь C++
410 1737541
>>737526
Это динамический массив.
>>737540
Нет.
411 1737569
>>737541

>Нет.


Чё ты скучный такой))0
Чай не ньюфаг-тред чтобы на такие вопросы отвечать правильно.
412 1737605
>>737388
Раст это такая современная Ада. В лучшем случае будут на нем забивать координаты в ядреные ракеты, в худшем - отправится вслед за прологом.
image.png309 Кб, 450x300
413 1737624
>>737423
Дак там это тамщета фаерфокс хуя пососала с растом в прочем как и любой кто его действительно использовал. А вообще язык хуйня неимоверная, какую еще поискать надо, что это блять за убийца C++, который безопасно работает с памятью? Ты там ебу дал?
414 1737641
>>737624
Ж Ы Р Н О
Ы
Р
Н
О
416 1737661
>>737641
Я серьёзно.
417 1737670
>>737624

>Дак там это тамщета фаерфокс хуя пососала с растом


соус?
418 1737691
>>737670
Он уже давно эту хуйню несет, пруфов так и нет. Хуево быть сектантом.
419 1737694
>>737657
Так что это получается, плюсы тоже нинужны?
420 1737698
>>737694
Да, не нужны.
421 1737715
>>737694
Так а че это ты привел две совершенно разные категории? Продавец вроде бы не заявлялся как "будещее системного программирования".
422 1737729
>>737624
И где фф пососала хуй с растом? В чем это, блять, выражается?

>безопасно работает с памятью


тащемта да
423 1737770
>>737506

> у меня нет пруфа, я просто верю что там ub


Ладно.
424 1737782
>>737388
Язык с unsafe - не безопасный по определению.
425 1737790
>>737782
Любой современный язык небезопасен, так как компилятор содержит ошибки (статистически должен из-за сложности) и может сгенерировать некорректный код.
426 1737810
>>737782
Что тебе мешает не абузить ансейф?
Что тебе мешает тестить точечно ансейф код, повышая шанс отлова опасного бага? Ведь в С/С++ весь код - UB, а в расте хотя бы знаешь где может быть заложена свинья.
Есть проекты и без ансейф кода вообще, он не везде нужен.
427 1737813
>>737790
Удачи тебе найти переполнение буфера в джаве или сисярпе, лол (они уже могут компилиться в нативные бинари). Не, в самой инстраструктуре могут быть такие дыры, ибо она написана на С/С++, но есть языки, которые неуязвимы к ошибками памяти (тащемта любой managed язык)
428 1737819
>>737133
Ой, да конечно блет. C# это кал который нормально работает только под вундоуз. Зачем, когда есть wxWidgets, или накрайняк КУТЭ?

А вообще, зачем писать гуи в принципе... всё в веб уползает.
Владимир Владимирович Путин 429 1737845
Реально ли фрилансить на c++?
430 1737864
>>737845
Да. Лабы
431 1737868
>>737845
Было пару раз в 2018 брал заказы, на QT быстренько нашлепать приложение, однако потом это перерастало в обычную работу. Но это большая редкость.
432 1737872
>>737810
Ансейф будет в либе, которую юзает другая либа, а проявляться будет в твоем коде который это вызывает. Ну и в расте тоже есть ub.
433 1737876
>>737819
Дедуль, неткор привет передает
434 1737896
>>737872
Ну будет и будет, это не ответ на вопрос почему тебе надо на это ложить хуй.
435 1737900
>>737896
Так ты и в крестах не клади.
436 1737902
>>737900
Ну использование крестов это уже по умолчанию ложение хуя.
437 1737955
>>737872
Интересная теория.
А какой в расте есть UB? Можно примеры?
439 1737969
>>737876

>неткор



Кто-то это говно вообще юзает помимо виндузятников? Понятно что у майкрософта кучу gachi-технологий которые никому не упали
440 1737971
>>737955
Это не теория, с actix именно так и произошло.
441 1737984
Чет не могу вкатиться в С++ или C#

Скачал курсы по обоим, а там просто трата времени бессмысленное. Какие-то дроби, числа огромные. И самое главное, что там нихуя не объясняется что они делают. Просто блять пишут всякие дроби, а потом говорят - это дроби. Ну ахуеть! Я понял, что бывают разные переменные, но причем тут всякие дроби? Вы что программируете дробями? Пиздец нахуй. Нечто подобное помню было когда изучал HTML. Там тоже какую-то хуйню втирали, которую нигде не используют. А верстать на нем я научился когда делал себе одностраничный сайт. Вот только с С# и C++ так не получается. Помогите с чего начать, как научиться использовать эти языки, чтобы потом дополнять нехватку знаний дробями из курсов?
442 1737993
>>737984
Книги.
443 1737997
>>737958
ну, UB только в ансейф блоках
Вне ансейфа UB нет
444 1738013
>>737984
Че за дроби?
445 1738025
>>737997
Протекающие абстракции.
446 1738080
>>737790
Это другое.
447 1738102
>>737969
дохуя кто, отличная штука.
448 1738152
>>735038

>Даунгрейд


Читабельность когда, с форлупами и итераторами где много конструкций заебешься отслеживать что и где, а тут такие красивые пайпы
449 1738197
>>738152
Главное не написать blabla | 0 вместо blabla, 0, зато красиво.
450 1738215
Двач, как вообще сжатие работает? Планирую засовывать в SQLite текст по 50кб, можно ли перед отправкой его как-нибудь сжимать?
451 1738233
452 1738235
>>738215
Читни про алгоритм Хаффмана и информационную энтропию.
453 1738238
>>738215
Грубо говоря, в языке всего 32 буквы, а в байте 256. Значит уже на букву надо около 5 битов, а не 8. Дальше, буквы встерчаются с разной частотой. Гласные ОЕАИ занимают 33% текстов, а цщф - меньше процента. Значит, можно частые буквы кодировать 2-3 битами, а редкие более длинными последовательностями.
zlib, сейчас вроде еще brotli
Безымянный22.png64 Кб, 1197x900
454 1738324
Почему так?
C++20 уже вышел?
455 1738360
>>738324
Не обязательно ждать окончательного утверждения нового стандарта, чтобы уже начинать писать компилятор, реализуая сначала устоявшиеся фишечки, которые редизайнить потом не будут.
456 1738362
Двач, как из stringstream удалить последний символ std::endl без перевод stringstream в текст?
457 1738371
>>738362
Гугл говорит, что никак.
458 1738374
>>738362
Это же поток, там должна быть перемотка, не?
459 1738380
>>738371
Как тогда сделать что-бы строка из stringstream переместилась в мою строку без копирования? std::string&& string = stringstream.str(); сработает копирование или перемещение? Я немного не в теме всех этих перемещений.
https://en.cppreference.com/w/cpp/io/basic_stringstream/str
460 1738399
>>738380
Гугл говорит, что тоже никак, прямого доступа к внутреннему буферу stringstream нет, а str() каждый раз копирует строку заново.
https://stackoverflow.com/questions/26266525/move-the-string-out-of-a-stdostringstream
https://stackoverflow.com/questions/35726798/is-it-legal-to-move-the-str-member-of-a-stringstream
462 1738470
Правда что для оптимистик локов больше подходит спинлок вместо мьютекса?
463 1738521
>>738470
Я бы посоветовал вообще не юзать спинлок если ты не уверен на 100% что делаешь. Понять нужен ли он тебе можно по следующим пунктам:
— У тебя мало потоков (желательно <4, иначе накладных расходов из-за дрочащих циклы потоков будет явно больше чем от переключения контекста каким нибудь мутексом), т.е. использовать с какими нибудь корутинами шедулящимися по потокам точно хуёвая идея;
— Изменение быстрое (по крайней мере не особо жирное, если будешь переиндексировать всю базу эти спинлоки отправят тебе процессор нахуй в троттлинг).

Насколько я понимаю понятие оптимистик лока — да, но если хочешь спать спокойно лучше выбери что нибудь более предсказуемое.
464 1738578
>>738324
Да, уже утвердили. Здесь можно посмотреть прогресс по имплементации фич
https://docs.microsoft.com/en-us/cpp/overview/visual-cpp-language-conformance?view=vs-2019
465 1738595
>>738578

>Да, уже утвердили.


https://www.iso.org/standard/79358.html ещё до Approval не добрался, не выдумывай.
466 1738600
>>738521

>в троттлинг


Есть инструкция pause для этого, специально для спинлоков чтобы такого не было
467 1738730
>>738595
Комитет его утвердил в Праге в феврале. Де-факто стандарт 20 готов.
468 1738803
Можно задать sizeof для указателя, как это автоматически делается для статического массива?
469 1738810
>>738803
std::span
470 1738857
Двач, можете пояснить в двух словах где надо ставить const, а где нет.
Нужен ли const параметрах функций для фундаментальных типов и нужен ли он для переменных в телах функций?
471 1738876
>>738857
1. литеральные строки автоматически const
2. желательно ставить const перед таблицами констант
3. все указатели на сущности, которые ты не собираешься менять, объявлешь как "const foo ⛧"
4. опционально
const int pi = 4; // здесь const запрещает pi++
472 1738904
>>738857

Вообще, везде где только можно
473 1738927
>>738521
while (m_locked.test_and_set(std::memory_order_acquire)) std::this_thread::yield();
474 1738930
>>738857
const нужен там, где ты внезапно не собираешься менять содержимое.
Например: если у тебя функция возвращает длину строки, не меняя ее, то size() const. А если ты делаешь функцию set_value(int x) которая меняет состояние объекта, то не она не const.
Параметры функций примитивных значений не надо - они передаются копией по значению. То что ты поменяешь параметр внутри функции, внутри функции и останется. Если же ты передаешь объект внутрь функции, то опять же, если ты гарантируешь что не будешь его менять, а только считаешь из него данные - то const. Если же ты именно меняешь полученный объект - то не const.
Зачем он переменным - загадка. Зачем заводить константную переменную внутри функции? Константы надо хранить где-то в другом месте. Завести отдельный класс или неймспейс.
475 1738934
>>738930
Спасибо за обширный ответ.
476 1738941
>>738857
везде, где можешь.
477 1738959
Константность влияет на производительность?
478 1738962
>>738959
Ну, наверное компилятор сможет оптимизировать больше, если он видит что это константа. С другой стороны, есть const_cast.
479 1738964
>>738959

Да, но при компиляции с -O2 конпилятор чаще всего расставит за тебя const там где ты не поставил, поэтому ставишь больше для себя
480 1739001
>>738959
Обычно почти не влияет. Она влияет на корректность.
481 1739145
>>738962
const_cast нужен, чтобы приводить неконстантные вещи к константным в стиле "современных плюсов". Снятие константности таким образом ведет к UB, что и написано в стандарте.
Компилятор как раз может конст каст соптимизировать и положить значение в read only память.
482 1739292
>>739145

>приводить неконстантные вещи к константным


А смысл? Если они внутри либы остаются неконстантными. А значит это все равно UB когда их поменяют.
483 1739309
>>739292
Так не меняй.
484 1739452
>>738876

> const int pi = 4; // здесь const запрещает pi++


Дедуля, все уже давно constexpr пишут, обновляйся
485 1739469
>>738930

> Зачем он переменным - загадка. Зачем заводить константную переменную внутри функции?


Что значит зачем? Затем же, зачем и параметры передавать по константной ссылке.
auto const values = GetValues();

Единственный случай, когда не нужно - это в RVO
486 1739471
>>738964
vector<int> a;
a.push_back(1);
...дальше a не меняется...

Удачи в оптимизации, лол
15515601615950.jpg60 Кб, 640x425
487 1739541
Блджад, я не понимаю. Подскажите как организовать проект, чтобы можно было его одной кнопкой собирать, генерировать документацию, устанавливать зависимости и т.п. Хотя бы последнее.

Хочу сделать это с помощью 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/, собираться не будет.

Джва часа проковырялся с этим, но так и не понял.
15515601615950.jpg60 Кб, 640x425
487 1739541
Блджад, я не понимаю. Подскажите как организовать проект, чтобы можно было его одной кнопкой собирать, генерировать документацию, устанавливать зависимости и т.п. Хотя бы последнее.

Хочу сделать это с помощью 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/, собираться не будет.

Джва часа проковырялся с этим, но так и не понял.
488 1739561
>>739541

> устанавливать зависимости


ахахах
АХАХАХ
АХАХАХАХАХАХ

Я как раз решил сегодня обмазаться conan'ом и vcpkg'ом, уже часа 3 копаюсь. Первый работает так, будто я взял альфа-версию, второй - будто бету.
489 1739600
>>739561
Ладно, vcpkg в ебанной вижуалке работает нормально, с cmake+mingw же полный пиздец.
490 1739605
>>739469
Почему параметры это как раз понятно. Функция в другом файле, написана другим человеком.
А тут то зачем? Если только склероз и ты забыл зачем получал переменную.
const int a = get2()
const int b = a * a
491 1739608
>>739561
Тоже конаном недавно пользовался, все завелось под виндой. Чего то не было в бинарном виде в дебажном виде, собрал из сорцов. Добавлял cpr и openssl чтобы качать сайты и какую то либу чтобы обрабатывать изобоажения.
492 1739633
>>739605

> Почему параметры это как раз понятно. Функция в другом файле, написана другим человеком.


То есть в своих функциях ты не по константой ссылке данные передаёшь?

> А тут то зачем?


Очевидно, чтобы подчеркнуть тот факт, что ты эти данные собираешься только читать
image.png213 Кб, 651x620
493 1739650
Только начал изучать списки в C++ но понять не могу что за что отвечает, можете помочь сделать список для примера?
494 1739703
>>739650
О, на наши лабы в универе похоже, только у нас пунктов в 1.5 - 2 раза больше.
495 1739706
>>739650
Пиши структуру, которая будет содержать эту структуру и две ссылки на саму себя. Создаешь новую структуру оператором new и задаешь для нее предыдущую, для предыдущей следующую.
496 1739722
>>739650

Да ну, чел, попытайся сам сделать. Отучивайся быть пидором. Сделай отдельно структуру и эти алгоритмы добавления удаления хуения и скинь код сюда если где-то ошибка есть или чет конкретное непонятно.
497 1739735
>>739722
так это действительно сложно, я пытался найти что то в тырнетах там инфы 0
498 1739741
>>739735
Не умеешь искать. У меня однокурсники целиком классы списка находили. Но если совсем не можешь, используй STL, скажи, что по постановке задачи все верно.
499 1739752
>>739735

Да не нужна тебе инфа никакая. Для этого. Просто создай структуру, и сделай 4 функции.

1. Создать первый элемент списка. Принимает параметры(все кроме указателй), инициализирует, сохраняет. Возвращает указатель на структуру
2. Добавить элемент. Принимает первый(но это не точно) элемент списка, идёт по указателям до конца(пока не nullptr) и когда доходит до конца добавляет.
(Первые 2 можно объединить)
3. Вывод всего списка.
4. Удаление всего списка из памяти. Либо сначала, либо с конца, как хочешь.

А после того как готово будет можно дальше идти.
500 1739753
>>739561
>>739541
Не хочу использовать нормальную вижуал студию, хочу жрать дерьмо и пердолькаться
501 1739765
>>739650
Что значит "что за что отвечает"? Там же подписано - за наименование лекарства отвечает char* name
502 1739782
>>739753
Ну да, вместо того, чтобы вручную качать каждую либу, вручную искать её зависимости и собирать, а затем в вижуалке все эти либы вручную прописывать, люди используют vcpkg, который всё это делает сам. Ух, пердолинг так пердолинг.
503 1739800
>>739782
ну у парней проблемы с vcpkg за пределами вижуалстудии (что странно).
504 1739805
Двач, как сделать параметр функции для std контейнеров? Т.е. что-бы мог принимать любые контейнеры std.
505 1739808
>>739805
А ещё лучше контейнеры с типом std::string, хотя хотелось бы посмотреть на оба варианта.
506 1739812
>>738595
Не выдумываю.
507 1739815
>>739753
Сейчас бы завязываться на непереносимый формат проекта работающий в одной ОС..
508 1739816
>>739815
Сейчас бы не знать про Cmake.
509 1739821
>>739816
Ну и нахуя тогда студия?
510 1739822
>>739821
Ну можешь в блокноте программировать, мне без разницы.
511 1739826
>>739815
Щас бы дрочить на эфемерную кроссплатформенность для своего проекта, которая нахуй не нужна почти нигде.
512 1739827
>>739826
Сейчас бы не знать что почти всё кросплатформенное и нужно следовать стандартам если твой проект не нахуй никому не нужен.
513 1739829
>>739827

>Сейчас бы не знать что почти всё кросплатформенное


Сейчас бы не знать что сейчас почти всё кросплатформенное
514 1739830
>>739826
А зачем брать c++ если не пользоваться кроссплатформенностью???
515 1739834
>>739830
Сейчас я хуй знает, 2 додика каких-то, один сейчас не знает про cmake, другому сейчас кросплатформенность не нужна.
516 1739838
>>739827
Библиотеки - да, коммерческие проекты - уже сильно сильно реже.

>>739830
Скорость\легаси
517 1739846
>>739650
Делай все по частям, по шагам. В этом и есть смысл программирования. Что такое указатели знаешь? Что такое new/delete? Ну вот у тебя есть структура, там кроме данных есть указатель на следующую запись списка и на предыдущюю. Включай логику, рисуй схемы. Каким может быть указатель? Правильным на другую запись, или нулевым, например в последней записи. Как пользоваться списком? Надо где-то завести указатель на первую запись, остальные ты сможешь получить переходя по указателю на следующую. Как удалить список в памяти? Надо удалить каждую запись, начиная с первой. Как вставить элемент в конец списка? Дойти до последнего элемента, там следующий будет nullptr, вписать туда указатель на новый элемент. Как удалить элемент из середины списка? Надо чтобы список остался в согласованном состоянии, значит надо изменить указатели так, чтобы указатель предыдущего начал указывать на следующий (и наоборот), а на этот теперь никто не ссылается и его можно удалить delete. Как сохранять в файл? Ну видимо открыть файл и записать каждую запись списка по порядку, каждое поле по порядку. И т.д.
518 1739849
>>739805
В stl нет абстрактных классов, ни как скорее всего.
519 1739850
>>739826

> эфемерную


Сейчас бы не мочь задеплоить свой проект на сервер с линуксом, потому что не дрочил на кроссплатформенность и делал всё для винды.
520 1739852
>>739850
Когда в требованиях нет поддержки линукса - это никогда не наступит.
521 1739855
>>739805
Можно сделать, чтобы принимались любые контейнеры с нужными методами. Утиная типизация в C++, лол.

template <typename T>
void f(T t)
{
t.push_back('x');
}

std::vector<char> vc;
std::string s;
f(s);
f(vc);
522 1739859
>>739852

> требованиях


А, так ты из этих. Ещё скажи, что деньги не пахнут.
523 1739860
>>739859

> деньги не пахнут


wut?
unnamed.gif6 Кб, 437x429
sage 525 1739867
>>739852
Выжигал бы вас напалмом.
526 1739869
>>739852
Очень противно качать какую то либу с гитхаба, а там расширения компилятора или уникальные типы. На малиночку-ардуиночку не засунуть. Нормально делай нормально будет.
527 1739871
>>739869
я писал выше про проекты, а не про либы. Либы должны быть кроссплатформенными по возможности. А вот коммерческий проект пилить под то, где оно нахуй никогда не потребуется - смысла нет.
528 1739872
>>739867
пока ты сжег только свой анус
529 1739879
>>739872
Слезы win-блядей потушили его.
530 1739887
>>739866
Неплохо, а я уже такую хуйню нашел/написал.
template<typename T, typename Enable = void>
class X;

template<class T>
class X<T, typename std::enable_if<
std::is_same<T, std::vector<std::string>>::value ||
std::is_same<T, std::list<std::string>>::value>::type>
{
T t;

public:
X(T t) {
this->t = t;
}

void push_back(std::string value) {
t.push_back(value);
}
};
531 1739889
>>739866
Только как получить доступ к параметру, который мы передали?
532 1739890
>>739879
красноглазый даун не человек, а так, лишь пердоля
533 1739899
>>739889
VS не видел имя параметра, добавил к нему &, сразу увидел. Потом убрал &, продолжил видеть.
evening-painting-mountains.jpg176 Кб, 1000x825
534 1739941
>>739541
Бамп. Как мне сделать, чтобы проект собирался хотя бы.
535 1739957
>>739941
Перестать быть макакой для начала.
536 1739974
>>732244 (Del)
Сереженька, кушать иди)
537 1740104
>>739805
ИТЕРАТОРЫ
Т
Е
Р
А
Т
О
Р
Ы
538 1740234
>>740104
Что за outdated советы такие? В 2к20 все юзают ranges.
539 1740372
>>740234
Ещё не юзают. Скинь сниппет, как это сделать рэнжами
540 1740383
>>740234
Зачем мне ranges, если хватает итератора?
541 1740467
>>740104
а я чот не понял, можешь пример написать?
542 1740473
>>740467
Посмотри на шаблоны из stl.

template<typename It>
void for_each(It beg, It end) {}

template<typename It>
void add_result(It to) {}
543 1740487
>>739650
Можно хоть обчитаться, но все равно обучение сводится к методу проб и ошибок.
Алсо я читал, что когда еще мышечная память задействована наряду с мозгом, запоминание гораздо эффективнее, т.е. надо вручную все вводить, а не копировать куски.
544 1740612
>>739805
В std у всех контуйнеров похожий api, реализуешь через темплейты. Можешь делать тайп дедакшин ещё.
image.png107 Кб, 946x183
545 1740934
Стоит смотреть или лучше книги читать?
546 1740976
>>740934

> лучше книги читать

547 1741039
>>740934
Если какая-то вещь не понятна, то можно глянуть. А весь плейлист это ебнешься, подача информации очень медленная по сравнению с книгой.
.png31 Кб, 894x716
548 1741194
Раз в год запускаю студию чтобы что-то собрать и в очередной раз кампания с капитализацией триллион долларов не смогла сделать авторизацию.
549 1741205
>>741194
Федя, зачем тебе авторизация в IDE? Пиздец, что эти ёбаные отсоциальные сети делают с людьми
550 1741206
>>741194
Им не до этого. Нужно пилить ИИ, совместное редактирование и делать интеллисенс ещё медленнее.
551 1741222
>>741205
Без регистрации нельзя пользоваться.
552 1741227
>>741194
У меня как-то заблочили учётку и попросили телефон для разблокировки, даже удалить учётку без указания номера нельзя. И с тех пор я регаюсь там на 10-минутное мыло, и каждый раз, когда учётку блочат, регаюсь заново.
553 1741237
>>741194
Там надо ie11 и какие то обновы. Так что не они не смогли, а ты.
554 1741244
>>741222
В смысле блядь?
слышал, похожая хуйня есть в установщике десятки, но там можно кабель выдернуть и появится кнопка пропустить
555 1741246
>>741237
Нет, оказалось что учётка по какой-то причине забанена.
Пока через браузер не зайдёшь - не узнаешь.
556 1741266
>>739600

>с cmake+mingw же полный пиздец.


Поставь MSYS2, там все искаропки, пакман как в арчике, вообще пердольства нет. Куча пакетов под небо и аллаха, даже для Qt статически собранный пакет есть.
557 1741267
>>739852

>Когда в требованиях нет поддержки линукса


В РФ везде сейчас поддержку астралинукс для софта требуют.
558 1741283
>>741266
Поставил, понравилось, спасибо. Раньше только cygwin пробовал, в котором пакеты ставятся очень странно, ну и в git-bash нет менеджера пакетов.
559 1741488
>>741267

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

560 1741681
Двач, как сделать шаблонную функцию что-бы она могла принимать только однобайтовые типы?
561 1741716
>>741681
static_assert с проверкой sizeof.
562 1741727
>>741716
Это такое извращенное чувство юмора?
563 1741732
>>741727
Что не так? Норм же совет
мимо
564 1741746
>>741732
Наверное, это намёк на type traits, но в изначальном посте сказано ясно - однобайтовые типы. Пусть это хоть какой-нибудь float8_t.
565 1741786
Напомните тип, позволяющий принимать функции и вектор и массив
566 1741800
567 1741803
568 1741807
Давч, напомните мне, как два однобайтовых значения в памяти [10] [27] (в hex это [16] [39]) формируют число 10000?
569 1741814
>>741807
0x27 << 8 | 0x10
570 1741820
>>741814
А на калькуляторе это можно как-то считать?
571 1741825
>>741820
Смотря какой калькулятор.
39*256 + 16
572 1741861
>>741803
Си тред два блока вниз.
573 1741863
>>741807
Зависит от endianess.
574 1741864
>>741863
Endianess бывает только одна - little.
575 1741878
>>741864
Ясно.
576 1741923
>>739471
Потому что std::array<int, 1> a
577 1741943
>>741194
В очередной раз кодер 300ккк/нс не смог отличить авторизацию от аутентификации
578 1741969
>>741786
итераторы
579 1741979
>>741923
vector<int> a = GetValuesFromOtherLib();
a.push_back(1);

Молодец, доебался хотя бы
изображение.png8 Кб, 583x240
580 1741980
Нет времени сейчас читать книги, потому только в них есть. Подскажите как верно интсанцировать функции, в том числе, которые возвращают некоторое значение. Всё, что нашёл, это хабр, но этого недостаточно.
581 1741994
>>741980
Ты, вероятно, вот про это спрашиваешь?
https://stackoverflow.com/questions/8130602/using-extern-template-c11

То - что у тебя на скрине, это специализация ручками
582 1741995
>>741994
Путаю, а она невозможна что ли для функций возвращающих значение?

Для пустого типа то я умею делать
qeq.png29 Кб, 681x434
583 1741996
>>741995
это?
584 1742000
>>741996
Да, это. Но почему низя прост ниже объявить список типов для специализации, как я хотел выше или как предлагают для функций не возвращающих чего-то?
585 1742001
>>742000
ты либо делаешь специализацию, как это сделал я, либо обьявляешь нужную тебе функцию без какого-либо отношения к тимплиту, т.к. при overload resolution выберется именно функция, а не тимплит по приоритетам. Третьего не дано.

Я не совсем понимаю, что такое список типов для специализации. Нужна специализация - пиши, нужна generic специализация для нескольких типов? Ебашь SFINAE, или концепты.
586 1742003
>>742001
Понял, для меня и концепты и SFINAE не нужны, следовательно обойдусь целым случайным числом.

С ужасом подозреваю манускрипты, которые пишут таким образом, но не просто так прогеры деньги большие получает.
587 1742009
>>742003
это всё не так сложно, как кажется. Правда в реальной жизни редко пригождается.
588 1742011
>>742009
По мере надобности, я не настолько йоба прогер, чтобы использовать такое. Уже не первый раз натыкаюсь, даже читал у Страуструпа, на невозможность перегрузки по возвращаемому типу, что странно и вроде бы даже понятно.
qeq.png30 Кб, 688x430
589 1742012
>>742011
а, блядь, я наконец-то понял о чем ты. Специализировать можно, а вот перегружать - низя, т.к. overload resolution не поймет, что конкретно ты хочешь.
590 1742072
Котаны, короче пожилые ммодрочеры решили вкатиться в С++, так как мы уже хуеву туч лет играем в ММО совместно, решили и совместно ворваться в С++. Мы не знаем никаких языков программирования, стоит ли начинать именно с С++?

Книжка из шапки подойдет для коллективного вката?
591 1742085
>>742072
Зачем вам этот вкат? Если вы хотите сменить карьеру - то С++ это один из худших возможных вариантов, в связи с отсутствием джуновских позиций.

Если чисто для себя порофлить - тогда ок, и с С++ начинать тоже вполне ок. Книги в шапке говно, но я вообще не видел ни одной нормальной книги по С++ для новичков.
592 1742086
>>742072
C++ - ебануться какой сложный язык, и многие, кто начинает с него, потом забивают на программирование. Но если достаточно усидчивые - дерзайте.
593 1742122
>>742086
Что конкретно в нем сложного?
594 1742137
>>742122
Фишечек всяких намного больше, чем в других языках. Изучать эти фишечки намного дольше. И потом при чтении кода приходится дольше вспоминать, как они работают.

Конкретно? Темплейты; сложно победить UB. а ещё сложнее из-за тех долбоёбов сверху, которые РЯЯЯ UB НО РАБОТАЕТ; прямая работа с памятью; при юзании сырых указателей легко обосраться; нет универсальных способов для сборки проектов и разрешение зависимостей, даже для подключения сторонних библиотек нет универсального способа, собирать эти библиотеки из исходников зачастую самому; постоянно надо думать, как не проебать хоть 0.000001% перфоманса, вебня на крестах; компиляция может длиться часами; километровые и непонятные ошибки компиляции.

Но зато потом любой другой язык будет казаться псевдокодом.
595 1742142
>>742137
Мне наоборот было проще осваивать С++. В нём абсолютно нет магии, которая есть в скриптовых\VM-based языках. Любая высокоуровневая сложная конструкция без проблем разбирается на простые манипуляции байтиками, в отличии от питонов\шарпов на которых я писал и нихуя не понимал, что там под капотом.
596 1742150
>>742142
Я другие языки учил уже после плюсов и хз, каково их учить с нуля. Но почти все пишут, что легче.
На скриптовых зато легче решается класс задач, когда нужно тяп-ляп - и готово, хоть и не до конца понимаешь, как это работает. Но в них этого и не требуется, там подход - верить в магию и надеяться, что не выстрелит.
597 1742154
>>742072

>стоит ли начинать именно с С++?


Нет, все крестовики начинали с обычной сишки.

>>742122
19 способов инициализации переменных, например.
598 1742201
>>742154
А ещё lvalue, rvalue, xvalue, gvalue, pvalue, nenovalue, allahvalue.
599 1742214
>>742154
Да сейчас uniform initialization можно везде хуярить и будет работать. Т.е скобочки { } без знака равенства =.
600 1742218
Решил установить Qt, скачал новый онлайн-инсталлер, и увидел, что нельзя пропустить авторизацию, как раньше. Начиная что-то подозревать, полез гуглить. И нашёл это (да, я слоупок): https://www.qt.io/blog/qt-offering-changes-2020

> Installation of Qt binaries will require a Qt Account


> Long-term-supported (LTS) releases and the offline installer will become available to commercial licensees only


> everyone, including open-source Qt users, will require valid Qt accounts to download Qt binary packages. We changed this because we think that a Qt account lets you make the best use of our services and contribute to Qt as an open-source user.


> We want open-source users to help improve Qt in one form or another, be that through bug reports, forums, code reviews, or similar. These are currently only accessible from a Qt account, which is why having one will become mandatory.



М-да. Так похоже на Oracle с жабой: либо плати, либо будь бета-тестером. Понятно, что хочется заработать денежек, но такое пидорское отношение к пользователям опенсорса нищебродам вызывает очень много вопросов.
601 1742223
>>742142
Это, скорей, относится к Си или "си с классами". Во что разворачивается какая то конструкция с++ угадать очень трудно, особенно новичку. А главное, малейшее изменение, причем не тобой, может кардинально все изменить. Ну например, в глобальное пространство имен кто то добавит функцию, из за этого выводы темплейтов станут другими, и твоя функция, которую ты считал константной времени компиляции, станет рантаймовой с оверхедами.
602 1742224
>>742218
Где-то у них есть файлопомойка с сурцами, пошарься. Сам еле нашёл в своё время.
603 1742229
>>742224
Сорцы-то есть, они любезно написали в своём посте, что по-прежнему можно собрать самому, не регистрируясь. Понятно, что большинство этого делать не будет и смирится с новыми условиями.
604 1742251
>>742142
Вот кстати поддвачну, на шарпе вроде приятно писать, библиотека заебись, сахарок, всё такое, но вот если надо понять, какие конструкции приводят к аллокации из кучи, а какие нет, то начинается ебучая магия. В С++ с этим гораздо проще.
605 1742255
>>742137

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


Вот это пожалуй единственное, с чем может столкнуться новичок и с чем ему придётся серьёзно разбираться. Хотя в последнее время в 99% случаев написать vcpkg install my_liba.
Всё остальное - это сложности, которые возникают уже у людей с опытом.
606 1742256
>>742142
Поддвачну. В нормально отформатированном коде на c++ понятна каждая строчка.
608 1742258
>>742142
Слцшал мнение, что это около-синдром утенка, связанный с типизацией. Тем, кто начал со статической, тружно с динамической, и наоборот.
609 1742261
>>742154
Страуструп уже лично просит не начинать изучение плюсов с Си, это ведет к тому, что люди пишут на Си с классами. Если нужен Си - учите Си, если нужны плюсы - учите плюсы.
"Но си это фундамент!!1" - ASM тем более, но лучше начинать учить что то прикладное, а потом идти вглубь, не нужно школьникам про p-n переходы в транзисторах рассказывать, как только они захотели поучиться проге.
610 1742262
>>742072
Купите вскладчину Белый пояс Яндекса и кайфуйте. Если вы учитесь в каком нибудь вузе, то можно и бесплатно получить.
611 1742352
>>742214

>uniform initialization можно везде хуярить


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

>>742261

>люди пишут на Си с классами


Как что-то плохое.
612 1742397
>>742258
Типизация это другое - шарпы тоже статические, однако магия присутствует.

Но да, я не понимаю как можно писать на языке с динамической типизацией что-то большее, чем 200 строчек.
613 1742401
Аноны, есть ли ситуации, когда приходится юзать исключительно сырые указатели?
614 1742414
>>742401
сырые указатели используются тогда, когда они не владеют памятью
615 1742481
Двач, при запуске программы выбрасывается исключение, во время дебага всё нормально как бы я не пытался отыскать проблему. Как мне найти в какой строке происходит ошибка если код большой и много заголовков?
616 1742489
>>742481
Посмотри, какое исключение и примерно где выбрасывается, подключись дебаггером и жди
617 1742492
>>742489

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


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

618 1742501
>>742492
Тебя не учили подключаться дебаггером к релизной версии?

> в какой строке


> примерно


Ну блядь если ты не знаешь, какая часть кода у тебя за что отвечает, то может и не стоит этим заниматься?

Пиздец, оберни в таком случае всё в try-catch и потихоньку выноси оттуда код, вот ты и узнаешь, где ты обосрался
619 1742512
>>742501

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


Не учили

>Ну блядь если ты не знаешь, какая часть кода у тебя за что отвечает


Выбрасывается std::out_of_range what(): std::substr. Мои std::substr ничего не выбрасывают

>то может и не стоит этим заниматься?


Хуй будешь?

>Пиздец, оберни в таком случае всё в try-catch и потихоньку выноси оттуда код, вот ты и узнаешь, где ты обосрался


У меня много много кода, я заебусь всё оборачивать и код работает с Qt что не позволяет оборачиваться в try-catch.
620 1742513
>>742512

>std::substr


basic_string::substr
621 1742522
>>742512
Троллишь тупостью? Пиздец.
622 1742524
>>742522

>сказала чмоха с подобными высерами:


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


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

623 1742696
>>735074
Я ответил тебе, теперь ты умрёшь.
624 1742714
>>742512
в чем проблема проверить substr?
625 1742985
>>742481

> Двач, при запуске программы выбрасывается исключение


> Как мне найти в какой строке происходит ошибка если код большой и много заголовков?



> при запуске программы


> как найти где происходит ошибка



> при запуске программы


в конструкторе смотри.

можешь запись в лог-файл/консоль прикрутить по-быстрому. так и без дебаггера увидишь, где упало
626 1743076
>>742481
Что, даже если к релизному экзешнику через windbg подключиться ничего не даёт?
627 1743080
Пишу в Visual Studio под винду. Консоли нет.
Как лучше всего искать узкие места в коде? Есть ли какой-то уже готовый инструмент, чтобы не писать руками вывод в файл? Код обрабатывает большой поток данных в цикле, и как-то бы автоматически рассчитывать среднее время, которое на это все уходит, чтобы сразу наглядно видеть, где программа тратит реально много времени.
628 1743091
>>743080
в студии встроенный профайлер есть. Если он тебе не нравится - есть Windows ADK с Windows Performance Recorder'ом
629 1743104
Какого хера даже 2019 VS не принимает такой вариант иницализации? Хотя в нете такие примеры постоянно вижу.

>std::vector< int > Array = { 5,6,7,-1,6,10, 32,-5, 0, 4 };



Хули ему не нравится?
qeq.png17 Кб, 675x179
630 1743109
631 1743110
>>743109
все идеально работает
632 1743112
>>743110
Я не сомневаюсь, но что-то у меня не так.

Вроде бы даже 2010 это умеет, поэтому я перекатился на 2019, но чот не робит.
633 1743117
>>743112
#include <vector>
#include <initializer_list>

попробуй?
изображение.png24 Кб, 757x549
634 1743126
>>743117
Не помогло, зато помог быстрый поиск и замена компилятора, ух, но всё равно благодарю.
635 1743161
>>743104
Стандарт языка какой в проекте выставлен?
636 1743164
>>743161
По умолчанию, что интересно, та версия VS 2019, которая у меня есть максимум С++ 17 поддерживает.
637 1743224
Мне нужен сервер с возможеостью писать программы на c++ для него, чтобы был выход в интернет. Такое вообще существет? И сколько стоит?
638 1743233
>>743224
Ксеон из раздела /hw за 20 000 с 16 - 24 потоками
Федора или бабанта с КВМ/КСЕН
Ну и далее устанавливаешь систему нужную на вирутальную машину
639 1743248
>>743233
Не. У меня нет возможности держать 24/7 включенным компьютер. Интересует именно аренда
640 1743262
>>743248
любую впску купи
641 1743285
Я эт уже спрашивал, но повторюсь.

Какие фрамеворки желательно знать сейчас С++ прогеру?

Вот хочу ща опробовать Qуtэ, а что ещё есть?
642 1743287
>>743224
Купить любой VPS, на него поставить nginx или апач (если его там ещё нет), к нему подрубить свою прогу на крестах через CGI/SCGI/FastCGI
643 1743293
>>743285
Надо хотя-бы С++ хорошо знать. Дальше уже всему научат на работе обычно.
644 1743297
>>743293
Понял
645 1743311
>>743285
Открываешь hh, смотрешь что в вакансиях.
По хорошему надо знать сами плюсы, включая STL.

Дальше можно посмотреть Boost, почти всё там - кандидаты на попадание в стандарт. Еще можно посмотреть репу awesome-cpp, там тоже куча всчких фреймворков, среди которых можно найти интересные лично тебе.
646 1743336
>>742261
А как начинать то блядь тогда? С++ создавался на основе С, причём когда-то давно был С с классами, а потом добавили шаблоны, наследование и прочее.

Я не понял тебя, это звучит убер странно.
647 1743337
>>743311
Понял
648 1743339
>>743336
С чего нибудь типа cppcoreguidelines, с unique_ptr и shared_ptr, с векторов и стрингов, думаю так имеется в виду.
649 1743340
>>743339
С этим соглашусь
650 1743364
>>743287
>>743262
Спасибо
651 1743373
Нужно написать сервер для браузерной игры. Тк за хостинг я плачу из своего кармана, то есть желание сэкономить. Имеет ли смысл писать на плюсах место пыхи? Сильно ли php уступает c++. Даст ли это возможность сэкономить на аренде менее мощного оборудования? Но еще я ни ращу такой хуйней ге занимался. На пхп наверное всякие проблемы безопастности исправлены, а на плюсах нужно будет самому писать все, а я нихуя не знаю какие угрозы могут быть
652 1743380
>>743373
Тебе проще заказать игру
653 1743381
>>743373
Пиши на том, на чём умеешь. Переписать логику на другой язык будет сильно проще потом.
654 1743384
>>743380
Нет. Больше половины клиентской части я сделал.
655 1743385
>>743381
Правильно я понимаб, что если взять curl то можно легко написать взаимодействие с сетью и потом об этом не парится, а просто заниматься дальнейшей обработкой?
656 1743387
>>743385
сервера пишутся на буст асио обычно, и это совсем другой уровень сложности чем всё пхп вместе взятое
657 1743390
>>743387
В чем премущество перед curl? На curl был небольшой опыт раьоты с api сайта. Буст разве не огромный дохуя? нет желания тянуть столько
658 1743397
>>743390
курл - это клиент. Сервер это сервер
659 1743408
>>743397
Точно............
А есть че по проще буста. Я могу загуглить, но может есть пооверенные варианты. Но правильно я понял, что если я использую библиотеки, то не должен думать о сетевой безопасности?
660 1743419
>>743408
Безопасность бывает разная. Думать о ней тебе все равно придется - что если читер расковыряет твою игру и пропишет урон в 10 раз больше?
image.png10 Кб, 664x195
661 1743422
первая фриланс работа
662 1743427
>>743422
По лингвистике?
663 1743428
>>743427
да хз сделал страуступу какому-то вроде доволен
664 1743454
>>743422
давай, 300кк\нс не за горами
665 1743475
666 1743478
>>743336
tl;dr Чел прилумал язык и недоволен, что перед его изучением заяем то учат ДРУГОЙ язык
https://youtu.be/fX2W3nNjJIo
668 1743538
>>743408
Думать о безопасности надо всегда, когда пишешь что-то сетевое. От этого тебя никакая либа и никакой язык не спасёт.
669 1743555
>>743373
С++ конечно быстрее в разы, и по памяти тоже можно выжать сильную экономию. Грамотно написанный сервер можно хоть на одноплатнике держать, у которого мощности как у паршивого смартфона. Тут главное чтобы программа не уперлась в I/O, потому что если она будет делать по десять запросов к базе на каждый пук, то С++ ей ничем не поможет. То есть, сразу надо думать, куда и как часто будут ходить данные, и это не просто "взять и переписать на другой язык".
Правда, сложность разработки веб херовин на С++ довольно высокая, особенно если брать в расчет безопасность. Если браться за такое, то либо для себя по фану чтобы научиться, либо если уже хорошо знаешь, что делаешь. А если под заказ и без опыта в таком деле, то на крестах писать не самый удачный вариант — наогребаться можно просто лютейше.
670 1743597
>>743538
>>743555
Может книга есть какая с описанием угроз?
671 1743625
>>743422
Проверку на дурака забыл.
672 1743646
>>743408

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


Если используешь библиотеки, безопасность не под твоим контролем.
673 1743716
есть какое-нибудь кроссплатформенное решение для позиционирования курсора в консоли и подобной дрочи?
674 1743722
>>743716
std::out << '\r';
675 1743723
в конструкторе выделяется память под квадратную матрицу указанной размерности
какой возвращаемого значения у new T[x][x] чтобы дать его члену класса?
676 1743725
>>743723
*какой тип
677 1743730
>>743723
T(✡)[x]

T (⛧m_var)[x] = new T[x][x];
678 1743734
>>743730
где x это компайл тайм константа?
679 1743735
>>743723
decltype
Блядь да ну нахуй какое [][] в 2к20
680 1743742
>>743734
А иначе хуй ты память с [][] выделишь. Или пакуй в одномерный массив/вектор/вектор-с-векторами.
681 1743744
>>743742
не хотел делать на стл но видимо придется
ясно спасибо
682 1743752
>>743742
в с++20 вроде можно в constexpr память выделять
683 1743754
>>743752
осталось только найти компилятор это поддерживающий
684 1743758
>>743742

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


А [] пусть возвращает прокси объект с доступом по ссылке.
685 1743769
Как устроены кроссплатформенные библиотеки? В любом случае же нужно api ос использовать. Там просто ifdef и код под каждую платформу?
686 1743779
>>743769
Можно разнести по разным файлам и подключать их уже системой сборки.
687 1743784
>>743769
Без ифдефов трудно обойтись, но начинать стоит с создания отдельных файлов с обертками (my::createFile гыгы) под каждую платформу.
688 1743793
>>743769

> Там просто ifdef и код под каждую платформу?


Верно
1594116984266.jpg279 Кб, 720x1280
689 1743810
Какой блин boost asio мне советовали? Мне еще и писать http парсер. Найду че по проще. Уже приметил парочку библиотек, правда для http 1.1. Может для http 2 что нибудь найду.
690 1743839
>>743810
https://github.com/nghttp2/nghttp2
Вяглядит как то что мне нужно. Че скажите?
691 1743877
>>743810
Ты зачем в плюсы лезешь вообще?
15808260757990.jpg31 Кб, 612x612
692 1743883
Как посоветуете вкатиться в C++ в 2020 на русском?
Что по стандарту?
693 1743887
>>743877
Всмысле?
694 1743897
>>743883
английский учи бля никакого на русском
ну и как обычно посмотри пару видосов по азам потом возьмись за небольшие проекты и сверяйся с SO + cppreference
695 1743902
>>743897

>SO + cppreference


Что?

Если про Питон и ЖС литературы до жопы, то на плюсах тоже.
И на Питоне все стандартно читают несколько основных хороших книг для вката, все на русском.

Неужели с плюсами ситуация не аналогичная?
696 1743905
>>743810

> писать http парсер


Почему, ну почему крестовики никогда не используют готовые http-либы и каждый раз их пишут с нуля чуть ли не через winapi? Бог дал им Poco, cpp-netlib и ещё сотню других, но нет, надо снова и снова изобретать велосипед.
HTTP/2 не нужен.
697 1743922
>>743902

> Что?


stackoverflow.com и ru.cppreference.com

> основных хороших книг


Бьерн Страуструп.
"Язык программирования С++ "

все остальное от лукавого
698 1743926
>>743905

> Почему, ну почему крестовики никогда не используют готовые http-либы и каждый раз их пишут с нуля чуть ли не через winapi? Бог дал им Poco, cpp-netlib и ещё сотню других, но нет, надо снова и снова изобретать велосипед.


Так я пишу, что не собираюсь этого делать и ищу либу где сделано за меня.

> HTTP/2 не нужен.


Почему? HTTP 1.1 старый же очень
699 1743939
>>743926

> ищу либу где сделано за меня


Полно всяких, см. Communication: https://en.cppreference.com/w/cpp/links/libs
Про парсинг http забудь. Даже если взять готовый парсер, придётся руками прикручивать SSL/сжатие/менеджмент потоков/хелперы даже для банального роутинга.

> Почему? HTTP 1.1 старый же очень


Но используется повсеместно. 2.0 даже не поддерживается толком нигде.
700 1743946
>>743939
А по этой можешь что то сказать?
https://github.com/nghttp2/nghttp2
Спасибо за ответы
701 1743957
>>743810
Мне cpr понравилась, я ей спарсил одни сайт. Обертка над curl. Https через openssl
https://github.com/whoshuu/cpr
702 1743962
>>743939
И почему он не поддерживается? 5 лет прошло уже
703 1743963
>>743957
Мне сервер нужен, а curl как я понял клиент.
704 1743975
>>743597
Вряд ли, это как просить книгу с описанием багов.

Разбирайся внимательно во всяких галочках и настройках в стороннем софте и либах, которые используешь. Многие появились не от хорошей жизни, и содержат в доках описание, как делать так, чтобы не поимели.
705 1743983
>>743922
А по opengl что можно на русском?
706 1743984
>>743597
Что-нибудь типа такого приходит в голову
https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/
707 1743988
>>743983
Сейчас тебе скажут, что опенгл устарел, и теперь всё только вулкан.
708 1743989
>>743988
А что опенжл сильно отличается от вулкан?
И разве в новых картах не будет опенжл?

Кроме того опенжл универсальней.
709 1743999
>>743989
OpenGL будет везде, вулкан никаких профитов не имеет для домашнего хикки-программиста, а вот гемора с ним в разы больше
710 1744000
>>743922

>Бьерн Страуструп.


>"Язык программирования С++ "



А специальное издание не лучше?
711 1744010
В каких редакторах в конторах пишут код С++ в линухе?

Знаю
Sublime, ну и всякое безумие типа простых редакторов.

Так же вопрос по настройке отладчика и компиляции, ибо последний раз после того как поставил Sublime и установил gcc всё равно ругался на отсутствие gcc.
712 1744016
>>744010
Clion, qtcreator, Vscode
713 1744018
>>744010
Как ты себе представляешь работу в конторе? Типа написал код нажал кнопку и оно запустилось?
Все равно никуда не денешься от билд систем.
714 1744020
>>743983
На хабре перевод хороший есть
715 1744022
>>744018
По обрывкам - есть лид, который знает или свою ветку или вообще весь проест, есть те, кто задачи от лида выполняют.
716 1744024
>>743983
Нельзя. Можно только учебник Борескова, и RedBook по OpenGL 4.5. На ангельском литературы не особо много, но она весьма годная.
Мимо пишу компутерную графику уже три года.[spoiler ]Задавайте ответы если интересно.[/spoiler]
717 1744027
>>744024
Лучше игры делать сразу, иначе потонешь, или программки какие-то.

Занимался подобной хернёй
718 1744031
>>744020
Перевод чего? Учебник нужен норм.
719 1744032
>>743999
Как гемора больше, она же должен был облегчить жизнь программистам, разве нет?
720 1744034
>>744032
Он позволяет прогоаммистам управлять железом (память, вычисления на видяхе, вот это все) а не вызывать функции черного ящика, которых может и не быть.ж
721 1744038
>>744031
Цикл статей по opengl
https://habr.com/ru/post/310790/
722 1744040
>>744032
Идея вулкана и ДХ12 - это суперпуперлоулевельное АПИ, которое должно помочь выжать больше ФПС на том же железе. Программировать его ощутимо сложнее
723 1744058
>>744027
Дэк ведь я в конторе работаю и пишу не игоры.
724 1744061
>>744058
Понял
725 1744071
>>744034
Типа C?
726 1744073
>>744034
>>744040
Как Vulkan пересекается с OpenCL?
727 1744077
>>744040
Лол, на DX12 во всех играх FPS снижается в сравнении с DX11, больше лагов итд.
728 1744082
>>744077
На радеонах ДХ12 лучше ДХ11. На нвидии наоборот.
729 1744089
>>744073
с OpenCL никак, а с OpenGL очень даже.
730 1744112
Мне бы на плюсиках ИИ написать. Что можно для этого сделать?
732 1744131
>>744112
Потому что Питон у скорость сосёт?
733 1744132
Vulkan типа С или типа ASMа?
734 1744135
>>744132
Типа C в сравнении с питоном. 1000 строчек, чтобы нарисовать треугольник.
735 1744150
>>744135
Сегодня и графику и игры делают в специальных программах и на игровых движках.

На Питоне вообще нечего рисовать, это уж точно.
736 1744174
>>744150
Успокойся аут, это была аналогия.
737 1744181
>>744131
да нет впадлу мне питоны всякие учить
738 1744191
>>743962
Вейленду уже больше десяти лет, а всё никак не прикрутят нормально хотя его по SSH нормально не передашь и не прорендеришь удалённо
IPv6 уже почти 25, а все сидим на четвёрке.

Некоторые стандарты очень долго переходят от бумаги к реальному пользователю.
739 1744242
>>744135
Его можно просто в узких местах использовать, а в остальных будет OpenGL.
740 1744247
>>743922
Существует ли новое издание за бесплатно на русском?
741 1744258
>>744247
Не слушай этого долбаёба, в шапке есть прекрасные книги, которые можно прочитать. Именно КНИГИ, а не справочники. Справочники нет смысла читать в 2020, для вката достаточно книг,из шапки разумеется интернета и практики, а если справочная информация понадобится, то cppreference + другие источники - более чем достаточно.
742 1744277
>>743810
Тебе же прям на пике советуют boost beast использовать
743 1744290
>>743962
Потому что не заставили. И так работает, никто не почешется.
744 1744297
>>743902

>Неужели с плюсами ситуация не аналогичная?


Плюсы новый язык. Каждый год новый.
Осознайте это.
745 1744313
>>744277
Наверное это неважно, но я спрошу. Там вроде http 1. Есть ли какая нибудь для меня разница между http 1 /1.1/2?
hellotriangle.png1,9 Мб, 3300x20723
746 1744351
747 1744359
Двач, пробую отдебажить свою программу Cmake/Qt в Visual Studio, при запуске пишет "Запуск программы невозможен, так как на компьютере отсутствует Qt5Widgetsd.dll", в чём проблема?
748 1744376
>>744313
Я вообще не понимаю, на кой тебе сдался этот http, если есть вебсокеты
749 1744381
>>744376
Кто такие ваши сокеты? Я хочу просто либу для сервера плюсового и все.
750 1744384
>>744381
Ну тогда бери boost.beast и не выёбывайся
751 1744390
752 1744411
>>744297
JS тоже, но там это не ощущается из-за сравнительной простоты.
753 1744415
>>744359
Положи Qt5Widgetsd.dll рядом с бинарником, это отладочная версия Qt5Widgets.dll
754 1744499
>>743922

>ru.cppreference.com


Параша уровня отвеtRCтыANUSmaC2\ilPUNCTUMrKM+u
755 1744507
>>744499
Просто ты долбаёб, что в документации и ангельский не может.
756 1744835
Сап двач, есть один код пик1
Он должен считать, через сколько слов повторяется слово.
Но эта залупа в любом случае выводит максимум - 2!!!! пик 2
Я подозреваю, что дело в том, что ++number_of_words срабатывает лишь один раз - почему?
image.png2 Кб, 297x58
757 1744838
>>744835
алсо
758 1744842
>>744835
Потому что
if (previous == current);
это весь блок.
Все что дальше - не в ифе.
759 1744846
>>744838
Лишние точки с запятой после while, после if. Поэтому, тело цикла выполняется один раз. Соблюдай кодстайл, и не будет такого говна.
image.png29 Кб, 1001x267
760 1744859
>>744842
>>744846
бля, он вообще сдох теперь
761 1744864
>>744859
Чел, методом тыка рандомно добавляя и убирая знаки препинания на с++ ничего не выйдет.
762 1744868
>>744859
Потому что у тебя cin не кончается. Если можешь, въеби в консоль после своих слов символ конца файла, не знаю, какой он там на винде. Или лучше из файла читай, у него точно есть конец. Ещё можно getline, потом собрать istringstream. В общем, ебись, удачи.
763 1744870
>>744868
Я бы порекомендовал сначала написать прогу, которая выводит слова, которые читает. Чтобы убедиться, что читаешь правильно.
764 1744884
>>744859
while(cin...) делает не то, что ты думаешь.
Оно читает весь поток до конца файла, а не одну строчку. Как этот анон написал >>744868
765 1744889
>>744884
>>744870
>>744868
>>744864
>>744846
>>744842
Окей, буду ебаться, сяп
766 1744904
>>744864
Смешно.
767 1745095
Сделал всё как в инструкции - https://github.com/YOU-i-Labs/easy_profiler
Но видимо не может слинковаться, пишет error: undefined reference to `__imp__ZN8profiler5BlockC1EPKNS_19BaseBlockDescriptorEPKcb'
Как исправить проблему?
768 1745105
>>745095
Не тот репозиторий дал - https://github.com/yse/easy_profiler
769 1745108
>>745095
Или подскажите как в cmake в ручную библиотеки подключать, я уже забыл.
770 1745366
Есть ли смысл вкатываться в C++ на сегодняшний день? Или время ушло и больше котируется Python/Java/C#/JS?
771 1745404
>>745366
Не в деньгах счастье.
772 1745413
>>745366
Вкатись хоть куда-нибудь
773 1745474
>>745404
>>745413
Я бы хотел вкатиться в десктоп и парсинг различных сайтов. Ну и прикольно было бы всяких ботов делать, чтобы видео с ютуба качал. Я пробовал конечно в Java вкатиться, аж целых два года (но с работой в кол центре после рабочего дня ничего не хотелось, был выжат как лимон), но как-то не пошло, да и не мог с целью определиться. PHP - попробовав, сразу решил, что это не моё. Python - вроде норм, но я никак не могу привыкнуть к динамической типизации и вакансий нет в моем городе. Вот я думаю, все же в C++ идти или в C#. С одной стороны все в моих руках и без ограничений в креста, а с си шарпом...ну я хз, не могу привыкнуть к её философии, да и тоже самое, что Java, только с привязкой к майкам. Ну а кресты живее всех живых и вроде не надо городить огород при написании программ. Ну и мне всегда хотелось с указателями подробнее познакомиться и работать с ними.
774 1745544
>>745474
В 2020 не стоит знакомиться и работать с указателями.
Что же касается парсинга, на шарпе ты напишешь его раз в 5 быстрее.
Но написать не проблема. вот собрать openssl - это другая история
775 1745550
>>745474
Десктоп это электрон или шарп. Парсинг различных сайтов - питон.

В С++ вкатываться нет смысла, если ты не хочешь хардкорного системного пердолькинга.
776 1745635
c++ ил раст?
777 1745639
>>745635
Чет смотрел раст, столько дифирамбов, а по факту не очень радует - почитай раст тред свежий.
778 1745698
>>745635

>c++ ил раст?


Я за раст.

сищник
779 1745704
Анекдот:
Приходит сисярпист в хаскель-тред и говорит: "А джава-то лучше"!
780 1745708
Ну хоть один раз мы не перекатываем тред как только 500 постов наберется. А то катаетесь быстро пиздец, что по плюсам 7 тредов живы. Предлагаю сделать перекат как умрет 12 тред.
781 1745771
>>745635
Борщи хлебать - раст
Код писать - С++
782 1745826
>>745771
С++ тоже для борщехлебов. Ну или для некрофилов, которые копаются в легаси. Новые проекты, тем более крупные, тем более требовательные к безопасности, не пишут на С++, и уж тем более не пишут на С. Эти языки держатся на плаву исключительно из-за УЖЕ написаннного кода, который просто везде.
783 1745837
В чём разница \n и std::cout?
784 1745839
>>745837
std::endl*
785 1745842
>>745826
А на чем пишут? Как же всякие высоконагруженные проги?
786 1745845
>>745837
Inserts a newline character into the output sequence os and flushes it as if by calling os.put(os.widen('\n')) followed by os.flush(). (from en.cppreference.com)
То есть после \n ещё вызывается flush, как я понял.
787 1745857
>>745842
Прямо АДОВЫЙ хуйлоуд - это редкость. Для 98% компаний тот же Го с удобными корутинами вполне себе быстрый, несмотря на наличие сборщика мусора.
788 1745879
>>745826
Угу, весь фаанг и крупняк на крестах
789 1745906
>>745879
FANG - 4 компании. У Фейсбука посещаемость - половина челевеческой популяции в месяц, про гугл вообще молчу.
Сколько таких компаний есть в мире? Можно пересчитать по пальцам одной руки. 98% других компаний предпочтут менее хардкорные и более безопасные языки, которые будут достаточно быстры для их потребностей. То бишь для компаний помельче те же Го/Раст гораздо лучше, чем С/С++, и экономически выгоднее.
790 1745910
>>745906
так зачем ровняться на говно, когда надо на топ ровняться?
791 1745958
>>745906
Раст сложнее крестов. Значит он не выгоднее.
792 1745983
>>745910
Да пускай, я-то что? Я сам с/с++ червь, лол, и пишу почти всегда на них.
Просто объективно рассуждая, С/С++ очень слабо подходят на роль выбора языка для новых проектов, если у тебя не хуйлоуд уровня гугла. Более современные и безопасные инструменты подходят лучше в подавляющем большинстве случаев.
793 1745985
>>745958
То, что Раст сложнее крестов - утверждение довольно-таки спорное.
794 1745989
>>745108
Я вообще не шарю в cmake, но делаю так и у меня вроде работает:
add_subdirectory(path/to/myLib)
target_link_libraries(myProj mylib)
795 1745995
>>745983
с этим согласен, но точно не обскурную парашу уровня раста выбирать. Тот же неткор - отличный, например.
796 1746002
может кто-нибудь накидать адекватных тривиальных примеров использования корутин из нового стандарта

текст с цпреференс не осилил
797 1746111
>>746002
Короче, есть синие и красные функции, синие функции можно вызывать откуда угодно, а красные - только из красных.
798 1746185
>>745906
FAANG же уже, 2к2о

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

Видеоаналитикой занимаются на Си/крестах. То есть питонисты сидят и дрочат свои нейронки на питоне, да, нопотом это все должно гонять видеопоток в риалтайме, и легче всего (!) это делать на крестах.

Моделирование всякой научной личи - прототипчики на питоне/матлабе, потом кресты.

Опа, оказывается не двум процентам нужны кресты.
Я верю, что когда то кресты все таки должны будут уехать в дом престарелых, но Go явно пошел в другую сторону, а Rust пока стремный кузен какой то.
799 1746193
>>746185

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


Почему? В чем смысл отказываться от крестов? Ну было бы конечно неплохо если бы просто было бы какое то ответвление без кучи ебанутых поддержек совместимости с прошлыми версиями и построенное чуть более логично с учетом текущих разработок, а так че плохого в языке?
800 1746199
>>746193
У тебя что, нет ощущения, что кресты это язык прошлого века? В том то вся и проблема, что нормально замены (пока) нет, но замена реально нужна.

В языке куча мусора и ни для кого это не секрет. При этом многопоточность местами выглядит дичайше. Функции не граждане первого сорта. Все пишут свои аллокаторы.

Язык создавался почти сорок лет назад - все уже стали умнее, можно напрячь извилины и все таки шагнуть вперед.
801 1746202
>>746199
Ну я об этом и говорю, сделать кресты более современным языком, с учетом текущих недостатков, отказавшись от совместимости.
802 1746205
>>746202
Ещё бы с метапрограммированием а-ля Circle
803 1746215
Нужно взять раст, стандартизовать, сделать нормальные систему сборки и менеджер пакетов и запилить в него овер 9000 фич. Тогда наконец-то появится убийца C++.
804 1746221
>>746202
Хотя сейчас подумал над сказанным. Буст кажется на 11 версии плюсов, а уже 20 на подходе. Че с такими либами делать, если они используются часто? Паралельно содержать 2 версии языка с поддержкой совместимости и без? Звучит не очень
805 1746237
>>746221
Ломать обратную совместимость - худшее, что можно сделать ВООБЩЕ.
806 1746239
>>746215
только вот печаль, что никто не будет над этим заморачиваться, всем похуй( Эхх, а так хотелось бы, чтобы Раст стал новым глотком воздуха в мире этого старья из 70-80ых, но походу не судьба(
807 1746242
>>746239
Мне сначала таким показался Go, но присмотревшись, понял, что нет и никогда им не будет.
808 1746255
>>746202
То есть сделать новый язык, да?
Потому что дело не в паре ключевых слов.
809 1746256
>>746242
Go не замена ни плюсам, ни тем более Си. Сложно назвать язык со сборщиком мусора системным (невозможно, это не системный яп, точка)
810 1746261
>>746256
Кто-то всё равно пытается: https://www.linux.org.ru/news/opensource/14653611
Но там:

> немного модифицированный рантайм Go


лол.
811 1746263
>>746255
Ну........ скорее да. Новый язык на основе старого
image.png22 Кб, 440x516
812 1746274
Сап двощ, решаю задачку, а тут непонятная хуйня, почему в строке бред, когда там должна быть 123 456?
813 1746278
>>746274
Потому что ты приводишь char к int
814 1746291
>>746274
В строке, где кастишь, вычти из символа '0'
815 1746337
>>746291
>>746278
Спасибо.
816 1746338
>>746274
std::stoi, ты приводишь тип char к типу int и получается число (код символа), не равное цифре из строки
817 1746369

>++i


этот культ преинкремента даже у нубов
818 1746373
>>746369
Компилятор лучше оптимизирует.
Постинкремент это {auto tmp=var; ++var; return tmp} что в нетривиальных случаях может быть очень грустно
819 1746377
>>746373
Там uint, разницы никакой.
820 1746390
>>746377
А завтра там класс с копированием, вот никто и не хочет раскладывать себе мины.
821 1746406
>>746369
Нубы берут это из книжек и о культе не подозревают.

>>746373
Ой, что это, ручная оптимизация инкремента в 2020?
говнокод.png47 Кб, 626x788
822 1746415
https://ideone.com/zne3Ww

Помогите, мне нужна таблица, которая хранит какие-то элементы, например пиксели struct {unsigned char red, green, blue}, чтобы к ним можно было обращаться по координатам table[x][y]. Я хуйни нагородил? Поймет ли крестовый компилятор, что мне по факту нужно просто data[ x + (y << p2) ] ? Сможет ли опустить все промежуточное? Может, где-то надо еще инлайны и ссылки добавить?
823 1746424
>>746415
Закинь в godbolt и посмотри на ассемблер. Сравни с тем, что ты бы написал вместо этих двух операторов.
про флаги компилятора не забудь
824 1746437
>>746424

>godbolt


У меня только objdump есть, братишь. Скомпилил с -O3, в main куча call и ни одного сдвига. Надо что-то инлайнить? Но что?
дизасм-говнокода.png90 Кб, 967x636
825 1746438
826 1746447
>>746438
Выкинь оттуда всё, что связано с iostream, оставь только свой код и попробуй ещё раз
827 1746449
>>746437
Ну и на godbolt можно посмотреть, какой кусок чему соответствует
828 1746456
>>746437
Это сайт
829 1746461
>>746447
Убрал все, как ты советовал. Сделал задаваемые с терминала координаты точки, которой присвоить значение, и опа, появился shl в main и с правильным значением, на двух вариантах ширины таблицы попробовал. ОНО РАБОТАЕТ! Может еще что по коду там выше скажешь? Заприватить конструктор Column, и сделать ему Table friend'ом?
830 1746495
>>746461
Я могу тебе посоветовать только посмотреть похожие реализации, например из boost::gil или какого-нибудь eigen. Сам я таким байтоебством почти не занимаюсь.
831 1746540
>>746369
Объясни, чем это тебе не нравится и почему стоит использовать i++
832 1746568
>>746369
Но ведь при постинкременте создается дополнительная временная переменная
833 1746573
>>746415
блять чо ты делаешь блять
https://gcc.godbolt.org/z/zfE7cz
834 1746583
вот еслиб страуструпе новый язык сделал все бы охуели и пошли на него, а этот раст в помойку((
835 1746614
>>728315 (OP)
Можно к этой картинке раст вставить, где прямая, ровная и безопасная дорога
836 1746619
>>746614

> прямая, ровная, безопасная дорога


> не работает асинк


Хех
837 1746621
Какие либы есть для годного сервера с вебсокетами, хттп и удп, построенные на бустасио? Чтобы самому ебаться не нужно было, просто взял и пользуешься.
У меня жопа горит с того что придется на бустасио с нуля писать, даже хочется go использовать
838 1746624
>>746621
Не обязательно кста на бустасио, да.
839 1746646
>>746540
Потому, что c=c+1 --> c+=1 --> c++, а не ++с
Или идиоматическое (✭q++ = ✭p++)
Даже дед Стауструп в книжке предпочитал for ( ... i++)
>>746568
Там uint, инкремент кодируется в одну команду.
В случае, где что-то создается (сложный объект + тупой компилятор), лучше писать ++с. И эта запись сигнализирует, что объект сложный, а оператор ++ не является командой инкремента. Когда запись передает способна передавать дополнительную семантическиую информацию, это хорошо. А повсеместное использование ++с отбрасывает такую информацию.
840 1746649
>>746619
че-нибудь еще можешь сказать петушок?
841 1746655
>>746649

> ко-ко-ко-кудах, сраст


Прости, я по-синхронному не понимаю.
842 1746658
>>746646
Если для интов нет разницы, как писать, ++i или i++, а для итераторов есть (как минимум, реализацию префиксного инкремента быстрее писать), не проще и удобнее ли всегда писать одинаково? На самом деле, все эти "временные объекты" хуйня, всё это прекрасно инлайнится и оптимизируется с вертухи. Я лично всегда выбираю префиксный инкремент как более элементарный и простой, и другим советую.
843 1746673
>>728315 (OP)
Вкатываться ли в программирование? Если мне 29, и я два раза ушел с универов, когда учился на программировании (не было интересно и не было понимания зачем это. но это было давно)
844 1746677
>>746673
Во-первых, ты не в том треде.
Во-вторых

>не интересно


>нет понимания


Нахуя вкатываться то тогда? В твоём случае лучше пойти к врачу.
845 1746681
>>746673
То, что ты за каким-то хуем решил поступить второй раз в универ уже многое говорит
846 1746707
>>746646

> Или идиоматическое (✭q++ = ✭p++)


Дебс, это имеет совсем другой смысл.
Если ты тут напишешь преинремент, то копирование начнется со второго элема.
847 1747034
А вот если я возьму некий адрес с потолка (с точки зрения компилятора), присвою его указателю, разыменую, и этот адрес ВНЕЗАПНО совпадёт с адресом некой переменной (не обязательно из этого же скоупа), при условии, что тип правильный, это будет UB, или нет? Например, сохраню адрес в файл, а потом его где-нибудь прочитаю.
848 1747063
>>747034

> сохраню адрес в файл, а потом его где-нибудь прочитаю.


> это будет UB


да
849 1747090
>>747063
Спасибо.
850 1747204
>>747034
Преобразуем указатель в intptr_t, пишем число в файл, читаем в том же процессе, преобразуем в указатель того же типа. Никакого UB, если объект не освобождался.
851 1747209
>>747204
Как много нюансов. Спс.
852 1747224
>>747204
UB это свойство языка, а не реализации, не?
853 1747230
854 1747253
Какой Style Guide является общепризнанным?
855 1747261
>>747253
Таких нет. Погугли clang-format, там разные варианты есть. Я гугловский с некоторыми изменениями использую.
856 1747262
>>747261
То есть такого, одного.
output-xy.jpg953 Кб, 1024x681
857 1747370
>>746573

>блять чо ты делаешь блять


А мне нужно, чтобы было именно [x][y], а не [y][x]. Сейчас вот потестил на фильтре, который как на пике делает, со своим вариантом [y][x] типа твоего, который у меня уже был этого. Оказалось, скорость одинаковая.
858 1747377
>>747253
BSD4Life
859 1747383
У меня почему-то пригорает от мысли, что OpenGL, возможно, всё. Чисто по субъективным причинам не хочу, чтобы его выкидывали. Тешу себя мыслью, что если выйдет OpenGL 5, о его смерти будет говорить ещё рано.
860 1747387
>>747383
А с чего ты взял, что он всё?
861 1747391
>>747387
Я сам так не считаю, но довольно много тех, кто говорит про полную замену вулканом.
862 1747397
>>747391
А они что-нибудь сложное на нём писали? Просто гл удобен и прост, а вулкан не очень.
863 1747400
864 1747409
>>747397
Не знаю, у них аргумент, что это API предполагается использовать не напрямую, а с помощью движков, которые сами всё разрулят. Звучит убедительно, но ведь далеко не всем нужна трёхмерная графика исключительно для создания AAA-игор. Есть ведь куча научного и подобного софта, где те движки были бы слишком жирными, а использование вулкана слишком трудозатратно. Опенгл тут идеально подошёл бы в качестве апишки среднего уровня, ещё не движок, но уже не системщина.
865 1747415
>>747409
>>747400

Я посмотрел картинку, после неё вопросы отпали, совсем. Тот кто умеет использовать вулкан сверхчеловек.
866 1747454
>>747415
Скорее всего всё не так плохо и это плотно нужно написать всего один раз и забыть про него.
Хотя программирование видеокарты - это говно уровня embedded
867 1747475
>>747383
Что есть всё? Да, развиваться оно скорее всего не будет вообще. Но юзать ты его сможешь юзать сколько хочешь, оно же никуда не ходит. До тех пор, пока тебе не нужны хуанговские лучи и прочие нововведения - используй OpenGL и не парься.
868 1747503
>>747475
Не будет развиваться, по-моему, и есть всё. Ну, не знаю. Время покажет.
869 1747542
>>747034
Что-то похожее уже задевали в прошлых тредах.
И, если я не ошибаюсь, пришли к такому: прога использует что-то вроде косвенной адресации - то есть те адреса, которые ты можешь вывести на экран, это не прямой адрес в оперативе, а в какой-то виртуальный лист памяти, грубо говоря.
И сегодня у тебя нулевой адрес находится в одной части оперативы, а завтра в другой. Допустим, ты подсосался к памяти другой программы, сохранил в файл адрес переменной - в этом случае не получится уже читать с перезапуском из одного и того же места.
Но это все могут быть мои заблуждения из-за того, что я когда-то не понял дискуссию об этом.
870 1747588
>>747542
Операционка теоретически не дает попасть в физические адреса чужого процесса, и тому процессу тоже не дает. Правда есть всякие хитровыебанные уязвимости типа spectre.
871 1747606
>>747034
Доступ к любой памяти, которую ты специально не выделил - UB. А уж попал ты или не попал - без разницы. В адресное пространство другого процесса ты без ReadProcessMemory все равно не достучишься.
872 1747710
>>747034
Ну работать будет, а UB или не UB по бумажкам -- хер его знает.
873 1747711
>>747475

>оно же никуда не ходит


эпол уже задепрекейтила.
874 1747793
>>728315 (OP)
Кто-то ещё пишет на этом некроязыке???
6d030877a2e2bf7852ce39ee7ebd7f19.jpg39 Кб, 680x393
# OP 875 1747817
876 1747819
>>747454
Чот не уверен
877 1747842
Сап аноны. Вкатываюсь к вам. Хочу узнать через какое время изучения языка смогу вкатиться на работу хотя бы на 30к вечно деревянных если в день буду ебашить 4-6 часов с упором в практику. До этого год писал на piтоне.
878 1747887
>>747842
Лет 10-20
879 1747891
>>747887
А что так мало?
880 1748009
>>747370
Зачем тебе, чтобы было [x][y]? Никаких преимуществ перед [y][x] абсолютно, только путает насчёт порядка доступа по индексам: соблазняет цикл внешний сделать по х, внутренний по у (привет кэшмиссы).
Скорость скоростью, но то, что я скинул, в первую очередь, читабельно и просто. Ну и точно быстрее, если тебе это важно. То, что ты там назамерял, ещё ни о чём не говорит.
881 1748036
>>747793
Только тупорылые компании, тебе в таких будет не интересно, так что забей на некроязык и дай анонам поиграться с трупом.
882 1748038
>>747842
На что ты надеешься? Тебе на рiтоне мало платят?
Можно же пойти на hh и посмотреть, что просят от того, кто хочет 30к. Учишь это - собеседуешься. В случае провала снова учишься, потом снова собеседуешься, и так пока не поймешь, что это не твое.
883 1748044
>>748038
На piтоне я делал всякую хуебту на фрилансе для дрочащих мозг васянов с малым бизнесом, а теперь хочу вкатиться в тру язык и быть универсальным и востребованным.

>это не твое


С чего это?
884 1748051
>>748044

>c++


>быть универсальным


Да, тогда действительнотлет 10-20.

>С чего это?


Твой заход начинается с вопроса "что нужно знать, чтобы зарабатывать 30к", и ты просто так почему то решил, что кресты это труЪ, универсально и востребованно.
885 1748055
>>748051
А разве не так? На каком ещё языке можно завести и лоулевел чепуху и игровые движки с ядрами ос? А деньги так-то всем нужны, пиздец экономики грядёт.
886 1748059
>>748055
Чел, просто грустно читать, честно. Движки и ОС как раз и дрочат "лоулевел чепуху".
887 1748067
>>748059
От тебя было больше пользы если бы ты не грустил, а объяснил в чём я не прав и что с крестами не так для достижения моей цели.
888 1748078
>>748067

>чём я не прав


>можно завести и лоулевел чепуху и игровые движки с ядрами ос? А деньги так-то всем нужны, пиздец экономики грядёт.


Вот тут ты и не прав, я вроде это уже написал.

>для достижения моей цели


Какая у тебя цель?
Зарабатывать 30к? Столько можно и в Пятёрочке. 150к? Столько и питонистом можно зарабатывать. Причём тут плюсы?
Быть востребованным? Востребованны 10x инжиры, а быдлокодеры нахуй никому не нужны, от них спасения нет. Язык при этом абсолютно не важен.
Так зачем ты пришёл в плюсовый тред, где парни угорают по ренжам и UB?
889 1748082
А чего так долго без переката в этот раз?
890 1748084
Есть книги для аутистов? Максимально понятные?
891 1748090
>>748084
Попробуй Базовый курс Липпмана. Книга современная и внятная, но насколько подходит людям с проблемами в развитии не знаю.
892 1748094
>>747710
Вот не обязательно. Оптимизатор выпиливает переменные, которые ты явно не использовал, и в результате, если и сработает, похерится что-нибудь другое. Но может с volatile и сработает.
Другой вопрос - если переменная используется явно, или объект вообще в куче...
893 1748099
>>748009

> Зачем тебе, чтобы было [x][y]?


Потому что x всегда идет первым.
894 1748110
>>748099
Ну ты вспомнил. Срач о порядке индексов старше всех здесь присутствующих. Если бы на доске был фортран-тред..

Впрочем, никто не может запретить тебе индексировать хоть змейкой, хоть с единицы.
895 1748152
>>748110
Что вспомнил? Ты математику в школе проходил? Тогда должен понимать.
896 1748157
>>748099
х у школьников там всегда первый, а дальше детские привычки отходят на второй план, и делать начинаешь как надо, а не как учили.
897 1748158
>>748099
нет
898 1748161
>>748157
Х первый у всех, кто занимался математикой.
899 1748162
>>748009
Помню, как я делал в универе лабу на C++ Builder и жидко обосрался, когда пытался в виджет-таблицу записать матрицу, потому что у них, блеать, [x][y].
900 1748167
>>748161
Я сам занимаюсь математикой, и могу вполне авторитетно сказать тебе пойти нахер с такими заявлениями.
901 1748171
>>748167
Решать домашку однокласснице это не "заниматься математикой"
902 1748172
>>748161
Ты конченный.
903 1748184
>>748171
Ну ты-то точно знаешь, что такое "заниматься математикой", икс-то у тебя всегда первый! Ты осознаёшь, фантазёр, что относиться к своим выдумкам как к реальности и хуярить на плюсах -- вещи немного несовместимые? Икс у него блять и игрек не в том порядке, да пошёл ты нахуй.
904 1748242
Если когда-нибудь кто-нибудь ебался с матрицами, которые тензоры второго ранга, в координатном представлении, то он помнит, что элементы матрицы A индексируются номером строки i и номером столбца j как A_i_j. Проводя нехитрую аналогию, i работает как y-координата элемента, j -- как x-координата. Короче, получается A[y][x]. Ещё одно очко в пользу этой записи.
905 1748254
>>748184
Как при умножении 100 на 0 получается не 100, а 0? А? Ученые, в говне моченые? Если я переложу 100 яблок из бочек А в пустую Бочку Б у меня не пропадут блядь яблоки все разом нахуй.
15933880479321.png340 Кб, 900x900
906 1748259
>>748242

>Если когда-нибудь кто-нибудь ебался с матрицами


Ебался с матрицами в direct3d и в opengl, и сгорел нахуй от этих сраных математиков с их ебучими row-major и column-major, которые всё только запутали.
Мне похуй, как оно у них там в воображении делится на строки и колонки, мне надо только знать, какой элемент по счету в памяти куда попадёт.
907 1748263
>>748254
Да, мы в говне мочёные, всё так.
Если серьёзно отвечать на мини-пасту про яблоки, то тут происходит подмена понятий с умножения как чисто математической хуйни на больную фантазию яблочного маньяка.
908 1748266
>>748259
Жиза пиздец. Как я понял, row-major юзают, если базис левый, и наоборот. Вздумал же кто-то глубину глубиной назвать, и понеслось. Все нормальные люди правые тройки используют, а эти нитакие.
910 1748278
Надо сериализовать/десериализовать кучу разных объектов в один файл. Понятно, что для каждого класса можно прописать руками, как конкретно его сериализовать.
А вот как потом обратно по данным из файла создать объект? Еще раз, классы разные. Т.е. допустим первое слово в каждой строке - это название класса. Как зная название класса в string создать его инстанс в рантайме?
911 1748280
>>748254
Если ты переложил яблоки из бочки А в бочку Б, то произошло вычитание, при чём тут умножение на 0?

Если тебе привезли пять бочек по 100 яблок в каждой, то у тебя 5х100 = 500 яблок.
Ты отдал 2 бочки Абу, 2 бочки Страуструпу и 1 бочку Степанову.
У Абу 200 яблок, у Страуструпа 200, у Степанова 100, а у тебя 100х0 = 0 яблок. Ты понял, куда их дел? Если нет, то не пользуйся умножением и не парься.
sage 912 1748303
>>748242
Если кто ебался с curses, там порядок (y, x)
913 1748352
>>748278
Пока что кроме как if (str == "classname")... никак.
Но по идее ты должен знать заранее, что и как ты загружаешь.
914 1748355
>>728315 (OP)
Я не понял, уже середина 2020, а cmake всё ещё не поддерживает модули?
915 1748364
>>747817
>>748036

Дебильные, ну вы чо тригернулись так, кек?
916 1748378
>>748278

>Как зная название класса в string создать его инстанс в рантайме?


Погугли реализации фабрик в с++.
В целом всё, конечно, сводится к if (name == "..."), но можно при желании нагородить систему, в которой классы будут регистрировать себя, а макросами и шаблонами сделать так, чтобы это было одной строчкой в объявлении класса.
917 1748379
>>748364
А ты чего?
918 1748380
Хочу создать класс, в котором есть строка, хранящая имя экземпляра класса. Как это сделать?
919 1748381
>>748378
Плюсую. Нужна фабрика, а if можно убрать только сделав имя шаблонным параметром, но, насколько я понимаю, тогда их все нужно проинстанциировать заранее.
920 1748404
>>748380
MyClass my_object;
my_object.object_name = "my_object";
921 1748520
>>748009
>>748157

>делать как надо


Так ему и надо чтобы x был первым. Вообще то язык это просто инструмент. Это как если бы ты подошел к менеджеру и сказал что у тебя в ценнике сначала будут копейки, а потом рубли, потому что ты по другому запрограммировать не умеешь.
922 1748521
>>748254
Умножение на 0 означает что у тебя спиздили бочку, вместе со всеми яблоками.
923 1748567
>>748520
Ему хочется, чтобы х был первый, у него нет в этом необходимости.
С копейками и рублями немного неточное сравнение. Оно будет более точным, если ценник, в котором поменяли порядок, будет понятнее обычного в десять раз, и покупатель будет тупить на кассе в два раза меньше. Да, кому-то копейки вперёд рублей видеть непривычно, но если это со стороны реализации более естественно, какая тебе разница? Неужели это оправдывает вставку непонятных костылей и уродование кода?
924 1748572
>>748009
>>748520
Я дальше стал экспериментировать. Сделал 4 класса таблицы у котороых [x][y], [y][x], умножение и замена умножения сдвигом (длина строки - степень двойки и дополняется пустыми). Компилил с -O3 на g++ и clang++. Из замеров вмерени исключены всякие резервирования памяти. Тут-то оказалось, что умножение быстрее сдвига! Смотрю в таблицу операций по таймингу
https://www.agner.org/optimize/instruction_tables.pdf
и быть так не должно!
Тогда я решил проверить на несколько отличном от пеки девайсе - Raspberry Pi B+. Одно и то же - умножение быстрее! С поправкой на частоту процессора, конечно. Теперь для окончательного решения сдвиго/умножительного вопроса придется писать на асемблере, благо там алгоритм не сложный.
925 1748573
>>748572
Raspberry Pi 3 B+
быстро
926 1748577
>>748567
Ты ебанутый что ли?
Представь себе какое нибудь использование в реале
get_mouse_pos(&x, &y);
get_pixel(x, y);
c = do_vasyan_calc[y][x];
set_pixel(x, y, c);
Удачи ловить баги, просто потому что у тебя АПИ ебанутое потому что ты не представляешь как записать по другому.
928 1748614
>>748572
Замеры производительности -- довольно тяжёлое занятие. Сам я ориентируюсь на собственные ощущения того, что сколько стоит. В твоей ситуации, я полагаю, всё упирается не в количество тактов на инструкцию, а банально в скорость доступа к памяти, причём разница по скорости между исполнением инструкций и хождению по памяти -- полтора-два порядка. На самом деле не важно, что там у тебя, [x][y] или [y][x], это вопрос простоты реализации и договорённостей между программистами. Важно, чтобы данные обходились в порядке, в котором они лежат в памяти, чтобы процессору удобно было заливать данные из RAM в кэш. Если добавляешь дыры промеж строк, кэширование отрабатывает хуже. Можешь попробовать сделать бенчмарк со случайным характером доступа к памяти, там производительность просядет огого как.
929 1748620
>>748577
Отлично высосано из пальца, молодец, спасибо.
930 1748627
>>748614

>Замеры производительности -- довольно тяжёлое занятие.


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

>В твоей ситуации, я полагаю, всё упирается не в количество тактов на инструкцию


Не знаю уж чего там наоптимизировал компилер, но в нужном месте кода на крестах всего лишь разница - умножение или сдвиг. И разница на всей обработке процентов 75 и на x64, и на arm. Буду делать на асме без хаков, чтобы посмотреть.

>>748009

>Зачем тебе, чтобы было [x][y]? Никаких преимуществ перед [y][x] абсолютно, только путает



>>748157

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



>>748158

>>Потому что x всегда идет первым.


>нет



>>748567

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



Собственно, почему захотел X вперед Y. Пример, функция рисования прямоугольника на WINAPI (и куча подобных функций других API):

BOOL Rectangle(
HDC hdc,
int left,
int top,
int right,
int bottom
);

Сперва X, потом Y.

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

drawScaled(src_table, dst_table, src_x0, src_y0, src_x1, src_y1, dst_x0, dst_y0, dst_x1, dst_y1);

У меня лично глаза на лоб полезут, если иксы с игреками местами поменять.
930 1748627
>>748614

>Замеры производительности -- довольно тяжёлое занятие.


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

>В твоей ситуации, я полагаю, всё упирается не в количество тактов на инструкцию


Не знаю уж чего там наоптимизировал компилер, но в нужном месте кода на крестах всего лишь разница - умножение или сдвиг. И разница на всей обработке процентов 75 и на x64, и на arm. Буду делать на асме без хаков, чтобы посмотреть.

>>748009

>Зачем тебе, чтобы было [x][y]? Никаких преимуществ перед [y][x] абсолютно, только путает



>>748157

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



>>748158

>>Потому что x всегда идет первым.


>нет



>>748567

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



Собственно, почему захотел X вперед Y. Пример, функция рисования прямоугольника на WINAPI (и куча подобных функций других API):

BOOL Rectangle(
HDC hdc,
int left,
int top,
int right,
int bottom
);

Сперва X, потом Y.

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

drawScaled(src_table, dst_table, src_x0, src_y0, src_x1, src_y1, dst_x0, dst_y0, dst_x1, dst_y1);

У меня лично глаза на лоб полезут, если иксы с игреками местами поменять.
931 1748632
>>748627

> Сперва X, потом Y.


Вот и правильно. Абсолютно все библиотеки так делают, анону тоже так нужно делать. А если где-то всё-таки не так, то лучше написать обёртку.
932 1748640
>>748627
Разница ведь не только в умножении и сдвигах, но и в устройстве памяти. Я думаю, разница из-за добавления пустых мест. Вполне может не влезть всё в кэш. Ты на разных размерах массива тестил? На малых, на больших? Чтобы всё в кэш влезло, чтобы ничего не влезло, что-то среднее, и так далее.
>>748632
Да делайте обёрток сколько хотите. Но в итоге, в первую очередь доступ идёт по строке, по у-координате. Если хотите забыть, что там под слоями абстракций -- пожалуйста, но производительность так проебать проще простого. Дизайн кода не должен забывать об особенностях реализации, и, по-хорошему, должен о них напоминать.
933 1748641
>>748614

> разница по скорости между исполнением инструкций и хождению по памяти -- полтора-два порядка


Из памяти нормальные задержки - 20 тактов. При том что современные процы за такт 2-4 инструкции могут выполнить. Но это всё хуйня, если юзается SIMD и правильное кеширование с нормальным выравниванием памяти. Там уже из стека будет сосать вполне со скоростью выполнения кода, особенно если переходы/арифметика. Алсо компилятор не волшебник, если говнокодить, то он не сможет ничего сделать с говнокодом.
>>748632

> Вот и правильно.


Это надо смотреть как обход по пикселям идёт. Чтоб не шагать поперёк линий.
934 1748653
>>748641
20 тактов -- это доступ в L2? Это ещё надо префетчер ублажить, чтоб так всё приятно оказалось. В любом случае, там абсолютно не важно, умножает он или сдвигает для индексации, в его ситуации это вообще на производительность не влияет.
foto28.jpg92 Кб, 1024x681
935 1748660
>>748640

>Разница ведь не только в умножении и сдвигах, но и в устройстве памяти.


Так и предполагаю, в принципе, что при использовании сдвига вместо умножения в кэш грузятся бесполезные данные. Скорее всего ,в этом дело. Тестил на одной картинке пикрелейтед.
936 1748662
>>748660
Да, всё примерно так и происходит. Потести на картинках разных размеров, станет понятнее.
937 1748664
>>748660
Ойбля, а у нее ширина 1024, степерь двойки, паддинга мусором в строках пикселей вообще нет. Короче, как заассемблю это все, отпишусь.
938 1748671
>>748664
Бля, действительно. Могу тебе с этой хуйнёй только посочувствовать. Удачи.
939 1748681
>>748653

> это доступ в L2?


Напрямую в ОЗУ. Если память выровнена по блокам кеша, то проц весь блок кеширует в L1 при обращении в начало блока, при последовательном чтении сильно быстрее будет. Опять же, можно в AVX-регистры тянуть данные, будет быстрее чем по 64 бита в RAX и ждать задержку. Компиляторы обычно такое не делают, у них максимальная совместимость с некроамудой.
940 1748695
>>748681
А я думал, что напрямую в хорошую современную RAM сходить стоит 50нс. Я правильно понимаю, что при частоте 4ГГц, время такта равно 0.25нс? Тогда поход в некэшированную память -- 200 тактов. Но это при произвольном доступе будет, с данными, не помещающимися в кэш, а не при последовательном. Кстати, блок -- это сколько? Зависит от проца? Так-то довольно логично получается, заебись, спасибо.
941 1748739
>>748620
Сразу понятно, что ты сложнее laba2.cpp ничего не писал
942 1748740
Народ, работал 2 года байтойобом на МК, год писал на C# на юните, сейчас хочу вкатиться в с++. Что нужно уметь чтобы устроиться мидлом или джуном в мск? Мб проекты на примете есть, чтобы прокачаться ? Спасибо
943 1748745
>>748740
С++/STL можешь еще QT добавить.
944 1748764
>>747793
мы в Нвидии за 600кк\нс пишем
945 1748781
>>748355
А они где-нибудь уже норм поддерживаются?
946 1748783
>>748567

>Неужели это оправдывает вставку непонятных костылей и уродование кода?


Юзабилити всегда важнее красоты кода.
947 1748822
>>748695

> блок -- это сколько?


64 байта. Под данные обычно 64 блока. Остальное под код.
948 1748866
>>748740
Нужно уметь пользоваться сайтами с вакансиями, где пишут требования к кандидатам.
949 1748922
а чего, ананасы, сколько получаете вообще? интернет говорит что по мск средняя 70к. Я так понимаю, что тут смешали и ждунов и сеньеров, потому что низковато в принципе для москвы, не то что уж для айти
950 1748926
>>748922

> интернет говорит что по мск средняя 70к


Я бы за такие деньги не пошёл даже джуном пинать хуи. Мало того что кодинг сам по себе рабская работа, так ещё и платят меньше чем админам без опыта.
951 1748935
>>748926
да это хуйня полная, думаю. Поэтому и хочу узнать у КОМЮНИТИ
952 1749106
>>728315 (OP)
Что выбрать - сабж или питон.
953 1749130
>>749106
ПидоRust.
954 1749132
>>749130
Да нахуй он нужен?
955 1749141
>>749132
Язык за которым будущее системного программирования.
956 1749143
>>749141
Чем кресты не такой язык? И раст ведь сложнее.
957 1749151
>>749143
Раст не сложнее. У крестов будущего нет. Раст безопаснее их и не тащит груз обратной совместимости длиной в 30 лет.
958 1749172
>>749151

>будущего нет


Поэтому на них пишется 90% софта и игр?
959 1749180
>>749151
Раст не безопаснее.
960 1749182
>>749172
Новый софт не пишут.
961 1749183
>>749180
Безопаснее. Там ты никогда не сделаешь ошибок с памятью.
962 1749186
>>749183
Хуйню несешь.
963 1749188
>>749182
>>749183
Мне похуй короче. С какой книги лучше всего начинать изучение крестов?
964 1749190
>>749182
тебя послушай, так он вообще нахуй не нужен
везде, где есть железо и взаимодейсвтие с ним нужен с++ - те же ебучие беспилотники яндекса. Давай, ебани на расте пойди обработку данных с лидара
965 1749193
Какие отличия ссылок от указателей?
966 1749201
>>749193
Ссылка прибивается гвоздями один раз - ее нельзя не проинициализировать, нельзя поменять на другой объект, нельзя присвоить nullptr, нельзя сделать ссылку на ссылку, нельзя складывать ссылку с ссылкой.
967 1749229
>>749188
Бамп годному вопросу.
968 1749240
>>749201
Спасибо
969 1749241
>>749229
Шапку читай.
970 1749247
>>749241
Какую лучше читать из шапки? Что масса признаёт больше?
971 1749251
>>749247
Барбару МУ читай
972 1749252
>>749251
Ок, спасибо.
973 1749256
>>749201
Так теперь еще вопрос. Где это используется? И как часто?
974 1749261
>>749256
в сигнатуре 99% функций
qqqqqqqqqqqqqqaaaaaaaaaa.png74 Кб, 1534x195
975 1749321
Сап двач.
Пытаюсь собрать QtHttpServer https://www.qt.io/blog/2019/01/25/introducing-qt-http-server
Получаю пикрилейтед.
Qt 5.9.5.

Пытался найти документацию по QtPrivate, чёт вообще ничего нет. Как править?
976 1749402
>>749256
Лично мне удобно очень использовать их в параметрах функций, когда нужно передать объект, а не копию, но не хочется использовать синтаксис указателей.
977 1749433
>>749402
До параметров функций я еще не дошел
978 1749435
>>748783
До тех пор, пока тебе не понадобилось обеспечить корректность его исполнения, или, что ещё хуже, поправить там чего-нибудь. Хороший код выглядит просто и читается просто, а такое месиво, как у того анона, это невозможно ни прочитать, ни поддерживать. А юзабилити эту твою я смогу обёрточкой накинуть всегда, если меня будут просить такие вот, как ты.
>>748822
А, это ты cacheline так хитро назвал. Тогда я нихуя нового не узнал, а ты не объяснил, почему при последовательном доступе всё работает гораздо быстрее, чем при случайном. Как я понимаю, за счёт вот этого механизма происходит вся магия: https://en.wikipedia.org/wiki/Cache_prefetching
979 1749446
>>749435

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


Потому что при обращении в начало выровненного блока кешируется весь блок и последующие данные берутся из кеша. Сколько раз тебе надо это повторить? У тебя только каждые 64 байта идёт прямой запрос данных из памяти. А если ты читаешь случайные данные, то ничего не кешируется в принципе, каждый раз ждешь задержку.
Ещё почитай про throughput и как правильно разбивать цепочки инструкций для одновременного выполнения некоторых инструкций, что может помочь в чтении случайных данных.
980 1749495
>>748926
Антош, ну не расстраивай меня пожалуйста
981 1749509
>>749507 (Del)
Сегодня в 21:00 по МСК
982 1749541
>>749509
Не перекатишь - отсосёшь.
983 1749551
>>748922
Средняя 100к вроде. 60-100к обычно вилка джуна/стажера.
984 1749562
>>749551
И сколько времени нужно с 0 чтобы выучиться до уровня джуна/стажера?
985 1749571
>>749562
1 год 4 месяца 24 дня 11 часов 13 минут 63 секунды
чел, что ты ожидал услышать, всё от тебя зависит: куда вкатываться собираешься, сколько времени будешь тратить, как качественно ты учишься и тды
986 1749573
>>749446
По твоей логике, если я работаю с выровненными данными размером 64 байта, я не увижу разницы между последовательным и произвольным доступом? Ведь тогда каждый доступ по памяти влечёт хождение в RAM.
987 1749580
>>749562
от полугода до бесконечности
988 1749611
>>749573
У меня такое ощущение, что ты под солями. Готовишься к завтрашнему дню?
989 1749625
>>749611
Скорее ты, он же все правильно написал.
990 1749645
>>749573

> если я работаю с выровненными данными размером 64 байта


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


Давай ещё раз. Для тупых.
Когда у тебя выровнена память по 64 байта и ты читаешь последовательно - у тебя после первого чтения остальные данные из блока в 64 байта берутся из кеша.
Когда у тебя произвольное чтение - каждое следующее обращение промахивается мимо кешированного блока и равно отсутствию какого-либо кеша.
991 1749648
>>749645

>Давай ещё раз. Для тупых.


Давай.

>данными размером 64 байта


Какие

>остальные данные из блока в 64 байта берутся из кеша.


Если он уже все 64 байта прочитал?
992 1749657
>>749645
Я тогда тебе охуенный вопрос задам: а как проц определяет, какое чтение произвольное, а какое нет? Ты, наверное, удивишься, но никак. Поэтому прочитанное из RAM подымается наверх до L1 вне зависимости от того, какой у чтения характер, произвольный или последовательный. А вот хардверный префетчер (и софтверный, если есть) как раз следит за характером чтения, и если оно становится похоже на последовательное, то он начинает заливать данные из памяти в кэш ещё до того, как память понадобится. Именно за счёт этого получается быстро, а не из-за простого факта существования кэш-линии.
993 1749658
>>749657

>память понадобится


Данные, конечно, не память, пардон.
994 1749663
>>749645
А, я ещё пару раз перечитал твой пост и понял, что ты не понял. Я о случае, когда меня интересует вся кэш-линия, полностью. В таком случае, какой прок от твоего кэширования?
1528314748780.png67 Кб, 687x461
995 1749668
>>749648

> Если он уже все 64 байта прочитал?


Как он тебе их прочитает за раз? У тебя 8 операций чтения будет, либо если SIMD используется, то инструкции SSE/AVX довольно медленные. Пока читаются эти 64 байта, в другом порте идет обращение к следующему блоку и его кеширование. Ты же не просто перемещаешь данные, а что-то с ними делаешь. Это с копированием ты в любом случае упираешься в ОЗУ.
>>749657

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


Для таких случаев есть документация по архитектуре от вендоров, где тебе пишут как надо обращаться в память чтоб было быстро. Это тебе надо следить чтоб оно было последовательным, а не процу ванговать что в следующей инструкции ты соизволишь читать.
996 1749684
>>749668
Так, подожди, не путай. Я говорю не об одновременном чтении. Я говорю о том, что мне нужна вся кэш-линия, ровно 64 байта. Ты заострял внимание на эффекте, порождаемом бесполезностью части кэш-линии при случайном чтении, если она мне нужна вся, я привёл пример, когда этот эффект обнуляется.
Ты писал, что "блок" улетает в кэш ровно при обращении в его начало, а теперь пишешь, что где-то там до обращения к следующему "блоку", тот кэшируется вместе с ним. Я не могу понять, ты виляешь жопой, или просто не можешь чётко выразить мысль?
997 1749685
>>749684

> нужна вся


не вся
1537661809047.png131 Кб, 1000x736
998 1749707
>>749684

> при случайном чтении


У тебя случайное чтение в пределах 64 байт?

> "блок" улетает в кэш ровно при обращении в его начало, а теперь пишешь, что где-то там до обращения к следующему "блоку"


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

> не можешь чётко выразить мысль?


Это у тебя какие-то проблемы с пониманием как работает кеш.

> в другом порте идет обращение к следующему блоку и его кеширование


Что тебе тут не понятно? Почему следующий блок кешируется до того как в нём появляется необходимость или что?
999 1749718
>>749707
Ладно, я понял, что твою толстую бронь не пробить. Я сдаюсь.
1000 1749726
>>749718

> Я сдаюсь.


Молодец. Зачем вообще тогда пытался разобраться, если даже не стараешься?
Хотя если вместо чтения документации ты фантазируешь в треде, то наверное тебе и не сильно надо было.
1001 1749730
>>749718
Не обращай на него внимания, какой то трал или шизик.
1002 1749791
>>749201

>Ссылка прибивается гвоздями один раз - ее нельзя не проинициализировать, нельзя поменять на другой объект



int i = 0;
int& ri = i;

::new(&i) int{}; // ri ссылается теперь на другой объект
1003 1749796
>>749791
Не. Значение объекта можно менять. А объект то тот же.
1004 1749801
Перекат будет?
1005 1749809
Крестаны, почемы вы до сих пор не написали код быстрее rust? Ммм? В чем дело?
1006 1749813
>>749809
Почитай на хабре про эти ебанутые тесты
1007 1749814
>>749813
Можно ссылку?
1008 1749818
>>749814
https://habr.com/ru/post/480608/

Там в комментах срач хороший. tldr - SIMD инструкции можно дергать хоть из питона через Numpy, результат будет очень близок
1009 1749819
>>749818
Спасиюо
1010 1749826
>>749562
Ну в клепание формочек на QT за полгода-год вкатиться еще можно. Если что-то более серьезное, то больше года.
1011 1749836
>>749826
формочки на куте это нихуя не просто
1012 1749840
>>749818

>SIMD инструкции можно дергать хоть из питона через Numpy, результат будет очень близок


А, сорян вот, дернуть-то я и письку могу. Их можно дергать из pitona, чтобы нечто типа fftw3 получилось?
1013 1749844
>>749840
Напрямую из питона нет. Но из питона через сишную прослойку (в нашем случае как раз Numpy, как пример) - да
1014 1749848
>>749844
Numpy компилирует в нативный процессорный код?
1015 1749849
>>749848
Внутри numpy есть проверки на cpuid и использование SIMD для ускорения различных операций, если оно поддерживается.
1016 1749853
>>749849
А если я прям захочу сделать movavg, то это, вероятно, и не нужно вовсе?
1017 1749858
>>749853
Сделай, кто тебе мешает. Вопрос использовать ли SIMD под капотом ты решаешь для себя сам.
1018 1749863
>>749858
То есть Python в данном случае лишь клей. Только в таком смысле и имеет смысл его обсуждать, хорошой ли он клей для блоков более быстрых алгоритмов. Как зашить питоний проект в одну экзешку? Да никак, только распаковать скрипты в %temp%, других вариантов не существует.
1019 1749865
>>749796

>А объект то тот же.


new создаёт новый объект.
1020 1749866
>>749865
Угу. int.
1021 1749869
>>749866
В данном случае типа int, верно.
1022 1749871
>>749791
Это UB
1023 1749872
>>749871
Нет.
изображение.png27 Кб, 1003x377
1024 1749984
Каким образом можно реализации шаблонных функций написать в другой единице трансляции?
По идее ему нужно явно в second.cpp написать что-то вроде using A<float>, чтобы он знал что используется float и скомпилировал функции с флоатом - но что-то я не могу нагуглить каким образом это можно указать.
1025 1750012
>>749984
Тебе нужно ещё явно инстанцировать шаблон для тех типов, с которыми работать будешь.
1026 1750086
>>749984
Ты почти угадал. Просто не using, а template
https://stackoverflow.com/questions/2351148/explicit-template-instantiation-when-is-it-used
1027 1750114
>>749836
Почему?
1028 1750132
>>750086
Мур, благодарю.
1029 1750143
>>750114
Потому-что надо знать С++, неправильный С++ (например то, как QT манажит память), и еще сам Qt сверху.
1030 1750223
Как сделать string to int?
1032 1750234
>>750227
Что лучше, то что ты скинул или stoi?
1527562339483.png88 Кб, 1884x743
1033 1750266
>>750234
Я слышал что from_chars люто оптимизировали на скорость. Но это, наверное, больше к флоатам относится.
1034 1750269
>>750266
А он всеми компиляторами поддерживается?
1035 1750280
Мда, попытка посчитать сумму цифр превращается в ад.
1591186131091.png18 Кб, 594x359
1036 1750309
>>750280
Прикалываешься что ли?
(Пытался на ренжах написать, но чет пока запутался)
1037 1750357
>>750309
Я пытался почитать сумму цифр в string, что сути не меняет. Сделал потом как на пикриле, но по началу не очень принимал эту идею. Это будет во всех кодировках норм работать? Есть ли кодировки где цифры не подряд идут?
1038 1750380
>>750269
Это часть 17 стандарта, так что должно всеми
1039 1750395
>>750380
по-моему в гцц все еще нету
1040 1750401
>>750395
https://en.cppreference.com/w/cpp/compiler_support
С 8 версии есть Elementary string conversions
1041 1750443
>>750357
Нет, разделители и точки не учитываются.
1042 1750535
Почему QLabel не хочет менять картинку в цикле?
Я пишу for в котором меняю картинку, затем thread::sleep_for(2s), поток спит, но изменение картинки, вызванное ранее, не срабатывает
Компилятор как-то пытается оптимизировать мой код и решает один раз поменять картинку вместо n?
1043 1750598
>>750535
Для такой хуйни придумали QTimer
1044 1750604
>>750223
Это пиздец, я ебался с лямбдами и stoi, когда можно было просто boost::lexical_cast заюзать. Будем верить что в 20 стандарте завезут.
1045 1750608
1046 1750667
>>750662 (Del)
18-20 и 31-33 строчки.
1047 1750682
>>750677 (Del)
И что? Это одинаково в обоих случаях.
Перепиши как надо, кто против то?
1048 1750688
>>750687 (Del)
Я использую P-R.
1049 1750695
>>750687 (Del)
Я думаю, бенчмарк о том, что from_chars явно сколько-нибудь быстрее, чем stoi. Непонятно, насколько, но быстрее, и именно это и хотелось показать. Правда, непонятно, лежит ли эта разница в пределах "погрешности измерения".
1050 1750696
>>750694 (Del)
Мне похуй что интересует "вас", при изменении Q один из них как будет быстрее, так и останется.
1051 1750714
У меня почему-то 115-й тред не отображается, у вас тоже так?
1052 1750730
char*
говнокод.png39 Кб, 718x670
1053 1750731
>>748641

>Это надо смотреть как обход по пикселям идёт. Чтоб не шагать поперёк линий.



https://ideone.com/0A4SZZ

Какой все же вредный этот ваш кэш. А если мне надо побегать вокруг пикселя относительно хаотически в некотором радиусе? Ну, допустим, побью я картинку на квадратные тайлы, при первом обращении буду запрашивать [0][0] пиксель тайла, чтобы весь квадрат зэкэшился. Конкретный размер квадрата надо смотреть из параметров конкретного процессора? А как?
1054 1750739
1055 1750888
Двач, где читать про то, как работает QT и про его подводные.В интернете есть только как работать с QT, а не его принципы и технологии работы. Шлее читал, годно.
1056 1750898
>>750888
QT это гигантская обоссаная абстракция, внутрь лазить - ну спорно.

А вообще статьи на kdab.com и https://www.bogotobogo.com
1057 1750956
>>750731
У практически всех процессоров, на которых твой код может запуститься, длина cache line -- 64 байта. Кстати, необязательно запрашивать [0][0] пиксель тайла, тот анон просто шиз. У тебя при доступе к любой памяти в кэш улетает 64 байта, в которых она содержится.
Хорошая статейка про наблюдаемые эффекты кэширования: http://igoro.com/archive/gallery-of-processor-cache-effects/
1058 1750972
>>750888

> Шлее читал, годно.


Ну ты и годноед. Шлее - это копипаст официальных доков qt
1059 1751657
>>750972
Че ряльна?
1061 1752461
>>741681
Элементарное свинае делаешь и всё
template <class OneByte>
std::enable_if_t<(sizeof(OneByte) == 1),void> foo() {
}
1062 1753899
>>748184
Это он ещё не сталкивался с формулой перемножения матриц.
Как у него крышу сорвет-то.
1063 1759360
пытаюсь написать обёртку для окон из винапи

в апи при регистрации окна в поле соответствующей структуры записывается указатель на процедуру-обработчик

в своем классе-обертке мне надо бы туда скормить лямбду которая захватила this

но стейтфул лямбды к указателю не приводится

есть ли способ это как-нибудь обойти может передать указатель на оператор () у лямбды или типа того?
1064 1759657
>>759360
Сделай структуру, в которой будет лежать std::function, и на эту структуру передавай указатель.
1065 1768937
>>728732
Можно просто f(T(&a)[n]).
1066 1772663
>>741244
В прямом, на то она и Community-версия (Она же на пике?). Насчёт платных не в курсе.
image.png3 Кб, 280x87
1067 1781064
1068 1781103
>>781064
Тупая скриптомакака подтвердила свою тупость. Привет из 118 треда.
1069 1845153
Ребят, что думаете насчёт обучения за счёт реализации разных классов/функций из STL самостоятельно?
Тред утонул или удален.
Это копия, сохраненная 31 декабря 2020 года.

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

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