М.Двач / Программирование

Двач.hk не отвечает.
Вы видите копию треда, сохраненную 8 апреля 2019 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

C++ №83 /cpp/ 4 мар, 07:36 1358809 В конец треда | Веб

8 Кб, 528x52885 Кб, 587x551

Вместо шапки - https://github.com/sosachbot/cppthreadhat/wiki
Ответы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/
Прошлый >>1342442 (OP)

Ответы590375908560231633556413464736

2 4 мар, 10:35 2 1358859

First ITT.

3 4 мар, 15:43 3 1359014

Что лучше юзать новичку ? SFML,SDL,Qt или OpenGL ?

Ответы59172

93 Кб, 638x354
4 4 мар, 16:46 4 1359037

>>1358809 (OP)
Понимаю что ньюфажная платина, но все же

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

Просто недавно начал его учить как первый язык. И в нескольких интервью и статьях слышал что-то типа "оказалось слишком сложно, я перешел на другой язык", но нигде не нашел инфы о том, как они вдруг осознали что вот всё - пизда. Столкнуться с чем-то сложным ведь можно где и в чём угодно, как понять что виноват язык?

Ответы59043590945928659307596465998164080

5 4 мар, 17:01 5 1359043

>>1359037
Разнообразие ооп хуйни и зависимостей.
Virtual pure base inline abstract class и прочее.
Также дохуя undefined behaviour и тонкостей

6 4 мар, 18:25 6 1359085

>>1358809 (OP)
Вкатился. Попробовал на днях написать хеллоуворлд на С. Блять, бальзам на душу, серьезно. Нахуй весь этот пердолинг и сложности С++ , ебучий ООП, если можно писать чистый, понятный код на С? Дискасс.

Ответы5909059116

28 Кб, 300x300
7 4 мар, 18:29 7 1359088

Привет. Давно сюда не заходил, но подумал, что могу здесь конструктивно обсудить одну идею.

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

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

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

Ответы59170

8 4 мар, 18:30 8 1359090

>>1359085
>Нахуй весь этот
Чтобы можно было писать что-то сложнее, чем
>хеллоуворлд

Ответы59110

9 4 мар, 18:37 9 1359094

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

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

Ответы59107

10 4 мар, 18:54 10 1359107

>>1359094
>Возьми любую энтри-левел книжку из шапки
Я вот как раз учу по одной из них, и например до сих пор хуею с того, что в оригинале есть различие между Statement и Operator. А в русской оба этих понятия в любом абсолютно месте называются Оператор и Оператор.

11 4 мар, 18:58 11 1359110

>>1359090
Windows на С написана же.

Ответы5911959136

649 Кб, 1200x699
12 4 мар, 19:07 12 1359116

>>1359085

13 4 мар, 19:08 13 1359119

>>1359110
Только ядро.

14 4 мар, 19:23 14 1359136

>>1359110
Ты можешь написать все, что угодно даже на ассемблере. Вопрос в скорости разработки и поддерживаемости. С++ в этом плане выигрывает у С.

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

Мы в виндовом кернеле пишем на С++17, без стандартной библиотеки, офк. Но, даже такой кастрированный С++ - это все равно в гигатонны раз лучше, чем С, потому-что классы\RAII, тимплиты, лямбды.

Ответы5922159281

15 4 мар, 19:54 15 1359170

>>1359088
Нахуя? У тебя там 8Гб исходников, чтоб было проблемой их все скачать?

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

16 4 мар, 20:06 16 1359172

>>1359014
boost hana

17 4 мар, 20:17 17 1359180

Ньюфаг вкатился. Почему reinterpret_cast<yoba>(value), а не просто (yoba)value?

Ответы5922659324

18 4 мар, 21:28 18 1359221

>>1359136
а не пробовали кастомные аллокаторы сделать для std контейнеров? на пулах, к примеру
в 98 стандарте по итогу этот вариант не работал, но с последними стандартами вроде как поправили..

Ответы59516

19 4 мар, 21:39 19 1359226

>>1359180
Проще найти все касты поиском.

Ответы59289

20 4 мар, 23:12 20 1359281

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

Ответы59516

21 4 мар, 23:22 21 1359286

>>1359037
>Просто недавно начал его учить как первый язык.
Начни с питона лучше, он для этого и создавался. Плюс он очень практичный, ты сразу сможешь писать какие-то полезные тебе скрипты.
>но нигде не нашел инфы о том, как они вдруг осознали что вот всё - пизда.
Например, если даже не брать разницу между стандартами, C++ - это как минимум три разных языка: сам С++, шаблоны и макросы, и у каждого свои заебы. Еще пример: если в других языках обычно есть тольк значения и ссылки, то в С++ есть значения, указатели, ссылки и rvalue references. Даже указатели начинающий плохо воспринимает, а уж на rvalue references мозг ломается даже у самых стойких.

Ответы596505983759844

22 4 мар, 23:32 22 1359289

>>1359226
Зачем мне их использовать если можно просто (yoba) во всех случаях?

Ответы59320

23 4 мар, 23:58 23 1359307

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

Ответы59329

24 5 мар, 00:22 24 1359320

>>1359289
ты не оче умный походу

25 5 мар, 00:27 25 1359324

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

26 5 мар, 00:31 26 1359329

>>1359307
Спасибо, посмотрю

27 5 мар, 01:28 27 1359354

Есть кто?

28 5 мар, 01:32 28 1359355

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

Ответы59409

36 Кб, 696x129
29 5 мар, 05:13 29 1359374

Сап. Обьясните что такое сериализация и нахуя. И как она делается, как выполнить данный таск, с файлами проблемы немного и тут ещё сериализация, вообще не понимаю что хотят от меня, гуглил, но внятно не нашёл.

Ответы5938859420

30 5 мар, 08:30 30 1359388

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

Ответы59402

31 5 мар, 09:29 31 1359402

>>1359388
Спасибо, попробую осилить файлы, далеко вперёд ушёл, их скипнул, и тут вернулись, не понимаю как считывается информация из текстового файла, например массив, как дать понять какое число в какую ячейку помещать, но попробую

32 5 мар, 09:53 32 1359406

Сап двач такой вот вопрос. Насчёт визуального программирование через WinAPI можно вкатиться сюда?

Ответы5941259564

33 5 мар, 09:55 33 1359409

>>1359355
Они почти полностью обратно совместимы, может поругаться варнингами на deprecated вещи.

Ответы59554

34 5 мар, 10:00 34 1359412

>>1359406
Можешь поставить Qt и формошлепствовать, хотя вкатываться мне кажется легче на шарпе с дотнетом. Так то они соответствуют друг другу, и там и там есть свои языки разметки.

35 5 мар, 10:12 35 1359414

welfjhk

Ответы59418

36 5 мар, 10:30 36 1359418

>>1359414
[code]*[/code]

37 5 мар, 10:34 37 1359420

16 Кб, 679x3344 Кб, 480x885 Кб, 586x150

