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

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

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

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

6 месяцев назад я поднял вопрос внедрения bazel в большом двадцатилетнем проекте на плюсах, над которым работает 120 человек. Полная пересборка проекта длится 110 минут в одной кофигурации, пересборка после мержа с апстримом - минут 30.

Провел презентацию, сделал тестовый проект с бенчмарками, где dramatically ускорялась компиляция. В общем, показал с пруфами, что BAZEL - КРУТО.
Что вы думаете? Менеджер сказал - нахуй надо, нам и так норм. Орава сеньеров-помидоров-титулованных-плюсовиков сказала "нуууу это. Круто, конечно, но наш проект НЕРЕАЛНА портировать, столько кода же. 20 лет пилим бля!".

Ну ок, похуй, пляшем. Два месяца в личное время портировал проект и 100500 библиотек на bazel + еще под clang скомпилил.

Полная сборка сократилась со 110 минут до 5 минут. Типичная сборка после обновления до апстрима сократилась с 30 минут до 2 минут.

Поцики на линуксе заценили, теперь живут и радуются. На винде дебики только сказали "хм, ну интересно, наверное. А как на винде сделоть?". Я их отослал в документацию, так эти ебланы до сих пор не сделали. На винде сидит 2/3 всех разработчиков
3 1365147
Похожая история с memory sanitizer'ами. Показал этим деградантам, рассказал что и к чему. Первая реакция - ЭТО НЕВОЗМОЖНО, ВРЕТИ!!11 (sic!). Пиздец, приехали. За ручку повел на гитхаб, показал доку. Ну ок, вроде поверили.

Запустили продукт с санитайзерами - больше 10к ошибок. Теперь фиксят понемногу.

Про швятую студию - тоже охуительные истории. В 2k19 студия работает в 32bit бинаре. Лолчто блядь. Глючит ровно так же, как и vs2010, чтобы ни говорили фанбои. Я лично проверял. Средства рефакторинга? Ну есть вроде, но не работают нормально. Каждый первый плюсовик ставит помидорку или решарпер на студию, позорище блядь.

Когда говоришь про CLion - сразу "ну мне и так норм, лень менять". Потом сидишь рядом с этим "и так норм", дебажишь в паре очередной рандом в многопотоке с никакой навигацией по коду и радуешься тому, как все свистит, пердит и виснет.
4 1365148
Зато каждый первый хуевертит побитовое сравнение структур вместо нормального компаратора, делает макросы на каждый чих и обмазывается рекурсивными шаблонами для кодогенерации. Синьоры-плюсовики, хуле. Макросы макросов с пятиуровневыми шаблонами внутри - это про них.

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

В типичном проекте на плюсах вероятность 90%, что ты встретишь 4-5 разных классов для строк, свою либу сериализации, rpc, кодогенерацию, in-memory fs и набор хитровыебанных примитивов синхронизации на пару с пулами потоков. А еще будут свои итераторы и стримы данных, потому что std::*stream - это ебанное убожество. Кроме этого будет кастомный пердолинг вокруг системы сборки и невоспроизводимые билды.

Трустори. Все это встречал на трех конторах в трех разных больших продуктах. И везде был один типикал C++-контингент. Дважды даже встречал самописный map-reduce на итераторах (аналог java streams), лол.
5 1365149
В общем, большенство плюсовиков - я это такие пидорахи в мире программистов. Любят скрепы и защищают недостатки родины, люто неприемлят любое новое, другие языки и технологии.
Так что, анон, брось дрочить на плюсы, переходи на что-нибудь статически-строго-типизированное и функциональное, с нормальным тулингом и сообществом.

ДИСКАСС
6 1365207
>>65149

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


Борщехлеб маскировался под программиста, но под конец не выдержал.
7 1365212
>>65149

>переходи на что-нибудь


>но не скажу на что


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


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

8 1365216
>>65212
Scala, kotlin, java - стек jvm
Go, swift - native со встроенным gc
Rust - native без gc
9 1365230
>>65216
Тут тред языка программирования. Скриптомакакам просьба на выход.
10 1365244
>>65216
У свифта нет gc, там подсчет ссылок
11 1365280
>>65230

>Rust


>Скриптомакака


Построить из себя большого профессионала у тебя не получилось.

>>65244
Да, я в курсе. Не хотелось создавать новую категорию или относить язык к категории раста
12 1365311
>>65149
Лол, внезапно двачую. На удивление точная характеристика.
13 1365312
>>65244
Подсчет ссылок - это форма сборки мусора.
14 1365336
Поясните, как обойти дерево итеративно? В данный момент я сначала загружаю его в массив, а потом читаю массив, но мне кажется он тут лишний. Или мб можно что-то типа пайпа реализовать, чтобы функция рекурсивно выплевывала значения?
15 1365376
>>65336
Тебе в любом случае нужен будет стек в каком-то виде. Если с массивом все ок выглядит то лучше так и оставить. Алсо, не совсем ясно что ты подразумеваешь под "загружаю его в массив". Чтобы загрузить дерево в массив его нужно обойти.
16 1365408
>>65336
А чем обычный фор не устраивает?
17 1365426
>>65376
Бля, не хочетс реализовать стек, ну да ладно. Массив создавал рекурсивно, лол.

>>65408
Как ты будешь обходить деерево через for?
18 1365431
>>65144
Базель это же просто билд-тул. У вас в проекте что, мейкфайлами и симейком не пользовались?
19 1365433
>>65426
Ты лабу по алгосам что ли делаешь? Дерево (как и любой граф) можно обойти итеративно поиском в ширину или глубину. Если не лень, можешь обратить внимание на Boost Graph Library, не придется писать свой велик.
20 1365438
>>65149

Плюсоебство - это как православие. Когда протестантизм завещает работать над собой и создавать блага, славя величие Господа, православие требует от последователя искупления греха, посредством непрерывного страдания, как страдал Иисус неся свой крест. Стрелять себе в ногу и нажираясь потом водкой, позерски ноя о тяжестях нищебродской жизни -- что может быть лучше для православного плюсоеба?
21 1365446
>>65431
Рассмешил нахуй. Было на premake. Фишка bazel в том, что он умеет кешировать результаты сборки. Можно организовать кеш на локальной тачке и тогда сможешь безболезненно переключаться между ветками гита, вообще нихуя не вызывая лишний ребилд.

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

А еще билдсервер можно оформить в виде кластера. Тогда можно юзать не один двухсокетный сервер с ксеонами, а пять. И честно компилить с нуля одну ревизию проекта-монстра за пару минут.
Untitled2.jpg61 Кб, 1005x532
22 1365499
Что за хуйня? Разве он не должен переводить меня в диск D? Полный путь к папке выдает тоже самое, строку с путем показывает и снова предлагает выполнить из дефолтного места.
23 1365511
>>65499
Причем cd ../ работает как положено и возвращает в предыдущую папку
24 1365514
>>65499
Мало того, что не по теме, так еще и гуглится на раз-два. Нужно аргумент /D приписать в начале вот так:

>cd \D D:/whatever

25 1365517
>>65514
Жрять, у меня до этого вот абсолютно точно так же открывался диск без аргумента /D, гуглил как только мог, видимо неправильные слова писал, спасибо
26 1365519
>>65499
Просто пишешь D: и все.
27 1365541
>>65144

>Полная сборка сократилась со 110 минут до 5 минут.


Они там в один поток собирали? Откуда такая разница?
28 1365554
>>65541

>Откуда такая разница?


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

>На винде сидит 2/3 всех разработчиков


Это реально звучит как диагноз (и им по сути и является).
30 1365595
Ананасы, подкиньте идею для диплома
Чтоб интересно было и может быть как-то полезно
31 1365600
>>65595
Свою нейронную сеть без сторонних либ. Полезно, интересно и все преподы на защите будут кипятком ссать, я гарантирую это.
32 1365604
>>65541
Нет, собирали как обычно. Непосредственное время работы компилятора и линкера не уменьшилось.

После перехода на bazel все девелоперские тачки стали выдавать побайтово одинаковые объектные файлы и бинарники на одной ревизии.

Т.е. стало возможным кешировать и шарить все результаты сборки между разработчиками.
CI-билдер при сборке каждой ревизии стал писать в этот кеш результаты, а все девелоперы стали тянуть объектные файлы по сети.
Как результат: обновление до новой ревизии происходит за пару минут, переход между ветками тоже перестал требовать пересборки всего говна.
Еще стало возможным собрать свою изменения на билдере значительно быстрее, чем на локальной тачке. Но это не очень удобно.

На момент моего увольнения коллега внедрял bazel remote execution, чтобы можно собирать свои изменения на кластере прямо с рабочей тачки, но результат я застать не успел.

>>65554
Да)) В этом как раз вся суть - уже 3 года bazel лежит на гитхабе, бери и внедряй. А 120 долбоебов даже не почесались, чтобы перестать страдать.
33 1365608
>>65604

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


"Полный ребилд" - это когда все файлы проекта компилируются заново, без кэширования.
34 1365611
>>65554
Лол, так и оказалось: >>65604
35 1365632
сап двач, прошу помочь с программой, ебусь целую неделю, нихрена не получается.
Покажите на примере функции ввода вывода массива в/из файла.

Конкретная задача: есть структура, которой я успешно заполняю массив (сериализация тип). Нужно заполнить файл этим массивом(А) в бинарном виде, после чего вывести эту бинарную кашу в другой массив(В). Массивы по итогу должны быть идентичны, но у меня получается ересь. Есть предположение, что весь файл записывается в первый элемент массива(не уверен в этом)

Код скинуть не могу, слишком большой, да и прошу я примеры работы конкретно с бинарными файлами
36 1365634
>>65608
>>65611

Сборка проекта с нуля, когда ты только склонировал проект, занимает 5 минут вместо почти двух часов. Тебе-то что от того, что оно не пересобирает его у тебя на компьютере? Оно либо собирает его на кластере, либо берез из общего кеша, если ревизию собрали ранее. Тебя ебать не должно, ты можешь ПРОСТО начать работать.

Это вопрос терминологии, не понимаю, почему ты за это пытаешься зацепиться, суть от этого не меняется.
Судя по твоей боли от сугубо положительного результата, ты - истинный плюсовик.
1552351431121.png1,6 Мб, 3840x2160
37 1365639
>>65595
Ролль или выбирай, тем дохуя просто.
38 1365646
>>65639
Надо будет подумоть
39 1365654
>>65634

>либо берез из общего кеша, если ревизию собрали ранее


Еще раз объясняю "полный ребилд" - это когда весь проект собирается заново, без кеша. То есть все файлы заново перекомпилируются. Твои 5 минут - это не "полный ребилд".

>Это вопрос терминологии


Именно. Вопрос терминологии, которой ты не владеешь.

>Судя по твоей боли от сугубо положительного результата


Боль у меня исключительно от твоего неграмотного пиздежа.
40 1365659
>>65634
Обычным мейком ты тоже собираешь проект один раз, а потом перекомпилируешь только изменившиеся файлы. Т.е. вся суть твоей хуитки в том, что это сетевой кэш вместо локального.
41 1365700
>>65654

>полный ребилд


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

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

Ты просто типичный плюсовик-дегенерат. Ты ему про уменьшение среднего времени ожидания сборки проекта, а он тебе ВАШ РЕБИЛД НЕ РЕБИЛД.

>>65659
Ага, теперь смени ветку и верни обратно, умник. Посмотрим, как перекомпилятся неизменившиеся файлы с изменившимся таймстампом. Bazel чекает хеш файла, а не таймстамп.
42 1365725
Растодебилы должны быть в своём треде и не лезть к нормальным людям.
43 1365737
>>65700

>бессильная злоба


>Ты просто типичный плюсовик-дегенерат


Железобетонные аргументы. Сразу видно настоящего профессионала.
44 1365752
>>65654
Чет ты до какой-то хуйни доебался.

мимо
347cb091-70d4-469a-affb-8ad4ed660d50.jpeg59 Кб, 1280x423
45 1365757
>>65737
Мне ничего не мешает одновременно приводить аргументы и раскрывать суть твоей личности.

Вот, подкрасил для тебя аргументы желтым, посколько из-за своей толщины тебе трудно их отыскать.
46 1365758
>>65700
да чувак, успокойся
кеш-база базела, в которой по сути хранятся скомпилированные артефакты по каждой ветке и все такое
это нужно для просто огромных команд и проектов, как раз уровня гугла и майрософт
примерно та же история что и к примеру, с серверами отладочных символов под каждый бинарный артефакт, у майкрософт издревне был такой артефакт
все это экономит время, да
НО требует сопровождения, настройки и прочей поеботы
в конпорациях вообще под это дело выделяют отдельных инженеров
но для средних контор никто не будет тебе выделять на это время
а значит сопровождение всего этого ляжет на плечи обычных гребцов
старички это понимают, вот и не рыпаются
а ты молодое еще видно, говно в жопе бурлит
47 1365760
>>65758

>издревне был такой артефакт


инструмент
quick fix
48 1365766
>>65758

>а ты молодое еще видно, говно в жопе бурлит


Судя по его стилю общения, скорее всего с ним большинство команды просто контактировать не захотело из-за токсичности. Он выше сам пишет, что 2/3 народа его замечательные инициативы молча проигнорировало. Потому что плюсовики-дегенераты.
49 1365837
>>65766
2/3 народа у них на винде, так что он сам их нахуй послал, ведь на винде дегенераты.
50 1366300
Реально ли в плюсах поднимать хорошие деньги, не занимаясь серьезным байтоебством? Я сейчас только в начале карьеры и работаю над проектом, где это не так важно. Однако кажется, что за пределами моей конторы от плюсовиков (по крайней мере от синьеров) только этого и ждут. То есть не просто там архитектуру пк знать и немного ассемблер понимать, а прямо хардкорным эмбедом заниматься.
51 1366367
>>65312
Кнут так не считает.
52 1366368
>>65446

>Фишка bazel в том, что он умеет кешировать результаты сборки.


В чём отличие от ccache?
53 1366472
>>66368
ccache - для бумеров, bazel - для зумеров
54 1366491
>>66368
С точки зрения кеширования концептуально мало чем. Bazel - это интегрированное решение. Там есть кеш(ccache, stashed) + код сервера для кеша, сборка на кластере(incredibuild, distcc) + код сервера, reproducible builds(когда ты явно указываешь все шаги сборки так, что в итоге для сборки продукта тебе нужен только базел и git репозиторий - все остальное скачается само и нужных версий), поддержка нескольких языков - например, вообще без костылей можно компилить клиент на джаве и сервер на плюсах, которые зависят от одного протобафа; можно создавать тестовое окружение, где скомпиленный бинарник прокидывается как ресурс для тест-раннера (да, да, никакой ебли с ручной настройкой тестового окружения).

И все это счастье работает нативно(без msys) на винде.
Это просто более взрослое и продвинутое решение, чем все остальное. С более серьезной командой, которая постоянно пилит новые фичи и устраняет баги.
55 1366523
https://pastebin.com/cXYN9bPW
Занятие в университете. Реализовать класс, добавить поля, в том числе с типом char* в приватную секцию, добавить геттеры и сеттеры для этих полей в публичную секцию, реализовать конструкторы инициализации и копирования, деструкторы. Продемонстрировать следующий функционал:
создание и удаление массива экземпляров класса; использование класса; поиск или сортировку в массиве;использование конструктора копирования,
конструктора инициализации; перегруженного метода.

