Аноны, подскажите, а сколько максимум оттенков цветов можно использовать в карте высот при 24 битном RGB? "В карте высот" означает, что цвета должны переходить друг в друга плавно, без рывков. Сколько максимум может быть таких переходов, которые может выводить обычный 24-битный моник? В градациях серого максимум можно выжать 256 оттенков. А в RGB?
Подскажите, как реализовать алгоритм обхода всего лабиринта, есть список вершин и смежных с ними: std::vector<int> list[V]; Надо обойти все вершины и записать в вектор путь, при этом чтобы не ходить кругами и это не работало оче долго на 200-300 вершинах.
>>1599331 HR дала тесты, все вопросы кроме последнего видимо для отсеивания совсем унтеров, в последнем надо было отрефакторить код и прокомментировать.
В целом код был не сложный. Хорошо, что я когда-то прочитал пару глав параллельного погромирования на С++, иначе я бы сразу слился на слове мьютекс
А вот ожидаемых мною move семантики и перфект форвардинга не было, даже ни одной rvalue ссылки. Да и вообще много чего не было, что я бы засунул, если бы делал тесты для джунов
>>1599345 >Все рассказывай Уважаемый сотрудник компании *, перелогиньтесь пожалуйста
>>1599367 Ну а на личном что? Кому интересны эти тесты от эйчарш, они для того чтобы совсем ебланов отсеять и нужны. Нормальный собес всегда лично проводят.
>>1599370 Рассказывал о проектах всяких, обсуждали последнюю задачу из теста, где я проебался, что не учел. Вынес следующее, пользоваться git'ом - значит не только уметь писать пуш и коммит (ну и мердж). В прикладных технологиях по факту я не разбираюсь, так как не имел целью до этого изучать что-то кроме чистых языков и алгоритмов с матаном. Считаю их тем, что можно наверстать за пару недель, но вот не наверстал. привет qt Пойду учить техналогии крч, а так хотелось сикп дочитать
Почему итераторы так не красиво реализованы в C++? Я имею в виду вот такое: std::find(arr.begin(), arr.end(), abc) Почему нельзя просто без begin и end вот так бы: find(arr, abc), как в других языках? Ведь std::vector и другие контейнеры и так знают где их конец. Нет ли такого шаблона?
>>1599573 Потому что с итераторами в таком виде можно творить много разной интересной хуйни. Для работы в том виде как ты хочешь в 20 стандарте добавили рейнджи, если не завезли в твой компилятор можешь пользовать ranges-v3 на которой стандарт и основан.
>>1598557 Если ты имеешь в виду карту высот в качестве текстуры в игре, по которой генерируется геометрия/ландшафт. То в основном используют однуканальную 16-битовую текстуру. То есть она черно-белая с 65536 отенками, потому что 216
>>1599652 Если всю жизнь много думать и напрягать мозг, поддерживая его в тонусе, как те деды, то вероятность развития деменции намного меньше. А смирившись с рутиной и не развиваясь, и в 30 стать маразматиком недалеко.
Анон, нахуя мне, в 2к20, делить понятия float и double? А где triple, где пониженная точность? Почему не изобретут уже какое-то общий тип и политику точности? Это же совершено не абстрактно. Мне нравится size_t, заебись, придумано сразу для дела, чтобы блядь не придумывать unsigned int, или может unsigned long long будет массивчик твой. Короче сейчас я везде пишу typename T в любой функции/классе, а константы собственно пишу как T(2), или T(M_PI). Не нравится правда то, что шаблонная магия подгружает очень визуальную студию, и работает она хуево.
Алсо, видел конструкции типа auto res = foo.typename func<Type1>(); Нахуя такое страшное явное указание типа, есть от него польза?
>>1599849 >Анон, нахуя мне, в 2к20, делить понятия float и double? Видюхи считают float в несколько раз медленнее. Музыкальной софт считает во флоат, потому что точности не нужны, экономия по памяти в два раза. Вообще #define double float это простой способ проверить алгоритм на численную устойчивость >А где triple, где пониженная точность? На современных видюхах есть float16. Triple нету, а вот класс четверной точности ты можешь найти или написать сам, вооружившись Кнутом >Почему не изобретут уже какое-то общий тип и политику точности Потому что это оверинжиниринг. Или, говоря более простым языком, синдром вахтера, когда любая месящая говно маня воображает из себя существо охуенной важности >Короче сейчас я везде пишу typename T в любой функции/классе И это оверинжиниринг. Покури травы, попустись, и пиши нормальный код
>>1599865 >>1599880 >>1599904 >>1599941 >>1599975 Я прекрасно знаю типы и ассемблер. Я говорю про то, что с++ не си, в нем много абстракций, не супер приветствуются касты разных типов (даже про это Страуструп глворил). А ворох целых типов напрямую отсылает нас к архитектуре проца. А дробные вообще пиздос конечно, какое-то распутье между точностью. Зачем мне это знать на высоком уровне, когда тебе похуй, на старом ГПУ будет просчет, или на цп?
Типы с разрядностью никуда не уйдут, они как минимум связывают нас с максимальной разрядностью числа (хотя это повлияет только в инверсии и сложении с переполнением, битовым операциям похуй на длину), а вот наличие short, long, double в современном языке мне не понятно вообще, это сишный архаизм.
>>1600037 >Зачем мне это знать на высоком уровне Затем, что если писать код с учетом особенностей железа, то он будет выполняться быстрее. А ты со своим "высокоуровневым языком" отправишься круды сосать.
>>1600038 >>1600044 А вы мимо си и асмы, деды. Чеж вы блядь тогда сами память не аллоцируете, если так хочется с байтами поебаться?
Короче, я ожидаю в крестах типы, близкие к алгебре, а не к архитектуре проца. Чтобы был например целый тип, дробный, булев, иррациональный там и проч., и оперировать на этом уровне. И у этих типов, при необходимости, задавать всякие политики по точности, разрядности и всякое такое. Мне кажется, что язык именно туда и развивается, сейчас в современном коде все меньше встретишь явно указанных скалярных типов в пользу шаблонов и всяких авто.
>>1600037 >Зачем мне это знать на высоком уровне, когда тебе похуй, на старом ГПУ будет просчет, или на цп? Нет не похуй, байтоебство один из плюсов C++. Ты походу не тот язык выбрал.
Хочу попробовать линукс. VS Code так же удобен, как студия? Есть какие-то у него подводные? Или может на линуксе лучше использовать какую-то другую IDE?
>>1600115 Меня все устраивает, но я ничего кроме ВС и не пробовал на самом деле. Только DevC++ лет эдак дохуя назад трогал, когда вообще только узнал про программирование.
>>1600101 Тут вообще всё просто int x = 4051753 int y = 6111579 int n = 9173503 int res = 111111; cout << x << '^' << y << "mod(" << n << ") = " << res;
>>1600132 Я уже совмещал, на выходе всё равно хуйня получалась >>1600128 Спасибо, изучу >>1600127 Да, стоило бы и перечитать, просто был занят расширенным алгоритмом Евклида для поиска секретного ключа, спасибо
Вчера был на своем первом собесе на джуна(которого я не ожидал, думал это будет просто пред собес с хр по скайпу, а там в конфе был тимлид), разволновался и наговорил хуйни, даже названия некоторых операторов забыл, ещё сказал, что std::map это хеш таблица, вообщем завалил 100% этот собес, мне даже отписывать не стали, что не берут. Надеюсь хоть в черный список хр-ов за тупость не кинут.
Сап, двощ, студент 3-го курса. Летом будет практика, нужно искать место. Начал мониторить вакансии джунов, отсылать резюме, но меня везде динамят, иногда даже не отвечая. Только одна компания выслала тестовое задание, от которого я ахуел. Это было совсем не то, чего я ожидал,после рассказов про написание стека на собеседовании и т. д. Кое как сделал, скинул. Через два дня приходил ответ, что я не реализовал корректный ввод данных просто запутался в одном месте, думал, что данные даны сразу и их вводить не нужно и то, что у меня слабый исходный код. Как вообще можно стать джуном студенту? Где искать места, если почти все сразу шлют отказ даже без ТЗ или собеседования?
>>1600538 >>1600536 Блин, не особо хочется такую инфу говорить,уж извините. Тестовое задание - есть тарифы стоимостей, есть список действий, нужно минимизировать стоимость. Решилне до конца, небольшие ошибки были, но это из-за того, что не разобрался с предметной областью задачи, а спрашивать у HR по эмейлу не хотелось с помощью динамического программирования, но получил бан за то, что не предусмотрел ввод тарифов с файла (а у тарифа (sic!) словесное описание блжад).
>>1600037 > Я прекрасно знаю типы и ассемблер Ну так ты современные наборы инструкций видел вообще? Зачем тогда тупые вопросы задаешь? Дабл и флоат это разные типы использующие разные наборы инструкций и регистры, а ты их объединить собрался.
>>1600551 > Тестовое задание - есть тарифы стоимостей, есть список действий, нужно минимизировать стоимость. Звучит не сложно. > Блин, не особо хочется такую инфу говорить,уж извините. Тебя ведь не взяли по какой-то надуманной причине, поделись хоть названием конторы, чтобы Минский анон я не тратил своё время в будущем
>>1600572 Тарифы могут быть вообще не похожими друг на друга А-ля "100р за сигну" на уровне "300к/ннск за вдох", не понимаю, про какой ввод тарифов может идти речь
>>1600588 Задание было понятно, предметная область не до конца понял Само решение работает Хотя спорить не буду, видимо, не справился с написанием кода
ПАЦАНЫ, Я КОРОЧЕ ШЕЛ СЕГОДНЯ ПО ОФИСУ И УВИДЕЛ ПРОГЕРА В МАЙКЕ "С# IS THE FUTURE", НУ Я ПОДСКОЧИЛ К ЕГО КОМПУ И РЕЗКО НАПИСАЛ "std::cout << std::endl;" И ПОЯСНИЛ ЭТО ОДНОСТРОЧНЫМ КОММЕНТОМ, ПОТОМУ ЧТО Я УГОРЕЛ ПО ПЛЮСАМ, ПАЦАНЫ ДУХ ООП ЖИВЕТ ТОЛЬКО В МНОЖЕСТВЕННОМ НАСЛЕДОВАНИИ, ГДЕ В ПЕРЕГРУЗКЕ ОПЕРАТОРОВ НА ОДИН ПАРАМЕТР МЕНЬШЕ, ГДЕ ЕБАШАТСЯ ПО СТАТИЧЕСКИМ МАССИВАМ, ГДЕ ПАЦАНЫ ЖИВУТ УКАЗАТЕЛЯМИ, ЧИСЛЕННЫМИ ЗНАЧЕНИЯМИ В УСЛОВИЯХ И ЕБУТ СБОРЩИКИ МУСОРА В РОТ! ТОЛЬКО С++, ТОЛЬКО ХАРДКОР!!! СТРАУСТРУП ХАРДКОР С++!!! пацаны ебашьте дельфикодеров, шарперов, пехапешников, жаверов, угорайте на компиляции в машинный код, любите Страуструпа, плюсокодеров и IDE! ГОВОРИТЕ ОТКРЫТО И СМЕЛО ПРЯМО В ЛИЦО! С++!
>>1600506 Я тоже недавно искал место для практики, наткнулся на контору которая якобы набирает на стажировку. Отписал им, скинули тестовое, решил в тот же день, отправил, сказали что отправили на проверку и тупо неделя игнора. Потом я им повторно отписал мол, ну как там мое задание? Мне ответили, что чето ваш файл в письме не открывается))0. Закинул на файлообменник, отправил, сказали что через 3 дня ответят. В итоге через 2 недели написали, что не подхожу(без объяснений почему). Хотя я там все по красоте сделал, с auto, лямбдами, юзая только std.
>>1600627 Лол, какие тогда требования к джуну в 2020 году на C++? Я не понимаю, даже брат с Польши, овердохуя успешный программист, сказал, что они ебанулись такое студентам давать Как, кстати, закончились поиски?
>>1600607 спасибо. Пробежался по фичам с++20 - мне нравится, куда развивается язык, найс, идут разговоры об обобщенных типах. В c++20 поднялся вопрос о том, нахуй unsigned int в доп коде, на "радость" дедам-байтоебам. Почему бы не в обратном число хранить, ммм?
>>1600683 >Вывод массива Ну давай, расскажи как его надо было правильно выводить >Чтение файла построчно Это не олимпиадная задача и пара миллисекунд тут некритичны. Я предпочел простоту и краткость кода перед производительностью.
>>1600689 Выдает что можно использовать только в нестатической функции-члена. Вообще в .h выглядит так getComplex(float &re, float &im); взято из примера препода, по этому лучше так и делать А как реализовать в .cpp? Если можно загрузи на pastebin решение.
>>1600697 Тип в примере препода не указан у этого метода, просто getComplex(float &re, float &im); Вот это тоже не понял почему так, толи опечатка и там какой нить float должен стоять, либо еще что то. При том студия выдает ошибку, что без типа.
>>1600741 Ещё нельзя возвращать ссылку на объект, чей срок жизни ограничен функцией. Объекту пиздарики, а ссылка останется. И ещё есть типа исключение, когда ссылка инициализируется временным объектом (результатом функции). Тогда срок жизни временного объекта продлевается до срока жизни ссылки.
>>1600745 Этот термин из других языков пришёл. Но ссылки в плюсах отличаются от ссылок в других языках тем, что после инициализации заставить ссылку указывать на другой объект нельзя. Как константный указатель.
>>1600751 Вроде причиной введения стало то, что при перегрузке операторов неудобно было бы передавать адреса переменных, каждый раз явно писать типа &a = &b + &c.
>>1600707 > Ну давай, расскажи как его надо было правильно выводить std::istream_iterator + std::copy > Это не олимпиадная задача и пара миллисекунд тут некритичны. Я предпочел простоту и краткость кода перед производительностью. Это не краткий код. Краткий код - std::ifstream::read. У тебя цикл с постоянными реаллокациями строки, хотя ты мог считать сразу весь файл одним обращением к диску в строку, так как размер через std:: filesystem::file_size тебе заранее известен.
Да и сплит строки можно было бы сделать проще через std::stringstream + способ из первого пункта.
>>1600712 Действительно. Парень знает про 17 стандарт откуда-то, а пишет код уровня laba03.cpp. Может, лучше ему сразу указать на ошибку, а не "сыночка, ты у меня самый красивый и умный, не слушай их"?
Я сам писал такой же хуевый код, когда делал диплом, потому что никаких книжек не читал и не интересовался.
>>1600697 >>1600711 Я не пойму, чего ты хочешь сделать, и зачем вообще такой странный метод. const Complex &getComplex(float re, float im) { return *this; }
>>1600824 Я даже не представляю, проебланил в свое время, теперь пытаюсь нагнать, в примере у нее так написано. getComplex(float &re, float &im); Думаю это гетер на весь complex.
>>1600760 >Да и сплит строки можно было бы сделать проще через std::stringstream + способ из первого пункта. Не понял чем тебе не понравился сплит. Он работает в 1 проход по строке без каких либо аллокаций. Как его еще можно улучшить?
>std::istream_iterator + std::copy Эта хуйня генерирует точно такой же код если что. Так что тут уже ты обосрался со своим лишним переусложнением кода. Верхняя часть скрина это std::copy(A.begin(), A.end(), std::ostream_iterator<int>(std::cout, " ")); нижняя через цикл. Как видно и то и то генерирует по 2 вызова вывода.
>>1600864 Цикл поймет любой чел который даже не знает С++, а эту залупу с istream_iterator нет. Я лично до твоего поста про него не знал и пришлось гуглить что и как он делает .
>>1600868 Блядь, ну ты и речи задвигаешь. Зачем тогда ты 17 стандарт используешь, пиши на C++99, а то не все поймут, придется читать документацию к языку, охуеть.
>>1600703 >>1600728 Он, наверное, про signed. Обычно отрицательные числа хранятся как -X = 2N-X (-1 = 1111 1111b). Но есть и другие способы, например со знаком. (-1 = 1000 0001b, где первая 1 означает минус), дает некоторые плюшки, такие как -X = X^10000000b
>>1600914 Можно тогда лист заюзать и не будет реаллокаций. А про чтение файла, да можно хуево и не оптимизированно (зато просто и понятно), но нахуя потеть над этим в тестовом задании?
>>1600915 Еще тогда вопросик. В .h у нас описание методов, в .cpp реализация. А что в данном случае делать? Т.е. вот берем из примера сеттер Re. В .h: float setRe(float re); в .cpp реализуем это метод: void Complex::setRe(float re) { Re = re; } А как тут разделить? Или если не делиться, то куда его запихнуть? Ну и последнее, зачем const?
>>1600926 Ну хуй знает, что проще, в 3 строки через getline или идти гуглить как же мне получить размер файла когда у fstream ПОЧЕМУТО такого метода нет. В итоге видишь, что для этого надо заюзать tellg, пиздец это что такое? Сказать букву г или что? Никогда не понимал этих уебков из стандарта, почему я должен вот такую хуйню писать вместо того чтобы просто написать file.ReadAsString() как в любом другом языке? Так же и со сплитом, где сука метод Split в классе string? Почему я должен сам его реализовывать когда в других языках это из коробки?
>>1600926 Мы вам перезвоним. read может вернуть не всю строку, а выставить бит фейла, так что тебе придется крутить цикл или молиться что файл не изменили в промежутке как ты узнавал его размер, а кстати чем? filesystem у нас только c++17, ты уверен что его разрешат тащить?
>>1600931 Все очень просто. В .h return_type func_name(parameters) В .cpp return_type ClassName::func_name(parameters) Ты даже в этом посте void с float напутал. const гарантирует что геттер не поменяет ничего при вызове.
>>1600952 Прототип в .h должен показывать, как использовать функцию, даже если ты не знаешь, что там внутри .cpp. Показывать, какие аргументы ей подавать, и что она выдаст в ответ.
>>1600926 >резервнуть строку нужного размера, В тз размер строки неограничен, программа должна работать с терабайтными инпутами, на этом и ты и он проебались. мимо
>>1600953 >В .h return_type func_name(parameters) Т.е. это опечатка, что в примере у меня просто getComplex(), без типа? >>1600954 Так я и не понимаю, что должен вернуть это геттер. т.е. если делать самому Раз вы понимаете, м.б. просто напишите .h: код
.cpp: код
Потому что как тут сделать >В .h return_type func_name(parameters) В .cpp return_type ClassName::func_name(parameters) т.е. даже как тип возращаемых значения, а уж тем более реализацию в .cpp не понимаю/не осилю.
В том же файле например в .cpp: void Complex:: setComplex(float re, float im) { ///реализация }
Т.е. в .h д.б: void getComplex(float re, float im) Но тогда как сделать реализацию? Выручайте анонасы, для вам раз плюнуть, а меня спасете.
>>1600972 >В том же файле например в .cpp: >void Complex:: setComplex(float re, float im) Не понятно почему в том же файле в .h: void getComplex(float &re, float &im) re и im уже по ссылкам, они же должны совпадать вроде.
>>1600506 >>1600506 >Как вообще можно стать джуном студенту? Вкатился пол года назад на джуна по плюсам. тоже 3 курса. Развивай гидхаб, делай проекты. Я например, делал проекты по конкретным тематикам: патерны ООП, OpenGL, QT, DX, базовые нейронки, свои велосипеды дефолтных конструкций языка по типу своей стрингии т.д. Проектами закрепляешь теорию и создаешь себе витрину, главное не в тупую переписывать проекты из интернета, а быть способным пояснить за каждую свою строчку в коде. Думаю, когда на собесе показывал свои проекты с гидхаба, много вопросов сразу отпало.
Вопросы и тестовые могут быть от хэллоу ворда до хай лвл инженерии, тут никогда не угадать. на первом собесе был дроч с указателями ссылками и массивам указателей на char, расписывал форвард лист на листочке, деревья, решение задачи с использованием комбинаций из контейнеров STL'a, устройство вектора, справился ~80%, через час так уже заеблся что сам начал запутываться в банальных вещах не перезвонили офк.
Пару раз решал тестовое. Одно из самых ебанутых было задание написать API для построения в 3х-мерном пространстве различных 3D фигур и кривых, пришлось полистать пару дней учебник по начертательной геометрии. После того как я отправил, пару недель вообще никто не отвечал, не помню уже, но вроде сам фидбек просил, ответ был дефолтный по типу "Качества кода ниже ожидаемого, реализация не удовлетворяет требованием в задании", по факту - пиздеж полнейший, каждый пункт был выполнен, даже не обязательные, фигуры били геометрически правильные, я все проверял перед отправкой. Разве что я не стал замарачиваться с графической визуализации 3д, так как в задании не было указано, и у одной из кривых не смог посчитать производную вдоль кривой, но глобально это хуйня.
Ну и самый ебанутый вопрос, точно не помню, на интервью вроде было еще замороченей написано, что то типу: какой будет аутпут arr: char arr[] = {'1','2','3','4','5','6','7','8','9'}; int ptr = (int )arr+1; ptr[0]='0';
>>1601019 >>1601023 ну да, привидения к указателю на инт и смещение на +1, сместит на 4 байта, и соответственно изменит 4 байта информации, ну или как то так.
>>1601001 >>1600506 - кун Развиваю гитхаб как-могу. Даже есть пару интересный проектов (автоматический бекапер с пересылкой файлов на сервер на Qt, TCP, многопоточность, etc и облачный проигрыватель под ведроид), ну и просто решение интересных задач. С тех пор, как начал откликаться на вакансии, один раз какой-то репозиторий посмотрели и все, лол Чаще всего просто получаю отказы без объяснений, ну или просто отклики висят, а на них не отвечают
>>1601030 > один раз какой-то репозиторий посмотрели и все, лол Там отклики hr'ы чекают, им твой гидхаб не сильно интересен. Светить гидхабом стоит только на очных сабесах, когда есть типы шарющие, что у тебя там вообще происходит на экране.
>>1600977 В сеттер передают по значению. И они присваиваются полям. А в геттер передают ссылки на переменные. Поэтому он сам может ничего не возврашать. Его можно использовать так float r, i; someComplex.getComplex(&r, &i) Соответственно, ты можешь сделать void getComplex(Complex &c) { ... } Содержимое догадаешься как сделать? Чтобы можно было использовать Complex c; someComplex..getComplex(&c)
>>1601039 ну и так ответил, только не додумался что изменится больше 1 значения. Чел сказал, что этот метод широко используется для оптимизаций в коде гугла, лол конечно
>>1600945 >у fstream ПОЧЕМУТО такого метода нет А почему он должен быть? Какой размер у /dev/zero? Всю жизнь размер файла доставали fstat, но недавно завезли std::filesystem::file_size
>>1601055 Потому что во всех остальных языках высокого уровня такие методы есть. В том же c# хочешь прочитать файл как строку? Пожалуйста File.ReadAllText. Хочешь как массив байтов. Хорошо, вот тебе File.ReadAllBytes. И только в плюсах для этого надо юзать кучу функций с неинформативными названиями.
>>1601065 Что мешало добавить это в качестве метода fstream, и если вызвать его на на невалидном файле(типо твоего дев/Зиро) просто кидать исключение? Почему он вообще в абсолютно другом хедере?
>>1601149 Причем тут rw режим? read просто не обязан возвращать столько символов, столько ты запросил. Нормальную обработку ошибок пилить там целый экран уйдет.
>>1601065 >>1600914 Если есть .csv файл (Размер не указан, может быть большим), а мне нужно его прочитать и спарсить построчно, ifstream + getfile - это адекватно или лучше как-то иначе?
>>1598511 (OP) Анон, свеженькая обновленная студия очень хуево парсит синтаксис некоторых файлов, где шаблонные классы и вяские вложенные типы. Периодически вылетает ошибка какого-то сервиса VS, что он завршился с ошибкой. Директорию .vs удалял.
Щто делать, может как-то более явно расписывать шаблоны?
>>1601351 Потому что в 2020 сука году до сих пор нет никакого стандартного способа пробежаться по метаданным класса. Т.е. любая сериализация вынуждает пилить костыли из макросов.
>>1598511 (OP) Анончики, как вы думаете, оправданно ли C++ такой overly complicated, позволяет ли это с минимальными затратами использовать блага высоких абстракциий и ООП, или же это просто построенная на легаси говне залупа, и тот же раст проигрывает только по причине того, что бизнес на нем исторически так крепко не завязан?
>>1601369 Ну да, если это структура с парой числовых полей то можно и так сделать, а если это сложный класс с кучей полей разных типов и динамической аллокацией?
>>1601355 Как можно заметить, правильно писать справа, потому что читается справа налево. int const const const - конст. указатель на конст. указатель на конст. инт. А здесь получается что все справа, а самый умный слева написал. const int const const
>>1601386 Чет призадумался, а получается, что реально, если все справа писать, то будет логично читаться, без исключений, то есть сначала то к чему, а потом что
>>1601284 Чтобы не путаться с const, мне помогало делить в голове выражение на две половины -- всё до звёздочки, и всё после. "До" относится к типу, на который указываем, а "после" относится к самому указателю. Ну а дальше уже без разницы, "const int" там, или "int const", и куда звёздочка прижата -- к типу, или к переменной, всё это пофиг.
>>1601362 А что, rust не overly complicated что ли? Имхо это какое-то фундаментальное свойство вселенной, начиная с какого-то количества фишек все равно наступает комбинаторный взрыв сочетаний фич, хоть на лиспе пиши, хоть на плюсах.
void VSSetConstantBuffers( UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers ); А вот этот параметр как понять? Указатель на константный указатель на ID3D11Buffer? То есть аргумент должен быть адрес константого указателя.
>>1601584 make_ тебе сконструирует сразу умный указатель с нужным содержимым, а если делать auto sp = std::shared_pointer<int>{new int{42}}, то сначала выделится память под инт, а потом переместится в участок памяти, который выделится под умный указатель, вроде так.
>>1600682 Геттер - это метод, возвращающий поле класса, как правило, без аргументов, например getImage() или getReal() в твоём случае. То, что ты пытаешься сделать скорее ближе к конструктору, но он возвращать ничего не должен.
>>1601874 Сколько раз задавал этот вопрос итт, никто не отвечает. Я уже блять начинаю думать, что шутки про джуна плюсовка это нихуя не шутки и их реально не существует.
>>1601288 > Он же не бесплатный? Ну а ты ведь не фантики зарабатываешь? >>1601340 > Эта хуйня тоже хуево парсит, сложные макросы не раскрывает, тогда как интелисенс норм работает. Приведи пример. У меня пока что опыт был в точности наоборот.
>>1601901 ну так у разных контор разные понимания о джуне.
Так то спектр знаний простой, в неопределенном порядке: Стандартные контейнеры + итераторы. Понимание реаллокций, инвалидаций итераторов, всяких там сложностей операций, знание категорий итераторов.
Понимание лоулевел пердолинга памяти, арифметика указателей, касты между типами указателями, выравнивание, и прочее.
Классы как таковые - перегрузки операторов, конструкторы\деструкторы\хуюторы. Что такое this. Public\Private.
3 кита ООП, перекрытие виртуальных функций, зачем ваще нужно. Зачем нужна инкапсуляция. Наследование без виртуальных функций, порядок вызова конструкторов\деструкторов. Почему в конструкторе надо внимательно думать перед вызовом виртуального метода. Что такое Protected.
RAII - чтобы от зубов отлетало понимание, а не как у шизиков, которые считают его не нужным.
Эксепшены - как кидать, как ловить, кто кидает в стандартной библиотеке, почему их никто не использует, как их использовать. Нюансы кидания эксепшенов из конструкторов\деструкторов\мув конструкторов(операторов).
Как происходит компиляция и линковка, что такое #include, что такое ODR, дефинишен\декларейшен. Почему статик переменные в хедере это совсем не то, чего ожидаешь. Extern "C"
static_cast\dynamic_cast\reinterpet_cast\const_cast\сишный каст, который всё сразу.
>>1601929 UNRESOLVED REFERENCE значит не находит функцию/глобальную переменную и это легко фиксится. Если это изза либы то достаточно в студии ссылку на либу добавить или pragma comment( lib, "libname.lib" ) и все работает само. Так зачем мне знать как оно там работает?
>>1601925 А в идеале нужно знать, что это такое и когда применять? Ну то есть я могу за 3-4 предложения объяснить каждый из пунктов, но целую лекцию не проведу
>>1601913 У меня в 600к мухосрани на весь город 2 вакансии по плюсам, на которых МАКСИМУМ для архитектора/тех.руководителя 70-120к. При том что там пиздец работенка, анализ изображений, анализ видео, короче софт для камер.
>>1601921 Как по мне это все бред и формальности. Джун должен знать: 1. Английский 2. Уметь читать документацию 3. Уметь гуглить 4. Базу в виде пары книжек по С/C++ 5. Базу по архитектуре ОС
>>1601962 >Базу по архитектуре ОС Есть рекомендации, как подтянуть вот это вот? Навернуть Танненбаума и поковырять немного винапи в качестве практики достаточно?
>>1601965 Вот крепкая база под винду. Windows via C/C++ Windows 10 System Programming Windows Internals Курс на степике по осям Любой курс на ютубе по осям
>>1601921 >Эксепшены >почему их никто не использует Кстати, а почему? Во всех книгах по крестам пишут, что эксепшены охуенно гибкие, мощные и удобные, не то что сишные возвращаемые коды ошибок.
>>1602025 Если упрощенно, glvalue это то, что слева, чему можно присвоить, переменная. prvalue это то, что справа, некий объект или значение. xvalue это сорт оф временный объект. rvalue и lvalue это устаревшая хуйня.
Почему в этой программе https://ideone.com/b7pssu при попытке заменить Shape::createShape(T); на Shape a; и a.createShape(T); компилятор выдаёт ошибку? В обратном случае то же самое. Я так и не нашёл нормального объяснения того, какую конкретно роль выполняет ::, и что может быть эквивалентом :: в моём случает.
>>1602269 Потому что Shape::createShape() статический метод. Он не привязан к конкретному экземпляру класса, а один общий на всех. >>1602282 Чё там непонятного? Там же написано. Это реализация паттерна проектирования "Фабричный метод"
>>1602006 Это разве ещё актуально? Медленно оно, наверное, только в каком-нибудь микроконтроллере, но там и new сделать лишний раз медленно. А для многопоточки добавили возможность сохранять исключения, и перебрасывать в другой поток.
>>1602290 >Потому что Shape::createShape() статический метод Его все равно можно вызывать для объектов. >>1602269 У тебя абстрактный класс Shape (есть pure virtual функция), его нельзя инстанциировать.
>>1601991 Очень много кода течет как говно, потому-что RAII не используют. Где не используют RAII - эксепшены противопоказаны. Это, собстно, причина почему гугл их не использует.
Эксепшены дают скрытый контрол флоу, что часто не ясно вообще. По хорошему нужны аннотации, что функция кидает\не кидает. Они есть (ноэксепт) но этим никто не пользуется кроме девелоперов СТЛ\Буста.
Ну и люди часто не понимают, что они делают в коде вместо обработки ошибок, recoverable ошибка или нет, много нюансов короче.
Я для своих новых проектов вообще везде использую эксепшены. На работе пишу без них. Вот как-то так
>>1602638 >>1602658 Кстати почему под RAII нет никакого блока типо using? Из-за чего приходится делать костыль с if и перегрузкой оператора bool, при чем нужно ОБЯЗАТЕЛЬНО в этом блоке присвоить этот RAII какой-нибудь переменной иначе этот RAII сразу же уничтожается.
>>1602760 >Пиздец, даже такое есть С разморозкой! Это хорошо работает с structured bulding кстати, типа: if (auto [success, x, y] = do_something(); success) { / work with x & y/ }
>>1602860 Почему там так мало тяночек и чёрнокожих? Почему того чёрнокожего рядомсидящая белая сука не держит за ручку и не прижимается к нему?! Куда смотрел фотограф?!!!
Почему компилятор доёбывается со своим "invalid conversion from ‘unsigned char’ to ‘char’"? Можно ли в такой ситуации обойтись без преобразований типов, что-бы компилятор сам додумывался преобразовывать?
>>1603000 знаю как минимум 4 тни могущих в плюсы. 3 из них шарят в MIPS'овом ассемблере и разрабатывали под embedded. 4-я знает все сорта асма, использующиеся на винде, тк читает корки её ядра чаще, чем ты просто читаешь хоть что-нибудь так то там всего два сорта, но из-за солянки в calling convention, без веществ это не прочитаешь
так что выковыряй подзалупный творожок, помойся, постригись и выйди из комнаты уже наконец. может увидишь, что твой манямир и реальный мир значительно различаются
>>1603424 >манямир и реальный мир значительно различаются Дружок, посмотри на эту фотографию. Видишь ли ты тут девушку, или женщину? Нет? Посмотри внимательнее, приглядись. Да, вот так, молодец, ну что, увидел? Увидел? А теперь внимательно её рассмотри. Можешь ли ты представить себе, как какой-то мужчина плачет и набирает дрожащими пальцами телефон этой бляди, чтобы рассказать о своих чувствах к ней? Веет ли от нее молодостью, романтизмом, свежа ли она и красива?
>>1603424 > 4-я знает все сорта асма, использующиеся на винде, тк читает корки её ядра чаще, чем ты просто читаешь хоть что-нибудь Вот здесь ты обосрался.
>>1603428 Что блять? На фото комитет, который разрабатывает стандарт C++. У них по три раза в год такие встречи. Как по-твоему блять обсуждать новые фичи, проводить голосования, подводить итоги? В конфе в дискорде?
Программач, кто-нибудь работал с Qml? Как можно улучшить качество картинок, если сжимать их через Item.scale? По дефолту они получаются пиздецового качества
Привет, анон. Дело такое, я учусь не на программиста, но изучаю с++. Мне нужно сделать лабу, и код мб я бы и написал, но дело в том что я не понимаю что от меня хотят, не могли бы объяснить в чём суть? Задание : Найти максимальный элемент в массиве ai (i=1, , n), используя соотношение (деления пополам) max(a1,, an) = max[max(a1,, an/2), max(an/2+1, , an)]. Обычная и рекурсивная функция. Мне типо надо постоянно делить массив? Или просто разбить его на 2 части и в каждой найти мксимальное?
Программач, мне нужно, чтобы при вводе текста в консоли при вводе пустой строке или просто нажатия энтера не создавалась новая строка.
Иными словами, чтобы вместо пика у меня в одной строке была только >>, куда пользователь что-то вводит, а если вводит что-то не то, то строка просто очищается и ввод продолжается в эту строку.
Как такое можно сделать? Я ещё совсем зелёный, не бейте.
>>1604338 conio.h - перехватывать нажатие энтера, не выводя на экран Чтобы очистить строку, можно напечатать символ возврата каретки \r, вывести несколько пробелов и опять \r.
>>1604247 max( max (max([1, 6]), max([8])), max( max([2, 0]), max([-1])) ) А зачем эта строчка? Я не могу просто из 3 максимальное найти? Или это обязательное условие?
>>1604374 А нах усложнять? Тебе нах не надо ничего оптимизировать, тебе нужно реализовать алгоритм в чистом виде, то есть он тупой. У него одно действие - рекурсивное деление пополам и когда зайдет оч глубоко и у него останется одно (или два, как хочешь) числа он просто их возвращает и рекурсия схлопывается
В 25 лет я грустил сидя в своем кабинете. Я только что пришел из цеха и руки мои были по локоть в блядском масле и техническом говне. Не смотря на то, что работаю инженером, когда что-угодно перестает работать нужно идти и разъебываться. Тогда меня че-то переклинило и я решил, что хватит уже заниматься этой хуйней. Я начал учить(повторять) математику и физику с 7ого класса. После изучения школьной программы я подумал, а почему бы не поступить в универ? Я поглядывал на айти курсы, но они все на тот момент стоили 120к++ (сейчас не знаю), а заочный универчик стоит че-то в районе 250к за 4 года(но деньги из меня он сосет порционно, а не все сразу). Плюс может быть бумажку дадут, а может и на работу пристроят. Кароче, сейчас я успешная второкурсота, помимо этого я зашарил, что на курсере можно просить мат. помощь и на халяву проходить курсы. Прошел пару с++ курсов.
Сейчас я чувствую, что за полтора года меня все эти учебные задания аля : “ Создайте шаблонный класс с публичным методом пизда и приватным методом хуй” начинают подзаебывать. Подскажи анонче, чего бы такого запилить на крестах красивого и не сильно сложного. Проблема в том, что я вообще не хуя не понимаю, что писать на крестах. Джавапетухи делают приложения, питонодети вобще всем чем угодно занимаются, Сишарперы игрули делают, 1сники бухам кнопки рисуют. А на крестах то че сделать, за что зацепиться?)
В универчике лабы на с/c++ говно, но я сюда и не за языком пришел, а за мат.частью.
Думаю запилить гуи считающий интегралы, не сильно интересно, но хоть что-то уже осязаемое.
>>1604399 На плюсах можно сделать все. Игру, игровой движок. Парсер сайтов. Сами сайты через емскриптен. Какую нибудь системную утилиту, драйвер, кликалку мышью например.
прет сяшники Как эффективно реализовать листенер (без библиотек)? Цикл, который срабатывает n наносекунд - единственный способ? Нужно не в качестве паттерна программирования.
>>1604855 Поподробнее. Название функции? Думаешь, ОС будет детектировать это, как-то курируя изменения в памяти? В идеале так выглядит: я даю винапи указатель на адрес и на мой каллбек (да, не линуксы), он его зовёт при наличии изменений.
>>1604844 >Как эффективно реализовать листенер (без библиотек)? Цикл, который срабатывает n наносекунд - единственный способ? На прерывание повесить, иди в асм тред.
По софтварным прерываниям инфа так не гуглится. Знаю эту фичу ещё по дурачеству в ollydbg, но как самому сделать в обычном main.c (пусть даже инлайном ассемблера) - хз.
>>1604844 Есть еще один вариант. Если ты знаешь какая функция пишет в память, ты можешь хукнуть эту функцию, вставив трамплин, грубо говоря заменить часть инструкций в программе на прыжок в твою функцию, а в ней анализировать.
Пока что использую бесконечный цикл с asm("nop;nop;nop;nop;nop;nop;... ) в потоке с приоритетом реального времени, где проверяю счётчик тактов и мне это всё очень не нравится.
>>1604844 >>1604868 Ставишь VEH обработчик и меняешь защиту памяти на PAGE_READONLY допустим, при обращении на запись в нее вылетит исключение которое ловит твой обработчик. И да, это будет работать на всю страницу памяти, а не на одну переменную так что это тоже надо учитывать.
>>1604880 насколько я помню из когда то прочитаного windows internals в винде есть таки некие расширения реального времени, возможно придется написать драйвер, в котором и будет происходить настолько быстрая обработка по таймеру без запаздывания но я не знаю точно, просто смутные воспоминания
>>1605167 Ну хз, мы обычно ставим интервалзеровский RTX, он крутится паралельно винде на своих процессорных ядрах. На нем риал тайм, на винде интерфейс.
>>1605170 double integral(double a, double b, int n){ double step = (b - a) / n; // width of each small rectangle double area = 0.0; // signed area for (int i = 0; i < n; i ++) { area += exp(cos(a + (i + 0.5) step)) step; // sum up each small rectangle } return area; }
>>1605065 Тогда уж guard page, именно так стэк и работает, кстати. Лучшим способом будет установка железячного бряка через отладочный регистр, контроля больше, нет проблем синхронизации.
Искал инфу по одному конкретному вопросу и наткнулся на это. Стоит проходить для закрепления после Майерса и т.д.? Всегда плевался в сторону подобного, но тут вроде содержание действительно неплохое.
>>1605397 >>1605482 Например, перехват NtCreateThread/Ex, устанавливаешь флаг suspended, выполняешь системный вызов, далее устанавливаешь контекст и возобновляешь поток. Или другой способ, на мой взгляд более правильный в теории, сам я не пробовал так делать, перехват LdrInitializeThunk, вызывается в контексте созданного потока, 1 или 2 аргументом будет указатель на структуру CONTEXT, редачишь отладочные регистры и передаешь управление загрузчику, который установит начальный контекст потока сразу с твоими брекпоинтами.
Короче анон. Я тут решился вкотиться в погроммирование и именно в плюсы, потому что мощный и быстрый, делал сортировки всякие. Но у меня есть проблема: я хз что писать дальше, чтобы как-то прокачать скилл. Блокнот? Свою маленькую игру закодить? Калькулятор? Сажусь за компьютер и ничего не решаюсь сделать. Есть ли какой-то список задач для практики? И чтобы была сложность разная, на подобии: определение разряда числа<калькулятор<вселенная?
Есть конечно идея для приложения: приложение для лиги легенд, которое на стадии пика, будет искать профили игроков в op.gg и выводить их статистику, сыгранные матчи, кого мейнят и тд., ибо самого заёбывает каждый раз ctrlC + ctrlV делать. Подходит ли c++ для этой задачи?
>>1605950 Бля, анон, дико извиняюсь за свою слепоту, я тред не читал даже. Большое спасибо >>1605951 Так нет, я видел уже такие программы, просто они показывают статистику уже когда игра загружается, а не когда ты выбираешь персонажа. Да и как бота распознать нельзя, ибо какой тут бот? Я просто смотрю статистику игроков, тем более беру статистику не с riot games, а с op.gg/
>>1605953 >Да и как бота распознать нельзя, ибо какой тут бот? Ты будешь как то взаимодействовать с игрой, чтобы прочитать с экрана ник игрока. А современные игры это такие вишмастеры, которые палят все процессы запущенные.
>>1606082 Во-первых, это всё равно целый компьютер, который уже обработанное и пережатое видео по юсб 3.0 выплёвывает. Во-вторых, он относительно дешёвый, потому что ограничен возможностями hdmi 2002 года. Представь себе, если бы тебе видеокарту 2002 года пытались продать или даже монитор.
>>1606085 >ограничен возможностями hdmi 2002 года. Представь себе, если бы тебе видеокарту 2002 года пытались продать или даже монитор. Ебанутый? Ебанутый.
>>1606085 >относительно дешёвый Ну и да, это только относительно других карт захвата, потому что столько же стоит и видеокарточка, и монитор, которые, на секундочку, изображение умеют формировать и отображать, а не только принимать в один порт и выплёвывать в другой.
>>1606266 Да, точно, я про это совсем забыл, LdrInitializeThunk как раз и проводит инициализацию потока с оповещением библиотек. Можно тогда без длл, через TLS THREAD_ATTACH эвент обрабатывать.
Сап, двощ. У меня есть многопоточный сервер. Как мне получить адрес сокета в функции хендлере? Т.е. как можно получить SOCKADDR имея в наличии только сам SOCKET?
>>1607174 Я не особо понимаю вопрос У сокета нет никаких функций В многопоточный хендлер я отправляю сокет, sockaddr отправлять не могу по логике программы Из типа socket можно получить адрес сокета?
Хватит ли его для работы на c/c++? (Смогу ли я на нем написать и протестировать свою ось?) Если да, то какой линупс ставить? Если нет, то чего не хватает?
>>1607686 Это просто кто-то уже написал за тебя вращение в несколько строчек, а ты теперь его используешь. Она ж не магически вращается. На си вон тоже написали, назвали питоном, вообще в 6 символов делается.
Как прочитать обычный текстовый файл, который лежит в assets внутри apk файла с помощью sdl2 ? Путь к файлу подходящий, т.к. при других он выбрасывает ошибку, что файл не найден. Но вот size и seek выдает отрицательные, что за магия.
>>1607705 Много, там тоже всякая хрень на тему "околотого" и тоже пишут >>1607706 через std там еще более геморно получать пути к файлам на все случаи жизни, ну и для андроида придется тогда отдельно писать, хотя для win/lin/mac/ios все работает
>>1607700 Странно конечно, но видимо в твоем C-поделии, о котором ты почему то спрашиваешь в c++ треде, не реализовали seek для ассетов в апк. Читай его как обычный поток, пока не закончится.
>>1607760 ну так я бы и сделал обычный байтоебский, только вот length нету а в этом примере они не из apk и assets берут, а из хранилища для приложения
>>1607771 Ты не понял. Там не определяют длину, а просто читают по 1 байту, пока поток не кончится size = SDL_RWread(oldFile, &c, 1, 1); Алсо там читают из assets, а записывают в хранилище.
>>1607826 1. Сохрани в переменную что вернула RWread. Она возвращает длину реально считанного. 2. После самого RWread проверяй GetError 3. Смотри содержимое массива отладчиком. 4. Ты на чем вообще проверяешь? Эмулятор, реальное устройство? Смотри Logcat Я бы тебе помог но сегодня в пути, без компа буду.
>>1607975 Не, ну если ты только вкатываешься, то конечно попользуйся new чтобы понять что к чему. >>1607981 Не забудешь delete. Алсо, что за String? Опять же есть std::string
>>1608018 >не используй никакой текст, кроме английского Тебя забыл спросить. В коде написанном только для себя, который по моей задумке никто другой в глаза видеть не должен, я могу писать хоть арабской вязью.
>>1608015 Опять же для первого раза, наверное, пойдет. Но подумай над тем, что это все очень избыточно. Например, ты видишь что везде день==1 Значит, это можно вынести во внешний if И получится что-то вроде пикрил. А в реальной работе лучше посмотреть в сторону std::chrono
• https://github.com/sosachbot/cppthreadhat/wiki
Ответы на вопросы:
• https://en.cppreference.com/w/
• https://www.cplusplus.com/reference/
Прошлый тред:
• >>157673 (OP)