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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
2 1358859
First ITT.
3 1359014
Что лучше юзать новичку ? SFML,SDL,Qt или OpenGL ?
изображение.png93 Кб, 638x354
4 1359037
>>58809 (OP)
Понимаю что ньюфажная платина, но все же

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

Просто недавно начал его учить как первый язык. И в нескольких интервью и статьях слышал что-то типа "оказалось слишком сложно, я перешел на другой язык", но нигде не нашел инфы о том, как они вдруг осознали что вот всё - пизда. Столкнуться с чем-то сложным ведь можно где и в чём угодно, как понять что виноват язык?
5 1359043
>>59037
Разнообразие ооп хуйни и зависимостей.
Virtual pure base inline abstract class и прочее.
Также дохуя undefined behaviour и тонкостей
6 1359085
>>58809 (OP)
Вкатился. Попробовал на днях написать хеллоуворлд на С. Блять, бальзам на душу, серьезно. Нахуй весь этот пердолинг и сложности С++ , ебучий ООП, если можно писать чистый, понятный код на С? Дискасс.
youhavemythanks.jpg28 Кб, 300x300
7 1359088
Привет. Давно сюда не заходил, но подумал, что могу здесь конструктивно обсудить одну идею.

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

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

Как это можно сделать?
Самый очевидный вариант - это просто написать небольшой скрипт на питоне, который юзер будет скачивать, запускать с какими-то аргументами и скрипт будет выкачивать то, что нужно. Ну и нужно будет еще симейк как-то составлять процедурно тоже.
Кто-нибудь делал что-то подобное? Может можно сделать это как-то средствами гита?
8 1359090
>>59085

>Нахуй весь этот


Чтобы можно было писать что-то сложнее, чем

>хеллоуворлд

9 1359094
>>59037
Язык перегружен кучей всяких возможностей. Это вобщем-то замечательно. Плохо то, что нет простых общих правил пользовония этими возможностями. Почти у каждого правила есть масса особых случаев и исключений.
Ты должен либо наизусть учить все эти списки особых случаев, либо разбираешься как оно внутре устроено, чтобы понимать откуда эти исключения из правил берутся.
Первое практически за гранью человеческих возможностей; второе требует дополнительных усилий и времени.

Возьми любую энтри-левел книжку из шапки, там будет 1100+ страниц. И вот в этой тыще с лишним страниц не нашлось места, даже для такой базовой вещи, как синтаксис объявлений.
10 1359107
>>59094

>Возьми любую энтри-левел книжку из шапки


Я вот как раз учу по одной из них, и например до сих пор хуею с того, что в оригинале есть различие между Statement и Operator. А в русской оба этих понятия в любом абсолютно месте называются Оператор и Оператор.
11 1359110
>>59090
Windows на С написана же.
image.png649 Кб, 1200x699
12 1359116
13 1359119
>>59110
Только ядро.
14 1359136
>>59110
Ты можешь написать все, что угодно даже на ассемблере. Вопрос в скорости разработки и поддерживаемости. С++ в этом плане выигрывает у С.

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

Мы в виндовом кернеле пишем на С++17, без стандартной библиотеки, офк. Но, даже такой кастрированный С++ - это все равно в гигатонны раз лучше, чем С, потому-что классы\RAII, тимплиты, лямбды.
15 1359170
>>59088
Нахуя? У тебя там 8Гб исходников, чтоб было проблемой их все скачать?

А вообще cmake поддерживает всякую условную сборку. Можно заготовить симейк со всеми модулями и немного попердолиться с аргументами.
16 1359172
>>59014
boost hana
17 1359180
Ньюфаг вкатился. Почему reinterpret_cast<yoba>(value), а не просто (yoba)value?
18 1359221
>>59136
а не пробовали кастомные аллокаторы сделать для std контейнеров? на пулах, к примеру
в 98 стандарте по итогу этот вариант не работал, но с последними стандартами вроде как поправили..
19 1359226
>>59180
Проще найти все касты поиском.
20 1359281
>>59136

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


Преимущество С - для него автоматически генерируются биндинги под все скриптовые языки. Поэтому библиотеки часто пишут на чистой сишке или делают обвязку без ООП. К Qt, например, биндингов мало, а те что есть, работают не очень стабильно.
21 1359286
>>59037

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


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

>но нигде не нашел инфы о том, как они вдруг осознали что вот всё - пизда.


Например, если даже не брать разницу между стандартами, C++ - это как минимум три разных языка: сам С++, шаблоны и макросы, и у каждого свои заебы. Еще пример: если в других языках обычно есть тольк значения и ссылки, то в С++ есть значения, указатели, ссылки и rvalue references. Даже указатели начинающий плохо воспринимает, а уж на rvalue references мозг ломается даже у самых стойких.
22 1359289
>>59226
Зачем мне их использовать если можно просто (yoba) во всех случаях?
23 1359307
>>59037
А зачем тебе язык? Наверное с этого надо начинать выбор языка.

>как они вдруг осознали что вот всё - пизда