проблема такая: внутри сортировки вызывается деструктор и он освобождает память не по своему указателю в последнем элементе сортируемого вектора, пробовал создавать экземпляр, копировать его и удалять первый экземпляр- проблем нет, если из деструктора убрать delete - то все норм, но если оставить delete то и в конце программы, отсортированный вектор
не может корректно уничтожить свои элементы.
Смотрел по шагам сортирует все верно все значения корректные но в самом конце сортировки освобождается память по указателю последнего элемента. Обходные пути не интересуют, объясните где у меня ошибка. с меня нихуя
56 1366527
>>66523

>лабодауны идут нахуй

57 1366528
>>66527
не, эт для меня, я прост проебал пару часов жЫзни на гугление, и не могу сообразить в чем проблема
58 1366532
>>66528
The type of dereferenced RandomIt must meet the requirements of MoveAssignable and MoveConstructible.
https://en.cppreference.com/w/cpp/algorithm/sort
59 1366539
>>66532
спасибо анон, а где вот это вот все вычитывать? стандарт штудировать от а до я?
60 1366572
>>66539
>>66539
он всосал это с молоком матери!
2d9f5a91-2ba7-49ac-b250-ee0ae6529069.jpeg18 Кб, 500x375
61 1366582
ТАК, БЛЯДЬ.

Не был на собесах два года. Надо кабанчиком пробежаться по STL/boost. Есть какие-либо статьи чтоб по быстрому вспомнить, если все это дело знал наизусть 5 лет назад?
62 1366597
>>66582
Пробежись по cppreference
63 1366598
>>66491

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


Ты менеджер по продажам, что ли?
64 1366716
Codewars хуйня или нет? Стоит тратить время на это?
1212.gif124 Кб, 300x300
65 1366723
http://www.cyberforum.ru/3d-modeling/thread2421226.html
Может кто помочь?
На С++ реально написать гифрелейтед с сохранением в .gif?
66 1366728
>>66716
Эти ресурсы нужны для тренировки алгоритмического мышления, то есть ты учишься грамотно применять известные алгоритмы или выдумывать новые. Для изучания языков программирования они не подходят, а основная их цель -- подготовить тебя к собесам в силиконовые конторы (ну или в яндекс), где спрашивают подобные задачи.
67 1366733
Всем привет, недавно начали изучать кресты в шараге, решил стандартизировать знания и заполнить пробелы, выбрал книгу Бьерна Страуструпа"Принципы и практика использования C++", все верно сделал?
68 1366738
>>66723
На крестах реально даже твою мамку написать.
>>66733
Книга норм, но будешь часто охуевать от ошибок в коде и тексте. Но особенный пиздец будет, когда дойдешь до рисования в gui через fltk. Но если пройдешь всю еблю, то нехило апнешь скилл.
69 1366739
>>66723
Конечно реально
70 1366740
>>66738
подробнее насчет ошибок?
71 1366741
>>66738
кст почему работа со строками там так далеко находится?
72 1366745
>>66738
>>66739
Друзья, покажите, пожалуйста, как это сделать
73 1366759
>>66745
В стандартном с++ нету средств для графики.
Так что либо ты кочаешь себе подходящую библиотеку, либо куришь алгоритмы вроде https://ru.m.wikipedia.org/wiki/Алгоритм_Брезенхэма и устройство .гиф
74 1366762
>>66745

>Друзья, покажите, пожалуйста, как это сделать


Возьми Qt, там есть QPainter, у которого богатые средства для рисования. Можно другую чисто графическую либу вроде skia или cairo, но они сложно настраиваются и устанавливаются. Начинающему тяжеловато будет. С библиотекой для gif тоже лучше не париться, а сохранить последовательность картинок, которые потом сконвертировать в гиф imagemagic-ом.
75 1366768
>>66733

>заполнить пробелы


«Принципы и практика...» не для этого писалась, она энтрилевел. Для заполнения пробелов у него другие книжки.
76 1366782
https://pastebin.com/vnEnYBZe пытаюсь параллельно матрицы умножить,но не получается.В чем ошибка
77 1366783
>>66782
Читать больно. Сначала скажи, каким алгоритмом пользовался, как на блоки матрицы делил.
78 1366787
>>66783
https://github.com/mtrebi/matrix-multiplication-threading
я просто этот код переделал:время выполнения убрал
79 1366789
>>66759
>>66762
Обнял!
80 1366827
>>66762

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


Алсо, чтобы тяжёловесный Qt не ставить, можно заюзать какую-нибудь либу. SDL или SFML например
Без названия.jpg6 Кб, 226x223
81 1366840
82 1366854
>>66827

>SDL или SFML например


Там векторной графики нет. Только спрайты и текст. В SFML немного есть, но хуже QPaintera.
83 1366866
>>66733
>>66582
Шапка для кого, блеать?
84 1366873
>>66582
То, что ты знал 5 лет назад, уже не используется, сейчас нужно юзать только новые стандарты с пометкой на улучшение в будущем, заглядывая в черновики будущих стандартов. Иначе говнокод
85 1366892
>>66873
Говнокод это твои гены.
86 1366973
>>66873
Неплохо набросил.
87 1366986
>>66741

>почему


Эта книжка писалась как университетский курс для полных снулей в программировании. Ответы на вопросы почему у него так, а не иначе в Главе 0 + он дает ссылку на свой сайт, где есть более подробные рекомендации к каждой главе + на хабре есть перевод этих рекомендаций.

>работа со строками там так далеко находится?


Базовый ввод/вывод он дает с самого начала, этого достаточно.
Работа со строками сама по себе может быть достаточно муторной и не всем интересна. Типа не хотел демотивировать учеников. Алсо, конкретно в плюсах она еще и основывается на таких средствах языка, которые в двух словах не объяснишь в самом начале.
88 1367088
Поясните, есть примерно такой код:

void RecursiveFunction (Myfuckingclass A,..) {
if (something) {
A.modify() // как-то изменить A
RecursiveFunction(A, ...) }}

MyFuckingClass A;
A.print // изначальное значение
RecursiveFunction(A,...);
A.print // то же значение, будто ничего не произошло

