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


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

<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
561 38 175

С++ №84 /cpp/ Аноним 16/03/19 Суб 02:15:02 13651371
15516741874920.png (8Кб, 528x528)
528x528
Аноним 16/03/19 Суб 02:21:20 13651442
Принес вам пасту из соседнего треда

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

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

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

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

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

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

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

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

Когда говоришь про CLion - сразу "ну мне и так норм, лень менять". Потом сидишь рядом с этим "и так норм", дебажишь в паре очередной рандом в многопотоке с никакой навигацией по коду и радуешься тому, как все свистит, пердит и виснет.
Аноним 16/03/19 Суб 02:23:04 13651484
Зато каждый первый хуевертит побитовое сравнение структур вместо нормального компаратора, делает макросы на каждый чих и обмазывается рекурсивными шаблонами для кодогенерации. Синьоры-плюсовики, хуле. Макросы макросов с пятиуровневыми шаблонами внутри - это про них.

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

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

Трустори. Все это встречал на трех конторах в трех разных больших продуктах. И везде был один типикал C++-контингент. Дважды даже встречал самописный map-reduce на итераторах (аналог java streams), лол.
Аноним 16/03/19 Суб 02:23:20 13651495
В общем, большенство плюсовиков - я это такие пидорахи в мире программистов. Любят скрепы и защищают недостатки родины, люто неприемлят любое новое, другие языки и технологии.
Так что, анон, брось дрочить на плюсы, переходи на что-нибудь статически-строго-типизированное и функциональное, с нормальным тулингом и сообществом.

ДИСКАСС
Аноним 16/03/19 Суб 04:09:29 13652076
>>1365149
>переходи на что-нибудь статически-строго-типизированное и функциональное, с нормальным тулингом и сообществом.
Борщехлеб маскировался под программиста, но под конец не выдержал.
Аноним 16/03/19 Суб 05:12:58 13652127
>>1365149
>переходи на что-нибудь
>но не скажу на что
>ведь знаю, меня обоссут и обосрут лишь за упоминание этого лютого говнища
>и главное, я сам это прекрасно понимаю, но всё равно убежденный говноед, но скрываюсь, чтобы другие этого мне в лицо не сказали

Аноним 16/03/19 Суб 05:51:45 13652168
>>1365212
Scala, kotlin, java - стек jvm
Go, swift - native со встроенным gc
Rust - native без gc
Аноним 16/03/19 Суб 08:27:58 13652309
>>1365216
Тут тред языка программирования. Скриптомакакам просьба на выход.
Аноним 16/03/19 Суб 09:37:13 136524410
>>1365216
У свифта нет gc, там подсчет ссылок
Аноним 16/03/19 Суб 11:57:45 136528011
>>1365230
>Rust
>Скриптомакака
Построить из себя большого профессионала у тебя не получилось.

>>1365244
Да, я в курсе. Не хотелось создавать новую категорию или относить язык к категории раста
Аноним 16/03/19 Суб 13:05:58 136531112
>>1365149
Лол, внезапно двачую. На удивление точная характеристика.
Аноним 16/03/19 Суб 13:06:22 136531213
>>1365244
Подсчет ссылок - это форма сборки мусора.
Аноним 16/03/19 Суб 13:25:08 136533614
Поясните, как обойти дерево итеративно? В данный момент я сначала загружаю его в массив, а потом читаю массив, но мне кажется он тут лишний. Или мб можно что-то типа пайпа реализовать, чтобы функция рекурсивно выплевывала значения?
Аноним 16/03/19 Суб 14:26:06 136537615
>>1365336
Тебе в любом случае нужен будет стек в каком-то виде. Если с массивом все ок выглядит то лучше так и оставить. Алсо, не совсем ясно что ты подразумеваешь под "загружаю его в массив". Чтобы загрузить дерево в массив его нужно обойти.
Аноним 16/03/19 Суб 15:28:27 136540816
>>1365336
А чем обычный фор не устраивает?
Аноним 16/03/19 Суб 15:57:34 136542617
>>1365376
Бля, не хочетс реализовать стек, ну да ладно. Массив создавал рекурсивно, лол.

>>1365408
Как ты будешь обходить деерево через for?
Аноним 16/03/19 Суб 16:04:39 136543118
>>1365144
Базель это же просто билд-тул. У вас в проекте что, мейкфайлами и симейком не пользовались?
Аноним 16/03/19 Суб 16:07:33 136543319
>>1365426
Ты лабу по алгосам что ли делаешь? Дерево (как и любой граф) можно обойти итеративно поиском в ширину или глубину. Если не лень, можешь обратить внимание на Boost Graph Library, не придется писать свой велик.
Аноним 16/03/19 Суб 16:17:42 136543820
>>1365149

Плюсоебство - это как православие. Когда протестантизм завещает работать над собой и создавать блага, славя величие Господа, православие требует от последователя искупления греха, посредством непрерывного страдания, как страдал Иисус неся свой крест. Стрелять себе в ногу и нажираясь потом водкой, позерски ноя о тяжестях нищебродской жизни -- что может быть лучше для православного плюсоеба?
Аноним 16/03/19 Суб 16:26:51 136544621
>>1365431
Рассмешил нахуй. Было на premake. Фишка bazel в том, что он умеет кешировать результаты сборки. Можно организовать кеш на локальной тачке и тогда сможешь безболезненно переключаться между ветками гита, вообще нихуя не вызывая лишний ребилд.

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

А еще билдсервер можно оформить в виде кластера. Тогда можно юзать не один двухсокетный сервер с ксеонами, а пять. И честно компилить с нуля одну ревизию проекта-монстра за пару минут.
Аноним 16/03/19 Суб 17:57:58 136549922
Untitled2.jpg (61Кб, 1005x532)
1005x532
Что за хуйня? Разве он не должен переводить меня в диск D? Полный путь к папке выдает тоже самое, строку с путем показывает и снова предлагает выполнить из дефолтного места.
Аноним 16/03/19 Суб 18:09:54 136551123
>>1365499
Причем cd ../ работает как положено и возвращает в предыдущую папку
Аноним 16/03/19 Суб 18:19:02 136551424
>>1365499
Мало того, что не по теме, так еще и гуглится на раз-два. Нужно аргумент /D приписать в начале вот так:
>cd \D D:/whatever
Аноним 16/03/19 Суб 18:21:09 136551725
>>1365514
Жрять, у меня до этого вот абсолютно точно так же открывался диск без аргумента /D, гуглил как только мог, видимо неправильные слова писал, спасибо
Аноним 16/03/19 Суб 18:27:16 136551926
>>1365499
Просто пишешь D: и все.
Аноним 16/03/19 Суб 19:37:18 136554127
>>1365144
>Полная сборка сократилась со 110 минут до 5 минут.
Они там в один поток собирали? Откуда такая разница?
Аноним 16/03/19 Суб 20:08:22 136555428
>>1365541
>Откуда такая разница?
вангую, что самоотверженный вчерашний студентик сравнивал полные ребилд проэкта со своим охуенным билдом через базел со включенным кешем ))
Аноним 16/03/19 Суб 20:40:38 136557129
>>1365144
>На винде сидит 2/3 всех разработчиков
Это реально звучит как диагноз (и им по сути и является).
Аноним 16/03/19 Суб 21:18:56 136559530
Ананасы, подкиньте идею для диплома
Чтоб интересно было и может быть как-то полезно
Аноним 16/03/19 Суб 21:25:32 136560031
>>1365595
Свою нейронную сеть без сторонних либ. Полезно, интересно и все преподы на защите будут кипятком ссать, я гарантирую это.
Аноним 16/03/19 Суб 21:36:03 136560432
>>1365541
Нет, собирали как обычно. Непосредственное время работы компилятора и линкера не уменьшилось.

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

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

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

>>1365554
Да)) В этом как раз вся суть - уже 3 года bazel лежит на гитхабе, бери и внедряй. А 120 долбоебов даже не почесались, чтобы перестать страдать.
Аноним 16/03/19 Суб 21:42:59 136560833
>>1365604
>Т.е. стало возможным кешировать и шарить все результаты сборки между разработчиками.
"Полный ребилд" - это когда все файлы проекта компилируются заново, без кэширования.
Аноним 16/03/19 Суб 21:44:07 136561134
Аноним 16/03/19 Суб 22:04:32 136563235
сап двач, прошу помочь с программой, ебусь целую неделю, нихрена не получается.
Покажите на примере функции ввода вывода массива в/из файла.

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

Код скинуть не могу, слишком большой, да и прошу я примеры работы конкретно с бинарными файлами
Аноним 16/03/19 Суб 22:05:10 136563436
>>1365608
>>1365611

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

Это вопрос терминологии, не понимаю, почему ты за это пытаешься зацепиться, суть от этого не меняется.
Судя по твоей боли от сугубо положительного результата, ты - истинный плюсовик.
Аноним 16/03/19 Суб 22:15:20 136563937
1552351431121.png (1646Кб, 3840x2160)
3840x2160
>>1365595
Ролль или выбирай, тем дохуя просто.
Аноним 16/03/19 Суб 22:24:24 136564638
>>1365639
Надо будет подумоть
Аноним 16/03/19 Суб 22:32:51 136565439
>>1365634
>либо берез из общего кеша, если ревизию собрали ранее
Еще раз объясняю "полный ребилд" - это когда весь проект собирается заново, без кеша. То есть все файлы заново перекомпилируются. Твои 5 минут - это не "полный ребилд".
>Это вопрос терминологии
Именно. Вопрос терминологии, которой ты не владеешь.
>Судя по твоей боли от сугубо положительного результата
Боль у меня исключительно от твоего неграмотного пиздежа.
Аноним 16/03/19 Суб 22:37:23 136565940
>>1365634
Обычным мейком ты тоже собираешь проект один раз, а потом перекомпилируешь только изменившиеся файлы. Т.е. вся суть твоей хуитки в том, что это сетевой кэш вместо локального.
Аноним 16/03/19 Суб 23:16:18 136570041
>>1365654
>полный ребилд
Еще раз объясняю, что можешь хоть сто раз доебаться к слову "ребилд", твоя критика все равно будет выглядить как бессильная злоба.

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

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

>>1365659
Ага, теперь смени ветку и верни обратно, умник. Посмотрим, как перекомпилятся неизменившиеся файлы с изменившимся таймстампом. Bazel чекает хеш файла, а не таймстамп.
Аноним 16/03/19 Суб 23:30:35 136572542
Растодебилы должны быть в своём треде и не лезть к нормальным людям.
Аноним 16/03/19 Суб 23:38:40 136573743
>>1365700
>бессильная злоба
>Ты просто типичный плюсовик-дегенерат
Железобетонные аргументы. Сразу видно настоящего профессионала.
Аноним 16/03/19 Суб 23:51:47 136575244
>>1365654
Чет ты до какой-то хуйни доебался.

мимо
Аноним 16/03/19 Суб 23:54:15 136575745
347cb091-70d4-4[...].jpeg (59Кб, 1280x423)
1280x423
>>1365737
Мне ничего не мешает одновременно приводить аргументы и раскрывать суть твоей личности.

Вот, подкрасил для тебя аргументы желтым, посколько из-за своей толщины тебе трудно их отыскать.
Аноним 16/03/19 Суб 23:58:21 136575846
>>1365700
да чувак, успокойся
кеш-база базела, в которой по сути хранятся скомпилированные артефакты по каждой ветке и все такое
это нужно для просто огромных команд и проектов, как раз уровня гугла и майрософт
примерно та же история что и к примеру, с серверами отладочных символов под каждый бинарный артефакт, у майкрософт издревне был такой артефакт
все это экономит время, да
НО требует сопровождения, настройки и прочей поеботы
в конпорациях вообще под это дело выделяют отдельных инженеров
но для средних контор никто не будет тебе выделять на это время
а значит сопровождение всего этого ляжет на плечи обычных гребцов
старички это понимают, вот и не рыпаются
а ты молодое еще видно, говно в жопе бурлит
Аноним 16/03/19 Суб 23:58:58 136576047
>>1365758
>издревне был такой артефакт
инструмент
quick fix
Аноним 17/03/19 Вск 00:21:39 136576648
>>1365758
>а ты молодое еще видно, говно в жопе бурлит
Судя по его стилю общения, скорее всего с ним большинство команды просто контактировать не захотело из-за токсичности. Он выше сам пишет, что 2/3 народа его замечательные инициативы молча проигнорировало. Потому что плюсовики-дегенераты.
Аноним 17/03/19 Вск 04:04:22 136583749
>>1365766
2/3 народа у них на винде, так что он сам их нахуй послал, ведь на винде дегенераты.
Аноним 17/03/19 Вск 23:28:49 136630050
Реально ли в плюсах поднимать хорошие деньги, не занимаясь серьезным байтоебством? Я сейчас только в начале карьеры и работаю над проектом, где это не так важно. Однако кажется, что за пределами моей конторы от плюсовиков (по крайней мере от синьеров) только этого и ждут. То есть не просто там архитектуру пк знать и немного ассемблер понимать, а прямо хардкорным эмбедом заниматься.
Аноним 18/03/19 Пнд 07:17:04 136636751
>>1365312
Кнут так не считает.
Аноним 18/03/19 Пнд 07:19:09 136636852
>>1365446
>Фишка bazel в том, что он умеет кешировать результаты сборки.
В чём отличие от ccache?
Аноним 18/03/19 Пнд 13:12:40 136647253
>>1366368
ccache - для бумеров, bazel - для зумеров
Аноним 18/03/19 Пнд 14:17:35 136649154
>>1366368
С точки зрения кеширования концептуально мало чем. Bazel - это интегрированное решение. Там есть кеш(ccache, stashed) + код сервера для кеша, сборка на кластере(incredibuild, distcc) + код сервера, reproducible builds(когда ты явно указываешь все шаги сборки так, что в итоге для сборки продукта тебе нужен только базел и git репозиторий - все остальное скачается само и нужных версий), поддержка нескольких языков - например, вообще без костылей можно компилить клиент на джаве и сервер на плюсах, которые зависят от одного протобафа; можно создавать тестовое окружение, где скомпиленный бинарник прокидывается как ресурс для тест-раннера (да, да, никакой ебли с ручной настройкой тестового окружения).

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

проблема такая: внутри сортировки вызывается деструктор и он освобождает память не по своему указателю в последнем элементе сортируемого вектора, пробовал создавать экземпляр, копировать его и удалять первый экземпляр- проблем нет, если из деструктора убрать delete - то все норм, но если оставить delete то и в конце программы, отсортированный вектор
не может корректно уничтожить свои элементы.
Смотрел по шагам сортирует все верно все значения корректные но в самом конце сортировки освобождается память по указателю последнего элемента. Обходные пути не интересуют, объясните где у меня ошибка. с меня нихуя
Аноним 18/03/19 Пнд 15:23:51 136652756
>>1366523
>лабодауны идут нахуй
Аноним 18/03/19 Пнд 15:25:58 136652857
>>1366527
не, эт для меня, я прост проебал пару часов жЫзни на гугление, и не могу сообразить в чем проблема
Аноним 18/03/19 Пнд 15:30:43 136653258
Аноним 18/03/19 Пнд 15:41:20 136653959
>>1366532
спасибо анон, а где вот это вот все вычитывать? стандарт штудировать от а до я?
Аноним 18/03/19 Пнд 16:14:06 136657260
Аноним 18/03/19 Пнд 16:24:21 136658261
2d9f5a91-2ba7-4[...].jpeg (18Кб, 500x375)
500x375
ТАК, БЛЯДЬ.