Ты хотя бы cs50 осиль причем можно даже не весь курс, а ту часть где про си.
24 1359320
>>59289
ты не оче умный походу
25 1359324
>>59180
Потому что сишный каст сначала пробует все остальные касты, а reinterpret тупо меняет тип. То есть, например, при приведении указателя на класс со множественным наследованием может сработать static_cast, и результат получится для тебя неожиданным.
26 1359329
>>59307
Спасибо, посмотрю
27 1359354
Есть кто?
28 1359355
Нет, спрошу, короче, думаю установить vs17, нужно ли указывать компилятору на каком стандарте пишешь, например, я взял учебник 2003 года и пишу код, поймет ли он его, новый стандарт я помню нужно было указывать, а как на счет старых?
изображение.png36 Кб, 696x129
29 1359374
Сап. Обьясните что такое сериализация и нахуя. И как она делается, как выполнить данный таск, с файлами проблемы немного и тут ещё сериализация, вообще не понимаю что хотят от меня, гуглил, но внятно не нашёл.
30 1359388
>>59374
Вычеркиваешь из задания слово сериализация. Просто берешь и делаешь программу которая сохраняет какую-то структуру данных в файл либо загружает из файла (по выбору в меню).
то что ты сделаешь с структурой чтобы ее можно было сохранить в файл будет сериализация, чтобы загрузить из файла - десериализация
31 1359402
>>59388
Спасибо, попробую осилить файлы, далеко вперёд ушёл, их скипнул, и тут вернулись, не понимаю как считывается информация из текстового файла, например массив, как дать понять какое число в какую ячейку помещать, но попробую
32 1359406
Сап двач такой вот вопрос. Насчёт визуального программирование через WinAPI можно вкатиться сюда?
33 1359409
>>59355
Они почти полностью обратно совместимы, может поругаться варнингами на deprecated вещи.
34 1359412
>>59406
Можешь поставить Qt и формошлепствовать, хотя вкатываться мне кажется легче на шарпе с дотнетом. Так то они соответствуют друг другу, и там и там есть свои языки разметки.
35 1359414
welfjhk
36 1359418
>>59414
[code]*[/code]
37 1359420
>>59374
Примерно вот так https://ghostbin.com/paste/h9on5 я создаю сперва место на хипе, а потом пишу туда переменные структуры, затем переают указатель на хип в фукцию write. В принципе ты можешь и сразу всю структуру заебашить просто используя указатель this, например
file.write(reinterpret_cast<char#>(this), sizeof(#this); вместо звездочки #. Но так лучше не делать, так как можешь проебаться с пэддингом.
Короче если ты откроешь этот файл в hex редакторе, то ты увидишь такое как на втором пике. Это и есть эти два интегера в шестнадцатеричном виде, правда они сохраняются в little-endian формате, то есть их надо читать задом наперед как на третьем пике.
38 1359516
>>59221
Мы в итоге тупо написали свои кернельные строки, вектор, хэштаблицу и даже юник_птр, т.к. стандартные хедеры тащат очень много всего неподдерживаемого в код. Заняло несколько дней, но, зато есть угарный доп-функционал, типа variadic конструктора для строки, который все переданное джойнит и сохраняет.

>>59281
Ты без проблем можешь обмазывать свой код EXTERN C, когда нужны биндинги.
изображение.png56 Кб, 703x448
39 1359526
>>59420
ну в лабе вот так показано, мне надо изобразить что то похожее, но я не долбаёб тупо копировать, мне хотелось бы узнать что делают символы "И" и тд. просто обьяснить строки, тогда мб пойму что это такое и зачем оно нужно, а как работает ввод из файла, как он понимает что мне нужно и куда поставить, или как ему это обьяснить попробую сам разобраться. Поэтому если сможешь обьяснить что тут к чему, буду очень благодарен.
40 1359551
>>59420
ты наверное еще и гордишся тем, что у тебя там нахуеверчено, лол
пиздец канеш лютый
41 1359552
>>59526
Ну что тут сказать, тут сперва берется структура А, которая передает свой адрес указателю ptr. & это оператор адреса, (char#) это C-стайл каст из типа структуры в тип char. В моем примере я использовал С++-стайл reinterpret_cast, что в принципе то же самое. Затем с помощью указателя данные из структры копируются в массив Mas, который тоже должен быть типа char, иначе будет пизда. Потом данные из массива выводится на экран. Но эта фигня будет только работать, если в структуре все переменные одинакового типа и размера. Еще добавлю, что на пикче #(ptr+i) и #(e+i) это вообще уродство. Лучше просто писать ptr, ты можешь подумать "но ptr же не массив" - а похуй, я сказал! В С++ массивы по сути указатели, поэтому и указатели можешь использовать как массивы. ptr будет автоматически прыгать с размером своего типа (в этом случае это char, то есть 1 байт), и сразу разыменовать его, то что делает звездочка на пикче.
42 1359553
>>59552
Двач сука квадратные скобки у ptr съел.
43 1359554
>>59409
Да я что спрашиваю, одна баба в видео говорила мол учите со стандарта 2003 года! а я развесил уши все
44 1359558
>>59551
Лол чем гордиться шизик? Обычный пример как сериализовать.
45 1359564
>>59406
Никто не клепает формочки на чистом винапи. Да и это не совсем удачный вектор для вкатывания.
46 1359570
>>59558
так НЕ надо делать
там пиздец
47 1359573
Салам, чо поцоны есть среди нас толковые кутэшники? Го в лс саморазвиваться пограммировать (телега - @FirstLast_q)
48 1359578
>>59570
Ну покажи как лучше, раз ты такой умный, а то ни дай бог тот чел скопипастит мой код и получит двойку!
49 1359585
>>59573
Сам то кто по масти?
50 1359586
>>59516

>Ты без проблем можешь обмазывать свой код EXTERN C, когда нужны биндинги.


Только если у тебя код близкий к сишке, без особого использования ООП. Для того же Qt сишный интерфейс будет очень сложно сделать.
51 1359592
>>59552
Спасибо большое, достаточно понятно.
52 1359593
>>59578
ну, епт
2 инта в бинарник можно и напрямую закинуть без изьебств как у тебя если не идет речь о независимом от платформы формате
53 1359594
>>59578

>Ну покажи как лучше, раз ты такой умный


Как минимум структура при чтении должна понимать, что данные ей не подходят, и выдавать ошибку.
54 1359644
Сап,озадачился созданием простенького графического интерфейса, лучшее что нашел на данный момент это windows forms, но у Майкрософт хуйня вместо документации,а гайды и сторонние руководства часто устаревшие, qt по некоторым причинам мне не подходит. Какие есть ещё варианты с хорошей документацией и примерами, желательно но не обязательно с формочками.
55 1359646
>>59037
Сложно понятие субъективное, может ты изначально так мыслишь и тебе вообще норм. Тем же плюсовикам может быть ФП сложна, а ФПшникам сложно с байтами ебаться.
56 1359650
>>59286

>три разных языка


Я бы поделил на процедурный С++(практически С), объектно-ориентированный с++ и декларативный с++(шаблоны-шаблончики).
Безымянный.png140 Кб, 1600x900
57 1359670
Пытаюсь скомпилировать код и получаю 2019.Чому компилятор не видит Winmain?
58 1359672
Плюсаны, серьезно, вот где найти плюсопрограммиста на "подработку" нужно сговнякать совершенно конкретные вещи под один сдк о которым никто никогда не пользовался. Где искать погроммиста?
59 1359673
>>59672
чем больше денег - тем больше выбор.
60 1359681
>>59673
Где искать-то не на лохито же? А сколько денег считается нормой нынче?
61 1359684
>>59644
почему вы так все боитесь gtk?
62 1359690
>>59644

>Майкрософт хуйня вместо документации,а


лолват, чем тебя мсдн не устраивает
63 1359694
>>59644
QT. Все остальное дохлый номер.
64 1359709
>>59684
Ну очевидый нюанс это сторонняя ide, лень переходить с VS и танцевать с переносом библиотек, хотя именно gtk я ещё не пробовал и достаточно подробно не прощупывал, мб гляну сегодня.
>>59690
Я имел ввиду именно Майкрософт докс, до мсдн я не добрался.
>>59694
Нюансы выше,плюс не понимаю нахуя качать пол дня пакет на 20 гигов, ради нескольких кнопок и пары пикчербоксов.
65 1359713
>>59709

>я пакет на 20 гигов


Ващето 3
>>59709

>Майкрософт докс


У них есть отдельный дистр с хелпом для вс где ты выбираешь что именно ставить, гига на полтора вроде.
66 1359720
>>59694
пописал на тебя
67 1359736
>>59644
imgui как вариант
68 1359756
>>59709
Потому что на чистом винапи ты будешь эти кнопочки клепать неделю. А в QT за пару часов управишься.
69 1359763
>>59756

> на чистом винапи


Как там в 1991 м?
70 1359766
А игры тоже на чистом winapi создают?
71 1359772
>>59766
Игры создают на движках.
Движки имеют кросс-платформенную прослойку, которая уже общается с winapi. Но все общение там сведется к созданию окна, и отрисовыванию всего руками, включая кнопочки интерфейса
72 1359774
>>59766
На директ икс как минимум, винапи слишком тормозной, ну если это не что то типа пасьянс только . А так то на готовых движках.
73 1359794
>>59774

>винапи слишком тормозной


В каком смысле? Я, конечно, не эксперт, но разве любая хуйня на винде не дёргает винапи в конечном счёте?
74 1359797
>>59766
Все вокруг - обертка над системным АПИ. Конкретно на винапи игру создать малореально, за счет того. что нет хардварного ускорения. ты дергаешь интерфейсы опенгл\директ3д, которые, фактически, тоже являются системными АПИ.

Еще раз - все эти кути, гтк и прочие фреймворки - это все обертки над системным апи.
75 1359810
>>59794
Неа. Он потому и директ что без винапи, а напрямую с железом работает.
76 1359813
>>59810
О, понятно, типа напрямую с дровами видюхи, да? А мне всегда казалось, что всё через винапи общается, типа к ней идёт запрос, она дёргает драйвер видюхи, а она уже делает что надо.
77 1359818
>>59813
Через винапи дольше было бы по-моему
78 1359819
>>59818
Ну понятно, что дольше, там же напрямую всё.
79 1359820
>>59813
Не, там окна (в винде ваще все является окнами), очередь месседжев, не то что нужно играм.
80 1359821
>>59813
Операционная система предоставляет некие интерфейсы, которые потом где-то за кулисами реализуются драйверами видяхи и тд.

Здесь важно понимать, что ни к каким драйверам и прочему ты доступа не имеешь, ты просишь операционку сделать что-либо, а она уже либо сама делает, либо делегирует кому-то еще внутри себя. Ты это не контролируешь.
81 1359831
>>59820
Ага, понятно.
>>59821
Да это то понятно и так.
82 1359834
>>59681
А что там за ужасы у тебя, все конфиденциально?
Я все в поисках чего-нибудь, чтобы практиковаться, но плюсового опыта у меня мало, пока максимум - это диплом и три небольшие утилиты для работы. И то, все это можно было реализовать быстрее на других языках.

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

>Начни с питона лучше, он для этого и создавался


Для «этого» создавался паскаль.
84 1359844
>>59286
работу отбирают, хады
85 1359885
Клиент двача на айос на спп - выполнимая задача?
86 1359898
>>59885
Да, минут на 50 работы всего
536.gif1,2 Мб, 499x281
87 1359903
Тут хелловорлдерам можно, или это в нюфаг?
Короче:

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

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


Как потом ввести все эти данные в объект ОбщийПоказатель, так, словно я просто списал все эти показатели одной строкой через пробел сразу в ОбщийПоказатель, а не делал это по отдельности? Банальное = тут не работает, потому что тип ОбщийПоказатель отличается от всех этих трех. Прост прыгнул чуть дальше чем нужно, и теперь хочется добить, а то меня мой гештальт забьет насмерть.
88 1359904
>>59903
т.е. как будто бы я просто вписал все это в консоль разом, а не по отдельности
std::cin >> ОбщийПоказатель;
89 1359906
>>59885
Ну там есть сишный интерфейс для отсылки сообщений объектам. Правда его работоспособность не гарантируется (так как он не преднозначен для использования обычными прогерами). Ну и остается проблема с получением сообщений (разного рода делегатам, типа NSTableViewDelegate). Тоесть скорее всего нужно будет ебаться с свизлингом. Есть вариант тупо рендерить через метал на GPU не связываясь со стандартным UI. Но никогда не пробывал. Более простой вариант такого подхода будет накатить игровой фреймворк (cocos2d-X - нужен именно X) и работать через него - но тоже не пробывал.
90 1359913
Лучше писать в студии с модулем Qt или в Qt Creator?
91 1359914
>>59913
Я писал в студии с Verdigris, без qt модуля, moc'а, и прочей параши. Имхо, идеально.
92 1359916
>>59904
Тебе нужно перегрузить оператор>>, гугли по stream operator overloading. Что-то вроде такого должно быть
istream& operator>> (istream& is, YourMom& wh)
{
is >> wh.age >> wh.weight;
return is;
}
93 1359919
>>59916
Ок спасибо, завтра попробую :3
94 1359920
>>59919
Не за что.
95 1359938
>>59837

>Для «этого» создавался паскаль.


Паскаль умер, а питон живет.
sw.png139 Кб, 1180x592
96 1359959
>>59670
Хз возможно ты subsystem windows не выставил?
97 1359970
>>59938
Питон никак не поможет вкатиться в плюсы, ничего общего практически.
Object Паскаль по возможностям гораздо ближе к плюсам. Да и умер он не совсем, условно. Работу найти трудно - это да, все остальное на месте.
98 1359981
>>59037

>Может кто в двух томах объяснить, или дать ссылку, объясняющую, чем принципиально 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.


В переводе на русский, С дает свободу, программировать как хочешь, делать что хочешь, это означает эффективность, если есть мозги воспользоваться свободой. Но свобода означает ответственность, если обосрался, то только ты в этом виноват, язык тебя не оберегает как нянька, не ведет за ручку, не говорит как надо и как не надо, ты сам должен знать как тебе нужно, поэтому для обучения программированию С не подходит.
>>59970
А Паскаль это обратная крайность, там нельзя ни шаг влево, ни шаг вправо, только по жестким рельсам языка, который полностью диктует как нужно писать и не допускает иного. Поэтому теоретически он считался хорошим языком для обучения, но на деле железные кандалы воспитывают моральных рабов, которые не могут жить и думать за себя самостоятельно без самога барина в жопе, указывающего путь.
99 1359995
>>59981

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


Это не свойство паскаля, это подход к обучению. Если человек даун выбрал хуевый подход, то он с любым языком обосрется.

>думать за себя самостоятельно


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

Питон дополняет c++, а не заменяет его. Обмазываясь с самого начала питоном, ты уйдешь в совершенно другую предметную область.
100 1359996
>>59981

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


Но даже и не оспаривая этот твой тезис, сюда входит уже достаточно широкий круг задач.
101 1360032
>>59970

>Питон никак не поможет вкатиться в плюсы


Ему не в плюсы надо вкатиться, а вообще научиться кодить. Изучать С++ как первый язык программирования - не самая здравая идея. Питон для этого гораздо больше подходит из-за простоты и популярности.
102 1360075
Обясните пожалуйста тупому, почему данная запись завершается с ошибкой?
void CreateMas(int r,int k){
mas = new int* [r];
for(int i=0;i < r;i++){
mas= new int [k];
}
}
103 1360077
ачаны, куда можно вкатиться на неоплачиваемую стажировку по плюсам обезьяне второкурснику без опыта но с огромным желанием?
104 1360083
>>60077
никуда. Главная проблема обезьян в том, что от них больше вреда, чем пользы
53f.jpg7 Кб, 196x250
105 1360085
Взяли на первую работу цпп программистом. Через 2 недели выходить. Посоветуйте материала, чтобы все вспомнить и подтянуть язык, чтобы не опростоволосится на работе. Мне нужно основные моменты подтянуть и вспомнить все тонкости.
106 1360086
>>60075

>mas


че это? Ты же ему тип не присвоил. Так надо: int mas = new int* [r]
107 1360090
>>60086
Сука, Абу, зачем звездочки сожрал? int mas = new int* [r]
108 1360091
>>60090
БЛЯЯЯ. короче
int <звездочка><звездочка>mas = new int* [r]
109 1360094
>>60085
Майерсов
110 1360096
>>60085
Прикольно, тебя без собеседования взяли что ты не знаешь что надо готовить? Если не спрашивали ничего и не сказали забей, будешь макакой и там на месте все пояснят.
111 1360099
>>60075
Зачем тебе легаси массивы вообще? Можно ведь прощще
[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]
112 1360100
>>60096
Спрашивали все, что только можно. Просто хочу еще сильнее подтянуть знания, чтобы не пернуть жидко.
113 1360114
>>60075
Не совсем понимаю, чего ты хочешь добиться с этим кодом. Во-первых звездочку после new int не надо ставить. А mas что, глобальная переменная? Тогда она должна быть указателем. А что ты в цикле делаешь, тоже не понятно. Ты хочешь присвоить значение переменной k в этот массив? Или ты хочешь создать массив на отдельные кучи размером k каждая?
114 1360223
Аноны, есть годный garbage collector под c++? Ситуация такая, у меня из ануса начала вываливаться прямая кишка, врач сказал, что это от долгого сидения за компьютером. Но я не могу иначе, все эти утечки, деструкторы. Выручайте, плюсаны.
115 1360230
>>60223
boehm-demers-weiser gc, альтернатив нет
попробуй анальные свечи "метилурацил"
116 1360231
>>58809 (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 или надо что-то другое?
117 1360243
>>60231
X.wav надо превратить в строку перед отправлением в функцию. Гугли "string format C++", там куча способов сделать это.

Вангую, следующую ошибку высрет линкер, что функция PlaySoundA не найдена.
118 1360245
>>60114
>>60099
>>60086
int mas; у меня является полем класса, а этот кусок кода лежит в методе класса.
>>60099
Я понимаю что можно намного проще, но мне нужно просто понять как это работает.
>>60075
Поэтому прошу помочь тупому.
119 1360254
rew.JPG27 Кб, 617x284
120 1360257
>>60245

> int mas;


Неправильный тип. Пикрелейтед как надо.
121 1360259
>>60243

>X.wav надо превратить в строку перед отправлением в функцию.


Как это можно сделать в рамках события (которое в case, информация, быстро пришедшая с аудиовхода), которое запускает тот самый плейсаунд? Мне надо просто вот так: нужный (с этим все нормально, прописано все до нужного фрейма) сигнал на лин. входе, содержащий Х>декодирование>проигрывание аудиозаписи, содержащее имя переменной.
Не курсовая, надо для реализации одного радио-телеком-протокола для личных нужд.
Безымянный.png3 Кб, 275x156
122 1360262
>>60257
У меня со звездочками, это ебаный абу их украл.
Дело в том что компилятор не ругается на эту конструкцию, но когда программа входит в конструктор класса, вылетает ошибка.
В гугл лазил, другие делали так же и у них все работало.
123 1360263
>>60262
Звездочки перед мас нету, я ее случайно сейчас туда ткнул.
124 1360265
>>60259

> содержащий Х>декодирование>проигрывание аудиозаписи


Что-то мне кажется, что PlaySound из winapi тебе не подойдёт. Может тебе надо с WASAPI/DirectSound (хотя судя по VS2005 работаешь ты скорее всего на WinXP, где WASAPI и нет) работать? Насколько часто нужно проигрывать файлы? Насколько они короткие? Насколько важна задержка?
125 1360266
>>60262
Давай-ка весь класс на пастбин залей.
126 1360272
>>60266
Это все, там больше ничего нету
Вылетает на входе в цикл for
127 1360274
>>60272
Что значит "вылетает"? Ошибка рантайма?
128 1360277
>>60274
Прекращена работа программы, и все.
Процесс возвращает 0xC0000005.
Больше ничего
129 1360278
>>60277
Дебаггером посмотри, что там.
130 1360284
>>60265

>Что-то мне кажется, что PlaySound из winapi тебе не подойдёт


Так вот как синтаксис данной процедуры ни курю, как ни гуглю, мне тоже так кажется. С другой стороны, вроде бы должна стандартная процедура WinApi брать файлы с названиями, задаваемыми прогой. Но вроде и не подходит. А что подойдет, такое же быстрое и легковесное, желательно не стороннее, а от тех же MS? А то был у меня опыт с библиотекой Audiere, которая работала даже на заданный wav-файл через пень-колоду, притом PlaySound при задании имени Wav-файла работает как часики. Проблема в том, что имя Wav-файла - имя абонентского терминала, а я хочу приучить прогу работать с несколькими - а для этого надо брать номер, которым представляется терминал, и который в проге хранится в UINT X.
131 1360288
>>60265

>Насколько часто нужно проигрывать файлы? Насколько они короткие? Насколько важна задержка?


Скорость важна, это аналоговая сотовая. Пока сторонняя библиотека думает, терминал уж раз 5 канал сменит.
132 1360293
>>60265

>Насколько часто нужно проигрывать файлы?


Не очень часто, по коннекту типа радиотелефона.

>Насколько они короткие?


Коротенькие, секунд 5-6-7 - подтверждение ответа БС, набора номера (хоть произвольного пока, это не важно - декод цифр по стандарту будет с развитием софта, сейчас набор номера идет уже после проключения на разговор через программку DTMF Joystick) и разрешение на проключение разговорного тракта.
133 1360299
>>60265

>Насколько они короткие?


>>60293

>Коротенькие, секунд 5-6-7 - подтверждение ответа БС, набора номера (хоть произвольного пока, это не важно - декод цифр по стандарту будет с развитием софта, сейчас набор номера идет уже после проключения на разговор через программку DTMF Joystick) и разрешение на проключение разговорного тракта.



Вот пример: http://rgho.st/7ySPJwGWs
134 1360302
>>60284

> желательно не стороннее, а от тех же MS


Я уже дал название библиотек, встроенных в винду. Есть ещё cubeb [1], я с ним игрался когда-то. Довольно простой и кроссплатформенный, мне понравился. Однако он pull-based, а не push. Это значит, что он сам постоянно запрашивает данные для вывода и если данных нет ты выводишь нули. Придётся тебе попотеть с синхронизацией. Алсо, он может работать и с микрофонами/лин.входом. Ты можешь тупо соединить их через функцию, которая будет получать звук из одного потока и выводить в другой.

[1]: https://github.com/kinetiknz/cubeb
135 1360310
>>60302

>Я уже дал название библиотек, встроенных в винду.


Ладненько, погуглю и поиграюсь. В любом случае, это временное решение - далее надо писать енкодер стандарта наподобие линуксовой довольно пиздатой, даже с смсками, которые как у меня, так и практически у всех операторы данного стандарта, не поддерживаются из-за их ненужности и вредности - поскольку передача идет на голосовом канале в режиме модема осмоком-аналог. Собственно, пора раскрыть карты - стандарт NMT-450 и я в рот не ебу, как в с++ (на этом языке таки есть готовый декодер на Win) выдать на выход звуковухи частотную манипуляцию между 1200 и 1800 Гц. Думаю в ресурсы закинуть файлы этих частот и попеременно включать той же PlaySound, но... Она, конечно, работает быстро, но время там не задать, а время ФРЕЙМА в NMT - миллисекунды. Если так сделаю, мне кажется, придется городить индусский код из if и else, котолрый работать толком не будет.
136 1360319
>>60278
Все ок, при входе в цикл сразу краш.
Попробывал в запустить это безобразие в вижуал студии, все нормально работает.
Screenshot5.png38 Кб, 1133x483
137 1360331
Хелп, аноны. Раньше нормально работало, теперь не находит файл, в сурсах действительно такого файла нет
138 1360333
>>60331
Через пару минут каким-то чудом файл появился, что происходит?
139 1360377
>>60331
Этот хидер автоматически генерируется из ui-файла, который ты в редакторе форм делаешь.
140 1360454
>>60377
Понял. Наверное удобнее всё же будет писать в Qt Creator, в студии не особо удобно.
141 1360489
>>60302
Таки, и плейсаунд прекрасно работает : http://www.cyberforum.ru/vbfavorites.php?do=add&entry_type=post&entry_id=13382539
142 1360496
>>60489

> Для просмотра этой страницы необходимо зарегистрироваться.


Ну, значит у тебя нет на самом деле больших требований к задержке.
143 1360521
>>60262
Работает же вроде http://www.cpp.sh/4susa Тебе не надо ставить звездочку перед mas в цикле, потому что квадратные скобки автоматически разыменуют указатель.
a8MDzuD5400x400.jpg31 Кб, 400x400
144 1360606
>>60257

>Обычные указатели


>Динамический массив через указатели


>Пикрил как надо

145 1360615
>>60606
Массив это набор указателей.
146 1360628
>>60615
>>60615
массив - это массив
отдельная сущьность
базовый тип
147 1360630
>>60628
Правила строгого алиасинга преобразование int[] -> int∗ нарушает? Нет. На всё остальное похуй. Добро пожаловать в C/C++ мирок, где разрешено всё что не UB.
148 1360636
>>60630
Это Си параша, сейчас никто не юзает * в С++
149 1360642
>>60630
и че?
еще раз - массив - это базовый тип
ааа.png1 Кб, 216x170
150 1360651
Как называется такая фигня когда класс создается внутри класса, и зачем оно нужно?
151 1360655
>>60651
Вложенный класс. Дальше сам.
152 1360658
>>60636
Нет, это в ++ никто не юзает *, а в С++ юзают, потому что С++ это С и ++. Говорить что С++ это не С, аналогично "С это не С", абсурд. С++ включает в себя С, С нельзя выбросить.
153 1360660
>>60651

>Зачем нужны фигурные скобки?


Сам думай.
154 1360662
>>60651
Затем же, зачем классы помещают в неймспейсы.
155 1360664
>>60658
С и С++ это разные языки
156 1360666
>>60664

>левая рука против правой взбунтовалась


Ну воюй.
157 1360667
>>60655
>>60660
>>60662
То есть это такая же херня как в javascript, где можно зафигачить функцию внутри функции, чтобы ограничить ее от внешней области видимости?
158 1360673
>>60642
Это указатели всего навсего.
159 1360681
>>60673
массив - это базовый тип
плюс в языке есть неявные преобразования и механика низведения, связанная с этим типом, но это уже другое
160 1360722
Аноны посоветуйте хорошую книгу по Qt. Прочитал немного Шлее и мало что понял
161 1360734
>>59810
Директу нужен твой хендл окна, так что совсем без винапи и его месседж лупа ты не уедешь. Хотя в последний раз я что-то писал на девятом DirectX, может что-то и поменялось за это время. Хотя, не думаю.
162 1360736
>>60722
Тогда подтяни свой уровень в обычных крестах, т.к. книга Шлее это на 95% упрощенный перевод документации Qt.
image.png96 Кб, 1606x706
163 1360738
Помогите пожалуйста студенту быдлокодеру.
Есть оператор выбора который выбирает функцию по вводу 1/2/3.

Как заменить цифры на слово? Чтобы он выдавал функцию например при вводе max/min/avg и так далее?
164 1360739
>>60736
Вроде нормально подтянулся, даже немного вкатился в новые стандарты, но опыта мало. Хотел бы сделать какое-то небольшое приложение с виндовс формами, но WinApi тоже сложно дается.
165 1360744
>>60738
Либо оформи код по-человечески, либо иди нахуй. Этот говнокод читать в здравом уме никто не будет.

>>60739
Попробуй пройтись по примерам, вшитым в QtCreator, например Part1 - Part7. Там по порядку создается адресная книга и каждый шаг очень подробно объясняется, но на английском.
3.jpg98 Кб, 720x960
166 1360746
>>60738

>этот стиль

167 1360747
>>60744

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


Тебе незачем на мой говнокод смотреть.
Ты на вопрос ответь, брат.
168 1360749
>>60722
Зачем книга по Qt? Для большинства задач там все просто и тупо. Берешь, и делаешь без задней мысли, онлайн документации хватает за глаза. Что-то более сложное можно найти только в инете, в книгах такого не пишут.
169 1360750
>>60747
>>60738

>Как заменить цифры на слово?


В switch-case NIQAQUE. Но изъебнуться можно: вариантов несколько. Самый простой хуярить if-else. Если прям принципиально использовать switch-case, то определяешь enum и с помощью отдельной функции, которая через тот же if-else сравнивает строки и возвращает экземпляр этого енума. А уже его можно использовать в switch-case.
170 1360751
>>60750
Спасибо, брат.
Алсо. Как правильно скобки расставлять? Меня никто этому не обучает. На первом скрине я расставил их так, как удобно мне. Сейчас вообще нихуя не понимаю.
Это троллинг или правда есть единый стандарт?
Не бейте я аутист.
171 1360753
>>60751

> есть единый стандарт?


Есть несколько стандартов. Бери любой, например гугловский https://google.github.io/styleguide/cppguide.html
172 1360754
>>60751
Поставь студию, она подскажет большинство моментов и расставит за тебя пробелы
173 1360755
>>60751
В каждой команде, как правило, свой стиль. Для себя я использую данный, с небольшими доработками: http://www.stroustrup.com/Programming/PPP-style.pdf
174 1360758
Спасибо.
175 1360763
>>60751
Единых стандартов нет, но часто за тебя это делает ИДЕ. У тебя какой то пиздец в качестве оформления.
176 1360774
Почему у моего хеллоуврода с одним месседжбоксом вес 100кб и куча левых импортов которые я даже не использовал и не подключал?
177 1360775
>>60496
http://www.cyberforum.ru/cpp-beginners/thread2414561.html
По этой ссылке должно работать, проверял с режима инкогнито. А требования к задержке миллисекундные, ибо каналы в Нокии 640 (не той, что люмия, старой аналоговой) меняются побыстрее, чем в сканерах Айком, почти на уровне американских сканеров.
Тем не менее, решение найдено.
178 1360780
>>60774

>Почему у моего хеллоуврода с одним месседжбоксом вес 100кб


Собираешь под Release, надеюсь? В
179 1360782
>>60780


Debug весит много.
180 1360783
>>60780
Да.
181 1360793
>>60664
С++ и ява - разные языки. Поэтому не стоит из крестов пытаться сделать яву.
С и С++ хотя и разные, но пересекающиеся языки. Существуют апи, библиотеки и прост большая скотокодовая база для С++, написанная на С или в си-стиле.
Твоя борьба за чистоту плюсов абсурдна.
38588920ccd900ab7ad6be9e3ac4c5a2e86434d6800.jpg84 Кб, 520x800
182 1360841
Анон, у меня проблема. Уверен, ты и сам попадал в такие ситуации и можешь понять мою боль.
Дело в том, что мне дали задание изложенное максимально по дебильному. Ты можешь понять алгоритм из этого текста? Что требуется сделать с каждой ячейкой матрицы, если не просто увеличить число в ней на 1,5%? (препод сказал, что в примере ввода опечатка, число 150 в там это 1,5)
183 1360842
>>60841
Иди в армию, очередной маняматик никому не нужен
184 1360843
>>60842
Я не годен к военной службе, так что ответить на мой вопрос, если не трудно.
185 1360862
>>60841
Даун, съеби.
186 1360864
>>60658

>нафаня не знает про _cast<typename>

187 1360866
>>60864
Нормальный человек:

>(typename)


Макросо-дебил:

>hurr_durr_tottooroo_cast<typename>

188 1360867
>>60841
В чем проблема обсудить это с преподавателем?
Нормальный преподаватель будет только рад вопросам.
189 1360891
изображение.png22 Кб, 496x620
190 1360899
>>60075
Короче, если тебе нужно создать динамический массив в классе то так:

>mas вместо arr
Ты что быдло ?
191 1360902
>>60667

>как в javascript


Примеров где применяется вложенный класс много, первое что пришло в голову - списки.
image.png45 Кб, 800x800
192 1360938
Массивы в плюсах это обьекты?
Они хранятся в стеке или куче?
193 1360942
>>60938
Обычные массивы - наследие С, т.е. это просто выделенная компилятором область памяти на стеке и указатель на первый элемент. В куче они будут храниться только если ты явно задашь это с помощью оператора new.
194 1360943
>>60938
массив - это базовый тип данных
со своими неявными приведениями и правилами низведения, унаследованными от си, что и путает новичков
195 1360944
>>60938
Массив это набор указателей всего навсего.
196 1360946
>>60942
тут несколько ошибок
197 1360948
>>60944
нет
198 1360956
>>60944
ты ебанутый чтоли
199 1360966
>>60956
может троллит
200 1361011
Не знаю как загуглить.
Вот есть у меня структура, я создаю ее новый экземпляр через new, а когда инициализируются и чем ее внутренности?
201 1361017
>>61011
стандартным конструктором. Если в тебя есть поля без стандартного конструктора (инты, енумы, указатели, и тд) - то будет мусор.
202 1361027
>>61011
Будет вызван стандартный конструктор для каждого члена структуры. Встроенные типы тоже его имеют, но он делает буквально ничего, поэтому их значение определено не будет. Однако существует zero-initialization, которая забивает память нулями для типов, у которых нет пользовательского конструктора (те же встроенные). Чтобы она произошла, нужно поставить пустые скобки:

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

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

MyStruct * p_s = new MyStruct();
203 1361030
>>61027
Бля, опять про звезды забыл

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

> int^


Ммм, сразу C++/CLI напомнило.
205 1361039
>>61038
Я специально.
206 1361079
>>60938
Это последовательность ячеек памяти. Это не объект.
207 1361080
Как новичку изучать stdlib? Открыл его (gcc), чтобы понять, как устроен map, а там дохуа строк кода, #ifdef, #define везде, шаблоны какие-то, и за всем этим скрыта логика (rb-trees, наверное), ничего не понял и вернулся к велосипедостроению.
209 1361089
>>61080
Вот что-то, а в С++ стандартную библиотеку по исходникам изучать не стоит. Там будет куча шаблонного кода, нахуеверченная создателями компилятора с двумя целями: (1) соответствовать стандарту и (2) работать как можно быстрее. Лучше прочитай кнута какого-нибудь, если хочешь понять как работают все эти коллекции. Ибо в std большая часть кода это не реализация контейнера, а борьба погромистов с системой типов C++ для того чтобы сделать код как можно быстрее.
210 1361090
>>61080
Нахуя? Если просто интересно почитать как реализовали ту или иную сущность именно в виде исходного кода, то лучше открыть исходники буста, т.к. разработчики компиляторов (а именно стандартной библиотеки) специально пишут пиздецки нечитаемый код, а в бусте все норм. А вообще это тоже будет хуевое занятие и лучше почитать какие-нибудь умные книги типа того же Кнута, Кормена, Седжвика.
211 1361091
сап двач, стьюдентишко на связи, запрашиваю поддрежку

На первой пикче основная функция, на второй вызывающая. Суть в том, что когда я с помощью функции input создаю и заполняю массив, при вводе в массив цифры 5, программа прекращает работу. Синтаксических ошибок нет. Если ввожу любые другие числа, всё окей, но пятёрка в массиве каким то чудом заставляет do while останавливаться
памагите
212 1361097
>>61091
Пройдись дебаггером, да посмотри в чем проблема. Скорее всего, где-то в потоке остается. код не читал
Screenshot20190308-183454.jpg110 Кб, 1440x468
213 1361098
>>61091
И это компилится, говоришь?
Если да, то я, видимо, совсем поехал.
214 1361099
>>61098
Гугли VLA
215 1361100
>>61099
Чего гуглить-то? В стандарте C++ этого нет.
216 1361106
>>61099
Да хуй даже с VLA, тебя не смущает, что идёт попытка создать массив размера неинициализорованной не static переменной?
217 1361107
>>61100
Нет, но gcc такое компилирует даже без варнингов (только при -Wpedantic уже пишет про это): https://gcc.godbolt.org/z/BI7DwI
218 1361111
>>61106
Ну хочет человек создать массив случайной длины. Хули ты приебался?
219 1361113
>>61111

>случайной


Скорее непредсказуемой. Странно, что у него до сих пор все не свалилось в сегфолт.
220 1361114
>>61113
Скорее в stack overflow.
Возможно он в дебаге и память все-таки проинициализирована
221 1361115
>>61087
тут просто описания функций, имплементации нет

>>61089
>>61090
А вот вам чаю, загляну в буст. И учебник у меня, конечно, под рукой, но хотелось видеть просто работающий плюсокод.
Screenshot20190308-191024.png386 Кб, 1440x2560
222 1361116
>>61115

>Имплементации нет


А это что такое, блядь?
223 1361119
>>61111
С квадриплом не поспоришь.
Ну, хай стреляет себе в ногу, его дело.

>>61091
Если пятерка у тебя останавливает do...while, то это правильное поведение программы. Ты же ей так и сказал, что если ввел пятерку - то закончи работать, будь добра.
Или, все таки, ввод пятерки у тебя останавливает функцию input?
224 1361128
>>61116
Как find_if поможет понять устройство map? имплементации которого там таки нет
225 1361134
>>61128
А ты не очень умный, да?

Иди тогда покупай описание текущего стандарта, что я могу тебе сказать, раз ты хочешь знать всё.
226 1361135
>>61080

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


Новичку следует научиться абстрагироваться. std::map - это интерфейс, который подчиняется определенным законам. Все. Как он внутри устроен тебя волновать не должно.
Будешь постоянно полагаться на велосипеды (маааам, ну я не могу использовать код который не понимаю), хорошим программистом не станешь.
227 1361140
>>61091
Используй std::vector.

https://ideone.com/jT1IFz
228 1361144
Какого хуя std::hash внезапно не costexpr?
Хотел запилить православный свитч-кейс для стрингов, а мне провели вялым.
229 1361158
>>61144
сделай сам, в чем проблема?
Строковые литералы вполне хэшируются в компайл-тайме
230 1361159
>>61144
А с чего бы аллоцирующий память контейнер должен быть constexpr. Обешали завести только в будущих стандартах.
231 1361160
>>61135

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


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


>Будешь постоянно полагаться на велосипеды (маааам, ну я не могу использовать код который не понимаю), хо



хуйню сказал. Когда лезешь в хайлоад или оптимизацию (что иногда одно и то же), всё это охуенно важно.
232 1361164
>>61160
Важно что, знать как устроен внутри std::map? Выдыхай, бобер.
233 1361165
>>61159

>контейнер


Наркоман? Где там про контейнер было?
234 1361182
>>61165
Ой, перепутал)) Это в перле хеши - массивы.
235 1361218
>>61164
я знаю
но мне дозволительно: я безработный и у меня много свободного времени
236 1361220
>>61218
на самом деле код контейнеров stl легко читать, когда поймешь, какие требования на них накладываются, в том числе безопасность исключений, модель управления памятью..
становится понятно зачем сделано так, а не проще..
237 1361225
>>61164
Конечно важно, нужно знать как устроенны большинство функций stl и как минимум уметь самостоятельно их написать с нуля.
Untitled.png289 Кб, 1424x660
238 1361231
Кто из нас четырех пиздит?
1. g++
2. Linux
3. Учебник
4. Я
239 1361236
>>61231
Вариант 4 исключен. Скопировал код из соурсов книги, результат тот же. Игнорирует последнюю последовательность цифр.
240 1361237
>>61231
Никто, у тебя программа до сих пор ожидает ввод, т.к. cin.good() == true. Для окончания ввода, тебе надо его закончить (т.е. ввести EOF - Сtrl+D в Linux), либо "сломать" (т.е. ввести что-нибудь, отличающееся от числа).
241 1361238
>>61237
Лол, я просто думал что как в винде EOF это ctrl+z, потому что тут оно тоже прерывало програму но не давала вывести последнее значение, спасибо
242 1361243
Посоны. Что по новым стандартам прилично использовать в for циклах: size_t или обычный int?
Алсо, есть отдалённый вариант вкатиться в байтоеблю с микроконтроллерами. Что скажут опытные байтоёбы, какие особенности у погромирования МК. Где то слышал что про многие плюшечки STL, а то и про всю целиком, придётся забыть.
Понятно что для МК Си более родной, но с ООП как то веселее, и код читаемей. И не забываем про trow catch.
243 1361245
>>61243

> И не забываем про trow catch.


Про это как раз придётся забыть, ибо обычно под мк понимают совсем маленькие процессоры, где нельзя делать динамические аллокации (можно только на стеке). Потому большая часть STL тоже работать не будет.
244 1361246
>>61243
Нет, нужно абсолютно все переменные объявлять как auto, при необходимости использовать decltype(auto)
sage 245 1361263
>>61080
В map в начале идёт
#include <bits/stl_tree.h>
и там RB-tree

Никаких дохуя строк.
image.png137 Кб, 296x300
246 1361271
Я правильно понимаю, что при выводе текста с помощью cout в кавычка не должно быть других знаков?
Что еще с ним нельзя делать?
Ввел в кавычки текст и вставил после него #, так он просто его выводить отказался.
Долго ебался, пока не понял почему.
247 1361272
>>61271
Странно. Сейчас перепроверил и он стал выводить.
248 1361281
>>61245
Сообщаю, что динамические аллокации возможны всегда, где есть помимо стека, остальной объем ОЗУ. Это можно сделать даже с помощью элементарного массива - объявляешь статический массив побольше, и распределяешь из него память динамич. аллокациями. Даже не нужно подменять malloc - пишешь свои собственные функции аллокатора.
Эта хуйня про маленькие процессоры - это чушь собачья. Там критерий в том, что МК - это целый компьютер на одном кристалле, и предназначенный для встраивания и управления другой электроникой. МК самые разные бывают. Есть оче слабенькие 8-битные, меньше чем килобайтом ОЗУ, есть мощные 32-битные. К ним по-моему ещё внешнюю ОЗУ можно подключать.
249 1361299
>>61091
Анон, тут много где может быть ошибка попробуй так:
(вызываешь ф-ю input)
input(mas,x)

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

Ну и также попробуй с другой функцией.
250 1361302
>>61299
Забей, до конца не прочитал.
251 1361362
>>61080
Конкретно сам код стандартной библиотеки можешь не пытаться читать. Чтобы его полностью понять, тебе нужен как минимум iq 150. Стоит просто понять сам принцип работы той или иной функции, гуглиш просто std::map и всё. Велосипеды писать можно, но только в плане обучения, но в продакшене лучше использовать готовые либы.
252 1361372
>>61281

> динамические аллокации возможны


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

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

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

[1]: https://devblogs.microsoft.com/cppblog/making-cpp-exception-handling-smaller-x64/
253 1361379
>>61362

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


В std::map мало того, что бинарный поиск, так еще и аллокация на каждый элемент. Лучше свой словарь навелосипедить, если нужна хоть какая-то производительность.
254 1361406
>>60899
Спасибо
255 1361413
>>61379

>std::map мало того, что бинарный поиск, так еще и аллокация на каждый элемент


эээ..
это не так..
или ты троллишь что ли?
256 1361417
>>61362

>Чтобы его полностью понять, тебе нужен как минимум iq 150


не нужно
там основная сложность, повторяюсь, это обеспечение безопасности исключений
дело это в стандарт протолкнул саттер с товарищами, но с другой стороны в его книжках объясняются детали реализации, так чтож все понятно становится
так же во всех контейнерах работа с памятью вынесена на уровень аллокаторов, что так же правильное решение, но с другой стороны несколько затрудняет чтение исходников stl
257 1361419
>>61281
до новых стандартов механизм аллокаторов в stl был, к сожалению, трудно реализуем на практике
было несколько обсуждений на rsdn, к примеру
поэтому и не использовали stl для программирования микроконтроллеров или для драйверописания, хотя по факту уже и писали на компиляторах, поддерживающих с++, те писали на приплюснутом си
сейчас же это возможно стало, но, дело в латентности индустрии, придпочитают олдскульную лапшу из макросов и самодельные контейнеры
258 1361422
>>61243
>>61243
дзен новых стандартов заключается в том что for неприлично использовать
как и if, собственно
259 1361426
>>61225
Нахуя? Если ты безработный и тебе это нравится, нет вопросов.
В противном случае не понятна мотивация.
260 1361435
>>61413

>это не так..


Во всех библиотеках именно так. И в gnu и в майкрософтовской. Красно-черное дерево с бинарным поиском и аллокация на каждый элемент.
261 1361436
>>61243

>Что по новым стандартам прилично использовать в 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К арма может оказаться просто вагоном места, а может придется статически выделять память и считать каждый байт.
Главная особенность в том, что без знаний электроники, хотя бы базовых, ты нахуй никому не нужен там.
261 1361436
>>61243

>Что по новым стандартам прилично использовать в 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К арма может оказаться просто вагоном места, а может придется статически выделять память и считать каждый байт.
Главная особенность в том, что без знаний электроники, хотя бы базовых, ты нахуй никому не нужен там.
262 1361441
>>61379

>Лучше свой словарь навелосипедить


Это никогда не лучше. У тебя целый гитхаб с тоннами либ под любыми требованиями, и в эти либы вложены гораздо большие усилий, чем ты способен представить. Фейсбуком каким-нибудь.
То есть, если производительность не нужна, берешь map и складываешь туда свой конфиг. Если нужна - берешь хорошую нестандартную либу. Места велосипедам просто нет.
Исключение, если ты сам работаешь в корпорации уровня фейсбука и написать либу с нуля силами программистов с зарплатой $100к в год тебе проще, тем иметь зависимость. Но маловероятно, что это твой случай
263 1361448
>>61441
Ты правда считаешь, что написать свой контейнер - это неебическое достижение, недоступное простым смертным?
264 1361455
>>61448
Нет, это ты так считаешь.
Я считаю, что это рутинная работа для таджиков от мира программирования с соответствующим результатом.
265 1361459
>>61455

>Нет, это ты так считаешь.


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

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


Не понял тебя. Это в комитете таджики работают или в фейсбуке?
267 1361465
>>61459

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


Покажи скрин заголовочного файла - посмеемся.
268 1361467
>>61465
Сначала ты свой гитхаб выкладываешь.
269 1361468
>>61448
Качественный контейнер, с учётом кэшей процессоров и с максимальной производительностью - да, считаю. Попробуй напиши что-то уровня Swiss Table hash map [1].

[1]: https://github.com/abseil/abseil-cpp/blob/master/absl/container/internal/raw_hash_set.h
270 1361469
>>61467
Что и требовалось доказать. Можешь не показывать - контейнеров уровня 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);
}

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