Почему она не меняет класс? Нельзя как-нибудь по ссылке передать?
89 1367089
>>67088
Почему нельзя по ссылке передать? Или ты не знаешь как?
90 1367092
>>67088
void RecursiveFunction (Myfuckingclass & A и т.д.
это ващета азы
91 1367093
>>67089
>>67092
бля тривиальщина, аж стыдно, но все равно спасибо. Ссылку на обьект дал, а на сам класс не дал.
92 1367096
>>67093
Че ты несешь.
Класс - это абстрактное описание некой сущности.
Объект - это уже воплощение этой абстракции.
93 1367098
Пачаны, накидайте годного материала по нейроночкам на наших любимых крестах. Гайды, примеры, исходники - вот это вот все.

И гляньте чо зелёные натворили, вообще уже ебнулись
https://youtu.be/p5U4NgVGAwg
94 1367192
>>67098
Я сам когда-то на плюсах нейронку писал - НИГДЕ в интернете нет нормального описания обратной пропагации не то что каких-нибудь backward convolution - а обычного слоя свёртки (с нетривиальными значениями dilation, шага и пэддинга). Только листок бумаги и исходники Caffe тебе в помощь.
95 1367227
Как вложить класс в класс если классы раскиданы по нескольким разным сpp и h файлам?
Помогите, гугол выдает какую то хуету.
96 1367257
>>67192
В серьезных книжках формулы все есть. Берешь их и кодишь. Подразумевается, что ты достаточно умен для этого. А если нет, то используй Python + ML фреймфорк на свой вкус.
97 1367262
>>67227
Forward declaration наверное ищешь.

headerB.h:

struct A;

struct B { A* a; };

headerA.h:

#include "headerB.h"

struct A { B b; };
98 1367348
>>67257
В книжках и статьях (даже самого ЛеКунна) везде говорится "да там обратная пропагация, оно само всё. Вот простой пример для padding=0, stride=1, dilation=1, а для других сами разберётесь".
99 1367418
>>67262
Лол, возможно ему вообще нужна обычная композиция или агрегация.
А такое как у тебя лучше сразу разруливать абстрактными интерфейсами, чтобы потом не огрести.
100 1367651
Подскажите как достать thumbnail из видео если его нет в метаданных используя Qt ну или либу какую?
101 1367919
>>67651
Какая система? В каком смысле "нет в метаданных"? Если венда не сгенерила и в кэше у неё нет thumbnail-а, то можно забрутфорсить.
Берёшь ffmpeg. Демуксишь, декодируешь n-ый кадр. Вот тебе ноготь большого пальца.
102 1367990
>>67919

>ffmpeg


Спасибо, сейчас буду делать
103 1368158
>>65137 (OP)
Для интереса пишу на с++, почему у меня default random engine все время показывает одно и тоже значение

>default_random_engine randomGenerator(time(0));


>uniform_int_distribution<int> roll(1,6);
Если я например три раза вызову, то остальные будут рандомными, а первое всё равно одним и тем же
104 1368180
>>65144
Я хуею, я еще себя тупым считаю
105 1368244
Почему во всех вакансиях требуют знание Boost? Там ведь половина либы перекочевала в стандарт, а остальная на подходе, да и функции там далеко не уникальные. Легаси поддерживать?
106 1368262
>>68244
Да.
Ты не переживай, я на работе недавно переписывал легаси, написанный на расширении крестов от Borland C++ 2002 года
107 1368319
>>68262
Но чем переписывал?
108 1368335
Ознакомился с заголовочными файлами (tobish .h).
Не могу понять.
Поясните, можно ли писать в заголовках содержания функций, не только, просто, прототипы.
Если нельзя/не принято, почему? Проясните ситуацию, не хочу тупо разделять функций на 2 файла, где в одном - прототип, а в другом - уже функция.
109 1368339
>>68335
Потому что деды так делали - и ты так делай.
Серьёзно, если это твой первый ЯП, то лучше сейчас тебе в этом не пытаться разобраться, а просто принять.
И лучше начать изучение с чистого С.
110 1368341
>>68339
Явно не первый. У C нет классов, поэтому для меня он сосёт, простите меня владельцы C.
А так, выяснил, что можно взять при себе 3 файл (.cpp, но не главный) и туда поставить содержание функций.
Главное не забыть присоединить заголовок к нему.
111 1368356
>>68341
В расте тоже нет классов, а сосет все равно C++
112 1368371
>>68335
Не прототипы, а декларации.
Надо для инкапсуляции и для того, чтобы при изменении внутреннего устройства функции не приходилось перекомпилировать все файлы, использующие этот ашник.
113 1368390
>>68335
Вообще можно, только придется писать перед каждой функцией ключевое слово inline. Почему так и зачем гугли ODR (one definition rule).
114 1368392
>>68390

>только придется писать перед каждой функцией ключевое слово inline.


фейспалм.жпг
115 1368397
>>68392
Что не так? Не хочешь писать - разделяй на интерфейс и реализацию или хуярь на шаблонах (их нужно писать в заголовочном файле).
116 1368412
>>68319
важней вопрос: зачем?
117 1368421
>>68397

>Что не так?


Все определенные в ашнике функции по умолчанию инлайн.
118 1368429
>>68421
Ссылку на пункт стандарта.
119 1368434
>>68421
ты путаешь, наверное, с функциями-членами, определенными в объявлении класса..
120 1368441
>>68434
Возможно.
121 1368677
Как при файловом вводе вернуть каретку в самое начало файла? Допустим, я хочу сначала посчитать количество строк в файле, а потом уже запускать алгоритм.
122 1368687
>>68677
перепечатай эту ссылку руками, чтобы симулировать подобие самостоятельной деятельности
cplusplus.com/forum/beginner/30644/
изображение.png14 Кб, 359x482
123 1368699
Почему в переменную konets не записывается символ \n?
>>68687
Я не знаю английского
124 1368702
Так, ладно, я понял, что cin не читает управляющие символы. Как это исправит? Я уже пробовал искать решение, но так и не нашёл (искал только на Русском языке, потому что других не знаю).
125 1368703
>>68702

> ">>"не читает управляющие символы


самофикс
126 1368705
>>68702
cin.get()
cin.getline()
getline()
127 1368706
>>68702
Да, неповезло. В макдональдс вроде анкету можно на Русском языке отправить.
128 1368707
>>68706
Английский язык в не англоязычных странах используется в основном только в IT и то не всегда, 1C тому пример. А команды на любом языке можно просто выучить.
129 1368710
>>68707

>используется в основном только


Плюсы тоже применяются в основном только в айти, и то не всегда. У английского намного больше сфер применимости, чем у плюсов, но ты зачем-то решил учить плюсы.
130 1368711
Вот скажите, как сейчас обстоят дела на рынке труда у крестов? Собираюсь скоро РАБотать, не могу определиться с языком. Да-да, важен не язык, а скилл, алгоритмы, структуры и тд - это понятно, но все равно на сам язык время потратить надо. Речь идет не о базовых конструкциях, их я изучал еще лет 6 назад, а про всякие STL, boost, новые стандарты и тд. Плюс сделать небольшой проект - два для резюме. Мне не оче нравятся всякие жабаскрипты, похапэ и тем более всякие электроны. Да, вакансии есть по плюсам, но я хотел бы узнать, ведутся ли НОВЫЕ разработки, куда можно пробиться при достаточном упорстве. Те не легаси и переписывание на реакты. Вообще меня больше привлекает лоулевел, но в рашке за всякие микроконтроллеры платят мало, поэтому готов хотя бы на полшишечки пилить что-то на плюсах. Но, если что-то пилят только во всяких яндексах, где нужно пройти 20 собеседований и потом раздвигать булки, то я бы и не прочь пойти веб макакой, получая свои 300к/нсек и играться с сишкой по выходным, может участвуя в каком опенсурс проекте. В общем, мой вопрос такой: стоит ли в 2019 пытаться ворваться, при условии, что по большей части нравиться само программирование, пусть даже и веб, но все такие хочется ближе к системе? Немаловажную роль играет зп в перспективе, но я был бы готов получать НЕ СИЛЬНО меньше и при этом потратить БОЛЬШЕ времени на изучение. Но если разница в ЗП в полтора раза, а знать надо в 3 раза больше, то я бы положил на эту затею. В идеале я бы пилил модули для линупса, но такого в рахе я вообще не видел, может одна вакансия для моржей с 10 летнем стажем.
изображение.png5 Кб, 285x183
131 1368719
>>68710
И не зря. Я решил свою проблему без тебя, пидора ебаного.
132 1368721
>>68719

>кидаешь список подходящих функций


>он называет тебя пидором ебаным


больше никогда не буду помогать незнающим английский, они же ущербные, реально.
133 1368722
>>68721
Зай, лучше про рыночек расскажи мне
134 1368725
>>68711
Кресты один из самых популярных языков программирования, много где применяется. Его изучение поможет в изучении других Си-подобных языков, в том числе JS. Лучший язык программирования, чтобы начать учиться программировать.
изображение.png58 Кб, 1262x441
135 1368727
>>68711
Яндекс хуйни не посоветует
136 1368732
>>68725
Учиться программировать я уже умею. С указателями бодался, в сокеты долбился, системные вызовы юзал и тд. Речь идет о том, что конкретно задрочить все основные либы и новые стандарты непосредственно для того, чтобы пойти работать джуном.

>>68727
Питухон я знаю и часто использую, мне он нравиться, но на нем в основном вакансии по Data Science и джангам. Как я уже сказал, я и не прочь в принципе, просто хотелось бы поближе к байтикам. Вообще бы в идеале писал бы питоновские модули на си, потом бы их соединял питоном и наворачивал юниттесты. А для Data Science и всяким ML нужно еще перед этим статистику учить, она у нас в шараге была, но сказать, что я ее знаю не могу, хотя еще помню про нормальное распределение и простые задачи.
137 1368737
>>68699
Ух ёб твою мать.
почитай про потоки ввода и про наименования переменных.
138 1368738
>>68732

>поближе к байтикам


Ассемблер
139 1368739
>>68719
А ещё круче то, что istream::getline сделал бы то же самое, а код бы выглядел куда короче.

P.S.: открывать файл в одной процедуре, а закрывать в другой - хуйня.
140 1368818
>>68739
двачую, создаёшь буферную строку, while getline увеличиваешь счётчик и возвращаешь
после таких тредов понимаю, что язык реально сложный, но с кучей полезных инструментов
141 1368819
>>68725

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


по количеству ваканский и не скажешь
сижу и плачу, неужели ебаную жабу учить придётся
142 1368839
Это перепост с ньюфаг треда, т.к. сказали что тут есть люди работающие в этой области:

>Есть тут господа совмещающие программирование в linux с работой с железом?


>Очень хочется получить структурированные знания по тому как вообще происходит написание драйверов под линухом, как это всё вяжется с device tree, что за node module блять и тд. Существует ли такая литература, но не состоящая из кучи отдельных статей в инете, а именно в одном источнике, хотя бы в каких то базовых аспектах?


>И порекомендуйте плес какие-нибудь хорошие книжки по C для написания всё тех же драйверов.

143 1368849
Бляяяя, какое же винда дерьмище ебаное. Все вилкой вручную собираешь. С САЙТА БЛЯДЬ КАЧАЕШЬ. Дельфимокрыеписьки скочать бесплатно. Как в 90-е нахуй.
144 1368863
>>68819

>сижу и плачу, неужели ебаную жабу учить придётся


она проработаннее и технологичнее, чем плюсы. А еще там есть нормальная IDE

мимо-ушел-с-плюсов-на-джаву
145 1368871
>>68819

>неужели ебаную жабу учить придётся


Жаба удобнее, чтобы 5/8 на дядю пахать. Стабильность и минимум приключений.
146 1368902
Почему если я пытаюсь преобразовать 6.0 в 6, то получаю 5, хотя с остальными числами всё в порядке? Как это исправить? Преобразую через цел_пер=(int)вещ_пер.
147 1368904
>>68902
То есть 6.000000
148 1368917
>>68904
нам про представление вещественных чисел рассказывали на 2м курсе
ты еще на первом что ли?
149 1368962
>>68917
Я на программиста учусь, на первом курсе сейчас. Мы по идее это прошли уже, на лабе в понедельник будет задание на C++ с массивами структур, бинарным файловым вводом/выводом и всё это будет через жопуфункции. F yf
150 1368963
>>68917
Да, второй семестр. Это задание для добора баллов на допуск к пересдаче экзамена по ОАиП.
151 1368973
>>68902
ты код кажи и конпилятр какой?
152 1368978
>>68917
У 6 нет погрешности в флоат представлении.
153 1368992
Хеллоуворлдщик в треде.
Что делать если одна и та же программа компилируется в консоли с ошибкой, а в визуал студии без ошибок? Не выёбываться и учиться пока что только в рамках визуалстудии?
154 1368999
>>68992

>программа компилируется в консоли с ошибкой


Гуглить код/текст ошибки, не?

>Не выёбываться


Тут нужно чувствовать баланс. Если совсем не выебуваться, то станешь омеганом.

>учиться пока что


Учиться нужно всю жизнь и все рано дураком помрешь
155 1369009
>>68973

Вот, накодировал.
https://ideone.com/xYdWu6
Кто-нибудь, можете сделать это менее ковнокодисто? Там надо a.b превратить в a, b и сравнить что больше. Код выглядит так слёзотворно, потому что по условию задания нельзя было использовать что-то кроме stdio.h, а нельзя было также массивы и циклы, только условия и всё.
156 1369033
>>69009
И где тут с++¿
157 1369053
Здрасьте.

Нужно написать программу. Суть в чём, есть структура из переменных типа int, float, char. (её я уж сам заполню). Нужно записать структуру в бинарный файл. Препод творил такое:
--------------------------------------
//объявлял тут структуру А
char Mas[sizeof(A)];
//Сериализация сруктуры А
char ptr = (char)&A;
for (int i=0;i<sizeof(A);i++) Mas=*(ptr+i);
----------------------------------------------------------
Мне нужно сделать примерно то же самое, вот только у меня в структуре есть элементы типа char, и фокус с указателями на тип, я так понимаю, не прокатит.
Запись массива в бинарный файл я сам смогу оформить, а вот как мне массив заполнить этой структурой я толком не понимаю. памагити
158 1369068
>>69053

>Препод творил такое


>вот как мне


>я толком не понимаю


Спросить у препода, даун.
Ты, блядь, чего ради бабло за обучение отдаешь, мудило?
Нормальный препод будет только рад объяснить даже внеурочное время.
А если нет, то это твоя задача, чтобы таких пидоров среди преподов не встречалось.
159 1369076
>>69068
ну зачем оскорблять то сразу.
Препод сказал искать инфу в инете, и я с ним согласен, инфу нужно учиться искать самому, программирование это вам не русский язык.
Бабло за обучение я не отдаю. Препода вовлекать в этот вопрос не хочу
160 1369087
>>69053

> сам смогу оформить, а вот как мне массив заполнить этой структурой я тол


Схуяли оно работать не будет? Обрати внимание что у тебя там указатели не на тип, а на чар. Та хуйня со всем работать будет (пока отсутвие стандартизированого ABI тебе хуйцом по губам не проведет). Естественно если у тебя в структуре указатели на что-то (в том числе виртуальные функции) то ты соснешь.
161 1369092
>>69087
спасибо, буду пробовать, мб я не прав. С указателями туплю как обычно
162 1369101
Бля, как же меня уже заебал ебучий впф, сука. Впф - это просто кусок сырого непроработанного говна, где ничего не работает, где запилено дохуя говнофункций, которые нигде не используются или замещают друг друга. А впф плюс мввм - это вообще говно мочи. Есть, блять, удобный code behind, где ты спокойно запиливаешь все эвенты, но НЕТ, сука, нельзя так делать, ведь тогда швятой мввм не соблюдается и нужно запиливать все эвенты через злоебучие команды, которые работают через жопу и требуют миллиард дополнительных строк нечитаемого кода. А некоторые эвенты вообще хуй через команды сделаешь. И хули делать? Вот, кто, сука, решил, что чистый code behind - это хорошо? Его что, блять, по приколу что ли запилили?
163 1369104
>>69101
Ебать я дебил, от баттхёрта тредом промахнулся.
1553379438746.png629 Кб, 1440x2560
164 1369120
>>69053
Ifstream file("file.txt");
file >> reinterpret_cast<char>(%переменная твоей структуры%);

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

Наоборот тоже верно - можешь считать с файла данные в преобразованную к char
структуру. Но это уже придется делать через метод read, а не через <<.
Посмотри методички работы винапи с изображениями - точно увидишь там такое.
165 1369121
>>69120
Блядб, звёздочки.
166 1369147
Зачем писать на плюсах, если есть нативный интероп с растом? Пиздец просто, вы что, мазохисты?
167 1369165
Какую команду для ввода из файла использовать, чтобы в char можно было записывать пробелы и всё такое?
изображение.png807 Кб, 847x1200
168 1369167
Рейтаните.
169 1369182
>>69167

>Сиддхартха Рао


Ну у тебя кароч откроется сахасрара и вишуддха, лингам вырастет на 2-3 см.
Ты издеваешься? В этой книженции в три раза меньше страниц чем в стандарте на кресты, а предполагается что она тебе еще что то доступным языком должна объяснять.
170 1369255
>>69120
Спасибо большое
171 1369320
>>65137 (OP)
Анон, сколько приблизительно времени придется потратить для изучения основ С++ (включая поверхностное изучение стандартных и популярных библиотек), дабы его знание можно было без страха добавлять в резюме как второстепенный язык?
У меня 3 года опыта Си, и вообще я всегда на хую вертел этот с++, но буржуи в своих вакансиях почему-то постоянно его требуют. Хуй знает, где они там хотят в эмбеддед его использовать может гуй ко всякому говну будут заставлять писать, но этот пробел в знаниях меня напрягает.
172 1369335
>>69320
Месяцев шесть в проде, чтобы освоиться с дефолтными либами и новыми фичами языка. Но лучше потратить это время на java/scala/rust, потому что и приятнее, и зп больше. На джаве/скале бигдата HFT, на расте блокчейн и перекатываются из HFT, а так же прочие нуждающиеся в железобетонной стабильности/секьюрности.
173 1369338
>>69320
>>69335
Сорян, не увидел эмбедед в твоем посте. Тогда 2 месяца на подмножество фич, которое разрешено в embedded. (Простенькие классы, шаблоны, consexpr, модули)
174 1369341
>>69335

>расте


Это ты тот дебил, который своим растом заебал си тред?
175 1369342
>>65137 (OP)
Пишите на раст, сучки!
176 1369375
>>69341
>>69342
дебил на месте, все в порядке
177 1369383
>>69320
ну, щас типа тред что кресты в ембенд лезут
те не тупо новые компиляторы использовать, те приплюснутый си, а по новому кодить
типа отказываться от макросов, заменяя кодогенерацией на шаблонах и метапрограммированием и все такое
даже stl пытаются начать пользовать, тк уже реально писать работающие аллокаторы на новых стандартов, до этого они были по сути нерабочие
типа новая мув семантика позволит не проседать в производительности, но повышать уровень абстракции
и все такое
и прочее
но все упирается в тупость ембед кодеров, тк там хуевые зарплаты и надо дохуя знать в предметке, в электронике, на изучение языка времени не остается
вообще эмбед это чаще всего спагетти дрисня на макросах, write-only код
178 1369403
Извиняюсь что тупизна да еще и не по теме, но в ньюфагаче молчат, а в гугле я не могу найти:

Как в VS поменять ТОЛЬКО фоновый цвет редактора? Не тему, не полностью загружать цветовую настройку, а только цвет фона? Где блядь эта ебучая настройка? Уже по списку прокрутил просто все настройки цветов, просматривая любое совпадение по фону, и все равно нихуя не нашел.
179 1369414
>>69341
>>69342
>>69375
Я 6 лет писал на C/С++, полгода назад устроился в проект, где новый код пишется только на Rust и интегрируется с легаси на C++. Так что да, я тот "дебил".

А ты можешь сходить нахуй и не семенить в двух тредах, поскольку у тебя ни опыта, ни знаний, если судить по твоим постам.
180 1369416
какой же я тупой
proof.jpg212 Кб, 347x963
181 1369420
>>69403
Я искал, честно
182 1369421
Сохраняю файлы, жму билд, жму дебаг, а изменения сделанные в коде не появляются.
Если почитстить билд или сделать ребилд и потом запустить дебаг все изменения срабатывают.
В решении несколько файлов.
Как это пофиксить, чтоб не надо было каждый раз чистить билд и хватало бы просто начать дебаг ну или хотябы просто чтоб билд обновлял код.
Только только вкатился в с++, юзаю вижуал студио.
184 1369434
>>69426
Этож VS Code, но ладно я посмотрю наверное то же самое и для студии, спасибо
185 1369435
>>69338
Собственно где-то так я себе это и представлял, спасибо

>>69383

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


Хм, а есть примеры чего-то серьезного, где с++ используют больше, нежели как си с классами?
Я, наверное, только AOSP могу вспомнить, в котором и шаблоны, и куча всякого специфического плюсового говна используется по назначению, дабы сделать код максимально портабельным и простым. Но ондроед - это такой себе пример эмбеддед, да и все-равно они там кучу кастомных ужасных генераторов навасянили (например, https://source.android.com/devices/architecture/hidl).
Вообще в эмбеддед зачастую нет таких задач, где бы это мета-говно помогло, а не навредило. А в тех, где оно действительно нужно, васянятся свои несложные генераторы.

>там хуевые зарплаты


Ничем не хуевее остальных. Отрасль же большая, если не учитывать кузьмичей на заводе, то зарплаты очень даже на уровне по крайней мере я доволен
186 1369452
>>69414
про "дебил на месте" написал другой мимоанон (я) единственно в замечание забавного подтверждения догадки "это ты тот дебил из Си треда?" боевым призывом "раст, сучки" обращенным к треду (ОП)
187 1369453
>>69452
Растонаркоман, уходи
188 1369610
>>69426
Визула Студия хочет моей смерти, не иначе. Я даже уже тулзу скачал чтобы темы ставить и редактировать и все равно не могу найти в каком параметре редактируется фон редактора, все что угодно, каждый пиксель, цвет значка закрытия вкладки при наведении, но не цвет фона редактируемой вкладки.
189 1369630
>>69610
У меня похоже баг и у меня реально не меняется цвет фона, еще пара цветов игнорится, так что дело в другом видимо.
68747470733a2f2f692e696d6775722e636f6d2f684d5a507a6a342e706[...].png14 Кб, 504x246
190 1369644
Визжу как сучка, когда вспоминаю об этом
191 1369649
>>69644
по большому счету все это нагородили для обеспечения мув-семантики
image.png79 Кб, 1240x553
192 1369652
>>69403
Ты об этом?
193 1369655
>>69652
Я буквально чуть ли не вручную менял все цвета у которых были указаны Background, видимо проебался и пропустил
194 1369656
>>69655
>>69652
Ах да, спасибо.
195 1369657
>>69403
в vs есть аддон добавляющий цветовые схемы вообще то
и там много уже популярных схем сделано
пользуйся
196 1369659
>>69657
Да его-то я как раз и скачал, и вот как раз фон нужно было сменить
197 1369723
>>69644
Раскуриваешь Вандервурда с Джосаттисом?
198 1369757
>>69723
есть 2 контейнера
в первом по старинке храняться указатели на объекты, не сами объекты, вставка работает быстро
во втором храняться сами объекты, тогда чтобы вставить новый объект в контейнер, нужно создать объект аж три раза - свободный объект, потом при передаче его в контейнер создасться фактический параметр, а потом уже из фактического параметра создадуют внутренний объект в контейнере
а мув-семантика позволяет всего лишь оптимизировать второй случай - будет не три, а два раза создан объект
и получается что хранить объекты по указателям все равно быстрей с точки зрения вставки
199 1369761
Так, мужчины, перекатываюсь с С на плюсы (обратно).
Что почитать посоветуете, учитывая, что с базовым синтаксисом знаком, отличие указателя от ссылки знаю, но в классах и во всем таком после 99 года не шарю совсем?
200 1369770
>>69761
последнюю мейерса
второе издание шаблонов вандевурда
201 1369775
>>69761

>отличие указателя от ссылки знаю


кхе, кхе
то что типа ссылка всегда должна быть инициализирована все знают.. это не обсуждается
а ты лучше скажи мне другие отличия..
202 1369781
>>69775
Ну, как минимум, ссылке нельзя присвоить другой объект.
203 1369783
>>69757
Я надеюсь, ты сложные типы гоняешь через ссылки? К чему это все? Зачем по твоему конструкторы для move?
204 1369786
>>69761

>но в классах и во всем таком после 99 года не шарю совсем


С C++03 в кишках классов ничего не поменялось. Добавили наворотов в библиотеки, лямдбы, constexpr, вывод типов, memory model и все. Скоро добавят концепты и модули и по мелочи
205 1369787
>>69781
int i,j;
int & r = i;
r = j;
206 1369796
>>69787
и? ты изменил значение по ссылке, а не ссылку.
207 1369806
>>69781
давай еще
спускаемся в глубины с++!
208 1369812
>>69806
Да я че ебу? Ну был там способ сделать функцию lvalue возвращая ссылку.
Я потому и спрашиваю книжку, так как не знаю нихуя кроме сишной базы.
209 1369858
ну, епт, давайте
кто еще про отличие ссылок от указателей знает
одним словом можно отписаться, чтобы хотя бы знать шо тут не одни студенты, нах
210 1369859
тут подумал, вроде как получается что мув семантика - это не про то как оптимизировать производительность, а всего лишь еще один синтахсический сахарок, внезапно
так как все равно если вам нужно действительно быстро вставлять-заполнять какие-то контейнеры, то все равно вам придется хранить в контейнерах указатели на объекты, а не сами объекты
хотя, скорей всего, я чего то не понимаю
так как практики у меня не было уже несколько лет
211 1369879
>>69859
Классы - синтаксический сахарок. Можно в структурах хранить поинтеры на функции. C++ не нужен.
212 1369882
>>69879
когда дебил не знает про конструкторы и деструкторы
213 1369885
>>69882
Синтаксический сахарок. Вызывай мануально перед выходом из скоупа.
214 1369894
>>69859

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


Ты время создания объектов учитываешь в "действительно быстро"? По одному создавать объекты гораздо медленнее, чем выделять память большим куском, как это делают контейнеры. Плюс доступ по указателю почти всегда медленнее, чем по значению.
215 1369900
>>69894
угу, спасибо за эти соображения
щас буду думать об этом
216 1369930
а, похоже, понял
мы должны не только контейнер обеспечить операциями вставки с поддержкой мув-семантики, но и класс хранимого объекта обеспечить мув-конструктором
тогда магическим образом у нас будет не 3 раза создания объекта, а всего лишь один
217 1369931
хотя остается другой вопрос - а именно когда необходимо сохранить возможноть динамического полиморфизма для объектов контейнера
тогда все равно нужно по старинке хранить указатели, а не сами объекты в контейнере
218 1369932
>>69879
не передергивай
одно дело то что язык си позволяет эмулировать ооп, другое дело когда возможности ооп встроены в язык на уровне семантики
219 1369937
>>69931
Тут всегда есть трейд-офф между скоростью работы и гибкостью в поведении. Что именно ты выбираешь зависит от задачи. Правда, если ты не научными вычислениями, эмбеддедом, хай-лоадом или (софт) риал-таймом занимаешься, то тебе обычно большая скорость и не нужна.
Есть ещё третий вариант, компромисс между этими двумя - хранить tagged union/discriminated union/variant и вручную диспатчить нужный метод.
220 1369973
>>69937

> tagged union/discriminated union/variant и вручную диспатчить нужный метод.


дык это ж олдскульный сишный подход к обеспечению динамического полиморфизма, не?
221 1369977
а хотя в бусте каких только контейнеров нет!
и интрузитивные, и для хранения полиморфных объектов, и основанные на вариантах..
222 1370014
>>70012 (Del)
Написал бы ты это лучше в растотред
223 1370047
>>69932
Да я шучу, не обижайтесь так
224 1370096
Как правильно задать массив пар?

typedef pair<int,int> arrayofpairs[]
arrayofpairs a[5] // еггог declaration of arrayofpairs as multidimensional array must have bounds...
225 1370098
>>69973
Но у него есть несколько недостатков.
1)Размер всегда равен размеру самого большого элемента. Нагрузка как на память, так и на кеш.
2) Собственно, падение производительности из-за хождения по указателям в оригинальном случае у тебя переходит в падение производительности из-за постоянной проверки, какой "тип" сейчас обрабатываем. Бранч предиктор / бранч таргет предиктор - не магия. В обоих случаях это решается сортировкой по типу.
Но в 99% случаях это всё на фиг не сдалось, испоьзуй обычный контейнер.
226 1370118
>>70096
ну дык ты пытаешься задать массив массивов вообще то..
и получается что у тебя первый массив (который в тайпдеф) неполного типа, без границ..
227 1370120
>>67098
В нейронках важен не язык или фреймворк, а понимание нейронок.
Если ты в них ничего не понимаешь, то сделать что-то нормальное полностью сам ты не сможешь.
cpp-shooter.jpg164 Кб, 720x1280
228 1370206
Посоны, а вы в функциональном стиле пробовали в продакшене писать на плюсах? Я вот смотрю на всякие там линзы хуинзы и не могу представить что бы я все это в свои проекты бы пихал когда-нибудь. Монады применял пробовал, лучше код не стал. Расскажите как у вас.
229 1370259
>>70206
Ты бы на Хаскеле такие вещи делал а не в плюсах.