>>1359374
Примерно вот так https://ghostbin.com/paste/h9on5 я создаю сперва место на хипе, а потом пишу туда переменные структуры, затем переают указатель на хип в фукцию write. В принципе ты можешь и сразу всю структуру заебашить просто используя указатель this, например
file.write(reinterpret_cast<char#>(this), sizeof(#this); вместо звездочки #. Но так лучше не делать, так как можешь проебаться с пэддингом.
Короче если ты откроешь этот файл в hex редакторе, то ты увидишь такое как на втором пике. Это и есть эти два интегера в шестнадцатеричном виде, правда они сохраняются в little-endian формате, то есть их надо читать задом наперед как на третьем пике.

Ответы5952659551

38 5 мар, 13:26 38 1359516

>>1359221
Мы в итоге тупо написали свои кернельные строки, вектор, хэштаблицу и даже юник_птр, т.к. стандартные хедеры тащат очень много всего неподдерживаемого в код. Заняло несколько дней, но, зато есть угарный доп-функционал, типа variadic конструктора для строки, который все переданное джойнит и сохраняет.

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

Ответы59586

56 Кб, 703x448
39 5 мар, 13:37 39 1359526

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

Ответы59552

40 5 мар, 14:43 40 1359551

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

Ответы59558

41 5 мар, 14:45 41 1359552

>>1359526
Ну что тут сказать, тут сперва берется структура А, которая передает свой адрес указателю ptr. & это оператор адреса, (char#) это C-стайл каст из типа структуры в тип char. В моем примере я использовал С++-стайл reinterpret_cast, что в принципе то же самое. Затем с помощью указателя данные из структры копируются в массив Mas, который тоже должен быть типа char, иначе будет пизда. Потом данные из массива выводится на экран. Но эта фигня будет только работать, если в структуре все переменные одинакового типа и размера. Еще добавлю, что на пикче #(ptr+i) и #(e+i) это вообще уродство. Лучше просто писать ptr, ты можешь подумать "но ptr же не массив" - а похуй, я сказал! В С++ массивы по сути указатели, поэтому и указатели можешь использовать как массивы. ptr будет автоматически прыгать с размером своего типа (в этом случае это char, то есть 1 байт), и сразу разыменовать его, то что делает звездочка на пикче.

Ответы5955359592

42 5 мар, 14:47 42 1359553

>>1359552
Двач сука квадратные скобки у ptr съел.

43 5 мар, 14:49 43 1359554

>>1359409
Да я что спрашиваю, одна баба в видео говорила мол учите со стандарта 2003 года! а я развесил уши все

44 5 мар, 14:52 44 1359558

>>1359551
Лол чем гордиться шизик? Обычный пример как сериализовать.

Ответы59570

45 5 мар, 14:59 45 1359564

>>1359406
Никто не клепает формочки на чистом винапи. Да и это не совсем удачный вектор для вкатывания.

46 5 мар, 15:04 46 1359570

>>1359558
так НЕ надо делать
там пиздец

Ответы59578

47 5 мар, 15:09 47 1359573

Салам, чо поцоны есть среди нас толковые кутэшники? Го в лс саморазвиваться пограммировать (телега - @FirstLast_q)

Ответы59585

48 5 мар, 15:13 48 1359578

>>1359570
Ну покажи как лучше, раз ты такой умный, а то ни дай бог тот чел скопипастит мой код и получит двойку!

Ответы5959359594

49 5 мар, 15:30 49 1359585

>>1359573
Сам то кто по масти?

50 5 мар, 15:37 50 1359586

>>1359516
>Ты без проблем можешь обмазывать свой код EXTERN C, когда нужны биндинги.
Только если у тебя код близкий к сишке, без особого использования ООП. Для того же Qt сишный интерфейс будет очень сложно сделать.

51 5 мар, 15:58 51 1359592

>>1359552
Спасибо большое, достаточно понятно.

52 5 мар, 15:59 52 1359593

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

53 5 мар, 15:59 53 1359594

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

54 5 мар, 17:42 54 1359644

Сап,озадачился созданием простенького графического интерфейса, лучшее что нашел на данный момент это windows forms, но у Майкрософт хуйня вместо документации,а гайды и сторонние руководства часто устаревшие, qt по некоторым причинам мне не подходит. Какие есть ещё варианты с хорошей документацией и примерами, желательно но не обязательно с формочками.

Ответы59684596905969459736

55 5 мар, 17:44 55 1359646

>>1359037
Сложно понятие субъективное, может ты изначально так мыслишь и тебе вообще норм. Тем же плюсовикам может быть ФП сложна, а ФПшникам сложно с байтами ебаться.

56 5 мар, 17:48 56 1359650

>>1359286
>три разных языка
Я бы поделил на процедурный С++(практически С), объектно-ориентированный с++ и декларативный с++(шаблоны-шаблончики).

140 Кб, 1600x900
57 5 мар, 18:09 57 1359670

Пытаюсь скомпилировать код и получаю 2019.Чому компилятор не видит Winmain?

Ответы59959

58 5 мар, 18:11 58 1359672

Плюсаны, серьезно, вот где найти плюсопрограммиста на "подработку" нужно сговнякать совершенно конкретные вещи под один сдк о которым никто никогда не пользовался. Где искать погроммиста?

Ответы59673

59 5 мар, 18:12 59 1359673

>>1359672
чем больше денег - тем больше выбор.

Ответы59681

60 5 мар, 18:18 60 1359681

>>1359673
Где искать-то не на лохито же? А сколько денег считается нормой нынче?

Ответы59834

61 5 мар, 18:20 61 1359684

>>1359644
почему вы так все боитесь gtk?

Ответы59709

62 5 мар, 18:37 62 1359690

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

Ответы59709

63 5 мар, 18:43 63 1359694

>>1359644
QT. Все остальное дохлый номер.

Ответы5970959720

64 5 мар, 19:07 64 1359709

>>1359684
Ну очевидый нюанс это сторонняя ide, лень переходить с VS и танцевать с переносом библиотек, хотя именно gtk я ещё не пробовал и достаточно подробно не прощупывал, мб гляну сегодня.
>>1359690
Я имел ввиду именно Майкрософт докс, до мсдн я не добрался.
>>1359694
Нюансы выше,плюс не понимаю нахуя качать пол дня пакет на 20 гигов, ради нескольких кнопок и пары пикчербоксов.

Ответы5971359756

65 5 мар, 19:20 65 1359713

>>1359709
>я пакет на 20 гигов
Ващето 3
>>1359709
>Майкрософт докс
У них есть отдельный дистр с хелпом для вс где ты выбираешь что именно ставить, гига на полтора вроде.

66 5 мар, 19:30 66 1359720

>>1359694
пописал на тебя

67 5 мар, 19:47 67 1359736

>>1359644
imgui как вариант

68 5 мар, 20:04 68 1359756

>>1359709
Потому что на чистом винапи ты будешь эти кнопочки клепать неделю. А в QT за пару часов управишься.

Ответы59763

69 5 мар, 20:11 69 1359763

>>1359756
> на чистом винапи
Как там в 1991 м?

70 5 мар, 20:17 70 1359766

А игры тоже на чистом winapi создают?

Ответы597725977459797

71 5 мар, 20:22 71 1359772

>>1359766
Игры создают на движках.
Движки имеют кросс-платформенную прослойку, которая уже общается с winapi. Но все общение там сведется к созданию окна, и отрисовыванию всего руками, включая кнопочки интерфейса

72 5 мар, 20:23 72 1359774

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

Ответы59794

73 5 мар, 21:02 73 1359794

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

Ответы59810

74 5 мар, 21:03 74 1359797

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

Еще раз - все эти кути, гтк и прочие фреймворки - это все обертки над системным апи.

75 5 мар, 21:22 75 1359810

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

Ответы5981360734

76 5 мар, 21:26 76 1359813

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

Ответы598185982059821

77 5 мар, 21:42 77 1359818

>>1359813
Через винапи дольше было бы по-моему

Ответы59819

78 5 мар, 21:43 78 1359819

>>1359818
Ну понятно, что дольше, там же напрямую всё.

79 5 мар, 21:44 79 1359820

>>1359813
Не, там окна (в винде ваще все является окнами), очередь месседжев, не то что нужно играм.

Ответы59831

80 5 мар, 21:49 80 1359821

>>1359813
Операционная система предоставляет некие интерфейсы, которые потом где-то за кулисами реализуются драйверами видяхи и тд.

Здесь важно понимать, что ни к каким драйверам и прочему ты доступа не имеешь, ты просишь операционку сделать что-либо, а она уже либо сама делает, либо делегирует кому-то еще внутри себя. Ты это не контролируешь.

Ответы59831

81 5 мар, 22:04 81 1359831

>>1359820
Ага, понятно.
>>1359821
Да это то понятно и так.

82 5 мар, 22:11 82 1359834

>>1359681
А что там за ужасы у тебя, все конфиденциально?
Я все в поисках чего-нибудь, чтобы практиковаться, но плюсового опыта у меня мало, пока максимум - это диплом и три небольшие утилиты для работы. И то, все это можно было реализовать быстрее на других языках.

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

83 5 мар, 22:17 83 1359837

>>1359286
>Начни с питона лучше, он для этого и создавался
Для «этого» создавался паскаль.

Ответы59938

84 5 мар, 22:21 84 1359844

>>1359286
работу отбирают, хады

85 5 мар, 23:50 85 1359885

Клиент двача на айос на спп - выполнимая задача?

Ответы5989859906

86 6 мар, 00:14 86 1359898

>>1359885
Да, минут на 50 работы всего

1,2 Мб, 499x281
87 6 мар, 00:39 87 1359903

Тут хелловорлдерам можно, или это в нюфаг?
Короче:

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

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

Как потом ввести все эти данные в объект ОбщийПоказатель, так, словно я просто списал все эти показатели одной строкой через пробел сразу в ОбщийПоказатель, а не делал это по отдельности? Банальное = тут не работает, потому что тип ОбщийПоказатель отличается от всех этих трех. Прост прыгнул чуть дальше чем нужно, и теперь хочется добить, а то меня мой гештальт забьет насмерть.

Ответы59904

88 6 мар, 00:41 88 1359904

>>1359903
т.е. как будто бы я просто вписал все это в консоль разом, а не по отдельности
std::cin >> ОбщийПоказатель;

Ответы59916

89 6 мар, 00:45 89 1359906

>>1359885
Ну там есть сишный интерфейс для отсылки сообщений объектам. Правда его работоспособность не гарантируется (так как он не преднозначен для использования обычными прогерами). Ну и остается проблема с получением сообщений (разного рода делегатам, типа NSTableViewDelegate). Тоесть скорее всего нужно будет ебаться с свизлингом. Есть вариант тупо рендерить через метал на GPU не связываясь со стандартным UI. Но никогда не пробывал. Более простой вариант такого подхода будет накатить игровой фреймворк (cocos2d-X - нужен именно X) и работать через него - но тоже не пробывал.

90 6 мар, 01:22 90 1359913

Лучше писать в студии с модулем Qt или в Qt Creator?

Ответы59914

91 6 мар, 01:27 91 1359914

>>1359913
Я писал в студии с Verdigris, без qt модуля, moc'а, и прочей параши. Имхо, идеально.

92 6 мар, 01:31 92 1359916

>>1359904
Тебе нужно перегрузить оператор>>, гугли по stream operator overloading. Что-то вроде такого должно быть
istream& operator>> (istream& is, YourMom& wh)
{
is >> wh.age >> wh.weight;
return is;
}

Ответы59919

93 6 мар, 01:34 93 1359919

>>1359916
Ок спасибо, завтра попробую :3

Ответы5992060891

94 6 мар, 01:35 94 1359920

>>1359919
Не за что.

95 6 мар, 04:25 95 1359938

>>1359837
>Для «этого» создавался паскаль.
Паскаль умер, а питон живет.

Ответы59970

139 Кб, 1180x592
96 6 мар, 07:43 96 1359959

>>1359670
Хз возможно ты subsystem windows не выставил?

97 6 мар, 08:48 97 1359970

>>1359938
Питон никак не поможет вкатиться в плюсы, ничего общего практически.
Object Паскаль по возможностям гораздо ближе к плюсам. Да и умер он не совсем, условно. Работу найти трудно - это да, все остальное на месте.

Ответы5998160032

98 6 мар, 09:30 98 1359981

>>1359037
>Может кто в двух томах объяснить, или дать ссылку, объясняющую, чем принципиально C++ сложнее для изучения, чем что-то другое?
С++ сложнее в использовании, а не изучении.
>the First Amendment to the C++ Standard states: "The committee shall make no rule that prevents C++ programmers from shooting themselves in the foot." Speaking less facetiously, when it comes to choosing between giving programmers more control and saving them from their own carelessness, C++ tends to err on the side of giving more control.
В переводе на русский, С дает свободу, программировать как хочешь, делать что хочешь, это означает эффективность, если есть мозги воспользоваться свободой. Но свобода означает ответственность, если обосрался, то только ты в этом виноват, язык тебя не оберегает как нянька, не ведет за ручку, не говорит как надо и как не надо, ты сам должен знать как тебе нужно, поэтому для обучения программированию С не подходит.
>>1359970
А Паскаль это обратная крайность, там нельзя ни шаг влево, ни шаг вправо, только по жестким рельсам языка, который полностью диктует как нужно писать и не допускает иного. Поэтому теоретически он считался хорошим языком для обучения, но на деле железные кандалы воспитывают моральных рабов, которые не могут жить и думать за себя самостоятельно без самога барина в жопе, указывающего путь.

Ответы5999559996

99 6 мар, 10:04 99 1359995

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

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

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

100 6 мар, 10:05 100 1359996

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

101 6 мар, 11:46 101 1360032

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

102 6 мар, 13:16 102 1360075

Обясните пожалуйста тупому, почему данная запись завершается с ошибкой?
void CreateMas(int r,int k){
mas = new int* [r];
for(int i=0;i < r;i++){
mas= new int [k];
}
}

Ответы6008660099601146024560899

103 6 мар, 13:21 103 1360077

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

Ответы60083

104 6 мар, 13:26 104 1360083

>>1360077
никуда. Главная проблема обезьян в том, что от них больше вреда, чем пользы

7 Кб, 196x250
105 6 мар, 13:31 105 1360085

Взяли на первую работу цпп программистом. Через 2 недели выходить. Посоветуйте материала, чтобы все вспомнить и подтянуть язык, чтобы не опростоволосится на работе. Мне нужно основные моменты подтянуть и вспомнить все тонкости.

Ответы6009460096

106 6 мар, 13:32 106 1360086

>>1360075
>mas
че это? Ты же ему тип не присвоил. Так надо: int mas = new int* [r]

Ответы6009060245

107 6 мар, 13:37 107 1360090

>>1360086
Сука, Абу, зачем звездочки сожрал? int mas = new int* [r]

Ответы60091

108 6 мар, 13:38 108 1360091

>>1360090
БЛЯЯЯ. короче
int <звездочка><звездочка>mas = new int* [r]

109 6 мар, 13:40 109 1360094

>>1360085
Майерсов

110 6 мар, 13:44 110 1360096

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

Ответы60100

111 6 мар, 13:50 111 1360099

>>1360075
Зачем тебе легаси массивы вообще? Можно ведь прощще
[code]
template <class T>
auto CreateMas(size_t r, size_t k){
using namespace std;
vector<T> row(k);
return make_unique<vector<vector<T>>>(r,row);
}
[/code]

Ответы60245

112 6 мар, 13:50 112 1360100

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

113 6 мар, 14:25 113 1360114

>>1360075
Не совсем понимаю, чего ты хочешь добиться с этим кодом. Во-первых звездочку после new int не надо ставить. А mas что, глобальная переменная? Тогда она должна быть указателем. А что ты в цикле делаешь, тоже не понятно. Ты хочешь присвоить значение переменной k в этот массив? Или ты хочешь создать массив на отдельные кучи размером k каждая?

Ответы60245

114 6 мар, 18:01 114 1360223

Аноны, есть годный garbage collector под c++? Ситуация такая, у меня из ануса начала вываливаться прямая кишка, врач сказал, что это от долгого сидения за компьютером. Но я не могу иначе, все эти утечки, деструкторы. Выручайте, плюсаны.

Ответы6023060254

115 6 мар, 18:07 115 1360230

>>1360223
boehm-demers-weiser gc, альтернатив нет
попробуй анальные свечи "метилурацил"

116 6 мар, 18:09 116 1360231

>>1358809 (OP)
Всем привет. Осваиваю С++, пока знаю на уровне школьника-троечника. Дорабатываю для своих целей одну опенсорсную прогу, возможно, в будущем, написать свою с улучшенным функционалом той + тот функционал, который нужен еще. Но это в далеком будущем, а пока...
В общем, надо сделать так, чтобы в определенное время проигрывался аудиофайл, имеющий название, соответствующее unsigned int X. При указании данной переменной в синтаксисе PlaySound: PlaySound(X.wav, NULL, SND_ASYNC) VisualStudio 2005 выдает ошибку С2228: left of '.wav' must have class/struct/union type is 'UINT'. Собственно, в этом и вопрос, как заставить прогу проигрывать тот wav-файл, который имеет название как в переменной, подходит ли процедура PlaySound или надо что-то другое?

Ответы60243

117 6 мар, 18:20 117 1360243

>>1360231
X.wav надо превратить в строку перед отправлением в функцию. Гугли "string format C++", там куча способов сделать это.

Вангую, следующую ошибку высрет линкер, что функция PlaySoundA не найдена.

Ответы60259

118 6 мар, 18:22 118 1360245

>>1360114
>>1360099
>>1360086
int mas; у меня является полем класса, а этот кусок кода лежит в методе класса.
>>1360099
Я понимаю что можно намного проще, но мне нужно просто понять как это работает.
>>1360075
Поэтому прошу помочь тупому.

Ответы60257

119 6 мар, 18:30 119 1360254

>>1360223
https://dlang.org/

27 Кб, 617x284
120 6 мар, 18:31 120 1360257

>>1360245
> int mas;
Неправильный тип. Пикрелейтед как надо.

Ответы6026260606

121 6 мар, 18:33 121 1360259

>>1360243
>X.wav надо превратить в строку перед отправлением в функцию.
Как это можно сделать в рамках события (которое в case, информация, быстро пришедшая с аудиовхода), которое запускает тот самый плейсаунд? Мне надо просто вот так: нужный (с этим все нормально, прописано все до нужного фрейма) сигнал на лин. входе, содержащий Х>декодирование>проигрывание аудиозаписи, содержащее имя переменной.
Не курсовая, надо для реализации одного радио-телеком-протокола для личных нужд.

Ответы60265

3 Кб, 275x156
122 6 мар, 18:36 122 1360262

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

Ответы602636026660521

123 6 мар, 18:37 123 1360263

>>1360262
Звездочки перед мас нету, я ее случайно сейчас туда ткнул.

124 6 мар, 18:38 124 1360265

>>1360259
> содержащий Х>декодирование>проигрывание аудиозаписи
Что-то мне кажется, что PlaySound из winapi тебе не подойдёт. Может тебе надо с WASAPI/DirectSound (хотя судя по VS2005 работаешь ты скорее всего на WinXP, где WASAPI и нет) работать? Насколько часто нужно проигрывать файлы? Насколько они короткие? Насколько важна задержка?

Ответы60284602886029360299

125 6 мар, 18:39 125 1360266

>>1360262
Давай-ка весь класс на пастбин залей.

Ответы60272

126 6 мар, 18:42 126 1360272

>>1360266
Это все, там больше ничего нету
Вылетает на входе в цикл for

Ответы60274

127 6 мар, 18:45 127 1360274

>>1360272
Что значит "вылетает"? Ошибка рантайма?

Ответы60277

128 6 мар, 18:51 128 1360277

>>1360274
Прекращена работа программы, и все.
Процесс возвращает 0xC0000005.
Больше ничего

Ответы60278

129 6 мар, 18:52 129 1360278

>>1360277
Дебаггером посмотри, что там.

Ответы60319

130 6 мар, 19:05 130 1360284

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

Ответы60302

131 6 мар, 19:07 131 1360288

>>1360265
>Насколько часто нужно проигрывать файлы? Насколько они короткие? Насколько важна задержка?
Скорость важна, это аналоговая сотовая. Пока сторонняя библиотека думает, терминал уж раз 5 канал сменит.

132 6 мар, 19:20 132 1360293

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

Ответы60299

133 6 мар, 19:36 133 1360299

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

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

134 6 мар, 19:41 134 1360302

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

[1]: https://github.com/kinetiknz/cubeb

Ответы6031060489

135 6 мар, 19:57 135 1360310

>>1360302
>Я уже дал название библиотек, встроенных в винду.
Ладненько, погуглю и поиграюсь. В любом случае, это временное решение - далее надо писать енкодер стандарта наподобие линуксовой довольно пиздатой, даже с смсками, которые как у меня, так и практически у всех операторы данного стандарта, не поддерживаются из-за их ненужности и вредности - поскольку передача идет на голосовом канале в режиме модема осмоком-аналог. Собственно, пора раскрыть карты - стандарт NMT-450 и я в рот не ебу, как в с++ (на этом языке таки есть готовый декодер на Win) выдать на выход звуковухи частотную манипуляцию между 1200 и 1800 Гц. Думаю в ресурсы закинуть файлы этих частот и попеременно включать той же PlaySound, но... Она, конечно, работает быстро, но время там не задать, а время ФРЕЙМА в NMT - миллисекунды. Если так сделаю, мне кажется, придется городить индусский код из if и else, котолрый работать толком не будет.

136 6 мар, 20:08 136 1360319

>>1360278
Все ок, при входе в цикл сразу краш.
Попробывал в запустить это безобразие в вижуал студии, все нормально работает.

38 Кб, 1133x483
137 6 мар, 20:26 137 1360331

Хелп, аноны. Раньше нормально работало, теперь не находит файл, в сурсах действительно такого файла нет

Ответы6033360377

138 6 мар, 20:32 138 1360333

>>1360331
Через пару минут каким-то чудом файл появился, что происходит?

139 6 мар, 21:44 139 1360377

>>1360331
Этот хидер автоматически генерируется из ui-файла, который ты в редакторе форм делаешь.

Ответы60454

140 6 мар, 23:05 140 1360454

>>1360377
Понял. Наверное удобнее всё же будет писать в Qt Creator, в студии не особо удобно.

141 7 мар, 00:35 141 1360489

>>1360302
Таки, и плейсаунд прекрасно работает : http://www.cyberforum.ru/vbfavorites.php?do=add&entry_type=post&entry_id=13382539

Ответы60496

142 7 мар, 02:29 142 1360496

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

Ответы60775

143 7 мар, 05:02 143 1360521

>>1360262
Работает же вроде http://www.cpp.sh/4susa Тебе не надо ставить звездочку перед mas в цикле, потому что квадратные скобки автоматически разыменуют указатель.

31 Кб, 400x400
144 7 мар, 12:22 144 1360606

>>1360257
>Обычные указатели
>Динамический массив через указатели
>Пикрил как надо

Ответы60615

145 7 мар, 13:04 145 1360615

>>1360606
Массив это набор указателей.

Ответы60628

146 7 мар, 13:39 146 1360628

>>1360615
>>1360615
массив - это массив
отдельная сущьность
базовый тип

Ответы60630

147 7 мар, 13:48 147 1360630

>>1360628
Правила строгого алиасинга преобразование int[] -> int∗ нарушает? Нет. На всё остальное похуй. Добро пожаловать в C/C++ мирок, где разрешено всё что не UB.

Ответы6063660642

148 7 мар, 14:17 148 1360636

>>1360630
Это Си параша, сейчас никто не юзает * в С++

Ответы60658

149 7 мар, 14:22 149 1360642

>>1360630
и че?
еще раз - массив - это базовый тип

Ответы60673

1 Кб, 216x170
150 7 мар, 14:45 150 1360651

Как называется такая фигня когда класс создается внутри класса, и зачем оно нужно?

Ответы606556066060662

151 7 мар, 14:53 151 1360655

>>1360651
Вложенный класс. Дальше сам.

Ответы60667

152 7 мар, 14:59 152 1360658

>>1360636
Нет, это в ++ никто не юзает *, а в С++ юзают, потому что С++ это С и ++. Говорить что С++ это не С, аналогично "С это не С", абсурд. С++ включает в себя С, С нельзя выбросить.

Ответы6066460864

153 7 мар, 15:00 153 1360660

>>1360651
>Зачем нужны фигурные скобки?
Сам думай.

Ответы60667

154 7 мар, 15:03 154 1360662

>>1360651
Затем же, зачем классы помещают в неймспейсы.

Ответы60667

155 7 мар, 15:06 155 1360664

>>1360658
С и С++ это разные языки

Ответы6066660793

156 7 мар, 15:10 156 1360666

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

157 7 мар, 15:11 157 1360667

>>1360655
>>1360660
>>1360662
То есть это такая же херня как в javascript, где можно зафигачить функцию внутри функции, чтобы ограничить ее от внешней области видимости?

Ответы60902

158 7 мар, 15:37 158 1360673

>>1360642
Это указатели всего навсего.

Ответы60681

159 7 мар, 16:25 159 1360681

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

160 7 мар, 18:59 160 1360722

Аноны посоветуйте хорошую книгу по Qt. Прочитал немного Шлее и мало что понял

Ответы6073660749

161 7 мар, 19:32 161 1360734

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

162 7 мар, 19:38 162 1360736

>>1360722
Тогда подтяни свой уровень в обычных крестах, т.к. книга Шлее это на 95% упрощенный перевод документации Qt.

Ответы60739

96 Кб, 1606x706
163 7 мар, 19:43 163 1360738

Помогите пожалуйста студенту быдлокодеру.
Есть оператор выбора который выбирает функцию по вводу 1/2/3.

Как заменить цифры на слово? Чтобы он выдавал функцию например при вводе max/min/avg и так далее?

Ответы607446074660750

164 7 мар, 19:43 164 1360739

>>1360736
Вроде нормально подтянулся, даже немного вкатился в новые стандарты, но опыта мало. Хотел бы сделать какое-то небольшое приложение с виндовс формами, но WinApi тоже сложно дается.

Ответы60744

165 7 мар, 20:04 165 1360744

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

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

Ответы60747

98 Кб, 720x960
166 7 мар, 20:07 166 1360746

>>1360738
>этот стиль

167 7 мар, 20:07 167 1360747

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

Ответы60750

168 7 мар, 20:19 168 1360749

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

169 7 мар, 20:19 169 1360750

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

Ответы60751

170 7 мар, 20:21 170 1360751

59 Кб, 612x713514 Кб, 720x720

>>1360750
Спасибо, брат.
Алсо. Как правильно скобки расставлять? Меня никто этому не обучает. На первом скрине я расставил их так, как удобно мне. Сейчас вообще нихуя не понимаю.
Это троллинг или правда есть единый стандарт?
Не бейте я аутист.

Ответы60753607546075560763

171 7 мар, 20:27 171 1360753

>>1360751
> есть единый стандарт?
Есть несколько стандартов. Бери любой, например гугловский https://google.github.io/styleguide/cppguide.html

172 7 мар, 20:27 172 1360754

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

173 7 мар, 20:29 173 1360755

>>1360751
В каждой команде, как правило, свой стиль. Для себя я использую данный, с небольшими доработками: http://www.stroustrup.com/Programming/PPP-style.pdf

174 7 мар, 20:42 174 1360758

Спасибо.

175 7 мар, 20:56 175 1360763

>>1360751
Единых стандартов нет, но часто за тебя это делает ИДЕ. У тебя какой то пиздец в качестве оформления.

176 7 мар, 21:21 176 1360774

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

Ответы60780

177 7 мар, 21:24 177 1360775

>>1360496
http://www.cyberforum.ru/cpp-beginners/thread2414561.html
По этой ссылке должно работать, проверял с режима инкогнито. А требования к задержке миллисекундные, ибо каналы в Нокии 640 (не той, что люмия, старой аналоговой) меняются побыстрее, чем в сканерах Айком, почти на уровне американских сканеров.
Тем не менее, решение найдено.

178 7 мар, 21:44 178 1360780

>>1360774
>Почему у моего хеллоуврода с одним месседжбоксом вес 100кб
Собираешь под Release, надеюсь? В

Ответы6078260783

179 7 мар, 21:45 179 1360782

>>1360780
>В
Debug весит много.

180 7 мар, 21:47 180 1360783

>>1360780
Да.

181 7 мар, 22:38 181 1360793

>>1360664
С++ и ява - разные языки. Поэтому не стоит из крестов пытаться сделать яву.
С и С++ хотя и разные, но пересекающиеся языки. Существуют апи, библиотеки и прост большая скотокодовая база для С++, написанная на С или в си-стиле.
Твоя борьба за чистоту плюсов абсурдна.

84 Кб, 520x800
182 8 мар, 05:46 182 1360841

Анон, у меня проблема. Уверен, ты и сам попадал в такие ситуации и можешь понять мою боль.
Дело в том, что мне дали задание изложенное максимально по дебильному. Ты можешь понять алгоритм из этого текста? Что требуется сделать с каждой ячейкой матрицы, если не просто увеличить число в ней на 1,5%? (препод сказал, что в примере ввода опечатка, число 150 в там это 1,5)

Ответы608426086260867

183 8 мар, 05:52 183 1360842

>>1360841
Иди в армию, очередной маняматик никому не нужен

Ответы60843

184 8 мар, 05:53 184 1360843

>>1360842
Я не годен к военной службе, так что ответить на мой вопрос, если не трудно.

185 8 мар, 08:18 185 1360862

>>1360841
Даун, съеби.

186 8 мар, 08:19 186 1360864

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

Ответы60866

187 8 мар, 08:25 187 1360866

>>1360864
Нормальный человек:
>(typename)
Макросо-дебил:
>hurr_durr_tottooroo_cast<typename>

188 8 мар, 08:27 188 1360867

>>1360841
В чем проблема обсудить это с преподавателем?
Нормальный преподаватель будет только рад вопросам.

189 8 мар, 11:04 189 1360891

>>1359919
На будущее https://habr.com/ru/post/308890/

22 Кб, 496x620
190 8 мар, 11:14 190 1360899

>>1360075
Короче, если тебе нужно создать динамический массив в классе то так:

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

Ответы61406

191 8 мар, 11:23 191 1360902

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

45 Кб, 800x800
192 8 мар, 13:11 192 1360938

Массивы в плюсах это обьекты?
Они хранятся в стеке или куче?

Ответы60942609436094461079

193 8 мар, 13:24 193 1360942

>>1360938
Обычные массивы - наследие С, т.е. это просто выделенная компилятором область памяти на стеке и указатель на первый элемент. В куче они будут храниться только если ты явно задашь это с помощью оператора new.

Ответы60946

194 8 мар, 13:28 194 1360943

>>1360938
массив - это базовый тип данных
со своими неявными приведениями и правилами низведения, унаследованными от си, что и путает новичков

195 8 мар, 13:29 195 1360944

>>1360938
Массив это набор указателей всего навсего.

Ответы6094860956

196 8 мар, 13:30 196 1360946

>>1360942
тут несколько ошибок

197 8 мар, 13:30 197 1360948

>>1360944
нет

198 8 мар, 13:44 198 1360956

>>1360944
ты ебанутый чтоли

Ответы60966

199 8 мар, 14:15 199 1360966

>>1360956
может троллит

200 8 мар, 15:52 200 1361011

Не знаю как загуглить.
Вот есть у меня структура, я создаю ее новый экземпляр через new, а когда инициализируются и чем ее внутренности?

Ответы6101761027

201 8 мар, 15:58 201 1361017

>>1361011
стандартным конструктором. Если в тебя есть поля без стандартного конструктора (инты, енумы, указатели, и тд) - то будет мусор.

202 8 мар, 16:13 202 1361027

>>1361011
Будет вызван стандартный конструктор для каждого члена структуры. Встроенные типы тоже его имеют, но он делает буквально ничего, поэтому их значение определено не будет. Однако существует zero-initialization, которая забивает память нулями для типов, у которых нет пользовательского конструктора (те же встроенные). Чтобы она произошла, нужно поставить пустые скобки:

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

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

MyStruct * p_s = new MyStruct();

Ответы61030

203 8 мар, 16:14 203 1361030

>>1361027
Бля, опять про звезды забыл

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

Ответы61038

204 8 мар, 16:21 204 1361038

>>1361030
> int^
Ммм, сразу C++/CLI напомнило.

Ответы61039

205 8 мар, 16:23 205 1361039

>>1361038
Я специально.

206 8 мар, 18:10 206 1361079

>>1360938
Это последовательность ячеек памяти. Это не объект.

207 8 мар, 18:10 207 1361080

Как новичку изучать stdlib? Открыл его (gcc), чтобы понять, как устроен map, а там дохуа строк кода, #ifdef, #define везде, шаблоны какие-то, и за всем этим скрыта логика (rb-trees, наверное), ничего не понял и вернулся к велосипедостроению.

Ответы61087610896109061135612636136261460

208 8 мар, 18:20 208 1361087

>>1361080
https://en.cppreference.com/w/
http://www.cplusplus.com/reference/

+Стэковерфлоу иногда.

Ответы61115

209 8 мар, 18:22 209 1361089

>>1361080
Вот что-то, а в С++ стандартную библиотеку по исходникам изучать не стоит. Там будет куча шаблонного кода, нахуеверченная создателями компилятора с двумя целями: (1) соответствовать стандарту и (2) работать как можно быстрее. Лучше прочитай кнута какого-нибудь, если хочешь понять как работают все эти коллекции. Ибо в std большая часть кода это не реализация контейнера, а борьба погромистов с системой типов C++ для того чтобы сделать код как можно быстрее.

Ответы61115

210 8 мар, 18:24 210 1361090

>>1361080
Нахуя? Если просто интересно почитать как реализовали ту или иную сущность именно в виде исходного кода, то лучше открыть исходники буста, т.к. разработчики компиляторов (а именно стандартной библиотеки) специально пишут пиздецки нечитаемый код, а в бусте все норм. А вообще это тоже будет хуевое занятие и лучше почитать какие-нибудь умные книги типа того же Кнута, Кормена, Седжвика.

Ответы61115

211 8 мар, 18:26 211 1361091

168 Кб, 1366x768137 Кб, 1366x768161 Кб, 1366x768

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

На первой пикче основная функция, на второй вызывающая. Суть в том, что когда я с помощью функции input создаю и заполняю массив, при вводе в массив цифры 5, программа прекращает работу. Синтаксических ошибок нет. Если ввожу любые другие числа, всё окей, но пятёрка в массиве каким то чудом заставляет do while останавливаться
памагите

Ответы6109761098611196114061299

212 8 мар, 18:35 212 1361097

>>1361091
Пройдись дебаггером, да посмотри в чем проблема. Скорее всего, где-то в потоке остается. код не читал

110 Кб, 1440x468
213 8 мар, 18:36 213 1361098

>>1361091
И это компилится, говоришь?
Если да, то я, видимо, совсем поехал.

Ответы61099

214 8 мар, 18:40 214 1361099

>>1361098
Гугли VLA

Ответы6110061106

215 8 мар, 18:42 215 1361100

>>1361099
Чего гуглить-то? В стандарте C++ этого нет.

Ответы61107

216 8 мар, 18:50 216 1361106

>>1361099
Да хуй даже с VLA, тебя не смущает, что идёт попытка создать массив размера неинициализорованной не static переменной?

Ответы61111

217 8 мар, 18:50 217 1361107

>>1361100
Нет, но gcc такое компилирует даже без варнингов (только при -Wpedantic уже пишет про это): https://gcc.godbolt.org/z/BI7DwI

218 8 мар, 18:54 218 1361111

>>1361106
Ну хочет человек создать массив случайной длины. Хули ты приебался?

Ответы6111361119

219 8 мар, 18:59 219 1361113

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

Ответы61114

220 8 мар, 19:01 220 1361114

>>1361113
Скорее в stack overflow.
Возможно он в дебаге и память все-таки проинициализирована

221 8 мар, 19:07 221 1361115

>>1361087
тут просто описания функций, имплементации нет

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

Ответы61116

386 Кб, 1440x2560
222 8 мар, 19:11 222 1361116

>>1361115
>Имплементации нет
А это что такое, блядь?

Ответы61128

223 8 мар, 19:16 223 1361119

>>1361111
С квадриплом не поспоришь.
Ну, хай стреляет себе в ногу, его дело.

>>1361091
Если пятерка у тебя останавливает do...while, то это правильное поведение программы. Ты же ей так и сказал, что если ввел пятерку - то закончи работать, будь добра.
Или, все таки, ввод пятерки у тебя останавливает функцию input?

224 8 мар, 19:23 224 1361128

>>1361116
Как find_if поможет понять устройство map? имплементации которого там таки нет

Ответы61134

225 8 мар, 19:33 225 1361134

>>1361128
А ты не очень умный, да?

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

226 8 мар, 19:34 226 1361135

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

Ответы61160

227 8 мар, 19:42 227 1361140

>>1361091
Используй std::vector.

https://ideone.com/jT1IFz

228 8 мар, 20:04 228 1361144

Какого хуя std::hash внезапно не costexpr?
Хотел запилить православный свитч-кейс для стрингов, а мне провели вялым.

Ответы6115861159

229 8 мар, 21:35 229 1361158

>>1361144
сделай сам, в чем проблема?
Строковые литералы вполне хэшируются в компайл-тайме

230 8 мар, 21:36 230 1361159

>>1361144
А с чего бы аллоцирующий память контейнер должен быть constexpr. Обешали завести только в будущих стандартах.

Ответы61165

231 8 мар, 21:36 231 1361160

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

хуйню сказал. Когда лезешь в хайлоад или оптимизацию (что иногда одно и то же), всё это охуенно важно.

Ответы61164

232 8 мар, 21:49 232 1361164

>>1361160
Важно что, знать как устроен внутри std::map? Выдыхай, бобер.

Ответы6121861225

233 8 мар, 21:52 233 1361165

>>1361159
>контейнер
Наркоман? Где там про контейнер было?

Ответы61182

234 8 мар, 22:30 234 1361182

>>1361165
Ой, перепутал)) Это в перле хеши - массивы.