>>61468
Какие кэши, пусть покажет, как он соблюдает exception safety, семантичность, сделал поддержку аллокаторов, все соглашения для итераторов и протестировал все.
270 1361469
>>61467
Что и требовалось доказать. Можешь не показывать - контейнеров уровня 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);
}

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

>>61468
Какие кэши, пусть покажет, как он соблюдает exception safety, семантичность, сделал поддержку аллокаторов, все соглашения для итераторов и протестировал все.
271 1361477
>>61469

> Какие кэши


L1, L2, L3. Судя по тону, видно, что для твоих поделий они не важны, но вот для больших данных это очень важно. Иногда бывает так что для небольшого числа объектов простой массив с кортежом ключ-значение и перебором работает быстрее хэш-мапа потому что полностью вмещается в кэш процессора, в отличии от последнего, а значит на доступ к ОЗУ не тратится времени вообще.

> как он соблюдает exception safety


Никак. В abseil почти все методы помечены как noexept, потому что эксепшоны понижают производительность. Так что если твой говнокод выбрасывает эксепшон внутрь библиотеки, то скорее всего она просто вызовет std::terminate().

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

Впрочем это никак не отменяет, что написать такую библиотеку просто васян выучивший С/C++ не сможет. Непонятно к чему ты высрал свой ответ мне.
272 1361479
>>61469