>линзы


Как ты их через плюсовую систему типов собираешься профункторную оптику реализовывать?

>монады


Они хорошо представляются через конструктор типов. В плюсах конечно можно сделать "template <typename> typename M", но так делать не нужно.
230 1370273
>>70259

>Ты бы на Хаскеле такие вещи делал


Я ж говорю в продакшене

>Как ты их через плюсовую систему типов собираешься


https://www.youtube.com/watch?v=7vyNRD1TRYs

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


Расскажи почему. Я еще не определился просто.
231 1370294
>>70273
Ебать ты говноед, пиши на расте или скале, они как раз функциональные. Нет, буду жрать говно, буду на плюсах.
232 1370302
>>70206
дык смотри: когда раньше делал метапрограммирование на старом 98 стандарте плюсов, ты вынужден был писать в функциональном стиле: понятия состояния у тебя в компайл тайм в принципе не было, итераций не было, поэтому заменяли это рекурсией, точкой останова в которой была точная специализация шаблона, условных конструкций (кроме оператора ?:) то же не было, поэтому использовали некое подобие паттерн матчинга - частичные специализаций шаблов и плюс принцип sfinae
а, внезапно, с новыми стандартами ты те же самые вещи можешь делать итерактивно, через value based подход
233 1370306
>>70302
а да, так как состояния не было, то ты вынужден был вместо модификации какой-то сущьности порождать новую
типичный пример - операции со списком типов: добавление, удаление, сортировка и прочее не изменяли по сути существующий список типов, а каждый раз порождали новый
надо удалить элемент - порождаешь новый список но без этого элемента
надо добавить элемент - порождаешь новый список с этим элементом
234 1370320
>>70306
Я это понимаю, но все-таки ФП это много различных концепций и иногда думается что можно было бы использовать их не только в компайл тайм. Постепенно же идет миграция различных подходов из в ФП в традиционные языки программирования, значит что-то за этим есть) Но вот что народ использует в реальных проектах из того что еще языком не поддерживается, но можно реализовать, пусть и через жопу. Кто использовал линзы, функторы, рэнжи и прочие страшные слова? Есть ли реальный выхлоп?
235 1370323
>>70294
Они оба мультипарадигменные ащета. Ну и вообще я не пишу на каком-то языке, я решаю задачу. И для решения задачи подбираю лучшие из имеющихся инструментов и стараюсь использовать лучшие из выработанных практик. Так что не бомби там давай.
236 1370371
>>70323

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


>Функциональный стиль


>C++


Мань, давай ты не будешь строить из себя большого профессионала?
237 1370375
>>70371
Залетный петушок не палится.
238 1370378
>>70371
Друг, тебе в вебпараша-тред
239 1370391
>>70273

>Расскажи почему


Во-первых, потому что не только система типов плюсов не предназначена для такого стиля, но и сам синтаксис. То, что в хаскеле f >>= g, в плюсах будет std::function<M<b>(const &a)> f, std::function... ну ты понел.
Во-вторых, потому шаблоны это... шаблоны. Твой чувак из видео показывал примеры того, что компилятор выводит в случае ошибки? У него бы 40 слайдов бы не хватило.
В-третьих, такие фокусы увеличивают время компиляции на n порядков и ухудшают перформанс в дебаг-сборке, в которой ничего не инлайнится.
В-четвёртых, плюсы всё-таки императивный язык. Если ты хочешь обратится к a.foo, бери и обращайся. Суть линз в их композиции. Нафига она тебе здесь? Ты пишешь энтерпрайзные круды и опердени на плюсах?
240 1370407
>>70391
Спасибо за ответ. К моему списку аргументов прибавился твой второй пункт. Он, конечно, спорный, ибо высер компилятора и так ад и израиль, уже все свыклись. Но все же не стоит делать его хуже. Остальные аргументы я сам использовал в дебатах. Еще добавлял отсутствие саксес стори с этим ФП. Насчет перфоманса - он проседает и в релизе когда ты напрочь отказываешься мутировать структуры даже там, где это гарантировано валидно. Еще поддерживаемость кода сильно падает. Все-таки это не самые простые концепции, их не каждый студент поймет, а на плюсы и так тяжело искать людей с руками не из жопы. В общем я не вижу причин использовать вещи типа ФП в кровавом энтерпрайзе, но если мне покажут пруф концепт и саксес стори я готов изменить свое мнение и попробовать. За этим и пришел)
241 1370423
>>70320
ну смотри, самое простое применение функциональных подходов в крестах, это правильное использование stl:
а именно ты же не используешь итерацию и условные операторы для работы с контейнерами, а ты делаешь выборку из элементов контейнера, удовлетворяющих определенным условиям а далее применяешь операцию к выбранным элементам
и то и другое задается функторами, а способов сделать это в крестах предостаточно - от указателей на функции, функторов на класса, до лямбд, причем вокруг этого есть необходимый инструментарий, всякие bind, mem_fun, обобщенные лямбды и прочее и прочее, включая и набор паттернов связаных с функторами на классах
тот же функциональный подход
даже если открыть любую книжку по stl, она будет полна функциональных подходов
так чтож, да
на практике в крестах функциональный подход используют для метапрограммирования тк там не было выбора по сути (до новых стандартов), а метапрограммирование уже используется для кодогенерации и для реализации некоторых паттернов программирования в статическом стиле (в отличие от подхода gof, в котором паттерны в основном реализовывались посредством агрегации и с использованием динамического полиморфизма, те они работали в рантайме по сути, в общем подход во многом был взят из симулы и смоллтолка)
и, второе применение функционального подхода - это правильная работа с stl и с любыми контейнерами и алгоритмами (тот же буст) что сделаны наподобие stl, а не дрисня из for по контейнеру с лапшей из if
242 1370433
Аноны зацените фичу https://github.com/Neargye/nameof
Позволяет еним в стринг перевести, получить названеи класса, переменой етк.

NAMEOF(person.address.zip_code) -> "zip_code"
NAMEOF(foo<int, float>()) -> "foo"

auto color = Color::RED;
NAMEOF_ENUM(color) -> "RED"

using T = int;
NAMEOF_TYPE_T(T) -> "int"
243 1370436
>>70433

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


Но только в компайл тайм.
В кюте ты это можешь делать в рантайме, плюс узнавать имена вызывающего тебя метода, класса и т.п.
244 1370464
А я могу пихать сишный код в проект, если, например, аналогичный код на плюсах будет оверхедом по производительности? Я имею в виду, в сам код. Что то вроде "extern c".
245 1370481
>>70436
На рантайме это тоже все работает.
Вызвающего метода нелья. Можно делать с буст::стек_трейс
246 1370482
>>70464
Пихай __asm бля
247 1370483
>>70482
Ты че даун?
248 1370491
>>70483
Если нужна запередльная скорость, то вставки асма чем С получше будет
249 1370509
>>69885
Хех, а потом у основной ньюфагов боли от утечек памяти, требования дать им сборщики мусора.
250 1370510
>>69977

>на вариантах


Что-то они у меня вызывают боль при сопровождении.
251 1370511
>>70096
using my_pair = std::pair<int, int>;
my_pair a[5];
252 1370520
>>70096
std::array<std::pair<int, int>, 5> a;
253 1370531
>>70520
Тогда уж
std::vector<std::pair<int, int>> a{ 5, std::pair<int, int>{} };
254 1370535
>>70531
Тогда уж
std::vector<std::pair<int,int>> v {5,{{},{}}};
255 1370538
>>70535
Вернее std::vector<std::pair<int,int>> v {5}; там и так все в ноль инициализируется.
256 1370558
>>70538
Если у него массив не меняет размеры, то вариант анона с std:array предпочтительнее.
257 1370588
>>70538
Вот это может не прокатить, мол, попытка инициализировать списком инициализации, а 5 - нихуя не пара интов.
Может, в случае со сложным типом внутри нормально компилятор разрулит, но когда я так пытался вектор чаров определить, он не съедал.
258 1370638
где можно про многопоточность почитать?а то даже матрицы не получается с ее использованием умножить
259 1370646
Какую книгу стоит прочитать чтобы побольше узнать где могут аозникать неочевидные неопределенные ситуации?
А то недавно я например с таким столкнулся: у меня был базовый класс с виртуальными методами, я от него унаследовал ещё один, переопределил там нужные методы и потом в статической памяти создал экземпляр этого класса. Всё было в целом хорошо, вот только указатель this(или обращение к какому-то члену, забыл уже) иногда давал неверное значение.
260 1370655
>>70638
Какие матрицы? Если ты про 3D-графику, то там, кагбэ, сразу тысячи их, вектор3 на матрицу3x3 множится для каждого условного пикселя. Сразу говорю, я по этой части не Википедия, просто игрался OpenGL (GLSL).
261 1370690
>>70646
Энтони Уильямс "Параллельное программирование на С++ в действии"
262 1370691
>>70690
Не тебе >>70646 , пардон
>>70638 ему.
263 1370991
Я хочу сделать функцию-член класса, которая должна обрабатывать только указанные свойства класса.
То есть есть список свойств класса, а в вызове функции я указываю только некоторые из них, а другие останутся нетронутыми. Причем в вызове функции могут быть любые свойства класса и любое количество.
Такое вообще возможно реализовать, или это маняфантазии???
264 1371003
>>70991
Храни свойства объекта в ассоциативном массиве.
265 1371005
>>70991
На вскидку в голову приходит или цепочка методов аля встроенный дсл, или именованные аргументы как тут https://www.fluentcpp.com/2018/12/14/named-arguments-cpp/ но полностью как ты хочешь не знаю как реализовать.
266 1371008
>>70991

