>>2451858 Зачем ты его обзываешь, ведь все правильно пишет. Алгоритмы должны быть интегрированы в классы, либо как шарпе, нужно добавить возможность расширения классов из вне.
Поясните за memory allocation error в плюсах. После Си некоторые вещи неочевидны. Вот создал я объект класса string. Он же наверняка в конструкторе выделяет память под данные динамически. С освобождением памяти, вроде, все понятно, деструктор будет вызван автоматически, утечки не произойдет. А что, если по какой-то причине не удастся выделить память? Нужно ли каждый раз при создании такого объекта отлавливать bad alloc exception? Ни разу не видел, чтобы так делали. Это безопасно?
>>2452148 Я просто не понимаю, как ещё это может работать. Варианта всего три: статический массив с фиксированной длиной, VLA-массив в стеке и динамический массив. Массив с фиксированной длиной точно не вариант, а VLA не позволит произвольно менять длину массива. Ну и в чём я не прав?
>>2452176 Ты говоришь, что память не выделяется динамически. Ок, вот выделил ты в стеке массив размера N. А потом попытался считать из потока строку длиной 2*N. Как будешь увеличивать массив?
>>2452141 >Вот создал я объект класса string. Там short string optimization, короткие хранятся на стеке, длинные в куче. Соответственно где хранятся данные зависит от длинны строки конструктора.
>>2452194 Ну, например, память забита и фрагментирована так, что куска памяти длиннее мегабайта нет. А я пытаюсь прочитать текст из файла размером 1.5 мегабайта.
>>2452204 Если у тебя строка из коробки, то аллокатор среды выполнения может кидать bad_alloc и его надо ловить. Если ты написал свой аллокатор и подсунул его в конструктор строки, то можешь разруливать всё в аллокаторе без кидания исключений наружу.
Аносы, обьясните нуфагу за изучение стандартов. Вот, допустим, я осилил кирпич Праты по 11 стандарту и понял БАЗУ. Как мне переходить к изучению 17 стандарта и т.д? Просто ботать изменения стандарта на сайте ЦПП?
>>2452221 Да в принципе никак. Увидел какую-то новую конструкцию - почитал, потыкал в неё. Язык невозможно выучить ни брутфорсом ни академически. Каждый год вываливают очередную спорную фишкуи потом её в трёх следующих стандартах доделывают, где-то расслабляют, где-то делают потуже.
>>2452254 >Как выбирать нужные инструменты из такого количества говна? google: как сделать хуету google: хуета работает не правильно google: как сделать хуету без ебалы google: хуета примеры 2ch: сегодня делал хуету через ебалу убил 2 часа нихуя не работает сделал через пиздорвань с первого же примера гугла сразу заработало. ебалобляди оправдывайтесь.
>>2452259 >макакой с гуглом Ты в любом случае ей будешь, только макакой с книгой/наставником/курсами/доками итд. Ты никогда не сможешь знать все с чем работаешь, кроме случаев когда ты 20 лет пишешь микропенисы на жабе и сидишь на 1 работе.
>>2452252 > Почему по qml почти нет инфы в интернете? По нему есть исчерпывающая дока с дохулионом примеров, как и для прочего куте. Какая инфа тебе ещё нужна блеать, ты эту читать пробовал?
>>2452369 Зачем будущее, когда уже в настоящем, стоило создать тред, как в нем сразу 60 порванных срак макак и ничего больше. Как видно, С++ и так доминирует на недостижимой высоте.
>>2452589 >C++75 можно уже компилировать экзешники в другие экзешники. Я б так развлекался. Находил бы циклы и смотрел бы заворожённо на эту эволюцию хтонического пиздеца.
>>2453039 language reference (справочник языка) Это сколько примерно страниц занимает описание всех языковых конструкций (лексем?). У Питона скорее всего спецификация побольше, а у плюсов поменьше, но 1000 страниц для последнего стандарта вполне реально.
>>2453039 Это типо справочника для вкатуна с другого языка программирования. Он эти конструкции по смыслу уже знает, но выглядеть в разных языках программирования они могут по-разному.
>>2453391 >строка x, так я вытаскиваю указатель на массив чаров этой строки из кучи, можно как-то это сделать в одну строчку без второго указателя? &x[0] должно работать
>>2453239 Удобная абстракция. При этом ты абсолютно на 100% понимешь что тебе сгенерирует компилятор. Чего нельзя сказать о шаблонах. Хотя шаблоны тоже неплохи. Главное применять всё это там, где это оптимально, и не применять там, где в этом нет смысла.
>>2453467 Так падажжи ебана, тебе же нужен был указатель на массив чаров. Если x это char*, то че тебе надо-то? А если x это string, то я всё правильно сказал.
>>2453456 > пик 2 Вот же дегенераты, рассуждающие о языке, которого не знают. Схуяли в их больном мозгу должно получиться 10, если там инт копируется? Пользоваться массивами учат ещё в самом начале, а этот даунёнок про какую-то память пишет и не знает основ. А с оптимизациями вообще эти 3 строчки нахуй удалятся компилятором, потому что они нихуя не делают.
>>2453513 > Так x2 же это ссылка Да, ссылка на скопированный инт, чел. Ахуеть, да? vec{2} всегда возвращает инт, а не ссылку на него. С кем я вообще в одном треде сижу?
Зачем так жить, если языковые конструкции могут быть непонятны без гугления даже тем, кто на этом языке десяток лет пишет? Это даже не библиотека какая-нибудь и не фреймворк.
Чтобы было видно "приколы/странности/неочевидности" языка. А не "как называется функция ассоциированная с объектом" и прочие тупости по стандарту языка.
>>2453671 Так я не об этом. Ты не понял, у тебя тип другой, поэтому и операторы работают по-другому. Для string оператор [ ] переопределен, и возвращает ссылку на символ (char&). Дальше ты берешь его адрес оператором & - и это указатель на саму си-строку в памяти. А то же самое выражение, примененное к указателю на строку (string*), не делает ничего.
P.S.: не "всё улетает в кучу", а только сами данные. Объект string, если не создавать его через new, будет в стеке всё время.
>>2453711 Что не работает-то? У тебя строка длинная, поэтому она в куче, а не внутри объекта. Это подтверждается тем, что &s и &s[0] совсем разные, на скрине же видно. Этот "кусок массива" на экране не имеет отношения к самой строке, это мусор внутри объекта string - можешь проверить сам. Может быть, всё это было бы понятнее, если бы ты выводил не char, а шестнадцатиричное представление байтов. Запусти этот код у себя и поэкспериментируй: https://pastebin.com/q2xaF0fW
>>2453718 >Что не работает-то? Твой код не может вывести строку. В основном это не работает, ещё он не может найти её в куче, но это уже второстепенно.
>>2453727 Посмотри внимательно мои скрины выше: короткая строка - внутри объекта (видно по данным, выведенным на экран и по адресам), длинная строка - в куче, адрес опять же на экране. Но ты скорее всего троллишь тупостью.
>>2453547 >Зачем так жить, если языковые конструкции могут быть непонятны без гугления даже тем, кто на этом языке десяток лет пишет Потому что Плюсы - язык-выгребная яма, миллиарды котылей и тонны бесполезного функционала, который нужен лишь 0.00001% людей. Выше по треду даже шутили, что программа на любом языке является синтаксически верной программой на C++50. Но даже такому говноязыку не могут райти замену и приходится его использовать. Вся гадежда на Раст, но шансов мало.
Как же вы заебали в говне копаться. Говорю без особой злости, просто заебали.
Я вот отношусь к С++ как к Си с классами. Ну и stl помаленьку пользую, когда надо что-то быстро захучить, а оптимизировать под задачу лениво или не нужно.
>>2453897 Сказала чмоня которая не может повторить то что я делаю в две строчки, лол. А я ещё надеялся что тут подскажут как сделать это в одну строчку.
>>2453391 >uint64_t ptr2 = (uint64_t) x+2; >uint64_t ptr = (uint64_t) *ptr2; А это что за йоба? > так я вытаскиваю указатель на массив чаров этой строки из кучи Про c_str() слышал?
>>2453939 Ну раз стринг, то в таком случае так >>2453923 делать нельзя. Во-первых, это нечитаемый кринж, а во-вторых, ты после разыменования указателя на string присваиваешь другому указателю не адрес, а данные, хранящиеся по этому адресу, преобразованные к типу указателя. Запускать хоть свой код пробовал?
>>2453986 >хочется перед микрософтом штаны снимать. >в системе дохуя левых системных процессов >не удаляемая Кортана >не удаляемый Заshitник Windows >миллиарды телеметрии >ряяяяя я написал user123 и меня тепеь не узнают Лол
>>2453986 Купил ключ на ебае лет пять назад, рублей за 300 вроде. Раньше сидел на Windows 7 90 day trial, постоянно сбрасывая счётчик.
>>2454006 А хули делать, Ну посидел я на Раче, чёт надоело гуглить Как правильно какать и настраивать этот велосипед под себя. Больше всего бесит что 99% софта под линукс написано на всяком говне, бог им дал божественный gcc, компилируйте сколько влезет, нет блядь хотим писать на всяком говне.
>>2454053 Да хуй его знает, может быть, компилятор от МС какую-то свою магию применяет.
>>2454059 >у тебя 64 бита? Да. Начнем с того, что, прочитав тред, я еще больше запутался и перестал понимать условие задачи. Нужно просто найти указатель на массив из char-ов или вытащить указатель на массив char-ов из string?
>>2454086 >c_str() А здесь важно понимать, что этот метод возвращает. Из формулировки пикрила нихуя не понятно возвращает ли он указатель на массив в string или же возвращает указатель на НОВЫЙ массив идентичный изначальному. Схожу поем и поебу байты в поисках ответа.
>>2454080 >Да хуй его знает, может быть, компилятор от МС какую-то свою магию применяет. Я проверял на своей студии. Кидает эксепшн. > А здесь важно понимать, что этот метод возвращает. Возвращает const char*. Никто не будет заморачиваться и копировать массив ради указателя на константу. Ты же не думаешь, что компиляторы пишут долбаёбы?
Даже если твой охуенный метод работает что невозможно, и я уже объяснил, почему >>2453948, то он может перестать работать при малейшем пуке со стороны разработчика компилятора.
Я в тупике. Хочу уметь читать с сокета до разделителя и заданное количество байт. Проблема в том, что read until читает не ровно до разделителя, а чуть больше. Я хотел обернуть все в свой сокет, со своим буффером в который буду перемещать остатки с read until, а далее при чтении определенного количества байт высвобождать часть заполненного буфера, а остальное читать с сокета с помощью read. Хотел взять deque чтобы быстро сначала высвобождать, но read until просто не принимает дек. Хотел взять streambuf, но тогда объект перестает муваться. Просто vector не подходит, потому что с его начала очень долго объекты убирать. Я не знаю что делать, помогите пожалуйста
>>2454112 Маня, ты почему-то старательно игнорируешь >>2453948 Оно не заработает, хоть ты все типы испробуй. На маленьких строках из-за SSO сработает (char⚹)x, но уж точно не тот бред, что ты написал.
>>2454116 > Я хотел обернуть все в свой сокет, со своим буффером в который буду перемещать остатки с read until, а далее при чтении определенного количества байт высвобождать часть заполненного буфера, а остальное читать с сокета с помощью read.
Думаешь ты правильном направлении. Не со всем согласен, но в целом здравое зерно есть. Твоя проблема в том, что у тебя С++ головного мозга. Это такая болячка, когда ты используешь лишь те инструменты, которые знаешь. Внимание, вопрос: "Что тебе мешает забить на STL и реализовать буфер руками????"
И не ебать мозги себе и нам. Пойми, если С++ тебе что-то позволяет, то не обязательно это использовать.
>>2454158 Нужно будет наследоваться от бустового буфера. Я это ни разу не делал. Боюсь, что там будут всякие хитрые проблемы которые я ебнусь реализовывать. Но спасибо, попробую
>>2454196 У меня горит че то. Вроде очень простая задача, а целый день провозился, сука. И еще не решил. Так бы уже либу нужную дописал и сидел капчевал спокойно
>>2454101 > Никто не будет заморачиваться и копировать массив ради указателя на константу. Ты же не думаешь, что компиляторы пишут долбаёбы? Ну вот смотри, что получается. Пока что выводов делать не буду, проверю еще одну теорию.
>>2454502 Да можно и в присядку дрочить, толку то. На си/спп можно сделать вообще все. Практика показыапнт чтотпо сути так оно и есть. Это база. Хочешь на чем то другом - попробуй, но смысла нету.
>>2454503 >На си/спп можно сделать вообще все. Как и на многих других языках. Что тебе конкретно на расте мешает писать?
>рактика показыапнт чтотпо сути так оно и есть. Практика показывает, что с 70-х годов ничего не могут поделать ни стилистика программирования, ни санитайзеры, ни линтеры, ни прочие ухищрения, придуманными людьми. Как было 70% ошибок некорректной работы с памятью, так и остаётся эта печальная статистика для более-менее крупных проектов. Вот это БАЗА. Но маня с двачей конечно же знает сикретный метод самих ДИДОВ, который позволяет писать код без утечек, УБ и use after free. А то, что Раст - глоток воздуха в мире ЯП, совершенно новая концепция с 80-х годов(или когда там языкостроение остановилось?) это паебать. Мы люди не гордые, видим байты - ебем.
>Хочешь на чем то другом - попробуй, но смысла нету. Ну почитай дневничок разработчиков версии Тора на расте, узнаешь в чем смысл.
>>2454502 Мозилла создала Firefox, на котором основан Tor, затем создала для себя же раст, и было бы удивительно, если бы она не начала юзать свой же язык, ведь то очень подозрительно, когда IT-компания не использует свои же технологии.
>>2454507 >Мозилла создала Firefox, на котором основан Tor Что, блядь? Какой нахуй Тор от мозиллы? Остальную шизу даже не читал. Сосач, 2022. Абу. Итоги.
>>2454510 >Тор основан на Firefox, но из этого никак не следует, что сама мозилла этим занималась. Это тролинг? Ты знаешь, что такое Тор, болезный? >Ты ебанутый? Такой же вопрос хочу тебе задать.
>>2454097 Там ниже написано, что до c++11 гарантировалось, что оператор [ ] выдает те же символы, что и в c_str(), то есть совпадают значения, а не адреса. А начиная с c++11 уже гарантируется, что совпадают адреса, то есть с c++11 c_str(), хоть это и указатель на const, указывает на тот же кусок памяти, что и [ ], который точно выдает ссылку на оригинал, а не на копию.
>>2454594 Не знаю, троллишь ты или нет, но для справки: если x это указатель, то x[1] это то же самое, что *(x+1) обращаю внимание на звёздочку, так что ты обосрался.
>>2451830 (OP) Помогие с тупым вопросом. Никогда не программировал и ничего такого
Хочу вкатиться в Унреал Енгине, мне для этого надо бы изучить С++ по какой-нибудь хорошей книге? Еще наверное дополнительно специальные книги про ООП и алгоритмы, и я смогу делать в УЕ все что придумаю?
Или не правильно себе это представляю, и надо бы другим путем двигаться?
После delete присваивай указателю nullptr При этом шансы получить "use after free" снижаются на порядок. А вероятность поймать исключение во время отладки увеличивается на порядок.
Что касается UB, то вместе с опытом ты теряешь UB, просто потому что ты знаешь "слабые места".
С утечками сложнее. Тут надо заморачиваться на этапе проектирования. Я несколько напиздел насчёт "проствх" правил. Правила для исключения утечек не простые. БольшАя засада когда ты выделяешь память в одном потоке, а освобожаешь в другом, тут очень легко чего-то недосмотреть. Поэтому этап проектирования решает.
>>2454694 Не, изучить конечно реально. Но это будут весьма специфические знания. Без базы знаний и опыта получаются своебразные С++ программисты.
Ну что ж, могу дать совет - когда будешь здесь (на двачах) задавать вопросы по С++, то (я имею в виду конкретные вопросы по конкретным свойствам, операторам, синтаксису, поведению, etc.) - будь эпатажным, провокационным, неунылым. Тогда народ выльет на тебя кучу говна вместе с решением твоей проблемы. Иначе высок шанс получить игнор вместо ответа.
Я сейчас вот сравниваю. Если я пишу с помощью сторонней проги перенос строки, то приходит 20 0d 0a 20, а моя прога почему то пишет 20 0a 55 45. Что делать?
>>2454846 > Всё тобой перечисленное это дремучее легаси, которое начало разрабатываться во времена, когда шарпа ещё не было. А что не легаси, мобилкопараша для дебилов?
>>2454784 >Зачем нужны кресты, если они по скорости проигрывают шарпу?
Это невозможно. Сейчас схожу по твоей ссылке объясню почему невозможно.
Ну вот, там же по твоей ссылки ответ - кастом аллокатор.
А теперь смотри. Вот у тебя в памяти таблица чего-то на гигабайт. Тебе нужно найти элемент. У тебя две программы - одна на С++, которая перебором ищет искомый элемент, другая на Бейсике, которая использует hash-функцию. Ря-я-я-я-я, интерпретатор быстрее компилятора.
Короче суть в чем. Прога на сокете читает пакеты по новой линии и перенаправляет. Оно читает в utf8. Когда я делаею в текстовом редакторе винды файл и отправляю, то идет на сокет \\n как разделитель, а если в utf8 notepad'ом, то на сокет идет \r\n как разделитель и не работает нихуя. А моя прога отправляет что то, что wireshark видит как 20 0a. Вообще пиздец. Что делать?
>>2454844 >Как в utf-8 писать все? В Visual Studio - save as и выбираешь там сохранять в юникоде. В FAR Manager: Ctrl+A, Ctrl+X, Shift+F8, выбираешь utf8, затем Ctrl+V.
Аноны, а на современных ЦП размер бинарника влияет на производительность? У некоторых игровых движков уже за 100+ мб переваливает и вроде нормально работает всё. Будет ли разница между обмазом библиотеками с мусором или ручным пердолингом при одинаковом исполняемом коде?
>>2455258 Ты бы лучше сначала исправил эту ошибку и запустил код, а потом рассуждал. Выше правильно написали, что это неопределенное поведение, поэтому результат может быть неожиданным.
ты на 47 машинный слов залез по стэку вверх и затёр что-то в вызывающей функции. Хорошо бы это адрес возврата из функции, чтобы программа рассыпалась в клочья. Гораздо хуже если твоя программа управляет каким-либо критическим процессом и ты вот так поступаешь. Так по ошибке можно страшных дел натроврить.
>>2455444 Кстати, кто может пояснить за разницу между undefined, unspecified и implementation-defined behavior? Есть какая-нибудь хорошая статья на эту тему?
>>2455445 Undefined - нигде не описано, что произойдёт, поведение совершенно непредсказуемо. Например, переполнение знаковых. Однозначное зло, которого надо избегать, остальные два варианты допустимы в различных ситуациях. Implementation-defined - не описано в стандарте, но может быть описано где-нибудь в доках компилятора или ОС. Например, размеры типов в зависимости от платформы. Unspecified - тоже не описано нигде, но смысл "оставлено на усмотрение авторов компиляторов".
>>2455453 Правильно ли я понимаю. IDB должно быть четко описано в документации компилятора (например, "int = 4 байта"), и если оно не прописано, то компилятор не вполне соответствует стандарту. А USB может быть разное даже в рамках скомпилиррваной однажды программы (например, программа то вычисляет аргументы функции слева направо, то справа налево), и это стандарт не нарушает. Получается UDB > USB > IDB по степени важности. Всё так?
При этом главное правило - пусть лучше программа вываливается с ошибкой, нежели неправильно работает. Если лениво с этим разбираться, то лучше посмотри в сторону C#/Java/интерпетаторы
>>2455436 Ты из переменной i, которая у тебя равна единице, вычитаешь код символа Q, который равен 48. Получется -47 Затем ты используешь отрицательное число как индекс массива. Компилятор это пропустил, хотя, возможно, сделал замечание. Не факт, что допустил константный отрицательный индекс - проверять лениво. А посколько переменные у тебя локальные, то память для них выделяется на стеке. Там же фрейм вызова функции с адресом возврата. А ты берёшь, и пишешь куда по стеку вверх. Если затрёшь адрес возврата - программа упадёт при выходе из функции, потому как обратится адресу, который ей не принадлежит, ОС это перехватит и аварийно завершит программу. Если порушишь фрейм вызова, то с вероятностью близкой к единице программа упадёт тоже.
Но может совпасть так, что программа затрёт значение какой-то переменной, при результат её работы будет неверен, но ты об этом не узнаешь или узнаешь слишком поздно.
Если это программа управляющая технолгическими процессами, банковская или математическое моделирование, то... мне даже страшно писать какие могут быть последствия.
Надо принять (по сети) и обработать структуру, но какая именно это будет структура, я узнаю только в рантайме (выбор из трёх, возможно четырёх структур, какая именно - выясняется в момент приёма). Собираюсь принимать её и записывать адрес в void указатель, выяснять тип пришедшей структуры, а потом кастить этот указатель в указатель на нужный тип, чтобы можно было уже получать доступ к полям структуры и обрабатывать данные. Взлетит? Может, есть вариант получше?
>>2455752 Структура в один recv() помещается? Ну то есть в буфер помещается? Если да, то разницы нет - по сети ты её принимаешь или как-то ещё.
Тип структуры узнаёшь из её заголовка, а дальше кастуешь указатель на нужный тип на эту память и всё. Главное тут чтобы у всех типов твоих структур заголовок был одинаковым.
Например, Макрософт для заголовка часто использует первый байт/слово структуры под размер структуры и уже размер структуры определяет её тип.
>>2455752 У нас используется внутренняя либа для описания структур. Это позволяет избавиться от их хардкожинья, можно грузить их описание из файла настроек, передавать по сети и т.п. Когда у тебя тысячи параметров это очень удобно. Возможно для тебя это будет оверкилл канеш
>>2455817 >protobuf Ух, какая же хуйня. Вроде и бинарный протокол, а присмотришься, это какой-то франкенштейн. Не, как замена XML/JSON он хорош. Но только как замена XML/JSON.
Радует лишь то, все эти XML/JSON/protobuf родились сильно после IP/TCP/UDP. Не хотелось бы даже представлять мир, в котором поверх Ethernet фреймов бегал бы XML.
>>2455791 >Структура в один recv() помещается? Да. Точнее, у меня в MsgReceive помещается, это под QNX всё пишется >Тип структуры узнаёшь из её заголовка, а дальше кастуешь указатель на нужный тип на эту память и всё. Ну я, собственно, так и планировал. Но у меня проблема в том, что при касте из void что-то ломается и поля структуры становятся не видны. Т.е. если я принимаю в struct foo и обращаюсь к полям, то всё ок, но если принять в void и кастануть в foo, то в тех же самых полях уже лежит мусор. >>2455815 >>2455817 Не особо понял, причём тут свои либы со своими структурами и protobuf. Мне, наверное, стоило отметить, что состав структур не я писал, они стандартизованы все. Первые два байта - тип, дальше уже у каждой по-своему. (К слову, в данном конкретном случае мне даже не нужно смотреть внутрь структуры, чтобы опознать её, я могу ориентироваться по значению, возвращаемому функцией приёма.)
>>2455956 Не буду тебя просить код, потому что лениво и некогда разбираться. Могу лишь совет дать - отладь это место в Visual Studio и уже затем перетаскивай в железку. Очень похоже что проблема не там, где ты думаешь.
Реально ли вообще написать общий класс, который позволяет объекты в байты и обратно трансформировать? Если он тривиально копируемый, то да, а вот если нет? Вроде нельзя, я права? Можно только специализации писать
Чтение/запись асинхронятся или нет? Вот я могу в сокет асинхронно писать. То есть пока данные отправляются я могу что то другое делать в этом потоке, а потом выполнение придет в коллбек. А с чтением и записью на диск такое прокатывает? Могу ли я в одном потоке дать команду записать на диск 100гб, а пока оно пишется делать другое? Кто нибудь делал? Профиты есть?
У меня большой вопрос. Как организовывать быструю работу с большими данными? Для конкретики возьмем пример. Чат в телеграмме имеет столько сообщений, сколько в оперативную память никак не влезает. Нужно уметь быстро писать и читать с диска, чтобы получать нужные куски чата, а потом обратно сбрасывать, как только они перестанут быть нужны. Как это быстрее всего делать?
>>2456072 >А с чтением и записью на диск такое прокатывает? Там тяжелая и долгая история с асинхронным дисковым I/O. В винде вроде как есть поддержка этого, в линуксах очень долго не было, потом высрали AIO, которое оказалось говном из жопы, что неудивительно, лол, и только вот недавно завезли io_uring, который в теории это может делать. Про макось не знаю ничего, скорее всего kqueue не умеет по дефолту в асинхронное дисковое ио.
>>2456085 >Чат в телеграмме имеет столько сообщений, сколько в оперативную память никак не влезает. >быстро писать и читать с диска Докупаешь память, а не занимаешься хуетой.
Имеется данная книжка, издана она в 2013 году. И вот что в ней написано. Я так понимаю, что оно совсем устарела и изучать язык по ней нельзя? Или фундаментальные вещи не сильно изменились и она все же норм будет?
>>2456284 > кастомный аллокатор это супермегаохуительнейшая вещь. Вообще аллкоатор под конкретную задачу это божественно.
А если ты бы видел мой аллокатор, то от его созерцания и втыкания в код оргазмировал бы радугой. Но я жадный говнюк и не покажу.
Он настолько быстрый, что быстрее сделать уже невозможно. Он быстро выделяет память и так же быстро освобождает. Лишь одна беда - он не универсальный, он может выделять память лишь для одного типа объектов. Х.з., может кто и догадается как он сделан.
Подскажите, что делает это объявление? Я знаю, что наследую класс G4VUserDetectorConstruction с помощью своего DetectorConstruction. Тут вроде как определяется конструктор, но почему-то после названия самого конструктора ещё идут переменные, которые в заголовке класса DetectorConstruction/
Прошу подсказать реальное положение дел разработчиков на плюсах. Я уже изучил основы языка и он мне нравится более остальных, хочется развиваться в нем. Стоит ли? Как бы вы оценили ситуацию на рынке плюсов?
5 сентября интел официально распустило офис в новосибе, где работали драйверисты. Слышал, что 40% только релоцировалось. Интересно, остальные сильную конкуренцию составят начинающим плюсовикам?
ЯННП, почему выпадает ошибка на 22 строке в лямбде? can't dereference out of range vector iterator https://pastebin.com/V23dGJED Причем касается только игрека. И если подать arr.end()-1, тогда запускается норм, но и ответ неправильный.
>>2457840 Бляяя. Я знаю, что она сишная, но там помимо этого дохуя сложный интерфейс вроде. Но она самая быстрая, причем в несколько раз. Видимо другое возьму. Че подскажешь? Хочется побыстрее, конечно, но чтобы не надо было неделю доки курить
Вкатываюсь не с нуля, есть знания Си среднего уровня, до этого писал под микроконтроллеры stm32. Как лучше освоить кресты, учитывая мою базу знаний? Начал читать Прату, первые 4 главы идут очень легко, за пару дней их пролистал и спокойно решил задачки. Стоит полностью пролистать Прату, или лучше юзать его как справочник и сразу переходить к моментам, которые есть только в крестах? (типа ООП, классы, ссылки итд)
>>2457867 Прата он вроде с самого низу. Читай лучше Мейерса. Заодно поймёшь, что ты вкатываешься с нуля, относительно того, сколько нахуевертили в C++ поверх C.
>>2457112 Хуяси, физик в треде. Ну что, с частичками своими пердолишься всё? В ОИЯИ тусуешься? А Geant4 вещь годная, да. Кореш один тоже с ней пердолился.
>>2457754 >остальные сильную конкуренцию составят начинающим плюсовикам Ну как минимум часть вакансий отожрут, это точно. На самом деле вакансий для начинающих нет почти что никогда. Максимум - стажировки в яндексе, хуавее, а раньше еще и в интеле, ну ты понял. Обычно команда всегда запрашивает как минимум мидла, но так как денег у конторы мало, кабан жмот, да или просто HR работает на похуизме, то берут вкатуна. И вот вместо мидла команда получает вкатуна, которого потом учит просто от безысходности. Это вот так вот работает. Джунов и стажеров кроме яндекса сейчас почти никто не ищет. Устроиться без опыта это как выиграть в лотерею. Ну или на завод/нии/кб идти, там особая атмосфера найма всегда.
>>2457943 Ещё дотекание будет. Думается что 20% ещё укатят вдаль. Сам вот сижу и смотрю приглосы. Из тех, что нормальные - в основном перекат. Остальное - госзаказ в разных вариациях.
>>2457894 А какого именно? Их целых 3 в шапке. Глянул самого последнего по году, там подразумевается что ты уже знаешь язык, а я пока не очень его знаю. >>2457903 Ты весь курс прошёл? И как оно? Ты с нуля начинал? Он вроде платный, как я понял. Интересно, чего он вылетел. Не думаю, что дело в Прате. Хотя мне кажется, что если сейчас пойду, то тоже не осилю так как что-то там нагрузка большая, да и я очень хреново понимаю, как ооп работает, точнее не могу нигде придумать, как это реализовать на практике.
>>2457906 Я так вкатился, но у меня должность низкая. При этом все коллеги уже 5+ лет сидят там, у нескольких семьи и дети есть, неужели они за гроши там сидят? Сам как-то стремаюсь напрямую спросить.
>>2458051 Как они тогда семью содержат, машину и платят коммуналку? Мб я тоже так научусь, если пару лет просижу тут, по крайней мере надеюсь хотя бы 2 года опыта сделать.
>>2457991 Да, закончил недавно. Курс годнота, если иметь адекватные ожидания. Но последние деньги на него тратить точно не стоит. Начинал не с нуля. Много чего знаю, но всё по верхам. Первая треть очень простая, на уровне всех остальных курсов и туториалов, потом резкий скачок сложности и становится гораздо интереснее. Подход к обучению там TOP-DOWN. Сразу дают вектора, мэпы, сеты, стл алгоритмы, умные указатели, лямбды и т.п(про массивы, например, расскажут сильно позже этого). Ну так вот, ты их крутишь-вертишь, уживаешься с ними, а только потом идут детали реализации. Сишнику очень пекло с этого. Вместо того, чтобы мыслить на нужном уровне абстракции и решать задачки, жаловался, что не может проложить мостик от своего си прошлого до c++ настоящего. А вот у Прата он говорил правильные методики, как наших дедов учили. Может быть, но есть шанс, что если ты встретишь те же лямбды только на тысячной странице, они недостачно плотно войдут в твою жизнь, как и все остальные актуальные фишечки.
>>2458090 Лол, я примерно поэтому и начал с Праты, потому что реально тяжело дается этот уровень абстракции после пары лет Си. А сколько по времени курс занял и как много ему надо уделять времени примерно? Я бы может и записался попозже.
>>2458058 >Как они тогда семью содержат, машину и платят коммуналку? Ну, видимо, так же, как и учёные и инженеры из этих же НИИ. Живут на копейки, иногда, возможно, перепадает денежный грант, но это редкость. Конечно, зависит от области, чем более прикладная, тем больше денег в основном. Но ты же понимаешь, что учёные в этой стране живут впроголодь? Вот и программисты НИИшные так же. Хорошо живут только чиновники от науки и 3,5 профессора топовых вузов. Поэтому, собственно, программированием в НИИ и занимаются те же учёные и инженеры, а собственно программисты туда не идут -- им деньги нужны. А там нет смузи и денег. А 95 процентов потенциально научной молодёжи либо на Запад сваливают, либо идут в айти в итоге. Такие дела.
>Как они тогда семью содержат, машину и платят коммуналку? Знаю годного профессора теорфизики, живущего в одиночестве, ездящего на автобусе и живущего в убогой студенческой общаге годами.
>>2458145 Курс длится 9 месяцев. Пишут, что нужно тратить от 15 часов в неделю. Но 15 это если без сдвг, у меня получалось больше. Так же есть вариант получить скидку от государства по программе "Цифровые профессии". Раньше была 50% для всех, сейчас нужно принадлежать к какой-нибудь льготной категории и размер скидки вариативный.
>>2458196 Если это не академические часы, то нехилая такая нагрузка выходит, особенно если работаешь. А как оттуда ввлетают вообще? Вылететь легко, или надо быть совсем дубовым? Как контролируют усваиваемость материала? А есди что-то непонятно, норм объяснят?
>>2458207 Курс разбит на спринты по 2-3 недели. Если не укладываешься в дедлайн, то можешь взять академ и начать спринт заново с другой группой. Со скидкой от государства это можно сделать один раз, без неё три. Вылететь легко, если проблемы со временем и тайм-менеджментом, сам материал достаточно доступный. На курсе задания сдаются в тренажёр, который прогоняет твоё решение по тестам. В конце спринта большое задание, которое нужно сначала сдать тренажёру, а потом живому ревьюеру. Учишься вместе с одногруппниками, так что есть с кем поболтать в чатике. Так же на каждый спринт выделяется наставник, который отвечает на все твои вопросы. В основном наставники были толковыми, но это не фуллтайм работа, так что ответить могут сильно не сразу.
>>2453076 Молодец, что посоветовал. Там написано, что структура нетривиальна, если ее поля лежат в разных спецификаторах доступа. Однако std::is_trivial на MVSC C++20 говорит, что тривиальна.
Этот тред это местный анекдот, сидишь, читаешь и проигрываешь. Надо же было из простой си-няши такого франкенштейна сделать. Пхп из мира системного программирования.
>>2458393 >Ебать велосипед, уже проще создать класс или структуру. Ты просил красиво. На входе двумерный массив любого размера и любого типа, без необходимости передавать размер ручками. Куда уж красивее?
>>2458404 Я просто надеялся что есть изи вей который я не знаю, а тут оказывается или пики точеные с указателями или темплейты дроченые болтаться будут.
>>2458454 >Ты чё я датасаентист В данный момент в этой стране ещё возможно вкатиться в датапососаенс? Алсо, МЛ-инженегру нужен С++, или ему достаточно петухона?
>>2458397 >Питонист, хочу научиться плюсам хотя бы на уровне "написать обёртку для либы", что посоветуете для изучения? Алсо, обычно на петухоне пишут обёртку для С++, а ты собрался делать наоборот? Это типа шутка, но ты бредово написал. Не знаю, чего посоветовать, посмотри основы из шапки треда https://github.com/sosachbot/cppthreadhat .
Вот вы берете какую-нибудь любимую мапу, суете туда 10к строк любимого типа, средней длиной 20. Кто из вас способен ответить, сколько памяти это займет в вашей любимой реализации Схх?
>>2458512 Хуй знает, Патлатый говорит, что как программист он хуйня. На работе просто роутеры настраивал. Ну, а учитывая, что он не может почистить себе винду, чтобы дота не лагала, то каа бы все становится на свои места.
Вопрос не совсем по теме, но тут самый образованный анон сидит, так что хз куда еще идти. У меня проект на крестах ~800 файлов, решил собрать еще и под винду. На линуксе слион сам все парсит, навигация по проекту быстрая. На винде он не парсит, пака я сам файл не открою. Какие варианты?
>>2459572 Предположу, что под "парсингом" ты имеешь ввиду навигацию в студии. Какая билд система? CMake? Он вроде как нативно поддерживается в последних двух студиях. Открываешь, настраиваешь параметры конфига и запускаешь. Ещё один вариант - можно из симейка сгенерить проект студии. Если не CMake, то придётся вручную создавать новый студийный проект
>>2459608 Чел ты в глаза долбишься? Я же про силион пишу, а не про студию, ты хоть прочитал бы куда овечаешь. Разумеется cmake, это же стандарт. Но он не имеет абсолютно никого отношения к разбору проекта.
Кто разбирается в дискретном преобразовании фурье? Я не особо силен в математике, вот в конце книжки прикрепленной, есть библиотека fftw, там вот такой алгоритм использования как на пике. Я вот получаю массив с распределением мощности по частотам и рисую по ним график, но у меня есть эталонная программа, которая совсем другой график рисует, исходя из тех же данных. https://ofvp.phys.msu.ru/wp-content/uploads/2021/03/diskretnoe-preobrazovanie-fure.pdf
>>2459759 inputListVector это лист, в котором два вектора. Вектор [0] это действительная часть, вектор [1] это мнимая часть. Я этот inputListVector скармливаю массиву комплексных чисел in, где in[0] - действительная часть, in[1] - мнимая. Я просто совсем не разбираюсь в математике. Все на что меня хватило, это установить библиотеку fftw. Вот я делаю прямое преобразование фурье, получаю на выходе массив out, по алгоритму в книжке нужно найти сумму квадратов действительных и мнимых частей. Зачем я не знаю. Алгоритм представлен на странице 77. Там написано что это power spectral density. Я почитал надо как то сдвигать гармоники влево, но я не понимаю точно как это делать. 1 пик это эталонный график на который я равняюсь, второй пик то что получается у меня.
>>2457943 C++ это реально какая то ловушка Джокера. Люди учат его на полшишки, не могут найти работу, учат его еще, а дальше получают стокгольмский синдром, мол, не буду же я останавливаться на полпути, надо доучить и вкатиться наконец в плюсы. И так проходят годы, годы, годы.
>>2459982 Оператор возведения в степень нужен для читаемости кода, который имплементирует вычисления по сложным инженерным или физическо-математическим формулам. Чем меньше формула, написанная в коде, и отображаемая в IDE, похожа на формулу из печатного источника, тем зашкварней этот код. Язык - это не только для второсортных макакеров-кнопкокрасов и байтовертов, по сути обслуживающего персонала, которые тем не менее думают только о себе и своём удобстве и варится в своём токсичном соку. Любой язык, он прежде всего для элиты, для вершины эволюции технического специалиста - т.е. физиков, математиков и инженеров. Математики используют оператор возведения в степень в современном виде 4 сотни лет. И тут приходит грязная макака, которая нихуя не знает, но у которой инфиксные операторы сложна парсятся и вообще это по сути функции и записываться должны как функции, поэтому этот астронавт чистоты языка считает нужным это всё искоренить. Разумеется, таким тупорылым макакам умные люди обычно во время давали крепкого пня под немытый сракотан, не дав им возможности обильно нагадить. Но всё же в отдельных языках грязные байтокруты успели поднасрать белым людям.
>>2460137 Это стандартный базовый оператор, который должен быть из коробки. Вы уж будьте последовательны, и либо искореняйте все человеческие операторы, как то сложение, вычитание, деление, умножение, либо не выебывайтесь, и делайте, как говорят люди, которые знают и понимают сильно больше вашего.
>>2460206 >>2460214 Нихуя не смог понять, как это работает. До чего ж ебанутый язык, пиздец просто. Почему такую хуйню нельзя как-то явно сделать? Мимо шарпист Алсо, использовать для указателя и для умножения один и тот же символ - такая же лютая легасная ебанина, от которой хорошо бы отказаться.
>>2460303 >Почему такую хуйню нельзя как-то явно сделать? Потому что не нужна. >один и тот же символ Чем меньше конструкций тем лучше, ты на крестах вообще никогда не писал? Они из-за таких слов растут каждую версию в 1.5 раза.
>>2460554 Нахуя? Тебе мало? В хаскелле вот вообще можно свои операторы создавать из произвольного набора символов, и количество нечитаемого и неподдерживаемого говна росло бы экспоненциально, если бы на этом языке хоть кто-то писал реальные проекты.
>>2460152 >Это стандартный базовый оператор, который должен быть из коробки Я могу представить несколько различных алгоритмов для тех же, например, флотов. Все с различными сходимостями и размерами ошибки. Тейлор? Метод Ньютона? Через экспоненту с логарифмом? А для целых экспонент будет ли быстрое возведение в степень? Это ни разу не "базовый оператор", и должен быть отдан на откуп библиотеке, а не являться частью языка, как и всё, что связано с IEEE 754. И если ты не следишь за ошибками в плавающих запятой, то цена грош твоему "инженерному" коду.
>>2460725 А ещё в фортране есть встроенные функции для работы с векторами и матрицами. Казалось бы ебать как нужно и хули их писать то, но тож чет не завезли. Ни в C# ни в C ни в Java.
>>2460786 Фортран создан для математиков и физиков, а кресты созданы для нормальных людей. Но нет блять, вместо того, чтобы ебаться со своим фортраном, они лезут сука в кресты со своим говном, прям как арабы едут в Европу.
>>2460790 Фортран и просто как язык (был) хорош, просто он теперь старый и ненужный. Для такой хуйни сейчас есть бейсик, ну или питон если ты дегенерат.
>>2460799 Вообще-то фортран местами быстрее С из-за особенностей работы с памятью (то что в сях фиксят вручную через restrict на указатели) ну и конпелятор за столетия был вылизан до совершенства.
>>2460805 Ты нихрена не понимаешь что такое С, его нельзя сравнивать с фортраном. Си это машинный язык, там даже тупо математики нет, только машинные слова и байты. Поэтому там нет и степеней и прочей лабуды, это просто вообще не то, задачи у Си другие, это язык другого порядка.
Так что, как я сказал, с фортраном можно сравнивать бейсик или питон на худой конец.
>>2460806 >Ты нихрена не понимаешь что такое С >там даже тупо математики нет math.h? >только машинные слова Покажи хотя бы 1 машинное слово в Си. >задачи у Си другие Решать поставленные задачи, у форта разве другая задача?
>>2460808 Любой оператор для встроенных типов в C/C++ заменяется 3-4 строчками ассемблерного кода. Почему из этого правила должно быть исключение? Если бы существовал оператор возведения в степень, он всё равно вызывал бы pow.
>>2460808 >>2460814 Уточнение, чтобы ты не доебался: 3-4 инструкциями процессора, не полагающимися на еще какой-то код. Т.е., сложение можно заменить на add/fadd, побитовые операции на and, or и т.д.
>>2460808 >math.h Это библиотека, хоть и стандартная. Выше правильно написали >Это ни разу не "базовый оператор", и должен быть отдан на откуп библиотеке, а не являться частью языка
>>2460808 >Задача - решать поставленные задачи А конкретней? Си нужен, чтобы писать код, максимально приближенный к машине. Ты пишешь код и можешь примерно представить, как он будет транслирован в ассемблер. А фортран нужен (был) для математических вычислений.
>>2460817 Странно что фортран не преподают в школах и универах, ведь именно в системе образования бытует шиза, что программирование родственно математике. Раз уж такие математики мамкины, вот и брали бы подходящий инструмент. Но нет, обязательно надо через жопу, еще и в си лезут, дегенераты.
>>2460828 У нас был фортран, но его не преподавали, а тупо давали лабы и курсачи, там препод занимался какой-то научной хуйнёй на суперкомпьютере, для которого были свои компиляторы на C и фортране, но препод требовал сдавать лабы именно на фортране, видимо, сишку он не осилил.
Возведение целого в отрицательную степень должно возаращать флот. Возведение целого в степень 2 крайне желательно возвращать как целое. Система типов затрещала? А я даже еще не цитировал man pow.
>>2460814 >он всё равно вызывал бы pow. Или использовал бы инструкцию pow, ему ничего не мешает. >>2460817 >Си нужен, чтобы писать код, максимально приближенный к машине. Си нужен, чтобы заменить куски зависимого кода. >>2460817 >Ты пишешь код и можешь примерно представить, как он будет транслирован в ассемблер. Так можно сказать про любой нативный компилируемый язык.
>>2460716 >Я могу представить несколько различных алгоритмов для тех же, например, флотов. Вот и настроишь это для своего компилятора или будешь использовать явный вызов функций, если это для тебя важно.
>А для целых экспонент будет ли быстрое возведение в степень? Для перегрузки с интовым правым аргументом может и быть.
>>2460913 И как, завезли уже в паскаль оператор возведение в степень? Есть хоть один "нативный компилируемый язык" с "базовым" оператором возведения в степень?
>>2460921 А при чем тут оператор возведения в степень? И что он вообще должен делать в языке, который может компилиться под всякие микроконтроллеры где всяких fpu нет и близко?
>>2461039 > Но ведь время программиста стоит дороже, чем ещё одна плашка оперативы. Это пока. Пыня старается изо всех сил чтобы в скором будущем стало наоборот
>>2461050 Во время написания/выхода второго издания C++20 был в черновике, кажется. Вроде бы, все стандарты до него там описаны нормально. Кажется, уже 3-е вышло на ангельском, но хз, можно ли его найти где-нибудь забесплатно.
>>2461039 Ага, а если программа пишется для широкой публики, а не внутреннего использования? Пользователям тоже предложишь докупить 60 Гб оперативной памяти?
>>2460894 Инструкции процессора могут быть любыми, которые заложил разработчик, что мешает ему оптимизировать степень, если это требует заказчик? Ничего.
>>2461143 Понятно что при остром желании можно хоть пустыми объектами всю память занять, если ставить себе цель именно занять всю память. Но без злого умысла сделать тобой описанное - я хуй знает, как.
>>2461153 >жава кайфовый язык создавай столько объектов сколько нужно вм всё порешает за тебя) >ой а почему мой калькулятор использует целый гиг памяти а где сборщик мусора((
>>2461183 Что ты этим пытаешься сказать? Торрент клиент - каловый пример, его школьник-имбецил напишет на каком угодно сахарном языке и будет норм работать. Самая прибыльная игра в мире написана на жабе (игра блядь), вот и ответ можно ли клиентский софт писать на жаве. Да можно, если он кому-нибудь нужен.
>>2461209 >Самая прибыльная игра в мире написана на жабе (игра блядь) Это которая потом была на плюсы переписана, чтобы в неё можно было играть? Хороший пример, хороший.
>>2461219 Чёт в шёпот. Ты хотя бы минимально ознакомься с вещами, о которых рассуждаешь. Во-первых копрокубы были самой продаваемой игрой в мире задолго до появления bedrock edition. Во-вторых, задача этой версии - принести кубач на каловые платформы. Сначала появилась мобильная версия, потом консольные версии, получился зоопарк разных версий, потом их все поубирали из магазинов и выкатили ЕДИНУЮ кастрированную говноверсию, в которую играют только те, кто по каким-то причинам не может играть в нормальную. >чтобы в неё можно было играть Чтобы в крестовую версию можно было играть, в неё нужно хотя бы моды завезти, но модов там нет и не предвидится.
>>2461209 >Самая прибыльная игра в мире >самой продаваемой игрой Прибыль основывается не только на продаже копий. >>2461245 >задача этой версии - принести кубач на каловые платформы Интересно, а почему они просто не портировали жабу?
>>2460807 Он уже написал из-за чего - неиспользование restrict keyword'a новичками при вероятности алиасинга (перекрытия) структур данных, переданных функции в параметрах-указателях. /мимо rust-бой где такой нужды нет (как и в фортране)
>>2462076 Лучше бы уже функциональщину пилили бы в новых стандартах, а не всякие {{zalupa::pizda}}. Уже тошнит от их изобретений велосипедов и новых конструкция языка под эти велосипеды.
>>2462194 > Какой функциональщины кроме паттерн матчинга тебе не хватает? Монады, нормальные лямбды к монадам. Возврат значений из выражений, например из циклов. Нормальные диапазоны и итераторы на уровне языка, а не стд-высеры не пришей к пизде рукав. Что-то с rvalue сделать для накручивания лапши.
>>2462237 >Монады Реализуются. >>2462237 >нормальные лямбды к монадам. Элаборейт. >>2462237 >Возврат значений из выражений, например из циклов. Корутины что-ли? Есть. >>2462237 >Нормальные диапазоны и итераторы на уровне языка, а не стд-высеры не пришей к пизде рукав Доебка ни о чем, они есть и все.
Да, кресты не задумывались как фп язык и фп на нем неудобно, но оно есть. Хочешь удобного фп иди в не мультипарадигменный язык, а не выдавай здесь свою шищу.
>>2462424 > Хочешь удобного фп иди в не мультипарадигменный язык В этом контексте дело же не в том, что он мультипарадигменный, а в том что у него сборщика мусора нет. (ИМХО)
Покажи удобный ФП язык без сборщика мусора. Он также страшно будет выглядеть как кресты.
>>2462506 >1 Ну давай считать ссылки. Циклические структуры у тебя, конечно же, никогда не возникнут. >2 Его нет в Фортране 66, где все выделяется статически. Как только начинаем выделять/освобождать динамически, ПОТРЕБЛЕНИЕ неизбежно появляется. >3 Это необязательно. Например, в Т (вроде бы) сборщик мог быть написан на самом Т. Во многих лиспах сборщик можно приостановить. В системах с реалтаймововй сборкой есть жесткии гарантии.
>>2462506 > >Какие вообще подводные в сборщтке мусора? > 1. Бесполезность. Он крайне полезен > 2. Потребление. Ты уверен? Мне кажется что по потреблению сборщик мусора будет куда оптимальнее. Он вроде как может двигать объекты, а с обычным маллоком ты не словишь фрагментацию памяти с вечным распуханием? > 3. Бесконтрольность. Им можно управлять. Кстати насчёт отзывчивости - а маллок какие то гарантии вообще даёт, за какое количество времени он даст тебе блок памяти, или при росте потребления он будет все более и более задумчив?
>>2462590 >1. запостить хуйню >2. запостить хуйню картинкой Как называется эта болезнь, когда второе считается за весомый аргумент, а первое отбрасывается даже не думая?
>>2463674 Тем что в нём код короче, работает как ожидается и выплёвывает ошибку компиляции в любой непонятной ситуации. А на крестах приходится писать простыни кода, ебаться с чудесами управления памятью и кишками макросов/шаблонов, сосать хуи в реалтайме потому что работает не так как ожидается, а компилятор промолчал. ГОвно в принципе синоним слова кал.
Сап плюсач, я школьник-самоучка, в последнее время в основном пишу на расте, плюсы всегда как-то обходил стороной, но сейчас решил подтянуть их, ибо придется писать олимпиадные задачки на нём да и что-то чувство неполноценности из-за неумения в плюсы гложет. Уткнулся в непонимание move-семантики. Правильно ли я описал код здесь и что происходит с переменными после мува? Если обратиться к ним, случится segfault или ub? https://pastebin.com/C6pAPM2v
>>2463800 После мува невалидные ссылки просто нельзя использовать. Но в конкретно твоём примере разницу между мувом и копированием не будет, у тебя же тут дефолтный конструктор и все типы примитивные.
>>2463812 Разве компилятор не сгенерирует дефолтный мув-конструктор? Получается, в этом случае объект всё равно просто скопируется, а не будет чего-то вроде передачи владения новой переменной?
>>2463817 > Разве компилятор не сгенерирует дефолтный мув-конструктор? Сгенерирует, но чем он по твоему от обычного копирующего в данном случае будет отличаться? Я хз какой сгенерируется тут дефолтный, но он совершенно точно должен скопировать значения полей из старого объекта в новый. Чисто теоретически он мог бы их и обнулить, но зачем, если по нормальному объектом пользоваться будет же запрещено, это будет пустая трата времени. > Получается, в этом случае объект всё равно просто скопируется, а не будет чего-то вроде передачи владения новой переменной? У тебя обычные сраные инты, нет тут никакого владения, владеть нечем. Владение появится когда у тебя будут какие нибудь указатели которые надо почистить в деструкторе, сокеты и тому подобное.
>>2464701 Хотя не, лучше сгенерить кастомный загрузчик через glad. Ну и там VAO, VBO, дескрипторы в классы завернуть. Ну чтоб не стейт и не вонючий C-style. RAII там, все дела.
В GO оказывается есть гарбедж коллектор. Я чето охуел ребят. Ну и какая он замена си? И оказывается из-за этого в некоторых фирмах сервера переписывали на RUST.
>>2464890 Да, я после отправки понял, что обосрался. Имел ввиду другое, но из-за своей лени и косноязычия было лень подробно свои мысли расписывать, поэтому просто забей.
>>2464877 А что тебя смущает? То что там 3 строчки кода развернуты в 20? Или то что вместо цикла там find_map с диапазоном и лямбдой? Или то что коды ошибок через паттерн матчинг и unwrap обрабатываются? Это всего лишь немного функциональщины, в расте вообще норма писать цепочки вызовов методов столбиком и лямбды в них, даже вместо заполнения структур предпочитаются билдеры. Для читаемости наоборот лучше такое - код после "=" очевидно отвечает за создание объекта, паттерн матчинг на вызовах функций спасает от кучи ифов, которые сливаются в кашу и могут быть раскиданы по коду. Да, уровней вложения много и надо форматировать код чтоб не получалась лапша, но зато код логически скомпонован. По крайней мере нет хуйни как в крестах, когда в простыне кода приходится скролить вверх-вниз, чтоб понять как оно связано между собой, ведь в пределах файла с реализацией класса часто буквально в процедурном стиле на 500+ строк всё написано.
>>2465402 >нахуй нужны бинарные деревья блять?? Банально синтаксические выражения парсить. Попробуй написать калькулятор с учетом приоритета вычислений и различными фукциями, тогда на практике поймешь зачем. Например, чтобы оно решало выражения вида sin(24) + cos(5)
>>2465402 > Это если оно сбалансированное, а в худшем случае глубина рекурсии = кол-во элементов Так не используй несбалансированные деревья, кто тебе мешает. > Поясните, кстати, нахуй нужны бинарные деревья блять?? Ну как минимум для написания упорядоченных сетов и мап.
>>2465412 >>2465428 Ладно, я тупанул, походу. Я не мог понять, чем обычный бинарный поиск хуже дерева. Потом дошло, что поиск за O(logn), а вот удаление и добавление новых элементов за O(n), потому что сдвигаем элементы в массиве/векторе. Сначала показалось, что тоже должно быть за O(logn). В дереве добавление и удаление тоже за O(logn). Если балансировка дерева это тоже O(logn), то, в принципе, всё понятно.
>>2465444 > Осталось разобраться с балансировкой И это самое сложное, что есть в деревьях. Есть дохуя видов балансировки: AVL-деревья, красно-чёрные деревья (юзаются в STL), B-деревья и B+-деревья (юзаются в базах данных для индексов) и другие.
Анонсы, прошу помощи. Есть прога, инжектит указанную dll в другую(не читы, честное слово, попросили помочь просто). С этим всё ок, но есть необходимость аутпут этой проги получить, когда в неё загружена библиотека. Сталкивался кто-нибудь? Гугл находит пару-тройку способов достать аутпут другого процесса, но везде(даже если в строке поиска обратное) рассматривается ситуация с дочерним процессом, когда ему STD_OUTPUT_HANDLE передаётся родительский. Но у меня процесс не дочерний, по условию запускать его самому нет варианта. Как с этим справляться? Пробовал запустить на стороне процесса через CreateRemoteThread GetStdHandle, чтобы получить handle устройства вывода, но этот вариант тоже не сработал - ни через ReadFile, ни через пайпы, ни через SetStdHandle.
Ну хз, хук повесить на какой-нибудь Write*(). Правда тогда получишь весь вывод, а не только std. и вообще я не настоящий сварщик и в теме не разбираюсь, но вот в тред насрал зачем-то
Поясните в чём прикол, написал говнокод который не должен работать, а он сука работает, но если хоть что-то дописать в конце функции он перестаёт работать.. Короче должно выдавать 31, если раскоментить cout тогда уже ничего не работает, Подскажите почему так.
>>2465852 Конпеляптор шалит оптимизацией. Выставь во флагах компиляции, например, -O1 - будет бесконечная рекурсия. Ну или просто другой компилятор попробуй.
>>2465860 >будет бесконечная рекурсия Не будет бесконечной рекурсии, он просто не сможет зайти в нужную ветку и дропнет это говно... Фишка в том что он сам дописывает return 1 там где этого быть не должно.
>>2466468 Как называется эта болезнь? Почему они все пытаются вместо идеального C синтаксиса высрать это нечитаемое говно, которое ещё и занимает больше места?
>>2466468 Кал. Надо упрощать синтаксис, а не усложнять. Хороший дизайн языка - это когда одна и та же конструкция может решать много разных задач. А когда под каждую задачу пилят новую конструкцию языка - это соевые костыли. Например, как шаблоны высрали в виде языка в языке, так и тут такое же нечитаемое говно.
Раз уж подняли тему синтаксиса, то тоже задам свой вопрос. Насколько приемлем для вас "синтаксический сахар"? Мне кажется, что в плюсах его количество идеально. Его не сильно много как современных язычках и не мало, чтобы приходилось миллиарды раз писать рутинный код для рядовых вещей. Он вот именно решает возникшую проблему, а не существует ради существования. Наприимер, в каком нибудь JS или Питон - цикл for уже моветон. Хотя лично я ничего плохого в нем не вижу.
>>2467145 Какой нахер синтаксический сахар в крестах? Эти уебки все никак не могут инициализацию полей в структурках сделать, тогда как в си уже лет 10 есть.
>>2467165 Дедуля, попроси старших динозавров на проекте, чтобы все перешли на c++20. Там есть инициализация типа ClassName obj = ClassName { .x = 1, .y = 2} Правда, надо, чтобы поля были в том же порядке, как и в структуре.
>>2467178 Так это в каком-то виде даже до 11 стандарта было. Просто, как я понимаю, там вызывался дефолтный конструктор и надо было все поля указывать.
Бтв не хватает порой такой штуки, когда ты можешь явно указать, в какой аргумент функции что передаёшь. То есть что-то вроде void proc(int x = 0, int y = 5, int z = 10) {...} proc(z=> 20);
Аноны, где-то пару лет назад выпал из языка и не следил вообще ни за чем. Хочется освежить в памяти (или узнать) вещи которые были с 17 стандарта и по текущий момент. Есть какие ресурсы или блоги для этого?
>>2467178 > Правда, надо, чтобы поля были в том же порядке, как и в структуре. В этом и есть пиздец. В сишке не нужно соблюдать порядок, внезапно. Это жутко неудобно, когда у тебя там 20 полей, как я должен догадаться в каком они порядке? В итоге сначала пишешь, потом по вылезшим ошибкам переставляешь их.
Вот в шарпе есть стек и куча. На стеке доступ к данным значительно быстрее, но он имеет ограничения. Структуры в шарпе размещаются на стеке, а классы в куче. А в крестах есть подобное? Как здесь работают с памятью?
>>2467396 Всегда интересно наблюдать, как изучавшие программирование с питона и джавы открывают для себя новую модель памяти. Представь что всю жизнь ты знал о стеке только то что он переполняется при рекурсии а рекурсия это, как известно, просто мем башорга. А тут оказывается что где-то люди сохраняют туда данные разного размера. Понятие размера структуры тоже требует переосмысления если теперь поля это не ссылки в кучу а реальные объекты.
>>2467613 Аналогично, только начинал с программирования мышкой в gamemaker 8. Культурный шок испытал только при встрече с функциональщиной, когда узнал что вместо добавления элемента в список создается новый список.
>>2467404 Кстати, в стандарте вообще упоминаются стек и куча, или от них абстрагируются? Есть гарантия, что глобальные переменные - в дата сегменте, локальные - в стеке, а созданные через new объекты - в куче? Или зависит от компилятора?
>>2467681 > Нет, есть только storage категории. На самом деле раньше делали компы вообще без стека. Может все таки без кучи? Без стека чё то делать анрил, весь вызов функций на нем работает.
>>2467738 Нет терабайта виртуальной, поридж, это не бесплатно даже на amd64. Каждому потоку резервируют адреса от А до Б. Если процесс полез в невыделенную память между А и Б, ядро наращивает стек. Если полез в другие адреса, его убивают.
Аноны, чёт не вдуплю никак. Гарантирует ли std::atomic<int> value; value.store(1, std::memory_order_relaxed); то, что значение value после исполнения этой операции будет видно во всех других тредах? Или memory_order_relaxed гарантирует только то, что это value запишется корректно (а когда и где его обновлённое значение будет видно - неизвестно)?
if (!file_input.is_open()) { return 1; } if (!file_output.is_open()) { return 1; } char k; while (file_input) { file_input.get(k); if (file_input) { if (k == '\r\n') { k = ' '; } file_output.put(k); }
}
далеко не первый час бьюсь над этой проблемой, не могу найти ответ. сейчас надо идти, вернусь часа через 3-4, кодировка ASCII или UTF-8(любая годится), если у тебя будет решение - буду чрезвычайно благодарен, если нет, но и за то что есть ещё раз спасибо
Аноны помогите я тупой Хочу написать обобщенный класс, разделил на .h и .cpp (на 1-2 скринах пример определения и реализации одного из методов) При вызове методов в main'е кидает ошибку компиляции (скрин 3 - CMakeLists, скрин 4 - ошибки)
>>2468414 У тебя функция приват и статик. Она может быть статик, только если класс можно использовать без инициализации экземляра. А вот приватнкю ты за пределами класса никак не вызовешь. Мотоды которые ты хочешь вызывать из вне должны быть пабликами, так или иначе.
>>2468533 Ну, можно налодить кучу объектов из одного куска памяти, а потом грохнуть разом кусок целиком. Дефолтный должен быть универсальным, он не будет знать как ты его намереваешься использовать.
>>2468533 Есть такая тема, необходимая в определенного рода по, что память заказывается вообще только один раз, в начале инициализации, почти вся физ память, например. А по ходу исполнения и по мере необходимости выделяется память из уже взятой из системы. Так быстрее.
>>2469526 Ну я так посидел подумал, там типо есть максимальное и минимальное количество линий умещающееся по осям, допустим минимальное количество линий 4, максимальное 6, если мы масштабируем график то, проверяем, после масштабирования у нас количество значений кратным допустим 10(100, 110, 120, 130, к примеру), меньше чем 4, значит уменьшаем кратность до такого количества, что бы у нас было не больше 5 линий на экран, и не меньше 6. Тоесть теперь будет не кратность 10, а кратность 7.5, или кратность 5. Ну надо подумать еще над формулой
>>2451830 (OP) подскажите, как получить имена локальных дисков и их буквы на компьютере? То есть, если у меня есть 3 диска C, D и E, и например у E имя папки E_folder_name, то как мне их все получить? С помощью filesystem? Что в path нужно писать?
>>2471184>>2471184 спасибо за ответ, не знал про такую функцию но мне нужно получить именно название диска, а эта функция возвращает только имена дисков
>>2471214 то есть букву диска, а мне нужно получить имя диска, то есть если у диска D название D_disk_name, мне нужно получить кроме буквы D ещё и имя D_disk_name
вот я рисую график, допустим мне надо рисовать точку на координатах 28.4365. Если округлить то получиться 28. То есть на координате 28, я рисую пиксель, и допустим мне надо еще точку нарисовать через 28.4365, тогда я еще через 28. пикселей рисую точку. Но если мне нужно нарисовать метку что здесь в этой точке координата по Х кратна 10, то есть 10, 20, 30. Получается, если я буду прибавлять значение, по 1. Но дело в том что почему то не работает такая схема. При масштабе 1 пиксель на 1 единицу измерения, есть такие координаты и положения графика, когда я увеличиваю X на 1, а на графике все остается также. Как вы поняли точки следуют через определенное количество значений, то есть равно удаленны друг от друга. Если я буду просто рисовать точки от начала координат, путем умножения i*28.4365, i это номер точки в массиве, то получится такая ситуация, что кое где точки будут на 1 пиксель дальше друг от друга, а кое где ближе, получится примерная такая последовательность интервалов. 28, 28, 28, 29, 28, 28, 28, 29. Да я также не хочу рисовать все точки, из массива, только те которые входят в пределы виджета. И также расстояние между точками мне нужно заполнять цветом, ввиде прямоугольника, высотой значением y. Но 1 пиксель убрать что бы все не сливалось воедино.
double x = (joneElementValuescaleX) + offsetXValueLeftscaleX; x = trunc(round(x)); Вот такая формула вычисления позиции x для элемента массива offsetXValueLeft - это разность между ближайшей точкой слева от начала виджета. Типо позиция начала виджета - ближайшая точка слева. И вот тут либо такую формулу использовать и и мириться с тем что некоторые точки будут шире, а не которые уже. Либо использовать формулу такую:
Решил делать переменную ширину столбца, путем вычитания от следующей координаты столбца, предыдущую, выглядит уже не так плохо, но все равно не очень. Блять я наверно когда нибудь книгу или лекции по программированию графиков запишу, это блять великая проблема
>>2471557 Итераторы это же просто интерфейс. Ты можешь написать свой итератор который будет принимать pair и выдавать из него значения. Хз зачем это нужно правда.
Друзья, я нуб помогите. Вот перегружаю я операторы, чтобы работали с моей структурой и все хорошо, пока структура - левая, тоесть "T operator...(T t)" - ок а вот как сделать чтобы T было справа, например "1/T" хз хз.
Здравствуйте. Насколько реально для одного человека имея клиент Lineage 2 написать эмулятор сервера с нуля (не заглядывая в код pts и java версии сервера, а так же не анализируя входящий трафик с работающих серверов)? Можно начать риверс инжеринг, дебаггером поковырять клиент, расшифровать и проанализировать исходящий трафик, но меня мучают сомнения касательно того будет ли этого достаточно.(И вообще реально ли исходящий трафик расшифровать) Lineage 2 взял для примера. Существует много старых, закрытых онлайн игр сервера которых уже не функционируют даже у себя на родине. Просветите про историю Lineage 2. Как обстояло дело до того как получили доступ к PTS версии игры. Были ли пиратки? Каким образом их создавали? Заранее спасибо всем за потраченное время на написание конструктивных комментариев.
>>2476095 Вопрос в квалификации упорстве и времени. Строить с нуля все велосипеды, начиная от реализации протоколов связи до поднятия СУБД задача долгая и нудная. Ещё более нудная (не менее сложная, хотя кому как) это обратный реверс. Особенно, если ты хочешь создать сервер, реверся клиент. > Были ли пиратки? Были. Чаще всего пиздился сервер у издателя, по этому версии всегда отставали. Потом, когда интерес не охолодевал, некоторые ебанутые переписывали сервер.
Короче, сейчас будет даже не легче, а полезнее взять готовый движок ал-я UE4 и запилить на нём ремейк или вообще свою игру.
Но это всё разные пути, но они все требуют нехилой ВОЛИ для их реализации.
>>2476269 БД - не мамаша анона, к ней не может прийти кто угодно и выебать. Какая у тебя база? Оракловая, mysql, постгре? Вот и гугли библиотеку для своей конкретной базы, которая позволит тебе подключаться к ней. Например для Oracle это OCCI называется.
Объясните скриптомакаке, как разрабы на сях ищут и устанавливают пакеты? В питоне есть pip, в жиес есть npm, а в сях? Копируют руками сорсы себе в папку с проектом или что?
>>2478929 В плюсах тоже есть менеджеры пакетов, самые популярные - Vcpkg и Conan. Но это в первую очередь для винды, на линуксах либы обычно ставят из репозиториев дистрибутива. Например, есть либа SFML, и для неё в репозиториях может быть условный sfml-dev, ты пишешь apt-get install sfml-dev и получаешь хедеры/бинари либы вместе со всеми зависимостями. остаётся заинклудить и указать компилятору путь к системному каталогу, куда ставятся все либы. Часто так делают и на скриптовых языках, вместо pip могут, к примеру, поставить либы через тот же apt-get. Ну и в плюсах не принято юзать по библиотеке на каждую мелкую фичу, и либы обычно самодостаточны или требуют совсем немного зависимостей. Нет такого, чтобы для использования одной либы требовалось поставить ещё 20 пакетов и выкачать полгигабайта зависимостей. Так что не такая и проблема скачать либы с сайтов разработчиков.
>>2478943 >на линуксах либы обычно ставят из репозиториев дистрибутива. А как тогда контролируется одинаковость зависимостей у всех разрабов проекта? Не писать же каждому челу в команде типа Славик, установи либу вот этой командой: sudo apt get ...? Обычно есть файл с декларацией зависимостей (requirements.txt, package.json), который потом пакетным менеджером обрабатывается. А если линухоидный манагер пакетов использовать, то как это реализовать? Бащ скриптом? CMake про это?
>>2478951 > Бащ скриптом? CMake про это? Да. Только они занимаются именно сборкой, а не скачиванием зависимостей, и есть множество нестандартизированных костылей, чтобы научить CMake управлять пакетами. В каждом проекте ебутся как хотят, для каждой либы своя специфичная ебля, потому что есть 100500 способов их подключения, будь то vcpkg/conan, bash-скрипт с несколькими командами apt-get install пакет_нейм=версия, субмодули git, архив с зависимостями на корпоративном сервере, хранение зависимостей в Git, либо просто файлик с инструкцией, откуда что качать и куда распаковывать (это как у новичков в линуксе, которые гуглят "как установить программу X?" и вместо простых инструкций об установке из репозиториев получают ответы "запустите ./configure && make && make install, а если будут ошибки, качайте зависимости с сайтов и с ними ебитесь так же"). Да, в 2022 звучит как пиздец, это пиздец и есть. Хорошо только то, что зависимостей обычно немного.
>>2478951 Если вкратце, то как при работе с докером - пишется Makefile, в котором прописаны все действия для создания образа (считай скрипт на баше с вызовом apt-get, ldconfig, make, ./configure и прочими или батник для win cmd).
CMake в lin и win не встроен, поэтому на нём обычно описывают сборку проекта из исходников. При этом пути к внешним ресурсам выносят в виде переменных, которые ему укажет тот, кто будет собирать.
>>2478963 > пишется Makefile, в котором прописаны все действия для создания образа (считай скрипт на баше с вызовом apt-get, ldconfig, make, ./configure и прочими или батник для win cmd) Ты же не знаешь, о чем говоришь, да?
Блять, как же я заебался с торчем. Я думал такая ебля с PyTorch и кудой только на петоне, но нихуя. Дебага нет никакого, почему куда не заводится нихуя не понятно. Сам торч выдаёт простыню с такой припиской: Could not run 'aten::empty.memory_format' with arguments from the 'CUDA' backend. This could be because the operator doesn't exist for this backend, or was omitted during the selective/custom build process (if using custom build). If you are a Facebook employee using PyTorch on mobile, please visit https://fburl.com/ptmfixes for possible resolutions. В итоге три часа ебался, чуть не дропнул нахуй, каким-то чудом завелось.
>>2479750 > - С чего начать написание своего языка программирования? > - С прочтения вот этих двух книжек, направленных на изучение компиляторостроения > - Чтобы что? Шизло ебаное, съеби из треда нахуй.
Сидел писал клиент, чтоб маняме смотреть из приложения, трекер просмотренных и т.д. Даже до апишки не дошел, пока сидел красивый сплеш с авторизацией делал и понял, а нахуй оно надо-то, в браузер зашел и открыл. Пиздец, уже кучу проектов побросал из-за этого
>>2481040 Напиши бэк тогда, чтоб из браузера к нему коннектиться и смотреть. Многопоточка, транскодинг, и чтоб на GPU крутилось. Захуячь ещё туда рестапи и вёбсервачок с ui на жопаскрипте. А бэк пусть стартует от папки какой-нибудь с онеме. Так по чуть-чуть и нетфликс свой скрафтишь.
>>2481040 >сидел красивый сплеш с авторизацией Решил сделать проект. @ Сделал красивую хуйню. @ Тыкаешься в эту хуйню целыми сутками. @ За год существования проекта в нем только 100 строк с реализацией красивой хуйнюшки. @ Заходишь чтобы потыкать в эту хуйнюшку и посмотреть как хорошо она работает.
Не совсем понятна задумка статических функций. Зачем они? В моём понимании они не выделяют дополнительную память, возвращая результат. А функция, возвращающая пойнтер разве выделяет новую память под него?
>>2481980 Ты про статические функции из сишки или про статические функции класса? К памяти это не относится в любом случае. static перед функцией - это просто аналог private, чтобы функцию не было видно в других единицах трансляции. А в статические функции класса почти как обычные функции, но относящиеся каким-то образом к классу и не имеющие ссылки на объект (то есть this не работает).
>>2482628 Ладно, я настолько заебался разбираться, что написал свой варик функции с теми же, блеать, данными, и он, блеать, работает. Так что я вобще не ебу, что с кодом выше не так. Если кто понял, в ччм там косяк - дайте знать
>>2483219 >Ну кроме гуи Работа с последовательными портами, nfc, спутниковое позиционирование, преобразование кодировок текста, работа с изображениями, с шинами данных машин и некоторых летательных аппаратов, конечные аппараты искаропки и т.д. И все это может собираться например под эмбеддед или андроид. Вощем это фреймворк общего назначения, для киберпанка тебе нужен специализированный игровой движок, хотя кют в 3д тоже может
Подскажите как написать шаблонную функцию только для некоторого ряда типов. Она у меня делает одно и то же и явно определять для каждого конкретного слишком много лишнего кода получается. Что то тип такого?:
Есть ли разница между void foo(initializer_list<int> il); и void foo(const initializer_list<int>& ilr); Я так понимаю, если вызвать foo({1, 2, 3}), сначала будет создан временный объект, соответствующий аргументу, и далее, в первом случае, этот объект будет скопирован, и мы получим еще один объект, соответствующий il, а во втором случае копирования не произойдёт, и будет создан только один временный объект. Если это так, то почему обычно используют первый вариант, а не второй?
Скопировал код, в нем определен тип возвращаемого значения функции в .hpp: inline static auto WStringToUTF8() -> std::string Но у меня работает само по себе и без этого, все из-за того, что я сижу на более новой версии c++?
>>2484721 Пиздос каша в хедере. И сам код как будто на сишке написан. Алсо, от комментариев блевать хочется, должны быть нормальные имена методов, а не пояснения в комментариях что это за говно. Если bool возвращаешь - в имени должен быть вопрос.
Прикол в том, чтоб можно было сделать, например ThreadSafeObject<std::set<std::string>> mySet; И потом можно было делать операции как под мьютексом mySet.withLock()->insert(...); Так и без mySet->insert(...); Но я не уверен, какой будет лайфтайм моего прокси объекта. Для эксперимента запустил хуйню на пике 2, и вроде все ок, но гарантировано ли такое поведение? В смысле, чтоб деструктор прокси класса вызывался после того, как выполнено выражение с return value его метода.
>>2485580 >>2485589 Спасибо. Значит я все пиздато изобрел. Ну да, вроде лайфтайм временных объектов как раз совпадает с лайфтаймом выражения. Припоминаю
>It is a standard exception that can be thrown by programs. Some components of the standard library, such as vector, deque, string and bitset also throw exceptions of this type to signal arguments out of range.
>>2485716 >A program can be said to contain unspecified behavior when its source code may produce an executable that exhibits different behavior when compiled on a different compiler, or on the same compiler with different settings, or indeed in different parts of the same executable.
Охуительные истории конечно. Ну спасибо за помощь.
>>2485723 Из оп поста книжка за 2014, Б. Страуструп. На самом деле у меня глаза в жопе оказались, там внизу страницы сноска, что надо использовать их специальный файл с библиотаками, разработаный спецом для этой книжки и тогда все работает всегда. В любом случае всем спасибо за помощь.
>>2485727 Это вопрос не к Страуструпу, а к переводчикам, которые листинги херачили в книгу. Стоит только заглянуть на референс и будет видно, что operator[] не проверяет границы - и, следовательно, не должен выбрасывать исключение согласно стандарту, а метод at кокрастаке выбросит тебе out_of_range.
>>2485579 Уууу сука как охуенно! Уже в 100500 местах применил эту обертку, и убрал нахуй все голые мьютексы из стейта классов. И заодно с ними утилизированы двухстрочные методы-паразиты, которые всего лишь заменяют делают операцию под lock_guard-ом. Короче, никто не узнает код, когда моя ветка в мастер попадет. Я бог рефакторинга.
>>2485844 Нормально собрался. Там сначала кое-какая хуйня происходит во много потоков, и сеты/мапы аккумулируются инсертами/эмплейсами, а потом я без лока захожу. Ну, иногда чтение тоже с локом, когда одновременно идут и пишущие, и читающие операции, но у меня нет такого UB, что управляющий поток запушит что-то раньше управляемого или позже, и от этого поведение второго потока изменится. Там оно скорее сделано для того, чтоб флашить только один раз кое-где.
>>2485856 Сори за скомканное объяснение, я просто хохол придерживаюсь привычки не разглашать лишнее на дваче, и вот-такими-вот местоимениями затыкаю потенциальные бизнес-детали.
>>2485844 Ну и да, у меня ж для таких случаев мьютекс торчит наружу. Его можно руками засунуть в локгард и хоть десять операций атомарно сделать. Вот финальная версия. https://pastebin.com/DZB8nqaT
Хотя, я уже и так обосрался, потому что ты мой конкурент. Теперь применишь это в своем проекте, до чего никто раньше не додумался, и скорость дальнейшей разработки на такой порефакторенной кодовой базе ускорится на 3%, из-за в следующем году ваш важный релиз состоится чуточку раньше, и крупные заказчик выберет вас раньше. Ключевая сделка проебана, а там и сокращения, и до меня дойдет, и до истории тредов на рабочем компе, и до суда... Ладно, похуй, я не жлоб и вообще адепт Столлмана. Немножко.
>>2485969 Сам охуел, но есть еще конторы здорового человека, которые для высоконагруженной части бэкенда используют C++, а помимо крестов - Common Lisp. Это просто идеальное сочетание, как по мне. Тупо шах и мат говноедам.
>>2486346 Бэкапим данные всяких организаций, которые юзают общеизвестные облачные сервисы для работы. С возможностью рестора туда же. Например, office365. Через API майкрософта выкачиваем все на свои датацентры от админа клиентской организации, и через майкрософтовское же API ресторим что-то обратно, если потребуется.
>>2486465 Вот этой инфы в описании вакансии не было, так что боюсь сообщать инфу. Не из открытых источников, все таки. Ничего личного, при капитализме живем просто. Эх, поскорее бы коммунизм.
Антоны, ща немного погуглил про typedef struct example { ... } example; Пришел к выводу, что в C++ вообще похуй, есть тайпдеф или нет тайпдефа - т.к. неявно все равно тайпдеф есть, а в C разница только в том, что структура пишется в пространство имен тегов, а тайпдеф пишет в ПИ идентефикаторов. Я правильно все понял? Есть что-то, что я упустил?
Кто знает можно ли как нибудь сделать так что бы кастомные виджеты в QT Designer имели свои типы данных? Просто хочу сделать виджет, и что бы этот виджет в зависимости от значения которое ему пришло, менял цвет, текст, шрифт, цвет текста, на нужный. Хочу сделать это красиво, в виде динамических свойств, что бы типо, можно было к примеру добавить свойство с именем "1", и в этом свойстве были настройки типо такой то цвет, такой то шрифт, такой то текст, такой то цвет текста. В общем как мне добавить свой тип свойств в QT Designer. Что бы патом мой виджет в зависимости от пришедшего к нему сигнала смотрел и искал у себя свойство с таким же именем, как значение полученное из сигнала, и если у него есть такое значение, то он все значения из динамических свойств себе устанавливал.
>>2486692 Конечно нет. Си стиль это когда футкции. Нету обьектов содержащих информацию. Локальные переменные и что угодно прдается в функции. А с++ стиль это классы. Экземпляры классов вполне могут и сами хранить какую то инфу, а все ыкнкции запихнуты внутрь, пусть дпже это и си функции, куда же без них. Си стиль не значит плохо или хорошо. Пиши как удобнее. Некоторые вот вообще на чистом си пишут, и ничего.
Мужики, помогите неофиту решить вопрос. За плечами пару лет любительского говнокодинга на Си. В основном писал рипперы для игровых форматов и небольшие патчи для старых игор. Сейчас нахожусь в поиске работы и присмотрел +- подходящие для меня вакансии. Одна из них на жабе, а вторая на плюсах, оба бекенд. На вакансии с жабой требования полегче чем у плюсов, но зато у оных более иинтересная предметная область. Оба языка я знаю на уровне "что-то когда-то слышал", но готов потрать месяц-два на изучение основ каждого, благо большего не требуется. Что посоветуете? ВЫбрать более надежный вариант, но не очень желаемый или рискнуть на интересную работу с шансом оподливиться?
>>2487090 Твой опыт - он отрицательный. Проще обучить кодить с нуля, чем выправлять мозг программисту на С в сторону ООП и modern c++. В Java тебе ещё меньше обрадуются. Там выше по треду чел сокет обёртывал - вот прям видно, что одним полушарием продолжает на сишке писать, а другим пытается впихнуть исключения, STL и то, что вчера в книжке про сдвиг прочитал. Тот чел - это ты после 2 месяцев "изучения основ".
В принципе ты дашь подливы по обоим направлениям, так что будь спокоен. Пробуй и там и там, терять тебе всё равно нечего.
>>2487134 Функционально программа должна обеспечивать требования тз. В каком стиле она написана никого не ебет. Ясное дело на около си ему больше кода писать придется, но работать оно может и не хуже современных плюсов. че вы так от си рветесь
>>2487134 Ну я не совсем формо-гнездовой еще, чтобы Си-шка оставила сильный отпечаток на мне. Я и на CLispe некоторые вещи писал и Guile в качестве встраиваемого языка для плагинов использовал, так что с пониманием новых концепций не все так плохо. Вопрос в другом, у меня времени не так много, чтобы все сразу проьовать, поэтому нужно сделать выбор, либо плюсы точеные, либо жаба дроченая. На жабе как-то попроще с поиском работы, судя по хх.ру, но на плюсах более интересная деятельность, собственно, меня к ним и тянет. Вы бы что выбрали?
>>2487143 >Функционально программа должна обеспечивать требования тз. >В каком стиле она написана никого не ебет. Ты из НИИ капчуешь или с дивана вкатился?
>>2487146 >на CLispe некоторые вещи писал >новых концепций Первый выпускапрель 1987 Последняя версия 2.49 (7 июля 2010)
>времени не так много >Вы бы что выбрали? Java. Она меньше и знания предметки (математики, ос, железа) или профильного образования не нужно. Кровавый энтерпрайз он везде +/- одинаковый.
>>2487157 >Первый выпускапрель 1987 >Последняя версия 2.49 (7 июля 2010) И? Ты в курсе, что языкостроение застряло где-то в 90-00 годах? Все "новые" концепции, которые добавляют в современные популярные язычки, зачастую уже использовались в других, менее известных, языках сто лет назад. мимо
>>2487159 И в этих "менее известных" языках было несколько удачных концепций совместно с десятками неудачных. В итоге получалось, что в 20% случаев код был хорош и в 80% - очень не очень. Алсо с тех пор и железо драматически поменялось и отношение к коду как к продукту.
>>2487143 Да ему сначала собес бы пройти. Он там c-style cast с malloc/free зарядит и сразу на пересдачу отправится. На Java хоть такой возможности нету.
>>2487325 >>2487134 Можно подумать, переучиться с c-style на современный c++ так уж трудно. Сишники же не макаки пустоголовые, чтобы настолько не уметь адаптироваться. Как минимум, переключиться с malloc/free на new/delete вообще не проблема, особенно когда понимаешь разницу.
>>2487328 Его постоянно будут преследовать флэшбэки, потому что c++ позволяет писать на c. Глобальные переменные, статические функции, макросы, с-style массивы, с-style касты, с-style enum, c-style структуры, c-style строки, работа с памятью, ввод/вывод. Это лишь малый перечень того, что нужно переосмыслить и забыть.
>>2487333 > Глобальные переменные, статические функции, макросы, с-style массивы, с-style касты, с-style enum, c-style структуры, c-style строки, работа с памятью, ввод/вывод Почти всё из этого переучивается за 1 вечер. Мб ты реально про каких-то проперженных дедков из НИИ пишешь, которые уже слюну пускают. Бтв что не так с си стайлом? Интересуюсь как нюфак.
>>2487568 >Это самоирония? Так-то богатые люди - самые большие содомиты на Земле, поэтому срать в рот, в каком-то смысле, один из признаков приличного общества.
>>2487654 Какая ещё оптимизация, чел. Я про подстановки матрасов, касты констов в неконсты, касты со сдвигом в нетуда, неупорядоченное создание глобалов, перемешивание пространств имён и прочее c-style говнецо.
Поиск по треду дал нихуя поэтому спрошу. Решил-таки наяривать на кресты, но не успел я начать читать Страуструпа, как шарага решила погонять меня по Win32. Ессэсна эта же шарага а точнее пары дали мне целое нихуя поэтому ищу материал чтобы освоится с этим вашим WinAPI. Пока нашёл только http://www.winprog.org/tutorial/, но оно для С что вроде не большая проблема в контексте основ, видосеки от индусов муторные и сводятся к "мммм ви скип зис фор нау" от русскоговорящих ещё хуже часто (кроме https://www.youtube.com/watch?v=JV1bro7eK04 но хуй его).
Что посоветуете, аноны? В шапке нихуя нету, тутор на сайте Майков видел, но он какой-то сжатый, что-ли. Подчеркну, что мне чисто чтобы в азах разобраться и закрыть предмет своими силами.
>>2488031 Вряд ли в шараге требуют именно винапи, скорее всего там что то типа "системное программирование". Забей на это говно мамонта и делай под линукс/posix. Я делал так и никаких подводных не было, вместо дельфи использовал лазарус с фрипоцкалем, вместо цепепебилдера куте...
>>2451830 (OP) Аноны это я туплю или код на хабре херовый? Перемножение матриц https://habr.com/ru/post/359272/ Во-первых, мне непонятно как он тут одномерный у него в коде, матрица же всегда двухмерная. Во-вторых, почему при M,N,K = 2048 программа работает 1 цикл? С точки зрения кода она и должна работать 1 раз потому что за индексы уйдёт, но тогда код неправильный?
Мне надо 2048х2048 матрицы перемножить по заданию.
Плюсоёбы. Делаю миникарту на Qt. Скажите как можно сделать ебучее ограничение чтобы сраный прямоугольникне вылетал за пределы миникарты, а болтался в ее границах?
Qt-треда не нашёл, из ньюфажного треда меня погнали сюда. Может вы знаете - можно ли для QHBoxLayout задать ширину одной колонки в процентах от родительского элемента? Чтобы при изменении размера окна (и самого родителя) она бы менялась автоматически?
>>2488527 Бля. Так то можно и в центр поставить конечно. Тогда правда дергать будет его. Думал просто виджет как то ограничить. Только сука с фиксированным размером границы нет, а к краям не привязаться. В общем придется события мыши пересчитывать. Сука.
>>2488072 Все эти ваши книги и статьи полная хуйня и никому не интересно что ты там там читаешь. Тебя спросят что ты делать умеешь и если ты скажешь умею писать драйвера для линукса, тогда ты потянешь на джуна+, а так ты ничем от макаки после курсов не отличаешься
>>2488031 Нахуй этим говном заниматься, ты че даун, как тебе уже указали есть что то что полезнее поизучать, а это просто спизди у своих тупых одногруппников, а не будь этим самым тупым одногруппником
>>2488845 мне хочется бытрого вката в айти, уже прочитал три книжки по плюсам базовые, потом посмотрел вакансии и с грутью сейчас ковыряю жаваскрипт. Может я чего-то не так понял? В плюсах привлекает некая самодостаточность,что в теории можешь всё на плюсах сам написать и сидеть довольный. Но с другой стороны каждый раз будто тебе нужно будет велосипедить....
>>2488845 За то что на них пишутся интересные ёбы. Зрение, автопилоты, 3d печать и реконструкция, нейросеточки, робаты. Правда на одних плюсах ты туда не доберёшься - нужно ещё петухон осилить и всякую матешу и предметку (хорошие плюсы дают лишь 30-40% от вката в желаемый хайтек).
>>2488068 > там что то типа "системное программирование" Оно и есть. Но там win32. Ещё, кстати, заметил что препод залил пикрил. Годно или проходняк? > Забей на это говно мамонта и делай под линукс/posix. Хуй там, надо на WinAPI. Курсач, наверное, тоже. >>2488203 Это в инсталяшке? >>2488816 Мне писать индивидуальные работы и, скорее всего, курсач. В своём манямирке выбросишь.
Кстати, а какой нынче дефолт для GUI на крестах в Шинде? Неужели Qt?
>>2488845 За абсолютную свободу действий. Я дрочу так, как хочу. Я могу отстрелить себе ногу любым способом, и даже не заметить этого. А ещё я лютый мазохист. У крестов нет никакого тулкита. Дрочишь как хочешь. Даже стектрейса нет искаропки. Писать код на плюсах это как мастурбировать и бить себя током по яйцам во время этого.
>>2488853 Идеальный баланс между скоростью написания кода и скоростью работы программы. Никакого гарбедж коллектора, jit-компиляции, миллиона ненужных сущностей и прочего кала, существующего только ради того, чтобы чуть эффективнее писать код засчет резкого понижения эффективности программы. При этом, проблемы с безопасностью, которые вменяют плюсам, решаются, насколько я могу судить, очень просто - в языке есть всё необходимое для написание безопасного кода, стоит только захотеть. Имхо, телега про небезопасность и "стрельбу в ногу" была бы справедлива, если бы речь была о C, но предъявляют это, почему-то, крестам. Ну и в чём я неправ?
>>2489103 Прав не до конца. На си тоже можно заебись писать. Все базоаое дерьмо гаписано внезапно на си и работает. Просто на плюсах писать удобнее. А про небезопасность ноют овощи.
>>2489103 > скоростью написания кода ) > проблемы с безопасностью, которые вменяют плюсам, решаются, насколько я могу судить, очень просто ) > в языке есть всё необходимое для написание безопасного кода, стоит только захотеть > просто не пиши небезопасно, лол
> телега про небезопасность и "стрельбу в ногу" была бы справедлива, если бы речь была о C, но предъявляют это, почему-то, крестам. как раз таки к плюсам это в большей степени и относится, даже больше чем к си в плюсах адская мешанина из семантик, которые ты должен держать в голове 24\7
>>2489187 > > просто не пиши небезопасно, лол И в чём проблема? Почему для написания безопасного кода обязательно превращать язык в говно? > в плюсах адская мешанина из семантик, которые ты должен держать в голове 24\7 Это какое-то неосиляторство. Если неправильно писать код на джаве, он тоже будет выдавать неожиданные результаты. На плюсах писать код правильно чуть сложне, чем на джаве - как из этого следует, что язык небезопасный?
>>2489491 Про сиситемы сборки у меня пробел в знаниях, увы. Пишу плюсы только на работе, там все собирается через bazel. Который сам по себе тот еще монстр.
>>2489495 Ну, к слову, есть разные требования к сборке, как вариант - это параметры в каком-нибудь хедере вроде версии. Студия тебя заставит это менять в коде, а через cmake можно сделать .h.in файл, который будет переменные, переданные через -D в него подставлять.
>>2489497 На линуксе хз. Хотя, конечно, можно выебнуться и собирать в qtcreator или как там это называется. Только помнится мне, когда был 17 стандарт, qt мог только в 14 - как сейчас не знаю.
>>2489496 >>2489498 >>2489506 Cmake сам вме делает. На линукме есть креанор, слион, вскоде. Cmake в них работает абсолютно одинаково. И в add_compile_definitions -D уже не нужно.
>>2489221 >И в чём проблема? В том что это не просто > превращать язык в говно? В данный момент плюсы один из самых худших языков да и хуже его сделать сложно, славо богу хоть дедушки стандарты продолжают пилить
> Это какое-то неосиляторство. Да, поэтому и говорят что даже старики из стандарта плюсы не знаю полностью, неосиляторы, хуле
>>2490003 Эм, очевидно первое сконструирует элемент уже в контейнере а второе скопирует туда имеющееся?
Очевидно, первое использовать когда лишнее копирование имеет значение и было бы неплохо его избежать, а второе когда похуй и вообще у тебя в проекте версия компилятора древнее чем цепепе11?
>>2489221 >На плюсах писать код правильно чуть сложне, чем на джаве Нет. На джаве в сотни раз проще писать, чем на плюсах. Как минимум просто потому, что джава стремится делать так, чтобы действие Х можно было выполнить минимальным числом способов. В С++ все ровно наоборот: вспомнить ту же инициализацию. Нахуя ее столько? Зачем нужна перегрузка оператора запятая? И все это нужно держать в голове всегда. В жабе ты максимум где-то обосрешься с NPE, в остальном писать на ней гораздо приятнее, в том смысле, что просто берешь и хуяришь бизнес-логику, не сильно задумываясь о языке.
Аноны, изучаю многопоточность. Хочется попрактиковаться в написании чего-то, есть какие-нибудь блоги или сайты где были бы уроки с задачами? Типа, вот пишем потокобезопасную очередь, тредпул и тд и тд.
Копирую из ньюфажного треда, мб тут быстрее ответят. Сап, погромасч. Вопрос от ньюфага по С++. Как мне сделать символьную строку членом класса? Учебник Лафоре мне говорит, что пикрил, но мой компилятор говорит мне char a[] = "idi nahui". Хочется, чтобы каждый член класса можно было именовать, но пока получается делать это одним символом, что немного неудобно. Я уверен, что ответ есть и он на поверхности, но сам докопаться не могу.
>>2490518 Спасибо, сработало. >И лучше как можно быстрее отказаться от строк в стиле C. Почему? И как тогда писать? Я, если честно, вообще не шарю и чистого С никогда в глаза не видел.
>>2490519 > Почему Ну как минимум потому что и ради больших, и ради маленьких строк тебе придется постоянно долбиться в память, и делать это ручками, что чревато ошибками. Да и неудобно это просто-напросто. > И как тогда писать Не знаю, что там пишет твой Лафоре, но пока читай его. Если не обмолвится о std::string, то прочитай об этом сам.
>>2490559 Потому что побитовые операции со знаковыми это полный кринж. Допустим, у тебя есть что-то типа char c1 = -1; // -1 = 0xff char c2 = -2; // -2 = 0xfe когда ты делаешь short s = c1 | c2 << 8; ты ожидаешь, что там будет 0xfeff, но на самом деле там будет 0xffff Почему так? Потому что short s = c1 | c2 << 8; компилятором преобразуется в вид short s = static_cast<short>(static_cast<int>(c1) | static_cast<int>(c2) << 8); а static_cast<int>(c1) это не 0x000000ff, как ты бы хотел ожидать, а 0xffffffff.
>>2490571 Потому что в стандарте нет четкого указания размера типов. И чтобы не обнаружить, что ты выстрелил себе в ногу в кроссплатформенном приложении, ожидая размер usigned int всегда в 4 байта и получив переполнение, ты пишешь size_t, чтобы на х64 системе это был тип в 8 байт, а на х86 - 4 байта. Ну и всякие uint8_t, uint64_t - то же самое.
>>2490525 Всё есть указатели, разыменовывание автоматом, как в питоне, шарпе и тды В расте, референс это указатель + лайфтайм В го только указатели есть, автодереференсинг
>>2487672 Автодереференсинг это зло. Нихуя не понятно по коду, где объект, а где ссылка на него, где копирование объекта, а где копирование указателя. Нельзя одновременно отстаивать идею написания читабельного кода и автодереференсинг в языке.
>>2491210 > Нихуя не понятно по коду, где объект, а где ссылка на него Дерефененсинг никак тебе в этом не помогает, ты можешь это узнать только из типа но и тебе и не нужно знать, когда ты обращаешься к объекту, находится он под ссылкой, или под указателем
> где копирование объекта, а где копирование указателя. Опять таки никак тебе он тут не поможет и плюсы это живой пример этого
> Нельзя одновременно отстаивать идею написания читабельного кода и автодереференсинг в языке. Тем временем Читаемые языки: все имеют автодереференсинг и явное копирование
плюсы сюда не входят, в си хоть явно понятно когда ты что копируешь
>>2491511 >можешь узнать только из типа В питоне и шарпе даже это недоступно. Я именно об этом и говорю, что есть чёткое разграничение между ссылками/указателями и объектами, и исходя из этого понятно, что в коде происходит. >тебе и не нужно знать, когда ты обращаешься к объекту, находится он под ссылкой, или под указателем Да, всего лишь надо удерживать в голове все возможные сценарии: чётко понимать, что будет, если, например, вернуть объект из функции - произойдёт ли копирование? Читаемость - 10/10. >Читаемые языки: все имеют автодереференсинг и явное копирование Тыскозал? Или кто решает, какие языки читаемые, а какие нет?
>>2491528 >В питоне и шарпе даже это недоступно. >узнать тип Доступно всегда было, с пробуждением
> чётко понимать, что будет, если, например, вернуть объект из функции - произойдёт ли копирование? Читаемость - 10/10. Автодереференс тут какое отношение имеет?
> Тыскозал? Или кто решает, какие языки читаемые, а какие нет? Я сказал. Или у тебя плюсы неожиданно читаемым языком стали? Даже язык главная задача которого была простота и читаемость - го, и то автодереференсинг есть
>>2491596 Зато явный дереференс увеличивает количество ошибок, сишка и кресты тому подтверждение. И про читаемость - как при чтении кода по диагонали достоверно узнать должен ли тут быть дереференс или нет? А если должен быть, но он не стоит? Или наоборот? Кик искать будешь это говно, если там байтоёбство и компилятор не высрет ошибку типов? А вот с автодереференсом такого никогда не случится - если он должен быть, то он будет, либо ошибка компиляции.
>явный дереференс увеличивает количество ошибок, сишка и кресты тому подтверждение Каких ошибок? Когда ты не понимаешь, как работают указатели, и пишешь неправильно? Ну извините. >как при чтении кода по диагонали достоверно узнать должен ли тут быть дереференс или нет? Причём тут "должен"? Есть он по факту или нет - это то, что должно моментально считываться. >А вот с автодереференсом такого никогда не случится - если он должен быть, то он будет, либо ошибка компиляции. Ммм, магическое мышление. Как язык за тебя решит, должен копироваться объект, или только значение указателя на него?
Лучше нахуй выкинь любые флоат и даблы из своего кода в качестве хранения валюты/цены и т.д., т.к. математическая формула представлений чисел с плавующей точкой в 99% случаев не может правильно отобразить дробные числа.
>>2498969 Дрочить вприсядку. Красноглазые пердолики как обычно под кроссплатформенностью понимают "любой пердоликс", про существование других ОС не слышали. Поэтому линкуй своё ебучее радио вручную.
>>2498978 Это ты про линуксоидов? Скажи мне как мне прилинковать GNU RADIO, какую команду вписать? просто что бы собрать GNU Radio нужно BOOST, а буста нет, BOOST я скачал. Там вроде ничего не надо собирать, как мне теперь добавить путь к BOOST'у в сборке GNURADIO, а патом добавить путь к GNU RADIO к GQRX
Посоны, встретил в видеоуроке такую магию: при изменении &m на m нихуя не поменялось. После выполнения пик2 первый принтф все так же выводит тройку как и при выполнении кода из пик1. Ну ладно, хорошо, допустим имя массива то же самое, что и его адрес, но тогда все равно должна быть разница же? "&m" тогда должна слать указатель на указатель на массив, не? Как так то???
Требуется реализовать настройки для приложения. Ну казалось можно подключить базу данных, или просто двумерный массив строк сделать, где 1 строка, это название переменной настройки, 2 строка, значение переменной настройки. Я пишу на Qt и мне нужно еще сделать так что бы допустим нельзя было вводить в определенную настройку больше 9 символов, или два нуля подряд, или нельзя вводить десятичное число. И также нужно сделать так что бы при изменении настройка отсылала всем событие или сигнал, о том что она изменилась. Также нужно сделать так что бы при изменении одной настройки менялась другая. Как это красиво реализовать? Я пока реализовал ввиде отдельного класса где сделал отдельный сигнал, отдельные функции и переменные для каждой настройки.
>>2500311 Хммм... когда поменял selected_bit на ансигнед заработало правильно. Ладно, кажется понял сам, но тогда возникает впрос: разве мы при объявлении char selected_bit_char = 0b10000000 не указываем явно способ расположения битов в памяти? Как тогда реализовать явную передачу по битам? Только через битовые поля?
Так, а вот сейчас у меня и вправду космически бомбануло: я продолжаю курить эти (>>2499135) уроки, и... оказалось так делать можно))) Ладно, давайте просто вместе маленьк подумаем))) (Программирование это ведь все же про логику, и тут нужно иногда сесть и маленьк подумать) но лучше, я так понял, не надо
Вот мы имеем переменную m, являющуюся именем статического массива int m[5] = {1,2,3,4,5}, значение которой располагается в некоторой ячейке памяти A и хранит там адрес ячейки памяти B, в которой лежит значение первого элемента массива. Ок. Дальше попробуем узнать адрес ячейки памяти A, по которому лежит значение переменной m: выполняем &m и.... получаем адрес ячейки памяти B, в которой лежит значение первого элемента массива.Т.е.в ячейке B, помимо значения первого элемента массива, должен лежать еще и адрес, по которому лежит адрес первого элемента массива? Все правильно? Как???...Почему??..В конце концов, нахуя?? ..
>>2500834 Адрес в этом случае в памяти не лежит, там только сам массив. Вся разница между m и &m - в типе выражения (чистая абстракция, понятная только компилятору). Первое это int[5] - массив из пяти интов, второе int (*)[5] - указатель на массив из пяти интов. При этом первое выражение ведет себя как указатель на первый элемент массива.
>>2500834 > но лучше, я так понял, не надо Если тупой, то вообще лучше не пытаться думать. > выполняем &m и.... получаем адрес ячейки памяти B Нет, получаем ссылку на указатель. В m лежит адрес участка памяти с интами. Скобочки в массиве - это просто сахар над указателем. Можешь делать ⚹(m + sizeof(int) ⚹ i) и получать элемент из массива.
>>2501340 Глупенький, ты хоть смысл вопроса то понял? Вопрос в том, почему в крестах все указатели как указатели, а имя статического массива - указатель курильщика.
>>⚹(m + sizeof(int) ⚹ i) А вот эту вот хуйню с адресной арифметикой ты можешь в анус себе засунуть. Она вообще не имеет отношения к делу.
Если вообще хоть немного нацелен на конструктивный диалог, а не на тупорылые высеры, то прокоментируй лушчше ответ этого (>>2500843) анона, по поводу абстракции. Т.к. я так не понял, на кой хер Труп Страуса сделал именно таким образом. Что это вообще дает, кроме того, что вся стройная логика указателей пошла нахуй.
>>2501340 >>⚹(m + sizeof(int) ⚹ i) Лол. Да ты ее даже неправильно написал. Че-то я не сразу обртаил внимания. Короче понятно все с тобой. Больше сюда не пиши.
>>2501372 > пик Блять, ты в курсе что ссылки - это не указатели? То что ты передал указатель по ссылке не значит что он должен поменяться, указатель не l-value. С какими же даунами сижу в одном треде.
>>2501390 Во первых, если б ты поспокойнее пиздел, тебе бы никто не стал грубить. Во вторых, я ньюфаг, и то, что у тебя 100500 лет опыта проганья в крестах вряд ли дает тебе право разговаривать в подобном тоне. В третьих, если я правильно тебя понял: 1) Когда мы пишем int m[3]; cout <<&m то мы передаем указатель по ссылке 2) Когда мы пишем int a=0; int ⚹p = &a; cout <<&p то мы берем адрес указателя, так?
Но это все равно не дает ответ на мой вопрос. В чем профит такого различия? Почему нужно было делать различие между указателем статического массива и обычным указателем. Это же тупо создает путаницу. А плюсов такого подхода я вообще не вижу.
>>2501395 Чел, вот где-то выше срались про автоматическое разыменовывание указателей. Ссылка - это грубо говоря указатель с автоматическим разыменованием, который компилятор может оптимизировать нахуй. Если передаёшь ссылку куда-то, то получатель получает объект внутри ссылки. Т.е. твою m. > Почему нужно было делать различие между указателем статического массива и обычным указателем. Потому что их нет. Массив это и есть указатель. int ⚹p = &a; Вот этот p легко кастуется к массиву. Можешь сходу его использовать как p[0]. > плюсов такого подхода я вообще не вижу Потому что это отростки от си, в крестах такое всегда рекомендуется избегать.
>>2501427 Короче, я так понял, по итогу тут проблема в беспределе автоматического разыменования указателей? Типа они творят что хотят и могут, грубо говоря, массив послать нахуй, а указатель в пизду, хотя и массив и указатель - одно и то же, все верно?
>>2501427 Я, канеш, только начинаю изучать C++ так что мнение не окончательное, но, сложилось впечатление, что весь C++ - суть не что иное, как танцы на костылях на трупе языка C
>>2501445 Чел, вот это >>2500843 в той же степени относится и к Си, если что. Не очень понимаю, что тебя смущает. Это так же логично, как существование разницы между int⚹ и int⚹⚹.
>>2501763 Ну мб. Я отдельно Си не курил, только слышал упоминания, что в Си, мол, так, а в крестах эдак по тому-то и тому-то (как правило тут перечисляется пара способов прострелить себе колено)