Вместо шапки:• https://github.com/sosachbot/cppthreadhat/wikiОтветы на вопросы:• https://en.cppreference.com/w/• https://www.cplusplus.com/reference/Прошлый тред:• >>157673 (OP)
Аноны, подскажите, а сколько максимум оттенков цветов можно использовать в карте высот при 24 битном RGB? "В карте высот" означает, что цвета должны переходить друг в друга плавно, без рывков. Сколько максимум может быть таких переходов, которые может выводить обычный 24-битный моник?В градациях серого максимум можно выжать 256 оттенков. А в RGB?
Карочи, поцики, задача такая. Есть код, который надо компилить и собирать на разных операционных системах, допустим это дистрибутивы линукса.В общем, я хочу чтоб у меня код лежал на основной машине, а компилировался в чём-то ещё. Как это лучше всего достигнуть? Vagrant?
Подскажите, как реализовать алгоритм обхода всего лабиринта, есть список вершин и смежных с ними:std::vector<int> list[V];Надо обойти все вершины и записать в вектор путь, при этом чтобы не ходить кругами и это не работало оче долго на 200-300 вершинах.
>>1598511 (OP)Схуяли я этого четырехглазого головастика второй тред подряд должен лицезреть? Хуевый перекат, переделывай
>>1599232Все рассказывай. Сколько длилось собеседование, какие вопросы задавали ( с примерами ), кто вел интервью, как он вел интервью итд.
>>1599331HR дала тесты, все вопросы кроме последнего видимо для отсеивания совсем унтеров, в последнем надо было отрефакторить код и прокомментировать. В целом код был не сложный. Хорошо, что я когда-то прочитал пару глав параллельного погромирования на С++, иначе я бы сразу слился на слове мьютексА вот ожидаемых мною 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 на которой стандарт и основан.
>>1599605Так-то да. В нашем проекте перешли на цпп20 ещё в ноябре. И никого кроме статического анализатора даже насмерть не уебало.
>>1598557Если ты имеешь в виду карту высот в качестве текстуры в игре, по которой генерируется геометрия/ландшафт. То в основном используют однуканальную 16-битовую текстуру. То есть она черно-белая с 65536 отенками, потому что 216
>>1598511 (OP)Аноны, а правда, что после 45 я не смогу в программирование как мог в 20-30? Якобы мой мозг начнёт тупеть и т. д. и тп А как же куча дедов из cs, хотя бы тот, что в оп посте?
>>1599652Если всю жизнь много думать и напрягать мозг, поддерживая его в тонусе, как те деды, то вероятность развития деменции намного меньше. А смирившись с рутиной и не развиваясь, и в 30 стать маразматиком недалеко.
Нвидия-кун, нвидия-кун! Как эту штуковину расширить на неопределенное количество std::tuple?>>1598426 →
>>1599763>>1599776В общем-то удалось кастрировать std:: tuple_cat[code]template <class Tuple, class...>struct tuple_concat_helper{ using type = Tuple};template <class... T1, class... T2, class ... Rest>struct tuple_concat_helper<std::tuple<T1...>, std::tuple<T2...>, Rest...> : tuple_concat_helper<std::tuple<T1..., T2...>, Rest...>{};template <class... Tuples>using tuple_concat_t = typename tuple_concat_helper<Tuples...>::type;[/code]
>>1599797Сеньор-помидор из нвидии, сидящий здесь. Полистай прошлые треды, найдёшь. Да и здесь скоро объявится, если не уже.
Анон, нахуя мне, в 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 в любой функции/классеИ это оверинжиниринг. Покури травы, попустись, и пиши нормальный код
>>1599880>Видюхи считают float в несколько раз медленнее.Наоборот они float быстрее чем double считают.
>>1599849Представь себе что у тебя есть матрица 10000х10000 и тебе с ней нужно что-нибудь сделать. Ну там определитель посчитать.Если использовать float, то это будет сильно быстрее и потребует вдвое меньше памяти. А точности может и хватить.
>>1599865>>1599880>>1599904>>1599941>>1599975Я прекрасно знаю типы и ассемблер. Я говорю про то, что с++ не си, в нем много абстракций, не супер приветствуются касты разных типов (даже про это Страуструп глворил). А ворох целых типов напрямую отсылает нас к архитектуре проца. А дробные вообще пиздос конечно, какое-то распутье между точностью. Зачем мне это знать на высоком уровне, когда тебе похуй, на старом ГПУ будет просчет, или на цп?Типы с разрядностью никуда не уйдут, они как минимум связывают нас с максимальной разрядностью числа (хотя это повлияет только в инверсии и сложении с переполнением, битовым операциям похуй на длину), а вот наличие short, long, double в современном языке мне не понятно вообще, это сишный архаизм.
>>1600037>Зачем мне это знать на высоком уровнеЗатем, что если писать код с учетом особенностей железа, то он будет выполняться быстрее. А ты со своим "высокоуровневым языком" отправишься круды сосать.
>>1600038>>1600044А вы мимо си и асмы, деды. Чеж вы блядь тогда сами память не аллоцируете, если так хочется с байтами поебаться?Короче, я ожидаю в крестах типы, близкие к алгебре, а не к архитектуре проца. Чтобы был например целый тип, дробный, булев, иррациональный там и проч., и оперировать на этом уровне. И у этих типов, при необходимости, задавать всякие политики по точности, разрядности и всякое такое.Мне кажется, что язык именно туда и развивается, сейчас в современном коде все меньше встретишь явно указанных скалярных типов в пользу шаблонов и всяких авто.
>>1600037>Зачем мне это знать на высоком уровне, когда тебе похуй, на старом ГПУ будет просчет, или на цп?Нет не похуй, байтоебство один из плюсов C++. Ты походу не тот язык выбрал.
>>1600046> я ожидаю крестах типы, приближенные к алгебреТогда тебе нужны не кресты, а фортран. Или питонячий sagemath.
Хочу попробовать линукс. VS Code так же удобен, как студия? Есть какие-то у него подводные? Или может на линуксе лучше использовать какую-то другую IDE?
Сап программач, есть одна проблема, бьюсь над ней вторые сутки cpp.sh/6zlgmЭто функция расшифровки текста (RSA), при имеющихся данных, на выходе должно получаться 111111. Пишу по примеру на пикеЧЯДНТ??
>>1600115Меня все устраивает, но я ничего кроме ВС и не пробовал на самом деле. Только DevC++ лет эдак дохуя назад трогал, когда вообще только узнал про программирование.
>>1600101long long вмещает ~20 десятичных цифр.pow (4051753, 61) = 11 647 177 754 002 222 607 592 206 347 827 694 020 583 955 739 413 592 628 453 274 536 545 962 544 437 086 473 675 703 004 405 621 170 904 519 721 648 296 205 067 379 162 333 154 029 165 878 621 624 636 465 230 741 055 278 330 205 268 522 465 475 225 031 948 679 262 727 651 894 346 645 090 382 814 771 613 262 404 834 259 091 710 231 996 015 580 572 990 920 081 302 429 892 218 002 991 056 042 524 888 839 188 599 134 324 190 673 145 411 791 017 147 744 840 122 837 675 865 704 173 639 758 437 311 534 559 191 821 910 270 748 802 681 353А ты хочешь возвести не в 61, а в 6111579 ...
>>1600121За что ты его так прикладываешь, лол?>>1600101Там даже в тексте ниже написано, что основную проблему вызывает вычисление степени с модулем и потому дальше идёт ссылка на статью:https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC%D1%8B_%D0%B1%D1%8B%D1%81%D1%82%D1%80%D0%BE%D0%B3%D0%BE_%D0%B2%D0%BE%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2_%D1%81%D1%82%D0%B5%D0%BF%D0%B5%D0%BD%D1%8CМог бы и перечитать на вторые сутки. И дальше ещё идёт ссылка на "Китайскую теорема об остатках".
>>1600127Я же не прикладывал, а только подсказал, думал он сам догадается что следующий шаг - совместить возведение с остатком.
>>1600101Тут вообще всё простоint x = 4051753int y = 6111579int n = 9173503int res = 111111;cout << x << '^' << y << "mod(" << n << ") = " << res;
>>1600132Я уже совмещал, на выходе всё равно хуйня получалась>>1600128Спасибо, изучу>>1600127Да, стоило бы и перечитать, просто был занят расширенным алгоритмом Евклида для поиска секретного ключа, спасибо
>>1600092VS Code против VS 2019, это как петушок против дракона. А вообще смотря что пишешь. Вот тут туториал есть, как настроить конфиг в VS Code для C++ https://code.visualstudio.com/docs/languages/cpp
Вчера был на своем первом собесе на джуна(которого я не ожидал, думал это будет просто пред собес с хр по скайпу, а там в конфе был тимлид), разволновался и наговорил хуйни, даже названия некоторых операторов забыл, ещё сказал, что std::map это хеш таблица, вообщем завалил 100% этот собес, мне даже отписывать не стали, что не берут. Надеюсь хоть в черный список хр-ов за тупость не кинут.
>>1600416Добро пожаловать в волшебный мир поиска работы.Надеюсь, что ты запомнил все вопросы, и выдрочил каждый из них так, чтобы отлетало от зубов.На третью-четвертую попытку все получится.
Сап, двощ, студент 3-го курса.Летом будет практика, нужно искать место. Начал мониторить вакансии джунов, отсылать резюме, но меня везде динамят, иногда даже не отвечая.Только одна компания выслала тестовое задание, от которого я ахуел. Это было совсем не то, чего я ожидал,после рассказов про написание стека на собеседовании и т. д. Кое как сделал, скинул.Через два дня приходил ответ, что я не реализовал корректный ввод данных просто запутался в одном месте, думал, что данные даны сразу и их вводить не нужно и то, что у меня слабый исходный код.Как вообще можно стать джуном студенту?Где искать места, если почти все сразу шлют отказ даже без ТЗ или собеседования?
>>1600538>>1600536Блин, не особо хочется такую инфу говорить,уж извините. Тестовое задание - есть тарифы стоимостей, есть список действий, нужно минимизировать стоимость.Решилне до конца, небольшие ошибки были, но это из-за того, что не разобрался с предметной областью задачи, а спрашивать у HR по эмейлу не хотелось с помощью динамического программирования, но получил бан за то, что не предусмотрел ввод тарифов с файла (а у тарифа (sic!) словесное описание блжад).
>>1600037> Я прекрасно знаю типы и ассемблерНу так ты современные наборы инструкций видел вообще? Зачем тогда тупые вопросы задаешь? Дабл и флоат это разные типы использующие разные наборы инструкций и регистры, а ты их объединить собрался.
>>1600551> Тестовое задание - есть тарифы стоимостей, есть список действий, нужно минимизировать стоимость.Звучит не сложно.> Блин, не особо хочется такую инфу говорить,уж извините.Тебя ведь не взяли по какой-то надуманной причине, поделись хоть названием конторы, чтобы Минский анон я не тратил своё время в будущем
>>1600441Ну я пока не особо расстраиваюсь, раз уж меня позвали на техсобес, то мое тестовое не слишком говном оказалось.
>>1600572Тарифы могут быть вообще не похожими друг на другаА-ля "100р за сигну" на уровне "300к/ннск за вдох", не понимаю, про какой ввод тарифов может идти речь
>>1600588Задание было понятно, предметная область не до конца понялСамо решение работаетХотя спорить не буду, видимо, не справился с написанием кода
>>1600046Возможно контракты помогут.Т.е. будешь писать что то вродеmyInt x; [[expects: x>= INT_MIN && x <= INT_MAX]]
ПАЦАНЫ, Я КОРОЧЕ ШЕЛ СЕГОДНЯ ПО ОФИСУ И УВИДЕЛ ПРОГЕРА В МАЙКЕ "С# IS THE FUTURE", НУ Я ПОДСКОЧИЛ К ЕГО КОМПУ И РЕЗКО НАПИСАЛ "std::cout << std::endl;" И ПОЯСНИЛ ЭТО ОДНОСТРОЧНЫМ КОММЕНТОМ, ПОТОМУ ЧТО Я УГОРЕЛ ПО ПЛЮСАМ, ПАЦАНЫ ДУХ ООП ЖИВЕТ ТОЛЬКО В МНОЖЕСТВЕННОМ НАСЛЕДОВАНИИ, ГДЕ В ПЕРЕГРУЗКЕ ОПЕРАТОРОВ НА ОДИН ПАРАМЕТР МЕНЬШЕ, ГДЕ ЕБАШАТСЯ ПО СТАТИЧЕСКИМ МАССИВАМ, ГДЕ ПАЦАНЫ ЖИВУТ УКАЗАТЕЛЯМИ, ЧИСЛЕННЫМИ ЗНАЧЕНИЯМИ В УСЛОВИЯХ И ЕБУТ СБОРЩИКИ МУСОРА В РОТ! ТОЛЬКО С++, ТОЛЬКО ХАРДКОР!!! СТРАУСТРУП ХАРДКОР С++!!! пацаны ебашьте дельфикодеров, шарперов, пехапешников, жаверов, угорайте на компиляции в машинный код, любите Страуструпа, плюсокодеров и IDE! ГОВОРИТЕ ОТКРЫТО И СМЕЛО ПРЯМО В ЛИЦО! С++!
>>1600506Я тоже недавно искал место для практики, наткнулся на контору которая якобы набирает на стажировку. Отписал им, скинули тестовое, решил в тот же день, отправил, сказали что отправили на проверку и тупо неделя игнора. Потом я им повторно отписал мол, ну как там мое задание? Мне ответили, что чето ваш файл в письме не открывается))0. Закинул на файлообменник, отправил, сказали что через 3 дня ответят. В итоге через 2 недели написали, что не подхожу(без объяснений почему). Хотя я там все по красоте сделал, с auto, лямбдами, юзая только std.
>>1600627Лол, какие тогда требования к джуну в 2020 году на C++?Я не понимаю, даже брат с Польши, овердохуя успешный программист, сказал, что они ебанулись такое студентам давать Как, кстати, закончились поиски?
>>1600639>Как, кстати, закончились поиски?Никак, в итоге пошел проходить практику куда вуз направил(веб макакой).
>>1600646Бля, пиздецУ тебя ещё хоть вуз, видимо, не такой плохой как мойЕсли сам не найду, то прямая дорога на завод
>>1600627>>1600506Вот кстати то тестовое с моим решением если кому интересно https://ideone.com/dPlnQC. В ideone С++17 нет, поэтому не компилит
>>1598511 (OP)Анонасы выручайте, есть класс комплексное число. Как сделать гетер на весь класс? Т.е. getComplex(float re, float im){return ???}
>>1600665Да уж.Смотрю на твой вывод массива, на сплит строки и на чтение файла построчно и охуеваю. Потому тебя и не взяли, лол.
>>1600607 спасибо. Пробежался по фичам с++20 - мне нравится, куда развивается язык, найс, идут разговоры об обобщенных типах. В c++20 поднялся вопрос о том, нахуй unsigned int в доп коде, на "радость" дедам-байтоебам. Почему бы не в обратном число хранить, ммм?
>>1600683>Вывод массиваНу давай, расскажи как его надо было правильно выводить>Чтение файла построчноЭто не олимпиадная задача и пара миллисекунд тут некритичны. Я предпочел простоту и краткость кода перед производительностью.
>>1600689Выдает что можно использовать только в нестатической функции-члена.Вообще в .h выглядит так getComplex(float &re, float &im);взято из примера препода, по этому лучше так и делатьА как реализовать в .cpp?Если можно загрузи на pastebin решение.
>>1600683Мне достаточно было пробежаться глазами, чтобы понять, что это не жулик, а ты его просто на минималку разводишь.
>>1600697Тип в примере препода не указан у этого метода, просто getComplex(float &re, float &im);Вот это тоже не понял почему так, толи опечатка и там какой нить float должен стоять, либо еще что то. При том студия выдает ошибку, что без типа.
>>1600715>getComplex(float &re, float &im);>float &У "&" в с++ какое-то другое значение? Что вообще обозначает конструкция "float &"?мимо из с
>>1600741Ещё нельзя возвращать ссылку на объект, чей срок жизни ограничен функцией. Объекту пиздарики, а ссылка останется.И ещё есть типа исключение, когда ссылка инициализируется временным объектом (результатом функции). Тогда срок жизни временного объекта продлевается до срока жизни ссылки.
>>1600745Этот термин из других языков пришёл. Но ссылки в плюсах отличаются от ссылок в других языках тем, что после инициализации заставить ссылку указывать на другой объект нельзя. Как константный указатель.
>>1600749Точно, забыл.>>1600751Вроде причиной введения стало то, что при перегрузке операторов неудобно было бы передавать адреса переменных, каждый раз явно писать типа &a = &b + &c.
А ещё есть &&lvalue-ссылки. В общем, с ссылками в плюсах всё очень сложно, как, впрочем, и со всем остальным.
>>1600707> Ну давай, расскажи как его надо было правильно выводитьstd::istream_iterator + std::copy> Это не олимпиадная задача и пара миллисекунд тут некритичны. Я предпочел простоту и краткость кода перед производительностью.Это не краткий код. Краткий код - std::ifstream::read.У тебя цикл с постоянными реаллокациями строки, хотя ты мог считать сразу весь файл одним обращением к диску в строку, так как размер через std:: filesystem::file_size тебе заранее известен.Да и сплит строки можно было бы сделать проще через std::stringstream + способ из первого пункта.
>>1600712Действительно. Парень знает про 17 стандарт откуда-то, а пишет код уровня laba03.cpp. Может, лучше ему сразу указать на ошибку, а не "сыночка, ты у меня самый красивый и умный, не слушай их"?Я сам писал такой же хуевый код, когда делал диплом, потому что никаких книжек не читал и не интересовался.
>>1600793я просто не вкупаю, что и зачем.Если брать за референс std::complex - там 2 геттера на каждое поле.Если тебе надо копировать - сделай оператор\конструктор.Если ты ебанутый, сделайComplex getComplex() { return ЗВЕЗДОЧКА this; }
>>1600697>>1600711Я не пойму, чего ты хочешь сделать, и зачем вообще такой странный метод.const Complex &getComplex(float re, float im){return *this;}
>>1600805>>1600812https://pastebin.com/06vZWkC9Вот анонасики. 2 геттера на отдельно вещественную и мнимую сделал, но надо сделать геттер на весь класс.
>>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 вызова вывода.
>>1600840Да рукописный, не из библиотеки std или еще откуда. Задача реализовать класс комплексное число. Скинул же в pastebin что да как.
>>160084630 строк с какими-то условиями вместо одного оператора >> в цикле, действительно.Мы говорим о переусложнении кода, генерируемого компилятором или кода, написанного программистом?Ебашь тогда ассемблерный код, хули.
>>1600864Цикл поймет любой чел который даже не знает С++, а эту залупу с istream_iterator нет. Я лично до твоего поста про него не знал и пришлось гуглить что и как он делает .
>>1600665Ахуеть. Какой пиздец. И это на джуна надо знать? Какие то кривые Безье, сортировки. Нахуя блять!?
>>1600868Блядь, ну ты и речи задвигаешь.Зачем тогда ты 17 стандарт используешь, пиши на C++99, а то не все поймут, придется читать документацию к языку, охуеть.
>>1600703>>1600728Он, наверное, про signed.Обычно отрицательные числа хранятся как -X = 2N-X (-1 = 1111 1111b). Но есть и другие способы, например со знаком. (-1 = 1000 0001b, где первая 1 означает минус), дает некоторые плюшки, такие как -X = X^10000000b
>>1600846>Без аллокацийoperator+= для std::string в коде - и без реаллокаций.А ты хорош мы вам перезвоним.
>>1600833Именно поэтому в примере и не написано какого типа, поскольку это и было твоим заданием.Тебе же написали геттер на весь класс>>1600812
>>1600895Где ты там видишь += для строк? Там есть 2 выделения памяти под вектор для строк и собственно самой подстроки.
>>1600907Да, проебался, += в другом задании, но можно было бы избежать, заменив getline на read.А в сплите реаллокации есть, смотри второй пикрил.
>>1600914Можно тогда лист заюзать и не будет реаллокаций. А про чтение файла, да можно хуево и не оптимизированно (зато просто и понятно), но нахуя потеть над этим в тестовом задании?
>>1600922Сука, какой потеть, блядьУзнать размер файла, резервнуть строку нужного размера, считать ее одним read, блядь, ты о чем?
>>1600915Еще тогда вопросик. В .h у нас описание методов, в .cpp реализация. А что в данном случае делать? Т.е. вот берем из примера сеттер Re. В .h:float setRe(float re);в .cpp реализуем это метод: void Complex::setRe(float re){ Re = re;}А как тут разделить? Или если не делиться, то куда его запихнуть? Ну и последнее, зачем const?
>>1600931> А как тут разделить? У тебя и так всё разделено же.> зачем constНе нужен, я забыл его снести, когда сначала написал одну версию кода, а затем передумал и переписал.
>>1600926Ну хуй знает, что проще, в 3 строки через getline или идти гуглить как же мне получить размер файла когда у fstream ПОЧЕМУТО такого метода нет. В итоге видишь, что для этого надо заюзать tellg, пиздец это что такое? Сказать букву г или что?Никогда не понимал этих уебков из стандарта, почему я должен вот такую хуйню писать вместо того чтобы просто написать file.ReadAsString() как в любом другом языке? Так же и со сплитом, где сука метод Split в классе string? Почему я должен сам его реализовывать когда в других языках это из коробки?
>>1600936>У тебя и так всё разделено же.Если ты имеешь ввиду, что в .h:getComplex(float& re, float& im);А в .cpp:Complex &getComplex(float re, float im){return *this;}То не работает это, куча ошибок.
>>1600948Так у тебя прототип отличается от реализации. Ты рекламируешь квадратные окна, а продаёшь круглые.
>>1600926Мы вам перезвоним. read может вернуть не всю строку, а выставить бит фейла, так что тебе придется крутить цикл или молиться что файл не изменили в промежутке как ты узнавал его размер, а кстати чем? filesystem у нас только c++17, ты уверен что его разрешат тащить?
>>1600949Так а как должно то быть анонче? Не могу понять. И желательно конечно чтобы в .h описание так и осталось. но не обязательно
>>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 и облачный проигрыватель под ведроид), ну и просто решение интересных задач.С тех пор, как начал откликаться на вакансии, один раз какой-то репозиторий посмотрели и все, лолЧаще всего просто получаю отказы без объяснений, ну или просто отклики висят, а на них не отвечают
>>1601025'0' и '\0' отличаются по коду символа. Если потом этот массив в printf закинуть то выведет до терминального ноля 12340
>>1601023>>1601028>на 4 байтаА вот и нет, int же платформозависимый.Может вернуть и '1' '2' '0' \0 '5' '6'...
>>1601028Могли бы хоть ответ тебе сказать. >>1601032Это понятно, но откуда у тебя тогда берётся '0' вообще? int 0 получается состоит из "\0\0\0\0" >>1601033Мы, естественно, исходим из допущения, что инт четырёхчаровый. Это можно оговорить, но тут интересна сама стратегия.
>>1601030> один раз какой-то репозиторий посмотрели и все, лолТам отклики hr'ы чекают, им твой гидхаб не сильно интересен. Светить гидхабом стоит только на очных сабесах, когда есть типы шарющие, что у тебя там вообще происходит на экране.
>>1600977В сеттер передают по значению. И они присваиваются полям.А в геттер передают ссылки на переменные. Поэтому он сам может ничего не возврашать. Его можно использовать такfloat r, i;someComplex.getComplex(&r, &i)Соответственно, ты можешь сделатьvoid getComplex(Complex &c) { ... }Содержимое догадаешься как сделать?Чтобы можно было использоватьComplex c;someComplex..getComplex(&c)
>>1601039ну и так ответил, только не додумался что изменится больше 1 значения. Чел сказал, что этот метод широко используется для оптимизаций в коде гугла, лол конечно
>>1601040Действительно. А в какой момент он сделает тайпкаст? С++ вообще делает имплисид тайпкаст?>>1601044>int('0') будет выглядеть как [x41 00 00 00]Точно не [00 00 00 x41]?
>>1600945>у fstream ПОЧЕМУТО такого метода нетА почему он должен быть? Какой размер у /dev/zero?Всю жизнь размер файла доставали fstat, но недавно завезли std::filesystem::file_sizehttp://insanecoding.blogspot.com/2011/11/how-to-read-in-file-in-c.html - 6 способок, включая в одну строчку
>>1601055Потому что во всех остальных языках высокого уровня такие методы есть. В том же c# хочешь прочитать файл как строку? Пожалуйста File.ReadAllText. Хочешь как массив байтов. Хорошо, вот тебе File.ReadAllBytes. И только в плюсах для этого надо юзать кучу функций с неинформативными названиями.
>>1601065Что мешало добавить это в качестве метода fstream, и если вызвать его на на невалидном файле(типо твоего дев/Зиро) просто кидать исключение? Почему он вообще в абсолютно другом хедере?
>>1601064Ага. Ты мне зубы тут не заговаривай. File и FileStream разные вещи хоть в C#, хоть в джаве, хоть в плюсах.
>>1601077Зачем мне исключения в прошивке без исключений, которая читает файл до нулевого байта, и не хранит нигде размер файла?
Есть ли у меня шанс за ~1.5 года вкатиться в плюсы до уровня джуна, если я до этого примерно столько же был жс/питон фуллстеком?
>>1600945Тогда тебе в C#/Kotlin тред, если тебе нужны такие методы из коробки.>>1600950Берешь и открываешь в rw режиме.Если не дадут использовать 17 стандарт - то <dirent.h> в помощь. Или способ через tellg.>>1600959В ТЗ такое условие скорее для того, чтобы соискатель не сделал char buf[MAX], чем для очень больших файлов.
>>1601149Причем тут rw режим? read просто не обязан возвращать столько символов, столько ты запросил. Нормальную обработку ошибок пилить там целый экран уйдет.
>>1601043>Содержимое догадаешься как сделать?Лучше, чтобы ты помог. В любом случае всем спасибо ща помощь!
>>1601065>>1600914Если есть .csv файл (Размер не указан, может быть большим), а мне нужно его прочитать и спарсить построчно, ifstream + getfile - это адекватно или лучше как-то иначе?
>>1598511 (OP)Анон, свеженькая обновленная студия очень хуево парсит синтаксис некоторых файлов, где шаблонные классы и вяские вложенные типы. Периодически вылетает ошибка какого-то сервиса VS, что он завршился с ошибкой. Директорию .vs удалял.Щто делать, может как-то более явно расписывать шаблоны?
>>1601285Эта хуйня тоже хуево парсит, сложные макросы не раскрывает, тогда как интелисенс норм работает.
>>1601351Потому что в 2020 сука году до сих пор нет никакого стандартного способа пробежаться по метаданным класса. Т.е. любая сериализация вынуждает пилить костыли из макросов.
>>1598511 (OP)Анончики, как вы думаете, оправданно ли C++ такой overly complicated, позволяет ли это с минимальными затратами использовать блага высоких абстракциий и ООП, или же это просто построенная на легаси говне залупа, и тот же раст проигрывает только по причине того, что бизнес на нем исторически так крепко не завязан?
>>1601369Ну да, если это структура с парой числовых полей то можно и так сделать, а если это сложный класс с кучей полей разных типов и динамической аллокацией?
>>1601355Как можно заметить, правильно писать справа, потому что читается справа налево.int const const const - конст. указатель на конст. указатель на конст. инт.А здесь получается что все справа, а самый умный слева написал.const int const const
>>1601386Чет призадумался, а получается, что реально, если все справа писать, то будет логично читаться, без исключений, то есть сначала то к чему, а потом что
>>1601284Чтобы не путаться с const, мне помогало делить в голове выражение на две половины -- всё до звёздочки, и всё после. "До" относится к типу, на который указываем, а "после" относится к самому указателю. Ну а дальше уже без разницы, "const int" там, или "int const", и куда звёздочка прижата -- к типу, или к переменной, всё это пофиг.
>>1601284Тут кому то может быть неочевидно, почему спираль, если все слева. Так это потому, что справа будут скобочки )))
>>1601362А что, rust не overly complicated что ли? Имхо это какое-то фундаментальное свойство вселенной, начиная с какого-то количества фишек все равно наступает комбинаторный взрыв сочетаний фич, хоть на лиспе пиши, хоть на плюсах.
Нахуй постоянно писать std::cout например, если можно хуйнуть using namespace std и писать без лишней ебли с символами?
>>1601584Актуальны из-за exception safety и микрооптимизации шаред поинтеров>>1601555https://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice
>>1601504Кому нужно это сишное говно?using proc = function<void()>;using procs =vector<proc>;и все понятно.
void VSSetConstantBuffers( UINT StartSlot, UINT NumBuffers, ID3D11Buffer *const *ppConstantBuffers);А вот этот параметр как понять? Указатель на константный указатель на ID3D11Buffer? То есть аргумент должен быть адрес константого указателя.ID3D11Buffer *buffer;VSSetConstantBuffers(0, 1, &buffer);Тогда почему оно так работает, ведь буффер у меня не конст?
>>1601656Типо гарантия того что buffee у тебя не изменится. Если до этого buffer = &zalupa то и после вызова он будет содержать адрес залупы.
>>1601656>*А добавьте символ в следующую шапку что ли. Регулярно тут эта проблема возникает в треде с разметкой.>А вот этот параметр как понять?Просто перепиши мусорку через using, если сразу не понятно. Сразу станет всё понятно.https://ideone.com/iY8iOm
Есть ли у меня шанс за ~1.5 года вкатиться в плюсы до уровня джуна, если я до этого примерно столько же был жс/питон фуллстеком?
>>1601584make_ тебе сконструирует сразу умный указатель с нужным содержимым, а если делать auto sp = std::shared_pointer<int>{new int{42}}, то сначала выделится память под инт, а потом переместится в участок памяти, который выделится под умный указатель, вроде так.
>>1600682Геттер - это метод, возвращающий поле класса, как правило, без аргументов, например getImage() или getReal() в твоём случае.То, что ты пытаешься сделать скорее ближе к конструктору, но он возвращать ничего не должен.
>>1601874Сколько раз задавал этот вопрос итт, никто не отвечает. Я уже блять начинаю думать, что шутки про джуна плюсовка это нихуя не шутки и их реально не существует.
>>1601901Ну так здесь одни пидоры сидят, которые реально всё знают, но никогда ничего не рассказывают. Поэтому приходится выяснять всё самому.
>>1601288> Он же не бесплатный?Ну а ты ведь не фантики зарабатываешь?>>1601340> Эта хуйня тоже хуево парсит, сложные макросы не раскрывает, тогда как интелисенс норм работает.Приведи пример. У меня пока что опыт был в точности наоборот.
>>1601901ну так у разных контор разные понимания о джуне.Так то спектр знаний простой, в неопределенном порядке:Стандартные контейнеры + итераторы. Понимание реаллокций, инвалидаций итераторов, всяких там сложностей операций, знание категорий итераторов.Понимание лоулевел пердолинга памяти, арифметика указателей, касты между типами указателями, выравнивание, и прочее.Классы как таковые - перегрузки операторов, конструкторы\деструкторы\хуюторы. Что такое this. Public\Private.3 кита ООП, перекрытие виртуальных функций, зачем ваще нужно. Зачем нужна инкапсуляция. Наследование без виртуальных функций, порядок вызова конструкторов\деструкторов. Почему в конструкторе надо внимательно думать перед вызовом виртуального метода. Что такое Protected.RAII - чтобы от зубов отлетало понимание, а не как у шизиков, которые считают его не нужным.Эксепшены - как кидать, как ловить, кто кидает в стандартной библиотеке, почему их никто не использует, как их использовать. Нюансы кидания эксепшенов из конструкторов\деструкторов\мув конструкторов(операторов).Как происходит компиляция и линковка, что такое #include, что такое ODR, дефинишен\декларейшен. Почему статик переменные в хедере это совсем не то, чего ожидаешь. Extern "C"static_cast\dynamic_cast\reinterpet_cast\const_cast\сишный каст, который всё сразу.Опционально: системное си-говно, opaque указатели(handle, FILE), всякие говномакросы, побитовая дрисня.Опционально: Работа с файлами. fopen\fstream. Бинарные файлы против текстовых файлов.
>>1601874CООПSTLвыведение типовдеструкторы, конструкторы и прочая поеботамножественное наследование виртуальные классыпараллелизмметапрограммирование на шаблонахумные ссылки, weak ptrmove семантикаperfect forwardingrvalue, lvalueвызываемые объектылямбда
>>1601926> ШЕФ ПОСМОТРИ ПОЧЕМУ У МЕНЯ UNRESOLVED REFERENCE> В ТРУДОВУЮ СЕБЕ ПОСМОТРИ, ТАМ НЕПРОШЕДШИЙ ИСПЫТАТЕЛЬНЫЙ СРОК
>>1601921То есть по фасту устроить карьеру на С++ не выдет, надо дрочить по полной и потом не факт что примут?
>>1601929UNRESOLVED REFERENCE значит не находит функцию/глобальную переменную и это легко фиксится. Если это изза либы то достаточно в студии ссылку на либу добавить или pragma comment( lib, "libname.lib" ) и все работает само. Так зачем мне знать как оно там работает?
>>1601925А в идеале нужно знать, что это такое и когда применять? Ну то есть я могу за 3-4 предложения объяснить каждый из пунктов, но целую лекцию не проведу
>>1601941Чтоб такая хуйня в своем коде вылезла это надо с extern где-то обосратся ну или глобальную переменную не inline объявить.
>>1601932>>1601925>>1601921Для ньюфагов (обощение того, что вам надо знать, чтобы стать программистами):https://sharpc.livejournal.com/67583.html
>>1601913У меня в 600к мухосрани на весь город 2 вакансии по плюсам, на которых МАКСИМУМ для архитектора/тех.руководителя 70-120к. При том что там пиздец работенка, анализ изображений, анализ видео, короче софт для камер.
>>1601921Как по мне это все бред и формальности. Джун должен знать:1. Английский2. Уметь читать документацию3. Уметь гуглить4. Базу в виде пары книжек по С/C++5. Базу по архитектуре ОС
>>1601962>Базу по архитектуре ОСЕсть рекомендации, как подтянуть вот это вот? Навернуть Танненбаума и поковырять немного винапи в качестве практики достаточно?
>>1601965Вот крепкая база под винду.Windows via C/C++Windows 10 System ProgrammingWindows Internals Курс на степике по осямЛюбой курс на ютубе по осям
>>1601921>Эксепшены >почему их никто не используетКстати, а почему? Во всех книгах по крестам пишут, что эксепшены охуенно гибкие, мощные и удобные, не то что сишные возвращаемые коды ошибок.
>>1601991Исключения это 1. Медленно2. Сложно работать в многопоточной средеТе каждая контора сама решает, в каком стиле писать, но обычно придерживаются подхода ошибка-как-значение.
>>1601926А как ты собираешься работать? Просто нажимать магическую кнопочку МАГИЯ? Или все таки писать всякие cmake
Ебать вас в рот! Во какая заваруха! lvalue и rvalue как бы понятны. А остальные-то зачем? Они часто встречаются?
>>1602025Остальные забудь, это чисто для формальной теории, чтобы не запутаться, тебе они не понадобятся
>>1602025Если упрощенно,glvalue это то, что слева, чему можно присвоить, переменная.prvalue это то, что справа, некий объект или значение.xvalue это сорт оф временный объект.rvalue и lvalue это устаревшая хуйня.
>>1602052>>1602052>------------------int&& a = 5a - lvalue 5 - rvalue >------------------vector<govno> f();auto g = f();g - lvaluef() - ??? эм... rvalue >------------------int&& f()int& g()f() - lvalueg() - rvalue>-------------------Где тут (x, gl, pr)value?
>>1602052Уф, сложнааа (((Вроде, прочитал Страуструпа, но всё равно каждый раз, когда захожу в этот тред, узнаю много нового.
Почему в этой программе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Зачем вообще писать на C++, если не использовать RAII? С тем же успехом можно и чистом C писать.
>>1602638>>1602658Кстати почему под RAII нет никакого блока типо using? Из-за чего приходится делать костыль с if и перегрузкой оператора bool, при чем нужно ОБЯЗАТЕЛЬНО в этом блоке присвоить этот RAII какой-нибудь переменной иначе этот RAII сразу же уничтожается.
>>1602658Спроси у шизиков, которые тут с обострением прибегают иногда.>>1602677Твой конкретный юзкейс очень хорошо ложится на использование эксепшенов, кстати.
>>1602677ну и да, если уж на то пошло, тоif (auto v = Raii(); v) { ...}https://www.tutorialspoint.com/cplusplus17-if-statement-with-initializer
>>1602718Ну типо почему в 1 варианте компилятор сразу же вызывает деструктор, а во втором работает как надо?
https://www.reddit.com/r/cpp/comments/f47x4o/202002_prague_iso_c_committee_trip_report_c20_is/Чето тем дальше, тем пиздецовее
>>1602760>Пиздец, даже такое естьС разморозкой!Это хорошо работает с structured bulding кстати, типа:if (auto [success, x, y] = do_something(); success){/ work with x & y/}
>>1602860Почему там так мало тяночек и чёрнокожих? Почему того чёрнокожего рядомсидящая белая сука не держит за ручку и не прижимается к нему?! Куда смотрел фотограф?!!!
>>160286011 сестер всего. Кажется, хуемрази оборзели и им требуется живительная инъекция пересмотра CoC и квот на URM.
Сап, аноны. Кто лочит мьютексы на собеседованиях, почему не бывает, когда два прогера приходят на собес в одно и то же время?
Почему компилятор доёбывается со своим "invalid conversion from ‘unsigned char’ to ‘char’"? Можно ли в такой ситуации обойтись без преобразований типов, что-бы компилятор сам додумывался преобразовывать?
>>1603000знаю как минимум 4 тни могущих в плюсы.3 из них шарят в MIPS'овом ассемблере и разрабатывали под embedded.4-я знает все сорта асма, использующиеся на винде, тк читает корки её ядра чаще, чем ты просто читаешь хоть что-нибудьтак то там всего два сорта, но из-за солянки в calling convention, без веществ это не прочитаешьтак что выковыряй подзалупный творожок, помойся, постригись и выйди из комнаты уже наконец. может увидишь, что твой манямир и реальный мир значительно различаются
>>1602860просто адекватные люди, которым есть чем заняться по жизни, на такие сборища не ходятнахуй не надо
>>1603424>манямир и реальный мир значительно различаютсяДружок, посмотри на эту фотографию. Видишь ли ты тут девушку, или женщину? Нет? Посмотри внимательнее, приглядись. Да, вот так, молодец, ну что, увидел? Увидел? А теперь внимательно её рассмотри. Можешь ли ты представить себе, как какой-то мужчина плачет и набирает дрожащими пальцами телефон этой бляди, чтобы рассказать о своих чувствах к ней? Веет ли от нее молодостью, романтизмом, свежа ли она и красива?
>>1603424> 4-я знает все сорта асма, использующиеся на винде, тк читает корки её ядра чаще, чем ты просто читаешь хоть что-нибудьВот здесь ты обосрался.
>>1603428Что блять? На фото комитет, который разрабатывает стандарт C++. У них по три раза в год такие встречи. Как по-твоему блять обсуждать новые фичи, проводить голосования, подводить итоги? В конфе в дискорде?
Как это работает?https://ideone.com/7sdRm3Находит наибольшую общую подпоследовательностьlcs( "abcdef", "abc" ) => "abc"lcs( "abcdef", "acf" ) => "acf"lcs( "132535365", "123456789" ) => "12356"lcs( "abcdefghijklmnopq", "apcdefghijklmnobq" ) => "acdefghijklmnoq"
Программач, кто-нибудь работал с Qml? Как можно улучшить качество картинок, если сжимать их через Item.scale?По дефолту они получаются пиздецового качества
>>1603761>typedef>if (x.length() == 0 || y.length() == 0)> vvs (n + 1, vs (m + 1, ""));>return "">int n = x.length()Ухх ёбана, снимай штаны, буду жопу бить
>>1598511 (OP)Я охуел, когда узнал, что через шаблоны можно наследовать класс от типа-параметра.template <typename T>class Derived : public T { };Держу в курсе.
Привет, анон. Дело такое, я учусь не на программиста, но изучаю с++. Мне нужно сделать лабу, и код мб я бы и написал, но дело в том что я не понимаю что от меня хотят, не могли бы объяснить в чём суть?Задание : Найти максимальный элемент в массиве ai (i=1, , n), используя соотношение (деления пополам) max(a1,, an) = max[max(a1,, an/2), max(an/2+1, , an)].Обычная и рекурсивная функция.Мне типо надо постоянно делить массив? Или просто разбить его на 2 части и в каждой найти мксимальное?
>>1604191Ну смотри, у тебя есть массив [1, 6, 8, 2, 0, -1], обозначу его "mass".1) Делим пополамmax(mass) =max( max([1, 6, 8]), max([2, 0, -1])) =max( max (max([1, 6]), max([8])), max( max([2, 0]), max([-1])) )Дальше сам
>>1604191>>1604247Освятил тред(define (max array) (define (slice i j array) (cond ((= i j) nil) ((> i 0) (slice (- i 1) (- j 1) (cdr array))) (else (cons (car array) (slice i (- j 1) (cdr array)))))) (define (first-half array) (slice 0 (floor (/ (length array) 2)) array)) (define (second-half array) (slice (floor (/ (length array) 2)) (length array) array)) (if (= (length array) 1) (car array) (let ((a (max (first-half array))) (b (max (second-half array)))) (if (> a b) a b))))
>>1604065В си-стайле это делается тупо на двух указателях на char, без всяких аллокаций и сложений строк.>>1604163Погугли longest common substring
Программач, мне нужно, чтобы при вводе текста в консоли при вводе пустой строке или просто нажатия энтера не создавалась новая строка.Иными словами, чтобы вместо пика у меня в одной строке была только >>, куда пользователь что-то вводит, а если вводит что-то не то, то строка просто очищается и ввод продолжается в эту строку.Как такое можно сделать? Я ещё совсем зелёный, не бейте.
>>1604338conio.h - перехватывать нажатие энтера, не выводя на экранЧтобы очистить строку, можно напечатать символ возврата каретки \r, вывести несколько пробелов и опять \r.
>>1604247max( max (max([1, 6]), max([8])), max( max([2, 0]), max([-1])) )А зачем эта строчка? Я не могу просто из 3 максимальное найти? Или это обязательное условие?
>>1604374А нах усложнять? Тебе нах не надо ничего оптимизировать, тебе нужно реализовать алгоритм в чистом виде, то есть он тупой. У него одно действие - рекурсивное деление пополам и когда зайдет оч глубоко и у него останется одно (или два, как хочешь) числа он просто их возвращает и рекурсия схлопывается
Привет анонче. Хряпнул пивка, накатаю портянку.В 25 лет я грустил сидя в своем кабинете. Я только что пришел из цеха и руки мои были по локоть в блядском масле и техническом говне. Не смотря на то, что работаю инженером, когда что-угодно перестает работать нужно идти и разъебываться. Тогда меня че-то переклинило и я решил, что хватит уже заниматься этой хуйней. Я начал учить(повторять) математику и физику с 7ого класса. После изучения школьной программы я подумал, а почему бы не поступить в универ? Я поглядывал на айти курсы, но они все на тот момент стоили 120к++ (сейчас не знаю), а заочный универчик стоит че-то в районе 250к за 4 года(но деньги из меня он сосет порционно, а не все сразу). Плюс может быть бумажку дадут, а может и на работу пристроят. Кароче, сейчас я успешная второкурсота, помимо этого я зашарил, что на курсере можно просить мат. помощь и на халяву проходить курсы. Прошел пару с++ курсов.Сейчас я чувствую, что за полтора года меня все эти учебные задания аля : “ Создайте шаблонный класс с публичным методом пизда и приватным методом хуй” начинают подзаебывать. Подскажи анонче, чего бы такого запилить на крестах красивого и не сильно сложного.Проблема в том, что я вообще не хуя не понимаю, что писать на крестах. Джавапетухи делают приложения, питонодети вобще всем чем угодно занимаются, Сишарперы игрули делают, 1сники бухам кнопки рисуют. А на крестах то че сделать, за что зацепиться?)В универчике лабы на с/c++ говно, но я сюда и не за языком пришел, а за мат.частью.Думаю запилить гуи считающий интегралы, не сильно интересно, но хоть что-то уже осязаемое.
>>1604381double r1 = maxs(a, n / 2); double r2 = maxs(a + n / 2 + 1, n-1); if (r1 >= r2) { return r1; } else { return r2; }Вот так?
>>1604399На плюсах можно сделать все. Игру, игровой движок. Парсер сайтов. Сами сайты через емскриптен. Какую нибудь системную утилиту, драйвер, кликалку мышью например.
прет сяшникиКак эффективно реализовать листенер (без библиотек)? Цикл, который срабатывает n наносекунд - единственный способ?Нужно не в качестве паттерна программирования.
>>1604855Поподробнее. Название функции?Думаешь, ОС будет детектировать это, как-то курируя изменения в памяти?В идеале так выглядит: я даю винапи указатель на адрес и на мой каллбек (да, не линуксы), он его зовёт при наличии изменений.
>>1604844>Как эффективно реализовать листенер (без библиотек)? Цикл, который срабатывает n наносекунд - единственный способ?На прерывание повесить, иди в асм тред.
>>1604844>Цикл, который срабатывает n наносекундА расскажи как это сделать, а? Очень нужно. Точности в микросекунду будет достаточно, впрочем.
>>1604875Элементарно.https://stackoverflow.com/questions/158585/how-do-you-add-a-timed-delay-to-a-c-programПо софтварным прерываниям инфа так не гуглится. Знаю эту фичу ещё по дурачеству в ollydbg, но как самому сделать в обычном main.c (пусть даже инлайном ассемблера) - хз.
>>1604844Есть еще один вариант. Если ты знаешь какая функция пишет в память, ты можешь хукнуть эту функцию, вставив трамплин, грубо говоря заменить часть инструкций в программе на прыжок в твою функцию, а в ней анализировать.
>>1604883>SleepЯ до микросекунд просил.Пока что использую бесконечный цикл с asm("nop;nop;nop;nop;nop;nop;... ) в потоке с приоритетом реального времени, где проверяю счётчик тактов и мне это всё очень не нравится.
>>1604922https://github.com/torvalds/linux/blob/a351e9b9fc24e982ec2f0e76379a49826036da12/Documentation/timers/timers-howto.txt
>>1604844>>1604868Ставишь VEH обработчик и меняешь защиту памяти на PAGE_READONLY допустим, при обращении на запись в нее вылетит исключение которое ловит твой обработчик. И да, это будет работать на всю страницу памяти, а не на одну переменную так что это тоже надо учитывать.
>>1604880насколько я помню из когда то прочитаного windows internals в винде есть таки некие расширения реального времени, возможно придется написать драйвер, в котором и будет происходить настолько быстрая обработка по таймеру без запаздыванияно я не знаю точно, просто смутные воспоминания
>>1605065Все таки пейджфолты сильно ударят по производительности. Мне кажется вариант через debug register быстрее будет.https://www.codeproject.com/Articles/28071/Toggle-hardware-data-read-execute-breakpoints-prog
>>1604399Если напишешь программу, вычисляющую любые интегралы, то можешь сразу в гугл на сеньора стучаться.
>>1605167Ну хз, мы обычно ставим интервалзеровский RTX, он крутится паралельно винде на своих процессорных ядрах. На нем риал тайм, на винде интерфейс.
>>1605170double 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, именно так стэк и работает, кстати. Лучшим способом будет установка железячного бряка через отладочный регистр, контроля больше, нет проблем синхронизации.
Ну что, БАЙТОСЛЕСАРИ, как вам работается на ЗАВОДЕ? С премией за отлизывание ануса в совковому деду-пердеду в месяц чистыми хоть 500$ выходит?А мы тут вашего залетного КУЗЬМИЧА в кружок отпепетушили, принимайте пополнениезабирайте назад.>>1605269 →>>1605259 →>>1605243 →
https://ru.coursera.org/specializations/c-plus-plus-modern-developmentИскал инфу по одному конкретному вопросу и наткнулся на это. Стоит проходить для закрепления после Майерса и т.д.? Всегда плевался в сторону подобного, но тут вроде содержание действительно неплохое.вот-вот джун
>>1605342Если ты "почти джун" - то смысла нет. Лучше иди еще наверни Херба Саттера, или там Александреску какого
>>1605319С регистром есть проблема в том, что он ставится на конкретный поток, а если программа постоянно срет новые потоки то что делать?
double pi = 3.14159, npi = -3.14159; cout << fixed << setprecision(1) << pi <<" "<<npi<<endl;Сука, что это за хуйня? Почему нельзя pi.setprecision(1)? Мне всего-то нужно безопасно версии проверять.
>>1605769Так удобнее. Я читаю чужую версию, возврат в строке, проще конвертить во флоат, чем свою интовую нотацию сочинять.
>>1605397>>1605482Например, перехват NtCreateThread/Ex, устанавливаешь флаг suspended, выполняешь системный вызов, далее устанавливаешь контекст и возобновляешь поток. Или другой способ, на мой взгляд более правильный в теории, сам я не пробовал так делать, перехват LdrInitializeThunk, вызывается в контексте созданного потока, 1 или 2 аргументом будет указатель на структуру CONTEXT, редачишь отладочные регистры и передаешь управление загрузчику, который установит начальный контекст потока сразу с твоими брекпоинтами.
Короче анон. Я тут решился вкотиться в погроммирование и именно в плюсы, потому что мощный и быстрый, делал сортировки всякие. Но у меня есть проблема: я хз что писать дальше, чтобы как-то прокачать скилл.Блокнот? Свою маленькую игру закодить? Калькулятор? Сажусь за компьютер и ничего не решаюсь сделать. Есть ли какой-то список задач для практики? И чтобы была сложность разная, на подобии: определение разряда числа<калькулятор<вселенная? Есть конечно идея для приложения: приложение для лиги легенд, которое на стадии пика, будет искать профили игроков в op.gg и выводить их статистику, сыгранные матчи, кого мейнят и тд., ибо самого заёбывает каждый раз ctrlC + ctrlV делать. Подходит ли c++ для этой задачи?добра
>>1605950Бля, анон, дико извиняюсь за свою слепоту, я тред не читал даже. Большое спасибо>>1605951Так нет, я видел уже такие программы, просто они показывают статистику уже когда игра загружается, а не когда ты выбираешь персонажа. Да и как бота распознать нельзя, ибо какой тут бот? Я просто смотрю статистику игроков, тем более беру статистику не с riot games, а с op.gg/
>>1605953>Да и как бота распознать нельзя, ибо какой тут бот? Ты будешь как то взаимодействовать с игрой, чтобы прочитать с экрана ник игрока. А современные игры это такие вишмастеры, которые палят все процессы запущенные.
>>1605380Потому что альфа хуйня, качай математику. Или http://doc.sagemath.org/html/en/reference/calculus/sage/symbolic/integration/integral.html
>>1606070Охуеешь искать хдми-ин за адекватные деньги. Тебе обязательно вместо одного порта продадут целый компьютер за соответствующий прайс.
>>1606082Во-первых, это всё равно целый компьютер, который уже обработанное и пережатое видео по юсб 3.0 выплёвывает. Во-вторых, он относительно дешёвый, потому что ограничен возможностями hdmi 2002 года. Представь себе, если бы тебе видеокарту 2002 года пытались продать или даже монитор.
>>1606085>ограничен возможностями hdmi 2002 года. Представь себе, если бы тебе видеокарту 2002 года пытались продать или даже монитор. Ебанутый? Ебанутый.
>>1606085>относительно дешёвыйНу и да, это только относительно других карт захвата, потому что столько же стоит и видеокарточка, и монитор, которые, на секундочку, изображение умеют формировать и отображать, а не только принимать в один порт и выплёвывать в другой.
>>1605909Еще проще загрузить свою дллку и там обрабатываешь создание нового потока через DLL_THREAD_ATTACH.
>>1606266Да, точно, я про это совсем забыл, LdrInitializeThunk как раз и проводит инициализацию потока с оповещением библиотек. Можно тогда без длл, через TLS THREAD_ATTACH эвент обрабатывать.
Сап, двощ.У меня есть многопоточный сервер. Как мне получить адрес сокета в функции хендлере?Т.е. как можно получить SOCKADDR имея в наличии только сам SOCKET?
>>1607174Я не особо понимаю вопросУ сокета нет никаких функцийВ многопоточный хендлер я отправляю сокет, sockaddr отправлять не могу по логике программыИз типа socket можно получить адрес сокета?
Есть возможность приобрести ноут https://www.ebay.com/itm/Acer-Travelmate-B117-M-Laptop-Intel-Celeron-1-6GHz-4GB-Ram-64GB-SSD-Win-10-Pro-/153799005761?_ul=RU&redirect=mobile (не нашел другого линка с характеристиками).Хватит ли его для работы на c/c++? (Смогу ли я на нем написать и протестировать свою ось?) Если да, то какой линупс ставить? Если нет, то чего не хватает?
>>1607686Это просто кто-то уже написал за тебя вращение в несколько строчек, а ты теперь его используешь. Она ж не магически вращается. На си вон тоже написали, назвали питоном, вообще в 6 символов делается.
Как прочитать обычный текстовый файл, который лежит в assets внутри apk файла с помощью sdl2 ?Путь к файлу подходящий, т.к. при других он выбрасывает ошибку, что файл не найден. Но вот size и seek выдает отрицательные, что за магия.
>>1607705Много, там тоже всякая хрень на тему "околотого" и тоже пишут>>1607706через std там еще более геморно получать пути к файлам на все случаи жизни, ну и для андроида придется тогда отдельно писать, хотя для win/lin/mac/ios все работает
>>1607713ошибку можно дернуть, если файл не открылся, а это просто размер структуры уже открытого файла и указатель на позицию в нем
>>1607726>Use this function to retrieve a message about the last error that occurred. https://wiki.libsdl.org/SDL_GetErrorТолько про не открывшийся файл?
>>1607700Странно конечно, но видимо в твоем C-поделии, о котором ты почему то спрашиваешь в c++ треде, не реализовали seek для ассетов в апк. Читай его как обычный поток, пока не закончится.
>>1607736>в твоем C-поделии, о котором ты почему то спрашиваешь в c++ тредеЯ-то думаю, что так легко читается
>>1607736Поделие не мое, просто дали старое как говно мамонта легаси и сказали переводить это по копроративному стандарту на новые рельсы.
>>1607744последняя 2.0.10да хоть в какой версии, можно просто пример считывания текстового файла из assets готового apk
>>1607749Обычный байтоебский while(len=read(...)>0) полагаюhttps://discourse.libsdl.org/t/reading-files-on-android/18437/6
>>1607760ну так я бы и сделал обычный байтоебский, только вот length нетуа в этом примере они не из apk и assets берут, а из хранилища для приложения
>>1607771Ты не понял. Там не определяют длину, а просто читают по 1 байту, пока поток не кончитсяsize = SDL_RWread(oldFile, &c, 1, 1);Алсо там читают из assets, а записывают в хранилище.
>>1607762Я бы не нанял велосипедостроителя за 120к.list in {0, 1, 2, 3, 4 ,5};list out { in.rbegin(), in.rend() };
>>16078261. Сохрани в переменную что вернула RWread. Она возвращает длину реально считанного.2. После самого RWread проверяй GetError3. Смотри содержимое массива отладчиком.4. Ты на чем вообще проверяешь? Эмулятор, реальное устройство? Смотри LogcatЯ бы тебе помог но сегодня в пути, без компа буду.
>>1607843подключен реальный телефон, логкат смотрю в студиивроде уже что-то считывает>>1607855нет, он не перемещает позицию
Забыл написать new, в итоге два дня пытался понять, почему переменные просто так изменяются. Пиздец, а не язык
>>1607911>>1607916Я забыл иницилизировать указатель nullptr, а потом вдобавок забыл выделить память с помощью new прежде чем использовать указатель. https://pastebin.com/GLFVbfw8
>>1607975Не, ну если ты только вкатываешься, то конечно попользуйся new чтобы понять что к чему.>>1607981Не забудешь delete.Алсо, что за String? Опять же есть std::string
>>1607983Лучше сразу учи QString, обыным std::string'ом уже никто не пользуется он концептуально устарел
>>1607988Вот ты написал, а я и задумался, что хз какими строками пользоваться сейчас. ICU вроде неплохо, но там устаревший api...
Как вызывать методы protected класса A из класса B, при этом не делая класс A дружественным классу B и не наследуя A в B?
>>1608015Почитай книжки, там все описано. И пожалуйста, не используй никакой текст, кроме английского в коде
>>1608018>не используй никакой текст, кроме английскогоТебя забыл спросить. В коде написанном только для себя, который по моей задумке никто другой в глаза видеть не должен, я могу писать хоть арабской вязью.
>>1608020Ты действительно забыл спросить хоть 1 профессионального программиста. Вот первый спрошенный тебе и указал, что это полный пиздец.
>>1608027Я последние несколько лет делаю это Решарпером++. А вообще, они вроде год+ назад впилили такие рефакторинги в саму студию, но не уверен.
>>1608015Опять же для первого раза, наверное, пойдет.Но подумай над тем, что это все очень избыточно.Например, ты видишь что везде день==1Значит, это можно вынести во внешний ifИ получится что-то вроде пикрил.А в реальной работе лучше посмотреть в сторону std::chrono
>>1608041Будет ненамного больше IFов, да ещё и более запутанно код станет выглядеть. Я уже пробовал, как ты предложил.
Перекатe https://2ch.hk/pr/res/1608046.htmlр https://2ch.hk/pr/res/1608046.htmlе https://2ch.hk/pr/res/1608046.htmlк https://2ch.hk/pr/res/1608046.htmlа https://2ch.hk/pr/res/1608046.htmlт https://2ch.hk/pr/res/1608046.html
>>1608047Более запутанно чем портянка в 12 строк сложно представить. Особенно весело потом искать опечатки.
Шота охуеть ваши плюсы сложные, ну это наверно потому что они мне и нахуй не нужны на самом деле.Просто поделился, не посылайте нахуй, спасибо.
>>1608041int days[] = {31, ..., 31};day = day - 1;month = month - 1;if (day == 0) {month = (month == 0)? 12 : month;day = days[month - 1];} Исправил