>есть список свойств класса


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

Соответственно твоя функция-член должна принимать в качестве параметра такой список.
267 1371010
>>70991

>свойства класса


type traits что ле? какие - бустовые или с++11? о чем ты там бормочешь вообще?
268 1371016
говорят, что секс - это все же парный танец и не стоит об этом забывать
269 1371017
а еще японцы раньше говорили, что девушка, не умеющая танцевать и плавать, не годится и для любви
270 1371018
>>70510
о, расскажи, правда интересно
какие подводные камни возникают?
271 1371025
>>71005
А хотя не, знаю, в кюте же есть рефлексия. Можно в рантайме получить список пропертей класса и работать с ними.
272 1371029
>>71025
Можно ссыль на документацию кутя по этой теме плиз?
273 1371031
>>71010
Я имел в виду переменные, принадлежащие классу.
274 1371033
>>71017
Не знаю насчет плавать, но насчет танцевать - это реально. Если тянка хорошо двигается в танце, значит у нее хорошая пластичность и мышцы хорошо развиты. Значит и в постели хорошо будет двигаться. Это и к кунам относится кста.
275 1371038
>>71033
теоретик детектед. Если все хорошо с возбуждаемостью, то в 9 случаях из 10 секс - это долбежка с произвольной скоростью, где развитость мышц до пизды.
277 1371056
>>71038
Ну я имел в виду, что хорошо танцующая тян не будет бревном, вот что.
278 1371118
>>71114 (Del)
Конкретнее опиши проблему
279 1371280
>>71018
При отладке boost::variant слишком много всяких оберток приходится проходить. В std::variant пишут - поменьше. Надо будет аккуратно перенести.
280 1371404
>>65137 (OP)

Доброго дня анончики.

Вопросы у меня есть.

Каким образом узнать скольки ядерный процессор установлен на ПК, на котором запускается программа?

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

Pragma parallel пробовал, не то.
281 1371416
>>71404

> if (Array「 i 」「 j 」 = 16)


В цпп компиляторы до сих пор не завезли предупреждения для таких случаев?
282 1371424
>>71416
Всё таки пропустил, смысл в сравнении, а вообще смысл в некой проверки, забыл добавить, что в моим примере речь только об чтении неких данных и сравнении их с чем-то.
283 1371427
>>71404

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


Лучше используй std::thread::hardware_concurrency - это сколько реально ты сможешь заполучить.
284 1371433
>>71427
А как это работает?

Я правильно понимаю, что перед этим мне необходимо создать некоторое количество потоков? А потом уже запускать массивы в этих потоках?
285 1371452
>>71416

>для таких случаев


есть статические анализаторы
286 1371619
Как в C++ удалить строку из файла? Есть ли функция, которая в находясь в цикле удаляет каждый символ, начиная с места, на котором стоит каретка до, например, символа переноса строки?
image.png160 Кб, 509x367
287 1371635
Был тут недавно на собеседовании где спросили у меня такое:
есть структура с несколькими полями, которая выступает в качестве ключа в map'e. Как из этой map'ы получить значение по одному из полей ключа(который структура)?
288 1371638
>>71635
У итератора map есть first и second.
Тебе нужен first.
289 1371640
>>71619
Что для тебя знаудаляет?
290 1371641
>>71640
*значит удаляет?
291 1371642
>>71638

>>Тебе нужен first.


@
МЫ ВАМ ПЕРЕЗВОНИМ
293 1371665
>>71635
Ну короч тебе нужно вычесть оффсет поля внутри структуры из фактического адреса поля и получить базовый адрес структуры-ключа. Я хуй знает как это сделать, но уверен, что так можно. Это же си++.
мимо жаба
294 1371670
>>71635
Проще ебало разбить тому, кто так в продакшене пишет
295 1371671
>>71670
Это жи собес. Тут не важно кто как пишет в продакшн, тут главное обоссать петушка и выпиздить его нахуй.
296 1371673
>>71635
Вот этот прав кстати >>71638

for (auto const & keyVal : map)
{
\t if (keyVal.first.m_field == to find)
\t\t vals.emplace(keyVal.second);
}
297 1371687
>>71638
>>71673
Короче хз, наверное не так объяснил. На примере будет нагляднее.

struct A
{
int m_a;
double m_b;
};

map<A, int> mp;

Ключ в данном случае - экземпляр структуры А, получаем значение по ключу - map[obj], или итератор - map.find(obj), где jbj - экземпляр A.

А им хотелось так:
map[obj.m_a];
map[obj.m_b];
298 1371689
>>71687
Не explicit конструкторы наверное нужно использовать
299 1371695
>>71689
Во я дурак, не дочитал
300 1371705
>>71689
A a1{1,2};
A a1{2,3};

mp.insert({a1, 1});
mp.insert({a2, 2});

mp.find(2); <--- Ничего не найдет, а они хотели чтобы нашло
301 1371715
Я уже всю голову сломал, выручайте.
Короче, такая задача.

> Дан символ C и строки S и S0. После каждого вхождения символа C в строку S вставить строку S0.


Стринг еще не учили, исключительно чар. Как это сделать? Объясните на пальцах как вставить строку в строку согласно условию.
302 1371723
>>71715
http://www.cplusplus.com/reference/string/string/insert/
Как блядь вообще можно спрашивать такие вопросы? Это же первая строчка в [поисковикнейм] по запросу std string insert
303 1371755
>>71635
По умолчанию std::map использует оператор < типа ключа для сравнения ключей.
Ты можешь изменить сам оператор < или, что лучше, предоставить мапе новую функцию сравнения.
304 1371760
>>71687
А разве так вообще можно? Ведь map объявлена так
template<
class Key,
class T,
class Compare = std::less<Key>,
class Allocator = std::allocator<std::pair<const Key, T> >

> class map;


Т.е. при инстанцировании шаблона map<A, int> mp получится Key == A. А при обращении map[obj.m_a] у тебя будет Key == int, что должно по идее вызвать ошибку при компиляции. Возможно нужна какая-то шаблонная магия, но я хз, т.к. сам вкатывальщик.
305 1371777
>>71760
По идее у структуры его перегрузить оператор сравнения.
306 1371779
>>71777
Для типов int и double. Но это только мысля, проверять с утра не хочется.
307 1371784
>>71777
>>71779
Я проснулся, полная идея. Там же будет приведение к типу Key
308 1371785
>>71784
*Полная лажа
309 1371791
>>71635
>>71638
Видишь, я тебя совсем не верно понял сначала.

Что-что от тебя хотели?
Чтобы в мапе <класс, что-то ещё> ты мог получить доступ к значению не по ключу, а по его свойству?
Это логически даже слегка странно(но не полностью): если ты, допустим, хранишь в ключе марку автомобиля(одно из полей которой, допустим, менеджер), а в значении - список моделей, то было бы немного странно пытаться отыскать все списки авто, у которых менеджер - радфемка, независимо от марки.

Ну то есть логика в этом есть, но сама концепция ассоциативных массивов слегка не это имеет в виду, как по мне.

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

Короче, нахуй бы ты их послал с такими предложениями. Вопросы на сообразительность и вопросы на говнокод - разные вещи.
310 1371792
>>71784
Хотя не полная, надо перегрузить оператор <. Но опять будет ограничение - поиск по одному из полей.

struct A
{
A() = default;
A(const int _a) : m_a(_a) {}

int m_a;
double m_b;

bool operator <(const A& _a) const
{
return _a.m_a < m_a;
}
};
311 1371794
>>71792
Можно передать в мапу произвольную функцию сравнения без перегрузки оператора самой структуры.
312 1371818
>>71791
Ну так и случилось, только послали меня )
313 1371828
>>71723

>>Стринг еще не учили


>>std string insert


В глаза долбишься, маня
314 1371832
>>71715
А выделение памяти динамически проходили?
315 1371845
>>71715

>Стринг еще не учили


Тут 90% не учили в универах метапрограммирование, лямбды и рвалуе, но все равно их используют, улавливаешь?
316 1371848
>>71845
Может имелось ввиду string не использовать
317 1371853
>>71832
>>71845
>>71848
Да мне бы с чарами разобраться сначала, зачем мне использовать то, что я не понимаю? Имелось ввиду именно работа с чарами. Выделение памяти проходили. Вот я не пойму, сколько же мне надо адресов дополнительных сохранять, что б потом из кусочков собирать результирующий массив? Или это совсем не так делается? Я додумался пока только до такой идеи: идем по массиву, натыкаемся на искомый символ, получаем его адрес, в исходный массив копируем фрагмент с 0 по элемент с этим символом, прицепляем следом вставляемую строку, и к этому всему прицепляем кусочек, что начинается с этого символа. Но тут опять же не пойму что делать, если будет еще и второе вхождение символа, и третье и т.д. Я вообще в том направлении мыслю, или всё совсем не так делается?
318 1371854
>>71853

>0 по элемент с этим символом


По предыдущий элемент, то бишь.
319 1371856
>>71853
Мыслишь правильно. Несколько замечаний. Когда ты находишь нужный символ, создавайте новый массив char с размером длине строки до этого символа + длина вставляемой строки + длина строки после этого символа. Дальнейший поиск продолжаешь уже в этом новом массиве с позиции после вставки. Ну, в общих чертах так
320 1371857
Тебе надо выделять отдельный массив R (result) куда ты будешь копировать. Плюс 1 указатель на текущую позицию в R.
>>71853
0. Расчитать длину R. Считаешь кол-во символов С в строке S. Помножаешь на длину S0. Складываешь результат умножения и длину строки S - тебе же надо понять, сколько твоя строка (массив символов) будет после этой операции занимать.
1. Выделяешь новый строковый массив R, в который ты поместишь результат. Желательно забить его '\0'.
2. Заводишь указатель char* p = &R[0];
4. Заводишь цикл, можешь условный (длину на этапе 0 вычислил же), можешь безусловный.
Проверяешь, если S == 'S', то копируешь 'S' и запускаешь второй цикл, который посимвольно копирует S0 в R. Иначе просто копируешь текущий символ в R.
Не забывай посимвольно смещать p2 при каждом скопированном символе.
5. Собственно при прохождении верхнего цикла, у тебя получится результирующая строка. Для красоты можешь сместить указатель S на массив R.
321 1371859
>>71715
Создаешь третью строку, большую, чтобы на всё хватило, и копируешь в неё куски остальных строк по порядку.
322 1371861
>>71856
>>71857
>>71859
Господи, как тут можно не запутаться? Спасибо вам, буду пробовать.
323 1371862
>>71861
Use libraries, Luke! Ну и "тяжело в учении, легко в бою".
324 1371880
>>71656
Очень смешно, даунич. Хотя нет, не смешно. У нас тут кресты, а не уроки русской письменности. Внезапно, понятия из бытового языка не соотносятся один к одному с техническими. Уточнять надо, надо вычитать строку (read позицию за ближайший \n кинуть), или речь о редактировании самого файла.
325 1371936
>>71861
Парни, нашел код вот по этой задаче в интернете.

>> Дан символ C и строки S и S0. После каждого вхождения символа C в строку S вставить строку S0.



char strins (char s, char *s0, char c) {
int slen=strlen(s);
int s0len=strlen(s0);
int i,j;
for (i=0; i<slen; i++) {
if (s==c) {
for (j=slen; j>=i; j--) s[j+s0len]=s[j];
for (j=0; j<s0len; j++) s[i+j]=s0[j];
slen+=s0len; i+=s0len;
}
}
return s;
}

Может кто дать комментарии по шагам, уж сильно отличается это решение, от того, что пытался сделать я. Не совсем понимаю.
326 1371939
>>71936

>Дан символ C и строки S и S0. После каждого вхождения символа C в строку S вставить строку S0.


S.replace(QString(C),QString(C) + S0);
не благодари.
327 1371940
>>71939
Да ёптить. Со стрингами не надо мне.
Я вот не пойму куда я записываю тут s[j+s0len]=s[j]; Если j=slen, то я в конце строки, правильно? И куда я попадаю после прибавления длины вставляемой строки? Что это за элемент такой [j+s0len]?
328 1371941
>>71940
А следующий цикл for я вообще не пойму что делает.
329 1371979
>>71936
Не компилил, но на вид хуйня какая-то
330 1371985
Темплейты зло или гуд? Как в них вкатиться, что по производительности?
331 1371986
>>71985
Ну, на них вся STL построена
01553849036.png51 Кб, 621x435
332 1371988

>на c++ можно писать безопасно, смартпоинтеры, RAII, статические анализаторы


>95% уязвимостей из-за ошибок при работе с памятью

333 1371989
>>71985
Гуд (ты же пользуешься стл?), читай книжки и пробуй, компайл тайм.
334 1371991
>>71936
>>71941
https://ideone.com/sY8LPJ
Я думаю там можно что-то оптимизировать, но вроде робит
image.png502 Кб, 1280x720
335 1371995
>>71936
вот мое решение
https://ghostbin.com/paste/64mgy
336 1371998
Аноны, помогите с алгоритмом для реализации системы тегов. В приложении нужна возможность добавлять обьекту теги, а потом быстро искать по совпадениям 1 или нескольких тегов. Это мапу использовать, или есть что-то более быстрое?
337 1372000
>>71998
такие штуки разве не ass queue el датобазой лучше делать?
338 1372001
>>72000
Не знаком еще с базами данных, видимо пришло время.
339 1372122
Подскажите краткий экскурс для человека уже умеющего в программирование. Прочитал Страуструпа года полтора назад, но уже все забыл, с тех пор писал на жабе и шарпе, всякие указатели и адреса еще понимаю, а вот :: через слово и прочий местный синтаксис совершенно непонятен.
340 1372124
>>72122
Пробеги глазами страуструпа опять, в чем проблема?
341 1372126
>>72124
Я и есть страуструп, брат.
342 1372127
>>72126
Когда концепты подвезёшь? Алсо, скажи, чтобы метаклассы не принимали. Не нравится мне всё это направление.
343 1372128
Анончики, в андроид NDK проекте на SDL2 как всякие glBegin и прочие вызывать?
это подключил:
#include <SDL.h>
#include <SDL_opengl.h>
это прописал:
LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES
LOCAL_LDLIBS := -lGLESv1_CM -lGLESv2 -llog
но все равно на них ругается, что undefined reference to
344 1372132
>>72124
1к+ страниц пробегать такое себе удовольствие, мне б выжимку страниц на 20.
345 1372133
Кто напишет мне код для этой программы за 200 рублей на Киви? Нужно написать до утра.

