Вместо шапки:• https://github.com/sosachbot/cppthreadhat/wikiОтветы на вопросы:• https://en.cppreference.com/w/• https://www.cplusplus.com/reference/Прошлый >>1492442 (OP)
Сипипи ван лавПлюсач, кроме самого языка который хуй выучишь от корки до корки, ну да ладно что необходимо знать, чтобы приняли на работу разрабом? Джуном пока офк (учусь пока в институте). Нужно обязательно знать буст? Слышал, что в индустрии кресты без буста не юзают почти, хз правда лиС точным направлением пока не определился, но подумываю о сетевом направлении (распределенные системы, разработка протоколов, прокси и т.п.)
>>1503434Вчера студентик собирался писать низкоуровневый сниффер с перехватом и модификацией пакетов. Мне бы такие амбиции.
>>1503430>Сипипи ван лавСкоро передумаешь.>Слышал, что в индустрии кресты без буста не юзают почти, хз правда лиДа нет, почти у всех свои велосипеды (по крайней мере в больших компаниях), лол. Разве что говеный asio почему-то популярен и всякие костыли для старых плюсов вроде плейсхолдеров.>Нужно обязательно знать буст?В вакансиях смотри, у всех своё легасиговно, это же не джава где есть спринг и всё.
>>1503483> Скоро передумаешь.Ну хз, уже почти год (был перерыв посередине, но все же) учу плюсы, писал уже вещи посложнее хэллоуворлда, но и пока не ебейший софт офк. Мне норм. Джаву пробовал учить - не зашла, говно какое-то из-под коня, имхо.> Почему говеный?
>>1503489>говно какое-то из-под коняНу она и есть говно из под коня, тебе не показалось. Плюсы правда тоже, позже поймёшь.>>1503490>Почему говеный?Потому что а) его апи неудобное и переусложнённое говно; б) сосёт хуй по производительности у всего, чего можно.
>>1503494А сам на чем пишешь? Просто есть тенденция доебываться до всех языков, но на практике в итоге самые обсераемые языки и юзают. Тот же пример джавы и макакаскрипта, лол. >Потому что а) его апи неудобное и переусложнённое говно; б) сосёт хуй по производительности у всего, чего можно.А какой сетевой API тогда юзать на плюсах? Qt Network? Poco? Я удивлен, кстати, почему Qt менее популярен, чем буст. Как по мне, фреймворк пиздец какой сильный, и документирован гораздо лучше буста хотя мб я просто нихуя не понимаю и вообще долбоеб
>>1503501Собстно главная проблема qt в том, что это фреймворк. А буст - лишь набор библиотек. Если тебе нужна только сеть - то тащить QT это пиздец.
>>1503506Привязывать функциональность к гую моветон.Самый главный вопрос в том а нахуя тебе вообще сеть и с++. Для задач с++ как правило синхронного апи достаточно. мимо
>>1503507Один из проектов - простой мессенджер с прикрученной OpenSSL либой, чтобы совсем уже ламерским не был. Не хотелось бы его писать без гуи, хз.Есть еще другой проект, его буду делать без гуи
>>1503501>но на практике в итоге самые обсераемые языки и юзают. Я же говорю — попишешь на них пару лет и тоже будешь считать говном, очевидно что я на них пишу. Но по фатку — они ебать говно. Просто все умудряются делать альтернативы еще хуже, лол.>Как по мне, фреймворк пиздец какой сильныйПотому и не юзают — придется тащить такую кучу говна в проект что ты ахуеешь.А еще он под лгпл растпространяется, и это рак.>А какой сетевой API тогда юзать на плюсах?https://github.com/microsoft/cpprestsdkhttps://github.com/facebook/wangleДа хоть свою обвязку над какой нибудь libuv напиши, даже это лучше будет.
>>1503514Потрясно. В моих краях много вакансий на плюсы, но яхз что учить чтобы быть хоть минимально востребованным джуном. В описаниях вакансий расплывчато мямлят, часто требования к скиллам в мультитрединге, но больше никаких подробностей.
>>1503521>но яхз что учить чтобы быть хоть минимально востребованным джуномЕсли это ебеня — то можешь смело C++Builder 98 учить, лол.Если это мааасква или просто предприятия делают что-то про графику/какие нибудь вычисления хуйнии — то там нужно знать что нибудь про математику и иметь какую-то базу в плюсах.Короче, пока не сходишь на собеседование — не узнаешь. Первые пару раз энивэй обосрёшься.
https://github.com/REhints/HexRaysCodeXplorerУ меня на 7.0 и 7.2 иде не хочет работать. У кого также?
>>1503525Я не живу в стране СНГ. Здесь плюсы и для блокчейнов юзают, например. Ну и для автономных машин, всякого йоба-имбэддэда, распределенных систем и т.п.
>>1503533Я вообще не очень люблю qt, потому-что это диалект, и, когда пердолил их, использовал verdigris. Но это была хорошая попытка самоутвердиться на дваче.
>>1503536Какой диалект? Это просто набор классов. Вот буст - это больше похоже на диалект, особенно древний код, пестрящий макросами из буста.
>>1503530Это всё даже в снг есть, но тебе уже писали, что в эти области без опыта не попасть, про то и речь. Если ты конечно не заканчиваешь какой нибудь вузик лиги плюща. Разве что в йоба эмбеддед уровня магнитол на Qt, лол.Алсо, буста в этих областях точно нигде нет. Правда, для типичной работёнки, куда возьмут без опыта скорее всего будет нужен, так что придётся пострадать.
>>1503533Кастомная сборка настолько панацея без кучи зависимостей каждой библиотеки от кучи других, что уже не первый год почему-то мутят Qt lite.
Аноны, помогите. В первый раз создал репозиторий на гитхабе, чтобы загрузить свой проект, но в итоге криво сделал и решил удалить репозиторий, как вернулся увидел, что пропал Main.cpp. Репозитория уже нет, программы для восстановления удалённых файлов не помогли. Что делать? У меня есть exe разных версий + ilk + pdb, sln. Осталась папка .git. Я могу как-то восстановить свой cpp?
>>1503430Надо знать как работать с гитом, основные приемы, по крайней мере. Структуры данных/ алгоритмы пусть на самом простом уровне.(в идеале написать свой вектор, стек, очередь, чтобы знать что там и куда) Но это в принципе для любого языка нужно, разумеется.>>1503501Ну так напиши на WinSock (сокетам беркли если красноглазый) и все.Там не особо много придется мучиться.
>>1503781Сейчас бы гореть с того, что линуксоидов любя зовут красногоазыми, мде.Я точно не тот кто то местный на кого ты подумал, но вообще да, я на венде работаю, потому что не было причин перекатываться на Линукс, давайте не устраивать тут подобные срачи.
Что я делаю не так?{&i-numbers.begin(),&b-numbers.begin()}Надо вывести позиции элементов i и b в векторе.Сами элементы получаются вот такfor(const int& i:numbers) for(const int& b:numbers)
>>1503788>вообще да, я на венде работаю, потому что не было причин перекатываться на ЛинуксНу и молчи в тряпочку, ущербный, этот тред дети читают
>>1503780>вектор, стек, очередьЭто несерьезно. Ладно там AVL дерево или реализация графа с большим количеством алгоритмов, а это хэллоуворлды, нужен софт посерьезнее.> сокетам беркли если красноглазыйВыходит громоздко и некроссплатформенно (только если не выдумывать костыли), да и гуй хочу к нему прикрутить, чтобы норм смотрелось.
>>1503810>Ладно там AVL дерево или реализация графа с большим количеством алгоритмов, а это хэллоуворлды, нужен софт посерьезнее.С софтом посерьезнее ты станешь оверквалифаед для джуна и попадешь в неприятную ситуацию, когда ты на 50% мидл, а на 50% криворукий хуй, не могущий тикет в трекере заполнить.Не откладывай поиск работы, после устройства ты откроешь много нового, например то, что велосипедостроение библиотек на графах не является чем-то хорошим и продвинутым.
>>1503802В прочем написали {&i-&numbers[0],&b-&numbers[0]} и всё заработало. Странно, учитывая что &numbers[0] и umbers.begin() должно быть одним и тем же по сути, или я не прав?
>>1503815Ощущение что джуны это люди которые знают что такое С++ и иногда им пользуются, почему такие низкие требования? От джунов вообще ничего не ждут чтоль?
>>1503820Я уже накостылил. По мне так вышло вполне симпатичноstd::pair<std::size_t, std::size_t> two_sum(const std::vector<int>& numbers, int target) { for(const int& i:numbers) for(const int& b:numbers) if(&i < &b && i+b==target) return {&i-&numbers[0],&b-&numbers[0]};}
>>1503825А теперь замени вектор на какой-нибудь другой контейнер, который не хранит данные последовательно или хранит данные разного размера.И вообще, арифметика указателей - это плохо
>>1503822С чего ты взял, что они низкие? Если я буду брать джуна, мне будет намного интереснее, как он работает с существующими либами (насколько быстро может выбрать нужную, въехать), чем то, может ли он написать 1000 имплементацию алгоритма из учебника Кормена. Лично я нашел первую работу, показав 1 коммит строчек на 100 в не очень популярный опенсорсный компилятор.А за 10 лет коммерческой разработки с графами я не работал вообще ни разу.Естественно с подобными скиллами ты работу найдешь, но на самом деле ты слишком жестко к себе относишься.
>>1503815>велосипедостроение библиотек на графах не является чем-то хорошим и продвинутым. Я это прекрасно понимаю и именно по этой причине я хочу написать софтину с испольхованием Qt или Boost, это даст мне гораздо больше, чем писать имплементации структур данных
Ку, плюсач.Что в крестах нужно знать наизусть? Чтобы от зубов отскакивало, без гуглежа. Весь STL? Какие-то критически важные фичи из 11/17 стандартов?
>>15038491) Составляешь список возможных библиотек2) Смотришь по какой больше всех вопросов на стековерфлоу3) Юзаешь её!
>>1503857https://blog.feabhas.com/2017/02/abusing-c-switch-statement-beauty-eye-beholder/Там где Abuse ahoy начинается
std::remove_copy(text.begin(),text.end(),std::back_inserter(t),[](char c){return c!='-' && c!='_';});Выдает километровую ошибку. text, t - строки
>>1503893Блядь, вопрос-то не написалА вопрос вот какой:У меня есть указатель на байты и количество байтовКак мне с такими нехитрыми входными данными преобразовать байты в cpp-шные классы?Допустим, вот что есть на входе:02 05 01 00 03 31 32 33 04 01 00 DE AD BE EFПо порядку:02 - количество пакетов05 - тип первого пакета(сообщение из чата например)01 00 - id отправителя строки03 - длина строки31 32 33 - сама строка(123)04 - тип второго пакета(какие-нибудь координаты)01 00 - id того, кому принадлежат координатыDE AD - координата XBE EF - координата YВ коде у меня есть типы message_chat_t и message_coords_tКак создавать объекты, имея эти данные, чтобы сохранялась масштабируемость? Подозреваю что нужна какая-то фабрика, может быть даже абстрактная.Сейчас я делаю это вот таким монстром, выглядит отвратительно. Хочу как-нибудь через шаблоны. Подскажите, в общем.
>>1503923Да, я уже понял. Почти 40 минут ебался. Хоспаде, что мешало это говно перегрузить. И как же хочется нормальные сообщения об ошибках.
>>1503911>чтобы сохранялась масштабируемостьЕсли бинарное представление определяешь ты, то можно библиотеки де/сериализации, типа протобуфа. Хотя если вариантов данных мало можно и самому набайтоебить.
>>1504002Лучше без этой параши. Это блядь худшая библиотека в мире, еще и с кучей бинарно несовместимого говна
>>1504005Ну вот я и интересуюсь, как мне это сделать. Это же весьма распространённая задача, я уверен.
>>1503911Это бинарный парсер. Если писать с нуля, набор функцийint read_int(stream) {...}float read_float(stream){...}vector<int> read_int_array(stream) {int length = read_int();for (length) {yoba.push_back(read_int());}}Дальше пишешь функцию read_class, который распарсит поток и создаст класс.Можно писать не с нуля, а задействовать iostream (пишу этот пример не потому что фанат iostream, а чтобы ты увидел архитектуру подобного говна)std::istream& operator >>(std::istream &is, vector<paket>& pakety){int kolvo_paketov;is >> kolvo_paketov;while (is-- > 0) { paket novy_paket; is >> novy_paket; pakety.push_back(novy_paket);}return is;}std::istream& operator >>(std::istream &is, paket& pakety) {int tip_paketa;is >> tip_paketa;//вместо свитча можно использовать всякую виртуальную поебень, но зачемswitch (tip_paketa) {case 01: //парсим первый тип, и так далее}}А так есть хуйни типа протобуфа, которые по декларативному описанию сгенерят подобный код. Но сам протобуф не рекомендую. Вроде у фейсбука было че получше.
Пытаюсь отправить указатель в сигнале. Раньше вроде бы получалось, но сейчас программа почему то крашится. Крашится именно на моменте эмитирования сигнала.Эмит прописан так:emit pointAdded((Point*)scene->items().first());Что я делаю не так?Попробовал через точку останова влезть внутрь метода Qt и внутри пройтись, получил сообщение об ошибке, на пикче.
>>1504012Парсер у меня уже есть. Вот с таким интерфейсом(пик1). Проблема начинается на сопоставлении айдишника и cpp-шного типа.> switch (tip_paketa) {Неудобно, т.к. при добавлении нового пакета хуй пойми куда надо залезать и править этот код. Мне нужна масштабируемость.Из говна и палок я уже всё сделал. Работает это всё на пик2. Сами макросы вот тут >>1503911Я хочу без макросов.
>>1504028Контейнер - это контейнер items из QGraphicsScene. В нем находятся QGraphicItem-ы. Point - это наследник класса QGraphicItem.> на что законекчен сигналА слот же тут не важен, т.к. ошибка вылезает еще до отправки сигнала.
>>1504024Что за буст? Боюсь, мне придется тратить кучу времени, чтобы его изучить, вместо того, чтобы заниматься делом.
>>1504022>Неудобно, т.к. при добавлении нового пакета хуй пойми куда надо залезать и править этот кодНа самом деле это максимально удобно: код парсера у тебя в одном месте, а не размазан тонким слоем говна по всему проекту. Захочешь задокументировать протокол - вон он, пожалуйста. А ты оверинженеришь. Эти макросы - это вообще пиздец.Ну а так если, допустим, у тебя есть интерфейс IMessage и куча потомков от него, то достаточно создатьstd::map<int, std::function<IPacket()>> вместо свича. Если ты не любишь интерфейсы, можно использовать std::variant с той же целью.Далее остается наполнить мапу функцией типа register_message(int, std::function<IPacket()>). Желательно правда заменить ридера на ридера/райтера, но это уже такое.
>>1504044Чел, дебаггер не помог никак. Все, что он выдал - это сообщение на пикче выше.Но я уже разобрался в проблеме. Оказалось, что это все таки на стадии коннекта со слотом, хотя я думал, что на стадии эмитирования сигнала.Спс.
>>1503911>Подозреваю что нужна какая-то фабрика, может быть даже абстрактная.Ну да, она получает на вход тип пакета и выдает подфабрику/стратегию для этого пакета, которая считывает сколько ей надо данных и строит объекты или чего там тебе надо делает.
>>1503911если бинарный протокол нормально спроектирован, то его пакеты должны ложится на пожатые структурки вооб ще тодалается это специально для того чтобы ничего не надо было парсить или там считывать, а сразу накладывать структурки на кусок памяти в котором лежит собственно этот байтовый массив (в независимости от того прилетел ли он по сети, или взят с дисковой подсистемы)с другой стороны, если ты этого не понимаешь, но уже работаешь на работке где требуется от тебя этих знаний то это не твои проблемы, а проблемы работодателяесли проще, в терминологии "мы вам перезвоним треда" ты обычный жулик
>>1504098Ага, а потом надо оказывается передавать строки переменной длины, в пакетах есть необязательные параметры, нужна обратная совместимость, и ты в жопе.
>>1504109это не такая проблема как ты себе представляешьсетевой порядок байтов в правильных протоколах всегда big endianони все тагже считываютсяа если есть необходимость (для платформы с little endian), что прямо в числе уже свопаются через специальные функциий типа из posix - htonl(), тем более эти функции используют зачастую специальные инструкции процессора (на x86-64) они есть
>>1504128еще и сажу влепил, ай лолдты накладываешь структурки на постоянные части пакета толькоа переменные части пакета (типа строки) представляются как все те же указатели на начало переменной части и их длинаа вообще пакет у тебя будет представлен структурой, которая состоит из указателей на структуры постоянной части, указателей на переменные части пакета, пустых указателей на необязательные параметры если их нет и все такое...я повторяюсь, этим ты достигаешь того, что по сути, НЕ парсишь свои бинарные данныеа нахуя их туда сюда по памяти гонять, они и так уже у тебя лежат, в том же замаппеном файле, если это разбор файла бинарного формата на диске..
>>1504178Да, меня учили старому стандарту языка, сейчас самостоятельно вернулся к плюсам и вижу эту хуйню. Вас ис дас? Типа обнуляет, вместо того, чтобы хранить мусор в неинициализированной переменной? Но мой g++ и так автоматически помещает 0 в неинициализированную переменную, а не мусор, как это было ранее или в си. В чем прикол тогда?
>>1504191>мой g++ и так автоматически помещает 0 в неинициализированную переменнуюДед, ты че буянишь, опять нахуярился?
Насколько важен Гитхаб при устройстве на работу крестовиком? Стоит сделать там парочку небольших проектов?
>>1504144Такой оверинжиниринг до добра не доведёт. Объекты и так весьма быстро парсятся, без таких велосипедов которые больше отнимут чем дадут.> если проще, в терминологии "мы вам перезвоним треда" ты обычный жуликчего бля
>>1504225хехочевидно же что если это бинарный протокол, то работать с ним нужно максимально быстроа это значит не гонять данные туда-сюда по памяти..так чтож это не какой ни оверинжиниринг
Начиная с С++17, принято инициализировать константы сочетанием inline constexpr (да, я знаю, что констэкспр юзается тогда, когда константа инициализируется литералом, а не переменной), до этого это было просто constexpr. В чем прикол?
>>1504230Flatbuffers vs protobuf. Protobuf круче, если что. Учитывая, что все нормальные люди будут данные сжимать, как ебанного шакала (а затем и шифровать), то твой лохопердолинг для экономии тактов проца нахуй не нужен. Ты походу забыл, что узкое место ващет I/O, а не проц.
>>1503911С какими же уебанами приходилось работать, когда писал на плюсах. Вот такое говно пишет каждый второй. Натурально, в каждом коммерческом проекте свой вариант сериализации, часто даже не один. У вас в жопе чешется не взять эталонный protobuf, а написать свой, родной сериализатор? А потом уволиться и заставить страдать следующего бедолагу, который прийдет это говно саппортить.
>>1504230Я использую бинарный протокол лишь для того, чтобы уменьшить размер пакета. Быстродействие меня устраивает, байты читаются и так весьма быстро.
>>1504236Есть ненормальные, которым latency важнее чем throughput при потоке в пару гбит/секмимосижурядомсhftшниками
>>1504240Ну, просто это первое, что приходит на ум. Сделаю через std::map<int, builder> - станет заебись же. А протобуф говорят лютейшая ебанина.
>>1504248Неквалифицированные уебаны тебе это говорят. protobuf - прекрасный, качественный, быстрый инструмент. Все его используют, потому что он просто охуенно сбалансированный и идеально подходит под прикладные задачи.>>1504247Ну разве что. Хотя вопрос открытый - что лучше: в два раза быстрее передать и в два раза медленнее декодировать или наоборот. Хоть у тебя там и несколько гигабит канал связи, а ram в приличных современных серверах 40+ Гигабит/с. Чего уж говорить про кеши проца.
>>1504253протобуфы в оригинальном гугловском варианте - полное говно. А вот Capn Proto, и прочие вариации - уже сильно лучше
Как это работает https://ideone.com/Qv7ywLSheldon, Leonard, Penny, Rajesh and Howard are in the queue for a "Double Cola" drink vending machine; there are no other people in the queue. The first one in the queue (Sheldon) buys a can, drinks it and doubles! The resulting two Sheldons go to the end of the queue. Then the next in the queue (Leonard) buys a can, drinks it and gets to the end of the queue as two Leonards, and so on. Write a program that will return the name of the person who will drink the n-th cola.
>>1504042Ага, а то насколько я знаю он по разному код генерит если сразу видит возвращаемые значения для некоторых методов.
int est_probitie { yoba_func() };int est_probitie = yoba_func();В 2к19 какой вариант считается не говнокодом?
>>1503978Буду на собеседованиях спрашивать, как работает этот код и почему, когда нужно будет продавить челика с зп.
>>1504191>В чем прикол тогда?std::vector v1(10,2); // содержит [2,2,2,2,2,2,2,2,2,2]std::vector v2{10,2}; // содержит [10,2]
>>1504174>>1504191Это Uniform initialization.>>1504456>Сахарок короче.Нет.>>1504480Хотели починить инициализацию, а в итоге недочинили. Тащемто такое поведение только у объектов принимающих std::initializer_list , а он обычно только у всяких контейнеров.
В любой статье о C++ на хабре минимум треть обсуждения будет посвящена Rust. Это о чем-нибудь да говорит.Алсо, пикрелейтед можно ставить в шапку следующего треда
>>1504490> В любой статье о C++ на хабре минимум треть обсуждения будет посвящена RustПидорасы везде вопят о том, как они долбятся в жопу, и как это здорово и прогрессивно. Это не значит, что долбиться в жопу - норма.
>>1504501Как и не следует то, что это не норма, из того, что норма не следует из приведенного тобой утверждения.
Плохой ли тон использовать auto? Я стараюсь использовать его везде, где это возможно, в основном чтобы не писать std::shared_ptr<huynya_name> x = std::make_shared<...Но в последнее время я начал применять его и для обычных типов вроде int. Подскажите мне правильный путь.
>>1504505возможно мой пост останется не понят, но попробую объяснить:дело не в самом растеа дело в разработчиках мозиллыони, в свое время сделали первый браузер (нетскейп навигатор), который по сути занимал весь рынок браузеров, а количество пользователей интернета тогда росло сумашедшими темпамичто они сделали? решили заморозить кодовую базу, не выпускать новые версии браузера, а переписать код браузера целиком, потому что он им, видители не нравился, ну и переписали за пару лет, сделали файрфоксну и что получилось? пока они переписывали все с нуля, они проебали рынок, по итогу, весь рынок захватил ie в 90е, те не было даже и конкурентной борьбыоб этом еще спольски писал в своих статьях как о примере настоящего коммерческого идиотизма но, дзен заключается в том, что люди не учатся даже на собственных ошибкахи уже в нулевые, разрабы файрфокса решили наступать на те же грабли еще раз, но уже в большем маштабе: а именно не просто переписать еще разок кодовую базу файрфокс, но сделать новый язык и уже на нем заново все переписатьпоследствия этого мы уже видим: хром отжал и те проценты что были у файрфокса раньше по сути делит рынок с браузерами от майрософт, а файрфокс где то в жопе сейчас по количеству пользователей, держась лишь на фанатах и ретроградахвообще, историю с разработчиками файрфокса следует рассматривать в экономических учебниках, как кейс о том как просирать бизнес
>>1504521Я его использую когда переменная нужна в контексте какого-нибудь API, особенно если инициализируется она через этот же интерфейс, т.к. в этих ситуациях мне 100% похуй какой там хитровыебанный тип оно хочет. Ну и в шаблонной дрисне тоже, ясное дело.
Котаны, какой самый не заебистый способ объявить константы в хедере, чтобы не ебаться с этими вашими экстернами в константах?#pragma oncenamespace yoba { inline constexpr int var {1337};} // yoba.hПокатит? И в дальнейшем в .cpp файлах с включенным хэдэром yoba.h обращаться вот так: yoba::var
>>1504521У меня наверное не самое популярное мнение: если auto может повредить твоему коду - у тебя говнокод.
>>1504547Раст в отличие от нетскейпа не проёбан же. У него есть огромное преимущество - уёбищность с++. Это дырявое поделие стоило пристрелить ещё 20 лет назад
>>1504640а зачем?имхо, уж если и фирма хочет чтобы у ее сотрудников был доступ к бумажным книгам, пусть купит майерса последнюю книгу и "шаблоны" вандервуда второе изданиевот это действительно полезные книжки по крестам
>>15044901) Видишь упоминание монад - перед тобой ебанутый борщеед. Лапша из колбэков не является хорошим решением никогда, а ничем другим монадический код не является2) Только вот раст от легаси-проектов на С++ не спасает, а наоборот. Теперь ты не только мучаешься со сборкой легаси, но еще и мучаешься с кривым растовским FFI. Короче тупо выкинь старый код и наслаждайся сборкой3) Когда его сделают для С++, где останется раст?4) Используй компилятор с таким же ллвм бэкендом, как и у раста5) При этом отсутствующие нахуй темплейты. А значит, если ты хочешь простой обобщенный код - ебись с системой типов, как будто у тебя хаскель.А язык, который старше С++11, не продакшен-реди, да. И пока он станет продакшен-реди, в слоупочный комитет запилит в С++ все, чего там не хватало, чтобы закопать раст
>>1504676>слоупочный комитет запилит в С++ все, чего там не хватало, чтобы закопать растМаня, ну расскажи. Как по-твоему в с++ запилят проверку заимствований без убийства всей крестовой системы памяти
>>1504676Да это и ослу понятно, можно было не расписывать для этих дуриков. С++ - unbeatable programming language.
>>1504678ты чё, пёс, ты чё? вот запилят в с++42 вменяемые модули, полетишь вместе с препроцессором на помойку
>>1504676>Видишь упоминание монад - перед тобой ебанутый борщеед. Лапша из колбэков не является хорошим решением никогда, а ничем другим монадический код не является>А значит, если ты хочешь простой обобщенный код - ебись с системой типов, как будто у тебя хаскельЧе еще спизданешь, неуч? Сразу видно неборщехлеба, судорожно выбирающего свой любимый ООП паттерн из GoF.> Только вот раст от легаси-проектов на С++ не спасает, а наоборот. Теперь ты не только мучаешься со сборкой легаси, но еще и мучаешься с кривым растовским FFI. Короче тупо выкинь старый код и наслаждайся сборкойВ расте есть то, чего так сильно не хватает сообществу плюсанов - культура разработки и чувство прекрасного. Где FFI неудобный - напишут нормальный фасад к C/C++ либам и будут радоваться жизни дальше. > Когда его сделают для С++, где останется раст?>И пока он станет продакшен-реди, в слоупочный комитет запилит в С++ все, чего там не хватало, чтобы закопать растПерешел от отрицания к торгу, сектант? Вчера же буквально раст был нинужен и плюсы были идеальными. А теперь вон фичи заимствовать хотят из раста. Еретик, что ли?>>1504682В clang-е уже пилят lifetime analysis. В течении года завезут. Пока будет опциональным в виде навешивания аттрибутов на функции.Думаю в C++23 или в C++-26 это попадет в стандарт и у плюсанов появится свой родной borrow checker, который, как известно, не нужен, а надо ПРОСТО хорошо знать плюсы и уметь правильно писать код.>>1504701>>1504702Щас бы двачерам вякать на хабр.
>>1504682>проверку заимствованийэто какая то хуйня, связанная с владением ресурсов и с правильной передачей владенияэто что ли?умные указатели, не?
>>1504682хех, в 98м стандарте по итогу самый православный способ хранить константы был трюк со статической переменной в классе..
>>1504713>прекрасный кодТы на него дрочить собрался, что ли?Из-за вот такой хуйни я жалею, что появилось что-то, кроме ассемблера и сишечки. Щас бы сидели как 80-ых и пердели в мейнфрейм под хруст магнитной ленты, программируя на бумажке.Ебаные срачи про архитектуру, про фп vs императивка, про гейтса, про небо.И никакой четкой аргументации с метриками или хоть чем-то, что доказывает, что вот ТАК быстрее, а так НЕТ.Про уДоБнЕе и "у вас архитектура языка говно!!!" это вообще рот ебал. Унифицировать и гомогенезировать од паттернами можно только запил крудов.
>>1504730Заимствования это же маняврирование когда оказывается что на одном move semantics жить нельзя. Как одно может проверять другое?
>>1504733>И никакой четкой аргументации с метриками или хоть чем-то, что доказывает, что вот ТАК быстрее, а так НЕТ.В этом суть моего наезда на ООП и GoF. В ООП есть большая почва для спекуляций и много бессмысленного срача как результат. В FP как минимум такой хуйни нет. Есть substitution computational model - которая по сути сводит весь код без эффектов к обычной школьной алгебре и до 10 всеми применяемых паттернов у которых по факту нет альтернатив. В какой проект не прийдешь - там всегда будут одни и те же архитектурные приемы: ленивость, комбинаторы, монады, аппликативы и функторы. Ты ПРОСТО берешь и делаешь работу.
>>1504713>Сразу видно неборщехлеба, судорожно выбирающего свой любимый ООП паттерн из GoF.Сразу видно борщехлеба с кругозором ленточного червя. Мальчик, ты в своей жизни не видел нихуя, чтобы делать хоть какие-то вангования о собеседнике. Не позорься.>В расте есть то, чего так сильно не хватает сообществу плюсанов - культура разработки и чувство прекрасного.Тогда почему эти люди создали такой хуевый язык? Которому не 30 лет и он не тянул за собой сотни тысяч легаси-проектов, которые нужно было не поломать.>сектантСказал хуй, который пришел в крестотред доказывать нужность раста
>>1504733>в 2к19 кукарекать про скоростьЕсть ДВЕ метрики по которым выбирается язык:Средняя частота ошибок для продуктов с высокой ценой пиздеца в продакшене и среднее время запила новых фич для всего остального. Другие языки (да, кресты тоже) нужны исключительно из-за легаси-говна.
>>1504759>Есть ДВЕ метрики по которым выбирается язык:В глазах неадекватного школьника черно-белым миром - возможно. Потому что школьники тупые и принять сложность окружающего мира не могут.
>>1504767Ты спизданул - ты и доказывай. Почему именно две? Почему скорость не важна? Как ты пришел к таким глубокомысленным выводам?
>>1504770Двачую этого. >>1504759> Есть ДВЕ метрики по которым выбирается язык:Ты скозал? Пидор-студентик, ты?
Там в студию годнотабу завезли:https://devblogs.microsoft.com/cppblog/addresssanitizer-asan-for-windows-with-msvc/
>>1504770Скорость неважна потому что купить час работы хардвари в тысячи раз дешевле чем купить час времени разработки. Поэтому вторая метрика применима в большинстве ситуаций. Применимость первой мной уже описана. К выводам я пришёл продаваясь кодопроизводящим конторам.>>1504774Нет, я разгребатель крестописанины из 90х. Но пидор, да.
>>1504753>баттхертит от вангвания>в то же время вангует опыт собеседникаМальчик, ты в своей жизни не видел нихуя, чтобы делать хоть какие-то вангования о собеседнике. Не позорься.>Сказал хуй, который пришел в крестотред доказывать нужность растаНе хуй, а уважаемый дядя-плюсовик, который пилил первые плюсотреды еще в 2014-2015. Так что да, у меня есть полное право называть тебя сектантом, сектант. >Тогда почему эти люди создали такой хуевый языкНу давай для начала ты, школьник, объяснишь почтенной публике, почему раст - хуевый, а только потом я начну тебя по-отечески обоссывать, ок?>>1504777И 10 лет не прошло. Наконец-то win-говноеды начнут использовать современные промышленные практики разработки на C++
>>1504792>Скорость неважна потому что купить час работы хардвари в тысячи раз дешевле чем купить час времени разработки.Ну то есть ты описываешь вебоговно, в котором С++ никогда и не был популярен.
>>1504796>>1504792Вы уж определитесь, вы про memory footprint, latency или throughput, а то от вашего школолоспора попахивает.Если throughput, то на какой-нибудь jvm можно написать сопоставимо с C++. А мест, где надо memory footprint или latency - не так уж много.
>>1504794>Не хуй, а уважаемый дядя-плюсовик, который пилил первые плюсотреды еще в 2014-2015.В 2011 я ковырял компилятор раста с целью изучения llvm. Пройдет 3 года, и на дваче появится школьник, перекатывающий плюсотреды. Пройдет еще какое-то количество времени, и школьник станет фп-шизиком, уверенным, что вокруг все идиоты, один он умный. Иди нахуй, дядя-плюсовик.
>>1504809>Если throughput, то на какой-нибудь jvm можно написать сопоставимо с C++.На jvm легко баззвордами ссать в уши своему энтерпрайз-начальству.
>>1504794> И 10 лет не прошло. Наконец-то win-говноеды начнут использовать современные промышленные практики разработки на C++Линуксочмоня, у вас такого нет и никогда не будет. Иди в виме по памяти говнокод пиши, порождая кучу багов.
>>1504794> Не хуй, а уважаемый дядя-плюсовик, который пилил первые плюсотреды еще в 2014-2015Сука, заорал с этого успешного плюсовика. Нвидия-кун, сеньор-цпп-тян, ла-кун и прочие олды треда обмякли при виде этого БОЯРИНА!
>>1504812Ну нихуя ж себе, вот это достижения! Целый llvm изучал в 2011.Я в 2011 году писал промышленный парсер-синтезатор-анализатор vhdl/verilog и че теперь?>Чего добился? Хотя-бы 300к зарплаты есть?Именно столько и есть. Теперь завидую тому пидору из nvidia, который 350к зашибает Ну че там, поковырял bazel, пес?>>1504822ОЛДЫ ТРЕДА!!111 орнул с тебя
>>1504824> который 350к зашибаетЭто только зарплата, тут акции подросли, с акций еще ~90, суммарно ~440.Но вообще комично, что ты ЛЛВМ изучал в 2011, а я в 2014 только плюсы учить начал, и где ты, а где я.Собстно, нвидия-кун
>>1504826Ты попал в хорошую, богатую компанию - молодец, никто этого не отрицает. Но о твоем скилле это говорит опосредственно, потому что в процессе найма есть много вещей, которые от тебя не зависят. Рядом с тобой наверняка сидят типы того же грейда и зп, но с опытом 10+ лет. Тоже комично, что они в два раза больше работают, а добились того же? Короче, мде
>>1504835>Рядом с тобой наверняка сидят типы того же грейда и зп, но с опытом 10+ лет. Тоже комично, что они в два раза больше работают, а добились того же? Короче, мдеНу, мне кажется да, это достаточно забавно.>>1504830Хорошо, я больше не буду. или все таки буду.
>>1504838>Ну, мне кажется да, это достаточно забавно.А мне кажется, что ты не понимаешь, что в твоей профессии есть некоторый потолок знаний и зарплат, за который, будучи обычным плюсовиком, выйти нельзя. Твои коллеги тоже могли за 5 лет дойти до такой же зп, что и ты. С чего ты решил, что через 5 лет на той же позиции ты будешь получать больше? Я тебе больше скажу, ты уже достиг потолка зп для данной позиции во всем мире. Даже если ты переедешь в SF, по чистым деньгам для тебя ничего не поменяется.Что, все плюсовики во всем мире с опытом >5 лет - хуже тебя, потому что ты с 5 годами опыта начал зарабатывать как они?
>>1504842>Даже если ты переедешь в SF, по чистым деньгам для тебя ничего не поменяетсяВ SF у сеньеров в гугле компенсация больше 300к долларов в год. Даже если около половины отдавать на налоги (сомнительно) это около миллиона на руки в месяц.
>>1504845Бизнесменом. Либо топ манагером каким жаль, что шутки про картофельную страну уже не актуальны
>>1504824>Я в 2011 году писал промышленный парсер-синтезатор-анализатор vhdl/verilog и че теперь?Хуй в очо. Аргументы ad дядюм в жопу себе засунь. Монадический код - костыли и говнище, когда от бедности нет вменяемой альтернативы. Чтобы понять, что такое вменяемая альтернатива, можно сравнить код на Go и код для ноды. Или квиксорт на С++ и на хаскеле с использованием ST. Монады всегда говно, говно во всем. Не понимают это только ФП-шизики типа тебя.И у ФП-шизиков с растом возникает конвергенция: ФП-шизики тянут язык в сторону ФП-параши, а сам раст и не против.>Именно столько и есть. Теперь завидую тому пидору из nvidia, который 350к зашибаетЯ зашибаю больше этого пидора, например. Просто я не пидор и мне неинтересно, когда меня обсуждают.
>>1504842> А мне кажется, что ты не понимаешь, что в твоей профессии есть некоторый потолок знаний и зарплат, за который, будучи обычным плюсовиком, выйти нельзя. Вполне можно. Можно и пицот получать, живя в Москве. Можно и 700 (привет, Хуавей). Потолок где-то в районе ебейшего принципал инженера, но там уже столько денег, что можно дальше и не расти.> Что, все плюсовики во всем мире с опытом >5 лет - хуже тебя, потому что ты с 5 годами опыта начал зарабатывать как они?Я этого не говорил. Но тут вспоминается кулстори с моей прошлой работы, когда ко мне подошел зам начальника отдела разработки с опытом 15 лет, и спросил, что такое std::move у меня в коде.>>1504847>В SF у сеньеров в гугле компенсация больше 300к долларов в год. Даже если около половины отдавать на налоги (сомнительно) это около миллиона на руки в месяц.Не забывай про то, что там безумная недвижимость, и очень дорогие услуги. Так что, равнять СФ и Москву по абсолютным значениям ЗП - глупо.Ну и да, 300к для SF это мало, в том же FB можно 400-500 иметь.
>>1504854Не мог бы ты пояснить нубу, что такое монады? Мне даже википедия не помогла, тупо не понимаю и всё
>>1504859>Можно и 700 (привет, Хуавей)А что, там реально столько платят? А-то ходят слухи, что в филиале в нашем мухосранске мидлам платят около 200, что для нашего городка как-то дохуя.
>>1504845Нужно вычитать не только налоги, но и расходы на жизнь.Вариантов несколько: - R&D. Топовые спецы по ML вполне получают под лям в ДС - Свой бизнес. Будешь забирать себе всю добавочную стоимость - Блогер, актер, коррупционер - HFT - Можно накопить 100 лямов и вложить в акции. При доходности 12% годовых будешь получать как раз лям в месяц.>>1504847С 300к после налогов останется 15к в месяц. После затрат на квартиру и жизнь останется 7-9к в месяц, что как бэ не потрясающие деньги. Вон у какого-то типа из netflix брали интервью. Чуви занимается chrome web tools и попал на топ вилки по этому направлению. Он сказал, что в netflix стало хоть что-то оставаться после расходов, а пока он работал в гугле, вообще в ноль уходил.
Какие блять 500 тыс в год в гугле? Вы ебанулись? Нет таких зарплат, даже в Microsoft йоба разработчики ядра столько не зарабатывают. А может как раз они столько и зарабатывают.
>>1504866за 3, но у меня до программирования был хороший технический бэкграунд. Перекатился из смежной области.>>1504869Говорят, что да. Сам я ходил на собес Писал в прошлом треде, дали 260 до налогов, рофл. Видать, там лидам+ хорошо платят.>>1504875Майкрософт никогда не платил. И находится он далеко не в долине, а в Сиэтле, где жизнь дешевле.
>>1504870Какая-то жиденькая аргументация от студентоты. Хуйни понаписал короче. Мл под лям, лол блять просто, сейчас все математики страны посмеялись хором.
>>1504861Сам нагуглил https://habr.com/ru/post/445800/Весь тред пиздаболов короче. Пол мильена они получают, ага.
>>1504879Судя по-всему начал с этого года. Они на топ-1 ведь вышли, обоссав гуглы и амазоны и вообще всех сразу. В 500 в гугле не верю, даже в 300 не верю.
>>1504885https://www.levels.fyiВот более-менее честные зарплаты.Алсо - еще есть teamblind.com - там тоже их пишут.
>>1504859>вполне можно. Можно и пицот получать, живя в Москве. Можно и 700 (привет, Хуавей). Потолок где-то в районе ебейшего принципал инженера, но там уже столько денег, что можно дальше и не расти.Хуй с пальцем сравниваешь. Этих вакансий по пальцах двух рук пересчитать можно и там надо быть куда круче, чем стандартный плюсовик в nvidia вроде тебя. Круто, если ты туда доберешься, вполне искренне желаю тебе в этом успехов, но когда доберешься, тогда и поговорим. Попасть на зп 350к+ за пять лет - это, конечно, слегка необычно, но только слегка. На вундеркинда ты пока не тянешь.>Я этого не говорилИменно это ты и говорил, просто другими словами.>>Сам я ходил на собес Писал в прошлом треде, дали 260 до налоговНу собственно ты сам подтвердил, что далеко не все околотоп компании оценивают тебя в 440к. Значит есть фактор удачи или совпадения твоих узких скиллов с конкретной потребностью работодателя в момент найма. Хотя судя по тому, что ты CI/CD настраиваешь, то скорее удача.>>1504869700к платят там единицам. Мой бывший коллега туда ушел сеньером-плюсовиком на зп 280к. Это в ДС. Еще надо учитывать, что там офис-стойло с дешевыми перегородками и бывают случаи, когда китайцы-менеджеры смотрят на работников как на людей низшего сорта (это, правда, слышал давно и через третьи руки).>>1504880В mail.ru есть датасаентисты, которые зашибают 600к+. Уверен, что в yandex research есть ребята, которые зашибают еще больше. Я очень сомневаюсь, что какой-нибудь Райгородский или Воронцов (они вроде не в отделе ресерча работают, но все же) зашибают меньше 700к. Хотя, возможно, у них вся зп - это сток и тогда разговор именно о зп у нас не получится.
>>1504896> Хуй с пальцем сравниваешь. Этих вакансий по пальцах двух рук пересчитать можно и там надо быть куда круче, чем стандартный плюсовик в nvidia вроде тебя. Круто, если ты туда доберешься, вполне искренне желаю тебе в этом успехов, но когда доберешься, тогда и поговорим. Попасть на зп 350к+ за пять лет - это, конечно, слегка необычно, но только слегка. На вундеркинда ты пока не тянешь.В следующем году на ревью должен 500к тотал-компа перешагнуть, и получить лычку Senior II (оно же +грейд). Босс слезно обещал хотя знаем мы эти обещания. Я, собстно, про себя и говорил, упоминая ебейшего принципал инженера. Это вполне реально, работая в одном месте долгое время, если контора большая.> Ну собственно ты сам подтвердил, что далеко не все околотоп компании оценивают тебя в 440к.Безусловно. Мейл.ру меня скорее всего вообще оценит в 150к. А какой-нить новгородский яндекс в 90к и карточку на обед. Однако нвидия оценивает меня выше, и этого мне достаточно.>Хотя судя по тому, что ты CI/CD настраиваешь, то скорее удача.Щас обидно было. Настраиваю, хуле делать, когда никто до меня не озаботился и шлепали говно.>>1504904Вычитай налоги, помни про конскую аренду. И да, зарплату ты получаешь, а вот всякие акции должны еще завеститься. Т.е. этот доход далеко не сразу.
>Райгородский или ВоронцовЭто уже не /pr/, а реальная наука с математикой и статьями. Такие люди код не пишут. Хотя я не знаю, с чего ты взял про >600к+Ибо такие люди сидят и очень медленно генерируют идеи. Они столько прибыли не приносят.
>>1504913Да сказочник он. Ни в каких мейлру столько не платят. Усманову на кокс денег не хватит с такими расходами.
имхо, тред выходит в несколько опасную тему, а именно: меряние хуями, а именно размером своей зарплатытак можно только разругаться друг с другом и все
>>1504794алсо, раст не хуевыйраст не нужный тупадержится на самоподдуве кодеров из мозилыи, кстати именно благодаря тому что умные дураки из мозиллы решили второй раз переписать свой браузер, щас они занимают меньше 10ти процентов рынка, лол
>>1504913>Это уже не /pr/, а реальная наука с математикой и статьями. Такие люди код не пишутЯ же написал, что это r&d. Что тебя смущает?>>1504920Лично получал оффер на 250к в мейле. Бывший коллега сейчас в одноклассниках работает за 240к. Не знаю, с чего ты вдруг решил, что в мейле мало платят
>>1504896>700к платят там единицамВ 2019 даже реакт-макака как я делает изи 700к, ремотно естественно, не знаю в чем у вас сложностимимо реакт-макака
>>1504994Ну, нас таких в конторе человек 10-12, условно уникальные.Прикольно, конечно(особенно когда видишь результат работы), но как-то всё равно тянет в свободное время пытаться учить плюсы. Даже в паре случаев смог для работы написать утилиты на них, охуенная практика.
>>1504927Почему ненужный? Он безопаснее и проще крестов, а по перформансу такой же. Пройдет лет 5-7 и кресты канут в лету, так как ёбщество поймет, что здоровенный дедуля-франкенштейн, источник кучи багов, нахуй ненужОн
std::accumulate(te.begin(),te.end(),0.0)/te.size()Как настроить округление, вместо 50.199999 выдает 50.2
>>1505036Ты хоть приложи числа, которые в сумме дают 50.199999, а не 50.2.Или попробуй float, может, будет другой ответ не факт, что будет, это только предположение.
>>1505067А как же правило что функция при одних и оех же входных данных должна возвращать одно и тоже значение?
>>1505082Ну так ты не делай bool b = fun(x), делай int n = 0; n += fun1(x) ? 1 : 0; n += fun2(x) ? 1 : 0;
>>1505072Зачем тебе тогда static?Обычно пишут что-то вроде[code]MyCls const & GetDefault() const{ static const MyCls def; return def;}[/code]Если тебе хочется перед первокурсницами изъебнуться, то есть ещё миллион других способов, от статика отъебись
>>1505085Мне тогда придется преобразовывать то, что функция возвращает + проебать на инт в 4 раза больше памяти.
Аноны, годятся ли кресты для разработки прошивок? Если да, то как? Вряд ли есть фреймворк под эту тему)0
>>1505117портишь статистикутут выше по треду получают 250, 430, 600, 700, .. один даже за миллион если в рублях пересчитатьа ты тут влез со своими 450 баксами..
>>1505181В с++ это нормально. Локальные переменные выделяются на стеке в порядке объявления. А борроу чекера тонет!
Ананасы, boost::ui кто-то юзал? Если да, то как оно? Покамест не особо хочется прыгать по фреймворкам/либам, так как всю мякотку пишу на бусте и не хочется заводить зоопарк, да и в индустрии гораздо больше распространен буст, нежели тот же Qt, поэтому гораздо выгоднее учить буст
>>1503199>многопоточку спрашиваемmemory model и всякие false sharing или про ссаные rwlock и condvar из stdlib?
Как правильно завершать приложение, чтобы иконка из трея сразу удалилась, а не только при наведении мышкой? Пробовал вот так, но не помогает.case WM_DESTROY: {Shell_NotifyIcon(NIM_DELETE, &nid);DestroyIcon(hIcon);PostQuitMessage(EXIT_SUCCESS); }return 0;
>>1505226Не хочу с собой тоскать многомегабайтные гробы, которые тратят в 100 раз больше ресурсов, чем нужно.
>>1505255Квадратные скобки -- синтаксический сахар, маскирующий выражение (a + b). Необходимо только, чтобы одно слагаемое было указателем, а второе числом, иначе выражение не имеет смысла. В твоем примере a -- указатель на начало массива, поэтому (1 + 3)[a] == ((1 + 3) + a) == *(a + (1 + 3)) == a[1 + 3]
>>1505265Бля, самого ведь раздражает, когда люди про разметку забывают>Квадратные скобки -- синтаксический сахар, маскирующий выражение #(a + b). Необходимо только, чтобы одно слагаемое было указателем, а второе числом, иначе выражение не имеет смысла. В твоем примере a -- указатель на начало массива, поэтому (1 + 3)[a] == #((1 + 3) + a) == #(a + (1 + 3)) == a[1 + 3]
Ананасы, если я выучу SFML и буду пилить разные хуйни с графикой, кому это нахуй будет нужно? Куда берут на работу с такими знаниями? В общем и в целом, не только в срашке
>>1505279Т.е. в той области, которую можно автоматизировать, крестовики полагаются на человеческий фактор. Всё ясно, тред можно закрывать нахуй
>>1505279Я их не обязан знать. В компьютерных программах есть такая вещь, как защита от дурака. Если её нет - это плохая программа
>>1505265>Квадратные скобки -- синтаксический сахар, маскирующий выражение (a + b). Но ведь я могу раздельно определить сложение, скобки и звезду для класса, и они никак не будут с собой связаны...
>>1505292https://habr.com/ru/post/216189/https://stackoverflow.com/questions/367633/what-are-all-the-common-undefined-behaviours-that-a-c-programmer-should-know-a
>>1505294>The order that function parameters are evaluated is unspecified behavior. (This won't make your program crash, explode, or order pizza... unlike undefined behavior.)>unspecified behaviorЧо бля?
>>1505298Ты фанатик, гонишь меня из профессии хотя я просто указал на брешь в инструменте. Если бы ты работал дорожником, то кидал бы асфальт лопатой, а утрамбовывал ногами
Что происходит с программой после компиляции? Как всё это превращается в нолики и единички? Вот например цикл for, все его итерации будут записаны в виде последовательности нулей/единиц в экзешнике, или он будет как то в процессе выполняться?
>>1505313Компилятор парсит твой говнокод, идет целая куча йоба-анализов, если после них нет ошибок, то идет конвертация кода в ассемблерный листинг. Сборщик, ассемблер (не путать с ассемблИ), читает опкоды всех инструкций, превращая их из шестнадцатиричных значений в двоичные. На выходе получается object file, линкер потом связывает этот файл с shared libraries и на выходе получается бинарник с нулями и единицами, который процессор готов исполнять.
>>1505303Вот так это сеньор-помидор обьяснил на пальцах>Важно понимать, что unspecified и undefined различны, что implementation-defined это когда то ли true то ли false (и задокано), unspecified это когда то ли true, то ли false (и может быть не задокано и в худшем случае таки undefined), а undefined это когда bool не true, не false, а его чтение может отправлять команду форматирования жесткого диска
>>1505313А насчет циклов: в языке ассемблера есть инструкции вроде jmp, loop, которые реализуют циклы. Вместо переменных - регистры, которые по сути являются контейнерами по 8, 16, 32, 64 бит (есть еще конкатенация регистров для операций умножения, но это уже из другой оперы) для нулей и единиц, пермутации которых образуют самые разные числа.
>>1505292Это то, что нормальные люди никогда не видели, но от чего у манек-неосиляторов оче сильно полыхает.
>>1505421Довен пока здесь ты, объясняй чему это ошибка компиляции, если ты подряд выделил инты, указав volatile, что они могут измениться вне обозримого для компилятора кода, затем взял указатель первого инта и с помощью арифметики указателей поменял значение в 4-м по счёту инте?
>>1505420И то и то, в первую очередь, мини-фреймворки для абстракции создания окна, оконных эвентов, клавомыши и прочее. Если ты хочешь и там и там нарисовать что-то сложнее квадрата\жпега - все равно придется использовать OpenGL в контексте созданного окна.>>1505429Он дурачок, который ниразу не трогал системное апи, в котором бывают структуры типа:struct yobastring{ int length; char[1] buf;}
>>1505444Так это 2 разные переменные в структуре. Первая - размер буфера, вторая - первый элемент. В винапи есть вообще адовый ад, где 2 строки в одной такой структуре. Т.е. у тебя размер первой строки, размер второй строки (начинающейся после первой) - и первый элемент
>>1505339Ещё вроде loader перед самим выполнением, ну или же dynamic linker для .dll или .so>читает опкоды всех инструкций, превращая их из шестнадцатиричных значений в двоичныеЭмм, какая-то тавтология вышла. Может, ты имел в виду, трансляцию из асм листингов в объект код (бинарный код)?>идет целая куча йоба-анализов, если после них нет ошибок, то идет конвертация кода в ассемблерный листингМожно подробнее расписать - в более-менее йоба компиляторах на этом этапе ещё идёт intermediate representation, этот IR оптимизируется таргет-независимо, потом таргет-зависимо.Ещё в самом начале препроцессор, кстати.Линкер может тоже что-то оптимизировать и выкидывать.
>>1505434Судя по тому, что ты сравниваешь local vars memory layout с object memory layout, то дурачек здесь только ты>>1505429Во-первых, даже несмотря на volatile, никем и ничем не гарантируется, что локальные переменные будут лежать подряд или в том порядке, в котором их объявили. Во-вторых, в нормальном прикладном коде арифметика указателей используется в исключительных случаях. Это просто не нужно, потому что ты работаешь с сущностями предметной области и они не должны зависеть от memory layout. По-хорошему такие операции надо обрамлять чем-то вроде unsafe {}, как в других языках.Когда я писал про ошибку компиляции - это в смысле она там должна быть концептуально. По стандарту ошибки там нет и вообще это UB
Сап крестачКак мне передать указатель на функцию в метод register_client_message?Сам метод пик1Передаю на пик2Определение методов на пик3На пик2 выдаёт ошибку:> error: no matching member function for call to 'register_client_message'> note: candidate function template not viable: no overload of 'on_message' matching 'const std::function<void (std::shared_ptr<network::connection_t> &, const std::shared_ptr<chat_global_t>)>' for 1st argumentХотя на пик3 видно, что эта перегрузка есть.
>>1505500А что лучше использовать? Bind я часто видел в легаси-коде, во те времена ещё не было лямбд.
>>1505484Ну так стек растет не в сторону увеличения адресов, хули. (&a0)[3] вообще за пределы стекфрейма выйдетhttps://godbolt.org/z/nPySa0
>>1505495Ну и вообще скажите, как вы сами реализовали бы такую схему.У меня есть массив сообщений(login_t, chat_t, delta_state_t, etc), но все они хранятся под типом message_t. Нужно вызвать для каждого из них свой обработчик on_message.
>>1505504Можешь и в лямбду обернуть, но лично я, если параметры "длинные", пишу bind - так короче выходит
>>1505527Ну либо цепочка if dynamic_cast else..., либо храни variant и делай std::visitну или заведи enum с типами сообщений и в наследниках метод, возвращающий "тип", а потом switch, да
>>1505533> без swich-case> предлагает if-else и switch-caseOh youЗа std::visit спасибо, сейчас почитаю
>>1505533Ох уж этот pattern matching из говна и палок. Не надоело говно жрать? В расте есть pm, между прочим.
>>1505547Я рефакторю, разнося работающий код по неймспейсам. Раньше он не был таким длинным. Зато, когда закончу - работать с ним станет удобнее, я надеюсь.
>>1505552Нужно банально бить длинные объявления функций хотя бы по запятым у параметров.Плюс делать typedef'ы для умных указателей.Я тебя на 3-м пике 2 аргумента, а на 2-м 1. Я не понимаю, что ты хочешь и почему ты считаешь, что это должно работать.
Вот воспроизвел без вытекающих из глаз строк https://ideone.com/nlOI2JВот очевидное решение https://ideone.com/O8JqvMЩа подумаю еще
Короче, видимо тру-C++ стиль это городить switch-case'ы. Через них и сделаю, всем спасибо. Строки укорочу, как закончу с рефакторингом.
>>1505600он хочет сделать даункаст>>1505599разработчики компиляторов с тебя лольнули. А все пользователи pattern matching вообще в истерике бьются
>>1505599А ты как бы сделал?Сообщения приходят в виде байт. Я перевожу байты в C++-ные классы с помощью мапы <int, function<message(vector<char>&)>>на самом деле там интерфейс builder в значении, но не сутьДальше запихиваю эти сообщения в vector<shared_ptr<message>> и работаю уже с ними. Хули мне остаётся то? И как этого избежать?
>>1505572> взятия адреса перегрузкиЧиво блядь? Если ты про bind и перегруженные функции, то тут уж да, оберну в лямбду. На весь проект >1kk LOC при переходе с буста на стд нашлось от силы десяток таких мест
>>1505622Я ебу, это твой код. С абстрактной точки зрения, у тебя есть две задачи. Первая по id конструировать объекты. Это делает мапа из id -> function<message()>, который ты зачем-то обозвал билдером, хотя тебе было достаточно строчкиm_builders[T::id] = []() { return std::make_shared<T>(); };Вторая - это работа с гетерогенным контейнером типа vector<message>.У тебя в контейнере лежат черные ящики, о типе которых ты не знаешь. Самый нативный для С++ способ работы с гетерогенными контейнерами - это виртуальные методы. Почему они тебя тут не устраивают, я не знаю. Если не устраивают, можно о std::function подумать. Ну УЖ ТОЧНО тебе не нужно делать m_processors[T::id], потому что это такой кривой способ создать таблицу виртуальных методов, матчащихся почему-то не по самому типу, а по его id.
Т.е. на том этапе, когда тип у тебя создан, он уже знает о своей внутренней структуре. Другие мапы, поомимо m_builders, тебе не нужны. Тебе нужно добираться до обработчиков с помощью системы типов, которая уже знает, какой у тебя тип.
>>1505629Ну и где тут дублирование?и если знаешь тип сообщения, можешь делать static_cast и ЕБ ТВОЮ МАТЬ ЗАЧЕМ ТЫ shared_ptr'Ы туда-сюда тягаешь?
>>1505635> m_builders[T::id] = []() { return std::make_shared<T>(); };Сообщения из святого духа что ли создаются?Билдер у меня выглядит вот так. Позволяет легко подключить новый протокол.> У тебя в контейнере лежат черные ящики, о типе которых ты не знаешь. Самый нативный для С++ способ работы с гетерогенными контейнерами - это виртуальные методы.Допустим, я сделаю виртуальный метод callback. В конструктор каждого сообщения буду передавать какой-нибудь messages_receiver_t, у которого в методе callback буду вызывать метод on_message? Я правильно понял?>>1505651В смысле где? message::in::login_t например. Я пишу его 3 раза, хотя должен писать только 2(в вызове register_client_message и в объявлении on_message)dynamic_cast уберу, он и правда тут лишний. А с поинтерами что не так? Мне использовать ссылки вместо них?
Ананасы, без рофлов, какая самая лучшая IDE для крестов? Только не говорите, что это тормознутый говновскод на электроне
>>1505658+6 тактов на вызов примерно. То есть, ты никогда не заметишь разницы нигде, кроме максимального дрочения чисел>>1505667Вижуал Студия + решарпер С++
>>1505672Eсть конечно. А еще говно в унитазе есть. Только это не меняет того факта, что всей этой залупе до Студии+Решарпера еще несколько лет разработки.
>>1505674по твоей логике решарпер тоже сделан дошиком студентов из говновуза ИТМО. Алсо, как там твоя 32-битная студия поживает?
>>1505660Позволь взглянуть на структуру твоих классов.> А с поинтерами что не так? Мне использовать ссылки вместо них?Конечно, если указатель не может быть nullptr. Иначе голый указатель (или то, что core guidelines предлагают вместо него). Если не собираешься становится владельцем - не передавай shared_ptr.
>>1505678Нормально. Если ты пытаешься развести на жор памяти - то иди нахуй, дебаггер x64 и в отдельном процессе, а больше 4гб ide жрать не может.
а у тебя что за сообщения то по сети прилетают? это какой то бинарный протокол? а что надо делать с сообщениями, как их обрабатывать то?какая вообще практическая задача у тебя?
>>1505697>копеечные 200кты шутишь что ли? 200к для дс2 - безумные деньги вообще тостолько зарабатывают наверное только сотые центиля..
>>1505707>>1505708ща сравнил офф статисткук сожалению они не дают децильного распределения разделенного по областям деятельностино в целом по россии верхняя децильная группа айтишников зарабатывает 267 тысяч рублейтак чтож я был НЕ прав
>>1505748>к сожалению они не дают децильного распределения разделенного по областям деятельностипо каждой конкретной области в россии, имел в видуто есть не посмотреть, например, конкретно для питератолько для россии в целом
>>1505748>>1505749и, причем по этой статистике, виден жуткий несправедливый дисбаланс в оплате айтишников а именно: верхняя децильная группа зарабатывает 37% всех средствте 10% забирают себе 37% зарплаты, а остальные 90% - 63% :D
>>1505758Точку с запятой на прошлой строке поставил? Пиздец как так писать можно вообще, enter нажимай когда перестаешь строку видеть, оно само шифт добавит на нужную длину
>>1505681Я на топовом железе жду зачастую секунд по 10, когда нажимаю F2 при курсоре на переменной (перейти к определению), вот что это за хуйня?
Что за шизик уже второй день жидбрейнс форсит? Сравнивать clion с vs... Вот мудак то! Пиздец просто, слов нет.
>>1505763Точка с запятой стоит. На какой строке у меня проблема с написанием? Где я enter не поставил?
>>1505775>скобки>в инклудахЛол. Инклуд с незакрытым неймспейсом это диверсия уровня #define true false а то и выше.
>>1505797Ошибки из неоткуда появляются. До этого всегда 51 строка работала, а сейчас ошибка выскочила
>>1505758Я, конечно, могу быть старым пердуном-консерватором, но с каких пор в плюсах булевые операторы можно писать как and и or вместо православных && и ||?
>>1505808всегда можно было, просто это никто не использовал, кроме странных людей без &| на клавиатуре. Собстно, та же история с триграфами
>>1505810Так а почему тогда ошибка "пропущена ")" перед идентификатором and"?Ключевое/зарезервированное словое - нихуя не идентификатор.>>1505812Двачую, это пиздец.
>>1505808Наследие тяжелого сишного прошлого, когда компьютеры были разными и у некоторых могло не быть символов & и |Еще были триграфы https://www.oreilly.com/library/view/c-in-a/059600298X/ch01s06.html
>>1505808> Я, конечно, могу быть старым пердуном-консерватором, но с каких пор в плюсах булевые операторы можно писать как and и or вместо православных && и ||? В C++98 уже было. Ты настолько пердун, что кодил на плюсах до 98-го года?
>>1505813>Так а почему тогда ошибка "пропущена ")" перед идентификатором and"?>Ключевое/зарезервированное словое - нихуя не идентификатор.Спроси это у тех, кто писал/переводил диагностические ошибки в твоём компиляторе.
>>1505265>Квадратные скобки -- синтаксический сахар, маскирующий выражение (a + b).Начиная с C++17 (или даже 14) между E1[E2] и *((E1) + (E2)) есть некоторая разница.
Сделал небольшое приложение для скриншота рабочего стола на winapi, укажите на ошибки, кому не лень, буду благодарен. https://github.com/AI-Decay/ScreenDesktopньюфаг-студент
>>1505851копирование в буфер обмена есть?скрытие курсора есть?скрытие оформления окна в режиме снятия скриншота с текущего активного окна есть?
>>1505856>>1505857Есть выбор 1 из 4 форматов, сохранение скринов с актоименованием в отдельную папку, сворачивание в трей, скрин на принтскрин или кнопку в окне, сохранение выбранного формата до след запуска. Больше ничего не умеет.
>>1505851а вообще винда десяточка умеет делать все эторазве что отложенные скриншоты не умеет и запись видеоряда
>>1505851https://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D0%B6%D0%BD%D0%B8%D1%86%D1%8B_(Windows)https://ru.wikipedia.org/wiki/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA_%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0вот видишьвсе уже написано до тебяпрограммисты не нужны
>>1505859>отложенные скриншоты не умеети это умеетпечалька для юных программистовони ощущают свою ненужность
Ку, крестачПилю на бустах проект, хочу впоследствие прикрутить к нему гуи (таков проект, только в терминале он будет слегка уебищен), что лучше юзать? Не тащить же весь Qt из-за одного только гуи
>>1505870Почему нет? Не понимаю этого "не тащить же весь qt из-за модульнейм". У тебя ограничение на размер приложения?
Чет я нихуя не понимаю, почему while(pow(++g,2) < 2500) std::cout << pow(++g,2) << " " << temp << "\n";g достигает значения 51? Разве цикл не должен завершиться на 50?
>>1505889Не забывай, что pow работает с числами с плавающей точкой, и pow(50,2) может вернуть что-то вроде 2499.9999666
>>1505870Не хочешь тащить - выбора мало. Чистый windows api или mfc, или дотнетовский windows forms через c++/cli
>>1505669>тормозящее говно, иногда у qmake отваливается синхронизация с файлами и приходится перезагружать всю IDEноудискасс
Двач образовательный, подскажи плз как сделать каст, что только не пробовал, но компилятор вечно ругается.
>>1505949Во-первых, почини вывод студии.Во-вторых, ты мог сам загуглить ошибку C2280, ознакомиться с ее текстом и предположить, что же не так с тем классом, к которому ты пытаешься скастить.
>>1505994буст для юнит тестов, сфмл для отрисовки фигур. Вместо неё также можно информацию в консоль выводить, но тогда меньше баллов будет
>>1506069Ещё есть слухи, что в 2к20 лучше вообще взять хэдэронли catch2 и не ебать мозг с жирными либами для тестов.
>>1506069наверное, ты имел ввиду гуглтест, который, кстати, полное говно>>1506076Этого джентельмена двачую
>>1506108имя массива == указатель на его нулевой элемент (только если это си-стайл массив, а не std::array, который нужно передавать по ссылке в функции, чтобы изменить напрямую)
>>1505924Так используй CMake, нахуя тебе qmake? Лично я с qmake е работаю и у меня ничего не тормозит в сравнении с другими IDE.
>>1506108Технически на linux, win, mac - одно и то же. Если массив не POD типов выделяется динамически, то у массива есть -1 элемент, в котором лежит кол-во объектов в массиве. Эту инфу потом считывает delete [] для вызова необходимого количества деструкторов. Насколько я помню, это - unspecified behaviour, так что вполне может оказаться, что указатель на массив и указатель на первый объект могут различаться.Буду рад, если кто-то залезет в говностандарт и чекнет
>>1506134> то у массива есть -1 элемент, в котором лежит кол-во объектов в массиве. А если массив char? В -1 элемент количество ведь не поместится
>>1506134> указатель на массив и указатель на первый объект могут различаться.what_the_fuck_am_i_reading.jpeg
>>1506148> пукКакие альтернативы у clion? Студия, которая работает как черепаха, не кроссплатформенна и весит 6 гигов?
>>1505765Маня, не все сидят на винде и даже на винде не все сидят в студии. Я студию не переношу из-за тормозов. Отключаю в ней вообще весь интеллисенс и оставляю ее только для дебагера. Все остальное делаю в clion (а до стабилизации clion - в богомерзком eclipse. Да, даже сраный eclipse cdt был лучше студии+resharper/vassist)
>>1506154ну и сиди без рефакторинга и с лагающим codecomplete. Алсо, как там, нормальное открытие исходников в отдельном окне уже добавили?
>>1506156Вот поэтому он и говно. JetBrains - отвратительная контора для андроид разработчиков-пидоров.
>>1506157Лично у меня рефакторинг работает и codecomplete не лагает.> открытие исходников в отдельном окнеЯ никогда этим не пользовался. А ты можешь сам написать плагин, если тебе это сильно нужно.
>>1506158Что тебе не нравится в clion? Jetbrains один из лучших работодателей в россии, где прогеры решают действительно сложные задачи и получают очень хорошо.
>>1506138Старался использовать С++ как мог, сделал лямбда-функцию и использовал _cast. Разве что malloc на new поменять и умных указателей добавить. Как я ещё могу использовать возможности C++?
>>1506151>>1506153Ты понимаешь, что Clion это вообще не иде, а текстовый редактор со свистоперделками? А студия полноценная иде. Про лаги пиздеж полный, это ваш Clion валится на проектах >20k строк кода.
>>1506166Шизик, свои манякритерии ide оставь при себе. Про "валится на проектах >20k строк кода" - тоже пиздеж полный. Спокойно открываю в нем всякие clang/llvm и прочие шняги на 450+mb только исходников.>>1506171детский сад. Алсо, ты в мегафоне работаешь? Сколько платят? Себя ненавидишь?
>>1506176В смысле детский сад? 8.8мб чистого кода - это тебе не хуй собачий.Нет, не в мегафоне. Платят 100к, хотелось бы больше.
>>1506176Мань, начнем с того, что в твоем текстовом редакторе нет нормального отладчика, работа с которым занимает больше времени, чем написание кода. Тестов нормальных тоже нет. На этом можно закончить, это говноподелие от жидбрейнс не подходит для чего-то крупнее хеллоуворлда. Про написание драйверов и прочих низкоуровневых компонентов ос вообще молчу.
>>1506180>8.8мб чистого кода - это тебе не хуй собачийуговорил. Сколько компилится?>>1506185>нормального отладчика, работа с которым занимает больше времени, чем написание кодаИнтерфейс к отладчику есть, работает стабильно. А вот gdb/llvm работают херово, да. Поэтому я отладчиками практически не пользуюсь. Хватает тестов и санитайзеров>Тестов нормальных тоже нетЕсть
Вот тут у кого то 8 мегабайт исходников 5 минут компилиться. Если в эти 8 мб допусать одну строку оно все пересобираться будет?
>>1506229Если в .h, который включается повсеместно, то да. Если в CPP что-то поправил - то только один файл пересоберется. Ну и перелинковать затронутое разумеется.мимо собираю проект 1,5 часа с распределённой системой сборки
>>1506244А если у меня cpp файл на мегабайт? Почему нельзя компилировать типо построчно где это возможно. Питон же так исполняется
>>1506153> Я студию не переношу из-за тормозов. Отключаю в ней вообще весь интеллисенс и оставляю ее только для дебагера. Все остальное делаю в clion windbg не пробовал? советую, если что
>>1506134>Если массив не POD типов выделяется динамически, то у массива есть -1 элемент, в котором лежит кол-во объектов в массиве.не, не у массива..как правильно хранить (те сколько памяти нужно выделить, а потом удалить) лежит на реализации new[]/delete[], стандарту это без разницы, способ реализации он оставляет за теми кто будет реализовывать стандартну библиотеку..
>>1506113>имя массива == указатель на его нулевой элементформально, это не такформально, в некоторых случаях производится низведение типак примеру, при передаче по значению в функцию фактический аргумент типа массив низведется, и формальный аргумент станет типа указатель элемента массива
сап, анчоусы. А где-нибудь можно взять core guidlines в pdfочке?Хочу напечать, чтоб на бумажке читать от экранов уже глаза пиздец как болят, хочу бумажку
>>1506069>>1506084>>1506076Есть ещё TUT и Qt Test (работал только с последним)Вообще, есть есть какие-нибудь сравнения? Чем плох буст? Чем плох гугл? Почему Catch2 лучше? Есть какой-нибудь анон, который в этом говне копался?
>>1506284Потому что cpp на 1 метр - это лютейший пиздец и тем, кто хуярит такие файлы в 99% случаев надо нахуй отрубать руки, чтобы они больше писать ничего не могли
>>1506257Ну ты советчик конечно, неосилятор со студией совладать не может, а ты ему дедушку windbg советуешь взять.
>>1506285у google test тесты как тесты. много вариантов запуска у раннера, удобно. В целом похоже на все остальные тестовые фрейворки. boost test по функционалу победнее google test, но жить можно.
>>1506320> Чем плох буст?Стрельба ядерными боеголовками по воробьям> Чем плох гугл?не header-only> Почему Catch2 лучше?Header only, и не застрял в С++98, как буст
>>1506292А как ещё? Ты, например, переставил местами поля в структуре. Формально изменения в двух строчках, на практике паддинги и смещения пошли по пизде во всей программе.
>>1506292далеко не весь. У тебя от старой компиляции остаются обьектники, и при изменении и рекомпиляции - старые обьектники частично могут переиспользоваться, компилируя только измененный код
>>1506917да, но если ты изменил 1 функцию, а еще 999 не тронул - то смысл перекомпилировать 999, когда их можно взять из обьектника? Собстно, студия так и делает.А вот если ты сменил какую-нибудь там структуру, то перекомпилируется все, что ее использует. Но не вообще все.
>>1506312почему дедушкуwindbg активно развивают, постоянно выходят новые версии..посмотри хоть скриншотики..
>>1506984и есть еще типа WinDbg Preview, это новая морда к windbg, которая доступна в магазине windows//
Я закончил с рефакторингом и теперь у меня всё через шаблоны! А я уж было решил что убил проект!Алсо, рейтаните кусок кода.
Имеется библиотека, написанная на C, мой проект на C++, как мне из С++ работать с этой библиотекой, и как компилить, если либа через gcc компиляю, а сам проект на g++?
>>1505279Там стандарт на 1000 страниц с предупреждениями, хочешь сказать, ты его прочитал и всё наизусть знаешь?
while (ct++ < 5) { cin >> ch; stackSymbol.push(ch); // помещаем элементы в стек }cout << endl;stackSymbol.printStack(); // печать стекаcout << "\n\nУдалим элемент из стека\n";stackSymbol.pop();stackSymbol.printStack(); // печать стекаStack<char> newStack(stackSymbol);cout << "\n\nСработал конструктор копирования!\n";newStack.printStack();cout << "Второй в очереди элемент: " << newStack.Peek(2) << endl;return 0;Посоны а для чего нужен конструктор копирования.Я лабу списал, но не понимаю как она работает. :((Ну то есть там ещё h и срр файл со стеком)Но примерно можете сказать для чего он нужен.А то я довн. Или направьте меня куда нибудь нахуй по адресу.
>>1507156послушайкомбинация std::variant в связке std::visit может использоваться как некий аналог динамического полиморфизма в крестахно, блядь, зачемкогда у тебя есть проверенный десятилетиями пусть через гомогенные иерархии классов и виртуальные методыstd::variant в первую очередь как замена union, и в том числе для работы с встроенными типами; как один из инструментов type erashure, а не замена наследованию и интерфейсам
>>1507309>динамического полиморфизмаРазве это не статический полиморфизм? >>1507309>гомогенные иерархииЧоткие поцаны таких не любят
Что могут спросить на собеседовании при наличии следующей фразы в требованиях>знаком со средствами обобщенного программирования в С++ (templates);Впервые такую формулировку вижу. И еще, сколько обычно отвечают на резюме, и отвечают ли на него вообще если ты не проходишь?
>>1507748Например написать функцию суммирования принимающую рандомное количество аргументов какого либо типа.
>>1511025если вектор был создан непосредственно в методе, то его придется возвращать по значению, ибо в конце метода он разрушается и если ты вернешь его по ссылке - ты вернешь участок памяти с мусором вместо вектора. Если вектор был передан в метод, то возвращать его лучше, конечно же, по ссылке.