235 9 мар, 00:25 235 1361218

>>1361164
я знаю
но мне дозволительно: я безработный и у меня много свободного времени

Ответы61220

236 9 мар, 00:28 236 1361220

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

237 9 мар, 00:37 237 1361225

>>1361164
Конечно важно, нужно знать как устроенны большинство функций stl и как минимум уметь самостоятельно их написать с нуля.

Ответы61426

289 Кб, 1424x660
238 9 мар, 00:52 238 1361231

Кто из нас четырех пиздит?
1. g++
2. Linux
3. Учебник
4. Я

Ответы6123661237

239 9 мар, 01:12 239 1361236

>>1361231
Вариант 4 исключен. Скопировал код из соурсов книги, результат тот же. Игнорирует последнюю последовательность цифр.

240 9 мар, 01:13 240 1361237

>>1361231
Никто, у тебя программа до сих пор ожидает ввод, т.к. cin.good() == true. Для окончания ввода, тебе надо его закончить (т.е. ввести EOF - Сtrl+D в Linux), либо "сломать" (т.е. ввести что-нибудь, отличающееся от числа).

Ответы61238

241 9 мар, 01:19 241 1361238

>>1361237
Лол, я просто думал что как в винде EOF это ctrl+z, потому что тут оно тоже прерывало програму но не давала вывести последнее значение, спасибо

