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


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

<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
595 58 159

C++ №83 /cpp/ Аноним 04/03/19 Пнд 07:36:27 13588091
c-plus-plus.png (8Кб, 528x528)
528x528
proxy.duckduckg[...].jpg (85Кб, 587x551)
587x551
Аноним 04/03/19 Пнд 10:35:57 13588592
First ITT.
Аноним 04/03/19 Пнд 15:43:50 13590143
Что лучше юзать новичку ? SFML,SDL,Qt или OpenGL ?
Аноним 04/03/19 Пнд 16:46:16 13590374
изображение.png (93Кб, 638x354)
638x354
>>1358809 (OP)
Понимаю что ньюфажная платина, но все же

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

Просто недавно начал его учить как первый язык. И в нескольких интервью и статьях слышал что-то типа "оказалось слишком сложно, я перешел на другой язык", но нигде не нашел инфы о том, как они вдруг осознали что вот всё - пизда. Столкнуться с чем-то сложным ведь можно где и в чём угодно, как понять что виноват язык?
Аноним 04/03/19 Пнд 17:01:18 13590435
>>1359037
Разнообразие ооп хуйни и зависимостей.
Virtual pure base inline abstract class и прочее.
Также дохуя undefined behaviour и тонкостей
Аноним 04/03/19 Пнд 18:25:36 13590856
>>1358809 (OP)
Вкатился. Попробовал на днях написать хеллоуворлд на С. Блять, бальзам на душу, серьезно. Нахуй весь этот пердолинг и сложности С++ , ебучий ООП, если можно писать чистый, понятный код на С? Дискасс.
Аноним 04/03/19 Пнд 18:29:05 13590887
youhavemythanks.jpg (28Кб, 300x300)
300x300
Привет. Давно сюда не заходил, но подумал, что могу здесь конструктивно обсудить одну идею.

Пусть у меня есть некоторый проект на цпп. У него есть некоторая core функциональность (гурбо говоря набор интерфейсов + самая базовая их реализация), совсем небольшая. И есть куча классов, которые реализуют эти интерфейсы.
Типичный юзкейс - это когда юзер выбирает несколько из них и остальные ему не нужны.

То-есть, я хочу, чтобы юзер мог зайти на страничку проекта, найти в списке нужный ему функционал и затем выкачать core + этот функционал, а всё остальное оставить.

Как это можно сделать?
Самый очевидный вариант - это просто написать небольшой скрипт на питоне, который юзер будет скачивать, запускать с какими-то аргументами и скрипт будет выкачивать то, что нужно. Ну и нужно будет еще симейк как-то составлять процедурно тоже.
Кто-нибудь делал что-то подобное? Может можно сделать это как-то средствами гита?
Аноним 04/03/19 Пнд 18:30:22 13590908
>>1359085
>Нахуй весь этот
Чтобы можно было писать что-то сложнее, чем
>хеллоуворлд
Аноним 04/03/19 Пнд 18:37:36 13590949
>>1359037
Язык перегружен кучей всяких возможностей. Это вобщем-то замечательно. Плохо то, что нет простых общих правил пользовония этими возможностями. Почти у каждого правила есть масса особых случаев и исключений.
Ты должен либо наизусть учить все эти списки особых случаев, либо разбираешься как оно внутре устроено, чтобы понимать откуда эти исключения из правил берутся.
Первое практически за гранью человеческих возможностей; второе требует дополнительных усилий и времени.

Возьми любую энтри-левел книжку из шапки, там будет 1100+ страниц. И вот в этой тыще с лишним страниц не нашлось места, даже для такой базовой вещи, как синтаксис объявлений.
Аноним 04/03/19 Пнд 18:54:07 135910710
>>1359094
>Возьми любую энтри-левел книжку из шапки
Я вот как раз учу по одной из них, и например до сих пор хуею с того, что в оригинале есть различие между Statement и Operator. А в русской оба этих понятия в любом абсолютно месте называются Оператор и Оператор.
Аноним 04/03/19 Пнд 18:58:56 135911011
>>1359090
Windows на С написана же.
Аноним 04/03/19 Пнд 19:07:24 135911612
image.png (649Кб, 1200x699)
1200x699
Аноним 04/03/19 Пнд 19:08:25 135911913
Аноним 04/03/19 Пнд 19:23:20 135913614
>>1359110
Ты можешь написать все, что угодно даже на ассемблере. Вопрос в скорости разработки и поддерживаемости. С++ в этом плане выигрывает у С.

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

Мы в виндовом кернеле пишем на С++17, без стандартной библиотеки, офк. Но, даже такой кастрированный С++ - это все равно в гигатонны раз лучше, чем С, потому-что классы\RAII, тимплиты, лямбды.
Аноним 04/03/19 Пнд 19:54:00 135917015
>>1359088
Нахуя? У тебя там 8Гб исходников, чтоб было проблемой их все скачать?

А вообще cmake поддерживает всякую условную сборку. Можно заготовить симейк со всеми модулями и немного попердолиться с аргументами.
Аноним 04/03/19 Пнд 20:06:53 135917216
Аноним 04/03/19 Пнд 20:17:58 135918017
Ньюфаг вкатился. Почему reinterpret_cast<yoba>(value), а не просто (yoba)value?
Аноним 04/03/19 Пнд 21:28:06 135922118
>>1359136
а не пробовали кастомные аллокаторы сделать для std контейнеров? на пулах, к примеру
в 98 стандарте по итогу этот вариант не работал, но с последними стандартами вроде как поправили..