Создайте программу, заполняющую массив из n элементов случайными целыми числами, находящимися в интервале от -10 до 30. Выведите на экран созданный массив и определите число инверсий. Инверсией называется пара элементов, в которой большее число расположено слева от меньшего
346 1372136
>>72133
Иди нахуй. Зачем ты поступал в технический вуз на пиздомистра, если можешь такую фигню сделать самостоятельно. Лох.
347 1372139
>>72136
Всё? Самоутвердился чмошник? А теперь иди нахуй.
348 1372140
>>72133
А может просто сядешь и подумаешь, чем на харкаче клянчить? Задача в два счёта решается.
349 1372141
>>72139
Лох, ты? Сам понимаешь, ты - лох. Ты будешь лохом всю жизнь. Ты настолько лох, что готов купить лабу на ДВАЧАХ. На дваче. Купить лабу. Ты лох. Ты будешь учиться в своей шараге и даже первачи будут считать тебя лохом. Потом ты напишешь дипломный проект и станешь дипломированным лохом. Придёшь устраиваться на работу программистом, но тебя заставят носить кофе шефу. Потому что ты лох.
ты лох.
смирись с этим.
350 1372142
>>72140

>чем на харкаче клянчить?



Где блять я клянчу сука? Я 200 рублей предложил за это. Хуле ты проецируешь мразь?

>задача в два счета решается



Ну если такой умный, то напиши за пару минут. На 200 рублей пива себе купишь. Хуле ты такой злой? Ну всякое в жизни бывает. Разные ситуации. Ты например живешь с мамкой и она тебя надзирала лишь бы мой сычина выучился на пограмиста! А у меня другая ситуация в жизни.
351 1372143
>>72141

>Лох, ты? Сам понимаешь, ты - лох. Ты будешь лохом всю жизнь. Ты настолько лох, что готов купить лабу на ДВАЧАХ. На дваче. Купить лабу. Ты лох. Ты будешь учиться в своей шараге и даже первачи будут считать тебя лохом. Потом ты напишешь дипломный проект и станешь дипломированным лохом. Придёшь устраиваться на работу программистом, но тебя заставят носить кофе

352 1372144
>>72143

>эти дрожащие ручонки


Хаха.
353 1372145
>>72142

>Ну всякое в жизни бывает


>А у меня другая ситуация в жизни


Ты это специально делаешь?
Нахуй съеби, гнида.
1544213441234.jpg279 Кб, 1492x1050
354 1372146

>ITT

355 1372148
>>72145
Что? За живое задел?
356 1372152
>>72141
А что такого собственно? Сам тут покупал лабы и экз по телеграмму с анончиком. Скоро буду защищать диплом. И вообще жизнь в кайф. А ты наверное злой такой сидишь. За ручку держался хоть? Или ты все время на порно с детьми фапаешь, да код свой пишешь, если ты вообще прогер лол, а не балабол.
357 1372154
>>72142
Тут господа получают 300к в месяц, они за 200р даже в носу не поковыряют. Твоя идея изначально обречена на провал. Лучше одногруппнику пиво поставь за лабу.
358 1372157
>>72154

>тут господа получают 300к в месяц



Проиграл

мимо
359 1372158
>>72133
#include <iostream>
#include <math.h>
using namespace std;
int inv=0;
//Compiler version g++ 6.3.0 я на этом у тебя другой может вылезет ошибка

int main()
{
int a = rand() % 100 + 1; // рандом на размер масива ищи у гугла c++ rand())

int *mass= new int[a]; // динамический масив лол

for (int i=0;i<a;i++) // заполняем
{

mass = rand() % 10;

}

for (int i=0;i<a-1;i++) // ищем инверсии
{

if (mass > mass[i+1]) inv++;

}
for (int i=0;i<a;i++) // вивыдим масив
{

cout << mass << endl; // уберешь <<endl выведет с строчку

}
cout << "inv " << inv; // выводим инверсии

return 0;
}
359 1372158
>>72133
#include <iostream>
#include <math.h>
using namespace std;
int inv=0;
//Compiler version g++ 6.3.0 я на этом у тебя другой может вылезет ошибка

int main()
{
int a = rand() % 100 + 1; // рандом на размер масива ищи у гугла c++ rand())

int *mass= new int[a]; // динамический масив лол

for (int i=0;i<a;i++) // заполняем
{

mass = rand() % 10;

}

for (int i=0;i<a-1;i++) // ищем инверсии
{

if (mass > mass[i+1]) inv++;

}
for (int i=0;i<a;i++) // вивыдим масив
{

cout << mass << endl; // уберешь <<endl выведет с строчку

}
cout << "inv " << inv; // выводим инверсии

return 0;
}
360 1372160
>>72158
Лол \t нада убрать
361 1372161
>>72158
Спасибо друг. Подумаешь люди жизнью обиженные сверху высераются. Лол, на двачах со школьниками сидят >300к в наносек ага.

Кидай Киви няш.
363 1372163
>>72162
Все равно целую тебя в пупок. От этого понимаешь, что не все такое агрессивное быдло и школьники здесь остались.
364 1372164
>>72158

>math.h, а ни одной функции из него не используешь


>Не сбросил генератор случайных чисел


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


>Не выполняешь условие задачи на x in [-10; 30]



>>72133
Учти это, когда будешь переписывать его код.
365 1372165
>>72164
И не забудь сделать переменную для подсчёта инверсий локальной, вынеси все в отдельную функцию и не проебись с [index], которые потерялись.
366 1372166
>>72164
>>72165
Просто, спасибо.
367 1372170
>>72163
Так ты же и есть то самое быдло и школьник первокурсник
368 1372171
>>72164
>>72164
>>72164
Спасибо, забыл что rand псевдослучайные числа генерирует.
Онлайн компилятор попросил не удалять через delete вот и убрал
369 1372173
>>72166
#include <iostream>
using namespace std;
int main()
{
int a = rand() % 10 + 1;
int *mass= new int[a];
for (int i=0;i<a;i++)
{
mass = rand() % 40 - 10;
}
int inv=0;
for (int i=0;i<a-1;i++)
{
if (mass > mass[i+1]) inv++;
}
for (int i=0;i<a;i++)
{
cout << mass << endl;
}
cout << "inv " << inv;
delete [] mass;
return 0;
}
370 1372174
>>72164
Дядя помоги, перепиши rand на srand или randomize cpp.sh не дает.
Тот кто написал это
371 1372179
>>72170
Я хотя бы не ракую и не веду себя как агрессивное животное. Очевидно же что ты очкарик ебаный, сидишь дома за компом и всех ненавидишь.

Это семён >>72174
>>72173
Еще раз спасибо.
372 1372180
>>72179

>семен


значение знаешь? подсказка: нет, это не когда кто-то за тебя запостил один пост.

>не ракую


как ты не ракуешь? ты же чистый рак
373 1372181
>>72180

>ты же чистый рак


По каким параметрам судишь?
374 1372182
>>72179
Ероха в треде, отступаем.

хаха съеби с моих двачей, зелень
375 1372183
>>72182

>с моих двачей


>называет кого-то зеленью



Все ухожу ухожу.
376 1372279
Интересно, как скоро он поймет, что те помои, которые ему кинули, вообще не выполняют поставленную задачу?
377 1372284
>>72279

>как скоро он поймет


>скоро


>он


>поймет


Евгений Ваганыч, Вы сегодня в ударе.
378 1372326
Поясните за built-in array. Вот с обычными указателями всё понятно: находится в одном месте в памяти, указывает на другое в место в памяти (в котором хранится какое-то значение). А как массив может одновременно в одной ячейке хранить и свой собственный адрес, и значение первого элемента?
379 1372328
>>72326
a[0] это сахар для <звездочка>(a + 0)
380 1372330
сап двач, помогите
есть файл, в котором в бинарном виде записано n-ое кол-во массивов[52]. Нужно считать файл.
Делаю следующее:

fstream file("file.txt");
size = 0;
file.seekg (0, ios::end);
size = file.tellg();
c = size/2704; // 2704 -- столько весит файл с 1 массивом
file.close();
step = 0;
for(int i = 0;i < c; i++)
{
ifstream f("file.txt", ios::in | ios::binary);
f.seekg(step);
for (int i=0; i<sizeof(A); i++)
{
f >> Array;
}
f.close();
step = step + 52;
}

Вообщемто, в промежутке я десереализую массив, но решил это здесь не показывать, ибо лишнее.
Суть в чем, я правильно использую функциюю
file.seekg(step)
Она перемещает меня в нужную часть файла и оттуда начинается считывание 52 элементов масисва, но что-то работает не так уж точно(
380 1372330
сап двач, помогите
есть файл, в котором в бинарном виде записано n-ое кол-во массивов[52]. Нужно считать файл.
Делаю следующее:

fstream file("file.txt");
size = 0;
file.seekg (0, ios::end);
size = file.tellg();
c = size/2704; // 2704 -- столько весит файл с 1 массивом
file.close();
step = 0;
for(int i = 0;i < c; i++)
{
ifstream f("file.txt", ios::in | ios::binary);
f.seekg(step);
for (int i=0; i<sizeof(A); i++)
{
f >> Array;
}
f.close();
step = step + 52;
}

Вообщемто, в промежутке я десереализую массив, но решил это здесь не показывать, ибо лишнее.
Суть в чем, я правильно использую функциюю
file.seekg(step)
Она перемещает меня в нужную часть файла и оттуда начинается считывание 52 элементов масисва, но что-то работает не так уж точно(
381 1372335
>>72328
Это понятно, не в этом вопрос был.
382 1372341
>>72326
Он хранит не значение первого элемента, а указатель на него, который ВНЕЗАПНО и есть указатель на начало массива.
383 1372343
>>72341
А значение-то где хранится? Там же ведь. &a[0] даёт тот же самый адрес. Как такое может быть, что в одной области памяти хранится одновременно и адрес, и значение?
384 1372344
>>72343
Значение хранится по адресу первого элемента.
a == (a+0) == a[0]

мимикрок
385 1372345
>>72344
<звезда>a == <звезда>(a+0) == a[0]
386 1372348
>>72343
Адрес хранится в a, по этому адресу находится область памяти, в первой ячейки которой находится некоторое значение, которое ты можешь получить с помощью a[0] или разыменованием.

> &a[0] даёт тот же самый адрес


Почему там должен быть другой адрес?
387 1372350
Нужно вызвать функцию в заранее выделенной памяти другого процесса. То есть что-то типо:
Выделяю память в блокноте, записываю туда свою функцию, вызываю свою функцию внутри блокнота.
Возможно такое вообще ?
388 1372354
>>72345
>>72348
То ли вы не понимаете, то ли я.
Вот есть указатель foo, который указывает на переменную bar. Тут всё понятно, foo имеет значение 1776 (что является адресом переменной bar), но сам он находится по адресу 324. Разыменовать foo – значит получить значение ячейки под адресом 1776.

А что с массивом a? Он имеет значение 1776 (что является адресом первого элемента массива), но ведь он и сам находится в этой ячейке! Разыменовать a – значит получить значение ячейки под адресом 1776 – там находится значение 1776! Как в одной и той же ячейке может храниться и адрес, и значение?
389 1372356
>>72354
Весь массив не находится в одной ячейке памяти. Название массива это указатель на первый элемент как и указатель для обычной переменной, а [] нужен для упрощения работы с массивом.
390 1372359
>>72354
Вот правильные картинки, массив и переменная указатель.
Подробное описание различий можешь почитать тут:
https://eli.thegreenplace.net/2009/10/21/are-pointers-and-arrays-equivalent-in-c
391 1372362
>>72359
Всё, понял, спасибо.
392 1372385
>>72350
угу
такое делается различными способами инжекта..
какой щас наиболее популярный с учетом того что нахуевертили в новых операционках, я не знаю, тк отошел от дел
393 1372386
>>72328
это упрощенное объяснение, и если подходить с точки зрения теории яп, неверное
394 1372389
Пролистал тред и поржал с того, какие же вы все тупые.

Мимо g17 яндекс-кун
395 1372410
>>72389
Уроки сделать не забудь маня.
396 1372414
>>72279
Я вас слушаю ты знаешь куда тебя ебали
397 1372531
>>72389
Половину зарплаты выдают нумыжеяндексом тебе, а тупые мы? Лол.
398 1372552
>>65639
Ролл. (Правда я новичок и поэтому сразу же после этого последует вопрос)
399 1372558
>>72389

>яндекс-кун


такси или еда?
400 1372573
Поясните за inline функции.
Известно, что это лишь рекомендация для компилятора, и он может её проигнорировать и не делать функцию inline.
Также известно, что компилятор сам старается оптимизировать код, и делает некоторые функции inline самостоятельно.
Вопрос: нахуя тогда объявлять функции inline?
401 1372574
Я правильно понимаю, что это рудимент, и современному программисту надо забыть про inline?
402 1372586
>>65639
Ролл
403 1372608
>>65639
Ну допустим.
404 1372631
405 1372665
>>72389
Антон?
406 1372742
>>72573
а я вот не понимаю другого: почему можно взять адрес inline функции? получается, что даже если код фии встраивается в некоторые места, но она все равно создается при этом
и уже поэтому можно брать ее адрес, вызывать по указателю и прочее..
407 1372765
>>72742
До компиляции никакая функция еще не является встроенной.
Вангую, что компилятор не станет инлайнить, если увидит, что используется адрес функции.
408 1372980
>>72389
Давай выкатывайся, маня.

мимо кор кернель дев 8к зеленых
409 1373009
>>72980
возьми на работу. Мимо виндовый кернельщик 5к зеленых.
410 1373053
>>72573
На inline функции не распространяется правило одного определения, тоесть у тебя могут быть объявлены две функции с одной и той же сигнатурой, при условии что у них есть модификатор inline. Естественно эти функции должно быть одинаковыми иначе хуйня получится.
sage 411 1373054
>>73053

> объявлены две функции


имелось ввиду определены
412 1373062
Дочитываю Прату и понимаю, что мне надоели упражнения, которые он предлагает, они скучные, что делать после прочтения, куда двигаться дальше?
Хочется написать что-то полезное, что можно "пощупать", но понимаю, что скилла не хватает.
413 1373141
>>73062
Напиши чето сложнее и подсматривай
414 1373275
>>72742
в общем, чутка почитал
встраиваются некоторые вызовы функции, сама то функция создается всегда, поэтому ее и адрес можно взять и вызвать по указателю
причем встраивание может осуществляется как на этапе компиляции, так и на этапе компоновки

а на счет правила odr по видимому происходит так: компоновщик оставляет в машкоде одно определение inline функции, а остальные выкидывает
а для обычных функций он бы заорал что есть несколько определений функции с одной сигнатурой
то тут не разбирался, это типа догадки
415 1373279
почитываю тут старые книжечки саттера
интересно, что есть некоторые возможности языка, которые прописаны в стандарте, но оказались непригодными к использованию
например, export шаблонов вместо модели включения: некоторые компиляторы таки их реализуют, но на практике никто их не использует, у саттера же долго и обстоятельно объясняется почему
та же ситуация и со спецификацией исключений: в стандарте есть, но на практике оказалось нехорошей вещью
416 1373349
Сисяны, как можно проверить создается экземпляр шаблона или нет?
1554140045414.jpg40 Кб, 600x600
417 1373356
Аноны, такая проблема.
Допустим, у меня есть клиент с какими то текстовыми полями в интерфейсе. Пусть их будет 5 штук. Я, значится, меняю какие то 2 поля, и нажимаю сохранить, после чего клиент должен обновить данные этих полей на сервере. Но в следующий раз мне например надо будет менять уже не два поля, а три, и это будут уже другие поля. И так далее.
Как обычно эту хуйню реализуют? Ну эту выборочность полей для функции?
То есть, я так понимаю, я должен написать функцию "Сохранить", которая принимает рандомное число аргументов, и потом запаковывает это все в пакеты и отправляет на сервер. А как сделать, чтобы она принимала рандомное число аргументов? И как она должна распознавать, что аргумент 1 - это именно поле Имя, а аргумент 2 - именно Номер телефона, чтобы сервер это тоже знал?
418 1373410
>>73356
Нахера ебаться?
if (field1.HasChanges())
// Сохранить данные из field1
И так далее...

Другое дело, если ты не знаешь заранее количество полей
419 1373422
Сап. Вопрос к уже матерым cpp-шникам: насколько широко используются шаблоны в вашей повседневной практике?

Только изучаю cpp. Сейчас познакомился с шаблонами - весело и нравится. Создал свой шаблонизированный класс контейнера Vector и поигрался немного.

Но мне не до конца понятно где оно может пригодиться Если только не пишешь какой-нибудь STL, как я понял - т.к. писать методы и классы работающие с разными типами не так часто нужно, насколько я понимаю, хотя возможно ошибаюсь. Вижу в вакансиях часто мелькает требование знания шаблонов. Но насколько часто они используются в повседневной разработке? И если используются, то в какой сфере - в разработке какого продукта?
420 1373453
>>73422

>в вакансиях часто мелькает требование знания шаблонов


Здесь наверное все-таки о паттернах идет речь, а не о шаблонах языка с++.
421 1373456
>>73422
общий подход: когда есть необходимость или возможность перенести часть работы со времени рантайма на компайлтайм
к примеру, в книжке gof шаблоны реализуются через агрегирование чаще всего, работают в рантайме, что чутка замедляет работу тк добавляет уровень ссылочности, но позволяет конфигурироваться динамически во время работы программы
а уже большая часть книги александреску "современное программирование" посвящена по сути как на шаблонах (в компайлтайме) реализовать те же паттерны
ничего не понял? ну и хуй с тобой, лол

ну а для прикладных программистов, если у вас на проэкте агрессивно используется stl и вообще стандартная библиотека плюсов, то у тебя не будет выбора как везде срать шаблонами и обобщенным кодом (если ты только не полная обезьяна использующая stl тупо обходя for'ом контейнеры)
422 1373462
>>73456
Ок. Спасибо. Понял, но не все. К примеру, про то, что шаблоны можно реализовать в рантайме - не знал. Пожалуй, почитаю потом детальнее.
изображение.png149 Кб, 1920x1080
423 1373467
Сап. Нужно разобраться с сериализацией, как сериализовать вектор структур и записать/достать в/из файла?
424 1373485
>>73467
ДА БЛЯТЬ ЗАЧЕМ ТАК ПИСАТЬ ЕБАНЫЙ РОТ БЛЯТЬ
sage 425 1373496
>>73467
Молодой человек, вы хоть одну книгу по плюсам открывали?
426 1373524
>>73496
да, про сериализацию там если есть что, то очень мало, а что посоветуете почитать?
427 1373538
>>73356
Зависит от того как серализуется инфа. Если ты не занимаешся какой-то хуйней где нужно выдрачивать каждый бит, то сериализоваться будет в пакет в котором инфа будет храниться как список кортежей типа "имя поля" + "значение" (плюс дополнительная служебная инфа). Такой подход обеспечивает гибкость, правда пакеты получаются чуть жирнее. На клиенте там нужно смотреть. Самый простой вариант - передавать мапу где ключ имя поля (или значение енума, скажем), а значение - содержимое поля. Плюс у тебя текстовые поля, тоесть не нада ебаться с дерьмом типа std::variant. Другой вариант - передавать объектом, в котором помечено какие поля обновились. Или вообще всегда отсылать значения всех полей.
428 1373580
>>73349
Пиздец вопрос. Если ты в коде создаешь объект на основе этого шаблона и при компиляции нет ошибок - то успешно.
429 1373581
>>73279
А что конкретно за книга? Саттер мне нравится.
430 1373613
>>73467
как хочеш так сериализуй. предлагаю csv или json, но можешь ебаться в бинарник, если хочешь.
изображение.png143 Кб, 1920x1080
431 1373631
>>73613
защита лабы требует бинарник, что то такое сделал, но ошибка сегментирования после десериализации, пойду в винду смотреть шо как
432 1373660
>>73467
Не тестил, но как вариант...
https://pastebin.com/KE2NspM4
433 1373662
>>73660
не cin а in быстрофиксin
434 1373695
Помогите! На моменте itoa выполнение failed

https://pastebin.com/cygidcUd
435 1373701
>>73695
https://en.cppreference.com/w/cpp/string/byte/atoi
Оберни в try/catch std::out_of_range. Нет гарантии, что твой текст только корректно интерпретируемые цифры.
436 1373702
>>73701
*текст содержит
437 1373706
>>73660
Спасибо большое, потещу
438 1373707
Как запихнуть указатель на функцию в класс? Хочу что-то типа такого:

class test (
int number
string data
func *func
);
439 1373709
>>73707

> Как запихнуть указатель на функцию в класс? Хочу что-то типа такого:



https://en.cppreference.com/w/cpp/header/functional
440 1373713
>>73707
Можешь просто запихивать указатели на функции в класс, никто не мешает. Но C++-way это использовать std::function. В них можно лямбды с захватами и другие ништяки использовать.
441 1373715
>>73660
а можно вопрос как юзать? ну и немного обьяснения строк, если знаешь?
442 1373718
>>73709
>>73713
мерси, то что нужно
1627.jpg55 Кб, 741x307
443 1373723
>>73580
Не, вопрос не про создание объекта, а про template instantiation.
То есть как проверить, сгенерил компилятор код под специфический тип по шаблону или не сегенерил?

>Пиздец вопрос.


А я чо? Я ничо. Это в книжке вопрос задается. А я не знаю как свои ответы проверить в принципе можно.
444 1373729
>>73723

>Не, вопрос не про создание объекта, а про template instantiation.


Но у тебя в примере именно про создание экземпляра.
А инстанцирование - это генерация кода под конкретные типы. У тебя 3 типа char, int и double используются. Я не уверен насчет инстанцирования double, так как явно использования нет, только ссылка на него, возможно по причине оптимизации компилятор для него не будет выполнять. Но это пусть уточнять более опытные аноны.
445 1373731
>>73613
А xml можно?
446 1373736
>>73715
Работает только для POD (plain old data) - структуры, где все данные запакованы на месте, без указателей (или вложенных структур с такими указателями) на то, под что дополнительно память в куче выделяется.
serialize выписывает все элементы вектора на стрим, который ты сам должен открыть перед вызовом и закрыть после, чтоб ничего больше туда не попало.
deserialize напротив вычитывает все из аналогично предоставленного input стрима вплоть до упора (EOF) и возвращает вектор. Я, правда, кресты учил давно, и хз, как работают template функции, для которых нужная версия не выводится из типов аргументов. Или lvalue в контексте смотрит (ругается, если не используешь возвращаемое значение), или вручную надо <вот это> указывать между именем функции и скобками
447 1373739
>>73729

>в примере именно про создание экземпляра


Перевод кривой. Созданием экземпляра тут называют именно инстанцирование.
448 1373743
>>73736
ну мне нужно адаптировать под свою программу, не полностью понимаю что куда заменять на свои переменные и вместо ostream &out что закидывать при вызове функции
и как вызывать vector<T> deserialize, вообщем много вопросов, так как я почти совсем не знаком с функциями и выражениями используемыми здесь, но попробую разобраться. Спасибо за помощь.
449 1373745
>>73715
пардон, я долбоеб. serialize не обязательно циклом делать, вот пофиксил https://pastebin.com/4202FVLC
450 1373746
>>73736
не подскажешь что можно почитать по сериализации чтобы понять смысл и применять в боевых условиях, а то если найду рабочее решение скопирую, но смысл если так и останусь дауном.
451 1373750
>>73746
Сам не читал про это, иначе не стал бы велосипед набрасывать)
По-быстрому из гугла подкинуть мог бы, но как-то не комильфо советовать, не ознакомившись
452 1373751
>>73745
ну вот T заменить на свою структуру, что на место out и in при вызове ставить? и как вызвать vector<T> deserialize в мейне?
453 1373758
>>73751

ofstream out("файлназапись", std::ios_base::out);
serialize(out, vec);
out.close();

ifstream in("файлначтение", std::ios_base::in);
vec = deserialize(in);
in.close();
454 1373760
>>73758
спасибо, сейчас потещу
455 1373770
>>73758
ну мне сказали в итоге в темплейты не лезть и сделать функцию сериализации одного элемента вектора и так по одному перебрать все, а десериализовать с помощью sizeof по одной структуре считывать и пушбекать в вектор, попробую что то сделать, прост логику понять не мог. Спасибо большое за помощь.
456 1373771
>>73581
саттер "новые сложные задачи на с++"
457 1373772
>>73462

>шаблоны можно реализовать в рантайме - не знал


ты путаешь паттерны проектирования (pattern) и шаблоны c++ (template)
458 1373783
И еще вопрос про обертку функции. Есть много разных функции типа int a (int &d), string b (bool c), void k (int &z), Object.func(), которые надо запускать при определенном действии. Можно ли их как-то удобно запихнуть в один класс Events или надо велосипедить?
459 1373785
>>73783
Смахивает на проблему проектирования. Вообще лучше параметры тоже сделать в виде унифицированного типа. А дальше каждый из обработчик его по своему интерпретировал.
460 1373830
Пишу на вашем языке говна лабу, потому что препод - долбоеб и не хочет читать джаву. При этом требований к перфомансу нет. 50 процентов времени уходит на еблю с языком ради нихуя.

Так вот, объясните мне, нахуя мне блять 2 файла для одного класса? На-ху-я? Я понимаю зачем это сделано в отцовском си, но здесь эта поебистика зачем?
461 1373832
>>73830

> Я понимаю зачем это сделано в отцовском си,


Зачем?
462 1373833
>>73830
.lib/.a
463 1373835
>>73830
из-за правила odr
функции-члены, как и свободные функции, должны иметь одно определение, поэтому ты их размещаешь в .cpp файле, чтобы они были в одной единице трансляции по итогу
за исключением inline функций-членов, которые могут иметь несколько определений (но совпадающих друг с другом), в процессе компоновки линкер выкинет лишние определения
сам же класс может иметь несколько определений, поэтому его размещают в .h файле, далее они распространятся по единицам трансляции в процессе компиляции, но линковщик в процессе трансляции опять же выкинет лишние
ничего не понял? ну и хуй с тобой!
464 1373837
а еще я безработный и живу с родителями в одной хате!
465 1373844
>>73837
Типичный плюсовик.
мимо
466 1373852
>>73830
причина 1в1 такая же, как в старом си, гений
467 1373854
>>73830
например, у тебя есть один хэдер golovka.h и 2 исходника src1.cpp и src2.cpp . Если бы в golovka.h находились не только прототипы, но и реализации функций, например, void funktsyja() {}, то сначала эта функция скомпилировалась бы вместе с src1.cpp, т.к. #include "golovka.h" - это то же самое, что копировать-вставить содерживаемое golovka.h, потом та же функция скомпилировалась бы вместе с src2.cpp, а потом линкер бы охуел, превращая символьные метки funktsyja в адрес этой самой функции в машинном коде, ибо хуй знает, которую брать, линкер ведь не в курсе, что оба .o файла на этапе компиляции брали исходник этой функции из одного и того же места. А сравнение с Java хуйня, потому что .class не запускается на физической машине.
468 1373855
>>73830
ПыСы
а с функциями, реализованными прямо в определении класса, эта история не происходит, т.к. они инлайнятся, то есть их код, с некоторыми поправками, вставляется прямо туда, где он нужен, стало быть, никаких вызовов, меток, адресов, проблем линкования
469 1373875
>>73701
Да я даже текст не могу ввести, потому что не запускается. Если закомментить itoa(res, val, 10);, то запускается.
470 1373879
>>73875
А ты уверен, что вызов не происходит и не генеряется исключение?
471 1373881
Хуйню несете. Можно все в одном файле хуярить, если реализация функции прямо внутри класса написана. А отделять объявление от реализации просто хороший тон и повышает читаемость кода.
472 1373888
>>73881
Не помню, а со статиками это работает?
473 1373894
>>73881

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


это возможно лишь потому что определения функций-членов в таком случае рассматриваются как inline, и компилятор с линковщиком дальше с ними уже разбираются по правилам inline функций
474 1373904
>>73855
я выше уже писал
встраиваются лишь вызовы функций, сама со функция никуда не пропадает, она так же присутствует в объектном коде
со встраиваемыми функциями просто добавляется возни как компилятору, так и линковщику
насколько я понимаю, компилятор в каждой единице трансляции будет создавать эту функцию, а линковщик потом будет выкидывать лишние определения (но я не силен в том как устроены современные компиляторы, возможно там и по другому уже делают)
475 1373906
>>73904
а еще, с включенными обычными неагрессивными настройками оптимизации, современные компиляторы вообще то редко делают встраивание inline функций
476 1373907
>>73881
тут одно дело "все хуярить", а другое дело попытаться как и почему это работает в языке, тогда, конечно, поплаваешь в океане сомнений
а так да, меньше знаешь - быстрее работаешь
477 1373915
>>73844
не соглашусь, с моими знаниями, вышечкой по специальности и кое-каким опытом работы, я, наверное, все же смог где нибудь работать, если бы не было проблем с головой, к сожалению
478 1373916
>>73915
само собой, за low-прайс, типа как старые шлюхи - чем старше, тем дешевле
479 1373963
>>73830
Пиши все в один файл. Можно прямо как в джаве хуярить все в определении класса.
481 1374109
>>65137 (OP)
Здарова анончики, у меня есть вопросы.

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

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

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

Дополнительный вопрос.

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

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


Присмотрись к Си функции realloc (выделяй тогда при помощи malloc).
483 1374117
>>74112
Благодарю.

Ещё вопрос тогда. Есть некая строка в файле, считывание которой я сделал вторым способом с массивом. Есть ли мне смысл городить огород с постепенным наращиванием размера некого блока и копированием туда информации?
484 1374122
>>74117
Я жопой читаю. Ты хочешь использовать STL контейнеры стек или очередь. Возможно стоит посмотреть и vector, у него есть метод reserve, который позволит зарезервировать огромный кусок памяти сразу.
485 1374124
>>74122

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

Суть вопроса была в том, что если мне будет нужно считать некий текст из файла, то удобнее использовать List, однако, когда речь идёт о выводе этой информации в консоль или каких-либо действиях на основе неё. Какая скорость работы в таком случае будет? Не может ли оказаться в итоге, что пусть и двойная работа сначала по вычислению размера, а потом по копированию в одномерный массив, затем выведению в туже консоль будет быстрее, хотя по логике медленнее?
изображение.png32 Кб, 598x357
486 1374127
Закидал я конечно вопросами, но есть ещё один.

Стоит ли мне заморачиваться и делать обработку первым вариантом или же выигрыш никакой даже для больших величин и проще использовать второй?
487 1374128
>>74124
У list есть накладные расходы по памяти. На 1 твой байт 2 указателя будут (2х4 или 2х8 байт).

Если ты будешь выводить по 1 байту в консоль, то операция вывода будет заметно тормознее твоих проходов по любым STL контейнерам.
488 1374135
>>74127
Нахуя ты занимаешься оптимизацией этой хуйни? Компилятор сам за тебя это сделает, не еби себе голову.
Алсо, юзай вектор, ему можно заранее выделить сколько-нибудь памяти, потом он по-умному будет ее перераспределять, если не хватит.
В общем, всё за тебя уже придумано, лучше сначала напиши, а потом бенчмарки гоняй (с включенными оптимизациями)
489 1374138
>>74135
То есть просто использовать for? Понятно.

Касаемо вектора я скорее всего буду его применять когда будет крайняя необходимость, ну или когда на работу устроюсь, хы.
490 1374140
>>74135
Если он хранит тупо символы, std:stringbuf/wstringbuf будет возможно удобнее. Его сразу в поток вывода стошнить можно.
491 1374157
Есть два класса с длинной родословной:
a > b > c
d > e > f > l
Надо, чтобы у них был общий параметр, которые изменялся бы одновременно. Как это правильно реализуется? Указатель на член другого класс не хочется делать.
492 1374175
>>74157

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


Ничего не понятно. Что за параметр у класса?
493 1374182
>>74175
бля, плохое слово, член класса. Допустим bool open. И если в одном он стал 1, то и в другим должен стать 1.
494 1374196
>>74182
Это реализуется с помощью наследования, не?
495 1374210
>>74157
Сделай общий базовый класс, а в нём static поле
496 1374218
>>74157
Создать ещё один, в котором будут a и d
497 1374222
>>74157
>>74182

>Указатель на член другого класс не хочется делать.


Сделай указатель на сам объект другой иерархии классов, и пускай у тех будут методы GetOpen и SetOpen.
498 1374254
>>74157

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


зависит от того на какой уровень связанности ты готов пойти - можно делать начиная от того что тупо делать этот параметр глобальной переменной и до упаковки этого параметра в класс конфигурирования, сделанный синглетоном, которым, в свою очередь будут параметризироваться твои иерархии классов (либо статически через шаблоны, либо динамически через агрегирование)
а вообще, конеш, хуева когда изначально иерархии классов проектируются так что должны зависеть от каких-то внешних параметров
сверху какие то хуевые советы, если честно
499 1374300
>>74254
ну допустим, есть игра с классом инвентарь и классом карта. И на карте есть дверь, которые должны быть открыты, если в инвентаре есть ключ. При этом по сути и дверь и ключ в инвентаре являются последними листиками в свои деревьях классов. Как исправить ситуацию в таком случае? Создать кучу синглтонов ключдверь и протащить их по классам? Или как надо было поступить изначально, проектируя архитектуру?
500 1374323
>>74300
А сделать у класса инвентарь метод "найти_предмет", который мог бы дернуть класс дверь нельзя?
501 1374326
>>74300
эээ
дык это ж всегда делается самым наивным способом
у тебя будет функция или метод "открыть дверь", в ней тупо перебирается инвентарь у персонажа, если найден определенный ключ, то дверь открывается (изменяется ее статус на открыто) иначе дверь остается закрытой
обычная дрисня из if, никакого проектирования, лол
это же геймдев
глянь код любого рогалика
502 1374339
>>74323
>>74326
я думал делается взаимодействие с инвентарем, у подкласса инвентаря изменится значение, и (вот тут проблема) как-то меняется значение у соответствующего подкласса карты, будто бы они связаны (но не через указатели). Ясен хуй, что можно все процедурно сделать, а когда появятся какие-нибудь еще рычаги, еще 50 ifов везде всунуть.
503 1374346
Расскажите в крации как самому реализовать multiset
504 1374358
>>74346
вот так
https://ru.cppreference.com/w/cpp/container/multiset
внутри ч/б дерево
505 1374578
>>74346
обобщенный на шаблонах что ле? чтобы итераторы отдавал? с минимальными требованиями к типу элемента контейнера, чтобы тупо операция сравнения была и конструктор по умолчанию? с безопасностью исключений? чтобы управление памятью было за контейнер в аллокаторы вынесено? чтобы была поддержка мув-семантики, универсальной инициализации и других фич новых стандартов?
506 1374580
>>74339
епт
очевидно же что операция открытия двери в первую очередь относиться к двери
507 1374629
>>74578
По шаблонам со всякими стандартными методами а ля сортировки, сравнения, поиска, итерации. Фифти-фифти, но без изысков
508 1374663
>>74358

>https://ru


Immediately обоссан.
509 1374667
>>74323

>сделать у класса инвентарь метод "найти_предмет"


OOP-brain-damaged? Инвентарь не ищет предмет, у него не должно быть такого метода.
510 1374669
>>74339

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


Игры не делал, поэтому не знаю стандартных подходов. Вот мой полуночный бред. Смотри, у тебя предвидятся 50 различных взаимодействий вида "предмет в инвентаре - вещь в мире". Игрок взаимодействует с предметом, и если у него есть какой-то предмет, то случается одно (дверь открылась, ключ исчез), а если нет, случается другое (выводится соответствующее сообщение).
Вариант первый, разумный: не мудрить и запилить логику в саму дверь. Плюсы: просто, быстро, код, связанный с дверью, лежит у двери. Минусы: очень статично.
Вариант второй, энтерпрайзный: сделать таблицу вида "тип сущности в инвентаре - тип сущности мира - твои коллбеки с логикой работы". Тогда при взаимодействии ты проходишься по этой таблице (если её реализовать как хеш-таблицу - будет оче быстро), и, если есть строка с нужными типами, сделать нужное действие (убрать ключ и открыть дверь). Плюс в том, что этот вариант динамический и можно больше добавить всяких плюшек. Но кода больше и мороки больше.
Решай, что нужно.
511 1374710
>>74663
че уж там, проще в pdf драфта смотреть и все..
512 1374713
>>74710
кстати, размер 17 стандарта, а именно 1600 страниц всегда приводит меня в веселое настроение
если учесть что описание языка оберон-2 - ровно 26 страничек, лол
513 1374716
>>74713
Ну это частая проблема сколько-нибудь долгоживущих инструментов.

В крестах все еще осложняется общей навороченностью и богатой историей частичной совместимости с кодом, написанным на С в 88 году под Хуектрум-х42 с 11-битным байтом. Что требует описания всяких обобщений и частных случаев (неиссякаемый источник UB!), которые еще и разные в разных стандартах.

Да, и еще разная неявная поебень: типа формально (и в стандарте) это Х, но все делают Y (и в стандарте про это нихуя).
Как пример, если правильно помню, в стандарте нигде не было сказано, что функции и области видимости должны работать через стек. Но все здравомыслящие разработчики компиляторов сделали так, и когда вводили лямбды, пришлось обрезать им захваты. И хз, объясняется ли причина этой фичи в новом стандарте, или "просто запомни".
514 1374722
>>69757
Лол, *.emplace()
515 1374724
Анон, тред читал жопой, бочку не делал, но есть вопрос: есть ли какой-нибудь толковый дебаггер для типов (тип в компиль-тайме подсветить + мета-программирование и вот это все)? Сейчас отлаживаю аналогами дебаг-вывода, но хотелось бы что нибудь более подходящее.
516 1374726
>>74724
VsCode c соответствующим плагином что-то там подсвечивает. То ли инстанциации, то ли еще что. Не пробовал если честно.
517 1374783
>>74667
Сделай визитор.
518 1374788
>>74783
Да и инвентарь, который не может предоставить доступ к своему содержимому, странный.
519 1374793
>>65137 (OP)
а Я СИПЛЮС ЗНАЮ БОЛЬШЕ
>>71861
Пошёл нахуй
520 1374814
>>73968
то что нужно, спасибо
521 1374855
>>65137 (OP)

Стоит ли для индексов в цикле обязательно использовать unsigned int? Или же проще сделать проверку на отрицательное число и ноль?
522 1374860
>>74726
В IDE обычно достаточно паршивая поддержка типов. Было бы круто иметь что-то вроде компилятора, но для типов/шаблонов. Что бы можно было дебажить то как разворачиваются шаблоны, смотреть значения переменных, деманглить гигантские конструкции к более читаемым и тд. Может какие плугины к гцц или шлангу есть?
523 1374863
>>74855
size_t или auto
524 1374864
Ну шо ребзи кто уже студией новой пользовался? Стоит переходить?
525 1374865
>>74863
Понял
Снимок экрана от 2019-04-04 11-48-19.png62 Кб, 897x584
526 1374870
>>74860
NetBeans 10 + gdb - вполне себе позволяют лазать по шаблонам, показывают значения переменных внутри, вычисляют выражения налету.
527 1374871
>>74864
А что уже зарелизили 2019?
528 1374872
>>74871
Второго числа ещё
529 1374875
>>74872
Надо посмотреть. По сравнению с 2015 2017-ая адцкий глюкодром.
530 1374885
Пикрил можно вообще сделать на встроенных типах, не создавая отдельный класс для возвращаемого значения?

Функция sum() шаблонная, если што.
531 1374887
>>74885
На сколько большим? Какого размера принимаемые параметры? Вероятно суть задачи заставить использовать не POD типы.
532 1374893
>>74887

>На сколько большим? Какого размера принимаемые параметры? Вероятно суть задачи...


Да фиг его знает, что он хочет этот Липпман.
Вообще тема - шаблоны + было краткое описание type_traits.

>Какого размера принимаемые параметры?


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

Я правильно понимаю, что никакой встроенный тип для результата не годится?
С остальным уж разберусь самостоятельно.
533 1374899
>>74893
Скинь тушку шаблонной функции sum() из книги.
image.png165 Кб, 772x556
534 1374904
>>74899
Она там не приводится, пикрил - все, что есть. Причем тут иллюстрация немного другой темы. Сама задача идет позже.
535 1374911
>>74904
Единственное, что на ум приходит:
template <typename T1, typename T2, typename RT = uint64_t >
RT sum(T1 x, T2 y)
{
return (RT) x + y;
}
Ну или поебаться с std::confitional для RT.
537 1374917
>>74915
sum<uint64_t>(UINT16_MAX, UINT32_MAX);
image.png22 Кб, 413x374
538 1374919
>>74917
В 34 бита влезает же?
539 1374920
>>74919
А нет, я мудак. Надо скастовать первое слагаемое к Ret.
540 1374944
>>74710

>че уж там, проще в pdf драфта смотреть


html драфта смотреть обычно проще. Исключение — полнотекстовый поиск.
>>74713

> описание языка оберон-2 - ровно 26 страничек


А брейнфака — и того меньше, лол))
Пиши на брейнфаке.
541 1374945
>>74716

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


Про что несёт?
543 1375052
Есть папка, в ней находятся две папки, внутри которых заголовочные файлы и срр файлы. Как сделать так, чтобы заголовочные файлы из одной папки были видны в другой?
544 1375056
>>75052
Че? Берешь и инклюдишь без задней мысли
#include "../folder2/anus.h"
545 1375058
>>75056
Беда в том, что видит только то, что находится в той же папке и ниже по дереву каталогов.
546 1375067
>>75054 (Del)
Долго, очень.
547 1375073
Решил провести ревизию своих старых laba.cpp и переписать самое интересное на новый лад с использованием best practices и новых возможностей C++. Нашел у себя калькулятор, который при принимает от юзера строку с каким-нибудь арифметическим выражнием типа a + 2 / log(e) и вычисляет. Строка переводится в набор токенов конечным автоматом, затем токены сортируются и вычисляются. Вся обработка ошибок заключалась в выбрасывании эксцепшона по любому поводу, которое потом всплывало до уровня цикла I/O и подробный месседж выводился в консоль вместо результата вычисления. Хочу теперь сделать нормально, используя как можно меньше исключений, но не могу выдумать под это архитектуру.
На этапе парсинга можно выявить грубые ошибки ввода, то есть несоответвие формальным правилам, лишние символы и тд. Парсер - отдельный класс, объект которого создается в фунции Parse, кушает строку и возвращает вектор токенов. Как в таком случае сообщить пользователю об ошибке?
Но ошибка может произойти дальше. Например, юзер может поделить на нуль. Парсер такое не задетектит, это все вскроется уже на слое обработки токенов. Опять же, как оттуда ошибку протащить до уровня консольного ввода-вывода?
Думаю заимплеменить что-то вроде питонового трейсбека, который внутри тапла будет возвращаться из любой свободной функции или метода от уровня ввода до самого дальнего бэка, где происходят вычисления. Нормальная идея? Можете предложить что-то еще? Что почитать на тему?
548 1375077
>>75058
Дурачок? Две точки в пути для кого придумали?
549 1375078
>>75077
При переносе на другой ПК с другими названиями дисков будет работать?
550 1375079
>>75073
Возвращай строку NaN или Error
551 1375081
>>75078
Каких нахуй дисков, ты чо бля полный путь к файлу указываешь?
"../" значит "каталог выше", "../../" значит "два каталога выше" и так далее. Если ты беспокоишься за кроссплатформенность, то, во-первых, иди нахуй, а во-вторых, windows уже давно умеет понимать оба варианта слешей.
552 1375088
>>75073

>как оттуда ошибку протащить до уровня консольного ввода-вывода?


Используй путь Си с возвратом кода ошибки. Используй путь функциональщины с возвратом ADT мм, монадично в виде своего tagged union или стандартного std::variant.
553 1375089
>>75081
Ебать ты агрессивный, на ПВП позвать тебя что ли.

Помог только обратный слеш, с точками он меня на системный диск посылает.
554 1375102
>>75089
Скинь свою хуйню сюда
555 1375123
Цопаны, пересоздайте, а то тред тонет в глубинах. Спасибо.
557 1375164
>>65336
а дерево бинарное? ну тип если бинарное то изи, если реализовано указателями то берешь указатель и хуяришь while{tmp=tmp->left/right}, если загрузил в массив то тоже заебись все так же ток у тебя вместо указателя i, 1й элемент-корень дерева, 2k+1 - корень левого поддерева, 2(k+1)- правого и так переходишь
558 1375279
>>75052
При компиляции подключаешь нужные папки с хедерами в опциях компилятору.
559 1375589
>>74669
хоть тред и утону, запоздалое спасибо, в итоге сделал что-то типа второго варианта.
560 1376268
>>75073

> Опять же, как оттуда ошибку протащить до уровня консольного ввода-вывода?


std::optional
561 1379145
11 Вариант
C++
Кто не ответит - тот слушает рэп
sage 562 1379336
>>79145

>Вопросы по синтаксису идут на хуй


>Лабы идут на хуй


>"Как мне сделать Х на чистых крестах без библиотек" идут на хуй


>Все идут на хуй


>Хейтер сосет члены на пару со своей мамашей

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

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

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