242 9 мар, 01:29 242 1361243

Посоны. Что по новым стандартам прилично использовать в for циклах: size_t или обычный int?
Алсо, есть отдалённый вариант вкатиться в байтоеблю с микроконтроллерами. Что скажут опытные байтоёбы, какие особенности у погромирования МК. Где то слышал что про многие плюшечки STL, а то и про всю целиком, придётся забыть.
Понятно что для МК Си более родной, но с ООП как то веселее, и код читаемей. И не забываем про trow catch.

Ответы61245612466142261436

243 9 мар, 01:31 243 1361245

>>1361243
> И не забываем про trow catch.
Про это как раз придётся забыть, ибо обычно под мк понимают совсем маленькие процессоры, где нельзя делать динамические аллокации (можно только на стеке). Потому большая часть STL тоже работать не будет.

Ответы61281

244 9 мар, 01:32 244 1361246

>>1361243
Нет, нужно абсолютно все переменные объявлять как auto, при необходимости использовать decltype(auto)

sage 245 9 мар, 03:10 245 1361263

>>1361080
В map в начале идёт
#include <bits/stl_tree.h>
и там RB-tree

Никаких дохуя строк.

137 Кб, 296x300
246 9 мар, 04:48 246 1361271

Я правильно понимаю, что при выводе текста с помощью cout в кавычка не должно быть других знаков?
Что еще с ним нельзя делать?
Ввел в кавычки текст и вставил после него #, так он просто его выводить отказался.
Долго ебался, пока не понял почему.

Ответы61272

247 9 мар, 04:54 247 1361272

>>1361271
Странно. Сейчас перепроверил и он стал выводить.

248 9 мар, 07:21 248 1361281

>>1361245
Сообщаю, что динамические аллокации возможны всегда, где есть помимо стека, остальной объем ОЗУ. Это можно сделать даже с помощью элементарного массива - объявляешь статический массив побольше, и распределяешь из него память динамич. аллокациями. Даже не нужно подменять malloc - пишешь свои собственные функции аллокатора.
Эта хуйня про маленькие процессоры - это чушь собачья. Там критерий в том, что МК - это целый компьютер на одном кристалле, и предназначенный для встраивания и управления другой электроникой. МК самые разные бывают. Есть оче слабенькие 8-битные, меньше чем килобайтом ОЗУ, есть мощные 32-битные. К ним по-моему ещё внешнюю ОЗУ можно подключать.

Ответы6137261419

249 9 мар, 09:08 249 1361299

>>1361091
Анон, тут много где может быть ошибка попробуй так:
(вызываешь ф-ю input)
input(mas,x)

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

Ну и также попробуй с другой функцией.

Ответы61302

250 9 мар, 09:13 250 1361302

>>1361299
Забей, до конца не прочитал.

251 9 мар, 12:42 251 1361362

>>1361080
Конкретно сам код стандартной библиотеки можешь не пытаться читать. Чтобы его полностью понять, тебе нужен как минимум iq 150. Стоит просто понять сам принцип работы той или иной функции, гуглиш просто std::map и всё. Велосипеды писать можно, но только в плане обучения, но в продакшене лучше использовать готовые либы.

Ответы6137961417

252 9 мар, 13:26 252 1361372

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

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

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

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

253 9 мар, 13:39 253 1361379

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

Ответы6141361441

254 9 мар, 15:26 254 1361406

>>1360899
Спасибо

255 9 мар, 15:38 255 1361413

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

Ответы61435

256 9 мар, 15:41 256 1361417

>>1361362
>Чтобы его полностью понять, тебе нужен как минимум iq 150
не нужно
там основная сложность, повторяюсь, это обеспечение безопасности исключений
дело это в стандарт протолкнул саттер с товарищами, но с другой стороны в его книжках объясняются детали реализации, так чтож все понятно становится
так же во всех контейнерах работа с памятью вынесена на уровень аллокаторов, что так же правильное решение, но с другой стороны несколько затрудняет чтение исходников stl

257 9 мар, 15:45 257 1361419

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

258 9 мар, 15:48 258 1361422

>>1361243
>>1361243
дзен новых стандартов заключается в том что for неприлично использовать
как и if, собственно

Ответы62158

259 9 мар, 15:55 259 1361426

>>1361225
Нахуя? Если ты безработный и тебе это нравится, нет вопросов.
В противном случае не понятна мотивация.

260 9 мар, 16:13 260 1361435

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

261 9 мар, 16:18 261 1361436

>>1361243
>Что по новым стандартам прилично использовать в for циклах: size_t или обычный int?
Давай, подумаем, нахуя тебе цикл. Если у тебя цикл типа
for(... i ...) {
yoba = f(yoba);
}
то лучше использовать range based for. Однако тебе нужен именно size_t. Значит цикл у тебя например типа
for(... i ...) {
yoba = (yoba[i+1], yoba[i-1])/2;
}

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

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

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

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

>Что скажут опытные байтоёбы, какие особенности у погромирования МК
Любые. Микроконтролелером сейчас может оказаться пик за 10 рублей, 100 МГц арм за 100 рублей (но в нем мало памяти), или система на кристалле, в которой этой памяти как в пеке пятнадцатилетней давности.
Для твоей софтины 64К арма может оказаться просто вагоном места, а может придется статически выделять память и считать каждый байт.
Главная особенность в том, что без знаний электроники, хотя бы базовых, ты нахуй никому не нужен там.

261 9 мар, 16:18 261 1361436

>>1361243
>Что по новым стандартам прилично использовать в for циклах: size_t или обычный int?
Давай, подумаем, нахуя тебе цикл. Если у тебя цикл типа
for(... i ...) {
yoba = f(yoba);
}
то лучше использовать range based for. Однако тебе нужен именно size_t. Значит цикл у тебя например типа
for(... i ...) {
yoba = (yoba[i+1], yoba[i-1])/2;
}

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

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

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

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

>Что скажут опытные байтоёбы, какие особенности у погромирования МК
Любые. Микроконтролелером сейчас может оказаться пик за 10 рублей, 100 МГц арм за 100 рублей (но в нем мало памяти), или система на кристалле, в которой этой памяти как в пеке пятнадцатилетней давности.
Для твоей софтины 64К арма может оказаться просто вагоном места, а может придется статически выделять память и считать каждый байт.
Главная особенность в том, что без знаний электроники, хотя бы базовых, ты нахуй никому не нужен там.

Показать весь текст

262 9 мар, 16:29 262 1361441

>>1361379
>Лучше свой словарь навелосипедить
Это никогда не лучше. У тебя целый гитхаб с тоннами либ под любыми требованиями, и в эти либы вложены гораздо большие усилий, чем ты способен представить. Фейсбуком каким-нибудь.
То есть, если производительность не нужна, берешь map и складываешь туда свой конфиг. Если нужна - берешь хорошую нестандартную либу. Места велосипедам просто нет.
Исключение, если ты сам работаешь в корпорации уровня фейсбука и написать либу с нуля силами программистов с зарплатой $100к в год тебе проще, тем иметь зависимость. Но маловероятно, что это твой случай

Ответы61448

263 9 мар, 16:36 263 1361448

>>1361441
Ты правда считаешь, что написать свой контейнер - это неебическое достижение, недоступное простым смертным?

Ответы6145561468

264 9 мар, 16:45 264 1361455

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

Ответы61459

265 9 мар, 16:57 265 1361459

>>1361455
>Нет, это ты так считаешь.
С чего ты взял? Если мне нужен свой контейнер - я беру и пишу без задней мысли. Без поисков на гитхабе и размышлений о зарплатах фейсбучных программистов.
>работа для таджиков от мира программирования с соответствующим результатом.
Не понял тебя. Это в комитете таджики работают или в фейсбуке?

Ответы61465

266 9 мар, 16:58 266 1361460

>>1361080
https://github.com/lattera/glibc

267 9 мар, 17:07 267 1361465

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

Ответы61467

268 9 мар, 17:10 268 1361467

>>1361465
Сначала ты свой гитхаб выкладываешь.

Ответы61469

269 9 мар, 17:11 269 1361468

>>1361448
Качественный контейнер, с учётом кэшей процессоров и с максимальной производительностью - да, считаю. Попробуй напиши что-то уровня Swiss Table hash map [1].

[1]: https://github.com/abseil/abseil-cpp/blob/master/absl/container/internal/raw_hash_set.h

Ответы61469

270 9 мар, 17:27 270 1361469

>>1361467
Что и требовалось доказать. Можешь не показывать - контейнеров уровня laba2.cpp в своей жизни видел достаточно.
Рождаются они простым образом - тупой мане СЛОЖНА разбираться в сложном коде крестовых либ, и он пишет свой кривой велосипед, который имеет 10% функциональности нормального контейнера.

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

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

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

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

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

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

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

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

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

270 9 мар, 17:27 270 1361469

>>1361467
Что и требовалось доказать. Можешь не показывать - контейнеров уровня laba2.cpp в своей жизни видел достаточно.
Рождаются они простым образом - тупой мане СЛОЖНА разбираться в сложном коде крестовых либ, и он пишет свой кривой велосипед, который имеет 10% функциональности нормального контейнера.

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

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

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

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

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

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

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

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

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

Показать весь текст
Ответы614776147961485

271 9 мар, 17:39 271 1361477

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

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

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

Ответы6148161490

272 9 мар, 17:44 272 1361479

>>1361469
>соблюдает exception safety, семантичность, сделал поддержку аллокаторов, все соглашения для итераторов и протестировал все.
Сначала ты объяснишь, зачем нужна вся бюрократия (кроме тестирования и итераторов), если я делаю контейнер под свою конкретную задачу, и снаружи библиотеки его никто не увидит?
>и он пишет свой кривой велосипед, который имеет 10% функциональности нормального контейнера.
Смысл велосипеда - как раз заиметь 10% нужной именно тебе функциональности без лишнего оверхеда и мозгоебства.

Ответы61493

273 9 мар, 17:48 273 1361481

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

Ответы61483

274 9 мар, 17:49 274 1361483

>>1361481
Это не моя либа, а гугловская. Ещё кого-то шизиком называет, лол.

Ответы61487

275 9 мар, 17:51 275 1361485

>>1361469
>семантичность
Что такое "семантичность"?

Ответы61496

276 9 мар, 17:51 276 1361487

>>1361483
Бля, ты правда как шелдон из теории большого взрыва. Во фразе "не оценил твою либу" нет информации о том, что ты написал эту либу.

Ответы61488

277 9 мар, 17:53 277 1361488

>>1361487
Ты вообще читаешь посты на которые отвечаешь? Я её привёл в пример как высококачественный контейнер, который средний программист никогда не напишет. А ты мне начал какую-то хуйню втирать.

Ответы61489

278 9 мар, 17:55 278 1361489

>>1361488
А теперь ты даешь цитату, где я в этом усомнился. Раз ты читаешь мои посты, лол

Ответы61491

279 9 мар, 17:56 279 1361490

>>1361477
У гугла политика разработки без эксепшенов. И не потому, что эксепшены это очень плохо, а потому, что у них огромная кодовая база, где будет хуева гора утечек с эксепшенами, код к ним не готов. Но ты, конечно, этого не знаешь.

Ответы6149261653

280 9 мар, 17:56 280 1361491

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

Ответы61495

281 9 мар, 17:57 281 1361492

>>1361490
Вообще они явно пишут в описании библиотеки что сделано это для пирформанса. А ты путаешь причину и следствие.

Ответы61506

282 9 мар, 17:57 282 1361493

>>1361479
>Смысл велосипеда - как раз заиметь 10% нужной именно тебе функциональности без лишнего оверхеда и мозгоебства.
А в итоге ты получаешь оверхед и мозгоебство. Вместо того, чтобы просто взять работающую вещь. Сложна ведь. Ведь это код, который писал НЕ ТЫ. О ужас.

Ответы61503

283 9 мар, 17:59 283 1361495

>>1361491
Чувак, когда я писал пост: "Какие кэши, пусть покажет, как он соблюдает exception safety, семантичность, сделал поддержку аллокаторов, все соглашения для итераторов и протестировал все", только тупой аутист не смог бы увидеть выражение согласия. Ты не увидел и начал спорить. Я охуел с таких раскладов.

Ответы61497

284 9 мар, 18:03 284 1361496

>>1361485
Под этим словом я имел в виду наличие всего набора конструкторов с правильным кодом внутри них.
На самом деле пиление собственный контейнеров лучший способ возненавидеть С++ по-моему.

285 9 мар, 18:04 285 1361497

>>1361495
Тогда всё. Вопрос закрыт.

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

Ответы61498

286 9 мар, 18:05 286 1361498

>>1361497
А теперь поебемся

Ответы61501

287 9 мар, 18:06 287 1361501

>>1361498
Нет, лучше ты поебёшься с моей тульпой, а я буду рядом сидеть в поясе верности и писать код на шаблонах.

288 9 мар, 18:12 288 1361503

>>1361493
>Вместо того, чтобы просто взять работающую вещь. Сложна ведь. Ведь это код, который писал НЕ ТЫ.
Не понимаю твою логику. Если бы была рабочая вещь, я бы велосипеды не писал. Например, миллион вариаций intrusive list, которые все немного отличаются друг от друга. Универсальный если и можно написать, то это будет пиздецома из темплейтной магии. Тут проще писать велосипед под ситуацию.
NIH - синдром, кстати, не на пустом месте берется. Часто обтесывать что-то универсальное сложнее, чем написать свое. Потому что авторы "универсального" решения твой конкретный случай просто не предусмотрели, и приходится городить уродливые велосипеды поверх "рабочей вещи".

289 9 мар, 18:30 289 1361506

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

Ответы615086151061524

290 9 мар, 18:36 290 1361508

>>1361506
Как минимум move-конструкторы с пометкой noexept быстрее тех, которые потенциально могут выбрасывать эксепшоны. Тут вопрос стоит в оптимизациях, которые может сделать конпелятор и эксепшоны могут сильно его ограничивать в этом.

291 9 мар, 18:43 291 1361510

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

292 9 мар, 18:54 292 1361512

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

Ответы61513

293 9 мар, 18:57 293 1361513

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

294 9 мар, 19:15 294 1361522

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

Ответы61578

295 9 мар, 19:20 295 1361524

>>1361506
Вот это обосрамс. Тебе в жаба тред нужно.

296 9 мар, 19:33 296 1361528

https://pastebin.com/nN9DN9Nx как исправить ошибки в 64 и 70 строке?я хочу в первый поток послать первую строк,во второй-вторую и тд

Ответы61541

297 9 мар, 19:49 297 1361541

>>1361528
https://pastebin.com/TF8N1z81 изменил,ошибки исчезли,но все равно выдает ошибку

298 9 мар, 20:31 298 1361578

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

Ответы61628

299 9 мар, 21:34 299 1361628

>>1361578
Тогда вкатываюсь в ядро, пилю гипервизоры. Становлюсь кернель/кор/енджин архитектором, перекатываюсь в шышыа. Подводные?

