Чем является итератор? Например, в векторе? Это то, что хранит тип данных и текущий офсет от begin()? Или это все-таки поинтер? Ведь обычно мы разыменовываем итератор звездочкой, чтобы получить элемент, на которой он указывает.
for (auto it = a.begin(); it != a.end(); ++it) { cout << ⚹it << ‘\n’; a = b; }
Output: 10
Здесь я ожидаю что-то вроде бесконечного цикла, потому что итератор был инициализирован итератором вектора a, который указывал на начало оного. На первой же итерации делаю a = b, таким образом, так как цикл должен работать, пока итератор оригинального вектора a не будет равен его end(), он должен итерироваться по всей озу, пока не надет нужный адрес ячейки. Однако происходит всего одна итерация.
>>2157776 Бля, я перегрелся от плюсов. Уже сам понял, в чем моя ошибка, пока писал сообщение: там же после каждой итерации a.end() будет получать end вектора b, так что все ок. Тогда объясните еще такой вывод. Правильно понимаю, что тут из-за ресайза такое получается и может ебнуть access violation, там, где он начинает печатать нули до последнего нуля включительно?
>>2157793 >2. ебучие исключения которые работают по умолчанию, и что вся стандартная библиотека написана так, предполагая их использование. еще не завезенный std::expected приходится пилить свои велосипеды. Нахуй пойди со своим говном. Исключения - топчик.
>4. Уебищные макросы, которые приходится городить если хочешь запилить свой логер, с компайл тайм верификацией формата, к тому же макросы единственный способ получить Source location откуда этот лог вызывается, чтобы скрыть всю имплементацию внутри удобной функции аля LOG_ERROR("Error: {}", err) https://en.cppreference.com/w/cpp/utility/source_location
>6. Отсутствие встроенных высококоуровневых утилит для работы с сетью, приходится инклюдить мамонтов аля буст азио или бус бист, котоыре тянут за собой половину остального буста. Ссу тебе в ротешник, буст асио требует только буст систем.
>9. Бесит std::move не обнуляющий примитивные типы после мува. Убейся блядь.
>11. Ебучие инклюды, в С++20 пришла замена в виде модулей. Модули нахуй не всрались
>>2157790 > там же после каждой итерации a.end() будет получать end вектора b, так что все ок. Я опять поторопился. Сейчас понял, мое изначальное предположение было правильным, и я этот факт уже учитывал. Лол. Так что вопрос актуален + хочу объяснение того пика, который скинул. >>2157785 > Это UB Почему это ub?
>>2157776 >a = b; У тебя копируется содержимое вектора, а не ссылка на него, тут тебе не жс или откуда ты там. Но вообще это UB поскольку вектор меняется и могут инвалидироваться итераторы.
А итератор это такая абстракция работы с коллекциями данных, которая в принципе может делать что угодно. Например inserter итераторы никуда не указывают, а вставляет значения в контейнеры. Ты можешь написать итератор который работает по сети с базой данных и он будет работать со всеми стандартными алгоритмами стл.
>>2157793 большой скачек был бы если бы abi стандартизировали и как следствие стандартизированную динамическую загрузку классов а все что сделали это добавили кучку синтаксического сахара чтобы было удобней делать шаблонную магию, добавление семантики вообще наверное только одно сделали - семантику перемещения ввели.. а так кресты в энтерпрайзе все и сдохли потому что не этого, а явка живет там и процветает да че там, даже если хочешь сделать любую плагинную систему, в той же любой расширяемой игре, то будь готовь пердолить сишный код как 40 лет назад, по сути накручивая всю ту же компонентную модель на структурах и указателях на функции как в com или gtk хотя нахуя я это написал, потому что кто это понимает, понимает и так, а кто не понимает, то посчитает мой текст шизофреническим бредом
>>2157881 >большой скачек был бы если бы abi стандартизировали и как следствие стандартизированную динамическую загрузку классов и поломали бы существующий софт
>а так кресты в энтерпрайзе все и сдохли потому что не этого, а явка живет там и процветает нет, у джавки был Сан, у Сана были Солярки и деньги. Собственно платформа+бабки = язык программирования. За плюсами никто не стоял и не пиарил.
>>2157793 >Отсутствие какой-либо высокоуровневой поддержки конкурентности, нету тред пулов Экзекуторы уже почти готовы, потерпи чутка и всё будет в сторонней библиотеке от фейсбука или гугла
>>2158042 Разобрался уже. У меня в дебаге включена проверка итераторов и она не дает вообще ничего сделать с итератором, если решила, что он инвалид. Нельзя даже присвоить ему валидный итератор.
Стоит ли вкатываться в кресты?В ньфаг треде уже писал, но хочется узнать больше мнений. Дело в том, что сейчас я перешёл на второй курс и решил к его окончанию вкатиться хотябы в стажировку лучшим вариком кнш является работа джуном, но опыта работы у мя 0, так что хз. Сам я предпочитаю плюсы, и есть чутка опыта в шарпе и питоне.Проскролив разные вакансии и просмотрев чарты популярности языков, я задумался о том, что мб резоннее было вкатиться во что-то другое, ибо работы больше, да и разнообразнее она, ибо в дс2 дохуя вакансий на c++ со всяких заводов и около КБ.
Каким надо быть уебаном чтобы сделать программу только для винды которая собирается только под Mingw? Короче, хочу портировать её под нормальный компилятор, это сложно? Такой вопрос не смог нагуглить, на что лучше всего заменить ssize_t? Зачем эта хуета нужна, я тоже не понял спустя столько времени гуглёжки. Почему просто не использовать unsigned int?
Просто мне понравилось так писать - группировать приватные поля не выделяя под них класс/структуру где-то в ебенях в отдельном файле (и потом хуй поймешь нахуя эти сотни файлов исходников), а внутри класса.
Но на гитхабе такое не видел - мужики так не пишут. Так какие подводные?
Че за школьная шелупень в С++ треде, где хардкорные задроты, давайте обсуждать сложные задачи и сложные их решения на С++, а не эту хуету уровня хелоу ворлд.
>>2158821 >группировать приватные поля не выделяя под них класс/структуру где-то в ебенях в отдельном файле (и потом хуй поймешь нахуя эти сотни файлов исходников), а внутри класса А почему просто не положить эти поля внутрь класса, и не внутрь структуры внутри класса?
>>2158909 Недавно пришлось сделать бамп аллокатор. Минут 5-10 пишется, прикольно получилось и прямо зашло в архитектуре, получилось быстрее (хотя там инициализация программы, на скорость примерно пофиг) и намного меньше оверхеда чем от системного аллокатора. Ну вот и всё, как-то говорить не о чем.
Блять все заного писать, видимо случайным образом попался айпишник с баном.
>>2158941 Короче по работе особо нихуя сейчас нету сложного, единственное с чем я сейчас ебусь это с тем, что ебучие создатели numpy не позаботились о том чтобы спроектировать свою говноподелку нормальным образом чтобы люди в других языках могли это так же юзать как и в питухоне. Просто мрази тупые, как и все питон сообщество. Ну так вот, перевел говнокод с питухона с нампай на с++ использую опенсиви и свои кастомные реализации нампай функционала и это работает почему то не так как там. А все эти имплементации нампая в с++ аля xtensor говно полное.
>>2158952 Так есть же tbb malloc, jemalloc, tcmalloc и прочее. Нахуя свой кривой велосипед пилить?. Лично я очень активно юзаю tbb во всех своих проектах. Очень классная либа где есть все из коробки и таски и парлель фор и конкурентные дата стракчерс и алокаторы.
>>2158985 >Нахуя свой кривой велосипед пилить Потому что когда у тебя буквально почти сотня гигов данных которые ты должен держать в раме, проще написать штуку на 20 строчек чем теребить general-purpose маллоки.
>>2159016 Что мешает держать сотни гигов с приведенными мной отлаженными аллокаторами еще и заточенными под многопоточность? Вот твоя поделка поддерживает многопоточное выделение памяти? Сомневаюсь. И наверняка там еще десяток багов неберется. В нормальном проекте такой велосипед бы не прошел код ревью 100% и тебя бы заставили юзать готовые проверенные алокаторы.
>>2159031 >многопоточность Мне не нужна, там инициализация в один тред при запуске идёт и дальше все обращения read-only. И там буквально 20 очевидных строчек кода, какие баги лол.
>>2159047 И сразу предупрежу возможный вопрос: есть как юниты, так и интеграционные тесты, все гоняются под asan-сборкой. Только фаззирование у нас в далёких планах.
>>2159047 >буквально 20 очевидных строчек кода, какие баги лол. Этого достаточно чтобы совершить баг, работая с голо памятью, в лучшем случае это может привести к сегфолту в худшем к неочевидному трудновысисляемому багу и мемори ликам. Вообще я не понимаю в чем сложность использовать готовые решения. Просто я не сторонник изобретения велосипедов, и знаю каким боком это может обернуться в проекте. Поначалу может казаться что эти 20 строчек кода действительно проще написать самому чем подключать какую-то либу к проекту, но со временем такой код может начать обрастать зависимостями и костылями, что в конечном итоге приведёт к очень сложному рефакторингу по тскоренению всего этого самописного говна. На моей прошлой работе, именно так и было сначала тоже всякие умники практиковались в с++ доказывая себе и кому-то ещё что они могут, но в итоге потом с этими велосипедами были большие проблемы. Так что проще найти какие-то уже известные либы для себя которые покрывают большинство нужд в с++ и юзать их в любом проекте с самого начала.
>>2159068 Я и не спорю, я сам не люблю велосипеды и хитровыебства без причины. У нас тоже для загрузки хватало обычного new/delete, но потом внезапно разрослись данные. И именно в этом месте я решил, что контроль важен и general-purpose аллокаторы не потянут, и переписал. Если бы нужно было что-то сложнее (или я бы думал, что впоследствии придётся делать что-то сложнее), я бы уже призадумался найти что-то готовое. Тут есть некая грань, которую нужно научиться ощущать, и лишь время покажет, оказался ли я прав. Вообще говорят что mimalloc сейчас топ в плане general-purpose, надо бы мне затестить как-нибудь.
>>2159086 > У нас тоже для загрузки хватало обычного new/delete, Вы прям так напрямую память через new выделяете? Как на счет безопасных RAII контейнеров аля std::vector?
>general-purpose аллокаторы не потянут, А чем они не потянул? Если у вас нету конкурентности. Даже стандартный аллокатор спокойно может выделить хоть 60 гб памяти за раз, при условии 64 битной архитектуры и наличия достаточного количества RAM + SWAP
>>2159131 >Вы прям так напрямую память через new выделяете Нет конечно, я просто как пример привёл. >А чем они не потянул? Изначально у нас и был вектор на несколько сотен тысяч объектов разного непредсказуемого размера (по сути строк, но с несколькими кусками метаданных), то есть приходилось выделять память как под сам вектор, так и дополнительно отдельно на каждый объект. Вот оверхед по памяти на каждую из стапиццот аллокаций я и хотел побороть, он там ~30-40% был. Теперь же всё как раз и лежит в одном большом блоке памяти, и этот блок бамп аллокатором и заполняется.
>>2159146 Ок, ну ты же понимаешь, что теперь ты загнан в периметр этого большого блока памяти и не сможешь его просто так увеличить если что да и память он нерационально занимает. Но вот готовые аллокаторы могли бы тебе помочь с фрагментацией памяти при многократном выделении, т.к. внутри себя они выделяют память из пулов и по умному там все распределяют. Вообще тут надо смотреть исходя из задачи и требований, может вообще лучше сменить ваш вектор на хешмапу, либо какой-нить btree, либо сделать какую-то древовидную структуру с чанками в виде векторов на липестках. Потому что сам понимаешь при добавлении или удалении элементов из такого огромного вектора всю память под него нужно будет реалоцировать заного и копировать туда старую, что уже довольно дорого и тоже не очень эффективно т.к. вектор внутри себя тоже аллоцирует всякий раз памяти с запасом в зависимости от текущего числа объектов в нем.
>>2159179 >не сможешь его просто так увеличить Мне и не нужно. Я уже раза 3 сказал, что я один раз заполняю блок на старте и дальше только читаю из этой части. Мутабельные структуры сразу на порядок увеличивают сложность, и тогда бы действительно лучше какое-нибудь библиотечное решение взять. >память он нерационально занимает Там всё вплотную лежит, ничего лишнего. В этом и суть бамп аллокатора. Думал правда некоторые величины в LEB128 закодировать вместо uint16_t потому что они по большей части в районе 20-100 были, но это уже точно лишнее, так как моя цель уже достигнута.
Короче, поэтому в этом треде и не стремятся "обсуждать сложные задачи и сложные их решения на С++"
>>2158726 Хз. На первом курсе устроился в видеонаблюдение крестомакакой в мухосранске. Прошивка была готовая, поэтому стояла задача писать конфиги за 22к в месяц. По учёбе накопилось дохуя долгов и меня отчислили. один хуй не ит специальность, но техническая Скоро должна прийти повестка. Самое хуёвое, что работал не оффициально, поэтому опыта работы нет. опыт написания конфигов, лол
>>2158782 если ты зелененький совсем, то читай липпмана, потом полирни последней книгой майерса не читай последние книги страуструпа, он плохие книги в конце жизни стал писать, лениться в идеале стоило бы сначала k&r прочитать пару раз с выполнением всех упражнений
>>2158909 ну я закинул удочку про то что в с++ нет стандартизированного abi и как следствие нет стандартизированной динамической загрузки классов, получил пару стандартных ответов + хейт и все как бы уровень этого треда понятен, можно дальше в нем бред и хуету писать, кекая и мекая, а нахуя серьезно что то делать? на вопросы ньюфагов отвечать что означает && в том или ином контексте? да нахуй нужно
присоединяюсь к совету что стоило продумать либо вообще поменять структуру хранения данных, а не сразу бросаться в омут и писать кастомный аллокатор с другой стороны автор кастомного аллокатора возможно гораздо умнее: ибо понаписав подобного кода, хуй теперь его уволят с его работки, ибо только он сможет объяснить че он там вообще имел ввиду и зачем
>>2159498 >нет стандартизированного abi Что ты вообще имеешь в виду под этим? Что в стандарте не описывается загрузчики эльфов, мэнглинг, пэддинги и регистры всех-всех-всех процессоров?
Подскажите, что можно написать в качестве пет проекта на плюсах, связанное с распределенными системами/многопоточкой/сетью, мб базами данных. Сам в разработке давно не нуб, пишу на эрланге много лет, но хочется плюсы освоить на практике сразу.
>>2159582 Странно. Если ты в разработке давно не нуб и пишешь на эрланге много лет, то наоборот ты должен рассказывать, что можно написать, связанное с распределенными системами/многопоточкой/сетью и базами данных, не?
Например, если бы нужно было бы написать на эрланге, а не на плюсах, какие идеи проектов ты бы мог придумать?
>>2159596 Ну, мне хочется написать то, что на плюсах было бы сделать лучше чем на эрланге, но в области которая мне знакома и интересна. Делал в основном всякие опердеи, платформу для месседжинга, биллинг, процессинг. Но не буду же я в качестве пет проджекта делать биллинг и процессинг, а очередной мессенджер скучно. В идеале бы хотелось еще писать то, в чем С++ проявил бы себя лучше, чем эрланг. Думал над каким-нибудь простеньким сервером для мультиплеерной консольной игры, но что-то не стоит особо на это, да и показывать потом как-то стыдно такое.
>>2159609 > Делал в основном всякие опердеи, платформу для месседжинга, биллинг, процессинг. Делай это.
> Но не буду же я в качестве пет проджекта делать биллинг и процессинг, а очередной мессенджер скучно. Это просто отмазки.
> Думал над каким-нибудь простеньким сервером для мультиплеерной консольной игры, но что-то не стоит особо на это, да и показывать потом как-то стыдно такое. И это тоже сделай. Не обращай внимания на отмазки.
Может быть проект должен быть про что-то легко визуализируемое? Или регулярно, периодически делать снимки состояния и визуализировать их.
А вообще есть такое, да. Я имею в виду, бывает такое, что трудно придумывать себе задачи, генерировать идеи.
Мне кажется, здесь может оказаться полезной такая штука, как само-анализ, само-диагностика, разобраться в себе. Взять тетрадь и записывать туда мысли, например, начав с вопроса "почему мне трудно придумать идею проекта?" и дальше перечисляешь всё, что приходит на ум, какие-то диалоги, воображаемые споры, предположения и т.д. Например, можно представить себе двух персонажей, живущих в твоей голове: Перфекционист и Начинающий Мастер. Начинающему Мастеру нужен опыт, практика, а Перфекционисту нужны идеальные проекты и идеальные реализации. Ты отправляешь идею Начинающему Мастеру, но её перехватывает Перфекционист, ему не нравится идея и он выбрасывает её в мусор. Нужно что-то делать с этим сумасшедшим Перфекционистом, чтобы он не мешал Начинающему Мастеру. Ну это как пример.
>>2159615 Вот с перфекционистом и начинающим это прямо точно описал, еще часто вступает прагматик (зачем этот проект нужен? что мне с ним потом делать?). Спасибо тебе, вдохновил. Начну, наверное, с распределенного чата, чтобы можно было просто общаться p2p, потом добавлю чат-комнаты и участников, чтобы порешать проблемы с консистентностью данных, прикручу CRDT, затем end-to-end шифрование, передачу файлов. Думаю для начала хватит.
Подскажите какую нибудь норм библиотеку для c++ чтобы можно было на экране всякие палочки хуялочки рисовать по пикселям (для учебы). И желательно гайд как эту хуйню в проект впихнуть. Заранее спасибо
>>2159377 >задача писать конфиги за 22к в месяц >По учёбе накопилось дохуя долгов и меня отчислили >Скоро должна прийти повестка >работал не оффициально, поэтому опыта работы нет >опыт написания конфигов, лол
Сочувствую, надо же было так сильно проебаться по жизни. Но ничего страшного. От армии можно откосить, а потом поступить в нормальный вуз на ИТ направление и пойти работать куда-нибудь во фронтенд.
Сап /зк/, есть такая задача: Win10. Есть приложение на плюсах. Во время его жизни оно может общаться с виндовым сервисом, который стучится на некий сервер и просит выдать экземпляр лицензии.
Проблема в следующем: в случае какого-нибудь неконтролируемого и неотхватываемого краша приложения (типа запись за границу массива и т.п.) надо отправить какое-то последние слово на сервер и вернуть все лицензии, иначе они повиснут использованными навсегда, и сделать это без создания второго приложения.
Задача по MPI (через point to point) Регулярное заполнение квадрата точками. Точки должны быть расположены через равные промежутки (подобно клеткам в тетради).
Вопросы: Что такое регулярное заполнение квадрата и что я тут должен запараллелить?
>>2157935 Джава сама себя пиарила сборщиком мусора например. Чтобы любой даун мог писать код. Теперь представь что Страуструп/Комитет и Степанов выпускают С++11 не в одинадцатом году, а сразу в 1995 со всеми смарт пойнерами. Чтобы сделала джава тогда. Скорее всего пососала. Но поезд уехал. Теперь питон дает пососать и плюсам и джаве. Может комитет и высрет что-нибудь лет через 20 чтобы соответствовать развитию. Если ворчун не откинет копыта.
Есть в треде математики? Ищу алгебраическую библиотеку для работы с многочленами, важно наличие возможности поиска обратных элементов, выполнение операций по модулю. Пока нашел GiNaC, но она вроде больше символьная, чем "боевая".
>>2160429 Смотря что тебе надо сделать. Ctrl+z в консольке закрывает инпут стрим. Если тебе нужно продолжить собирать инпут, попробуй сделать 2 цикла и переоткрывать std::cin, но не могу представить, зачем тебе это надо.
>>2160034 { заполняешь квадрат -> опустошаешь } - делаешь так регулярно, наверное с помощью цикла. запараллелить заполнение строк или столбцов, чтобы они, ну, шли слева направо столбиком, или строкой сверху вниз, или из верхнего левого угла равномерно заполняли квадрат к правому нижнему углу. типа на поток несколько столбцов или строк, в зависимости от размера квадрата твоего
Как мне можно выполнить поиск в массиве на соответствие хоть 1 символа pam.memo[].unk к strochka[j] без кучи if? strchr не сработает т.к. это не char массив, а одиночная char внутри массива структуры, это нужно чтобы хоть как-то привязать определённую букву в строке к цифре введённой с клавиатуры
>>2161228 >Как мне можно выполнить поиск в массиве >strchr не сработает Ну так ты пиши свои классы таким образом, чтобы они работали со стандартной библиотекой (или с той библиотекой, что у тебя заменяет стандартную).
> т.к. это не char массив Ебани преобразование в char, например.
>>2157621 (OP) Каким образом в данном примере реализовать логику взаимодействия объектов одного типа? 1) getValue необходимо раньше конструктора Typename объявить? 2) Оператор+ после (A+B) возвращает ссылку на временный объект Typename, который затем взаимодействует с C? Если так, то что в поле m_value у этого временного объекта?
>>2162265 Ну если какой-нибудь простой, где есть чаты, юзеры, обмен сообщениями и файлами, и сквозное шифрование, то на любом популярном языке будет элементарно, на Go/Erlang/Elixir особенно. Если звонки, то там уже придется WebRTC покурить или VoIP, видео тот же WebRTC или SIP. Если делать распределенный чат, то уже посложнее. Но в целом, само ядро мессенджера, штука элементарная. Сложнее становится, когда всякие свистоперделки начинают сверху накручивать, а-ля боты, статусы юзеров, счетчики сообщений, мульти-девайсность и самое главное UI для всего этого.
>>2162925 Не каждый скриншот демонстрирует такую концентрацию UB и шизы на строчку кода.
1. Мудацкое форматирование, абсолютно. 2. m_value неинициализировано если х<=0 3. UB в getValue() при этом же условии. 4. ; после } (см. п.1) 5. UB: возврат висячей ссылки на временный объект. 5а. Этот объект создается неявным кастом из инта, полученного неявным кастом из була. 6. this.getValue 7. Незакрытая, блять, скобка (см. п.1) 8. Классический посос на конструкторе по умолчанию.
>>2162926 Статический член живет всегда в одном экземпляре, независимо от экземпляров класса. Он будет существовать даже если ни один экземпляр класса не создан.
Написать конструктор перемещения можно, но если нет других членов, то делать этому конструктору будет нечего.
>>2162975 да это понятно все, кроме пункта 5 и 5а. 5. Ссылку от operator+ надо в любом случае возвращать, чтобы дальше в калькуляторе А+B+C это сработало, разве нет? По типу инкремента ++(++x). Это должен быть некий временный объект со значением m_value? 5a. Почему там каст от инта в бул неявный?
По сути через перегрузку оператора необходимо вернуть ссылку на временный объект с промежуточным значением bool m_value.
>>2163335 Не ссылку, а сам новый объект с промежуточным значением. Типа return Typename(m_value || A.m_value) или хуй тебя знает, что вы там хотите получить.
Посоны, помогите с лабой. Надо показать как флаги гцц влияют на оптимизацию (на примере асм кода, который гцц через -S выдаёт). У меня флаг -foptimize-register-move ака -fregmove Attempt to reassign register numbers in move instructions and as operands of other simple instructions in order to maximize the amount of register tying. This is especially helpful on machines with two-operand instructions. И я вот нихуя не понимаю какой код я должен написать, чтоб увидеть как флаг работает. Помогите пожалуйста с минимальным примером
>>2165534 Ты хочешь агрегатную инициализацию параметра, но при передаче аргумента используется другая. На месте {1, 1} конпелятор видит initializer_list. Допиши ch перед {1, 1} или определи в ch конструктор из initializer_list.
int main() { A a; // при компиляции пишет, что incomplete type в векторе return 0; }
Почему нельзя сделать инстанс класса A с вектором значений с fd класса B? Я понимаю, если бы это был массив, где у нас статическое количество объектов, поэтому sizeof(A) менялся бы в зависимости от размерности массива, следовательно, нужно было бы знать sizeof(B). Но в чем проблема с вектором? Ведь он же просто хранит поинтер на последовательный блок памяти. sizeof(vector) всегда const. Зачем ему definition класса B?
>>2165779 Ему нужно знать размер твоего класса в, это же просто последовательный массив в куче, а класс в ещё не определен. Делай вектор указателей на в, их размер зависит только от платформы.
>>2165790 Так у меня compilatio error не на попытке пушбека или чего-то подобного, где вектору нужно было бы знать размерность объекта, у меня ошибка при попытке создания инстанса класса A. Вопрос актуален
Стоит ли вкатываться в плюсы? Задача стоит прежде всего обучиться качественному программированию, сделать несколько реальных проектов, освоить алгоритмы и структуры данных. Или он для этого не подходит и лучше вкатиться во что-нибудь другое, но во что? Уровень знаний: новичок, но понимание программирование есть кроме ООП.
>>2165978 Нет. Хочешь ООП - пиздуй в джаву. Алгоритмы и структуры данных там же освоишь ничуть не хуже. И можешь поупражняться немного в сишке. Чтобы понимать, как оно на низах работает. Нескольких глав из Кернигана и Ритчи тебе достаточно будет. Кресты, в общем случае, не нужны. Их используют для специфичных проектов. Там выбора нет. Без надобности лучше туда не лезь.
>>2166049 Касательно сишки, я прочитал всего Прату кроме пары глав и еще касался ассемблера немного. Однако сейчас это все немного подзабылось. >Хочешь ООП - пиздуй в джаву. Алгоритмы и структуры данных там же освоишь ничуть не хуже. Джаву впизду, точно нет. Смотрю в сторону шарпа, что по нему скажешь?
>>2166070 Как язык шарп норм. Перегруженный правда, зато развивается. И обрати внимание, что на дотнете доступны также языки F# и F*, так что тебе будет чем развлечься в будущем. Но я не вижу у него перспектив применения особых. Шарп конкурирует с джавой, используется для разработки веб-бэкендов для всякого энтерпрайза, десктопных приложений под винду и геймдева. В мобильной разработке практически не задействован. В новомодной херне типа дата саенс, машинного обучения не задействован. Подумай, чем хотел бы заниматься, в какую область податься и выбирай соответствующие языки тогда уж, мне кажется.
>>2166082 Хотелось бы приятный язык в котором я смогу освоить ООП на высоком уровне, хорошо разбираться в алгоритмах, структурах данных. Что конкретно хочу делать пока точно не определился, сейчас хочу язык, чтобы без особых танцев с бубном реализовать свои идеи приложений, которыми сможет пользоваться обычный люд и хочу попробовать геймдев. А шарп эдакий швейцарский нож вроде неплохо подходит для этого всего. Вопрос денег пока не стоит.
>>2166105 Бери шарп. Он подходит под твои критерии. А если углубишься в геймдев, перейдешь на плюсы. Но начинать с них, ну это такое. Там и танцы с бубном и "приятности". Все три языка это тяжёлые промышленные комбайны со своими особенностями, которые выбираются под задачу. Специального языка для обучения нет.
>>2166119 А насчет плюсов, стоит ли их вообще знать, кроме как для геймдева или это будет юзлес? Всякие САПРы и научные симуляции/расчеты я точно делать не планирую.
Пытаюсь устроиться джава джуном, но бесконечно решая тестовые задачи не раз натыкался на код с++ и университетские воспоминания со всеми этими калок малок нахлынули на меня и я иногда посматриваю на него к своему стыду, это как запретный плод...я перебираю его глазами, эти сиауты... Вообще стек джава + с++ это норм или кал без задач?
>>2166148 >джава + с++ Не знаю, как насчёт каких-то отдельных задач и вакансий. Но как бы существенная часть джава библиотек - это обёртки над сиплюсовыми либами, да и сама джава написана на плюсах. Иметь возможность что-то пофиксить, пропатчить в этой части, заюзать подходящую плюсовую либу в проекте, самостоятельно запилив под неё биндинг, это должно быть охуенно полезно. Разве что, если таким заниматься, то ты в плюсовые разработчики и переедешь со временем..
>>2166236 Есть JNI, используется в Андроиде для некоторых задач, где нужна производительность - некоторые игры с графикой, мультимедия. Ещё делают приложения на QML, но насколько много там плюсов, мне неведомо.
Каждый раз, когда приходится работать со строками в плюсах (разбавить по запятой и тому подобное), удивляюсь, почему всё так душно реализовано. То stringstream лучше использовать, то необходимо использовать substr или string_view и мучиться с индексами. Никак не сравнить с питоновским удобным stroka.split(','), возвращающим удобный массив. Да, есть стандартные алгоритмы, но через них по-моему не всё удобно делается. Это всё обосновано чем-то кроме нерасторопности Комитета? Есть ли надежда на будущие стандарты? Что делать сейчас, привыкнуть и вызубрить эти все приёмы для типовых задач со строками, или есть какая-нибудь годная библиотека?
>>2167201 > питоновским удобным stroka.split(',') То-то питон самый тормозной язык из всех реально используемых. Если хочешь, как в питоне, то о перформансе можешь забыть, вот только зачем тогда тебе кресты?
>>2167201 Boost String algorithms. Или используй строки из своего фреймворка. А в целом страдай, особенно когда дело коснётся юникода, его обработки и разных кодировок
>>2167282 >Не надо городить универсального монстра. И тут IBM такой "Не, голосуем SA. На наших системах вектор/список/whatever багованный, поэтому не хотим через него делать.".
Вот у меня такой вопрос, только начал изучать плюсы
У меня есть функция, и внутри неё я создал переменную int a, я что-то с ней сделал и вывел её на экран, или присвоил её значение другой переменной (Она больше не нужна), дальше в функции я написал ещё что-то и функция закончилась. Переменная a очищается из памяти когда я последний раз её использую, или когда заканчивается функция? Если она очищается при конце функции, имеет ли смысл запись int *a = new int, а пототом delete a, когда она не будет уже нужна, раньше чем скомпилируется остальной код функции (Чтобы переменная меньше времени лежала в памяти). Просто когда читал про динамическое выделение памяти, везде писали что такую штуку только для массивов используют.
>>2167310 все что создается после { удаляется после } кроме того что ты выделил в динамической памяти с помощью new или malloc также удаляются поинтеры к тем участкам динамической памяти, так как они являются переменными с адресом
>>2167210 >>2167218 Можно вернуть псевдо-массив с элементами типа string_view (заранее подсчитать его размер), по которому можно пробегаться, получая значения, генерируемые на ходу. Или вовсе вернуть итератор, который при разыменовании будет возвращать новое значение. Хочешь - строй из этого вектор, хочешь - используй иначе. И не нужно вручную возиться с циклами.
>>2167244 два чая Сам использую сплит оттуда. Вообще работу с нитями без без библиотеки не представляю, на родной С++ нет нормального non-case-sensitive поиска.
У меня вопрос - Каким образом форматируется текст в письмах(в программе Outlook или веб версии Gmail). Я передаю текст в почтовую программу через wstring. Могу ли я в wstring отформатировать текст?(сделать часть текста цветным, жирным и т.д).
>>2167343 Таким же как html или rich edit. Движок или поле редактирования решают какие параметры у буквы и соответствующим образом дёргают gdi/gdi+/direct 2d или что там ещё у них рендерит
>>2167443 Конечно не работает, а ты думал, теги распознаются магически сами по себе? А почему не распознаются в <b><u>этом</u></b> посте тогда, как думаешь?
>>2166190 Маркет написан на жабе, некоторая часть поиска тоже. В такси да, там антошка любитель микросервисов на С++ работает, поэтому их там и используют, хотя изначально такси на питухоне было написано. Хотя есть другие проекты, которые на С++ пишутся. Но не прям все, скорее половина или даже меньше.
>>2166183 >Бэкенды бОльшей части сайтов, куда ты ходишь Бэкенды написаны на пхп. Тот же фейсбук и вк используют пхп, хоть и с существенными модификациями.
>>2166070 >Джаву впизду, точно нет Почему? Если просто цель научиться в ооп и решать задачки с литкода, то норм выбор. Да и в промышленности жаба буквально везде.
>>2166070 >Смотрю в сторону шарпа, что по нему скажешь? Хороший язык, если хочешь в геймдев.
>>2167593 >То то меня уже 4 года туда крестовиком хайрят в 2 разные команды. Diversity in recruitment. Глянули твои поисковые запросы про членодевок и няшных кунчиков и решили, что надо тебя взять по квоте.
>>2166190 >яндексе Плотют нихуя, даже по сравнению со сраным сбером. Топ места для плюсовика это хуавей, нвидиа и интел, но туда хуй попадешь, так как места буквально нужно резервировать будучи студентом 3 курса профильной кафедры мфти.
У меня есть класс с конструктором от int. то есть работает такая штука: 1 == myclass("24") Как мне сделать, чтобы работало и static_cast<unsigned int>(myclass("12345678")) == 12345678? Я хз даже где и что начать писать.
>>2167759 В Касперском вполне нормально. Хотя сейчас в основном на KOS набирают, а там я не знаю какая внутренняя кухня.. И слышал что в JetBrains хорошо, но там когда смотрел в последний раз почти все чисто плюсовые вещи заняты, извольте знать Джаву.
Я не понимаю зачем нужен стек, точнее я вот читаю и понимаю, но не понимаю зачем оно именно так. Вот есть у нас сегмент данных и сегмент команд в ОЗУ. Процессор выполняет одну операцию за раз (в нашем случае). Заносим данные и команды из памяти в регистры процессора, волшебство, затем обратно в память. Так же это в простейшем случае? Зачем создавать еще один буфер между программой и процессором, если мы можем обращаться к самой программе, к этим данным. Короче я спутано написал. Но вот может кто привести пример, когда это именно эффективно?
>>2167878 Аппаратный Стек в первую очередь нужен для вложенных вызовов подпрограмм, чтобы туда складывать адреса возврата. Остальное уже добавили для удобства до кучи
>>2167878 Раньше (да и, наверное, есть и сейчас такое) в некоторых микроконтроллерах для каждой переменной было своё место в памяти. Вот есть у тебя функция int f(int x) { int y = x + 2; return y; } У "x" адрес, скажем, 0x1000, у "y" 0x1004. И все операции над ними действительно проводились с этой памятью. И вроде всё работает, но, если подумать, то рекурсивные вызовы становятся невозможными (напиши вычисление чисел Фибоначии и посмотри, что пойдёт не так). Но хрен с рекурсией, обойдёмся. Гораздо хуже дело обходится с многозадачностью. Любой кусок кода теряет реентерабельность. Если два потока одновременно зайдут в эту функцию, то они распидорасят данные друг друга. Если данные хранить на локальном стеке у каждого потока то всё получается как надо.
>>2167878 Ещё стек нужен для обработки исключений. Иначе будет не понятно какие данные и операции над ними нужно провести для отката в валидное состояние.
Этот тест кейс с какого то файла тянется. Можно ли какой нибудь дефайн прописал, чтобы это все как то развернулось в просто выражение между фигурными скобочками?
>>2167847 А что в Касперском по зп? Вообще тема инфобеза довольно интересная, тот же networking со всякими анализаторами трафиками на dpdk прикольная область, но кроме касперского знаю только positive technologies, на которые наложили санкции, и group-ib. Интересно что у них по зп. Вообще с радостью пошел бы пилить всякие СОРМы, но боюсь условия труда будут крайне хуевые.
>>2157621 (OP) https://ideone.com/XdxRL9 1.Что за числа в выводе Apple (Red delicious,red,7.3)12142, откуда? 2. Почему если методы оставить константными, но убрать const у ссылок на возврат все перестает работать? string& getName() const { return m_name; }
>>2168579 >И вобще, возвращай по значению в подобных случаях В подобных случаях надо кокрастыке возвращать "по ссылке" > Return value optimization все сделает в лучшем виде. Он тут вообще не при делах
здарова бандиты, задача такая: есть веб api которая содержит файлы (один на каждый день) внутри файлов данные.
эти данные я отрисовываю в виде графиков и показываю. Я научился показывать один файл данных, но вот с показом этих данных за все дни у меня возникла проблема, потому что я не знаю паттернов как все это может быть устроено.
Как мне реализовать реалтайм тайм загрузкуи показ этих файлов?
Например я кручу график влево, данные первого файла кончаются и программа понимает, что надо скачать второй файл, она его скачивает и уже пдгружает мне второй файл.
Есть еще одна загвоздка я как то могу химичить с данными, то есть преображать все данные из файла в другие данные.
Что мне реализовать? event -loop с пулом воркеров? или что то другое.
Итак задача. Перейти с Си на плюсы, плюсы и ООП не знаю от слова совсем. Уровень плюсов нужен минимальный, но со знанием тех особенностей которые его отличают от Си и минимальные знания стандартной либы. Как сделать это максимально быстро?
>>2157621 (OP) Последний считанный cin'ом символ печатается при следующем вызове cout, в самом начале вывода (после этого потерявшегося символа идёт нормальный вывод cout). Может ли это возникать из-за того, что я в программе использую и cin/cout, и printf? Как фиксить, если fflush не помогает? вечно в крестах какая-то ебанина с вводом выводом
>>2169090 >>2169092 Код показать не могу, меня за это набутылить могут (да и к интернету мы тут не подключены). Короче проблема решилась сама себе, просто добавил новый метод классу и внезапно лишний символ перестал печататься, при том что ввод вывод имеющихся методов я никак не трогал. Ебать фантастика, как вы на этом пишете вообще.
>>2169164 Это у тебя какая-то бага, запускай valgrind, санитайзеры и ищи. Даже sync_with_stdio(false) не должен таких эффектов показывать. Но вообще cin/cout та ещё хрень, не рекомендую пользоваться.
На всякий случай напишу все равно примерную структуру, как оно выглядит, мб подскажете что-нибудь на будущее >считывается один символ cin'ом (это в главной функции) >проходит передача по каналу и обработка информации, много чего выводится на экран cout'ом, всё это происходит внутри методов класса и выводится без каких-либо проблем >возвращаемся обратно в главную функцию, здесь первый же cout сначала выводит считанный когда-то ранее символ, а потом уже то, что должен Очень ли плохо то, что у меня вывод делается иногда cout, а иногда printf? Или все из-за того, что внутри класса они используют какой-то другой поток вывода, не тот что в мейне?
>>2168665 могу только подсказать что ты прекрасно все это сможешь сделать в одном потоке, и ни слова больше потому что лень объяснять что то таким мелкочеликам как ты, несмотря на то что ты по видимому уже зарабатываешь своим говнокодом на хлебушек с маслом а я безроботное говно, ну а вообще конечно ты можешь прикрутить "эвентлуп с пулом воркеров" чтобы когданибудь твой говнокод попался на глаза нормальному кодеру и он уссался бы с тебя
>>2167759 >Топ места для плюсовика это хуавей вчера в /b в одном из тредов кстати заявляли что хуайвей обосрался со своей новой операционкой потому что набрал кодеров из россиюшки хз, пиздел ли анон, проверять лень
Надо написать программу, выполняющую один раз ввод последовательности целых чисел, признаком конца которой будет ввод числа ноль (ноль не считается членом последовательности) и определяющую значения в соответствии с условием варианта. Входные данные: Последовательность целых чисел, заканчивающаяся нулем. Выходные данные: Найденные значения с пояснениями При выполнении работы необходимо учитывать, что • последовательность может быть пуста • может не содержать элементов нужного типа для решения задачи типа • может не содержать необходимого для решения задачи количества элементов.
И так же определите наибольшую длину монотонного убывающего фрагмента последовательности (то есть такого фрагмента, где все элементы меньше предыдущего).
>>2168840 Что значит не можешь? Заебали, пишите хотя бы компилируется оно или нет. А то что с памятью там пизда и при запуске всё полетит через три сегфолта, так это проблема не класса и не метода.
>>2169346 что значит окмпилируется? ошибок красных нет, но выдает предупреждение по памяти > так это проблема не класса и не метода. так а как исправить? чтобы к методу можно обратиться было
Вечер добрый. Как думаете, бэк на плюсах будет когда-нибудь так же распространен и востребован, как написанный на Govnishe/Java/#/Py? По сути из плюсовых вакансий в мск онли Яндекс за редким исключением, в то время, как всякие озоны, сберы да и тот же яндекс много всего пилят на вышеупомянутых языках и платят за это овердохуя шекелей.
>>2169546 Сбер крестовиков хайрит, но оверолл - язык не очень живой, и если хочешь денег - лучше задротить либо ГОвно, либо фронт. Да, продажа души за деньги
>>2169408 >так а как исправить? чтобы к методу можно обратиться было Пройдись отладчиком уже.
>tmp->get_name(); //почему я не могу обратиться к методу? tmp имеет тип указателя на player. Проблема в том, что в этой точке (строка 43) этот указатель не указывает ни на какой объект player.
Простого исправления тут нет. Выпили весь класс нафик с этими new и используй vector. Плееров добавляй через push_back().
Пацаны скок вы на лабу/работу вообще тратите времени? Ебался 8 часов с одной лабой и 70% времени заняло прыганье по форумам и гуглёжка потому что не знал за сщуествование векторов а потом ебался с оператором friend std::ostream& operator<< И при этом большинство ошибок было банально из-за невнимательности, потому что к началу 1 часа голова уже плывёт невероятно
Есть вектор указателей на открытые потоки ifstream. Затем есть цикл for с перебором вектора по begin end. Я могу разыменовать указатель и направить потоки, например, в cout, но не могу сделать close() таким же образом. Почему так?
>>2169546 >Как думаете, бэк на плюсах будет когда-нибудь так же распространен и востребован, как написанный на Govnishe/Java/#/Py? Какую задачу он будет решать? И какова скорость разработки? Есть ли удобные фреймворки или может как на go можно в 3 строчки поднять сервер?
>много всего пилят на вышеупомянутых языках А тут все просто, каждый язык и фреймворки решают свою задачу. Go - микросервисы с хайлоадом и многопоточностью, все есть из коробки, запустить сервер можно в 3 строчки прям как в express.js и это дает высокую скорость разработки. Но делать что-то большое уже сложно. Java - тут на спринге делают большие тырпрайзные приложения с длительным сроком поддержки, сюда же можно и .net припахать, иногда на спринге пилят микросеервисы, но я в живую не видел. python, php, js, ruby - всяко-разно для бэка от пхпшного симфони, который почти спринг, до express.js, sinatra, flask на которых хуяк-хуяк и в продакшн. Там заняты все ниши которые возможны, скорость разработки высокая. Короче в бэке +/- все уже есть, скорость быстродействия в большинстве случаев не так важна поскольку для клиента не особо важно ответили ему за 100 мс или за 10, плюс еще всякие запросы в базу, время коннекта, запросы во внешние апи и прочее танцы с плясками, которые нивелируют эти милисекунды. Плюс нагрузку можно распределять, девопс напишет заклинание в конфиг балансировщика, поднимет еще пару подов и готово. А если в конечном итоге нет большой разницы что брать, то выбирая между go и c++ выберут то на чем можно быстрее разрабатывать или то что лучше поддерживать
>>2168391 >group-ib Как показала практика, лучше в инфобез не лезть вообще. Грузить джейсоны и клепать однообразные круды гораздо безопаснее, чем лезть в вундервафли и настоящий цифровой гулаг.
>>2169546 >бэк на плюсах будет когда-нибудь так же распространен и востребован
Нет, и никогда такого не произойдет. Причина очень простая - С++ сложный, и вместо того, чтобы сосредоточиться на бизнес-логике и высирать код, я должен держать в памяти информацию о кучи подводных камней, которые могут разом обрушить сервер.
В этом плане джава в своей время оказалась очень успешной - есть ООП и относительно неплохая стандартная либа, но в то же время не нужно задумываться о конструкторах копирования, операторах присваивания и пристально следить за тем, куда там скопировались указатели, чтобы не дай бог double free не случилось или утечки.
js, php, python, хоть и имеют динамическую типизацию, но все равно способов отстрелить ногу гораздо меньше, а скорость разработки высокая.
>в то время, как всякие озоны, сберы В ритейле, банках и телекоме (если не брать железячные темы), С++ не место. Там как раз популярна джава на бекенде, так как можно десятилетиями поддерживать один и тот же проект, изредка перекатываясь на новую версию спринга и jvm.
>>2169573 >Сбер крестовиков хайрит Там сбердевайсы вроде крутые. Но опять же, это не банкинг, а больше про IoT и желание сбера стать айти гигантом на рынке РФ. Если брать классический С++ в банках, то это окажется ембеддед вроде pos терминалов и банкоматов с написанием хуевин под старый добрый winXP в некоторых особых случаях
>>2170334 >ембеддед вроде pos терминалов Оооо. Я в таких терминалах малварь sqlite видел. Вот в бэке есть базы данных с репликами, шардингами, бэкапами и вообще это ещё архитектить надо. а там тупо сделали sqlite файлик вместо бд чтобы чуть какая авария можно было его на флэшечку скинуть, отредактировать и вернуть обратно. Уже представляю грандиозность задач в ембеддед, где непременно нужны кресты
>>2169546 >бэк на плюсах Удел плюсов в будущем - всякие системные хуевины и платформы для разворачивания более высокоуровневых ЯП.
Чтобы поддерживать условные V8/JVM/CLR, mysql/postgres много людей не нужно - от силы по паре тысяч плюсовиков в google/oracle/microsoft. Для графики все аналогично, для всяких там кадов хуядов тоже. С++ это очень штучная вещь, для которого много вакансий быть в принципе не может, особенно в СНГ или нищих странах европы, где толком и нет своих разработок в системщине, а основной доход в ит это энтерпрайзы, живущие за счет нефтяных бюджетов
>>2169546 Смотря какой бек. Я вот поддерживаю на крестах компилятор внутрепроприетарного графического языка чтобы наши навигаторы мышкой свои алгоритмы рисовали и ещё кучу дсл. Это все бек по сути.
дрочить не надо. Заниматься надо. Прочти Прату или Липпмана ( Essential C++) или Эккеля. Из нового Ivor Horton Beginning C++17/20 Короче бери любую базовую книгу по плюсам. потом смотри более углубленно темы. Надо читать, надо запускать, надо гуглить.
для "мы вам перезвоним" нужно еще чутка почитать алгоритмы и структуры данных и погуглить 400 вопросов на собеседовании С++. Прочтешь хоть одну книгу по плюсам, уже 200 вопросов считай прошарился. Это все вполне реально.
>>2170373 Крупные галеры погоды не делают. У них под C++ примерно такой же процент вакансий как и на открытом рынке. Ну и сами галеры предпочитают энтерпрайз с долгими контрактами или вёб, чтоб быстро и без гемора срубить бабла.
>>2170389 бля, ты не слушай этого мудака залетного вангую это тот же челик что недавно заявлял тут что "шаблоны с++ ничего не знают о типах языка" и его никто не смог переубедить а щас он че-то там про явку в ритейле, банках и телекомах вещает ничего не понимая в откатных говносхемах наших манагеров-кабанчиков, что происходили в середине нулевых когда эти системы переписывали с крестов и дельфи на говноявку
>>2170435 >че-то там про явку в ритейле, банках и телекомах вещает ничего не понимая в откатных говносхемах наших манагеров-кабанчиков, что происходили в середине нулевых когда эти системы переписывали с крестов и дельфи на говноявку
А что не так? Всем уже давно очевидно, что гораздо проще поддерживать жирный ритейл с легаси на явке, чем на С++. Банки туда же. Там где нет нужды в low latency, то смысла в С++ ровным счетом 0, одни убытки будут.
Как создать список списков через структуры и как к нему обращаться?
struct Node { Node next; subNode subhead; };
struct subNode { int data; subNode next; };
Думал над таким вариантом, но в строке >subNode subhead; выдаёт ошибку: C4430 отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию Буду очень благодарен
Хочу сделать функцию возможно, это будет метод класса, ещё точно не определились, которая в качестве аргумента принимает структуру. Проблема в том, что структура может быть любого размера (в разумных пределах) и включать в себя любое количество элементов, т.е. заранее её тип не прописать. Думаю передавать эту структуру в функцию через указатель void. Есть какой-нибудь вариант получше?
>>2171317 >структура может быть любого размера (в разумных пределах) и включать в себя любое количество элементов Если ее структура будет известна только в рантайме, то шаблоны не помогут. Надо будет передавать в том числе информацию как она устроена в самой структуре, это ООП во все поля. У тебя будет древовидная структура полиморфных объектов представляющих собой какие то значения, юнионы, даблы , массивы и тп, которые будут выдавать о себе информацию в рантайме, для получения их значений или ссылки на свои дочерние объекты. Это не так сложно на самом деле, у нас постоянно используется.
>>2157621 (OP) Нужен годный аутсорс-сайт где я, бедная cpp-макака ,смогу заработать на еду. Сорок usd в месяц будет достаточно. Готов хуярить по 8 часов в день, лишь бы получать свои копейки на пропитание. Желательно что бы заказчиками были частные лица, которым нужен не сам код, а непосредственно работающая программа.
>>2171748 Кушать хочу. Идти на дноработку не вариант. Да и не нужно на самом деле. Ведь я же не просто так 4 года на цпп пишу? Наверняка есть возможность заработать на паек. Тогда можно хикковать занимаясь любимым делом
>>2171771 выжить можно было на подсчитываемый раньше государством прожиточный минимум (он был 10-12 тыщ рублей в регионах, в москве больше) но при условии наличия собственного жилья и налаженого быта в квартире, плюс наличие каких-то запасов одежды, плюс (это важно) человек должен уметь готовить и быть подкованным в жизни, хоть немного сейчас гос-во отказалось от рассчета минимального прожиточного минимума исходя из потребительской корзины, сделав другие метрики, сделав еще один шаг к демонтажу структур социальной помощи в государстве
>>2171865 Структура должна уметь создаваться в зависимости от действий пользователя, конфигурационных файлов, данных из сети и тп. А рефлексия для этой цели это костыль в языках типа шарпа для дебилов.
Я правильно понимаю что приложения с крутым нативным дизайном на винде возможно написать только на c#? хоть и калькулятор написан на c++, в нём используется управляемый код. qt так умеет? будет ли вообще уметь? qml?
>>2171942 > написать только на c#? хоть и калькулятор написан на c++, в нём используется управляемый код. qt так умеет? будет ли вообще уметь? qml? на WinRT вроде подобное реально сделать
>>2171942 На qml пишется легко все кроме верхней полоски м крестиком. Работающую картинку как у тебя можно набросать за минут 15 наверное, там кресты будут нужны только для пуска, все остальное на qml и js.
Анончик, посоветовавший шаблоны, вот смотри что я слепил https://pastebin.com/beM0n3s9 Этот код компилируется и даже запускается, но работоспособность проверить я уже не успел. Норм шаблон написал или хуйню сделал?
Задание написать программу парсер некоторых команд. У команд могут быть псевдонимы, то есть несколько слов, которые обозначают одну и ту же команду. Как аккуратнее это реализовать, что бы не пришлось в коде каждый раз писать 10 сравнений if(s == "cmd1" || s == "cmd2" || s=="cmd3") и тд.
Что если я хочу, чтобы функция, генерирующая последовательность строк, вернула итератор по этим строкам? В бусте или стл есть что-то вроде итератора, который владеет коллекцией, по которой он проходится?
Знаю, что можно просто из функции вектор по значению вернуть, и за счёт RVO + move конструктора, если просто так написать vector<string> v = f(); то всё будет норм.
>>2172215 А, да, я дебич, ещё же end нужен. Тогда нужно возвращать два итератора, begin и end. Возвращать и вектор, и итератор - это как-то странно, проще тогда один вектор вернуть и из него достать begin и end.
Просто у меня в голове интерфейс функции в этом случае хорошо бы сделать абстрагированным от того, какая конкретно коллекция используется для хранения строк. Чтобы была просто возможность просмотреть их, возможно, сохранить куда-то себе.
>>2172231 Ты можешь возвращать через auto и пофиг какой там контейнер. >>2172237 Так qt это не только про кресты. Это как космические корабли у маска, там кишки на крестах, интерфейс на жс плюс свой реактивный фреймворк. И вообще нормальный крестовик знает обычно ещё пару языков минимум.
Аноны, привет. Я залетный, не по вашему языку, но выслушайте.
Есть такой язык VEX, он является внутренним языком скриптинга в программе Houdini, и его синтаксис частично основан на C/C++. Так вот, недавно столкнулся с такой вот конструкцией: var_a = (int) number; хотя я бы написал так: var_a = int (number);
Мне стало интересно откуда это, в хэлпе по самому VEX-у ничего подобного нет. Возможно, ноги растут из самого C++, вам знакома такая конструкция?
Местные аноны, посоветуйте книг программисту на С, чтобы выучить все нововведения в c++ и библиотеку stl, без самых базовых вещей по типу указателей, потоков ввода, вывода, и т. д.
Вот можно писать массивы не как array[3], а (array+3). А что на счет многомерных? Получается там же array[2][3] = array[23] = (array+23) или тут все таки 2+3?? Но вот незадача - последний вариант не работет даже с "+"!
Такой вопрос: как правильно писать, что бы это рабьотало? И как быть с многомерными массивами?
Ну шо, хохлы аноны на гитхабе шапки что-то взбухли, и я про неё вспомнил поэтому перенёс шапку в readme репозитория, и если у кого-то есть желание её улучшить у меня, очевидно, нет — ждём-с пулл реквестов.
Шо. Когда там наконец можно будет как человек забить на эти разделения на cpp hpp файлики и как в той же жаве, шарпах, прости господи, джаваскрипте - пилить как человек код в одном файлике?
>>2173447 Пока ты один в проекте, то может быть и незачем. Когда у тебя команда - инкапсуляция становится критически важна. При грамотном подходе человек использующий твой класс не сможет разрушить заложенную тобой логику и будет его использовать его правильно. Когда у тебя нет инкапсуляции, то любой человек в проекте будет пытаться прострелить себе ногу.
>>2173550 Да, охуенное разделение, охуенно работает. Определения шаблонов всё равно приходится писать в хедеры. Плюс говно по типу namespace impl, чтобы скрыть детали реализации.
>>2173628 >Определения шаблонов всё равно приходится писать в хедеры. Потому что .cpp это единица трансляции который в конечном итоге дает скомпилированный, но не линкованный .obj файл. Все шаблоны/их типы должны быть вычислены ДО начала трансляции кода, т.к. язык строго типизирован.
>Плюс говно по типу namespace impl, чтобы скрыть детали реализации. И что в этом плохого?
>>2173680 Не знаю, извини(( Я понимаю про шаблоны, но просто нахуй тогда пытаться делить на хедеры и сорсы, если всё равно всё в кучу в хедерах получается?(( Мне нравится идея того, что в хедерах публичный интерфейс, но то, что туда надо ещё пихать шаблоны и туда иногда ещё попадают вещи, не касающиеся публичного интерфейса, которые можно разве что попытаться скрыть...
Кажется, в модулях эти проблемы решены, вот насчёт шаблонов не уверен, но я ещё сам их не пробывал... Не знаю, какая там поддержка их в например симейке.
>>2173212 >ООП понять что такое гомоморфные иерархии классов и статический/динамический/adhoc полиморфизм и их use cases понимать что все остальное про что будут писать и говорить про ооп в контексте с++ - буллшит и игнорировать не путать компонентное программирование через эмуляцию интерфейсов и ооп, это блядь разные приемы в с++ как то так но лень объяснять, потому что кто это знает тот знает и молчит, кто не понимает тот посчитает этот текст сумашедшим высером
>>2173218 ну вот первый буллшитер, к примеру инкапсуляция и ооп вообще никак не связаны, за мантру "ооп это наследование инкапсуляция полиморфизм" нужно валить на пол и бить ногами
как реализовать на с++ алгоритм шифрования при помощи случайной перестановки? Пока прикинула план шифрования и дешифрования, но как-то с кодом не получается. Подскажите пожалуйста, как это сделать. Шифрование: 1) берем алфавит, для него рандомно делаем таблицу, по которой будем шифровать (просто меняем буквы местами) 2) в кодовом слове определяем номер каждой буквы (например а-0, б-1, в-2 и тд) 3) по номерам заменяем эти буквы из таблицы для шифрования Дешифровка: Нам понадобится та же таблица, только уже в ней будем искать букву, смотреть ее порядковый номер и заменять на изначальную букву
Копируешь откуда-нибудь PRNG функцию, чтобы генерить номера символов для алгоритма и перемешиваешь. Ключом будет сид PRNG.
Чтобы восстановить, наверное, просто в обратном порядке обменов делаешь этот алгоритм. Только тогда придётся ещё заранее сгенерить все номера символов с тем же сидом, чтобы пройтись по ним в обратном порядке по ходу алгоритма.
Тоже говно идея, но по крайней не такая шиза, как у тебя.
>>2173708 >но просто нахуй тогда пытаться делить на хедеры и сорсы, если всё равно всё в кучу в хедерах получается?(( Я написал выше про шаблоны. Все остальное можно писать в одном .cpp файле. Есть даже прием для ускорения сборки - все собрать в один .cpp и оттранслировать только один юнит.
Изначально смысл хедеров описать один раз объект/функцию/перечисляемые типы и использовать потом везде. Если не использовать заголовки, то придется объявлять прототипы функций каждый раз когда ты захочешь заюзать функцию из другого юнита трансляции.
>Мне нравится идея того, что в хедерах публичный интерфейс Так и должно быть.
>но то, что туда надо ещё пихать шаблоны и туда иногда ещё попадают вещи, не касающиеся публичного интерфейса, которые можно разве что попытаться скрыть... Тебя никто не заставляет использовать шаблоны (исходя из своего опыта могу сказать, что если ты собрался заюзать шаблоны, то возможно стоит пересмотреть архитектуру того, что ты делаешь сейчас, т.к. есть вероятность, что ты делаешь что то не так). Тем не менее они полезны. Метапрограммирование в крестах весьма мощная штука и позволяет решать нетривиальные задачи. В моей практике это иногда встречается (геймдевелопер 25 лет опыта). Однако необходимость пилить шаблоны в хедерах не является какой то проблемой по сравнению с задачами которые они позволяют решить относительно малой кровью.
>Не знаю, какая там поддержка их в например симейке. cmake не поддерживает шаблоны, лол. А вот любой современный компилятор все это поддерживает нормально.
>>2173984 ооп это та или иная форма полиморфизма и ничего больше даже наследование не более чем инструмент для его организации инкапсуляция вообще не причем, отдельно от ооп
>>2173543 >человек использующий твой класс не сможет разрушить заложенную тобой логику и будет его использовать его правильно. Помню как приходилось переписывать по половине функционала, потому что ОО-дебилы ИНКАПСУЛИРОВАЛИ всякие мелочи, которые внезапно оказались важными для решения некоторых задач. И это в питухоне, Карл!
>>2173543 У меня есть коллега, который презирает уровни доступа С++. Он работает на низком уровне, использует С++, как С с классами. Драйвера, софт для embedded и т.п. Когда я ему начинаю говорить про типобезопасность, инкапсуляцию, он говорит, что возьмет и получит нужные данные по смещению. Ну и что ему возразишь? Ничего. Он прав. Если кто-то захочет - он сделает. Даже в мейнстримовых песочницах можно. Вопрос цены только.
Конечно это не значит, что нужно все это забыть. Но категоричность сбавить можно было бы :)
>>2170414 Где на практике нужны эти алгоритмы, кроме графики и хайлоада? В десктопных приложениях, в реализации протоколов максимум std::sort пригодился.
Бляяя какой же сука тупой тайп инференс у С++. Это что за хуйня он не может неявно преобразовать bool в std::optional? Пиздец как я заебался на этом говне писать.
>>2174586 В чём смысл передавать в метод set optional? Это как-то тупо, проще и логичнее вынести этот if (value) в код, который вызывает set. Это не область ответственности сеттера, он не может корректно обработать отуствтие значения в опшенале, как мне кажется.
Вывод типов... Ну да, придётся добавить <bool> к вызову метода.
>>2174613 Как раз таки это класс я сделал специально, т.к задача заключается в том, что приходит некий результат с полями обернутыми в optional и смысл в том, чтобы если значение есть формировать поле в джейсон, а если нет - нет.
>проще и логичнее вынести этот if (value) в код, Как раз наоборот, изначально было в коде тупо проверка ифами по всем полям, где я нашел пару ошибок + это дублирование кода.
>Вывод типов... Ну да, придётся добавить <bool> к вызову метода. Нет, приходится добавляться set("sdad", optional{true})
>>2174800 >изучаю c++ Нахуя? Я вот пытаюсь наоборот с него перейти куда-то после 10 лет поедания говна на нем. Запомни: С++ - это когда пахнет говном в офисе
Сап двач, мидл почти 5 лет опыта. Что скажете за условно русский FAANG: Сбер, Яндекс, Mail, Ozon, Вконтакте, Rambler относительно бэкэнда на крестах. Везде более менее одно и то же. Хоть какая-то разница есть? Может где-то премии пожирнее или соц пакет?
>>2174891 Ну хз, концептуально раст кажется сложнее. >А во-вторых, нахуй тебе эта низкоуровенвая параша? Чтобы держать мозг в тонусе, так сказать. Ещё можно обмазаться абстракциями и стать фп-каргокультистом, но я пока ещё хз, хуже это или лучше.
>>2174897 Ну конечно низкий уровень знать желательно, но не критично в зависимости от прикладной области. Но лучше знать и понимать алгоритмы и уметь выражать задачи на абстракциях языка. Так что чтобы держать мозг в тонусе, лучше фп. Но если ты только вкатываешься, начинать с хаскеля тебе будет сложно. Так что мой совет F# - это OCaml со встроенным dotnet, ахуенная штука, которая позволяет писать на функциональном языке и пользоваться dotnet фреймворком.
>>2174891 >перегруженного цпп в цпп нет ничего ненужного целый комитет яйцеголовых стоит на страже не допуская добовления в язык лишней семантики! а существующий синтаксис лишь обслуживает семантику!
>>2174907 >F# - это OCaml со встроенным dotnet, ахуенная штука, которая позволяет писать на функциональном языке и пользоваться dotnet фреймворком если есть 2 квартиры, одну сдаешь, во второй живешь, и еще если умеешь жить экономно (варить борщ) то Ф решетка - твой выбор в остальных случаях не советую
Открыл пример блокнота на Qt, хочу добавить функцию для настройки печати. Как это сделать, не могу разобраться. В справке написано Constructs a page setup dialog that configures a default-constructed QPrinter with parent as the parent widget. То есть, я могу вызвать опцию без параметров и он должен настроить принтер который есть в моём экземпляре класса? Но почему тогда в функции выше он создаётся заного при нажатии кнопки? Может его нужно создать один раз, при инициализации класса?
Начал работать с библиотекой glfw и возникла проблемка Вот код, который я скопировал с какого-то сайта и он рабочий, создаётся окно, в котором вращается треугольничек
Я решил перенести весь этот код внутрь класса (Всё что внутри main я перенёс в отдельный метод setwindow). И в итоге в методе setwindow при вызове glfwSetKeyCallback(window, key); возникает ошибка
аргумент типа "void (class1::)(GLFWwindow, int key, int scancode, int action, int mods)" несовместим с параметром типа "GLFWkeyfun"
c glfwSetErrorCallback(error); примерно та же ошибка как фиксить?
void key(GLFWwindow window, int key, int scancode, int action, int mods) { if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) glfwSetWindowShouldClose(window, GL_TRUE); }
void display(GLFWwindow window) { int width, height;
Сап двач, пишу программу для мк Atmega8. Мне надо перевести unsigned int 32 бита в массив char. Я использовал функцию sprintf, и я никак не могу перевести число больше чем 65535, любое число которое больше 65535 превращается в рандомный бред, в отрицательные числа и тд. Вот код:
>>2175618 Пишу с телефона. Тебе надо сделать вот что. Берёшь arr[4] чаров и свой uint32_t val и делаешь так - arr[3] = val >> 24; arr[2] = val >> 16; arr[1]= val >> 8; arr[0] = val;
>>2176242 >>2175618 >>2176005 >>2175864 Всё, решил проблему. Оказалось что T - восемь бит и оно не могло умножиться на 30000 потому что для счетчика было достаточно 8 бит. Сделал Т 32 бита и всё заработало. Но вообще странно, почему С не может умножить 8-битную переменную и результат положить в 32-битную?
Анончики, где в VS2019 настроить чтобы мне при компиляции не было в output не было русских слов типа "Не удается найти указанный файл"? Сама студия, менюшки, все, на английском.
>>2176465 Имеешь ввиду эту строчку? >uint32_t Time = (T * 30000) + Tn; где T у тебя был 8 бит? У тебя что за компилятор? MSVS собирает этот код, т.к. выполняет автоматическое преобразование типовю
Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 3 и при этом была максимально возможной. Гарантируется, что искомую сумму получить можно. Программа должна напечатать одно число— максимально возможную сумму, соответствующую условиям задачи.
Входные данные. (Пикрил ) Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество пар N (1≤N≤100000). Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.
Пример организации исходных данных во входном файле:
6
1 3
5 12
6 9
5 4
3 3
1 1
Для указанных входных данных значением искомой суммы должно быть число 32.
В ответе укажите два числа: сначала значение искомой суммы для файла А, затем для файла B.
Предупреждение: для обработки файла B не следует использовать переборный алгоритм, вычисляющий сумму для всех возможных вариантов, поскольку написанная по такому алгоритму программа будет выполняться слишком долго.
есть вопрос. можно ли в конструкторе класса както получить адрес самого объекта класса который создается этим контруктором? хочу написать двусвязную очередь, и хочу чтобы при создании нового элемента конструктором в поле предыдущего элемента записывался адрес только что созданного. например Class1(Сlass1* pre){ a=0; prev=pre; next=nullptr; pre->next=И ВОТ ЧТО ТУТ ПИСАТЬ? ПРОСТО &Сlass1 НЕ КАТИТ, Т К ЭТО ИМЯ ТИПА }
В каких сферах крестовики зарабатывают лучше всего? Работаю в телекоме, чищу вилкой говна, получаю 180. Думаю о перспективах. Умею в ангелский разговорный - будет ли выхлоп, если запилить релевантное cv на линкедин?
Анончики, где в VS2019 настроить чтобы мне при компиляции не было в output не было русских слов типа "Не удается найти указанный файл"? Сама студия, менюшки, все, на английском.
Анончики, где в VS2019 настроить чтобы мне при компиляции не было в output не было русских слов типа "Не удается найти указанный файл"? Сама студия, менюшки, все, на английском.
Анончики, где в VS2019 настроить чтобы мне при компиляции не было в output не было русских слов типа "Не удается найти указанный файл"? Сама студия, менюшки, все, на английском.
Анончики, где в VS2019 настроить чтобы мне при компиляции не было в output не было русских слов типа "Не удается найти указанный файл"? Сама студия, менюшки, все, на английском.
>трейдинг, финтех Ну кто бы сомневался, чем денежнее - тем унылее, кхе.
>>2177197 >легаси говна? Ещё как. зазывали на "с++17 в проектах", оказалось как всегда.
>шаришь в какой-то предметной области С позиционированием себя беда, конечно. Работал над всяким понемногу, ни от чего особо не угорал - только по графонию периодически чего-то ковыряю и почитываю. Я так понимаю без ясного и чёткого выпячивания какой-то своей фишечки и специализации в cv ловить особо нечего - в лучшем случае локальные же херки и будут написывать.
>>2177329 >в лучшем случае локальные же херки и будут написывать Да не, сейчас всякие пишут. На хедхантере очень сильный разброс - со всех наших пердей (НиНо, Нск, Красный, Дс1/2, Калина, даже с Томксков), с хохлоины, с восточной европы и кипра. На линке к ним присоединяются дойчи и китайцы.
>>2157621 (OP) Подскажите как организовать парсинг данного текста. Объект строится из частей путем унарных и бинарных операций над частями. То есть необходимо реализовать калькулятор, который работает с типом <Part>. В самом определение типа <Part> будут перегружены все возможные операции с типом. Первая идея была спарсить с помощью boost::property::tree. В тексе находим "Part_derived (type" и создаем объект <Part_derived_manager>, который в полях содержит строку "a,b,c" для инициализации полей объекта <Part_derived> в дальнейшем. Рабочая схема, как думайте? Все сложнее с объектами.В тексе находим "OBJ" и создаем объект и создаем объект <object_manager>, который содержит индентификатор и строку-выражение "PR2*(PR1+PR2)". Что с ней делать? Части уже созданы, в каждой из них перегружены арифметические операции. Придется писать полноценный калькулятор на boost::spirit, с токенизатором, лексером для этой строки-выражения, калькулятор который работает с типом <part>? Если да, то как затем хранить это выражение в объекте <object>, поскольку оно потребуется в будущем.
Есть желание попилить воксельный движок не для коммерческой разработки, просто люблю матан, кодить и есть много свободного времени Какие библиотеки для работы с 3d можете посоветовать?
>>2177887 Зачем использовать что-то стороннее, связанное с графикой, если собрался делать свой графический движок? Просто возьми какие-нибудь либы для создания окна с opengl контекстом и для загрузки opengl функций, и пиши с нуля, что душе угодно. Ну или вулкан. Или этот бойлерплейт с созданием окна и загрузкой функций тоже сам напиши.
Че сейчас на сеньерскую позицию спрашивают на собеседованиях в конторки выше среднего? Виртуальный деструктор. 4 года назад последний раз был на собесе.
Че за хуйня? Я открыл в vs файлы, писал что то в них, а через консоль компилировал. Потом оказывается, что я файл не могу сохранить, а саму vs не могу закрыть. Че за хуйня?
>>2180906 Инсталер - это отдельная программа. Насколько я помню, у нее нет настроек языка. Микрософт при скачивании подсовывает версию на том языке, который она считает подходящим для тебя.
>>2178818 >Че сейчас на сеньерскую позицию спрашивают на собеседованиях в конторки выше среднего? Виртуальный деструктор Sad, but true. Мне в прошлом году прилетело несколько интересных предложений и я пошел на собеседования. Там везде спрашивали про виртуальный деструктор и прочую базовую херню. У меня на тот момент 24 года опыта было за плечами. Мимо дед.
>>2182028 Буст в конторе не используем, только STL и собственные наработки. Стандарт пока что 14-17 (либы 14, конпелятор 17). Короче, надеюсь тимлид не скажет, что сильно выебываюсь, когда дойдет до ревью кода ветки.
>>2181381 Короче у меня взаимная зависимость классов и всю мою парашу нужно заново переписывать. Я в главном классе game вызываю метод отрисовки в классе draws, внутри которого вызывается метод внутри класса внутри gobjects, внутри которого вызывается метод внутри draws. И типа компилятор читает один h файл, там есть обращение к классу из другого h файла, который компилятор ещё вроде не прочитал. Я хз как пофиксить это не переписывая
>>2181200 >У меня на тот момент 24 года опыта было за плечами. >Мимо дед. Если бы у тебя было 24 года опыта, то у тебя так же должен был бы быть опыт проведения собеседований и ты должен был бы знать, что постоянно даже на сеньерские позиции приходят какие-то деды с 10-20+ годами опыта, но которые 2+2 сложить не могут, не говоря уж про виртуальный деструктор.
>>2182340 Есть такое. В книжках, в примерах с интернета все стараются скомкать код, определить внутри класса, или все вообще в main() засунуто и подперто глобальными переменными. Взял за правило, когда смотрю такой пример, всегда изучаю дополнительно как это правильно раскидать по разным файлам, как можно избавиться от глобальных переменных, расчленить на отдельные функции.
>>2157621 (OP) Есть возможность вызывать объект по обращение к его полю, например? В данном случае в векторе 3 экземпляра Car, но обращаться к ним можно только по индексу вектора. Допустим при парсинге я не знаю, по какому индексу bmv, но мне необходим будет именно этот экземпляр.
>>2182371 >Если бы у тебя было 24 года опыта, то у тебя так же должен был бы быть опыт проведения собеседований и ты должен был бы знать, что постоянно даже на сеньерские позиции приходят какие-то деды с 10-20+ годами опыта, но которые 2+2 сложить не могут, не говоря уж про виртуальный деструктор. Всякие люди бывают на собеседованиях. Однако если человек приходит с опытом условного сеньора, то вполне достаточно задать ему сеньорские задачи. Например объяснить как он будет реализовывать какой нибудь шаблонный класс для обмена данными между потоками (для простоты пусть данные будут POD структурами) и все lock-free должно быть, плюсом спросить его почему он выбрал такое решение. Здесь можно узнать вообще знаком ли человек с lock-free многопотоком, с моделью памяти и вообще на сколько он адекватно воспринимает реальность. Мне, например, неинтересно может ли человек заобезьянить какой то быдлокод. Этому можно научить любую пыхомакаку. Мне нужен человек который может самостоятельно решать поставленные проблемы. Сеньор by default знает нахуй нужен виртуальный деструктор, зачем переспрашивать эволюционную лестницу у человека от сперматозоида до сеньора то? По моему это дерьмо и пустая трата времени, плюс неуважение к всем присутствующим на собеседовании. Джунам джуновское, а сеньорам сеньорское, просто потому что сеньор умеет все что умеет джун, а джун не может в сеньора.
>>2182926 >пусть данные будут POD структурами >для простоты Вообще-то, POD структура - это довольно сложная штука; в том смысле, что ее формальное определение довольно упоротое и включает другие штуки с упоротыми определениями.
Вот мне что интересно, сеньеру это все реально нужно помнить и знать? Ну то есть уметь по определению строго доказать, что такой-то класс - это POD, а вот такой - не POD потому, что... Или сеньеру достаточно иметь представления, что POD - это такой достаточно простой объект? А за подробностями отослать к справочнику и/или к std::is_pod.
>>2183121 Естественно. Все от мала до велика пишут на некотором подмножестве языка. Разница только в том, что синьёр скажет, где быстро загуглить и как это сделать другим способом.
>>2183150 Ну самое избитое это кидать исключения или возвращать код ошибки. Если ты долго педалил эмбед, то про catch/throw останутся лишь воспоминания.
А в C++ можно реализовать переменную, которая бы могла иметь возможные значения, которые я захочу. Ну т.е есть переменная a, и я могу ей присвоить значение a=empty; или a=filled;
>>2183108 >Вообще-то, POD структура - это довольно сложная штука; в том смысле, что ее формальное определение довольно упоротое и включает другие штуки с упоротыми определениями. POD в условиях задания взят для упрощения задачи(так как не POD структуры имеют кучу нюансов в поставленной задаче, что бы не тратить время на них, а поговорить предметно по задаче успеть). Никаких упоротых определений тут нет. Это структура без наследования, без виртуальных методов, у всех членов тривиальный конструктор копирования. Если простыми словами, то
Это POD [code]struct PODYoba { int one; int two; }[/code]
Не POD [code]struct NonPODYoba { std::string one; int two; }[/code]
Задача стоит не про POD поговорить, там нечего обсуждать. А посмотреть понимает ли человек за lock-free алгоритмы, за модель памяти. Я писал выше про это. >Вот мне что интересно, сеньеру это все реально нужно помнить и знать? Зависит от специфики работы на которую он претендует. У меня это гейдев(пека, свое пихло и экосистема, не анрыл) с заветными 4к@60фпс ну или VR режим где чем больше тем лучше. Ну, а где то похуй будет, потому что производительность не важна и там зададут другие вопросы. >Или сеньеру достаточно иметь представления, что POD - это такой достаточно простой объект? Достаточно знать, да. Вопрос был в другом.
>>2183121 >Сеньер вообще имеет право сказать "Вот тут я не знаю/не помню, надо почитать справочники. Ну, если сеньор не знает, что такое POD и ему нужен справочник для этого, то он какое то кю, а не сеньор. Конечно я не вижу ничего плохого в справочнике в том числе и на собеседовании, т.к. std:: в голове не держится весь или что то из мета-программирования того же. Но базовые вещи человек на такой должности должен знать без справочника.
>>2183138 >Разница только в том, что синьёр скажет, где быстро загуглить и как это сделать другим способом. Поставлена конкретная задача, а не поиск другого способа или ебля гугла. Я хочу увидеть как человек думает над задачей и идет к решению. Готов даже подсказать, а не дать выебать гугл и стэковерфлоу. Это собеседование где оценивают его навыки и знания.
>>2183663 Очень хорошо. Есть плата, к которой я не хочу гонять через весь город. Я скачал эмулятор. Набор букв и цифр, который ее обозначает, вроде бы совпадает. За чем еще мне следует проследить?
>>2182077 Не, просто данные туда-сюда гоняем, и есть, грубо говоря, два упорядоченных контейнера с айдишниками, при чем две разные структуры с полем айди (то есть там еще и компаратор в алгоритм надо передавать). Вот решил избавиться от лишнего жора памяти back_inserter с последующим проходом.
Бля а это нормально, что я вот что-то написал и мне иногда с нихуя вижуал студия в ошибках ругается, что какой-то там идентификатор не определён (какой нибудь endl), при том что программа нормально компилируется
Поясните за фигурные скобки плиз. Эти две штуки работают идентично. В первом случае я вызвал конструктор по умолчанию. Тут я понял. Как работает вторая строка? В чем разница?
Есть пет-проект, где очень нежелательно юзать исключения. Надумал такую штуку вангую, что изобрёл велосипед, но похуй - в приватном поле класса ебануть булевый флаг, означающий валидность объекта после того, как конструктор сделал всё необходимое. А последующий вызов методов данного класса через проверенный таким образом объект уже будет проверяться через обычный сишный return error code либо через std::optional в более сложных случаях. Это норма или антипаттерн? Заранее спасибо
>>2185306 Борьба с исключениями - это антипаттерн. Но раз тебе так хочется, сделай пустой конструктор и ещё метод init(), который будет возвращать коды, как у дедов 50 лет назад.
>>2185299 >В чем разница? Это надо всего Страуструпа прочитать. И то, там у него не все рассказано.
В твоем случае - пустые скобки == конструктор по умолчанию. Разницы нет в том контексте, где ты их применил. В других контекстах разница есть. Например на пикрил первые три вызова эквивалентны, а четвертый выдает ошибку "нет аргумента".
По началу, лучше разбираться конкретно с теми контекстами, которые ты встречаешь на примерах, чем пытаться запомнить все со справочника. Если тебе нужны примеры, то возьми какую-нибудь книжку и держи под рукой справочник. На одних ответах с двача ты осмысленную программу никогда не напишешь.
>>2182926 настоящий сеньор если придет на собес и его начнут ебать многопоточкой поинтересуеться какие юз кейсы этой многопоточки на фирме вообще используються и по факту оказываеться что потоки им нахуй не нужны, а проэкт делают долбоебы используя хайпнутые технологии типа запиливая свои тред пулы и прочуу поеботу когда достаточно организовать всего лишь асинхронный io в один поток и этого будет более чем достаточно под ту нагрузку под которую пишеться проэкт вот так то
>>2185311 >как у дедов 50 лет назад. Я слышал, что в геймдеве не жалуют исключения. Не из-за того что деды, а потому что все эти новенькие недеДские плойки-хуейки криво поддерживают исключения.
>>2185326 А ещё бывает (причём довольно часть), что дебичи не могут в матан и алгоритмы, поэтому брутфорсят своё шаблонное говно параллелькой, гордясь что оно lock-free.
>>2185306 ну если вспомнить историю вопроса то страуструпу пришлось ввести механизм исключений в язык по той причине что он ввел конструкторы классов в язык и возможность перегрузки операторов а из конструкторов и операторов значит по другому никак не вернуть ошибку, нужно городить исключения все это он подробно расписывал в своих книжонках пока еще не обленился совсем кстати он расписывал и про то как писать код на крестах без исключений значит он говорил что вам волей не волей придеться вводить двухэтапную инициализацию класса (а уж как вы будете это делать ваша воля, есть парочка общеупотребительных паттернов на это), а для операторов вам нужно будет рядом еще делать дублирующую функцию-член что не будет кидать исключение в случае ошибки, а вернет номер ошибки или как там у вас будет организовано все это он тоже подробненько описывал читайте книжки в общем или не читайте похуй
страуструп кстати охуенный челик, прижимистый вот типа говорят что язык переусложнен бла бла а вот он пишет что над каждой частью языка долго думал прикидывал и так и сяк и получалось что без этого не обойтись на уровне библиотек, что типа надо вводить в язык и все такое то есть он не потому что модно было вводил что-то на уровень языка, а потому что надо было
>>2185407 В Сях нуль-терминированные строки тоже считались хорошей, продуманной идеей. И array decay тоже хорошо помогал при портировании программ из B. Обе идеи продуманы, но на текущий момент считаются неудачными. Настоящая цена той или иной реализации идеи понимается только после её интенсивного использования.
Пишу библиотеку. В ней мне нужно заинклудить iostream. При этом если пользователь подключит iostream, то окажется, что iostream заинклюден дважды, что плохо. Как фиксить?
>>2185475 Да какая разница, что там в гугле. Проектировать надо так, чтобы код, которому надо работать быстро, в принципе не имел необходимости бросать. А всякая логика вроде "не нашёл такой-то файл" пусть бросает сколько ей угодно. Избавиться от неё захочет только любитель разодрать своё очко нашлёпать побольше говнокода, с которым потом очень весело возиться.
>>2185673 Да, спасибо. Есть еще вопросик. Нужно выполнить макросы в определенном порядке (макросы встречаются только вне main) . Для этого мне нужно как то понять, что все макросы обработаны. Нет ли никакого способа понять, что я обработал все макросы?
>>2185683 #ifdef? А вообще у меня холодный пот на жепе выступил при попытке представить цепочку умозаключений, которая привела к твоему вопросу. Скорее всего задачу будет лучше каким угодно другим способом.
Есть где-нибудь хорошие стринги? Заебало такую хуиту писать
При том что само смешно что в языке давно есть всякий сахар который все это мог бы делать сам, но видать у коммитета до стандартных стрингов руки не дошли
Помогите, почему рисовка квадрата ломает круг? Если поставить отрисовку квадрата после отрисовки круга, то круг рисуется нормально, но квадрата уже нет, а треугольник рисуется через кадр (мигает). Библиотека glfw
это выглядело бы как std::string frog = std::format("Message: {}, line: {}", GetMessage(), GetLine());
В шарпе (который я безумно обожаю и на С++ стараюсь не писать, когда можно писать на шарпе) string frog = $"Message: {GetMessage()}, line: {GetLine()}";
я новичок не бейте Допустим я хочу вызывать метод, в котором должен быть параметр, но я не хочу передавать этот параметр в метод, однако он там быть должен. И сделать этот параметр параметром по умолчанию тоже не получается. Как это сделать максимально грамотно?
>>2185827 Для начала скажи, почему не хочешь передавать и почему нельзя сделать по умолчанию. Может, у тебя нормальная причина, а не "Хочу, чтобы компилятор сам писал код за меня".
>>2185830 >почему не хочешь передавать Пытаюсь реализовать BST, для рекурсивного метода вставки нужны данные и указатель на указатель на корень, хочу передавать в метод только данные и хочу чтобы второй параметр был там по умолчанию. А по умолчанию его не получается вставить там требует static.
Нужно написать библиотеку. Она должна уметь компилиться либо с файлами test.cpp и testmain.cpp, либо с любым файлом пользователя, где есть main() и подключен test.h и ничего больше. В хедере я объявил вектор, к которому хочу обращаться из test.cpp и testmain.cpp. Если просто в хедере прописать вектор, то компилятор ругается на множественное определение, что не удивительно, ведь я когда хедер заинклудил, то у меня вектор объявился в test.cpp и testmain.cpp. Сначала я подумал дописать static, но так оказывается, что в test.cpp все работает, а в testmain.cpp вектор заново инициализируется и оказывается пустым. Че делать?
>>2185790 the compiler can optimize away - это из лексикона Страуструпа. Есть user defined конструктор - компилятор обязан давать гарантии на счет поведения конструктора. Нет user defined конструктора - компилятор может решать на свое усмотрение. Подробности реализации. Для случая пустого {}-инициализатора я в справочнике вижу только описание конечного эффекта, но не того, как он достигается, с вызовом скрытого конструктора или без него. В Стандарте я ориентируюсь плохо, чтобы такие тонкости искать.
>>2185852 Один из примеров использования: есть некий файл с тестами tests.cpp, в котором используется эта библиотека (test.h подключен). Так же есть test_main собственно с функцией main. Туда я тоже должен подключить test.h, чтобы использовать классы из хедера. Там мне нужно будет как то использовать результаты тестов из tests.cpp. Я хотел сделать глобальный вектор, но не получается.
>>2185869 Почитать книшку по С++ и понять что такое определение и что такое объявление. В хедере ты должен объявить. Объяылять можно сколь угодно раз. А вот определение может быть только одно
Короче, в твоем хедере надо писать объявление: extern bool IsLoh;
в твоем цпп надо писать определение: bool IsLoh = true;
p.s. С++ - не тот язык в который можно вкатится по урокам с ютубса. Много всяких мелочей. Так что иди и читай Ламота
>>2185873 >>2185880 Я не могу в cpp с тестами писать ничего кроме подключения хедера по условию задачи. Я пытался ifdef'ами сделать так, чтобы оно в первый раз просто bool isLoh писало, а потом extern isLoh, но оно везде пишет bool isLoh
>>2185885 Эта любовь придумать себе проблемы на равном месте без хорошего знания языка. Ты сейчас будешь дрочить всякую хуиту типа ifdef (которые ты тоже не понимаешь), потому что не понимаешь как это все работает.
Ты сначала сделай чтобы работало. И отправь нахуй того кто тебе там условия задачи выставляет: - преподу лабу можешь и на питоне сделать - на работе? - я хуй знаю кто там тебя с таким уровнем взял - сам себе такое условие выставил? Лечи свою шизу и не страдай хуитой - любой код сначала пишется чтобы работало, а уж потом выебываешься. А не как ты - хочу сделать через жопу потому что мне не нравится как все делают.
Тебе тут не помогут с такой шизой. Ну или давай вообще весь код и все условие (но тоже вряд ли помогут - ибо лень и никому не нужо)
Как написать макрофункцию так, чтобы можно было писать macrofunc(a,b) , macrofunc(a,b) ? Я сначала написал с помощью do{} while(0) чтобы работало с if, но теперь с запятой не работает
>>2185896 Бывает четвертый вариант еще - ебанутая автоматизированная система проверки, типа той, что у курсов яндекса используется. Дали тебе задачу вот и ебись с системой сам.
>>2185989 Да по стандарту по самому нужен гайд как им пользоваться. С такой штукой, как инициализация та же, не сообразишь вообще где искать, в каком разделе? Там же куча контекстов. Получается, что зачастую ответ на простой вопрос размазан по нескольким разделам. И чем новее Стандарт, тем хуже. На том же стек оверфлоу если и встречаю ссылки на Стандарт, то не старше 11 года.
>>2186103 > Да по стандарту по самому нужен гайд как им пользоваться. У страха глаза велики. >С такой штукой, как инициализация та же, не сообразишь вообще где искать, в каком разделе? В [dcl.init] всё собрано))0)0 > Получается, что зачастую ответ на простой вопрос размазан по нескольким разделам. Стандарт не читал, но мнение имеешь? Диванный кукаретик? > И чем новее Стандарт, тем хуже. Тем лучше. Подразделы переносят в более логичном порядке. > На том же стек оверфлоу если и встречаю ссылки на Стандарт, то не старше 11 года. Ну в вопросах 2011-го года — наверное. А в свежих — на 17-й, 20-й или текущий драфт, если только явно не требуется старее.
>>2185827 call wrapper что ли надо? всегда можешь написать еще одну функцию рядом, но это наивный подход можешь написать перегрузку, причем в новой перегрузке просто вызывать старую функцию оборачивая ее ну а вообще то в стандартной библиотеке всегда существовала кучка средств для подобной работы (и причем ее существенно дорабатывали в новых стандартах), типа std::bind а вообще не слушай меня тк я хуйло безработное и лох фу таким быть, будь лучше четким, самое главное быть в жизни четким
>>2186084 секрет любого макросописания - это наебашить побольше (((((()))))((()))) в код, потом ты узнаешь про склейку строк, а потом изучаешь boost::preprocessor
>>2186182 >Стандарт не читал, но мнение имеешь? Я пытался и говорю о своих попытках. Я не говорю, что надо под меня переделывать Стандарт, я говорю, что не помешал бы гайд по его использованию.
>Диванный кукаретик? Хоббист, не карьерист. Даю неточные ответы всегда в расчете на то, что меня поправят лучше знающие люди. Что в этом криминального? На том же стековерфлоу обычно правильный ответ только один.
В классе есть поле static bool c. Есть метод bool& get_c(); Это все в хэдере. В cpp написал bool& namespacename::classname::get_c() { return this->c; } При компиляции получаю ошибку error LNK2019: ссылка на неразрешенный внешний символ. Если попытаться вернуть ссылку на временный объект, то все ок. ЧЯДНТ?
>>2186783 >Я не говорю, что надо под меня переделывать Стандарт, я говорю, что не помешал бы гайд по его использованию. 1. Открываешь 2. Читаешь > Даю неточные ответы всегда в расчете на то, что меня поправят лучше знающие люди. Что в этом криминального? Это провокация.
>>2186346 Начнем с того, что ты хуй это еще ни разу не стандарт. И ты идешь нахуй читать доку по ranges.
Могу предположить, что в коде происходит следующее: 1. собираем слова с ввода 2. находим те, которые отличаются только лишь одной буквой 3. выводим первое попавшееся выбрасывая пару букв, которые отличаются 4. получаем по пальцам за отсутствие return 0;
>>2182371 >какие-то деды с 10-20+ годами опыта, но которые 2+2 сложить не могут, не говоря уж про виртуальный деструктор. Двачую.
>>2182926 >Сеньор by default знает нахуй нужен виртуальный деструктор, зачем переспрашивать эволюционную лестницу у человека от сперматозоида до сеньора то? Потому что годы идут, а мозгов не прибавляется.
>Мне нужен человек который может самостоятельно решать поставленные проблемы. И что же ты для этого будешь спрашивать?
>>2183108 POD - это структура, которую можно свободно memcpy / memset. А сеньору-помидору нужно знать в чем разница между std::copy и memcpy.
>>2183121 >Сеньер вообще имеет право сказать "Вот тут я не знаю/не помню, надо почитать справочники. А еще лучше обратиться к languge lawyer'у"? Зависит от вопроса, блин. Ответ "нет" в разы хуйовее чем "не знаю, но наверное...".
>>2183164 >Если ты долго педалил эмбед, то про catch/throw останутся лишь воспоминания. Еще одна жертва говносборок конпеляторов
>>2183167 >А в C++ можно реализовать переменную, которая бы могла иметь возможные значения, которые я захочу. std::variant
>>2184161 >>2184216 >Существует команда которая вызывает один метод у всех инициализированных в программе экземпляров класса/наследника? Добавь базовый класс с виртуальным методом, который регистрирует в конструкторе, дерегистрирует в деструкторе. Только помни, что в многопотоке оно работать не будет.
>>2185311 >Борьба с исключениями - это антипаттерн Люто плюсую! Самое смешное - есть куча книжек про ООП паттерны, но нигде не обесняется как сделать расширяемую архитектуру ошибок. enum { OK, FAILED, FILE_NOT_FOUND }; ебаный в рот!
>>2185475 >В гугле весь С++ код не имеет исключений, включая гугл хром. А знаешь почему? У них в кодестайле написано: "мы активно юзаем сторонний говнокод и вот он то в эксепшены не умеет. Потому обходимся без них"
>Выжимая максимум из программы, ты всё же захочешь от них избавиться Наоборот. Экспешены ускоряют success-flow программы за счет торможения fail-flow. Вопрос только в том, что у тебя чаще выполняется - success или fail.
>>2185721 glBegin/glEnd, OpenGL 1.0, прослезился. Никто так уже не пишет - все гоняют массивы точек одной командой. Эти команды депрекейтнули еще в OpenGL ES 2.0 кажись, а в декстопных - где-то в 3.х. Алсо >>2185723
>>2185836 >>2185827 >Допустим я хочу вызывать метод, в котором должен быть параметр, но я не хочу передавать этот параметр в метод, однако он там быть должен. >BST Сделай метод-член класса, и вместо tree_insert(data, tree); будет tree.insert(data); Красивше.
>>2187318 >Еще одна жертва говносборок конпеляторов кроссконепеляторов, third-party либ и всяких тулчейнов от блядских nvidia, не способных высрать нормальный nvcc.
>>2187217 > провокация Ну а что? Весь двач на этом стоит. Карьеристам - деньги и слава, мне - РНН господину - знания и свобода от условностей карьеризма. Справедливо ящитаю.
Вот если бы я тебе ответил "сам не не нуб, а на нуба наезжаешь", вот это была бы провокация.
В ньюфаг-треде никто не ответил, поэтому я пришел к мудрецам. Почему принято считать, что регистры процессора быстрее оперативной памяти? Я понимаю жесткий диск электромеханическое устройство, но оперативная память плата, где электрические сигналы, как и в процессоре распространяются со скоростью света. А кто-нибудь вообще проверял, может они равны по скорости?
>>2187518 Регистры они в процессоре, а оперативка снаружи. Прикинь во сколько раз больше путь сигнала. Скорость распространения сигнала же не бесконечная. А еще оперативке нужен контроллер памяти. Правда его давно уже в процессор встраивают.
Вечер добрый. Потребовалось написать приложение на win32 API. Как включить bmp изображения, загружаемые программой в ресурсы так, чтобы при компиляции они включались в exe? Работаю в Visual Studio 2019. Заранее спасибо
>>2187773 В дереве проекта есть папка Файлы ресурсов/Resource files. Кликаешь -> добавить ресурс -> импорт... Либо пуками залезаешь в *.rc файл своего проекта и туда добавляешь путь к изображению. Но по-хорошему если ресурсы крупные, то их надо хранить за пределами исполняемого бинаря.
>>2187518 регистр - это как твой хуй или анус, вот хочешь подрочить, сразу взял и подрочил, потому что это под боком, на расстоянии вытянутой руки. А оперативная память - это скоуп доступных тебе телочек (или мальчиков), чтобы какую-то дрюкнуть тебе надо сначала знать ее контакт (адрес в памяти), позвонить, договориться что она придет, потом она к тебе на такси (по шине) едет. В общем мораль такова что быстрее и дешевле подрочить
>>2189289 И ещё - В логических выражениях поставь явно нужные круглые скобки, возможно у тебя проблема с прецедентностью - Не используй альтернативные написания операторов (and -> &&, or -> ||), считается моветоном - Не пихай всё в одну строчку, очень неудобно будет пошагово отлаживать и просто сложно на лету отличить условие от самого действия - Пользуйся дебаггером
Так, теперь такой вопрос, как можно удалить экземпляр класса из массива вектора методом этого же класса?
То есть я обращаюсь к методу my_class, внутри которого есть проверка на размер числа, и если число больше чем нужно, то вызывается другой метод, в котором я хочу реализовать удаление этого экземпляра из вектора.
Я пытался узнать сколько памяти резервирует вектор через sizeof(), но он всегда показывает одинаковый размер 24 байта, я так понял потому что хранит только указатель на память. Может кто знает, сколько вектор при его создании заранее резервирует элементов из кучи?
Почему если я хочу написать конструктор для класса наследника, то у меня должен обязательно присутствовать конструктор по умолчанию у класса-родителя? (Без него выдаёт ошибку. Для класса не существует конструктор по умолчанию)
Но вот неправда, никакого разочарования я ни чувствую, а горжусь, что понимаю глубже, чем фронтендеры. Но если честно я до этого все таки писал на бейсике (очень мало), но это было давно, неправда и кроме ветвлений, циклов и goto я ничего не знал и не умел. Про операционные системы и архитектуру я смотрю параллельно лекции на ютубе.
>>2191997 >только указатель на память Ещё указатель на последний элемент, указатель на конец блока памяти и указатель на аллокатор. Итого 4sizeof(void) = 32 для x64 и 16 для x86(32).
>сколько вектор при его создании заранее резервирует элементов из кучи Если ты явно не укажешь число в конструкторе или через инициализацию, то 0. Дальнейший рост зависит от реализации.
>>2192373 > Ещё указатель на последний элемент > указатель на конец блока памяти А в интовой переменной религия хранить не позволяет? Типо переменная lengер и переменная capacity. Или бывают вектора длиной более 65,535 элементов?
>>2192429 Тип int не используется как тип размера данных. Для этого в языке есть специальный тип - size_t (метод sizeof() возвращает значение именно этого типа). size_t меняет свой размер в зависимости от платформы, как и указатель - то есть для х64 он будет 8 байт, при том что int будет 4 (иногда больше).
>>2192873 нет, не миф благодаря шаблонам, благодаря статическому полиморфизму да и рантайм полиморфизм в крестах самый быстрый, быстрее не сделать благодаря тому что нет сборки мусора в самом языке
>>2193426 нет, не миф первое, благодаря шаблонам, благодаря статическому полиморфизму да и рантайм полиморфизм в крестах самый быстрый, быстрее не сделать второе, благодаря тому что нет сборки мусора в самом языке, а в различных подходах к управлению ресурсами почти всегда используеться та или иная форма "подсчета ссылок" третье, за счет "размещающей формы new" можно создавать эффективные контейнеры это то что навскидку можно вспомнить
>>2192873 Там где оверхед не нулевой Страуструп говорит, что его оверхед минимальный по сравнению с возможными альтернативами. Там где решение Страуструпа сливает по скорости в рантайме, он находит всякие другие достоинства, вроде maintability.
Не стоит понимать zero cost как буквально всегда равно нулю.
>>2193478 Вот кстати хороший пример. Не зеро кост в сравнении с полным отсутствием проверки и обработки ошибок.
>>2193478 без исключений в языке не обойтись, их пришлось ввести страуструп об этом и в книгах и в статьях писал и на конференциях об этом талдычил потому что иначе никак не обработать ошибки в конструкторах и перегруженных операторах а как раз конструкторы и возможность перегрузки операторов (особенно второе) и являются важнейшими инструментами для повышения уровня абстракции в коде на крестах
ну а так как раскрутка стека оче дорогая операция, страуструп предлагал как раз использовать в критических по производительности библиотеках исключения только там где ни обойтись и ловить их по месту (те сразу же)
конструкторы можно оборачивать различными порождающими паттернами
при реализации библиотек рядом с перегруженным оператором в классе можно реализовывать функцию-член, с тем же функционалом что и в делает оператор, но которая не будет кидать исключение и дальше уже использующий библиотеку будет решать чем ему удобней пользоваться
таким образом несмотря на то что исключения вроде как и дорогие при ловле, при правильном применении все это минимизируеться
Аночики, а что плюсовики делают в вебе? Мне тут просто рекрутер очень крупной фирмы уровня гугла кинул вакансию, я сначала-то думал что там какой-нибудь пыхапышник нужен, или на крайняк аспрешетник.. Но нет, вакансия на чистый С++, при том что работа именно вебовская (ну скорее-всего бэкенд).. И вот прост даже не знаю, откликаться. Вообще не в тебе что там в бэкенд вебе на С++
>>2157621 (OP) Вешаю noexcept на все функции, в которых я не ловлю исключения. В чем проблема? Ведь это просто убирает ненужные издержки. Почему нужно лечиться от "noexcept болезни" ? https://youtu.be/LDoCQzSd3xo?t=786
>>2195074 >>2195130 Нет, он хуевый с точки зрения читаемости, но его полезно почитать, посмотреть как реализуются требования стандарта, как делаются оптимизации в шаблоном кодев зависимости от характеристик аргумента (например, std::copy, vector::resize). Так же интересно посмотреть на устройство рантайма, всё то, что выполняется до и после юзерского main()
>>2194879 а нету такого весь промышленный код на крестах - это просто приплюснутая сишка а state of art код устарел уже, 98м стандартом ограничен как правило, а модерновый код говнище, даже тот что не стыдяться на конференциях на слайдах показывать, во многом еще и потому что сам язык стал развиваться, стали быстрее выкатывать новые фичи в язык а для того чтобы появилась красота, нужны ограничения платформы если приводить сторонний пример, то лучший демо-арт на амигах и спектрумах и прочих альтернативах pc стали делать уже после того как эти платформы по сути умерли, но таким образом были определены рамки для (комьютерного) творчества - разрешение монитора, цветность, возможность или нет плавного скролинка, количество выводимых спрайтов, возможности для синтеза звука.. а в ситуации когда чуть ли не каждый год появляються новые инструменты (применительно к крестам, не только синтаксические возможности, но и чутка но и меняеться семантика), сложно начать писать действительно красивый код, потому что еще нужно накопить определенный опыт работы с этими новыми возможностями; большинство нового крестового кода что использует новые стандарты - это по сути грязный экспериментальный код, даже несмотря на то что часть этого кода используеться напрямую в продакшене
>>>>2195458 Ну, даже если это и так как ты сказал, все же хочется верить что где-то там есть толковые дяди которые умеют делать няшный и корректный код(как на том же шарпе), а не как у меня - корявое говно работающее только после часов дебага
>>2195514 в шаблоны еще добавили возможность императивного программирования, а до этого в 98 стандарте для метапрограммирования требовался функциональный подход используя различные трюки чем не добавление новой семантики
>>2195646 Ну ты сверху меняешь значение только если *s это от A до Z. Т.е строка "1234rt_HEIL_HITLER" будет выглядеть так : "1234rt_heil_hitler" А снизу вместо всех не A..Z симаолов будет что-то другое. Кстати ты в первом забыл указатель перемещать, так что он вообще в бесконечный цикл падает
>>2195471 >няшный и корректный код Ну вот допустим есть lambda expressions, введённые в с++11. Если почитать стандарт, то там сплошной since/until C++14,17,20,23. В таких условиях только экспериментальное говнецо можно писать.
>>2195665 >И вобще подобные операции над символами делаются через int, а не char. явный каст? А зачем? >В половине случаев корректно будет. Алгоритмы не эквивалентны. О каком сравнении по скорости идет речь если они выдают разный результат ?
Что будет быстрее в итоге сводится к тому что дешевле : + или битовое или. Чисто интуитивно кажется что второе
>>2195666 >зачем Посмотри документацию для <cctype>, там у всех функций сигнатура из int в int. В char не помещается EOF, поэтому int.
По скорости я вообще не сравнивал. Просто отмечаю, что в половине случаев второй вариант сработает корректно - там, где пятый бит равен 1 ничего не произойдет.
Как всё таки вкатиться в qt? Предположим что база c++ изучена. Глянул книгу Макс Шлее и просто охуел с перескакиваний на разные темы, сначала про одно говорится, потом про другое. Туториалы на Ютубе уровня создания калькуляторов. Можно на английском
>>2195680 char это 1 байт = 8 бит = 2^8 = 256 значений. От 0 до 127 это ascii таблица, дальше от 127 до 255 это ansi таблица. Ты не можешь изменить хоть какой-то бит числа и внезапно попасть в ту же точку, в ascii и ansi таблице символы не повторяются
>>2195738 Хотя стоп, у нас же битовое или .Если у нашего char 5 тый бит уже установлен то действительно ничего не поменяется. А таких символов 1*2^(7) = 128.
>>2195714 >книгу Макс Шлее Пытался как-то вкатиться через эту книгу. Читать имеет смысл только первые главы про сигналы Qobject и прочую базу. Дальше просто кидаешь чужой код и документацию. Учить фреймворк последовательно и всеобъемлюще это бессмыслица. Просто берешь нужный тебе инструмент и вперед
Стало интересно, есть ли возможность состряпать такой контейнер, который будет совмещать в себе возможности списка и массива? То есть в кишках он будет реализован как вектор (элементы в памяти последовательно, индексация за O(1), вставка в конец за амортизированную константу), но при этом вставка в середину тоже за константу. В кишках идет вставка в конец, но для пользователя контейнера элемент будет расположен в середине. Пытался как-то через мапу с индексами, поинтерами, но ничего не вышло.
Пытаюсь сделать статическую библиотеку, но явно делаю это неправильно((( Помогите со следующей проблемой: если я компилю просто объектники, грубо говоря: >g++ imgui.o imgui_draw.o main.o - всё хорошо и даже вроде работает но мне хочется сделать >g++ imgui.cpp imgui_draw.cpp -c >ar rsv imgui.a imgui.o imgui_draw.o >g++ imgui.a main.o - как результат, в main'е imgui'шные функции не линкуются. Как это работает (и почему не работает?)
>>2195987 Либы именуются как lib{name}, поэтому переименуй imgui.a в libimgui.a. Для линковки она передаётся как -limgui (без префикса lib и постфикса .a). Если надо линковать статически, то перед ней указываешь -static.
Вроде вот так должно быть g++ -c main.c -o main.o -static -limgui
Как правильно установить Qt в оффлайне? Мне надо готовый QtCreator со всеми последними библиотеками. Вот я скачал соурс код отсюда https://www.qt.io/offline-installers Скачался zip-архив с соурсами. И что мне с ним делать? Как это совместить с QtCreator?
Написал прогу, которая отправляет запросы по USB на устройство и считывает данные. Данные потом вывожу в интерфейсе. Запросы очень частые, раз в 20 мс. Чтобы интерфейс не зависал, пока воткнул костыль в виде qApp->processEvents(), но так делать вроде бы нельзя, да ведь? Как правильно это все распараллелить, подскажите плиз.
>>2196514 >где лучше Да не знаю, я после знакомства с moc'ом блеванул и бросил это дерьмо. У шлее вроде бы все довольно просто объяснено было, насколько сейчас помню
>>2195714 Через Qt Documentation. Просто гуглишь, то что тебе нужно и гугл тебе выдает подходящий класс. Например, тебе надо работать с картинками. Вбиваешь в гугле qt image, и первый же результат https://doc.qt.io/qt-5/qimage.html то что тебе нужно. Там все подробно описано, какие методы, сигналы и слоты там есть. Ну и ты должен понимать, как сигналами и слотами пользоваться, это база qt так сказать. Тоже на их сайте можешь почитать, никакой Шлее не нужен особо.
>>2195650 они ввели лямбды и стало сразу скучно и просто, понимаешь? в 98 стандарте нужно было писать вообще по красоте - используя композицию функторов, в std был (и сейчас есть) набор средство для такого похода можно было писать действительно интересный state of art код почти заголовок <functional> был сделан для возможности композиционного программирования
это точно так же (повторюсь) как раньше возможность метапрограммирования на с++ была одна - только через функциональный подход, а сегодня они сделали возможности императивного программирования на этапе компиляции, стало проще, но гооораздо скучнее
>>2196622 Ты кукаретик, а я практик. Ты видишь манягоризонты, а я проблемы с обратной совместимостью и людей делающих одно и то же, но на разных диалектах. В итоге мы имеем глиномесиво, а не state of art.
>>2196622 Просто напомню тебе, что проекты на цпп выходят в нормальный продакшн не ранее 2х лет после начала разработки. Проект цпп является свежим, если ему 4-5 лет. За это время выходит 2-3 апгрейда стандарта и то, что написали 4 года назад никто в здравом уме портировать не станет.
>>2196637 в этом случае это не "манягоризонты" а скорее ретро-кодинг, можно так назвать ну это как сегодня, знаешь, все еще иногда выходят новые игры для спектрума, для амиги.. ну и само собой демо-арт процветает на no-pc платформах в качестве развлечения мне интересно писать на 98 стандарте, используя рекурсивный подход для метапрограммирования, для кодогенерации в компайл-тайме, ну или делая композиции функторов используя возможности библиотеки stl, при этом я могу писать и модерновый код на новых стандартах делающий все то же самое, просто такой код получаеться более скучным и плоским естественно это все это just for fun
>>2196725 А я хз. Uart порт древний и есть практически на всех железячках. Qt большой и не везде влезает, так что обычно такое на C пишется через системное api.
>>2196532 Чел, охуенный совет. Вот я точно так же делал, возникла одна проблема. Нигде не было решения, здесь тоже никто не ответил. Хотел сделать кнопку параметров печати, улучшить пример калькулятора. Документация прочитал, нихера не понял, почему эти параметры не отображаются, а если и отображаются не сохраняются
Создал класс(максимально простой для проверки всего этого)
Объявление класса с прототипами методов поместил в заголовочный файл "classname.h", как меня учили. Определения методов класса поместил в файл classname.cpp, не забыл #include "classname.h", как меня учили. В файле main.cpp прописал #include "classname.h".
Это говно все равно не работает, сообщая якобы о undefined reference. Неужели нет компилятора, который не будет так тупить и просто возьмет и соберет все?
>>2197109 С кодом все хорошо(за исключением возможно того что __Ptagma__ уже занята кем-то, не надо использовать имена начинающиеся с _ или __ они зарезервированы под стандартную библиотеку дефайны компилятора и прочее)
если дело не в _Pragma_ то проверь собирается ли Pragma.cpp. Вполне возможно ты как-то не так добавил его в свою IDE
>>2197115 Спасибо, я погуглил, виновата во всем IDE. Точнее способ добавления файлов в проект с галочками debag/release, в котором я не понимаю ничего.
>>2196838 >Почему это работает? Потому что так это и работает. Константность метода не транзитивна. Если б у тебя m_impl имел тип WindowSystem, то компилятор тебя бы тормознул. А так, через ссылку/указатель делай, что захочешь.
>>2196838 >не константный и внутри себя он изменяет уже свои члены Указатель m_impl куда указывал, туда и продолжает указывать. Его значение (адрес) не изменяется - вот, что тебе гарантирует Страуструп. А состояние, на которое указывает m_impl, это уже состояние другого класса. Оно не рассматривается как часть состояния WindowSystem.
>>2197335 Если коротко : компилятор секретно выделяет перед твоим массивом еще немного памяти чтобы сохранить там сколько ты выделил. delete[] читает как бы -1-ый элемент где записан размер.Если ты напишешь delete[] для обычного указателя( не массива ) он тоже прочитает и будет пиздец https://youtu.be/TQ5VPnKWqoY?t=228>>2197335
Вроде не первый год в плюсах, но не помню, чтобы так смачно обосрался на таком скользком месте. А я еблан думал, что где-то с синтаксисом напартачил или нужен forward declaration. Слава богам, что есть stack overflow.
>>2197457 Почитал про hidden friend, но не совсем понял как его можно применить к шаблонам. Без адских костылей только так, реализация фрэнда внутри класса. А как быть с обычными функциями, я так и не понял. Получается, что объект класса B никуда нельзя передать.
>>2196764 А зачем что то на С писать, если в Qt уже есть все готовое? То есть изобретать велосипед? Там есть QSerialPort, в котором все уже написано. QSerialPort port; port.write("отправь данные"); QByteArray buffer = port.readAll(); //данные Это если упрощенно, там еще ждать надо, пока устройство данные пошлет с помощью waitForReadyRead(int timeout) или как то так. Ну и параметры ком порта в port прописать.
>>2197821 Могу только ультра дженерик совет дать: если ты не гипераутист, способный 24/7 заниматься одним и тем же - правильный режим дня, друзья, хобби, отдых. Хотя хз, вкатуном никогда не был, может у них по особому всё устроено.
>>2157621 (OP) Есть тут работающие аноны? Подскажите где вы работаете, и интересна ли вам ваша сфера? Работаю 2 года в геймдеве, год ебался с анриалом, потом сьебался в мобильный гейдев дрочильни для домохозяек со сверхприбылями. В принципе на текущей работе устраивает всё - зп выше рынка, 17 стандарт, CI/CD, адекватная команда, вобщем всё круто кроме одного - задач. Я пиздец не люблю геймдев, но других вакансий практически нет только эмбеддед с сишкой и стмками. Хотел в ближайшие года 2 подготовиться к смене области, пока потихоньку подтягиваю алгоритмы и дрочусь с разными технологиями как хобби. Был у кого опыт полной смены области разработки? Расскажите не пожалели ли о смене работы?
>>2198538 >Есть тут работающие аноны? Нету. Так как современный с++ - это эзотерический язык для just for fun программирования. Нвидиа-кун c зп 700к/месяц не в счет, тк он программирует bat-файлы и пишет excel-таблички для своего начальника. Что он делает в этом itt треде вообще непонятно.
Ебануться, как работает эта функция? Сколько не сидел с отладчиком, так и не понял, куда оно там добавляется, следующее в предыдущее и позаследущее. Есть какое-то объяснение?
Узнал про такую структуру данных как список и решил попробовать реализовать двусвязный список. Но что-то я не совсем понимаю, что значит "вставить" новый элемент? Вставить куда? У элементов нету же индексов, есть только значения, которые могут повторятся. Единственная информация, которая идентифицирует элемент списка, это набор указателей.
>>2199576 В этом-то и дело, что нет просто "вставки". Есть вставка в начало, вставка в конец и вставка в середину (обычно перед i-ым элементом или после него). При вставке в середину ищешь циклом элемент устанавливаешь правильные значения указателей.
>>2199601 И не просто могут, а будут. Но ты ищешь не по значению, а по порядку, переходишь к следующему элементу и увеличиваешь счётчик, пока он не будет равен порядку, там и вставляешь.
>>2199676 Падажжи. Один мужик на ютубе, с++ программер сказал, что преимущество списков перед массивами в том, что можно без затрат производительности просто взять и вставить новый элемент куда хочешь.
>>2199774 Мне похуй на анонимность, мой IP они и так видят. Но номер оставлять не хочу, пусть нахуй идут. У них есть моя почта, остальное их ебать не должно.
>>2199749 У меня так не получилось, пришлось указать номер. Вобще там любой прокатит, главное смску прочитать.
Да и че микрософт с моим телебоном сделает? Лучи 5G из Америки на меня направит чтоли? В доставке пиццы в сто раз палевнее указывать номер, как и любые приложения на телебон ставить.
>>2199835 У меня в винде тонны извращенного хентая, алеее. Вот буду я работать в тесла, все узнают об этом и че? Отправят меня синтезировать кошкодевочек. А я может не хочу, я хочу программировать роботов-убийц для наступления скорейшего кибергулага на планете. > В доставке пиццы в сто раз палевнее указывать номер, как и любые приложения на телебон ставить. А вот ты шиз и параноик.
Как работает ебаная куча в плюсах? Написал компаратор (пик 1). В итоге в один момент у меня оказывается, что на вершине кучи лежит 3, а не 0, хотя в массиве pairs size у pairs[0] = size у pairs[3] =1, но (зв)pairs[0].begin() равен 0, а (зв)pairs[0].begin() равен 3. Что блядь не так?
>>2199857 Что означает строчка "comp=[]()", что за синтаксический пиздец? Мне это напомнило перегрузку операторов, но там должно быть "operator=()" или "оператор[]()"
>>2199863 Используешь какие-то левые библиотеки, а потом недоволен. Ты бы еще спайсы за углом купил, а потом жаловался, что от него у тебя понос вместо кайфа.
>>2199872 Ну вот и пиши его. А то, как выяснилось вектор boolов лучше не использовать, потому что шизы сделали его неработоспособным в погоне за экономией памяти. Придется использовать другую структуру или писать свой динамический контейнер bool
>>2199857 Странно, что компилируется - лямбда захватывает переменную pairs, а её нет в списке захвата. И вообще что это - вектор векторов? >на вершине кучи лежит 3, а не 0, хотя в массиве pairs size у pairs[0] = size у pairs[3] =1, но (зв)pairs[0].begin() равен 0, а (зв)pairs[0].begin() равен 3. Вообще ничего не понял из этого предложения. По компаратору мне кажется, что ты хочешь лексикографический порядок - сначала должны выводится с самой маленькой длиной, а затем с самым маленьким первым элементом. У pairs[3] размер 1 - он и идёт первым.
Очередной выпуск рубрики "новые удивительные открытия в с++" Оказывается есть указатели на массивы, это не, что указывают на нулевой элемент массива, а самые настоящие указатели на массив, сохраняющие информацию о его размере и не распадающиеся при передаче функцию. Синтаксис объвления чем-то схож с объявлением указателей на функцию T (⚹ptr)[N] = &arr; Если такой указатель увеличить на единицу, то получится адрес сдвинутый на размер всего массива? а не на размер одного элемента в массиве. Также есть ссылки на массив T(&ref)[N] = arr; Работают как и все ссылки как псевдонимы переменной, поэтому можно обращаться к элементам массива ref[5], ref[3] Если вас бесит то, что один массив можно скопировать в другой только через цикл в языке С++, то можно облачить массив в структуру или класс struct A{T arr[N];}, а затем просто одному экземпляру структуры присвоить другой экземпляр, и все элементы массива будут автоматически скопированы.
>>2200484 Это ещё из сей тянется. Ну вот смотри, есть у тебя int a[4][5]. a[1][1] - int &a[1][1] - int &a[1] - ??? &a - ??? &a[1] это не int, потому что это не указатель на указатель, а указатель на массив из пяти элементов, и ему при инкременте, например, нужно будет перешагнуть через пять интов. Вот и получается, что &a[1] - int ()[5] &a - int (*)[4][5]
>>2200644 > Для легаси массивов > легаси Вот оно как.. Штош >>2200644 > А так используй array. Или вектор Я недавно только полюбил векторы, теперь не знаю, как бы жил без них. >>2200654 >>2200778 А я начал с плюсов. Хотя недавно прочитал, что в с гораздо понятней взаимодействие с операционной системой и мне стало интересно.
Как сделать у класса такой mutex который блокируется любым объектом класса один раз? А в другой функции сделать чтобы она ждала, пока не разблокируется. Может не особо понятно объяснил, типа как статическая переменная, у всех объектов она одна, вот мне так же нужен один mutex
Обновил Qt c 5.14 до 6.2. Проект, который раньше работал, выдал кучу ошибок. Из-за чего так может быть? Ошибки даже не в моих исходниках, а в левой библиотеке, которую я юзаю, и почему то еще в бибилиотеках MinGW, который установился вместе с Qt 6.2. Мне че теперь ползать по чужим библиотекам и править там эти ошибки?
>>2200484 >Очередной выпуск рубрики "новые удивительные открытия в с++" >Оказывается есть указатели на массивы Бро. Нам вполне хватило того, что в этом ИТТ-треде открыли, что в C++ есть лямбды.
>>2201187 Ошибки то сами прочитай Кажись тебе надо просто инклуды пофиксить Господи когда уже можно будет а модулями нормально работать, чтобы такого не было
Подскажите как сделать по нормальному без переменной r_locked? Логика в том, что пока данные редактируются, их считывать нельзя, нужно подождать. А если не редактируются, то их должно быть можно считывать во всех потоках, без блокировки мьютекса. Сколько не читал про condition_variable ничего не смог понять, он же может использоваться только если сам заблокировал https://0bin.net/paste/AK5xDZi6#bWboWISE8tpAbL7Fea1KMP8a3RZylTpuWPQzYaOyAMz
>>2201582 В математике разжевываются общие методы, есть примеры решения задач (применения методов) и есть ответы для самопроверки. Можно буквально ограничиться парой книжек и задачником, даже без гугла вполне можно обойтись.
>>2201832 >В олимпиадном программировании разжевываются общие алгоритмы, есть примеры решения задач (применения алгоритмов) и есть тесты для самопроверки.
>>2202484 Ну давайте письками померяемся. Я довёл MSVC до Internal Compiler Error. Вроде, это было сочетание Variadic template, CRTP и кажется множественные наследования, не помню точно. А какую хуйню смогли устроить вы?
>>2202484 > А как тебе тип ссылки на массив неизвестной длины? У меня не собирается invalid initialization of reference of type 'int (&)[]' from expression of type 'int [6]'
>>2202569 >Я довёл MSVC до Internal Compiler Error. >Вроде, это было сочетание Variadic template Это классика. MSVC в некоторых вещах в плане поддержки (новых) стандартов стал заметно обгонять GCC и Clang, но сунь в него variadic template чуть нетривиально вложенный внутри другого variadic template, и он клеит ласты. >>2202572 цепепе туони включи
аноны, помогите понять что не нравится компилятору. вроде все как надо сделано, однако же пишет что нет оператора = с такими операндами типа класса, онако же он есть вроде как. хотя там передача по ссылке. но по идее в примерах которые я смотрел это никак не мешало. передавать не ссылку а сам объект не пробовал, потому что тогда нужно будет писать еще и отдельный конструктор копирования.
>>2202728 Добавь const к аргументу operator=. Твой operator+ возвращает matrix по значению, т.е. создаётся временный объект (rvalue), который существует только внутри выражения, где использовался +. Такие объекты подразумеваются неизменямыми (исключение move семантика). А в operator= ты передаешь значение по обычной ссылке, что позволяет изменять состояние переданного объекта. А это уже ошибка.
>>2200484 >новые удивительные открытия в с++ А еще в мире C++ можно археологией заниматься. Например, во времена динозавров можно было присваивать потоки (_withassign на пикрил).
Делаю программу на qt, которая работает с exel документами , появилась необходимость выводить на печать этот документ , подозреваю, что это можно сделать с помощью dynamicCall, но не знаю, где достать все обращения(Quit() и т.п.) для этой функции можете пожалуйста подсказать где достать эти обращения. Если я ошибаюсь и с помощь dynamicCall нельзя вывести на печать подскажите пожалуйста с помощью чего это можно сделать
>>2204516 > где достать все обращения(Quit() и т.п.) для этой функции > можете пожалуйста подсказать где достать эти обращения. На официальном сайте https://doc.qt.io/qt-5/qaxbase.html
>>2205125 Вроде нет, я запихивал в кют бустовские корутины (которые ебут стек и поганят на бинарном уровне) и все было норм. Остальное почти все там вроде просто на уровне хедеров, и никак не напортачат.
Что нужно знать на мидла? Я просто джуном отработал сначала в одной компании 2 года, а потом на мидла пошел в другую, но мне там вместо плюсов всучили джаву, теперь уже где-то год на плюсах почти ничего не писал. Что можно поделать, чтобы восстановить все знания? А то я думаю, наверное, ливать из этой компании хотя бы снова на мидла, но чтобы писать на плюсах, а не на джаве.
>>2205467 Я не он, но с радостью писал бы десктоп (не обязательно UI) на шарпе. Но пишу на плюсах, потому что 1 знаю их и подъёбы winapi лучше, чем что либо другое 2 студия божественна 3 надо дёргать сервисы, драйвера и COM объекты
>>2205125 Можно. Но основное правило как и везде - взбалтывать, но не смешивать (любая используемая либа должна обитать в своей песочнице). Бэк пишешь на beast/asio, фронт на Qt. Между ними санитарный контроль в виде абстрактных интерфейсов. В бэке никаких QString'ов быть не должно и наоборот.
>>2205490 >надо дёргать сервисы, драйвера и COM объекты знаешь, не у всех есть хата доставшаяся от бабки, чтобы работать за минималочку в нии ты еще скажы что ты математик, тогда сразу нахуй -70% к зп
>>2205614 Нет, не легаси, до некоторых мест винды только так можно адекватно (без адовых велосипедов и недокументированых костылей) достучаться. >>2205736 Хаты нет, снимаю сычевальню. Нет, не математик, не люблю алгоритмодрочерство. Обычные задачи. Положить-переименовать файл, установить и запустить сервис, из сервиса наоборот позапускать процессы под залогинеными юзерами, пообщаться с сервером, получить стейт из сервиса, что-то сказать драйверу. Незамутненная прикладуха, никакой наукоёмкости.
>>2199280 > Игровой движок со скриптингом на питоне > Фреймворк для машоба А как подружить питон и плюсы? Типо нельзя же написать функцию на плюсах и вызывать её из питона или можно? Как?.
class B { public: B() { std::cout << "B() called\n"; }
B(int a) { std::cout << "B(int) called\n"; } };
class A { public: B b;
A() : b(10) { b = B(10); } };
int main() { A a; return 0; }
На выходе получаю: B(int) called B(int) called
Почему вызывается конструктор копирования в строке b = B(10);, ведь в списке инициализации b(10) объект уже был инициализирован конструктором копирования? Соответственно, здесь b = B(10); должен вызываться operator=(...). Объект ведь не может инициализироваться дважды.
>>2206316 Сори, я, видимо, ночью уже туплю. Полчаса пытался разобраться, почему так происходит, но только сейчас увидел, что у меня там не B(const B & rvalue), а B(int a). Не знаю почему, но мой мозг упорно воспринимал это как конструктор копирования. Только теперь дошло, что это конструктор с параметром. Значит, тут все нормально. B b в классе инициализируется конструктором по умолчанию. Потом в теле конструктора A инициализируется temporary object конструктором B(int) и он присваивается через operator=(const B & rvalue) члену b. Вопрос закрыт
>>2206304 Догадывался, что так и должно быть. Эх, как же у меня горел пердак, когда через час отладки я понял, что сравниваю не два числа, а число и строку.
Анончики, помогите псевдокодом гистезерис на водяной насос морщу лоб уже 2 дня ни как не могу сообразить, делаю ифами Итак - при включении качает от нуля до уставки (100), ждет падения до гис (95) и качает до 100 опять
кажется очень простым но что то идёт не так vals-датчик давления int 0-100 p1-уставка int-100 p3-гистерезис int 0-40 key1 признак включения -bool full признак первого набора давления bool
[code]sum=p1-p3; if (vals>=p1 && f_key1 == true && full == false) { full = true; }else{ out= HIGH); } if (full == true && f_key1 == true ) { if (vals>p1){ out= LOW); } if (vals<sum){ out= HIGH); }} [/code]
Тупой вопрос. Как мне собрать исполняемый файл со всеми либами? То есть это статическая линковка, как я понял
g++ -lcurl -lcurlpp -Wall main.cpp Работает хорошо и файл есть. Но его нельзя запустить на другой тачке, ибо libcurlpp.so.1: cannot open shared object file: No such file or directory
А когда я делаю g++ -lcurl -lcurlpp -Wall main.cpp -static, то /usr/bin/ld: cannot find -lcurl /usr/bin/ld: cannot find -lcurlpp /usr/bin/ld: cannot find -lstdc++ /usr/bin/ld: cannot find -lm /usr/bin/ld: cannot find -lc collect2: error: ld returned 1 exit status
>>2207255 > Попробуй дёрнуть ldconfig, чтобы либы проиндексировались. Без понятия, что это > Ещё посмотри от чего твой бинарь зависит с помощью ldd. Ну я это и так знаю. Куча дерьма и нужная мне libcurlpp
Вообще если ты libcurl ручками собираешь, то для статической линковки нужно в ./configure указывать --enable-static. Если пакетами ставишь, то пакеты тоже не все подходят (для разработки обычно ставястя "libname"-devel).
>>2207272 Я ставлю libcurlpp, обёртку для curl. И как я понял, тут чтобы его собрать надо nmake какой-то. Пиза у вас тут, крестовиков, с линковкой и подключением библиотек, конечно.
Если собирать либы с --enable-static, то что это даст? Будет какой-то новый особый файл, который можно будет склеить с бинарником?
>>2207280 >Будет какой-то новый особый файл Да. Под виндой статическая либа - файл .lib, динамическая .dll (и к ней в пару создаётся .lib являющийся интерфейсом). Под linux статическая .a, динамическая - .so.
>nmake Это для сборки под windows, но через студию. Ты ничего там не путаешь?
>>2207289 Возможно, да, что-то путаю. Я просто хочу удобную http либу для плюсов. Пока колупаюсь. Возможно, стоит просто разобраться с ванильным curl.
>Под linux статическая .a, Статическая либа ведь линкуется (вклеивается) в исполняемый файл? Я же не путаю?
>Это для сборки под windows, но через студию. You can build curlpp in three different ways A. from within MS Visual Studio IDE B. using msbuild tool and solution files C. using namke and makefile
>>2207306 >Vcpkg is a package manager for the different C and C++ libraries. >Vcpkg can collect usage data. The data collected by Microsoft is anonymous. Ясно
Интересно, они долго это придумывали? Аж целый 23 стандарт... Наверное даже устали придумывать и разрабатывать
А главное - нахуя? Вместо #ifdef лучше таки писать #if defined - позволяет чище делать более сложные условия. А еще лучше делать просто #if X - чтобы делать нормальные красивые конфиги
А еще лучше забыть уже всю эту макросовую хуиту, когда есть нормальные компалтайм условия
Начал изучать эти ваши плюсы. Возник такой вопрос: если в функцию передается указатель именно на первый элемент массива, то как правильно написать функции для создания и удаления динамических массивов? Ведь функция удаления не получит указатель на весь массив
>>2207978 > Интересно, покажешь пример скрипта? Там нихуя интересного, просто vcpkg install с манифестом, дополнительные костыли для бинарного кэширования и все.
> Это нормально для каждого проекта тащить свой vcpkg? Микрософт сам это рекомендовал до того, как сделал версионирование. У нас свои либы запакованные в вцпкг, по-этому мы просто вцпкг и нужные порты храним в проекте и не ебем голову
У меня есть цикл for(std::set<int>::iterator it = clients.begin(); it != clients.end(); it++)
И есть беда, что в случае удаления элемента из сета мне надо продолжать цикл либо с самого начала либо со следующего элемента (лучше последний вариант) Пробовал переставить итератор снова в начало и continue, но тогда если элемент был всего один то сега Вариант с goto сработал, ток хотелось бы без него Как делать?
>>2208305 Ты не способен даже прочесть то, что сам советуешь, пиздец. > The erase–remove idiom cannot be used for containers that return const_iterator (e.g.: set)
Насколько правильно в одной паре ".h - .cpp" держать несколько классов? Ну то есть чтобы не плодить кучу файлов для каждого класса вместо этого схожие классы собирать в одном файле h и cpp???
>>2209104 А как правильнее инклуды писать в таком случае? Для всех классов писать в самом начале хедера? Или можно перед объявлением класса писать заголовочники, которые нужны именно ему? Мне второй вариант кажется более читабельным, только не будет ли ошибок каких нибудь из-за этого?
Этот >>2201187 многострадальный анон снова на связи. Все никак не могу решить свою проблему. Почистил свой код от using namespace, теперь их вообще нету нигде. Но компилятор продолжает ругаться. Начал смотреть хедеры Niflib, оказывается там везде понатыканы using namespace std, почти в каждом хедере. Из-за этого наверно компилятор ругается, вроде начиная с С++14 так нельзя. Как по уму решить эту проблему? Пока на ум кроме ручной чистки хедеров Niflib ничего не приходит.
В чем разница между этими строчками? Одна из них компилируется, другая нет. Говорит невозможно присваивать значения переменной, которая объявлена как константа
>>2209219 Правильно, только тип зверя надо передавать аргументом createAnimal, цикл перенести в foo(), для него можно енум завести. И сырые указатели с утечкой памяти в foo() режут глаз.
>>2209231 > цикл перенести в foo() Везде пишут мол надо отделять изменяемую часть от неизменной, а все что меняется от рантайма к рантайму переносится в фабрику, которая, я если я все понял, является здесь createAnimal()
>>2209239 Что считать "изменяемой" частью? Пусть "изменяемым" будет источник названия зверя, а фабрика будет создавать только то, что ей говорят. Источник может быть любым - ввод с клавиатуры, конфиг, БД и т.д. Если понадобится создавать 10000 заранее известных типов зверей, не придётся дорабатывать фабрику, чтобы убрать из неё ввод с клавиатуры.
>>2209179 библию, книгу апокалипсиса, на этой неделе патриарх затирал про то что апокалипсис мол начнется с полного порабощения и контроля человека, а мол современные цифровые технологии позволяют это сделать! а значит ускоряют приближение Конца и Судного дня!!
Братишки, я вам это... покушать принес. Помогите, словом. Начал дрочить кресты, ебусь с указателями. Задача такова: Объявите указатель на массив типа int и выделите память память для 12-ти элементов. Необходимо написать функцию, которая поменяет значения четных и нечетных ячеек массива. Например есть массив из 4-х элементов: (пик1) Скажу сразу, я решил заполнять массивы рандомом и тут-то повсплывали всякие сложности, но отступать мне не хотелось и я выдал такой вот пахомистый код (пик2) В чем задумка? Я создаю массив, рандомно его заполняю, затем создаю массив, где четные и нечетные числа меняются местами, для чего в заполнении массива прописываю функцию. Функция сия создает два динамических массива: один с четными числами оригинального массива, другой - с нечетными. Затем функция проверяет каждое число оригинального массива на предмет его четности или нечетности и заменяет его соответствующим по индексу числом из противоположного массива. На случай, когда один из массивов закончится я предусмотрел поместить в индекс результат остатка от деления текущего значения итератора на размер заканчивающегося массива. Сам код: #include <iostream> #include <cstdlib> #include <ctime>
int addFoo(int massiv, int razmer_massiva);
int main() { srand(time(NULL)); int size_of_array = 12; int arr = new int[size_of_array]; std::cout << "Original array: "; for (int i = 0; i < size_of_array; i++) { arr = 1 + (rand()%20); std::cout << "\t" << arr << " | "; } std::cout << std::endl; std::cout << "Reversal array: "; for (int i = 0; i < size_of_array; i++) { arr = Foo(arr, size_of_array, i); std::cout << "\t" << arr << " | "; }; std::cout << std::endl; delete[]arr; return 0; }
int Foo(int massiv, int razmer_massiva, int iterator) { int size_of_even_arr = 0; int size_of_odd_arr = 0; for (int i = 0; i < razmer_massiva; i++) { if (massiv % 2 == 0) size_of_even_arr += 1; else size_of_odd_arr += 1; } int even_arr = new int[size_of_even_arr]; int* odd_arr = new int[size_of_odd_arr]; for (int i = 0, y = 0, z = 0; i < razmer_massiva; i++) { if (massiv % 2 == 0) { even_arr[y] = massiv; y++; } else { odd_arr[z] = massiv; z++; } } int result = 0; if (massiv[iterator] % 2 == 0) { if (massiv[iterator] <= size_of_odd_arr) { result = odd_arr[iterator]; } else { result = odd_arr[(iterator%size_of_odd_arr)]; } } else { if (massiv[iterator] <= size_of_even_arr) { result = even_arr[iterator]; } else { result = even_arr[(iterator%size_of_even_arr)]; } } return result; delete[]even_arr; delete[]odd_arr;
У меня появился вопрос. Вот я делаю какую-то программу и в ней есть объекты (Графический интерфейс, кнопки или игровые объекты). Метод отрисовки на экране нужно помещать внутрь самого объекта, который я планирую отрисовать или лучше создать отдельный класс, в котором есть все методы для прорисовки всех объектов?
>>2211482 -DBUILD_SHARED_LIBS=OFF Или в самом Cmake UI снимаешь галку BUILD_SHARED_LIBS Можешь ещё build_opencv_world выставить, чтобы собралось в виде одной большой либы.
А вообще на самом сайте OpenCV есть масса ссылок для сборки под всё и вся. Пошевели свое жопой хоть немного.
>>2211514 Да шевелил и ставил, что ты говоришь, только потом в проекте Unresolved extensials, хотя библиотеки присоединены и все headerы тоже. Только "build_opencv_world" не пробовал, спасибо за наводку.
>>2211540 Ну так залезь в исходники OpenCV и посмотри к какой либе externals относится. Ещё ты мог проебаться с opencv_contirb. Это либы идут вместе с OCV, но они от сторонних разрабов и требуют явного указания при сборке. -DOPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules <opencv_source_directory>
Вот этого >>2211543 говноеда не слушай. OCV дико модульная хуйня с кучей фич под разные платформы. Для laba.cpp конечно хватит, но в реале через стандартные пакеты её никто не ставит.
>>2211575 Когда обезьяна не знает про конфигурации и фичи вцпкг, из которых ты можешь собрать ровно то, что тебе нужно, и продолжает делать руками то, что уже автоматизировано у всех бояр.
>>2157621 (OP) Объясните, как c++ компонует свои классы в портабл екзекьютабл? Под каждый класс создаёт дефолтный прототип? Где хранятся функции-члены? Где берется место для статичных переменных? Где про всё это почитать в подробностях?
>>2211587 Не помню как в других IDE, но если студия, то попробуй в Code Generation->Runtime Library убрать DLL. Если подключаешь статическую либу, то библиотека среды выполнения тоже должна быть статической.
>>2211624 В C, статично-алоковані об'єкти без явного ініціалізатора значення будуть ініціалізовані нулями (для арифметичних типів) або нульовим вказівником (для вказівних типів). В реалізації C, як правило, нульові значення і вказівники у бітовому представленні складаються лише із бітів з нульовими значеннями (хоча це не вимагається стандартом C). Таким чином, сегмент BSS як правило містить всі неініціалізовані об'єкти (змінні і константи), що оголошені в області видимості файлу (тобто, за межами будь-якої функції) а також не ініціалізовані локальні статичні змінні (локальні змінні[en] оголошені із ключовим словом static ); статичні локальні константи повинні ініціалізуватися в оголошенні, оскільки вони не мають окремого оголошення, вони як правило не розміщуються у BSS секції, хоча вони можуть явним чи неявним чином ініціалізувати в нульове значення.
Пітер ван дер Лінден[en], автор мови C і програміст, говорить, "Деякі люди люблять запам'ятовувати цей сегмент, як 'Краще залишити місце'" ("Some people like to remember it as 'Better Save Space'). Оскільки BSS сегмент містить змінні, які ще не мають будь-якого значення, не потрібно зберігати представлення цих змінних. В об'єктний файл записується розмір BSS сегмента, але BSS (на відміну від сегмента даних) не займає ніякого фактичного місця в об'єктному файлі."[3]
Привет, мне стало любопытно за подобный стиль написания кода на C++, который можно встретить в исходниках соурса и у javidx9, и что конкретно значат приставки перед названиями аттрибутов? m_b, m_p и т.д, заранее благодарствую
Надо написать крайне простой сайтик с одной формой для личных целей. Потом это мне надо будет ручками разобрать. Опасаюсь наплыва ботов от шутливых друзей, поэтому нужно подрубить какую нибудь капчу. Что посоветуйте?
>>2212337 Ну может есть проверенная простая для подключения капча? Чтобы я не пробовал разные варианты в поисках адекватной. Ну если нет, то я конечно найду сам, но думал тут подскажут
>>2212340 Напиши чат сервер с шифрованием и чтобы это было максимально быстро. Чтобы миллиард человек могли пользовать этой хуйней в один момент, а прога пыхтела на твоей пентиуме и все работало
У меня программа из нескольких файлов, причем есть 2 файла с main, чтобы я мог компилировать 2 вида программ. Обычно я из командной строки просто указывал какие файлы компилировать и все было заебись, но сейчас мне надо отладить прогу. Как в vs выбрать файлы для компиляции и отладки, если нет проекта, а только файлы?
>>2212166 Липпман норм чел вобще, он причастен к разработке языка если чё.
Тут у тебя трудности перевода. Держи под рукой всегда английское издание. А еще на сайте паблишера всегда есть пополняемый список опечаток. Об этом всегда во введении к книге говорится и дается ссылка в интернеты.
>>2212166 По фактам Липпман здесь хочет подчеркнуть важное различие между ()-инициализацией и {}-инициализацией. Липпман не может тебе изложить все и сразу, поэтому он часто прибегает к таким фигурам речи, как "по причинам, которые будут понятны в дальнейшем" и тп.
Это как запутанный клубок ниток. А C++-дрочеры - это такие няшные котики, которые любят играть с клубками пряжи.
>>2212345 >у тебя за 4 года не было ни одной идеи, достойной стать дипломной работой
А что можно нормальное написать в качестве дипломной работы, причем такое, что твой научник согласился бы это вести? Компилятор/Интерпретатор своего ЯП? Аналог 3дс макса? Realtime анализатор трафика?
>>2213823 >автоматизировать Это про какую-нибудь 1С, джаву, питон, шарпик, ну язык на котором можно быстро бизнес логику написать. На С++ особо ничего и не автоматизируешь из простых вещей.
>>2213839 >на них можешь че угодно создавать И на голом си, и даже на асме можно че угодно создавать. Другое дело, что у каждого языка своя ниша, и писать систему учету товаров на складе с микросервисами на С++ никто в здравом уме не станет.
>>2213856 Учёт товаров это одна задача из миллиона. Автоматизировать много чего надо. Сделай сам какой нибудь diy датчик чего нибудь и напиши программу, которая данные с него снимает и выводит непрерывный график на компе.
>>2211482 100% у них уже есть готовые статиклибы под распространенные платформы, тебе только линкануться нужно правильно будет и все.. наверняка в любых линуксах в любом менеджере пакетов opencv поставляеться вместе со статиклибами.. а под винду еще проще.. ну а если ты понимаешь opencv под какую-нибудь экзотику, то тогда респект тебе и я умываю руки так чтож 2 варианта либо ты слишком тупой либо слишком умный..
>>2211623 если ты знаешь этапы компиляции и линковки си программ, знаешь структуру исполняемого файла, обладаешь теорией о построении компиляторов, то можно будет тебе объяснить здесь и некие специфичные особенности связанные с компиляцией и линковкой уже с++ если ты не знаешь вышеперечисленного, то в треде это не объяснить, ты слишком многого просто не поймешь
>>2198538 Раньше долго сидел в болоте НИИ, пилил всякую херню от работы с бд, до всяких визуализаторов на простом попенжл и ГИСин. Было интересно, тк ассорти задач и коллектив приятный. Но денег нихуя, да роста тоже, тк команда маленькая и варишься в своём соку. Карьеру проебал считай зависнув там. Потом рискнул попробовать в одну фирму с графонтехнологиями, тк это единственная относительно интересная сфера в вайти, но не осилил - слишком мозг протух от НИИ. Хотя после этого из пяти собесов я получил офферы по всем, по одному даже за нарисовали на 50% выше запрошенного. В итоге работаю в телекоме вот третий год. Уже подзаёбыает, тк задачи тоска в основном. Кодовая база большая, вменяемой доки нет, мейнтейнить и расширять это больно. Думал буду в энтерпрайзе дохуя опыт получать, но что-то в итоге оказалось, что команда перегружена и каждый пилит в основном одни и те же модули/проекты, обсуждать нечего или некогда. Из плюсов - фирма комфортная, прогеров облизывает. Поднял ЗП до человеческого уровня. Надо бы дальше сьебывать, но теперь ещё страшнее: вроде нихуя не обогатился по навыкам, а меньше получать уже не годится. Опять же, найти интересную сферу - сложна. Из интересного недавно приглашали только конторы из Маськвы. Но чисто из дома работать я не могу - эффективность низкая и начинает крыша протекать быстро из-за отсутствия пассивной социализации. Пока думаю как выкатиться на забугорного пана, тк сносный разговорный английский без дела томится. %Спасибо, что прочитали личный бложик крестоёба. Подписывайтесь, ставьте лайк, жмите колокольчик%
>>2214054 Типичный сториз стареющего омежки. Мимо выкатился из ГовНИИ в графений и трёхмерку (не гейдев) а потом в машоб/зрение и умный эмбед. Иду в ногу с прогрессом, от энтерпрайз и легаси говна ловко ускользаю, с плюсами постепенно прощаюсь. Зп продолжает расти, intel/huawei и прочие яндексы сами ищут знакомства. Так то.
>>2214212 ты никак не слинкуешь то, что было высрано разными компиляторами.
нет, конечно можно, у кланга там есть возможности высирать в нужных форматах, да и линковать можно динамически через extern "C", но это уже не совсем новичковая тема
>>2214175 >яндексы сами ищут знакомства Но ведь яндексы и так ищут знакомства со всеми подряд. Мне за ноябрь порядка 20 херочек и херов написало с предложением порещать интереснейшие задачи в Лавке Ну а если серьёзно, то как не быть омежкой, а быть как ты? Научи, о дваче-мудрец.
>>2211975 В core guidelines говорят не использовать беззнаковые переменные, даже когда значение не может быть отрицательным. Бъярне сам признал обсёр с беззнаковыми индексами в STL
>>2214750 Бля чел, я спецом посмотрел есть ли такая фича, и после этого запостил. Есть, есть.
> (что только зумеры не придумают, чтобы самим либы не собирать) Я бы сказал - что главная проблема С++ это ебаные деды с вимом, мейкфайлами и ручной сборкой всего на свете. Мы не в каменном веке живем, много где в С++ уже просто не надо ебаться.
>>2214759 Не буду спорить о проблемах крестов. Просто скажу, что не сильно разделяю твое мнение. Но все равно в какой-то момент нужно будет делать кастомную сборку того же opencv с выпиленные/впиленными фичами и вообще любыми их комбинациями. В vcpkg все равно нет на любой вкус собранных либ.
>>2214453 >порядка 20 херочек и херов из них 80% хуй пойми кто из "кадровых агентств"
>интереснейшие задачи в Лавке Мне предлагают задачи для беспилотного транспорта.
>как не быть омежкой Не соглашаться на легаси говно и энтерпрайз. Быть там, где молодёжь. Не сидеть годами в одном месте, особенно если тебя облизывают.
>>2213958 >люди алгоритмы придумывали новые Ну это уже ближе к чему-то математическому. Какой-нибудь новый алгоритм придумать для быстрого верчения деревьев нужно нехило так дрочиться алгоритмами еще со школы, имхо.
>>2214175 >с плюсами постепенно прощаюсь Куда перекатывашься? На раст? Или в питон, раз в зрение вкатился?
>>2214175 >Иду в ногу с прогрессом, от энтерпрайз и легаси говна ловко ускользаю
Интересные задачи (не энтерпрайз и не легаси) хорошо оплачиваются у нас? Я когда-то думал вкатиться в С++ писать йоба-софт вроде компиляторов или зрения, а в итоге стал джавадебилом, который грузит джейсоны на 8 джаве в одном зеленом банке...
>>2215143 >Куда перекатывашься? В сторону Python. Но c++ всё равно нужен, когда надо софт в эмбед запихивать.
>хорошо оплачиваются у нас В российских реалиях Java/Kotlin/Enterprise в любом случае будут выгоднее по деньгам. Разрыв можно покрыть, только если работать с иностранцами.
Почему некоторые программы не собираются разными компиляторами? Чаще всего требуют GCC или Mingw. Как этого избежать? И сложно ли перенести такую программу на MSVC? Кстати, почему все не пересели на clang, он же есть на всех системах, более свободная лицензия и остальные плюсы
В общем, не трогал С++ года с 2012. Решил посмотреть, что там интересненького появилось. Вижу модули. Прочитал коротко - думаю, .ну наконец-то что-то нормальное в язык завезли. Потом смотрю как оно сделано в плане кодерского экспириенса. Это же пиздец какой-то. Нахуй они в таком виде-то нужны? У меня на самом деле уже закрадывается подозрение, что это все делается спецом чтоб добить бедненький С++. Иначе я не могу понять - на кой хуй объявлять нормальные вроде как фичи, но делать их в конечном счете так, что никто абсолютно не будет ими пользоваться, ведь сделано он именно так, что пользоваться этим тупо невозможно. Блин, да посмотрите как в ебучем JS модули сделаны. Да, там тоже есть свои хуевости, но уж получше чем плюсовские это 100%
>>2215362 >Как этого избежать? Использовать вместо make файлов или проектов студии (или какой-то конкретной IDE) CMake.
>сложно ли перенести такую программу на MSVC? Зависит от размера. А ещё от того, есть ли в программе системные вызовы POSIX/WinApi или какие-то особенности операционной системы или железа (допустим в Linux есть из коробки shared memory и через неё можно передавать данные между процессами, а в Windows - нет и надо городить свой огород).
>почему все не пересели на clang Есть очень большое наследие, написанное без clang и никаких денег не хватит, чтобы его портировать. Ещё есть всякий эмбед и ебля с кросскомпиляцией под непопулярные железки, где не всё так однозначно.
>>2215362 > Почему некоторые программы не собираются разными компиляторами? У каждого компилятора есть расширения и разные статусы поддержки всяких С++20. Но, оверолл - хорошо написанный код соберется и Студией, и шлангом, и гцц.
> Как этого избежать? Писать без компиляторных расширений, и, опционально, не пользоваться фичами С++20 которые есть не везде
> И сложно ли перенести такую программу на MSVC? По идее нет. Тут еще вопрос в билд системе. Если это симейк - то просто хачишь куски которые непортабельные и все. Если это какие-нибудь стариковские мейкфайлы - то надо поссать на лицо их автору.
> Кстати, почему все не пересели на clang А зачем? Работает - не трогай. Да и кланг развивается все медленнее и медленнее, учитывая конфликт в комитете по слому ABI, после которого гугл как-то подостыл к С++
Хочу заниматься движками баз данных, отказоустойчивым распределенным хуйлоадом, компиляторами, графикой. Как вкатиться в это, если я джавадебил? А то смотрю вакансии на С++: одно говно, либо НИИ, либо днищеконторы с формочками на Qt/MFC/WinAPI.
>>2215810 >Учеба + практика Где учиться и где практиковаться? Учился в бакалавриате "информатика и вычислительная техника", толком ничему не учили, так для общего развития можно сказать 4 года просидел там. И практику где брать?
Я вот смотрю вакансии на ХХ - по компиляторам если еще что-то есть и по графике тоже, то вот с базами данных нет ничего толком. Ну и хуйлоад на С++ видимо у нас только в яндексе есть.
>>2215823 >тебе конкретно какой то литры покидать Ну вообще да. Хочу сначала просто попробовать-потыкать различные отрасли, может потом найду что-то самое интересное.
>>2215786 Хуёво всё это закончится, братюнь. Ну разве что в гейдеве есть устойчивый спрос и сносная пайка. В остальном в год по этим направлениям постится 5-6 нормальных вакух и половина не в твоём городе без права на удалёнку.
Хочу простенький консольный чатик(клиент+сервер) Так вот. Я чет не вижу в стандартной библиотеке сокетов. Понимаю, что платформозависимо, но блин. Неужели придется извращаться с макросами или брать библиотеки сторонние?
>>2216150 начального уровня вообще никто не ищет это ты должен умолять чтобы тебя взяли вот в яндекс чтобы попасть нада 5 лет в вузике отпахать, ездить на олимпиадки, а до этого в обычной специальной с мат уклоном школке отучиться, погрызть математику с физикой, ну еще не забывай что ты должен быть юрким челиком и понять что не достаточно просто учиться в вузике на 4-5 (иначе в 30 окажешься в петле как невостребованное говно), а на курсе 2-3 уже начать суетиться и мутить разные темы с преподами, ну или на специализированные курсы от того же яндекса ходить и тогда тарам пам пам может быть ты попадешь в яндекс роботать программистом и да, пожалуйста не пишите как вы в конце нулевых с пары собесов прошли в хуяндекс и свалили оттуда через 3 года на большие бабки щас другие времена и другая конкуренция вот
>>2216145 будем честны и скажем что российский геймдев большую часть прибылей генерирует с мобильного рынка и то по той причине что ниша была незанята но скоро кризис начнет давить всех и на этот рынок выйдут динозавры и тогда к примеру тем же жидам из плейрикса придет пиздец ну как пиздец, бизнес у них задавят или отожмут сами то они уже срубили бабла и себе и внукам
>>2216383 >щас другие времена и другая конкуренция Не, ну ща получше чем пару лет назад. Молодняка поменьше и часть народу укатилась в питоны/вёбы/мобилки там всякие.
>>2216430 >>2216388 >>2216384 >>2216366 Спасибо за ответы, няши. Видимо таки придется на макросах делать. Я же как-бы на данном этапе хотел руки размять и попробовать словить вьетнамские флешбкеи. А то в средах со сборщиком мусора и прочими асинхронностями из коробки - как-то слишком скучно. Уже пропало чувство того что я идиот, а именно это чувство в свое время мотивировало изучать больше.
Помогите разобраться. Просто для себя изучаю С++ и не совсем понимаю, именно на практике, когда используются указатели? Вот как они работаю спокойно уложилось в голове, а вот когда их стоит применять, а когда нет - так и осталось вопросом.
>>2216383 Та хуй знает. Меня на первую работу взяли с уровнем: знает синтаксис, может отличить передачу по ссылке и по значению, знает стандартную либу, умеет по памяти сортировку пузырьком сделать.
>>2214175 > huawei Работаю там. В целом в московском хуавее всегда хуй клали на кодинг. Потому что китайцы и сами могут наговнокодить (на самом деле нет). Только недавно открылось несколько лабораторий, которые занимаются софтом. Та лаба, которая рядом с моим отделом, занимается довольно низкоуровневыми вещами. Про другие не могу сказать.
По поводу "на самом деле нет", написанному выше, есть кулстори. Хуавей пару лет назад со всех концов света собирал людей на длительную работу у них в китайском офисе с целью аврального допиливания их Harmony OS. Брали всех, кто был согласен ехать и был способен кодить. Вот так оказалось, что в Китае с их бешенной конкуренцией за рабочие места не хватает кодеров.
>>2216596 >сейчас для вкатунов жОпа В С++ может быть и да, так как вкатуны в кресты не особо нужны, ну кроме говноформочек на Qt.
>>2216383 >вот в яндекс чтобы попасть Нужно научиться прорешать 150-200 задачек на литкоде, преимущественно уровня медиум, вот тогда на стажировку в яндекс попасть просто. Знаю несколько людей, которые после обычных мухорсранских школ, с неоконченными говновузами и после армии, не обладая высоким интеллектом, вкатывались на стажки в яндекс, просто нарешав задачи на литкоде и найдя того, кто их сможет пореферить. Вот и все. Может, конечно, в поиск и беспилотники нужны толковые люди, но сейчас яндекс становится похожим на сбер, в который вообще чуть ли не всех подряд берут.
>>2216587 Если я тебя правильно понял. Английский нужен. Высшее нужно. Опыт нужен, но можно например в мою группу без опыта через интернатуру попасть (если ответишь на вопросы на собесе). Но и я не кодер ни разу. Просто решил освежить свои плюсы. Вот пока с вами тусую.
>>2216619 > Хуйвей сейчас на конпеляторы и тулчейны к ним набирает. Нв rust говно ещё. Другое дело, что это узкая специализация нахуй никому не нужная. Конпеляторы сейчас котируются как минимум в хуйвее, самсунге, нвидии и интеле. И это только в Москве. Но специальность по конпеляторам с хорошей дискреткой ещё нужно заработать.
>>2216633 Просто на собесе попросят какой-нибудь технический вопрос по-английски ответить. Китайцы тоже, знаешь, такие себе инглиш-спикеры. >>2216634 Из приличных, может быть, и как максимум. Но есть еще подсосавшиеся к госзаказу кб-шки, клепающие нейропроцы. Или лабы в институтах, загимающиеся подобными вещами.
>>2216640 Редкая специализация это всегда палка о двух концах. С одной стороны можно ломить цену за свои навыки и жить припеваючи. Но с другой, что делать, когда все четыре вышеперечисленных конторы перепробовал и тебе не понравилось.
>>2216644 >все четыре Есть только в маськве. В питере есть только хуйвей, а в нижнем только интэл. Раньше на удалёнку они никого не брали, а сейчас готова только одна из.
>>2216649 > в нижнем только интэл Хуйвей там тоже есть чуть-чуть. Но с другой стороны, чего ловить человеку с хорошим редким образованием в мухосранске?
>>2216650 >в мухосранске? Российское подразделение интел появилось в мухосранске, потом переползло в мухосранск-милионник, а потом в маськву. И оно за собой перетаскивало людей с "редким образованием", которое можно получить почти во всех мухосрансках-миллионниках.
>>2216602 >которые после обычных мухорсранских школ, с неоконченными говновузами и после армии, не обладая высоким интеллектом, вкатывались на стажки в яндекс в каком году але? в швятые нулевые? дО крыма? в 21 году это уже не прокатит
>>2216619 >Huawei uses Rust to develop a real-time OS for IoT devices, and in the StratoVirt project, a high-performance virtualization platform хе хе земля им пухом те они сначала должны будут поднять те сделать всю инфраструктуру (одного компелятора недостаточно, хотя и сделать компелятор такой дрисни как раст еще хуже делать чем компеляторы швятых крестов) вокруг этого сырого говна под названием раст, а только потом уже начать пердолить свои иот операционки и виртуализаци хехе вот это мянямирки
>>2216655 ну хотя для программистов то приятненько такое писать ну там компеляторы, инфраструктура к ним, всякие иде и отладчики, ну там всякие рантайм ос, и всякая виртуализация одни из самых приятных занятий для программистов и денежку платят
>>2216653 Исключение из чего? Конторы открывают свои представительства там, где есть мозги (нормальные вузы или нии), а не там, где кремль краше. А потом да, менеджмент перевозит головной офис туда, где удобнее вести бизнес (и жить краше). Но работяги остаются в своих Новосибирсках.
ммм даже представляю этого поехавшего хитреца тим лидера какого нибудь который впаривал топ менеджменту хуайвея что мол ща нахуярим побыстрому рантайм операционку на модный иот! мол язык современный и безопасный бля буду и поэтому у нас все летать будет и сделаем все за срок! бля буду только сначала по бырому запилим компелятор ну и чутка тулзов к нему! это просто! даже интересно есть ли вообще в природе хоть одна успешная коммерческая операционка написанная НЕ на си, хе хе, разве что мертвый сумбайн
>>2216662 Ты не совсем правильно представляешь, как все в хуавее устроено. Там на рисеч тратятся просто мегатонны юаней. Написать операционку на любом говне это для них рисеч-челлендж. Помимо этого отдела еще в мире в других исследовательских центрах будут отделы-компетиторы с такой же разработкой. И в самом Китае еще несколько отделов будет этим заниматься. >>2216660 То-то я вижу в каждом мухосранске технокластеры с представителями международных компаний.
>>2216663 Ну так huawei и samsung прежде всего смотрели на Россию, как на рынок сбыта своей продукции. Если все крупные конторы сидят в москве - надо идти туда. Сначала открылись департаменты по работе с корпоративными клиентами, маркетингу и продажам. Потом по фану добавили "департамент разработки". В плане организации тоже очевидно - если в москве сидят все, кроме газпрома, то и инфраструктура (кластеры-хуястеры) соответствующая. В регионах местный бизнес максимум на что способен - построить торговый центр с фонтаном. А муниципалитет - такое же говно без задач как и Сколково.
Соответственно разрабы собираются по 10-15 человек и скромно педалят код для иностранцев под вывеской "ООО ЗалупкиЛабз". Если "ООО ЗалупкиЛабз" пишет IPP, MPI или OpenCV, то он потом превращается в Intel Russia и ползёт в Москву к остальным.
>>2216695 Особо не вчитывался, но похоже на (странный) алгоритм Левенштейна. Почитай про алгоритм диффа и как он синхронизируется на новых строчках. Алсо, ты не инициализируешь данные в матрице и можешь читать мусор оттуда. Используй valgrind/санитайзеры для проверки кода.
>>2216766 Почему? >>2216784 >похоже на (странный) алгоритм Левенштейна Я просто думал, как компактно хранить изменения, чтоб не класть полные копии файлов на каждый коммит, и вспомнил, что существует некий эффективный longest common subsequence. Загуглил, увидел фразу dynamic programming и какую-то таблицу NxM, дальше додумал сам.
>>2216784 >>2216859 >>2216695 Кстати хорошая идея, проводить code review itt. Может, попробуем развить тему? Все же любят обосрать других.
Я например вижу примерно следующее: 1. Хранить 16-битные размерности массива особо не имеет смысла (так же как и передавать их параметром) 2. Нижние подчеркивания в начале заменить на подчеркивания в конце. 3. Разберись, в чем ты хранишь размеры массива: в знаковых или беззнаковых переменных. В зависимости от этого добавь проверки допустимых границ значений. 4. main должен состоять из 3-4 строчек. Все методы должны быть внутри классов.
>>2216654 >в каком году але 2021 год, период с июня по октябрь. Как раз таки 2-3 года назад в Яндекс попасть было попасть тяжелее, у мидлов бывало по 6-7 алго интервью просто чтобы попасть на 150к. После этого к ним народ с опытом стал менее охотно идти, вот они и начали брать себе стажеров и джунов в бОльших количествах. Ну и сам яндекс разросся и стал похож на обычную галеру. Всякая элитарность осталась только в поиске, такси и беспилотниках.
>>2216626 >хуйвее, самсунге, нвидии и интеле В нвидии у нас открытых компиляторных вакансий не видел ни разу, но может анон оттуда прояснит ситуацию. А так еще есть очевидный jetbrains с его компилятором котлина и вообще статистическими анализаторами для IDE, ЦИТМ Экспонента и конечно же МЦСТ. Вроде бы все. Ну как бы штук 10-15 компиляторных вакансий на всю страну наверняка наскребется.
>>2216649 Кстати интел в москве есть, но основное место концентрации разработчиков именно в нижнем. На стажировки нанимают в первую очередь в нижний.
>>2216644 >что делать, когда все четыре вышеперечисленных конторы перепробовал и тебе не понравилось Перекатиться в другую отрасль. Ну если ты действительно стал крутым спецом в компиляторах, то наверняка не составит труда релоцироваться куда-нибудь в US/UK/Китай, там компиляторной работы наверняка гораздо больше.
>>2216990 Нвидия в Москве вообще как закрытый клуб. Мониторю их вакансии. Там их совсем немного всегда висит. Даже как-то сам резюме засылал их hr'у (далеко не на джунскую позицию). Вообще ничего не ответили, собаки. >>2216996 > Кстати интел в москве есть, но основное место концентрации разработчиков именно в нижнем. Сейчас они вводят полную удаленку и нанимают со всей страны. Вот сейчас к ним в несколько отделов собеседуюсь. > Перекатиться в другую отрасль. Верно, конечно.
>>2217381 Ну тебе нужно написать функцию [code] int fibonachiResolve(int N) { //Тут будет лежать решение твоей задачи return solve } [/code] Для самого решения тебе понадобится ещё 3 переменных и цикл while в котором ты будешь вычислять следующее число, зная 2 предыдущих, добавлять его к сумме и обновлять последнее и предпоследние число. [code] int fibonachiCount = 1; //Тут мы храним сумму цифр фибоначи int fibonachiFirst = 0; //Тут у нас будет последние полученное число фибоначи int fibonachiSecond = 1; //Тут у нас будет предпоследние полученное число фибоначи ... while(lastFibonachi < N) { ... } [/code]
привет, анон короче я по образованию робототехник и у меня опыт работы только в робототехнике: всякие SLAM немного cv. Короче алгоритмы Вот, и недавно в силу бэкграунда и прочего ощутил комплекс неполноценности нехватку базовых знаний комплюктер саенс: как работает сеть (ну основы понимаю), криптография, да даже те же плюсы у нас используются не то что бы по полной - не юзаются прелести мув семантики и тд. Короче чисто как быдлан пишу Посоветуйте плиз, каким бы проектиком можно заняться дома для себя. А то из-за низкой осведомленности могу придумать задачу, например, по зрению, но вот чтобы все это охватывало те знания о которых я написал, то вообще идей нет. Да и хочется отдохнуть от всей это роботохуйни и написать СВОЙ МЕССЕНДЖЕР. Короче хочу чуть вширь прокачаться, помоги плез советом
>>2217411 Купи малинку/пердуинку и подключи к ней камеру или привод какой-нибудь и запили управление пердуинкой со своего компа или мобилки. Сразу выйдешь за пределы своего уютненького.
>>2217430 буэшь через 5ть лет в красной безрукавке тогда раскладывать товар по полочкам в магните а пока сьеби из треда в шапке написано: лабы идут нахуй
>>2217433 Человек же сказал, что его подзаебали cv и робототехника. Что посоветовать не знаю. Я купил себе стереопару realsense d435i с инерциальным модулем и сначала решил написать свой слам, но потом передумал и пишу фильтр Калмана с автокалибровкой ковариационных матриц. При этом основной проблемой все равно является непонимание того, как надо правильно, а не чтобы просто работало.
>>2217470 Ну так в чём проблема то? Мобилки не робототехника, управление железкой - сети, фронтенд, бекенд и ещё вёб сервак допустим сверху. Всё это не про зрение и не про роботов. На жалезку можно накатить какой-то базовый софт коих овердохуя из коробки есть. Для него это будет самый быстрый старт от того, что он и так умеет.
>непонимание того, как надо правильно, а не чтобы просто работало Потому что у самурая нет цели, только путь.
>>2216928 Это я наскоро набросал мейновую программулину, чтоб глянуть, какой получится дифф. Разумеется, архитектура моей системы контроля версий будет безупречной, и после релиза tit 1.0 весь исходный код мигрирует из git репозитория в tit репозиторий. С этого момента ни одному нормальному кодеру профессиональная честь не позволит контрибьютить сюда https://github.com/git/git, ведь, в отличие от tit, там ни один коммит не проходил предварительное код-ревью двача. Таким образом, разработка всех серьезных программных продуктов рано или поздно перейдет на tit.
как относитесь к этой залупе? https://ru.wikipedia.org/Венгерская_нотация начал изучать вин апи, наткнулся на это. до этого использовал с++ только для лаб, для своих проектов и работы использовал более высокоуровневые япы, потому практически любой нейминг в коде на поюсах кажется мне чрезмерно оптимизированным и максимально неочевидным
>>2218416 Ну тут нарушается абстракция данных и, если тип объекта меняется в будущем (допустим при переносе на новую платформу), то придётся больше кода педалить и больше ошибок ловить после этого.
А вообще, когда ты приходишь на проект, то пишешь так, как заведено на проекте. Поэтому просто забей.
>>2218420 >Ну тут нарушается абстракция данных и, если тип объекта меняется в будущем Венгерская нотация это не обязательно про типы. Мы вам перезвоним.
Подскажите в какую сторону смотреть - нужно проиграть видео в полноэкранном приложении как отдельное окно(без рамок). С DirectShow не получилось. Другие варианты есть?
https://pastebin.com/jn0Ua8zz Почему так я должен проебывать время, нахуй? Чтоб обойтись стандартный istream_iterator, надо делать свой locale, в котором ничего кроме \n не является whitespace, или я не так понял?
Привет. Если скажем делаю хэдер, внутри есть пара функций которые возвращают вектор стрингов. Соответственно мне внутри хэдера нужно подключить вектор и стринг. Я понимаю, что в файле где я определяю моих функции для корректной работы мне не нужно повторно включать вектор с стринг. Но с точки зрения хорошего тона, или может быть какого-нибудь код конвешена нужно ли повторно включить их исключительно для ясности читающего?
https://habr.com/ru/post/352570/ Наткнулся на эту статью. Это кликбейт? В C++ будут удалены указатели? Нахуя? Кому не надо их не используют, но если вдруг захотелось побайтойобить, то в чем проблема?
Я хочу в базовом классе сделать функцию, которая будет возвращать указатель на тип класса. Мне ее делать виртуальной? Но у нее есть реализация. Или какой тип ставить? Вроде не могу просто сделать тип базового класса сделать.
>>2219588 А, понял. Надо было мне повнимательнее читать. Ну, я думаю, компилятор сможет оптимизировать нормально, если ты просто условие поменяешь, типа return std::ranges::size(matched) == 1 ? opt : nullopt; В любом случае, такой вариант гораздо оптимальнее твоего, потому что новый список не создаёт.
>>2219588 А если ещё маленько подумать, то скорее всего не оптимизируется так, что идти будет до второго матча. Это можно провернуть, если руками напишешь что-то вроде std::views::filter, но скорее всего это перебор. Оставь так, чтобы читалось нормально, потом при необходимости наговнякаешь чего-нибудь.
>>2219618 Чаепитие с кошкодевочками -- это просто прекрасно. Единственное, не знаю, откуда компилятор пойдёт считать !xs.empty(), с самого начала списка или ему чудом удастся переиспользовать x.empty(). Но, если это важно, я думаю, можно изъебнуться. Но мне уже лень.
На всякий случай и тут спрошу, потому что С++ ближе к заводам и больше вероятность, что тут кто-то знает. В общем, вдруг тут есть те кто разрабатывали скада-системы. Поясните, вот на работе коллега старший говорит что для поддержания соединения с устройством - нужно на каждое устройство поток выделять. Я - не занимался скадами, но не понимаю зачем. Разве нельзя это обычной асинхронщиной делать? Ну, типа устройства же не без остановки будут слать нам сообщения, будет какая-то IO-задержка связанная с сетью, так на кой хуй нам целый поток выделять, чтоб тот ждал пока к нему кто-то обратиться, если можно его переиспользовать для других задач. Или я что-то не понимаю и я просто тупой?
>>2219906 Ну в целом да, на каждый клиент/устройство заводить поток не стоит. Достаточно одного (или пула из нескольких), который будет слушать порты и через future/promise/async выдавать результат в основной поток.
>>2219950 Удачи, анон. Я в тебя верю. мимо устроился C++ разработчиком 5 месяцев назад и уже приобрел желтенький Москвич, а отказывать себе в любимой еде из-за денег и подавно не приходится
>>2219950 > макароны каждый день макароны "каждый день" - невкусная хуйня, но если ты их так любишь, то достаточно устроиться грузаном в пятерочку и тебе будет хватать зп как раз на то чтобы употреблять их каждый день зачем тебе изучать такой эзотерический вымирающий язык программирования как с++ вообще не понятно тогда вот если бы ты был наследником двух, а еще лучше трех квартир, то тогда было бы другое дело, в одной квартире ты бы чилил, а вторую сдавал, свободное же время как раз и можно было бы посвятить изучению тонкостей метапрограммированя на шаблонах для кодогенерации в рантайме либо экспериментам над обобщенными функциями применяемыми к универсальным контейнерам
здарова анон короче пилю курсач в унике: нужно из сырых картинок заебашить видос (кодировка h2640, в каждом кадре которого помимо самих картинок будут еще и данные (если говорить конкретнее - время кодирования). Сначала думал сделать это сырым ffmpeg-ом, но он такое не может. Сел за плюсовую libav - там, вроде, есть такая хуйня как AVPacket и вот в нем есть side_data. Казалось бы, проблема решена, но нихуя ничего в файл с видосом не записывается. Вопрос: был ли у кого-нибдуь подобный опыт или кто-нибудь хотя бы знает куда копать? А то почему-то в гугле с этим все архихуево - пару неотвеченных вопросов на стэк оверфлоу и 0 туториалов. Такое ощуещение, что я единственный в мире, кто решил в видос записать еще и данные к кадру В общем, бомбит уже, спасибо
>>2220457 мне нужно точно знать, когда кадр был закодирован. Этот модуль будет частью еба боба системы видеоанализа ебал на росе, которую прошлые студенты написали. А рос, как я понял, так устроен, что он кидает по сокетам сообщения, в которых есть timestamp. В данной реализации там кидается стандартное росовское сообщение: сырая картинка + стэмп. Прикол в том, что записывать сырые картинки дико разъебывает по размеру лог - у нас он вести порядка 100гб, хотя видоса секунд 20, что пиздецки Ну и появилась идея все это кодировать в видос, чтобы весил меньше. Все идет окейно, но как записать timestamp в видос - мне не очень понятно. точнее можно сделать отдельный стрим, там, либо записывать в отдельный файл. Но я не хочу ебаться с синхронизацией стримов, потому что вот, мне приходит сообщение, я его кодирую и хочу вот прям тут взять и записать время к кадру и заебашить его в файл. Идейно вот зачем
Сап сиплюсплюсач. Хочу вкатиться в android NDK. Насколько похож на win32? Быстро разберусь, имея опыт в win32? Нужно ли джаву знать или можно чисто на С++ писать?
>>2220530 >Насколько похож на win32? Быстро разберусь, имея опыт в win32? Перечел и понял, что хуйню сморозил. Хочу приложуху портировать на ведроид вот и все дело. Последний вопрос не отменяю.
>>2220625 поток субтитров - это отдельный поток. Есть функционал добавления именно к пакету - add_side_data . Но он нихуя не работает. Не пойму почему. Может эта side data вообще для чего-то другого?
>>2221014 Тут важно понимать, что каждое из полей применения плюсов нуждается в своих знаниях. Не получится, как в питоне, знать scipy, pytorch/flask, django , чтобы покрыть 99 процентов ваканский Я в плюсах около года и, насколько успел понять, остались они только в эмбедед, HFT, всякие деплои нейросеток (как правило, деплои сеток CV) и в некоторых проектах на них пишут критичные к скорости ядра. А ну и еще Яндекс на плюсах разрабатывает ВСЕ Наверное, знания того, как работать с сетью + многопоточность и углубленное знание плюсов покроет процентов 60 вакансий, но есть вероятность, что другие 40 требуют совершенно иных знаний: opencv, pointcloud и тд Бля пишу пьяный и сумбурно, сорян Короче учи сети и углубляйся в плюсы, пока не понимаешь чего хочешь Говоришь, что просил проект а не сферу знаний куда углубляться? Так вот проект не ебу Торрент свой напиши, хуй его
Так, раз уж пошла пьянка с проектами. Я сейчас работаю в CV, хочу перекатиться в HFT,тк есть интерес попробовать свои силы в другой сфере. Какой проект бы лучше сделать, чтобы техлид руку жал, на свое место звал а хрюша плакала от счастья увидев мой гит?
>>2221061 Это конченный язык чтоб он сдох блять. Мне хватило его после майнкрафта. После пары лет вката выкачусь и буду делать системы, эмуляторы ещё что посложнее, профит
>>2221292 Последний раз, когда это тыкал, команды для этого не было. Надо было ручками зайти в каталог vcpkg с этим пакетом, и там где-то сохранялся этот лог.
>>2221299 Ты тред то читал? На "системы, эмуляторы" и прочее обычно есть 2.5 вакансии по каждому направлению. Хорошее знание с++ там только 50% от условий для вката.
Что за пиздец, как собрать простенький проект в GitHub actions? Он постоянно выдает всякие ошибки, которых нихуя нет в моей командной строке. Например Skipped Deploy Configuration Debug Any CPU project not selected to build, хотя я ему хоть как указывал и 64 бит, и Release, но ему похуй. На appveyour собирает из под пинка
>>2221119 >Я в плюсах около года и, насколько успел понять, остались они только в эмбедед, HFT, всякие деплои нейросеток (как правило, деплои сеток CV) и в некоторых проектах на них пишут критичные к скорости ядра. А ну и еще Яндекс на плюсах разрабатывает ВСЕ
А игры? На чем игры-то делают? Я думал, учить плюсы с прицелом на игры, это самое оно.
>>2222475 Из конструкторов и блюпринтов ляпают, на unity + c#, на java под мобилки, на python пишут логику и только движки и критичные по производительности куски пилится на c++.
>>2222518 Там в большинстве вакансий не указана зарплата, так ещё и охуевшие компании требуют высшую корочку, портфолио, и ещё дохуя чего, и это для начинающего разработчика >>2222494 Да, так себе
>>2217006 >Нвидия в Москве вообще как закрытый клуб. Мониторю их вакансии. Там их совсем немного всегда висит. Даже как-то сам резюме засылал их hr'у (далеко не на джунскую позицию). Вообще ничего не ответили, собаки. Такого быть не может, у нас адовый пиздец с народом, и эйчары работают
Есть абстрактный класс. Хочу создать вектор умных указателей на его наследников, чтобы потом в произвольные места можно было замувать объекты. Но я не могу просто взять и сделать вектор определенного размера, потому что компилятор ругается на то, что у класса не определен конструктор.
>>2223868 Я так понимаю дело в том, что вектор потом должен будет вызвать деструктор, но мне так делать не придется. Можно ли вектору запретить вызывать деструкторы?
>>2223869 Это очень плохая идея. Потому как деструктор необходим для чистки твоей памяти которую зарезервировал конструктор. Более того, если хочешь наследоваться от абстрактного класса деструктор должен быть виртуальным. А иначе перед удалением указателя родителя, тебе нужно будет проверять и приводить каждый указатель к соответствующему классу.
Господа мы скоро получим срыв стека и UB. Думаю срочно нужно перекатываться.
>>2224028 >Где ещё поискать работу для джюниора кроме hh в Москве? Напрямую подаваться в Яндекс, Хуавей, Самсунг, Интел, МЦСТ и прочие относительно крупные конторы, где нужен С++. Если никто не ответит, ну или никто не возьмет джуном, то поздравляю, рыночек С++ для тебя будет закрыть, тогда смело начинай учить js/python/php
>>2224253 В Яндексе дохера вакансий, там же должны разные ХР сидеть, то есть есть смысл в несколько подавать? Ещё есть стажёр с какими то непонятными пунктами, типа что вы изучали в институте, какие самые интересные ваши проекты, впринципе это и можно придумать, но там ещё и покажите портфолио, а с этим трудно
Есть класс. Есть наследник этого класса. Хочу в базовом классе создать поле-указатель на наследника, но компилятор ругается, потому что наследник не определен.
>>2224634 >>2224633 Нужно именно на наследника. Я не понимаю че ему не нравится. Создай указатель размером 8 байт, да потом уже смотри по определению че с ним делать.
Что за ебанутый язык, я хуею! Как блять по нормальному сука сделать простейшую задачу, считать два числа из аргументов консоли? Уже как только не перепробовал. Ни первый, ни второй вариант нихера не работают
int main(int argc, char argv[]) { if (argc > 1) { std::istringstream iss(argv[1]); int a = 0, b = 0; iss >> a >> b; std::cout << a + b; } return 0; } int main(int argc, char argv[]) { std::cout << std::stoi(argv[1]) + std::stoi(argv[2]); return 0; }
>>2224729 В швятой штудии 22 поигрался немножко. Ну, работает, все охуенно.
Жду, пока решарпер под них допилят (Обещают в середине 22) и на работу все проекты перевезу на 22 студию, и будем новый код писать с модулями (и мб старый тоже, если будут большие бусты по времени компиляции).
Анон, помоги с архитектурой Предположим, есть яблоки, все нумерованы. Я яблоки всячески сортирую, что-то выкидываю, распихиваю в разные ведра, в шестом ведре яблоки помыл. А потом приходит Вася, ищет и откусывает яблоко четыре.
Как это всё лучше хранить? Инб4 копипастой. Я использовал карту в глобальном хранилище, а корзины уже хранили std::const_reference<Apple>, средне удобно, да ещё бесит пиздец в лямбдах из карты .second аргумент всегда брать, плохо зделоли. Сейчас использую std::list и его замечательное свойство splice, которым удобнейше сортировать и разбрасывать яблоки по корзинам. Зато поиск так себе, чтобы взять яблоко 6, придется все корзины перерыть.
Может быть стоит использовать shared_ptr? У меня с ним опыта мало, плохо чувствую его работу.
>>2224401 >В Яндексе дохера вакансий, там же должны разные ХР сидеть, то есть есть смысл в несколько подавать?
В яшке вакансий не так уж и много для джунов-стажеров, попробуй податься к ним на стажку, а дальше у тебя будет несколько алгоинтервью, после чего интервью с командами, может и возьмут куда.
Лаба горит. Помогите, пожалуйста. Вот задание. Создать два класса: матрица (int ) и координаты (две пары чисел). Описать функцию, которая меняет местами два элемента, положение которых задается координатами во втором классе, как дружественную. Предусмотреть проверку соответствия координат и размерности матрицы. Вот тут мои наработки: https://pastebin.com/BiaczWFK