>соблюдает exception safety, семантичность, сделал поддержку аллокаторов, все соглашения для итераторов и протестировал все.


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

>и он пишет свой кривой велосипед, который имеет 10% функциональности нормального контейнера.


Смысл велосипеда - как раз заиметь 10% нужной именно тебе функциональности без лишнего оверхеда и мозгоебства.
273 1361481
>>61477

>Судя по тону


Хуясе ты шизик. Я о том, что ты требуешь от него слишком многого, а ты уже строчишь пост о том, какой я мудак, не оценил твою либу и вообще ответ высрал.
274 1361483
>>61481
Это не моя либа, а гугловская. Ещё кого-то шизиком называет, лол.
275 1361485
>>61469

>семантичность


Что такое "семантичность"?
276 1361487
>>61483
Бля, ты правда как шелдон из теории большого взрыва. Во фразе "не оценил твою либу" нет информации о том, что ты написал эту либу.
277 1361488
>>61487
Ты вообще читаешь посты на которые отвечаешь? Я её привёл в пример как высококачественный контейнер, который средний программист никогда не напишет. А ты мне начал какую-то хуйню втирать.
278 1361489
>>61488
А теперь ты даешь цитату, где я в этом усомнился. Раз ты читаешь мои посты, лол
279 1361490
>>61477
У гугла политика разработки без эксепшенов. И не потому, что эксепшены это очень плохо, а потому, что у них огромная кодовая база, где будет хуева гора утечек с эксепшенами, код к ним не готов. Но ты, конечно, этого не знаешь.
280 1361491
>>61489
Действительно, ты просто начал в ответ высираться не по теме. Ещё и шизиков под кроватью искать начал. Видимо слишком много программировал на шаблонах, мозги к общению уже не приспособлены. Только срать и можешь.
281 1361492
>>61490
Вообще они явно пишут в описании библиотеки что сделано это для пирформанса. А ты путаешь причину и следствие.
282 1361493
>>61479

>Смысл велосипеда - как раз заиметь 10% нужной именно тебе функциональности без лишнего оверхеда и мозгоебства.


А в итоге ты получаешь оверхед и мозгоебство. Вместо того, чтобы просто взять работающую вещь. Сложна ведь. Ведь это код, который писал НЕ ТЫ. О ужас.
283 1361495
>>61491
Чувак, когда я писал пост: "Какие кэши, пусть покажет, как он соблюдает exception safety, семантичность, сделал поддержку аллокаторов, все соглашения для итераторов и протестировал все", только тупой аутист не смог бы увидеть выражение согласия. Ты не увидел и начал спорить. Я охуел с таких раскладов.
284 1361496
>>61485
Под этим словом я имел в виду наличие всего набора конструкторов с правильным кодом внутри них.
На самом деле пиление собственный контейнеров лучший способ возненавидеть С++ по-моему.
285 1361497
>>61495
Тогда всё. Вопрос закрыт.

Я думал ты ко мне обращаешься, мол я должен показать как моя лол библиотека соблюдает всё это, а иначе она говно.
286 1361498
>>61497
А теперь поебемся
287 1361501
>>61498
Нет, лучше ты поебёшься с моей тульпой, а я буду рядом сидеть в поясе верности и писать код на шаблонах.
288 1361503
>>61493

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


Не понимаю твою логику. Если бы была рабочая вещь, я бы велосипеды не писал. Например, миллион вариаций intrusive list, которые все немного отличаются друг от друга. Универсальный если и можно написать, то это будет пиздецома из темплейтной магии. Тут проще писать велосипед под ситуацию.
NIH - синдром, кстати, не на пустом месте берется. Часто обтесывать что-то универсальное сложнее, чем написать свое. Потому что авторы "универсального" решения твой конкретный случай просто не предусмотрели, и приходится городить уродливые велосипеды поверх "рабочей вещи".
289 1361506
>>61492
Эксепшены бесплатны
290 1361508
>>61506
Как минимум move-конструкторы с пометкой noexept быстрее тех, которые потенциально могут выбрасывать эксепшоны. Тут вопрос стоит в оптимизациях, которые может сделать конпелятор и эксепшоны могут сильно его ограничивать в этом.
291 1361510
>>61506

>Эксепшены бесплатны


Бесплатны когда не используются. Когда эксепшн бросается, то оверхед на поиск хендлера там достаточно большой.
292 1361512
когда придешь на фирму, на поддержку существующего проекта, очень будешь расстраиваться если там у них свои контейнеры нахуеверчены, смартпойнтеры и прочая поебота
обычно пишут это "охуенные" перцы типа чела сверху, через годик сваливают на свежий проэкт, а челяди потом страдай
293 1361513
>>61512
ах, да, самая мякотка - зачастую пишется все это под большую нагрузку
но клиентская база не набирается, проект выстреливает, но слабенько
и вся эта мега-система нагружается процентов на 10%, а кода то дохуя понаписано, типа с учетом расширяемости и прочего говна
так и шевелится потихоньку
294 1361522
Ньюфаг вкатился. Читаю Страуструпа, дрочу мдсн, паттерны, компиляторы, через 5 лет становлюсь тимлидом. Подводные?
295 1361524
>>61506
Вот это обосрамс. Тебе в жаба тред нужно.
296 1361528
https://pastebin.com/nN9DN9Nx как исправить ошибки в 64 и 70 строке?я хочу в первый поток послать первую строк,во второй-вторую и тд
297 1361541
>>61528
https://pastebin.com/TF8N1z81 изменил,ошибки исчезли,но все равно выдает ошибку
298 1361578
>>61522
кресты становятся все более узкоспециализированным языком, что используются в нескольких сферах
число вакансий с каждым годом меньше, в то время как специалистов не становится меньше
299 1361628
>>61578
Тогда вкатываюсь в ядро, пилю гипервизоры. Становлюсь кернель/кор/енджин архитектором, перекатываюсь в шышыа. Подводные?
300 1361634
>>61628
Зачем тебе кресты вообще для вкатывания? Это ультрахард-мод. Выбери стек попроще.
301 1361639
>>61634
А если к примеру потратить на изучение 2-3 месяца а потом внезапно перекатиться на другой язык, эти 2-3 месяца совсем в пустую будут потеряны или в чем-то это поможет если вдруг не осилю совсем? мимодруговкаталец
302 1361653
>>61490
Эксцепшены - это источник проблем в ряде случаев. Вот некоторые сценарии, о которых я знаю (из своего опыта):
- Многопоточная прога. Главный поток запускает выполнение некоторого действия во вспомогательном потоке. Действие может обвалиться с ексцепшеном. Ты его должен естественно перехватить там, во вспомогательном потоке. Причём, в том числе с помощью catch(...) {} (т.е. без указания конкретного типа ексцепшена). Ты не можешь ексцепшен передать в главный поток. Особенно, когда ты не указываешь конкретный его тип. Вот допустим, там в главном есть некое место, где проверяется, выполнено ли уже наше действие во вспомогательном потоке, или нет. А если выполнено, было бы круто ексцепшен из вспомогательного ввернуть прямо сюда, и обработать всю эту бадягу. Но нет - так невозможно.
- Смешение различных языков. Допустим, у тебя есть прога на C++, которая использует библиотеку на C. Например, эта библиотека для работы с jpeg файлами. Там, есть возможность предоставить callback для чтения самого этого файла. Ты его реализуешь в твоей проге на C++. Но ексцепшены бросать из него ты не можешь, хотя хотелось бы, чтобы они достигли твоей главной проги, пройдя сквозь код библиотеки. Не можешь ты бросать, т.к. это может поломать всё внутри C-шного кода. И тут засада. Т.к. например, C-шная библиотека может молча сглотнуть ошибку в callback-е, и вызывать его снова и снова до посинения. Или может вернуть некий обобщённый флаг "Ошибка", не раскрывая её сути. Ексцепшен же мог бы прекратить всю эту шизу на корню (хотя впрочем я не очень прав. другая библиотка может перехватить исключение и заглушить его точно так же). И ексцепшен может донести инфу до основного тела проги во всей её полноте.
303 1361655
>>61628
>>61628
аппаратная виртуализация - нужны были инженеры в нулевые, не было софта
это десятилетие - софт виртуализация, вернее ее второй круг - докеры там, кубернеты и прочее - нужны были инженеры 5 лет назад
ппц, ты на 15 лет в общем опоздал, даже не мечтай
304 1361659
>>61653
бла-бла-бла
страуструп ввел инсключения в крестах по вполне практическим соображениям, а именно чтобы возвращать ошибки из конструкторов и при пользовательских перегрузках операторов
и тогда же предложил способы снизить зависимость от исключений - а именно не конструировать классы напрямую, а делать различные фабрики, в том числе и универсальные
а при проектировании классов помимо пользовательских операторов добавлять методы доступа, дублирующие функциональность операторов, но возвращающие код ошибки, а не бросающие исключение
таким образом, исключения изначально предполагались лишь как некое узкоспециализированное средство для решения конкретных проблем, возникающих при проектировании иерархии классов, но не как универсальный способ обработки ошибочных ситуаций
как всегда, лучший способ - срединный путь, а именно использовать исключения только там где они нужны и все
305 1361661
>>61639

>эти 2-3 месяца совсем в пустую будут потеряны или в чем-то это поможет


Если с си начнешь - поможет. С С++ - только время потеряешь, потому что в большинстве книг обычно вначале дают ООП, а оно в крестах своеобразное, и этот опыт мало куда применить можно.
306 1361664
>>61639

>потратить на изучение 2-3 месяца


в конце третьего месяца ты, конечно же, будешь ебашить обобщенные лямбды, статический полиморфизм с использованием crtp и заниматься кодогенераций через метапрограмирование с использованием value-based подхода, потому что путь через частичную специализацию уже давно не тру!
15423070053293.jpg66 Кб, 460x622
307 1361669
Всё закончил читать "Эффективный и современный С++" от Скотта Мейрса, понял 50-60%. Это нормально или я тупой?
308 1361674
>>61655
Ну в основе то ядро. И кто-то должен все это дело поддерживать. Вангую в 20 годах будет повторение 80ых, вон сколько уязвимостей в архитектурах обнаружено за последние пару лет, будут все переделывать.
309 1361677
>>61659
как же меня это бесит. ему рассказывают про существенные, такие, вещи - а он "бла-бла-бла". вот думал - ладно там всякий сброд с улицы. с ним всё понятно, что мудаков и придурков там выше крыши. но мы-то, программисты, вроде вменяемые все люди, поймём друг друга, и найдём общий язык. увы, я страшно ошибался. мудаки проникли буквально повсюду, даже среди нашего круга. вот прямо сейчас с ним я общаюсь. мир прогнил до основания, увы. и завтра коллега-программист, устроит подлянку и какую-нибудь пакость другому программисту. выебет его жену, и выкинет на мороз и из работы, и из семьи

как всегда, бла-бла, срединный путь, бла-бла. исключения следует использовать там, где они приносят пользу. особенно, если дают преимущества перед иными методами обработки ошибок. они позволяют сократить объём кода. не проверять коды ошибок на каждый чих, выписывая их обработчики. то для чего они там придумывались, дело десятое. творение ушло из-под контроля автора, и начало жить своей жизнью. про конструкторы - да, они там приносят пользу.
310 1361678
>>61669
не нормально, там ничего запредельного нет, по сути объяснение технических моментов
сложности начинаются когда пытаешься спроектировать библиотеки или прикладной код с использованием новых средств
если говорить образно, в этой книжке описывается как точить топор и править зубъя пилы, а не как с помощью этих инструментов строить дом
311 1361679
>>61677
исключения в с++ нужны для обработки ошибочных ситуаций в конструкторах и пользовательских операторах
точка
а?
я то конкретно написал, в отличие от
c.png17 Кб, 558x250
312 1361680
Подскажите, а то мозги уже отключаются. Почему эта ..ня не компилируется
https://github.com/sonoro1234/LuaJIT-ImGui

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

Как ему можно ее задать в ручную?
313 1361681
>>61664

>метапрограмирование


Честно, я боюсь появления метаклассов, потому что считаю, что они могут наворотить кучу хуже самой тёмной темплейтной магии. Это нормально?
314 1361682
>>61678
У меня слабая база было до прочтения книги, один Шилдт
315 1361684
>>61634
Так я не совсем с нуля. Вкатывался с аутоита, жс, питона и C#. Но это все либо веб-помои, либо клепание формочек. Хочу системщины.
316 1361685
>>61681
Поддвачну. Лучше бы макросы как в расте сделали, где хоть с системой типов бороться не надо генерируя нечитаемый говнокод, а тупо хуячишь кодогенерацию на нормальном языке (по сути пишешь плагин для конпелятора), а компилятор сам следит за областью видимости переменных.
317 1361687
>>61679
нет, вообще не точка. в конце-концов, не нам решать за всех, как им применять исключения. иные в них находят даже способ элегантно выйти из вложенных циклов, рекурсивных вызовов и прочей марахайки.
каждый дрочит как он хочет
giphy.gif1,5 Мб, 419x266
318 1361694
>>61664
>>61661
Тогда буду шатать до победного fpfpfpfpfpff
319 1361836
>>61685
Макросы являются гораздо большим злом, чем теймплейты.
plusi.PNG2 Кб, 403x107
320 1362001
Как же я люблю плюсы... Это работает, если че)
321 1362018
>>61836
Это в реалиях C++, где выхлоп макроса имеет область видимости такой же как и у определения макроса. В расте у макроса область видимости ограничена только определёнными внутри выхлопа макроса переменными и аргументами и любые глобальные переменные недоступны.
322 1362056
>>62001

>Это работает, если че


А почему оно не должно работать? Можешь написать +1-1+1-1... и оно тоже будет работать.
323 1362062
>>62056
Да ниче, прикольно просто.
324 1362069
>>62001
Такая-то обфускация))))
1377936994798.jpg82 Кб, 512x512
325 1362118
>>62001
Подучи Си.
Алсо,

>венгерская нотация

326 1362119
традиционно считается, что человек должен освоить дело, которое обеспечит ему безбедную жизнь
327 1362120
когда сбор урожая закончен, желтые нагорья теряют свой цвет
328 1362130
>>62118

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


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


Лол
Алсо,

>венгерская нотация


Это член класса CWinApp, от которого наследуется класс. Это MFC приложение, если че. Вы наверное в своей шараге его еще не проходили
.PNG25 Кб, 546x155
329 1362133
330 1362134
мастер может лишь провести вас через дверь: все остальное вы должны сделать сами
331 1362144
Как сделать чтобы switch при выборе варианта не заканчивал программу, а дал выбрать другие варианты?
332 1362146
>>62118
Двачую. Помню увидел в каком-то крутом опенсурсе m_ приставку и начал везде ее приписывать не зная что это. Когда узнал, дико проигрывал с себя.
333 1362147
В треде есть разбирающиеся в мэйкфайлах?
334 1362158
>>61422
А что вместо if использовать, switch что ли?
335 1362161
>>62147

>В треде есть разбирающиеся в мэйкфайлах?


В мейке - да, автомейке - нет.
336 1362169
>>62146
Приставка m_ ещё ладно сам так пишу, но p - совсем никуда не идёт.

>>62130

>Это член класса CWinApp, от которого наследуется класс


Прощается
337 1362171
>>62144
В конце каждого кейса пиши break.
Ну и свитч тогда должен быть в цикле. Посмотри выше, там где-то у анона с проблемной пятёркой в массиве был код такого свитча.
338 1362174
>>62161
https://github.com/sonoro1234/LuaJIT-ImGui/blob/master/CMakeLists.txt
вот в этом
72 строка get_target_property(SDL_INCLUDE SDL2::SDL2 INTERFACE_INCLUDE_DIRECTORIES)
Она что делает? Я ей уже куда только эти инклуды сдла не пихал. Все остальное видит, а эту хрень - нет. Я так понял, что она и создает переменную SDL_INCLUDE, только вот вот откуда она ее грузит не понимаю.
339 1362176
>>62158
Нет, в приличном обществе теперь совсем без if и for, только ооп или функциональщина.
sage 340 1362177
>>62130

>Это MFC приложение, если че. Вы наверное в своей шараге его еще не проходили


MFC где-то кроме шараг проходят?
341 1362181
>>62176
Я наоборот слышал что ООП не актуаелен, ну в других языках.
342 1362182
>>62130

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


Так-то все настоящие программисты смотрят аниме
343 1362184
>>62176
Как без IF то блять? А без циклов как? Что-то ты пиздишь.
344 1362185
>>62184
Справедливости ради в нормальных языках все циклы спокойно заменяются лямбдами и специальными функциями для итераторов. C++ очень особенный в этом плане, что у него нереально ебанутые итераторы и функции для работы с ними. В С++20 что-то там пытаются упростить при помощи ranges, посмотрим что у них получится.
345 1362188
>>62185
Ты можешь пример кода привести? Я ньюфаг и не понимаю, как можно заменить базовые конструкции if/else и циклы for.
346 1362191
>>62174

>вот в этом


Это cmake. Он от мейка отличается как джава от джаваскрипта.

>Она что делает?


Она работает только если SDL_IMPL включен, и у тебя несистемная версия SDL. Тогда все переменные ты сам должен задать, например через define_property.
347 1362193
>>62171
И так написан.
При попытке вывести что то больше одного варианта и пиздос.
348 1362194
>>62188
Я другой анон, но
1) тернарный оператор. Не совсем замена if/else, но все же. Однако в прошлом(или позапрошлом) треде были разборки, что все же лучше.
2) range based for - не совсем замена, но уже не for со счётчиком. А вообще - std::for_each, std::find и т.д.
349 1362196
>>62193
Так ты за одну операцию считывания хочешь несколько срабатываний кейса? Интересный ты.
Хоть код заскринь, покажи нам.
350 1362200
>>62194
Но тернаный оператор это же пиздец и считается плохим тоном. Не уверен что его вместо if/else используют.

>std::for_each


Но это же просадки по пермофансу, нет? И по сути оболочка над тем же циклом for.
351 1362203
>>62191
Спасибо, что хотя бы указал куда копать.
Т.е. мне перед этой строчкой просто вставить такую define_property(SDL_INCLUDE с:\SDL2\include)
352 1362206
>>62188

> как можно заменить базовые конструкции if/else


https://godbolt.org/z/HEcfUQ
353 1362207
>>62196

>Так ты за одну операцию считывания хочешь несколько срабатываний кейса? Интересный ты.


За несколько операций считывания.
Нажал первый раз - вывел кейс 1.
Нажал второй раз - вывел кейс 2.

А он после первого выводит кейс 1, а после второго закрывает окно вывода.
354 1362208
>>62206
Только я во втором примере перепутал местами if/else. Но я не PRO, а только учусь.
355 1362210
>>62200
Ну, когда как. Как по мне - иногда можно и использовать: у меня было два разных map-а, и в зависимости от результата тернарного оператора выбирался нужный для вставки, а с ифом было бы больше кода.

А насчёт стоимости функций из <algorithm> - не в курсе, на самом деле. Но выглядит лаконичнее, однако.
356 1362212
>>62208
В визуал студио не компилится такое.
357 1362213
>>62212
Надо C++17 включить. У тебя небось только C++11 включён.
358 1362214
>>62213
Ну или заменить constexpr на static. Всё равно я его только для КРУТОСТИ добавил. Так от него толку и нет.
359 1362218
>>62213
Пиздец, эти кресты блять как болото какое-то. 3 месяца учу, нихуя в итоге не понимаю до сих пор. На работку планирую в 20-21 году, мне вообще нужно учить старые стандарты? 11 там, 14? Или лучше полировать 17 и готовиться к 20?
360 1362221
Как правильно читать книги по плюсам? Медленно, вдумчиво, печатать весь приведенный в примерах код самому или воспользоваться техниками скорочтения? Дискасс.
361 1362222
>>62207
Уууух, разобрался.

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

Мог накосячить где-то, на самом деле.
У тебя как выглядит? Принеси уже свой код.
363 1362237
>>62223
Я разобрался сделав три свитча. И сделал файлы, ибо объяснял всрато.

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

Да, да, это тот от вида кода которого тут плевались. Для меня так удобно.
364 1362261
>>62237
я тоже не магистр кодинга, но я бы сделал так.

>не всратый ли это вариант


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

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


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

>Для меня так удобно.


Да пиши как хочешь, боже. Вон я каждый кейс выделяю фигурными скобками, if-ы тоже - даже если там один оператор всего.
Только будь готов к тому, что когда начнёшь работать в команде, тебя за такое будут ругать.
365 1362265
>>62237
>>62261
Можно ещё для пущей правильности все vec.begin() и vec.end() заменить на vec.cbegin() и vec.cend() соответственно. Если не меняем элементы, то есть смысл взять константные итераторы.

А ещё почему-то std::min работает в этой ситуации, а std::max возвращает какой-то мусор. Судя по cppreference они не совсем для этого предназначены.
Потому max/min_element.
366 1362286
>>62237

>Не всратый ли это вариант решения моей проблемы?


Научись сначала код форматировать. Сейчас это тупо читать больно.
367 1362296
>>62261

>векторы


У меня половина курса шараги на С++. Я не знаю что это.
Но читал про них. Спасибо.
>>62286
Он читабельный для меня. Мне этого достаточно.
368 1362298
>>62296
Это всё стандартная библиотека, изучай потихоньку я тоже этим сейчас занимаюсь.
Твой код можно скомпилить как сишный(кроме комментов - это C++ стайл), а мой - уже нет, как раз из-за использования std.
369 1362299
>>62298
ну и кроме вывода, конечно же.
самофикс
370 1362305
>>62185

>ranges


>упростить


Именно, что пытаются. Но не получается.
371 1362311
>>62296
А, да.
Не забудь в случае среднего разделить результать std::accumulate на vec.size(), т.к. эта штука только сумму элементов считает.
15522146770640.png708 Кб, 960x849
372 1362312
373 1362317
>>62206
Унарный плюс кастует лямбду к указателю на функцию, да? У лямбды точно вызовется деструктор в таком случае?
374 1362319
>>62317
Унарный плюс работает только с теми лямбдами, которые (1) могут быть приведены к указателю на функцию (потому auto-аргументы не работают) и (2) которым деструктор не нужен (потому захватывать ничего нельзя).
375 1362322
>>62319
Ты настоящий PRO. Но в своём коде этим я пользоваться не буду.
Алсо, ещё один совсем уж выпендрёжеский способ избавиться от if/else -- branchless маскирование (x = cond ? b : c <==> x = (cond & b) | (!cond & c), или _mm_blendv_pd). Хотя это и в обычных сях можно.
376 1362325
>>62206
какой трешак
welcome to 2014.png1,5 Мб, 990x891
377 1362330
>>62325
Добро пожаловать в плюсы. Так писать не надо, но надо знать, что такое есть.
378 1362363
А почему обычный массив без указания размера объявить можно:

>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'ов происходит раздельно, в отличие от переменных? Ткинте, пожалуйста, в какое-нибудь информативное описание этого, не помню, чтобы такие детали упоминались во всяких типичных книжках о классах.
изображение.png47 Кб, 558x388
379 1362372
Сап, мне нужно достать из файла сериализованный массив данных и десериализовать, как написать доставание из файла и десериализацию этих данных?
380 1362374
>>62372
Руками попробуй.
Ну реально, с такими вопросами - вон из профессии.
381 1362375
>>62325
>>62330
Неосиляторы порвались)))
382 1362379
>>62374
ну у меня с файлами проблемы, я не могу понять как это написано и что выполняет, а не понимая суть сложно написать.
383 1362380
>>62206
Нахуя вообще такой блядский код писать? Чтобы потом самим запутываться и никакого плюса производительности он не дает.
384 1362381
>>62374
сможешь обьяснить строки? мб тогда пойму как реализовать то что нужно.
385 1362383
>>62372
Тебе в C тред с такими вопросами, либо перепиши без void((f[]())()
386 1362386
>>62381
Код на скрине просто берёт и побайтово копирует память из адреса A в адрес B, промежуточно пихая его в в char массив Mas, который, видимо, и будет писаться в файл, а при загрузке данных из файла ты получишь тот же массив Mas.

Найди, как записать данные в файл бинарно, как прочитать бинарный файл. Вставь этот на строке до "//Десериализация" и готово.
387 1362387
>>62386

>копирует память


данные из памяти

>пихая его


их
388 1362389
Аноны, подскажите про миграцию, большая ли потребность в крестовиках за бугром?
15426720365540.jpg24 Кб, 468x520
389 1362390
>>62237
Бля чел, ну прям очень говнокодом воняет. Почему бы просто все не сделать через else if. Зачем ты каждый раз, для нового свича, создаешь новую переменную v. Ты можешь просто создать одну и в неё все записывать. Я уже даже не говорю от том какие ты создал функции и как ты их используешь.
390 1362392
>>62372
Ты этот вопрос неделю назад задавал. Я тебе код скинул, как сериализовать и десериализовать из файла. Но ты походу нихуя не понял. Ты сначала подучи, что такое указатели, массивы, байты, адреса, это элементарные вещи в C++. И только потом сериализацией занимайся.
391 1362393
>>62237
Говорю, поставь себе студию или хотя бы Dev C++, он поможет тебе форматировать код.
392 1362408
>>62237
Ты че, долбоёб?зачем я спрашиваю - анимешник же
Нахуя тебе свитч только для одного case?
Выкатывайся - программирование не для тебя.
393 1362441
>>62408

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


>аряяяя дебил выкатывайся


Классика.
394 1362444
>>62390

> не сделать через else if


Уже понял что с ним лучше.

>Я уже даже не говорю от том какие ты создал функции и как ты их используешь.


Что с ними не так?
395 1362468
Товарищи программисты, как делают гуй под линукс? Gtk это гном хуита, Qt норм и swing-параша.
Можно ли самому захуярить отрисовку через opengl/vulkan всякие?
396 1362543
>>62468

>Можно ли самому захуярить отрисовку через opengl/vulkan всякие?


Смотря что тебе нужно. Берешь что-то вроде imgui или nanovg и хуяришь.
397 1362545
>>62389
Лучше rust или go ботай. Там зарплаты выше и проекты интересней. Кресты - это или легаси вилкой ковырять или в геймдеве работать по 100 часов в неделю.
398 1362548
>>62545
Двачую за rust.

мимо-бывший-плюсовик
399 1362551
>>62545
А нахуй плюсы в гейдеве, че там каждая контора свой движок мутит?
400 1362557
>>62551
Потому что аналогов нет. Си слишком пиримитивный, а всё остальное слишком медленное. Если бы в D не впихнули полу-обязательный GC (без которого даже сегодня стандартная библиотека работать не будет), быть может он и взлетел.

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

Ну и возможность придумать свой собственный ЯП и приделать к нему LLVM в качестве бекэнда появилась относительно недавно, да и всё равно требует огромных вложений.
401 1362565
>>62551
Гейдев это либо Unreal Engine (C++), либо самопальный говнодвижок (Обычно C++), либо Unity3D (C#).

В 99% для нюфань это будет юнити, по-этому лучше шарпы ботать.
402 1362581
>>62565
В небольших студиях или одиночки редко берут эти варианты, поэтому нюфане эти движки учить не стоит.
403 1362600
>>62375
какие неосиляторы, клоун? То, что я не пишу такой говнокод, это не значит, что я не могу его писать.
404 1362629
>>62545
Как перекатиться в другой яп, если на плюсах опыт и зп? Опять джуном за 30к идти?
405 1362633
>>62629
Есть вакансии cpp/java to rust. Там зп раза в полтора больше будет, чем у плюсовика того же уровня
406 1362653
>>62600

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


>это говнокод


Понятно уже, что ты дебил, только не плачь
407 1362656
>>62653
Причем тут паттерны?
408 1362709
>>62653
b = arr[(int)(a > 0)](a);

охуенные у тебя паттерны
409 1362778
>>62565
Шарпы редкостное дерьмо, недавно писал на них, просто разрыв глаз, как на таком помое только пишут.
изображение.png114 Кб, 1920x1080
410 1362786
>>62392
в целом я понял, просто детали осталось понять, в группе ебоклаки просто копируют и готово, я так хуй чё смогу потом, нужно идеально понимать, чтобы применить в разных ситуациях, почти дописал функции, получилось что то такое, осталось чтение сделать, пока думаю как.
411 1362788
>>62392
с твоего примера погуглил все команды, это понял, но у меня тут мешанина из си и крестов, и нужно это совместить, вот и пытаюсь понять.
412 1362789
>>62786
Что там понимать? 2 с половиной указателя, цикл и методы ifstream?
413 1362790
Мне тут анон советовал навернуть cs50 для изучения c++. Так вот вопрос, что мне нужно запоминать при просмотре? Очевидно что там все по другому и получается если учить строго по cs50 то ты по сути учишь уже C. Так вот, имеет ли смысл просто просватривать лекции запоминая общие моменты без переписывания и выучивания (что для c++ я как раз делаю), а то это параллельное изучение двух языков получается и так можно совсем запутаться.
414 1362791
>>62789
методы fstream и как передать и вытащить это из файла, с этим сишным кодом, тоесть во второй функции, сначала достать из файла в массив, а потом уже десериализовать? Тогда ещё вопрос по .read() как он работает, если я хочу бинарные данные засунуть в массив, как корректная запись будет выглядеть?
415 1362792
>>62790
наверни доусона книгу, в своё время охуенно мне помогла, материал преподносится оверохуенно.
416 1362794
>>62792
Какая именно? Чем позднее, тем более актуальный материал или это последовательные части?
418 1362801
>>62798
Как раз его нашел и листал, ну она не такая большая так что наверное наверну её, спасибо.
419 1362806
>>62206
Ну охуеть, ты придумал jump table. Когда-то (лет 20 назад) я увлекался ассемблером под дос, так там такие хреновины сплошь и рядом встречались, особенно в свитчах. Но для двух значений делать jump table имхо перебор.
В твоем случае компилятор уже посчитал четверку во время компиляции и убрал нахрен таблицу функций.
420 1362807
>>62322

> branchless маскирование


в какой-нибудь cuda хорошо заходит, где ветвление - это гроб-кладбище
но в твоем примере ХЗ как оно еще будет работать, если, скажем х - это какой-нибудь указатель
421 1362808
>>62806
Жалко, что если сделать std::cin >> a; ни один из конпеляторов не сможет заинлайнить функции.
422 1362810
>>62808
проще тогда уж так написать https://godbolt.org/z/WK9B8P
423 1362812
>>62810
Ну, мой способ более универсален (хотя всё равно нельзя захватывать переменные).
424 1362816
>>62812
вот с захватом, но там конечно код корявый получается
https://godbolt.org/z/t0FGr_
425 1362818
Посоны, как прочитать и записать двумерный массив (массив массивов точнее) в бинарный файл в бинарном виде?
Я хуею с кучи указателей в ваших плюсах

fout.write((char )M, sizeof(M) * n);
Это для одномерного, а для двумерного как?
426 1362820
>>62818
Ну можно сделать так:
[4B] - размер массива
{
[4B] - размер внутреннего массива
{[...], ...} - элементы внутреннего массива
} - элементы внешнего массива

То есть сохранять сначала размер массива, а потом его содержимое.
image.png883 Кб, 830x588
427 1362821
>>62820
Не понял :(
428 1362823
>>62821
Допустим есть массив
{
{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 - размер внутреннего массива, создаёшь его и копируешь данные (их количество уже известно) и так повторяешь для каждого внутреннего массива.
429 1362831
>>62818
Открыл файл потоком, считал первую строку, в которой размерности массива написаны и пошел n раз считывать в массив размера m каждую строку.
Запись - ещё проще, записал размеры и просто всю строку передал потоку через <<.

Еба какую штуку нашел, надо запомнить:
std::ifstream f("test.bin", std::ios::binary);
std::vector<char> v(std::istreambuf_iterator<char>{f}, {});
430 1362832
>>62818

>Я хуею с кучи указателей в ваших плюсах


Так используй векторы.
Вся сериализация десериализация должна быть написана на функциях или операторах типа << подобным образом:

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 сериализация по месту написания кода
430 1362832
>>62818

>Я хуею с кучи указателей в ваших плюсах


Так используй векторы.
Вся сериализация десериализация должна быть написана на функциях или операторах типа << подобным образом:

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 сериализация по месту написания кода
431 1362843
>>62392
Блять наконец сделал эту хуйню, загвоздка была в том, что я не знал как ввести из файла, через read не получалось, через 2 часа нашёл что можно file>>array, и сработало, либо сегодня у препода попрошу обьяснить файлы, либо работа с файлами в дальнейшем будет пулями а я нео, но это такое себе, на жабу перейду потому что в ЕРАТ хочу распределиться, а вдруг там тоже есть, нужно вникнуть, но я чуть не выпилился, вроде всё знаю, лабы ебу как говно, а ебаные файлы уже год преследуют и всегда туплю.
432 1362845
>>62843
Только учти, что тебе нужно не столько файлы, а сколько потоки у него спросить.
Ты-то с файлом можешь работать как с cout/cin, через << и >>, но там тоже свои загвоздки есть. Тебе повезло, что у тебя в файле все было "одинаковой" структуры.
Например, в bmp-файле тебе надо будет считать два разных по размеру хедера и сами данные, а >> если и справится с такой хуйней, то с бубном - я только через ifstream::read() как раз делал.
А это, как понимаешь, не единственный вид потоков в плюсах.

И нет, в джаве такого нет, не парься.
433 1362848
>>62441

>спрашивать совета по проге с первых страниц Шилдта


>на дваче


>полагать, что не дебил

434 1362861
>>62848

>книга по изучению языка


>всё равно читать жопой и не понимать


>идти на двач спрашивать


>встречайте новое поколение программистов

435 1362924
Что нужно делать чтобы стать хорошим уметь писать сложные алгоритмы программистом на плюсах? Пол года всё свободное время трачу на изучение программирования и с каждым этапом понимаю что этапов становиться только больше
436 1362935
>>62924
Писать код. Ничего более. Опционально - смотреть всякие сипипиконы
437 1362942
Поясните, зачем нужен указатель на функцию? так и не нашел практического применения для него, это для дедов?
438 1362946
>>62942
как минимум предикаты для алгоритмов. И всякая функциональная параша вдогонку.

даже в сишечке это использовалось в qsort.
439 1362947
>>62942
Использовалось для колбеков, сейчас завезли функциональные объекты и т.п.
440 1362991
>>62942
Чтобы не писать на хаскеле.
441 1363010
>>62942
в си необходимейшая вещь
системы компонентного программирования (com, gtk), вообще любой интерфейс к сложной либе основывается на комбинации структур и указателей на функции
небходимы для параметризации поведения (не данных), необходимы для ручной реализации динамического полиморфизма, вообще для эмуляции элементов ооп и функциональных парадигм
442 1363013
>>63010
плюс механизм dynamic loading библиотек основывается на получении адресов функций из библиотеки и вызов их по указателю..
да много чего еще..
вообще любая сложная система сделанная на си, будет состоять по итогу из мешанины макросов, структурок и указателей на функции..
443 1363062
Свидетели Qt,у меня есть большое изображение, которое ресайзится под размер окна и выводится в Qlabel,нужно на нём отметить прямоугольник по двум точкам, как можно попроще соотнести клик мыши и координаты оригинального изображения?ну или мб есть другие варианты
image.png5 Кб, 414x40
444 1363113
Всегда мучил вопрос, почему в плюсах такие бешеные названия переменных? нахуя столько ________suka_______
445 1363115
>>63113
Чтобы случайно не было конфликта имён с твоим именем suka. Очевидно же
446 1363117
>>63115
ебануться, а более умного ничего не могли придумать? У меня так одногрупник на 1 курсе имена переменных давал
447 1363120
Ананасы, в проекте есть куча флагов компиляции. Можно как-то намекнуть системе сборки ебаный qmake, но можно быстро склепать под cmake, чтобы при указании мной каких-то конкретных флагов пересоберались только те файлы, которые должны поменяться? А то ждать по полтора часа, пока проект пересоберётся немного надоело
448 1363121
Скорее всего тупой вопрос. Есть ли в C++ генератор псевдослучайных чисел, который мог бы мгновенно переключать seed, а не через секунду? Стандарт точно старше 11.
449 1363122
>>63117
Ну, неймспейсы есть, и даже используются, однако так всё равно делают.
450 1363123
>>63117
Твой вариант?
Sc--1.png5 Кб, 310x236
451 1363125
В чём разница между объявлениями?
452 1363130
>>63121
Ладно, скажу проще. Мне нужно равномерное распределение по заданному диапазону целых чисел.
453 1363133
>>63130
Ну еб твою, стандартная библиотека тебе на что: https://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution

>>63125
В том, что первый вариант не компилируется. А если я правильно понял то, что ты хотел, то вот: https://gcc.godbolt.org/z/DM_fUr
454 1363134
>>63125
На интуитивном уровне могу сказать, что в первом случае у тебя есть шаблонный конструктор, который принимает ссылку на объект Ui<T>, где T может не совпадать с типом T у объекта, у которого вызван конструктор копирования (есть небольшие сомнения, что компилятор пропустит такой трюк). Во втором случае это обычный конструктор, принимающий ссылку на объект Ui<T>, где T такой же тип, как у класса объекта, у которого вызывается конструктор

Мог сказать полную хуйню, пусть более умные аноны поправят
455 1363135
>>63133

>since C++11


Ладно, попробую. Вдруг я ошибаюсь.
456 1363141
>>63062
aspect_x = ScreenWidth / ImageWith
aspect_y = ScreenHeight / ImageHeight

Умножаешь х и y на координаты мыши
457 1363144
Помогите нуфагу
Поля класса нужно указывать в .h файле, верно?
458 1363150
>>63144
Можно в любом месте, у тебя вообще может не быть хидеров.
459 1363155
>>63133
Оба варианта компилируются. Но по примеру понял, что шаблон для конструктора копирования даёт возможность копировать объекты разных типов, а без шаблона нужно только точное соответствие.
460 1363183
Как получить относительный путь к файлу когда компилируешь приложение на Qt? Нужно сохранить иконки, но при запуске на другом компьютере картинок и иконок нет. В инете загуглил как вопрос, нашёл только способ получить относительный путь из абсолютного, а как быть когда при запуске уже должен быть получен относительный?
461 1363185
>>63155

>шаблон для конструктора копирования даёт возможность копировать объекты разных типов


тут есть несколько тонких моментов - как минимум, этот шаблон НЕ отменяет того что сгенерится и конструктор по умолчанию
НО при этом этот шаблон будет обеспечивать более лучшее соответствие чем неявно сгенерированный конструктор
при этом есть различные техники (считай трюки), улучшающиеся от стардарта к стандарту, как это поведение обойти, щас делают через стандартизированный enable_if уже
то же касается и перегруженных операторов для копирования или перемещения
462 1363187
>>63185
алсо в будущем потобное можно будет делать через концепты
463 1363226
>>62798
>>62792
Ознакомившись с книгой вынужден констатировать, что она - лютое говно и куда больше запутывает и все упрощает, чем объясняет. Нахуй такие.
464 1363268
>>62942
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. в конце своей функции вызываю оригинальную по сохраненному указателю.
465 1363269
>>63268

> Ну и еще банально указатели используются чтобы подменять чужие функции на свои.


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

А патчить само приложение куда сложнее. Поскольку это требуется при каждом обновлении и всякие anti-tamper защиты могут это сделать практически невозможным.
wallhaven-456443.jpg442 Кб, 1920x1080
466 1363355
>>58809 (OP)
Хеловорлдщик врывается itt. И у меня к вам вопрос, как вы изучали плюсы? Как был построен процесс вашего обучения? Я вот к примеру нашел вроде бы годную книгу, читаю её, выписываю основные положения в тетрадь, тестирую понятое писанием своих хелловорлдов. Но далее наткнулся на сильное усложнение книги, когда мне дают просто новые понятия и определения не давая при этом примеров использования, и так может продолжаться на протяжении 10-20 страниц, и выходит что изучать язык приходится уже как-то абстрактно, не понимая для чего эти знания нужны и как их конспектировать нет ну я конечно все равно разбираюсь, но процесс идет сложнее. Как было у вас? Как вы постепенно повышали уровень сложности сохраняя при этом понимание пройденного материала?
467 1363371
>>63355
у тебя безумное количество материала в интернете. Что-то не понимаешь - гугли тему, пока не поймешь.
468 1363374
>>63371
Это понятно, вопрос в системности, типа от простого к сложному, а не так, что сначала учишь А, потом Щ, потом Ъ, а потом глаголы. И где-то на 537 странице тебе показывают что из букв складываются слова. Поэтому и хотелось узнать как учили те, кто уже работает теперь.
469 1363391
Аноны, я тут спрашивал про сериализатор в 82 треде, написал уже. Но ситуация такая: сериализация происходит при выходе из приложения, но если оно будет завершено аварийно пека потухнет там, или пользователь процесс завершит то что делать в таком случае?
470 1363399
>>63374
я освоил азы уровня классов\указателей, потом писал всякое говно, пока в голове не появилась мысль о том, что я действительно понимаю, чт оделаю
471 1363400
>>63391
Если питание пеки выключается, то сериализации не будет. Дизайн говно.
472 1363402
>>63400
Я про это и спрашиваю. Как исправить?
473 1363403
>>63402
Сериализовать в другой момент времени?
Или, допустим, делать как микрософт, который в скрытый файл автосохраняет некие промежуточные копии, и потом он их видит и предлагает восстановить
474 1363404
>>63355
Привыкай гуглить непонятное, нуб.
475 1363406
>>63404
ой ну спасибо блядь, а то я сам не догадался бы, а на каком сайте гуглить не подскажешь?
Да инфы и в самой книге предостаточно, вопрос был не в этом. Скорее нет задач на примере которых можно было бы постепенно использовать знания, потому и спрашиваю как этот процесс шел у вас.
476 1363408
>>63355

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


Никак. Я в детстве читал учебник по физике, не понимая формул - я пропускал формулы. Потом, будучи уже подростком, я так читал Кнута - формулы, конечно, я понимал, но не пятиэтажные интегралы и тем более не программы на его варианте ассемблера. Я читал то, что было интересно, не особо заморачиваясь такой вещью, как 100% понимание.
Апофеоза это достигло при обучении в бауманке, когда вся информация по тому, как сделать домашку - это методичка на 30 страниц, напечатанная в 1986-м году, а сдать его нужно завтра, потому что семестр ты ебланил.

С чего ты вообще взял, что при обучении можно избежать стресса непонимания и существует какая-то системность, которая неизбежно приведет тебя к успеху? На самом деле только во время такого стресса и обучаешься. Много стресса, много эмоций - есть эффект. А то, что ты описываешь, годится для того, чтобы стать кассиром в сбербанке.
477 1363409
>>63406
Я лично читал книги чтобы получить знания, но естественно на 100% ты весь материал не запомнишь. В основном чтобы хранить в голове возможность чего-то, а при надобности гуглить и изучать более подробно и вклинивать в проект. Заучивать каждый пример из книги наизусть я смысла не вижу.
мимо
изображение.png1,1 Мб, 960x640
478 1363414
>>63409
>>63408
Понял принял
479 1363473
>>63268

>GetProcAddress


Мдемс, сейчас бы юзать функции маломягких вместо того чтобы реализовывать их самому.
480 1363504
Не знает ли тут кто алгоритма вычисления солнечного света в minetest?
Специально копал глубокую дырку от поверхности, чтобы сверху чанки точно точно выгрузились. Но даже после перезагрузки игра определяла, что в этой дырке есть солнечный свет.
481 1363508
>>63473
написание pe loader'ов было развлечением мамкиных хакиров в бородатые девяностые
хотя скорее всего ты вообще не понимает того о чем спизданул
15522981944001.jpg65 Кб, 256x256
482 1363527
Хочу написать игру на С++. Какие есть годные движки? Хочу сделать игру, чтобы она была чисто одним ехе-шником и весила не больше 32 кбайт Чисто челенж, для себя . Какие лучше библиотеки использовать и как добиться того, чтобы все в одном ехешнике было? Наверное нужно компилировать исходные файлы графических библиотек вместе с игрой? Причем уже писал игру, довольно большую на SFML, но может есть что по интереснее? Например 3д движок какой-нибудь?
483 1363533
>>63527

>движки


>чтобы она была чисто одним ехе-шником и весила не больше 32 кбайт



вут

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

так вот без движков ее исходник уже 130 килобайт
484 1363536
Ну вся твоя простыня сводится к тому, что:

> ТЫ ТУПОЙ? ВОТ ТАМ ПРОЦЕДУРЫ, ПОТОМУ ЧТО: GetProcAddress, а не GetFuncAddress


И сам даже не углубился в детали реализации, рофел. Схуяли тебе Васян поверить должен? Может у него даже не винда? Как функция то работает, М?
485 1363538
Стикер512x512
486 1363539
>>63527

>Сап двач хочу игру чтоб весила не больше 32 кбайт


>Какие лучше библиотеки использовать

487 1363540
>>63527
Движков под такие размеры нет, даже какие-то полноценные библиотеки не подойдут. Такое - это самописный рендер (даже opengl не засунешь в эти размеры) и контент процедурно генерирующийся.
488 1363543
>>63527
Есть целая игра на 64кб вроде бы. Загугли, она целиком на асме.
489 1363545
>>63540
Вулкан меньше весить должен
490 1363547
>>63540
>>63539
>>63533
Я просто это https://www.youtube.com/watch?v=OJPrBzBgUoE видео посмотрел и мне стало очень интересно, как они это вместили в 32 килобайта. Ладно, походу чтобы такое сделать, надо совсем про быть. А что тогда для программирования игр на с++ годного есть? И что вообще нужно иметь для начала.
491 1363557
>>63547
Если на плюсах и из движков: Unreal Engine, Urho3D - 3D; Oxygine - 2D. Или взять библиотеку и на основе ее добавить функционал, для простых игрушек и для начала вкатывания - лучший вариант. Например, SDL2.
>>63543
классика демосцены - kkrieger?
492 1363558
>>63557

>kkrieger


Оно, да
493 1363565
>>63527
Обосрался с тебя. Ты сначала хеллоуворлд напиши в 1кб хотя бы, потом поговорим.
494 1363568
>>63527

>SFML


1.5 обёртки над OpenGL без функционала, ееее
>>63557
Без низкоуровневых знаний пилить на движках нормально не выйдет.
495 1363573
>>63568

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


Что именно нужно знать? Битовые операции? Работа с указателями? Что нужно знать, чтобы НОРМАЛЬНО запилить игру на движке?
496 1363596
>>63527

>Хочу написать игру на С++


ты не первый и ты не последний
497 1363601
Бля, хули в плюсах такие низкие зп? Горит от того, что каждый второй смузихлебный JS-прогер или java-макакен получает процентов на 30 больше. Про всякие новые языки вообще молчу.
498 1363605
>>63573

Умение применять низкоуровневые операции в большой базе кода сообразно архитектуре
image.png27 Кб, 900x449
499 1363608
Я знаю тут есть пара анонов которые знают Qt. Помогите разобраться с темой компилирования на андроид: почему не появился пакет для android for armeabi-v7a? Ставил всё по гайду, эмулятор для armeabi работает, но самого пакета нет для откладки/релиза нет.
500 1363620
>>63402
Все равно ты максимально себя не обезопасишь.
Если ты будешь срать и умрешь без агонии ты не досрешь.
Разве что ты можешь использовать инициализацию через new, чтобы твоя ссылка висела в оперативе даже после аварийного завершения программы, а при запуске программы отслеживать предыдущее падение и искать в оперативе нужный участок памяти.
Напишешь сборщик мусора для плюсов как раз.
Заодно, если я неправильно понял последствия забывания delete, аноны меня поправят и обоссут и я об этом узнаю.
501 1363621
>>63620
Да я скорее сделаю так как анон выше рекомендовал. Поудобнее кажется
502 1363622
>>63621
Ты слишком буквально воспринял.
Смысл в том, что реализация качественной защиты от такой хуйни - это задача не для вкатывальщика.
Т.е. ты можешь сделать промежуточную копию создание которой может упасть, значит надо создать ранее ещё одну копию, а ее создание может упасть, значит..., но оцени затраты на обдумывание, написание кода, хранение копий, операцию восстановления - и вероятность падения.
Тебе точно есть смысл это делать или ты так, ради тренировки?
503 1363623
>>63620

> я неправильно понял последствия забывания delete


Неправильно понял. Система всё равно всё очистит при крэше. Некоторые вообще при закрытии программы ничего не очищают и вызывают exit(0), чтоб закрылось быстрее.

Как вариант можно насрать в shared memory и запустить дополнительный сервис-процесс, который не будет давать системе очистить её.
504 1363625
>>63622
Скорее для себя, просто пилю прикладные приложения для личных нужд, может паре друзей скину. В любом случае практика полезна будет
505 1363626
>>63391
Если шнур из пеки вынут, то ничего не поможет. Если пеку решили перезагрузить/выключить, тормози событие, выполняй что тебе там надо, потом выключай/перезагружай.
506 1363663
>>63504
Если я не наебываюсь, то в кубаче чанк это колонна 16х16 во всю высоту мира. И прогружается соответственно только полностью.
507 1363665
>>63601

>на 30 больше


фронт в два раза больше вообще то в среднем зарабатывает
но объяснение этому очень простое и не обидное
508 1363670
>>63663
Меня minecraft не интересует, там-то все элементарно.
509 1363672
>>63665
И какое же?
510 1363680
>>63672
Более квалифицированная работа оплачивается выше.
511 1363896
>>63680
Т.е. передний конец сложнее в изучении чем плюсы?
мимоновый
изображение.png22 Кб, 581x526
512 1363899
Как передать файл в функцию в качестве параметра?
513 1363902
>>63899
сделай i/ofstream наподобие того как ты сделол mnr или m1 или m1bin и передовай. ты явно вместо ifstream/ofstream передаешь строковые литералы
514 1363904
>>63899
Ну так ты и передавай файл, а не строку.
изображение.png31 Кб, 752x635
515 1363906
>>63902
>>63904
Вот так? А как сделать бинарный режим не прописывая названия файлов в функции? Можете написать для меня?
516 1363909
>>63904
А ведь если бы у стримов был не-explicit конструктор из строкового литерала, он бы так и не понял, в чем проебался...
517 1363910
>>63391

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


Старый тред не читал, но ты можешь сделать так: периодически делать сериализацию всей ебалы (снапшот), и дополнительно каждое обновление ебалы тоже сериализовать перед применением (патчи). После этого если видишь снапшот и патчи, то загружаешь снапшот и применяешь патчи, получаешь ебалу.
изображение.png28 Кб, 688x620
518 1363937
>>63902
>>63909
Ладно, я понял свою ошибку.
изображение.png1 Кб, 339x16
519 1363938
Двощ, учу плюсы в шараге, сейчас копался в гугле, и вдруг впервые в жизни наткнулся на запись пикрил, причем два раза подряд, что это такое нахуй? Фигурные скобки, ну и вот эта u после цифоры.
520 1363939
>>63938
u - unsigned. суффикс литерала - указание типа.
https://www.tutorialspoint.com/cplusplus/cpp_constants_literals.htm
фигурные скобки - list initialization
https://en.cppreference.com/w/cpp/language/list_initialization
521 1363941
>>63939
Благодарю.
522 1363945
>>63939

> list initialization


Нихуя. Это uniform initialization. Там коллекции нет, string::size_type - числовой тип, которых хранит длину строки.
523 1363948
>>63945
мне казалось, что любая инициализация со скобочками называется list initialization, вот пример такого применения не только мной:
https://stackoverflow.com/questions/18222926/why-is-list-initialization-using-curly-braces-better-than-the-alternatives
1478508007969.png3 Кб, 436x70
524 1363949
>>63945
Теперь я знаю как пидорасов детектировать.
525 1363950
>>63948
Даже по твоей ссылке на cppreference рассматривается только инициализация с использованием initializer_list. Разрабы C++11 мощно наложили себе говна в штаны сделав для них одинаковый синтаксис из-за чего не всегда понятно что подобная инициализация делает (и даже как называется, лол). Короче хотели сделать как лучше, а получился C++ way. Хорошо ещё пачку UB при использовании не добавили в стандарт, они любят это делать.
526 1363951
>>63950

> Даже по твоей ссылке на cppreference рассматривается только инициализация с использованием initializer_list.


Хотя нет, вру. Там рассматривается и то, и другое. Я просто книгу мейерса читал, где он этой хуйне пару глав посвятил.
image.png93 Кб, 875x438
527 1363952
>>63950
ну, страуструп называет её universal and uniform.

впрочем, униформной такая инициализация называется даже когда там не одно значение в скобках, так что точно можно утверждать, что неверно было бы говорить, что когда одно значение - униформ, а когда несколько - лист.
528 1364005
>>63952
Ты сильно удивишься, если сказать, что 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};
529 1364080
>>59037
Сложных вещей в принципе нет если самому в них специально не вляпываться при проектировании

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

Кресты, не хипстерский язык и лучше всего изучать с каким-нибудь преподом желательно из вуза (сначала си а потом уже ооп), который все непонятные моменты объяснит на пальцах, иначе половину хитрых вещей не поймешь или будешь делать по хреновым примерам из интернета.
530 1364134
>>58809 (OP)
Подскажите какую-нибудь относительно удобную библиотеку для работы с MS SQL Server из C++/GCC под никсами?
531 1364141
>>63547
о! вот и gamedev.ru подвезли! двач становится всё интереснее и интереснее.
сидел на оном сайте несколько лет с момента его открытия в 2002
532 1364144
>>64141

>сидел на оном сайте несколько лет


А что тебя вынудило съебнуть оттудова?
533 1364206
>>64144
интересы изменились. пока был пацаном, всё это штырило. а как работать пошёл программером (и не в геймдев), так другие вещи начали меня заботить, помимо игр. особенно если учитывать, что я для себя выяснил что игры-то не особо доходная работа для программера, и кранчей много.
534 1364210
>>64206
но по прежнему считаю, что 3D графика - это клёво и интересно.
в миллион раз интереснее всех этих блядских вебов, сетей, формошлёпства, и прочего говна.
что с ней может сравниться по интересности - это разработка компиляторов, функциональное программирование.
ещё заходит всякий системный софт, драйвера, программирование для не-x86 систем, микроконтроллеры, вот это вот взаимодействие с электроникой.
интересно было бы ещё наверное ваять бортовой софт каких-нибудь самолётов/подлодок/космических кораблей и спутников/ракет. и прочая оборонка.
вот да - кто-нить здесь на нёё работает? как там?
535 1364214
>>64210
ещё говно, которое я терпеть не могу - вся эта сраная реклама, банковский софт, базы данных, тупой софт вроде MSOffice.

интересно ещё робототехника, embedded, какой-нибудь научный софт, операционки.
536 1364218
>>63527
Повеяло старыми добрыми временами, и демками на 64К под DOS
537 1364221
>>64218
Они ещё там свой код UPX-ом (кажется) сжимали. И вообще, как только они не извращались. И самомодифицирующийся код юзали, и на ассемблере кодили, и процедурную генерацию сцены. И то - это демки были, а не игры.
538 1364275
>>64221

>код UPX-ом (кажется) сжимали


Говно ебаное, сразу определяет петухов. "Экономить" каплю места на диске в ущерб ОЗУ и производительности это типичный современный подход, когда проги жрут гигабайты и тормозят как чушки просто так от нихуя.
539 1364278
https://pastebin.com/Nh2swRfN
нужно умножить матрицы параллельно,но что то не получается.Я вообще правильно все делаю?
540 1364317
>>63938

> вот эта u после цифоры.


Просто интересно, какой курс?
541 1364464
>>64275
Ты хоть знаешь как это работает? Где ты там увидел ущерб ОЗУ и производительности? После распаковки, программа работает абсолютно также, как если бы она не была упакована изначально.
542 1364506
>>63672
За всё платит бизнес и красивая UIшка ему зачастую важнее. Контор, где пишут на веб параше в разы больше, чем контор, пишущих на плюсах и чтобы оставаться конкурентно способными, им приходится как-то привлекать хороших специалистов, иначе те свалят в соседний офис. Поэтому там такие раздутые зарплаты. А ты с плюсами сам будешь стучаться и просить взять тебя хоть за еду.

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

Такие вот дела
мимо плюсовик, работающий за 20к
543 1364507
>>63408

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


Блядь, так "завтра" - это же вагон времени. Всё намного печальнее, когда сдать надо вчера
544 1364510
>>64506

>работающий за 20к


Где, чем занимаешься? Полы моешь?
545 1364527
>>64464
Это анон, судя по всему, ещё и не знает, что такое демо, иначе бы такую глупость не сказал.
546 1364565
>>64278
Все неправильно делаешь, используй вектор векторов для представления матрицы, изучи, как правильно сконструировать std::thread и напиши код так, чтобы у тебя не было race-ов по данным (я вижу там, как минимум, один)
547 1364574
>>64218
Хочу рассказать всем собравшимся, что 64К это не случайная цифра, а проистекает она, как я помню, из-за того что это максимальный размер .com файла в DOS. Ровно один сегмент в 16-битном реальном режиме x86 процессора. Этот .com файл грузится в память, в один сегмент, и запускается. Вот и всё. Предельно просто. Код программы может делать с компьютером абсолютно что угодно, никакой защиты памяти, ограждения от взаимодействия с оборудованием нету. Такие вот времена тогда были.
Можно натворить всё что хочешь. Можно ещё, например, оставить свой код и данные резидентными в памяти после выхода из проги, и заодно переопределить несколько прерываний. Можно вообще, переключить проц в защищённый режим, можно вынести всё что есть на компе в памяти, и установить свои порядки. Ща такого не найти.
548 1364576
>>64506
Жирно.
549 1364584
>>63670
Расскажи))
550 1364617
>>64576
Ты считаешь, что на 20k можно жировать?
551 1364625
Можно ли как-нибудь в range-based лупах сразу получить атрибут объекта? Допустим. у меня список структур, и сами структуры мне не нужны, мне нужно лишь пробежаться по одному атрибуту каждой из этих структур?

т.е. уместить
for (const auto& elem : vec){
int value = elem.value
}
Внутри for().
552 1364652
>>64617
Жирно, ака Толсто, ака Ты толстый тролль
553 1364726
>>64527
а я в нулевые следил за сценой какое то время, скачивал, запускал, интересно было
но следует сказать что узнал я об этом почитывая первые выпуски журнала хакер
так чтож считай что был как ньюфаг с лурочки, лол
оттудаже узнал и про всякий net-art, в том числе и ascii
изображение.png490 Кб, 720x720
554 1364736
>>58809 (OP)
Пиздос, короче:
1. Либо перекатываться на винду, ставить анриал и шататься в сторону геймдева. Во всяком случае учить язык на его фоне.
2. Либо остаться на линуксе чтобы привыкать одновременно и к нему, и шататься в сторону энтерпрайза.
Первый вариант по душе лично мне, тем более что владею графическим софтом, которого попросту нет на линуксе.
Второй вариант кажется более реальным с точки зрения востребованности и ежедневного последующего пиздоса.
У меня паника от неопределенности.
555 1364763
>>64736
Выбирай то, к чему душа лежит.
УЕ4 можно и на лине завести.
556 1364779
>>64763
Завести-то можно, но она там в стадии разработки, да и все остальное там явно к графону не располагает
557 1364831
>>64625
Сделать класс-wrapper над вектором, у которого есть функции begin и end (range-based for их вызывает), сделать, чтобы они возвращали специальные итераторы, которые разыменуются не в элемент вектора, а в атрибут этого элемента.
Но по мне так этот геморрой нафиг нужен, твой range-based и так достаточно читабельный, еще короче вряд ли получится сделать
558 1364866
Ищу анона из nvidia 320к. Хочу ама набираться. Не троллинг.
559 1364867
>>64866
ама-ама-криминал?
560 1364869
>>64866
Как поднять бабла, витя?
561 1364874
>>64867
>>64869
двух шизиков поймал на изи.
562 1364965
>>64779
Еще два года назад собирал и писал под ним, ничего не мешало,ты, видимо, плохой танцор.
563 1365005
>>64965
Просто видел в инете что там какие-то траблы бывают, сам даже не ставил, но для меня как раз принципиальнее именно отсутствие графического софта и о замене блендером и гимпом можно говорить только в том случае если ты уже начал как-то выкручиваться в этих двух прогах изначально, не зная на что себя обрекаешь, либо если у человека вообще не было опыта работы с графикой, это я так к слову
564 1365261
>>65005
Еще и blender тебе не угодил, самая популярная сейчас прога в области моделирования.
Уже пару лет на уече делаем под линем, никаких траблов команда не заметила, багов каких-то конечный продукт тоже не выдавал.
565 1365265
не бейте, лучше обоссыте. начала учить ваш c++, пока что остановилась на указателях. сколько мне лет еще это учить, чтобы стать тру кулхацкером программистом? приземлите кто-нибудь меня, мне кажется, что у меня нет будущего
566 1365284
>>65261
Да вот по сути ты и говоришь то, о чем я говорил, процесс в моем случае выглядит так Открыл макс > накидал болванку > оптимизировал плагином > закинул в зебру > вывел и запек икснормалом > оттекстурировал сабстанс пейнтером > внес правки в текстуру > открыл фотошоп > плагины на плагинах, плагины позволяющие видеть геймтекстуры реалтаймово. И вот после такого пересесть на линукс и начать графонить ну как-то может быть не очень удобно, особенно если тебе вдруг понадобилась какая-то прога под конкретную сиюминутную задачу. У вас же изначально весь флоу в линуксе был. Я же не спорю, что там можно, но зачем если уже освоен в винде. Да и разговор ушел не в ту сторону слишком
567 1365299
568 1365328
>>65284
Ну если в вашей студии уже все заточено на определенные проги, то что тогда.

>> Да и разговор ушел не в ту сторону слишком


Там тебе еще вчера ответили, что бери то, что по душе.

>>65265
Ты знаешь правила, пока даже обоссывать не будем.
569 1365338
>>64506
мы спрашиваем move semantics, шаблоны и эксепшены на собесах.
Внезапно, все это есть у нас в коде.

Мимо-сеньор-помидор
570 1365592
Ананасы, подкиньте идеи для диплома
Чтобы было и интересно и полезно каким-то образом
571 1365651
>>65592
Зареверси MSI Mystic Light, чтобы я мог светяшки переключать без их ебаного говнософта. Я ковырялся с их SDK, но это SDK тупо дергает их же сервис. А надо вообще без софта.
572 1365894
>>65592
Шаблоны как универсальная модель вычислений. Зафигачь машину Тьюринга, алгорифмы Маркова и машину Поста на темплейтах, ревлизуй алгоритмы и поисследуй выразительность языка.
573 1365898
>>65894
Ммм, stateful-шаблончики. Вот препод охуеет от такого кода.
574 1365908
>>65894
А, и лямба-исчисление обязательно (с индексацией де Брёйна)
575 1366005
>>64831
Использовать не собираюсь, но в качестве упражнения решил попробовать реализовать. Ты примерно это имел в виду? 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).
576 1366296
Codewars хуйня или нет? Стоит тратить время на это?
577 1366904
>>63226
после страуструпа это было как что то божественное, а так да, примеры слишком массивные, может просто на контрасте так понравилась, после страуструпа любое говно покажется охуенным
изображение.png300 Кб, 1920x1080
578 1366905
>>62845
ну дальше будет что то такого, поэтому да, нужно спросить, но сначала норм сформулировать
579 1366977
>>66905
Так у тебя есть методичка, а ты за помощью идёшь сюда?
Тяжёлый случай.
580 1367368
>>66977
да, тяжёлый, там написано как всё делать, а мне бы разобраться как оно работает, что значит каждый символ, и как программа понимает что куда пихать, чтобы потом я смог это делать без задней мысли, поэтому иду за помощью сюда.
581 1367569
>>67368

>а мне бы разобраться как оно работает


Так ты тогда вопросы правильные задавай, а не "как сериализовать объект".
582 1367895
>>67569
сорри.
583 1370779
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

Компилятор ГЦЦ
584 1370842
>>62390
Примут в контору — быстро выбьют эту хуйню. А вообще, я в шоке как можно быть настолько безвкусным
585 1371022
>>70779
Почему-то? У тебя <= в лупе.
586 1371054
>>70779
ну андефайнд бихевиор на то и андефайнд?
587 1371490
>>70779

>почему-то


А что не так, что оно, по-твоему, должно выводить?
588 1371524
std::unique_ptr<int> up;
std::function<void()> ff([up = std::move(up)]()mutable{});

Почему это не компилируется?
589 1371616
>>71524
мне кажется, что должно, потому-что лямбда это rvalue, и через стандартный мув конструктор должно уходить. Но там явно видно, что пытается сделаться копия
590 1371632
Помогите сделать функцию делающую std::function без параметров из callable и аргументов. С перфект форвардингом, со всеми возможными кейсами. Сука, весь вечер потратил, нихуя не получилось. То с муваблами не работает, то референсы не реферянсятся.
https://ideone.com/axVrR0
591 1371702
>>71632
ты изобрести std::bind Хочешь?
592 1371736
Вот есть функция винапи MessageBox. Как мне блять вызвать ее только со своей оболочкой? Делаю вот так:
typedef (int* MessageBox_t)(
HWND hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT uType
);
MessageBox_t MessageBox;
Но ссаный прекомпилятор мне гудит мол соси хуй REDEFINITION. СУКА, почему блять в 2019 году блять компилятор не может блять понять что я хочу использовать свою оболочку, а не стандартную?
593 1371775
>>71702
Попробуй забиндить, например, юник переданный через move
594 1371841
>>71775
Короче я понял, функция зачем-то должна быть copy-constructible, поэтому о перемещении можно забыть. Придется заворачивать moveable во что-то типа шаред поинтера.
595 1371884
>>71736
using ZALUPA = int(*)(HWND...);
Тред утонул или удален.
Это копия, сохраненная 8 апреля 2019 года.

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

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