Ответы6163461655

300 9 мар, 21:44 300 1361634

>>1361628
Зачем тебе кресты вообще для вкатывания? Это ультрахард-мод. Выбери стек попроще.

Ответы6163961684

301 9 мар, 21:50 301 1361639

>>1361634
А если к примеру потратить на изучение 2-3 месяца а потом внезапно перекатиться на другой язык, эти 2-3 месяца совсем в пустую будут потеряны или в чем-то это поможет если вдруг не осилю совсем? мимодруговкаталец

Ответы6166161664

302 9 мар, 22:21 302 1361653

>>1361490
Эксцепшены - это источник проблем в ряде случаев. Вот некоторые сценарии, о которых я знаю (из своего опыта):
- Многопоточная прога. Главный поток запускает выполнение некоторого действия во вспомогательном потоке. Действие может обвалиться с ексцепшеном. Ты его должен естественно перехватить там, во вспомогательном потоке. Причём, в том числе с помощью catch(...) {} (т.е. без указания конкретного типа ексцепшена). Ты не можешь ексцепшен передать в главный поток. Особенно, когда ты не указываешь конкретный его тип. Вот допустим, там в главном есть некое место, где проверяется, выполнено ли уже наше действие во вспомогательном потоке, или нет. А если выполнено, было бы круто ексцепшен из вспомогательного ввернуть прямо сюда, и обработать всю эту бадягу. Но нет - так невозможно.
- Смешение различных языков. Допустим, у тебя есть прога на C++, которая использует библиотеку на C. Например, эта библиотека для работы с jpeg файлами. Там, есть возможность предоставить callback для чтения самого этого файла. Ты его реализуешь в твоей проге на C++. Но ексцепшены бросать из него ты не можешь, хотя хотелось бы, чтобы они достигли твоей главной проги, пройдя сквозь код библиотеки. Не можешь ты бросать, т.к. это может поломать всё внутри C-шного кода. И тут засада. Т.к. например, C-шная библиотека может молча сглотнуть ошибку в callback-е, и вызывать его снова и снова до посинения. Или может вернуть некий обобщённый флаг "Ошибка", не раскрывая её сути. Ексцепшен же мог бы прекратить всю эту шизу на корню (хотя впрочем я не очень прав. другая библиотка может перехватить исключение и заглушить его точно так же). И ексцепшен может донести инфу до основного тела проги во всей её полноте.

Ответы61659

303 9 мар, 22:25 303 1361655

>>1361628
>>1361628
аппаратная виртуализация - нужны были инженеры в нулевые, не было софта
это десятилетие - софт виртуализация, вернее ее второй круг - докеры там, кубернеты и прочее - нужны были инженеры 5 лет назад
ппц, ты на 15 лет в общем опоздал, даже не мечтай

Ответы61674

304 9 мар, 22:32 304 1361659

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

Ответы61677

305 9 мар, 22:33 305 1361661

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

Ответы61694

306 9 мар, 22:38 306 1361664

>>1361639
>потратить на изучение 2-3 месяца
в конце третьего месяца ты, конечно же, будешь ебашить обобщенные лямбды, статический полиморфизм с использованием crtp и заниматься кодогенераций через метапрограмирование с использованием value-based подхода, потому что путь через частичную специализацию уже давно не тру!

Ответы6168161694

66 Кб, 460x622
307 9 мар, 22:50 307 1361669

Всё закончил читать "Эффективный и современный С++" от Скотта Мейрса, понял 50-60%. Это нормально или я тупой?

Ответы61678

308 9 мар, 23:00 308 1361674

>>1361655
Ну в основе то ядро. И кто-то должен все это дело поддерживать. Вангую в 20 годах будет повторение 80ых, вон сколько уязвимостей в архитектурах обнаружено за последние пару лет, будут все переделывать.

309 9 мар, 23:01 309 1361677

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

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

Ответы61679

310 9 мар, 23:01 310 1361678

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

Ответы61682

311 9 мар, 23:03 311 1361679

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

Ответы61687

17 Кб, 558x250
312 9 мар, 23:05 312 1361680

Подскажите, а то мозги уже отключаются. Почему эта ..ня не компилируется
https://github.com/sonoro1234/LuaJIT-ImGui

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

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

313 9 мар, 23:06 313 1361681

>>1361664
>метапрограмирование
Честно, я боюсь появления метаклассов, потому что считаю, что они могут наворотить кучу хуже самой тёмной темплейтной магии. Это нормально?

Ответы61685

314 9 мар, 23:08 314 1361682

>>1361678
У меня слабая база было до прочтения книги, один Шилдт

315 9 мар, 23:21 315 1361684

>>1361634
Так я не совсем с нуля. Вкатывался с аутоита, жс, питона и C#. Но это все либо веб-помои, либо клепание формочек. Хочу системщины.

316 9 мар, 23:26 316 1361685

>>1361681
Поддвачну. Лучше бы макросы как в расте сделали, где хоть с системой типов бороться не надо генерируя нечитаемый говнокод, а тупо хуячишь кодогенерацию на нормальном языке (по сути пишешь плагин для конпелятора), а компилятор сам следит за областью видимости переменных.

Ответы61836

317 9 мар, 23:31 317 1361687

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

1,5 Мб, 419x266
318 9 мар, 23:37 318 1361694

>>1361664
>>1361661
Тогда буду шатать до победного fpfpfpfpfpff

319 10 мар, 10:47 319 1361836

>>1361685
Макросы являются гораздо большим злом, чем теймплейты.

Ответы62018

2 Кб, 403x107
320 10 мар, 16:40 320 1362001

Как же я люблю плюсы... Это работает, если че)

Ответы620566206962118

321 10 мар, 17:08 321 1362018

>>1361836
Это в реалиях C++, где выхлоп макроса имеет область видимости такой же как и у определения макроса. В расте у макроса область видимости ограничена только определёнными внутри выхлопа макроса переменными и аргументами и любые глобальные переменные недоступны.

322 10 мар, 17:53 322 1362056

>>1362001
>Это работает, если че
А почему оно не должно работать? Можешь написать +1-1+1-1... и оно тоже будет работать.

Ответы62062

323 10 мар, 17:59 323 1362062

>>1362056
Да ниче, прикольно просто.

324 10 мар, 18:14 324 1362069

>>1362001
Такая-то обфускация))))

82 Кб, 512x512
325 10 мар, 19:46 325 1362118

>>1362001
Подучи Си.
Алсо,
>венгерская нотация

Ответы6213062146

326 10 мар, 19:49 326 1362119

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

327 10 мар, 19:52 327 1362120

когда сбор урожая закончен, желтые нагорья теряют свой цвет

328 10 мар, 20:05 328 1362130

>>1362118
>любитель повыпендриваться какой он умный
>аниме аватарка
Лол
Алсо,
>венгерская нотация
Это член класса CWinApp, от которого наследуется класс. Это MFC приложение, если че. Вы наверное в своей шараге его еще не проходили

Ответы621696217762182

25 Кб, 546x155
329 10 мар, 20:07 329 1362133

330 10 мар, 20:08 330 1362134

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

331 10 мар, 20:19 331 1362144

Как сделать чтобы switch при выборе варианта не заканчивал программу, а дал выбрать другие варианты?

Ответы62171

332 10 мар, 20:21 332 1362146

>>1362118
Двачую. Помню увидел в каком-то крутом опенсурсе m_ приставку и начал везде ее приписывать не зная что это. Когда узнал, дико проигрывал с себя.

Ответы62169

333 10 мар, 20:23 333 1362147

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

Ответы62161

334 10 мар, 20:34 334 1362158

>>1361422
А что вместо if использовать, switch что ли?

Ответы62176

335 10 мар, 20:36 335 1362161

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

Ответы62174

336 10 мар, 20:49 336 1362169

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

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

337 10 мар, 20:52 337 1362171

>>1362144
В конце каждого кейса пиши break.
Ну и свитч тогда должен быть в цикле. Посмотри выше, там где-то у анона с проблемной пятёркой в массиве был код такого свитча.

Ответы62193

338 10 мар, 20:54 338 1362174

>>1362161
https://github.com/sonoro1234/LuaJIT-ImGui/blob/master/CMakeLists.txt
вот в этом
72 строка get_target_property(SDL_INCLUDE SDL2::SDL2 INTERFACE_INCLUDE_DIRECTORIES)
Она что делает? Я ей уже куда только эти инклуды сдла не пихал. Все остальное видит, а эту хрень - нет. Я так понял, что она и создает переменную SDL_INCLUDE, только вот вот откуда она ее грузит не понимаю.

Ответы62191

339 10 мар, 20:56 339 1362176

>>1362158
Нет, в приличном обществе теперь совсем без if и for, только ооп или функциональщина.

Ответы6218162184

sage 340 10 мар, 20:58 340 1362177

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

341 10 мар, 21:05 341 1362181

>>1362176
Я наоборот слышал что ООП не актуаелен, ну в других языках.

342 10 мар, 21:07 342 1362182

>>1362130
>аниме аватарка
Так-то все настоящие программисты смотрят аниме

343 10 мар, 21:10 343 1362184

>>1362176
Как без IF то блять? А без циклов как? Что-то ты пиздишь.

Ответы62185

344 10 мар, 21:14 344 1362185

>>1362184
Справедливости ради в нормальных языках все циклы спокойно заменяются лямбдами и специальными функциями для итераторов. C++ очень особенный в этом плане, что у него нереально ебанутые итераторы и функции для работы с ними. В С++20 что-то там пытаются упростить при помощи ranges, посмотрим что у них получится.

Ответы6218862305

345 10 мар, 21:18 345 1362188

>>1362185
Ты можешь пример кода привести? Я ньюфаг и не понимаю, как можно заменить базовые конструкции if/else и циклы for.

Ответы6219462206

346 10 мар, 21:21 346 1362191

>>1362174
>вот в этом
Это cmake. Он от мейка отличается как джава от джаваскрипта.
>Она что делает?
Она работает только если SDL_IMPL включен, и у тебя несистемная версия SDL. Тогда все переменные ты сам должен задать, например через define_property.

Ответы62203

347 10 мар, 21:21 347 1362193

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

Ответы62196

348 10 мар, 21:23 348 1362194

>>1362188
Я другой анон, но
1) тернарный оператор. Не совсем замена if/else, но все же. Однако в прошлом(или позапрошлом) треде были разборки, что все же лучше.
2) range based for - не совсем замена, но уже не for со счётчиком. А вообще - std::for_each, std::find и т.д.

Ответы62200

349 10 мар, 21:24 349 1362196

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

Ответы62207

350 10 мар, 21:28 350 1362200

>>1362194
Но тернаный оператор это же пиздец и считается плохим тоном. Не уверен что его вместо if/else используют.

>std::for_each
Но это же просадки по пермофансу, нет? И по сути оболочка над тем же циклом for.

Ответы62210

351 10 мар, 21:33 351 1362203

>>1362191
Спасибо, что хотя бы указал куда копать.
Т.е. мне перед этой строчкой просто вставить такую define_property(SDL_INCLUDE с:\SDL2\include)

352 10 мар, 21:39 352 1362206

>>1362188
> как можно заменить базовые конструкции if/else
https://godbolt.org/z/HEcfUQ

Ответы6220862317623256238062806

353 10 мар, 21:40 353 1362207

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

А он после первого выводит кейс 1, а после второго закрывает окно вывода.

Ответы6222262223

354 10 мар, 21:41 354 1362208

>>1362206
Только я во втором примере перепутал местами if/else. Но я не PRO, а только учусь.

Ответы62212

355 10 мар, 21:50 355 1362210

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

А насчёт стоимости функций из <algorithm> - не в курсе, на самом деле. Но выглядит лаконичнее, однако.

356 10 мар, 21:51 356 1362212

>>1362208
В визуал студио не компилится такое.

Ответы62213

357 10 мар, 21:52 357 1362213

>>1362212
Надо C++17 включить. У тебя небось только C++11 включён.

Ответы6221462218

358 10 мар, 21:54 358 1362214

>>1362213
Ну или заменить constexpr на static. Всё равно я его только для КРУТОСТИ добавил. Так от него толку и нет.

359 10 мар, 21:57 359 1362218

>>1362213
Пиздец, эти кресты блять как болото какое-то. 3 месяца учу, нихуя в итоге не понимаю до сих пор. На работку планирую в 20-21 году, мне вообще нужно учить старые стандарты? 11 там, 14? Или лучше полировать 17 и готовиться к 20?

360 10 мар, 22:01 360 1362221

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

361 10 мар, 22:01 361 1362222

>>1362207
Уууух, разобрался.

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

362 10 мар, 22:03 362 1362223

>>1362207
Там должно быть что-то вроде:
bool flag = true;
int I;
while (flag)
{
std::cin >> i;
switch(i)
{
case 1:
...
break;
case 2:
...
break;
default:
//Exit
flag = false;
}
}

Мог накосячить где-то, на самом деле.
У тебя как выглядит? Принеси уже свой код.

Ответы62237

363 10 мар, 22:19 363 1362237

241 Кб, 736x666231 Кб, webm,
956x474, 0:0364 Кб, webm,
958x478, 0:06320 Кб, 719x403

>>1362223
Я разобрался сделав три свитча. И сделал файлы, ибо объяснял всрато.

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

Да, да, это тот от вида кода которого тут плевались. Для меня так удобно.

Ответы622616226562286623906239362408

364 10 мар, 23:18 364 1362261

79 Кб, 1313x84751 Кб, 1086x658

>>1362237
я тоже не магистр кодинга, но я бы сделал так.

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

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

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

Ответы6226562296

365 10 мар, 23:23 365 1362265

>>1362237
>>1362261
Можно ещё для пущей правильности все vec.begin() и vec.end() заменить на vec.cbegin() и vec.cend() соответственно. Если не меняем элементы, то есть смысл взять константные итераторы.

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

366 10 мар, 23:57 366 1362286

>>1362237
>Не всратый ли это вариант решения моей проблемы?
Научись сначала код форматировать. Сейчас это тупо читать больно.

Ответы62296

367 11 мар, 00:19 367 1362296

>>1362261
>векторы
У меня половина курса шараги на С++. Я не знаю что это.
Но читал про них. Спасибо.
>>1362286
Он читабельный для меня. Мне этого достаточно.

Ответы6229862311

368 11 мар, 00:23 368 1362298

>>1362296
Это всё стандартная библиотека, изучай потихоньку я тоже этим сейчас занимаюсь.
Твой код можно скомпилить как сишный(кроме комментов - это C++ стайл), а мой - уже нет, как раз из-за использования std.

Ответы62299

369 11 мар, 00:24 369 1362299

>>1362298
ну и кроме вывода, конечно же.
самофикс

370 11 мар, 00:43 370 1362305

>>1362185
>ranges
>упростить
Именно, что пытаются. Но не получается.

Ответы62312

371 11 мар, 00:51 371 1362311

>>1362296
А, да.
Не забудь в случае среднего разделить результать std::accumulate на vec.size(), т.к. эта штука только сумму элементов считает.

708 Кб, 960x849
372 11 мар, 00:52 372 1362312

>>1362305

373 11 мар, 00:56 373 1362317

>>1362206
Унарный плюс кастует лямбду к указателю на функцию, да? У лямбды точно вызовется деструктор в таком случае?

Ответы62319

374 11 мар, 00:57 374 1362319

>>1362317
Унарный плюс работает только с теми лямбдами, которые (1) могут быть приведены к указателю на функцию (потому auto-аргументы не работают) и (2) которым деструктор не нужен (потому захватывать ничего нельзя).

Ответы62322

375 11 мар, 01:05 375 1362322

>>1362319
Ты настоящий PRO. Но в своём коде этим я пользоваться не буду.
Алсо, ещё один совсем уж выпендрёжеский способ избавиться от if/else -- branchless маскирование (x = cond ? b : c <==> x = (cond & b) | (!cond & c), или _mm_blendv_pd). Хотя это и в обычных сях можно.

Ответы62807

376 11 мар, 01:09 376 1362325

>>1362206
какой трешак

Ответы6233062375

1,5 Мб, 990x891
377 11 мар, 01:27 377 1362330

>>1362325
Добро пожаловать в плюсы. Так писать не надо, но надо знать, что такое есть.

Ответы62375

378 11 мар, 06:49 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'ов происходит раздельно, в отличие от переменных? Ткинте, пожалуйста, в какое-нибудь информативное описание этого, не помню, чтобы такие детали упоминались во всяких типичных книжках о классах.

47 Кб, 558x388
379 11 мар, 08:17 379 1362372

Сап, мне нужно достать из файла сериализованный массив данных и десериализовать, как написать доставание из файла и десериализацию этих данных?

Ответы623746238362392

380 11 мар, 08:29 380 1362374

>>1362372
Руками попробуй.
Ну реально, с такими вопросами - вон из профессии.

Ответы6237962381

381 11 мар, 08:32 381 1362375

>>1362325
>>1362330
Неосиляторы порвались)))

Ответы62600

382 11 мар, 08:58 382 1362379

>>1362374
ну у меня с файлами проблемы, я не могу понять как это написано и что выполняет, а не понимая суть сложно написать.

383 11 мар, 08:59 383 1362380

>>1362206
Нахуя вообще такой блядский код писать? Чтобы потом самим запутываться и никакого плюса производительности он не дает.

384 11 мар, 09:00 384 1362381

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

Ответы62386

385 11 мар, 09:09 385 1362383

>>1362372
Тебе в C тред с такими вопросами, либо перепиши без void((f[]())()

386 11 мар, 09:22 386 1362386

>>1362381
Код на скрине просто берёт и побайтово копирует память из адреса A в адрес B, промежуточно пихая его в в char массив Mas, который, видимо, и будет писаться в файл, а при загрузке данных из файла ты получишь тот же массив Mas.

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

Ответы62387

387 11 мар, 09:22 387 1362387

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

>пихая его
их

388 11 мар, 09:25 388 1362389

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

Ответы62545

24 Кб, 468x520
389 11 мар, 09:32 389 1362390

>>1362237
Бля чел, ну прям очень говнокодом воняет. Почему бы просто все не сделать через else if. Зачем ты каждый раз, для нового свича, создаешь новую переменную v. Ты можешь просто создать одну и в неё все записывать. Я уже даже не говорю от том какие ты создал функции и как ты их используешь.

Ответы6244470842

390 11 мар, 09:41 390 1362392

>>1362372
Ты этот вопрос неделю назад задавал. Я тебе код скинул, как сериализовать и десериализовать из файла. Но ты походу нихуя не понял. Ты сначала подучи, что такое указатели, массивы, байты, адреса, это элементарные вещи в C++. И только потом сериализацией занимайся.

Ответы627866278862843

391 11 мар, 09:42 391 1362393

>>1362237
Говорю, поставь себе студию или хотя бы Dev C++, он поможет тебе форматировать код.

392 11 мар, 11:01 392 1362408

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

Ответы62441

393 11 мар, 14:05 393 1362441

>>1362408
>в первых постах спросил как делать
>аряяяя дебил выкатывайся
Классика.

Ответы62848

394 11 мар, 14:12 394 1362444

>>1362390
> не сделать через else if
Уже понял что с ним лучше.
>Я уже даже не говорю от том какие ты создал функции и как ты их используешь.
Что с ними не так?

395 11 мар, 15:51 395 1362468

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

Ответы62543

396 11 мар, 18:29 396 1362543

>>1362468
>Можно ли самому захуярить отрисовку через opengl/vulkan всякие?
Смотря что тебе нужно. Берешь что-то вроде imgui или nanovg и хуяришь.

397 11 мар, 18:31 397 1362545

>>1362389
Лучше rust или go ботай. Там зарплаты выше и проекты интересней. Кресты - это или легаси вилкой ковырять или в геймдеве работать по 100 часов в неделю.

Ответы625486255162629

398 11 мар, 18:35 398 1362548

>>1362545
Двачую за rust.

мимо-бывший-плюсовик

399 11 мар, 18:37 399 1362551

>>1362545
А нахуй плюсы в гейдеве, че там каждая контора свой движок мутит?

Ответы6255762565

400 11 мар, 18:43 400 1362557

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

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

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

401 11 мар, 18:52 401 1362565

>>1362551
Гейдев это либо Unreal Engine (C++), либо самопальный говнодвижок (Обычно C++), либо Unity3D (C#).

В 99% для нюфань это будет юнити, по-этому лучше шарпы ботать.

Ответы6258162778

402 11 мар, 19:42 402 1362581

>>1362565
В небольших студиях или одиночки редко берут эти варианты, поэтому нюфане эти движки учить не стоит.

403 11 мар, 20:50 403 1362600

>>1362375
какие неосиляторы, клоун? То, что я не пишу такой говнокод, это не значит, что я не могу его писать.

Ответы62653

404 11 мар, 21:23 404 1362629

>>1362545
Как перекатиться в другой яп, если на плюсах опыт и зп? Опять джуном за 30к идти?

Ответы62633

405 11 мар, 21:27 405 1362633

>>1362629
Есть вакансии cpp/java to rust. Там зп раза в полтора больше будет, чем у плюсовика того же уровня

406 11 мар, 21:44 406 1362653

>>1362600
>не использует последние паттерны языка
>это говнокод
Понятно уже, что ты дебил, только не плачь

Ответы6265662709

407 11 мар, 21:45 407 1362656

>>1362653
Причем тут паттерны?

408 11 мар, 22:19 408 1362709

>>1362653
b = arr[(int)(a > 0)](a);

охуенные у тебя паттерны

409 11 мар, 23:56 409 1362778

>>1362565
Шарпы редкостное дерьмо, недавно писал на них, просто разрыв глаз, как на таком помое только пишут.

114 Кб, 1920x1080
410 12 мар, 00:20 410 1362786

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

Ответы62789

411 12 мар, 00:27 411 1362788

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

412 12 мар, 00:28 412 1362789

>>1362786
Что там понимать? 2 с половиной указателя, цикл и методы ifstream?

Ответы62791

413 12 мар, 00:29 413 1362790

Мне тут анон советовал навернуть cs50 для изучения c++. Так вот вопрос, что мне нужно запоминать при просмотре? Очевидно что там все по другому и получается если учить строго по cs50 то ты по сути учишь уже C. Так вот, имеет ли смысл просто просватривать лекции запоминая общие моменты без переписывания и выучивания (что для c++ я как раз делаю), а то это параллельное изучение двух языков получается и так можно совсем запутаться.

Ответы62792

414 12 мар, 00:32 414 1362791

>>1362789
методы fstream и как передать и вытащить это из файла, с этим сишным кодом, тоесть во второй функции, сначала достать из файла в массив, а потом уже десериализовать? Тогда ещё вопрос по .read() как он работает, если я хочу бинарные данные засунуть в массив, как корректная запись будет выглядеть?

415 12 мар, 00:32 415 1362792

>>1362790
наверни доусона книгу, в своё время охуенно мне помогла, материал преподносится оверохуенно.

Ответы6279463226

416 12 мар, 00:38 416 1362794

285 Кб, 404x500102 Кб, 500x500

>>1362792
Какая именно? Чем позднее, тем более актуальный материал или это последовательные части?

Ответы62798

417 12 мар, 00:48 417 1362798

>>1362794
https://oz.by/books/more10454109.html

Ответы6280163226

418 12 мар, 01:01 418 1362801

>>1362798
Как раз его нашел и листал, ну она не такая большая так что наверное наверну её, спасибо.

419 12 мар, 01:35 419 1362806

>>1362206
Ну охуеть, ты придумал jump table. Когда-то (лет 20 назад) я увлекался ассемблером под дос, так там такие хреновины сплошь и рядом встречались, особенно в свитчах. Но для двух значений делать jump table имхо перебор.
В твоем случае компилятор уже посчитал четверку во время компиляции и убрал нахрен таблицу функций.

Ответы62808

420 12 мар, 01:39 420 1362807

>>1362322
> branchless маскирование
в какой-нибудь cuda хорошо заходит, где ветвление - это гроб-кладбище
но в твоем примере ХЗ как оно еще будет работать, если, скажем х - это какой-нибудь указатель

421 12 мар, 01:40 421 1362808

>>1362806
Жалко, что если сделать std::cin >> a; ни один из конпеляторов не сможет заинлайнить функции.

Ответы62810

422 12 мар, 01:52 422 1362810

>>1362808
проще тогда уж так написать https://godbolt.org/z/WK9B8P

Ответы62812

423 12 мар, 01:58 423 1362812

>>1362810
Ну, мой способ более универсален (хотя всё равно нельзя захватывать переменные).

Ответы62816

424 12 мар, 02:12 424 1362816

>>1362812
вот с захватом, но там конечно код корявый получается
https://godbolt.org/z/t0FGr_

425 12 мар, 02:27 425 1362818

Посоны, как прочитать и записать двумерный массив (массив массивов точнее) в бинарный файл в бинарном виде?
Я хуею с кучи указателей в ваших плюсах

fout.write((char )M, sizeof(M) * n);
Это для одномерного, а для двумерного как?

Ответы628206283162832

426 12 мар, 02:38 426 1362820

>>1362818
Ну можно сделать так:
[4B] - размер массива
{
[4B] - размер внутреннего массива
{[...], ...} - элементы внутреннего массива
} - элементы внешнего массива

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

Ответы62821

883 Кб, 830x588
427 12 мар, 02:40 427 1362821

>>1362820
Не понял :(

Ответы62823

428 12 мар, 02:47 428 1362823

>>1362821
Допустим есть массив
{
{1,2,3},
{4,5,6,7},
{8,9,10,11,12}
}

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

Считываешь в таком порядке: сначала берёшь первый uint32_t - это будет размер внешнего массива, создаёшь его. Затем (ели размер больше нуля) считываешь следующий uint32_t - размер внутреннего массива, создаёшь его и копируешь данные (их количество уже известно) и так повторяешь для каждого внутреннего массива.

429 12 мар, 03:24 429 1362831

>>1362818
Открыл файл потоком, считал первую строку, в которой размерности массива написаны и пошел n раз считывать в массив размера m каждую строку.
Запись - ещё проще, записал размеры и просто всю строку передал потоку через <<.

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

430 12 мар, 03:34 430 1362832

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

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

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

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

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

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

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

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

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

но в любом случае это должны быть функции такого рода, а не типичное для laba.cpp сериализация по месту написания кода

430 12 мар, 03:34 430 1362832

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

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

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

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

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

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

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

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

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

но в любом случае это должны быть функции такого рода, а не типичное для laba.cpp сериализация по месту написания кода

Показать весь текст

431 12 мар, 06:31 431 1362843

>>1362392
Блять наконец сделал эту хуйню, загвоздка была в том, что я не знал как ввести из файла, через read не получалось, через 2 часа нашёл что можно file>>array, и сработало, либо сегодня у препода попрошу обьяснить файлы, либо работа с файлами в дальнейшем будет пулями а я нео, но это такое себе, на жабу перейду потому что в ЕРАТ хочу распределиться, а вдруг там тоже есть, нужно вникнуть, но я чуть не выпилился, вроде всё знаю, лабы ебу как говно, а ебаные файлы уже год преследуют и всегда туплю.

Ответы62845

432 12 мар, 06:44 432 1362845

>>1362843
Только учти, что тебе нужно не столько файлы, а сколько потоки у него спросить.
Ты-то с файлом можешь работать как с cout/cin, через << и >>, но там тоже свои загвоздки есть. Тебе повезло, что у тебя в файле все было "одинаковой" структуры.
Например, в bmp-файле тебе надо будет считать два разных по размеру хедера и сами данные, а >> если и справится с такой хуйней, то с бубном - я только через ifstream::read() как раз делал.
А это, как понимаешь, не единственный вид потоков в плюсах.

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

Ответы66905

433 12 мар, 07:38 433 1362848

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

Ответы62861

434 12 мар, 08:40 434 1362861

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

435 12 мар, 12:36 435 1362924

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

Ответы62935

436 12 мар, 13:15 436 1362935

>>1362924
Писать код. Ничего более. Опционально - смотреть всякие сипипиконы

437 12 мар, 13:31 437 1362942

Поясните, зачем нужен указатель на функцию? так и не нашел практического применения для него, это для дедов?

Ответы6294662947629916301063268

438 12 мар, 13:41 438 1362946

>>1362942
как минимум предикаты для алгоритмов. И всякая функциональная параша вдогонку.

даже в сишечке это использовалось в qsort.

439 12 мар, 13:45 439 1362947

>>1362942
Использовалось для колбеков, сейчас завезли функциональные объекты и т.п.

440 12 мар, 15:01 440 1362991

>>1362942
Чтобы не писать на хаскеле.

441 12 мар, 15:58 441 1363010

>>1362942
в си необходимейшая вещь
системы компонентного программирования (com, gtk), вообще любой интерфейс к сложной либе основывается на комбинации структур и указателей на функции
небходимы для параметризации поведения (не данных), необходимы для ручной реализации динамического полиморфизма, вообще для эмуляции элементов ооп и функциональных парадигм

Ответы63013

442 12 мар, 16:01 442 1363013

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

443 12 мар, 17:43 443 1363062

Свидетели Qt,у меня есть большое изображение, которое ресайзится под размер окна и выводится в Qlabel,нужно на нём отметить прямоугольник по двум точкам, как можно попроще соотнести клик мыши и координаты оригинального изображения?ну или мб есть другие варианты

Ответы63141

5 Кб, 414x40
444 12 мар, 19:54 444 1363113

Всегда мучил вопрос, почему в плюсах такие бешеные названия переменных? нахуя столько ________suka_______

Ответы63115

445 12 мар, 19:59 445 1363115

>>1363113
Чтобы случайно не было конфликта имён с твоим именем suka. Очевидно же

Ответы63117

446 12 мар, 20:00 446 1363117

>>1363115
ебануться, а более умного ничего не могли придумать? У меня так одногрупник на 1 курсе имена переменных давал

Ответы6312263123

447 12 мар, 20:05 447 1363120

Ананасы, в проекте есть куча флагов компиляции. Можно как-то намекнуть системе сборки ебаный qmake, но можно быстро склепать под cmake, чтобы при указании мной каких-то конкретных флагов пересоберались только те файлы, которые должны поменяться? А то ждать по полтора часа, пока проект пересоберётся немного надоело

448 12 мар, 20:06 448 1363121

Скорее всего тупой вопрос. Есть ли в C++ генератор псевдослучайных чисел, который мог бы мгновенно переключать seed, а не через секунду? Стандарт точно старше 11.

Ответы63130

449 12 мар, 20:06 449 1363122

>>1363117
Ну, неймспейсы есть, и даже используются, однако так всё равно делают.

450 12 мар, 20:06 450 1363123

>>1363117
Твой вариант?

5 Кб, 310x236
451 12 мар, 20:08 451 1363125

В чём разница между объявлениями?

Ответы6313363134

452 12 мар, 20:20 452 1363130

>>1363121
Ладно, скажу проще. Мне нужно равномерное распределение по заданному диапазону целых чисел.

Ответы63133

453 12 мар, 20:27 453 1363133

>>1363130
Ну еб твою, стандартная библиотека тебе на что: https://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution

>>1363125
В том, что первый вариант не компилируется. А если я правильно понял то, что ты хотел, то вот: https://gcc.godbolt.org/z/DM_fUr

Ответы6313563155

454 12 мар, 20:27 454 1363134

>>1363125
На интуитивном уровне могу сказать, что в первом случае у тебя есть шаблонный конструктор, который принимает ссылку на объект Ui<T>, где T может не совпадать с типом T у объекта, у которого вызван конструктор копирования (есть небольшие сомнения, что компилятор пропустит такой трюк). Во втором случае это обычный конструктор, принимающий ссылку на объект Ui<T>, где T такой же тип, как у класса объекта, у которого вызывается конструктор

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

455 12 мар, 20:33 455 1363135

>>1363133
>since C++11
Ладно, попробую. Вдруг я ошибаюсь.

456 12 мар, 20:41 456 1363141

>>1363062
aspect_x = ScreenWidth / ImageWith
aspect_y = ScreenHeight / ImageHeight

Умножаешь х и y на координаты мыши

457 12 мар, 20:46 457 1363144

Помогите нуфагу
Поля класса нужно указывать в .h файле, верно?

Ответы63150

458 12 мар, 21:00 458 1363150

>>1363144
Можно в любом месте, у тебя вообще может не быть хидеров.

459 12 мар, 21:07 459 1363155

>>1363133
Оба варианта компилируются. Но по примеру понял, что шаблон для конструктора копирования даёт возможность копировать объекты разных типов, а без шаблона нужно только точное соответствие.

Ответы63185

460 12 мар, 22:05 460 1363183

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

461 12 мар, 22:23 461 1363185

>>1363155
>шаблон для конструктора копирования даёт возможность копировать объекты разных типов
тут есть несколько тонких моментов - как минимум, этот шаблон НЕ отменяет того что сгенерится и конструктор по умолчанию
НО при этом этот шаблон будет обеспечивать более лучшее соответствие чем неявно сгенерированный конструктор
при этом есть различные техники (считай трюки), улучшающиеся от стардарта к стандарту, как это поведение обойти, щас делают через стандартизированный enable_if уже
то же касается и перегруженных операторов для копирования или перемещения

Ответы63187

462 12 мар, 22:25 462 1363187

>>1363185
алсо в будущем потобное можно будет делать через концепты

463 12 мар, 23:49 463 1363226

>>1362798
>>1362792
Ознакомившись с книгой вынужден констатировать, что она - лютое говно и куда больше запутывает и все упрощает, чем объясняет. Нахуй такие.

Ответы66904

464 13 мар, 03:36 464 1363268

>>1362942
10/10 супер-дебильный вопрос.
Начнем с того, что в программировании не существует функций, это математическая абстракция, а пока еще не изобрели математических процессоров, так что функций у тебя нет, это фикция от дебилов для дебилов.
А есть в программировании только подпрограммы(процедуры), но это тоже фикция, а реально есть только код - портянка инструкций сверху-вниз и переходы goto. Так вот, подпрограмма это всего лишь кусок кода на который делается goto, а в конце его делается goto обратно откуда был первый goto.

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

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

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

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

Ответы6326963473

465 13 мар, 03:44 465 1363269

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

А патчить само приложение куда сложнее. Поскольку это требуется при каждом обновлении и всякие anti-tamper защиты могут это сделать практически невозможным.

442 Кб, 1920x1080
466 13 мар, 12:02 466 1363355

>>1358809 (OP)
Хеловорлдщик врывается itt. И у меня к вам вопрос, как вы изучали плюсы? Как был построен процесс вашего обучения? Я вот к примеру нашел вроде бы годную книгу, читаю её, выписываю основные положения в тетрадь, тестирую понятое писанием своих хелловорлдов. Но далее наткнулся на сильное усложнение книги, когда мне дают просто новые понятия и определения не давая при этом примеров использования, и так может продолжаться на протяжении 10-20 страниц, и выходит что изучать язык приходится уже как-то абстрактно, не понимая для чего эти знания нужны и как их конспектировать нет ну я конечно все равно разбираюсь, но процесс идет сложнее. Как было у вас? Как вы постепенно повышали уровень сложности сохраняя при этом понимание пройденного материала?

Ответы633716340463408

467 13 мар, 12:26 467 1363371

>>1363355
у тебя безумное количество материала в интернете. Что-то не понимаешь - гугли тему, пока не поймешь.

Ответы63374

468 13 мар, 12:32 468 1363374

>>1363371
Это понятно, вопрос в системности, типа от простого к сложному, а не так, что сначала учишь А, потом Щ, потом Ъ, а потом глаголы. И где-то на 537 странице тебе показывают что из букв складываются слова. Поэтому и хотелось узнать как учили те, кто уже работает теперь.

Ответы63399

469 13 мар, 13:08 469 1363391

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

Ответы634006362663910

470 13 мар, 13:23 470 1363399

>>1363374
я освоил азы уровня классов\указателей, потом писал всякое говно, пока в голове не появилась мысль о том, что я действительно понимаю, чт оделаю

471 13 мар, 13:24 471 1363400

>>1363391
Если питание пеки выключается, то сериализации не будет. Дизайн говно.

Ответы63402

472 13 мар, 13:27 472 1363402

>>1363400
Я про это и спрашиваю. Как исправить?

Ответы6340363620

473 13 мар, 13:29 473 1363403

>>1363402
Сериализовать в другой момент времени?
Или, допустим, делать как микрософт, который в скрытый файл автосохраняет некие промежуточные копии, и потом он их видит и предлагает восстановить

474 13 мар, 13:48 474 1363404

>>1363355
Привыкай гуглить непонятное, нуб.

Ответы63406

475 13 мар, 14:00 475 1363406

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

Ответы63409

476 13 мар, 14:01 476 1363408

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

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

Ответы6341464507

477 13 мар, 14:01 477 1363409

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

Ответы63414

1,1 Мб, 960x640
478 13 мар, 14:09 478 1363414

>>1363409
>>1363408
Понял принял

479 13 мар, 15:44 479 1363473

>>1363268
>GetProcAddress
Мдемс, сейчас бы юзать функции маломягких вместо того чтобы реализовывать их самому.

Ответы63508

480 13 мар, 16:24 480 1363504

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

Ответы63663

481 13 мар, 16:31 481 1363508

>>1363473
написание pe loader'ов было развлечением мамкиных хакиров в бородатые девяностые
хотя скорее всего ты вообще не понимает того о чем спизданул

Ответы63538

65 Кб, 256x256
482 13 мар, 17:02 482 1363527

Хочу написать игру на С++. Какие есть годные движки? Хочу сделать игру, чтобы она была чисто одним ехе-шником и весила не больше 32 кбайт Чисто челенж, для себя . Какие лучше библиотеки использовать и как добиться того, чтобы все в одном ехешнике было? Наверное нужно компилировать исходные файлы графических библиотек вместе с игрой? Причем уже писал игру, довольно большую на SFML, но может есть что по интереснее? Например 3д движок какой-нибудь?

Ответы6353363539635406354363565635686359664218

483 13 мар, 17:18 483 1363533

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

вут

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

так вот без движков ее исходник уже 130 килобайт

Ответы63547

484 13 мар, 17:24 484 1363536

Ну вся твоя простыня сводится к тому, что:
> ТЫ ТУПОЙ? ВОТ ТАМ ПРОЦЕДУРЫ, ПОТОМУ ЧТО: GetProcAddress, а не GetFuncAddress
И сам даже не углубился в детали реализации, рофел. Схуяли тебе Васян поверить должен? Может у него даже не винда? Как функция то работает, М?

Ответы63538

485 13 мар, 17:24 485 1363538

>>1363508
>>1363536

512x512
486 13 мар, 17:26 486 1363539

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

Ответы63547

487 13 мар, 17:26 487 1363540

>>1363527
Движков под такие размеры нет, даже какие-то полноценные библиотеки не подойдут. Такое - это самописный рендер (даже opengl не засунешь в эти размеры) и контент процедурно генерирующийся.

Ответы6354563547

488 13 мар, 17:32 488 1363543

>>1363527
Есть целая игра на 64кб вроде бы. Загугли, она целиком на асме.

Ответы63557

489 13 мар, 17:32 489 1363545

>>1363540
Вулкан меньше весить должен

490 13 мар, 17:36 490 1363547

>>1363540
>>1363539
>>1363533
Я просто это https://www.youtube.com/watch?v=OJPrBzBgUoE видео посмотрел и мне стало очень интересно, как они это вместили в 32 килобайта. Ладно, походу чтобы такое сделать, надо совсем про быть. А что тогда для программирования игр на с++ годного есть? И что вообще нужно иметь для начала.

Ответы6355764141

491 13 мар, 17:44 491 1363557

>>1363547
Если на плюсах и из движков: Unreal Engine, Urho3D - 3D; Oxygine - 2D. Или взять библиотеку и на основе ее добавить функционал, для простых игрушек и для начала вкатывания - лучший вариант. Например, SDL2.
>>1363543
классика демосцены - kkrieger?

Ответы6355863568

492 13 мар, 17:45 492 1363558

>>1363557
>kkrieger
Оно, да

493 13 мар, 17:54 493 1363565

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

494 13 мар, 18:07 494 1363568

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

Ответы63573

495 13 мар, 18:16 495 1363573

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

Ответы63605

496 13 мар, 18:54 496 1363596

>>1363527
>Хочу написать игру на С++
ты не первый и ты не последний

497 13 мар, 19:02 497 1363601

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

Ответы63665

498 13 мар, 19:25 498 1363605

>>1363573

Умение применять низкоуровневые операции в большой базе кода сообразно архитектуре

27 Кб, 900x449
499 13 мар, 19:43 499 1363608

Я знаю тут есть пара анонов которые знают Qt. Помогите разобраться с темой компилирования на андроид: почему не появился пакет для android for armeabi-v7a? Ставил всё по гайду, эмулятор для armeabi работает, но самого пакета нет для откладки/релиза нет.

500 13 мар, 20:09 500 1363620

>>1363402
Все равно ты максимально себя не обезопасишь.
Если ты будешь срать и умрешь без агонии ты не досрешь.
Разве что ты можешь использовать инициализацию через new, чтобы твоя ссылка висела в оперативе даже после аварийного завершения программы, а при запуске программы отслеживать предыдущее падение и искать в оперативе нужный участок памяти.
Напишешь сборщик мусора для плюсов как раз.
Заодно, если я неправильно понял последствия забывания delete, аноны меня поправят и обоссут и я об этом узнаю.

Ответы6362163623

501 13 мар, 20:11 501 1363621

>>1363620
Да я скорее сделаю так как анон выше рекомендовал. Поудобнее кажется

Ответы63622

502 13 мар, 20:17 502 1363622

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

Ответы63625

503 13 мар, 20:19 503 1363623

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

Как вариант можно насрать в shared memory и запустить дополнительный сервис-процесс, который не будет давать системе очистить её.

504 13 мар, 20:22 504 1363625

>>1363622
Скорее для себя, просто пилю прикладные приложения для личных нужд, может паре друзей скину. В любом случае практика полезна будет

505 13 мар, 20:28 505 1363626

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

506 13 мар, 21:37 506 1363663

>>1363504
Если я не наебываюсь, то в кубаче чанк это колонна 16х16 во всю высоту мира. И прогружается соответственно только полностью.

Ответы63670

507 13 мар, 21:38 507 1363665

>>1363601
>на 30 больше
фронт в два раза больше вообще то в среднем зарабатывает
но объяснение этому очень простое и не обидное

Ответы63672

508 13 мар, 21:45 508 1363670

>>1363663
Меня minecraft не интересует, там-то все элементарно.

Ответы64584

509 13 мар, 21:48 509 1363672

>>1363665
И какое же?

Ответы6368064506

510 13 мар, 22:00 510 1363680

>>1363672
Более квалифицированная работа оплачивается выше.

Ответы63896

511 13 мар, 23:43 511 1363896

>>1363680
Т.е. передний конец сложнее в изучении чем плюсы?
мимоновый

22 Кб, 581x526
512 13 мар, 23:47 512 1363899

Как передать файл в функцию в качестве параметра?

Ответы6390263904

513 14 мар, 00:03 513 1363902

>>1363899
сделай i/ofstream наподобие того как ты сделол mnr или m1 или m1bin и передовай. ты явно вместо ifstream/ofstream передаешь строковые литералы

Ответы6390663937

514 14 мар, 00:06 514 1363904

>>1363899
Ну так ты и передавай файл, а не строку.

Ответы6390663909

31 Кб, 752x635
515 14 мар, 00:07 515 1363906

>>1363902
>>1363904
Вот так? А как сделать бинарный режим не прописывая названия файлов в функции? Можете написать для меня?

516 14 мар, 00:09 516 1363909

>>1363904
А ведь если бы у стримов был не-explicit конструктор из строкового литерала, он бы так и не понял, в чем проебался...

Ответы63937

517 14 мар, 00:10 517 1363910

>>1363391
>Но ситуация такая: сериализация происходит при выходе из приложения, но если оно будет завершено аварийно пека потухнет там, или пользователь процесс завершит то что делать в таком случае?
Старый тред не читал, но ты можешь сделать так: периодически делать сериализацию всей ебалы (снапшот), и дополнительно каждое обновление ебалы тоже сериализовать перед применением (патчи). После этого если видишь снапшот и патчи, то загружаешь снапшот и применяешь патчи, получаешь ебалу.

28 Кб, 688x620
518 14 мар, 03:52 518 1363937

>>1363902
>>1363909
Ладно, я понял свою ошибку.

1 Кб, 339x16
519 14 мар, 03:53 519 1363938

Двощ, учу плюсы в шараге, сейчас копался в гугле, и вдруг впервые в жизни наткнулся на запись пикрил, причем два раза подряд, что это такое нахуй? Фигурные скобки, ну и вот эта u после цифоры.

Ответы6393964317

520 14 мар, 03:57 520 1363939

>>1363938
u - unsigned. суффикс литерала - указание типа.
https://www.tutorialspoint.com/cplusplus/cpp_constants_literals.htm
фигурные скобки - list initialization
https://en.cppreference.com/w/cpp/language/list_initialization

Ответы6394163945

521 14 мар, 04:11 521 1363941

>>1363939
Благодарю.

522 14 мар, 04:40 522 1363945

>>1363939
> list initialization
Нихуя. Это uniform initialization. Там коллекции нет, string::size_type - числовой тип, которых хранит длину строки.

Ответы6394863949

523 14 мар, 04:58 523 1363948

>>1363945
мне казалось, что любая инициализация со скобочками называется list initialization, вот пример такого применения не только мной:
https://stackoverflow.com/questions/18222926/why-is-list-initialization-using-curly-braces-better-than-the-alternatives

Ответы63950

3 Кб, 436x70
524 14 мар, 04:59 524 1363949

>>1363945
Теперь я знаю как пидорасов детектировать.

525 14 мар, 05:03 525 1363950

>>1363948
Даже по твоей ссылке на cppreference рассматривается только инициализация с использованием initializer_list. Разрабы C++11 мощно наложили себе говна в штаны сделав для них одинаковый синтаксис из-за чего не всегда понятно что подобная инициализация делает (и даже как называется, лол). Короче хотели сделать как лучше, а получился C++ way. Хорошо ещё пачку UB при использовании не добавили в стандарт, они любят это делать.

Ответы6395163952

526 14 мар, 05:04 526 1363951

>>1363950
> Даже по твоей ссылке на cppreference рассматривается только инициализация с использованием initializer_list.
Хотя нет, вру. Там рассматривается и то, и другое. Я просто книгу мейерса читал, где он этой хуйне пару глав посвятил.

93 Кб, 875x438
527 14 мар, 05:09 527 1363952

>>1363950
ну, страуструп называет её universal and uniform.

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

Ответы64005

528 14 мар, 10:13 528 1364005

>>1363952
Ты сильно удивишься, если сказать, что list initialization может быть при одном аргументе, а этот самый value-type - при нескольких?

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

За несколько аргументов и не initialiser_list:
Один из вариантов исправить пример выше:
std::vector<char> vec4{y, '\0'};
Теперь выберется нужный конструктор.
Ну или что-то вроде
std::pair<int, int> p1{1, 2};

529 14 мар, 12:39 529 1364080

>>1359037
Сложных вещей в принципе нет если самому в них специально не вляпываться при проектировании

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

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

530 14 мар, 14:21 530 1364134

>>1358809 (OP)
Подскажите какую-нибудь относительно удобную библиотеку для работы с MS SQL Server из C++/GCC под никсами?

531 14 мар, 14:38 531 1364141

>>1363547
о! вот и gamedev.ru подвезли! двач становится всё интереснее и интереснее.
сидел на оном сайте несколько лет с момента его открытия в 2002

Ответы64144

532 14 мар, 14:55 532 1364144

>>1364141
>сидел на оном сайте несколько лет
А что тебя вынудило съебнуть оттудова?

Ответы64206

533 14 мар, 16:18 533 1364206

>>1364144
интересы изменились. пока был пацаном, всё это штырило. а как работать пошёл программером (и не в геймдев), так другие вещи начали меня заботить, помимо игр. особенно если учитывать, что я для себя выяснил что игры-то не особо доходная работа для программера, и кранчей много.

Ответы64210

534 14 мар, 16:24 534 1364210

>>1364206
но по прежнему считаю, что 3D графика - это клёво и интересно.
в миллион раз интереснее всех этих блядских вебов, сетей, формошлёпства, и прочего говна.
что с ней может сравниться по интересности - это разработка компиляторов, функциональное программирование.
ещё заходит всякий системный софт, драйвера, программирование для не-x86 систем, микроконтроллеры, вот это вот взаимодействие с электроникой.
интересно было бы ещё наверное ваять бортовой софт каких-нибудь самолётов/подлодок/космических кораблей и спутников/ракет. и прочая оборонка.
вот да - кто-нить здесь на нёё работает? как там?

Ответы64214

535 14 мар, 16:29 535 1364214

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

интересно ещё робототехника, embedded, какой-нибудь научный софт, операционки.

536 14 мар, 16:32 536 1364218

>>1363527
Повеяло старыми добрыми временами, и демками на 64К под DOS

Ответы6422164574

537 14 мар, 16:35 537 1364221

>>1364218
Они ещё там свой код UPX-ом (кажется) сжимали. И вообще, как только они не извращались. И самомодифицирующийся код юзали, и на ассемблере кодили, и процедурную генерацию сцены. И то - это демки были, а не игры.

Ответы64275

538 14 мар, 17:41 538 1364275

>>1364221
>код UPX-ом (кажется) сжимали
Говно ебаное, сразу определяет петухов. "Экономить" каплю места на диске в ущерб ОЗУ и производительности это типичный современный подход, когда проги жрут гигабайты и тормозят как чушки просто так от нихуя.

Ответы64464

539 14 мар, 17:47 539 1364278

https://pastebin.com/Nh2swRfN
нужно умножить матрицы параллельно,но что то не получается.Я вообще правильно все делаю?

Ответы64565

540 14 мар, 18:52 540 1364317

>>1363938
> вот эта u после цифоры.
Просто интересно, какой курс?

541 14 мар, 22:12 541 1364464

>>1364275
Ты хоть знаешь как это работает? Где ты там увидел ущерб ОЗУ и производительности? После распаковки, программа работает абсолютно также, как если бы она не была упакована изначально.

Ответы64527

542 14 мар, 23:25 542 1364506

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

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

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

Ответы64510645766529965338

543 14 мар, 23:27 543 1364507

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

544 14 мар, 23:30 544 1364510

>>1364506
>работающий за 20к
Где, чем занимаешься? Полы моешь?

545 15 мар, 00:22 545 1364527

>>1364464
Это анон, судя по всему, ещё и не знает, что такое демо, иначе бы такую глупость не сказал.

Ответы64726

546 15 мар, 03:32 546 1364565

>>1364278
Все неправильно делаешь, используй вектор векторов для представления матрицы, изучи, как правильно сконструировать std::thread и напиши код так, чтобы у тебя не было race-ов по данным (я вижу там, как минимум, один)

547 15 мар, 05:53 547 1364574

>>1364218
Хочу рассказать всем собравшимся, что 64К это не случайная цифра, а проистекает она, как я помню, из-за того что это максимальный размер .com файла в DOS. Ровно один сегмент в 16-битном реальном режиме x86 процессора. Этот .com файл грузится в память, в один сегмент, и запускается. Вот и всё. Предельно просто. Код программы может делать с компьютером абсолютно что угодно, никакой защиты памяти, ограждения от взаимодействия с оборудованием нету. Такие вот времена тогда были.
Можно натворить всё что хочешь. Можно ещё, например, оставить свой код и данные резидентными в памяти после выхода из проги, и заодно переопределить несколько прерываний. Можно вообще, переключить проц в защищённый режим, можно вынести всё что есть на компе в памяти, и установить свои порядки. Ща такого не найти.

548 15 мар, 05:54 548 1364576

>>1364506
Жирно.

Ответы64617

549 15 мар, 07:02 549 1364584

>>1363670
Расскажи))

550 15 мар, 10:21 550 1364617

>>1364576
Ты считаешь, что на 20k можно жировать?

Ответы64652

551 15 мар, 10:35 551 1364625

Можно ли как-нибудь в range-based лупах сразу получить атрибут объекта? Допустим. у меня список структур, и сами структуры мне не нужны, мне нужно лишь пробежаться по одному атрибуту каждой из этих структур?

т.е. уместить
for (const auto& elem : vec){
int value = elem.value
}
Внутри for().

Ответы64831

552 15 мар, 11:56 552 1364652

>>1364617
Жирно, ака Толсто, ака Ты толстый тролль

553 15 мар, 15:16 553 1364726

>>1364527
а я в нулевые следил за сценой какое то время, скачивал, запускал, интересно было
но следует сказать что узнал я об этом почитывая первые выпуски журнала хакер
так чтож считай что был как ньюфаг с лурочки, лол
оттудаже узнал и про всякий net-art, в том числе и ascii

490 Кб, 720x720
554 15 мар, 15:32 554 1364736

>>1358809 (OP)
Пиздос, короче:
1. Либо перекатываться на винду, ставить анриал и шататься в сторону геймдева. Во всяком случае учить язык на его фоне.
2. Либо остаться на линуксе чтобы привыкать одновременно и к нему, и шататься в сторону энтерпрайза.
Первый вариант по душе лично мне, тем более что владею графическим софтом, которого попросту нет на линуксе.
Второй вариант кажется более реальным с точки зрения востребованности и ежедневного последующего пиздоса.
У меня паника от неопределенности.

Ответы64763

555 15 мар, 16:17 555 1364763

>>1364736
Выбирай то, к чему душа лежит.
УЕ4 можно и на лине завести.

Ответы64779

556 15 мар, 16:57 556 1364779

>>1364763
Завести-то можно, но она там в стадии разработки, да и все остальное там явно к графону не располагает

Ответы64965

557 15 мар, 18:16 557 1364831

>>1364625
Сделать класс-wrapper над вектором, у которого есть функции begin и end (range-based for их вызывает), сделать, чтобы они возвращали специальные итераторы, которые разыменуются не в элемент вектора, а в атрибут этого элемента.
Но по мне так этот геморрой нафиг нужен, твой range-based и так достаточно читабельный, еще короче вряд ли получится сделать

Ответы66005

558 15 мар, 19:09 558 1364866

Ищу анона из nvidia 320к. Хочу ама набираться. Не троллинг.

Ответы6486764869

559 15 мар, 19:10 559 1364867

>>1364866
ама-ама-криминал?

Ответы64874

560 15 мар, 19:13 560 1364869

>>1364866
Как поднять бабла, витя?

Ответы64874

561 15 мар, 19:15 561 1364874

>>1364867
>>1364869
двух шизиков поймал на изи.

562 15 мар, 21:51 562 1364965

>>1364779
Еще два года назад собирал и писал под ним, ничего не мешало,ты, видимо, плохой танцор.

Ответы65005

563 15 мар, 22:43 563 1365005

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

Ответы65261

564 16 мар, 11:13 564 1365261

>>1365005
Еще и blender тебе не угодил, самая популярная сейчас прога в области моделирования.
Уже пару лет на уече делаем под линем, никаких траблов команда не заметила, багов каких-то конечный продукт тоже не выдавал.

Ответы65284

565 16 мар, 11:18 565 1365265

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

Ответы6529965328

566 16 мар, 12:06 566 1365284

>>1365261
Да вот по сути ты и говоришь то, о чем я говорил, процесс в моем случае выглядит так Открыл макс > накидал болванку > оптимизировал плагином > закинул в зебру > вывел и запек икснормалом > оттекстурировал сабстанс пейнтером > внес правки в текстуру > открыл фотошоп > плагины на плагинах, плагины позволяющие видеть геймтекстуры реалтаймово. И вот после такого пересесть на линукс и начать графонить ну как-то может быть не очень удобно, особенно если тебе вдруг понадобилась какая-то прога под конкретную сиюминутную задачу. У вас же изначально весь флоу в линуксе был. Я же не спорю, что там можно, но зачем если уже освоен в винде. Да и разговор ушел не в ту сторону слишком

Ответы65328

567 16 мар, 12:47 567 1365299

>>1365265
>>1364506
This.

568 16 мар, 13:20 568 1365328

>>1365284
Ну если в вашей студии уже все заточено на определенные проги, то что тогда.
>> Да и разговор ушел не в ту сторону слишком
Там тебе еще вчера ответили, что бери то, что по душе.

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

569 16 мар, 13:26 569 1365338

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

Мимо-сеньор-помидор

570 16 мар, 21:12 570 1365592

Ананасы, подкиньте идеи для диплома
Чтобы было и интересно и полезно каким-то образом

Ответы6565165894

571 16 мар, 22:30 571 1365651

>>1365592
Зареверси MSI Mystic Light, чтобы я мог светяшки переключать без их ебаного говнософта. Я ковырялся с их SDK, но это SDK тупо дергает их же сервис. А надо вообще без софта.

572 17 мар, 10:20 572 1365894

>>1365592
Шаблоны как универсальная модель вычислений. Зафигачь машину Тьюринга, алгорифмы Маркова и машину Поста на темплейтах, ревлизуй алгоритмы и поисследуй выразительность языка.

Ответы6589865908

573 17 мар, 10:26 573 1365898

>>1365894
Ммм, stateful-шаблончики. Вот препод охуеет от такого кода.

574 17 мар, 10:34 574 1365908

>>1365894
А, и лямба-исчисление обязательно (с индексацией де Брёйна)

575 17 мар, 13:54 575 1366005

>>1364831
Использовать не собираюсь, но в качестве упражнения решил попробовать реализовать. Ты примерно это имел в виду? https://repl.it/repls/QuaintBelovedCookie
Нормально ли здесь использовать std::move? Не уверен, делает ли он хоть что-то полезное тут. Мне не хочется копировать весь вектор лишь для того, чтобы заменить итератор.

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

В общем, в идеале хотелось бы получить вызов в виде rangeMember< std::magic<vector::value_type::a> >(vector).

576 17 мар, 23:21 576 1366296

Codewars хуйня или нет? Стоит тратить время на это?

577 19 мар, 06:39 577 1366904

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

300 Кб, 1920x1080
578 19 мар, 06:41 578 1366905

>>1362845
ну дальше будет что то такого, поэтому да, нужно спросить, но сначала норм сформулировать

Ответы66977

579 19 мар, 11:04 579 1366977

>>1366905
Так у тебя есть методичка, а ты за помощью идёшь сюда?
Тяжёлый случай.

Ответы67368

580 20 мар, 07:13 580 1367368

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

Ответы67569

581 20 мар, 16:40 581 1367569

>>1367368
>а мне бы разобраться как оно работает
Так ты тогда вопросы правильные задавай, а не "как сериализовать объект".

Ответы67895

582 21 мар, 02:25 582 1367895

>>1367569
сорри.

583 27 мар, 13:32 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

Компилятор ГЦЦ

Ответы710227105471490

584 27 мар, 15:52 584 1370842

>>1362390
Примут в контору — быстро выбьют эту хуйню. А вообще, я в шоке как можно быть настолько безвкусным

585 27 мар, 21:24 585 1371022

>>1370779
Почему-то? У тебя <= в лупе.

586 27 мар, 22:01 586 1371054

>>1370779
ну андефайнд бихевиор на то и андефайнд?

587 28 мар, 16:49 587 1371490

>>1370779
>почему-то
А что не так, что оно, по-твоему, должно выводить?

588 28 мар, 17:57 588 1371524

std::unique_ptr<int> up;
std::function<void()> ff([up = std::move(up)]()mutable{});

Почему это не компилируется?

Ответы71616

589 28 мар, 21:10 589 1371616

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

590 28 мар, 21:54 590 1371632

Помогите сделать функцию делающую std::function без параметров из callable и аргументов. С перфект форвардингом, со всеми возможными кейсами. Сука, весь вечер потратил, нихуя не получилось. То с муваблами не работает, то референсы не реферянсятся.
https://ideone.com/axVrR0

Ответы71702

591 29 мар, 00:31 591 1371702

>>1371632
ты изобрести std::bind Хочешь?

Ответы71775

592 29 мар, 05:31 592 1371736

Вот есть функция винапи MessageBox. Как мне блять вызвать ее только со своей оболочкой? Делаю вот так:
typedef (int* MessageBox_t)(
HWND hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT uType
);
MessageBox_t MessageBox;
Но ссаный прекомпилятор мне гудит мол соси хуй REDEFINITION. СУКА, почему блять в 2019 году блять компилятор не может блять понять что я хочу использовать свою оболочку, а не стандартную?

Ответы71884

593 29 мар, 08:45 593 1371775

>>1371702
Попробуй забиндить, например, юник переданный через move

Ответы71841

594 29 мар, 10:44 594 1371841

>>1371775
Короче я понял, функция зачем-то должна быть copy-constructible, поэтому о перемещении можно забыть. Придется заворачивать moveable во что-то типа шаред поинтера.

595 29 мар, 12:33 595 1371884

>>1371736
using ZALUPA = int(*)(HWND...);

Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 8 апреля 2019 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion