Вместо шапки:• https://github.com/sosachbot/cppthreadhat/wikiОтветы на вопросы:• https://en.cppreference.com/w/• https://www.cplusplus.com/reference/Прошлый тред: >>1617857 (OP)Good night, sweet prince 1950-2020
Что значит "Знание стека протоколов ...", часто встречаемое в плюсовых вакансиях? Что почитать по теме, как практиковаться?
>>1626990Значит нужно хорошо изучить спецификации указанных протоколов и написать их достаточно эффективные реализации.
>>1627027Лол, я без твоего поста даже не понял, что эти высеры про смерть плюсов. Мне кажется, это один шиз пишет.
Анон, а какие GUI библиотеки ты используешь? Какие самые топ, а какие самые днищенские, что ты встречал за все время использования?
>>1627110Это графические библиотеки, хочу выучить какую-нибудь, но их довольно много и хз с чего начать
На крестах нет работы. Вот пруф. Если все остальные языки примерно одинаково набирают популярность в рабочие дни и теряют в выходные, то у крестов эта кривая гораздо более сглаженная. В рабочие дни его вон гуглят намного реже, чем C#, но при этом в выходные дни даже немного чаще. Потому что язык для фана/обучения, а не продакшна.
Аноны, сейчас читаю правила чистого кода, и тут мне попалась такая конструкция как "else if".Вопрос - она сейчас как-то применяется? Я вместо нее всегда пишу просто if. Или тут дело в чистом стиле, и писать "else if " больше надо не для компилятора, а для других людей, которые в будущем будут читать твой код? Нахуй нужен этот else if короче?
>>1627201Это совершенно разная логика Без else все твои if будут проверяться всегда.СравниIf(a==0)...if(b==0)...Иif(a==0)...else if(b==0)...
>>1627201if (true) {....выполняется}else if (true) {....игнорируется}без else второй блок тоже выполнялся бы
>>1627181Этот график показывает только то, что %языкнейм% гуглят чаще, чем цпп. Что как бы наводит на мысли о том, что цпп-кодер загуглил и нашел работу, а питоноблядь будет каждый день гуглить, пока его не возьмут на стажировку
>>1626991Ну реализации это может и перебор (это чаще для ПЛИСоводов), но все подводные места надо знать
Вчера смотрел видос с какой-то конфы, там была статистика по плюсам. Так вот в мире всего 4млн людей пишет на плюсах, 4млн КАРЛ! Это же пиздец как мало! И что самое главное ~1млн это прогеры из СНГ. И главное, докладчик отметил, что в СНГ самое высокое качество кода в мире. С++ можно смело называть РУССКИМ языком программирования!
Как писать правильный код без ошибок с первого раза? Код работает так как надо, только после пошаговой отладки. В реальных крупных проектах, как я понимаю, дебажить не выйдет.
>>1627959Попробуй писать на скорость. Выбираешь мелкую задачу минут на 5..40, которую знаешь как делать (без такого, что тебе нужно листать документацию, смотреть схемы или ещё чего), и буквально по секундомеру засекаешь время стараясь успеть за минимальное. Запускать код можно только один раз (или несколько, если в задаче есть хорошо выделенных этапов - по разу на этап), точнее, после запуска его нельзя изменять, только проводить тесты и проверки. Если не получилось - удаляешь всё. После неудачной ошибки к этой же задаче можно возвращаться только через некоторое количество других задач.Из-за того что цена ошибки выше (нужно полностью переписывать всё) через некоторое время у тебя будет рефлекторная реакция, выработается так сказать аллергия на ошибки.Но это помогает только от глупых ошибок, вроде < вместо <=. А ещё я с дивана говорю и у меня только мой опыт есть, ничего лучше чем попробовать предложить не могу.
Не знаю, где еще спросить, спрошу у вас.Нуб, программирую ардуино. Как бы вы сделали счетчик в интервале 0-n с изменяемой скоростью?Я видел, как человек делал его через остаток от деления millis/скорость на n. Но мне этот вариант не подходит.Сам бы я сделал через n++ и delay(скорость).Еще есть вариант сделать таймер через millis - millis, и если он будет больше скорости, тогда n++Какие еще есть варианты?
>>1627242я с 2009 года на нем, развивается он постоянно, очень удобно, но работу проще найти в связке с++ + STL, рынок ку тэ это на 70% госниипараши.
>>1628746Инкрементировать счётчик в прерываний аппаратного таймера и менять скорость счёта таймера в регистрах.
>>1628932>>но по-любому есть хуже, как всегда)>Чистый винапи же.Ну мы всё же про фреймворки. А так он как раз и плох (но при этом внезапно иногда и хорош) в том числе тем, что отовсюду торчит винапи (модель сообщений в основном, и модель окна (HWND))
Антох, сижу полгодика без работы, посоветуй чего бы такого поковырять.Qt - как-то разлюбил, благо стандартная библиотека встает с кален. Каждый раз нужно все больше поводов включать Qt в проект.boost:: - не ковырял ни разу, но, как я вижу, в прям серьезных местах серьезные дядьки хотят именно boost. Как думаешь, стоит? А хули там полезного осталось - ASIO, BEAST?Еще с базами никогда серьезно не работал, так уж жизнь сложилась. Что бы ты посоветовал? Postgres для кровавого интерпрайза и SQLite для себя любимого?gRPC - твое мнение об этой поеботе? Как по мне, так шок, качественно сделано. Аж уважением к Гуглу проникся. Хочется приехать к офису в Сан Франциско и кинуть им зигу. Не, наверняка там камни подводные есть помимо того что бинарь из мегабайта разрастается до десяти, я промышленно не применял, вот и спрашиваю тебя.
>>1629127Напиши что-нибудь, что никогда не писал. Начиная от ублюдочной сетевой игры, заканчивая искалеченным 1C, например.И старайся использовать как раз те либы, которые не знаешь
Аноны, а та гитхабе есть какая-то система ботов, которые автоматически скачивают твои проекты, чтобы проверить на копирайт? Или кто эти люди, что качают мои проекты? Недавно кстате увидел, что на меня фоловнулась хр местной компании, каковы могут быть ей мотивы?
Дальше, если хочешь быть соверешенным тогда делай так. И конечго дело не в бгаотсвте а в отношении в нему. и человек который почутвствлат это пирзанние, он рди этого призвания оставляет все, потму что надо. Многи наши прихожане могут подумать, уменя нет богатсва, я еле еле концы с концами свожу. Нет
У меня есть два разных класса, каждый из которых может иметь некоторое одинаковое количество объектов. По задания надо сделать "массив пар этих объектов" в другом классе. Что такое "массив пар объектов"? Как его сделать, если он только один, а класса надо записать в него два?
>>1629127> А хули там полезного осталось - ASIO, BEAST?Spirit ничего так (по крайней мере в ипостаси Qi), давно пользовалсяВсякие MPL. Fusion и Hana. Лично видел, как на них творятся чудеса точнее, нечитаемый ёбаный пиздец
Так, ананасыЕсть какая-нибудь либа для форматирования? Желательно состоящая из одного заголовочного файлаfmt не предлагать, проект маленькийЕё такую тащить ни к чему
Сап. Разбираюсь с чужой программой, и у нее странное поведение. релизный билд работает так, что никаких вопросов нет. Дебажный же выдает эксепшен при работе с одним из векторов: выход за границы. Проверяю все и действительно так, код работать не может. Но в релизе работает. Это как так? Никаких обработчиков исключений нигде нет.
>>1629629Ты просто ходишь по чужой памяти. В дебаг рантайме есть проверка, в релиз нет, только и всего. То, что оно работает - случайность. Аллокатор так выделил блоки, рядом лежит что-то, что тебе не нужно, на стеке как-то всё сложилось так - всё что угодно. В другой момент тебе будет выдан вектор на конце страницы, а следующая будет без прав на чтение/запись - там и в релизе упадёшь.
>>1629629Он портит память, которая по случайному стечению обстоятельств не используется. А может используется, например ты перезапишешь какие то чужие переменные, а потом порченые данные запишутся в файл.
boost::mp11::find_ifПочему для пустого списка возвращается 0? Теперь каждый раз проверять, что список не пустой что-ли?Хочу что-то вродеstd::tuple<TYPELIST> myTuple;for_each (TYPE : TYPELIST){if constexpr (TYPE::can_use<T>)return std::get<indexof<TYPE, TYPELIST>>(myTuple).Use(T{});}return false;
Анон, спаси от дурки.Какого блять хуя это происходит, где мой перехват ошибки, блять почему он не дает мне ошибку, а дает ебать несуществующие ячейки вектора выводить, у меня кукуха нахуй сейчас слетит блять. Был опыт программирование лишь на си, там такого ни разу не встречал, я не знаю с чем это связано и вообще пиздец.
>>1629989Ну даёт и даёт, а хули нет, платить лишними проверками за безопасность что ли, да нахуй оно надо, шарпистам вон оставь.
>>1629999Так это....там устойчивость программы...всякое такое...разве не через тысячи проверок безопасности устроены нормальные программы? (захотел блять работать на с++, ага щас мне, обоссали уже на try cath ебать).
>>1630007а че такое "ржавая" версия?Я просто лишь начинаю изучать, я не понимаю часть сленга с++'ного.
>>1630018>>1630020Спасибо.Я лишь начал изучать и думал тут как в си, т.е. доступ к элементу лишь по [].Пора читать документацию, а не книжку страуструпа.
>>1630020>>1630018У меня Некст платиновый вопрос.А в чем существенная разница использовать at() и [] для векторов? Т.е. я хочу узнать могу ли я полностью отказаться от [] и перейти полностью на at? или это потребляет больше ресурсов и времени?
>>1630056я перешел, безопасность важнее миллипиздических оптимизаций[] использую только в ассоциативных контейнерах, где он создает элемент
>>1630076Безопасность от чего, от метеорита? Пиши нормально, нормально будет. Если у тебя цикл от 0 до N и ты не меняешь вектор во время цикла, то проверку N надо провести всего один раз, а не на каждом доступе.
>>1630136это ты тредом ошибся, дружок-пирожок, си-тред два блока вниз>>1630142придет петрович и поменяет, а потом удивляемся, почему спутники падают
Вкатываюсь в С++ в Си уже вкатился базово(всё это было ради С++). Сам планирую вкатываться по книжке 4-го издания Бьёрна Страуструпа. Но мне тут на уши пресели чтобы я покупал ёба курс в Coursera за 300кк, мол там гораздо больше полезной и практической инфы. Скажите что лучше книжка или этот курс? Я подсознательно думаю, что не стоит слушать никого и читать книгу, а не платить 5к за поверхностные знания с этой coursera.
>>1630150Блядь, а написать тест, который проверяет, чтобы какой-нибудь Петрович случайно не поменял N нельзя было?
>>1630272unknown location(0): fatal error: in "test_range": KOMU SKAZAL SUKA NE TROGAT N PETROVICH TEBE PIZDA
>>1630168си++ и программирование на си++ совершенно разные вещи. Может быть в страуструпе и написано, что такое си++, но вот зачем все это нужно, там нихуя не написано.
Что можно запилить интересного на крестах? Я вот думал о компиляторе крестовом, который бы работал как просто си с крестами, но чето может другое есть. Операционку свою может, хотя их и так дохуя, по сути.Мысли, господа?
Привет, анон. Почему к методам объекта класса в массиве можно обращаться без индекса через указатель ->? То естьmassiv->metod();это то же самое, что иmassiv[0].metod();Нахуй это нужно? Почему так вообще можно делать?
>>1631091Потому что легаси массив декеится в указатель на первый элемент - наследие си. Не используй легаси массивы.
>>1631369>Приятная Это ты про то, что тот же вектор может сожрать любой тип?Я вот сейчас на leetcode решаю задачки для вкатывания в С++, ну и для себя, меня чот выбесило то, что нужно каждый раз ебошить проверку на выход за пределы.На данный момент я использую самописную вариацию массивов, они у меня в разы удобнее.Из минусов только отсутствие шаблонов, но я их уже использовал, неприятно потому что медоты для разных типов не всегда применимы, ну ещё и отладка. Либо я просто мало знаю.
>>1631377> Это ты про то, что тот же вектор может сожрать любой тип?Я так и не понял о чём ты, но я имел ввиду то, что работа с std::array гораздо удобнее чем с сишным массивом.std::array values = { 10.5, 15.7, -3.0 };for (auto val : values) print(val);против сишногоdouble values[] = { 10.5, 15.7, -3.0 };for (size_t i = 0; i < 3; ++i) // 3? А хули три а не десять? print(values);
>>1631371Обычный, например созданный через newИз того, что читал, там в пользу вектора, что он не теряет память, она оказывается не всегда может выделиться блоком и умолчать об этом.>>1631384Теперь понял
>>1631384>против сишного>double values[] = { 10.5, 15.7, -3.0 };>for (size_t i = 0; i < 3; ++i) // 3? А хули три а не десять?>print(values);И да, я так никогда их не создаю, это странно как минимумint Length = 10;int *Array;Array = new int [ Length ]for( int i = 0; i < Length; i++ ){Array[ i ] = 0;}Ну и далее там описать доступ к элементам с проверкой, но без блядского сообщения, что оп, а вы лезете не туда с обрушением всего и вся.
>>1631391Ты так напишешь 99 раз, а на 100ый забудешь вызвать delete.Если хочется проверок, пиши через .at(i) и лови исключение...
>>1630168C и C++ это не питон\джава\шарп\любая другая хуйня модная чтобы туда вкатиться по какому-то курсу. Здесь порог входа минимальный это смог ли ты осилить книжки Ритчи и Страуструпа. Вот сперва осиливаешь эти 2 книжки, потом ты уже можешь кидать какие-то понты что ты на с сями знаком.Читай книжку Страуструпа, а деньги сееб оставь, эти курсы для домохозяек нахуй не нужны.
>>1631455Ну вот и ответ. Для питона на винде нужна visual studio, которая, очевидно, будет совершенно не у всех; а для с++ все постоянно устанавливают по 3 версии Microsoft Visual C++ Runtime Library, поэтому она тебе в глаза и бросилась.
>>1631457да нет, питон на винду вообще легко устанавливается, модули на него тяжело ставить потому что там консольное управление и там этот пип постоянно выёбывается, модулей каких-то не достаёт часто, пердолиться надо много видимо отсюда и ассоциации с пердолей.а на вот чтобы на с или с++ писать нужно визуалку ставить ну такое официальное средство бесплатное от микрософта.
>>1631459>да нет, питон на винду вообще легко устанавливается, модули на него тяжело ставить потому что там консольное управление и там этот пип постоянно выёбывается, модулей каких-то не достаёт часто, пердолиться надо много видимо отсюда и ассоциации с пердолей.>а нахуй на винде интерпретатор если есть visual studio?Я с двумя разными людьми разговариваю, или ты между сообщениями переобулся?
>>1631384>for (size_t i = 0; i < 3; ++i) #define count(X) sizeof(X)/sizeof(X[0])for (size_t i = 0; i < countof(values); ++i)
>>1631493Постфикс и префикс инкремент, же. В первом случае, сначала выполняется инструкция, а затем идет инкремент переменной, во втором случае - все с точностью да наоборот.
>>1631507Не, для легаси уже давно сделали костыль, недавно включили в стандарт.double values[] = { 10.5, 15.7, -3.0 };auto pr = [](std::span<double> container){for (auto val : container)print(val);};pr(values);
>>1631553Не нужно эта хрень еще будет ошибки компиляции на весь экран, если что-то не так пойдет.Если можно обойтись сишным кодом, то им и нужно обходиться.
>>1626937 (OP)Кстати страуструп выглядит как настоящий и классический программист, а сейчас программистами называют всякое татуированное гавно с разноцветными фолосами хипстерское. АЙТИ строили такие как Страуструп, а не нормалфажные маньки. Тяночки блядь ещё в этом айти сидят, их прямо дохуя там стало.
>>1631565>Если можно обойтись сишным кодом, то им и нужно обходиться.Тогда может просто на с и писать?
>>1631571Тогда просто все так выглядели. Сейчас все по-другому выглядят. В будущем ещё какой-то вариант будет, и все будут выглядеть так, а отцы программирования будут >татуированное гавно с разноцветными фолосами хипстерское
>>1631571>АЙТИ строили такие как Страуструп, а не нормалфажные манькиТешь себя, на момент создания крестов у него уже два ребенка было.
>>1631601А у современных розоволосых дегенератов шаблонных детей нет они все как под копирку чайлдфри, так что всё логично.
>>1631605Тогда нормалфаги были дитясные, сейчас нормалфаги чайлдфри. В 18 веке они бы парики курчавые носили. Так работает мир.
>>1631576Иногда от С++ фич есть профит. Шаблоны, например, при всех их недостатков для контейнеров они нужны. ООП хорошо подходит для ГУИ.Лучше всего писать на С++ в стиле С, используя плюсовые фичи в случае крайней необходимости.
>>1631571Есличо, в 60-70х тян программистов было приблизительно столько же, сколько кунов. Тогда это не была отдельная профессия: ты занимался каким-то STEM-направлением, плюс приходилось программировать. Потом в 80х, когда это оформилось в отдельную специальность, её узурпировали всякие sci-fi бои и прочие нерды, и стало принято, что это чисто мужская задротская профессия. С одной стороны задроты создавали недружелюбную для тянок атмосферу изнутри индустрии, с другой стороны - хуёвый имидж, отчего родители не отпускали своих дочерей учиться на программистов, чтоб те не стали чуханками, поэтому количество тянов в программировании супер уменьшилось буквально за 10 лет.В 90х, с запросом на массовую автоматизацию бизнеса и появлением языков типа жабы в индустрию ввалило куча обычных нормисов, а с середины нулевых с хайпом веба и мобилок вкатываться стали вообще все подряд. Так что вполне закономерный результат, что сайфай бои с задротами остались в прошлом.
>>1631634Немножк не так: раньше программист был чем-то типа секретарши при ученых, и его задачей было переводить математические модели в код. Поэтому куны занимались наукой, а рутину сваливали на тян.Когда же программирование стало серьезным бизнесом, куны им заинтересовались, и быстро вытеснили тней за счет своего превосходства.
>>1631656но тянок дохуя в айти щас. в основном они веб макаки на вротенде и нечета си боярам но все же.
>>1631655Все наоборот. Как только стало (с интернетом) возможным получить навыки, сидя дома на мамкиных борщах, произошел массовый вкат аутистов. Сейчас доля аутистов вообще максимальна.
Да, раньше среди аутистов был больший процент мега-гениев, которым 1. Повезло попасть к нужным нормисам, разглядевшим потенциал2. Их за ручку водили везде от универа до какой-нибудь корпорацииПоэтому пошел миф о каком-то небывалом превосходстве аутистов. Сейчас же, когда каждый аутист идет в айти вебмакакой, и аутистов дохуя, и средний уровень аутистов очень низкий
>>1631681>Ну и что наоборот?Массовый вкат АУТИСТОВ начался после 2005, мудила ты ебаная. Совсем, блядь, аутисты охуели, в русский язык не могут
>>1631676Наоборот. Благодаря интернету нормисы могут копипастить со стаковерфлоу и кое-как работать программистами, и они просто вытеснили аутистов.
>>1631685НОРМИСОВ НАЧАЛСЯ. АУТИСТЫ ЕЩЁ ПО КНИГАМ ДРОЧИЛИСЬ. АУТИСТЫ ВСЕГДА В АЙТИ ЛЕЗЛИ И С ТЫРНЕТОМ И БЕЗ.
>>1631687Вся суть в том что нормалфажное быдло в СИ никак пролезть не может. Потому что тут надо долго учиться, здесь сложно и здесь не так много платютъ. Они видят что в вебе 300кк выучи пару хуёвин и перди себе в стул и бегут все на джавы хуявы и прочее гавно и пусть сидят там и не высовываются.
>>1631688Аутисты до интернета в основном лезли в коллекционирование марок и прочую безденежную поебень.
>>1631687Со стековерфлоу копипастят тупые, а не "нормисы". Аутисты - это социальные инвалиды прежде всего, и перед талантливым нормисом у аутиста шансов минимум, за исключением редких областей типа реверсинга
>>1631696>>1631694Аутисты слово некорректно - задроты. Правильнее назвать задротами таких ребят, на дваче большинство это задроты, которые насмотрились всякого кинца и называют себя аутистами и прочим гавном, на самом деле обыкновенные задроты.
>>1631656Нет, рутиной занимался отдельный человек -администратор, которому единственному можно было трогать комп. Код же набивали как раз те же люди, что и занимались самой предметной областью.
>>1631700На дваче дохуя аутистов (больше, чем в среднем по популяции), но некоторые принимают их за нормальных людей и пытаются спорить.Что касается задротов, то любой сделавший себя сам человек - задрот. Не обязательно просто при этом выглядеть как вонючий чухан. И так появляются те самые хипстеры, которых вонючие чуханы не любят. То есть буквально - выглядишь опрятно, значит ты тупой. Хотя тупым может быть только тот, кто так думает.
>>1631717Хипстеры это не задроты, хипстеры это наивное гавно, они псевдоинтеллектулаы, у них знания поверхностные.
>>1631722Да.Волосы в розовый-зеленый любой другой цвет - ты дегенерат.Пирсинги, проколы и прочее гавно - ты дегенерат.Татуировки - ты дегенерат.Моднявая разноцветная одежда как у павлина - ты дегенерат.Список продолжать могу сколь угодно долго.
>>1631706Всё так, Дядя Боб подтверждает это.https://www.youtube.com/watch?v=ecIWPzGEbFc>>1631709Нет ты, подгоревший мамкин сексист.Хоть бы загуглил матчасть.
>>1631734Если в твоей матчасти написана подобная хуйня, то это хуевая матчасть. Или ты ее прочитал жопой. Или и то и другое."рутиной занимался отдельный человек -администратор, которому единственному можно было трогать комп" - мог написать только человек, который либо 1. Понятия не имеет, как была устроена разработка в те годы.2. Считает увлекательный процесс набивки перфокарт и переписывания математических формул на асм - не рутинойОткуда ты взял здесь сексизм - не понятно, точнее - понятно, ты ебанутый и туповатый
>>1631750>1. Понятия не имеет, как была устроена разработка в те годы.Долбоёб, тебе даже ссылку скинули, послушай взрослого дядю, не позорься.>Считает увлекательный процесс набивки перфокарт и переписывания математических формул на асм - не рутинойНикто не говорил что это не рутина, но эта была часть работы и никаких специальных выделенных людей, которых этим занимались не было и это знает любой, кто работал в академиях, что тогда, что сейчас.
>>1631758>Долбоёб, тебе даже ссылку скинули, послушай взрослого дядю, не позорься.Зумеры совсем охуели, кидают часовое видео как пруфлинк.>Никто не говорил что это не рутина, но эта была часть работы и никаких специальных выделенных людей, которых этим занималисьИменно так. Сидят в отделе два человека, получают одну зарплату, должность одна и та же.Только один занимается творческой деятельностью, а другой делает всю рутину. Обоих все устраивает, потому что первый не занимается рутиной, а второму платят деньги при отсутствии особых талантов.Только вот1. Кто постарадет от автоматизации рутины даже в спокойное время. Например, при массовом переходе от асма к си2. Кого сократят в кризисКак думаешь?
>>1631409Я это всё в классе делаю. Пример на картинках.Да, я в курсе, что занимаюсь хернёй, но это для себя и общего развития, на деле будет использоваться STL.>>1631407А вот про это я хочу узнать больше, потому что память утекает и мне бы причину узнать.Из того, что я знаю, выше писал, что не всегда выделяется блок памяти указанный, а так же догадываюсь, что при пересоздании такого массива старый блок памяти так и остаётся висеть занятым, пусть и удалённым или очищенным.
>>1631904> Да, я в курсе, что занимаюсь хернёй, но это для себя и общего развития, на деле будет использоваться STL.Схожу в ресторан на неделе, а пока поем говна.
Программач, можно как-нибудь сраную студию научить подсвечивать изменённые строки, беря их из гита, как это делает vs code?
>>1631553std::span<T const> -- просто охуенная тема! Давно своим велосипедом пользуюсь, примерно так же устроен. Охуенно удобно его передавать/возвращать вместо всратой конст ссылки на std::vector<T> (или, ещё хуже, пары итераторов), да ещё и по значению! Странно, что раньше не было его.
Ананасы, могу ошибиться тредом, но похуйКто-нибудь может подсказать, как собрать Qt приложение в Azure pipelines? Где вообще об этом можно почитатать? Гуглится какая-то хуйня
>>1632544Я видел, но очень редко. Обычно в нем нет смысла - если индекс может выходить за пределы, то код надо переделывать, а если не может, то и .at() не нужен.
>>1630520это все по 10 книгам размазано тонким слоем. Я раньше не понимал, зачем дрочиться со всеми этими const, namespace и т.д.
>>1630410Мой юный друг, тут есть небольшой парадокс, язык создается для решения задач, т.е. сперва есть ЗАДАЧА, а затем ее решение посредством языка. Когда ты сначала учишь язык, тебе сложно все понять кому это блять на хуй может потребоваться, где? Из-за этого так полезно высшее образование, ты понимаешь какие ты задачи можешь решить и для чего все эти алгоритмы и конструкции. Так значительно проще. Это же работает и когда есть увлеченность, человек хочет написать игру ему горит, он начинает изучать как это можно сделать и приходит к программированию.
>>1632582> Из-за этого так полезно высшее образование, ты понимаешь какие ты задачи можешь решить и для чего все эти алгоритмы и конструкции.Я хз как у вас там в Гарварде, но даже в столичном вузе этого всего нет
Что то я не понял вот этого. То есть при обычном создании экземпляра шаблона класса, например std::vector<std::string> temp;Создаются не все члены класса? И почему отдельно выделены встраиваемые функции-члены?
>>1632718Я так понимаю, речь идет вот о чем:При непосредственном использовании функции-члены заинлайнились, а неиспользуемые функции отброшены.При инстанциировании же для инлайновых функций все равно создались не-инлайн варианты, например чтобы их можно было использовать из другого файла cpp.
>>1632582что ты блядь несёшь, ну смотри допустим я хочу написать игру, но я ньюфаня. и что ты думаешь что я буду гуглить всё как опытный программист, всеякие функции и прочую хуйню? да нет же у меня вообще нет представления что на этом языке можно а чео нельзя, используя твой подход работать когда горит можно такого говна налепить. нужно прочесть книгу о языке в первую очередь увидеть все его функции что на нём можно делать и уже потом можно высирать игру и всё что хочешь. блядь.
>>1632582Этот прав, я игру сделал, а потом уже решил теорию конкретно изучить, иначе скучно.Тот же Си просто нахуй забёшь за день с этими ёбанными строками пердолится.
>>1632757Ну отмечать измененные части он из коробки умеет, в связке с гит хз, какие то настройки контроля версий там точно есть, как и подключаемые модули.
>>1632761>увидеть все его функции что на нём можно делать и Такое может разве что с питоном прокатить. Ну почитаешь ты про шаблоны, что, сразу догадаешься, как можно собственные бинарные операторы делать как в бусте?Лучше освоить некоторую базу, а дальше паралельно что то делать и изучать нужные тебе фичи, все ты все равно знать не будешь.
>>1632791>Ну почитаешь ты про шаблоны, что, сразу догадаешься, как можно собственные бинарные операторы делать как в бусте?маня это основы основ никто не говорит что после книжки ты станешь профи 300кк в наносек, это озы и хорошая твёрдая база, фундманент. алсо в нормальных книжках к материалу ещё даются упраженения.
>>1632812Многое же просто неприменимо в реалиях новичка, он просто потеряется от большого объёма информации.Развитие идёт итерационно, сначала очень простое, затем накопление знаний небольшое, потом по сложнее.Тот анон прав, без ясной цели все эти упражнения полная хуета.Вот тебе пример из универа - есть файл с упорядоченными числами со столбцами через пробел записанными, нужно найти там наименьшее и выдать его в консоль. По заданию необходимо использовать наследование и классы.В чём космический ефект такого задания? Где эти знания применимы? Нахуя?
>>1632761>нужно прочесть книгу о языке в первую очередь увидеть все его функции что на нём можно делать и уже потом можно высирать игру и всё что хочешьТы когда русский язык учил, ты тоже сначала прочитал книжку со всеми правилами и функциями языка, и только потом начал с людьми разговаривать?
>>1632838нет, но когда я учил английский я сперва сделал упор на грамматику и очень не зря, потому что если бы я стал просто учить "как получится" то у меня был бы большой словарный запас, но из-за пробелов в грамматике я бы очень многого всё равно бы не понимал.
>>1632838Когда ты разговариваешь, у тебя во рту нет компилятора, который не дает сказать фразу с ошибкой.
>>1632791> Ну почитаешь ты про шаблоны, что, сразу догадаешься, как можно собственные бинарные операторы делать как в бусте?В нормальных книжках есть реализация собственных бинарных операторов.
Суть в том что в книжке впринципе показывается что есть в языке и как это используется. Нельзя не зная языка и ни разу не открывав на нём книжку сесть и начать что-то писать, ты даже тупо не будешь знать что гуглить. У тебя элементарно не будет представления ни о чём.
Если вывести пустой указатель на строку, то среди кучи мусора будет целый список каких то директорий. Откуда они?
>>1633700Само по себе не плохо вообще ничего, кроме анального спида. Вопрос в том, как ты это применяешь.
Анон, сейчас будет платина.В одной книжке (видимо очень хуевой или нет?) увидел, что типа return 0 в main больше не нужен, типа устарело нахуй, лишь динозавры пользуются.Так ли это? P.s. анон динозавр и ставит return в main
Аноны, а какие есть хорошие книги по алгоритмам (только не Кнутт пожалуйста, я не хочу ебать древний язык под названием псевдокод)
>>1633894Здарова, братишка1) Adam Drozdek - Data Structures and Algorithms in C++ - твердые 10/10, все есть2) leetcode
>>1633908Ты предлагаешь читать техническую литературу на иностранном языке через переводчики? Ты ебанутый?
>>1633893Пиши всегда, что в сишке, что в крестах, не ошибёшься. Это лучше, чем UB UB ГРОБ ГРОБ КЛАДБИЩЕ.
>>1633908>>1633909Спасибо, раньше сидел на codeforce, но недавно перешел на leetcode, что там что тут ощущается просто огромная нехватка знаний в алгоритмах, отчего и спросил.
>>1633894Посмотри Cracking the coding interview (Карьера Программиста на русском), там вроде бы Java но переносится тривиально.
>>1633939По дефолту return 0 дописывается, то есть подразумевается что программа завершилась успехом. Если тебе нужен код возврата, пиши сам.
Чо там нужно теперь по мнению аналитиков знать кодеру? Английский? Матан? Computer science? Физику? Биологию?
>>1633949В школах он хреновый, технический так или иначе приходится самому развивать читая хелпы и мануалы.
>>1633949У меня английский был на 3, и на устном экзамене я рассказывал какую то дичь вроде "In my future I will write a book and grow a tree" под закатывание глаз преподши. А еще у меня в школе не было немецкого, а к первому компьютеру прилагалась пара хандбух на дойче по 1300 страниц, по которым пришлось учить бейсик и ассемблер. Хуй знает, крутись как можешь, it термины плохо переводятся на русский, поэтому все книги что я видел довольно всратые, а писать код все равно на инглише, всякие for, map и stack, никуда от этого не уйти. Можно конечно конкретные алгоритмы по видосам на ютубе учить, но это такое.
>>1633957Времена 00х и 10х, когда можно было крякнуть, что ты знаешь комплюхтер ушли, теперь требования стали намного выше.
Хай гайз. Пишу на ардуинке прогу и столкнулся с таким затруднением:String messenge; for (int i=1; i <= 10; i++){ messenge += String(dht_i.readHumidity()); delay(50); }Смысл в том, что у меня есть 10 переменных с названиями:dht_1dht_2dht_3....dht_10И цикл должен менять i на 1,2,3....Но программа ругается, мол нет переменой dht_i.Это логично да, программа права.Вот собственно хочу спросить совета более опытных юзеров, ибо в интернете особо ничего не нагулил. Кто нибудь может посоветовать как это лучше реализовать? Спасибо
Двач, есть проект на Qt. Хочу сделать так, чтобы у меня два класса назывались одинаково, но лежали в разных namespace. Ну и соответственно .h и .cpp будут лежать в разных папках. То есть как-то так это должно быть:root:....man:........brain.h, brain.cpp....women:........brain.h, brain.cppМожет я чего-то не понимаю, но мне кажется, что с точки зрения языка тут всё норм.Но ебучий компилятор, когда компилирует, хуярит объектники в одно папку и ему похуй на коллизии имён, он просто перезаписывает файл и довольный идёт дальше. А потом линковщик орёт какую-то херню, но его недовольство понятноОтсюда вопрос, как заставить компилятор учитывать возможность коллизий в именах и либо так же по папочкам раскладывать объектники, либо ещё как то это проблему решать? Я не хочу в дублировать префиксы, чтобы в папке women лежали файлы с префиксом women.
>>1633952Думаешь, я в школе знал о том, что мне английский пригодится в жизни? Нихуя. И вообще я прогать начал только в 20.
>>1634069Тогда тебе не повезло. Вообще, best practice - располагать все переменные в начале функции и сортировтаь их в алфавитном порядке.
Аноны, подскажите, есть простой класс Person, хочу его добавить в map<int, Person> persons;пишу вот такPerson p(1, "LOH");persons[1]=p;А мне компилятор говорит, что нужен конструктор по умолчанию. Т.е. я блять не могу через квадратные скобки добавить объект без конструктора по умолчанию?
>>1633925это не UB, в стандарте четко написано, если из мейна нет ретерна, то возвращается 0>>1634076Когда ты сделаешь persons[1488] и такого ключа не будет - он создастся и вызовется конструктор по умолчанию.Так что - либо делай дефолтный конструктор, либо используй .find и .insert вместо []
Является ли корень бинарного дерева частью каждой ветви? То есть, считается ли он при учёте количества узлов в каждой ветви?
>>1634073>>1634128Бля, челы, это не шутка. Это гайдлайны 80ых годов. Переменные все объявлять в начале функции, по алфавиту. Не иметь более одного ретурна в коде, и ретурн иметь в конце функции. Ну и тд. Кодеры под микропомойку до сих пор так пишут.
>>1634227>Не иметь более одного ретурна в коде, и ретурн иметь в конце функции.Ну это ещё имеет смысл - для гарантии NRVO.
>>1634338Ну на практике он именно в такой конфигурации обычно происходит, хотя от компилятора канеш зависит.
Карабасы, кто-нибудь знает, почему в visual studio комментирование двумя слэшами // и комментирование тремя /// имеет разные оттенки зеленого?Этому есть какое-то общепринятое применение, типо яркозеленым комментим "такое-то", а темно-зеленым коментим "другое-то"? Или эту разницу цветов каждый использует по своему?Первое что мне приходит в голову, это визуальное разделение двух разных близкостоящих комментов. Чтобы два близких коммента не сливались в один, ты их разделяешь разными цветами.
Сап, пишу библиотечку для работы со звуком. Пользователь сначала создает экземпляр класса Lib и работает дальше через него. Еще есть класс SoundChain, и эти чейны создаются и удаляются во время работы, а Lib всегда содержит их актуальный список.Проблема такая: все экземпляры SoundChain не связаны друг с другом, и для каждой в отдельном потоке вызывается какой-нибудь функционал, типа "получить звук на выходе". Когда пользователь удаляет один из чейнов (и я у себя вызываю delete soundChain, условно), его функционал все еще может выполняться. И пока этот функционал выполняется, я могу проверить, что раз больше саундчейнов нет, а пользователь вроде как хочет выйти, то я удаляю и экземпляр Lib. И все крашится, потому что функционал пытается обратиться к Lib, а его уже нет.У Lib есть mutex, и я ставлю lock при любом обращении к библиотеке. Но это не помогает в моем случае. Чаще всего эксепшен падает в деструкторе Lib, и в стеке лежит вызов деструктора base mutex.Можно ли как-то проверять для каждого SoundChain, что он сейчас не выполняет какой-то функционал? Или можно ли как-то встать в деструкторе Lib, дождаться выполнения всего функционала в чейных и только потом продолжить удаление?
>>1634547>И пока этот функционал выполняется, я могу проверить, что раз больше саундчейнов нетИ как же ты это проверяешь?> я удаляю и экземпляр LibА надо ли это делать тебе, если создавал пользователь?Ну вообще все можно конечно сделать.
>>1634578Да, была такая мысль, но не уверен, что могу так сделать. Библиотека для использования с игровыми движками, в т.ч. с Unity/C#, и по-моему я могу передавать между Unity/C++ либо простые типы, либо указатель на void.>>1634590Когда в Unity закрывается сцена/приложение, я вызываю Finalize() у своей библиотеки, которая проходит по вектору из чейнов. Как раз перед этим все чейны удаляются, поэтому вектор уже пуст. Но один из текущих потоков уже успел перейти на адрес метода "получить звук" и выполняет инструкции.Собственно, пользователь не создает Lib напрямую: я предоставляю интерфейс, который создает Lib и возвращает указатель на него.В любом случае проблема останется: потенциально можно вызвать деструктор Lib в тот момент, когда чейнов нет, но какой-то из их методов вызван и выполняется. И я не могу придумать, как этого избежать. Как сделать защиту от дурака, чтобы у пользователя либы любого уровня не возникло таких проблем.
>>1634654Хз как ты запускаешь потокиВ любом случае гугли, вариантов десяткиНачиная с подпиcки в ОС на сигнал/сообщение/семафор об этомЗаканчивая новомодными async/future
>>1634657В том-то и дело, что потоки не я запускаю, это происходит где-то внутри Unity, и я не могу этим управлять.
>>1634794Ну все равно ты как-то это делаешь. В юнити C# есть Thread.IsAlive, к нему никак не достучаться?
>>1634824Поизучаю эту тему.В идеале бы, правда, хотелось бы все сложные штуки спрятать внутрь библиотеки и предоставлять максимально простой API, чтобы пользователю не пришлось по мануалу реализовывать костыли.
>>1634930А c++ тут причем? Это особенности операционной системы.В винде ты можешь называть и так и так, это будет один файл. А в линуксе разные. Так что проблемы гарантированы.
>>1635248Как понять почему файл не открывается? Пишу fstream f("FILENAME.TXT")cout << f.failbitВыводит 2
>>1635275Как я понимаю, либо errno, либо ловить исключение.https://stackoverflow.com/questions/17337602/how-to-get-error-message-when-ifstream-open-fails
>>1635280Не либо, а и. Либо fail() как чел выше сказал, либо тайкеч.Но он тебе не даст в эксепшене ошибку, а напишет "iostream stream error". Это системная ошибка. За ошибкой зырь errno.
>>1635282Посмотри последний ответe.whatТам есть и Permission denied, и No such file or directory, и File name too long
>>1635287Для этого надо открывать с флагомfile.open("test.txt",fstream::out)Но я рили советую почитать главу учебника какого нибудь, там все подряд объясняется
>>1635170На экстеншон пофигу, но файл abc.txt и abc.TXT будут разными файлами. Оба текстовые, но разные. Unix-like системы Case Sensitive. >>1635001Винда, кстати, внутри тоже, и файлы постоянно проходят через слой абстракции, чтобы от этого избавиться. Так что в зависимости от того, насколько ты своим с++ полезешь, для винды тоже вполне может разница между .txt и .TXT появиться.
Есть такая строка.for (vector<int>::iterator i = Good.begin(); i < Good.end(); ++i) if (i != Good.end()) o << *i << ' '; В этом месте if (i != Good.end()) происходит vector iterators incompatible. как фиксить?
>>1635475>На экстеншон пофигу, но файл abc.txt и abc.TXT будут разными файлами. Оба текстовые, но разные. Unix-like системы Case Sensitive. А, ну фуйлы-то разные, есть такое. Я думал типа abc.txt будет работать, а abc.TXT нет
>>1635691>>1635733Ща бы переменные большими буквами называть. Конвенцию блюдите, товарищи. Наш язык и без этого читать невозможно
>>1635803А в любой же переменные camel case с маленькой, не? Ну или с маленькой и с подчеркиваниями...
>>1635773Так а я-то тут причем, я из его кода взял имя переменной.>>1635733Круто, что вектор, а что в тебя внутри?Ругается на несоответствие итераторов, будто ты хочешь итератору вектора интов присвоить итератор вектора даблов, например.
В тему конвенций и камел-блядь-кейсов.Анон, посоветуй Code Style Guide чей-нибудь.Давным-давно читал гугловый и lockheed martin'овский (для встраиваемых систем).Но после работы в настоящих проектах стиль написания кода стал соотвествующим.
>>1636277Пишу на Doom3 code style от Джона-Наше-Все-Кармака, с очень небольшими изменениями.Пробелоблядям перо под ребро и хуй в жопу.
vector<bool> input(n);for (int i = 0; i < n; i++) cin >> input;Почему нельзя так? С интом можно, а булом нельзя?
>>1636441Потому что это ебланство. Вот "123" - это true? А "0123"? А "хуй"? Вот и в комитете не стали заморачиваться. Пиши через getline и смотри на строку, или на крайний случай через boolalpha, но не обосрись с локалями.
>>1636441> С интом можно,Только делает не то что ты думаешь.>а булом нельзяДля вектор була своя хитровыебанная специализация пакующая по 8 элементов в байт, работа с элементами через прокси класс.
>>1636441>vector<bool> input(n);>for (int i = 0; i < n; i++) cin >> input;>Это не компилируется и с интом
Как вынести тело метода за тело класса? Зачем это может быть нужно и когда и почему этого нельзя избежать?
>>1626937 (OP)Сап, есть один класс, шаблонный, внутри ещё один public-класс (нешаблонный),в этом классе шаблонный (только чтобы передачу по универсальной ссылке сделать) метод operator(). Т.е.template <typename T1=float, typename T2=uint32_t, enable_if_t<...>=0>class A {public: class B { template < typename vec, enable_if_t< decay(vec) == vector<T1>, tipa togo...> > vec operator()(vec && input) {...} .... }; ...};В общем, не могу написать специализацию метода operator(), если T1 и T2 принимают дефолтные (float, uint32_t) значения. Как эо вообще сделать?Нельзя переписывать весь вложенный класс B, не хочу.
>>1636795Всмысле нельзя? Что это для меня значит?Очевидно, что класс B тоже шаблонный.Когда я говорю, что он "нешаблонный", я просто имею в виду, что для него не написано отдельного template<>, но класс B зависит от типов T1 и T2 внешнего класса А.
>>1636803Один тип арифметический, другой тип аналог size_t.Ну внутри классов очень много всяких таких данных для расчётов.>>1636804Кек, нет, нейрон очка.
Что кек? Отвечай нормально. имхо если типы никак не связаны это уже лакмусовая бумажка что что то тут не так.
>>1636807Ничего не кек...В чём проблемы, если T1 и Т2 никак не связаны?Всё равно класс будет работать, если T1 арифметический, а T2 беззнаковый.Какие проблемы?
Проблема в том что один из этих типов тоже должен быть темплейтный иначе внутри класса они не смогут собраться в какую либо конструкцию и у тебя класс будет делать по сути две разные вещи
>>1636813Я тебя не понимаю, T1 и T2 - простые типы.Класс A содержит вектора T1, размерами всего оперирует с помощью T2.Класс А содержит вектор<B>, поэтому класс B и объявлен внутри, он больше нигде не нужен.Класс B тоже дробит арифметику T1, размерами оперирует в T2.Вот и... всё. Господи, где я провинился?
Я примерно понимаю. Ты не сможешь обьявить переменную типа класса А, так как походу ты не сможешь впихнуть в это обьявление тип B
Товарищи.Надо написать на сишке.(вообще на чём угодно, но я только си чуть-чуть понимаю) конечный автомат лексического анализатора. Для лабы. Преподаватель сказал что автоматом написать будет проще. Не особо верю, но требуется использование автомата.Что можно посмотреть, почитать?Непонимать предмет. Не понимать автомат.Находил код. Там охуительный код длиной миллион символов из кучи кейсов.https://github.com/nohajc/.KEK-on-Rails/blob/master/compiler/lexan.cpp
>>1636822Бля, ну пчелик...https://ru.wikibooks.org/wiki/%D0%AF%D0%B7%D1%8B%D0%BA_%D0%A1%D0%B8_%D0%B2_%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D0%B0%D1%85/%D0%9F%D1%80%D0%BE%D1%81%D1%82%D0%B0%D1%8F_%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BA%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B0
>>1636814> Вот и... всё. Господи, где я провинился?Написал какую-то залупу, которую даже сам не до конца понял. Попробуй заново
>>1636818Я все могу объявить, код рабочий, блять.Я не могу специализацию метода класса В написать, чтобы дернуть С-функцию, которая АВХ-оптимизированна.
>>1636887ты про последний пост или про классы?Классы самое то, долго над ними думал.Почему я не могу просто для конкретного инстанса шаблона написать метод, но не для класса А, а для класса В - непонятно.
>>1636882Как это нет?Я что, весь класс должен переписывать?Что оборачивать-то?Вынести за класс некую обобщенную функцию, из оператора() ее дергать - и уже для нее написать специализацию?
>>1636893так сишная функция принимает конкретный тип float. У тебя может быть обобщённый инстанс как с флоатом так и с другим типом. В общем любая обобщённая функция должна в конечном итоге вызывать обобщенную функцию, если она вызывает функцию с конкретным типом то он нуждается в явном привидении что делает бессмысленным саму идею
>>1637086дополню что это обычные функции должны вызывать обобщенные, если происходит наоборот то это в корне не верно.
>>1637086Ещё дополню. Даже так>любая обобщённая функция должна в конечном итоге вызывать обобщенную функциюЛюбая обобщённая функция должна вызывать ещё более обобщённую.Кому это я всё пишу?
Сап, гайзы. Короче, миниопрос. Интересно тип. Что вы пишете? Какие коммерчисие проекты пишут двачеры? Начну с себя:Майкросервисное говнище, связанное с банковским делом
>>1636364На С++ очень сложно придерживаться ей, уродливый код выходит, лучше снейк-кейс. А вот для сишечки самое то.
Значи так, ранг такой:Гут: Алгоритмы для гугла, хайлоад, веб-сервера, ну вы поняли.Пайдот: микрокаллНу такое: игрушечкиПолный пиздец: Отечественный десктопный софт qt(бонус если на winapi)Ватафак блять: микропенисы
>>1637174> Пайдот: микрокалл> Ватафак блять: микропенисыМикрокалл это микросервисы, а микропенисы это микроконтроллеры...
>>1637194Ну, то есть, кроме того что её придумали евреи? чтобы сделать тебя геем?Ну как бы тебе сказать... Гейский недо-DSL со своим Q_OBJECT, слоты и сигналы просто убогие, библиотека Network калл. Да и вообще вся их ИКОСИСТЕМА меня просто выносит, ну что это за пиздец? Если я хочу просто библиотеку для юая, нахуй вы мне решили всю stl переписать своей парашей?Ещё и на modern C++ они большую бибу кладут. Бля, вот рили, сделайте норм либу для отрисовки кроссплатформенного гуя и ВСЁ. Не надо qmake изобретать, не надо всё это.
Почему во всяких контестах такой большой лимит по памяти? 256 мегабайт. Пиздец же, не? Почему не 10? Не 2?
>>1637314Помнится, в шкалке на олимпиадке по информатике было 2. Но это тоже сравнительно дохуя для задач, решающихся в 5 переменных.
>>1637379Я помню одну олимпиаду с лимитом вроде в 8Мб. Там была задача, где поле в память не влезало. Пришлось паковать биты - единственный случай в моей жизни, где мог бы пригодиться вектор булов, но в то время я писал только на С и отлично себя чувствовал
>>1637536Деструктор для этого и существует как бы. Его задача - чистить память, связанную с объектами класса.
тип метод(); Так можно делать в описании класса? Метод возвращает переменную(объект) указанного типа.
>>1637567Как раз про них и вспомнил, но решил тут спросить, может про this что подскажут. Что за тпк? И почему не делай? Покажи на примере куска куда, как именно не надо, ты говоришь, делать. И почему.
>>1637572> тпктак> И почему не делай?Про это уже много чего написано.http://alenacpp.blogspot.com/2009/05/delete-this.html
>>1637171Инсталляторы.Гуй на известном в узких кругах фреймворке и тонны логики по общению с системой, драйверами, сервисами.
>>1637572>Что за тпк? Транспортно - пусковой контейнерДля стратегической стрельбы в ногу стратегической байторакетой.
Хочу тут пройтись по БД, используя итераторы. Никакими библиотеками, кроме сишного sqlite3, не пользуюсь. Итераторы - для того, чтобы не возвращать целый вектор, который может не влезть в оперативочку.И вот, оформляя API, столкнулся с тем, что как-то уж очень сложно получаются итераторы. Я все правильно делаю? На каждый запрос получается нужно создать аж по два класса: класс, реализующий простые однострочные begin/end, и класс, реализующий операторы.
>>1638154По сути это создание ссылки на указатель. Такой синтаксис. Тоже самое в аргументах функций происходит, когда ты передаешь аргумент по ссылке - там объект кастится в ссылку на этот объект. Конретно в таком как у тебя виде его мало используют. Но оно со всем работает https://ideone.com/F99SH3
>>1638065> класс, реализующий простые однострочные begin/endВ общем случае это будет класс контейнер который хранит колекцию результатов. А так как у тебя контейнера нет то у него мало работы. Скорее всего можно легко сделать его шаблонным.
уважаемые крестоносцывопрос такойя переехал к вам с шарпов, поэтому не все шарю. Как трушнее подключать либы: через симейк или просто ебашить в папку с проектом?
Сап Аноны, недавно вкатился в изучение C++ и столкнулся с такой проблемой, getline() не работает в switch. Поискав решение проблемы в интернете, я нашёл решение проблемы, но внятного объяснения почему так, а не по другому и как это вообще работает - я не нашёл. Аноны, подскажите, что такое cin.ignore(), cin.clear() и cin.sync(). С меня чай.
>>1638310>getline() не работает в switchПотому что switch работает только на целые числа, а не строки.Потому что getline() не возвращает значением строку, а записывает ее в параметр.>cin.ignore(), cin.clear() и cin.sync()Этим все равно никто не пользуется.
>>1638314Я понимаю, что в switch целое число, речь о том, что я не могу считать строку в свитче без выше перечисленного. В моём случае cin.sync и cin.cleaar
>>1638316У тебя cin перед switch, да? Он передает из потока только символы без \n. Когда доходит до твоего гетлайна, он сразу берет из потока этот \n и ты не можешь ничего ввести поэтому.Добавь сразу после строки с cin cin.ignore();
>>1638385 cin.ignore отбрасывает символы, вплоть до указанного числа, или до тех пор, пока не будет достигнут разделитель (если он включен). Если вы вызываете его без аргументов, он отбрасывает один символ из входного буфера.Например, cin.ignore (80, '\n') будет игнорировать либо 80 символов, либо столько, сколько они найдут, пока не нажмет на новую строку.cin.sync отбрасывает все непрочитанные символы из входного буфера. Однако в каждой реализации это не гарантируется. Поэтому ignore - лучший выбор, если вы хотите согласованности.
Приветствую, запускаю с++ код с помощью VS Code, вроде все было норм (хотя я овердофига времени потратил на установку компилятора(ов), а в итоге через расширение Code Runner запускаю код (хз, нашло ли это расширение у меня компилятор и его юзает или там встроенно что-то)) Когда запускаю через Code Runner , там видно, что это g++ (который я поставил и пытался подружить с вс кодом, но чет не вышло). А у g++ есть такая фишка как #include <bits/stdc++.h>, но встроенный IntelliSense жалуется на него (он от майков). В настройках плагина С++ пытаюсь изменить положение компилятора, чтоб интелисенс не жаловался, но вылезает такая проблема. Кавычки везде пробовал - не работает. В гугле что-то непонятное (сори если туплю). Можете помочь? Или есть способы запуска с++ кода лучше, чем те, что у меня?
Анон, расскажи про C++ и веб-сервисы. Как так получилось, что ничего не получилось? Вот можно же FastCGI использовать, в теории очень даже пиздато будет, почему же всем похуй?
>>1637666Я так и сделал, лютый кастыль, но работает. Хотелось бы рассмотреть другие варианты.>>1637677Вообще эту проблему должен решать темплейт аргумент дидакшен, но чето нихуя. Пофиксил через decltype(lambda).std::function оверхед + оверинжинеринг, вот когда std::function_ref запилят, тогда можно будет подмуать.
Ебал я эти хитровыебанные коллизии скобочной инициализации и списков инициализации. Хули нельзя было запилить нормальный синтаксис {{1, 2, 3}}, а не играть в угадайку, какой конструктор вызовется?
>>1638417Зачем этот пердолинг с компиляторами и расширениями? Просто ставишь вижуал студию комьюнити, и всё.
>>1638419>Qt Creator >QtГовнари пытались косплеить Эппл с их>"изобретем свой язык со своими шлюхами? njkmrj e нас"и предсказуемо обосрались. Кому нужна анальная залупа на неанальной платформе.
>>1638870IDE то тут причем, дебилушка? Они уже взаимодействие с языковыми серверами прикрутили, что бы в идеале вообще на любом языке писать можно было.
>>1638884>взаимодействие с языковыми серверами прикрутилиКакие еще, в жопу, сервера.>что бы в идеале вообще на любом языке писать можно былоВот когда воплотится в реальность, тогда и кукарекай, а пока свои шизоидные фантазии держи при себе.
>>1638892>>1638906>>1638908Чёт в голосину с крестоблядей, дефающих своё говно мамонта одной и той же мантрой РРРРЯЯЯ НИАСИЛЯТОРЫКрестобляди, крестобляди never change. мимошёл
>>1638711все получилось? Бэк фейсбука на С++. бэк яндекса на С++, дохуя подобного ХУЙЛОАДА в больших конторах - на С++.
>>1638955и еще есть слушок, что Озон суровый хуйлоад хочет перевести на кресты с ГОвна, с приходом Александра Фокина
Почему я могу сделать специализацию шаблона хеш класса для своего класса, но например для string не могу?
>>1638955>>1638964Ясно. А в каком виде все это делается? Типа, крутится на веб-сервере какое-нибудь java-приложение, которое обрабатывает HTTP-запросы; а когда этому приложению надо что-то суровое посчитать, оно по RPC обращается (напрямую или через очередь сообщений) к уже висящему в памяти написанному на плюсах 32-поточному чудовищу?
>>1639333Подожди C++30, там будет полноценный компайлтайм, и можно будет перед компиляцией получить весь исходник в виде массива байт, передать его своему коллбеку и изменять как хочешь. Как в Perl
У меня есть шаблонная функция с такими параметрами (std::vector<T>&, T), и компилятор почему то не может подобрать шаблон при вызове ее с аргументами (vector<string>, "test"), почему?
>>1638808А типа lambda это не оверхед + оверинжинеринг? Ок лол. Ты бенчмарки погоняй, говорят что если с параметрами не мудрить сильно то std::function работает так же быстро как и виртуальная функция.
>>1639492Вот бы ещё все уже скомпилированные либы и все их копии магически перекомпилировались новым компилятором. А сейчас придётся очень внимательно следить за версиями всех либ, и не дай бог ещё придётся с новыми либами вынужденно юзать старые либы, когда новые версии не устраивают на уровне апи.
>>1639492Писателям laba1 ничего, а банкам стремно перекомпилировать весь код, а вдруг что то не соберется.
>>1639495Хуйня всё это. Какие есть варианты:1) либа опенсорс - взял и пересобрал2) либа не опенсорс, есть исходники - взял и пересобрал3) либа не опенсорс, нет исходников - еби вендора, пусть пересобирает. Почему может не пересобрать? Потому что это древнее говно, тогда его нахуй нужно гнать, из проектов-то с c++23. Либо потому что вендор еблан, тогда бабло его покарает
>>1639527Пока не выбьешь, не обновляйсяКстати, вот все говорят что у них там какая-то хуйня отвалится, если сломать ABI, но есть реальные примеры? Мне что-то сложно представить серьезную контору, которая покупает либы без исходников.
>>1639576Почитай то, что Титус Винтерс про гугл писал, какие там эффорты должны быть при смене АБИ. Это при том, что Винтерс дико топит за смену АБИ
>>1639673Неймспейсы специально придумали, чтобы снизить вероятность конфликта имён, а не чтобы их потом выключали. Вот будет в двух либах функция с одинаковым именем, и всё, пиздец, придётся искать, в каком из инклудов она проскочила. А с неймспейсами этого не будет.Так что вместо using namespace лучше всегда явно писать std::string, std::cout и т д.мимо
>>1639689using namespace тоже ведь не просто так придумали, в небольших программах, как у анона выше, нет ничего предосудительного использовать это.
>>1639698Да. И всё же лучше изначально готовить себя к большим проектам, где облегчить себе жизнь не удастся.
>>1639465Что за чушь ты пишешь? Лямбда инлайнится в обычный вызов функции с параметрами на стеке, а std::function кроме виртуального вызова имеет еще дохуя бойлерплейта. Я бы и с указателем на функцию остался доволен, но тогда придется еще и аргументы отдельно в tuple хранить, а лямбда удобно все в один callable объект пакует.
>>1626937 (OP)Как в Visual Studio 2019 Preview создать пустой проект WDM драйвера? Что для этого надо установить и как настроить среду?
расскажите почему Good night? какие подводные, как то повлияет на кроссплатформенность? на что вообще повиляет, что такое ABI, для чего нужно?мимо нуфаг
>>1640144> что такое ABIГрубо говоря, изменится формат dll-ек, и новые не будут совместимы со старыми.> для чего нужноДля совместимости одних бинарных модулей с другими.> какие подводныеВыше обсуждали.> как то повлияет на кроссплатформенностьНет. Раньше на всех платформах было всё было плохо, а теперь будет очень плохо.> почему Good nightНет.
>>1640150спасибо добр человекеще хотел бы спросить у всех, я кирилл, хочу игры учебные делать, но на linux, соответственно какой компилятор юзать, и какую либу
Есть ли способ обмазываться полиморфизмом подтипов "извне"? Скажем, есть функция, принимающая указатель на Base, хочу сделать спецификацию для Derived1, Derived2,..., DerivedN.Или только AD-HOC и dynamic_cast-ом приводить к нужному типу перед вызовом?
>>1640150>Грубо говоря, изменится формат dll-ек, и новые не будут совместимы со старыми.Хмм, ну я и раньше считал, что кресты через длл работают только если всё откомпилено одним и тем же компилятором с одними и теми же настройками. То есть, ничего не изменилось?
>>1640440Если сменить abi то количество комбинаций настроек удвоится, очевидно. Как сейчас есть mutithread/singlethrrad, debug/release, станет еще prec++23/postc++23
Вот у меня есть шаблонная функция, которая должна принимать класс и создавать его экземпляр внутри себя:template<typename T> int Func() { T t; t.func();}class T {public: void func();};Func<T>();Но пользователь может передать не имя класса, а экземплярT t;Func<t>();Как сделать чтобы он этого не мог? Понятно что оно всё равно работать не будет, но хочется сделать красивееесть же всякие std::enable_if
>>1639275>return 0;>не?по стандарту функция int main() не обязана возвращать что-либо (и это единственное исключение)
Посаны. Знаю Джаву. Точнее думал как, вот выучу её, весь учебник и будет охуенно. Но получилось немного не круто. Не зашла она в итоге, но что-то простое накалякать могу. За какое время можно освоить плюсы более-менее, чтобы устроиться на работу джуниором/стажёром?
не конпеляется в vs 2017 community, шо надо установить в vs installer 2017 для win 7, скочял тонны говна так оно еще и не работает, на втором скрине отмечено шо я установил, третий скрин продолжение второго
>>1640689nlohmann json>>1640531Очень похоже на захардкоженные пути в проекте на виндовс сдк определенной версии.
>>1640531>>1640699Да нет, тут пациент пытается скомпилить некрокод под древней студией под древней ОС
>>1640709Предпоследняя версия винды и студии это теперь древняя? Ну это уже толстота, алсо у меня все работает на вин7+vs2017/vs2019
>>1640744Вроде бы по спекам может, но на практике не используется из за какой то уязвимости в браузерах.
>>1640793>>1640709>>1640699ну у мну всё работает теперь, нахуевертил там чот, нахера столько легаси пакетов просто в ахуе, в 7-й венде выбрал сдк для вин 10, фак логик, куча всякого говна накатил чтобы unreal project сконпелять. Вин 10 религия не позволяет ставить, надо будет на линухе затестить.
Всем здрасте, решил я вкатится в программирование и выбрал собственно язык С++ и у меня такой вопрос... С чего начинать? Я скачал на рутрекере видосы с обучением для новичков, посмотрел их, усвоил, но что дальше? Во всех гайдах рассказывают только про циклы, массивы и т.д И вот уже пару дней сижу и думаю как дальше изучать то, может вы что подскажите.
>>1640447>пользователь может передать не имя класса, а экземплярПри желании может хоть хуй сломать об одеяло. Тем более что передать-то и не может. Ты сам-то пробовал скомпилировать что написал?
>>1641893Все, нашел, это C++11 фича. Кстати как vector инициализировали до 11й версии? Только через push_back?
>>1641265>решил я вкатится в программирование и выбрал собственно язык С++Зачем? Больших денег ты тут не найдешь, если не суперспец в определённых предметных областях, вкатываться долго, вакансий со временем всё меньше, зарплаты падают.>С чего начинать? Со вката во что-нибудь из java/js+react/golang/php. Там не нужны серьезные знания в камплюхтер саенс, вкатывание может занять год или даже меньше при должном усердии.
>>1642048Катись на хуй в java. Плюсы это хуевый первый язык для программирования (как и си). Сейчас везде объектная параша, так что я бы советовал такой путь1. Python, сразу можно блять получить результат, пощупать программирование, твое не твое. Познакомиться с объектами, скриптами, структурами данных и админ и инженер и хуй пойми кто может попробовать.2. Тут наверное Java - можно просто палкой потыкать пару месяцев, синтаксис классов, хуясов и т.д.3. Си - для с++ это обязательно, только парадокс, си перед си++ мешает программированию на си++ т.к. объектная модель должна крепко уложиться в голове, а си этому не способствует, зато идет лучшее понимание архитектуры и вообще всего си++.
>>1642184Но С — отличный первый язык программирования. Там всё такое.. програмистское. А питон — плохонький. В С всё понятно, вот тебе скобочки, вот тебе индексы, а в питоне какие-то значимые пробелы, листовая механика циклов. Непонятно, что важно, а что нет.
Работотадель в одном из требований к тестовому указал "написать инструкцию по сборке". Что это может означать, при условии, что в проекте 3 файла и все заголовки из STL?
Та как учить этот ебаный многопоток то блять?!Уже больше года изучаю плюсы, в шаблонах освоился, в ООП, паттернах и прочей хуйне освоился, даже к смейку и уб привык. А вот многопоток меня всегда стороной обходил, всегда хватало асинкнуть что-то или детачнуть тред, и в принципе на том и доволен. А вот сейчас решил изучить эту тему и вообще нихуя не понимаю что мне делать. Аноны, как вы мастерили многопоток? Я устал пилить threadsafe_контейнернейм и тредпулы, посоветуйте что-то реальное задачу то есть, где будет упор именно на многопоток, чтобы не сильно на другое отвлекаться.
>>1642865Алсо, фича действительно неплохая, теперь можно в 20 строк написать constexpr счётчик на лупхолах, который работает на всей троице.
Вроде проблема решена, но ведь нет. Как мне этот err реюзать? Не буду же я каждый раз новую переменную с новым именем делать.
Пытаюсь решить задачу: https://open.kattis.com/problems/addingwordsтакое решение не проходит: https://ideone.com/KVWt7LМожете подсказать почему? на всякий случай: std::map'ом пользоваться не умею
Аноны, простите за тупость вопроса, но как реализовать платформо- и кодировко- независимое сравнение символов? И еще вопрос, path путь и в windows и в linux же использует ASCII?
>>1643740>path путь и в windows и в linux же использует ASCII?Нет, в общем использует Unicode... Посмотри в сторону std::filesystem, но я слышал он не на всех платформах поддерживается пока.
>>1643698Причем тут ошибка? Т.е ты мне предлагаешь городить дохуя вложенных if конструкций? Это code smells, при ошибке я хочу завершить работу функции, в ином случае продолжить. if (err) return err, а не if (!err) ... .
>>1643864И как ты предлагаешь области видимости "забыть" про переменную? Давай предложи свой синтаксис, поугараю немного
>>1643864>Причем тут ошибка? Т.е ты мне предлагаешь городить дохуя вложенных if конструкций?Блядь, тебе вирус уже мозг съел.
>>1643905Стандартный windows style C-code. >>1643908Получится вот такая хуйня, а если там еще какие условия есть, то вообще лапша лапшой. https://godbolt.org/z/kAjWPVКороче это неюзабельный вариант.
>>1643929Долбоёб...auto ret = foo();if (ret.second){const auto &val = ret.first;MoYaFuNkCiYa(val);...}auto ret2 = bar()...Итогдалие
>>1643931> ret2> const auto &val = ret.first;Ну так это же говнокод, причем лютый. Лучше уж просто писать на сях в таком случае.
>>1643864Вообщет err1=func1()if(err1) return errerr2=func2()if(err2) return err2func3()return d3тоже смеллс
>>1643939Вообще то там:my_error err;err = func1();if (err) return err;err = func2();if (err) return err;...Разница есть как бэ.
>>1643942return должен быть только один в конце, это полезно для оптимизаций и для поддержки безопасного кода.
Компилятор VS2019 сыпет ошибками LNK2019, я так понимаю это что-то с линковкой, но не пойму что не так. Указывал путь до папки с либами в SDK, но не момогает. Как фиксить?
>>1643944Первый раз слышу. А ну покажи такой гайдлайн. В интернетах пишут что это спагетти код. https://softwareengineering.stackexchange.com/questions/18454/should-i-return-from-a-function-early-or-use-an-if-statement