Аноним 04/03/19 Пнд 21:39:03 135922619
>>1359180
Проще найти все касты поиском.
Аноним 04/03/19 Пнд 23:12:54 135928120
>>1359136
>Вообще, современный положняк у коммунити в том, что С надо использовать только там, где нет тулчейна С++, а-ля какие-нить блевотные некроконтроллеры.
Преимущество С - для него автоматически генерируются биндинги под все скриптовые языки. Поэтому библиотеки часто пишут на чистой сишке или делают обвязку без ООП. К Qt, например, биндингов мало, а те что есть, работают не очень стабильно.
Аноним 04/03/19 Пнд 23:22:32 135928621
>>1359037
>Просто недавно начал его учить как первый язык.
Начни с питона лучше, он для этого и создавался. Плюс он очень практичный, ты сразу сможешь писать какие-то полезные тебе скрипты.
>но нигде не нашел инфы о том, как они вдруг осознали что вот всё - пизда.
Например, если даже не брать разницу между стандартами, C++ - это как минимум три разных языка: сам С++, шаблоны и макросы, и у каждого свои заебы. Еще пример: если в других языках обычно есть тольк значения и ссылки, то в С++ есть значения, указатели, ссылки и rvalue references. Даже указатели начинающий плохо воспринимает, а уж на rvalue references мозг ломается даже у самых стойких.
Аноним 04/03/19 Пнд 23:32:28 135928922
>>1359226
Зачем мне их использовать если можно просто (yoba) во всех случаях?
Аноним 04/03/19 Пнд 23:58:59 135930723
>>1359037
А зачем тебе язык? Наверное с этого надо начинать выбор языка.
>как они вдруг осознали что вот всё - пизда
Ты хотя бы cs50 осиль причем можно даже не весь курс, а ту часть где про си.
Аноним 05/03/19 Втр 00:22:12 135932024
>>1359289
ты не оче умный походу
Аноним 05/03/19 Втр 00:27:51 135932425
>>1359180
Потому что сишный каст сначала пробует все остальные касты, а reinterpret тупо меняет тип. То есть, например, при приведении указателя на класс со множественным наследованием может сработать static_cast, и результат получится для тебя неожиданным.
Аноним 05/03/19 Втр 00:31:14 135932926
Аноним 05/03/19 Втр 01:28:04 135935427
Есть кто?
Аноним 05/03/19 Втр 01:32:40 135935528
Нет, спрошу, короче, думаю установить vs17, нужно ли указывать компилятору на каком стандарте пишешь, например, я взял учебник 2003 года и пишу код, поймет ли он его, новый стандарт я помню нужно было указывать, а как на счет старых?
Аноним 05/03/19 Втр 05:13:12 135937429
изображение.png (36Кб, 696x129)
696x129
Сап. Обьясните что такое сериализация и нахуя. И как она делается, как выполнить данный таск, с файлами проблемы немного и тут ещё сериализация, вообще не понимаю что хотят от меня, гуглил, но внятно не нашёл.
Аноним 05/03/19 Втр 08:30:34 135938830
>>1359374
Вычеркиваешь из задания слово сериализация. Просто берешь и делаешь программу которая сохраняет какую-то структуру данных в файл либо загружает из файла (по выбору в меню).
то что ты сделаешь с структурой чтобы ее можно было сохранить в файл будет сериализация, чтобы загрузить из файла - десериализация
Аноним 05/03/19 Втр 09:29:52 135940231
>>1359388
Спасибо, попробую осилить файлы, далеко вперёд ушёл, их скипнул, и тут вернулись, не понимаю как считывается информация из текстового файла, например массив, как дать понять какое число в какую ячейку помещать, но попробую
Аноним 05/03/19 Втр 09:53:28 135940632
Сап двач такой вот вопрос. Насчёт визуального программирование через WinAPI можно вкатиться сюда?
Аноним 05/03/19 Втр 09:55:31 135940933
>>1359355
Они почти полностью обратно совместимы, может поругаться варнингами на deprecated вещи.
Аноним 05/03/19 Втр 10:00:07 135941234
>>1359406
Можешь поставить Qt и формошлепствовать, хотя вкатываться мне кажется легче на шарпе с дотнетом. Так то они соответствуют друг другу, и там и там есть свои языки разметки.
Аноним 05/03/19 Втр 10:12:10 135941435
welfjhk
Аноним 05/03/19 Втр 10:30:52 135941836
Аноним 05/03/19 Втр 10:34:14 135942037
console.png (16Кб, 679x334)
679x334
hex.png (4Кб, 480x88)
480x88
hextodec.png (5Кб, 586x150)
586x150
>>1359374
Примерно вот так https://ghostbin.com/paste/h9on5 я создаю сперва место на хипе, а потом пишу туда переменные структуры, затем переают указатель на хип в фукцию write. В принципе ты можешь и сразу всю структуру заебашить просто используя указатель this, например
file.write(reinterpret_cast<char#>(this), sizeof(#this); вместо звездочки #. Но так лучше не делать, так как можешь проебаться с пэддингом.
Короче если ты откроешь этот файл в hex редакторе, то ты увидишь такое как на втором пике. Это и есть эти два интегера в шестнадцатеричном виде, правда они сохраняются в little-endian формате, то есть их надо читать задом наперед как на третьем пике.
Аноним 05/03/19 Втр 13:26:29 135951638
>>1359221
Мы в итоге тупо написали свои кернельные строки, вектор, хэштаблицу и даже юник_птр, т.к. стандартные хедеры тащат очень много всего неподдерживаемого в код. Заняло несколько дней, но, зато есть угарный доп-функционал, типа variadic конструктора для строки, который все переданное джойнит и сохраняет.

>>1359281
Ты без проблем можешь обмазывать свой код EXTERN C, когда нужны биндинги.
Аноним 05/03/19 Втр 13:37:34 135952639
изображение.png (56Кб, 703x448)
703x448
>>1359420
ну в лабе вот так показано, мне надо изобразить что то похожее, но я не долбаёб тупо копировать, мне хотелось бы узнать что делают символы "И" и тд. просто обьяснить строки, тогда мб пойму что это такое и зачем оно нужно, а как работает ввод из файла, как он понимает что мне нужно и куда поставить, или как ему это обьяснить попробую сам разобраться. Поэтому если сможешь обьяснить что тут к чему, буду очень благодарен.
Аноним 05/03/19 Втр 14:43:10 135955140
>>1359420
ты наверное еще и гордишся тем, что у тебя там нахуеверчено, лол
пиздец канеш лютый

Аноним 05/03/19 Втр 14:45:31 135955241
>>1359526
Ну что тут сказать, тут сперва берется структура А, которая передает свой адрес указателю ptr. & это оператор адреса, (char#) это C-стайл каст из типа структуры в тип char. В моем примере я использовал С++-стайл reinterpret_cast, что в принципе то же самое. Затем с помощью указателя данные из структры копируются в массив Mas, который тоже должен быть типа char, иначе будет пизда. Потом данные из массива выводится на экран. Но эта фигня будет только работать, если в структуре все переменные одинакового типа и размера. Еще добавлю, что на пикче #(ptr+i) и #(e+i) это вообще уродство. Лучше просто писать ptr, ты можешь подумать "но ptr же не массив" - а похуй, я сказал! В С++ массивы по сути указатели, поэтому и указатели можешь использовать как массивы. ptr будет автоматически прыгать с размером своего типа (в этом случае это char, то есть 1 байт), и сразу разыменовать его, то что делает звездочка на пикче.
Аноним 05/03/19 Втр 14:47:50 135955342
>>1359552
Двач сука квадратные скобки у ptr съел.
Аноним 05/03/19 Втр 14:49:41 135955443
>>1359409
Да я что спрашиваю, одна баба в видео говорила мол учите со стандарта 2003 года! а я развесил уши все
Аноним 05/03/19 Втр 14:52:43 135955844
>>1359551
Лол чем гордиться шизик? Обычный пример как сериализовать.
Аноним 05/03/19 Втр 14:59:23 135956445
>>1359406
Никто не клепает формочки на чистом винапи. Да и это не совсем удачный вектор для вкатывания.
Аноним 05/03/19 Втр 15:04:51 135957046
>>1359558
так НЕ надо делать
там пиздец

Аноним 05/03/19 Втр 15:09:21 135957347
Салам, чо поцоны есть среди нас толковые кутэшники? Го в лс саморазвиваться пограммировать (телега - @FirstLast_q)
Аноним 05/03/19 Втр 15:13:53 135957848
>>1359570
Ну покажи как лучше, раз ты такой умный, а то ни дай бог тот чел скопипастит мой код и получит двойку!
Аноним 05/03/19 Втр 15:30:28 135958549
>>1359573
Сам то кто по масти?
Аноним 05/03/19 Втр 15:37:22 135958650
>>1359516
>Ты без проблем можешь обмазывать свой код EXTERN C, когда нужны биндинги.
Только если у тебя код близкий к сишке, без особого использования ООП. Для того же Qt сишный интерфейс будет очень сложно сделать.
Аноним 05/03/19 Втр 15:58:33 135959251
>>1359552
Спасибо большое, достаточно понятно.
Аноним 05/03/19 Втр 15:59:14 135959352
>>1359578
ну, епт
2 инта в бинарник можно и напрямую закинуть без изьебств как у тебя если не идет речь о независимом от платформы формате
Аноним 05/03/19 Втр 15:59:55 135959453
>>1359578
>Ну покажи как лучше, раз ты такой умный
Как минимум структура при чтении должна понимать, что данные ей не подходят, и выдавать ошибку.
Аноним 05/03/19 Втр 17:42:10 135964454
Сап,озадачился созданием простенького графического интерфейса, лучшее что нашел на данный момент это windows forms, но у Майкрософт хуйня вместо документации,а гайды и сторонние руководства часто устаревшие, qt по некоторым причинам мне не подходит. Какие есть ещё варианты с хорошей документацией и примерами, желательно но не обязательно с формочками.
Аноним 05/03/19 Втр 17:44:54 135964655
>>1359037
Сложно понятие субъективное, может ты изначально так мыслишь и тебе вообще норм. Тем же плюсовикам может быть ФП сложна, а ФПшникам сложно с байтами ебаться.
Аноним 05/03/19 Втр 17:48:04 135965056
>>1359286
>три разных языка
Я бы поделил на процедурный С++(практически С), объектно-ориентированный с++ и декларативный с++(шаблоны-шаблончики).
Аноним 05/03/19 Втр 18:09:53 135967057
Безымянный.png (140Кб, 1600x900)
1600x900
Пытаюсь скомпилировать код и получаю 2019.Чому компилятор не видит Winmain?
Аноним 05/03/19 Втр 18:11:50 135967258
Плюсаны, серьезно, вот где найти плюсопрограммиста на "подработку" нужно сговнякать совершенно конкретные вещи под один сдк о которым никто никогда не пользовался. Где искать погроммиста?
Аноним 05/03/19 Втр 18:12:31 135967359
>>1359672
чем больше денег - тем больше выбор.
Аноним 05/03/19 Втр 18:18:51 135968160
>>1359673
Где искать-то не на лохито же? А сколько денег считается нормой нынче?
Аноним 05/03/19 Втр 18:20:15 135968461
>>1359644
почему вы так все боитесь gtk?
Аноним 05/03/19 Втр 18:37:12 135969062
>>1359644
>Майкрософт хуйня вместо документации,а
лолват, чем тебя мсдн не устраивает
Аноним 05/03/19 Втр 18:43:22 135969463
>>1359644
QT. Все остальное дохлый номер.
Аноним 05/03/19 Втр 19:07:06 135970964
>>1359684
Ну очевидый нюанс это сторонняя ide, лень переходить с VS и танцевать с переносом библиотек, хотя именно gtk я ещё не пробовал и достаточно подробно не прощупывал, мб гляну сегодня.
>>1359690
Я имел ввиду именно Майкрософт докс, до мсдн я не добрался.
>>1359694
Нюансы выше,плюс не понимаю нахуя качать пол дня пакет на 20 гигов, ради нескольких кнопок и пары пикчербоксов.
Аноним 05/03/19 Втр 19:20:26 135971365
>>1359709
>я пакет на 20 гигов
Ващето 3
>>1359709
>Майкрософт докс
У них есть отдельный дистр с хелпом для вс где ты выбираешь что именно ставить, гига на полтора вроде.
Аноним 05/03/19 Втр 19:30:57 135972066
Аноним 05/03/19 Втр 19:47:23 135973667
Аноним 05/03/19 Втр 20:04:50 135975668
>>1359709
Потому что на чистом винапи ты будешь эти кнопочки клепать неделю. А в QT за пару часов управишься.
Аноним 05/03/19 Втр 20:11:50 135976369
>>1359756
> на чистом винапи
Как там в 1991 м?
Аноним 05/03/19 Втр 20:17:00 135976670
А игры тоже на чистом winapi создают?
Аноним 05/03/19 Втр 20:22:17 135977271
>>1359766
Игры создают на движках.
Движки имеют кросс-платформенную прослойку, которая уже общается с winapi. Но все общение там сведется к созданию окна, и отрисовыванию всего руками, включая кнопочки интерфейса
Аноним 05/03/19 Втр 20:23:14 135977472
>>1359766
На директ икс как минимум, винапи слишком тормозной, ну если это не что то типа пасьянс только . А так то на готовых движках.
Аноним 05/03/19 Втр 21:02:35 135979473
>>1359774
>винапи слишком тормозной
В каком смысле? Я, конечно, не эксперт, но разве любая хуйня на винде не дёргает винапи в конечном счёте?
Аноним 05/03/19 Втр 21:03:06 135979774
>>1359766
Все вокруг - обертка над системным АПИ. Конкретно на винапи игру создать малореально, за счет того. что нет хардварного ускорения. ты дергаешь интерфейсы опенгл\директ3д, которые, фактически, тоже являются системными АПИ.

Еще раз - все эти кути, гтк и прочие фреймворки - это все обертки над системным апи.
Аноним 05/03/19 Втр 21:22:59 135981075
>>1359794
Неа. Он потому и директ что без винапи, а напрямую с железом работает.
Аноним 05/03/19 Втр 21:26:27 135981376
>>1359810
О, понятно, типа напрямую с дровами видюхи, да? А мне всегда казалось, что всё через винапи общается, типа к ней идёт запрос, она дёргает драйвер видюхи, а она уже делает что надо.
Аноним 05/03/19 Втр 21:42:11 135981877
>>1359813
Через винапи дольше было бы по-моему
Аноним 05/03/19 Втр 21:43:39 135981978
>>1359818
Ну понятно, что дольше, там же напрямую всё.
Аноним 05/03/19 Втр 21:44:20 135982079
>>1359813
Не, там окна (в винде ваще все является окнами), очередь месседжев, не то что нужно играм.
Аноним 05/03/19 Втр 21:49:42 135982180
>>1359813
Операционная система предоставляет некие интерфейсы, которые потом где-то за кулисами реализуются драйверами видяхи и тд.

Здесь важно понимать, что ни к каким драйверам и прочему ты доступа не имеешь, ты просишь операционку сделать что-либо, а она уже либо сама делает, либо делегирует кому-то еще внутри себя. Ты это не контролируешь.
Аноним 05/03/19 Втр 22:04:29 135983181
Аноним 05/03/19 Втр 22:11:42 135983482
>>1359681
А что там за ужасы у тебя, все конфиденциально?
Я все в поисках чего-нибудь, чтобы практиковаться, но плюсового опыта у меня мало, пока максимум - это диплом и три небольшие утилиты для работы. И то, все это можно было реализовать быстрее на других языках.

Я бы мог взяться ради опыта и интереса, но ни скорости, ни абсолютного качества кода на гарантирую, так как ньюфажик.
Аноним 05/03/19 Втр 22:17:02 135983783
>>1359286
>Начни с питона лучше, он для этого и создавался
Для «этого» создавался паскаль.
Аноним 05/03/19 Втр 22:21:42 135984484
>>1359286
работу отбирают, хады
Аноним 05/03/19 Втр 23:50:20 135988585
Клиент двача на айос на спп - выполнимая задача?
Аноним 06/03/19 Срд 00:14:28 135989886
>>1359885
Да, минут на 50 работы всего
Аноним 06/03/19 Срд 00:39:42 135990387
536.gif (1264Кб, 499x281)
499x281
Тут хелловорлдерам можно, или это в нюфаг?
Короче:

char mamka[10];
int age = 0;
float weight = 0;

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


Как потом ввести все эти данные в объект ОбщийПоказатель, так, словно я просто списал все эти показатели одной строкой через пробел сразу в ОбщийПоказатель, а не делал это по отдельности? Банальное = тут не работает, потому что тип ОбщийПоказатель отличается от всех этих трех. Прост прыгнул чуть дальше чем нужно, и теперь хочется добить, а то меня мой гештальт забьет насмерть.
Аноним 06/03/19 Срд 00:41:37 135990488
>>1359903
т.е. как будто бы я просто вписал все это в консоль разом, а не по отдельности
std::cin >> ОбщийПоказатель;
Аноним 06/03/19 Срд 00:45:53 135990689
>>1359885
Ну там есть сишный интерфейс для отсылки сообщений объектам. Правда его работоспособность не гарантируется (так как он не преднозначен для использования обычными прогерами). Ну и остается проблема с получением сообщений (разного рода делегатам, типа NSTableViewDelegate). Тоесть скорее всего нужно будет ебаться с свизлингом. Есть вариант тупо рендерить через метал на GPU не связываясь со стандартным UI. Но никогда не пробывал. Более простой вариант такого подхода будет накатить игровой фреймворк (cocos2d-X - нужен именно X) и работать через него - но тоже не пробывал.
Аноним 06/03/19 Срд 01:22:47 135991390
Лучше писать в студии с модулем Qt или в Qt Creator?
Аноним 06/03/19 Срд 01:27:31 135991491
>>1359913
Я писал в студии с Verdigris, без qt модуля, moc'а, и прочей параши. Имхо, идеально.
Аноним 06/03/19 Срд 01:31:46 135991692
>>1359904
Тебе нужно перегрузить оператор>>, гугли по stream operator overloading. Что-то вроде такого должно быть
istream& operator>> (istream& is, YourMom& wh)
{
is >> wh.age >> wh.weight;
return is;
}
Аноним 06/03/19 Срд 01:34:57 135991993
>>1359916
Ок спасибо, завтра попробую :3
Аноним 06/03/19 Срд 01:35:51 135992094
Аноним 06/03/19 Срд 04:25:35 135993895
>>1359837
>Для «этого» создавался паскаль.
Паскаль умер, а питон живет.
Аноним 06/03/19 Срд 07:43:44 135995996
sw.png (139Кб, 1180x592)
1180x592
>>1359670
Хз возможно ты subsystem windows не выставил?
Аноним 06/03/19 Срд 08:48:27 135997097
>>1359938
Питон никак не поможет вкатиться в плюсы, ничего общего практически.
Object Паскаль по возможностям гораздо ближе к плюсам. Да и умер он не совсем, условно. Работу найти трудно - это да, все остальное на месте.
Аноним 06/03/19 Срд 09:30:54 135998198
>>1359037
>Может кто в двух томах объяснить, или дать ссылку, объясняющую, чем принципиально C++ сложнее для изучения, чем что-то другое?
С++ сложнее в использовании, а не изучении.
>the First Amendment to the C++ Standard states: "The committee shall make no rule that prevents C++ programmers from shooting themselves in the foot." Speaking less facetiously, when it comes to choosing between giving programmers more control and saving them from their own carelessness, C++ tends to err on the side of giving more control.
В переводе на русский, С дает свободу, программировать как хочешь, делать что хочешь, это означает эффективность, если есть мозги воспользоваться свободой. Но свобода означает ответственность, если обосрался, то только ты в этом виноват, язык тебя не оберегает как нянька, не ведет за ручку, не говорит как надо и как не надо, ты сам должен знать как тебе нужно, поэтому для обучения программированию С не подходит.
>>1359970
А Паскаль это обратная крайность, там нельзя ни шаг влево, ни шаг вправо, только по жестким рельсам языка, который полностью диктует как нужно писать и не допускает иного. Поэтому теоретически он считался хорошим языком для обучения, но на деле железные кандалы воспитывают моральных рабов, которые не могут жить и думать за себя самостоятельно без самога барина в жопе, указывающего путь.
Аноним 06/03/19 Срд 10:04:01 135999599
>>1359981
> но на деле железные кандалы воспитывают моральных рабов, которые не могут жить и думать за себя самостоятельно
Это не свойство паскаля, это подход к обучению. Если человек даун выбрал хуевый подход, то он с любым языком обосрется.

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

Питон дополняет c++, а не заменяет его. Обмазываясь с самого начала питоном, ты уйдешь в совершенно другую предметную область.
Аноним 06/03/19 Срд 10:05:10 1359996100
>>1359981
>железные кандалы воспитывают моральных рабов, которые не могут жить и думать за себя самостоятельно
Но даже и не оспаривая этот твой тезис, сюда входит уже достаточно широкий круг задач.
Аноним 06/03/19 Срд 11:46:29 1360032101
>>1359970
>Питон никак не поможет вкатиться в плюсы
Ему не в плюсы надо вкатиться, а вообще научиться кодить. Изучать С++ как первый язык программирования - не самая здравая идея. Питон для этого гораздо больше подходит из-за простоты и популярности.
Аноним 06/03/19 Срд 13:16:02 1360075102
Обясните пожалуйста тупому, почему данная запись завершается с ошибкой?
void CreateMas(int r,int k){
mas = new int* [r];
for(int i=0;i < r;i++){
mas= new int [k];
}
}
Аноним 06/03/19 Срд 13:21:01 1360077103
ачаны, куда можно вкатиться на неоплачиваемую стажировку по плюсам обезьяне второкурснику без опыта но с огромным желанием?
Аноним 06/03/19 Срд 13:26:37 1360083104
>>1360077
никуда. Главная проблема обезьян в том, что от них больше вреда, чем пользы
Аноним 06/03/19 Срд 13:31:41 1360085105
53f.jpg (7Кб, 196x250)
196x250
Взяли на первую работу цпп программистом. Через 2 недели выходить. Посоветуйте материала, чтобы все вспомнить и подтянуть язык, чтобы не опростоволосится на работе. Мне нужно основные моменты подтянуть и вспомнить все тонкости.
Аноним 06/03/19 Срд 13:32:45 1360086106
>>1360075
>mas
че это? Ты же ему тип не присвоил. Так надо: int mas = new int* [r]
Аноним 06/03/19 Срд 13:37:58 1360090107
>>1360086
Сука, Абу, зачем звездочки сожрал? int mas = new int* [r]
Аноним 06/03/19 Срд 13:38:50 1360091108
>>1360090
БЛЯЯЯ. короче
int <звездочка><звездочка>mas = new int* [r]
Аноним 06/03/19 Срд 13:40:44 1360094109
Аноним 06/03/19 Срд 13:44:10 1360096110
>>1360085
Прикольно, тебя без собеседования взяли что ты не знаешь что надо готовить? Если не спрашивали ничего и не сказали забей, будешь макакой и там на месте все пояснят.
Аноним 06/03/19 Срд 13:50:02 1360099111
>>1360075
Зачем тебе легаси массивы вообще? Можно ведь прощще
[code]
template <class T>
auto CreateMas(size_t r, size_t k){
using namespace std;
vector<T> row(k);
return make_unique<vector<vector<T>>>(r,row);
}
[/code]
Аноним 06/03/19 Срд 13:50:39 1360100112
>>1360096
Спрашивали все, что только можно. Просто хочу еще сильнее подтянуть знания, чтобы не пернуть жидко.
Аноним 06/03/19 Срд 14:25:15 1360114113
>>1360075
Не совсем понимаю, чего ты хочешь добиться с этим кодом. Во-первых звездочку после new int не надо ставить. А mas что, глобальная переменная? Тогда она должна быть указателем. А что ты в цикле делаешь, тоже не понятно. Ты хочешь присвоить значение переменной k в этот массив? Или ты хочешь создать массив на отдельные кучи размером k каждая?
Аноним 06/03/19 Срд 18:01:14 1360223114
Аноны, есть годный garbage collector под c++? Ситуация такая, у меня из ануса начала вываливаться прямая кишка, врач сказал, что это от долгого сидения за компьютером. Но я не могу иначе, все эти утечки, деструкторы. Выручайте, плюсаны.
Аноним 06/03/19 Срд 18:07:59 1360230115
>>1360223
boehm-demers-weiser gc, альтернатив нет
попробуй анальные свечи "метилурацил"
Аноним 06/03/19 Срд 18:09:13 1360231116
>>1358809 (OP)
Всем привет. Осваиваю С++, пока знаю на уровне школьника-троечника. Дорабатываю для своих целей одну опенсорсную прогу, возможно, в будущем, написать свою с улучшенным функционалом той + тот функционал, который нужен еще. Но это в далеком будущем, а пока...
В общем, надо сделать так, чтобы в определенное время проигрывался аудиофайл, имеющий название, соответствующее unsigned int X. При указании данной переменной в синтаксисе PlaySound: PlaySound(X.wav, NULL, SND_ASYNC) VisualStudio 2005 выдает ошибку С2228: left of '.wav' must have class/struct/union type is 'UINT'. Собственно, в этом и вопрос, как заставить прогу проигрывать тот wav-файл, который имеет название как в переменной, подходит ли процедура PlaySound или надо что-то другое?
Аноним 06/03/19 Срд 18:20:20 1360243117
>>1360231
X.wav надо превратить в строку перед отправлением в функцию. Гугли "string format C++", там куча способов сделать это.

Вангую, следующую ошибку высрет линкер, что функция PlaySoundA не найдена.
Аноним 06/03/19 Срд 18:22:27 1360245118
>>1360114
>>1360099
>>1360086
int mas; у меня является полем класса, а этот кусок кода лежит в методе класса.
>>1360099
Я понимаю что можно намного проще, но мне нужно просто понять как это работает.
>>1360075
Поэтому прошу помочь тупому.
Аноним 06/03/19 Срд 18:30:48 1360254119
Аноним 06/03/19 Срд 18:31:54 1360257120
rew.JPG (27Кб, 617x284)
617x284
>>1360245
> int mas;
Неправильный тип. Пикрелейтед как надо.
Аноним 06/03/19 Срд 18:33:29 1360259121
>>1360243
>X.wav надо превратить в строку перед отправлением в функцию.
Как это можно сделать в рамках события (которое в case, информация, быстро пришедшая с аудиовхода), которое запускает тот самый плейсаунд? Мне надо просто вот так: нужный (с этим все нормально, прописано все до нужного фрейма) сигнал на лин. входе, содержащий Х>декодирование>проигрывание аудиозаписи, содержащее имя переменной.
Не курсовая, надо для реализации одного радио-телеком-протокола для личных нужд.
Аноним 06/03/19 Срд 18:36:43 1360262122
Безымянный.png (3Кб, 275x156)
275x156
>>1360257
У меня со звездочками, это ебаный абу их украл.
Дело в том что компилятор не ругается на эту конструкцию, но когда программа входит в конструктор класса, вылетает ошибка.
В гугл лазил, другие делали так же и у них все работало.
Аноним 06/03/19 Срд 18:37:30 1360263123
>>1360262
Звездочки перед мас нету, я ее случайно сейчас туда ткнул.
Аноним 06/03/19 Срд 18:38:39 1360265124
>>1360259
> содержащий Х>декодирование>проигрывание аудиозаписи
Что-то мне кажется, что PlaySound из winapi тебе не подойдёт. Может тебе надо с WASAPI/DirectSound (хотя судя по VS2005 работаешь ты скорее всего на WinXP, где WASAPI и нет) работать? Насколько часто нужно проигрывать файлы? Насколько они короткие? Насколько важна задержка?
Аноним 06/03/19 Срд 18:39:19 1360266125
>>1360262
Давай-ка весь класс на пастбин залей.
Аноним 06/03/19 Срд 18:42:54 1360272126
>>1360266
Это все, там больше ничего нету
Вылетает на входе в цикл for
Аноним 06/03/19 Срд 18:45:30 1360274127
>>1360272
Что значит "вылетает"? Ошибка рантайма?
Аноним 06/03/19 Срд 18:51:49 1360277128
>>1360274
Прекращена работа программы, и все.
Процесс возвращает 0xC0000005.
Больше ничего
Аноним 06/03/19 Срд 18:52:51 1360278129
>>1360277
Дебаггером посмотри, что там.
Аноним 06/03/19 Срд 19:05:02 1360284130
>>1360265
>Что-то мне кажется, что PlaySound из winapi тебе не подойдёт
Так вот как синтаксис данной процедуры ни курю, как ни гуглю, мне тоже так кажется. С другой стороны, вроде бы должна стандартная процедура WinApi брать файлы с названиями, задаваемыми прогой. Но вроде и не подходит. А что подойдет, такое же быстрое и легковесное, желательно не стороннее, а от тех же MS? А то был у меня опыт с библиотекой Audiere, которая работала даже на заданный wav-файл через пень-колоду, притом PlaySound при задании имени Wav-файла работает как часики. Проблема в том, что имя Wav-файла - имя абонентского терминала, а я хочу приучить прогу работать с несколькими - а для этого надо брать номер, которым представляется терминал, и который в проге хранится в UINT X.
Аноним 06/03/19 Срд 19:07:40 1360288131
>>1360265
>Насколько часто нужно проигрывать файлы? Насколько они короткие? Насколько важна задержка?
Скорость важна, это аналоговая сотовая. Пока сторонняя библиотека думает, терминал уж раз 5 канал сменит.
Аноним 06/03/19 Срд 19:20:27 1360293132
>>1360265
>Насколько часто нужно проигрывать файлы?
Не очень часто, по коннекту типа радиотелефона.
>Насколько они короткие?
Коротенькие, секунд 5-6-7 - подтверждение ответа БС, набора номера (хоть произвольного пока, это не важно - декод цифр по стандарту будет с развитием софта, сейчас набор номера идет уже после проключения на разговор через программку DTMF Joystick) и разрешение на проключение разговорного тракта.
Аноним 06/03/19 Срд 19:36:48 1360299133
>>1360265
>Насколько они короткие?
>>1360293
>Коротенькие, секунд 5-6-7 - подтверждение ответа БС, набора номера (хоть произвольного пока, это не важно - декод цифр по стандарту будет с развитием софта, сейчас набор номера идет уже после проключения на разговор через программку DTMF Joystick) и разрешение на проключение разговорного тракта.

Вот пример: http://rgho.st/7ySPJwGWs
Аноним 06/03/19 Срд 19:41:27 1360302134
>>1360284
> желательно не стороннее, а от тех же MS
Я уже дал название библиотек, встроенных в винду. Есть ещё cubeb [1], я с ним игрался когда-то. Довольно простой и кроссплатформенный, мне понравился. Однако он pull-based, а не push. Это значит, что он сам постоянно запрашивает данные для вывода и если данных нет ты выводишь нули. Придётся тебе попотеть с синхронизацией. Алсо, он может работать и с микрофонами/лин.входом. Ты можешь тупо соединить их через функцию, которая будет получать звук из одного потока и выводить в другой.

[1]: https://github.com/kinetiknz/cubeb
Аноним 06/03/19 Срд 19:57:00 1360310135
>>1360302
>Я уже дал название библиотек, встроенных в винду.
Ладненько, погуглю и поиграюсь. В любом случае, это временное решение - далее надо писать енкодер стандарта наподобие линуксовой довольно пиздатой, даже с смсками, которые как у меня, так и практически у всех операторы данного стандарта, не поддерживаются из-за их ненужности и вредности - поскольку передача идет на голосовом канале в режиме модема осмоком-аналог. Собственно, пора раскрыть карты - стандарт NMT-450 и я в рот не ебу, как в с++ (на этом языке таки есть готовый декодер на Win) выдать на выход звуковухи частотную манипуляцию между 1200 и 1800 Гц. Думаю в ресурсы закинуть файлы этих частот и попеременно включать той же PlaySound, но... Она, конечно, работает быстро, но время там не задать, а время ФРЕЙМА в NMT - миллисекунды. Если так сделаю, мне кажется, придется городить индусский код из if и else, котолрый работать толком не будет.
Аноним 06/03/19 Срд 20:08:16 1360319136
>>1360278
Все ок, при входе в цикл сразу краш.
Попробывал в запустить это безобразие в вижуал студии, все нормально работает.
Аноним 06/03/19 Срд 20:26:40 1360331137
Screenshot5.png (38Кб, 1133x483)
1133x483
Хелп, аноны. Раньше нормально работало, теперь не находит файл, в сурсах действительно такого файла нет
Аноним 06/03/19 Срд 20:32:13 1360333138
>>1360331
Через пару минут каким-то чудом файл появился, что происходит?
Аноним 06/03/19 Срд 21:44:12 1360377139
>>1360331
Этот хидер автоматически генерируется из ui-файла, который ты в редакторе форм делаешь.
Аноним 06/03/19 Срд 23:05:16 1360454140
>>1360377
Понял. Наверное удобнее всё же будет писать в Qt Creator, в студии не особо удобно.
Аноним 07/03/19 Чтв 00:35:51 1360489141
Аноним 07/03/19 Чтв 02:29:45 1360496142
>>1360489
> Для просмотра этой страницы необходимо зарегистрироваться.
Ну, значит у тебя нет на самом деле больших требований к задержке.
Аноним 07/03/19 Чтв 05:02:31 1360521143
>>1360262
Работает же вроде http://www.cpp.sh/4susa Тебе не надо ставить звездочку перед mas в цикле, потому что квадратные скобки автоматически разыменуют указатель.
Аноним 07/03/19 Чтв 12:22:12 1360606144
a8MDzuD5400x400.jpg (31Кб, 400x400)
400x400
>>1360257
>Обычные указатели
>Динамический массив через указатели
>Пикрил как надо
Аноним 07/03/19 Чтв 13:04:39 1360615145
>>1360606
Массив это набор указателей.
Аноним 07/03/19 Чтв 13:39:43 1360628146
>>1360615
>>1360615
массив - это массив
отдельная сущьность
базовый тип
Аноним 07/03/19 Чтв 13:48:09 1360630147
>>1360628
Правила строгого алиасинга преобразование int[] -> int∗ нарушает? Нет. На всё остальное похуй. Добро пожаловать в C/C++ мирок, где разрешено всё что не UB.
Аноним 07/03/19 Чтв 14:17:12 1360636148
>>1360630
Это Си параша, сейчас никто не юзает * в С++
Аноним 07/03/19 Чтв 14:22:40 1360642149
>>1360630
и че?
еще раз - массив - это базовый тип

Аноним 07/03/19 Чтв 14:45:06 1360651150
ааа.png (1Кб, 216x170)
216x170
Как называется такая фигня когда класс создается внутри класса, и зачем оно нужно?
Аноним 07/03/19 Чтв 14:53:43 1360655151
>>1360651
Вложенный класс. Дальше сам.
Аноним 07/03/19 Чтв 14:59:00 1360658152
>>1360636
Нет, это в ++ никто не юзает *, а в С++ юзают, потому что С++ это С и ++. Говорить что С++ это не С, аналогично "С это не С", абсурд. С++ включает в себя С, С нельзя выбросить.
Аноним 07/03/19 Чтв 15:00:13 1360660153
>>1360651
>Зачем нужны фигурные скобки?
Сам думай.
Аноним 07/03/19 Чтв 15:03:32 1360662154
>>1360651
Затем же, зачем классы помещают в неймспейсы.
Аноним 07/03/19 Чтв 15:06:04 1360664155
>>1360658
С и С++ это разные языки
Аноним 07/03/19 Чтв 15:10:25 1360666156
>>1360664
>левая рука против правой взбунтовалась
Ну воюй.
Аноним 07/03/19 Чтв 15:11:01 1360667157
>>1360655
>>1360660
>>1360662
То есть это такая же херня как в javascript, где можно зафигачить функцию внутри функции, чтобы ограничить ее от внешней области видимости?
Аноним 07/03/19 Чтв 15:37:23 1360673158
>>1360642
Это указатели всего навсего.
Аноним 07/03/19 Чтв 16:25:24 1360681159
>>1360673
массив - это базовый тип
плюс в языке есть неявные преобразования и механика низведения, связанная с этим типом, но это уже другое
Аноним 07/03/19 Чтв 18:59:30 1360722160
Аноны посоветуйте хорошую книгу по Qt. Прочитал немного Шлее и мало что понял
Аноним 07/03/19 Чтв 19:32:20 1360734161
>>1359810
Директу нужен твой хендл окна, так что совсем без винапи и его месседж лупа ты не уедешь. Хотя в последний раз я что-то писал на девятом DirectX, может что-то и поменялось за это время. Хотя, не думаю.
Аноним 07/03/19 Чтв 19:38:11 1360736162
>>1360722
Тогда подтяни свой уровень в обычных крестах, т.к. книга Шлее это на 95% упрощенный перевод документации Qt.
Аноним 07/03/19 Чтв 19:43:01 1360738163
image.png (96Кб, 1606x706)
1606x706
Помогите пожалуйста студенту быдлокодеру.
Есть оператор выбора который выбирает функцию по вводу 1/2/3.

Как заменить цифры на слово? Чтобы он выдавал функцию например при вводе max/min/avg и так далее?
Аноним 07/03/19 Чтв 19:43:34 1360739164
>>1360736
Вроде нормально подтянулся, даже немного вкатился в новые стандарты, но опыта мало. Хотел бы сделать какое-то небольшое приложение с виндовс формами, но WinApi тоже сложно дается.
Аноним 07/03/19 Чтв 20:04:01 1360744165
>>1360738
Либо оформи код по-человечески, либо иди нахуй. Этот говнокод читать в здравом уме никто не будет.

>>1360739
Попробуй пройтись по примерам, вшитым в QtCreator, например Part1 - Part7. Там по порядку создается адресная книга и каждый шаг очень подробно объясняется, но на английском.
Аноним 07/03/19 Чтв 20:07:14 1360746166
3.jpg (98Кб, 720x960)
720x960
Аноним 07/03/19 Чтв 20:07:27 1360747167
>>1360744
>Либо оформи код по-человечески, либо иди нахуй. Этот говнокод читать в здравом уме никто не будет.
Тебе незачем на мой говнокод смотреть.
Ты на вопрос ответь, брат.
Аноним 07/03/19 Чтв 20:19:12 1360749168
>>1360722
Зачем книга по Qt? Для большинства задач там все просто и тупо. Берешь, и делаешь без задней мысли, онлайн документации хватает за глаза. Что-то более сложное можно найти только в инете, в книгах такого не пишут.
Аноним 07/03/19 Чтв 20:19:26 1360750169
>>1360747
>>1360738
>Как заменить цифры на слово?
В switch-case NIQAQUE. Но изъебнуться можно: вариантов несколько. Самый простой хуярить if-else. Если прям принципиально использовать switch-case, то определяешь enum и с помощью отдельной функции, которая через тот же if-else сравнивает строки и возвращает экземпляр этого енума. А уже его можно использовать в switch-case.
Аноним 07/03/19 Чтв 20:21:31 1360751170
image.png (59Кб, 612x713)
612x713
image.png (514Кб, 720x720)
720x720
>>1360750
Спасибо, брат.
Алсо. Как правильно скобки расставлять? Меня никто этому не обучает. На первом скрине я расставил их так, как удобно мне. Сейчас вообще нихуя не понимаю.
Это троллинг или правда есть единый стандарт?
Не бейте я аутист.
Аноним 07/03/19 Чтв 20:27:30 1360753171
Аноним 07/03/19 Чтв 20:27:58 1360754172
>>1360751
Поставь студию, она подскажет большинство моментов и расставит за тебя пробелы
Аноним 07/03/19 Чтв 20:29:19 1360755173
Аноним 07/03/19 Чтв 20:42:46 1360758174
Спасибо.
Аноним 07/03/19 Чтв 20:56:07 1360763175
>>1360751
Единых стандартов нет, но часто за тебя это делает ИДЕ. У тебя какой то пиздец в качестве оформления.
Аноним 07/03/19 Чтв 21:21:30 1360774176
Почему у моего хеллоуврода с одним месседжбоксом вес 100кб и куча левых импортов которые я даже не использовал и не подключал?
Аноним 07/03/19 Чтв 21:24:34 1360775177
>>1360496
http://www.cyberforum.ru/cpp-beginners/thread2414561.html
По этой ссылке должно работать, проверял с режима инкогнито. А требования к задержке миллисекундные, ибо каналы в Нокии 640 (не той, что люмия, старой аналоговой) меняются побыстрее, чем в сканерах Айком, почти на уровне американских сканеров.
Тем не менее, решение найдено.
Аноним 07/03/19 Чтв 21:44:44 1360780178
>>1360774
>Почему у моего хеллоуврода с одним месседжбоксом вес 100кб
Собираешь под Release, надеюсь? В
Аноним 07/03/19 Чтв 21:45:40 1360782179
Аноним 07/03/19 Чтв 21:47:11 1360783180
Аноним 07/03/19 Чтв 22:38:21 1360793181
>>1360664
С++ и ява - разные языки. Поэтому не стоит из крестов пытаться сделать яву.
С и С++ хотя и разные, но пересекающиеся языки. Существуют апи, библиотеки и прост большая скотокодовая база для С++, написанная на С или в си-стиле.
Твоя борьба за чистоту плюсов абсурдна.
Аноним 08/03/19 Птн 05:46:46 1360841182
38588920ccd900a[...].jpg (84Кб, 520x800)
520x800
Анон, у меня проблема. Уверен, ты и сам попадал в такие ситуации и можешь понять мою боль.
Дело в том, что мне дали задание изложенное максимально по дебильному. Ты можешь понять алгоритм из этого текста? Что требуется сделать с каждой ячейкой матрицы, если не просто увеличить число в ней на 1,5%? (препод сказал, что в примере ввода опечатка, число 150 в там это 1,5)
Аноним 08/03/19 Птн 05:52:59 1360842183
>>1360841
Иди в армию, очередной маняматик никому не нужен
Аноним 08/03/19 Птн 05:53:58 1360843184
>>1360842
Я не годен к военной службе, так что ответить на мой вопрос, если не трудно.
Аноним 08/03/19 Птн 08:18:06 1360862185
Аноним 08/03/19 Птн 08:19:34 1360864186
>>1360658
>нафаня не знает про _cast<typename>
Аноним 08/03/19 Птн 08:25:52 1360866187
>>1360864
Нормальный человек:
>(typename)
Макросо-дебил:
>hurr_durr_tottooroo_cast<typename>
Аноним 08/03/19 Птн 08:27:29 1360867188
>>1360841
В чем проблема обсудить это с преподавателем?
Нормальный преподаватель будет только рад вопросам.
Аноним 08/03/19 Птн 11:04:09 1360891189
Аноним 08/03/19 Птн 11:14:16 1360899190
изображение.png (22Кб, 496x620)
496x620
>>1360075
Короче, если тебе нужно создать динамический массив в классе то так:

>mas вместо arr
Ты что быдло ?
Аноним 08/03/19 Птн 11:23:34 1360902191
>>1360667
>как в javascript
Примеров где применяется вложенный класс много, первое что пришло в голову - списки.
Аноним 08/03/19 Птн 13:11:42 1360938192
image.png (45Кб, 800x800)
800x800
Массивы в плюсах это обьекты?
Они хранятся в стеке или куче?
Аноним 08/03/19 Птн 13:24:37 1360942193
>>1360938
Обычные массивы - наследие С, т.е. это просто выделенная компилятором область памяти на стеке и указатель на первый элемент. В куче они будут храниться только если ты явно задашь это с помощью оператора new.
Аноним 08/03/19 Птн 13:28:50 1360943194
>>1360938
массив - это базовый тип данных
со своими неявными приведениями и правилами низведения, унаследованными от си, что и путает новичков
Аноним 08/03/19 Птн 13:29:27 1360944195
>>1360938
Массив это набор указателей всего навсего.
Аноним 08/03/19 Птн 13:30:34 1360946196
>>1360942
тут несколько ошибок
Аноним 08/03/19 Птн 13:30:54 1360948197
Аноним 08/03/19 Птн 13:44:27 1360956198
Аноним 08/03/19 Птн 14:15:48 1360966199
Аноним 08/03/19 Птн 15:52:52 1361011200
Не знаю как загуглить.
Вот есть у меня структура, я создаю ее новый экземпляр через new, а когда инициализируются и чем ее внутренности?
Аноним 08/03/19 Птн 15:58:17 1361017201
>>1361011
стандартным конструктором. Если в тебя есть поля без стандартного конструктора (инты, енумы, указатели, и тд) - то будет мусор.
Аноним 08/03/19 Птн 16:13:25 1361027202
>>1361011
Будет вызван стандартный конструктор для каждого члена структуры. Встроенные типы тоже его имеют, но он делает буквально ничего, поэтому их значение определено не будет. Однако существует zero-initialization, которая забивает память нулями для типов, у которых нет пользовательского конструктора (те же встроенные). Чтобы она произошла, нужно поставить пустые скобки:

int p_a = new int; // значение p_a не определено
int p_b = new int(); // p_b == 0

Аналогично для структур

MyStruct * p_s = new MyStruct();
Аноним 08/03/19 Птн 16:14:43 1361030203
>>1361027
Бля, опять про звезды забыл

int^ p_a = new int; // значение ^p_a не определено
int^ p_b = new int(); // ^p_b == 0
Аноним 08/03/19 Птн 16:21:53 1361038204
>>1361030
> int^
Ммм, сразу C++/CLI напомнило.
Аноним 08/03/19 Птн 16:23:03 1361039205
Аноним 08/03/19 Птн 18:10:48 1361079206
>>1360938
Это последовательность ячеек памяти. Это не объект.
Аноним 08/03/19 Птн 18:10:50 1361080207
Как новичку изучать stdlib? Открыл его (gcc), чтобы понять, как устроен map, а там дохуа строк кода, #ifdef, #define везде, шаблоны какие-то, и за всем этим скрыта логика (rb-trees, наверное), ничего не понял и вернулся к велосипедостроению.
Аноним 08/03/19 Птн 18:20:31 1361087208
Аноним 08/03/19 Птн 18:22:53 1361089209
>>1361080
Вот что-то, а в С++ стандартную библиотеку по исходникам изучать не стоит. Там будет куча шаблонного кода, нахуеверченная создателями компилятора с двумя целями: (1) соответствовать стандарту и (2) работать как можно быстрее. Лучше прочитай кнута какого-нибудь, если хочешь понять как работают все эти коллекции. Ибо в std большая часть кода это не реализация контейнера, а борьба погромистов с системой типов C++ для того чтобы сделать код как можно быстрее.
Аноним 08/03/19 Птн 18:24:26 1361090210
>>1361080
Нахуя? Если просто интересно почитать как реализовали ту или иную сущность именно в виде исходного кода, то лучше открыть исходники буста, т.к. разработчики компиляторов (а именно стандартной библиотеки) специально пишут пиздецки нечитаемый код, а в бусте все норм. А вообще это тоже будет хуевое занятие и лучше почитать какие-нибудь умные книги типа того же Кнута, Кормена, Седжвика.
Аноним 08/03/19 Птн 18:26:01 1361091211
изображение.png (168Кб, 1366x768)
1366x768
изображение.png (137Кб, 1366x768)
1366x768
изображение.png (161Кб, 1366x768)
1366x768
сап двач, стьюдентишко на связи, запрашиваю поддрежку

На первой пикче основная функция, на второй вызывающая. Суть в том, что когда я с помощью функции input создаю и заполняю массив, при вводе в массив цифры 5, программа прекращает работу. Синтаксических ошибок нет. Если ввожу любые другие числа, всё окей, но пятёрка в массиве каким то чудом заставляет do while останавливаться
памагите
Аноним 08/03/19 Птн 18:35:44 1361097212
>>1361091
Пройдись дебаггером, да посмотри в чем проблема. Скорее всего, где-то в потоке остается. код не читал
Аноним 08/03/19 Птн 18:36:22 1361098213
Screenshot20190[...].jpg (110Кб, 1440x468)
1440x468
>>1361091
И это компилится, говоришь?
Если да, то я, видимо, совсем поехал.
Аноним 08/03/19 Птн 18:40:03 1361099214
Аноним 08/03/19 Птн 18:42:03 1361100215
>>1361099
Чего гуглить-то? В стандарте C++ этого нет.
Аноним 08/03/19 Птн 18:50:49 1361106216
>>1361099
Да хуй даже с VLA, тебя не смущает, что идёт попытка создать массив размера неинициализорованной не static переменной?
Аноним 08/03/19 Птн 18:50:50 1361107217
Аноним 08/03/19 Птн 18:54:53 1361111218
>>1361106
Ну хочет человек создать массив случайной длины. Хули ты приебался?
Аноним 08/03/19 Птн 18:59:33 1361113219
>>1361111
>случайной
Скорее непредсказуемой. Странно, что у него до сих пор все не свалилось в сегфолт.
Аноним 08/03/19 Птн 19:01:44 1361114220
>>1361113
Скорее в stack overflow.
Возможно он в дебаге и память все-таки проинициализирована
Аноним 08/03/19 Птн 19:07:35 1361115221
>>1361087
тут просто описания функций, имплементации нет

>>1361089
>>1361090
А вот вам чаю, загляну в буст. И учебник у меня, конечно, под рукой, но хотелось видеть просто работающий плюсокод.
Аноним 08/03/19 Птн 19:11:35 1361116222
Screenshot20190[...].png (386Кб, 1440x2560)
1440x2560
>>1361115
>Имплементации нет
А это что такое, блядь?
Аноним 08/03/19 Птн 19:16:02 1361119223
>>1361111
С квадриплом не поспоришь.
Ну, хай стреляет себе в ногу, его дело.

>>1361091
Если пятерка у тебя останавливает do...while, то это правильное поведение программы. Ты же ей так и сказал, что если ввел пятерку - то закончи работать, будь добра.
Или, все таки, ввод пятерки у тебя останавливает функцию input?
Аноним 08/03/19 Птн 19:23:57 1361128224
>>1361116
Как find_if поможет понять устройство map? имплементации которого там таки нет
Аноним 08/03/19 Птн 19:33:02 1361134225
>>1361128
А ты не очень умный, да?

Иди тогда покупай описание текущего стандарта, что я могу тебе сказать, раз ты хочешь знать всё.
Аноним 08/03/19 Птн 19:34:50 1361135226
>>1361080
>ничего не понял и вернулся к велосипедостроению.
Новичку следует научиться абстрагироваться. std::map - это интерфейс, который подчиняется определенным законам. Все. Как он внутри устроен тебя волновать не должно.
Будешь постоянно полагаться на велосипеды (маааам, ну я не могу использовать код который не понимаю), хорошим программистом не станешь.
Аноним 08/03/19 Птн 19:42:37 1361140227
Аноним 08/03/19 Птн 20:04:04 1361144228
Какого хуя std::hash внезапно не costexpr?
Хотел запилить православный свитч-кейс для стрингов, а мне провели вялым.
Аноним 08/03/19 Птн 21:35:20 1361158229
>>1361144
сделай сам, в чем проблема?
Строковые литералы вполне хэшируются в компайл-тайме
Аноним 08/03/19 Птн 21:36:04 1361159230
>>1361144
А с чего бы аллоцирующий память контейнер должен быть constexpr. Обешали завести только в будущих стандартах.
Аноним 08/03/19 Птн 21:36:47 1361160231
>>1361135
>>ничего не понял и вернулся к велосипедостроению.
>Новичку следует научиться абстрагироваться. std::map - это интерфейс, который подчиняется определенным законам. Все. Как он внутри устроен тебя волновать не должно.
>Будешь постоянно полагаться на велосипеды (маааам, ну я не могу использовать код который не понимаю), хо


хуйню сказал. Когда лезешь в хайлоад или оптимизацию (что иногда одно и то же), всё это охуенно важно.
Аноним 08/03/19 Птн 21:49:19 1361164232
>>1361160
Важно что, знать как устроен внутри std::map? Выдыхай, бобер.
Аноним 08/03/19 Птн 21:52:29 1361165233
>>1361159
>контейнер
Наркоман? Где там про контейнер было?
Аноним 08/03/19 Птн 22:30:01 1361182234
>>1361165
Ой, перепутал)) Это в перле хеши - массивы.
Аноним 09/03/19 Суб 00:25:21 1361218235
>>1361164
я знаю
но мне дозволительно: я безработный и у меня много свободного времени
Аноним 09/03/19 Суб 00:28:22 1361220236
>>1361218
на самом деле код контейнеров stl легко читать, когда поймешь, какие требования на них накладываются, в том числе безопасность исключений, модель управления памятью..
становится понятно зачем сделано так, а не проще..
Аноним 09/03/19 Суб 00:37:06 1361225237
>>1361164
Конечно важно, нужно знать как устроенны большинство функций stl и как минимум уметь самостоятельно их написать с нуля.
Аноним 09/03/19 Суб 00:52:41 1361231238
Untitled.png (289Кб, 1424x660)
1424x660
Кто из нас четырех пиздит?
1. g++
2. Linux
3. Учебник
4. Я
Аноним 09/03/19 Суб 01:12:36 1361236239
>>1361231
Вариант 4 исключен. Скопировал код из соурсов книги, результат тот же. Игнорирует последнюю последовательность цифр.
Аноним 09/03/19 Суб 01:13:47 1361237240
>>1361231
Никто, у тебя программа до сих пор ожидает ввод, т.к. cin.good() == true. Для окончания ввода, тебе надо его закончить (т.е. ввести EOF - Сtrl+D в Linux), либо "сломать" (т.е. ввести что-нибудь, отличающееся от числа).
Аноним 09/03/19 Суб 01:19:41 1361238241
>>1361237
Лол, я просто думал что как в винде EOF это ctrl+z, потому что тут оно тоже прерывало програму но не давала вывести последнее значение, спасибо
Аноним 09/03/19 Суб 01:29:36 1361243242
Посоны. Что по новым стандартам прилично использовать в for циклах: size_t или обычный int?
Алсо, есть отдалённый вариант вкатиться в байтоеблю с микроконтроллерами. Что скажут опытные байтоёбы, какие особенности у погромирования МК. Где то слышал что про многие плюшечки STL, а то и про всю целиком, придётся забыть.
Понятно что для МК Си более родной, но с ООП как то веселее, и код читаемей. И не забываем про trow catch.
Аноним 09/03/19 Суб 01:31:47 1361245243
>>1361243
> И не забываем про trow catch.
Про это как раз придётся забыть, ибо обычно под мк понимают совсем маленькие процессоры, где нельзя делать динамические аллокации (можно только на стеке). Потому большая часть STL тоже работать не будет.
Аноним 09/03/19 Суб 01:32:26 1361246244
>>1361243
Нет, нужно абсолютно все переменные объявлять как auto, при необходимости использовать decltype(auto)
09/03/19 Суб 03:10:45 1361263245
>>1361080
В map в начале идёт
#include <bits/stl_tree.h>
и там RB-tree

Никаких дохуя строк.
Аноним 09/03/19 Суб 04:48:11 1361271246
image.png (137Кб, 296x300)
296x300
Я правильно понимаю, что при выводе текста с помощью cout в кавычка не должно быть других знаков?
Что еще с ним нельзя делать?
Ввел в кавычки текст и вставил после него #, так он просто его выводить отказался.
Долго ебался, пока не понял почему.
Аноним 09/03/19 Суб 04:54:34 1361272247
>>1361271
Странно. Сейчас перепроверил и он стал выводить.
Аноним 09/03/19 Суб 07:21:33 1361281248
>>1361245
Сообщаю, что динамические аллокации возможны всегда, где есть помимо стека, остальной объем ОЗУ. Это можно сделать даже с помощью элементарного массива - объявляешь статический массив побольше, и распределяешь из него память динамич. аллокациями. Даже не нужно подменять malloc - пишешь свои собственные функции аллокатора.
Эта хуйня про маленькие процессоры - это чушь собачья. Там критерий в том, что МК - это целый компьютер на одном кристалле, и предназначенный для встраивания и управления другой электроникой. МК самые разные бывают. Есть оче слабенькие 8-битные, меньше чем килобайтом ОЗУ, есть мощные 32-битные. К ним по-моему ещё внешнюю ОЗУ можно подключать.
Аноним 09/03/19 Суб 09:08:21 1361299249
>>1361091
Анон, тут много где может быть ошибка попробуй так:
(вызываешь ф-ю input)
input(mas,x)

(там где описываешь ф-ю input)
void input(int *mas, int count)

Ну и также попробуй с другой функцией.
Аноним 09/03/19 Суб 09:13:52 1361302250
>>1361299
Забей, до конца не прочитал.
Аноним 09/03/19 Суб 12:42:22 1361362251
>>1361080
Конкретно сам код стандартной библиотеки можешь не пытаться читать. Чтобы его полностью понять, тебе нужен как минимум iq 150. Стоит просто понять сам принцип работы той или иной функции, гуглиш просто std::map и всё. Велосипеды писать можно, но только в плане обучения, но в продакшене лучше использовать готовые либы.
Аноним 09/03/19 Суб 13:26:04 1361372252
>>1361281
> динамические аллокации возможны
Возможны, но никто их не делает. Памяти и так мало, а разбазаривать её на фрагментацию никто не будет. Плюс динамические аллокации делают программу непредсказуемой и опять таки вносят непредсказуемые задержки. Поэтому усложняется WCET-анализ, плюс появляется возможность у программы упасть в любой момент из-за того что свободная память закончилась (из-за фрагментации).

А с эксепшонами вообще хуита. Для их обработки нужны специальная поддержка в рантайме, плюс информация для эксепшонов занимает очень дохуя места. Прочитай ради интереса: [1].

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

[1]: https://devblogs.microsoft.com/cppblog/making-cpp-exception-handling-smaller-x64/
Аноним 09/03/19 Суб 13:39:22 1361379253
>>1361362
>в продакшене лучше использовать готовые либы
В std::map мало того, что бинарный поиск, так еще и аллокация на каждый элемент. Лучше свой словарь навелосипедить, если нужна хоть какая-то производительность.
Аноним 09/03/19 Суб 15:26:12 1361406254
Аноним 09/03/19 Суб 15:38:26 1361413255
>>1361379
>std::map мало того, что бинарный поиск, так еще и аллокация на каждый элемент
эээ..
это не так..
или ты троллишь что ли?
Аноним 09/03/19 Суб 15:41:57 1361417256
>>1361362
>Чтобы его полностью понять, тебе нужен как минимум iq 150
не нужно
там основная сложность, повторяюсь, это обеспечение безопасности исключений
дело это в стандарт протолкнул саттер с товарищами, но с другой стороны в его книжках объясняются детали реализации, так чтож все понятно становится
так же во всех контейнерах работа с памятью вынесена на уровень аллокаторов, что так же правильное решение, но с другой стороны несколько затрудняет чтение исходников stl
Аноним 09/03/19 Суб 15:45:36 1361419257
>>1361281
до новых стандартов механизм аллокаторов в stl был, к сожалению, трудно реализуем на практике
было несколько обсуждений на rsdn, к примеру
поэтому и не использовали stl для программирования микроконтроллеров или для драйверописания, хотя по факту уже и писали на компиляторах, поддерживающих с++, те писали на приплюснутом си
сейчас же это возможно стало, но, дело в латентности индустрии, придпочитают олдскульную лапшу из макросов и самодельные контейнеры
Аноним 09/03/19 Суб 15:48:39 1361422258
>>1361243
>>1361243
дзен новых стандартов заключается в том что for неприлично использовать
как и if, собственно
Аноним 09/03/19 Суб 15:55:49 1361426259
>>1361225
Нахуя? Если ты безработный и тебе это нравится, нет вопросов.
В противном случае не понятна мотивация.
Аноним 09/03/19 Суб 16:13:07 1361435260
>>1361413
>это не так..
Во всех библиотеках именно так. И в gnu и в майкрософтовской. Красно-черное дерево с бинарным поиском и аллокация на каждый элемент.
Аноним 09/03/19 Суб 16:18:01 1361436261
>>1361243
>Что по новым стандартам прилично использовать в for циклах: size_t или обычный int?
Давай, подумаем, нахуя тебе цикл. Если у тебя цикл типа
for(... i ...) {
yoba = f(yoba);
}
то лучше использовать range based for. Однако тебе нужен именно size_t. Значит цикл у тебя например типа
for(... i ...) {
yoba = (yoba[i+1], yoba[i-1])/2;
}

И тут возникает засада. i-1 - это signed выражение. А ты хочешь использовать size_t. Выглядит это так себе.

Поэтому unsigned типы прилично не использовать вообще.
https://google.github.io/styleguide/cppguide.html#Integer_Types
Unsigned integers are good for representing bitfields and modular arithmetic. Because of historical accident, the C++ standard also uses unsigned integers to represent the size of containers - many members of the standards body believe this to be a mistake, but it is effectively impossible to fix at this point. The fact that unsigned arithmetic doesn't model the behavior of a simple integer, but is instead defined by the standard to model modular arithmetic (wrapping around on overflow/underflow), means that a significant class of bugs cannot be diagnosed by the compiler. In other cases, the defined behavior impedes optimization.

That said, mixing signedness of integer types is responsible for an equally large class of problems. The best advice we can provide: try to use iterators and containers rather than pointers and sizes, try not to mix signedness, and try to avoid unsigned types (except for representing bitfields or modular arithmetic). Do not use an unsigned type merely to assert that a variable is non-negative.

Я использую int'ы. Это не совсем правильно с точки зрения стандартов, но вероятность того, что мой контейнер случайно окажется размером больше 2 миллиардов элементов меньше, чем очередная хуйня, когда unsigned тип становится меньше нуля и улетает в за пределы обозримой вселенной.

>Что скажут опытные байтоёбы, какие особенности у погромирования МК
Любые. Микроконтролелером сейчас может оказаться пик за 10 рублей, 100 МГц арм за 100 рублей (но в нем мало памяти), или система на кристалле, в которой этой памяти как в пеке пятнадцатилетней давности.
Для твоей софтины 64К арма может оказаться просто вагоном места, а может придется статически выделять память и считать каждый байт.
Главная особенность в том, что без знаний электроники, хотя бы базовых, ты нахуй никому не нужен там.
Аноним 09/03/19 Суб 16:29:42 1361441262
>>1361379
>Лучше свой словарь навелосипедить
Это никогда не лучше. У тебя целый гитхаб с тоннами либ под любыми требованиями, и в эти либы вложены гораздо большие усилий, чем ты способен представить. Фейсбуком каким-нибудь.
То есть, если производительность не нужна, берешь map и складываешь туда свой конфиг. Если нужна - берешь хорошую нестандартную либу. Места велосипедам просто нет.
Исключение, если ты сам работаешь в корпорации уровня фейсбука и написать либу с нуля силами программистов с зарплатой $100к в год тебе проще, тем иметь зависимость. Но маловероятно, что это твой случай
Аноним 09/03/19 Суб 16:36:17 1361448263
>>1361441
Ты правда считаешь, что написать свой контейнер - это неебическое достижение, недоступное простым смертным?
Аноним 09/03/19 Суб 16:45:55 1361455264
>>1361448
Нет, это ты так считаешь.
Я считаю, что это рутинная работа для таджиков от мира программирования с соответствующим результатом.
Аноним 09/03/19 Суб 16:57:21 1361459265
>>1361455
>Нет, это ты так считаешь.
С чего ты взял? Если мне нужен свой контейнер - я беру и пишу без задней мысли. Без поисков на гитхабе и размышлений о зарплатах фейсбучных программистов.
>работа для таджиков от мира программирования с соответствующим результатом.
Не понял тебя. Это в комитете таджики работают или в фейсбуке?
Аноним 09/03/19 Суб 16:58:23 1361460266
Аноним 09/03/19 Суб 17:07:13 1361465267
>>1361459
>Если мне нужен свой контейнер - я беру и пишу без задней мысли.
Покажи скрин заголовочного файла - посмеемся.
Аноним 09/03/19 Суб 17:10:04 1361467268
>>1361465
Сначала ты свой гитхаб выкладываешь.
Аноним 09/03/19 Суб 17:11:02 1361468269
Аноним 09/03/19 Суб 17:27:09 1361469270
>>1361467
Что и требовалось доказать. Можешь не показывать - контейнеров уровня laba2.cpp в своей жизни видел достаточно.
Рождаются они простым образом - тупой мане СЛОЖНА разбираться в сложном коде крестовых либ, и он пишет свой кривой велосипед, который имеет 10% функциональности нормального контейнера.

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

std::pair<iterator, bool> emplace(value_type&& value) {
return insert(std::move(value));
}

size_type erase(const key_type& key) {
iterator it = find(key);
if (it == end()) {
return 0;
}
m_.cont_.erase(it);
return 1;
}

iterator erase(iterator it) {
return m_.cont_.erase(it);
}

iterator erase(iterator first, iterator last) {
return m_.cont_.erase(first, last);
}

iterator find(const key_type& key) {
return find(this, key);
}

const_iterator find(const key_type& key) const {
return find(
this, key);
}

И так далее, сотни строк бойлерплейта.

>>1361468
Какие кэши, пусть покажет, как он соблюдает exception safety, семантичность, сделал поддержку аллокаторов, все соглашения для итераторов и протестировал все.
Аноним 09/03/19 Суб 17:39:39 1361477271
>>1361469
> Какие кэши
L1, L2, L3. Судя по тону, видно, что для твоих поделий они не важны, но вот для больших данных это очень важно. Иногда бывает так что для небольшого числа объектов простой массив с кортежом ключ-значение и перебором работает быстрее хэш-мапа потому что полностью вмещается в кэш процессора, в отличии от последнего, а значит на доступ к ОЗУ не тратится времени вообще.
> как он соблюдает exception safety
Никак. В abseil почти все методы помечены как noexept, потому что эксепшоны понижают производительность. Так что если твой говнокод выбрасывает эксепшон внутрь библиотеки, то скорее всего она просто вызовет std::terminate().

Всё остальное совместимо с std.

Впрочем это никак не отменяет, что написать такую библиотеку просто васян выучивший С/C++ не сможет. Непонятно к чему ты высрал свой ответ мне.
Аноним 09/03/19 Суб 17:44:53 1361479272
>>1361469
>соблюдает exception safety, семантичность, сделал поддержку аллокаторов, все соглашения для итераторов и протестировал все.
Сначала ты объяснишь, зачем нужна вся бюрократия (кроме тестирования и итераторов), если я делаю контейнер под свою конкретную задачу, и снаружи библиотеки его никто не увидит?
>и он пишет свой кривой велосипед, который имеет 10% функциональности нормального контейнера.
Смысл велосипеда - как раз заиметь 10% нужной именно тебе функциональности без лишнего оверхеда и мозгоебства.
Аноним 09/03/19 Суб 17:48:13 1361481273
>>1361477
>Судя по тону
Хуясе ты шизик. Я о том, что ты требуешь от него слишком многого, а ты уже строчишь пост о том, какой я мудак, не оценил твою либу и вообще ответ высрал.
Аноним 09/03/19 Суб 17:49:55 1361483274
>>1361481
Это не моя либа, а гугловская. Ещё кого-то шизиком называет, лол.
Аноним 09/03/19 Суб 17:51:38 1361485275
>>1361469
>семантичность
Что такое "семантичность"?
Аноним 09/03/19 Суб 17:51:55 1361487276
>>1361483
Бля, ты правда как шелдон из теории большого взрыва. Во фразе "не оценил твою либу" нет информации о том, что ты написал эту либу.
Аноним 09/03/19 Суб 17:53:16 1361488277
>>1361487
Ты вообще читаешь посты на которые отвечаешь? Я её привёл в пример как высококачественный контейнер, который средний программист никогда не напишет. А ты мне начал какую-то хуйню втирать.
Аноним 09/03/19 Суб 17:55:17 1361489278
>>1361488
А теперь ты даешь цитату, где я в этом усомнился. Раз ты читаешь мои посты, лол
Аноним 09/03/19 Суб 17:56:24 1361490279
>>1361477
У гугла политика разработки без эксепшенов. И не потому, что эксепшены это очень плохо, а потому, что у них огромная кодовая база, где будет хуева гора утечек с эксепшенами, код к ним не готов. Но ты, конечно, этого не знаешь.
Аноним 09/03/19 Суб 17:56:50 1361491280
>>1361489
Действительно, ты просто начал в ответ высираться не по теме. Ещё и шизиков под кроватью искать начал. Видимо слишком много программировал на шаблонах, мозги к общению уже не приспособлены. Только срать и можешь.
Аноним 09/03/19 Суб 17:57:27 1361492281
>>1361490
Вообще они явно пишут в описании библиотеки что сделано это для пирформанса. А ты путаешь причину и следствие.
Аноним 09/03/19 Суб 17:57:45 1361493282
>>1361479
>Смысл велосипеда - как раз заиметь 10% нужной именно тебе функциональности без лишнего оверхеда и мозгоебства.
А в итоге ты получаешь оверхед и мозгоебство. Вместо того, чтобы просто взять работающую вещь. Сложна ведь. Ведь это код, который писал НЕ ТЫ. О ужас.
Аноним 09/03/19 Суб 17:59:28 1361495283
>>1361491
Чувак, когда я писал пост: "Какие кэши, пусть покажет, как он соблюдает exception safety, семантичность, сделал поддержку аллокаторов, все соглашения для итераторов и протестировал все", только тупой аутист не смог бы увидеть выражение согласия. Ты не увидел и начал спорить. Я охуел с таких раскладов.
Аноним 09/03/19 Суб 18:03:05 1361496284
>>1361485
Под этим словом я имел в виду наличие всего набора конструкторов с правильным кодом внутри них.
На самом деле пиление собственный контейнеров лучший способ возненавидеть С++ по-моему.
Аноним 09/03/19 Суб 18:04:03 1361497285
>>1361495
Тогда всё. Вопрос закрыт.

Я думал ты ко мне обращаешься, мол я должен показать как моя лол библиотека соблюдает всё это, а иначе она говно.
Аноним 09/03/19 Суб 18:05:14 1361498286
Аноним 09/03/19 Суб 18:06:04 1361501287
>>1361498
Нет, лучше ты поебёшься с моей тульпой, а я буду рядом сидеть в поясе верности и писать код на шаблонах.
Аноним 09/03/19 Суб 18:12:52 1361503288
>>1361493
>Вместо того, чтобы просто взять работающую вещь. Сложна ведь. Ведь это код, который писал НЕ ТЫ.
Не понимаю твою логику. Если бы была рабочая вещь, я бы велосипеды не писал. Например, миллион вариаций intrusive list, которые все немного отличаются друг от друга. Универсальный если и можно написать, то это будет пиздецома из темплейтной магии. Тут проще писать велосипед под ситуацию.
NIH - синдром, кстати, не на пустом месте берется. Часто обтесывать что-то универсальное сложнее, чем написать свое. Потому что авторы "универсального" решения твой конкретный случай просто не предусмотрели, и приходится городить уродливые велосипеды поверх "рабочей вещи".
Аноним 09/03/19 Суб 18:30:05 1361506289
>>1361492
Эксепшены бесплатны
Аноним 09/03/19 Суб 18:36:09 1361508290
>>1361506
Как минимум move-конструкторы с пометкой noexept быстрее тех, которые потенциально могут выбрасывать эксепшоны. Тут вопрос стоит в оптимизациях, которые может сделать конпелятор и эксепшоны могут сильно его ограничивать в этом.
Аноним 09/03/19 Суб 18:43:01 1361510291
>>1361506
>Эксепшены бесплатны
Бесплатны когда не используются. Когда эксепшн бросается, то оверхед на поиск хендлера там достаточно большой.
Аноним 09/03/19 Суб 18:54:50 1361512292
когда придешь на фирму, на поддержку существующего проекта, очень будешь расстраиваться если там у них свои контейнеры нахуеверчены, смартпойнтеры и прочая поебота
обычно пишут это "охуенные" перцы типа чела сверху, через годик сваливают на свежий проэкт, а челяди потом страдай

Аноним 09/03/19 Суб 18:57:02 1361513293
>>1361512
ах, да, самая мякотка - зачастую пишется все это под большую нагрузку
но клиентская база не набирается, проект выстреливает, но слабенько
и вся эта мега-система нагружается процентов на 10%, а кода то дохуя понаписано, типа с учетом расширяемости и прочего говна
так и шевелится потихоньку
Аноним 09/03/19 Суб 19:15:26 1361522294
Ньюфаг вкатился. Читаю Страуструпа, дрочу мдсн, паттерны, компиляторы, через 5 лет становлюсь тимлидом. Подводные?
Аноним 09/03/19 Суб 19:20:20 1361524295
>>1361506
Вот это обосрамс. Тебе в жаба тред нужно.
Аноним 09/03/19 Суб 19:33:32 1361528296
https://pastebin.com/nN9DN9Nx как исправить ошибки в 64 и 70 строке?я хочу в первый поток послать первую строк,во второй-вторую и тд
Аноним 09/03/19 Суб 19:49:32 1361541297
Аноним 09/03/19 Суб 20:31:37 1361578298
>>1361522
кресты становятся все более узкоспециализированным языком, что используются в нескольких сферах
число вакансий с каждым годом меньше, в то время как специалистов не становится меньше

Аноним 09/03/19 Суб 21:34:30 1361628299
>>1361578
Тогда вкатываюсь в ядро, пилю гипервизоры. Становлюсь кернель/кор/енджин архитектором, перекатываюсь в шышыа. Подводные?
Аноним 09/03/19 Суб 21:44:02 1361634300
>>1361628
Зачем тебе кресты вообще для вкатывания? Это ультрахард-мод. Выбери стек попроще.
Аноним 09/03/19 Суб 21:50:02 1361639301
>>1361634
А если к примеру потратить на изучение 2-3 месяца а потом внезапно перекатиться на другой язык, эти 2-3 месяца совсем в пустую будут потеряны или в чем-то это поможет если вдруг не осилю совсем? мимодруговкаталец
Аноним 09/03/19 Суб 22:21:10 1361653302
>>1361490
Эксцепшены - это источник проблем в ряде случаев. Вот некоторые сценарии, о которых я знаю (из своего опыта):
- Многопоточная прога. Главный поток запускает выполнение некоторого действия во вспомогательном потоке. Действие может обвалиться с ексцепшеном. Ты его должен естественно перехватить там, во вспомогательном потоке. Причём, в том числе с помощью catch(...) {} (т.е. без указания конкретного типа ексцепшена). Ты не можешь ексцепшен передать в главный поток. Особенно, когда ты не указываешь конкретный его тип. Вот допустим, там в главном есть некое место, где проверяется, выполнено ли уже наше действие во вспомогательном потоке, или нет. А если выполнено, было бы круто ексцепшен из вспомогательного ввернуть прямо сюда, и обработать всю эту бадягу. Но нет - так невозможно.
- Смешение различных языков. Допустим, у тебя есть прога на C++, которая использует библиотеку на C. Например, эта библиотека для работы с jpeg файлами. Там, есть возможность предоставить callback для чтения самого этого файла. Ты его реализуешь в твоей проге на C++. Но ексцепшены бросать из него ты не можешь, хотя хотелось бы, чтобы они достигли твоей главной проги, пройдя сквозь код библиотеки. Не можешь ты бросать, т.к. это может поломать всё внутри C-шного кода. И тут засада. Т.к. например, C-шная библиотека может молча сглотнуть ошибку в callback-е, и вызывать его снова и снова до посинения. Или может вернуть некий обобщённый флаг "Ошибка", не раскрывая её сути. Ексцепшен же мог бы прекратить всю эту шизу на корню (хотя впрочем я не очень прав. другая библиотка может перехватить исключение и заглушить его точно так же). И ексцепшен может донести инфу до основного тела проги во всей её полноте.
Аноним 09/03/19 Суб 22:25:56 1361655303
>>1361628
>>1361628
аппаратная виртуализация - нужны были инженеры в нулевые, не было софта
это десятилетие - софт виртуализация, вернее ее второй круг - докеры там, кубернеты и прочее - нужны были инженеры 5 лет назад
ппц, ты на 15 лет в общем опоздал, даже не мечтай
Аноним 09/03/19 Суб 22:32:15 1361659304
>>1361653
бла-бла-бла
страуструп ввел инсключения в крестах по вполне практическим соображениям, а именно чтобы возвращать ошибки из конструкторов и при пользовательских перегрузках операторов
и тогда же предложил способы снизить зависимость от исключений - а именно не конструировать классы напрямую, а делать различные фабрики, в том числе и универсальные
а при проектировании классов помимо пользовательских операторов добавлять методы доступа, дублирующие функциональность операторов, но возвращающие код ошибки, а не бросающие исключение
таким образом, исключения изначально предполагались лишь как некое узкоспециализированное средство для решения конкретных проблем, возникающих при проектировании иерархии классов, но не как универсальный способ обработки ошибочных ситуаций
как всегда, лучший способ - срединный путь, а именно использовать исключения только там где они нужны и все

Аноним 09/03/19 Суб 22:33:12 1361661305
>>1361639
>эти 2-3 месяца совсем в пустую будут потеряны или в чем-то это поможет
Если с си начнешь - поможет. С С++ - только время потеряешь, потому что в большинстве книг обычно вначале дают ООП, а оно в крестах своеобразное, и этот опыт мало куда применить можно.
Аноним 09/03/19 Суб 22:38:44 1361664306
>>1361639
>потратить на изучение 2-3 месяца
в конце третьего месяца ты, конечно же, будешь ебашить обобщенные лямбды, статический полиморфизм с использованием crtp и заниматься кодогенераций через метапрограмирование с использованием value-based подхода, потому что путь через частичную специализацию уже давно не тру!

Аноним 09/03/19 Суб 22:50:46 1361669307
15423070053293.jpg (66Кб, 460x622)
460x622
Всё закончил читать "Эффективный и современный С++" от Скотта Мейрса, понял 50-60%. Это нормально или я тупой?
Аноним 09/03/19 Суб 23:00:12 1361674308
>>1361655
Ну в основе то ядро. И кто-то должен все это дело поддерживать. Вангую в 20 годах будет повторение 80ых, вон сколько уязвимостей в архитектурах обнаружено за последние пару лет, будут все переделывать.
Аноним 09/03/19 Суб 23:01:41 1361677309
>>1361659
как же меня это бесит. ему рассказывают про существенные, такие, вещи - а он "бла-бла-бла". вот думал - ладно там всякий сброд с улицы. с ним всё понятно, что мудаков и придурков там выше крыши. но мы-то, программисты, вроде вменяемые все люди, поймём друг друга, и найдём общий язык. увы, я страшно ошибался. мудаки проникли буквально повсюду, даже среди нашего круга. вот прямо сейчас с ним я общаюсь. мир прогнил до основания, увы. и завтра коллега-программист, устроит подлянку и какую-нибудь пакость другому программисту. выебет его жену, и выкинет на мороз и из работы, и из семьи

как всегда, бла-бла, срединный путь, бла-бла. исключения следует использовать там, где они приносят пользу. особенно, если дают преимущества перед иными методами обработки ошибок. они позволяют сократить объём кода. не проверять коды ошибок на каждый чих, выписывая их обработчики. то для чего они там придумывались, дело десятое. творение ушло из-под контроля автора, и начало жить своей жизнью. про конструкторы - да, они там приносят пользу.
Аноним 09/03/19 Суб 23:01:46 1361678310
>>1361669
не нормально, там ничего запредельного нет, по сути объяснение технических моментов
сложности начинаются когда пытаешься спроектировать библиотеки или прикладной код с использованием новых средств
если говорить образно, в этой книжке описывается как точить топор и править зубъя пилы, а не как с помощью этих инструментов строить дом

Аноним 09/03/19 Суб 23:03:30 1361679311
>>1361677
исключения в с++ нужны для обработки ошибочных ситуаций в конструкторах и пользовательских операторах
точка
а?
я то конкретно написал, в отличие от
Аноним 09/03/19 Суб 23:05:14 1361680312
c.png (17Кб, 558x250)
558x250
Подскажите, а то мозги уже отключаются. Почему эта ..ня не компилируется
https://github.com/sonoro1234/LuaJIT-ImGui

Что делает строчка в CMakeLists.txt? get_target_property(SDL_INCLUDE SDL2::SDL2 INTERFACE_INCLUDE_DIRECTORIES)

Как ему можно ее задать в ручную?
Аноним 09/03/19 Суб 23:06:30 1361681313
>>1361664
>метапрограмирование
Честно, я боюсь появления метаклассов, потому что считаю, что они могут наворотить кучу хуже самой тёмной темплейтной магии. Это нормально?
Аноним 09/03/19 Суб 23:08:19 1361682314
>>1361678
У меня слабая база было до прочтения книги, один Шилдт
Аноним 09/03/19 Суб 23:21:25 1361684315
>>1361634
Так я не совсем с нуля. Вкатывался с аутоита, жс, питона и C#. Но это все либо веб-помои, либо клепание формочек. Хочу системщины.
Аноним 09/03/19 Суб 23:26:47 1361685316
>>1361681
Поддвачну. Лучше бы макросы как в расте сделали, где хоть с системой типов бороться не надо генерируя нечитаемый говнокод, а тупо хуячишь кодогенерацию на нормальном языке (по сути пишешь плагин для конпелятора), а компилятор сам следит за областью видимости переменных.
Аноним 09/03/19 Суб 23:31:14 1361687317
>>1361679
нет, вообще не точка. в конце-концов, не нам решать за всех, как им применять исключения. иные в них находят даже способ элегантно выйти из вложенных циклов, рекурсивных вызовов и прочей марахайки.
каждый дрочит как он хочет
Аноним 09/03/19 Суб 23:37:13 1361694318
giphy.gif (1491Кб, 419x266)
419x266
Аноним 10/03/19 Вск 10:47:35 1361836319
>>1361685
Макросы являются гораздо большим злом, чем теймплейты.
Аноним 10/03/19 Вск 16:40:17 1362001320
plusi.PNG (2Кб, 403x107)
403x107
Как же я люблю плюсы... Это работает, если че)
Аноним 10/03/19 Вск 17:08:12 1362018321
>>1361836
Это в реалиях C++, где выхлоп макроса имеет область видимости такой же как и у определения макроса. В расте у макроса область видимости ограничена только определёнными внутри выхлопа макроса переменными и аргументами и любые глобальные переменные недоступны.
Аноним 10/03/19 Вск 17:53:09 1362056322
>>1362001
>Это работает, если че
А почему оно не должно работать? Можешь написать +1-1+1-1... и оно тоже будет работать.
Аноним 10/03/19 Вск 17:59:09 1362062323
>>1362056
Да ниче, прикольно просто.
Аноним 10/03/19 Вск 18:14:12 1362069324
>>1362001
Такая-то обфускация))))
Аноним 10/03/19 Вск 19:46:37 1362118325
1377936994798.jpg (82Кб, 512x512)
512x512
>>1362001
Подучи Си.
Алсо,
>венгерская нотация
Аноним 10/03/19 Вск 19:49:07 1362119326


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

Аноним 10/03/19 Вск 19:52:33 1362120327
когда сбор урожая закончен, желтые нагорья теряют свой цвет
Аноним 10/03/19 Вск 20:05:42 1362130328
>>1362118
>любитель повыпендриваться какой он умный
>аниме аватарка
Лол
Алсо,
>венгерская нотация
Это член класса CWinApp, от которого наследуется класс. Это MFC приложение, если че. Вы наверное в своей шараге его еще не проходили
Аноним 10/03/19 Вск 20:07:12 1362133329
.PNG (25Кб, 546x155)
546x155
Аноним 10/03/19 Вск 20:08:18 1362134330


мастер может лишь провести вас через дверь: все остальное вы должны сделать сами

Аноним 10/03/19 Вск 20:19:53 1362144331
Как сделать чтобы switch при выборе варианта не заканчивал программу, а дал выбрать другие варианты?
Аноним 10/03/19 Вск 20:21:55 1362146332
>>1362118
Двачую. Помню увидел в каком-то крутом опенсурсе m_ приставку и начал везде ее приписывать не зная что это. Когда узнал, дико проигрывал с себя.
Аноним 10/03/19 Вск 20:23:44 1362147333
В треде есть разбирающиеся в мэйкфайлах?
Аноним 10/03/19 Вск 20:34:22 1362158334
>>1361422
А что вместо if использовать, switch что ли?
Аноним 10/03/19 Вск 20:36:39 1362161335
>>1362147
>В треде есть разбирающиеся в мэйкфайлах?
В мейке - да, автомейке - нет.
Аноним 10/03/19 Вск 20:49:50 1362169336
>>1362146
Приставка m_ ещё ладно сам так пишу, но p - совсем никуда не идёт.

>>1362130
>Это член класса CWinApp, от которого наследуется класс
Прощается
Аноним 10/03/19 Вск 20:52:33 1362171337
>>1362144
В конце каждого кейса пиши break.
Ну и свитч тогда должен быть в цикле. Посмотри выше, там где-то у анона с проблемной пятёркой в массиве был код такого свитча.
Аноним 10/03/19 Вск 20:54:47 1362174338
>>1362161
https://github.com/sonoro1234/LuaJIT-ImGui/blob/master/CMakeLists.txt
вот в этом
72 строка get_target_property(SDL_INCLUDE SDL2::SDL2 INTERFACE_INCLUDE_DIRECTORIES)
Она что делает? Я ей уже куда только эти инклуды сдла не пихал. Все остальное видит, а эту хрень - нет. Я так понял, что она и создает переменную SDL_INCLUDE, только вот вот откуда она ее грузит не понимаю.
Аноним 10/03/19 Вск 20:56:11 1362176339
>>1362158
Нет, в приличном обществе теперь совсем без if и for, только ооп или функциональщина.
10/03/19 Вск 20:58:32 1362177340
>>1362130
>Это MFC приложение, если че. Вы наверное в своей шараге его еще не проходили
MFC где-то кроме шараг проходят?
Аноним 10/03/19 Вск 21:05:09 1362181341
>>1362176
Я наоборот слышал что ООП не актуаелен, ну в других языках.
Аноним 10/03/19 Вск 21:07:15 1362182342
>>1362130
>аниме аватарка
Так-то все настоящие программисты смотрят аниме
Аноним 10/03/19 Вск 21:10:42 1362184343
>>1362176
Как без IF то блять? А без циклов как? Что-то ты пиздишь.
Аноним 10/03/19 Вск 21:14:39 1362185344
>>1362184
Справедливости ради в нормальных языках все циклы спокойно заменяются лямбдами и специальными функциями для итераторов. C++ очень особенный в этом плане, что у него нереально ебанутые итераторы и функции для работы с ними. В С++20 что-то там пытаются упростить при помощи ranges, посмотрим что у них получится.
Аноним 10/03/19 Вск 21:18:04 1362188345
>>1362185
Ты можешь пример кода привести? Я ньюфаг и не понимаю, как можно заменить базовые конструкции if/else и циклы for.
Аноним 10/03/19 Вск 21:21:00 1362191346
>>1362174
>вот в этом
Это cmake. Он от мейка отличается как джава от джаваскрипта.
>Она что делает?
Она работает только если SDL_IMPL включен, и у тебя несистемная версия SDL. Тогда все переменные ты сам должен задать, например через define_property.
Аноним 10/03/19 Вск 21:21:48 1362193347
>>1362171
И так написан.
При попытке вывести что то больше одного варианта и пиздос.
Аноним 10/03/19 Вск 21:23:04 1362194348
>>1362188
Я другой анон, но
1) тернарный оператор. Не совсем замена if/else, но все же. Однако в прошлом(или позапрошлом) треде были разборки, что все же лучше.
2) range based for - не совсем замена, но уже не for со счётчиком. А вообще - std::for_each, std::find и т.д.
Аноним 10/03/19 Вск 21:24:03 1362196349
>>1362193
Так ты за одну операцию считывания хочешь несколько срабатываний кейса? Интересный ты.
Хоть код заскринь, покажи нам.
Аноним 10/03/19 Вск 21:28:41 1362200350
>>1362194
Но тернаный оператор это же пиздец и считается плохим тоном. Не уверен что его вместо if/else используют.

>std::for_each
Но это же просадки по пермофансу, нет? И по сути оболочка над тем же циклом for.
Аноним 10/03/19 Вск 21:33:22 1362203351
>>1362191
Спасибо, что хотя бы указал куда копать.
Т.е. мне перед этой строчкой просто вставить такую define_property(SDL_INCLUDE с:\SDL2\include)
Аноним 10/03/19 Вск 21:39:35 1362206352
Аноним 10/03/19 Вск 21:40:52 1362207353
>>1362196
>Так ты за одну операцию считывания хочешь несколько срабатываний кейса? Интересный ты.
За несколько операций считывания.
Нажал первый раз - вывел кейс 1.
Нажал второй раз - вывел кейс 2.

А он после первого выводит кейс 1, а после второго закрывает окно вывода.
Аноним 10/03/19 Вск 21:41:34 1362208354
>>1362206
Только я во втором примере перепутал местами if/else. Но я не PRO, а только учусь.
Аноним 10/03/19 Вск 21:50:40 1362210355
>>1362200
Ну, когда как. Как по мне - иногда можно и использовать: у меня было два разных map-а, и в зависимости от результата тернарного оператора выбирался нужный для вставки, а с ифом было бы больше кода.

А насчёт стоимости функций из <algorithm> - не в курсе, на самом деле. Но выглядит лаконичнее, однако.
Аноним 10/03/19 Вск 21:51:37 1362212356
>>1362208
В визуал студио не компилится такое.
Аноним 10/03/19 Вск 21:52:23 1362213357
>>1362212
Надо C++17 включить. У тебя небось только C++11 включён.
Аноним 10/03/19 Вск 21:54:16 1362214358
>>1362213
Ну или заменить constexpr на static. Всё равно я его только для КРУТОСТИ добавил. Так от него толку и нет.
Аноним 10/03/19 Вск 21:57:27 1362218359
>>1362213
Пиздец, эти кресты блять как болото какое-то. 3 месяца учу, нихуя в итоге не понимаю до сих пор. На работку планирую в 20-21 году, мне вообще нужно учить старые стандарты? 11 там, 14? Или лучше полировать 17 и готовиться к 20?
Аноним 10/03/19 Вск 22:01:39 1362221360
Как правильно читать книги по плюсам? Медленно, вдумчиво, печатать весь приведенный в примерах код самому или воспользоваться техниками скорочтения? Дискасс.
Аноним 10/03/19 Вск 22:01:47 1362222361
>>1362207
Уууух, разобрался.

Я вместо того, чтобы пихать все варианты в один свитч, сделал для каждого отдельный.
Свитч-вариант.
Свитч-вариант.
Аноним 10/03/19 Вск 22:03:05 1362223362
>>1362207
Там должно быть что-то вроде:
bool flag = true;
int I;
while (flag)
{
std::cin >> i;
switch(i)
{
case 1:
...
break;
case 2:
...
break;
default:
//Exit
flag = false;
}
}

Мог накосячить где-то, на самом деле.
У тебя как выглядит? Принеси уже свой код.
Аноним 10/03/19 Вск 22:19:45 1362237363
image.png (241Кб, 736x666)
736x666
before.webm (231Кб, 956x474, 00:00:03)
956x474
after.webm (64Кб, 958x478, 00:00:06)
958x478
image.png (320Кб, 719x403)
719x403
>>1362223
Я разобрался сделав три свитча. И сделал файлы, ибо объяснял всрато.

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

Да, да, это тот от вида кода которого тут плевались. Для меня так удобно.
Аноним 10/03/19 Вск 23:18:52 1362261364
code.JPG (79Кб, 1313x847)
1313x847
result.JPG (51Кб, 1086x658)
1086x658
>>1362237
я тоже не магистр кодинга, но я бы сделал так.

>не всратый ли это вариант
Всратый. По сути, теперь каждый твой свитч - это просто if. Разве что ты сохраняешь в отдельный массив макс/мин/среднее, иногда это требуюта вдруг Вам надо будет использовать это после?. Но это решается вводом вектора под результат и заменой std::cout на result.push_back(std::min/max/accumulate(...)), а потом пройтись по нему и вывести каждый элемент.

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

>Для меня так удобно.
Да пиши как хочешь, боже. Вон я каждый кейс выделяю фигурными скобками, if-ы тоже - даже если там один оператор всего.
Только будь готов к тому, что когда начнёшь работать в команде, тебя за такое будут ругать.
Аноним 10/03/19 Вск 23:23:50 1362265365
>>1362237
>>1362261
Можно ещё для пущей правильности все vec.begin() и vec.end() заменить на vec.cbegin() и vec.cend() соответственно. Если не меняем элементы, то есть смысл взять константные итераторы.

А ещё почему-то std::min работает в этой ситуации, а std::max возвращает какой-то мусор. Судя по cppreference они не совсем для этого предназначены.
Потому max/min_element.
Аноним 10/03/19 Вск 23:57:45 1362286366
>>1362237
>Не всратый ли это вариант решения моей проблемы?
Научись сначала код форматировать. Сейчас это тупо читать больно.
Аноним 11/03/19 Пнд 00:19:40 1362296367
>>1362261
>векторы
У меня половина курса шараги на С++. Я не знаю что это.
Но читал про них. Спасибо.
>>1362286
Он читабельный для меня. Мне этого достаточно.
Аноним 11/03/19 Пнд 00:23:37 1362298368
>>1362296
Это всё стандартная библиотека, изучай потихоньку я тоже этим сейчас занимаюсь.
Твой код можно скомпилить как сишный(кроме комментов - это C++ стайл), а мой - уже нет, как раз из-за использования std.
Аноним 11/03/19 Пнд 00:24:34 1362299369
>>1362298
ну и кроме вывода, конечно же.
самофикс
Аноним 11/03/19 Пнд 00:43:25 1362305370
>>1362185
>ranges
>упростить
Именно, что пытаются. Но не получается.
Аноним 11/03/19 Пнд 00:51:14 1362311371
>>1362296
А, да.
Не забудь в случае среднего разделить результать std::accumulate на vec.size(), т.к. эта штука только сумму элементов считает.
Аноним 11/03/19 Пнд 00:52:02 1362312372
15522146770640.png (708Кб, 960x849)
960x849
Аноним 11/03/19 Пнд 00:56:08 1362317373
>>1362206
Унарный плюс кастует лямбду к указателю на функцию, да? У лямбды точно вызовется деструктор в таком случае?
Аноним 11/03/19 Пнд 00:57:38 1362319374
>>1362317
Унарный плюс работает только с теми лямбдами, которые (1) могут быть приведены к указателю на функцию (потому auto-аргументы не работают) и (2) которым деструктор не нужен (потому захватывать ничего нельзя).
Аноним 11/03/19 Пнд 01:05:29 1362322375
>>1362319
Ты настоящий PRO. Но в своём коде этим я пользоваться не буду.
Алсо, ещё один совсем уж выпендрёжеский способ избавиться от if/else -- branchless маскирование (x = cond ? b : c <==> x = (cond & b) | (!cond & c), или _mm_blendv_pd). Хотя это и в обычных сях можно.
Аноним 11/03/19 Пнд 01:09:11 1362325376
Аноним 11/03/19 Пнд 01:27:08 1362330377
welcome to 2014.png (1533Кб, 990x891)
990x891
>>1362325
Добро пожаловать в плюсы. Так писать не надо, но надо знать, что такое есть.
Аноним 11/03/19 Пнд 06:49:02 1362363378
А почему обычный массив без указания размера объявить можно:
>int arr[] = {1,2,3};
а если это мебмер класса, то уже нет, он его сначала делает нулевым размером, а потом инициализирует, в итоге g++ выдаёт:
>too many initializers for 'int [0]'
А clang:
>https://repl.it/repls/DismalTechnologicalBoards
>array bound cannot be deduced from an in-class initializer

Я так понимаю, проблема в том, что декларация и инициализация class member'ов происходит раздельно, в отличие от переменных? Ткинте, пожалуйста, в какое-нибудь информативное описание этого, не помню, чтобы такие детали упоминались во всяких типичных книжках о классах.
Аноним 11/03/19 Пнд 08:17:01 1362372379
изображение.png (47Кб, 558x388)
558x388
Сап, мне нужно достать из файла сериализованный массив данных и десериализовать, как написать доставание из файла и десериализацию этих данных?
Аноним 11/03/19 Пнд 08:29:58 1362374380
>>1362372
Руками попробуй.
Ну реально, с такими вопросами - вон из профессии.
Аноним 11/03/19 Пнд 08:32:40 1362375381
Аноним 11/03/19 Пнд 08:58:59 1362379382
>>1362374
ну у меня с файлами проблемы, я не могу понять как это написано и что выполняет, а не понимая суть сложно написать.
Аноним 11/03/19 Пнд 08:59:21 1362380383
>>1362206
Нахуя вообще такой блядский код писать? Чтобы потом самим запутываться и никакого плюса производительности он не дает.
Аноним 11/03/19 Пнд 09:00:45 1362381384
>>1362374
сможешь обьяснить строки? мб тогда пойму как реализовать то что нужно.
Аноним 11/03/19 Пнд 09:09:28 1362383385
>>1362372
Тебе в C тред с такими вопросами, либо перепиши без void((f[]())()
Аноним 11/03/19 Пнд 09:22:01 1362386386
>>1362381
Код на скрине просто берёт и побайтово копирует память из адреса A в адрес B, промежуточно пихая его в в char массив Mas, который, видимо, и будет писаться в файл, а при загрузке данных из файла ты получишь тот же массив Mas.

Найди, как записать данные в файл бинарно, как прочитать бинарный файл. Вставь этот на строке до "//Десериализация" и готово.
Аноним 11/03/19 Пнд 09:22:31 1362387387
>>1362386
>копирует память
данные из памяти

>пихая его
их
Аноним 11/03/19 Пнд 09:25:52 1362389388
Аноны, подскажите про миграцию, большая ли потребность в крестовиках за бугром?
Аноним 11/03/19 Пнд 09:32:08 1362390389
15426720365540.jpg (24Кб, 468x520)
468x520
>>1362237
Бля чел, ну прям очень говнокодом воняет. Почему бы просто все не сделать через else if. Зачем ты каждый раз, для нового свича, создаешь новую переменную v. Ты можешь просто создать одну и в неё все записывать. Я уже даже не говорю от том какие ты создал функции и как ты их используешь.
Аноним 11/03/19 Пнд 09:41:04 1362392390
>>1362372
Ты этот вопрос неделю назад задавал. Я тебе код скинул, как сериализовать и десериализовать из файла. Но ты походу нихуя не понял. Ты сначала подучи, что такое указатели, массивы, байты, адреса, это элементарные вещи в C++. И только потом сериализацией занимайся.
Аноним 11/03/19 Пнд 09:42:24 1362393391
>>1362237
Говорю, поставь себе студию или хотя бы Dev C++, он поможет тебе форматировать код.
Аноним 11/03/19 Пнд 11:01:10 1362408392
>>1362237
Ты че, долбоёб?зачем я спрашиваю - анимешник же
Нахуя тебе свитч только для одного case?
Выкатывайся - программирование не для тебя.
Аноним 11/03/19 Пнд 14:05:55 1362441393
>>1362408
>в первых постах спросил как делать
>аряяяя дебил выкатывайся
Классика.
Аноним 11/03/19 Пнд 14:12:10 1362444394
>>1362390
> не сделать через else if
Уже понял что с ним лучше.
>Я уже даже не говорю от том какие ты создал функции и как ты их используешь.
Что с ними не так?
Аноним 11/03/19 Пнд 15:51:20 1362468395
Товарищи программисты, как делают гуй под линукс? Gtk это гном хуита, Qt норм и swing-параша.
Можно ли самому захуярить отрисовку через opengl/vulkan всякие?
Аноним 11/03/19 Пнд 18:29:31 1362543396
>>1362468
>Можно ли самому захуярить отрисовку через opengl/vulkan всякие?
Смотря что тебе нужно. Берешь что-то вроде imgui или nanovg и хуяришь.
Аноним 11/03/19 Пнд 18:31:41 1362545397
>>1362389
Лучше rust или go ботай. Там зарплаты выше и проекты интересней. Кресты - это или легаси вилкой ковырять или в геймдеве работать по 100 часов в неделю.
Аноним 11/03/19 Пнд 18:35:04 1362548398
>>1362545
Двачую за rust.

мимо-бывший-плюсовик
Аноним 11/03/19 Пнд 18:37:46 1362551399
>>1362545
А нахуй плюсы в гейдеве, че там каждая контора свой движок мутит?
Аноним 11/03/19 Пнд 18:43:36 1362557400
>>1362551
Потому что аналогов нет. Си слишком пиримитивный, а всё остальное слишком медленное. Если бы в D не впихнули полу-обязательный GC (без которого даже сегодня стандартная библиотека работать не будет), быть может он и взлетел.

Впрочем некоторые спокойно пишут на юнити с шарпом или даже на жаве.

Ну и возможность придумать свой собственный ЯП и приделать к нему LLVM в качестве бекэнда появилась относительно недавно, да и всё равно требует огромных вложений.
Аноним 11/03/19 Пнд 18:52:58 1362565401
>>1362551
Гейдев это либо Unreal Engine (C++), либо самопальный говнодвижок (Обычно C++), либо Unity3D (C#).

В 99% для нюфань это будет юнити, по-этому лучше шарпы ботать.
Аноним 11/03/19 Пнд 19:42:13 1362581402
>>1362565
В небольших студиях или одиночки редко берут эти варианты, поэтому нюфане эти движки учить не стоит.
Аноним 11/03/19 Пнд 20:50:26 1362600403
>>1362375
какие неосиляторы, клоун? То, что я не пишу такой говнокод, это не значит, что я не могу его писать.
Аноним 11/03/19 Пнд 21:23:21 1362629404
>>1362545
Как перекатиться в другой яп, если на плюсах опыт и зп? Опять джуном за 30к идти?
Аноним 11/03/19 Пнд 21:27:02 1362633405
>>1362629
Есть вакансии cpp/java to rust. Там зп раза в полтора больше будет, чем у плюсовика того же уровня
Аноним 11/03/19 Пнд 21:44:35 1362653406
>>1362600
>не использует последние паттерны языка
>это говнокод
Понятно уже, что ты дебил, только не плачь
Аноним 11/03/19 Пнд 21:45:36 1362656407
>>1362653
Причем тут паттерны?
Аноним 11/03/19 Пнд 22:19:53 1362709408
>>1362653
b = arr[(int)(a > 0)](a);

охуенные у тебя паттерны
Аноним 11/03/19 Пнд 23:56:51 1362778409
>>1362565
Шарпы редкостное дерьмо, недавно писал на них, просто разрыв глаз, как на таком помое только пишут.
Аноним 12/03/19 Втр 00:20:39 1362786410
изображение.png (114Кб, 1920x1080)
1920x1080
>>1362392
в целом я понял, просто детали осталось понять, в группе ебоклаки просто копируют и готово, я так хуй чё смогу потом, нужно идеально понимать, чтобы применить в разных ситуациях, почти дописал функции, получилось что то такое, осталось чтение сделать, пока думаю как.
Аноним 12/03/19 Втр 00:27:10 1362788411
>>1362392
с твоего примера погуглил все команды, это понял, но у меня тут мешанина из си и крестов, и нужно это совместить, вот и пытаюсь понять.
Аноним 12/03/19 Втр 00:28:44 1362789412
>>1362786
Что там понимать? 2 с половиной указателя, цикл и методы ifstream?
Аноним 12/03/19 Втр 00:29:42 1362790413
Мне тут анон советовал навернуть cs50 для изучения c++. Так вот вопрос, что мне нужно запоминать при просмотре? Очевидно что там все по другому и получается если учить строго по cs50 то ты по сути учишь уже C. Так вот, имеет ли смысл просто просватривать лекции запоминая общие моменты без переписывания и выучивания (что для c++ я как раз делаю), а то это параллельное изучение двух языков получается и так можно совсем запутаться.
Аноним 12/03/19 Втр 00:32:05 1362791414
>>1362789
методы fstream и как передать и вытащить это из файла, с этим сишным кодом, тоесть во второй функции, сначала достать из файла в массив, а потом уже десериализовать? Тогда ещё вопрос по .read() как он работает, если я хочу бинарные данные засунуть в массив, как корректная запись будет выглядеть?
Аноним 12/03/19 Втр 00:32:52 1362792415
>>1362790
наверни доусона книгу, в своё время охуенно мне помогла, материал преподносится оверохуенно.
Аноним 12/03/19 Втр 00:38:53 1362794416
image.png (285Кб, 404x500)
404x500
image.png (102Кб, 500x500)
500x500
>>1362792
Какая именно? Чем позднее, тем более актуальный материал или это последовательные части?
Аноним 12/03/19 Втр 00:48:24 1362798417
Аноним 12/03/19 Втр 01:01:44 1362801418
>>1362798
Как раз его нашел и листал, ну она не такая большая так что наверное наверну её, спасибо.
Аноним 12/03/19 Втр 01:35:42 1362806419
>>1362206
Ну охуеть, ты придумал jump table. Когда-то (лет 20 назад) я увлекался ассемблером под дос, так там такие хреновины сплошь и рядом встречались, особенно в свитчах. Но для двух значений делать jump table имхо перебор.
В твоем случае компилятор уже посчитал четверку во время компиляции и убрал нахрен таблицу функций.
Аноним 12/03/19 Втр 01:39:31 1362807420
>>1362322
> branchless маскирование
в какой-нибудь cuda хорошо заходит, где ветвление - это гроб-кладбище
но в твоем примере ХЗ как оно еще будет работать, если, скажем х - это какой-нибудь указатель
Аноним 12/03/19 Втр 01:40:40 1362808421
>>1362806
Жалко, что если сделать std::cin >> a; ни один из конпеляторов не сможет заинлайнить функции.
Аноним 12/03/19 Втр 01:52:53 1362810422
Аноним 12/03/19 Втр 01:58:29 1362812423
>>1362810
Ну, мой способ более универсален (хотя всё равно нельзя захватывать переменные).
Аноним 12/03/19 Втр 02:12:10 1362816424
Аноним 12/03/19 Втр 02:27:01 1362818425
Посоны, как прочитать и записать двумерный массив (массив массивов точнее) в бинарный файл в бинарном виде?
Я хуею с кучи указателей в ваших плюсах

fout.write((char )M, sizeof(M) * n);
Это для одномерного, а для двумерного как?
Аноним 12/03/19 Втр 02:38:25 1362820426
>>1362818
Ну можно сделать так:
[4B] - размер массива
{
[4B] - размер внутреннего массива
{[...], ...} - элементы внутреннего массива
} - элементы внешнего массива

То есть сохранять сначала размер массива, а потом его содержимое.
Аноним 12/03/19 Втр 02:40:51 1362821427
image.png (883Кб, 830x588)
830x588
Аноним 12/03/19 Втр 02:47:32 1362823428
>>1362821
Допустим есть массив
{
{1,2,3},
{4,5,6,7},
{8,9,10,11,12}
}

Сначала записываешь количество элементов первого массива в виде 32битного значения (то бишь uint32_t). Затем по очереди записываешь внутренние массивы в такм виде: сначала количество (опять в виде uint32_t), затем все элементы по порядку. В итоге файл будет выглядеть как-то так:
3 3 1 2 3 4 4 5 6 7 5 8 9 10 11 12

Считываешь в таком порядке: сначала берёшь первый uint32_t - это будет размер внешнего массива, создаёшь его. Затем (ели размер больше нуля) считываешь следующий uint32_t - размер внутреннего массива, создаёшь его и копируешь данные (их количество уже известно) и так повторяешь для каждого внутреннего массива.
Аноним 12/03/19 Втр 03:24:36 1362831429
>>1362818
Открыл файл потоком, считал первую строку, в которой размерности массива написаны и пошел n раз считывать в массив размера m каждую строку.
Запись - ещё проще, записал размеры и просто всю строку передал потоку через <<.

Еба какую штуку нашел, надо запомнить:
std::ifstream f("test.bin", std::ios::binary);
std::vector<char> v(std::istreambuf_iterator<char>{f}, {});
Аноним 12/03/19 Втр 03:34:31 1362832430
>>1362818
>Я хуею с кучи указателей в ваших плюсах
Так используй векторы.
Вся сериализация десериализация должна быть написана на функциях или операторах типа << подобным образом:

template<typename T> void write_value(ostream stream, T yoba) {
stream.write(yoba, sizeof(T));
}

template<typename T> void write_value(ostream stream, vector<T> yoba) {
write_value(value(stream), yoba.size());
for (auto& y in yoba) {
write_value(stream, y);
}
}

Темплейты использовать не обязательно, можно обойтись и подобным полусишным кодом:

void write_int(ostream stream, int yoba) {
stream.write(yoba, sizeof(int));
}

void write_1d_int_vector(ostream stream, vector<int> yoba) {
}

void write_2d_int_array(ostream stream, vector<vector<int>> yoba) {
}

или опримитивиться до сишных массивов (но с длинами в 2д случае будет не очень приятно):

void write_int(ostream stream, int yoba);
void write_1d_int_vector(ostream stream, int@ yoba, int length);
void write_2d_int_array(ostream stream, int@@ yoba, int length1, int length2);

но в любом случае это должны быть функции такого рода, а не типичное для laba.cpp сериализация по месту написания кода
Аноним 12/03/19 Втр 06:31:20 1362843431
>>1362392
Блять наконец сделал эту хуйню, загвоздка была в том, что я не знал как ввести из файла, через read не получалось, через 2 часа нашёл что можно file>>array, и сработало, либо сегодня у препода попрошу обьяснить файлы, либо работа с файлами в дальнейшем будет пулями а я нео, но это такое себе, на жабу перейду потому что в ЕРАТ хочу распределиться, а вдруг там тоже есть, нужно вникнуть, но я чуть не выпилился, вроде всё знаю, лабы ебу как говно, а ебаные файлы уже год преследуют и всегда туплю.
Аноним 12/03/19 Втр 06:44:42 1362845432
>>1362843
Только учти, что тебе нужно не столько файлы, а сколько потоки у него спросить.
Ты-то с файлом можешь работать как с cout/cin, через << и >>, но там тоже свои загвоздки есть. Тебе повезло, что у тебя в файле все было "одинаковой" структуры.
Например, в bmp-файле тебе надо будет считать два разных по размеру хедера и сами данные, а >> если и справится с такой хуйней, то с бубном - я только через ifstream::read() как раз делал.
А это, как понимаешь, не единственный вид потоков в плюсах.

И нет, в джаве такого нет, не парься.
Аноним 12/03/19 Втр 07:38:57 1362848433
>>1362441
>спрашивать совета по проге с первых страниц Шилдта
>на дваче
>полагать, что не дебил
Аноним 12/03/19 Втр 08:40:16 1362861434
>>1362848
>книга по изучению языка
>всё равно читать жопой и не понимать
>идти на двач спрашивать
>встречайте новое поколение программистов
Аноним 12/03/19 Втр 12:36:19 1362924435
Что нужно делать чтобы стать хорошим уметь писать сложные алгоритмы программистом на плюсах? Пол года всё свободное время трачу на изучение программирования и с каждым этапом понимаю что этапов становиться только больше
Аноним 12/03/19 Втр 13:15:04 1362935436
>>1362924
Писать код. Ничего более. Опционально - смотреть всякие сипипиконы
Аноним 12/03/19 Втр 13:31:28 1362942437
Поясните, зачем нужен указатель на функцию? так и не нашел практического применения для него, это для дедов?
Аноним 12/03/19 Втр 13:41:45 1362946438
>>1362942
как минимум предикаты для алгоритмов. И всякая функциональная параша вдогонку.

даже в сишечке это использовалось в qsort.
Аноним 12/03/19 Втр 13:45:52 1362947439
>>1362942
Использовалось для колбеков, сейчас завезли функциональные объекты и т.п.
Аноним 12/03/19 Втр 15:01:30 1362991440
>>1362942
Чтобы не писать на хаскеле.
Аноним 12/03/19 Втр 15:58:09 1363010441
>>1362942
в си необходимейшая вещь
системы компонентного программирования (com, gtk), вообще любой интерфейс к сложной либе основывается на комбинации структур и указателей на функции
небходимы для параметризации поведения (не данных), необходимы для ручной реализации динамического полиморфизма, вообще для эмуляции элементов ооп и функциональных парадигм
Аноним 12/03/19 Втр 16:01:28 1363013442
>>1363010
плюс механизм dynamic loading библиотек основывается на получении адресов функций из библиотеки и вызов их по указателю..
да много чего еще..
вообще любая сложная система сделанная на си, будет состоять по итогу из мешанины макросов, структурок и указателей на функции..
Аноним 12/03/19 Втр 17:43:51 1363062443
Свидетели Qt,у меня есть большое изображение, которое ресайзится под размер окна и выводится в Qlabel,нужно на нём отметить прямоугольник по двум точкам, как можно попроще соотнести клик мыши и координаты оригинального изображения?ну или мб есть другие варианты
Аноним 12/03/19 Втр 19:54:33 1363113444
image.png (5Кб, 414x40)
414x40
Всегда мучил вопрос, почему в плюсах такие бешеные названия переменных? нахуя столько ________suka_______
Аноним 12/03/19 Втр 19:59:05 1363115445
>>1363113
Чтобы случайно не было конфликта имён с твоим именем suka. Очевидно же
Аноним 12/03/19 Втр 20:00:40 1363117446
>>1363115
ебануться, а более умного ничего не могли придумать? У меня так одногрупник на 1 курсе имена переменных давал
Аноним 12/03/19 Втр 20:05:08 1363120447
Ананасы, в проекте есть куча флагов компиляции. Можно как-то намекнуть системе сборки ебаный qmake, но можно быстро склепать под cmake, чтобы при указании мной каких-то конкретных флагов пересоберались только те файлы, которые должны поменяться? А то ждать по полтора часа, пока проект пересоберётся немного надоело
Аноним 12/03/19 Втр 20:06:16 1363121448
Скорее всего тупой вопрос. Есть ли в C++ генератор псевдослучайных чисел, который мог бы мгновенно переключать seed, а не через секунду? Стандарт точно старше 11.
Аноним 12/03/19 Втр 20:06:43 1363122449
>>1363117
Ну, неймспейсы есть, и даже используются, однако так всё равно делают.
Аноним 12/03/19 Втр 20:06:51 1363123450
Аноним 12/03/19 Втр 20:08:47 1363125451
Sc--1.png (5Кб, 310x236)
310x236
В чём разница между объявлениями?
Аноним 12/03/19 Втр 20:20:30 1363130452
>>1363121
Ладно, скажу проще. Мне нужно равномерное распределение по заданному диапазону целых чисел.
Аноним 12/03/19 Втр 20:27:26 1363133453
Аноним 12/03/19 Втр 20:27:57 1363134454
>>1363125
На интуитивном уровне могу сказать, что в первом случае у тебя есть шаблонный конструктор, который принимает ссылку на объект Ui<T>, где T может не совпадать с типом T у объекта, у которого вызван конструктор копирования (есть небольшие сомнения, что компилятор пропустит такой трюк). Во втором случае это обычный конструктор, принимающий ссылку на объект Ui<T>, где T такой же тип, как у класса объекта, у которого вызывается конструктор

Мог сказать полную хуйню, пусть более умные аноны поправят
Аноним 12/03/19 Втр 20:33:13 1363135455
>>1363133
>since C++11
Ладно, попробую. Вдруг я ошибаюсь.
Аноним 12/03/19 Втр 20:41:18 1363141456
>>1363062
aspect_x = ScreenWidth / ImageWith
aspect_y = ScreenHeight / ImageHeight

Умножаешь х и y на координаты мыши
Аноним 12/03/19 Втр 20:46:51 1363144457
Помогите нуфагу
Поля класса нужно указывать в .h файле, верно?
Аноним 12/03/19 Втр 21:00:13 1363150458
>>1363144
Можно в любом месте, у тебя вообще может не быть хидеров.
Аноним 12/03/19 Втр 21:07:08 1363155459
>>1363133
Оба варианта компилируются. Но по примеру понял, что шаблон для конструктора копирования даёт возможность копировать объекты разных типов, а без шаблона нужно только точное соответствие.
Аноним 12/03/19 Втр 22:05:47 1363183460
Как получить относительный путь к файлу когда компилируешь приложение на Qt? Нужно сохранить иконки, но при запуске на другом компьютере картинок и иконок нет. В инете загуглил как вопрос, нашёл только способ получить относительный путь из абсолютного, а как быть когда при запуске уже должен быть получен относительный?
Аноним 12/03/19 Втр 22:23:56 1363185461
>>1363155
>шаблон для конструктора копирования даёт возможность копировать объекты разных типов
тут есть несколько тонких моментов - как минимум, этот шаблон НЕ отменяет того что сгенерится и конструктор по умолчанию
НО при этом этот шаблон будет обеспечивать более лучшее соответствие чем неявно сгенерированный конструктор
при этом есть различные техники (считай трюки), улучшающиеся от стардарта к стандарту, как это поведение обойти, щас делают через стандартизированный enable_if уже
то же касается и перегруженных операторов для копирования или перемещения

Аноним 12/03/19 Втр 22:25:52 1363187462
>>1363185
алсо в будущем потобное можно будет делать через концепты
Аноним 12/03/19 Втр 23:49:17 1363226463
>>1362798
>>1362792
Ознакомившись с книгой вынужден констатировать, что она - лютое говно и куда больше запутывает и все упрощает, чем объясняет. Нахуй такие.
Аноним 13/03/19 Срд 03:36:23 1363268464
>>1362942
10/10 супер-дебильный вопрос.
Начнем с того, что в программировании не существует функций, это математическая абстракция, а пока еще не изобрели математических процессоров, так что функций у тебя нет, это фикция от дебилов для дебилов.
А есть в программировании только подпрограммы(процедуры), но это тоже фикция, а реально есть только код - портянка инструкций сверху-вниз и переходы goto. Так вот, подпрограмма это всего лишь кусок кода на который делается goto, а в конце его делается goto обратно откуда был первый goto.

Как работает goto? Ты пишешь goto <АДРЕС>, то есть указатель на целевой код, куда перейти.

Теперь к практике. У тебя есть подпрограмма которую дебилы называют функцией moya_func(). Как ты собираешься её вызвать (передать на неё управление) без её адреса, дебил ёбаный? Куда переходить собрался, петухан?
Для вызова ты печатаешь в коде: moya_func(); это лишь ебанутая запись goto moya_func; понял, чепушило дегроидное? Где, очевидно, то что стоит после goto, то есть "moya_func", это и есть адрес подпрограммы (указатель на неё).

Теперь прямо к вопросу. В обычной жизни явные указатели нужны для работы с DLL.
moya_func = 0;
LoadLibrary("moya_biblioteka.dll");
moya_func = GetProcAddress("moya_func");
moya_func(); // ура, я вызвал функцию!
Чтобы использовать дллки, ты ищешь адреса подпрограмм по их имени и присваиваешь переменной-указателю, чтобы через него их вызывать. Заметь, что написано GetProcAddress, а не GetFuncAddress. Сразу видно писали программисты, а не дебилы-макаки матяматические как ты.

Ну и еще банально указатели используются чтобы подменять чужие функции на свои. Например, мне нужно в полноэкранной игре выводить на экран сообщения, для этого:
1. ищу адрес функции DirectX и сохраняю в указателе
2. подменяю на указатель своей функции, так что вместо оригинала вызывается моя
3. в конце своей функции вызываю оригинальную по сохраненному указателю.


Аноним 13/03/19 Срд 03:44:12 1363269465
>>1363268
> Ну и еще банально указатели используются чтобы подменять чужие функции на свои.
Вообще-то это делается по-другому. Пишется библиотека с такой же таблицей экспорта и названием как у оригинальной, которая кидается в каталок с программой. Все функции кроме нужных переадресуются сразу в оригинальную, а в остальных делаешь что хочешь. Винда загружает в первую очередь твою библиотеку и таким образом всё работает. Конечно, можно внутри приложения с этим бороться, но никто не заморачивается.

А патчить само приложение куда сложнее. Поскольку это требуется при каждом обновлении и всякие anti-tamper защиты могут это сделать практически невозможным.
Аноним 13/03/19 Срд 12:02:50 1363355466
wallhaven-456443.jpg (442Кб, 1920x1080)
1920x1080
>>1358809 (OP)
Хеловорлдщик врывается itt. И у меня к вам вопрос, как вы изучали плюсы? Как был построен процесс вашего обучения? Я вот к примеру нашел вроде бы годную книгу, читаю её, выписываю основные положения в тетрадь, тестирую понятое писанием своих хелловорлдов. Но далее наткнулся на сильное усложнение книги, когда мне дают просто новые понятия и определения не давая при этом примеров использования, и так может продолжаться на протяжении 10-20 страниц, и выходит что изучать язык приходится уже как-то абстрактно, не понимая для чего эти знания нужны и как их конспектировать нет ну я конечно все равно разбираюсь, но процесс идет сложнее. Как было у вас? Как вы постепенно повышали уровень сложности сохраняя при этом понимание пройденного материала?
Аноним 13/03/19 Срд 12:26:24 1363371467
>>1363355
у тебя безумное количество материала в интернете. Что-то не понимаешь - гугли тему, пока не поймешь.
Аноним 13/03/19 Срд 12:32:45 1363374468
>>1363371
Это понятно, вопрос в системности, типа от простого к сложному, а не так, что сначала учишь А, потом Щ, потом Ъ, а потом глаголы. И где-то на 537 странице тебе показывают что из букв складываются слова. Поэтому и хотелось узнать как учили те, кто уже работает теперь.
Аноним 13/03/19 Срд 13:08:13 1363391469
Аноны, я тут спрашивал про сериализатор в 82 треде, написал уже. Но ситуация такая: сериализация происходит при выходе из приложения, но если оно будет завершено аварийно пека потухнет там, или пользователь процесс завершит то что делать в таком случае?
Аноним 13/03/19 Срд 13:23:51 1363399470
>>1363374
я освоил азы уровня классов\указателей, потом писал всякое говно, пока в голове не появилась мысль о том, что я действительно понимаю, чт оделаю
Аноним 13/03/19 Срд 13:24:25 1363400471
>>1363391
Если питание пеки выключается, то сериализации не будет. Дизайн говно.
Аноним 13/03/19 Срд 13:27:13 1363402472
>>1363400
Я про это и спрашиваю. Как исправить?
Аноним 13/03/19 Срд 13:29:58 1363403473
>>1363402
Сериализовать в другой момент времени?
Или, допустим, делать как микрософт, который в скрытый файл автосохраняет некие промежуточные копии, и потом он их видит и предлагает восстановить
Аноним 13/03/19 Срд 13:48:02 1363404474
>>1363355
Привыкай гуглить непонятное, нуб.
Аноним 13/03/19 Срд 14:00:24 1363406475
>>1363404
ой ну спасибо блядь, а то я сам не догадался бы, а на каком сайте гуглить не подскажешь?
Да инфы и в самой книге предостаточно, вопрос был не в этом. Скорее нет задач на примере которых можно было бы постепенно использовать знания, потому и спрашиваю как этот процесс шел у вас.
Аноним 13/03/19 Срд 14:01:50 1363408476
>>1363355
>Как вы постепенно повышали уровень сложности сохраняя при этом понимание пройденного материала?
Никак. Я в детстве читал учебник по физике, не понимая формул - я пропускал формулы. Потом, будучи уже подростком, я так читал Кнута - формулы, конечно, я понимал, но не пятиэтажные интегралы и тем более не программы на его варианте ассемблера. Я читал то, что было интересно, не особо заморачиваясь такой вещью, как 100% понимание.
Апофеоза это достигло при обучении в бауманке, когда вся информация по тому, как сделать домашку - это методичка на 30 страниц, напечатанная в 1986-м году, а сдать его нужно завтра, потому что семестр ты ебланил.

С чего ты вообще взял, что при обучении можно избежать стресса непонимания и существует какая-то системность, которая неизбежно приведет тебя к успеху? На самом деле только во время такого стресса и обучаешься. Много стресса, много эмоций - есть эффект. А то, что ты описываешь, годится для того, чтобы стать кассиром в сбербанке.
Аноним 13/03/19 Срд 14:01:50 1363409477
>>1363406
Я лично читал книги чтобы получить знания, но естественно на 100% ты весь материал не запомнишь. В основном чтобы хранить в голове возможность чего-то, а при надобности гуглить и изучать более подробно и вклинивать в проект. Заучивать каждый пример из книги наизусть я смысла не вижу.
мимо
Аноним 13/03/19 Срд 14:09:27 1363414478
изображение.png (1111Кб, 960x640)
960x640
Аноним 13/03/19 Срд 15:44:10 1363473479
>>1363268
>GetProcAddress
Мдемс, сейчас бы юзать функции маломягких вместо того чтобы реализовывать их самому.
Аноним 13/03/19 Срд 16:24:46 1363504480
Не знает ли тут кто алгоритма вычисления солнечного света в minetest?
Специально копал глубокую дырку от поверхности, чтобы сверху чанки точно точно выгрузились. Но даже после перезагрузки игра определяла, что в этой дырке есть солнечный свет.
Аноним 13/03/19 Срд 16:31:39 1363508481
>>1363473
написание pe loader'ов было развлечением мамкиных хакиров в бородатые девяностые
хотя скорее всего ты вообще не понимает того о чем спизданул
Аноним 13/03/19 Срд 17:02:39 1363527482
15522981944001.jpg (65Кб, 256x256)
256x256
Хочу написать игру на С++. Какие есть годные движки? Хочу сделать игру, чтобы она была чисто одним ехе-шником и весила не больше 32 кбайт Чисто челенж, для себя . Какие лучше библиотеки использовать и как добиться того, чтобы все в одном ехешнике было? Наверное нужно компилировать исходные файлы графических библиотек вместе с игрой? Причем уже писал игру, довольно большую на SFML, но может есть что по интереснее? Например 3д движок какой-нибудь?
Аноним 13/03/19 Срд 17:18:45 1363533483
>>1363527
>движки
>чтобы она была чисто одним ехе-шником и весила не больше 32 кбайт

вут

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

так вот без движков ее исходник уже 130 килобайт
Аноним 13/03/19 Срд 17:24:09 1363536484
Ну вся твоя простыня сводится к тому, что:
> ТЫ ТУПОЙ? ВОТ ТАМ ПРОЦЕДУРЫ, ПОТОМУ ЧТО: GetProcAddress, а не GetFuncAddress
И сам даже не углубился в детали реализации, рофел. Схуяли тебе Васян поверить должен? Может у него даже не винда? Как функция то работает, М?
Аноним 13/03/19 Срд 17:24:29 1363538485
Аноним 13/03/19 Срд 17:26:00 1363539486
Стикер (0Кб, 512x512)
512x512
>>1363527
>Сап двач хочу игру чтоб весила не больше 32 кбайт
>Какие лучше библиотеки использовать
Аноним 13/03/19 Срд 17:26:01 1363540487
>>1363527
Движков под такие размеры нет, даже какие-то полноценные библиотеки не подойдут. Такое - это самописный рендер (даже opengl не засунешь в эти размеры) и контент процедурно генерирующийся.
Аноним 13/03/19 Срд 17:32:04 1363543488
>>1363527
Есть целая игра на 64кб вроде бы. Загугли, она целиком на асме.
Аноним 13/03/19 Срд 17:32:51 1363545489
>>1363540
Вулкан меньше весить должен
Аноним 13/03/19 Срд 17:36:14 1363547490
>>1363540
>>1363539
>>1363533
Я просто это https://www.youtube.com/watch?v=OJPrBzBgUoE видео посмотрел и мне стало очень интересно, как они это вместили в 32 килобайта. Ладно, походу чтобы такое сделать, надо совсем про быть. А что тогда для программирования игр на с++ годного есть? И что вообще нужно иметь для начала.
Аноним 13/03/19 Срд 17:44:12 1363557491
>>1363547
Если на плюсах и из движков: Unreal Engine, Urho3D - 3D; Oxygine - 2D. Или взять библиотеку и на основе ее добавить функционал, для простых игрушек и для начала вкатывания - лучший вариант. Например, SDL2.
>>1363543
классика демосцены - kkrieger?
Аноним 13/03/19 Срд 17:45:33 1363558492
Аноним 13/03/19 Срд 17:54:31 1363565493
>>1363527
Обосрался с тебя. Ты сначала хеллоуворлд напиши в 1кб хотя бы, потом поговорим.
Аноним 13/03/19 Срд 18:07:49 1363568494
>>1363527
>SFML
1.5 обёртки над OpenGL без функционала, ееее
>>1363557
Без низкоуровневых знаний пилить на движках нормально не выйдет.
Аноним 13/03/19 Срд 18:16:02 1363573495
>>1363568
>Без низкоуровневых знаний пилить на движках нормально не выйдет
Что именно нужно знать? Битовые операции? Работа с указателями? Что нужно знать, чтобы НОРМАЛЬНО запилить игру на движке?
Аноним 13/03/19 Срд 18:54:51 1363596496
>>1363527
>Хочу написать игру на С++
ты не первый и ты не последний
Аноним 13/03/19 Срд 19:02:34 1363601497
Бля, хули в плюсах такие низкие зп? Горит от того, что каждый второй смузихлебный JS-прогер или java-макакен получает процентов на 30 больше. Про всякие новые языки вообще молчу.
Аноним 13/03/19 Срд 19:25:20 1363605498
>>1363573

Умение применять низкоуровневые операции в большой базе кода сообразно архитектуре
Аноним 13/03/19 Срд 19:43:37 1363608499
image.png (27Кб, 900x449)
900x449
Я знаю тут есть пара анонов которые знают Qt. Помогите разобраться с темой компилирования на андроид: почему не появился пакет для android for armeabi-v7a? Ставил всё по гайду, эмулятор для armeabi работает, но самого пакета нет для откладки/релиза нет.
Аноним 13/03/19 Срд 20:09:15 1363620500
>>1363402
Все равно ты максимально себя не обезопасишь.
Если ты будешь срать и умрешь без агонии ты не досрешь.
Разве что ты можешь использовать инициализацию через new, чтобы твоя ссылка висела в оперативе даже после аварийного завершения программы, а при запуске программы отслеживать предыдущее падение и искать в оперативе нужный участок памяти.
Напишешь сборщик мусора для плюсов как раз.
Заодно, если я неправильно понял последствия забывания delete, аноны меня поправят и обоссут и я об этом узнаю.
Аноним 13/03/19 Срд 20:11:36 1363621501
>>1363620
Да я скорее сделаю так как анон выше рекомендовал. Поудобнее кажется
Аноним 13/03/19 Срд 20:17:21 1363622502
>>1363621
Ты слишком буквально воспринял.
Смысл в том, что реализация качественной защиты от такой хуйни - это задача не для вкатывальщика.
Т.е. ты можешь сделать промежуточную копию создание которой может упасть, значит надо создать ранее ещё одну копию, а ее создание может упасть, значит..., но оцени затраты на обдумывание, написание кода, хранение копий, операцию восстановления - и вероятность падения.
Тебе точно есть смысл это делать или ты так, ради тренировки?
Аноним 13/03/19 Срд 20:19:28 1363623503
>>1363620
> я неправильно понял последствия забывания delete
Неправильно понял. Система всё равно всё очистит при крэше. Некоторые вообще при закрытии программы ничего не очищают и вызывают exit(0), чтоб закрылось быстрее.

Как вариант можно насрать в shared memory и запустить дополнительный сервис-процесс, который не будет давать системе очистить её.
Аноним 13/03/19 Срд 20:22:34 1363625504
>>1363622
Скорее для себя, просто пилю прикладные приложения для личных нужд, может паре друзей скину. В любом случае практика полезна будет
Аноним 13/03/19 Срд 20:28:43 1363626505
>>1363391
Если шнур из пеки вынут, то ничего не поможет. Если пеку решили перезагрузить/выключить, тормози событие, выполняй что тебе там надо, потом выключай/перезагружай.
Аноним 13/03/19 Срд 21:37:53 1363663506
>>1363504
Если я не наебываюсь, то в кубаче чанк это колонна 16х16 во всю высоту мира. И прогружается соответственно только полностью.
Аноним 13/03/19 Срд 21:38:47 1363665507
>>1363601
>на 30 больше
фронт в два раза больше вообще то в среднем зарабатывает
но объяснение этому очень простое и не обидное
Аноним 13/03/19 Срд 21:45:58 1363670508
>>1363663
Меня minecraft не интересует, там-то все элементарно.
Аноним 13/03/19 Срд 21:48:09 1363672509
Аноним 13/03/19 Срд 22:00:12 1363680510
>>1363672
Более квалифицированная работа оплачивается выше.
Аноним 13/03/19 Срд 23:43:02 1363896511
>>1363680
Т.е. передний конец сложнее в изучении чем плюсы?
мимоновый
Аноним 13/03/19 Срд 23:47:07 1363899512
изображение.png (22Кб, 581x526)
581x526
Как передать файл в функцию в качестве параметра?
Аноним 14/03/19 Чтв 00:03:30 1363902513
>>1363899
сделай i/ofstream наподобие того как ты сделол mnr или m1 или m1bin и передовай. ты явно вместо ifstream/ofstream передаешь строковые литералы
Аноним 14/03/19 Чтв 00:06:25 1363904514
>>1363899
Ну так ты и передавай файл, а не строку.
Аноним 14/03/19 Чтв 00:07:46 1363906515
изображение.png (31Кб, 752x635)
752x635
>>1363902
>>1363904
Вот так? А как сделать бинарный режим не прописывая названия файлов в функции? Можете написать для меня?
Аноним 14/03/19 Чтв 00:09:52 1363909516
>>1363904
А ведь если бы у стримов был не-explicit конструктор из строкового литерала, он бы так и не понял, в чем проебался...
Аноним 14/03/19 Чтв 00:10:10 1363910517
>>1363391
>Но ситуация такая: сериализация происходит при выходе из приложения, но если оно будет завершено аварийно пека потухнет там, или пользователь процесс завершит то что делать в таком случае?
Старый тред не читал, но ты можешь сделать так: периодически делать сериализацию всей ебалы (снапшот), и дополнительно каждое обновление ебалы тоже сериализовать перед применением (патчи). После этого если видишь снапшот и патчи, то загружаешь снапшот и применяешь патчи, получаешь ебалу.
Аноним 14/03/19 Чтв 03:52:23 1363937518
изображение.png (28Кб, 688x620)
688x620
Аноним 14/03/19 Чтв 03:53:11 1363938519
изображение.png (1Кб, 339x16)
339x16
Двощ, учу плюсы в шараге, сейчас копался в гугле, и вдруг впервые в жизни наткнулся на запись пикрил, причем два раза подряд, что это такое нахуй? Фигурные скобки, ну и вот эта u после цифоры.
Аноним 14/03/19 Чтв 03:57:58 1363939520
Аноним 14/03/19 Чтв 04:11:47 1363941521
Аноним 14/03/19 Чтв 04:40:58 1363945522
>>1363939
> list initialization
Нихуя. Это uniform initialization. Там коллекции нет, string::size_type - числовой тип, которых хранит длину строки.
Аноним 14/03/19 Чтв 04:58:04 1363948523
Аноним 14/03/19 Чтв 04:59:46 1363949524
1478508007969.png (3Кб, 436x70)
436x70
>>1363945
Теперь я знаю как пидорасов детектировать.
Аноним 14/03/19 Чтв 05:03:07 1363950525
>>1363948
Даже по твоей ссылке на cppreference рассматривается только инициализация с использованием initializer_list. Разрабы C++11 мощно наложили себе говна в штаны сделав для них одинаковый синтаксис из-за чего не всегда понятно что подобная инициализация делает (и даже как называется, лол). Короче хотели сделать как лучше, а получился C++ way. Хорошо ещё пачку UB при использовании не добавили в стандарт, они любят это делать.
Аноним 14/03/19 Чтв 05:04:54 1363951526
>>1363950
> Даже по твоей ссылке на cppreference рассматривается только инициализация с использованием initializer_list.
Хотя нет, вру. Там рассматривается и то, и другое. Я просто книгу мейерса читал, где он этой хуйне пару глав посвятил.
Аноним 14/03/19 Чтв 05:09:05 1363952527
image.png (93Кб, 875x438)
875x438
>>1363950
ну, страуструп называет её universal and uniform.

впрочем, униформной такая инициализация называется даже когда там не одно значение в скобках, так что точно можно утверждать, что неверно было бы говорить, что когда одно значение - униформ, а когда несколько - лист.
Аноним 14/03/19 Чтв 10:13:04 1364005528
>>1363952
Ты сильно удивишься, если сказать, что list initialization может быть при одном аргументе, а этот самый value-type - при нескольких?

Это не от количества аргументов зависит, а от перегрузки, выбранной компилятором.
Например:
int x = 5;
std::vector<int> vec1{x}; создаст вектор размером x.
std::vector<int> vec2{{x}}; создаст вектор из одного элемента - из x. Потому что есть конструктор, который принимает на вход initializer_list, а отдельно от объявления, {x} - это он и есть.
Однако, наблюдал странную штуку:
unsigned int y = 5;
std::vector<char> vec3{y};
- даже не компилируется, потому что выбирается конструктор, создающий вектор из списка инициализации и получаешь ошибку о несоответствии типов. А должен выбираться конструктор, создающий вектор из y элементов.

За несколько аргументов и не initialiser_list:
Один из вариантов исправить пример выше:
std::vector<char> vec4{y, '\0'};
Теперь выберется нужный конструктор.
Ну или что-то вроде
std::pair<int, int> p1{1, 2};
Аноним 14/03/19 Чтв 12:39:55 1364080529
>>1359037
Сложных вещей в принципе нет если самому в них специально не вляпываться при проектировании

А так:
Указатели, указатели на указатели
Rvalue ссылки
Компиляторы каждый со своей кухней и поведением

Кресты, не хипстерский язык и лучше всего изучать с каким-нибудь преподом желательно из вуза (сначала си а потом уже ооп), который все непонятные моменты объяснит на пальцах, иначе половину хитрых вещей не поймешь или будешь делать по хреновым примерам из интернета.
Аноним 14/03/19 Чтв 14:21:27 1364134530
>>1358809 (OP)
Подскажите какую-нибудь относительно удобную библиотеку для работы с MS SQL Server из C++/GCC под никсами?
Аноним 14/03/19 Чтв 14:38:58 1364141531
>>1363547
о! вот и gamedev.ru подвезли! двач становится всё интереснее и интереснее.
сидел на оном сайте несколько лет с момента его открытия в 2002
Аноним 14/03/19 Чтв 14:55:02 1364144532
>>1364141
>сидел на оном сайте несколько лет
А что тебя вынудило съебнуть оттудова?
Аноним 14/03/19 Чтв 16:18:58 1364206533
>>1364144
интересы изменились. пока был пацаном, всё это штырило. а как работать пошёл программером (и не в геймдев), так другие вещи начали меня заботить, помимо игр. особенно если учитывать, что я для себя выяснил что игры-то не особо доходная работа для программера, и кранчей много.
Аноним 14/03/19 Чтв 16:24:45 1364210534
>>1364206
но по прежнему считаю, что 3D графика - это клёво и интересно.
в миллион раз интереснее всех этих блядских вебов, сетей, формошлёпства, и прочего говна.
что с ней может сравниться по интересности - это разработка компиляторов, функциональное программирование.
ещё заходит всякий системный софт, драйвера, программирование для не-x86 систем, микроконтроллеры, вот это вот взаимодействие с электроникой.
интересно было бы ещё наверное ваять бортовой софт каких-нибудь самолётов/подлодок/космических кораблей и спутников/ракет. и прочая оборонка.
вот да - кто-нить здесь на нёё работает? как там?
Аноним 14/03/19 Чтв 16:29:04 1364214535
>>1364210
ещё говно, которое я терпеть не могу - вся эта сраная реклама, банковский софт, базы данных, тупой софт вроде MSOffice.

интересно ещё робототехника, embedded, какой-нибудь научный софт, операционки.
Аноним 14/03/19 Чтв 16:32:25 1364218536
>>1363527
Повеяло старыми добрыми временами, и демками на 64К под DOS
Аноним 14/03/19 Чтв 16:35:03 1364221537
>>1364218
Они ещё там свой код UPX-ом (кажется) сжимали. И вообще, как только они не извращались. И самомодифицирующийся код юзали, и на ассемблере кодили, и процедурную генерацию сцены. И то - это демки были, а не игры.
Аноним 14/03/19 Чтв 17:41:51 1364275538
>>1364221
>код UPX-ом (кажется) сжимали
Говно ебаное, сразу определяет петухов. "Экономить" каплю места на диске в ущерб ОЗУ и производительности это типичный современный подход, когда проги жрут гигабайты и тормозят как чушки просто так от нихуя.
Аноним 14/03/19 Чтв 17:47:21 1364278539
https://pastebin.com/Nh2swRfN
нужно умножить матрицы параллельно,но что то не получается.Я вообще правильно все делаю?
Аноним 14/03/19 Чтв 18:52:55 1364317540
>>1363938
> вот эта u после цифоры.
Просто интересно, какой курс?
Аноним 14/03/19 Чтв 22:12:45 1364464541
>>1364275
Ты хоть знаешь как это работает? Где ты там увидел ущерб ОЗУ и производительности? После распаковки, программа работает абсолютно также, как если бы она не была упакована изначально.
Аноним 14/03/19 Чтв 23:25:43 1364506542
>>1363672
За всё платит бизнес и красивая UIшка ему зачастую важнее. Контор, где пишут на веб параше в разы больше, чем контор, пишущих на плюсах и чтобы оставаться конкурентно способными, им приходится как-то привлекать хороших специалистов, иначе те свалят в соседний офис. Поэтому там такие раздутые зарплаты. А ты с плюсами сам будешь стучаться и просить взять тебя хоть за еду.

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

Такие вот дела
мимо плюсовик, работающий за 20к
Аноним 14/03/19 Чтв 23:27:19 1364507543
>>1363408
> сдать его нужно завтра, потому что семестр ты ебланил
Блядь, так "завтра" - это же вагон времени. Всё намного печальнее, когда сдать надо вчера
Аноним 14/03/19 Чтв 23:30:25 1364510544
>>1364506
>работающий за 20к
Где, чем занимаешься? Полы моешь?
Аноним 15/03/19 Птн 00:22:58 1364527545
>>1364464
Это анон, судя по всему, ещё и не знает, что такое демо, иначе бы такую глупость не сказал.
Аноним 15/03/19 Птн 03:32:54 1364565546
>>1364278
Все неправильно делаешь, используй вектор векторов для представления матрицы, изучи, как правильно сконструировать std::thread и напиши код так, чтобы у тебя не было race-ов по данным (я вижу там, как минимум, один)
Аноним 15/03/19 Птн 05:53:27 1364574547
>>1364218
Хочу рассказать всем собравшимся, что 64К это не случайная цифра, а проистекает она, как я помню, из-за того что это максимальный размер .com файла в DOS. Ровно один сегмент в 16-битном реальном режиме x86 процессора. Этот .com файл грузится в память, в один сегмент, и запускается. Вот и всё. Предельно просто. Код программы может делать с компьютером абсолютно что угодно, никакой защиты памяти, ограждения от взаимодействия с оборудованием нету. Такие вот времена тогда были.
Можно натворить всё что хочешь. Можно ещё, например, оставить свой код и данные резидентными в памяти после выхода из проги, и заодно переопределить несколько прерываний. Можно вообще, переключить проц в защищённый режим, можно вынести всё что есть на компе в памяти, и установить свои порядки. Ща такого не найти.
Аноним 15/03/19 Птн 05:54:33 1364576548
Аноним 15/03/19 Птн 07:02:40 1364584549
Аноним 15/03/19 Птн 10:21:04 1364617550
>>1364576
Ты считаешь, что на 20k можно жировать?
Аноним 15/03/19 Птн 10:35:45 1364625551
Можно ли как-нибудь в range-based лупах сразу получить атрибут объекта? Допустим. у меня список структур, и сами структуры мне не нужны, мне нужно лишь пробежаться по одному атрибуту каждой из этих структур?

т.е. уместить
for (const auto& elem : vec){
int value = elem.value
}
Внутри for().
Аноним 15/03/19 Птн 11:56:52 1364652552
>>1364617
Жирно, ака Толсто, ака Ты толстый тролль
Аноним 15/03/19 Птн 15:16:36 1364726553
>>1364527
а я в нулевые следил за сценой какое то время, скачивал, запускал, интересно было
но следует сказать что узнал я об этом почитывая первые выпуски журнала хакер
так чтож считай что был как ньюфаг с лурочки, лол
оттудаже узнал и про всякий net-art, в том числе и ascii

Аноним 15/03/19 Птн 15:32:52 1364736554
изображение.png (490Кб, 720x720)
720x720
>>1358809 (OP)
Пиздос, короче:
1. Либо перекатываться на винду, ставить анриал и шататься в сторону геймдева. Во всяком случае учить язык на его фоне.
2. Либо остаться на линуксе чтобы привыкать одновременно и к нему, и шататься в сторону энтерпрайза.
Первый вариант по душе лично мне, тем более что владею графическим софтом, которого попросту нет на линуксе.
Второй вариант кажется более реальным с точки зрения востребованности и ежедневного последующего пиздоса.
У меня паника от неопределенности.
Аноним 15/03/19 Птн 16:17:32 1364763555
>>1364736
Выбирай то, к чему душа лежит.
УЕ4 можно и на лине завести.
Аноним 15/03/19 Птн 16:57:15 1364779556
>>1364763
Завести-то можно, но она там в стадии разработки, да и все остальное там явно к графону не располагает
Аноним 15/03/19 Птн 18:16:24 1364831557
>>1364625
Сделать класс-wrapper над вектором, у которого есть функции begin и end (range-based for их вызывает), сделать, чтобы они возвращали специальные итераторы, которые разыменуются не в элемент вектора, а в атрибут этого элемента.
Но по мне так этот геморрой нафиг нужен, твой range-based и так достаточно читабельный, еще короче вряд ли получится сделать
Аноним 15/03/19 Птн 19:09:31 1364866558
Ищу анона из nvidia 320к. Хочу ама набираться. Не троллинг.
Аноним 15/03/19 Птн 19:10:54 1364867559
Аноним 15/03/19 Птн 19:13:26 1364869560
>>1364866
Как поднять бабла, витя?
Аноним 15/03/19 Птн 19:15:39 1364874561
Аноним 15/03/19 Птн 21:51:43 1364965562
>>1364779
Еще два года назад собирал и писал под ним, ничего не мешало,ты, видимо, плохой танцор.
Аноним 15/03/19 Птн 22:43:03 1365005563
>>1364965
Просто видел в инете что там какие-то траблы бывают, сам даже не ставил, но для меня как раз принципиальнее именно отсутствие графического софта и о замене блендером и гимпом можно говорить только в том случае если ты уже начал как-то выкручиваться в этих двух прогах изначально, не зная на что себя обрекаешь, либо если у человека вообще не было опыта работы с графикой, это я так к слову
Аноним 16/03/19 Суб 11:13:28 1365261564
>>1365005
Еще и blender тебе не угодил, самая популярная сейчас прога в области моделирования.
Уже пару лет на уече делаем под линем, никаких траблов команда не заметила, багов каких-то конечный продукт тоже не выдавал.
Аноним 16/03/19 Суб 11:18:38 1365265565
не бейте, лучше обоссыте. начала учить ваш c++, пока что остановилась на указателях. сколько мне лет еще это учить, чтобы стать тру кулхацкером программистом? приземлите кто-нибудь меня, мне кажется, что у меня нет будущего
Аноним 16/03/19 Суб 12:06:33 1365284566
>>1365261
Да вот по сути ты и говоришь то, о чем я говорил, процесс в моем случае выглядит так Открыл макс > накидал болванку > оптимизировал плагином > закинул в зебру > вывел и запек икснормалом > оттекстурировал сабстанс пейнтером > внес правки в текстуру > открыл фотошоп > плагины на плагинах, плагины позволяющие видеть геймтекстуры реалтаймово. И вот после такого пересесть на линукс и начать графонить ну как-то может быть не очень удобно, особенно если тебе вдруг понадобилась какая-то прога под конкретную сиюминутную задачу. У вас же изначально весь флоу в линуксе был. Я же не спорю, что там можно, но зачем если уже освоен в винде. Да и разговор ушел не в ту сторону слишком
Аноним 16/03/19 Суб 12:47:20 1365299567
Аноним 16/03/19 Суб 13:20:43 1365328568
>>1365284
Ну если в вашей студии уже все заточено на определенные проги, то что тогда.
>> Да и разговор ушел не в ту сторону слишком
Там тебе еще вчера ответили, что бери то, что по душе.

>>1365265
Ты знаешь правила, пока даже обоссывать не будем.
Аноним 16/03/19 Суб 13:26:54 1365338569
>>1364506
мы спрашиваем move semantics, шаблоны и эксепшены на собесах.
Внезапно, все это есть у нас в коде.

Мимо-сеньор-помидор
Аноним 16/03/19 Суб 21:12:32 1365592570
Ананасы, подкиньте идеи для диплома
Чтобы было и интересно и полезно каким-то образом
Аноним 16/03/19 Суб 22:30:48 1365651571
>>1365592
Зареверси MSI Mystic Light, чтобы я мог светяшки переключать без их ебаного говнософта. Я ковырялся с их SDK, но это SDK тупо дергает их же сервис. А надо вообще без софта.
Аноним 17/03/19 Вск 10:20:58 1365894572
>>1365592
Шаблоны как универсальная модель вычислений. Зафигачь машину Тьюринга, алгорифмы Маркова и машину Поста на темплейтах, ревлизуй алгоритмы и поисследуй выразительность языка.
Аноним 17/03/19 Вск 10:26:21 1365898573
>>1365894
Ммм, stateful-шаблончики. Вот препод охуеет от такого кода.
Аноним 17/03/19 Вск 10:34:49 1365908574
>>1365894
А, и лямба-исчисление обязательно (с индексацией де Брёйна)
Аноним 17/03/19 Вск 13:54:59 1366005575
>>1364831
Использовать не собираюсь, но в качестве упражнения решил попробовать реализовать. Ты примерно это имел в виду? https://repl.it/repls/QuaintBelovedCookie
Нормально ли здесь использовать std::move? Не уверен, делает ли он хоть что-то полезное тут. Мне не хочется копировать весь вектор лишь для того, чтобы заменить итератор.

Возможно ли как-то затемплейтить желаемый атрибут, чтобы вызвать make_range(vector<S>, std::magic<S>::member<a>) и там уже нужные wrapper и итератор создались?
Попытался вот через указатель, но какие-то уж очень громоздкие темплейты получились, совсем не няшно: https://repl.it/repls/NewPessimisticLocation
Можно ли как-то сократить это (явно же чего-то лишнего там напихал)? В частности, у меня следующие вопросы:
1. Можно ли явно создавать спецификацию темплейт функции, указывая не все параметры? (Запутался я в терминах, но в первой версии я могу спокойно вызвать rangeMemberA(vector), тип вектора автоматически подхватывается, а во второй, помимо собственно S::a, мне приходится ещё и явно указывать тип вектора)
2. Темплейт указателя на мембер, я не мог написать "int typename ContainerType::value_type::❋ member", мне приходится создавать темлейт аргумент ContainerValueType (которому я передаю всё тот же CT::value_type), и тогда всё нормально создаётся через "int ContainerValueType::❋ member". Явно же это лишнее, что мне приходится передавать то, что и так уже доступно из другого аргумента. Но компилятор мне отказывает, что я не так делаю? Придать ему дефолтное значение тоже не могу, потому что он должен стоять перед Member'ом.
3. Возможно ли не указывать явно MemberType, который нужен для возвращаемого значения operator❋() у итератора? Когда был конкретный член структуры (первый вариант), легко через decltype решалось, а теперь-то я не могу в сигнатуре функции использовать decltype(ContainerValueType.❋Member).

В общем, в идеале хотелось бы получить вызов в виде rangeMember< std::magic<vector::value_type::a> >(vector).
Аноним 17/03/19 Вск 23:21:08 1366296576
Codewars хуйня или нет? Стоит тратить время на это?
Аноним 19/03/19 Втр 06:39:46 1366904577
>>1363226
после страуструпа это было как что то божественное, а так да, примеры слишком массивные, может просто на контрасте так понравилась, после страуструпа любое говно покажется охуенным
Аноним 19/03/19 Втр 06:41:08 1366905578
изображение.png (300Кб, 1920x1080)
1920x1080
>>1362845
ну дальше будет что то такого, поэтому да, нужно спросить, но сначала норм сформулировать
Аноним 19/03/19 Втр 11:04:31 1366977579
>>1366905
Так у тебя есть методичка, а ты за помощью идёшь сюда?
Тяжёлый случай.
Аноним 20/03/19 Срд 07:13:25 1367368580
>>1366977
да, тяжёлый, там написано как всё делать, а мне бы разобраться как оно работает, что значит каждый символ, и как программа понимает что куда пихать, чтобы потом я смог это делать без задней мысли, поэтому иду за помощью сюда.
Аноним 20/03/19 Срд 16:40:41 1367569581
>>1367368
>а мне бы разобраться как оно работает
Так ты тогда вопросы правильные задавай, а не "как сериализовать объект".
Аноним 21/03/19 Чтв 02:25:37 1367895582
Аноним 27/03/19 Срд 13:32:33 1370779583
https://pastebin.com/27TZRcWx

Двач, попробуй скомпилить это и запустить.

У меня почему-то выводит следующее:

The night is dark and full of terrors
The night is dark and full of terrors
The night is dark and full of terrors
The night is dark and full of terrors

The night is dark and full of terrors
The night is dark and full of terrors
The night is dark and full of terrors

Компилятор ГЦЦ
Аноним 27/03/19 Срд 15:52:03 1370842584
>>1362390
Примут в контору — быстро выбьют эту хуйню. А вообще, я в шоке как можно быть настолько безвкусным
Аноним 27/03/19 Срд 21:24:04 1371022585
>>1370779
Почему-то? У тебя <= в лупе.
Аноним 27/03/19 Срд 22:01:07 1371054586
>>1370779
ну андефайнд бихевиор на то и андефайнд?
Аноним 28/03/19 Чтв 16:49:35 1371490587
>>1370779
>почему-то
А что не так, что оно, по-твоему, должно выводить?
Аноним 28/03/19 Чтв 17:57:40 1371524588
std::unique_ptr<int> up;
std::function<void()> ff([up = std::move(up)]()mutable{});

Почему это не компилируется?
Аноним 28/03/19 Чтв 21:10:00 1371616589
>>1371524
мне кажется, что должно, потому-что лямбда это rvalue, и через стандартный мув конструктор должно уходить. Но там явно видно, что пытается сделаться копия
Аноним 28/03/19 Чтв 21:54:13 1371632590
Помогите сделать функцию делающую std::function без параметров из callable и аргументов. С перфект форвардингом, со всеми возможными кейсами. Сука, весь вечер потратил, нихуя не получилось. То с муваблами не работает, то референсы не реферянсятся.
https://ideone.com/axVrR0
Аноним 29/03/19 Птн 00:31:55 1371702591
>>1371632
ты изобрести std::bind Хочешь?
Аноним 29/03/19 Птн 05:31:56 1371736592
Вот есть функция винапи MessageBox. Как мне блять вызвать ее только со своей оболочкой? Делаю вот так:
typedef (int* MessageBox_t)(
HWND hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT uType
);
MessageBox_t MessageBox;
Но ссаный прекомпилятор мне гудит мол соси хуй REDEFINITION. СУКА, почему блять в 2019 году блять компилятор не может блять понять что я хочу использовать свою оболочку, а не стандартную?
Аноним 29/03/19 Птн 08:45:02 1371775593
>>1371702
Попробуй забиндить, например, юник переданный через move
Аноним 29/03/19 Птн 10:44:26 1371841594
>>1371775
Короче я понял, функция зачем-то должна быть copy-constructible, поэтому о перемещении можно забыть. Придется заворачивать moveable во что-то типа шаред поинтера.
Аноним 29/03/19 Птн 12:33:59 1371884595
Аноним 11/04/19 Чтв 15:21:57 1379146596
2.jpg (116Кб, 720x960)
720x960
3.jpg (230Кб, 720x960)
720x960
4.jpg (147Кб, 720x960)
720x960
5.jpg (242Кб, 720x960)
720x960
11 Вариант
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Топ тредов
Избранное