Не был на собесах два года. Надо кабанчиком пробежаться по STL/boost. Есть какие-либо статьи чтоб по быстрому вспомнить, если все это дело знал наизусть 5 лет назад?
Аноним 18/03/19 Пнд 16:32:35 136659762
>>1366582
Пробежись по cppreference
Аноним 18/03/19 Пнд 16:34:13 136659863
>>1366491
>Это просто более взрослое и продвинутое решение, чем все остальное. С более серьезной командой, которая постоянно пилит новые фичи и устраняет баги.
Ты менеджер по продажам, что ли?
Аноним 18/03/19 Пнд 20:11:47 136671664
Codewars хуйня или нет? Стоит тратить время на это?
Аноним 18/03/19 Пнд 20:25:43 136672365
1212.gif (124Кб, 300x300)
300x300
Аноним 18/03/19 Пнд 20:32:01 136672866
>>1366716
Эти ресурсы нужны для тренировки алгоритмического мышления, то есть ты учишься грамотно применять известные алгоритмы или выдумывать новые. Для изучания языков программирования они не подходят, а основная их цель -- подготовить тебя к собесам в силиконовые конторы (ну или в яндекс), где спрашивают подобные задачи.
Аноним 18/03/19 Пнд 20:35:56 136673367
Всем привет, недавно начали изучать кресты в шараге, решил стандартизировать знания и заполнить пробелы, выбрал книгу Бьерна Страуструпа "Принципы и практика использования C++", все верно сделал?
Аноним 18/03/19 Пнд 20:42:36 136673868
>>1366723
На крестах реально даже твою мамку написать.
>>1366733
Книга норм, но будешь часто охуевать от ошибок в коде и тексте. Но особенный пиздец будет, когда дойдешь до рисования в gui через fltk. Но если пройдешь всю еблю, то нехило апнешь скилл.
Аноним 18/03/19 Пнд 20:48:28 136673969
Аноним 18/03/19 Пнд 20:49:14 136674070
>>1366738
подробнее насчет ошибок?
Аноним 18/03/19 Пнд 20:50:05 136674171
>>1366738
кст почему работа со строками там так далеко находится?
Аноним 18/03/19 Пнд 20:57:23 136674572
>>1366738
>>1366739
Друзья, покажите, пожалуйста, как это сделать
Аноним 18/03/19 Пнд 21:52:06 136675973
Аноним 18/03/19 Пнд 22:05:56 136676274
>>1366745
>Друзья, покажите, пожалуйста, как это сделать
Возьми Qt, там есть QPainter, у которого богатые средства для рисования. Можно другую чисто графическую либу вроде skia или cairo, но они сложно настраиваются и устанавливаются. Начинающему тяжеловато будет. С библиотекой для gif тоже лучше не париться, а сохранить последовательность картинок, которые потом сконвертировать в гиф imagemagic-ом.
Аноним 18/03/19 Пнд 22:16:47 136676875
>>1366733
>заполнить пробелы
«Принципы и практика...» не для этого писалась, она энтрилевел. Для заполнения пробелов у него другие книжки.
Аноним 18/03/19 Пнд 22:41:50 136678276
https://pastebin.com/vnEnYBZe пытаюсь параллельно матрицы умножить,но не получается.В чем ошибка
Аноним 18/03/19 Пнд 22:44:05 136678377
>>1366782
Читать больно. Сначала скажи, каким алгоритмом пользовался, как на блоки матрицы делил.
Аноним 18/03/19 Пнд 22:46:27 136678778
Аноним 18/03/19 Пнд 22:50:29 136678979
Аноним 18/03/19 Пнд 23:51:09 136682780
>>1366762
> С библиотекой для gif тоже лучше не париться, а сохранить последовательность картинок, которые потом сконвертировать в гиф imagemagic-ом.
Алсо, чтобы тяжёловесный Qt не ставить, можно заюзать какую-нибудь либу. SDL или SFML например
Аноним 19/03/19 Втр 00:02:30 136684081
Без названия.jpg (6Кб, 226x223)
226x223
Аноним 19/03/19 Втр 00:54:09 136685482
>>1366827
>SDL или SFML например
Там векторной графики нет. Только спрайты и текст. В SFML немного есть, но хуже QPaintera.
Аноним 19/03/19 Втр 01:40:40 136686683
Аноним 19/03/19 Втр 02:34:36 136687384
>>1366582
То, что ты знал 5 лет назад, уже не используется, сейчас нужно юзать только новые стандарты с пометкой на улучшение в будущем, заглядывая в черновики будущих стандартов. Иначе говнокод
Аноним 19/03/19 Втр 04:45:09 136689285
>>1366873
Говнокод это твои гены.
Аноним 19/03/19 Втр 11:01:53 136697386
Аноним 19/03/19 Втр 11:30:28 136698687
>>1366741
>почему
Эта книжка писалась как университетский курс для полных снулей в программировании. Ответы на вопросы почему у него так, а не иначе в Главе 0 + он дает ссылку на свой сайт, где есть более подробные рекомендации к каждой главе + на хабре есть перевод этих рекомендаций.

>работа со строками там так далеко находится?
Базовый ввод/вывод он дает с самого начала, этого достаточно.
Работа со строками сама по себе может быть достаточно муторной и не всем интересна. Типа не хотел демотивировать учеников. Алсо, конкретно в плюсах она еще и основывается на таких средствах языка, которые в двух словах не объяснишь в самом начале.
Аноним 19/03/19 Втр 16:30:06 136708888
Поясните, есть примерно такой код:

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

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

