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


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

Check this out!
<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
523 43 115

C++ тред #104 /cpp/ Аноним 19/02/20 Срд 17:35:18 16080461
1576060718919.png (100Кб, 1200x1349)
1200x1349
1498923552785.png (22Кб, 862x433)
862x433
1495601895350.png (455Кб, 500x808)
500x808
Аноним 19/02/20 Срд 17:39:28 16080522
1566095557679.png (196Кб, 471x591)
471x591
Палю годноту
Аноним 19/02/20 Срд 19:33:24 16081293
изображение.png (493Кб, 843x1200)
843x1200
>>1608052
А у меня такая есть.
Аноним 19/02/20 Срд 21:37:19 16083554
Анон, нужно твое авторитетное мнение по поводу использования крестов в микроконтроллерах, например, какой-нибудь стмке 32.
С одной стороны, везде СИ блядь, драйвера, память нахуй с другой - кресты с их отличными плюсами, шаблонами там, абстракцией и всей хуйней. В реальных задачах на мк хорошо выделяется часть, которая железная и часть, в которой сама суть работы.
Аноним 19/02/20 Срд 22:33:45 16084475
Сап, аноны, решил вычислить n-ое число pi. Нашел алгоритм типо вычисляющий n-th pi число с логарифмической сложностью, но я его походу реализовал через одно место, хз в чем трабл. Кто шарит, прошу помочь

Мой говнокод и алгоритм:
https://rentry.co/picomputation

П. С. Вычисляющий это число в десятичной системе, а не в шестднацатеричной как в формуле Бэйли — Боруэйна — Плаффа.
Аноним 19/02/20 Срд 22:35:13 16084526
Единсвенное не понял какое выбрать n0, вроде для ошибки типо, т. е. чем больше, тем лучше, но результат меняется каждый раз довольно сильно
Аноним 19/02/20 Срд 23:57:54 16085707
>>1608447
Вангую что в статье log = log2, а ты используешь log = ln.
Аноним 20/02/20 Чтв 08:41:57 16087638
>>1608447
Дебаггером пройдись, что ты как маленький
Аноним 20/02/20 Чтв 11:10:12 16088629
image.png (175Кб, 763x271)
763x271
image.png (18Кб, 565x317)
565x317
image.png (65Кб, 677x330)
677x330
помогите пожилому вкатывальщику по книге страуструпа плз. 1) задача; 2) говнокод; 3) результат. Чо т я заебался уже, фигурные скобки во все места перебрал, либо одну 3 выводит с ошибкой, либо просто ошибку, либо ничего
Аноним 20/02/20 Чтв 11:52:15 160891010
main.png (13Кб, 442x358)
442x358
>>1608862
быстренько наговнокодил в блокнотике
Аноним 20/02/20 Чтв 12:33:53 160895311
Аноним 20/02/20 Чтв 13:13:37 160897912
>>1608953
>> ncurses
зачем ты в это палочкой тыкаешь
Аноним 20/02/20 Чтв 13:38:37 160900413
1582195116910.png (12Кб, 424x105)
424x105
1582195116927.png (4Кб, 266x66)
266x66
Почему пакет для разработки на плюсах в студии весит ебаных 6 гб?
Аноним 20/02/20 Чтв 13:47:34 160901414
>>1609004
ну там же написано, что современный и молодежный)
Аноним 20/02/20 Чтв 13:53:59 160902115
image.png (49Кб, 568x434)
568x434
>>1608910
чуть исправил, спасибо (у тебя p не из вектора берётся, поэтому он все числа подряд вывел)
Аноним 20/02/20 Чтв 14:00:33 160903816
>>1609021
Ну так в задание же вроде сказано вывести все простые числа до 100
Аноним 20/02/20 Чтв 14:51:05 160908317
>>1609021
>setlocale
Нахуя? Есть же wideutf16 строки без ебли с кодировками.
Аноним 20/02/20 Чтв 14:56:28 160908518
>>1609083
да эти setlocale еще со времен мамонтов в примерах учебников висят, вот их и копируют везде
Аноним 20/02/20 Чтв 16:15:19 160918219
Screenshot2.png (42Кб, 758x480)
758x480
Простите за тупой вопрос, но почему _itoa_s возвращает мне строку, где вначале мусор в виде 37777777, раньше такой же код у меня работал, теперь перед ответом добавляет этот мусор.
Аноним 20/02/20 Чтв 16:26:18 160919420
>>1609021
Можно просто
vector primes {2};
for (int i = 3; i <= 100; ++i)
__if (find_if (begin(primes), end(primes), (int x){return i%x == 0; }) == end(primes) )
____primes.push_back(i);
Аноним 20/02/20 Чтв 16:27:31 160919621
>>1609194
[code]
[](int x)
[/code]
квадратные скобки вакаба съела
Аноним 20/02/20 Чтв 16:55:08 160921622
>>1609182
malloc в C++ до 20ого стандарт - undefined behavior. Выкинь и перепиши нормально.

И какие блять ITOA когда ты пишешь на С++ - либо from_chars, либо to_string
Аноним 20/02/20 Чтв 17:26:01 160923523
>>1609194
найс функция find_if, жаль труп страуса ей не учит на этапе этой задачи, спасибо.
Аноним 20/02/20 Чтв 17:31:59 160924024
>>1609235
Двачую, я когда анону картинку с решением кидал, то за auto еще терзал себя, что зря вписал, а он тут ему find_if предлагает))
Аноним 20/02/20 Чтв 18:04:24 160925325
>>1609240
Ну так то да, у нас обычная практика обучения крестам - дать подмножество из си плюс основы ООП, хотя знание стл, какбэ тоже часть языка, хотя бы 99 стандарта даёт реальный буст производительности кодера, уровня абстракции и понятности кода.
А на 17 вообще сказка, заметили там наверху что вектору тип не нужно прописывать?
Аноним 20/02/20 Чтв 18:06:43 160925526
>>1609196
[code]

[/code]
Захват переменной забыл
Аноним 20/02/20 Чтв 18:11:04 160925827
>>1609253
>1) const в глобале = static const (только в C++)
Допустим у нас есть header.h: const int h = 5;
Если мы его включим в несколько .c файлов без защитных директив, то линковщик С выдаст multiply definition, а в С++ все скомплится на ура. А все потому, что в С++ h является локальной в каждом файле, куда подключен header. Если нужно использвать const int через extern, то при определении переменной, надо писать extern const int h= 5

>2) В C++ нет VLA.
int foo (size_t n, size_t m[n]); // Не скомплится в С++
Хотя не все комплиторы работающие с С11 могут в VLA, а вот для C99 поддерживать обязаны.

3) А еще в Си вместо темплейтов есть _Generic:
int print_int(int d) {
printf("%d\n", d);
}
#define print(d) _Generic((d), int: print_int)(d)
main() { print(123); }

4) Ну и конечно же Compound Literals. Онли С совместимый код белоу:
char foo = (char []) {"x", "y", "z"};
int i = ++(int){1};
Аноним 20/02/20 Чтв 18:27:27 160926928
Аноним 20/02/20 Чтв 18:28:09 160927029
>>1609216
> malloc в C++ до 20ого стандарт - undefined behavior
Ай не пизди.
Аноним 20/02/20 Чтв 18:28:50 160927130
>>1609004
WinSDK
MFC
ATL
Всякие адаптеры тестов и прочие не нужные тебе штуковины.
Аноним 20/02/20 Чтв 18:32:54 160927231
>>1609270
Ну тащемта да, но все конпеляторы нормально с этим работали.
>>1609258
> extern const
const
_____expr
Аноним 20/02/20 Чтв 18:34:39 160927432
>>1609258
Что те непонятно в "подмножество из си"? Это часть си, не весь, кресты не обязаны это реализовать, всё-таки разные языки под разные вещи.
ЗЫ я имел дело с например сишными проектами для вертолетных автопилотов и никогда там такого не видел, мож плохо искал? Хотя могли делать под конкретные компиляторы канеш.
Аноним 20/02/20 Чтв 18:45:50 160928033
Где решать олимпиадные задачи с тестами?
Аноним 20/02/20 Чтв 18:50:57 160928434
1511222809556.png (19Кб, 444x348)
444x348
>>1609274
>подмножетсво
А вот и не подмножество, см пик, ток у С++ своя часть в x10 раз больше
Аноним 20/02/20 Чтв 19:14:46 160929935
Аноним 20/02/20 Чтв 19:19:20 160930436
Аноним 20/02/20 Чтв 19:20:23 160930537
>>1609274
У если сишные автопилоты не используют _Generic, это не значит, что в языке си не _Generic, что за импликация от частного к общему?
Аноним 20/02/20 Чтв 19:27:28 160931338
>>1609194
>find_if (begin(primes), end(primes), (int x){return i%x == 0; }) == end(primes)
Как это называется? Как почитать?
Аноним 20/02/20 Чтв 19:44:11 160933939
Олды, объясните, почему я не могу инициализировать так свои значения в массиве? (T это int*)
https://pastebin.com/GSkV5Si3
Аноним 20/02/20 Чтв 19:54:12 160936840
Если скопировать и вставить код в visual studio, то он автоматически отредактируется по определенному шаблону. Вот как этот шаблон изменить? Например, чтобы после ( и перед ) всегда был пробел, или чтобы { был на одной строке с выражением, а не под ним.
Аноним 20/02/20 Чтв 19:54:56 160937041
>>1609216
itoa это функция перевода в любую систему счисления, а не в стринг.
Аноним 20/02/20 Чтв 19:59:55 160937642
Аноним 20/02/20 Чтв 20:03:28 160938043
>>1609376
Подобный стиль же должен иметь название
Аноним 20/02/20 Чтв 20:35:12 160941544
>>1609269
А что у нас класс строк для utf-8 завезли чтоб без всякой ебли изкарбоки? Нет. Ну и нахуй этот utf-8 тогда.
Аноним 20/02/20 Чтв 22:21:59 160960145
>>1608570
Все равно хуйня, результат варируется от n0 пиздец как сильно, установил в 1
Аноним 20/02/20 Чтв 22:52:58 160964146
1471580621835.png (305Кб, 1435x894)
1435x894
Ананасы, чтоб на зубок к собесу выучили
Аноним 20/02/20 Чтв 22:58:25 160964647
Как заставить шланг компилять? Выдает горы ошибок, нихера не ясно, g++ все собирает без проблем.
Аноним 20/02/20 Чтв 22:59:22 160964848
.
Аноним 20/02/20 Чтв 23:00:28 160965149
Если смысл учить Мейерса про STL 2002 года, или лучше взять Галовица для C++17?
Аноним 20/02/20 Чтв 23:03:36 160965750
>>1609651
конечно, c++17, на дворе вообще 2к20
Аноним 20/02/20 Чтв 23:06:41 160965851
>>1609641
Чтоб как таблицу умножения знали
Аноним 20/02/20 Чтв 23:07:02 160965952
>>1609641
Зачем, ведь есть VA/Resharper C++
Аноним 20/02/20 Чтв 23:20:44 160966853
>>1609415
Ну как бы в c++20 будет. А пока можешь юзать обычный std::string как в линуксе
Аноним 20/02/20 Чтв 23:55:05 160969454
>>1609641
Спасибо анончик, давно искал подобную таблицу.
Аноним 20/02/20 Чтв 23:56:06 160969755
>>1609651
Нет смысла. Читай свежатину.
Аноним 20/02/20 Чтв 23:56:46 160969856
>>1609668
Есть же wstring? И UNICODE_STRING виндовый.
Аноним 21/02/20 Птн 00:34:32 160973957
Подскажите на сколько распараллеливание по ядрам на плюсах сложнее по сравнению с распараллеливанием на других языках?
Аноним 21/02/20 Птн 00:42:05 160974558
Аноним 21/02/20 Птн 00:47:10 160975259
>>1609745
Чел, советовать целую книгу с теорией человеку, который спросил про сложность этой задачи как минимум тупо.
Аноним 21/02/20 Птн 00:48:49 160975460
С++ сеньоры помидоры, я правильно понимаю, что exceptions считаются замедляющими код, не потому что они как-то ресурсо-затратно сделаны сами по себе, а из-за того, что куча различных оптимизаций (типо перемещения) невозможна из-за вызывающихся в конструктрах/деструкторах исключений?
Аноним 21/02/20 Птн 01:21:09 160977761
>>1609641
писец, это кто-то реально вот так в виде таблички учит? педагогия уровня b прямо
Аноним 21/02/20 Птн 01:22:31 160977862
>>1609754
Ну и код они в том числе замедляют.
Аноним 21/02/20 Птн 01:31:27 160978163
Сап, аноны, помогите разобраться с mutex'ом и синхронизацией потоков.
Допустим, у меня есть очередь, один поток постоянно проверяет пуста ли очередь, если нет, то выводит на печать первый элемент и удаляет его.
И есть поток (метод класса, если объектов много - то поток не один), который добавляет элементы в очередь.
Куда нужно ставить lock и unlock, чтобы все безопасно работало?
Аноним 21/02/20 Птн 01:38:47 160978664
>>1609781
Ну для твоего случая есть condition_variables,
ты захватываешь мьтекс, который wait освобождаешь и лочит, когда ей приходит уведомление, а затем чекает: если предикат норм, то выход и исполняем код, а если нет - освобождаем мьютекс и ждем следующее notify

condition_variable cond;
Queue q;
...
void pull_from_queue() {
...
unique_lock<mutex> lock(mtx);
wait(lock, []{ return !q.empty() };
...
}

void add_in_queue() {
q.push_front(...);
cond.notify)one();
}

Собсна так синхронизация потоков и делается, через онли мьютексы тебе придется задержку создавать, чтобы дать захватить мьютекс функции, добавляющей в queue элемент, и все это в while
Аноним 21/02/20 Птн 01:39:40 160978965
>>1609786
>мьтекс, который wait освобождаешь
мьютекс, который в wait освобождается и лочится, когда cond приходит уведомление
быстро фикс
Аноним 21/02/20 Птн 01:42:27 160979166
1453344148689.png (24Кб, 477x351)
477x351
Аноним 21/02/20 Птн 01:49:07 160979767
Аноним 21/02/20 Птн 01:58:45 160980568
>>1609698
Ну так не будет больше этой поеботы в кроссплатформенных приложениях. One u8string to rule them all
Аноним 21/02/20 Птн 05:30:28 160984669
Аноним 21/02/20 Птн 06:16:18 160985370
>>1609380
Стандартная библиотека крестов он называется XDD
С рейнджами это выглядит ещё короче и понятнее.
Аноним 21/02/20 Птн 08:53:35 160990071
primes.png (6Кб, 607x135)
607x135
Аноним 21/02/20 Птн 09:02:45 160990772
>>1609805
А чем wide строки не подходят для кроссплатформенности? Вся винда же работает на них и поддерживает кучу разных языков.
Аноним 21/02/20 Птн 09:08:05 160991273
>>1609907
Это же ублюдочный стандарт с переменной длиной кодировки, до 4 байт. Utf16 наше все.
Аноним 21/02/20 Птн 09:44:11 160993374
Аноним 21/02/20 Птн 10:48:55 160996275
>>1609739
Без понятия как в других языках, я только в С++ параллелить умею
Аноним 21/02/20 Птн 10:53:42 160996576
Аноним 21/02/20 Птн 11:33:22 161000377
Аноним 21/02/20 Птн 13:27:30 161015278
s.png (31Кб, 1020x611)
1020x611
Аноним 21/02/20 Птн 13:53:43 161017979
>>1609754
Нет, эксепшены не влияют на оптимизации.
Единственный случай, про который я слышал — это спецификации throw() в имени функции могут как-то запороть оптимизации, потому что компилятор вставит проверки на типы брошенных исключений. Но эти спецификации уже задепрекейтили, так что пофиг.
Аноним 21/02/20 Птн 13:56:20 161018480
Как можно организовать чтение из сокета и отправку в одном потоке?
С частотой в одну секунду на сокет приходит сообщение, отправка может произойти в любой момент времени
Сокет храниться в классе
Может, через дефолтный bool - флаг?
Аноним 21/02/20 Птн 14:12:07 161020381
>>1609777
Сразу видно что вышку не освоил
Аноним 21/02/20 Птн 14:17:38 161020982
>>1610179
Вроде как без noexcept в конструкторе перемещения компилятор не реализует perfect forwarding, если я верно помню. Хандельянц из PVS-Studio об этом вещал в лекциях своих.
Аноним 21/02/20 Птн 15:24:02 161029783
>>1610209
Вот это походу и есть единственное место. Ну или в библиотеках разных могут быть безопасные версии каких-нибудь алгоритмов, если не бросаются исключения
Аноним 21/02/20 Птн 15:42:18 161031284
Короче, двач, столкнулся таки с GNU autotool.

Как же я блять говна поел, ребята, полный пиздец. Есть ли какая-то альтернатива этому дерьмищу? Оно же блять страшное как моя жизнь.

Как блять это вообще случилось-то, хлопцы? Что за нехуй?

Какие вообще альтернативы этому пиздецу есть? qmake что ли? Почему этот пиздец существует, я не могу. Блять, да по-моему свой скрипт на питоне, выдающий конечный мэйкфайл проще написать чем в этой хуйне ебаться...
Аноним 21/02/20 Птн 15:48:43 161031785
>>1610312
Ему уж 50 лет скоро, ты что хотел? qmake какой-нибудь да, альтернатива. Существует, потому что диды не готовы перелезать ни на что новое. Ты вот какой новый софт в этом году освоил? А в прошлом?
Аноним 21/02/20 Птн 16:21:10 161033686
>>1610317

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

Да бля, деды, идите нахуй.

> Ты вот какой новый софт в этом году освоил? А в прошлом?

Ну год тока начался, в прошлом стал активно работать с OpenMP и MPI(со вкусом буста, на чистом MPI писать я в рот ебал).

Ну это только для меня новое, а так-то конечно всё что вам надо было написано дедами. Но вот справиться с жму аутотренингом никак не могу. Ненавижу всей душой.
Аноним 21/02/20 Птн 16:21:18 161033787
>>1610184
Неблокирующие сокеты.
Аноним 21/02/20 Птн 17:22:12 161041388
Аноним 21/02/20 Птн 17:44:59 161044189
Аноним 21/02/20 Птн 17:46:37 161044490
>>1609271
Большую часть весят статик либы и pdb
Аноним 21/02/20 Птн 18:21:05 161048291
Здраститя, вопрос есть.
Вот например у меня функция, которая делает простые вычисления в цикле (по сути просто сложение), а потом результат в виде массива отправляет в другую функцию и дает ответ. Но делается это оче долго, потому что массивов много, а если распараллелить наверное есть шанс ускорить работу. Я могу заранее задать отправную точку, откуда надо считать для каждого потока, тут проблем нет в общем, но дальше у меня вызывается следующая функция, где массив обрабатывается, и вот я не могу понять, у меня функция отдельно для каждого потока вызывается и выполняется или просто как-то последовательно? Просто из той функции у меня тоже какие-то функции вызываются и тд говнокод. Есть шанс, что это само по себе нормально работает? Я пока в тестовом режиме запустил, чет медленно всё происходит хотя я еще вывод не пофиксил, но все равно хуета. Просто пытался гуглить, там какие-то member functions, это оно или нет? Я просто хочу, чтобы у меня каждый поток делал то же самое, что и вся программа, в принципе даже можно ее несколько раз запустить, но тогда там непонятно с использованием ресурсов пеки шо будет, пока вот на 6 потоках запустил, вроде пишет 100% проца используется.
Аноним 21/02/20 Птн 18:28:54 161048792
>>1610184

Бля, чел, подробнее давай. Асио или нативные сокеты ебёшь? Чё за дефолт bool флаг?

Если асио, то ебуш async везде
Аноним 21/02/20 Птн 18:33:08 161049393
>>1610482

Какого нэхуй массива? Натив или вектор?

То есть у тебя целая куча массивов(массив массивов?), и ты хочешь чтобы у тебя сложение происходило одновременно?

Ну бля, дедпул тредпул делай.

А вообще, на gist/pastebin залей. Это чё, тест на работе юниорской?)))
Аноним 21/02/20 Птн 18:37:48 161049694
>>1608046 (OP)
Че за кал на втором пике, уже есть кондишн вариабл и прочее говнище
Аноним 21/02/20 Птн 18:53:30 161050795
>>1610493
Это по учебе кста. У меня всего один вектор получается, и там в нем делается +1 к последнему элементу и дальше сдвиг, если нужен (там короче как прибавление единицы к длинному числу в N-й системе счисления, разряды которого в каждой ячейке), потом еще проверка на повторы ну может еще чего прикручу. В принципе может я там хуету написал, но я думаю мне все равно распоточивание понадобится, даже если всё переделывать придется. Потом готовый вектор отправляется в функцию, и потом цикл начинается заново, к этому же вектору снова прибавляется 1, снова отправляется в функцию и тд. А функция просто возвращает 1 или 0.
И эт самое, я там еще постоянно вектора отсылаю, вроде ж как-то можно через rvalue их не копировать каждый раз, а как-то просто быстро передавать, я там правильно написал через move?
https://pastebin.com/Gj8KJ6Ds по морде только не бей
Аноним 21/02/20 Птн 19:08:47 161052796
>>1610507
Назови нормально переменные, комментарии поставь, что это за говно ебучее ты скинул? Скидывать такой код на ревью = плевать в ебало ревьюеру, я бы на месте учителя тебе в рот насрал.
Аноним 21/02/20 Птн 19:37:45 161055197
>>1610527
Там просто контекст знать надо... Ну бля, мне сложно сходу на англицком выдумывать кратко и емко что конкретная переменная делает даже на русском. Ну а вообще как нормально чисто без осознания смысла, а по распоточиванию? Говорю, я могу почувствовать, что говно высрал и переделать способ получения вектора, и ту функцию могу тоже переделать, но структура та же останется. Мне вот именно почувствовать как с потоками работать в такой ситуации.
Аноним 21/02/20 Птн 21:02:14 161065098
Как правильно итерировать по множеству до бесконечности? Нужно брать элементы из множества и помещать в массив, а когда оно заканчивается снова брать сначала.
Аноним 21/02/20 Птн 21:13:50 161067199
>>1610650
Примерно вот так
while (i++ % mnozhestvo.size())
Аноним 21/02/20 Птн 21:19:34 1610678100
>>1610650
Пардон, так лучше
int i = 0;
while (true) {
int index = i++ % mnozhestvo.size();
}
Аноним 21/02/20 Птн 21:22:13 1610684101
>>1610678
эх если бы в std::set были индексы
Аноним 21/02/20 Птн 21:32:47 1610700102
stdmove.png (19Кб, 463x479)
463x479
Какой из этих двух вариантов лучше? Обычно создавать объект на стеке, а потом просто мувовать его в контейнер? Или указатель на куче? На картинке пример грубый и кривой, но суть думаю понятна. Что по производительности быстрей, если эти классы большие и часто создаются?
Аноним 21/02/20 Птн 22:03:45 1610731103
>>1610700
Не трогай кучу и мувсемантику, пока не разберешься в плюсах нормально. Делай всё на стеке, если явно не требуется другое.
Аноним 21/02/20 Птн 22:54:41 1610799104
>>1610731
Дело в том, что класс AAA большой. Если просто писать
container.data = test;
то будет использоваться copy assignment. Копирование объекта же дольше длится чем просто мувнуть его? Я знаю, что объект test после мува становится пустышкой. Короче, я создаю объект test, делаю что-то с ним, затем пихаю его в контейнер (который кроме этого еще другие поля содержит), и после этого test мне больше не нужен в этом скоупе. Поэтому я подумал, что может быть мув семантика хороший вариант? Или всё-таки лучше аллокация на куче?
Аноним 21/02/20 Птн 23:20:21 1610842105
>>1610152
Да я уже понял, но там мало настроек как-то. Вообщем установил clang-format плагин, пердолю настроечки. В идеале закос под Windows NT style хочу сделать.
Аноним 22/02/20 Суб 00:17:46 1610920106
>>1610799
Тебе же говорят - не лезь, если не разобрался.
Как минимум, задумайся, что лучше - создать объект на месте в куче или вызвать конструктор, а потом переместить объект куда-то?
Хотя, теоретически, компилятор увидит, что ты дурачок и
Object a();
smt.a = std::move(a);
Превратит в
smt.a = object(a);
Аноним 22/02/20 Суб 00:42:55 1610938107
>>1610799
>объект test после мува становится пустышкой
Посмотри, что такое std::move, там просто рвссылка навешивается, специально, чтобы выбрался не копи конструктор, а мув и если ты мув конструктор или там оператор присваивания не сделаешь таким, чтобы он мувал, то никакого мува не случится.
Аноним 22/02/20 Суб 05:58:22 1611082108
Приветствую, меганьюфаг-школотрон в треде. Знаю основы пайтона, учил его для решения всяких задачек (олимпиады + ЕГЭ), но позже понял, что он говно (для этих целей), сейчас хочу вкатиться в плюсы как можно быстрее. Что можете посоветовать для этого, помимо книг на 1ккк страниц? Или не выпендриваться и читать книжки?
Также был бы рад каким-нибудь годным ресурсам для начинающих. Всем спасибо.
Аноним 22/02/20 Суб 06:03:09 1611083109
>>1610938
Ничто не мешает мувать объект со стэка. Например

std::vector<XXX> aaaa(100500);
foo(std::move(aaaa));

Абсолютно валидный код.

Это ответственность разработчика класса предоставить правильный мув-конструктор.

Аноним 22/02/20 Суб 06:53:15 1611102110
>>1610700
Оба хуже. Первый делает непонятно что, второй течет ресурсы и приводит к битым указателем.

Поскольку ты не очень понимаешь, что делаешь, то напиши

class AAAA
{
std::unique_ptr<XXX> data;
}

мув-конструктор сгенерится автоматически если ты не определяешь своих конструкторов.
Аноним 22/02/20 Суб 07:55:50 1611116111
>>1611082
C++ за 21 день, Конора-Макфлая
Аноним 22/02/20 Суб 08:00:21 1611117112
>>1611082
Страуструп, книги Майерса и Саттера, может быть Вандервуда, потом всякие статьи по современным стандартам.

В С++ нельзя просто взять и вкатиться
Аноним 22/02/20 Суб 08:31:46 1611128113
>>1608046 (OP)
Какие доводы использовать C++ вместо pure C? Си простой, компактный. C++ монструозный, одна только спека сколько там сейчас страниц, 3000?
Аноним 22/02/20 Суб 08:32:29 1611129114
>>1611128
Графические библиотеки.
Аноним 22/02/20 Суб 08:32:32 1611130115
>>1611128
Напишешь что-то сложнее laba2 - сам поймешь.
Аноним 22/02/20 Суб 08:44:10 1611132116
>>1611129
Пока графика не нужна.

>>1611130
Мне не нужны тысячи абстракций на все случаи жизни. Я все равно их все никогда не освою. И я сторонник минимализма. Керниган писал, что Си хорош тем, что это маленький язык, им можно быстро овладеть, и реально знать и использовать все возможности языка. В C++ такое невозможно. Даже создатели языка не знают всех его особенностей. А уж экосистема там наверное вообще гигантская. Зачем нужен комбайн с миллионом функций, если будешь пользоваться только десятком?
Аноним 22/02/20 Суб 08:47:48 1611134117
>>1611132
Ты не териотезируй, ты пиши код. Когда ты поработаешь над достаточно большим проектом, сам поймешь зачем нужны шаблоны, классы, виртуальные функции, исключения, конструкторы-деструкторы и прочее.
Аноним 22/02/20 Суб 08:48:32 1611135118
>>1611132
>Пока графика не нужна.
>Какие доводы использовать C++, если мне в моей песочнице ничего из С++ не нужно. Отвечайте быстро!
Никаких, ты прав. Вообще не понимаю, зачем пользоваться языками программирования, если я могу и руками пасьянс разложить.
Аноним 22/02/20 Суб 08:54:47 1611138119
>>1608046 (OP)
Кто нибудь проходил специализацию от Яндекса на курсере "Искусство разработки на современном C++"? Стоит ли проходить платно? Один месяц стоит 4900 руб. Курсов 5 штук. Думаю один курс за месяц можно и не пройти. Тем более последующие курсы наверняка сложнее предыдущих. Выходит что пол года нужно времени, если не больше. Итого минимум 30000 руб. Стоит оно того?

Я еще не совсем понимаю что входит в платную подписку. Задачи точно входят. Но задачи, их же можно самому порешать. Там же название задачи написано, можно нагуглить условия. В общем, если кто проходил платно, расскажите что там к чему, годные курсы или нет.
Аноним 22/02/20 Суб 08:55:18 1611139120
>>1611132
>Зачем нужен комбайн с миллионом функций, если будешь пользоваться только десятком?
Фи, амикошонство, люмпенпролетариат!
Аноним 22/02/20 Суб 09:03:04 1611143121
>>1611134
Я боюсь погрязнуть в теории. Ведь фич очень много, придется все это изучать, потом практиковать. Боюсь что долго придется осваивать конструкции языка.
Аноним 22/02/20 Суб 09:05:17 1611144122
>>1611135
>>1611139
Лишние абстракции это зло. Вы сейчас прёте против этого закона, что противоречит программированию как инженерной дисциплине. Реальные доводы будут, факты какие-то, хотя бы развернутое мнение, собственный опыт? Я не для троллинга или срача спрашиваю. Мне хочется понять вашу мотивацию. Свою я высказал. Пока побаиваюсь C++ из-за его монструозности. Может это только предрассудок, не знаю.
Аноним 22/02/20 Суб 09:09:42 1611145123
>>1611144
Ну-ка ну-ка поподробнее про закон. Ты его прочитал где-то или сам придумал?
Аноним 22/02/20 Суб 09:16:35 1611149124
>>1611083
Ну да, ты к чему это? В своём посте я вроде не писал ничего про стек или не стек, ты точно мне ответил?
Аноним 22/02/20 Суб 09:20:28 1611152125
>>1611132
Чем больше приложение, тем больше там вылазит всяких моментов, которые на чистом С никак не контролируются.
Аноним 22/02/20 Суб 09:22:37 1611154126
>>1611145
Лишние абстрации это лишняя сложность. Обычно это случайная сложность, когда проектировщик не нашел способа, не смог сделать простым. В инженерии борьба со сложностью ключевая цель. Иначе смысл инженерии теряется. Принципы KISS постулируют это. И не только они.
Аноним 22/02/20 Суб 09:23:39 1611155127
>>1611152
>Чем больше приложение, тем больше там вылазит всяких моментов, которые на чистом С никак не контролируются.
Можно пример? Хочу понять чего это касается, ручного управления памятью, недостаточным уровнем абстракции, недостаточным количеством инструментов или библиотек для разработки, или может что-то еще?
Аноним 22/02/20 Суб 09:25:17 1611156128
>>1611154
>В инженерии борьба со сложностью ключевая цель.
Ещё раз: ты это где-то прочитал или из своей головы вещаешь?
Аноним 22/02/20 Суб 09:30:22 1611160129
Аноним 22/02/20 Суб 09:34:06 1611162130
Аноним 22/02/20 Суб 09:35:55 1611164131
>>1611155
Там даже перегрузки функций нет.
Аноним 22/02/20 Суб 09:36:28 1611166132
Аноним 22/02/20 Суб 09:36:42 1611167133
>>1611082
> плюсы как можно быстрее
С таким подходом в плюсы не вкатываются.
Аноним 22/02/20 Суб 09:37:30 1611168134
Аноним 22/02/20 Суб 09:37:50 1611169135
>>1611082
> вкатиться в плюсы как можно быстрее
Они не про это, их годами осваивают.
Аноним 22/02/20 Суб 09:39:10 1611170136
>>1611164
>Там даже перегрузки функций нет.
Это используется для полиморфизма или для чего?
Аноним 22/02/20 Суб 09:40:07 1611172137
>>1611166
>>1611168
Почему то ссылки порвались. Нужно скопировать всю ссылку целиком.
Аноним 22/02/20 Суб 09:42:22 1611175138
>>1611160
>Принципы
Ты путаешь принцип с законом. Принципы могут быть разные, каждый со своими достоинствами и недостатками. Например, вот широкоизвестное эссе о принципах построения опенсорс программ: базарном и кафедральном. Оба принципа используются и по сей день.
Аноним 22/02/20 Суб 09:42:28 1611176139
>>1611170
Нет шаблонов и перегрузки -> код нужно копипастить 100500 раз и называть func_int, func_double, func_char, да, для него. На самом деле наверняка это решается через касты к воид звёздочка и обратно,но тут возникает множество опасностей отстрела ноги.
Аноним 22/02/20 Суб 09:42:45 1611178140
Аноним 22/02/20 Суб 09:44:43 1611182141
>>1611128
На С++ можно писать в стиле С, если хочется, но при этом пользоваться всякими дополнительными плюшками, типа перегрузки операторов, RTTI, и т.д.
Аноним 22/02/20 Суб 09:44:43 1611183142
Аноним 22/02/20 Суб 09:46:21 1611184143
>>1611175
https://rb.gy/e1d7wo

Чем по твоему занимаются инженеры если не борьбой со сложностью?
Аноним 22/02/20 Суб 09:46:44 1611185144
>>1611176
Это решается и по-другому.
Аноним 22/02/20 Суб 09:47:34 1611186145
>>1611160
>Принципы KISS
Так именно из этих соображений появились абстракции, да, в маленьком проекте кажется на чистом си писать проще, но потом оказывается, что плюсы сколь угодно масштабируются и в миллионнострочном проекте писать на плюсах не сложнее(имея некоторый опыт), чем в лабе1. А в си код начинает схлопываться под собственной тяжестью, программисту становится тяжело удержать в голове что делает данный код, его становится тяжело поддерживать, потом единственный бородач, который в нём что-то понимал, уходит на пенсии и имеем легаси, в котором никто нихуя не понимает и стремится запихнуть его под диван.
Аноним 22/02/20 Суб 09:47:58 1611187146
Аноним 22/02/20 Суб 09:54:07 1611190147
>>1611184
"Борьба со сложностью" — это бесконечно абстрагируемое понятие. Назови одну деятельность, которая не занимается "борьбой со сложностью". А так-то конечно, да. Инженер сделал мост, чтобы он не падал — поборол сложность переправы через реку. А потом хирург вырезал аппендикс — поборол сложность выжить с перитонитом. А потом кондуктор взял деньги за билет — поборол сложность поддержки транспортной инфраструктуры.
Аноним 22/02/20 Суб 09:56:10 1611191148
>>1611182
Извините, а назуй тогда Си нужен в т.ч. в embedded разработки, когда можно писать на Си с классами, с перегрузками и вот этим всём?
Аноним 22/02/20 Суб 09:57:21 1611193149
>>1611186
>в си код начинает схлопываться под собственной тяжестью, программисту становится тяжело удержать в голове что делает данный код, его становится тяжело поддерживать
Из-за чего? Чего там не хватает? Можно конкретику?
Аноним 22/02/20 Суб 09:57:53 1611195150
>>1611187
Принимать не числовой аргумент, а функцию.
Аноним 22/02/20 Суб 09:58:55 1611196151
>>1611195
У функции тип от типа аргумента зависит.
Аноним 22/02/20 Суб 09:59:56 1611197152
Стикер (319Кб, 433x380)
433x380
>>1611196
>У функции тип от типа аргумента зависит.
Аноним 22/02/20 Суб 10:00:26 1611198153
>>1611193
Классов, шаблонов, виртуальных функций, наследования, деструкторов.
Аноним 22/02/20 Суб 10:02:56 1611199154
>>1611197
void f(int x, char y);
тип указателя на неё будет typedef void (*pointer_f)(int x, char y);
Аноним 22/02/20 Суб 10:05:41 1611200155
Аноним 22/02/20 Суб 10:06:44 1611201156
>>1611199
А, ты хотел сказать, что при создании указателя на функцию надо знать аргументы к этой функции? Это да. Ты так написал, будто тип функции (тип возвращаемого значения) зависит от типов аргументов.
Аноним 22/02/20 Суб 10:06:48 1611202157
>>1611190
Если проектировщик создал систему для решения задач, но она оказалась сложнее в использовании чем решаемые задачи, то это разве можно считать решением задачи? Если язык настолько сложный, что требует больше времени и сил на его освоение, чем решение задачи другим языком, то зачем нужен такой язык? Суть языка в том, чтобы просто решать сложные задачи, а не сложно решать простые, или сложно решать сложные. Вот это борьба со сложностью. В этом суть, чтобы в конечном итоге решать задачи просто. Это суть инженерии.
Аноним 22/02/20 Суб 10:08:42 1611203158
>>1611196
Да, но разные функции могут возвращать разные значения. Для int передаешь одну фунцию, для других типов другую.
Аноним 22/02/20 Суб 10:10:05 1611204159
>>1611200
Ну а я что написал?
>>1611201
Тип функции это не тип возвращаемого значения, int тип интов, int тип указателя на инты, по той же аналогии и с указателями на функции, если ты разыменуешь переменную типа void ()(int x int y) ты не получишь переменную типа воид void.
Аноним 22/02/20 Суб 10:11:02 1611205160
>>1611191
>Извините, а назуй тогда Си нужен в т.ч. в embedded разработки, когда можно писать на Си с классами, с перегрузками и вот этим всём?
Вот это я пытаюсь выяснить. Пока адепты внятных доводов не приводят.
Аноним 22/02/20 Суб 10:12:15 1611206161
>>1611203
То есть тебе под каждый тип нужна функция. И чем это проще, чем func_int, func_double, func_char... ещё 100500 функций.
Аноним 22/02/20 Суб 10:14:46 1611207162
>>1611206
Тем что главная функция не зависит от других. Барьеры абстракций же. Слои не зависят друг от друга. Если тупо под каждый тип писать отдельную функцию, это будет просто копипаста.
Аноним 22/02/20 Суб 10:16:49 1611208163
>>1611202
>Если проектировщик создал систему для решения задач, но она оказалась сложнее в использовании чем решаемые задачи, то это разве можно считать решением задачи?
Да. Пример:
решаемая задача: сделать табурет
простое решение: принести пенёк
решение проектировщика: выкачать из земли нефть, очистить её, полимеризовать в пластик, создать линию по отливке табуретов из пластика, сгенерировать электричество, подключить линию к электричеству, доставить сырьё, и наконец создать табурет.
Что сложнее?
Аноним 22/02/20 Суб 10:18:05 1611209164
>>1611207
Какая главная функция, вот в плюсах ты пишешь
template<class T>
T sum(const T& a, const T& b)
{ return a + b; }

Как ты это обойдёшь, не создавая кучу функций под все типы которые складывать можно?
Аноним 22/02/20 Суб 10:19:50 1611210165
>>1611209
>Как ты это обойдёшь
Я не он, но вообще это _Generic
Аноним 22/02/20 Суб 10:21:21 1611212166
Аноним 22/02/20 Суб 10:21:30 1611213167
>>1611210
А, в С11 шаблоны появились? Прикольно. Нет, ну если в Си и дальше будут завозить фичи плюсов, то и спорить будет не о чем.
Аноним 22/02/20 Суб 10:49:10 1611228168
>>1611154
>Лишние абстрации это лишняя сложность.
В крестах набором же, добавляется больше с каждым стандартом, но что было раньше наоборот легче и внезапно быстрее
Аноним 22/02/20 Суб 10:57:26 1611240169
>>1611191
Для embedded наверное есть какие-то преимущества, типа стандартная библиотека не такая большая, и легче предугадать, как компилятор сгенерит код. Или разрабы просто не знают, на каком ещё утюге им придётся запускать своё творение, и сразу берут по минимуму.
Или если библиотеку пишешь, или прослойку между языками, то Си может пригодиться. Ну и для копания в линуксах и прочих опенсорсах.
А в остальном, я не знаю, зачем Си ещё нужен.
Аноним 22/02/20 Суб 11:10:16 1611247170
>>1611240
> легче предугадать, как компилятор сгенерит код
Ну и нахуя этой экстрасенсорикой заниматься?
Аноним 22/02/20 Суб 11:15:46 1611255171
>>1611247
Ну мало ли, мож кому-то просто нужен кроссплатформенный ассемблер.
Аноним 22/02/20 Суб 11:16:43 1611256172
Аноним 22/02/20 Суб 11:16:48 1611257173
>>1611247
Я вот думаю почему коммитет по си до сих пор не внесёт 2 маленьких, но удобных изменения - к структурам можно обращаться как в С++, не обертывая typedef'ом и
добавить uint для соращение unsigned int, и все блять, язык в 10 раз удобней станет
Аноним 22/02/20 Суб 11:17:19 1611258174
>>1611144
> Лишние абстракции это зло.
Тред Go ниже. Возвращайся когда заебёт самописная кодогенерация, RTTI на говне и рефлекшонах, и отсутсвие абстракций в языке, приводящее к их переизобретению в коде. Это не критика Go, многим заходит писать и так.
>>1611132
А теперь подумай, когда он это писал и с чем сравнивал? Си хорош когда у тебя нет вариантов, а иначе можешь пойти в ядро и изучать как они эмулируют плюсовые абстракции.

PS. Не бойся изучать новое, бойся зацикливаться на старом - вылетишь с рынка быстрее чем успеешь сказать котлета.
Аноним 22/02/20 Суб 11:17:47 1611259175
>>1611257
>добавить uint для соращение unsigned int
>не u32/s32 и тому подобное
Аноним 22/02/20 Суб 11:17:53 1611260176
>>1611257
Слишком абстрактно станет.
Аноним 22/02/20 Суб 11:19:01 1611261177
>>1611258
>PS. Не бойся изучать новое, бойся зацикливаться на старом
Сказал крестовый пердун.
Аноним 22/02/20 Суб 11:19:18 1611262178
>>1611258
>изучать новое
Я вот больше боюсь забыть старое, поэтому додрачиваю многие вещи довольно долго.
Аноним 22/02/20 Суб 11:20:30 1611264179
Аноним 22/02/20 Суб 11:22:59 1611266180
>>1611191
A B I
B
I

Исторически сложилось, что у цпп стандартного abi нет и не было.
Аноним 22/02/20 Суб 11:23:38 1611268181
Аноним 22/02/20 Суб 11:23:57 1611270182
>>1611261
> Сказал крестовый пердун.
Ты как говоришь будто я не знаю питон, go, js и pl/sql на уровне достаточном для поиска работы.
Аноним 22/02/20 Суб 11:29:28 1611275183
>>1611270
А зачем тогда пишешь на дерьме мамонта? Копрофил?
Аноним 22/02/20 Суб 11:37:05 1611278184
>>1611275
Потому что Раст ещё не осилил.
Аноним 22/02/20 Суб 11:49:51 1611291185
>>1611278
Давай там, не тормози.
Аноним 22/02/20 Суб 11:51:36 1611292186
Screenshot4.png (11Кб, 750x173)
750x173
Screenshot2.png (54Кб, 1087x706)
1087x706
Могу ли я здесь бросить исключение в конструкторе? В классе есть сырые указатели.
Аноним 22/02/20 Суб 13:19:00 1611329187
>>1611292
>В классе есть сырые указатели.
Но туда же кроме nullptr ничего не записали? Тогда можно.

Кстати, подчеркивания перед аргументами ставить не обязательно. Можно писать прямо
Font::Font(std:string fontPath) : fontPath(fontPath)
- компилятор поймет, что один fontPath - это член класса, а другой - аргумент.
Аноним 22/02/20 Суб 14:24:46 1611402188
>>1611292
Бросание исключений в конструкторе абсолютно легитимно, следи только, чтобы они бросались до всяких new и тд, чтобы при раскрутке не было утечек, а лучше вообще используй только смарт поинтеры, это требует совсем небольшой привычки, зато про утечки в 99% случаях можешь забыть. В то же время бросать исключения в деструкторе абсолютно нелегитимно, никогда так не делай, если интересны подробности можешь погуглить про ключевым словам stack unwinding, libunwind, libcxxabi, чтобы понять как это вообще всё работает
https://monoinfinito.wordpress.com/series/exception-handling-in-c/
Аноним 22/02/20 Суб 14:44:26 1611427189
>>1611402
Стараюсь использовать смарт поинтеры где могу, но в СДЛ сразу ловлю исключение, если использую unique_ptr для его объектов
Аноним 22/02/20 Суб 14:45:42 1611428190
>>1611427
Скорее всего там нужен shared_ptr, посмотри когда юзается шаред, когда юник, когда вик.
Аноним 22/02/20 Суб 14:48:36 1611432191
Алсо может кто знает, как в выдаче гугла забанить ru.cppreference? Постоянно этот кал первым вылезает вместо en.cppreference.
Аноним 22/02/20 Суб 15:43:20 1611469192
>>1611427
Конкретно про СДЛ не скажу, но вообще, когда получаешь объекты от других библиотек, то у них обычно процедура освобождения тоже бывает какая-то библиотечно-специфичная, и для них просто так нельзя вызывать delete.
Возможно, тебе нужен смарт поинтер с кастомным deleter-ом.
Аноним 22/02/20 Суб 15:55:31 1611484193
>>1610920
Ну ок, значит мув пока не трогать, хотя я поэксперементировал и оно работало, (видимо как ты написал?) Можешь дать хороший пример или статью про мув?
А если вот так сделать? container.data = std::move(AAA()); Тоже хуйня под капотом происходит?
Аноним 22/02/20 Суб 16:03:08 1611492194
>>1611258
Что такое рефлекшоны?
Аноним 22/02/20 Суб 17:57:03 1611602195
>>1608862
> вывести все простые числа до 100
Не благодари.
// This file is a "Hello, world!" in C++ language by GCC for wandbox.
#include <iostream>
#include <cstdlib>

template<std::size_t... Args>
struct NotDivideTo;

template<std::size_t N, std::size_t P, std::size_t... Args>
struct NotDivideTo<N, P, Args...> : public NotDivideTo<N, Args...>
{
static constexpr bool value = N % P != 0 && NotDivideTo<N, Args...>::value;
};

template<std::size_t N>
struct NotDivideTo<N>
{
static constexpr bool value = true;
};

template<bool b, std::size_t K, std::size_t... Args>
struct NextPrimeImpl;

template<std::size_t K, std::size_t... Args>
struct NextPrimeImpl<false, K, Args...>
{
static constexpr std::size_t value = NextPrimeImpl<NotDivideTo<K + 1, Args...>::value, K + 1, Args...>::value;
};

template<std::size_t K, std::size_t... Args>
struct NextPrimeImpl<true, K, Args...>
{
static constexpr std::size_t value = K;
};

template<std::size_t... Args>
struct NextPrime
{
static constexpr std::size_t value = NextPrimeImpl<false, Args...>::value;
};
template<std::size_t... Args>
struct PackedPrimes{};

template<bool b, std::size_t N, std::size_t... Args>
struct PrimesImpl;

template<std::size_t N, std::size_t... Args>
struct PrimesImpl<true, N, Args...>
{
using value = PrimesImpl<NextPrime<Args...>::value < N, N, NextPrime<Args...>::value, Args...>::value;
};

template<std::size_t N, std::size_t Head, std::size_t... Args>
struct PrimesImpl<false, N, Head, Args...>
{
using value = PackedPrimes<Args...>;
};

template<std::size_t N>
struct Primes
{
using value = PrimesImpl<true, N, 2>::value;
};

template<std::size_t s, std::size_t... Args>
void print_pack(const PackedPrimes<s, Args...>&)
{
std::cout << s << " ";
print_pack(PackedPrimes<Args...>());
}

void print_pack(const PackedPrimes<>&)
{
std::cout << std::endl;
}

int main()
{
print_pack(Primes<100>::value());
}

Аноним 22/02/20 Суб 18:28:49 1611635196
>>1611602
За такое надо лес валить отправлять на 25 лет
Аноним 22/02/20 Суб 18:30:30 1611641197
>>1611635
Ты просто не можешь в шаблоны.
Аноним 22/02/20 Суб 18:46:23 1611659198
image.png (500Кб, 604x604)
604x604
Аноним 22/02/20 Суб 18:59:49 1611677199
>>1611602
Зачем из петушинного загона вылез?
Аноним 22/02/20 Суб 19:01:50 1611680200
>>1611677
Рантаймовая чмоня закукарекала.О каком конкретно загоне идёт речь?
>>1611659
Потому что могу.
Аноним 22/02/20 Суб 19:10:26 1611688201
>>1611602
Пиздец, какой же уебищный синтаксис у этих последовательностей. Недавно потребовалось удалить последний элемент последовательности для последующей передачи в другую функцию... Это просто пиздец. Вместо какой-нибудь функции типо pop пришлось строит рекурсию через несколько структур в 30 строк.
Аноним 22/02/20 Суб 19:12:25 1611690202
>>1611258
Вы че блять, сектанты?
Аноним 22/02/20 Суб 19:13:54 1611693203
>>1611688
В теории ты мог бы через std::tuple как-то выкрутиться, но надо смотреть конкретный пример.
Аноним 22/02/20 Суб 19:40:50 1611719204
>>1611688
Вот так можно например выкрутиться

// This file is a "Hello, world!" in C++ language by GCC for wandbox.
#include <iostream>
#include <cstdlib>
#include <tuple>

template<class Tuple, std::size_t... I>
auto remove_last_impl(const std::index_sequence<I...>&, const Tuple& t)
{
return std::make_tuple(std::get<I>(t)...);
}

template<class... Args>
auto remove_last(const std::tuple<Args...>& t)
{
return remove_last_impl(std::make_index_sequence<sizeof...(Args)-1u>{}, t);
}

template<class Tuple>
void print_size(const Tuple&)
{
std::cout << std::tuple_size<Tuple>::value << std::endl;
}

int main()
{
std::tuple<int, char, double> t(1, 'a', 1.23);
auto result = remove_last(t);
std::cout << std::get<0>(result) << std::endl;
std::cout << std::get<1>(result) << std::endl;
print_size(result);
}
Аноним 22/02/20 Суб 19:41:10 1611720205
>>1611484
Не помню конкретную лекцию, но посмотри все, полезно будет, ищи: pvs studio c++.

Насчёт std::move(object()); - здесь object() уже rvalue, а мув из lvalue делает rvalue.
И, если не ошибаюсь, если сделать
void func(object&& x){}

object smt();
func(std::move(smt));
smt.mthd() //будет ошибка

Так как память, выделенная под smt отдается в функцию и там же уничтожается при выходе из нее.
Аноним 22/02/20 Суб 19:44:24 1611721206
>>1611720
Охуеть, почему сдал met hod в спам листе?
Аноним 22/02/20 Суб 19:44:46 1611722207
Аноним 22/02/20 Суб 19:44:50 1611723208
image.png (67Кб, 638x359)
638x359
>>1611484
Погугли universal reference, move semantics, c++ reference collapse rules
>>1611720
>а мув из lvalue делает rvalue.
Тут будет && && и это схлопнется в &&, смотри скрин.
Аноним 22/02/20 Суб 19:47:29 1611725209
>>1611720
> Так как память, выделенная под smt отдается в функцию и там же уничтожается при выходе из нее.
Очнись, в c++ не завезли destructive move
Аноним 22/02/20 Суб 20:10:58 1611740210
Аноним 22/02/20 Суб 20:26:11 1611765211
>>1611723
Все проще, есть одна &, то &, нету одной &, только &&, то &&. При этом int& & -> int&
Аноним 22/02/20 Суб 20:26:48 1611767212
>>1611765
Что проще? На пикче то же самое написано.
Аноним 22/02/20 Суб 20:36:30 1611780213
>>1611693
>>1611719
Мне нужно было передать цепочку хешей которые гарантированно считаются в компайл тайме, поэтому тупл тут не катит. Чтобы заставить компилятор при компиляции их высчитывать приходится вызывать функцию внутри треугольных скобочек.
Аноним 22/02/20 Суб 20:37:54 1611781214
>>1611723
>Тут будет && && и это схлопнется в &&, смотри скрин.
И что это значит? Я вообще не врублюсь.
Аноним 22/02/20 Суб 20:38:03 1611783215
>>1611780
>поэтому тупл тут не катит.
У тупла констекспр конструкторы.
Аноним 22/02/20 Суб 20:38:26 1611787216
>>1611781
Погугли по ключевым словам, выше писал.
Аноним 22/02/20 Суб 20:39:00 1611788217
>>1611783
Но при этом нет гарантии, что он просчитает это при компиляции.
Аноним 22/02/20 Суб 20:40:57 1611793218
>>1611788
Ну если наполнение туплов, хэши или что там, в компилетайме считается, то и тупл компилетаймовый будет.
Аноним 22/02/20 Суб 20:53:37 1611812219
Screenshot6.png (16Кб, 881x234)
881x234
Помогите написать кастом удалитель для SDL
Вот так пытаюсь сделать (на пике)
Получаю ошибку C2027(использование неопределенного типа SDL_Texture) & C2338(can't delete an incomplete type);
ftexture это поле класса, выглядит так
std::unique_ptr <SDL_Texture> ftexture = nullptr;
Можно ли вообще указать удалитель при создании, чтобы не писать его постоянно в make_unique?
Аноним 22/02/20 Суб 20:56:17 1611816220
>>1611788
>The correct answer - as stated by Herb - is that according to the standard a constexpr function may be evaluated at compiler time or run time unless it is used as a constant expression, in which case it must be evaluated at compile-time.
https://isocpp.org/blog/2013/01/when-does-a-constexpr-function-get-evaluated-at-compile-time-stackoverflow
В общем если у тебя constexpr auto result = evaluate_hashes(), то гарантированно будет считаться в компилетайме.
Аноним 22/02/20 Суб 20:59:09 1611819221
>>1611816
Ну да можно конечно вручную констэкспр писать, но тогда код по раздувается и по уебански выглядит.
Аноним 22/02/20 Суб 21:03:52 1611825222
>>1611258
Извини братан если обидел. Я че т не то сморозил по пьяни. Ты все правильно говоришь.
Аноним 22/02/20 Суб 21:04:13 1611826223
>>1611819
Ну это явно лучше чем как ты говорил, 30 рекурсий через рекурсии или там аргументы в шаблон засовывать. Ну бля, таплы для того и были придуманы, типа вот у тебя есть там ArgsA... и ArgsB... и из-за той же проблемы, что они слипаются, нельзя написать template<class A, class... ArgsA, class... ArgsB...> и вообще ничего нельзя написать после вариадик темплейта, юзаются два тапла tuple<ArgsA...>, tuple<ArgsB...>, они как раз и нужны для обхода подобных ситуаций, я думаю скорее всего можно там сделать через тапл и это будет относительно норм выглядеть.
Аноним 22/02/20 Суб 21:06:22 1611829224
>>1611819
Хотя хуй знает, может и правда уебански будет, я ж конкретный код не видел, забей.
Аноним 22/02/20 Суб 21:11:33 1611841225
>>1611723
>>а мув из lvalue делает rvalue.
>Тут будет && && и это схлопнется в &&, смотри скрин.
Щас бы, в 2k20, путать rvalue и rvalue reference… ‍♂️
Аноним 22/02/20 Суб 21:13:07 1611843226
>>1611841
Чел, std::move навешивает референс, func второй референс, че ты хочешь...
Аноним 22/02/20 Суб 21:16:57 1611853227
H Sutter said on Jan 14, 2013 05:50 PM:

@chico: But programmers can rely on constexpr being fully compile-time in the cases where it matters -- to do compile-time things like initialize array sizes or instantiate templates. If they try to invoke something that isn't compile-time, the compiler will let them know.

In all other cases (using constexpr in places the language doesn't require to be compile-time), it doesn't matter. Programmers don't need to rely on anything else being done at compile vs. run time, and can't anyway because of optimizations -- the point of optimization is that the compiler can move work around, including in either direction from/to compile time to/from run time, and all such optimizations are legal as long as a well-formed program can't tell the difference (have different output) -- so it doesn't matter because the program is indistinguishable.

I could imagine someone may want to force a variable to be written to ROM (say), but that (a) is rarely necessary or interesting in practice (I can't remember if I've seen a true need for it myself), (b) is handled using compiler- and platform-specific extensions if at all (e.g., optimization levels and related controls), and (c) isn't specific to constexpr (e.g., it has always been the case that a compiler "might" put a static const int variable into ROM, and that's often cited as the canonical reason why casting away const is undefined behavior -- it may not be physically possible to mutate the const object).


Bjarne Stroustrup said on Jan 14, 2013 08:58 PM:

It seems that I was too terse and caused confusion. Sorry. The correct answer - as stated by Herb - is that according to the standard a constexpr function may be evaluated at compiler time or run time unless it is used as a constant expression, in which case it must be evaluated at compile-time. To guarantee compile-time evaluation, we must either use it where a constant expression is required (e.g., as an array bound or as a case label) or use it to initialize a constexpr. I would hope that no self-respecting compiler would miss the optimization opportunity to do what I originally said: "A constexpr function is evaluated at compile time if all its arguments are constant expressions."
Аноним 22/02/20 Суб 21:18:07 1611858228
>>1611843
Тебе кто-то лапши на уши навешал
Аноним 22/02/20 Суб 21:19:00 1611859229
>>1611858
>In particular, std::move produces an xvalue expression that identifies its argument t. It is exactly equivalent to a static_cast to an rvalue reference type.
Чел...
Аноним 22/02/20 Суб 21:23:31 1611874230
>>1611859
И к чему ты это процитировал?
По-моему, твоё упоротство только подтверждает, что ты не отличаешь rvalue от rvalure reference.
Аноним 22/02/20 Суб 21:23:38 1611875231
>>1611138
Проходил. но тогда он только выходил и я покупал отдельно каждый курс. Первые два достаточно простые. Красный повеселей. Коричневый сложен, черный не стал проходить, там подписка началась.
В общем курс неплохой. Но следует учесть, что у меня было за плечами несколько прочитанных книг, мини проекты и на работе я перекатился в разраба.
По сложности задач, зависит от времени и терпения. Некоторые я решал неделя+, другие за пол часа. Финалки достаточно сложные. Готовься к разрыванию очка на грейдерах.
Аноним 22/02/20 Суб 21:24:22 1611877232
>>1611874
It is exactly equivalent to a static_cast to an rvalue reference type.
Аноним 22/02/20 Суб 21:25:36 1611881233
Аноним 22/02/20 Суб 21:27:32 1611886234
>>1611881
ретурн тип std::move(T&&) это std::remove_reference<T>::type&&, что же это за тип, хммм...
Аноним 22/02/20 Суб 21:30:50 1611893235
>>1611886
Что за тип — ясно.
А при чём тут reference collapsing rule и что и как func "навешивает" — нет.
Аноним 22/02/20 Суб 21:34:32 1611900236
>>1611893
При том, что есть функция f(T&& a) и мы туда отдаём переменную типа object&&, поэтому T будет object, получается я лох, а ты прав, прости меня, дурака.
Аноним 22/02/20 Суб 21:36:29 1611906237
>>1611900
>При том, что есть функция f(T&& a) и мы туда отдаём переменную типа object&&
В `std::move(object())`, `object()` это
1. Не переменная, а выражение
2. Тип которого `object`, а не `object&&`
Аноним 22/02/20 Суб 21:37:09 1611908238
>>1611812
У тебя все правильно с делетером. Тут проблема с тем что SDL_Texture в хедере специально не определен, чтобы скрыть внутреннюю имплементацию, а unique_ptr разыменовывает указатель этого типа, например в методе get. Так можешь начать писать свою обертку для таких случаев.
Аноним 22/02/20 Суб 21:39:48 1611913239
>>1611906
Я про func писал, а не про мув, в func мы передаём rvalue reference object&&, я жопой смотрел, думал там что-то типа func(object&& &&), то есть сам тип object&&.
Аноним 22/02/20 Суб 21:40:52 1611916240
>>1611913
>то есть сам тип object&&.
Типа func<object&&>().
Аноним 22/02/20 Суб 21:42:54 1611918241
>>1611913
>в func мы передаём rvalue reference object&&
В выражении `std::move(object())`, у `std::move` возвращаемый тип `object&&`, а у самого выражения тип `object`.
Аноним 22/02/20 Суб 21:49:28 1611933242
>>1611918
static_assert(std::is_same<object, decltype(std::move(std::declval<object>()))>::value,"");
статик ассершн файлед
static_assert(std::is_same<object, decltype(std::move(std::declval<object>()))>::value,"");
всё ок
Так что здесь вы неправы.
Аноним 22/02/20 Суб 21:51:25 1611936243
>>1611918
Разметку съело, в общем проходит проверку только с object&&
Аноним 22/02/20 Суб 21:51:43 1611937244
image.png (30Кб, 463x592)
463x592
image.png (28Кб, 993x362)
993x362
>>1611826
>>1611829
Вот типо для примера, как это выглядит. Функция констекспр и строка залупа нигде больше не используется. Почему пидорас на компиляторе не может это заранее подсчитать и подставить готовый хеш? В итоге приходится делать вот такой лайфхак с аргументами шаблона.
Аноним 22/02/20 Суб 21:52:19 1611939245
>>1611933
Ты бы почитал, как тип, обозначаемый `decltype(e)`, получается из типа выражения `e`.
Аноним 22/02/20 Суб 21:58:25 1611951246
>>1611939
Ну ок, а как мне тогда проверить получаемый тип?
Аноним 22/02/20 Суб 21:58:42 1611952247
>>1611937
Потому что так надо. Можешь в макрос завернуть, если тебе такой синтаксис не нравится.
Аноним 22/02/20 Суб 22:00:37 1611955248
>>1611937
> Почему пидорас на компиляторе не может это заранее подсчитать и подставить готовый хеш?
Ты пробовал аргумент std::string_view constexprом сделать?
Аноним 22/02/20 Суб 22:00:46 1611956249
Аноним 22/02/20 Суб 22:01:44 1611959250
image.png (7Кб, 392x119)
392x119
>>1611955
Всмысле, оно так не работает
Аноним 22/02/20 Суб 22:07:35 1611965251
>>1611959
Да не так, при вызове тип
constexpr string_view s;
f(s)
Аноним 22/02/20 Суб 22:11:08 1611967252
>>1611965
То же самое, он так же оставляет строку и считает хеш в рантайме.
Аноним 22/02/20 Суб 22:12:46 1611968253
>>1611967
А если func сделать constexpr?
Аноним 22/02/20 Суб 22:13:05 1611969254
Аноним 22/02/20 Суб 22:14:03 1611970255
Аноним 22/02/20 Суб 22:14:11 1611972256
>>1611967
А, там cout. Ну хз, тогда наверное либо через constexpr a = либо через шаблон.
Аноним 22/02/20 Суб 22:14:32 1611974257
Аноним 22/02/20 Суб 22:15:06 1611975258
Аноним 22/02/20 Суб 22:16:50 1611979259
>>1611967
Хотя может попробуешь cout вытащить оттуда? Посчитать в констекспр, а потом уже печатать отдельно.
Аноним 22/02/20 Суб 22:22:24 1611984260
image.png (36Кб, 563x618)
563x618
>>1611979
Вот так сделал, ничего не изменилось, выход компилятора все тот же со строкой в бинаре.
>>1611972
Ну вот интересно почему так нахуй, что мешает посчитать при компиляции?
Аноним 22/02/20 Суб 22:23:47 1611986261
>>1611984
Может то, что результ не константный?
Аноним 22/02/20 Суб 22:23:57 1611988262
>>1611812
>>1611908
Нужно просто объявить деструктор и определить его в cpp. Иначе придётся include писать в заголовке.
Алсо, =nullptr можно не писать
Аноним 22/02/20 Суб 22:27:40 1611993263
>>1611986
А какая разница константный он или нет? Зачем вшивать в бинарь call GetHash когда можно просто mov rax, 0x228?
Аноним 22/02/20 Суб 22:28:11 1611994264
>>1611956
А, блин, там тот же принцип, что и когда мы например f(T& t) по ссылке получаем, то внутри функции это уже просто T?
Аноним 22/02/20 Суб 22:29:36 1611995265
Аноним 22/02/20 Суб 22:30:03 1611996266
>>1611993
>А какая разница константный он или нет?
Ну больше там не на что ругаться как мне кажется. А тут может он не понимает, что его можно оптимизировать.
Аноним 22/02/20 Суб 22:30:48 1611998267
>>1611995
Ясно, ну неплохо я так обосрался.
Аноним 22/02/20 Суб 22:52:47 1612026268
image.png (44Кб, 677x745)
677x745
image.png (11Кб, 1008x67)
1008x67
image.png (27Кб, 737x361)
737x361
image.png (20Кб, 1003x242)
1003x242
Кстати кто может объяснить как стдшный basic_string_view добился того, что при инициализации из константной строки он считает длину на этапе компиляции? Почему мой кастомный класс так не может и считает все в рантайме?
Аноним 22/02/20 Суб 23:13:07 1612045269
>>1612026
_LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY
size_type length() const _NOEXCEPT { return __size; }
Аноним 22/02/20 Суб 23:16:02 1612047270
>>1612026
>>1612045
Все я походу понял почему, в char_traits::length юзается магическая функция __builtin_strlen которая позволяет зафорсить компилятор посчитать длину заранее.
Аноним 22/02/20 Суб 23:17:00 1612048271
>>1612047
Хз, от имплементации зависит, там где я смотрю нет такого.
Аноним 22/02/20 Суб 23:18:21 1612050272
>>1612047
template<typename _CharT>
_GLIBCXX14_CONSTEXPR std::size_t
char_traits<_CharT>::
length(const char_type* __p)
{
std::size_t __i = 0;
while (!eq(__p[__i], char_type()))
++__i;
return __i;
}
Аноним 22/02/20 Суб 23:19:13 1612051273
>>1612050
static _GLIBCXX_CONSTEXPR bool
eq(const char_type& __c1, const char_type& __c2)
{ return __c1 == __c2; }
Аноним 22/02/20 Суб 23:20:17 1612052274
image.png (47Кб, 1126x443)
1126x443
Аноним 22/02/20 Суб 23:20:28 1612053275
>>1612050
template<typename _CharT>
struct char_traits
{
typedef _CharT char_type;
Аноним 22/02/20 Суб 23:21:03 1612054276
>>1612052
Ну тип работать-то и без этого должно, попробуй как в гцц сделано, мб прокатит?
Аноним 22/02/20 Суб 23:26:32 1612058277
image.png (44Кб, 764x691)
764x691
>>1612054
Ну вот вроде почти так написал, все равно не хочет при компиляции считать. А вы кстати проверяли как гцц компилирует? Может он так же в рантайме считает.
Аноним 22/02/20 Суб 23:45:08 1612081278
>>1611875
Мне в принципе пох. Я писал на множестве разных языков, включая большое количество функциональных. Это меня не пугает. Дело в том, что боюсь погрязнуть в байтоебстве. Раньше то я вручную памятью не управлял. И с другой стороны стоит прагматик, и говорит: нахой оно тибе нужна? Смысл в чем?

И я не могу ответить на эти вопросы. Даже самому себе. Дело в том, что сук тянет к плюсам. Почему не знаю. Просто тянет. Наверное какие то детские мечты. Помню один чувачок с моей группы, а я учился на программиста, рассказывал, что C++ язык для "Ылитки". Я конечно в это поверил тогда. Потом уже, когда писал код на разных языках, включая Хаскелл, я смеялся над этой шнягой. Но теперь не знаю, хочется закрыть этот ебаный гельштат.
Аноним 22/02/20 Суб 23:54:55 1612098279
Аноним 23/02/20 Вск 00:02:27 1612106280
>>1611995
Слушай, вроде как std::move(...) это xvalue expression, и что, можешь тыкнуть где написано про то, что у xvalue тип становится не T&& а T? А лучше вообще на статью, где объяснено про xvalue, glvalue, prvalue и тп.
Аноним 23/02/20 Вск 00:11:05 1612114281
Аноним 23/02/20 Вск 00:13:27 1612118282
Аноним 23/02/20 Вск 00:27:24 1612142283
Аноним 23/02/20 Вск 00:47:27 1612161284
Аноним 23/02/20 Вск 01:17:40 1612178285
Аноним 23/02/20 Вск 01:50:21 1612193286
Посоветуйте, что почитать про шаблоны. Чтобы научиться такую хуйню >>1611602 писать, или хотя бы понимать что оно делает.
Аноним 23/02/20 Вск 02:16:38 1612202287
>>1612193
МунлаеSFINAE пойми да посмотри пару примеров ,"метапрограммирование с++ шаблоны" можешь погуглить, на степике есть курс(бесплатный) https://stepik.org/course/3206/promo, там ближе к концу что-то разбирается, ещё неплохо помогает на хаскеле каком пописать, потому что там те же принципы, а вообще это был пример как сделать простую задачу сложным способом, в реале 95% всей этой хуйни никогда никем не используется, а то и вообще могут ебало набить за подобную хуйню в коде, как заметил анон выше>>1611635, потому что почти всегда всё можно сделать проще, читабельнее и тд
Аноним 23/02/20 Вск 05:48:32 1612234288
>>1611144
Ты говно, троль или дебил кукаретик без опыта.
Аноним 23/02/20 Вск 07:28:23 1612250289
>>1611492
>Что такое рефлекшоны?
Что бы как в qt ты мог в рантайме узнавать информацию об классах, делать циклы по енумам, узнавать кем был вызван метод и т.п. В стандарте это все пока на уровне планов.
Аноним 23/02/20 Вск 12:30:05 1612352290
Почему
char ch = new char[20];
ch = (char
)"full time";
if (ch == "full time") cout << "true\n";
Выдает true, a
cin.getline(ch, 20);
if (ch == "full time") cout << "true\n";
falce? Как это работает?
Аноним 23/02/20 Вск 13:17:07 1612384291
>>1612352
У тебя тут все неправильно и идёт сравнение указателей, а не строк.
Аноним 23/02/20 Вск 14:18:08 1612487292
>>1612384
То есть, "full time" хранится, как константная переменная, но вторая "full time" не может же иметь тот же адрес памяти? Почему тогда true выдает.
Аноним 23/02/20 Вск 14:52:47 1612514293
>>1612487
От компилятора зависит, можно включить объединение строк и будет тот же адрес.
Аноним 23/02/20 Вск 15:09:16 1612533294
Аноним 23/02/20 Вск 16:30:57 1612638295
>>1612514
>>1612352
Хуйню пишете.

    char ch = new char[20]; // Выделяется кусочек памяти на 20 чаров, с адресом первого байта например 0х4242. Так что ch==0x4242
    ch = (char)"full time"; // Берется адрес первого байта статической константы, например 0х0013, и перезаписывается в ch вместо старого значения. Теперь ch==0x0013. Первоначально выделенная память с началом в 0x4242 и размером 20 байт при этом становится недоступной и течёт.
    if (ch == "full time") cout << "true\n"; // Ну тупо сравниваешь значение указателя c тем, что только что присвоил. Очевидно 0x0013==0x0013.

А вот во втором случае надеюсь последние две строчки не продолжение той же программы, иначе это уже совсем пизда всё по-другому:

    char ch = new char[20]; // Так же, как в прошлый раз выделяется память. ch==0x4242.
    cin.getline(ch, 20); // Читается строка и сохраняется в участок памяти, на который указывает ch. Сам ch продолжает указывать на ту же память, т.е. ch==0x4242
    if (ch == "full time") cout << "true\n"; // За каким-то хуем сравнение адреса первого байта статической константы с адресом первого байта выделенной памяти. Очевидно 0x4242!=0x0013.
Аноним 23/02/20 Вск 16:50:46 1612662296
15750466977260.png (596Кб, 900x506)
900x506
>>1611812
Вообщем сделал я эти кастомные удалители для SDL, если кому-то интересно как это сделать могу скинуть гитхаб.
Аноним 23/02/20 Вск 17:48:32 1612761297
>>1612638
Там перед getlune нет выделения, да и любом случае все неправильно. Если надо строки сравнить, то надо либо strcmp либо std::string юзать.
Аноним 23/02/20 Вск 18:54:17 1612831298
15804377197320.jpg (198Кб, 700x943)
700x943
Анончики, помогите. Как создать android-приложение на плюсах с Qt в Visual Studio? Не спрашивайте зачем мне это
Аноним 23/02/20 Вск 18:56:51 1612838299
>>1612831
А никак блядь! Напиши лучше на жабе
Аноним 23/02/20 Вск 19:01:21 1612845300
>>1612831
Какая ламповая проперженная табуретка!
Аноним 23/02/20 Вск 19:06:02 1612853301
>>1612831
Зачем тебе студия, сделай в креаторе, там в хелпе должно быть всё расписано.
Аноним 23/02/20 Вск 19:14:27 1612868302
>>1612853
Мне студия нравится больше, чем креатор. Там даже расширение для Qt есть специальное. Не могу только понять как там проект под андроид создать. За 3 дня перерыл весь интернет и не один способ не работает
Аноним 23/02/20 Вск 19:39:15 1612887303
Думаю на чем делать ГУИ. Под виндоус, кросплатформенность не нужна

Qt - монструозная хрень, требует кодогенерации, нет нормального дизайнера
wxWidgets - в общем норм, есть некоторые корявости вроде обработки событий, нет дизайнера (есть какие-то сторонние тулзы, но ну их)
WinForms - очень простые в использовании, есть дизайнер, по сути дельфи от майкрософта. Но нужно будет делать врапперы вокруг плюсового кода.
MFC - вроде как легаси ад, а вроде как и нет. Есть кое-какой дизайнер. Отлично интегрирована в студию, проблем с вещами вроде файлов ресурсов не будет.
GTK - не юзал, по отзывам имеет нестабильный API, требует танцев с бубном чтобы юзать под виндой.
Аноним 23/02/20 Вск 20:01:36 1612914304
>>1612887
>нет нормального дизайнера
Лолват? Там на виджетах считай теже винформс, только непривычные, а с qml там по-моему даже удобнее чем в студии с xaml.
Аноним 23/02/20 Вск 20:22:37 1612939305
>>1612887
> Qt - монструозная хрень, требует кодогенерации, нет нормального дизайнера
this.
Лучше уж код генерировать, чем дрочить MESSAGE_MAP_BEGIN. Если ещё плагин для студии поставить, то вообще ноль ебли.
И по поводу монструозности - это скорее всего хромиум (спасибо веб-блядям). По факту тебе нужны только Qt5Core.dll, Qt5Gui.dll и Qt5Widgets.dll (все вместе точно до 50мб). Ну и pdb + дебаг версии этих библиотек.
Аноним 23/02/20 Вск 20:22:55 1612940306
>>1612887
>Под виндоус
а кроме этого?
Что делать тулза будет? Какие функции будет? Ну там - базы данных, графики, порты ввода/вывода, сетевые функции, работа со звуком?

Сколько человек будет использовать? Сколько лет, ты планируешь, она проработает? Какие версии винды? Будет ли продаваться (т.е. коммерч. лиценз)?

Будет ли это однократная поделка или допиливаться месяцами/годами? Сколько человек будет участвовать в разработке? Придется ли кому-то после тебя её дорабатывать?
Аноним 23/02/20 Вск 20:24:21 1612942307
>>1612887
>>1612939
Ну и в большинстве случаев можно вообще без moc обойтись, теперь сигналы без него могут работать
Аноним 23/02/20 Вск 20:40:36 1612974308
>>1612887
>монструозная хрень
На сам деле там есть утилита для деплоя приложух, которая сама тебе выбирает только те длл которые требуются. Получается в районе 50-150 мб у меня обычно.
Аноним 23/02/20 Вск 21:03:14 1612997309
>>1612940
Редактор для самодельного игрового движка. Продаваться не будет. Будет использоваться и разрабатываться потенициально лет 20, поэтому стабильность важна (а MFC стабилен как кладбище). Писать буду я один скорее всего.

>>1612914
Например, свой компонент так просто не добавишь через дизайнер, да и вообще в нем большинства компонентов нет. XAML тоже плох, но я и не планировал WPF использовать.

>>1612939
Я сколько не пробовал юзать QT в студии, у меня всегда что-то ломалось. То кодогенерация, то обновления файла формы в дизайнере не подхватывались. Чтобы те же файлы ресурсов прикрепить к бинарнику тоже нужны кастомные шаги сборки.

Вроде как Qt очевидный выбор, но на моем опыте с ней требуются некоторые пляски с бубном. MFC ископаемая, но она в студии работает из коробки.

>>1612974
Тут больше имелся размер самой библиотеки - она скачивает гигабайт 10, наверно, при установке, и там есть вообще все на все случаи жизни.

>Получается в районе 50-150 мб у меня обычно.
Вообще это очень много, для простой десктопной программы.
Аноним 23/02/20 Вск 21:33:28 1613035310
>>1612997
>скачивает гигабайт 10,
Я хз, у нас анально огороженный инет на виртуалках, кют ставим из оффлайн инсталлятора (на сайте есть такая опция, но в жопе).
Аноним 23/02/20 Вск 21:34:28 1613037311
>>1612997
В общем все советуют Qt. Попробую его и посмотрю как пойдет
Аноним 23/02/20 Вск 21:38:18 1613045312
>>1612887
Qt охуенна, я бы даже не думал.
Аноним 23/02/20 Вск 21:56:26 1613062313
>>1612887
Пиши на пьюр винапи. Либо возьми какой-нибудь готовый имгуи.
Аноним 23/02/20 Вск 22:06:28 1613072314
>>1613062
>пьюр винапи
Мазохист? Даже mfc чудовищно, а чистый винапи это за гранью зла.
Аноним 23/02/20 Вск 22:17:31 1613082315
>>1612250
Тупой вопрос. А зачем они нужны? Это RTTI и typeid?
Аноним 24/02/20 Пнд 00:18:00 1613206316
ptr.png (3Кб, 293x258)
293x258
Если передать указатель в другую функцию и освободить память там. То вроде же и указатель в мейне должен освободиться? Я знаю, что указателю после delete еще нужно nullptr присвоить. Но если этого не делать, и просто использовать его дальше будто его не удаляли, то что будет? Код на пике ошибку не выдает. Куда он пишет значение 69? Про смарт поинтеры я в курсе, но мне интересно как эта херня работает с сырыми указателями.
Аноним 24/02/20 Пнд 00:28:25 1613219317
>>1613206
delete просто помечает память как освобождённую, мол память по этому адресу может использоваться снова, с самими данными по адресу ничего не происходит, пока нет нужды их затереть и что-то другое туда записать
Аноним 24/02/20 Пнд 00:38:37 1613224318
>>1613219
А вот хуй там, мой хитрый демон успел в твою память записать свои караваны
Аноним 24/02/20 Пнд 00:40:28 1613225319
>>1613224
Ну типа я про то же, сегодня ты записал туда 69 и распечатал 69, а завтра демон насрал и распечатал ты 18962862865923, хотя 69 вроде записывал.
Аноним 24/02/20 Пнд 00:44:56 1613227320
>>1613224
К слову про демона, у меня твой код 0 печатает.
Аноним 24/02/20 Пнд 00:49:06 1613232321
>>1613225
Компилятор кстати может встроить твой delete и что дальше будет неизвестно
Аноним 24/02/20 Пнд 00:52:00 1613234322
>>1613232
Да понятно, что использовать указатель после делете это юби, чё там будет одному Богу известно.
Аноним 24/02/20 Пнд 00:53:22 1613237323
>>1613234
>использовать указатель
Точнее дереференсить его. Ну это логично, мы сказали, что больше нам не нужна память, куда этот указатель указывает, компилятор делает с ней чё хочет угодно.
Аноним 24/02/20 Пнд 00:59:30 1613239324
>>1613219
>>1613224
То есть, new резервирует мне память на куче, и только мои указатели могут туда писать. А после вызова delete память освобождается, и писать туда может уже кто угодно, верно? Вообще как и кем это все прослеживается? Например сам размер выделеной памяти new int[10] – это делает C++ runtime (или как оно правильно называется) или операционная система за этим следит? Если потом вызвать delete[], откуда он знает, что память размером 10 интегеров, т.е. где хранится эта информация?
Аноним 24/02/20 Пнд 01:03:23 1613241325
>>1613239
>А после вызова delete память освобождается, и писать туда может уже кто угодно, верно? Вообще как и кем это все прослеживается? Например сам размер выделеной памяти new int[10] – это делает C++ runtime (или как оно правильно называется) или операционная система за этим следит?
Размер инта умножается на 10 плюс некоторое смещение, потом с полученным размером вызывается системный malloc.
>>1613239
> откуда он знает, что память размером 10 интегеров, т.е. где хранится эта информация?
Там в начало добавляется смещение, в котором длина хранится, поэтому кстати и нельзя путать delete и delete[], так как обычный delete ничего про смещение не знает, а скобочный будет размер искать в начале.
Аноним 24/02/20 Пнд 01:05:22 1613243326
>>1613239
Впрочем это всё везде может по разному быть реализовано, стандартом не регламентирована реализация, я лишь один из вариантов рассказал.
Аноним 24/02/20 Пнд 07:24:37 1613311327
Аноним 24/02/20 Пнд 07:27:10 1613312328
>>1613239
Строго говоря в твою память и так любой писать может, иначе как бы я cheat engine пользовался.
Аноним 24/02/20 Пнд 08:34:13 1613320329
>>1613239
> Вообще как и кем это все прослеживается?
Для этого придумали unique_ptr
Аноним 24/02/20 Пнд 08:42:25 1613323330
>>1613206
Указатель — это просто число, адрес в памяти. Он вообще не знает, есть ли по этому адресу что-то, или нет. Если память освободили, вызвав delete, а кто-то всё равно полез по этому адресу, то может случиться всякое разное:
- ничего
- дебаггер может поймать ошибку и остановить программу
- чтение мусора
- повреждение данных другого объекта (который уже успели записать туда вместо удалённого)
- порча кучи (внутренних записей менеджера памяти)
- access violation (если менеджер памяти уже отдал этот кусок системе обратно)
Аноним 24/02/20 Пнд 10:03:17 1613345331
>>1613239
>Вообще как и кем это все прослеживается
malloc.c лол
Он какбэ зависит от компилятора, и там обычно сидит оптимизирующий менеджер памяти заточенный под твою ОС. Прямого управления памяти обычно нет никогда.
Аноним 24/02/20 Пнд 12:51:13 1613456332
Я так понимаю, методы структуры хранятся отдельно от информационных полей объектов структуры? Я не проебусь, записав структуру в файл, записав туда какие-нибудь указатели на методы?
Аноним 24/02/20 Пнд 14:03:29 1613522333
>>1613456
Если функции не виртуальные, то норм.
Аноним 24/02/20 Пнд 16:20:40 1613627334
Что происходит с фоновым потоком метода класса, запущенного с помощью datech, при передаче этого объекта в функции указателем?
Аноним 24/02/20 Пнд 16:26:20 1613631335
>>1613456
вот, полюбуйтесь
сначала эти щеночки задают такие вопросы, а потом работают на работах за 150 тыщ рублей в месяц
а я гнию у себя в провинции

Аноним 24/02/20 Пнд 16:27:27 1613632336
>>1613323
>Указатель — это просто число, адрес в памяти.
нет, утырок
вообще то указатели в с++ типизированные, за исключением специального случая

Аноним 24/02/20 Пнд 16:31:49 1613636337
>>1613632
Ну блядь инты и енумы тоже типизированные, но это не отменяет того, что это тоже просто числа.
Аноним 24/02/20 Пнд 17:17:12 1613665338
>>1613631
Ну так тоже работай на работе за 150к, кто тебе мешает?
Аноним 24/02/20 Пнд 18:23:46 1613728339
>>1609284
меня кстати всегла это интересовало, есть пример кода, который переварится в СИ но не в крстах?
Аноним 24/02/20 Пнд 18:41:56 1613763340
>>1613728
#1
int i = ++(int){1}; // compound literal

#2
int foo (size_t n, size_t m[n]); // VLA
Аноним 24/02/20 Пнд 18:54:06 1613782341
>>1613728
ЕМНИП в сях официально есть restrict, в отличие от плюсов.
Аноним 24/02/20 Пнд 19:53:55 1613849342
>>1613763
Кампаунд линерал инта, это, конечно, некст левел.
Аноним 24/02/20 Пнд 19:54:54 1613850343
>>1613728
Приведение void* к другому указателю в плюсах через статик каст, а в си просто так кастится.
Аноним 24/02/20 Пнд 20:13:59 1613869344
>>1613728
Да полно такого в нюансах стандартов, типа void main / int main, смысл auto и static и т.д.
Аноним 24/02/20 Пнд 21:34:23 1613975345
Дано:
std::vector<MyObj > objects;
Как вызвать функцию
void fn(std::vector<MyObjBase
>)
Без лишних мозгоебли с reinterpret_cast и создания нового контейнера?
Аноним 24/02/20 Пнд 22:23:04 1614013346
Аноним 24/02/20 Пнд 22:29:38 1614021347
Заметна ли разница по времени между обращением к элементу по индексу у вектора и массива? Ну мне дохуя раз надо получается. VS пишет, что много времени уходит на [] оператор. Есть эксперты в чате?
Аноним 24/02/20 Пнд 23:11:50 1614097348
сап. тупой вопрос, но я не могу нагуглить хоть убейте. есть функции strchr() и strtchar(). а какой аналог strrchr для strstr? чтоб нашло последнее появление субстроки в строке, а не первое
Аноним 24/02/20 Пнд 23:16:43 1614101349
>>1613975
А просто template<class T> void f(std::vector<T>) не покатит?
Аноним 24/02/20 Пнд 23:19:46 1614106350
>>1613975
Или вектор shared_ptr<MyObjBase>`ов хранить?
Аноним 24/02/20 Пнд 23:25:01 1614116351
>>1614101
>>1614106
Идея правильная, но хотелось бы этот код оставить в .cpp.
shared_ptr же тут ни не поможет?
Аноним 24/02/20 Пнд 23:27:03 1614120352
>>1614116
>shared_ptr
Оставить код в цпп? Поможет, наверное.
Аноним 25/02/20 Втр 00:32:19 1614191353
Аноним 25/02/20 Втр 00:55:53 1614204354
>>1614097
std::string::rfind.
Ну что ты как маленький, хоть погуглил бы.
Аноним 25/02/20 Втр 02:05:25 1614230355
Что можно почитать по устройству компиляторов/линковщиков и конкретно Visual Studio?
Надоело, что процентов 70 сообщений при работе со сторонними библиотеками тупо не понимаю.
Аноним 25/02/20 Втр 02:37:45 1614237356
>>1614204
спасибо большое. гуглил, но упорно не гуглилось. надо приучать себя на инглише гуглить
Аноним 25/02/20 Втр 02:59:18 1614239357
>>1614021
В дебаг сборках медленнее, в релиз только при изменениях резерва памяти в рантайме, если ты резерв подходящий не сделал.
Аноним 25/02/20 Втр 06:44:39 1614260358
>>1614239
А еще лучше наверное делать vector.resize()?
Аноним 25/02/20 Втр 07:09:59 1614264359
>>1614260
И кактус на монитор поставить зумеры, это вам не джаваскрипт, тут нужно понимать что происходит
Аноним 25/02/20 Втр 09:12:42 1614319360
>>1614260
Наверное, все же vector::reserve.
Аноним 25/02/20 Втр 09:36:16 1614331361
Аноним 25/02/20 Втр 09:38:56 1614333362
>>1614120
Так типы всё равно разные, оно даже не соберётся
Аноним 25/02/20 Втр 10:09:46 1614352363
Ура, анончики! Час назад прислали оффер на джуна, люблю этот тред!
Аноним 25/02/20 Втр 10:30:05 1614360364
Аноним 25/02/20 Втр 10:34:24 1614362365
Анончики, не подскажите как в C++ получить максимальную информацию о компьютере? Начиная от битности системы, заканчивая видюхой? Гуглил, ничего толкового не нашел...
Аноним 25/02/20 Втр 10:50:47 1614378366
Аноним 25/02/20 Втр 10:52:11 1614379367
Аноним 25/02/20 Втр 11:07:37 1614393368
1582618056409.png (257Кб, 1080x1920)
1080x1920
>>1614362
Ты даже не начинал гуглить кому ты врешь.
Аноним 25/02/20 Втр 11:10:42 1614394369
>>1614393
мне нужна не только это. Мне нужны максимально возможные данные о компе. Понятно, что если гуглить по отдельности, может и сделаю (За 1к строк), но может есть более практичные способы (Где всё храниться в одном месте/либе)
Аноним 25/02/20 Втр 11:13:17 1614398370
>>1614360
Я больше имел ввиду то, что хотелось бы, чтобы этот код не расползался по разным dll и при изменении не приходилось всё заново собирать.
Аноним 25/02/20 Втр 11:38:36 1614427371
1582619915302.png (264Кб, 1080x1920)
1080x1920
>>1614394
Прекращай клоунаду.
Аноним 25/02/20 Втр 11:52:06 1614445372
>>1614427
Смотрел сколько там данных? Или думаешь я так не гуглил. Там инфы на 0.01% нужной мне. Нужно что-то на подобии wmi python
Аноним 25/02/20 Втр 11:59:49 1614453373
>>1614445
Нахуй тебе инфа? А разрешение пользователя на сбор ты получил?
Аноним 25/02/20 Втр 12:06:25 1614465374
Аноним 25/02/20 Втр 12:29:41 1614505375
>>1610507

const int L = 7; // L = 8

Бля, вот это ты мне мозг сломал сука xD

Я просто мимокрог. Смотреть эту хуйню, или тебе уже не надо?
Аноним 25/02/20 Втр 12:34:32 1614508376
изображение.png (48Кб, 844x699)
844x699
изображение.png (37Кб, 566x769)
566x769
помогите пожалуйста понять что не так с кодом. если убрать из ифа на втором скрине переменные act_leftpressed и act_rightpressed, ошибка исчезает, это кстати приватные поля того же класса actor
Аноним 25/02/20 Втр 13:05:41 1614559377
>>1614508
По умолчанию ретурн добавь
Аноним 25/02/20 Втр 13:07:59 1614564378
Аноним 25/02/20 Втр 14:19:12 1614627379
>>1614564
Включай в компиляторе warnings as errors
Аноним 25/02/20 Втр 15:26:40 1614682380
warn.png (11Кб, 1543x128)
1543x128
>>1614627
Еще лучше использовать стат анализаторы чтобы все варнинги по мере написания кода показывались.
Аноним 25/02/20 Втр 15:36:38 1614700381
>>1614445
Т.е ты сам нихуя не знаешь, какие данные тебе нужны? Земля бетоном. Алсо репортнул тебя на всякий тарищу майору, ты какой то.
Аноним 25/02/20 Втр 16:20:49 1614739382
>>1614264
>>1614319
С reserve() нужно будет использовать push_back(), а с resize() сразу можно оператором [] записывать. Что в цикле быстрее?
Аноним 25/02/20 Втр 16:41:43 1614751383
>>1614352
Поздравляю.
Какие у тебя вводные? Что спрашивали? О чем примерно тестовое?
Аноним 25/02/20 Втр 17:01:02 1614770384
>>1614751
Спасибо!
4 курс, ит-специальность, учил плюсы на первом и втором курсах, но очень медленно - тупо освоил книгу Лафоре "ООП в С++", но потом понял, что она очень старая. Год тупо ничего не делал, этой осенью снова взялся за обучение, но плотнее. Попытался найти работу, но ничего не получилось - 4 отказа после тестового/собеседования. Сейчас понимаю, что знал мало. Немного потрогал кьют в ходе решения одного из заданий, неспешно прочитал все книги Майерса кроме СТЛ, петов на гитхабе не было, только несколько решенных тестовых небольших. Если все объединить, то мой объем знаний можно получить за год интенсивного обучения.

Написала эйчар по резюме, которое не обновлял месяца 3, выслала тестовое - сделать клиент-северный чат на сокетах без использования библиотек, компилировать под линукс и написать мейкфайл вручную. Я немного переусердствовал и написал насколько умею и понимаю в ООП-стиле, чтобы было расширяемо и т. д., отправил, позвали на собеседование. На собеседовании, что интересно, вопросов чисто по плюсам не было - тимлид сказал: "мне в принципе всё понятно". Писал насколько могу хорошо - лямбды, смарт-поинтеры, все, что знаю и понимаю из более свежих стандартов в общем. Хотя уже сейчас, глядя на этот код, очень много переделал бы

Аноним 25/02/20 Втр 17:18:01 1614792385
>>1614739
Быстрее без цикла целый диапазон одним insert.
Аноним 25/02/20 Втр 17:46:58 1614810386
Аноним 25/02/20 Втр 17:55:13 1614815387
Мне сегодня приснился сон. Суть его в следующем. Если у бабы сиськи большие, то это аналогично тому, что она хранит данные в самих сиськах, а данные как мы знаем бывают объемные. У мужиков сиськи не объёмные потому, что мужики хранят указатель на данные, а не сами данные.
Аноним 25/02/20 Втр 17:57:10 1614818388
Поняли?)
Аноним 25/02/20 Втр 18:23:48 1614839389
Аноним 25/02/20 Втр 18:24:34 1614840390
>>1614770
Тащи код сюда. Интересно же как выглядит код, который апрувнули, думаю ньюфаням будет полезно.
Аноним 25/02/20 Втр 20:57:10 1614931391
>>1614739
Быстрее reserve + emplace_back.
Во время resize будет создаваться объект конструктором по умолчанию, а потом перезаписываться копирующим =.
В случае emplace_back объект будет конструироваться прямо на месте.
Аноним 25/02/20 Втр 22:48:37 1615022392
15750466977260.png (596Кб, 900x506)
900x506
Я тут недавно мелькал с тестовым заданием по поводу Понга с ботом. Сдавал его где-то неделю назад, как я понял само тестовое их устроило раз позвали на собес, но на собесе я ужасной чепухи наговорил и мне так и не перезвонили.
https://github.com/AI-Decay/Pong-with-Bot
Аноним 25/02/20 Втр 22:53:26 1615025393
>>1615022
Скриншот кинь хоть посмотреть
Аноним 25/02/20 Втр 22:54:25 1615027394
>>1615025
? Я скинул гитхаб же, код весь там, должно собираться. Сейчас уже вижу много проблем в этом коде, но я ничего не изменял с момента отправления.
Аноним 25/02/20 Втр 22:55:07 1615028395
>>1615027
Ты думаешь мне не влом возиться с твоей парашей?
Аноним 25/02/20 Втр 22:56:16 1615030396
>>1615028
Так а чего скриншот ты хочешь? Там же не 1 файл
Аноним 25/02/20 Втр 22:56:40 1615031397
>>1615030
Игры самой прост, визуальной
Аноним 25/02/20 Втр 22:56:57 1615032398
составляющей
Аноним 25/02/20 Втр 22:57:55 1615033399
Screenshot7.png (16Кб, 1443x930)
1443x930
Screenshot8.png (12Кб, 1446x929)
1446x929
Аноним 25/02/20 Втр 22:59:35 1615037400
1506208046653.png (39Кб, 595x400)
595x400
>>1615033
Ну на пин понг похоже, я тут глянул код, ебать ты в паблике насрал, все кишки наружу
Аноним 25/02/20 Втр 23:00:35 1615040401
Как на крестах работать с XML стандартными средствами?
Аноним 25/02/20 Втр 23:00:50 1615041402
>>1615033
Каким то методам const дал , каким то нет
Аноним 25/02/20 Втр 23:01:02 1615042403
>>1615037
Это я только в меню сделал так, точнее забыл просто спрятать
Аноним 25/02/20 Втр 23:01:09 1615044404
Аноним 25/02/20 Втр 23:08:07 1615050405
1449443164050.png (12Кб, 928x59)
928x59
>>1615042
говнокод лопатами можно выгребать
Аноним 25/02/20 Втр 23:24:13 1615066406
141798639087188[...].jpg (146Кб, 622x800)
622x800
>>1615050
Я старался сделать как можно лучше.
Аноним 25/02/20 Втр 23:28:28 1615069407
>>1615066
В этом и твоя проблема. Надо делать не как можно лучше, а нормально блядь, чтобы удобно было, и писать, и читать, и использовать.
Аноним 26/02/20 Срд 00:23:32 1615127408
>>1614815
А где у мужиков сами данные?
Аноним 26/02/20 Срд 00:42:38 1615141409
>>1615069
Это что то типа парадокса Блаба. Новичок не может знать что такое нормально, для него это и есть нормально. Потом он узнает о новой фиче, и начинает считать ее нормальной, а предыдущую - недостаточно хорошей.
Аноним 26/02/20 Срд 00:43:36 1615143410
>>1608046 (OP)
как так вышло, что в плюсах нет дефолтного типа byte и нужно делать все через charы?
Аноним 26/02/20 Срд 00:44:30 1615144411
>>1615127
Он же написал у мужиков указатели. Очевидно джва маленьких шара и указатель, направляемый в сторону двух больших шаров женских данных.
Аноним 26/02/20 Срд 00:45:13 1615145412
Аноним 26/02/20 Срд 00:45:20 1615146413
>>1615127
мужики хранят данные в чужих сиськах
Аноним 26/02/20 Срд 00:46:24 1615147414
>>1615022
Шляпища. Незнание ООП вижу я. Очень слабая реализация, нет интерфейса. Это даже не уровень лабы.
Аноним 26/02/20 Срд 00:47:26 1615148415
>>1615145
>uint8_t
но это же очередной сорт инта
Аноним 26/02/20 Срд 00:48:33 1615149416
Аноним 26/02/20 Срд 00:49:26 1615150417
Аноним 26/02/20 Срд 01:46:22 1615161418
>>1615144
>указатель, направляемый в сторону двух больших шаров женских данных
Лучше, когда указатель является указателем на член класса. Забыл, на каком языке пишешь?
Аноним 26/02/20 Срд 01:54:51 1615162419
Аноним 26/02/20 Срд 03:02:04 1615175420
>>1615040
> 2020
> xml
Лучше никак. Если будешь использовать libxml2, то отруби в нём всё то же что отрубали в xmlsec. Для базового использования можешь взять rapidxml или tinyxml2.
Аноним 26/02/20 Срд 05:08:34 1615181421
>>1614810
Сначала испытательный срок - платят только оклад 24к, затем добавляется бонус 0-40%, который зависит от результативности на проектах, т. е. после исп. срока 24к-33.6к. Не ДС-ы.

>>1614840
Щас дерьмом закидают как бедолагу выше
https://anonymous.4open.science/r/acfc48d1-abf6-480d-a5b2-2d6b729c985c/
Аноним 26/02/20 Срд 05:46:31 1615183422
>>1615022
Типичный код новичка, который пытается имитировать "настоящий" код, старается, но толком не понимает, что делает.

Все не так плохо. Но если тебя взять на работу, то вреда будет больше, чем пользы: кому-то придется тебя учить.
Аноним 26/02/20 Срд 05:50:23 1615184423
Можно ли назвать знания работы с мьютексами и обоспечение потокобезопасности фундаментальными знаниями C++ для джуна?
Аноним 26/02/20 Срд 06:56:33 1615187424
>>1615022
>>1610003
Он разбирал многие моменты, которые у тебя коряво написаны, в плейлисте для начинающих
Аноним 26/02/20 Срд 07:02:13 1615188425
>>1615040
Никак. У меня только в легаси есть tinyxml, обычно кютешный жсон искаропки или свой дсл.
Аноним 26/02/20 Срд 12:18:51 1615302426
>>1615181
>как бедолагу выше
Ты-то прошёл, какая тебе беда, если закидают.
Аноним 26/02/20 Срд 12:48:24 1615322427
>>1615302
Я не хотел тебя обидеть, мне просто всегда стыдно за свой код почему-то
Аноним 26/02/20 Срд 12:52:16 1615329428
>>1615322
Я не тот бедолага, я далеко не такой смелый.
Аноним 26/02/20 Срд 13:01:18 1615342429
>>1615147
А куда я тут мог интерфейс засунуть? Разве что сделать какой-то класс, который бы обобщал все фигуры (которых у меня всего 2)
Аноним 26/02/20 Срд 13:02:04 1615346430
>>1615183
>Все не так плохо. Но если тебя взять на работу, то вреда будет больше, чем пользы: кому-то придется тебя учить.
Я думал Джунов обычно и учат по началу.
Аноним 26/02/20 Срд 14:30:23 1615485431
>>1615181
Охуеть, с таким тестовым такая маленькая зп. И сколько времени давалось на него?
Аноним 26/02/20 Срд 14:39:25 1615503432
>>1615346
Не, учат интернов, а джун это такой имплементщик, предполагается, что он способен нормально выполнять задачи по данному описанию, ну там создай класс, который ведёт себя так-то, отрефактори вот это и это, чтобы было вот так, добавь функционал такой-то по аналогии с тем-то и тд
Аноним 26/02/20 Срд 14:43:33 1615506433
>>1615181
>anonymous.4open.science
Ты бы еще накрыл AES-ом исходники, а то чето слишком легко смотреть, всего лишь файлы по одному скачивать

Я б взял теннисиста, чем этого шифрующегося шизика-дауна
Аноним 26/02/20 Срд 14:47:48 1615518434
>>1615485
Удваиваю. Меня без тестового джуном брали на 40. И книжек по крестам я не читал.
Аноним 26/02/20 Срд 15:05:44 1615553435
>>1615506
Вот даун сука, с этой говнохуйни даже вгетом напрямую файлы не вытянуть

Идут нахуй: ты, твой чат, создатель этого шедеврального реп хостинга
Аноним 26/02/20 Срд 15:20:37 1615585436
Аноним 26/02/20 Срд 15:25:32 1615590437
>>1615585
Ну поставь звездочку тогда, шерлок. Тебе же нужно скопировать чужой кот. А за возможность говорят спасибо, а не "ебать клоун"

мим
Аноним 26/02/20 Срд 15:34:50 1615611438
>>1615585
Пиздец, нахуя по 100000 хеадеров создавать на каждый пук? Открываешь файл, а там 5 строчек один ебучий енум объявлен и все.
Аноним 26/02/20 Срд 16:10:54 1615713439
>>1615585
Смешно, и смысл было шифроваться.
Аноним 26/02/20 Срд 16:56:08 1615785440
Вопрос по SFML.
Почему, когда я применяю к спрайту setOrigin(10, 20), спрайт сдвигается в точку (-10, -20) ?
Аноним 26/02/20 Срд 17:32:20 1615840441
>>1615485
Это я переборщил, тимлид сказал, что достаточно было бы захардкодить
>>1615585
Ну вот поэтому я и не хотел ссылку кидать
Аноним 26/02/20 Срд 17:39:16 1615857442
>>1615840
>ссылку кидать
Ебать ты программист, нахуй. Сейчас (да и раньше) в интернете, если палишь уникальное сочетание символов, то это деанон
Аноним 26/02/20 Срд 18:25:11 1615907443
>>1615840
>Ну вот поэтому я и не хотел ссылку кидать
Скинул бы сразу всем было бы похуй. Эффект стрезанд в действии.
Аноним 26/02/20 Срд 19:26:18 1615993444
>>1615785
Потому что ты меняешь точку от которой он рисуется/вращается/итп.
Аноним 27/02/20 Чтв 11:12:32 1616672445
>>1615611
Двачую. Видимо из сисярпа перекатился он, там это частая практика.
Аноним 27/02/20 Чтв 11:14:33 1616674446
>>1615585
Ебать там калькулятор, мне аж плохо стало.
Аноним 27/02/20 Чтв 11:19:40 1616679447
>>1616672
Нет
>>1616674
Это что-то вроде lab3.cpp со второго, кажется, курса лол
Аноним 27/02/20 Чтв 15:15:07 1617077448
>>1615585
>>1616679
А что тебе в форварде ответили?
мимо ничего не ответили
Аноним 27/02/20 Чтв 15:34:09 1617110449
>>1617077
Отказали - слабое решение (так и есть)
Аноним 27/02/20 Чтв 16:43:53 1617248450
Между версиями qt большие отличия? Есть смысл более старую версию ставить, если книжка по ней именно?
Аноним 27/02/20 Чтв 17:22:10 1617288451
>>1617248
ставь новую. Отличия есть, но разберешься.
Аноним 27/02/20 Чтв 18:09:30 1617326452
>>1617248
>2020
>найти книжку в интернете по любой версии qt не проблема
>есть смысл более старую версию ставить, если книжка по ней именно?
Как же мне не понять этих людей
Аноним 27/02/20 Чтв 18:37:42 1617347453
как думаете, насколько корутины будут медленными?
в принципе, это довольно прикольно выглядит, только интересно, сколько за это придётся заплатить.
Аноним 27/02/20 Чтв 18:44:44 1617359454
>>1617326
Книжки не поспевают за версиями, очевидно же.
Аноним 27/02/20 Чтв 18:46:04 1617360455
>>1617248
Он хорошо учится по встроенному хелпу с примерами и туториалами, ну и стоковерфлоу для трудных мест.
Аноним 27/02/20 Чтв 18:49:40 1617365456
char ch 1, ch2;

ist.get(ch1);
if (!ist) return;

ist.get(ch2);
if (!ist) {
ist.clear();
ist.unget();
}
return;

Я правильно понимаю, что unget() положит обратно ch1? Влияет ли ist.clear() на память потока (последний символ)? Влияет ли неуспешная попытка ist.get(ch2) на память потока (последний символ)?
Аноним 27/02/20 Чтв 19:04:07 1617373457
>>1617365
Матерь Божья, ist.clear(std::ios_base::badbit) выставляется. Пусти идиота программировать, и он отстрелит всю ногу.
Аноним 27/02/20 Чтв 19:14:55 1617378458
Аноним 27/02/20 Чтв 19:20:44 1617383459
>>1617378
>корутина и сопрограмма в одном скрине
Орнул.
Аноним 27/02/20 Чтв 19:59:19 1617415460
Анон, дай совет студенту (хотя тут и так одни студенты). Есть вот такой код http://cpp.sh/74jmm
Да, это лаба, но при её выполнении у меня появилось аж два вопроса:
как сделать 132, 161 и 173 строки хоть немного короче, чтобы умещались хотя бы в 24 дюймовый экран в 100% масштабе?
Почему в строках 132 и 137 если для переменных chas, minuta и sekunda написать пространство имён Triad вместо Time, то нихера не работает, а переменным god, mesjac и den вообще насрать, через Triad к ним обращаются или через Date?
Аноним 27/02/20 Чтв 20:45:26 1617432461
image.png (38Кб, 422x361)
422x361
>>1617383
Что не так с сопрограммой??

улыбнуло "Не следует путать с Копрограмма."
Аноним 27/02/20 Чтв 20:45:39 1617433462
>>1617415
У тебя ромбовидное наследование.
Memories
/            \
Date       Time
\          /
  Triad

Ну вот компилятор и не знает, ты собираешься использовать Triad который от Time или который от Date
Аноним 27/02/20 Чтв 20:49:22 1617440463
>>1617433
А почему переменные god, mesjac и den изменяясь в Date меняются также и в Triad, а с классом Team такого не происходит? Что-то мистика какая-то.
Аноним 27/02/20 Чтв 20:53:15 1617443464
>>1617440
В Date ты обращаешься к переменным напрямую: ++god
В Time ты создал Новое поле Date date; и меняешь ЕГО поля date.DenPlus()
Аноним 27/02/20 Чтв 20:53:58 1617445465
image.png (15Кб, 480x217)
480x217
>>1617415
>как сделать 132, 161 и 173 строки хоть немного короче
берешь и переносишь. Код у тебя тот еще пиздец, конечно. Последняя строка функции SohranVremja что должна делать?

>Почему в строках 132 и 137 если для переменных chas, minuta и sekunda написать пространство имён Triad вместо Time
потому что protected
Аноним 27/02/20 Чтв 20:58:35 1617452466
>>1617443
Ааа, а я это говно месяца два назад написал, а пришло время сдавать только сейчас. Спасибо за терпение.
>>1617445
>Последняя строка функции SohranVremja что должна делать?
Хрен его знает. Наверное, рудимент от чего-то остался. Вообще, этот код ещё надо бы чистить и править.
Аноним 27/02/20 Чтв 21:04:11 1617457467
>>1617452
Я б честно говоря все выкинул и переписал.
Мне кажется что идея у тебя была такая
class Triad { int a,b,c }
class Date : Triad { getDay() {return a} setDay(d) {a=d} ...}
class Time : Triad { getHour() {return a} setHour(h) {a=h} ...}
class DateTime : Date, Time { Date date; Time time; setDateTime(long long unixtime) { date.setDay(...)} }
Аноним 27/02/20 Чтв 21:10:05 1617459468
>>1617457
Ой, в последней строчке я имел в виду без наследования, просто аггрегацию:
DateTime { Date date; Time time; ...
Правда я не знаю какое у тебя задание, может как раз на наследование... С другой стороны, нужен ли класс Triad...
Аноним 27/02/20 Чтв 21:10:38 1617460469
Аноним 27/02/20 Чтв 21:51:07 1617492470
>>1617432
Да норм все. Анон просто не знает нормы русского языка, которые говорят, что нельзя употреблять одно и то же слово в отдельной части текста
Аноним 27/02/20 Чтв 21:52:36 1617494471
>>1617460
Про ссылку я почувствовал, увидев move и не увидев &&. А вот про noexcept протупил.
Аноним 27/02/20 Чтв 21:54:49 1617496472
>>1617460
Ты с шаред перепутал.
Аноним 27/02/20 Чтв 22:15:27 1617510473
>>1617460
А, кажется они хотели ABI поменять в c++20 но старперы проголосовали против.
Аноним 27/02/20 Чтв 23:22:30 1617566474
image.png (26Кб, 422x561)
422x561
Сап аноны недавно начал вкатываться в программирование и у меня
возник вопрос можно ли как то передать адрес массива который определен в другой функции причем что бы main использовался только для вызова других функций вот код который я сделал для примера
Аноним 27/02/20 Чтв 23:30:15 1617570475
>>1617566
Можно
Просто делаешь этот массив ДО функции mas и в нее передаешь.
Ну например
int main()
{
int * mass;
int limit = mas(mass);
int summ = sum(mass, limit);
delete[] mass;
заодно и не забудешь удалить его - каждому new[] должен соответствовать delete[]
int mas(int& mas) { //тут передаешь массив по ссылке - все изменения распространятся и вовне
...
mas = new int[n];
...
Аноним 28/02/20 Птн 00:49:11 1617637476
>>1617570
Он же функции после main пишет даже не сообщая main о их существовании, он же даун.
Аноним 28/02/20 Птн 01:07:29 1617642477
>>1608046 (OP)
Сложно ли вкатываться на работку джуниора c++? Много ли знать надо?
Аноним 28/02/20 Птн 01:09:52 1617644478
>>1617642
Надо знать C++, матан, теорию алгоритмов, дискретную математику и, зависимо от направления, физику. Тебе всё это будет проще в универе каком-нибудь выучить. 4-5 лет и ты проградрист.
Аноним 28/02/20 Птн 01:10:04 1617645479
>>1617637
Наверняка там прототипы сверху вместе с инклюдами.
Аноним 28/02/20 Птн 01:11:12 1617646480
>>1617645
Никогда не понимал смысла прототипов, логично же сразу в начале программы объявить все функции без маняпрототипов.
Аноним 28/02/20 Птн 01:50:57 1617660481
>>1617644
>C++, матан, теорию алгоритмов, дискретную математику и, зависимо от направления, физику
Охуенный список. Из него реально полезно знать только ВНЕЗАПНО С++. Возможно алгоритмы, чтобы на собесах (и только на собесах) деревья вертеть. Все остальное зависит от предметной области.
>4-5 лет и ты проградрист.
На этом уже шаге можно искать оплачиваемую стажировку. На которой даже платят деньгами.
Аноним 28/02/20 Птн 01:53:02 1617662482
Аноны, у меня опять проблемы
http://www.cpp.sh/5bdot
Почему методы класса Date при вызове из объектов в классе Time не отрабатывают? Компилятор как будто их не видит. Использую VS2019.
Аноним 28/02/20 Птн 01:53:47 1617663483
>>1617662
>при вызове из методов в классе Time
Поправил себя.
Аноним 28/02/20 Птн 02:02:29 1617665484
Аноним 28/02/20 Птн 02:20:10 1617668485
>>1617663
Я думаю, что тебе надо передать объект date по ссылке внутрь этих функций.
Аноним 28/02/20 Птн 02:22:45 1617669486
>>1617668
А как передавать по ссылке? Я в ссылках в ООП ещё не особо разобрался, мой максимум это списки.
Аноним 28/02/20 Птн 02:32:50 1617670487
>>1617669
void ChasPlus(Date& date)
..
void PlusChas(Date& date) { ChasPlus(date); PokazDataVremja(); maks(); min(); }
..
if (vvod == "ChasPlus") vremja.PlusChas(date);
Если я сам не путаю ничего, тоже изучаю только пока.
Аноним 28/02/20 Птн 02:35:10 1617671488
Аноним 28/02/20 Птн 02:36:17 1617672489
>>1617510
>ABI поменять
Это ты про что?
Аноним 28/02/20 Птн 02:37:50 1617673490
>>1617642
Сложно. Много и главное понимать нужно. Выбери что-то другое, там во многих случаях просто знать достаточно.
Аноним 28/02/20 Птн 02:48:51 1617676491
>>1617673
>Выбери что-то другое
Питон?
Другой анон
Аноним 28/02/20 Птн 02:51:20 1617677492
>>1617676
Не знаю, я не выбирал другое. Почему? Да ни почему. Какие могут быть почему, когда есть c++?
Аноним 28/02/20 Птн 02:58:11 1617679493
>>1617677
А в линупсах почему-то всюду этот питон. Хотя он в десятки раз медленнее крестов.
Аноним 28/02/20 Птн 03:00:29 1617681494
>>1617679
Он удобен для написания небольших скриптиков, много чего делается искаропки, учится моментально, в каком-то смысле каждый программист умеет писать на питоне, тк он близок к псевдокоду и тд
Аноним 28/02/20 Птн 03:33:46 1617686495
>>1617681
А мне было бы удобно программировать на Русском
цел главн()
{
строка хуй;
вывод << "Эй, анон";
ввод >> хуй;
если(хуй == "а?") вывод << "хуй на!";
}
Аноним 28/02/20 Птн 03:34:43 1617687496
>>1617686
Тогда тебе в 1С тред.
Аноним 28/02/20 Птн 03:35:41 1617688497
>>1617687
Но я хочу так в крестах! Чтобы тупые пиндосы учили великий Русский язык лишь бы кодить на крестах!
Аноним 28/02/20 Птн 03:37:45 1617689498
image.png (100Кб, 262x512)
262x512
image.png (161Кб, 310x604)
310x604
Аноним 28/02/20 Птн 03:41:18 1617690499
>>1617689
А теперь сделай из крестов ассемблер и заскринь сюда.
Аноним 28/02/20 Птн 03:45:00 1617691500
image.png (413Кб, 1280x720)
1280x720
>>1617690
Зачем? Там и без этого можно на асме писать.
Аноним 28/02/20 Птн 03:46:43 1617692501
Аноним 28/02/20 Птн 03:56:49 1617696502
>>1617670
Не работает, всё равно методы Date не вызываются через методы Time.
Аноним 28/02/20 Птн 04:49:31 1617703503
Аноним 28/02/20 Птн 05:02:26 1617705504
>>1617703
Что ты сделать хочешь?
Аноним 28/02/20 Птн 05:10:03 1617708505
>>1617691
Сука ненавижу когда перед и полсе звездочки пробелы, когда она в качестве оператора указателя.
Аноним 28/02/20 Птн 05:12:14 1617709506
>>1617708
Да, это хуита, я лично всегда пишу рядом с типом, int*, а кто-то пишет пробел перед звёздочкой, в этом тоже какая-то логика есть, но мне её не понять, так получается тип "указатель на инт", а так хз что вообще, ещё с констами какая-то такая параша тоже есть.
Аноним 28/02/20 Птн 05:30:57 1617712507
>>1617705
Я хочу здесь http://www.cpp.sh/5bdot понять, почему методы Date не вызываются при компиляции из методов Time, если оба методы наследуются от Triad, а Date является другом Time.
Аноним 28/02/20 Птн 05:43:26 1617714508
Аноним 28/02/20 Птн 05:48:28 1617717509
>>1617714
Попробуй тут часы, минуты и секунды поуменьшать и посмотри, как не меняются от этого дни, месяцы и годы
https://repl.it/repls/ConsciousShamefulOctal
А при линейном наследовании вида Tried->Date->Time всё нормально.
Аноним 28/02/20 Птн 05:49:35 1617718510
>>1617717
Очень, очень тяжело понять, что у тебя там написано, но если я правильно понял у тебя при вызове ChasPlus меняется переменная date, которая у тебя class Date{...}date;, а не vremja.
Аноним 28/02/20 Птн 06:20:05 1617720511
>>1617718
Спасибо, я тоже не понял, что у тебя тут написано.
Аноним 28/02/20 Птн 06:21:20 1617721512
>>1617720
При вызове ChasPlus меняется
class Date{
...
}date;, а должна меняться vremja.
Аноним 28/02/20 Птн 06:28:22 1617723513
>>1617720
class Date : protected Triad
{...}date;

class Time : protected Triad
{
protected:
void ChasPlus()
{
if (chas == 23) { date.DenPlus(); chas = 0; }
else ++chas;
}
Вот тут ты date меняешь.

class Memories : protected Date, protected Time
{
....
void PlusChas() { ChasPlus(); ...}vremja;
...
vremja.PlusChas()

А вот тут ты меняешь vremja, но ChasPlus будет менять не Date, которая в vremja, а date, которая выше была.
Аноним 28/02/20 Птн 06:32:44 1617725514
>>1617721
>>1617723
Короче, я напутал в методах-сохранялках даты/время? Сама по себе дата меняется, но я сохраняю не то. Я понял.
Аноним 28/02/20 Птн 06:44:16 1617728515
>>1617725
Да, ну и я бы переделал так, считал бы всё в секундах, ну там addday это добавлял бы к текущему количеству секунд 86400 и тд, а потом как хотел бы печатать брал бы остаток от деления на 86400(это были бы часы/минуты/секунды) и то, что поделилось было бы днями и потом переводил бы количество дней в год месяц день по формуле отсюда
https://web.archive.org/web/20170507133619/https://alcor.concordia.ca/~gpkatch/gdate-algorithm.html
Аноним 28/02/20 Птн 08:17:54 1617746516
ScreenshotBrave[...].png (455Кб, 1080x1920)
1080x1920
>>1617672
Ну он там в середине видео пояснял, что unique_ptr генерит 4 лишние инструкции ассемблера, причем не самые быстрые, косвенный доступ к памяти. Вот об этом речь видимо и шла.
Аноним 28/02/20 Птн 09:03:11 1617756517
Сап, анон. Делаю бенчмарки своего сатана, бенчмарк сделан так: загрузка файла в вектор значений, запуск таймера, цикл по выходным значениям, мой матан (используется Eigen), результат в другой предсозданный до таймера вектор, таймер стоп.
В релизе процессор мммаксиум в 30%, как увести его в сотку?
Аноним 28/02/20 Птн 09:37:50 1617770518
>>1617696
А ты их объявил виртуальными?
Почитал бы хоть о принципах наследования, а не брался за него сразу, да ещё и за множественное.
Аноним 28/02/20 Птн 10:15:08 1617789519
>>1617696
Блядь. Удали весь свой сраный код и выбери предметную область получше.
Для изучения наследования и композиции отлично подходят gui-контролы. Заодно и чему-то реально полезному научишься.
Аноним 28/02/20 Птн 11:33:26 1617832520
>>1617717
Я тебе вчера уже объяснял, почему.>>1617723
Потому что в MinutaMinus() ты вызываешь ChasMinus() ЭТОГО объекта, vremja.
А в ChasMinus() ты вызываешь date.DenMinus() ДРУГОГО объекта date.
Аноним 28/02/20 Птн 11:46:01 1617844521
>>1617696
Я тебя запутал немного, у тебя объекты были глобальными созданы, т.е. не надо передавать их в функцию.
Если я правильно понял твою ошибку, то у тебя дни прибавляются в объекте date, а выводишь ты значения полей объекта vremja.
Аноним 28/02/20 Птн 12:09:02 1617860522
Аноним 28/02/20 Птн 14:41:38 1617974523
>>1617746
Нет, в смысле он имеет ввиду например сменить всякие __gxx_personality_v0, __cxa_throw и тд? Ну там сигнатуру поменять, функции убрать/добавить, крч интерфейс сменить или он про другое?
Аноним 28/02/20 Птн 15:02:02 1617997524
>>1617496
Ты гонишь? Шаред то вообще оверхед оверхедный.
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов