Вместо шапки - https://github.com/sosachbot/cppthreadhat/wikiОтветы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/Прошлый - https://2ch.hk/pr/res/947007.html
Зачем в 2к17 нужны плюсы, когда есть раст?
>>961847Легаси
>>961847>Зачем в 2к17 нужны какие-то недоязыки, когда есть проверенный временем с++?
>>961905Помнится, недавно он то ли хачкелем, то ли лишпом обмазывался.
>>961905А то ты WEB-GUI под крестами собрался писать, кловн. Ничто не мешает использовать кресты для бэкенда и яваскрипт для фронтенда (где ему и самое место), другое дело, что на крестах это будет огромный велосипед (еще и неизвестно какой), вместо использования уже обкатанных java или asp.net.Каждый язык занимает свою нишу.
>>961905Работающего в фейсбуке Кармака заставили использовать фейсбучное поделие. Ну ок, чо.
>>961905>осознал бесполезность C++Хуйню несешь, там ни слова о крестах
>>961857Пока что временем проверено только то, что он говно.
>>9618474 слова:ios, android, PS, XBOX.На всех этих платформах Раста просто нет. С++ на них чувствует себя превосходно.
>>961905Мигание курсора уже оптимизировали?
>>961919Javascript нет места нигде. С одной стороны новое поколение гуманитариев, которые рвутся в кодинг и не могут осилить ничего кроме JS и пытаюстся написать на нём небо и аллаха, с другой стороны программисты, которые годами пытаются выйти за грань реальности в попытках оптимизировать интерпретаторы этого говна, и ничего хорошего из этого всего не выходит.
>>961977Но он свою нишу занял ведь и конкурентов у него нет, насколько я понимаю (или я слишком отстал от жизни). Опять же, навряд ли от него будут оказываться, по крайней мере, в ближайшем будущем, хоть он кому-то и не нравится. Кроме того, чтобы найти замену JS, его необходимо конкретно распиарить и перетащить опять же на него сообщество разработчиков/говнокодеров/пользователей и прочей шелупони, что также требует большой работы.Тот же Go, наверно, никому в хуй бы не уперся, если бы в свое время google не стала его пропихивать куда ни лень. Ту же самую науку провернула Microsoft со своим C#, только раньше.А у всех отростков или языков, которые внезапно появляются, и так же быстро умирают, без должной поддержки будущего нет, несмотря на то, какие бы пиздатые концепции в них не были заложены или с какой простотой и эффективностью реализовывались бы программы на них. Они так и будут игрушкой для хипстеров и прочих рукоблудов.
>>961980>Но он свою нишу занял ведь и конкурентов у него нетДа, к сожалению так сложилось. Но это не повод перетаскивать это говно во все сферы.
>>961905> ui на js> или какой нибудь луа, питон и пр. Как вообще совместить в одной программе 2 языка?
>>962004Через FFI какой-нибудь.
>>962005Ну дернуть удаленный метод чтобы он вернул мне строку huipizda это я еще могу понять. Но как отрисовать интерфейс написанный на другом языке нет.
>>961980>конкурентов у него нетVBScript
>>962007>интерфейс>написанный на языке
>>961970На первых двух есть и прекрасно живёт. На остальных — не в курсе, но вроде как у них жи закрытый сдк, хз короч.
>>962007Дернуть из другого языка функцию отрисовки и закинуть адреса своих ф-й обработчиков гуя, в чём проблема-то?
>>962020это ты прекрасно живешь в своем манямирке, а на Расте надо будет постоянно биндинги пердолить (или брать хрен знает насколько проверенные на стороне) и трахаться со сборкой.
Помогите, пожалуйста. Почему он берет и прыгает на строку выше? нужно поменять местами половинки массива
>>962119>>int a[][4];>>int count2 = 4;>>int temp = a[count1][count2];Знаешь, что четверка означает?
>>962119Потому что ты программу так написал.https://ideone.com/qrs3pP
>>962052Есть генераторы биндингов (это настолько сложная хуйня, что она должна быть проаерена, кек, ты прям жявамакакен только и делаешь что фреймворки скрепляешь друг с другом), а про еблю со сборкой в плюсотреде слышать даже не смешно.
>>962134Очень жаль но нет>>962145Спасибо большое добрый человек
Няши, помогите, не врубаюсь что не так.Писал программу под opengl (sdl) на маке, там в конфигурационный файл для qmake вписал:INCLUDEPATH += /Library/Frameworks/SDL2.framework/HeadersА сейчас переношу на линукс, и непонятно какой путь включать.
>>962246pkg-config
>>962246спрашивай у менеджера пакетов или гугли sdl2 + название твоего дистрибутива. еще можно find / | grep SDL2 -i
Нигде не могу найти инфу про fork(), как использовать, зачем оно надо и что делает. Есть описание в терминах процессов и все. Книгу может посоветовать может кто?
>>962246>2k17>хардкодить путиСъеби, не шкварь тред
>>962295>2к17>даун всё ещё не может в докер
Как в плюсах вернуть некий тип от enum?Образно говоря, есть enum numbers {one;two};Я вызываю функцию из другого класса которая делает return one;Как вызывающий класс понимает что это? Надо и в нём делать такой же enum?
>>962308Ёбаный даун, при чём тут вообще докер?
Котаны, есть ли инфа, собираются ли вообще в коммитете хотя бы мусолить тему или мб уже даже черновик на эту тему есть? о стандартизации ABI?
>>962390>стандартизации ABIКак ты себе это представляешь, даун?
Котаны, есть ли инфа, собираются ли вообще в коммитете хотя бы мусолить тему или мб уже даже черновик на эту тему есть? о стандартизации опций компиляторов?
>>962316У enum только один возвращаемый тип - unsigned int
>>962402Лучше заткнись
>>962398Ахуенная шуточка. Самое весёлое что все, кроме спермокомпилера поддерживают как минимум один основной базовый набор команд и используют гнутый стиль CLI.>>962393Описать стандартом правила манглинга, стандартное соглашение о вызовах и прочую хуйню. Модель памяти же стандартизировали как-то.
>>962404> все, кроме спермокомпилераgcc, clang и icc. Остальные не поддерживают.>Описать стандартом правила манглингаЗачем?> стандартное соглашение о вызовахИ что делать на ARM, если стандартизуют, что первый аргумент передаётся в RDX?> Модель памяти же стандартизировали Для абстрактной машины.
>>962402Это так значит шутка что ли?Это он на твоей x86/x86-64 машине в 32 битное значение устанавливается, потому что его доставать оттуда проще будет. Ничего не мешает тебе объявить enum с заданным размером значения (цэ 11):http://en.cppreference.com/w/cpp/language/enum
>>962407>gcc, clang и icc. Остальные не поддерживают.Прибавь к ним msvc - и получишь все живые компиляторы, у остальных распространение на уровне хачкеля (если не учитывать всякую закрытую залупу для соснолек прочего, хотя мне кажется там сплошные форки гцц как и в мире мк).>Зачем?Потому что закрытый софт и регулярное обновление компиляторов - это анальная боль. Да, для с точки зрения программиста конечно тупая ситуация, но бизнесу похуй.>И что делать на ARM, если стандартизуют, что первый аргумент передаётся в RDX?а) Класть хуй на стандарт;б) Стандартизировать на распространенные архитектуры отдельно (их всего-то грубо говоря 3-4 штуки).>Для абстрактной машины. Учитывая сколько говна лилось и сколько ее пилили в той же жаве, кажется мне, что она тоже говно, хорошо что мне не приходилось с ней работать, лол.
>>962418Я понял. Ты местный клоун-дурачок.
>>962419Ну как сказать. Я вот сегодня послушал челика, который рассказывал что был на вчерашнем ивенте яндекса, и в 17-м стандарте вместо 128 и 256-битных интов как в гцц будут просто автоматически растущие в ^2 инты, а так же классы с апкастом в компайлтайме при переполнении разрядной сетки и прочего, а так же в constexpr будет свой std::vector и у меня возникло ощущение, что клоуны в коммитете сидят.
>>962427А че там самое главное, когда эти пидоры введут статическую рефлексию, мне уж очень интересна эта тема, потому что уже использование protobuf'а и прочих, без вранья, костылей, доебало, когда можно было бы применять свои типы с ленивой загрузкой, COW и прочими ништяками.
>>962431> мне уж очень интересна эта темаДа всем блеать интересна.Но долбоёбы возятся с какими-то модулями.
>>962431Лет через 10. А ты пока держись там, наслаждайся новыми интами и оператором <=>, всего доброго и хорошего настроения.>>962436Зато фс в стд завезли, радуйся барской щедрости!
>>962442Ну пока генераторы схем есть итак неплохо. В принципе, думаю под себя для работы наковырять один небольшой, чтобы можно было определять пользовательские типы, да вот только все это костыли, как ни крути, хочется нативной поддержки от языка таких трюков.>> <=>Че ето такои? Это пришло на замену триграфам?
>>962467Это хуитка чтобы заставить компилятор сгенерировать дефолтные <, = и > за тебя. Хз правда нахуя, но видимо надо.
>>962436>Но долбоёбы возятся с какими-то модулями.Ты охуел
>>962518Нет ты.Модули это тупо оптимизация времени компиляции. А статической рефлексии нет вообще.
Анонасы, хочу сделать сигнал в одном классе а слот в другом. Просто лютый бред писать например реакцию на клавиши в классе отображения.Это вообще реализуемо?Попытался пойти напрямик -QObject::connect: Cannot connect (null)::pressedButton() to (null)::receiveKey()
>>962523Не только. Возможно, менеджеры пакетов на плюсы завезут или хотя бы можно будет как в жабе подключать либы (или около того). Профит все получат и сразу.
>>962530apt-get хватит всем, а спермоблядей даже модули от DLL-hell не спасут.
>>962526Просто берёшь и соединяешь.
>>962535Я надеюсь на лучшее.
>>962535Самоутверждаться используемой операционной системой на дваче
>>962550Я слыхал VS2017 научилась в неабсолютные пути. Это правда или спермомирок продолжает героически сопротивляться прогрессу?
>>962592В не-абсолютные пути точно умели в 2010 студии. Раньше - не знаю. Так что не какай жиденько, а делай уроки, завтра в школу. Расскажешь всем как ты круто линукс устанавливаешь.
>>962601Спермоблядь обиделась за наезд на её любимый спермокостыль и пошла грудью вперёд в атаку.
>>962145найс траленг
>>962644У вас STACK OVERFLOW
>>962638Я даже не знаю, как ответить на эту убогую попытку "траленка". Подрастешь - может поубавится юношеского максимализма.
>>962687Спермоблядь ещё страдает эйджизмом.
Всем привет. Вот хочу я найти библиотеку для работы с деревьями не могу этого сделать, гугл по запросу c++ деревья, выдает только детские рассуждения с хабра. Научите.
>>962757в бусте точно ничего нету?
>>961905>>961847Существует мнение, что кресты ругают те, кто не смог в него
>>962757> не могу этого сделатьПопробуй на английском запрос составить.
>>962830Осиливают говно. А нормальный язык приятен и понятен любому.
>>962762В бусте точно что-то есть, я не знаю как это искать.
Как в qt сделать QEventLoop бесконечным? Чтоб прерывалось только с выходом из приложения?Схема QEventLoop name;printf("LOOP")name.exec();Работает только 1 раз. Как выводить Printf раз в некотрое время?
помогите с методом зейделя пожалуйста: мейн: https://pastebin.com/gA0411vFзаголовочный: https://pastebin.com/pNvcCRJ3файл с матрицей: https://pastebin.com/dj6q7R8uправильный ответ: X1 := 4X2 := 0X3 := -1моя проблема скорее всего находится в функции zeydel, которую я скопипастил с википедии, однако я мог там что-то накосячить(но я проверял). Помогите исправить пожалуйста программу.
>>962947что за хуйне учат в этих универах...
>>962994я разобрался: вышел за пределы массива - умер
>>962849Искренне не понимаю, что в нем неприятного
>>962849Ну так в крестах ничего сложного нет, по сути, а с приходом c++11 (или сторонних либ еще ранее), тебе даже не нужно ебать всем мозги по поводу автоматического высвобождения ресурсов, потому что для этих дел есть unique_ptr и shared_ptr.
>>962757http://www.boost.org/doc/libs/1_63_0/libs/graph/doc/index.html
>>963143Твоя фраза должна звучать так: "я тупо не видел ничего другого в глаза, вот и ебусь в них".>>963161Если писать всё на подсчёте ссылок, то получится тормозное говно как на яве (единственный плюс — быстрый стартап, но в когда объекты начнут дохнуть получим вообще петон).
>>963206>Если писать всё на подсчёте ссылок, то получится тормозное говно как на яве
>>963206ты знаешь чем юник_птр от шареда отличается, подсчитыватель ссылок?
Как узнать, что программа win32 запущена через дебаггер не в IDE, а в софте типа ollydbg ?
>>961847Миша, иди нахуй отсюда.
>>963225Нашел. IsDebuggerPresent().
>>963220Давай начинай свою песню про бесплатность юников, дружочек. Сразу с бенчмарками и ассемблерными листингами, по-хорошему.
>>963249У меня был такой чувак на прошлой работе, все хуярил обычными указателями, память у него текла пиздец, зато БЫСТРО (ну, он так думал, профайлер он не запускал ниразу). И еще он в 93ьем написал свою уебищную STL и до сих пор ее использует. Это не ты случаем?https://godbolt.org/g/96YQfAhttps://godbolt.org/g/IUiWmkТри с половиной ассемблерные инструкции мне не очень жалко потратить на гарантированное отсутсвие утечки.
>>963261>https://godbolt.org/g/96YQfA>https://godbolt.org/g/IUiWmkЛол, GCC sucks bollcksПопробуй clang-ом.
>>963264>bollcksbollocks
>>963264Попробовал на 3.9.0, поржал. Я так понимаю, >>963249 официально соснул хуев.
Я пришел к вам из C# иди нахуй отсюда чмо. Посоветуйте актуальных ресурсов (желательно сайты) с введением в многопоточность в C++. А то что-то тут совсем не Thread'ы и Task'и у вас, или я ничего не нашёл.
>>963268inb4 иди нахуй отсюда чмо*
>>963268Книга Эндрю Вильямса
>>963271или Энтони... нипомню
>>963268man openmpOpenMPpenMPenMPnMPMPP
>>963164Спасибо. Я кстати обдумал чего же я хочу от этой библиотеки и понял, что правильнее будет самому реализовать дерево.
>>963304Это крайне узкоспециализированное применение многопоточности
>>963267>>963261А теперь немножечко более живой пример, с парой хуиток которые компилятор не может просто взять и выкинуть (я конечно понимаю, что местным похуй, и самое главное статичные данные известные на этапе компиляции обернуть в смартпоинтер, но всё же попробую достучаться):http://godbolt.org/g/MYKEIlhttp://godbolt.org/g/DdfGm4Разница по количеству инструкций всего-то в... 2 раза.
>>963261>И еще он в 93ьем написал свою уебищную STL и до сих пор ее использует. Это не ты случаем?Не, братан, я вообще STL в рот ебал. Хотя в чём-то с этим стариком солидарен — лучше уж свой костыль, в действиях которого хотя бы можно быть уверенным и который спокойно будет рефакторится и отлаживаться без ебли в сральник.
>>963375Ловите поехавшего, он на пушах экономит. Пуш занимает 1 цикл, как и add. ОДИН БЛЯТЬ ЦИКЛ. У меня 15 лет назад компьютер триллион циклов в секунду выполнял и не парился.
>>963381Когда твоя залупа в кэш пролезать перестанет — расскажешь, нахуя вообще подобные настолько низкоуровенные языки. Вот серьёзно — в твоей ситуации видимо можно сразу на го хуячить, там сборщик почти без задержек, чо бы и нет-то?
>>963384Если колл стек твоего приложения не вмещается в l3 кеш - ты занимаешься каким-то пиздецом (еще и с нестандартными настройками кнопилятора). Если это компулсори мисс, то и ты и я будем ждать 300 циклов в любом случае пока твоя и моя залупы загрузятся из памяти.
>>963261> он в 93ьем написал свою уебищную STL и до сих пор ее использует. Все правильно сделал. В любой более-менее нормальной конторе пользуются собственной библиотекой шаблонов.
Почему в этом коде возникает ошибка?#include <iostream>#include <string>#include <vector>using namespace std;int main(){ string s = "word"; string t = s + s[s.size() -1] == 's' ? "" : "S";}
>>963462Наверни скобокhttp://en.cppreference.com/w/cpp/language/operator_precedence?ref=theblueish.com/web
>>963415>Все правильно сделал. В любой более-менее нормальной конторе пользуются собственной библиотекой шаблонов.Вся суть крестов: нахуй нам нормальная стандартная библиотека, мы лучше будем велосипеды делать.
>>963415Назови еще парочку, кроме фейсбука и блумберга?
>>963488Весь гейдев, например. Гуглани EA stl
>>963375>Разница по количеству инструкций всего-то в... 2 раза.С unique_ptr 22 инструкцииC голым указателем 1822/18 = 11/9 = 1.(2)Даже близко не в 2 раза.Или ты, дебил, в случае unique_ptr с 25-й по 47-ю строки тоже считал?
>>963375>Разница по количеству инструкций всего-то в... 2 раза.Как оказалось, разница даже не в 1.25 раза и это при том, что код с unique_ptr не течёт при эксепшенах.Приведи немножечко более живой пример, где экспепшены могут быть и гарантируй то же отсутствие утечек для голого указателя с помощью try-catch блоков. После этого попробуем посчитать инструкции, ха-ха.
>>963488>>963490Двачую этого. Даже Кармак для своей id свои шаблоны написал, можешь погуглить
>>96351610 лет назад то?
>>963476Где и какие?
Какого хера clion не может показать содержимое умных указателей сижу на винде, вдруг это важно?
>>963605Баг им забей
>>963709Уже есть такое предложение. Остается только ждать. Я лично думаю, что хотя бы дебаггер для MSVC было бы неплохо заиметь для начала, но с другой стороны у меня треть кода в проектах красная.
Хочу вкатиться в Boost/Asio но не знаю, что написать, какие есть идеи? (Http-сервер не предлагать)
>>963741Ну сделай тогда другой сервер. Не обязательно же веб. Запили брокер, прокси или еще что.
>>963741сделай чатик с поддержкой регистрации, комнаток и приватов.
Где можно найти кроссплатформенный макрос для эскспорта из динамической библиотеке? Хочу собирать .so и .dll с помощью GCCПисать__attribute__ ((visibility ("default")))и__attribute__ ((dllexport))перед каждым классом или перед публичными методами тоже?
>>963772И вот ещё в догонку вопрос, как в cmake сделать подпапку как цель сборки? То есть когда пишешь make testcmake запускает subdirs(tests/) tests/test_executableВ tests/ лежит другой CMakeLists.txt, который собирает test_executableСейчас я просто написал subdirs(tests/) и тесты собираются вместе с основным проектом, это нехорошо
>>963772http://www.boost.org/doc/libs/1_62_0/libs/config/doc/html/boost_config/boost_macro_reference.htmlBOOST_SYMBOL_EXPORT
Почему на QSslSocket получилось натянуть только HttpProxy?"Connection to proxy closed prematurely" -- Socks5Proxy
>std::__cxx11::basic_stringВ новых версиях GCC выхлоп темплейтов стал ещё грязнее, теперь так всегда будет?
>>963924ты поехавший чтоле?Чем тебе неймспейс не угодил?
>>963924ШтО?
>>963803Вот так сойдёт?
>>963271Энтони Уильямс Параллельное программирование на С++ в действииhttps://www.ozon.ru/context/detail/id/135511867/
Двощ, 17 студию научили отображать юникод?
>>964237У меня и 15 отлично отображает.
>>964237>>964265Что ты имеешь в виду?
Двач, что-то не гуглится нубский вопрос, подскажи, можно ли явно удалить локальный объект?{Или единственный вариант это только загонять его в область видимости?}
>>964375Обьект на стэке умирает по выходу из стэке. Т.е. да, уебанские фигурные скобки, и ничего больше. Возможно, разделить куски кода на лямбды и их дергать, что, практически, тоже самое
>>964419С лямбдами это будет смотреться еще паршивее, ИМХО.
>>964375Yoba ж yoba = new Yoba;delete yoba;Yoba yoba;yoba.~yoba();
>>964447Идиот, это удаление объекта на куче а не удаление локального объекта.
>>964447>yoba.~yoba();ub
>>964375А смысл, если место на стэке всё равно не освободится. Ты хочешь постоянно создавать и удалять объект в одной области видимости? Или освободить ресурс?
>>964375Не гуглится потому, что некорректный вопрос. Что ты имеешь ввиду под локальным объектом?То, что имеет смысл "удалять", на стеке не хранят.
Всем здарова. Где-то год назад видел, но потерял. Толстенький pdf, где разные куски кода С++ дизассемблили и разбирали, что получается. Получилась такая специфическая книга по реверсу, си++ и оптимизации. Мб кто-нибудь видел такое
>>964526Гугл говорит, что это может быть:"Использование ассемблера для оптимизации программ на С++", Юрий Магда, 2004
>>964543Точно не это. Не помню, на каком языке была книга, но это был raw pdf, не скан. Излагалось все живо, не академично.
>>962830>>962004>>961975>>961931>>961924>>961919>>961912>>961905Все до одного в глаза ебётесь. Сейчас я enhance эту картинку для вас, уебанов.
>>964591>enhance Это называется zoom, уебан.
>>964593>zoomВ крайнем случае magnify
>>962316>Как вызывающий класс понимает что это?Если классу не видно объявление энума - никак.
>>962393Запросто: обязать всех авторов ОС делать ABI. "Мусолить" не означает "сочинить ABI".
>>964599> "Мусолить" не означает "сочинить ABI".Не сочинять, а чтобы у каждого был свой ABI?> обязать всех авторов ОС делать ABI.Да их и обязывать не надо, они сделали каждый свой ABI. Короче, проблемы нет.
>>962526Мануал открой, он встроен в креактор.
>>962890>Схема>QEventLoop name;>printf("LOOP")>name.exec();>>Работает только 1 раз.Какое же ты уёбище... С какого хуя она должна работать больше одного раза? printf ты куда сунул?
>>964604>С какого хуя она должна работать больше одного раза?Ну луп это же типа goto. name.exec() делает переходит к QEventLoop name.
>>964524This.
>>964594>>964593Ну уж нет, я назову это enhance.
>>964600>Да их и обязывать не надо, они сделали каждый свой ABI. Сделали, но не стандартизировали.
>>964608>Ну луп это же типа goto. Пальцем в жопу.>name.exec() делает переходит к QEventLoop name.Блядь, я не засну сегодня.
>>964615>не стандартизировали.https://www.google.ru/search?q=itanium+c%2B%2B+abihttps://www.google.ru/search?q=sysv+abi
>>964616>Пальцем в жопу.Пальцем в жопу это не луп. Вот если рот к жопе пришить, может луп получиться.Но вообще goto назад это луп.> Блядь, я не засну сегодня.Что не так?
>>964618>Что не так?Никакой код в C++ не может перейти куда-то без слов for while goto if или вызова функции или longjmp или чего-то из этого в макро.
+ catch try
>>964608Хех, кодить, не почитав доки или хотя бы не имея примеры.
Господа из ДС2, думаю о том, чтобы попробоваться в Транзас, если в чонить более успешное не выйдет.Сейчас работаю в мелкой конторе без юнит-тестов и нормального цикла тестирования вообще, без проработки архитектуры и всякого такого прочего.План - поработать годик в конторе, где все это есть и набраться опыта.Кто-нибудь там работал, есть что рассказать?
>>964608Ихихихи, ну ты и лалка.QEventLoop занимается тем, что продолжает выполнение запланированных событий (которые были вызваны QueuedConnection или BlockingQueuedConnection способом), при этом, если его завершить, то сначала завершится обработчик активного события, а потом продолжится выполнение твоего кода после QEventLoop::exec()
>>964617Ссылку на ABI для Windows предоставь, плес.
>>964685>WindowsЭто говно никому не интересно.
>>964686прыщеблядок, плс
>>964686Это говно занимает большую часть рынка пользователей ноутбуков и пекарен, так что твоему работодателю это говно вполне может быть интересно.
>>964723Многие работодатели интересуются у тебя знанием ABI?
>>964725Есть много библиотек без открытого кода и скомпилированных одним компилятором. Ты не сможешь использовать их из другого компилятора.
>>964730И как тебе знание ABI помогает решить эту проблему?
Как сделать чтобы объект целиком был в другом треде? Хранить std::thread и делать detach() в конструкторе?Когда из основного потока вызываются методы класса, они ведь в другом потоке будут выполняться?Когда-то работал с тредами в Qt, сейчас уже всё забыл
>>964757Ты хочешь ActiveObject.
>>964741Какое ещё знание АБИ, пидор? Стандартизация АБИ, а не его знание.
>>964782>Стандартизация АБИДа не будет этого никогда, долбоёб.
>>964677то что у них постоянно висят вакансии еще не значит что тебя возьмут
>>964841Возьмут, почти наверняка.Есть пара вакансий, по которым я полностью прохожу по обязательным условиям и по большинству дополнительных.Ну и объективно я не особо говнокодер, способен закодить что-нибудь на бумажке, архитектуру гибкую набросать, в алгоритмах разбираюсь и даже в общение могу.Вопрос же всё-таки не о том, возьмут ли меня, а в том, стоит ли туда идти?
>>964844У них вакансии открыты годами, оптимистичный ты наш совсем-не-говнокодер, но сходи, с тебя не убудет) А вообще сейчас как-то много сионистов из транзаса бегает по собеседованиям.
Как быть с декструктором объекта данные которого перемещены через std::move()? Везде хранить поле bool is_moved чтобы не выполнять деструктор дважды?http://ideone.com/Eu11FI
>>964894>Как быть с декструктором объекта данные которого перемещены через std::move()?Перемещение должно оставлять объект в пригодном для разрушения виде.> Везде хранить поле bool is_moved Обычно это не нужно.
>>964788MS shill, pl0s.>>964894Примерно так - деструктор всё равно выполнится ведь. Можешь оставлять пустые ссылки или ссылки на пустые объекты.
>>964894move, в основном, нужен для двиганья указателей. Просто в обьекте откуда муваешь, ставишь указатель на nullptr, и все ок
>>964909>move, в основном, нужен для двиганья указателей. Просто в обьекте откуда муваешь, ставишь указатель на nullptr, и все окБлять, один нюфаг который хочет дебильной хуйни, второй либо тоже нюфаг либо просто дебил.move() только то и делает, что свапает указатель с нулптром (но стандартом это не оговаривается, как минимум в одной из версий гцц указатель просто копировался — ведь п-перформанс жи, так что надо смотреть в конкретной реализации std), данные он вообще никак не трогает.
Один >>964929 толще другого >>964608
У меня вот вопрос к эвангелистам раста вроде этого >>961847 — вы серьёзно считаете что ваша хуйня может стать широкоиспользуемым языком, пока тут пол треда задают вот такие вот вопросы >>964894и вот такие вот ответы за три сотни>>964909?
>>964929Как хуйня, которую ты написал, соотносится с заданным вопросом?
Разумно ли начинать проэкт на С, и перекатывать на плюсы только если есть небходимость и перекатывать не все?
>>964948Мой ответ касается в первую очередь того ответа, но и твой вопрос покрывает — просто проверяй свой указатель в деструкторе перед удалением. Ну или просто иди нахуй
>>964953Определись что тебе вообще нужно и задай вопрос нормально.
>>964955ты зарабатываешь деньги, программируя на C++?
Неофит ИТТ. Недавно перешел на cpp с C#, пишу в visual studio. Насколько я знаю, в VS VC++. Дак вот, проект cpp в VS компилируется в байт-код как проект на C#, или только если в настройках cpp проекта включить "Использовать CLR"?Или все проекты VC++ в VS хуячатся напрямую в машинный код и для запуска никакие .net'ы не нужны?
>>964956Ну вот GCC был на С написан, а потом его переписали, насколько знаю весь, возникли проблемы с бутстрапом и стандартами. Все порешалось, но теперь компилятор собирается хуй знает сколько, выжирая кучу места на диске.Это же простая утилита по сути.
>>964960Ебать у вас курятник там. Попробуй clang-ом статически собрать. Запусти в песочнице без нихуя.
>>964894Это поможет:http://stackoverflow.com/questions/3279543/what-is-the-copy-and-swap-idiomОтвет на вопрос где-то в конце, но почитать всё равно не помешает.
>>964894Это тоже поможет лучше понять, что происходит:http://ideone.com/cyln7z
Можно сделать темплейт чтобы убрать указание типа при вызове функции? http://ideone.com/ca7dQtУ меня не получается, компилятор так пытается кастовать один тип в другой
>>964973у вас Undefined Behavior с референсом на уничтоженный обьект
>>964975Компилятор выдаёт ворнинг если убрать std::move, а так ему норм, по идее всё правильно работает
>>964964Жырна
>>964976Так нельзя делать. У тебя после выхода из функции объекты рипаются. Всё это работает только потому, что у тебя данных реальных нет.
Объясните использования constexpr для типов, зачем их применять?
>>964980Ладно, пришло время окончательно закопать идею с полиморфизмом на стекеЯ хотед сделать оператор, например [], чтобы можно было вытаскивать переменные через префиксscalar = perl["$var"]array = perl["@var"]Когда доделаю весь функционал придётся всю работу с переменными переделать на указатели, на стеке слишком много ограничений
Почему везде пишут, что мол нехер использовать printf() в сабже? Я ебал хексы выводить
>>964993потому что не тайпсейф ни разу.
>>964989http://stackoverflow.com/questions/14116003/difference-between-constexpr-and-const
>>964964>Это же простая утилита по сути.Вон из профессии.
>>964998Чому тогда не сделать все функции констэкспр, авось попадёт подсчёт в компиляцию?
>>965010Вероятно, ты не сможешь завести программу, если везде повесишь. Ну и если вдруг тебе придётся в этом случае убрать constexpr, следом упадут связанные функции.
>>965002>>964978>перевести код на cпецифический asm в зависимости от процессораМожет тада еще boost добавить надо было?
>>964990>полиморфизмом на стекеделается через ссылки..
>>961839 (OP)Привет, аноны. Не знаю, туда пишу или нет. В общем, хочу вкатиться во фриланс. Чего умею - писать коды на c++ для определенных целей, занимаюсь этим постоянно года 2 или 3 по работе. Чего хреново умею - шарить в оптимизациях, всяких утечках памяти и прочей программистской кухне сам по образованию не программист, на работе использую C++ только как костыль для решения конкретных небольших задач, прогами этими пользуюсь в основном только я, иногда коллеги, которые прогать умеют еще хуже, чем я. . В общем, как такие днища навыки применять, чтобы помимо основной работы можно было наварить около 10 рублей, работая раз в неделю? С чего начать?
>>965029*10 тысяч рублей в месяц
>>965028Ну так посмотри на ideone, как там через ссылки сделать?
>>965043Просто если сейчас я могу сделатьperl.getScalar("my_variable").setValue("huita")придётся писатьScalar ж var = perl.getScalar("my_variable")var->setValue("huita");delete var(при том что Scalar содержит указатель на Си данные, которые продолжат жить в куче)ёбаный стыд...Как-то занимался играми, там из-за наличия основного цикла и событий легко подчищать умершие объекты, а тут нихуя, бери и пиши сборщик говна с нуля
>>965048>Scalar ж var = perl.getScalar("my_variable")>var->setValue("huita");>delete varЧо.
>>965048А, я понял. Так shared_ptr ебани может?
>>964993>Я ебал хексы выводитьРодина дала ему output modifier, но нет, он хочет жрать говно.
>>965054Грубо говоряclass Scalar{InternalScalar ж ptr;...куча методов... } ;class Array{InternalArray ж ptr;...куча методов... } ;Учитывая что они хранят всего лишь указатель и не контролируют его (этим занимается интерпретатор с подсчётом ссылок), логично размещать все объекты на стеке Но без наследования от общего предка с приведением типов туда-сюда архитектура слишком ограниченная, придётся возвращать new Scalar из функций
>>964955>просто проверяй свой указатель в деструкторе перед удалениемНа что проверять, довен?
>>964993libfmt
>>965062Ну так выводи объект. Тебе что-то мешает это сделать?
динамический полиморфизм (на вирт функциях) работает через косвенные обращения - через указатели для объектов созданных в куче, через ссылки для объектов созданных на стеке или в глобальной памяти..статический полиморфизм реализуется через шаблоны..ad hoc полиморфизм посредством перегрузки функций..
ты там биндинг перла хочешь прикрутить? какую конкретно задачу делаешь?алсо, можешь расшарить свой код - я могу помочь..
>>965062>>965090Эм. То есть выводи объект вместо ссылки.
>>965055>shared_ptr ебаниИз фабрик принято возвращать unique_ptr, кагбэ говоря "лайфтайм этого объекта полностью под твоим контролем"
>>965105Куда? (A)B() в c++ не работает если что
>>965109Ну можно запилить ссылку и её уже закастить.
>>965109Да и вообще, так ли уже тебе нужны 2 класса? В контексте того, что ты нам показывал - это изврат. А что там тебе в реале нужно, ты ещё особо не показал.
>>965103Задача - аналог liblua, достаточно быстрый для использования в играхОсновная проблема - прямой вызов С++ функций внутри eval() и require(). Пришлось сделать XS модуль, через который можно в рантайме создать функции в main:: или другом пакете и из них вызывать С++ коллбеки. Вызов получается не прямой, зато есть полный контроль над стеком, то есть в созданной функции можно свободно принимать и возвращать массивыМожет тебе известен другой способ? Я весь интернет перерыл в поискахКод может залью через пару дней, сначала надо определиться с моделью хранения указателей на переменные, чтобы избавиться от вот этого пиздеца (везде должно быть Variable)
>>965144Вот ещё как внутри работает и yoba-оператор[], в который благодаря полиморфизму через префиксы можно вместить все остальные методы
Пикча треда - 10/10ССпасибо, сохранил.
Какие то вопросы в треде освещаются скучные.Я тут ожидал больше архитектурно-концептуальных ответов, а тут один неосилятор доказывает другому как с его точки зрения STD работает правильно.
>>965179Под это отдельный тред нужен. Можешь создать, если не влом.
>>965179Пили перекат.
>>965107Програмчую, фабрике владеть этим указателем большого смысла далее нет.Но геморой может быть с уникальным указателем на куче, случайно можно проебать, если реально где-то в разных местах используется.Тут точнее говорить - либо фабрика должна отдавать шаред ибо таков замысел - фабрика шаредпоинтеров, или же очень внимательно следить за циклом жизни в скопе.
>>965180Так оно и интересно.Нахуй мне тут про стандарты читать и спорить о их реализациях, когда это справочная информация.Реально в работе возникет огромное множество архитектурных вопросов и вопросов дизайна.
>>965177Оригинал не поместился, был 7.5мб, ищи в блоге AlenaCPP
Ананасы, почему глобальные объекты - плохо?
>>965186Я уже отгуглил 2017 версию.Пикча хороша.
>>965192Поразбирай парашу, написанную с их применением.В десятках часах, разыщи же ту строчку кода, которая сука меняет состояние этого объета.Убедись, что другая строчка кода в двух папках левее в другом cpp перезатирает состояние объетка, и от этого все работает хуй пойми с какой предсказуемостью..А потом возвращайся, и дай нам ответ на этот вопрос.
>>965195P.S. гне константные лобальные синглтоны - тоже зло.
>>965195Так, хорошо. Но как быть с теми случаями, когда доступ к какой-нибудь хуйне нужен часто и из очень разных классов например в какой-нибудь QStatusBar сообщения всякие передавать?. И где о таком вообще можно почитать что-нибудь?Если не понятно, что я хотел сказать, могу постараться поподробнее объяснить
>>965198Я бы наследовал от CanChangeStatusBar а там уже внутри методов пускай конфликты разрузиваются
>>965198Создаешь интерфейс IStatusBar.У него метод IStatusBar::addMessage(const std::string& message) = 0;Твой статус бар реализует этот интерфейс.Передавай этот указатель туда, где нужно его использовать по иерархии композиции.В том и суть, что хороший дизайн требует передачи такой штуки только туда, куда по логике нужно его передавать. А плохой - куча вложенных друг в друга обхектов, каждый из которых тащит указатель на это. НО даже это лучше глобаьного объекта.Другой пример - интерфейс доступа к настройкам.Казалось бы, настройки приложения реально глобальные. И делай их глобальными. И да, можно, если каждая сущность хранит их в своей секции. Но как только кто-то начинает менять настройки другой, чужой сущности - тут начинается херня, и делать так не стоит.
>>965203Это такой Java-way стиль.Qt например предлагает хороший инструмент сигналов и слотов (обертка над указателями на методы), при помощи них тоже можно хорошо разрешить ситуацию.
>>965203Если честно, то я не совсем понял, а чем это лучше. Ведь точно также все эти классы будут тащить указатель на мой statusBar. И точно так же я буду разгребать это говно
>>965209В твоем случае используй то, что лучше вписывается в общую архитектуру.Если нигде не использовал интерфейсы - то не используй.Если везде тащил указатели - используй указатели.Если синглтоны - то синглтон.Решение должно быть обосновано как-то и гармонично. Ты обосновал - часто требуется доступ из разных мест, за гармоничность тебе решать.И в твоем случае, обезательно передавай в метод - кто послал сообщение, иначе не разгребешь.
Вроде получилось пнуть компилятор чтобы генерировал любое количество версиий одной функции http://ideone.com/eJl8CvПускай код засран, зато всё чистенько на стеке
>>965221А вот так получается выглядят сигнатуры всех моих шаблонных методов. Каждый вариант пишется вручную, там всё равно разные си-функции дёргаются вездеЗавтра займусь реализацией
>>965029Днищефриланса на плюсах нет.
Что такое WinAPI в объявлении функции типаint WinAPI winMain(int argc, char* _args){}?Где можно почитать об этих квалификаторах или как там мать их?
>>965288WINAPI is a macro that evaluates to __stdcallВсё просто.
Анон, помоги, в чём тут ошибка? Всё же блядь вроде корректно написано
>>965294http://stackoverflow.com/questions/14913243/netbeans-7-2-shows-unable-to-resolve-identifier-although-build-is-successful
>>965294Поставь нормальную IDE вместо педальной параши.Visual Studio или QtCreator, например.
>>965299Охуеть, сколько лет уже это говно не фиксят.
C++ говно без задач.С-бог
>>965292Ну а что значит после типа возвращаемого значения и перед именем функции этот __stdcall?
>>965350https://ru.wikipedia.org/wiki/Соглашение_о_вызове
>>965350https://msdn.microsoft.com/ru-ru/library/zxk0tw93.aspx
>>965350Какое-то очередное нарушение стандарта языка в исполнении MS, можешь в службу поддержки написать.
>>965350Long ago, in a distant past, когда вызов функции был чуть более, чем обычным goto с сохранением адреса возврата, надо было придумать, как передавать туда параметры и как получать результат. И разные люди придумали и использовали разные способы - кто в стеке, кто в регистрах, а кто вообще в памяти. Так что вызывая какую-либо неизвестную функцию, она вполне могла невозбранно затереть твои регистры, не предупредив. Стало быть нужно помечать, какая функция как работает с параметрами, так и появились конвенции о вызове.
>>965300Поставь нормальную IDE@QtCreator
>>965300Поставил нормальную IDE Eclipse, теперь всё собирается. Странно, всегда щитал нетбинс годнотой, по крайней мере в проектах на php и js оно меня ещё так не подводило
>>965393а ты любишь сорта говна
>>965405Просто Visual Studio на моем железе 90% времени будет висеть в Not Responding
>>965406Тогда qtcreator твой выбор, эклипс на джаве написан и вряд ли летать будет
>>965406Чет тоскливо. Плохо себе представляю, как можно получать удовольсвтие от кодинга на тормозной машине. Может купить старенький Сэнди-бридж на авито тысяч за 10?
>>965408А с ним новую мать, бп, под новую мать ещё обновлять оперативку и кулера.Я конешно не тот анон, но тут половина вкатывальщиков — студенты и школьники из мухосраней, для них это проблема.
>>965408У меня Ivy Bridge, что вроде бы даже новее чем Сэнди. Ты уверен что на б/у говне за 10к студия будет идти лучше, чем на игравом ноутбуке за 60к?
>>965413>ноутбуке>низковольтажная мобильная залупа/0
>>965414Ну не таскать же системный блок в универ...
>>965413У меня у самого айвик, студия летает. Хз
>>965393Твоя проблема в том, что программировать надо головой, а не IDE.Студийные макаки обмажутся своими гигабайтными тормозными монстрами и потом не могут высрать ни строчки кода без них.
Аналог boost::format кто знает? Нашёл это http://ideone.com/BJAaKM , но оно не работает с std::string и насчёт безопасности есть сомнения
Обмазался тут новыми инициализаторами, возник вопрос.Можно ли использовать запись std::vector {5}, чтобы создать вектор из пяти пустых элементов, как в случае std::vector(5)? Но создается вектор с одним элементом - пятеркой, видимо из-за конструктора, принимающего initializer_list.Можно ли добиться такого поведения со фигурными скобочками? Хочу использовать такую инициализацию везде вместо обычных скобок.
>>965427http://ru.cppreference.com/w/cpp/container/vector/vectorВ конце.
>>965423И ещё это https://gist.github.com/en4bz/f07ef13706c3ae3a4fb2 , работает со всеми типами на шаблонах, но нельзя использовать символ % если он не заменяется на строку.
>>965427А, я подумал, что ты не можешь вектор определённого размера сделать.А ты просто наркоман.
>>965420Друг, сейчас не каменный век
>>965423>Аналог boost::format кто знает? fmtlib
>>965436Нету в репе дебиана.Ссылка на гист хорошая, туда бы только конструкию \% добавить и всё что нужно будет в одном хедере.
>>965439>Нету в репе дебиана.https://packages.debian.org/sid/libfmt3-dev
>>965420Ты из тех, кто использует notepad++?
>>965453gedit, vim
>>965420Ловите вимоёба.
>>965454Пукнул тебе в лицо (Автор этого поста был предупрежден.)
>>965454Ох лол. ИЛИТА в треде. Прости, я сейчас пойду удалю студию, и винду даже удалю. Поставлю LOONIX без иксов даже, и буду в виме пердолиться. Ведь результирующий продукт и скорость разработки не важны. Важно, что ты ИЛИТА и пердолишься в ВИМЕ
>>965462>скорость разработки От редактора зависит дай бох на 2%.
>>965462Не забудь мышку выкинуть
>>965463Я тоже так думал, пока меня не пересадили со студии. Красноглазая залупа и хваленый ДЖЕТБРЕЙНС даже близко не валялись. А что там в виме - мне даже страшно представить.
>>965454Владелец квантового кластера? Если запихнуть вим мегабайты VimScript через плагины и довести фунционал до сносной IDE, он будет работать медленее студии.
>>965471Я первым написал gedit. vim я пользуюсь иногда.
>>963749всё уже написанотам е консольный чатикhttp://www.boost.org/doc/libs/1_49_0/doc/html/boost_asio/examples.html
>>965473Gedit тоже выкинь и поставь Geany, с виду то же самое но настраивается круто, по скорости работы уделавает всех включая Gedit.
>>965474там есть регистрации и комнатки? Можно еще операторов чатика реализовать.
>>965466Вим это обыкновенный текстовй редактор. А вот что такое есть в студии, чего нет в продуктах от джетбраинс?
>>965453qt creator, atom, kdevelop, gnome builder, sublime text, emacs, vim.Это неполный список легковесных и быстрых сред разработки. А ты иди скачай еще один апдейт студии на 5 гигабайт.
>>965485>легковесных и быстрых сред разработки>atom
>>965462ПРОГРАММИСТ ПОД ШИНДОВС, как же забавно это звучит.
>>965485Можешь свое говно засрать себе обратно.
>>965486Да, среди перечисленных он самый тормозной.Но все равно выигрывает на фоне говна на джаве, моментально отжирающего всю память и студии, которая весит 10 гигабайт и устанавливается два часа.
Слава шаблончикам
>>965490Ебать ты бешенный. Что-то мне подсказывает, что даже с шаблончиками эта хренотень будет работать так себе, если честно.
>>965491Хотя не, для специализированных типов будет нормально.
>>965491Со stringstream просто костыль чтобы что-нибудь вернуть, если кому надо пускай определяет stringstream::operator>> для своего типа
>>965462> Прости, я сейчас пойду удалю студию, и винду даже удалю.Да всем похуй на тебя, долбоёб.
Программисты 300к\сек, подскажите, нахуя нужен динамический массив?>при объявлении статического массива, его размером должна являться числовая константа, а не переменная. В большинстве случаев, целесообразно выделять определенное количество памяти для массива, значение которого изначально неизвестно.Но я все равно не вхуяриваю, для чего это надо. Если сказано, что должна быть константа, но почему бы после получения размера массива от пользователя просто не использовать ту переменную. гуглил - нихуя.И что за некий указатель p_darr?
>>965540>И что за некий указатель p_darr?Не ведитесь, посоны. Это репост с другого ресурса.
>>965544Что тебя смутило? Я действительно не знаю. Гугл мне толком ничего не выдал по этому запросу
>>965540>Если сказано, что должна быть константа, но почему бы после получения размера массива от пользователя просто не использовать ту переменную.Потому что константа, определяющая размер массива, должна быть известна на этапе конпеляции. Очевидно, что статический массив находится прямо в экзешнике, и поэтому ресайзить его там не вариант. А динамический создаётся в рантайме в куче, которую выделяет для процесса ОС, а в куче выделяй/удаляй - не хочу
>>965546Тому что константы должны быть вычислимы в момент компиляции программы. Виталик вводит свою циферку после компиляции программы -> константа не вычислима.Размер статического массива должен быть константой потому что иначе компилятор вообще не ебет сколько ему памяти выделять на следующий стек фрейм в противном случае.Динамический массив выделяется на куче, а на стеке выглядит как один указатель (размер которого известен компилятору)
>>965540Если нужно небольших размеров динамический массив только на время выполнения функции, можешь воспользоваться функцией alloca или _alloca (одно и то же, по сути, только названия разные для разных компиляторов). Если нет - то тогда new[SIZE] и освободить не забудь при помощи delete[]. А еще лучше используй std::vector.
>>965553>>965556Так, подождите. Как я понял, то получается, что статический массив создается в памяти, которая уже используется для открытия программы, а динамический использует свободную память, которая есть в комплюктерне, так?>>965560В том то и дело, что пока надо разобраться с new и delete.Повторю вопрос - что за указатель p_darr?
>>965575https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B5%D0%BA_%D0%B2%D1%8B%D0%B7%D0%BE%D0%B2%D0%BE%D0%B2>указатель p_darrЭто и есть твой массивOP* p_darr = new OP[100];
>>965575>p_darrНу это же ребус епта.Это значит что ты p-dar ПИДАР
http://ideone.com/H9UTH6Как сделать ParamT шаблоном, при том что ReturnT указан явно? Я так понял нужно что-то вродеtemplate<class ReturnT, template<class ParamT> >но как это сделать не ясно, на SO везде сраные template<class> Containter, а не отдельные методы
>>965578Таакблятьнахуй, я совсем запутался.Вот кусок кодаint main(){ int num; cout<<"Vvedite kolichestvo elementov massiva\n"; cin>>num; int p_darr = new int[num]; for(int i=0;i<num;i++) { p_darr=i; cout<<"i = "<<i+1<<" p_darr = "<<p_darr<<endl; system("pause"); } delete [] p_darr; system("pause"); return 0;}И ты мне пишешь OP p_darr = new OP[100];К чему мне блять обращаться? К p_darr как у меня или к OP[100]?>>965580Я уже понял это
>>965586http://ideone.com/для начала
>>965584SFINAE используй, иначе никак по-моему,
>>965584function template partial specialization is not allowed
>>965584Не знаю насчёт ответа, но можно полистать это:http://en.cppreference.com/w/cpp/language/template_argument_deduction
>>965590http://ideone.com/yW83GWПосмотри здесь. Только на идеоне он не работает, запусти, например, на http://cpp.sh
Мимо программист не на C++ бугурт. Вот нахуй вы так делаете? Нахуй эти постоянные #define и typedef для каждого чиха? Ладно, допустим для большей ясности вы создаете макрос для оператора/модификатора/квантификатора, но почему вы тогда не можете использовать только 1 вариант?
>>965604И еще нах
>>965605APIENTRY определен как WINAPI. А знаете, что скрывается под WINAPI? Конечно же __stdcall, что там еще можно использовать? Это же очевидно - назвать синее красным, красное зеленым, а зеленое - синим.
>>965604Ты слишком маленький, не поймёшь. Но дам подсказку - те значения дефайнов, которые тебе показывает IDE, это значения которые были вычислены по твоему компилятору, его версии, версии ОС, наличию разных библиотек и т.д. На самом деле там большие деревья условий (IFDEF, IFNDEF), которые определяют именно тот набор дефайнов, которые ты сейчас видишь. А typedef для большей ясности, так ещё с Си повелось
>>965604Где ты в винапи С++ нашел?
>>965604Потому что в 1970-ых годах Ричи придумал язык С. В нем был препроцессор. За 40 лет ничего лучше С для системного программирования не придумали. На С же и написали WINAPI. А с++ тут только при том, что он частично обратно совместим с С и из него можно вызывать сишный код.
>>965604Это не С++, это API винды на чистом си.>программировать под ШИНДОСВ>удивляться, откуда за щекой член
>>965604Иди батхёрть в свой двор, заебал.
>>965487Еще одна илита в треде. Я так и представляю прыщавого толстого подростка, который зашел в класс, его все проигнорили, он решил хоть как-то привлечь к себе внимание, и сказал "Я под линуксом сижу". Жаль, что Ерохины продолжили обсуждать, как они вчера клеили тянок, а бабы еще больше отвернулись от этого недоразумения.
>>965641Вернись в /b/
>>965659Можно я останусь? Пожалуйста?
>>965663Если прекратишь мыслить категориями илиты, Ерохиных, тянок и пр. и перестанешь походить на типичного школьника из /b/, то можешь остаться.
В STL есть алгоритм для перегнки vector<A> в vector<B> через лямбду конвертирования?
>>965641Скажи это рарзработчикам компиляторов и компьнити практически всех языков кроме С#
>>965690Нашёл std::copy
Компилятор ругается на подобные строкиifstream infile( "alice_emma" );Пишет, что нет конструктора с *charВ то же время в интернете много подобных примеров. Если загнать имя файлы в пременную стринг, а потом ifstream infile( "alice_emma" );то это все равно не помогает.
>>965694ни один из этих людей не пишет АХАХАХА ВИНДА ХАХА ШИНДОШС БЛЮСКРИН
>>965702какой компилятор то? И какая ошибка?
>>965711gcchttps://clbin.com/xC3Ei7.pnghttps://clbin.com/xC3Ei7.png
>>965716g++ -std=c++11 вместо gcc
>>965709Сомнительное утверждение
>>965716Замени istream на ifstream.И подключи заголовочный <fstream>
>>965717Это написать в консоль?https://clbin.com/5C5aLo.png
>>965720Подключен, иначе откуда берутся все эти функции указанные компилятором. А вот замена помогла, но только приg++ -std=c++11А вот с gcc не хочетhttps://clbin.com/WG4MW1.png
>>965726gcc по умолчанию не линкует стандартную библиотеку C++ да и вообще, это компилятор СИ, а не крестов
>>965727Ой, это я по привычке видимокак неудобно получилось, интересно почему у меня столько кода другого работалоА чем там линуксогоспода нынче компилируют, а то я чет подзабыл. g++ или как там? g++ -std=c++11 мне не нравится.
>>965727Он g++ написал.Это только он по умолчанию стандартную либу линкует?
>>965730Не нравится потому что доп настройки идут, а ни из-за религии, разумеется.
>>965730g++ / clang++ / i++
>>965732тебе абсолютно везде потребуются доп настрйки, как только ты начнешь писать что-то сложнее хелло-ворлдов.
>>965733Спасибо, кстати, в некоторых местах читал, что iostream есть в fstream, но видимо меня обманули. Я прав?
>>965737У меня сейчас хелоуворлд. но приму во внимание и начну курить такие штуки.
Двач, подскажи, как создавать gui окна? В смысле не используя какие-либо наборы виджетов и api. Что-то я нагуглить не могу, мне гугл всё чьи-то очередные "самые лучшие" библиотеки подсовывает.
>>965726>подключенТы путаешь istream из <istream> и ifstream из <fstream>. Это разные классы.
>>965743Потому что все окна - это API и библиотеки. Используй самые лучшие библеотеки и не выёбывайся.
>>965745Они самые хуёвые, то что я хочу реализовать на них не возможно, даже костыли не городятся.
>>965747Напиши свой велосипед значит.
>>965750Спасибо, уже написал.
>>965747Бери голый OpenGL или обётку SFML/SDLЯ как-то делал всякие кнопки и чекбоксы для игры на SFML, это просто но писать очень много кода нужно.
>>965747Берешь любую либу, пишешь zaebashit_okno(okno_name); и рисуешь внутри опенглом что хочется.
>>965743>Двач, подскажи, как создавать gui окна? В смысле не используя какие-либо наборы виджетов и api.WinAPI гугли
>>965690>>965696Вообще-то std::transform
>>965727>да и вообще, это компилятор СИ, а не крестовВообще это драйвер. Компилятор СИ это cc1
>>965755Уже нагуглил и xlib и winapi. Ну всё! Начинается сборка моего кросплатформенного велосипеда!
>>965739Открываешь файл и там iostream юзаешь, пишешь, читаешь.
>>965730g++ -std=cxx1z -march=native -O2 -pipe
>>965768-Wall -Wextra -Ofast
>>965753>>965752>2017>OpenGLНу плес.>>965747Бери исходники fltk и переписывай на Wayland Display Server Protocol + Vulkan API.Хелловорлд будет меньше 4 кб, а сама либа работает быстро.
>>965770>-OfastЭто уже блоат и некоректные вычисления могут быть.Самая мякотка -O1 ультимейт решение без трейдоффа, но производительность может быть ниже чем -O2
>>965772>2017>OpenGLДо сих пор нет аналогов.
>>965775Есть смысл в -match=native без -Ofast?
>>965777Vulkan API.Полностью вытеснил опенгл, работает быстрее.
>>965786Есть, -march=native говорит делать ассемблерный код полностью под данный процессор, со всеми SSE, AVX2 и так далее.
>>965787Но зато кол-во строк для вывода одного треугольника возросло в 5 раз.Да и видеокарты почти не поддерживают. Нафиг делать программу, которая запустится у 2% целевой аудитории? Программа должна запускаться как можно больше где.
>>965788Я о том, что без -Ofast не будет автовекторизации (для fp-чисел), а в чём там перемалывать числа без векторизации — в XMM или в YMM — какая к чёрту разница?
>>965787> Полностью вытеснил опенглПроиграл с этого школьника, что-нибудь кроме дотки и тестовой игры его поддерживает? Кто-нибудт спешит на нём разрабатывать игры? На сколько производительность лучше? На 10%? 1000 строк чтобы нарисовать квадрат? Vulkan это не нужная параша.
>>965787Разве что в твоём манямирке.
>>965789>в 5 разНе в 5 раз это во-первых, во-вторых это делается один единый раз при написании своей либы. Вулкан не имеет оверхедов, опенгл много чего выполняет под капотом в ущерб производительности.>Как можно больше где Для этого его и сделали, теперь не надо пердолиься с версиями OpenGL, OpenGLES, теперь у нас единое API которое работает на всех платформах.API поддерживается даже на древних встройках интела, не знаю о чем ты там говоришь.
>>965790Ofast это не только автовекторизация, и кстати а разве она в O2 не включена?Там еще несколько сложных алгоритмов оптимизации кода, которые могут сделать код большим и медленным, поэтому надо отдельной опцией указать быстрые вычисления -ffast-math если не ошибаюсь.
>>965791На нем квейк переписали, на вулкан уже разработаны движки и портируются существующие, так что вылезай из манямирка.
>>965794> Ofast это не только автовекторизация, и кстати а разве она в O2 не включена?Для векторизации fp обычно нужна ассоциативность, которая без -ffast-math не предполагается.
>>96579513 игр, проигралhttps://en.wikipedia.org/wiki/List_of_games_with_Vulkan_supportДостаточно того что нужно написать 1000 строк кода для того чтобы нарисовать квадрат, это уже делает его не нужной парашей.
>>965796А еще надо знать что в твоем коде есть что векторизировать.
>>965799Спасибо, Капитан К.О.
>>965798Работать не хочешь, ну и хорошо. Рыночек таких быстро порешает.
>>965803> Работать не хочешьЕсли бы ты знал как сложно делать игры на чистом API, то ты бы не пиздел такой хуйни. И на OpenGL делать игры это достаточно серьёзный жизненный шаг, а что там на Vulkan будет я и не представляю.
>>965798Заметь что почти все они на разных движках. Тоесть разработка игры на вулкане уже не отличается от разработки на опенгл, это пока что только игр относится, в скором будующем и все графические либы на него перекатят.
>>965811> 50 строк кода на OpenGL> 1000 строк кода на Vulkan> разработка игры на вулкане уже не отличается от разработки на опенглПроиграл
>>965793>опенгл много чего выполняет под капотом в ущерб производительности.Ты точно про core профиль?>API поддерживается даже на древних встройках интела, не знаю о чем ты там говоришь.А у меня почему-то другая инфа, всегда думал, что он поддерживается только на самых свежих картах, и то если поставить дополнительные дрова для вулкана.
>>965809На вулкане не игры делаются а либы, а на либах движки.
>>965814Ты путаешь разработку игры и движка, мань.
>>965821Точно.>у меня другая инфаНу под свежее усерднее дрова пишут, всегда так.
https://paste.ee/p/iYdFSБлядь блядь блядь блядь блядь блядь блядь, почему нельзя выбрать перегруженный метод без мазохизма?
>>965833Но зачем:? Ты занимаешься какой-то бесполезной дрочкой.
Как std::initializer_list и std::function передаются как параметры? Есть смысл принимать ссылку на них или by-value норм?
>>965837by value
Есть у меня 3 процесса. Я точно не знаю какие я буду запускать(через CreateProcess), но должен выполнять(закрывать?) их параллельно. Могу ли я использовать WaitForMultipleObjects и передавать туда хэндл по два процесса даже если и не запускал их? что будет от этого? Если допустим для первого процесса я пишу "жди второго и третьего" а второй я даже не запускал. Хендл второго будет передавть мол "завершен" и первый будет ожидать только третьего? Или я не правильно понял принцип работы WaitForMultipleObjects ? Объясните, пожалуйста.
>>965850Это не WinAPI-тред.
>>965851зато это тред того где я эти винапи юзаю.
>>965853Совсем дебил?
>>965850ап
>>965855Даун.
>>965835У QProcess два сигнала finished, один из которых не упомянут в документации.
>>965837Передавать по ссылке и юзать семантику переноса, std::move(list), чтобы ресурсы на куче не копировались.
>>965895>по ссылкеПо значению, конечно, объебался.
Двач, можешь подсказать как можно реализовать offline desktop текстовый редактор который бы поддерживал html, css и javascript?
>>966052Аналоги есть или это просто хотелка такая?
>>966059Хотелка.
>>965895Это ты std::move предлагаешь к std::initializer_list применять?! Разупорись.
Не могу придумать, как без говнокода загружать в память и сохранять из памяти дерево. Не бинарное, количество потомков и уровней неизвестно, у некоторых концевых вершин есть доп. массив с информацией.
Ребят, в С++ начинающийКакой компилятор посоветуете?ибо я так тред почитал и понял, что многие - шлакОИ заодно литературу какую почитать было бы неплохо
>>966086Там сверху шапка есть. Что значит компилятор - шлак?
>>966091да хуй знаетчто-то не поддерживаетя не особо вникал не бейте меня
>>966093Как тебя не бить, когда ты несешь какую-то отбитую чушь, и потом говоришь - ОЙ Я НЕ ЧИТАЛ ОБЬЯСНИТЕ МНЕ. Иди блядь и читай.
>>966101бля, соррянчуток неадекватнашёл
Неофит на связи. Почему в C и C++ так любят объявлять сигнатуры функций в одном файле (.h), а определяют их в другом файле (.cpp) или в том же файле чуть позже? И с классами та же тема, сигнатуры хуячите в описании класса, а определяете вообще хз где:ClassName::FuncName()Почему нельзя сразу определять тело функций? Какой профит с описания лишь сигнатур? Типа чтобы точки входа в функцию рядом располагались, и по ним можно было бы прыгать по указателю?
>>966086vim — лутший конпелятор.
>>966118Почитай как работает препроцессор и как происходит линковка
>>966118Чтобы ты не лез куда попало. Видишь интерфейс - им и пользуйся. Ну и, естественно, ускорение времени компиляции, потому что разным юнитам трансляции придется делать одно и то же, если все подряд хуячить в хэдере. Алсо, платформенно-зависимые куски приходится дефайнить (хотя это один из самых хуевых вариантов написания кросс-платформенной библиотеки), и тогда у тебя будет все засрано, как в WINAPI (ох уж эти уебанские описания COM интерфейсов и перехватчиков, фу блять, как вспомню только)
>>966123>дефайнить ... это один из самых хуевых вариантов написания кросс-платформенной библиотекиТы хотела написать "дефайнить — это единственный существующий метод написания кросс-платформенной библиотеки", Манюня.
>>966124Таки нет. Почитай про wrapper facade, им заворачивают платформенно-зависимый код. Зацепив к одному заголовочнику , например, несколько вариантов исходников (которые выбираются во время сборки) можно избавиться от этого говна. Ну и про PIMPL не забывай, это, конечно же , лишний оверхед, но для кросс платформенности нормально.
>>966123А если функции в хедере void или возвращают указатели, можно инклудить все зависимости в cpp, а хедер будет чистый и не потянет зависимости выше по иерархии инклудов
>>965850МСДН тебе тут штоле?
>>966127>которые выбираются во время сборкиСвятым духом выбираются?
>>966084Всё как обычно: определяешь operator<< и operator>> для каждого типа.
>>966132Системой сборки блять. Что ты за человек то. Это гораздо лучше, чем городить блядские дефайны где ни попадь, а к слову, я даже знаю одного человека, которые дефайнил целые функции, потому что считал, что так быстрее будет.
>>966135>Системой сборки блять. Что ты за человек то. Которая написана на C(++) и где были использованы эти кроссплатформенные дефайны.Ну или платформа определяется запуском препроцессора над файлом с ifdef-ами и проверкой, какие куски этого файла выжили.
>>966136>кроссплатформенные дефайны.*дефайны для определения платформы
>>966136Конфиг конфигом, я тебе про платформенно-зависимый код говорю. Тот д же мьютекс под разными осями будет иметь в итоге один общий интерфейс, в то время как логика создания/захвата и т.д. может различаться. Проще и чище вынести код для каждой платформы в отдельный сорец и там пилить логику, но уже без дефайнов, чем ковыряться в куче говна. Об этом речь. А система сборки для того и нужна, чтобы этот мусор разгрести.
>>966142>Конфиг конфигом, я тебе про платформенно-зависимый код говорю.Я понял, петушочек, что ты хочешь сказать. Я говорю о том же.Объясняю ещё раз. В твоей системе сборки ты проверяешь текущую платформу каким-нибудь такif($platform==OSX) srcs+=(mutex/impl/osx.cpp);endif(это псевдокодкод условной системы сборки).Только вот значение $platform:1) Определяется при сборке этой системы сборки с помощью тех же дефайнов.2) Определяется при запуске системы сборки выполнением каких-нибудь скриптов, которые вызывают препроцессор и опять же смотрят, какие переменные в нём предопределены.
Что может пойти не так?
>>966202Не совсем понятно зачем наследоваться. Можно жеtemplate<class PtrT>using Ptr = std::shared_ptr<PtrT>;
>>966217typename после = наверное ещё добавить надо
>>966202Быть может я и не прав, но вроде как локальные объекты move не возвращаюткто-нить знающий, поясните, прав я или нет
>>966220или нет
>>966221О, этого я не заметил. Да, это dangling reference.
>>966225Отлично, значит я хоть что-то знаю
>>966217А оператор куда писать?
>>966236А зачем?
>>966134А алгоритм сохранения дера то какой?
>>966239Какой тебе будет удобнее.
>>966238Так можно писатьPtr<A> = Ptr<B>(new B)вместоshared_ptr<A> = dynamic_pointer_cast<A>(shared_ptr<B>(new B))
>>966240Это троллинг? Мой вопрос и заключался в том, как сохранить дерево, при помощи какого алгоритма. Синтаксические вопросы дело последние.
>>966261>при помощи какого алгоритма.Это троллинг?При помощи алгоритма обхода дерева.
>>966280Вот есть дерево. Я его рекурсивно обхожу. Что дальше? Что я должен записать в файл?
>>966283https://ideone.com/yOfNd3Пиздец как хуёво у крестовиков всёмимо дотнетчик
Changes between C++14 and C++17 DIShttps://isocpp.org/files/papers/p0636r0.html
>>966239Для маленьких деревьев: рекурсивный, блядь.Для больших деревьев: обход дерева с поворотом ссылок в обратную сторону.
>>966338Как это в файл записать так, чтобы потом востановить?
>>966330Зачем ++ у bool убрали?А -- остался?
>>966351Сам-то как думаешь?http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0002r1.html
>>966330Декларацию function() throw(X) убрали?Помню как-то написал throw(A, B), и спустя время где-то внутри дочерних вызовов внутри этой функции выкидывалось С, и это исключение невозможно было поймать, как будто его кидает main. Долго пытался понять что происходит вообще.Эта хрень требует указывать абсолютно все исключения которые могут возникнуть, поэтому убрали видимо.
>>966341Мозг себе сейчас сломаю тем, чтобы хоть как-то тебе помочь, но так, чтобы ты ещё и сам подумал головой.https://paste.ee/p/SWHj8operator>> напиши сам.
Кроме того, твой опциональный массив должен быть частью payload - само дерево в идеале должно содержать только payload и быть template-ом, чтобы ты мог использовать его c другими классами без изменения.
Привет, крестовики. Я тут задумался недавно, а зачем вообще C++ и почему не пишут все на C.То есть приведите примеры где C++ необходим.
>>966406Примеры где с++ необходим — абсолютно все случаи, кроме написания драйверов.
>>966406>То есть приведите примеры где C++ необходим.Таких примеров нет, оба языка Тьюринг-полные.Просто на C++ ты напишешь код короче и безопаснее, и сделаешь это быстрее.
>>966406Блять, что за такая тупорылая постановка вопроса "где необходим"?
Неофит с очередным вопросом. Стоит ли использовать константы по поводу и без? Есть ли ощутимая разница в производительности, есть ли разница в скорости компиляции? А то пока что единственная причина, по которой стоит использовать const - чтобы "не забыть, что переменную нельзя изменять", что мне кажется как то надуманно и не особо важно, но в то же время по const'ам аж главы в книгах пишут.
>>966406Привет, крестовики. Я тут задумался недавно, а зачем вообще C++ и почему не пишут все на haskell.То есть приведите примеры где C++ необходим.
>>966283>Вот есть дерево. Я его рекурсивно обхожу. Что дальше? Что я должен записать в файл? Последовательно обхода, наркоман.Ты, прежде чем такие вопросы задавать, указывай возраст, мол студент первого курса. Итд.И пробуй хоть гуглом воспользоваться.
>>965604Это пример прекрасного и мощного кода. Такого кода больше нет, одно хипстерство и пидорство. Его можно сравнить с огромным, брутальным промышленным комплексом. А WinAPI, кстати - лучшая в мире библиотека для каких-либо языков программирования. Ибо она умеет всё.
>>966406Свой динамический массив и строку уже написал?
>>966422> что мне кажется как то надуманно и не особо важно> но в то же время по const'ам аж главы в книгах пишутТак может потому они и важны раз пишут целые главы?
>>966430В том то и дело, я хочу узнать, не скрывается ли за const что нибудь еще, кроме как помощь не забыть и не проебать значение переменной.
>>966431Почитай, например, про константные функции классов.
>>965787Скажи мне, друг, а ты проводил тесты? Сравнивал производительность одной и той же программы, написанной с использованием OpenGL и с использованием Vulkan?Или ты просто прочитал где-то, что Vulkan - это модно, молодёжно, будут бабы давать, и OpenGL уже не нужен? Знаешь ли ты о синхронизации и о том, как с не бороться? О том, как вручную управлять ресурсами? Сможешь ли ты хотя бы написать на вулкане программу, которая будет по производительности хотя бы такая же, как аналогичная на OpenGL?
Предлагаю в С++20 вызывать методы указателя через ~, а -> отдать байтоёбам,охуенное жеauto x = new Yobax~call()
>>966118Чтобы у тебя не возникало каши при желании просмотреть список методов класса, не путаясь в реализациях.
>>966406Да хотя бы тот же RAII.
>>966434Лучше бы назвали Pukan
>>965793> API поддерживается даже на древних встройках интела, не знаю о чем ты там говоришь. Чушь собачья.Нвидия, например, напиздела с поддержкой.https://devtalk.nvidia.com/default/topic/917161/vulkan/fermi-support-/post/4810640/#4810640
>>966351>А -- остался?Шта?
>>966351> -- остался?Его и не было никогда.
>>966441>>966442А нахуй тогда ++ был, если -- небыло?
>>966447The ++ operator for bool was deprecated in the original 1998 C++ standard
>>966448Кому вообще пришло в голову инкриментировать bool?
>>966449Декремент ноги.
>>966160>> 1) Определяется при сборке этой системы сборки с помощью тех же дефайнов.Каким хуем ты приплел исходники из кода к парсеру системы сборки?!>> 2) Определяется при запуске системы сборки выполнением каких-нибудь скриптов, которые вызывают препроцессор и опять же смотрят, какие переменные в нём предопределены.Это ты так привык, но это не обязательно. Хотя с использованием какого-то конфига так проще всего, потому что и с этим зхэдером, по факту, ты работаешь только вскользь.
>>966428Двачую !
>>966519>програмирование на с++>>961839 (OP)Сюда пиздуй
>>966428Погодите, погодите. Это крестовик-затейник сейчас траллет сишника строками? До чего мир докатился, блять.
>>966558Посмотрите, долбоёб-сишник считает, что у него в языке отличные строки.На, почитай, не позорься: http://russian.joelonsoftware.com/Articles/BacktoBasics.html
>>961839 (OP)У меня есть два байта данных (uint16_t, quint16). Оригинально они задумывались содержать беззнаковое целое. Как можно представить эти данные во float (забросить их в least significant bytes) и signed int? Главное, чтобы результат имел то же бинарное представление, что и оригинальное число.Это какой-то очередной posanskiy_cast?
>>966586долбоеб строки это просто байты в памяти, а по твоей ссылке какойто индус несет хуйню
>>966653union type punning
>>966653memcpy
>>966657>Не знать ДжоэлаЕсли бы ты почитал повнимательнее, ты бы понял, что строки - гораздо более сложная вещь, чем просто байты в памяти.
Накидайте свои крутые assert макросы, больше всего интересуют универсальные __FILE__ и __FUNCTION__ для разных компиляторовИспользовал бы стандартный, но там какая-то еботня с NDEBUG, который надо отслеживать в чужих хедерахИ ещё нельзя написать return assert(x)
>>966710эээ, __LINE__ ?
>>966707что там сложного? длина не указана? городить структуру и хранить со строкой? твой джоэл крудошлеп и раздул проблему на пустом месте
>>966716>Да здания - это же просто нагромождения арматурин с цементом, что там может быть сложного?Когда ты сделаешь структуру и будешь хранить её вместе со строкой (кстати, так делать нельзя, ведь структура - это часть реализации, значит, в хедере ей не место), то у тебя получится тот же самый C++. Только вымученный, со странными названиями функций и без неймспейсов.
>>966665>union type punningСработало. Спасибо, анончик.memcpy - это очень мощно, но тоже должно работать
>>966425Мне хотелось бы обходить его рекурсивно, чтобы уменьшить размер выходного файла. Студент 2 курса. Алсо в гугле только бинарные деревья видел.
>>966762Рекурсивный код тормозной.
>>966773А вот мне плевать на время исполнения, я память на харде хочу экономить.
>>966779Каким образом рекурсивный обход дерева будет уменьшать размер итогового файла?
>>966779Долбоеб.Исполняемый файл по дефолту большой, особенно на винде, ты и 40 байт не съэкономишь
>>966780При последовательном обходе в выходной файл придется записывать полный путь каждой веткиВершина/вершина2уровня1Вершина/вершина2уровня2/вершина3уровня1Вершина/вершина2уровня2/вершина3уровня2А вот при рекурсивномВершина(Вершина2уровня1/Вершина2уровня2(ТУТ ЕЩЕ ДВЕ ВЕРШИНЫ МНЕ ЛЕНЬ))
>>966788Тред не читай, сразу отвечай. Я теоретик, мне насрать на конкретные цифры, это 1. Я говорил, про выходной файл, а не исполняемый.
>>966791>Я говорил, про выходной файл, а не исполняемый. Это 2.
>>966789Не понимаю. Можешь на нормальном примере пояснить?
>>966794Это описание для дерева вида пикрил.
>>966789>Вершина/вершина 2ого уровня-1ая>Вершина/вершина 2-ого уровня2-ая/вершина3-его уровня1-ая>Вершина/вершина2уровня2/вершина3уровня2
>>966730пожалуйста :3
>>966796Можно и без рекурсии такое построение сделать. Тебе нужен поиск в глубину (я так понимаю, ты его используешь).Ну так-то я и не знаю, что сказать. Если ты просто будешь выводить во время обхода номера вершин в строку, то получишь практически тоже самое, что хотел. Тут надо только мозг включить и расставить скобок и слешей, где надо.
>>966823Ну вот, скобки и слеши. То есть у меня в файле будет каждая вершина упоминаться ровно один раз. Именно о таком алгоритме я и спрашивал. Алсо я придумал его еще до того, как написал сюда, потом решил, что он несработает из-за синтаксиса, а через 20 миут понял, что все ок. Т.е. я около суток морочу всем здесь голову.
>>966827По теории графов и алгоритмам наверни вводный курс. Будь ты хоть макакой, всё равно пригодится.
>>966726а я бы не тащил работу со строками в реализацию языка. в любом случае, джоэл сосет
>>966831Я уже прошел и теорию графов(предмет назывался наглядная геометрия и топология) и теорию деревьев (авл, красночерные и прочие кошерные вещи), введение в мат логику и теорию алгоритмов тоже было. Все изученное использую. Меня просто переклинило.
>>966848Научись тогда гуглить чтоли. И не загоняйся.
>>966586>долбоёб-сишникМимо, я долбоёб-шарпист
var i_need = get(&perekat);
>>966912Эй, шарпист. Нормальные пацаны юзают auto
>>961839 (OP)I need Help, аноны!Как воспроизвести вот это условие: дважды вычислить значение выражения, используя функции, возвращающие void и не voidНа примере этого кода: http://rgho.st/private/6pWf8Nz4L/4f7016b7ba8c1a06444ae6ff71440156Пытался вкурить за сам void - нихуя
>>966726>кстати, так делать нельзя, ведь структура - это часть реализации, значит, в хедере ей не местоТвои обезьяньи java-привычки тут не работают, макакич.
>>966449>Кому вообще пришло в голову инкриментировать bool?На реддите чел плакался, что ему придется кучу кода пидорасить из-за этого. Из рахи, судя по нику.
Есть ли способ подсчёта вхождений подстроки в строку быстрее чем тот, который везде дают в качестве стандартного? size_t count = 0, l = sub.length(); for (size_t offset = str.find(sub); offset != std::string::npos; offset = str.find(sub, offset + l)) { ++count; }
>>961839 (OP)>>961839 (OP)>>961839 (OP)Добавляйте слово "кресты" в шапку, иначе искать неудобно.
>>966938Джава - абсолютнейшее говно с точки зрения отделения интерфейса от реализации. Вся документация обычно в исходниках - если нужна инфа, нужно вручную читать исходники. Функции объявляются и на месте реализовываются, в итоге исходный код превращается в кашу.Я понимаю, для студента вроде тебя нормально держать в хедере таборы цыган, которые создают мешанину, уязвимости и никогда не пригодятся пользователю, но человек со вкусом такого делать не будет.>>966844А этого и нет в реализации языка. Плюсовый std::string - лишь часть стандартной библиотеки, ты волен не использовать его. Можешь взять любой васянский типа CString или QString и даже написать свою версию.А из статьи ты так ничего и не понял.
Почемуtemplate<typename T>void yoba(vector<T> xx)не принимает initializer_list?Если добавить функциюtemplate<typename T>void yoba(initializer_list<T> xx) {yoba(vector<T>(xx);}то работает
>>967042ищи по cppthread
Прогромач помогач, не знаю как гуглить некоторые вопросы, а есди и знаю, то поисковая выдача не радует.Вот есть у меня структура. Я вызываю функцию и хочу чтобы эта функция возращала ссылку на такую структуру, зосданную внутри этой функции, причем чтобы этот объект потом не исчезал.Сейчас компилятор не ругается на такой код[code]structure Al{int cogolikl;};Al Yoba(int n){ Al Cus = new Al; (Cus).n = 1499; return Cus}[/code]Значение полученное функцией использую как ссылку.Можно это сделать как-нибудь красивее и приятнее?
>>967069Ошибочка, на>return *Cus он ругаетсяСейчас перепишу в пасбин.
>>967070pastebin.com/ULLCHncU
>>967071У тебя будет висячая ссылка.Лучше возвращай unique_ptr
>>967073Почему указатель то висячий? Я же через нью создавал. И не хотелось бы для такой простой штуки прибегать к стль.
>>967074Ты из функции возвращаешь не адрес переменной (указатель), а сам объект.
>>967075То есть если я верну Cus, то это все исправит?
>>967078Да и потом ты его должен сам удалить.
>>967079Да, про делит помню
http://ideone.com/YcuLtvЭто что, нужно писать специализации для каждого возможного char[N]? Почему вторая функция не ловит строку?
>>967082А если сделать так http://ideone.com/mG3GnY то уже std::string не ловит...
Чёт я совсем запутался. Нужен только цпп и директИКС.Всё правильно натыкал?
>>967092А нахуй тебе директикс?
>>967093писать читычисто спортивный интерес не школьник
>>967094Ладно, тогда хорошо.У тебя ОС семёрка, судя по всему? Я просто насчёт SDK не уверен. Пакет для графических инструментов 8.1 - это немного не то. У меня на десятке стоит Windows 10 SDK (10.0.10586.0). А вот для Win7 я пункта что-то не вижу.Да, если что, отладчик графики и профилировщик GPU в Windows 7 работать полноценно не будет. Он ещё в VS2013 не работал нормально на семёрке.И да, отметь MSBuild.
Как можно сжать и расжать std::string через zlib/bz2/lzma? А то как не посмотришь на примеры, там тыща каких-то стримов-хуимов, буферов-хуюферов начзначать надо. Хочу как в питонеs = b"asdfg"compressed = bz2.compress(s)
>>967097Да, семёрка. Уже в тренде были вопросы по поводу СДК для 8.1 - вроде говорили, что для 7ки подходит.Я тогда и 8.1 SDK тоже пну
>>967099Графические инструменты убери, они не нужны. Все либы есть в обычном SDK.
>>967055>Я понимаю, для студента вроде тебя нормально держать в хедере таборы цыган, которые создают мешанину, уязвимости и никогда не пригодятся пользователю, но человек со вкусом такого делать не будет.Да-да, java-дебил, при реализации строк нужно обязательно применить pimpl-idiom, а строки создавать только фабрикой.
>>967082Там с автоматическим выводом параметра шаблона что-то не то. В обоих твоих случаях помогает явное указание, типа test<const char *>("test");
>>967023Есть. Гугли.
Если конструктор копирования вызывается миллиард раз, нормально пометить его inline и написать в хедере рядом с классом? Почему так никто не делает?
>>966710__FUNCTION__ вроде не все компиляторы поддерживают, в отличие от __LINE__, __FILE__Никакой еботни с ndebug нет, просто он отключает ассерты. Если наоборот хочешь включить то просто пишешь #ifndef nbebug #undef ndebug #endifАлсо, мне нравится такой ассерт:#define asserted ? (void*)0 : fprintf(stderr, "Assertation failed.")x != NULL asserted;
>>967121Ну и каков профит на примере?
>>967121потому-что слово inline ничего не меняет, кроме разрешения ODR.
>>967113Дегенерат-студент вспомнил термины из лекций полугодовалой давности и решил, что это то, о чём я говорю. Ну ладно, со временем ты поймёшь, что значит не показывать пользователю то, что ему не нужно.
>>967082>Это что, нужно писать специализации для каждого возможного char[N]?Нет. http://ideone.com/Plv64x>>967121> Почему так никто не делает?Так все делают.>>967136> ба-бахДержи банан.
>>967129Если конструктор присваивает пару указателей и не исполняет кода, неплохо бы его инлайнить чтобы копирование объектов было похоже на инициализацию структуры, без вызова функции конструктора>>967132Ни разу не видел чтобы конструкторы писали в хедере
>>967143>Ни разу не видел чтобы конструкторы писали в хедереДивись, хлопець https://github.com/llvm-mirror/libcxx/blob/607e0c71ec4f7fd377ad3f6c47b08dbe89f66eaa/include/vector#L1063
>>967141Знаешь, это твоё дело. Если ты не умеешь делать то, что ты пишешь, опрятным и юзабельным, то это целиком твои проблемы. Просто когда у тебя возникнет вопрос, а почему это никто не хочет пользоваться тем, что ты создал, вспомни мои слова.
Как в C++ использовать скрипты на Lua? Погуглил, все советуют разное, кто-то LuaBridge, кто-то swig. Что все-таки лучше использовать?
>>967165Я бы взял то, что тащит не особо много кода за собой, уже написан какой-то функционал для работы инициализация и всё такое, есть документация/туторы.
>>967165Есть же официальный интерпретатор луа, написанный на Сях. Не подойдет?
>>967059Сам спросил - сам ответил. Чтобы работал initializer_list, должен быть известен тип initialiser_list. Конструкторов может быть несколько. То есть, разумеется, можно добавить в стандарт исключение для объектов с одним определённым конструктором, но это противоречит идеологии продажи оружия для уничтожения ноги.
>>967173Может и подойдет, я не знаю, поэтому и спрашиваю.У меня есть класс, у каждого экземпляра должен быть свой скрипт на Lua. Есть события, которые вызывают определенные методы. Эти методы должны вызывать соответствующие колбэки в Lua. И наоборот, вызов определенных функций в Lua, должен вызывать методы в классе.Мне нужно то, что позволит это сделать проще всего.
>>967073>У тебя будет висячая ссылка.У него не ссылка, а указатель.>>967075У него опечатка: тип возврата - указатель, а возвращает он объект. Очевидно, что нужно звёздочку из ретурна убрать.
>>966938>>967113Интерфейс должен быть отделён от реализации, и технология 80ых годов не даёт сделать это в С/C++ без пимпл. Deal with it, модули уже в пути.
>>967194>модули уже в пути.Которые просто precompiled headers, ага.
Если у меня есть string A, а мне нужно разделить ее на две строки, которые в изходной строке разделяются каким-нибудь символом, например тильдой, то как мне это сделать? Видел очень много примеров типа string B = strtok(A, "~");илиstring B = strtok(A.c_str(), "~");но во-первых мой g++ отказывается такое есть из-за проблемы с конст чар, а во-вторых видел мнение, что это сишный код, а мы пишем на плюсах, поэтому стоит избегать такого.
>>967238Методы find() и substr() класса std::string в помощь.
>>967119>ГуглиА как ты думаешь, как я нашёл именно этот способ и почему спрашиваю, нет ли ещё? Может потому что везде этот способ предлагают.Суффиксные массивы/деревья не в счёт, заебёшься с их быстрой реализацией.
>>967023>Есть ли способ подсчёта вхождений подстроки в строку быстрее чем тот, который везде дают в качестве стандартного?Это зависит от того, какой алгоритм испльзован в std::string::find. Самый быстрый - Кнутта-Морриса-Пратта, ЕМНИП.
>>967023Олсо, std::find неоптимален для пересекающихся вхождений: в тех случаях, в которых КМП-поиск пропускает символы, std::find этого не сделает, так как ты вызываешь его много раз, а не один.
>>967335Точнее: неоптимален для самонепересекающегося запроса.Пример: строка 123412341234Запрос: строка 1234КМП-поиск сравнит каждый символ 1 раз, а тот алгоритм, который ты нашёл, сравнит все символы кроме "1" два раза.Препроцессинг КМП-поиска можно приколхозить к std::string::find и будет тот же КМП-поиск.
>>967194Ну почему не даёт. Во-первых, можно хранить внутренние функции в .c, а не в .h. Во-вторых, в случае со строкой можно делать так: вместо char использовать void, в первых байтах хранить информацию-заголовок, а в оставшихся - данные. Для обработки написать кучу разных функций, знающих, как работать с таким форматом. Что, собственно, и делается в C++, только без костылей.Вообще, языку Си не хватает только strong typedefs и неймспейсов для безопасности.
>>967364>PCHAR и PVOIDФикс. Чёртова макаба.
>>967364>Во-первых, можно хранить внутренние функции в .c, а не в .h.Это крестотред. Декларации всех методов должны быть в заголовке - фиг бы с ними, с функциями.Не могу понять, почему нужен pvoid для строки. Что мешает затайпдефить структуру? Чем структура отличается от указателя? Ведь и то, и другое - метаинформация.
>>967372Это было к вопросу о том, как нормально реализовать строку в С, т.к. pchar - слишком медленный вариант (читай Джоэла выше).Проблема структуры "указатель - длина" в том, что длину строки, по-хорошему, нельзя оставлять открытой для изменения. Это небезопасно, это путает пользователя и это вызывает вопросы вида "А что будет, если я сделаю strStruct.size = 100500; CopyStr(strStruct, strStruct2);?". Более того, некоторые так и будут делать.Задокументировать всё, конечно, можно, но гораздо лучше, если таких вопросов не будет возникать in the first place.
>>967377А, и ещё. Положив size открытым полем в структуру, ты больше не сможешь переименовать его или сильно изменить. Потому что тогда у пользователей всё сломается. А спрятав реализацию, ты спокойно можешь менять там что угодно, главное, чтобы открытый API сохранял свою работоспособность.
>>967334Спасибо за подсказку. Только я ннп, как я должен находить "разделитель, который не должен нигде более встречаться", он же "любой символ, не входящий в алфавит".
>>967377>Проблема структуры "указатель - длина" в том, что длину строки, по-хорошему, нельзя оставлять открытой для изменения.Приватный size, публичный геттер. Но в сях с этим хуже, да.>"А что будет, если я сделаю strStruct.size = 100500; CopyStr(strStruct, strStruct2);?". Более того, некоторые так и будут делать.Эти ошибки можно делать и без этого. Не надо беспокоиться о безопасности, которой нет.>ты больше не сможешь переименовать его>или сильно изменитьЗачем? Почему нельзя в объявлении класса оставить только сигнатуру? Зачем мне вообще менять метод size() для элементарной структуры? Каким образом изменение метода вычисления size может сломать программу?
>>967382Это нужно только для того, чтобы остановить поиск. string.find останавливает поиск сама с учётом сохранённой длины строки, и в своём цикле ты не должен пытаться заскочить за конец строки. Во всех учебниках написан алгоритм для строки неизвестной длины.
>>967400Запилил. Получается гораздо медленнее чем встроенным.
>>964526Reverse Engineering for BeginnersDennis Yurichev
>>967422На строках длиной в 10 символов скорее всего будет медленнее.
https://github.com/gcc-mirror/gcc/blob/9d0507742960aa9f2b99bc6e9584655ecc611792/libstdc++-v3/include/bits/stl_algobase.hКакого ляда нету lower_bound с выбором компаратора? По стандарту должно быть, где оно? Точнее, почему оно с двумя подчёркиваниями?>>967422Нужно больше инлайнов, лол.Попробуй запилить весь поиск без использований std::string::find(). Я не советчик, впрочем: просто сказал про КМП.
>>967436Олсо, это 5.4.0. В 6.3.0 то же самое.https://github.com/gcc-mirror/gcc/blob/4b5e15daff8b54440e3fda451c318ad31e532fab/libstdc++-v3/include/bits/stl_algobase.h
>>967398Я о сях говорил, у крестов таких проблем нет.>Зачем? Почему нельзя в объявлении класса оставить только сигнатуру? Зачем мне вообще менять метод size() для элементарной структуры?Опять же, в сях не может быть метода size(). Может быть только функция GetSize(MyString* str) или публичный, открытый для всех член структуры. От последнего варианта нужно бежать как от огня.>Каким образом изменение метода вычисления size может сломать программу?Если это плюсовый метод, то, опять же, никак. Если это публичный член структуры в Си, то вот тебе сценарий:Изначально хранилась пара "Указатель - длина". Для нужд других функций её поменяли на "Указатель на начало - указатель на конец". Всё, поля size у структуры больше нет. У пользователей всё поломалось.Поэтому хранить сложные объекты в чистом Си в виде структур абсолютно некорректно. Поэтому и вариант с pvoid - единственный нормальный.
>>967179Ну вообще мне 4 функции пришлось добавить, поэтому спросил
>>967434Искомая строчка в пределах 20 символов. Строка в которой ведётся поиск - десятки кб.>>967436>Нужно больше инлайновСложна, сложна>без использований std::string::find()Ну так я и попробовал через КМП. Вышло слишком медленно.
>>967427>Reverse Engineering for Beginners>Dennis YurichevДушевное спасибо. Именно оно
>>967377>Проблема структуры "указатель - длина" в том, что длину строки, по-хорошему, нельзя оставлять открытой для изменения.>>967380>А, и ещё. Положив size открытым полем в структуру, ты больше не сможешь переименовать его или сильно изменить. Java-макака перечитала букварей по о-о-пе а-ля Бради Гуч и теперь с умным видом поучает всех банальностям.
>>967059>Почему>>template<typename T>>void yoba(vector<T> xx)>>не принимает initializer_list?Потому что шаблон vector<T> не может заматчить initializer_list<T>.Если ты думал, что тут выстрелит конструктор вектора, принимающий initializer_list и произойдёт implicit conversion, то ты жестоко ошибался. Это происходит при overload resolution, который происходит в более поздней фазе компиляции, чем инстанциация темплейтов.
Братия, вопросы. а) Имею (упрощенно):static struct { Trigger trigger; } ctrls[] = { { Trigger(HOLD_CYCLES, CRIT_TEMPERATURE_C), }, { Trigger(HOLD_CYCLES, CRIT_TEMPERATURE_C) }};По стандарту, должны вызываться копи-конструкторы, с помощью которых экземпляры триггеров попадут в массив? А исходные объекты создаются где, в стеке? Все сразу первым делом, и потом копируются, или создался-скопировался каждый по очереди? Мне важно, потому что стек ппц маленький. И еще любопытно: вот эти временные объекты - они rvalue? Для них будет вызыван move-конструктор вместо copy, или нет и не будет?2) Дальше по тексту будет что-то вродеfor (auto &ctrl : ctrls) {}. В данном случае будет ли какая-нибудь разница между for (auto &&ctrl : ctrls) и for (auto &ctrl : ctrls)? Если здесь не будет, то где будет? Не предлагайте писать for (const auto &ctrl : ctrls), у меня там вызывается фкункция, изменяющая состояние объекта.
>>967487Хм, накосячил что-то внезапно. Должно бытьstatic struct {Trigger trigger;} ctrls[] = {
>>967487Ну напиши что-нибудь простое и проверь, как это на самом деле работает. У меня не вызывался конструктор копирования. Возможно, что я не так задачу понял или не шарю.http://ideone.com/KDH1h2>разница между for (auto &&ctrl : ctrls) и for (auto &ctrl : ctrls)Ну для rvalue ссылок будет конструктор перемещения использоваться, так что я бы не стал этим баловаться в цикле.
>>967502>Ну для rvalue ссылок будет конструктор перемещения использоватьсяВ смысле, можно закорраптить элементы в структуре данных.
>>967487>>967502>>967505Бля, ну ты понел. Не научился ещё объяснять.
>>967502>Ну для rvalue ссылок будет конструктор перемещения использоваться, так что я бы не стал этим баловаться в цикле.
>>967520Действительно, херню сморозил.(auto &&ctrl : ctrls) == (Trigger &ctrl : ctrls)Судя по комментариям из кода отсюда:http://en.cppreference.com/w/cpp/language/range-for
Новый вопрос: как мне из отрицательного float, 0.0f и положительного float сделать -чото, 0 и +чото соответственно?Для интов это элементарно: return b-a. А для флоатов?>>967447>Если это плюсовый метод, то, опять же, никак. Если это публичный член структуры в Си, то вот тебе сценарий:В C безопасности нет, зачем эта осторожность? Разве что для успеха ловли багов.>Изначально хранилась пара "Указатель - длина". Для нужд других функций её поменяли на "Указатель на начало - указатель на конец". Всё, поля size у структуры больше нет. У пользователей всё поломалось.Не-а, не катит. Откуда у пользователей взялась старая версия? Сериализация должа быть с версионированием, если ты собираешься менять класструктуру.>>967436>Какого ляда нету lower_bound с выбором компаратора? По стандарту должно быть, где оно? Точнее, почему оно с двумя подчёркиваниями?Сам спросил, сам отвечаю: задефайнено в другом месте. Креактор не подхыватывает почему-то.
>>967530>Новый вопрос: как мне из отрицательного float, 0.0f и положительного float сделать -чото, 0 и +чото соответственно?>>Для интов это элементарно: return b-a. А для флоатов?Чё?
>>967533Мне нужна функция, которая возвращает int меньше 0, равный нулю или больше 0 при a<b, a==b и a>2 соответственно.Могу закодить в лоб, но хочется что-то покрасивее.
>>967539>a>b
>>967529Вот да, это я тоже видел (комментарии), а не понимаю, как так. Где-то в стандарте описывается, что ли, как именно auto&& разворачивается?
>>967546Вот тут описано довольно просто, но не знаю, поможет ли тебе:http://stackoverflow.com/questions/29859796/c-auto-vs-auto
>>967539Вот это может помочь.http://stackoverflow.com/questions/27141390/fast-compare-ieee-float-greater-than-zero-by-cheating
>>967530>В C безопасности нет, зачем эта осторожность? Разве что для успеха ловли багов.Вариант с pvoid вполне более безопасен, чем открытая структура. Средненькая безопасность лучше плохой.>Не-а, не катит. Откуда у пользователей взялась старая версия? Сериализация должа быть с версионированием, если ты собираешься менять класструктуру.Ну пользовались они два года старой версией. Использовали либу у себя в проекте. А после обновления все места, где либа использовалась, перестали работать. Нехорошо как-то.
>>967568>Ну пользовались они два года старой версией. Использовали либу у себя в проекте. А после обновления все места, где либа использовалась, перестали работать. Нехорошо как-то.С хера ли они перестали работать? size больше не возвращает size? sizeof(yoba) не использовали?Не могу понять источник проблемы.>>967564Помогло, но тут я понял, что Compare-функции в стандарте хотят другое.
>>967560Спасибо, няша. Там все достаточно хорошо разжевано.
for(i=huy; i!=zalupa; i++)Как можно элегантно вынести i за скобки? То есть, сделать так, чтобы имя переменной было упомянуто 1 раз.
>>967624Напиши макрос.представляю, как сейчас подорвались java-макаки от этого слова
>>967624Ну можно, но это не для всех:http://stackoverflow.com/questions/15088900/neatest-way-to-loop-over-a-range-of-integers
>>967633Не макрос, а макро. Как это будет выглядеть? for(i,huy,zalupa,operator++)?Есть вариант с range-forом и лямбдами, но он громоздкий же.
>>967624И вот ещё упомянутые сударем >>967633 макросы.http://stackoverflow.com/questions/24392000/c-define-a-for-loop-macro
>>967634Выглядит неплохо.
>>967588Раньше:for(int i = 0; i < myStr.size; i++){ myStr.str = 'a';}И всё собирается.Сейчас:for(int i = 0; i < myStr.size; i++){ myStr.str = 'a';}Выдаст ошибку ""size" is not an element of MyString".Потому что MyString раньше имела такой вид:struct MyString{ PCHAR str; size_t size;}А теперь такой:struct MyString{ PCHAR strBegin; PCHAR strEnd;}
>>967654
>>967658Ну так поломается всё.А вот было бы спрятано всё от пользователя в PVOID с непрозрачными API-функциями, такого не случилось бы.
>>967662Фабрики, фабрики не забудь. И прокси.
>>967662Ну какие фабрики и прокси? Опять ты вылез? Ты хоть осознаёшь, что ебля с байтами в PVOID не имеет ничего общего с ООП-паттернами?Я тебе привёл конкретный (заметь, самый конкретный) пример проблемы, которая иначе не решается. А ты начинаешь кидаться говном и кричать.
>>967699 -> >>967664
Знатоки шаблонов, как превратить пару типов в enum/число и использовать как ключ/индекс для контейнера?Напримерtemplate<class A, class B>void yoba(){std::map[A, B]std::unordered_map[A, B]std::vector[A, B]}
>>967699Декоратор визитора.
>>967715Как пару
>>967715Или напримерenum Type { AB = 0, BA = 1};template<class T1, class T2>void yoba(){// 0 если T1 = A, T2 = B// 1 если T1 = B, T2 = AType id = magic<T1, T2>}
>>967720Какую пару?
>>967727А, не правильно понял.Юзай std::type_index.
>>967719Зачем, когда обычный заголовок в PVOID (заметь, кроме сей и ассемблера, так нигде не решают проблемы) подойдёт?
>>967730Тут указан пример для одного типа http://en.cppreference.com/w/cpp/types/type_indexА как скомбинировать типы не знаешь?Насколько я понял, вот это исполняется в рантаймеunordered_map<size_t, string> container;container[typeid(A).hash_code() + typeid(B).hash_code()] = "AB"container[typeid(B).hash_code() + typeid(A).hash_code()] = "BA"хотелось бы так же в компилтайме
Кайф, ещё 50 строк и можно будет делатьcallbacks.set<ReturnT, ParamT>("name", [] (ParamT x) -> ReturnT {})иReturnT result = callbacks.get<ReturnT, ParamT>("name")(param)
>>967767Но зачем?
>>967775Иначе единственный выход писатьsetCallback_Scalar_Array()иgetCallback_Scalar_Array()потому что std::function<T1(T2)> не кастуется ни во что другое
>>967781Бля, опять проблемы http://ideone.com/6oLAjzfunction<void(...)> и function<...(void)> не работают даже при перегрузке функции, а шаблоны где T = void это вообще отдельная история
>>967737Без UML-диаграммы непонятно.
>>967867Для таких вещей нельзя написать UML-диаграмму, опять ты несёшь бред не по теме. Нету в UML соответствующих конструкций.
>>967654>>967662Геттер сделать надо, говорил же.
Няши, чому main файл всегда без хежера? Неудобно же. Что будет если я сам добавлю его?
>>967924Это возможно только с pvoid. Вот ты прикалываешься, а ведь на деле это гораздо безопасноснее. И заметь - никакая ява не нужна.Подожди, я сейчас напишу минимально юзабельную либу для строк на чистом Си, заценишь.
>>968031хедера, фикс.
>>968031>чому main файл всегда без хежера?Зачем? В идеале в main ничего не должно быть кроме точки входа в программу и может обработки текстовых аргументов. >Что будет если я сам добавлю его?У тебя будет main с хидером.
>>968035>Это возможно только с pvoid. Теперь понял. Спасибо за объяснение.Будем надеяться на то, что модули подъедут.
>>968077main не может быть без заголовков, если только не включён PCH.
>>968106http://cpp.sh/8sobyВот тебе main без заголовочников. Или ты что то иное имел ввиду?
>>968097>Будем надеяться на то, что модули подъедут.>>967201
>>968127И часто ты пишешь программы, единственным результатом которой может быть поедание процессорного времени и возврат результата в виде экзит-кода?>>968141Где почитать про это?
Шолом, крестачи.Есть вектор a, положим - std::vector<int> a = {1,4,8,8};Мне нужно как в дишечке - снять с него слайс, т.е. получить еще вектор который сделан по данным старого вектора.Т.е. там бы я сделал int[] a = [1,4,8,8]; int[] b = a[1..$]. Тут делал std::vector<int> b(++std::begin(a), std::end(a));Только вот я глянул на data() - и как выяснилось, эта проблядь второй вектор скопировала, а не просто указалась на данные первого.Как это сделать? Ну т.е. чтобы второй подмассив показывал на данные первого, т.е. без копирования? Я пробовал ставить const - думал этой хуйне нужны гарантии что я там нихуя не поменяю - ей по барабану.
>>968291В языках без сборки мусора такое сложно сделать. А конкретно с вектором нельзя, потому что вектор управляет памятью в которой хранятся его элементы. Ебись с итераторами.
>>968247>Где почитать про это?https://clang.llvm.org/docs/PCHInternals.html#modules
>>968291Тебе придётся хранить в исходном векторе указатели или ссылки. Если ты будешь хранить в одном векторе данные, а в другом ссылки, то эти ссылки наебнутся при ближайшем перестроении исходного вектора.
>>968388> то эти ссылки наебнутся при ближайшем перестроении исходного вектора.По условиям задачи этот вектор и вовсе константный, (ну почти, после инициализации и сортировки), все его слайсы никогда не переживут его самого, и на момент когда они создаются - и он сам, и они - никогда ничего внутри менять не будут, кроме как сужаться.Я думал, что или есть способ заставить вектор так сделать, или что в stl есть какая-нибудь обертка над парой итераторов.
Есть какие нибудь ресурсы на русском/английском, где хорошо объясняют, как работать с Qt в плане создания форм, подписывания на событий и прочим? Провёл достаточно времени за win forms и wpf, вот хочу в Qt вкатиться для GUI. Или лучше официальной документации ресурса нет
>>968396Если не брезгуешь бустом, посмотри на это:http://www.boost.org/doc/libs/1_62_0/libs/fusion/doc/html/fusion/view.htmlЕщё в стандарте есть std::slice, но это очень узкая реализация.
>>968413Ну, документация там довольно неплохая. Если тебе понадобиться что-то конкретное сделать, шансы найти почти готовую реализацию в доках высокие. Ну если тебе просто нужно выучить до уровня "Qt на кончиках пальцев", то есть книги, но что-то конкретное я не могу подсказать.Кроме этого, миллион статей в интернете и различные попенсурс проекты но это не точно
Как почистить глобальный неймспейс от макродрисни? Если я сделаю хедер clear.h и скриптом соберу в него множество #undef, это сработает? Так кто-нибудь делае вообще? Схема получается такая:mylib.h:#include <clib.h>...main.cpp:#include "mylib.h"#include "clear.h"
>>968606Сработает, но зачем?
>>968364Дык есть ещё вариант от МС, который более вероятен. Там тоже PCH?
>>968640Макросов очень много. Кому они понадобятся - может не подключать clear.h
Рендерим скриптом пустое окно на простое ЦП, уже неплохоЗакинуть ещё десяток колбеков и можно игру написать
Как в плюсах сделать многопользовательское приложение. Вот есть сервер для работы с базой данных, и должна иметься возможность параллельно несколько пользователей обслуживать, как такое реализовать? Чтобы А ввел, команду, потом Б, потом А еще одну. Думал про форк, но это же не распаралеливание, там дочерний процесс выполняется, а потом снова родительский.
Есть ли в stl какой-нибудь единый тип итератора? Хочу передавать в функцию одномерный вектор/массив/множество, через который пробегаюсь один раз. Логично было бы не бойлерплейтить и перегружать функцию, а просто передавать в неё итераторы начала и конца. Если нет, то как это нормально сделать? Не приводить же тип каждый раз.
>>968974Для распаралеливания кода в одном потоке можно использовать корутины, в с++11 кажется что-то в этом роде добавили в стандарт (std::future), или это только для тредов, не помню
>>968978template<class T1 <class T2>>void yoba(T1<T2> container) Если не ошибаюсь, дальше вызываешь begin и end
>>968985template <template <typename ARG> class CONT>void (const CONT<ARG>& container)
>>968978>Есть ли в stl какой-нибудь единый тип итератора?Если у объекта есть некоторый набор свойств, и он наследник инстанса темплейта iterator, он называется итератором.http://www.cplusplus.com/reference/iterator/Чтобы сделать функцию, принимающую итератор, нужно функцию занести в темплейт. Функций станет много (по одной на каждый набор аргументов темплейта), но ты этого не заметишь, если будешь использовать угадывание аргументов темплейта.
Не знаю точно про необходимость наследования.
У вас когда-нибудь было на работе такое, что налабал алгоритм, и он почти работает, и ты несколько часов смотришь в код (элементарный и понятный) и не видишь ошибку?
Что значит operator++(int)?
>>969038Если это метод: ошибка компиляции, так как аргументов быть не должно.Если это функция - перегружает оператор ++ для интов.
>>969042Ан, нет, переопределять встроенные операторы низзя.http://ideone.com/58WIn9Так что это может быть только метод, и метод operator++ не может принимать аргументы.
>>969038Постфиксный инкремент.
>>968974std::thread
Сап эксперты. Прошу пояснить ньюфагу за механизм исключений. В чем его предназначение?Правильно ли я понимаю, что вот это вот try-catch, это типа эволюционировавшее сишноеIf (foo() == -1){// проверить значение errno и действовать дальше исходя из него}// все хорошо, работаем дальше
>>969045Я нашёл такие декларации:Iterator& operator++();Iterator& operator--();Iterator operator++(int);Iterator operator--(int);
>>969053Да только ещё исключение это полноценный класс в который можно при выбрасывании засунуть любую информацию и чуток логики для взаимодействия с ней. Обрабатывается не на месте а где-то выше по стеку вызовов. Когда кидаешь исключение посреди функции обычно приходится ломать голову как освободить ресурсы и вообще выйти из этой жопы чтобы приложение продолжило работу когда эта функция снова будет вызвана после обработки исключения, которая обычно происходит где-то далеко и не имеетпрямого доступа к тому с чем эта функция работает.
>>969057>исключение это полноценный классthrow 1.5;
>>968978>Если нет, то как это нормально сделать?Темплейты.
>>969011>он наследник инстанса темплейта iteratorШто?
https://pastebin.com/9cVUnNMbПодскажите пожалуйста ньюфагу где я обосрался: шахматная доска, хочу пройтись по диагоналям н-точки и поменять значения, для этого ищу 1 - начало левой диагонали, 2 - начало правой диагонали.
>>968978Ну вот дуболомное решение:http://ideone.com/u5FmAC
>>969233Ну нарисуй чтоли, что хочешь.
>>969055Где ты их нашёл? Я только въезжаю в кресты, и если ты хочешь моего участия, мне нужно больше данных. http://stackoverflow.com/questions/3846296/how-to-overload-the-operator-in-two-different-ways-for-postfix-a-and-prefix - аааааааа какой мудак додумался до (int).
>>969287Можешь почитать "Дизайн и эволюция С++". Там сам Страуструп поясняет почему да как сделано.
>>969278Хочу менять значение диагоналей от н-точки. То есть везде где стрелочки (кроме точки-фигуры) должны поменяться значения (двухмерный массив).
Ананасы, вопрос такой. В общем есть некоторый интерфейс наподобие:https://pastebin.com/zKsCUdsgИтак, после некоторой стабильной работы (пара десятков запусков с отладкой, например), fn() начинает валиться. Я стал копаться из-за чего это, дело оказалось в том, что не смотря на то, что c указывает на валидную область память и читается (при этом и ичтается его атрибут _element), результат же выполняемой функции c->getElement() возвращает указатель на область памяти по адресу 0x00000001. Что за хуйня?! Ничего касательно этого кода не меняется абсолютно, что может быть причиной такого поведения?
>>969354Первое, что приходит на ум - ты объект класса на стеке создаёшь. После выхода из createSomeClass() объект утилизируется. Это единственное, что приходит на ум с таким количеством информации.
>>969366В том то и дело, что все в куче. По сути, getElement возвращает только указатель, который уже хранится в объекте. Через GDB я читаю все поля объекта нормально, но вот после вызова getElement возвращается какая-то хуйня, не смотря на то, что память вроде как нормальная.Единственное, что помогает это перекомпилировать все с нуля, но это пиздец идиотия, я считаю.
>>969369Ну так в чём проблема перекомпилить?
>>969372Минут по 5 собирается и каждый раз в отладку... А как с релизом делать, там же никак и не поконтроллировать, просто упадет и все.
>>969375Я не понял. Как перекомпиляция решает проблему?
>>969379После нее возвращается нормальный адрес, а не 0x00000001. При том, что ничего не меняется. Я вообще нихуя не могу понять... может на оперативку стоит сетовать теперь.
>>969392Хорошо. Ты перекомпилируешь 5 минут - проблема уходит. Я что-то не понимаю?
>>969392Имею в виду, если после этого проблема уходит, то что дальше не так?
>>969397Ну так она возвращается потом через некоторое время. Может действительно стоит забить на это, но я думаю, как бы это не вылезло все в риалтайме.
>>969401У тебя просто говнокод.
>>969325Попробуй что-то такое. Просто самое тупое, что в голову пришло (в вольфраме массивы с 1 начинаются, так что небольшие корректировки нужны) кеке.
>>969402Ниет.
>>969354Так можешь больше кинуть кода?
>>969401Undefined behaviour, блядь.>>969369>В том то и дело, что все в куче. _element в куче?Отдели функцию от остального кода и вызывай её в цикле. Олсо, возвращать указатель на приватную переменную в геттере - долбоебизм.
>>969401>>969395Undefined behaviour, блядь.>>969369>В том то и дело, что все в куче. _element в куче?Отдели функцию от остального кода и вызывай её в цикле. Олсо, возвращать указатель на приватную переменную в геттере - долбоебизм.
>>969425Что-то около вот этого, если интересноhttps://pastebin.com/hrrE7bCT
>>969442Они там охуеть какие приватные. Я этот заголовочник не менял, хотя почему-то у меня подозрения по поводу публичности полей. С другой стороны, ни friend-классов ни аксессоров нет.https://pastebin.com/YYG4Teix
>>969444Нам не интересен твой говнокод, нам нравится помогать людям. Если ты не можешь поделиться программой, которая ТОЧНО падает после длительного выполнения - забей и забудь.Олсо, если проблема в памяти, то с большой вероятностью у тебя должен регулярно падать браузер - у меня мемтест ничего не находил, зато падали Опера, Хром, ФФ и ошибки в Prime95/LinX были.
>>969446>> которая ТОЧНО падает после длительного выполненияОна даже не в многопоточке. Эта хуйня вылезает при отладке и вылезши единожды остается навсегда до следующего полного ребилда. И я бы избавился от этого места, но у меня часть физики завязана на этом.>> Олсо, если проблема в памяти, то с большой вероятностью у тебя должен регулярно падать браузер - у меня мемтест ничего не находил, зато падали Опера, Хром, ФФ и ошибки в Prime95/LinX были.В том то и дело, что нет.
>>969444Этот анон >>969446 всё по делу сказал. Ровно тот кусок, по которому что-то можно понять, ты не скинул.
>>969446>нам нравится помогать людямГовори только за себя.
ребят, что посоветуете читать по плюсам начинающему?
>>969506шапку треда
>>969507хитёрно я про литературуначал "С++ для начинающих"стоит ли продолжать, ибо там Dev-C++ использую зазорно ли?
>>969509Если прочитал и все осознал - начинай майерса читать.Про Dev-C++ я не понял, но если ты сам это используешь - выброси, и поставь студию
Ах, и ещё одноЭто норма?
>>961839 (OP)Куда делся ОП-стихописец?
>>969513Спроси в /s/.
Сап, анон, нужна твоя помощь или совет.Последние пару недель по вечерам казуально вкатываюсь в плюсы, пописывая небольшую игру на SDL, так чисто для себя for fun. В самом SDL нет ничего, кроме биндингов к битмаповым текстурам OpenGL, так что движок по сути я пишу сам. Так вот я упёрся сейчас в необходимость некоего "Tween Manager'а", который бы мог управлять изменением во времени свойств моих объектов, например изменить координату 'x' некоторого спрайта на +50 пикселей за 5 секунд с интерполированием по синусоиде, чтобы было плавно. Проблема только в статической типизации, есть например свойство "прозрачность" с типом unsigned char (от 0 до 255), есть координаты в int, угол наклона в float... Пока единственное, и возможно очень тупое решение, которое пришло мне в голову, это писать всю логику твинера на (void*) и кастовать к нужному типу внутри, что-то на подобии:MySprite★ player = new MySprite();player.x = 150;player.y = 300;int newX = 200;// переместить спрайт по х из положения 150 в 200 за 5 секундTweenManager -> tween ( &(player.x), 'int', &(newX), 5000, TWEEN_EASE::SIN);void tween (void★ targetValuePointer, const char★ valueType, void★ tweenToValue, uint32 milliseconds, TWEEN_EASE ease);Но это скорее хак, нежели правильное решение, да ещё и для целевого значения нужно выделять переменную, чтобы передавать её адрес. Не самый лучший способ в общем. А кучу врапперов для врапперов для свойств писать так не хочется...
>>969679Кому-то может показаться, что здесь идеально подойдут шаблоны, но на самом деле нет, потому что твины будут храниться в векторе, а тип свойств нужно определять в рантайме, чтобы можно было, к примеру, загрузить из файла-скрипта кастомную сцену с твинами.
>>969686Ну я бы в этом случае упоролся виртуальными функциями. Или это какой-то закрытый класс из либы?
>>969688Пока что это несуществующий класс из моего воображения
>>969691Гуд. Я вижу тут 2 выхода:1. Создаёшь базовый абстрактный класс с виртуальной функцией tween. Потом у дочерних классов реализуешь как надо каждый.2. (неочень способ) Делать, как ты хотел. Для этого существует dynamic_cast.
>>969679ECS не поможет?
>>969510ещё о чем хотел спроситьвот есть такое приложение на ведромб и ios "SoloLearn"Там всё подробно объясненоЗамещает ли оно книгу "С++ для чайников"?
Хочу, чтобы компилятор предупреждал меня о том, что:- итераторы начала и конца заведомо относятся к разным объектам- имя, которое является частью стандарта языка, переопределяется в одной из либ/заголовков (при using namespace std).Такие есть? Или пока что это только статические анализаторы умеют?
>>969968скачиваешь ллвм и пишешь чекер для статик аналайзера(если там такого еще нет)
>>969968>Хочу, чтобы компилятор предупреждал меня о том, что:>- имя, которое является частью стандарта языка, переопределяется в одной из либ/заголовковЧто в этом плохого? Чтобы он орал на определения swap, begin, end, operator<< и пр. подобное для твоих типов?
>>969941Лучше книги ничего нет
Может кто перекотить тред?
>>967461Запилил Рабина-Карпа для множества образцов, работает в десятки, если не сотни, раз быстрее. Даже хэш считать не пришлось, unordered_set само всё делает.
>>969983>swap,Move constructor, метод.>begin, end, operator<< Методы.Мне нужно точно знать, что я использую именно родной шаблон, родную функцию, а не определённую где-то случайно.
>>970328Для этого ввели неймспейсы. А заставлять компилятор выполнять работу статического анализатора врядли кто-то станет.
Перекат https://2ch.hk/pr/res/970816.html
>>970817Почему так сложно дать нормальную ссылку? >>970816 (OP)
У меня есть дерево, нужно реализовать поиск по имени вершин. Но так, чтобы потом по результатам поиска была возможность еще раз провести поиск. Не могу придумать, как так передать вершину в метод рекурсивного поиска, чтобы дерево-результат не было зачищено.
>>975803Нахуй ты в мёртвый тред пишешь?
>>976263>Нахуй ты в мёртвый тред пишешь? Нахуй Ты в мёртвый тред пишешь?
>>976623Тебе не говорили, что отвечать вопросом на вопрос не вежливо?
>>976946Ты мне сам вопросм на вопрос отвечаешь.
>>977046Друг мой, ты поехавший? Где ты там увидел вопрос? Ты всего лишь жаловался, что не можешь что-то придумать.
>>977051> Где ты там увидел вопрос?> на вопрос не вежливо? >ты поехавший?>ты
Привет, анончик. Ебусь с винформ. Расскажи как я могу LPWSTR засунуть в textbox или LabelBox? Или расскажи куда я могу эту шляпу засунуть? Нужно сделать список (сетевых дисков) а в NETRESOURCE Localname хранится в LPWSTR. Буду очень благодарен. Прикрепил скрин части кода где оно должно быть и скрин формы(сам не знаю зачем).
>>987040Анончик, выручай.
>>987040Ап