Почему она не меняет класс? Нельзя как-нибудь по ссылке передать?
Аноним 19/03/19 Втр 16:32:18 136708989
>>1367088
Почему нельзя по ссылке передать? Или ты не знаешь как?
Аноним 19/03/19 Втр 16:41:07 136709290
>>1367088
void RecursiveFunction (Myfuckingclass & A и т.д.
это ващета азы
Аноним 19/03/19 Втр 16:44:55 136709391
>>1367089
>>1367092
бля тривиальщина, аж стыдно, но все равно спасибо. Ссылку на обьект дал, а на сам класс не дал.
Аноним 19/03/19 Втр 16:54:14 136709692
>>1367093
Че ты несешь.
Класс - это абстрактное описание некой сущности.
Объект - это уже воплощение этой абстракции.
Аноним 19/03/19 Втр 17:03:19 136709893
Пачаны, накидайте годного материала по нейроночкам на наших любимых крестах. Гайды, примеры, исходники - вот это вот все.

И гляньте чо зелёные натворили, вообще уже ебнулись
https://youtu.be/p5U4NgVGAwg
Аноним 19/03/19 Втр 20:08:39 136719294
>>1367098
Я сам когда-то на плюсах нейронку писал - НИГДЕ в интернете нет нормального описания обратной пропагации не то что каких-нибудь backward convolution - а обычного слоя свёртки (с нетривиальными значениями dilation, шага и пэддинга). Только листок бумаги и исходники Caffe тебе в помощь.
Аноним 19/03/19 Втр 21:23:40 136722795
Как вложить класс в класс если классы раскиданы по нескольким разным сpp и h файлам?
Помогите, гугол выдает какую то хуету.
Аноним 19/03/19 Втр 22:26:56 136725796
>>1367192
В серьезных книжках формулы все есть. Берешь их и кодишь. Подразумевается, что ты достаточно умен для этого. А если нет, то используй Python + ML фреймфорк на свой вкус.
Аноним 19/03/19 Втр 22:29:57 136726297
>>1367227
Forward declaration наверное ищешь.

headerB.h:

struct A;

struct B { A* a; };

headerA.h:

#include "headerB.h"

struct A { B b; };
Аноним 20/03/19 Срд 01:50:01 136734898
>>1367257
В книжках и статьях (даже самого ЛеКунна) везде говорится "да там обратная пропагация, оно само всё. Вот простой пример для padding=0, stride=1, dilation=1, а для других сами разберётесь".
Аноним 20/03/19 Срд 10:21:54 136741899
>>1367262
Лол, возможно ему вообще нужна обычная композиция или агрегация.
А такое как у тебя лучше сразу разруливать абстрактными интерфейсами, чтобы потом не огрести.
Аноним 20/03/19 Срд 20:14:10 1367651100
Подскажите как достать thumbnail из видео если его нет в метаданных используя Qt ну или либу какую?
Аноним 21/03/19 Чтв 07:38:47 1367919101
>>1367651
Какая система? В каком смысле "нет в метаданных"? Если венда не сгенерила и в кэше у неё нет thumbnail-а, то можно забрутфорсить.
Берёшь ffmpeg. Демуксишь, декодируешь n-ый кадр. Вот тебе ноготь большого пальца.
Аноним 21/03/19 Чтв 14:07:57 1367990102
>>1367919
>ffmpeg
Спасибо, сейчас буду делать
Аноним 21/03/19 Чтв 21:50:41 1368158103
>>1365137 (OP)
Для интереса пишу на с++, почему у меня default random engine все время показывает одно и тоже значение
>default_random_engine randomGenerator(time(0));
>uniform_int_distribution<int> roll(1,6);
Если я например три раза вызову, то остальные будут рандомными, а первое всё равно одним и тем же
Аноним 21/03/19 Чтв 22:30:48 1368180104
>>1365144
Я хуею, я еще себя тупым считаю
Аноним 22/03/19 Птн 00:29:15 1368244105
Почему во всех вакансиях требуют знание Boost? Там ведь половина либы перекочевала в стандарт, а остальная на подходе, да и функции там далеко не уникальные. Легаси поддерживать?
Аноним 22/03/19 Птн 01:58:15 1368262106
>>1368244
Да.
Ты не переживай, я на работе недавно переписывал легаси, написанный на расширении крестов от Borland C++ 2002 года
Аноним 22/03/19 Птн 07:23:20 1368319107
>>1368262
Но чем переписывал?
Аноним 22/03/19 Птн 08:54:24 1368335108
Ознакомился с заголовочными файлами (tobish .h).
Не могу понять.
Поясните, можно ли писать в заголовках содержания функций, не только, просто, прототипы.
Если нельзя/не принято, почему? Проясните ситуацию, не хочу тупо разделять функций на 2 файла, где в одном - прототип, а в другом - уже функция.
Аноним 22/03/19 Птн 09:14:51 1368339109
>>1368335
Потому что деды так делали - и ты так делай.
Серьёзно, если это твой первый ЯП, то лучше сейчас тебе в этом не пытаться разобраться, а просто принять.
И лучше начать изучение с чистого С.
Аноним 22/03/19 Птн 09:32:03 1368341110
>>1368339
Явно не первый. У C нет классов, поэтому для меня он сосёт, простите меня владельцы C.
А так, выяснил, что можно взять при себе 3 файл (.cpp, но не главный) и туда поставить содержание функций.
Главное не забыть присоединить заголовок к нему.
Аноним 22/03/19 Птн 10:38:45 1368356111
>>1368341
В расте тоже нет классов, а сосет все равно C++
Аноним 22/03/19 Птн 11:26:34 1368371112
>>1368335
Не прототипы, а декларации.
Надо для инкапсуляции и для того, чтобы при изменении внутреннего устройства функции не приходилось перекомпилировать все файлы, использующие этот ашник.
Аноним 22/03/19 Птн 12:52:43 1368390113
>>1368335
Вообще можно, только придется писать перед каждой функцией ключевое слово inline. Почему так и зачем гугли ODR (one definition rule).
Аноним 22/03/19 Птн 13:03:55 1368392114
>>1368390
>только придется писать перед каждой функцией ключевое слово inline.
фейспалм.жпг
Аноним 22/03/19 Птн 13:17:21 1368397115
>>1368392
Что не так? Не хочешь писать - разделяй на интерфейс и реализацию или хуярь на шаблонах (их нужно писать в заголовочном файле).
Аноним 22/03/19 Птн 13:36:35 1368412116
>>1368319
важней вопрос: зачем?
Аноним 22/03/19 Птн 13:50:02 1368421117
>>1368397
>Что не так?
Все определенные в ашнике функции по умолчанию инлайн.
Аноним 22/03/19 Птн 13:58:35 1368429118
>>1368421
Ссылку на пункт стандарта.
Аноним 22/03/19 Птн 14:03:13 1368434119
>>1368421
ты путаешь, наверное, с функциями-членами, определенными в объявлении класса..
Аноним 22/03/19 Птн 14:15:14 1368441120
Аноним 23/03/19 Суб 00:13:28 1368677121
Как при файловом вводе вернуть каретку в самое начало файла? Допустим, я хочу сначала посчитать количество строк в файле, а потом уже запускать алгоритм.
Аноним 23/03/19 Суб 00:36:44 1368687122
>>1368677
перепечатай эту ссылку руками, чтобы симулировать подобие самостоятельной деятельности
cplusplus.com/forum/beginner/30644/
Аноним 23/03/19 Суб 01:07:06 1368699123
изображение.png (14Кб, 359x482)
359x482
Почему в переменную konets не записывается символ \n?
>>1368687
Я не знаю английского
Аноним 23/03/19 Суб 01:24:58 1368702124
Так, ладно, я понял, что cin не читает управляющие символы. Как это исправит? Я уже пробовал искать решение, но так и не нашёл (искал только на Русском языке, потому что других не знаю).
Аноним 23/03/19 Суб 01:26:41 1368703125
>>1368702
> ">>"не читает управляющие символы
самофикс
Аноним 23/03/19 Суб 01:28:42 1368705126
Аноним 23/03/19 Суб 01:28:51 1368706127
>>1368702
Да, неповезло. В макдональдс вроде анкету можно на Русском языке отправить.
Аноним 23/03/19 Суб 01:32:09 1368707128
>>1368706
Английский язык в не англоязычных странах используется в основном только в IT и то не всегда, 1C тому пример. А команды на любом языке можно просто выучить.
Аноним 23/03/19 Суб 01:40:18 1368710129
>>1368707
>используется в основном только
Плюсы тоже применяются в основном только в айти, и то не всегда. У английского намного больше сфер применимости, чем у плюсов, но ты зачем-то решил учить плюсы.
Аноним 23/03/19 Суб 01:42:09 1368711130
Вот скажите, как сейчас обстоят дела на рынке труда у крестов? Собираюсь скоро РАБотать, не могу определиться с языком. Да-да, важен не язык, а скилл, алгоритмы, структуры и тд - это понятно, но все равно на сам язык время потратить надо. Речь идет не о базовых конструкциях, их я изучал еще лет 6 назад, а про всякие STL, boost, новые стандарты и тд. Плюс сделать небольшой проект - два для резюме. Мне не оче нравятся всякие жабаскрипты, похапэ и тем более всякие электроны. Да, вакансии есть по плюсам, но я хотел бы узнать, ведутся ли НОВЫЕ разработки, куда можно пробиться при достаточном упорстве. Те не легаси и переписывание на реакты. Вообще меня больше привлекает лоулевел, но в рашке за всякие микроконтроллеры платят мало, поэтому готов хотя бы на полшишечки пилить что-то на плюсах. Но, если что-то пилят только во всяких яндексах, где нужно пройти 20 собеседований и потом раздвигать булки, то я бы и не прочь пойти веб макакой, получая свои 300к/нсек и играться с сишкой по выходным, может участвуя в каком опенсурс проекте. В общем, мой вопрос такой: стоит ли в 2019 пытаться ворваться, при условии, что по большей части нравиться само программирование, пусть даже и веб, но все такие хочется ближе к системе? Немаловажную роль играет зп в перспективе, но я был бы готов получать НЕ СИЛЬНО меньше и при этом потратить БОЛЬШЕ времени на изучение. Но если разница в ЗП в полтора раза, а знать надо в 3 раза больше, то я бы положил на эту затею. В идеале я бы пилил модули для линупса, но такого в рахе я вообще не видел, может одна вакансия для моржей с 10 летнем стажем.
Аноним 23/03/19 Суб 02:10:48 1368719131
изображение.png (5Кб, 285x183)
285x183
>>1368710
И не зря. Я решил свою проблему без тебя, пидора ебаного.
Аноним 23/03/19 Суб 02:17:00 1368721132
>>1368719
>кидаешь список подходящих функций
>он называет тебя пидором ебаным
больше никогда не буду помогать незнающим английский, они же ущербные, реально.
Аноним 23/03/19 Суб 02:19:55 1368722133
>>1368721
Зай, лучше про рыночек расскажи мне
Аноним 23/03/19 Суб 02:33:20 1368725134
>>1368711
Кресты один из самых популярных языков программирования, много где применяется. Его изучение поможет в изучении других Си-подобных языков, в том числе JS. Лучший язык программирования, чтобы начать учиться программировать.
Аноним 23/03/19 Суб 02:35:12 1368727135
изображение.png (58Кб, 1262x441)
1262x441
>>1368711
Яндекс хуйни не посоветует
Аноним 23/03/19 Суб 02:47:03 1368732136
>>1368725
Учиться программировать я уже умею. С указателями бодался, в сокеты долбился, системные вызовы юзал и тд. Речь идет о том, что конкретно задрочить все основные либы и новые стандарты непосредственно для того, чтобы пойти работать джуном.

>>1368727
Питухон я знаю и часто использую, мне он нравиться, но на нем в основном вакансии по Data Science и джангам. Как я уже сказал, я и не прочь в принципе, просто хотелось бы поближе к байтикам. Вообще бы в идеале писал бы питоновские модули на си, потом бы их соединял питоном и наворачивал юниттесты. А для Data Science и всяким ML нужно еще перед этим статистику учить, она у нас в шараге была, но сказать, что я ее знаю не могу, хотя еще помню про нормальное распределение и простые задачи.
Аноним 23/03/19 Суб 03:20:34 1368737137
>>1368699
Ух ёб твою мать.
почитай про потоки ввода и про наименования переменных.
Аноним 23/03/19 Суб 03:28:56 1368738138
>>1368732
>поближе к байтикам
Ассемблер
Аноним 23/03/19 Суб 03:29:56 1368739139
>>1368719
А ещё круче то, что istream::getline сделал бы то же самое, а код бы выглядел куда короче.

P.S.: открывать файл в одной процедуре, а закрывать в другой - хуйня.
Аноним 23/03/19 Суб 12:36:00 1368818140
>>1368739
двачую, создаёшь буферную строку, while getline увеличиваешь счётчик и возвращаешь
после таких тредов понимаю, что язык реально сложный, но с кучей полезных инструментов
Аноним 23/03/19 Суб 12:37:11 1368819141
>>1368725
>Кресты один из самых популярных языков программирования, много где применяется
по количеству ваканский и не скажешь
сижу и плачу, неужели ебаную жабу учить придётся
Аноним 23/03/19 Суб 13:52:30 1368839142
Это перепост с ньюфаг треда, т.к. сказали что тут есть люди работающие в этой области:
>Есть тут господа совмещающие программирование в linux с работой с железом?
>Очень хочется получить структурированные знания по тому как вообще происходит написание драйверов под линухом, как это всё вяжется с device tree, что за node module блять и тд. Существует ли такая литература, но не состоящая из кучи отдельных статей в инете, а именно в одном источнике, хотя бы в каких то базовых аспектах?
>И порекомендуйте плес какие-нибудь хорошие книжки по C для написания всё тех же драйверов.
Аноним 23/03/19 Суб 14:37:09 1368849143
Бляяяя, какое же винда дерьмище ебаное. Все вилкой вручную собираешь. С САЙТА БЛЯДЬ КАЧАЕШЬ. Дельфимокрыеписьки скочать бесплатно. Как в 90-е нахуй.
Аноним 23/03/19 Суб 15:21:29 1368863144
>>1368819
>сижу и плачу, неужели ебаную жабу учить придётся
она проработаннее и технологичнее, чем плюсы. А еще там есть нормальная IDE

мимо-ушел-с-плюсов-на-джаву
Аноним 23/03/19 Суб 15:31:51 1368871145
>>1368819
>неужели ебаную жабу учить придётся
Жаба удобнее, чтобы 5/8 на дядю пахать. Стабильность и минимум приключений.
Аноним 23/03/19 Суб 17:32:40 1368902146
Почему если я пытаюсь преобразовать 6.0 в 6, то получаю 5, хотя с остальными числами всё в порядке? Как это исправить? Преобразую через цел_пер=(int)вещ_пер.
Аноним 23/03/19 Суб 17:40:40 1368904147
Аноним 23/03/19 Суб 18:17:05 1368917148
>>1368904
нам про представление вещественных чисел рассказывали на 2м курсе
ты еще на первом что ли?
Аноним 23/03/19 Суб 20:13:32 1368962149
>>1368917
Я на программиста учусь, на первом курсе сейчас. Мы по идее это прошли уже, на лабе в понедельник будет задание на C++ с массивами структур, бинарным файловым вводом/выводом и всё это будет через жопуфункции. F yf
Аноним 23/03/19 Суб 20:14:38 1368963150
>>1368917
Да, второй семестр. Это задание для добора баллов на допуск к пересдаче экзамена по ОАиП.
Аноним 23/03/19 Суб 20:34:10 1368973151
>>1368902
ты код кажи и конпилятр какой?
Аноним 23/03/19 Суб 20:49:13 1368978152
>>1368917
У 6 нет погрешности в флоат представлении.
Аноним 23/03/19 Суб 21:25:32 1368992153
Хеллоуворлдщик в треде.
Что делать если одна и та же программа компилируется в консоли с ошибкой, а в визуал студии без ошибок? Не выёбываться и учиться пока что только в рамках визуалстудии?
Аноним 23/03/19 Суб 21:48:42 1368999154
>>1368992
>программа компилируется в консоли с ошибкой
Гуглить код/текст ошибки, не?

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

>учиться пока что
Учиться нужно всю жизнь и все рано дураком помрешь
Аноним 23/03/19 Суб 22:04:32 1369009155
>>1368973

Вот, накодировал.
https://ideone.com/xYdWu6
Кто-нибудь, можете сделать это менее ковнокодисто? Там надо a.b превратить в a, b и сравнить что больше. Код выглядит так слёзотворно, потому что по условию задания нельзя было использовать что-то кроме stdio.h, а нельзя было также массивы и циклы, только условия и всё.
Аноним 23/03/19 Суб 22:40:30 1369033156
Аноним 23/03/19 Суб 23:09:34 1369053157
Здрасьте.

Нужно написать программу. Суть в чём, есть структура из переменных типа int, float, char. (её я уж сам заполню). Нужно записать структуру в бинарный файл. Препод творил такое:
--------------------------------------
//объявлял тут структуру А
char Mas[sizeof(A)];
//Сериализация сруктуры А
char ptr = (char)&A;
for (int i=0;i<sizeof(A);i++) Mas=*(ptr+i);
----------------------------------------------------------
Мне нужно сделать примерно то же самое, вот только у меня в структуре есть элементы типа char, и фокус с указателями на тип, я так понимаю, не прокатит.
Запись массива в бинарный файл я сам смогу оформить, а вот как мне массив заполнить этой структурой я толком не понимаю. памагити
Аноним 23/03/19 Суб 23:31:10 1369068158
>>1369053
>Препод творил такое
>вот как мне
>я толком не понимаю
Спросить у препода, даун.
Ты, блядь, чего ради бабло за обучение отдаешь, мудило?
Нормальный препод будет только рад объяснить даже внеурочное время.
А если нет, то это твоя задача, чтобы таких пидоров среди преподов не встречалось.
Аноним 23/03/19 Суб 23:44:25 1369076159
>>1369068
ну зачем оскорблять то сразу.
Препод сказал искать инфу в инете, и я с ним согласен, инфу нужно учиться искать самому, программирование это вам не русский язык.
Бабло за обучение я не отдаю. Препода вовлекать в этот вопрос не хочу
Аноним 24/03/19 Вск 00:09:25 1369087160
>>1369053
> сам смогу оформить, а вот как мне массив заполнить этой структурой я тол
Схуяли оно работать не будет? Обрати внимание что у тебя там указатели не на тип, а на чар. Та хуйня со всем работать будет (пока отсутвие стандартизированого ABI тебе хуйцом по губам не проведет). Естественно если у тебя в структуре указатели на что-то (в том числе виртуальные функции) то ты соснешь.
Аноним 24/03/19 Вск 00:18:27 1369092161
>>1369087
спасибо, буду пробовать, мб я не прав. С указателями туплю как обычно
Аноним 24/03/19 Вск 00:56:19 1369101162
Бля, как же меня уже заебал ебучий впф, сука. Впф - это просто кусок сырого непроработанного говна, где ничего не работает, где запилено дохуя говнофункций, которые нигде не используются или замещают друг друга. А впф плюс мввм - это вообще говно мочи. Есть, блять, удобный code behind, где ты спокойно запиливаешь все эвенты, но НЕТ, сука, нельзя так делать, ведь тогда швятой мввм не соблюдается и нужно запиливать все эвенты через злоебучие команды, которые работают через жопу и требуют миллиард дополнительных строк нечитаемого кода. А некоторые эвенты вообще хуй через команды сделаешь. И хули делать? Вот, кто, сука, решил, что чистый code behind - это хорошо? Его что, блять, по приколу что ли запилили?
Аноним 24/03/19 Вск 00:59:43 1369104163
>>1369101
Ебать я дебил, от баттхёрта тредом промахнулся.
Аноним 24/03/19 Вск 01:17:29 1369120164
1553379438746.png (629Кб, 1440x2560)
1440x2560
>>1369053
Ifstream file("file.txt");
file >> reinterpret_cast<char>(%переменная твоей структуры%);

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

Наоборот тоже верно - можешь считать с файла данные в преобразованную к char
структуру. Но это уже придется делать через метод read, а не через <<.
Посмотри методички работы винапи с изображениями - точно увидишь там такое.
Аноним 24/03/19 Вск 01:17:58 1369121165
Аноним 24/03/19 Вск 02:52:49 1369147166
Зачем писать на плюсах, если есть нативный интероп с растом? Пиздец просто, вы что, мазохисты?
Аноним 24/03/19 Вск 03:48:46 1369165167
Какую команду для ввода из файла использовать, чтобы в char можно было записывать пробелы и всё такое?
Аноним 24/03/19 Вск 03:51:27 1369167168
изображение.png (807Кб, 847x1200)
847x1200
Рейтаните.
Аноним 24/03/19 Вск 06:58:29 1369182169
>>1369167
>Сиддхартха Рао
Ну у тебя кароч откроется сахасрара и вишуддха, лингам вырастет на 2-3 см.
Ты издеваешься? В этой книженции в три раза меньше страниц чем в стандарте на кресты, а предполагается что она тебе еще что то доступным языком должна объяснять.
Аноним 24/03/19 Вск 12:14:29 1369255170
Аноним 24/03/19 Вск 15:00:03 1369320171
>>1365137 (OP)
Анон, сколько приблизительно времени придется потратить для изучения основ С++ (включая поверхностное изучение стандартных и популярных библиотек), дабы его знание можно было без страха добавлять в резюме как второстепенный язык?
У меня 3 года опыта Си, и вообще я всегда на хую вертел этот с++, но буржуи в своих вакансиях почему-то постоянно его требуют. Хуй знает, где они там хотят в эмбеддед его использовать может гуй ко всякому говну будут заставлять писать, но этот пробел в знаниях меня напрягает.
Аноним 24/03/19 Вск 15:35:48 1369335172
>>1369320
Месяцев шесть в проде, чтобы освоиться с дефолтными либами и новыми фичами языка. Но лучше потратить это время на java/scala/rust, потому что и приятнее, и зп больше. На джаве/скале бигдата HFT, на расте блокчейн и перекатываются из HFT, а так же прочие нуждающиеся в железобетонной стабильности/секьюрности.
Аноним 24/03/19 Вск 15:38:30 1369338173
>>1369320
>>1369335
Сорян, не увидел эмбедед в твоем посте. Тогда 2 месяца на подмножество фич, которое разрешено в embedded. (Простенькие классы, шаблоны, consexpr, модули)
Аноним 24/03/19 Вск 15:40:40 1369341174
>>1369335
>расте
Это ты тот дебил, который своим растом заебал си тред?
Аноним 24/03/19 Вск 15:42:03 1369342175
Аноним 24/03/19 Вск 16:31:07 1369375176
Аноним 24/03/19 Вск 16:44:18 1369383177
>>1369320
ну, щас типа тред что кресты в ембенд лезут
те не тупо новые компиляторы использовать, те приплюснутый си, а по новому кодить
типа отказываться от макросов, заменяя кодогенерацией на шаблонах и метапрограммированием и все такое
даже stl пытаются начать пользовать, тк уже реально писать работающие аллокаторы на новых стандартов, до этого они были по сути нерабочие
типа новая мув семантика позволит не проседать в производительности, но повышать уровень абстракции
и все такое
и прочее
но все упирается в тупость ембед кодеров, тк там хуевые зарплаты и надо дохуя знать в предметке, в электронике, на изучение языка времени не остается
вообще эмбед это чаще всего спагетти дрисня на макросах, write-only код
Аноним 24/03/19 Вск 17:32:31 1369403178
Извиняюсь что тупизна да еще и не по теме, но в ньюфагаче молчат, а в гугле я не могу найти:

Как в VS поменять ТОЛЬКО фоновый цвет редактора? Не тему, не полностью загружать цветовую настройку, а только цвет фона? Где блядь эта ебучая настройка? Уже по списку прокрутил просто все настройки цветов, просматривая любое совпадение по фону, и все равно нихуя не нашел.
Аноним 24/03/19 Вск 17:52:54 1369414179
>>1369341
>>1369342
>>1369375
Я 6 лет писал на C/С++, полгода назад устроился в проект, где новый код пишется только на Rust и интегрируется с легаси на C++. Так что да, я тот "дебил".

А ты можешь сходить нахуй и не семенить в двух тредах, поскольку у тебя ни опыта, ни знаний, если судить по твоим постам.
Аноним 24/03/19 Вск 17:56:50 1369416180
какой же я тупой
Аноним 24/03/19 Вск 18:02:57 1369420181
proof.jpg (212Кб, 347x963)
347x963
Аноним 24/03/19 Вск 18:05:37 1369421182
Сохраняю файлы, жму билд, жму дебаг, а изменения сделанные в коде не появляются.
Если почитстить билд или сделать ребилд и потом запустить дебаг все изменения срабатывают.
В решении несколько файлов.
Как это пофиксить, чтоб не надо было каждый раз чистить билд и хватало бы просто начать дебаг ну или хотябы просто чтоб билд обновлял код.
Только только вкатился в с++, юзаю вижуал студио.
Аноним 24/03/19 Вск 18:10:19 1369426183
Аноним 24/03/19 Вск 18:22:58 1369434184
>>1369426
Этож VS Code, но ладно я посмотрю наверное то же самое и для студии, спасибо
Аноним 24/03/19 Вск 18:23:12 1369435185
>>1369338
Собственно где-то так я себе это и представлял, спасибо

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

>там хуевые зарплаты
Ничем не хуевее остальных. Отрасль же большая, если не учитывать кузьмичей на заводе, то зарплаты очень даже на уровне по крайней мере я доволен
Аноним 24/03/19 Вск 18:47:48 1369452186
>>1369414
про "дебил на месте" написал другой мимоанон (я) единственно в замечание забавного подтверждения догадки "это ты тот дебил из Си треда?" боевым призывом "раст, сучки" обращенным к треду (ОП)
Аноним 24/03/19 Вск 18:49:29 1369453187
>>1369452
Растонаркоман, уходи
Аноним 24/03/19 Вск 22:59:14 1369610188
>>1369426
Визула Студия хочет моей смерти, не иначе. Я даже уже тулзу скачал чтобы темы ставить и редактировать и все равно не могу найти в каком параметре редактируется фон редактора, все что угодно, каждый пиксель, цвет значка закрытия вкладки при наведении, но не цвет фона редактируемой вкладки.
Аноним 24/03/19 Вск 23:46:57 1369630189
>>1369610
У меня похоже баг и у меня реально не меняется цвет фона, еще пара цветов игнорится, так что дело в другом видимо.
Аноним 25/03/19 Пнд 00:35:44 1369644190
68747470733a2f2[...].png (14Кб, 504x246)
504x246
Визжу как сучка, когда вспоминаю об этом
Аноним 25/03/19 Пнд 01:12:05 1369649191
>>1369644
по большому счету все это нагородили для обеспечения мув-семантики

Аноним 25/03/19 Пнд 01:26:12 1369652192
image.png (79Кб, 1240x553)
1240x553
Аноним 25/03/19 Пнд 01:34:06 1369655193
081.gif (2419Кб, 320x287)
320x287
giphy.gif (1360Кб, 200x179)
200x179
tenor.gif (130Кб, 220x196)
220x196
tenor2.gif (94Кб, 220x152)
220x152
>>1369652
Я буквально чуть ли не вручную менял все цвета у которых были указаны Background, видимо проебался и пропустил
Аноним 25/03/19 Пнд 01:34:49 1369656194
Аноним 25/03/19 Пнд 01:39:56 1369657195
>>1369403
в vs есть аддон добавляющий цветовые схемы вообще то
и там много уже популярных схем сделано
пользуйся
Аноним 25/03/19 Пнд 01:44:18 1369659196
>>1369657
Да его-то я как раз и скачал, и вот как раз фон нужно было сменить
Аноним 25/03/19 Пнд 09:49:52 1369723197
>>1369644
Раскуриваешь Вандервурда с Джосаттисом?
Аноним 25/03/19 Пнд 12:10:10 1369757198
>>1369723
есть 2 контейнера
в первом по старинке храняться указатели на объекты, не сами объекты, вставка работает быстро
во втором храняться сами объекты, тогда чтобы вставить новый объект в контейнер, нужно создать объект аж три раза - свободный объект, потом при передаче его в контейнер создасться фактический параметр, а потом уже из фактического параметра создадуют внутренний объект в контейнере
а мув-семантика позволяет всего лишь оптимизировать второй случай - будет не три, а два раза создан объект
и получается что хранить объекты по указателям все равно быстрей с точки зрения вставки

Аноним 25/03/19 Пнд 12:18:23 1369761199
Так, мужчины, перекатываюсь с С на плюсы (обратно).
Что почитать посоветуете, учитывая, что с базовым синтаксисом знаком, отличие указателя от ссылки знаю, но в классах и во всем таком после 99 года не шарю совсем?
Аноним 25/03/19 Пнд 12:51:25 1369770200
>>1369761
последнюю мейерса
второе издание шаблонов вандевурда

Аноним 25/03/19 Пнд 12:53:39 1369775201
>>1369761
>отличие указателя от ссылки знаю
кхе, кхе
то что типа ссылка всегда должна быть инициализирована все знают.. это не обсуждается
а ты лучше скажи мне другие отличия..


Аноним 25/03/19 Пнд 13:02:53 1369781202
>>1369775
Ну, как минимум, ссылке нельзя присвоить другой объект.
Аноним 25/03/19 Пнд 13:04:21 1369783203
>>1369757
Я надеюсь, ты сложные типы гоняешь через ссылки? К чему это все? Зачем по твоему конструкторы для move?
Аноним 25/03/19 Пнд 13:20:09 1369786204
>>1369761
>но в классах и во всем таком после 99 года не шарю совсем
С C++03 в кишках классов ничего не поменялось. Добавили наворотов в библиотеки, лямдбы, constexpr, вывод типов, memory model и все. Скоро добавят концепты и модули и по мелочи
Аноним 25/03/19 Пнд 13:28:20 1369787205
Аноним 25/03/19 Пнд 14:03:46 1369796206
>>1369787
и? ты изменил значение по ссылке, а не ссылку.
Аноним 25/03/19 Пнд 14:18:34 1369806207
>>1369781
давай еще
спускаемся в глубины с++!
Аноним 25/03/19 Пнд 14:29:12 1369812208
>>1369806
Да я че ебу? Ну был там способ сделать функцию lvalue возвращая ссылку.
Я потому и спрашиваю книжку, так как не знаю нихуя кроме сишной базы.
Аноним 25/03/19 Пнд 17:06:29 1369858209
ну, епт, давайте
кто еще про отличие ссылок от указателей знает
одним словом можно отписаться, чтобы хотя бы знать шо тут не одни студенты, нах
Аноним 25/03/19 Пнд 17:09:23 1369859210
тут подумал, вроде как получается что мув семантика - это не про то как оптимизировать производительность, а всего лишь еще один синтахсический сахарок, внезапно
так как все равно если вам нужно действительно быстро вставлять-заполнять какие-то контейнеры, то все равно вам придется хранить в контейнерах указатели на объекты, а не сами объекты
хотя, скорей всего, я чего то не понимаю
так как практики у меня не было уже несколько лет
Аноним 25/03/19 Пнд 17:46:49 1369879211
>>1369859
Классы - синтаксический сахарок. Можно в структурах хранить поинтеры на функции. C++ не нужен.
Аноним 25/03/19 Пнд 17:50:41 1369882212
>>1369879
когда дебил не знает про конструкторы и деструкторы
Аноним 25/03/19 Пнд 17:53:26 1369885213
>>1369882
Синтаксический сахарок. Вызывай мануально перед выходом из скоупа.
Аноним 25/03/19 Пнд 18:03:59 1369894214
>>1369859
> если вам нужно действительно быстро вставлять-заполнять какие-то контейнеры, то все равно вам придется хранить в контейнерах указатели на объекты, а не сами объекты
Ты время создания объектов учитываешь в "действительно быстро"? По одному создавать объекты гораздо медленнее, чем выделять память большим куском, как это делают контейнеры. Плюс доступ по указателю почти всегда медленнее, чем по значению.
Аноним 25/03/19 Пнд 18:08:07 1369900215
>>1369894
угу, спасибо за эти соображения
щас буду думать об этом

Аноним 25/03/19 Пнд 19:25:24 1369930216
а, похоже, понял
мы должны не только контейнер обеспечить операциями вставки с поддержкой мув-семантики, но и класс хранимого объекта обеспечить мув-конструктором
тогда магическим образом у нас будет не 3 раза создания объекта, а всего лишь один

Аноним 25/03/19 Пнд 19:26:55 1369931217
хотя остается другой вопрос - а именно когда необходимо сохранить возможноть динамического полиморфизма для объектов контейнера
тогда все равно нужно по старинке хранить указатели, а не сами объекты в контейнере
Аноним 25/03/19 Пнд 19:28:13 1369932218
>>1369879
не передергивай
одно дело то что язык си позволяет эмулировать ооп, другое дело когда возможности ооп встроены в язык на уровне семантики
Аноним 25/03/19 Пнд 19:48:38 1369937219
>>1369931
Тут всегда есть трейд-офф между скоростью работы и гибкостью в поведении. Что именно ты выбираешь зависит от задачи. Правда, если ты не научными вычислениями, эмбеддедом, хай-лоадом или (софт) риал-таймом занимаешься, то тебе обычно большая скорость и не нужна.
Есть ещё третий вариант, компромисс между этими двумя - хранить tagged union/discriminated union/variant и вручную диспатчить нужный метод.
Аноним 25/03/19 Пнд 20:48:01 1369973220
>>1369937
> tagged union/discriminated union/variant и вручную диспатчить нужный метод.
дык это ж олдскульный сишный подход к обеспечению динамического полиморфизма, не?
Аноним 25/03/19 Пнд 20:52:38 1369977221
а хотя в бусте каких только контейнеров нет!
и интрузитивные, и для хранения полиморфных объектов, и основанные на вариантах..
Аноним 25/03/19 Пнд 21:50:03 1370014222
>>1370012
Написал бы ты это лучше в растотред
Аноним 25/03/19 Пнд 22:46:33 1370047223
>>1369932
Да я шучу, не обижайтесь так
Аноним 25/03/19 Пнд 23:42:55 1370096224
Как правильно задать массив пар?

typedef pair<int,int> arrayofpairs[]
arrayofpairs a[5] // еггог declaration of arrayofpairs as multidimensional array must have bounds...
Аноним 25/03/19 Пнд 23:44:27 1370098225
>>1369973
Но у него есть несколько недостатков.
1)Размер всегда равен размеру самого большого элемента. Нагрузка как на память, так и на кеш.
2) Собственно, падение производительности из-за хождения по указателям в оригинальном случае у тебя переходит в падение производительности из-за постоянной проверки, какой "тип" сейчас обрабатываем. Бранч предиктор / бранч таргет предиктор - не магия. В обоих случаях это решается сортировкой по типу.
Но в 99% случаях это всё на фиг не сдалось, испоьзуй обычный контейнер.
Аноним 26/03/19 Втр 00:50:22 1370118226
>>1370096
ну дык ты пытаешься задать массив массивов вообще то..
и получается что у тебя первый массив (который в тайпдеф) неполного типа, без границ..
Аноним 26/03/19 Втр 01:03:53 1370120227
>>1367098
В нейронках важен не язык или фреймворк, а понимание нейронок.
Если ты в них ничего не понимаешь, то сделать что-то нормальное полностью сам ты не сможешь.
Аноним 26/03/19 Втр 08:53:55 1370206228
cpp-shooter.jpg (164Кб, 720x1280)
720x1280
Посоны, а вы в функциональном стиле пробовали в продакшене писать на плюсах? Я вот смотрю на всякие там линзы хуинзы и не могу представить что бы я все это в свои проекты бы пихал когда-нибудь. Монады применял пробовал, лучше код не стал. Расскажите как у вас.
Аноним 26/03/19 Втр 10:34:51 1370259229
>>1370206
Ты бы на Хаскеле такие вещи делал а не в плюсах.
>линзы
Как ты их через плюсовую систему типов собираешься профункторную оптику реализовывать?
>монады
Они хорошо представляются через конструктор типов. В плюсах конечно можно сделать "template <typename> typename M", но так делать не нужно.
Аноним 26/03/19 Втр 11:03:20 1370273230
>>1370259
>Ты бы на Хаскеле такие вещи делал
Я ж говорю в продакшене
>Как ты их через плюсовую систему типов собираешься
https://www.youtube.com/watch?v=7vyNRD1TRYs
>но так делать не нужно
Расскажи почему. Я еще не определился просто.
Аноним 26/03/19 Втр 11:51:43 1370294231
>>1370273
Ебать ты говноед, пиши на расте или скале, они как раз функциональные. Нет, буду жрать говно, буду на плюсах.
Аноним 26/03/19 Втр 12:04:04 1370302232
>>1370206
дык смотри: когда раньше делал метапрограммирование на старом 98 стандарте плюсов, ты вынужден был писать в функциональном стиле: понятия состояния у тебя в компайл тайм в принципе не было, итераций не было, поэтому заменяли это рекурсией, точкой останова в которой была точная специализация шаблона, условных конструкций (кроме оператора ?:) то же не было, поэтому использовали некое подобие паттерн матчинга - частичные специализаций шаблов и плюс принцип sfinae
а, внезапно, с новыми стандартами ты те же самые вещи можешь делать итерактивно, через value based подход
Аноним 26/03/19 Втр 12:07:33 1370306233
>>1370302
а да, так как состояния не было, то ты вынужден был вместо модификации какой-то сущьности порождать новую
типичный пример - операции со списком типов: добавление, удаление, сортировка и прочее не изменяли по сути существующий список типов, а каждый раз порождали новый
надо удалить элемент - порождаешь новый список но без этого элемента
надо добавить элемент - порождаешь новый список с этим элементом
Аноним 26/03/19 Втр 12:23:12 1370320234
>>1370306
Я это понимаю, но все-таки ФП это много различных концепций и иногда думается что можно было бы использовать их не только в компайл тайм. Постепенно же идет миграция различных подходов из в ФП в традиционные языки программирования, значит что-то за этим есть) Но вот что народ использует в реальных проектах из того что еще языком не поддерживается, но можно реализовать, пусть и через жопу. Кто использовал линзы, функторы, рэнжи и прочие страшные слова? Есть ли реальный выхлоп?
Аноним 26/03/19 Втр 12:25:48 1370323235
>>1370294
Они оба мультипарадигменные ащета. Ну и вообще я не пишу на каком-то языке, я решаю задачу. И для решения задачи подбираю лучшие из имеющихся инструментов и стараюсь использовать лучшие из выработанных практик. Так что не бомби там давай.
Аноним 26/03/19 Втр 14:10:29 1370371236
>>1370323
> И для решения задачи подбираю лучшие из имеющихся инструментов и стараюсь использовать лучшие из выработанных практик
>Функциональный стиль
>C++
Мань, давай ты не будешь строить из себя большого профессионала?
Аноним 26/03/19 Втр 14:22:51 1370375237
>>1370371
Залетный петушок не палится.
Аноним 26/03/19 Втр 14:27:56 1370378238
>>1370371
Друг, тебе в вебпараша-тред
Аноним 26/03/19 Втр 14:54:48 1370391239
>>1370273
>Расскажи почему
Во-первых, потому что не только система типов плюсов не предназначена для такого стиля, но и сам синтаксис. То, что в хаскеле f >>= g, в плюсах будет std::function<M<b>(const &a)> f, std::function... ну ты понел.
Во-вторых, потому шаблоны это... шаблоны. Твой чувак из видео показывал примеры того, что компилятор выводит в случае ошибки? У него бы 40 слайдов бы не хватило.
В-третьих, такие фокусы увеличивают время компиляции на n порядков и ухудшают перформанс в дебаг-сборке, в которой ничего не инлайнится.
В-четвёртых, плюсы всё-таки императивный язык. Если ты хочешь обратится к a.foo, бери и обращайся. Суть линз в их композиции. Нафига она тебе здесь? Ты пишешь энтерпрайзные круды и опердени на плюсах?
Аноним 26/03/19 Втр 15:16:12 1370407240
>>1370391
Спасибо за ответ. К моему списку аргументов прибавился твой второй пункт. Он, конечно, спорный, ибо высер компилятора и так ад и израиль, уже все свыклись. Но все же не стоит делать его хуже. Остальные аргументы я сам использовал в дебатах. Еще добавлял отсутствие саксес стори с этим ФП. Насчет перфоманса - он проседает и в релизе когда ты напрочь отказываешься мутировать структуры даже там, где это гарантировано валидно. Еще поддерживаемость кода сильно падает. Все-таки это не самые простые концепции, их не каждый студент поймет, а на плюсы и так тяжело искать людей с руками не из жопы. В общем я не вижу причин использовать вещи типа ФП в кровавом энтерпрайзе, но если мне покажут пруф концепт и саксес стори я готов изменить свое мнение и попробовать. За этим и пришел)
Аноним 26/03/19 Втр 15:46:59 1370423241
>>1370320
ну смотри, самое простое применение функциональных подходов в крестах, это правильное использование stl:
а именно ты же не используешь итерацию и условные операторы для работы с контейнерами, а ты делаешь выборку из элементов контейнера, удовлетворяющих определенным условиям а далее применяешь операцию к выбранным элементам
и то и другое задается функторами, а способов сделать это в крестах предостаточно - от указателей на функции, функторов на класса, до лямбд, причем вокруг этого есть необходимый инструментарий, всякие bind, mem_fun, обобщенные лямбды и прочее и прочее, включая и набор паттернов связаных с функторами на классах
тот же функциональный подход
даже если открыть любую книжку по stl, она будет полна функциональных подходов
так чтож, да
на практике в крестах функциональный подход используют для метапрограммирования тк там не было выбора по сути (до новых стандартов), а метапрограммирование уже используется для кодогенерации и для реализации некоторых паттернов программирования в статическом стиле (в отличие от подхода gof, в котором паттерны в основном реализовывались посредством агрегации и с использованием динамического полиморфизма, те они работали в рантайме по сути, в общем подход во многом был взят из симулы и смоллтолка)
и, второе применение функционального подхода - это правильная работа с stl и с любыми контейнерами и алгоритмами (тот же буст) что сделаны наподобие stl, а не дрисня из for по контейнеру с лапшей из if
Аноним 26/03/19 Втр 16:13:34 1370433242
Аноны зацените фичу 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"
Аноним 26/03/19 Втр 16:26:06 1370436243
>>1370433
>Позволяет еним в стринг перевести, получить названеи класса, переменой етк.
Но только в компайл тайм.
В кюте ты это можешь делать в рантайме, плюс узнавать имена вызывающего тебя метода, класса и т.п.
Аноним 26/03/19 Втр 17:33:48 1370464244
А я могу пихать сишный код в проект, если, например, аналогичный код на плюсах будет оверхедом по производительности? Я имею в виду, в сам код. Что то вроде "extern c".
Аноним 26/03/19 Втр 18:25:32 1370481245
>>1370436
На рантайме это тоже все работает.
Вызвающего метода нелья. Можно делать с буст::стек_трейс
Аноним 26/03/19 Втр 18:26:03 1370482246
Аноним 26/03/19 Втр 18:26:47 1370483247
Аноним 26/03/19 Втр 18:43:29 1370491248
>>1370483
Если нужна запередльная скорость, то вставки асма чем С получше будет
Аноним 26/03/19 Втр 19:20:33 1370509249
>>1369885
Хех, а потом у основной ньюфагов боли от утечек памяти, требования дать им сборщики мусора.
Аноним 26/03/19 Втр 19:21:50 1370510250
>>1369977
>на вариантах
Что-то они у меня вызывают боль при сопровождении.
Аноним 26/03/19 Втр 19:22:59 1370511251
>>1370096
using my_pair = std::pair<int, int>;
my_pair a[5];
Аноним 26/03/19 Втр 19:40:02 1370520252
>>1370096
std::array<std::pair<int, int>, 5> a;
Аноним 26/03/19 Втр 20:04:38 1370531253
>>1370520
Тогда уж
std::vector<std::pair<int, int>> a{ 5, std::pair<int, int>{} };
Аноним 26/03/19 Втр 20:23:40 1370535254
>>1370531
Тогда уж
std::vector<std::pair<int,int>> v {5,{{},{}}};
Аноним 26/03/19 Втр 20:30:54 1370538255
>>1370535
Вернее std::vector<std::pair<int,int>> v {5}; там и так все в ноль инициализируется.
Аноним 26/03/19 Втр 20:56:18 1370558256
>>1370538
Если у него массив не меняет размеры, то вариант анона с std:array предпочтительнее.
Аноним 26/03/19 Втр 22:06:06 1370588257
>>1370538
Вот это может не прокатить, мол, попытка инициализировать списком инициализации, а 5 - нихуя не пара интов.
Может, в случае со сложным типом внутри нормально компилятор разрулит, но когда я так пытался вектор чаров определить, он не съедал.
Аноним 27/03/19 Срд 00:08:36 1370638258
где можно про многопоточность почитать?а то даже матрицы не получается с ее использованием умножить
Аноним 27/03/19 Срд 00:29:05 1370646259
Какую книгу стоит прочитать чтобы побольше узнать где могут аозникать неочевидные неопределенные ситуации?
А то недавно я например с таким столкнулся: у меня был базовый класс с виртуальными методами, я от него унаследовал ещё один, переопределил там нужные методы и потом в статической памяти создал экземпляр этого класса. Всё было в целом хорошо, вот только указатель this(или обращение к какому-то члену, забыл уже) иногда давал неверное значение.
Аноним 27/03/19 Срд 01:19:20 1370655260
>>1370638
Какие матрицы? Если ты про 3D-графику, то там, кагбэ, сразу тысячи их, вектор3 на матрицу3x3 множится для каждого условного пикселя. Сразу говорю, я по этой части не Википедия, просто игрался OpenGL (GLSL).
Аноним 27/03/19 Срд 08:10:31 1370690261
>>1370646
Энтони Уильямс "Параллельное программирование на С++ в действии"
Аноним 27/03/19 Срд 08:11:14 1370691262
Аноним 27/03/19 Срд 20:37:44 1370991263
Я хочу сделать функцию-член класса, которая должна обрабатывать только указанные свойства класса.
То есть есть список свойств класса, а в вызове функции я указываю только некоторые из них, а другие останутся нетронутыми. Причем в вызове функции могут быть любые свойства класса и любое количество.
Такое вообще возможно реализовать, или это маняфантазии???
Аноним 27/03/19 Срд 20:58:07 1371003264
>>1370991
Храни свойства объекта в ассоциативном массиве.
Аноним 27/03/19 Срд 21:03:26 1371005265
>>1370991
На вскидку в голову приходит или цепочка методов аля встроенный дсл, или именованные аргументы как тут https://www.fluentcpp.com/2018/12/14/named-arguments-cpp/ но полностью как ты хочешь не знаю как реализовать.
Аноним 27/03/19 Срд 21:05:14 1371008266
>>1370991
>есть список свойств класса
Если у тебя действительно есть такой список, то не составит труда запилить отдельный список только тех свойств, которые нужно изменить, пробежаться по такому списку тоже много ума не надо.

