На крестах нет работы. Вот пруф. Если все остальные языки примерно одинаково набирают популярность в рабочие дни и теряют в выходные, то у крестов эта кривая гораздо более сглаженная. В рабочие дни его вон гуглят намного реже, чем C#, но при этом в выходные дни даже немного чаще. Потому что язык для фана/обучения, а не продакшна.
Аноны, сейчас читаю правила чистого кода, и тут мне попалась такая конструкция как "else if".
Вопрос - она сейчас как-то применяется? Я вместо нее всегда пишу просто if. Или тут дело в чистом стиле, и писать "else if " больше надо не для компилятора, а для других людей, которые в будущем будут читать твой код? Нахуй нужен этот else if короче?
>>1627181 Этот график показывает только то, что %языкнейм% гуглят чаще, чем цпп. Что как бы наводит на мысли о том, что цпп-кодер загуглил и нашел работу, а питоноблядь будет каждый день гуглить, пока его не возьмут на стажировку
Вчера смотрел видос с какой-то конфы, там была статистика по плюсам. Так вот в мире всего 4млн людей пишет на плюсах, 4млн КАРЛ! Это же пиздец как мало! И что самое главное ~1млн это прогеры из СНГ. И главное, докладчик отметил, что в СНГ самое высокое качество кода в мире. С++ можно смело называть РУССКИМ языком программирования!
Как писать правильный код без ошибок с первого раза? Код работает так как надо, только после пошаговой отладки. В реальных крупных проектах, как я понимаю, дебажить не выйдет.
>>1627959 Попробуй писать на скорость. Выбираешь мелкую задачу минут на 5..40, которую знаешь как делать (без такого, что тебе нужно листать документацию, смотреть схемы или ещё чего), и буквально по секундомеру засекаешь время стараясь успеть за минимальное. Запускать код можно только один раз (или несколько, если в задаче есть хорошо выделенных этапов - по разу на этап), точнее, после запуска его нельзя изменять, только проводить тесты и проверки. Если не получилось - удаляешь всё. После неудачной ошибки к этой же задаче можно возвращаться только через некоторое количество других задач. Из-за того что цена ошибки выше (нужно полностью переписывать всё) через некоторое время у тебя будет рефлекторная реакция, выработается так сказать аллергия на ошибки. Но это помогает только от глупых ошибок, вроде < вместо <=. А ещё я с дивана говорю и у меня только мой опыт есть, ничего лучше чем попробовать предложить не могу.
Не знаю, где еще спросить, спрошу у вас. Нуб, программирую ардуино. Как бы вы сделали счетчик в интервале 0-n с изменяемой скоростью? Я видел, как человек делал его через остаток от деления millis/скорость на n. Но мне этот вариант не подходит. Сам бы я сделал через n++ и delay(скорость). Еще есть вариант сделать таймер через millis - millis, и если он будет больше скорости, тогда n++ Какие еще есть варианты?
>>1628932 >>но по-любому есть хуже, как всегда) >Чистый винапи же. Ну мы всё же про фреймворки. А так он как раз и плох (но при этом внезапно иногда и хорош) в том числе тем, что отовсюду торчит винапи (модель сообщений в основном, и модель окна (HWND))
Антох, сижу полгодика без работы, посоветуй чего бы такого поковырять. Qt - как-то разлюбил, благо стандартная библиотека встает с кален. Каждый раз нужно все больше поводов включать Qt в проект. boost:: - не ковырял ни разу, но, как я вижу, в прям серьезных местах серьезные дядьки хотят именно boost. Как думаешь, стоит? А хули там полезного осталось - ASIO, BEAST? Еще с базами никогда серьезно не работал, так уж жизнь сложилась. Что бы ты посоветовал? Postgres для кровавого интерпрайза и SQLite для себя любимого? gRPC - твое мнение об этой поеботе? Как по мне, так шок, качественно сделано. Аж уважением к Гуглу проникся. Хочется приехать к офису в Сан Франциско и кинуть им зигу. Не, наверняка там камни подводные есть помимо того что бинарь из мегабайта разрастается до десяти, я промышленно не применял, вот и спрашиваю тебя.
Аноны, а та гитхабе есть какая-то система ботов, которые автоматически скачивают твои проекты, чтобы проверить на копирайт? Или кто эти люди, что качают мои проекты? Недавно кстате увидел, что на меня фоловнулась хр местной компании, каковы могут быть ей мотивы?
Дальше, если хочешь быть соверешенным тогда делай так. И конечго дело не в бгаотсвте а в отношении в нему. и человек который почутвствлат это пирзанние, он рди этого призвания оставляет все, потму что надо. Многи наши прихожане могут подумать, уменя нет богатсва, я еле еле концы с концами свожу. Нет
У меня есть два разных класса, каждый из которых может иметь некоторое одинаковое количество объектов. По задания надо сделать "массив пар этих объектов" в другом классе. Что такое "массив пар объектов"? Как его сделать, если он только один, а класса надо записать в него два?
>>1629127 > А хули там полезного осталось - ASIO, BEAST? Spirit ничего так (по крайней мере в ипостаси Qi), давно пользовался Всякие MPL. Fusion и Hana. Лично видел, как на них творятся чудеса точнее, нечитаемый ёбаный пиздец
Так, ананасы Есть какая-нибудь либа для форматирования? Желательно состоящая из одного заголовочного файла fmt не предлагать, проект маленький Её такую тащить ни к чему
Сап. Разбираюсь с чужой программой, и у нее странное поведение. релизный билд работает так, что никаких вопросов нет. Дебажный же выдает эксепшен при работе с одним из векторов: выход за границы. Проверяю все и действительно так, код работать не может. Но в релизе работает. Это как так? Никаких обработчиков исключений нигде нет.
>>1629629 Ты просто ходишь по чужой памяти. В дебаг рантайме есть проверка, в релиз нет, только и всего. То, что оно работает - случайность. Аллокатор так выделил блоки, рядом лежит что-то, что тебе не нужно, на стеке как-то всё сложилось так - всё что угодно. В другой момент тебе будет выдан вектор на конце страницы, а следующая будет без прав на чтение/запись - там и в релизе упадёшь.
>>1629629 Он портит память, которая по случайному стечению обстоятельств не используется. А может используется, например ты перезапишешь какие то чужие переменные, а потом порченые данные запишутся в файл.
Анон, спаси от дурки. Какого блять хуя это происходит, где мой перехват ошибки, блять почему он не дает мне ошибку, а дает ебать несуществующие ячейки вектора выводить, у меня кукуха нахуй сейчас слетит блять. Был опыт программирование лишь на си, там такого ни разу не встречал, я не знаю с чем это связано и вообще пиздец.
>>1629999 Так это....там устойчивость программы...всякое такое...разве не через тысячи проверок безопасности устроены нормальные программы? (захотел блять работать на с++, ага щас мне, обоссали уже на try cath ебать).
>>1630018 >>1630020 Спасибо. Я лишь начал изучать и думал тут как в си, т.е. доступ к элементу лишь по []. Пора читать документацию, а не книжку страуструпа.
>>1630020 >>1630018 У меня Некст платиновый вопрос. А в чем существенная разница использовать at() и [] для векторов? Т.е. я хочу узнать могу ли я полностью отказаться от [] и перейти полностью на at? или это потребляет больше ресурсов и времени?
>>1630076 Безопасность от чего, от метеорита? Пиши нормально, нормально будет. Если у тебя цикл от 0 до N и ты не меняешь вектор во время цикла, то проверку N надо провести всего один раз, а не на каждом доступе.
Вкатываюсь в С++ в Си уже вкатился базово(всё это было ради С++).
Сам планирую вкатываться по книжке 4-го издания Бьёрна Страуструпа. Но мне тут на уши пресели чтобы я покупал ёба курс в Coursera за 300кк, мол там гораздо больше полезной и практической инфы.
Скажите что лучше книжка или этот курс? Я подсознательно думаю, что не стоит слушать никого и читать книгу, а не платить 5к за поверхностные знания с этой coursera.
>>1630168 си++ и программирование на си++ совершенно разные вещи. Может быть в страуструпе и написано, что такое си++, но вот зачем все это нужно, там нихуя не написано.
Что можно запилить интересного на крестах? Я вот думал о компиляторе крестовом, который бы работал как просто си с крестами, но чето может другое есть. Операционку свою может, хотя их и так дохуя, по сути. Мысли, господа?
Привет, анон. Почему к методам объекта класса в массиве можно обращаться без индекса через указатель ->? То есть massiv->metod(); это то же самое, что и massiv[0].metod(); Нахуй это нужно? Почему так вообще можно делать?
Это ты про то, что тот же вектор может сожрать любой тип?
Я вот сейчас на 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);
>>1630168 C и C++ это не питон\джава\шарп\любая другая хуйня модная чтобы туда вкатиться по какому-то курсу. Здесь порог входа минимальный это смог ли ты осилить книжки Ритчи и Страуструпа. Вот сперва осиливаешь эти 2 книжки, потом ты уже можешь кидать какие-то понты что ты на с сями знаком.
Читай книжку Страуструпа, а деньги сееб оставь, эти курсы для домохозяек нахуй не нужны.
>>1631455 Ну вот и ответ. Для питона на винде нужна visual studio, которая, очевидно, будет совершенно не у всех; а для с++ все постоянно устанавливают по 3 версии Microsoft Visual C++ Runtime Library, поэтому она тебе в глаза и бросилась.
>>1631457 да нет, питон на винду вообще легко устанавливается, модули на него тяжело ставить потому что там консольное управление и там этот пип постоянно выёбывается, модулей каких-то не достаёт часто, пердолиться надо много видимо отсюда и ассоциации с пердолей.
а на вот чтобы на с или с++ писать нужно визуалку ставить ну такое официальное средство бесплатное от микрософта.
>>1631459 >да нет, питон на винду вообще легко устанавливается, модули на него тяжело ставить потому что там консольное управление и там этот пип постоянно выёбывается, модулей каких-то не достаёт часто, пердолиться надо много видимо отсюда и ассоциации с пердолей. >а нахуй на винде интерпретатор если есть visual studio? Я с двумя разными людьми разговариваю, или ты между сообщениями переобулся?
>>1631493 Постфикс и префикс инкремент, же. В первом случае, сначала выполняется инструкция, а затем идет инкремент переменной, во втором случае - все с точностью да наоборот.
>>1631507 Не, для легаси уже давно сделали костыль, недавно включили в стандарт. double values[] = { 10.5, 15.7, -3.0 }; auto pr = [](std::span<double> container){ for (auto val : container) print(val); }; pr(values);
>>1626937 (OP) Кстати страуструп выглядит как настоящий и классический программист, а сейчас программистами называют всякое татуированное гавно с разноцветными фолосами хипстерское. АЙТИ строили такие как Страуструп, а не нормалфажные маньки. Тяночки блядь ещё в этом айти сидят, их прямо дохуя там стало.
>>1631571 Тогда просто все так выглядели. Сейчас все по-другому выглядят. В будущем ещё какой-то вариант будет, и все будут выглядеть так, а отцы программирования будут >татуированное гавно с разноцветными фолосами хипстерское
>>1631571 Есличо, в 60-70х тян программистов было приблизительно столько же, сколько кунов. Тогда это не была отдельная профессия: ты занимался каким-то STEM-направлением, плюс приходилось программировать. Потом в 80х, когда это оформилось в отдельную специальность, её узурпировали всякие sci-fi бои и прочие нерды, и стало принято, что это чисто мужская задротская профессия. С одной стороны задроты создавали недружелюбную для тянок атмосферу изнутри индустрии, с другой стороны - хуёвый имидж, отчего родители не отпускали своих дочерей учиться на программистов, чтоб те не стали чуханками, поэтому количество тянов в программировании супер уменьшилось буквально за 10 лет.
В 90х, с запросом на массовую автоматизацию бизнеса и появлением языков типа жабы в индустрию ввалило куча обычных нормисов, а с середины нулевых с хайпом веба и мобилок вкатываться стали вообще все подряд. Так что вполне закономерный результат, что сайфай бои с задротами остались в прошлом.
>>1631634 Немножк не так: раньше программист был чем-то типа секретарши при ученых, и его задачей было переводить математические модели в код. Поэтому куны занимались наукой, а рутину сваливали на тян.
Когда же программирование стало серьезным бизнесом, куны им заинтересовались, и быстро вытеснили тней за счет своего превосходства.
>>1631655 Все наоборот. Как только стало (с интернетом) возможным получить навыки, сидя дома на мамкиных борщах, произошел массовый вкат аутистов. Сейчас доля аутистов вообще максимальна.
Да, раньше среди аутистов был больший процент мега-гениев, которым 1. Повезло попасть к нужным нормисам, разглядевшим потенциал 2. Их за ручку водили везде от универа до какой-нибудь корпорации Поэтому пошел миф о каком-то небывалом превосходстве аутистов. Сейчас же, когда каждый аутист идет в айти вебмакакой, и аутистов дохуя, и средний уровень аутистов очень низкий
>>1631687 Вся суть в том что нормалфажное быдло в СИ никак пролезть не может. Потому что тут надо долго учиться, здесь сложно и здесь не так много платютъ. Они видят что в вебе 300кк выучи пару хуёвин и перди себе в стул и бегут все на джавы хуявы и прочее гавно и пусть сидят там и не высовываются.
>>1631687 Со стековерфлоу копипастят тупые, а не "нормисы". Аутисты - это социальные инвалиды прежде всего, и перед талантливым нормисом у аутиста шансов минимум, за исключением редких областей типа реверсинга
>>1631696 >>1631694 Аутисты слово некорректно - задроты. Правильнее назвать задротами таких ребят, на дваче большинство это задроты, которые насмотрились всякого кинца и называют себя аутистами и прочим гавном, на самом деле обыкновенные задроты.
>>1631656 Нет, рутиной занимался отдельный человек -администратор, которому единственному можно было трогать комп. Код же набивали как раз те же люди, что и занимались самой предметной областью.
>>1631700 На дваче дохуя аутистов (больше, чем в среднем по популяции), но некоторые принимают их за нормальных людей и пытаются спорить. Что касается задротов, то любой сделавший себя сам человек - задрот. Не обязательно просто при этом выглядеть как вонючий чухан. И так появляются те самые хипстеры, которых вонючие чуханы не любят. То есть буквально - выглядишь опрятно, значит ты тупой. Хотя тупым может быть только тот, кто так думает.
>>1631722 Да. Волосы в розовый-зеленый любой другой цвет - ты дегенерат. Пирсинги, проколы и прочее гавно - ты дегенерат. Татуировки - ты дегенерат. Моднявая разноцветная одежда как у павлина - ты дегенерат. Список продолжать могу сколь угодно долго.
>>1631734 Если в твоей матчасти написана подобная хуйня, то это хуевая матчасть. Или ты ее прочитал жопой. Или и то и другое. "рутиной занимался отдельный человек -администратор, которому единственному можно было трогать комп" - мог написать только человек, который либо 1. Понятия не имеет, как была устроена разработка в те годы. 2. Считает увлекательный процесс набивки перфокарт и переписывания математических формул на асм - не рутиной
Откуда ты взял здесь сексизм - не понятно, точнее - понятно, ты ебанутый и туповатый
>>1631750 >1. Понятия не имеет, как была устроена разработка в те годы. Долбоёб, тебе даже ссылку скинули, послушай взрослого дядю, не позорься. >Считает увлекательный процесс набивки перфокарт и переписывания математических формул на асм - не рутиной Никто не говорил что это не рутина, но эта была часть работы и никаких специальных выделенных людей, которых этим занимались не было и это знает любой, кто работал в академиях, что тогда, что сейчас.
>>1631758 >Долбоёб, тебе даже ссылку скинули, послушай взрослого дядю, не позорься. Зумеры совсем охуели, кидают часовое видео как пруфлинк. >Никто не говорил что это не рутина, но эта была часть работы и никаких специальных выделенных людей, которых этим занимались Именно так. Сидят в отделе два человека, получают одну зарплату, должность одна и та же. Только один занимается творческой деятельностью, а другой делает всю рутину. Обоих все устраивает, потому что первый не занимается рутиной, а второму платят деньги при отсутствии особых талантов. Только вот 1. Кто постарадет от автоматизации рутины даже в спокойное время. Например, при массовом переходе от асма к си 2. Кого сократят в кризис Как думаешь?
>>1631409 Я это всё в классе делаю. Пример на картинках.
Да, я в курсе, что занимаюсь хернёй, но это для себя и общего развития, на деле будет использоваться STL.
>>1631407 А вот про это я хочу узнать больше, потому что память утекает и мне бы причину узнать.
Из того, что я знаю, выше писал, что не всегда выделяется блок памяти указанный, а так же догадываюсь, что при пересоздании такого массива старый блок памяти так и остаётся висеть занятым, пусть и удалённым или очищенным.
>>1631904 > Да, я в курсе, что занимаюсь хернёй, но это для себя и общего развития, на деле будет использоваться STL. Схожу в ресторан на неделе, а пока поем говна.
>>1631553 std::span<T const> -- просто охуенная тема! Давно своим велосипедом пользуюсь, примерно так же устроен. Охуенно удобно его передавать/возвращать вместо всратой конст ссылки на std::vector<T> (или, ещё хуже, пары итераторов), да ещё и по значению! Странно, что раньше не было его.
Ананасы, могу ошибиться тредом, но похуй Кто-нибудь может подсказать, как собрать Qt приложение в Azure pipelines? Где вообще об этом можно почитатать? Гуглится какая-то хуйня
>>1632544 Я видел, но очень редко. Обычно в нем нет смысла - если индекс может выходить за пределы, то код надо переделывать, а если не может, то и .at() не нужен.
>>1630410 Мой юный друг, тут есть небольшой парадокс, язык создается для решения задач, т.е. сперва есть ЗАДАЧА, а затем ее решение посредством языка. Когда ты сначала учишь язык, тебе сложно все понять кому это блять на хуй может потребоваться, где? Из-за этого так полезно высшее образование, ты понимаешь какие ты задачи можешь решить и для чего все эти алгоритмы и конструкции. Так значительно проще. Это же работает и когда есть увлеченность, человек хочет написать игру ему горит, он начинает изучать как это можно сделать и приходит к программированию.
>>1632582 > Из-за этого так полезно высшее образование, ты понимаешь какие ты задачи можешь решить и для чего все эти алгоритмы и конструкции. Я хз как у вас там в Гарварде, но даже в столичном вузе этого всего нет
Что то я не понял вот этого. То есть при обычном создании экземпляра шаблона класса, например std::vector<std::string> temp; Создаются не все члены класса? И почему отдельно выделены встраиваемые функции-члены?
>>1632718 Я так понимаю, речь идет вот о чем: При непосредственном использовании функции-члены заинлайнились, а неиспользуемые функции отброшены. При инстанциировании же для инлайновых функций все равно создались не-инлайн варианты, например чтобы их можно было использовать из другого файла cpp.
>>1632582 что ты блядь несёшь, ну смотри допустим я хочу написать игру, но я ньюфаня. и что ты думаешь что я буду гуглить всё как опытный программист, всеякие функции и прочую хуйню? да нет же у меня вообще нет представления что на этом языке можно а чео нельзя, используя твой подход работать когда горит можно такого говна налепить. нужно прочесть книгу о языке в первую очередь увидеть все его функции что на нём можно делать и уже потом можно высирать игру и всё что хочешь. блядь.
>>1632757 Ну отмечать измененные части он из коробки умеет, в связке с гит хз, какие то настройки контроля версий там точно есть, как и подключаемые модули.
>>1632761 >увидеть все его функции что на нём можно делать и Такое может разве что с питоном прокатить. Ну почитаешь ты про шаблоны, что, сразу догадаешься, как можно собственные бинарные операторы делать как в бусте? Лучше освоить некоторую базу, а дальше паралельно что то делать и изучать нужные тебе фичи, все ты все равно знать не будешь.
>>1632791 >Ну почитаешь ты про шаблоны, что, сразу догадаешься, как можно собственные бинарные операторы делать как в бусте? маня это основы основ никто не говорит что после книжки ты станешь профи 300кк в наносек, это озы и хорошая твёрдая база, фундманент. алсо в нормальных книжках к материалу ещё даются упраженения.
>>1632812 Многое же просто неприменимо в реалиях новичка, он просто потеряется от большого объёма информации.
Развитие идёт итерационно, сначала очень простое, затем накопление знаний небольшое, потом по сложнее.
Тот анон прав, без ясной цели все эти упражнения полная хуета.
Вот тебе пример из универа - есть файл с упорядоченными числами со столбцами через пробел записанными, нужно найти там наименьшее и выдать его в консоль. По заданию необходимо использовать наследование и классы.
В чём космический ефект такого задания? Где эти знания применимы? Нахуя?
>>1632761 >нужно прочесть книгу о языке в первую очередь увидеть все его функции что на нём можно делать и уже потом можно высирать игру и всё что хочешь Ты когда русский язык учил, ты тоже сначала прочитал книжку со всеми правилами и функциями языка, и только потом начал с людьми разговаривать?
>>1632838 нет, но когда я учил английский я сперва сделал упор на грамматику и очень не зря, потому что если бы я стал просто учить "как получится" то у меня был бы большой словарный запас, но из-за пробелов в грамматике я бы очень многого всё равно бы не понимал.
>>1632791 > Ну почитаешь ты про шаблоны, что, сразу догадаешься, как можно собственные бинарные операторы делать как в бусте? В нормальных книжках есть реализация собственных бинарных операторов.
Суть в том что в книжке впринципе показывается что есть в языке и как это используется. Нельзя не зная языка и ни разу не открывав на нём книжку сесть и начать что-то писать, ты даже тупо не будешь знать что гуглить. У тебя элементарно не будет представления ни о чём.
Анон, сейчас будет платина. В одной книжке (видимо очень хуевой или нет?) увидел, что типа return 0 в main больше не нужен, типа устарело нахуй, лишь динозавры пользуются. Так ли это? P.s. анон динозавр и ставит return в main
>>1633908 >>1633909 Спасибо, раньше сидел на codeforce, но недавно перешел на leetcode, что там что тут ощущается просто огромная нехватка знаний в алгоритмах, отчего и спросил.
>>1633949 У меня английский был на 3, и на устном экзамене я рассказывал какую то дичь вроде "In my future I will write a book and grow a tree" под закатывание глаз преподши. А еще у меня в школе не было немецкого, а к первому компьютеру прилагалась пара хандбух на дойче по 1300 страниц, по которым пришлось учить бейсик и ассемблер. Хуй знает, крутись как можешь, it термины плохо переводятся на русский, поэтому все книги что я видел довольно всратые, а писать код все равно на инглише, всякие for, map и stack, никуда от этого не уйти. Можно конечно конкретные алгоритмы по видосам на ютубе учить, но это такое.
Пишу на ардуинке прогу и столкнулся с таким затруднением:
String messenge; for (int i=1; i <= 10; i++){ messenge += String(dht_i.readHumidity()); delay(50); }
Смысл в том, что у меня есть 10 переменных с названиями: dht_1 dht_2 dht_3 .... dht_10
И цикл должен менять i на 1,2,3.... Но программа ругается, мол нет переменой dht_i. Это логично да, программа права. Вот собственно хочу спросить совета более опытных юзеров, ибо в интернете особо ничего не нагулил. Кто нибудь может посоветовать как это лучше реализовать? Спасибо
Двач, есть проект на Qt. Хочу сделать так, чтобы у меня два класса назывались одинаково, но лежали в разных namespace. Ну и соответственно .h и .cpp будут лежать в разных папках. То есть как-то так это должно быть:
Может я чего-то не понимаю, но мне кажется, что с точки зрения языка тут всё норм. Но ебучий компилятор, когда компилирует, хуярит объектники в одно папку и ему похуй на коллизии имён, он просто перезаписывает файл и довольный идёт дальше. А потом линковщик орёт какую-то херню, но его недовольство понятно
Отсюда вопрос, как заставить компилятор учитывать возможность коллизий в именах и либо так же по папочкам раскладывать объектники, либо ещё как то это проблему решать? Я не хочу в дублировать префиксы, чтобы в папке women лежали файлы с префиксом women.
Аноны, подскажите, есть простой класс Person, хочу его добавить в map<int, Person> persons; пишу вот так Person p(1, "LOH"); persons[1]=p; А мне компилятор говорит, что нужен конструктор по умолчанию. Т.е. я блять не могу через квадратные скобки добавить объект без конструктора по умолчанию?
Бля, челы, это не шутка. Это гайдлайны 80ых годов. Переменные все объявлять в начале функции, по алфавиту. Не иметь более одного ретурна в коде, и ретурн иметь в конце функции.
Ну и тд. Кодеры под микропомойку до сих пор так пишут.
Карабасы, кто-нибудь знает, почему в 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
>>1634824 Поизучаю эту тему. В идеале бы, правда, хотелось бы все сложные штуки спрятать внутрь библиотеки и предоставлять максимально простой API, чтобы пользователю не пришлось по мануалу реализовывать костыли.
>>1634930 А c++ тут причем? Это особенности операционной системы. В винде ты можешь называть и так и так, это будет один файл. А в линуксе разные. Так что проблемы гарантированы.
>>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. как фиксить?
>>1635773 Так а я-то тут причем, я из его кода взял имя переменной.
>>1635733 Круто, что вектор, а что в тебя внутри? Ругается на несоответствие итераторов, будто ты хочешь итератору вектора интов присвоить итератор вектора даблов, например.
В тему конвенций и камел-блядь-кейсов. Анон, посоветуй Code Style Guide чей-нибудь. Давным-давно читал гугловый и lockheed martin'овский (для встраиваемых систем). Но после работы в настоящих проектах стиль написания кода стал соотвествующим.
>>1636441 Потому что это ебланство. Вот "123" - это true? А "0123"? А "хуй"? Вот и в комитете не стали заморачиваться. Пиши через getline и смотри на строку, или на крайний случай через boolalpha, но не обосрись с локалями.
>>1636441 > С интом можно, Только делает не то что ты думаешь. >а булом нельзя Для вектор була своя хитровыебанная специализация пакующая по 8 элементов в байт, работа с элементами через прокси класс.
>>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. Вот и... всё. Господи, где я провинился?
Надо написать на сишке.(вообще на чём угодно, но я только си чуть-чуть понимаю) конечный автомат лексического анализатора. Для лабы. Преподаватель сказал что автоматом написать будет проще. Не особо верю, но требуется использование автомата.
Что можно посмотреть, почитать? Непонимать предмет. Не понимать автомат.
>>1636818 Я все могу объявить, код рабочий, блять. Я не могу специализацию метода класса В написать, чтобы дернуть С-функцию, которая АВХ-оптимизированна.
>>1636887 ты про последний пост или про классы? Классы самое то, долго над ними думал. Почему я не могу просто для конкретного инстанса шаблона написать метод, но не для класса А, а для класса В - непонятно.
>>1636882 Как это нет? Я что, весь класс должен переписывать? Что оборачивать-то? Вынести за класс некую обобщенную функцию, из оператора() ее дергать - и уже для нее написать специализацию?
>>1636893 так сишная функция принимает конкретный тип float. У тебя может быть обобщённый инстанс как с флоатом так и с другим типом. В общем любая обобщённая функция должна в конечном итоге вызывать обобщенную функцию, если она вызывает функцию с конкретным типом то он нуждается в явном привидении что делает бессмысленным саму идею
>>1637086 Ещё дополню. Даже так >любая обобщённая функция должна в конечном итоге вызывать обобщенную функцию Любая обобщённая функция должна вызывать ещё более обобщённую. Кому это я всё пишу?
Ну, то есть, кроме того что её придумали евреи? чтобы сделать тебя геем?
Ну как бы тебе сказать... Гейский недо-DSL со своим Q_OBJECT, слоты и сигналы просто убогие, библиотека Network калл.
Да и вообще вся их ИКОСИСТЕМА меня просто выносит, ну что это за пиздец? Если я хочу просто библиотеку для юая, нахуй вы мне решили всю stl переписать своей парашей?
Ещё и на modern C++ они большую бибу кладут. Бля, вот рили, сделайте норм либу для отрисовки кроссплатформенного гуя и ВСЁ. Не надо qmake изобретать, не надо всё это.
>>1637379 Я помню одну олимпиаду с лимитом вроде в 8Мб. Там была задача, где поле в память не влезало. Пришлось паковать биты - единственный случай в моей жизни, где мог бы пригодиться вектор булов, но в то время я писал только на С и отлично себя чувствовал
>>1637567 Как раз про них и вспомнил, но решил тут спросить, может про this что подскажут. Что за тпк? И почему не делай? Покажи на примере куска куда, как именно не надо, ты говоришь, делать. И почему.
Хочу тут пройтись по БД, используя итераторы. Никакими библиотеками, кроме сишного 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}}, а не играть в угадайку, какой конструктор вызовется?
>>1638419 >Qt Creator >Qt Говнари пытались косплеить Эппл с их >"изобретем свой язык со своими шлюхами? njkmrj e нас" и предсказуемо обосрались. Кому нужна анальная залупа на неанальной платформе.
>>1638870 IDE то тут причем, дебилушка? Они уже взаимодействие с языковыми серверами прикрутили, что бы в идеале вообще на любом языке писать можно было.
>>1638884 >взаимодействие с языковыми серверами прикрутили Какие еще, в жопу, сервера. >что бы в идеале вообще на любом языке писать можно было Вот когда воплотится в реальность, тогда и кукарекай, а пока свои шизоидные фантазии держи при себе.
>>1638955 >>1638964 Ясно. А в каком виде все это делается? Типа, крутится на веб-сервере какое-нибудь java-приложение, которое обрабатывает HTTP-запросы; а когда этому приложению надо что-то суровое посчитать, оно по RPC обращается (напрямую или через очередь сообщений) к уже висящему в памяти написанному на плюсах 32-поточному чудовищу?
>>1639333 Подожди C++30, там будет полноценный компайлтайм, и можно будет перед компиляцией получить весь исходник в виде массива байт, передать его своему коллбеку и изменять как хочешь. Как в Perl
У меня есть шаблонная функция с такими параметрами (std::vector<T>&, T), и компилятор почему то не может подобрать шаблон при вызове ее с аргументами (vector<string>, "test"), почему?
>>1638808 А типа lambda это не оверхед + оверинжинеринг? Ок лол. Ты бенчмарки погоняй, говорят что если с параметрами не мудрить сильно то std::function работает так же быстро как и виртуальная функция.
>>1639492 Вот бы ещё все уже скомпилированные либы и все их копии магически перекомпилировались новым компилятором. А сейчас придётся очень внимательно следить за версиями всех либ, и не дай бог ещё придётся с новыми либами вынужденно юзать старые либы, когда новые версии не устраивают на уровне апи.
>>1639495 Хуйня всё это. Какие есть варианты: 1) либа опенсорс - взял и пересобрал 2) либа не опенсорс, есть исходники - взял и пересобрал 3) либа не опенсорс, нет исходников - еби вендора, пусть пересобирает. Почему может не пересобрать? Потому что это древнее говно, тогда его нахуй нужно гнать, из проектов-то с c++23. Либо потому что вендор еблан, тогда бабло его покарает
Кстати, вот все говорят что у них там какая-то хуйня отвалится, если сломать ABI, но есть реальные примеры? Мне что-то сложно представить серьезную контору, которая покупает либы без исходников.
>>1639673 Неймспейсы специально придумали, чтобы снизить вероятность конфликта имён, а не чтобы их потом выключали. Вот будет в двух либах функция с одинаковым именем, и всё, пиздец, придётся искать, в каком из инклудов она проскочила. А с неймспейсами этого не будет. Так что вместо using namespace лучше всегда явно писать std::string, std::cout и т д.
>>1639465 Что за чушь ты пишешь? Лямбда инлайнится в обычный вызов функции с параметрами на стеке, а std::function кроме виртуального вызова имеет еще дохуя бойлерплейта. Я бы и с указателем на функцию остался доволен, но тогда придется еще и аргументы отдельно в tuple хранить, а лямбда удобно все в один callable объект пакует.
Есть ли способ обмазываться полиморфизмом подтипов "извне"? Скажем, есть функция, принимающая указатель на 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>();
Как сделать чтобы он этого не мог? Понятно что оно всё равно работать не будет, но хочется сделать красивее
Посаны. Знаю Джаву. Точнее думал как, вот выучу её, весь учебник и будет охуенно. Но получилось немного не круто. Не зашла она в итоге, но что-то простое накалякать могу. За какое время можно освоить плюсы более-менее, чтобы устроиться на работу джуниором/стажёром?
не конпеляется в vs 2017 community, шо надо установить в vs installer 2017 для win 7, скочял тонны говна так оно еще и не работает, на втором скрине отмечено шо я установил, третий скрин продолжение второго
>>1640793 >>1640709 >>1640699 ну у мну всё работает теперь, нахуевертил там чот, нахера столько легаси пакетов просто в ахуе, в 7-й венде выбрал сдк для вин 10, фак логик, куча всякого говна накатил чтобы unreal project сконпелять. Вин 10 религия не позволяет ставить, надо будет на линухе затестить.
Всем здрасте, решил я вкатится в программирование и выбрал собственно язык С++ и у меня такой вопрос... С чего начинать? Я скачал на рутрекере видосы с обучением для новичков, посмотрел их, усвоил, но что дальше? Во всех гайдах рассказывают только про циклы, массивы и т.д И вот уже пару дней сижу и думаю как дальше изучать то, может вы что подскажите.
>>1640447 >пользователь может передать не имя класса, а экземпляр При желании может хоть хуй сломать об одеяло. Тем более что передать-то и не может. Ты сам-то пробовал скомпилировать что написал?
>>1641265 >решил я вкатится в программирование и выбрал собственно язык С++ Зачем? Больших денег ты тут не найдешь, если не суперспец в определённых предметных областях, вкатываться долго, вакансий со временем всё меньше, зарплаты падают. >С чего начинать? Со вката во что-нибудь из java/js+react/golang/php. Там не нужны серьезные знания в камплюхтер саенс, вкатывание может занять год или даже меньше при должном усердии.
>>1642048 Катись на хуй в java. Плюсы это хуевый первый язык для программирования (как и си). Сейчас везде объектная параша, так что я бы советовал такой путь 1. Python, сразу можно блять получить результат, пощупать программирование, твое не твое. Познакомиться с объектами, скриптами, структурами данных и админ и инженер и хуй пойми кто может попробовать. 2. Тут наверное Java - можно просто палкой потыкать пару месяцев, синтаксис классов, хуясов и т.д. 3. Си - для с++ это обязательно, только парадокс, си перед си++ мешает программированию на си++ т.к. объектная модель должна крепко уложиться в голове, а си этому не способствует, зато идет лучшее понимание архитектуры и вообще всего си++.
>>1642184 Но С — отличный первый язык программирования. Там всё такое.. програмистское. А питон — плохонький. В С всё понятно, вот тебе скобочки, вот тебе индексы, а в питоне какие-то значимые пробелы, листовая механика циклов. Непонятно, что важно, а что нет.
Работотадель в одном из требований к тестовому указал "написать инструкцию по сборке". Что это может означать, при условии, что в проекте 3 файла и все заголовки из STL?
Та как учить этот ебаный многопоток то блять?! Уже больше года изучаю плюсы, в шаблонах освоился, в ООП, паттернах и прочей хуйне освоился, даже к смейку и уб привык. А вот многопоток меня всегда стороной обходил, всегда хватало асинкнуть что-то или детачнуть тред, и в принципе на том и доволен. А вот сейчас решил изучить эту тему и вообще нихуя не понимаю что мне делать. Аноны, как вы мастерили многопоток? Я устал пилить threadsafe_контейнернейм и тредпулы, посоветуйте что-то реальное задачу то есть, где будет упор именно на многопоток, чтобы не сильно на другое отвлекаться.
Аноны, простите за тупость вопроса, но как реализовать платформо- и кодировко- независимое сравнение символов? И еще вопрос, path путь и в windows и в linux же использует ASCII?
>>1643740 >path путь и в windows и в linux же использует ASCII? Нет, в общем использует Unicode... Посмотри в сторону std::filesystem, но я слышал он не на всех платформах поддерживается пока.
>>1643698 Причем тут ошибка? Т.е ты мне предлагаешь городить дохуя вложенных if конструкций? Это code smells, при ошибке я хочу завершить работу функции, в ином случае продолжить. if (err) return err, а не if (!err) ... .
Компилятор VS2019 сыпет ошибками LNK2019, я так понимаю это что-то с линковкой, но не пойму что не так. Указывал путь до папки с либами в SDK, но не момогает. Как фиксить?
• https://github.com/sosachbot/cppthreadhat/wiki
Ответы на вопросы:
• https://en.cppreference.com/w/
• https://www.cplusplus.com/reference/
Прошлый тред:
Good night, sweet prince 1950-2020