Соответственно твоя функция-член должна принимать в качестве параметра такой список.
Аноним 27/03/19 Срд 21:06:30 1371010267
>>1370991
>свойства класса
type traits что ле? какие - бустовые или с++11? о чем ты там бормочешь вообще?
Аноним 27/03/19 Срд 21:16:35 1371016268
говорят, что секс - это все же парный танец и не стоит об этом забывать
Аноним 27/03/19 Срд 21:17:09 1371017269
а еще японцы раньше говорили, что девушка, не умеющая танцевать и плавать, не годится и для любви
Аноним 27/03/19 Срд 21:20:23 1371018270
>>1370510
о, расскажи, правда интересно
какие подводные камни возникают?
Аноним 27/03/19 Срд 21:28:53 1371025271
>>1371005
А хотя не, знаю, в кюте же есть рефлексия. Можно в рантайме получить список пропертей класса и работать с ними.
Аноним 27/03/19 Срд 21:31:12 1371029272
>>1371025
Можно ссыль на документацию кутя по этой теме плиз?
Аноним 27/03/19 Срд 21:32:07 1371031273
>>1371010
Я имел в виду переменные, принадлежащие классу.
Аноним 27/03/19 Срд 21:34:38 1371033274
>>1371017
Не знаю насчет плавать, но насчет танцевать - это реально. Если тянка хорошо двигается в танце, значит у нее хорошая пластичность и мышцы хорошо развиты. Значит и в постели хорошо будет двигаться. Это и к кунам относится кста.
Аноним 27/03/19 Срд 21:40:43 1371038275
>>1371033
теоретик детектед. Если все хорошо с возбуждаемостью, то в 9 случаях из 10 секс - это долбежка с произвольной скоростью, где развитость мышц до пизды.
Аноним 27/03/19 Срд 21:48:40 1371044276
изображение.png (2845Кб, 1920x960)
1920x960
Аноним 27/03/19 Срд 22:04:33 1371056277
>>1371038
Ну я имел в виду, что хорошо танцующая тян не будет бревном, вот что.
Аноним 27/03/19 Срд 22:25:34 1371118278
>>1371114
Конкретнее опиши проблему
Аноним 28/03/19 Чтв 09:12:03 1371280279
>>1371018
При отладке boost::variant слишком много всяких оберток приходится проходить. В std::variant пишут - поменьше. Надо будет аккуратно перенести.
Аноним 28/03/19 Чтв 14:17:27 1371404280
изображение.png (4Кб, 327x298)
327x298
изображение.png (8Кб, 536x403)
536x403
>>1365137 (OP)

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

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

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

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

Pragma parallel пробовал, не то.
Аноним 28/03/19 Чтв 14:56:49 1371416281
>>1371404
> if (Array「 i 」「 j 」 = 16)
В цпп компиляторы до сих пор не завезли предупреждения для таких случаев?
Аноним 28/03/19 Чтв 15:05:36 1371424282
>>1371416
Всё таки пропустил, смысл в сравнении, а вообще смысл в некой проверки, забыл добавить, что в моим примере речь только об чтении неких данных и сравнении их с чем-то.
Аноним 28/03/19 Чтв 15:10:32 1371427283
>>1371404
>Каким образом узнать скольки ядерный процессор установлен на ПК, на котором запускается программа?
Лучше используй std::thread::hardware_concurrency - это сколько реально ты сможешь заполучить.
Аноним 28/03/19 Чтв 15:13:28 1371433284
>>1371427
А как это работает?

Я правильно понимаю, что перед этим мне необходимо создать некоторое количество потоков? А потом уже запускать массивы в этих потоках?
Аноним 28/03/19 Чтв 15:47:39 1371452285
>>1371416
>для таких случаев
есть статические анализаторы
Аноним 28/03/19 Чтв 21:16:29 1371619286
Как в C++ удалить строку из файла? Есть ли функция, которая в находясь в цикле удаляет каждый символ, начиная с места, на котором стоит каретка до, например, символа переноса строки?
Аноним 28/03/19 Чтв 22:06:08 1371635287
image.png (160Кб, 509x367)
509x367
Был тут недавно на собеседовании где спросили у меня такое:
есть структура с несколькими полями, которая выступает в качестве ключа в map'e. Как из этой map'ы получить значение по одному из полей ключа(который структура)?
Аноним 28/03/19 Чтв 22:13:36 1371638288
>>1371635
У итератора map есть first и second.
Тебе нужен first.
Аноним 28/03/19 Чтв 22:17:55 1371640289
>>1371619
Что для тебя знаудаляет?
Аноним 28/03/19 Чтв 22:18:25 1371641290
Аноним 28/03/19 Чтв 22:18:28 1371642291
>>1371638
>>Тебе нужен first.
@
МЫ ВАМ ПЕРЕЗВОНИМ
Аноним 28/03/19 Чтв 22:52:16 1371656292
Аноним 28/03/19 Чтв 23:02:20 1371665293
>>1371635
Ну короч тебе нужно вычесть оффсет поля внутри структуры из фактического адреса поля и получить базовый адрес структуры-ключа. Я хуй знает как это сделать, но уверен, что так можно. Это же си++.
мимо жаба
Аноним 28/03/19 Чтв 23:17:43 1371670294
>>1371635
Проще ебало разбить тому, кто так в продакшене пишет
Аноним 28/03/19 Чтв 23:19:13 1371671295
>>1371670
Это жи собес. Тут не важно кто как пишет в продакшн, тут главное обоссать петушка и выпиздить его нахуй.
Аноним 28/03/19 Чтв 23:21:53 1371673296
>>1371635
Вот этот прав кстати >>1371638

for (auto const & keyVal : map)
{
\t if (keyVal.first.m_field == to find)
\t\t vals.emplace(keyVal.second);
}
Аноним 28/03/19 Чтв 23:53:40 1371687297
>>1371638
>>1371673
Короче хз, наверное не так объяснил. На примере будет нагляднее.

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];
Аноним 28/03/19 Чтв 23:59:48 1371689298
>>1371687
Не explicit конструкторы наверное нужно использовать
Аноним 29/03/19 Птн 00:09:29 1371695299
>>1371689
Во я дурак, не дочитал
Аноним 29/03/19 Птн 00:48:42 1371705300
>>1371689
A a1{1,2};
A a1{2,3};

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

mp.find(2); <--- Ничего не найдет, а они хотели чтобы нашло
Аноним 29/03/19 Птн 01:16:58 1371715301
Я уже всю голову сломал, выручайте.
Короче, такая задача.
> Дан символ C и строки S и S0. После каждого вхождения символа C в строку S вставить строку S0.
Стринг еще не учили, исключительно чар. Как это сделать? Объясните на пальцах как вставить строку в строку согласно условию.
Аноним 29/03/19 Птн 02:44:28 1371723302
Аноним 29/03/19 Птн 07:40:23 1371755303
>>1371635
По умолчанию std::map использует оператор < типа ключа для сравнения ключей.
Ты можешь изменить сам оператор < или, что лучше, предоставить мапе новую функцию сравнения.
Аноним 29/03/19 Птн 08:15:46 1371760304
>>1371687
А разве так вообще можно? Ведь 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, что должно по идее вызвать ошибку при компиляции. Возможно нужна какая-то шаблонная магия, но я хз, т.к. сам вкатывальщик.
Аноним 29/03/19 Птн 08:48:24 1371777305
>>1371760
По идее у структуры его перегрузить оператор сравнения.
Аноним 29/03/19 Птн 08:49:27 1371779306
>>1371777
Для типов int и double. Но это только мысля, проверять с утра не хочется.
Аноним 29/03/19 Птн 09:05:16 1371784307
>>1371777
>>1371779
Я проснулся, полная идея. Там же будет приведение к типу Key
Аноним 29/03/19 Птн 09:05:33 1371785308
Аноним 29/03/19 Птн 09:15:41 1371791309
>>1371635
>>1371638
Видишь, я тебя совсем не верно понял сначала.

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

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

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

Короче, нахуй бы ты их послал с такими предложениями. Вопросы на сообразительность и вопросы на говнокод - разные вещи.
Аноним 29/03/19 Птн 09:17:16 1371792310
>>1371784
Хотя не полная, надо перегрузить оператор <. Но опять будет ограничение - поиск по одному из полей.

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;
}
};
Аноним 29/03/19 Птн 09:24:12 1371794311
>>1371792
Можно передать в мапу произвольную функцию сравнения без перегрузки оператора самой структуры.
Аноним 29/03/19 Птн 10:10:32 1371818312
>>1371791
Ну так и случилось, только послали меня )
Аноним 29/03/19 Птн 10:22:06 1371828313
>>1371723
>>Стринг еще не учили
>>std string insert
В глаза долбишься, маня
Аноним 29/03/19 Птн 10:30:05 1371832314
>>1371715
А выделение памяти динамически проходили?
Аноним 29/03/19 Птн 10:48:20 1371845315
>>1371715
>Стринг еще не учили
Тут 90% не учили в универах метапрограммирование, лямбды и рвалуе, но все равно их используют, улавливаешь?
Аноним 29/03/19 Птн 10:53:17 1371848316
>>1371845
Может имелось ввиду string не использовать
Аноним 29/03/19 Птн 11:07:01 1371853317
>>1371832
>>1371845
>>1371848
Да мне бы с чарами разобраться сначала, зачем мне использовать то, что я не понимаю? Имелось ввиду именно работа с чарами. Выделение памяти проходили. Вот я не пойму, сколько же мне надо адресов дополнительных сохранять, что б потом из кусочков собирать результирующий массив? Или это совсем не так делается? Я додумался пока только до такой идеи: идем по массиву, натыкаемся на искомый символ, получаем его адрес, в исходный массив копируем фрагмент с 0 по элемент с этим символом, прицепляем следом вставляемую строку, и к этому всему прицепляем кусочек, что начинается с этого символа. Но тут опять же не пойму что делать, если будет еще и второе вхождение символа, и третье и т.д. Я вообще в том направлении мыслю, или всё совсем не так делается?
Аноним 29/03/19 Птн 11:12:33 1371854318
>>1371853
>0 по элемент с этим символом
По предыдущий элемент, то бишь.
Аноним 29/03/19 Птн 11:21:02 1371856319
>>1371853
Мыслишь правильно. Несколько замечаний. Когда ты находишь нужный символ, создавайте новый массив char с размером длине строки до этого символа + длина вставляемой строки + длина строки после этого символа. Дальнейший поиск продолжаешь уже в этом новом массиве с позиции после вставки. Ну, в общих чертах так
Аноним 29/03/19 Птн 11:28:05 1371857320
Тебе надо выделять отдельный массив R (result) куда ты будешь копировать. Плюс 1 указатель на текущую позицию в R.
>>1371853
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.
Аноним 29/03/19 Птн 11:34:51 1371859321
>>1371715
Создаешь третью строку, большую, чтобы на всё хватило, и копируешь в неё куски остальных строк по порядку.
Аноним 29/03/19 Птн 11:38:16 1371861322
>>1371856
>>1371857
>>1371859
Господи, как тут можно не запутаться? Спасибо вам, буду пробовать.
Аноним 29/03/19 Птн 11:41:41 1371862323
>>1371861
Use libraries, Luke! Ну и "тяжело в учении, легко в бою".
Аноним 29/03/19 Птн 12:21:30 1371880324
>>1371656
Очень смешно, даунич. Хотя нет, не смешно. У нас тут кресты, а не уроки русской письменности. Внезапно, понятия из бытового языка не соотносятся один к одному с техническими. Уточнять надо, надо вычитать строку (read позицию за ближайший \n кинуть), или речь о редактировании самого файла.
Аноним 29/03/19 Птн 15:03:15 1371936325
>>1371861
Парни, нашел код вот по этой задаче в интернете.
>> Дан символ 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;
}

Может кто дать комментарии по шагам, уж сильно отличается это решение, от того, что пытался сделать я. Не совсем понимаю.
Аноним 29/03/19 Птн 15:09:13 1371939326
>>1371936
>Дан символ C и строки S и S0. После каждого вхождения символа C в строку S вставить строку S0.
S.replace(QString(C),QString(C) + S0);
не благодари.
Аноним 29/03/19 Птн 15:20:22 1371940327
>>1371939
Да ёптить. Со стрингами не надо мне.
Я вот не пойму куда я записываю тут s[j+s0len]=s[j]; Если j=slen, то я в конце строки, правильно? И куда я попадаю после прибавления длины вставляемой строки? Что это за элемент такой [j+s0len]?
Аноним 29/03/19 Птн 15:21:36 1371941328
>>1371940
А следующий цикл for я вообще не пойму что делает.
Аноним 29/03/19 Птн 17:05:51 1371979329
>>1371936
Не компилил, но на вид хуйня какая-то
Аноним 29/03/19 Птн 17:27:29 1371985330
Темплейты зло или гуд? Как в них вкатиться, что по производительности?
Аноним 29/03/19 Птн 17:35:15 1371986331
>>1371985
Ну, на них вся STL построена
Аноним 29/03/19 Птн 17:37:15 1371988332
01553849036.png (51Кб, 621x435)
621x435
>на c++ можно писать безопасно, смартпоинтеры, RAII, статические анализаторы
>95% уязвимостей из-за ошибок при работе с памятью
Аноним 29/03/19 Птн 17:37:47 1371989333
>>1371985
Гуд (ты же пользуешься стл?), читай книжки и пробуй, компайл тайм.
Аноним 29/03/19 Птн 17:38:56 1371991334
Аноним 29/03/19 Птн 17:42:49 1371995335
image.png (502Кб, 1280x720)
1280x720
Аноним 29/03/19 Птн 17:48:08 1371998336
Аноны, помогите с алгоритмом для реализации системы тегов. В приложении нужна возможность добавлять обьекту теги, а потом быстро искать по совпадениям 1 или нескольких тегов. Это мапу использовать, или есть что-то более быстрое?
Аноним 29/03/19 Птн 17:59:55 1372000337
>>1371998
такие штуки разве не ass queue el датобазой лучше делать?
Аноним 29/03/19 Птн 18:01:16 1372001338
>>1372000
Не знаком еще с базами данных, видимо пришло время.
Аноним 29/03/19 Птн 23:16:18 1372122339
Подскажите краткий экскурс для человека уже умеющего в программирование. Прочитал Страуструпа года полтора назад, но уже все забыл, с тех пор писал на жабе и шарпе, всякие указатели и адреса еще понимаю, а вот :: через слово и прочий местный синтаксис совершенно непонятен.
Аноним 29/03/19 Птн 23:18:16 1372124340
>>1372122
Пробеги глазами страуструпа опять, в чем проблема?
Аноним 29/03/19 Птн 23:23:41 1372126341
>>1372124
Я и есть страуструп, брат.
Аноним 29/03/19 Птн 23:24:41 1372127342
>>1372126
Когда концепты подвезёшь? Алсо, скажи, чтобы метаклассы не принимали. Не нравится мне всё это направление.
Аноним 29/03/19 Птн 23:25:17 1372128343
Анончики, в андроид NDK проекте на SDL2 как всякие glBegin и прочие вызывать?
это подключил:
#include <SDL.h>
#include <SDL_opengl.h>
это прописал:
LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES
LOCAL_LDLIBS := -lGLESv1_CM -lGLESv2 -llog
но все равно на них ругается, что undefined reference to
Аноним 29/03/19 Птн 23:35:21 1372132344
>>1372124
1к+ страниц пробегать такое себе удовольствие, мне б выжимку страниц на 20.
Аноним 29/03/19 Птн 23:41:19 1372133345
Кто напишет мне код для этой программы за 200 рублей на Киви? Нужно написать до утра.

Создайте программу, заполняющую массив из n элементов случайными целыми числами, находящимися в интервале от -10 до 30. Выведите на экран созданный массив и определите число инверсий. Инверсией называется пара элементов, в которой большее число расположено слева от меньшего
Аноним 29/03/19 Птн 23:55:22 1372136346
>>1372133
Иди нахуй. Зачем ты поступал в технический вуз на пиздомистра, если можешь такую фигню сделать самостоятельно. Лох.
Аноним 29/03/19 Птн 23:58:45 1372139347
>>1372136
Всё? Самоутвердился чмошник? А теперь иди нахуй.


Аноним 30/03/19 Суб 00:00:48 1372140348
>>1372133
А может просто сядешь и подумаешь, чем на харкаче клянчить? Задача в два счёта решается.
Аноним 30/03/19 Суб 00:03:29 1372141349
>>1372139
Лох, ты? Сам понимаешь, ты - лох. Ты будешь лохом всю жизнь. Ты настолько лох, что готов купить лабу на ДВАЧАХ. На дваче. Купить лабу. Ты лох. Ты будешь учиться в своей шараге и даже первачи будут считать тебя лохом. Потом ты напишешь дипломный проект и станешь дипломированным лохом. Придёшь устраиваться на работу программистом, но тебя заставят носить кофе шефу. Потому что ты лох.
ты лох.
смирись с этим.
Аноним 30/03/19 Суб 00:06:16 1372142350
>>1372140
>чем на харкаче клянчить?

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

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

Ну если такой умный, то напиши за пару минут. На 200 рублей пива себе купишь. Хуле ты такой злой? Ну всякое в жизни бывает. Разные ситуации. Ты например живешь с мамкой и она тебя надзирала лишь бы мой сычина выучился на пограмиста! А у меня другая ситуация в жизни.
Аноним 30/03/19 Суб 00:08:47 1372143351
>>1372141

>Лох, ты? Сам понимаешь, ты - лох. Ты будешь лохом всю жизнь. Ты настолько лох, что готов купить лабу на ДВАЧАХ. На дваче. Купить лабу. Ты лох. Ты будешь учиться в своей шараге и даже первачи будут считать тебя лохом. Потом ты напишешь дипломный проект и станешь дипломированным лохом. Придёшь устраиваться на работу программистом, но тебя заставят носить кофе
Аноним 30/03/19 Суб 00:09:31 1372144352
>>1372143
>эти дрожащие ручонки
Хаха.
Аноним 30/03/19 Суб 00:10:20 1372145353
>>1372142
>Ну всякое в жизни бывает
>А у меня другая ситуация в жизни
Ты это специально делаешь?
Нахуй съеби, гнида.
Аноним 30/03/19 Суб 00:11:54 1372146354
1544213441234.jpg (279Кб, 1492x1050)
1492x1050
>ITT
Аноним 30/03/19 Суб 00:14:49 1372148355
>>1372145
Что? За живое задел?
Аноним 30/03/19 Суб 00:20:37 1372152356
>>1372141
А что такого собственно? Сам тут покупал лабы и экз по телеграмму с анончиком. Скоро буду защищать диплом. И вообще жизнь в кайф. А ты наверное злой такой сидишь. За ручку держался хоть? Или ты все время на порно с детьми фапаешь, да код свой пишешь, если ты вообще прогер лол, а не балабол.
Аноним 30/03/19 Суб 00:21:20 1372154357
>>1372142
Тут господа получают 300к в месяц, они за 200р даже в носу не поковыряют. Твоя идея изначально обречена на провал. Лучше одногруппнику пиво поставь за лабу.
Аноним 30/03/19 Суб 00:23:06 1372157358
>>1372154
>тут господа получают 300к в месяц

Проиграл

мимо
Аноним 30/03/19 Суб 00:23:11 1372158359
>>1372133
#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;
}
Аноним 30/03/19 Суб 00:24:15 1372160360
Аноним 30/03/19 Суб 00:25:30 1372161361
>>1372158
Спасибо друг. Подумаешь люди жизнью обиженные сверху высераются. Лол, на двачах со школьниками сидят >300к в наносек ага.

Кидай Киви няш.
Аноним 30/03/19 Суб 00:27:20 1372162362
image.png (1555Кб, 1024x631)
1024x631
Аноним 30/03/19 Суб 00:31:04 1372163363
>>1372162
Все равно целую тебя в пупок. От этого понимаешь, что не все такое агрессивное быдло и школьники здесь остались.
Аноним 30/03/19 Суб 00:31:41 1372164364
>>1372158
>math.h, а ни одной функции из него не используешь
>Не сбросил генератор случайных чисел
>Вместо вектора используешь интовый массив, который явно не удаляешь, да ещё и размер случайно определяешь, а не принимаешь аргументом функции
>Не выполняешь условие задачи на x in [-10; 30]

>>1372133
Учти это, когда будешь переписывать его код.
Аноним 30/03/19 Суб 00:34:02 1372165365
>>1372164
И не забудь сделать переменную для подсчёта инверсий локальной, вынеси все в отдельную функцию и не проебись с [index], которые потерялись.
Аноним 30/03/19 Суб 00:46:01 1372166366
Аноним 30/03/19 Суб 00:54:32 1372170367
>>1372163
Так ты же и есть то самое быдло и школьник первокурсник
Аноним 30/03/19 Суб 00:55:39 1372171368
>>1372164
>>1372164
>>1372164
Спасибо, забыл что rand псевдослучайные числа генерирует.
Онлайн компилятор попросил не удалять через delete вот и убрал
Аноним 30/03/19 Суб 01:07:19 1372173369
>>1372166
#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;
}
Аноним 30/03/19 Суб 01:08:50 1372174370
>>1372164
Дядя помоги, перепиши rand на srand или randomize cpp.sh не дает.
Тот кто написал это
Аноним 30/03/19 Суб 01:19:04 1372179371
>>1372170
Я хотя бы не ракую и не веду себя как агрессивное животное. Очевидно же что ты очкарик ебаный, сидишь дома за компом и всех ненавидишь.

Это семён >>1372174
>>1372173
Еще раз спасибо.
Аноним 30/03/19 Суб 01:24:44 1372180372
>>1372179
>семен
значение знаешь? подсказка: нет, это не когда кто-то за тебя запостил один пост.
>не ракую
как ты не ракуешь? ты же чистый рак
Аноним 30/03/19 Суб 01:25:52 1372181373
>>1372180
>ты же чистый рак
По каким параметрам судишь?
Аноним 30/03/19 Суб 01:30:15 1372182374
>>1372179
Ероха в треде, отступаем.

хаха съеби с моих двачей, зелень
Аноним 30/03/19 Суб 01:35:18 1372183375
>>1372182
>с моих двачей
>называет кого-то зеленью

Все ухожу ухожу.
Аноним 30/03/19 Суб 12:28:13 1372279376
Интересно, как скоро он поймет, что те помои, которые ему кинули, вообще не выполняют поставленную задачу?
Аноним 30/03/19 Суб 12:37:04 1372284377
>>1372279
>как скоро он поймет
>скоро
>он
>поймет
Евгений Ваганыч, Вы сегодня в ударе.
Аноним 30/03/19 Суб 14:19:54 1372326378
1542187652934.png (11Кб, 427x124)
427x124
154218765293.png (10Кб, 423x131)
423x131
Поясните за built-in array. Вот с обычными указателями всё понятно: находится в одном месте в памяти, указывает на другое в место в памяти (в котором хранится какое-то значение). А как массив может одновременно в одной ячейке хранить и свой собственный адрес, и значение первого элемента?
Аноним 30/03/19 Суб 14:23:15 1372328379
>>1372326
a[0] это сахар для <звездочка>(a + 0)
Аноним 30/03/19 Суб 14:32:24 1372330380
сап двач, помогите
есть файл, в котором в бинарном виде записано 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 элементов масисва, но что-то работает не так уж точно(
Аноним 30/03/19 Суб 14:37:29 1372335381
>>1372328
Это понятно, не в этом вопрос был.
Аноним 30/03/19 Суб 15:04:19 1372341382
>>1372326
Он хранит не значение первого элемента, а указатель на него, который ВНЕЗАПНО и есть указатель на начало массива.
Аноним 30/03/19 Суб 15:27:26 1372343383
>>1372341
А значение-то где хранится? Там же ведь. &a[0] даёт тот же самый адрес. Как такое может быть, что в одной области памяти хранится одновременно и адрес, и значение?
Аноним 30/03/19 Суб 15:35:00 1372344384
>>1372343
Значение хранится по адресу первого элемента.
a == (a+0) == a[0]

мимикрок
Аноним 30/03/19 Суб 15:35:32 1372345385
>>1372344
<звезда>a == <звезда>(a+0) == a[0]

Аноним 30/03/19 Суб 15:45:12 1372348386
>>1372343
Адрес хранится в a, по этому адресу находится область памяти, в первой ячейки которой находится некоторое значение, которое ты можешь получить с помощью a[0] или разыменованием.

> &a[0] даёт тот же самый адрес
Почему там должен быть другой адрес?
Аноним 30/03/19 Суб 16:00:50 1372350387
Нужно вызвать функцию в заранее выделенной памяти другого процесса. То есть что-то типо:
Выделяю память в блокноте, записываю туда свою функцию, вызываю свою функцию внутри блокнота.
Возможно такое вообще ?
Аноним 30/03/19 Суб 16:06:13 1372354388
123.png (2Кб, 437x170)
437x170
32.png (1Кб, 405x145)
405x145
>>1372345
>>1372348
То ли вы не понимаете, то ли я.
Вот есть указатель foo, который указывает на переменную bar. Тут всё понятно, foo имеет значение 1776 (что является адресом переменной bar), но сам он находится по адресу 324. Разыменовать foo – значит получить значение ячейки под адресом 1776.

А что с массивом a? Он имеет значение 1776 (что является адресом первого элемента массива), но ведь он и сам находится в этой ячейке! Разыменовать a – значит получить значение ячейки под адресом 1776 – там находится значение 1776! Как в одной и той же ячейке может храниться и адрес, и значение?
Аноним 30/03/19 Суб 16:14:44 1372356389
>>1372354
Весь массив не находится в одной ячейке памяти. Название массива это указатель на первый элемент как и указатель для обычной переменной, а [] нужен для упрощения работы с массивом.
Аноним 30/03/19 Суб 16:18:02 1372359390
image.png (12Кб, 317x350)
317x350
image.png (6Кб, 234x189)
234x189
Аноним 30/03/19 Суб 16:29:19 1372362391
>>1372359
Всё, понял, спасибо.
Аноним 30/03/19 Суб 17:14:45 1372385392
>>1372350
угу
такое делается различными способами инжекта..
какой щас наиболее популярный с учетом того что нахуевертили в новых операционках, я не знаю, тк отошел от дел
Аноним 30/03/19 Суб 17:17:17 1372386393
>>1372328
это упрощенное объяснение, и если подходить с точки зрения теории яп, неверное

Аноним 30/03/19 Суб 17:43:42 1372389394
Пролистал тред и поржал с того, какие же вы все тупые.

Мимо g17 яндекс-кун
Аноним 30/03/19 Суб 18:48:12 1372410395
>>1372389
Уроки сделать не забудь маня.
Аноним 30/03/19 Суб 19:14:19 1372414396
>>1372279
Я вас слушаю ты знаешь куда тебя ебали
Аноним 30/03/19 Суб 23:49:51 1372531397
>>1372389
Половину зарплаты выдают нумыжеяндексом тебе, а тупые мы? Лол.
Аноним 31/03/19 Вск 01:57:10 1372552398
>>1365639
Ролл. (Правда я новичок и поэтому сразу же после этого последует вопрос)
Аноним 31/03/19 Вск 02:51:48 1372558399
>>1372389
>яндекс-кун
такси или еда?
Аноним 31/03/19 Вск 07:42:58 1372573400
Поясните за inline функции.
Известно, что это лишь рекомендация для компилятора, и он может её проигнорировать и не делать функцию inline.
Также известно, что компилятор сам старается оптимизировать код, и делает некоторые функции inline самостоятельно.
Вопрос: нахуя тогда объявлять функции inline?
Аноним 31/03/19 Вск 07:45:25 1372574401
Я правильно понимаю, что это рудимент, и современному программисту надо забыть про inline?
Аноним 31/03/19 Вск 08:28:24 1372586402
Аноним 31/03/19 Вск 10:12:42 1372608403
Аноним 31/03/19 Вск 11:56:07 1372631404
Аноним 31/03/19 Вск 13:05:28 1372665405
Аноним 31/03/19 Вск 15:33:39 1372742406
>>1372573
а я вот не понимаю другого: почему можно взять адрес inline функции? получается, что даже если код фии встраивается в некоторые места, но она все равно создается при этом
и уже поэтому можно брать ее адрес, вызывать по указателю и прочее..

Аноним 31/03/19 Вск 16:23:01 1372765407
>>1372742
До компиляции никакая функция еще не является встроенной.
Вангую, что компилятор не станет инлайнить, если увидит, что используется адрес функции.
Аноним 01/04/19 Пнд 00:30:45 1372980408
>>1372389
Давай выкатывайся, маня.

мимо кор кернель дев 8к зеленых
Аноним 01/04/19 Пнд 02:24:22 1373009409
>>1372980
возьми на работу. Мимо виндовый кернельщик 5к зеленых.
Аноним 01/04/19 Пнд 08:07:57 1373053410
>>1372573
На inline функции не распространяется правило одного определения, тоесть у тебя могут быть объявлены две функции с одной и той же сигнатурой, при условии что у них есть модификатор inline. Естественно эти функции должно быть одинаковыми иначе хуйня получится.
01/04/19 Пнд 08:09:44 1373054411
>>1373053
> объявлены две функции
имелось ввиду определены
Аноним 01/04/19 Пнд 08:47:44 1373062412
Дочитываю Прату и понимаю, что мне надоели упражнения, которые он предлагает, они скучные, что делать после прочтения, куда двигаться дальше?
Хочется написать что-то полезное, что можно "пощупать", но понимаю, что скилла не хватает.
Аноним 01/04/19 Пнд 13:14:58 1373141413
>>1373062
Напиши чето сложнее и подсматривай
Аноним 01/04/19 Пнд 17:15:35 1373275414
>>1372742
в общем, чутка почитал
встраиваются некоторые вызовы функции, сама то функция создается всегда, поэтому ее и адрес можно взять и вызвать по указателю
причем встраивание может осуществляется как на этапе компиляции, так и на этапе компоновки

а на счет правила odr по видимому происходит так: компоновщик оставляет в машкоде одно определение inline функции, а остальные выкидывает
а для обычных функций он бы заорал что есть несколько определений функции с одной сигнатурой
то тут не разбирался, это типа догадки
Аноним 01/04/19 Пнд 17:21:28 1373279415
почитываю тут старые книжечки саттера
интересно, что есть некоторые возможности языка, которые прописаны в стандарте, но оказались непригодными к использованию
например, export шаблонов вместо модели включения: некоторые компиляторы таки их реализуют, но на практике никто их не использует, у саттера же долго и обстоятельно объясняется почему
та же ситуация и со спецификацией исключений: в стандарте есть, но на практике оказалось нехорошей вещью
Аноним 01/04/19 Пнд 20:27:24 1373349416
Сисяны, как можно проверить создается экземпляр шаблона или нет?
Аноним 01/04/19 Пнд 20:34:36 1373356417
1554140045414.jpg (40Кб, 600x600)
600x600
Аноны, такая проблема.
Допустим, у меня есть клиент с какими то текстовыми полями в интерфейсе. Пусть их будет 5 штук. Я, значится, меняю какие то 2 поля, и нажимаю сохранить, после чего клиент должен обновить данные этих полей на сервере. Но в следующий раз мне например надо будет менять уже не два поля, а три, и это будут уже другие поля. И так далее.
Как обычно эту хуйню реализуют? Ну эту выборочность полей для функции?
То есть, я так понимаю, я должен написать функцию "Сохранить", которая принимает рандомное число аргументов, и потом запаковывает это все в пакеты и отправляет на сервер. А как сделать, чтобы она принимала рандомное число аргументов? И как она должна распознавать, что аргумент 1 - это именно поле Имя, а аргумент 2 - именно Номер телефона, чтобы сервер это тоже знал?
Аноним 01/04/19 Пнд 21:41:02 1373410418
>>1373356
Нахера ебаться?
if (field1.HasChanges())
// Сохранить данные из field1
И так далее...

Другое дело, если ты не знаешь заранее количество полей
Аноним 01/04/19 Пнд 22:07:59 1373422419
Сап. Вопрос к уже матерым cpp-шникам: насколько широко используются шаблоны в вашей повседневной практике?

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

Но мне не до конца понятно где оно может пригодиться Если только не пишешь какой-нибудь STL, как я понял - т.к. писать методы и классы работающие с разными типами не так часто нужно, насколько я понимаю, хотя возможно ошибаюсь. Вижу в вакансиях часто мелькает требование знания шаблонов. Но насколько часто они используются в повседневной разработке? И если используются, то в какой сфере - в разработке какого продукта?
Аноним 01/04/19 Пнд 22:39:10 1373453420
>>1373422
>в вакансиях часто мелькает требование знания шаблонов
Здесь наверное все-таки о паттернах идет речь, а не о шаблонах языка с++.
Аноним 01/04/19 Пнд 22:39:39 1373456421
>>1373422
общий подход: когда есть необходимость или возможность перенести часть работы со времени рантайма на компайлтайм
к примеру, в книжке gof шаблоны реализуются через агрегирование чаще всего, работают в рантайме, что чутка замедляет работу тк добавляет уровень ссылочности, но позволяет конфигурироваться динамически во время работы программы
а уже большая часть книги александреску "современное программирование" посвящена по сути как на шаблонах (в компайлтайме) реализовать те же паттерны
ничего не понял? ну и хуй с тобой, лол

ну а для прикладных программистов, если у вас на проэкте агрессивно используется stl и вообще стандартная библиотека плюсов, то у тебя не будет выбора как везде срать шаблонами и обобщенным кодом (если ты только не полная обезьяна использующая stl тупо обходя for'ом контейнеры)
Аноним 01/04/19 Пнд 22:53:17 1373462422
>>1373456
Ок. Спасибо. Понял, но не все. К примеру, про то, что шаблоны можно реализовать в рантайме - не знал. Пожалуй, почитаю потом детальнее.
Аноним 01/04/19 Пнд 23:02:03 1373467423
изображение.png (149Кб, 1920x1080)
1920x1080
Сап. Нужно разобраться с сериализацией, как сериализовать вектор структур и записать/достать в/из файла?
Аноним 01/04/19 Пнд 23:29:33 1373485424
>>1373467
ДА БЛЯТЬ ЗАЧЕМ ТАК ПИСАТЬ ЕБАНЫЙ РОТ БЛЯТЬ
01/04/19 Пнд 23:42:30 1373496425
>>1373467
Молодой человек, вы хоть одну книгу по плюсам открывали?
Аноним 02/04/19 Втр 00:35:40 1373524426
>>1373496
да, про сериализацию там если есть что, то очень мало, а что посоветуете почитать?
Аноним 02/04/19 Втр 01:22:46 1373538427
>>1373356
Зависит от того как серализуется инфа. Если ты не занимаешся какой-то хуйней где нужно выдрачивать каждый бит, то сериализоваться будет в пакет в котором инфа будет храниться как список кортежей типа "имя поля" + "значение" (плюс дополнительная служебная инфа). Такой подход обеспечивает гибкость, правда пакеты получаются чуть жирнее. На клиенте там нужно смотреть. Самый простой вариант - передавать мапу где ключ имя поля (или значение енума, скажем), а значение - содержимое поля. Плюс у тебя текстовые поля, тоесть не нада ебаться с дерьмом типа std::variant. Другой вариант - передавать объектом, в котором помечено какие поля обновились. Или вообще всегда отсылать значения всех полей.
Аноним 02/04/19 Втр 08:04:55 1373580428
>>1373349
Пиздец вопрос. Если ты в коде создаешь объект на основе этого шаблона и при компиляции нет ошибок - то успешно.
Аноним 02/04/19 Втр 08:07:40 1373581429
>>1373279
А что конкретно за книга? Саттер мне нравится.
Аноним 02/04/19 Втр 10:24:35 1373613430
>>1373467
как хочеш так сериализуй. предлагаю csv или json, но можешь ебаться в бинарник, если хочешь.
Аноним 02/04/19 Втр 10:55:28 1373631431
изображение.png (143Кб, 1920x1080)
1920x1080
>>1373613
защита лабы требует бинарник, что то такое сделал, но ошибка сегментирования после десериализации, пойду в винду смотреть шо как
Аноним 02/04/19 Втр 11:47:31 1373660432
Аноним 02/04/19 Втр 11:49:01 1373662433
>>1373660
не cin а in быстрофиксin
Аноним 02/04/19 Втр 12:57:31 1373695434
Аноним 02/04/19 Втр 13:19:41 1373701435
Аноним 02/04/19 Втр 13:20:30 1373702436
Аноним 02/04/19 Втр 13:28:30 1373706437
>>1373660
Спасибо большое, потещу
Аноним 02/04/19 Втр 13:29:05 1373707438
Как запихнуть указатель на функцию в класс? Хочу что-то типа такого:

class test (
int number
string data
func *func
);
Аноним 02/04/19 Втр 13:30:24 1373709439
Аноним 02/04/19 Втр 13:34:01 1373713440
>>1373707
Можешь просто запихивать указатели на функции в класс, никто не мешает. Но C++-way это использовать std::function. В них можно лямбды с захватами и другие ништяки использовать.
Аноним 02/04/19 Втр 13:38:36 1373715441
>>1373660
а можно вопрос как юзать? ну и немного обьяснения строк, если знаешь?
Аноним 02/04/19 Втр 13:40:16 1373718442
Аноним 02/04/19 Втр 13:47:15 1373723443
1627.jpg (55Кб, 741x307)
741x307
>>1373580
Не, вопрос не про создание объекта, а про template instantiation.
То есть как проверить, сгенерил компилятор код под специфический тип по шаблону или не сегенерил?

>Пиздец вопрос.
А я чо? Я ничо. Это в книжке вопрос задается. А я не знаю как свои ответы проверить в принципе можно.
Аноним 02/04/19 Втр 13:58:21 1373729444
>>1373723
>Не, вопрос не про создание объекта, а про template instantiation.
Но у тебя в примере именно про создание экземпляра.
А инстанцирование - это генерация кода под конкретные типы. У тебя 3 типа char, int и double используются. Я не уверен насчет инстанцирования double, так как явно использования нет, только ссылка на него, возможно по причине оптимизации компилятор для него не будет выполнять. Но это пусть уточнять более опытные аноны.
Аноним 02/04/19 Втр 13:59:01 1373731445
Аноним 02/04/19 Втр 14:04:54 1373736446
>>1373715
Работает только для POD (plain old data) - структуры, где все данные запакованы на месте, без указателей (или вложенных структур с такими указателями) на то, под что дополнительно память в куче выделяется.
serialize выписывает все элементы вектора на стрим, который ты сам должен открыть перед вызовом и закрыть после, чтоб ничего больше туда не попало.
deserialize напротив вычитывает все из аналогично предоставленного input стрима вплоть до упора (EOF) и возвращает вектор. Я, правда, кресты учил давно, и хз, как работают template функции, для которых нужная версия не выводится из типов аргументов. Или lvalue в контексте смотрит (ругается, если не используешь возвращаемое значение), или вручную надо <вот это> указывать между именем функции и скобками
Аноним 02/04/19 Втр 14:05:56 1373739447
>>1373729
>в примере именно про создание экземпляра
Перевод кривой. Созданием экземпляра тут называют именно инстанцирование.
Аноним 02/04/19 Втр 14:11:51 1373743448
>>1373736
ну мне нужно адаптировать под свою программу, не полностью понимаю что куда заменять на свои переменные и вместо ostream &out что закидывать при вызове функции
и как вызывать vector<T> deserialize, вообщем много вопросов, так как я почти совсем не знаком с функциями и выражениями используемыми здесь, но попробую разобраться. Спасибо за помощь.
Аноним 02/04/19 Втр 14:14:05 1373745449
Аноним 02/04/19 Втр 14:14:40 1373746450
>>1373736
не подскажешь что можно почитать по сериализации чтобы понять смысл и применять в боевых условиях, а то если найду рабочее решение скопирую, но смысл если так и останусь дауном.
Аноним 02/04/19 Втр 14:16:48 1373750451
>>1373746
Сам не читал про это, иначе не стал бы велосипед набрасывать)
По-быстрому из гугла подкинуть мог бы, но как-то не комильфо советовать, не ознакомившись
Аноним 02/04/19 Втр 14:17:20 1373751452
>>1373745
ну вот T заменить на свою структуру, что на место out и in при вызове ставить? и как вызвать vector<T> deserialize в мейне?
Аноним 02/04/19 Втр 14:27:06 1373758453
>>1373751

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

ifstream in("файлначтение", std::ios_base::in);
vec = deserialize(in);
in.close();
Аноним 02/04/19 Втр 14:27:56 1373760454
>>1373758
спасибо, сейчас потещу
Аноним 02/04/19 Втр 14:43:07 1373770455
>>1373758
ну мне сказали в итоге в темплейты не лезть и сделать функцию сериализации одного элемента вектора и так по одному перебрать все, а десериализовать с помощью sizeof по одной структуре считывать и пушбекать в вектор, попробую что то сделать, прост логику понять не мог. Спасибо большое за помощь.
Аноним 02/04/19 Втр 14:48:02 1373771456
>>1373581
саттер "новые сложные задачи на с++"
Аноним 02/04/19 Втр 14:50:32 1373772457
>>1373462
>шаблоны можно реализовать в рантайме - не знал
ты путаешь паттерны проектирования (pattern) и шаблоны c++ (template)
Аноним 02/04/19 Втр 15:08:35 1373783458
И еще вопрос про обертку функции. Есть много разных функции типа int a (int &d), string b (bool c), void k (int &z), Object.func(), которые надо запускать при определенном действии. Можно ли их как-то удобно запихнуть в один класс Events или надо велосипедить?
Аноним 02/04/19 Втр 15:14:12 1373785459
>>1373783
Смахивает на проблему проектирования. Вообще лучше параметры тоже сделать в виде унифицированного типа. А дальше каждый из обработчик его по своему интерпретировал.
Аноним 02/04/19 Втр 17:27:08 1373830460
Пишу на вашем языке говна лабу, потому что препод - долбоеб и не хочет читать джаву. При этом требований к перфомансу нет. 50 процентов времени уходит на еблю с языком ради нихуя.

Так вот, объясните мне, нахуя мне блять 2 файла для одного класса? На-ху-я? Я понимаю зачем это сделано в отцовском си, но здесь эта поебистика зачем?
Аноним 02/04/19 Втр 17:32:35 1373832461
>>1373830
> Я понимаю зачем это сделано в отцовском си,
Зачем?
Аноним 02/04/19 Втр 17:33:35 1373833462
Аноним 02/04/19 Втр 17:40:11 1373835463
>>1373830
из-за правила odr
функции-члены, как и свободные функции, должны иметь одно определение, поэтому ты их размещаешь в .cpp файле, чтобы они были в одной единице трансляции по итогу
за исключением inline функций-членов, которые могут иметь несколько определений (но совпадающих друг с другом), в процессе компоновки линкер выкинет лишние определения
сам же класс может иметь несколько определений, поэтому его размещают в .h файле, далее они распространятся по единицам трансляции в процессе компиляции, но линковщик в процессе трансляции опять же выкинет лишние
ничего не понял? ну и хуй с тобой!
Аноним 02/04/19 Втр 17:43:10 1373837464
а еще я безработный и живу с родителями в одной хате!
Аноним 02/04/19 Втр 18:00:17 1373844465
>>1373837
Типичный плюсовик.
мимо
Аноним 02/04/19 Втр 18:11:45 1373852466
>>1373830
причина 1в1 такая же, как в старом си, гений
Аноним 02/04/19 Втр 18:14:58 1373854467
>>1373830
например, у тебя есть один хэдер golovka.h и 2 исходника src1.cpp и src2.cpp . Если бы в golovka.h находились не только прототипы, но и реализации функций, например, void funktsyja() {}, то сначала эта функция скомпилировалась бы вместе с src1.cpp, т.к. #include "golovka.h" - это то же самое, что копировать-вставить содерживаемое golovka.h, потом та же функция скомпилировалась бы вместе с src2.cpp, а потом линкер бы охуел, превращая символьные метки funktsyja в адрес этой самой функции в машинном коде, ибо хуй знает, которую брать, линкер ведь не в курсе, что оба .o файла на этапе компиляции брали исходник этой функции из одного и того же места. А сравнение с Java хуйня, потому что .class не запускается на физической машине.
Аноним 02/04/19 Втр 18:18:29 1373855468
>>1373830
ПыСы
а с функциями, реализованными прямо в определении класса, эта история не происходит, т.к. они инлайнятся, то есть их код, с некоторыми поправками, вставляется прямо туда, где он нужен, стало быть, никаких вызовов, меток, адресов, проблем линкования
Аноним 02/04/19 Втр 18:50:35 1373875469
>>1373701
Да я даже текст не могу ввести, потому что не запускается. Если закомментить itoa(res, val, 10);, то запускается.
Аноним 02/04/19 Втр 18:56:23 1373879470
>>1373875
А ты уверен, что вызов не происходит и не генеряется исключение?
Аноним 02/04/19 Втр 19:02:43 1373881471
Хуйню несете. Можно все в одном файле хуярить, если реализация функции прямо внутри класса написана. А отделять объявление от реализации просто хороший тон и повышает читаемость кода.
Аноним 02/04/19 Втр 19:34:31 1373888472
>>1373881
Не помню, а со статиками это работает?
Аноним 02/04/19 Втр 19:49:26 1373894473
>>1373881
>Можно все в одном файле хуярить, если реализация функции прямо внутри класса написана.
это возможно лишь потому что определения функций-членов в таком случае рассматриваются как inline, и компилятор с линковщиком дальше с ними уже разбираются по правилам inline функций
Аноним 02/04/19 Втр 20:12:23 1373904474
>>1373855
я выше уже писал
встраиваются лишь вызовы функций, сама со функция никуда не пропадает, она так же присутствует в объектном коде
со встраиваемыми функциями просто добавляется возни как компилятору, так и линковщику
насколько я понимаю, компилятор в каждой единице трансляции будет создавать эту функцию, а линковщик потом будет выкидывать лишние определения (но я не силен в том как устроены современные компиляторы, возможно там и по другому уже делают)
Аноним 02/04/19 Втр 20:13:49 1373906475
>>1373904
а еще, с включенными обычными неагрессивными настройками оптимизации, современные компиляторы вообще то редко делают встраивание inline функций
Аноним 02/04/19 Втр 20:15:56 1373907476
>>1373881
тут одно дело "все хуярить", а другое дело попытаться как и почему это работает в языке, тогда, конечно, поплаваешь в океане сомнений
а так да, меньше знаешь - быстрее работаешь
Аноним 02/04/19 Втр 20:21:08 1373915477
>>1373844
не соглашусь, с моими знаниями, вышечкой по специальности и кое-каким опытом работы, я, наверное, все же смог где нибудь работать, если бы не было проблем с головой, к сожалению
Аноним 02/04/19 Втр 20:21:50 1373916478
>>1373915
само собой, за low-прайс, типа как старые шлюхи - чем старше, тем дешевле
Аноним 02/04/19 Втр 21:32:43 1373963479
>>1373830
Пиши все в один файл. Можно прямо как в джаве хуярить все в определении класса.
Аноним 02/04/19 Втр 21:48:25 1373968480
Аноним 03/04/19 Срд 10:20:15 1374109481
>>1365137 (OP)
Здарова анончики, у меня есть вопросы.

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

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

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

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

Насколько быстро происходит пересоздание динамического массива с новой длинной? Например, при нахождении нового элемента увеличивать длину на единицу и с этой новой длинной создавать новый массив.
Аноним 03/04/19 Срд 10:26:39 1374112482
>>1374109
Смотри на свои миллионы. Размер стека явно меньше размера кучи.
>Насколько быстро происходит пересоздание динамического массива с новой длинной?
Присмотрись к Си функции realloc (выделяй тогда при помощи malloc).
Аноним 03/04/19 Срд 10:42:50 1374117483
>>1374112
Благодарю.

Ещё вопрос тогда. Есть некая строка в файле, считывание которой я сделал вторым способом с массивом. Есть ли мне смысл городить огород с постепенным наращиванием размера некого блока и копированием туда информации?
Аноним 03/04/19 Срд 10:54:23 1374122484
>>1374117
Я жопой читаю. Ты хочешь использовать STL контейнеры стек или очередь. Возможно стоит посмотреть и vector, у него есть метод reserve, который позволит зарезервировать огромный кусок памяти сразу.
Аноним 03/04/19 Срд 11:02:09 1374124485
>>1374122

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

Суть вопроса была в том, что если мне будет нужно считать некий текст из файла, то удобнее использовать List, однако, когда речь идёт о выводе этой информации в консоль или каких-либо действиях на основе неё. Какая скорость работы в таком случае будет? Не может ли оказаться в итоге, что пусть и двойная работа сначала по вычислению размера, а потом по копированию в одномерный массив, затем выведению в туже консоль будет быстрее, хотя по логике медленнее?
Аноним 03/04/19 Срд 11:09:19 1374127486
изображение.png (32Кб, 598x357)
598x357
Закидал я конечно вопросами, но есть ещё один.

Стоит ли мне заморачиваться и делать обработку первым вариантом или же выигрыш никакой даже для больших величин и проще использовать второй?
Аноним 03/04/19 Срд 11:10:00 1374128487
>>1374124
У list есть накладные расходы по памяти. На 1 твой байт 2 указателя будут (2х4 или 2х8 байт).

Если ты будешь выводить по 1 байту в консоль, то операция вывода будет заметно тормознее твоих проходов по любым STL контейнерам.
Аноним 03/04/19 Срд 11:36:01 1374135488
>>1374127
Нахуя ты занимаешься оптимизацией этой хуйни? Компилятор сам за тебя это сделает, не еби себе голову.
Алсо, юзай вектор, ему можно заранее выделить сколько-нибудь памяти, потом он по-умному будет ее перераспределять, если не хватит.
В общем, всё за тебя уже придумано, лучше сначала напиши, а потом бенчмарки гоняй (с включенными оптимизациями)
Аноним 03/04/19 Срд 11:41:29 1374138489
>>1374135
То есть просто использовать for? Понятно.

Касаемо вектора я скорее всего буду его применять когда будет крайняя необходимость, ну или когда на работу устроюсь, хы.
Аноним 03/04/19 Срд 11:42:26 1374140490
>>1374135
Если он хранит тупо символы, std:stringbuf/wstringbuf будет возможно удобнее. Его сразу в поток вывода стошнить можно.
Аноним 03/04/19 Срд 12:13:30 1374157491
Есть два класса с длинной родословной:
a > b > c
d > e > f > l
Надо, чтобы у них был общий параметр, которые изменялся бы одновременно. Как это правильно реализуется? Указатель на член другого класс не хочется делать.
Аноним 03/04/19 Срд 12:32:53 1374175492
>>1374157
>Надо, чтобы у них был общий параметр, которые изменялся бы одновременно.
Ничего не понятно. Что за параметр у класса?
Аноним 03/04/19 Срд 12:39:38 1374182493
>>1374175
бля, плохое слово, член класса. Допустим bool open. И если в одном он стал 1, то и в другим должен стать 1.
Аноним 03/04/19 Срд 12:54:23 1374196494
>>1374182
Это реализуется с помощью наследования, не?
Аноним 03/04/19 Срд 13:07:14 1374210495
>>1374157
Сделай общий базовый класс, а в нём static поле
Аноним 03/04/19 Срд 13:19:48 1374218496
>>1374157
Создать ещё один, в котором будут a и d
Аноним 03/04/19 Срд 13:21:57 1374222497
>>1374157
>>1374182
>Указатель на член другого класс не хочется делать.
Сделай указатель на сам объект другой иерархии классов, и пускай у тех будут методы GetOpen и SetOpen.
Аноним 03/04/19 Срд 14:09:47 1374254498
>>1374157
>Надо, чтобы у них был общий параметр, которые изменялся бы одновременно.
зависит от того на какой уровень связанности ты готов пойти - можно делать начиная от того что тупо делать этот параметр глобальной переменной и до упаковки этого параметра в класс конфигурирования, сделанный синглетоном, которым, в свою очередь будут параметризироваться твои иерархии классов (либо статически через шаблоны, либо динамически через агрегирование)
а вообще, конеш, хуева когда изначально иерархии классов проектируются так что должны зависеть от каких-то внешних параметров
сверху какие то хуевые советы, если честно
Аноним 03/04/19 Срд 14:50:04 1374300499
>>1374254
ну допустим, есть игра с классом инвентарь и классом карта. И на карте есть дверь, которые должны быть открыты, если в инвентаре есть ключ. При этом по сути и дверь и ключ в инвентаре являются последними листиками в свои деревьях классов. Как исправить ситуацию в таком случае? Создать кучу синглтонов ключдверь и протащить их по классам? Или как надо было поступить изначально, проектируя архитектуру?
Аноним 03/04/19 Срд 15:30:57 1374323500
>>1374300
А сделать у класса инвентарь метод "найти_предмет", который мог бы дернуть класс дверь нельзя?
Аноним 03/04/19 Срд 15:36:15 1374326501
>>1374300
эээ
дык это ж всегда делается самым наивным способом
у тебя будет функция или метод "открыть дверь", в ней тупо перебирается инвентарь у персонажа, если найден определенный ключ, то дверь открывается (изменяется ее статус на открыто) иначе дверь остается закрытой
обычная дрисня из if, никакого проектирования, лол
это же геймдев
глянь код любого рогалика
Аноним 03/04/19 Срд 15:52:00 1374339502
>>1374323
>>1374326
я думал делается взаимодействие с инвентарем, у подкласса инвентаря изменится значение, и (вот тут проблема) как-то меняется значение у соответствующего подкласса карты, будто бы они связаны (но не через указатели). Ясен хуй, что можно все процедурно сделать, а когда появятся какие-нибудь еще рычаги, еще 50 ifов везде всунуть.
Аноним 03/04/19 Срд 16:04:26 1374346503
Расскажите в крации как самому реализовать multiset
Аноним 03/04/19 Срд 16:21:56 1374358504
Аноним 03/04/19 Срд 20:36:56 1374578505
>>1374346
обобщенный на шаблонах что ле? чтобы итераторы отдавал? с минимальными требованиями к типу элемента контейнера, чтобы тупо операция сравнения была и конструктор по умолчанию? с безопасностью исключений? чтобы управление памятью было за контейнер в аллокаторы вынесено? чтобы была поддержка мув-семантики, универсальной инициализации и других фич новых стандартов?
Аноним 03/04/19 Срд 20:38:22 1374580506
>>1374339
епт
очевидно же что операция открытия двери в первую очередь относиться к двери
Аноним 03/04/19 Срд 21:44:05 1374629507
>>1374578
По шаблонам со всякими стандартными методами а ля сортировки, сравнения, поиска, итерации. Фифти-фифти, но без изысков
Аноним 03/04/19 Срд 22:46:54 1374663508
Аноним 03/04/19 Срд 22:50:02 1374667509
>>1374323
>сделать у класса инвентарь метод "найти_предмет"
OOP-brain-damaged? Инвентарь не ищет предмет, у него не должно быть такого метода.
Аноним 03/04/19 Срд 22:51:56 1374669510
>>1374339
>Ясен хуй, что можно все процедурно сделать, а когда появятся какие-нибудь еще рычаги, еще 50 ifов везде всунуть.
Игры не делал, поэтому не знаю стандартных подходов. Вот мой полуночный бред. Смотри, у тебя предвидятся 50 различных взаимодействий вида "предмет в инвентаре - вещь в мире". Игрок взаимодействует с предметом, и если у него есть какой-то предмет, то случается одно (дверь открылась, ключ исчез), а если нет, случается другое (выводится соответствующее сообщение).
Вариант первый, разумный: не мудрить и запилить логику в саму дверь. Плюсы: просто, быстро, код, связанный с дверью, лежит у двери. Минусы: очень статично.
Вариант второй, энтерпрайзный: сделать таблицу вида "тип сущности в инвентаре - тип сущности мира - твои коллбеки с логикой работы". Тогда при взаимодействии ты проходишься по этой таблице (если её реализовать как хеш-таблицу - будет оче быстро), и, если есть строка с нужными типами, сделать нужное действие (убрать ключ и открыть дверь). Плюс в том, что этот вариант динамический и можно больше добавить всяких плюшек. Но кода больше и мороки больше.
Решай, что нужно.
Аноним 04/04/19 Чтв 00:32:59 1374710511
>>1374663
че уж там, проще в pdf драфта смотреть и все..
Аноним 04/04/19 Чтв 00:42:33 1374713512
>>1374710
кстати, размер 17 стандарта, а именно 1600 страниц всегда приводит меня в веселое настроение
если учесть что описание языка оберон-2 - ровно 26 страничек, лол


Аноним 04/04/19 Чтв 01:00:35 1374716513
>>1374713
Ну это частая проблема сколько-нибудь долгоживущих инструментов.

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

Да, и еще разная неявная поебень: типа формально (и в стандарте) это Х, но все делают Y (и в стандарте про это нихуя).
Как пример, если правильно помню, в стандарте нигде не было сказано, что функции и области видимости должны работать через стек. Но все здравомыслящие разработчики компиляторов сделали так, и когда вводили лямбды, пришлось обрезать им захваты. И хз, объясняется ли причина этой фичи в новом стандарте, или "просто запомни".
Аноним 04/04/19 Чтв 01:18:29 1374722514
Аноним 04/04/19 Чтв 01:23:13 1374724515
Анон, тред читал жопой, бочку не делал, но есть вопрос: есть ли какой-нибудь толковый дебаггер для типов (тип в компиль-тайме подсветить + мета-программирование и вот это все)? Сейчас отлаживаю аналогами дебаг-вывода, но хотелось бы что нибудь более подходящее.
Аноним 04/04/19 Чтв 01:28:57 1374726516
>>1374724
VsCode c соответствующим плагином что-то там подсвечивает. То ли инстанциации, то ли еще что. Не пробовал если честно.
Аноним 04/04/19 Чтв 08:44:07 1374783517
Аноним 04/04/19 Чтв 08:59:05 1374788518
>>1374783
Да и инвентарь, который не может предоставить доступ к своему содержимому, странный.
Аноним 04/04/19 Чтв 09:17:44 1374793519
Аноним 04/04/19 Чтв 10:19:12 1374814520
>>1373968
то что нужно, спасибо
Аноним 04/04/19 Чтв 11:27:39 1374855521
>>1365137 (OP)

Стоит ли для индексов в цикле обязательно использовать unsigned int? Или же проще сделать проверку на отрицательное число и ноль?
Аноним 04/04/19 Чтв 11:35:12 1374860522
>>1374726
В IDE обычно достаточно паршивая поддержка типов. Было бы круто иметь что-то вроде компилятора, но для типов/шаблонов. Что бы можно было дебажить то как разворачиваются шаблоны, смотреть значения переменных, деманглить гигантские конструкции к более читаемым и тд. Может какие плугины к гцц или шлангу есть?
Аноним 04/04/19 Чтв 11:41:10 1374863523
Аноним 04/04/19 Чтв 11:42:01 1374864524
Ну шо ребзи кто уже студией новой пользовался? Стоит переходить?
Аноним 04/04/19 Чтв 11:42:48 1374865525
Аноним 04/04/19 Чтв 11:52:33 1374870526
Снимок экрана о[...].png (62Кб, 897x584)
897x584
>>1374860
NetBeans 10 + gdb - вполне себе позволяют лазать по шаблонам, показывают значения переменных внутри, вычисляют выражения налету.
Аноним 04/04/19 Чтв 11:53:28 1374871527
>>1374864
А что уже зарелизили 2019?
Аноним 04/04/19 Чтв 11:54:20 1374872528
Аноним 04/04/19 Чтв 11:58:51 1374875529
>>1374872
Надо посмотреть. По сравнению с 2015 2017-ая адцкий глюкодром.
Аноним 04/04/19 Чтв 12:12:51 1374885530
1641.jpg (24Кб, 718x101)
718x101
image.png (282Кб, 600x615)
600x615
Пикрил можно вообще сделать на встроенных типах, не создавая отдельный класс для возвращаемого значения?

Функция sum() шаблонная, если што.
Аноним 04/04/19 Чтв 12:16:26 1374887531
>>1374885
На сколько большим? Какого размера принимаемые параметры? Вероятно суть задачи заставить использовать не POD типы.
Аноним 04/04/19 Чтв 12:30:29 1374893532
>>1374887
>На сколько большим? Какого размера принимаемые параметры? Вероятно суть задачи...
Да фиг его знает, что он хочет этот Липпман.
Вообще тема - шаблоны + было краткое описание type_traits.

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

Я правильно понимаю, что никакой встроенный тип для результата не годится?
С остальным уж разберусь самостоятельно.
Аноним 04/04/19 Чтв 12:40:28 1374899533
>>1374893
Скинь тушку шаблонной функции sum() из книги.
Аноним 04/04/19 Чтв 12:52:41 1374904534
image.png (165Кб, 772x556)
772x556
>>1374899
Она там не приводится, пикрил - все, что есть. Причем тут иллюстрация немного другой темы. Сама задача идет позже.
Аноним 04/04/19 Чтв 13:17:41 1374911535
>>1374904
Единственное, что на ум приходит:
template <typename T1, typename T2, typename RT = uint64_t >
RT sum(T1 x, T2 y)
{
return (RT) x + y;
}
Ну или поебаться с std::confitional для RT.
Аноним 04/04/19 Чтв 13:23:13 1374915536
15539828332400.png (265Кб, 844x828)
844x828
Аноним 04/04/19 Чтв 13:26:19 1374917537
>>1374915
sum<uint64_t>(UINT16_MAX, UINT32_MAX);
Аноним 04/04/19 Чтв 13:31:26 1374919538
image.png (22Кб, 413x374)
413x374
>>1374917
В 34 бита влезает же?
Аноним 04/04/19 Чтв 13:32:56 1374920539
>>1374919
А нет, я мудак. Надо скастовать первое слагаемое к Ret.
Аноним 04/04/19 Чтв 14:38:49 1374944540
>>1374710
>че уж там, проще в pdf драфта смотреть
html драфта смотреть обычно проще. Исключение — полнотекстовый поиск.
>>1374713
> описание языка оберон-2 - ровно 26 страничек
А брейнфака — и того меньше, лол))
Пиши на брейнфаке.
Аноним 04/04/19 Чтв 14:40:01 1374945541
>>1374716
>в стандарте нигде не было сказано, что функции и области видимости должны работать через стек. Но все здравомыслящие разработчики компиляторов сделали так, и когда вводили лямбды, пришлось обрезать им захваты.
Про что несёт?
Аноним 04/04/19 Чтв 14:41:11 1374947542
Аноним 04/04/19 Чтв 19:07:39 1375052543

Есть папка, в ней находятся две папки, внутри которых заголовочные файлы и срр файлы. Как сделать так, чтобы заголовочные файлы из одной папки были видны в другой?
Аноним 04/04/19 Чтв 19:10:08 1375056544
>>1375052
Че? Берешь и инклюдишь без задней мысли
#include "../folder2/anus.h"
Аноним 04/04/19 Чтв 19:11:22 1375058545
>>1375056
Беда в том, что видит только то, что находится в той же папке и ниже по дереву каталогов.
Аноним 04/04/19 Чтв 19:25:46 1375067546
Аноним 04/04/19 Чтв 19:37:18 1375073547
Решил провести ревизию своих старых laba.cpp и переписать самое интересное на новый лад с использованием best practices и новых возможностей C++. Нашел у себя калькулятор, который при принимает от юзера строку с каким-нибудь арифметическим выражнием типа a + 2 / log(e) и вычисляет. Строка переводится в набор токенов конечным автоматом, затем токены сортируются и вычисляются. Вся обработка ошибок заключалась в выбрасывании эксцепшона по любому поводу, которое потом всплывало до уровня цикла I/O и подробный месседж выводился в консоль вместо результата вычисления. Хочу теперь сделать нормально, используя как можно меньше исключений, но не могу выдумать под это архитектуру.
На этапе парсинга можно выявить грубые ошибки ввода, то есть несоответвие формальным правилам, лишние символы и тд. Парсер - отдельный класс, объект которого создается в фунции Parse, кушает строку и возвращает вектор токенов. Как в таком случае сообщить пользователю об ошибке?
Но ошибка может произойти дальше. Например, юзер может поделить на нуль. Парсер такое не задетектит, это все вскроется уже на слое обработки токенов. Опять же, как оттуда ошибку протащить до уровня консольного ввода-вывода?
Думаю заимплеменить что-то вроде питонового трейсбека, который внутри тапла будет возвращаться из любой свободной функции или метода от уровня ввода до самого дальнего бэка, где происходят вычисления. Нормальная идея? Можете предложить что-то еще? Что почитать на тему?
Аноним 04/04/19 Чтв 19:44:27 1375077548
>>1375058
Дурачок? Две точки в пути для кого придумали?
Аноним 04/04/19 Чтв 19:46:17 1375078549
>>1375077
При переносе на другой ПК с другими названиями дисков будет работать?
Аноним 04/04/19 Чтв 19:46:44 1375079550
>>1375073
Возвращай строку NaN или Error
Аноним 04/04/19 Чтв 19:50:43 1375081551
>>1375078
Каких нахуй дисков, ты чо бля полный путь к файлу указываешь?
"../" значит "каталог выше", "../../" значит "два каталога выше" и так далее. Если ты беспокоишься за кроссплатформенность, то, во-первых, иди нахуй, а во-вторых, windows уже давно умеет понимать оба варианта слешей.
Аноним 04/04/19 Чтв 20:00:47 1375088552
>>1375073
>как оттуда ошибку протащить до уровня консольного ввода-вывода?
Используй путь Си с возвратом кода ошибки. Используй путь функциональщины с возвратом ADT мм, монадично в виде своего tagged union или стандартного std::variant.
Аноним 04/04/19 Чтв 20:01:29 1375089553
>>1375081
Ебать ты агрессивный, на ПВП позвать тебя что ли.

Помог только обратный слеш, с точками он меня на системный диск посылает.
Аноним 04/04/19 Чтв 20:53:19 1375102554
>>1375089
Скинь свою хуйню сюда
Аноним 04/04/19 Чтв 21:28:55 1375123555
Цопаны, пересоздайте, а то тред тонет в глубинах. Спасибо.
Аноним 04/04/19 Чтв 22:01:18 1375143556
Аноним 04/04/19 Чтв 23:07:45 1375164557
>>1365336
а дерево бинарное? ну тип если бинарное то изи, если реализовано указателями то берешь указатель и хуяришь while{tmp=tmp->left/right}, если загрузил в массив то тоже заебись все так же ток у тебя вместо указателя i, 1й элемент-корень дерева, 2k+1 - корень левого поддерева, 2(k+1)- правого и так переходишь
Аноним 05/04/19 Птн 08:00:56 1375279558
>>1375052
При компиляции подключаешь нужные папки с хедерами в опциях компилятору.
Аноним 05/04/19 Птн 19:32:04 1375589559
>>1374669
хоть тред и утону, запоздалое спасибо, в итоге сделал что-то типа второго варианта.
Аноним 06/04/19 Суб 22:34:58 1376268560
>>1375073
> Опять же, как оттуда ошибку протащить до уровня консольного ввода-вывода?
std::optional
Аноним 11/04/19 Чтв 15:20:29 1379145561
2.jpg (116Кб, 720x960)
720x960
3.jpg (230Кб, 720x960)
720x960
4.jpg (147Кб, 720x960)
720x960
5.jpg (242Кб, 720x960)
720x960
11 Вариант
C++
Кто не ответит - тот слушает рэп
11/04/19 Чтв 20:15:35 1379336562
>>1379145
>Вопросы по синтаксису идут на хуй
>Лабы идут на хуй
>"Как мне сделать Х на чистых крестах без библиотек" идут на хуй
>Все идут на хуй
>Хейтер сосет члены на пару со своей мамашей
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов