Вместо шапки - https://github.com/sosachbot/cppthreadhat/wikiОтветы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/Прошлый: >>1423580 (OP)
Почему у меня метод resize() QLabel-а не работает? Пишу:imageLabel->setPixmap(QPixmap::fromImage(currentFile.toImage()));imageLabel->resize(2 * imageLabel->pixmap()->size());А ему поебать, все равно рисует картинку такого же размера.
>>1437057Ну ты говоришь, что программа не работает. Но ведь она работает - запускается, что-то делает, завершает работу. Другое дело, что ты написал какую-то белиберду и ждёшь, что она будет работать так, как ты хочешь, а как ты хочешь - неизвестно, ведь ты не написал.
>>1437057что ты сделать то хочешь? раздели каут на два стейтмента, ты видимо думаешь что они не в том порядке вычисляются, как в реальности. https://ideone.com/UF8yYI
Как сделать, чтобы на картинку при сильном приближении накладывалась сетка границ пикселей, как в Photoshop?
>>1437071отключать отключать антиалиасинг при рисовании, очевидно. делается командой antialiasVyklyuchit();
>>1437082всё просто же. вот с этим алгоритмом можно даже не отключать антиалиас, он специально для сетки:out vec4 FinalColor;in vec2 FragUV;uniform sampler2D Texture;void main(){ float Pixels = 512.0; float dx = 15.0 (1.0 / Pixels); float dy = 10.0 (1.0 / Pixels); vec2 Coord = vec2(dx floor(FragUV.x / dx), dy floor(FragUV.y / dy)); FinalColor = texture(Texture, Coord);}
>>1437098а хотя не, тебе же сетка "границ" пикселей нужна, я обчитался. тогда нужно нарисовать линию по вертикали между каждым пикселем в видимой области и линию по горизонтали и получится сетка.
>>1437063Еба, я только сегодня читал у Александреску о том, что аргументы функции вычисляются как компилятору будет удобно, но сейчас смотрел на проблему анона и не думал, что для нескольких операторов вывода будет такая же шняга.А как тогда получается, это выглядит?Вродеoperator<<(std::cout, stoi(str, ptr)), operator<<(std::cout, ptr);Так должно быть?operator, не гарантирует последовательность вычисления, как я помню. Но почему тогда вывод местами не меняется, если сначала второй operator<< вычисляется в его случае?
Аноны помогите, я уже заебался с этим QML. Как реализовать выпадающее меню в несколько слоев как на пике короче, если данные я получаю динамически. Ну тоесть нажал на первую кнопку - отправляется запрос с данными - прогружается следующий уровень, и так 3 раза. Пытаюсь костыли делать с Menu, где делегат создает MenuItem, в котором находится следующее Menu, но ебучий QML закрывает предыдущее меню при нажатии на пункт, даже при closePolicy: Popup.NoAutoClose. Третий день уже ебусь с этим, подскажите молю Пилю для себя, не лаба
>>1437115Всё там нормально работает. Это я сам обосралсяЛогика такая же как и a=b=c;Идёт справа налево возвращая объект ostream пристыковывая его к левостоящему.
>>1437238Ты уверен что тебе меню надо?Я бы сделал тривью и два делегата, один простой, у второго внутри твоя вьюха.Ну и моделями кормишь
>>1437380>>1437345Так в тривью же требуется класс плюсовой, который будет данные возвращать. Как заполнять модель из QML? Я так понимаю тут конструкторы с параметрами нельзя вызывать, а за получение данных у меня отдельный класс отвечает. Может кто-то минимальный пример или псевдокод написать? какой же этот QML после плюсов непривычный
Аноны, читаю книжку QNX/UNIX: анатомия параллелизма и тут на основе измерений 2006 год сделали такой вот вывод:>Распараллеливание задачи (если это возможно) на N ветвей (будь то использование потоков илипроцессов) практически не изменяет итоговое время ее выполненияНасколько я понял, это связано с тем, что много времени уходит на смену контекста выполнения и диспетчеризацию потоков. Это сейчас актуально? Всегда думал что многопоточность = скорость, а тут такая вот хуйня.
>>1437520Целую в пупочек, лапочка.А с меню там вообще отдельная история. Они очень сложные и, особенно, если у тебя айтемы могут динамически менять размер, т.е., твои меню айтемы могут быть разного размера, то придётся костылировать навроде этого:https://ideone.com/zOPXSxЁбся с меню, было дело. Не православно.
>>1437534Не, размеры постоянные. Я вообще не понимаю, почему при таком пиаре и якобы развитии семимильными шагами в QML всё еще нет такой базовой хуйни как drop-down menu с нормально кастомизируемыми айтемами. Кстати заметил баг, что если использовать какую-то вьюшку в Combobox делегате то параметр closePolicy будет сбрасываться в значение 18 из 16 блять и по всей видимости активыми будут все сразу, из-за чего нельзя сделать меню с вьюшкой, при нажатии на айтемы которого вьюшка будет оставаться открытой. Если заменить на какой-нибудь Column то работает как надо. То ли я привык к виджетам, то ли QML еще реально сыроват
>>1437443>Я так понимаю тут конструкторы с параметрами нельзя вызывать, а за получение данных у меня отдельный класс отвечаетТам как минимум есть Instantiator и Component.onComplete.Модели на лету я делал.
>>14376411) Почему люди ругаются на дополнительный проход компилятора и moc файлы? Разве это какое-то значение в рантайме имеет? 2) Почему сейчас более активно развивают QML а не виджеты? Бочку делаешь?
>>14376421. Поцчему там все ругаются я точно не скажу. Со своего опыта: - Надо делать постоянные клины и тд; - Генерячку достаточно легко поломать, в контексте Qml, например приватный геттер на публичной проперти\приватный сигнал и тд. У QmlEngine происходит былинный отказ; - Прочие неудобности связанные с генерячкой; - Неудобство написания наследников QObject в cpp файлах; - Ну и самое главное, что QObject классы не могут быть темплейтными;2. - Виджеты устарели и достаточно сложно костамайзятся; - Формошлёпам, особенно с веб бэком, легче вкатываться в юай; - Для меня, конечно, сомнительный плюс, но есть какой-никакой гц; - Виджеты сложно портировать под мобильные платформы но тут я не уверен3 раза в день, в субботу не делаю, в воскресенье - 8
>>14376411) Где вообще нынче пишут на Qt кроме заводов ебаных с анальной проходной?2) Про Felgo пару слов, пожалуйста.3) Где взять дебаггер для QJSEngine?4) Че там по эмбеду? Вообще возможно ли использовать Qt без динамической аллокации?
>>14377291. - Automotive - Гейдевайсы, мыши, клавиатуры колошки там всякие и тд - Разного рода плагины к фотожопам фл и тд - Разных мастей юай, особенно если демоны\сеть есть и должна быть отдельная приложуха - Медицина, забугорная - проще по вакансиям поглядеть, это из моего опыта.2. В душе неебу чо за хуйня.3. Насколько я знаю у него нет дебуггера. QQmlEngine наследует JSEngine, а для него есть встроенный. Пик рилейтед. Отсюда есть два путя, либо использовать QQmlEngine для своих скриптов, что, тащемта, ок, либо, как вариант, присунуть встроенный qml дебуггер какими-нибудь бубнами для JSEngine. Тут я подробней не подскажу.4. В эмбедедде Qt есть. >Qt без динамической аллокацииОще сильно сумлеваюсь, процентов 80 дам, что нельзя.
>>1437745>проще по вакансиям поглядеть, это из моего опытаА там одни ДС1 и ДС2, без удаленки, или сосать хуй дальше на заводе. Эх хех.>3. Насколько я знаю у него нет дебуггераЭх, поэтому мы сидим до сих пор на QtScript, ведь никто не хочет прикручивать отладчик ручками.Thank you, sir!
>>1437751более подробно можно глянуть тут: https://doc.qt.io/qt-5/qtquick-debugging.html#qml-debugging-infrastructureУчитывая, что qml способен жрат .js файлы, можно дебуггер натравить на твои скрипты, как это сделать нужно курить доку.>ведь никто не хочет прикручивать отладчик ручкамиПроще всего взять ваш пакован скриптов, засунуть в qml engine и радоваться жизни с дебуггером из коробки.
>>1437534Можешь еще подсказать? Я вот создал модель, вроде всё работает, но передать в аргументы конструктора данные я не могу, заполняю модель в компоненте Component.onCompleted, но судя по дебагу вьюшка дёргает методы rowCount и columnCount, а первый у меня возвращает количество айтемов в массиве данных, который на момент создания модели равен 0 и соответственно нихуя не происходит. Есть какие-то сигналы что данные изменились, или способы еще раз инициализировать обьект?
>>1437824Для начала покажи-ка код.В прошлой эсомэске (ссылка на айдиван) я тебе показал сеттер, через который ты должен сэтить данные в модель:>void OtdelniyClassPolucheniyaDannix::ustanovitNovieDannie(void* govno) > {> ... ustanavlivaem vse dannie u suem v nashi modeli, I NE ZABUD` ZA EMITY modeley> }и написал коммент, что конкретно нужно дёрнуть. Более детально ты можешь глянуть сигналы модели, которые тебе необходимо вздрочнуть, тут: https://doc.qt.io/qt-5/qabstractitemmodel.html#signalsКогда ты забиндил модель для вьюхи, т.е сделал следующее model: moiOxuitelniyModel, дальнейшие штучки-дрючки регулируются сигналами от моделей.>но передать в аргументы конструктора данные я не могуВ конструктор ты и не должен передавать, так как твои данные могут поменяться когда угодно, а конструктор ты вызываешь 1 раз. Заместо этого используем сеттер и сигналы, что модель поменялась, или данные в модели поменялись, или только 1 энтри поменялась, ну ты понел.
>>1437824>заполняю модель в компоненте Component.onCompletedТы уверен в том, что это именно правильное место для сэта данных?Каким образом ты получаешь данные, хардкодишь?
>>1437858>>1437851Спасибо еще раз, добавил сигнал layoutChanged() и судя по дебагу модель перестраиваеться правда пока ничего не отображает, так что я неуверен. В целом это то, что я хотел.
>>1437861Да я дальше как-то сам наверное, разве что что-то очень сложное будет. Не люблю людей задалбывать. В любом случае спасибо, надо было сюда 3 дня назад писать, сэкономил бы время
>>1437745Зачем ты на пике используешь Qt.binding и function(), когда можно написать просто color: твой_тернарный_оператор?
>>1437876по идее - ничего. Если очень хочется, то сделай функцию, типа:zalupa& get_zlp() { static zalupa z; return z;}
>делоешь std::this_thread::sleep_for(std::chrono::milliseconds(reactivationDelay));>не работает>делоешь залупу подключаясь к MotionNotify ивенту чтобы по времени ивента понять когда нужно совершить действие>не работает>делоешь std::this_thread::sleep_for(std::chrono::milliseconds(reactivationDelay));>работает
>>1438080>делоешь колбек на евент нажатия>не работает>ставишь дебаг НАЖАТО для евента>всё работаетЭффект наблюдателя, не иначе
как же я раньше жил без автоформаттера?представьте, до сих пор есть люди, которые сами форматируют код и следят за количеством колонок.
Ононасы, такой вопрос.Есть некий QNAM, и в доке написано, что он хэндлит в параллели 6 реквестов. Как можно поменять количество тхредов?
В крестах есть какой-то "правильный" способ получить n-i+1 элемент алфавита? Или все так же ходим по таблице ASCII с 'Z'-i?
>>1438228Это я к чему: с англиским просто, а в русском, финском и тп скорее всего буквы в таблицах не в том порядке что в алфавитах из-за букв с диакритическими знаками.
>>1438154Если кому интересно.Он не хэндлит 6 реквестов в параллели, он 1 хост выкачивает 6 соккетами https://code.woboq.org/qt5/qtbase/src/network/access/qhttpnetworkconnection.cpp.html#132Самому QNAM похуй сколько потоков, он асинхронно долбится, так что тхреды для QNAM нахой не нужны.
>>1437641Пишу свою модель данных в виде редактируемого дерева по канонам MVC, наследуясь от QAbstractItemModel. Данные отображаются в QTreeView. Теперь встал вопрос, что мне нужно некоторые ячейки раскрасить в определенный цвет. Где и как это реализовать, чтобы не нарушить MVC? Реализовать делегат, ProxyModel или еще что?
При попытке установить curl выскакивает ошибка configuration name: libcurl-vc16-x64-release-dll-ipv6-sspi-winsslNMAKE : fatal error U1073: не хватает сведений для построения "..\lib\libcurl.rc"
>>1438380Всем кастомайзом ячеек и прочего занимаются делегаты. Например https://doc.qt.io/qt-5/qtquickcontrols2-customize.html#customizing-combobox
>>1438407Да, но вот я ее сейчас использую в методе MyModel::data(), что как мне кажется не есть гуд. Т.к. по идеи MVC, подобные "украшательства" вроде как должны делать вьюха или делегат (насколько я понял), а не модель. Или я не прав?
Ясно, QT-шизики уже во всю просочились ИТТ. Я напоминаю, что ТРУ крестобоярин никогда не станет писать на этом ГОВНЕ.
>>1438417Йобанарота, делегат жи, какая ему хуй разница где хуйню свою малевать, первый семпл дал. В тривью такой-же делегат сунь и всё
>>1438426... никакого Ада нет. Ну как же нет, когда ты работаешь в Аду? Не веришь - ну посмотри на последний вывод об ошибке твоего компилятора. Как же может венец творения, высшее создание Божие, работать с сущностями, имена которых занимают десятки мегабайт? Если твой язык такой продвинутый, такой прям весь свободный - что ж ты без костылей имя типа переменной в рантайме получить не можешь? Ты в Аду, сынок, ты не знаешь type erasure, у тебя нет рефлексии. Ты уже, голубчик, в Аду, из которого выход - только один, в JVM
>>1438427хуй знает, доводилась лишь раз делать делегат для виджетов, ебанина какая-то. проще уж въебать строчку в одном методе>>1438424а нахо оно там нужно тогда? чем тебе это не часть модэл епта
>>1438433вы, блять, че, шарами объебались? человек спросил конкретно за QTreeView не кумээльный тривью ебана, я ему ткнул в то, что ему и нужно было, хуле вы мне своими куикконтролзами тыкаете
хей йо, агалы, как защищаете своё ПО? и защищаете ли?в интернетах всякая муть с обфускаторами, чем-то там ещё.накидайте методов, че кого, куда копать
>>1438430>а нахо оно там нужно тогда? чем тебе это не часть модэл ептаЧё т вообще не понял тебя. Переведи на наш(с)
>>1438167Creative gigaworks t40 series iiМожет, и не аудиофильские, но чистый звук, классные басы (если выкрутить) и есть джек для наушников. Живы уже ~6 лет, рикамендую.
>>1438485если ты пишешь как пикрилейтед, то нет. а для нормальных людей есть кланг с дефолтными настройками. а если твои настройки не дефолтные, то твой форматтинг говно.
>>1438510> всё, что не умеет кланг-формат — ненужноЯсно-понятно. Только проблема в том, что он не умеет почти нихуя. Его отличие от примитивного astyle разве что в том, что он умеет различать лямбды.
>>1438440>>1438430>>1438407Пока решил вопрос с >>1438380 созданием делегата как на картинке. Что скажете?
>>1437641На Qt Quick кто-то пишет? Или только на них и пишут, а на виджеты уже похуй? Чекнишь мой проект на виджетах? shorturl.at/avQZ9Хочу узнать насколько говно у меня код, по десятибалочке, если можно. И дотягиваю ли до чуть выше джуниора, как думаешь?
>>1438510А кстати, gcc умеет в не-ASCII идентификаторы и с какими флагами?Вроде в msvc раньше работало, можно было ЁПТАСКРИПТ на дефайнах запилить.
>>1438426оно не так плохо, если писать на C++, используя Qt, т.е. без moc (verdigris это вин) и без всяких выблядков типа QtQuick.А если писать на каком-то ебанутом диалекте С++ с миксом JS - это уже к С++ треду отношения не имеет.
>>1438608начиная со стандарта с++11 в идентифакторах можно использовать "other implementation-defined characters" (пункт 2.11), что и позволяет, по сути, использовать любые символы юникодаисходники долны быть в юникод-формате, само собойи, для удобства, нужен текстовый редактор, позволяющих легко вводить символы юникода, к примеру тот же емакси нужен шрифт, в котором есть прорисованы символы, которые будешь использовать (чтобы они красиво отображались, а не позицией в юникоде)тогда можно будет делать идентификаторы изо всего что есть в юникоде:http://xahlee.info/comp/unicode_emoticons.html
Котаны, я пхп-макака, последнее время видимо искажения психики заставили меня начать интересоваться байтоебством. Начал я читать про указатели и и т.д. Вроде понимаемо, но вот что смутило мозг - пишут что с++ работает с некоей "общей моделью памяти", и что именно в этой "общей модели" размещаются объекты. А как уже эта "общая модель памяти" соотносится с конкретными гигабайтами на моем линуксе/шиндовс?
Собрал curl с помощью vcpkg. В моей программе написал #include "VK-MASTER\src\api.h"#include "vcpkg-master\packages\curl_x86-windows\include\curl\curl.h"Где VK-MASTER папка с либой для работы с вк, а vcpkg-master папка с vcpkg кто бы мог подумать. В настройках сделал по аналогии с https://ravesli.com/podklyuchenie-i-ispolzovanie-bibliotek-v-visual-studio-2017/ . При компиляции пустого проекта (инклуды на месте) все работает, но при попытке вызвать метод из либы для вк происходит пикрелейтед
>>1438970Копмилятор занимает память у ОСи, и получает от нее указатели на участки выданной памяти, и создаёт в ней свою виртуальную индексацию поверх виртуальной адресации ОС. Если помимо РАМ используется ещё и ГПУ, то там вообще уровней 300 абстракций
>>1437014 (OP)Крестители, вкатываюсь, хочу знать, что выбрать из IDE?Visual Studio или Qt Creator? Почему большинство предпочитает Qt Creator и все на него так дрочат?
>>1439057>Visual Studiothis>Почему большинство предпочитает Qt Creator и все на него так дрочат?Кто все? В нашей большой команде этим пользуются 2.5 человека, дрочащих QML.
>>1439057>Почему большинство предпочитает Qt Creator и все на него так дрочат?Потому-что идиоты-хейтеры-микрософта.
>>1439121Всё правильно, говно мамонта остается на говне мамонта. Ты бы еще удивился, почему тебе запретили заправлять современные машины сеном и управлять поводьями вместо руля.
>>1439057У меня в QtCreator в половине случаев не работает дебаггер. Так что нахрен, пользуюсь чистым GDB под линуксом и VS под вендой. 98% дебага у меня под шиндусом.
>>1439171Как познать GDB? Не смог дебажить наше приложение в проде, потому что оно мультитредное и спавнит дочерние процессы, а значит нужны какие-то ебические комбинации флагов. В VS на винде просто ставишь галку child process debugging и все работает как часы.
>>1437014 (OP)Cап, анон.Как часто изпользуются ссылки и указатели в твоих программах? Только что прошел их, и не могу понять, в чем их смысл на практике.
>>1439300>Как часто изпользуются ссылки и указатели в твоих программахВсегда. Сиди перечитывай пока не поймешь. Это одна из базовых вещей, если ее не осилишь - можешь дальше даже не пытаться
>>1439057У меня оба. Легаси на первом, новое формошлепство на втором. В плане удобства вс с решарпером лучше, плюс в вс есть т4, пока до программирования интерфейса не доходит.
Блять самое смешное что встроенный линтер ВС иде, специально разработанной для работы с крестами и сисей до сих пор половину синтаксиса 11 стандарта подчеркивает и алертит))) нахуя это говно нужно ? Отвечу: для неосиляторов, в универе получавших тройки
>>1437014 (OP)сколько времени стоит в человекочасах подготовить джуна на крестах? на hh требуют ХОРОШЕЕ ЗНАНИЕ STLчто они блять, под этим подразумевают?Мимо-Зигодев
>>1439350Часов сто-120 хватит. Т.е. около месяца интенсивного изучения по 3-4 часа в день должно хватить для джуна.
>>1439473Она подключена. В output видно что он ее ищет, а ошибок нет. Я думаю что он находит. Пока писал нашел проблему. В curl разрядность 32, а у меня 64. Сейчас попробую у меня поменять
>>1439561С компа не могу написать пока. Начало ошибки такое "unresolved external symbol __imp___invalid _parameter referenced to function "void* __cdecl и тд
>>1439460Потому что до полноценного мидла не дотянул, очевидно. - Структура\рахитектура на 3 - Вероятно необдуманное дипкопи и если для кьютовых классов это ещё норм из-за COW, то для своих неок: void addGroupFromDb(Group group); void setName(int id, QString name); - Статика в Qt приложении (Qt классы лучше не использовать после того, как ивентлуп всё). Тут желательно синглтон с контролируемым временем жизти зделотьИ тд
>>1439568>- Структура\рахитектура на 3>- Вероятно необдуманное дипкопи>И тдАхуенно ответил. Вероятно тупа LE PERDOUNOOL V LU JU и тд.P.S.: Либо пиши нормально и аргументируй свои предъявы конкретными примерами, либо уебуй нахуй. Жабоскрипт-тред в другой стороне.
Анонасы, выручайте. Задача следующая: в функцию передается tuple с неизвестным количеством элементов, с неизвестным типом. Нужно разделить этот tuple на два tuple, если количество его элементов превышает 4. Как сделать такое? Вот код: https://ideone.com/HeLPLC
>>1439641Ну а в чем проблема?Самый простой топорный вариант: зная количество элементов, проходишься по всем и первые три запихиваешь в один tuple, а остальные - в другой.
>>1439641Вангую что-то вроде[code]template <typename> struct is_tuple_4 : std::false_type {};template <typename A, typename B, typename C, typename D, typename ...T> struct is_tuple_4<std::tuple<A, B, C, D, T...>> : std::true_type {};[/code]
>>1439623Ты, маня, если та огрументация не нраиса - уёбуй нахуй, я своё время на полное ревью тратить не намерен. Всяким разным щенка в лужу пердеть - тоже. Своё мнение я сказал.>>1439690Понимаю, поэтому с тобой я нормально общаюсь. В дух словах ты молодец, память не проебал, всё сделал более-менее ок. Следи за копированием, лучше планируй ну и далее по тексту.>>1439639 это другой анон и он молодец, понимает
>>1439641if constexpr (std::tuple_size_v<TPL> > 4) { (забираешь первые четыре)} else { забираешь все остальное}
>>1439738И как это будет работать, если tuple будет заполняться из потока или из файла?Плюс там же нужно tuple<A, B, C, D, E, F> разбить на tuple<A, B, C, D> и tuple<E, F> - не знаю, справится ли с этим авто. С другой стороны, std::any должен съесть такое.А ещё, как я понимаю, нужна рекурсивная функция, если на вход придет tuple с десятью элементами, чтобы вернуть в конце массив с несколькими tuple.
>>14397131. Как правильно узнать кол-во элементов2. Как правильно их разделить?Я без понятия, как должен выглядеть код.>>1439719>>1439738Я вам ссылку на ideone оставил. Вы тестировали код в контексте моей задачи? Я уже так пытался делать, не получается, компилятор ругается, даже на tuple_size.
>>1439738Спасибо за псевдокод, но это и так понятно. Реализовать-то как? Я чуть не лопнул пока думал.
>>1439750Да это багор, у меня до этого аналогичная реализация и была с кучей тайпнеймов. Я думал можно как-то элегантно средствами языка все это дело развернуть. Нельзя все таки что-ли?
>>1439754Вот я тоже на сиквенсы смотрю, но ничего не думается.Из С перекатываюсь. Как же у вас тут сложно все.
>>1439756Ну Си я достаточно знаю, решил подтягивать то, чего в нем нет. Вот шаблончики например. Всегда любил макродрисню, очень похожая тема.
>>1439762Самый сильный, красивый и умный анонимус всех времен, благодарю от сердца. Алсо, это плагин какой-то элементы подсвечивает? Пойду тестировать код, от души.
>>1439764Спасибо. Алсо, а std::tuple<ARGS...>&& tpl не запихать туда? И почему std::tuple_size не хочет работать?
>>1439764Анон! Если ты еще тут, помоги. Всю ночь голову ломал. Новое условие к задаче - если во входящей tuple элементов меньше заданного числа CUT, то заполняем tuple нулями, пока количество элементов не станет равным заданному числу CUT.Чтобы на выходе было что-то типо такого:const auto t = tuplecutter<4>(std::tuple(1, 2)); Должно вернуть t = (1, 2, 0, 0), вместо t = (1, 2).
Господа, требуется провернуть следующую махинацию:На вход подается число, содержащее только 1 и 0, например 101010100101. Нужно его ввести в переменную типа int, при этом как двоичное число. Если пользоваться обычным cin, то я получу десятичное число.Есть какие-нибудь удобные способы это сделать?
>>1437014 (OP)Аноны, нужно написать некий аналог команды tree, как работают с директориями труъ с++ разработчики?
Заворачивать переменные из легаси библиотек в raii нормально или лучше не стоит? FT_Library ft_library = nullptr;FT_Init_FreeType(&ft_library);if (ft_library) { m_ft_library = std::unique_ptr<void, void()(void)>(ft_library, [](void* ftLibrary) { if (ftLibrary) FT_Done_FreeType(FT_Library(ftLibrary)); });
>>1439987Благодарю, анончик. Есть вообще специализированные книги/статьи по данной теме? Ибо пролистал пару книжек Страуструпа, там подобного очень мало. Алсо, голая студия не хочет правильно код обрабатывать. Даже на std::tuple_size<decltype(tpl)>::value ругается, но по итогу все компилирует. Как правильно дебажить/смотреть в какой вид темплейты разворачиваются, если меня даже ide подводит? Решарпер панацея?
Аноны, есть рекурсивная функция, внутри которой:std::vector<std::string> *v = new std::vector<std::string>;В этом же случае delete не освободит память, выделенную под сами строки? В этом случае придётся указатели на строки ставить и выделять память ещё и под них?
>>1440223>Есть вообще специализированные книги/статьи по данной темеhttps://www.amazon.com/C-Templates-Complete-Guide-2nd/dp/0321714121 - добро пожаловать. Сам осилил из нее где-то треть, мне хватает. но я и так много знал, раскуривал кучу статей и блогов в свое время, когда еще мечтал найти крутую работу>Алсо, голая студия не хочет правильно код обрабатывать. Даже на std::tuple_size<decltype(tpl)>::value ругается, но по итогу все компилируетЯ голой студией не пользовался с релиза R++, по-этому мне тут нечего сказать. Вариантов украть решарпер - куча, я 2 года сидел на лицензии знакомого студентика, а потом мне на работе купили.> Как правильно дебажить/смотреть в какой вид темплейты разворачиваютсяЯ не знаю какого-то суперспособа, кроме чтения ошибок компиляции. Недавно открыл для себя https://cppinsights.io - вроде прикольно.
>>1440223Вообще, если я правильно понимаю, что использовал этот анон, то там свёртка - это вообще 17-тый стандарт. Мб из-за этого на tuple_size и ругается(хотя он есть в <tuple> в C++11). Попробуй в свойствах проекта включить latest или C++17 в C++/Язык.
>>1440228в коде из C++17 фич только CTAD, фолды я сам не очень хорошо умею.std::get<IDX>(tpl)... - это обычное раскрытие в вариадик пак, в С++14 точно работало
>>1440224delete вызывает деструктор вектора. Деструктор вектора вызывает декструторы содержимого вектора.Если бы у тебя бы вектор указателей - тогда да, пришлось бы руками чистить. А в твоем кейсе все ок
Есть ли возможность обратиться к базовому классу не через его имя, как BaseClass::, а через какой-то универсальный идентификатор, который однозначно определяет класс родителя, независимо от его имени?
>>1440445Да я имел в виду какой- нибудь встроенный кейворд типа this, только определяющий класс который от которого было наследование. Вот только что искал баг, оказалось что вызывалась функция на уровень ниже по иерархии наследования вставленная копипастом
>>1440573Ты пытаешься в массив записать массив, в плюсах так не работает. Возьми string вместо массива char.
>>1440580Сиговно типа char* - это не С++.Если ты хочешь изучать С++ - используй высокоуровневые примитивы типа std::string, std::vector и тд. А потом уже углубишься на уровень "ехал указатель через указатель"
Есть объяснения какого хуя произошло? В какой вселенной -6 / 3 = 6148914691236517203? int же знаковый тип так какого хуя ошибка?
>>1440717В чем экзистенциальный смысл писать auto вместо int в таком коде?У size() беззнаковый тип size_t, деля int на size_t в роль вступают правила такого деления signed на unsigned: https://ideone.com/d4cHBl
>>1440730Пиздец конечно ебанутое правило, по-моему должно быть наоборот, ансигнед должен кастоваться в сигнед. Авто удобно писать если я вдруг параметр функции изменю с vector<int> на другой тип
>>1440738>Авто удобно писать если я вдруг параметр функции изменю с vector<int> на другой тип И что, от этого тип переменной step изменится? А если в рыло?
>>1440227Благодарю еще раз, анон. Буду курить. За https://cppinsights.io/ отдельно плюс, то что нужно.
>>1440223>Как правильно дебажить/смотреть в какой вид темплейты разворачиваются, если меня даже ide подводит?metashell
Может ли кто-нибудь глянуть на мой говнокод и сказать насчёт него хоть что-нибудь? По-сути, программа делает то же самое, что команда tree в виндовсе. https://pastebin.com/a7xWhaQg
>>1440798>Хороший код, давно занимаешься?Ого, спасибо. Занимаюсь не так уж давно. Многое пришлось читать прямо во время написания. > но выглядит реально как из 95 годаПохоже, всё из-за того, что ориентируюсь на знания из универа, книг и интернета, с "реальным" погромированием дел не имел, вот оно и устаревшее какое-то.
>>1440799Все хорошо, но ты, видимо, читаешь какие-то старые книжки и какую-нибудь парашу вроде стек перелился, потому что по стайлу это выглядит как си код в спешке переделанный под кресты.
>>1440793какие-то пойнтеры на СТЛ контейнеры которые в той же функции удоляются чего блядь. ты наверное хотел систайл арреи там использовать но опечатался >алмановские скобкиа я думаю что я кручу-кручу а код не движется
>>1440717ты дебаггером встал на строчке, которая еще не выполнилась, и в val мусор находится. На следующем брейкпоинте на твоем скриншоте значение будет валидным
Анонче, дай ответ.Есть в классе указатель на вектор указателей другого класса(хорошее ли это решение - не знаю).При попытке инициализировать его прямо в определении класса либо в списке инициализации в конструкторе, в итоге он nullptr. Пробовал и конструктор по умолчанию {}, и new std::vector<MyClass>, разницы нет.Но почему-то после переноса this->container = std::vector<MyClass> непосредственно в тело конструктора все начало работать.Почему так?
>>1440793Нет, ты хорош, но если поставишь компилятор с 17-ым стандартом, то filesystem:: recursive_directory_iterator сделает все за тебя - нужно будет только на основании метода depth рисовать рамочку.
>>1440827Достаточно сложные для чтения конструкции с несколькими уровнями вложенности, когда приходится считать скобочки чтобы понять смысл написанного а код STL с их __Fwd_Iterator_Bd это вообще пиздец
>>1437641Как сделать, чтобы CentralWidget в QMainWindow всегда располагался по центру окна, но при этом сам не растягивался на все окно? Alignment я внутри QWidget че то не нашел, хз как сделать. Неужели Layout-ы придется вставлять туда?
>>1441195А они всегда нужны что ли, ебать? У меня просто виджет простой, с QLabel внутри, который представляет из себя пикчу. Ну и всякий код для управления этой пикчей. Куда там лэйауты то совать?
>>1441203А с использованием лэйаутов как? Я пробовал делать, но у меня в итоге картинку стало растягивать на всю ширину экрана.
>>1441212Короче, решил проблему, сделав центральным виждетом не свой йоба-виджет, а QScrollArea. А в QScrollArea засунул свой виджет. Вроде работает.
Существует ли фриланс на крестах?Сейчас очень нужны деньги, на стройку не берут, заучивать веб языки ну очень не хочется. Можно ли как-нибудь заработать на близком к душе C++?
Начал учебный проект, над которым хочу работать и под Windows, и под Linux. Проект использует несколько сторонних библиотек.Скачал уже скомпилированную одну из них, там dll и lib-файлы. И возник вопрос: что лучше использовать, чтобы проще было дописать подключение библиотеки под другую платформу?Я думаю, под виндой брать dll и кидать в папку к экзешнику. Под линуксом, я так понимаю, достаточно присутствия .so в системе. Или я ошибаюсь?
>>1441310Бля, я конечно диванный, но сомневаюсь, что хотя бы в ДС 1-2 реально найти, особенно в короткие сроки.
>>1439045>Копмилятор занимает память у ОСиНихуя не компилятор. Это сама ОС выделяет тебе память для твоего процесса, при его запуске. Насколько помню, в винде, при запуске проги, код размещается в одном участке адресного пространства, данные в другом участке. Программа, по необходимости, может запросить дополнительную память у ОС посредством системных вызовов (VirtualAlloc, вот это вот всё).Дело в том, что в языке C++ не указывается, что из себя представляет память компьютера, как там всё устроено. Какой используется процессор, какая ОС (и есть ли она вообще). В общем - что из себя представляет платформа, на которой работает программа. Программы на C++ можно писать для самых разных компьютеров, процессоров, ОС. У тебя там x86, а у кого-то ARM или MIPS. У кого-то есть виртуальная память, а у кого-то её нет, и защиты памяти даже нет.
>>1441310Нет. Если ты знаешь кресты - иди в офис. >>1441312.so должны лежать в $PATH. В Винде тоже можно в %PATH% их подложить.
>>14413353 года капчевания, не меньше полутысячи постов в "войти в айти" тредах /b с тралленгом лалак
>>1441310>на стройку не берутну да, если ты нищий и голодный, но больной и хилый, то самое то подумать о вкате в айти!да еще и на удаленочку сразуи на крестах чтоб
>>1441348А серьезно если? Мне как ньюфагу интересно, сколько времени займет рост до такого уровня зп.
>>1441354Все зависит от твоих стремлений. Если программировать каждый день, постоянно что-то новое изучать и прочее, то можно за год дойти до 100 тысяч зп на удаленке.Можно просто делать работу и пить чай и за 3 года остаться на 40к в офисе.Анон с зп 360к явно работает на зарубеж, на Финляндию или типа того. Я такой зп не видел, но предполагаю, что за 3-5 лет ее вполне реально достичь, если не лениться.
Посоны, дайте ссылку на ченить научно-популярное о том как пишут код для ардуино микросхем. Для повышения образования я сейчас начал потихоньку разбираться в плюсах. Про указатели - кажется кажется понял. Вообще байтоебство это интересно. Но мне не понятно как пишут код на плюсах для допустим ардуино или еще какой нибудь платыТам специальный компилятор который компилирует код в исполняемый файл понятный этой микросхеме? Сама плата программируется программатором?мимо - пхп-макакий
>>1441482>Все зависит от твоих стремлений.от каких стремлений, епт? вот я хочу делать деревянные бочки для засолки огурцов, люблю свою работоу, каждый день делаю по бочке, самосовершенствуюсь, изучаю какие-то новые способы изготовления бочек, бля я самый настоящий мастер изготовления березовых кадушек! только нахуй это никому не нужноточно так же и с программированием: вдруг оказывается что кодеры и нахуй не нужны, вернее столько много
1. Как из одного конструктора вызвать другой в теле конструктора? T(x+y) создаёт временный объект, видимо, а значени s остаётся стандартное.2. И аналогичный вопрос при наследовании. Можно написать через двоеточие :Q(x*x), но если мне нужно перед этим что-то посчитать - то выглядит это ужасно, нужно создавать дополнительную функцию, которую указать после двоеточия и которая помимо возврата Q сделает необходимые действия. Уж лучше создать нормальную функцию _init() и вызвать её в обоих конструкторах в конце, которая будет вместо конструктора.
>>1441482>>Все зависит от твоих стремленийСкорее от организованности и умения ставить себе задачи.Так то можно писать на запале по 6 часов в день, потом перегореть и забить на месяц-полтора, обнулив по итогу все.А если дисциплинирован, и в момент упадка хотя бы по часу- полтора работаешь - то не потеряешь.мимо-пхп-макакий
>>1441705П.С. и вообще по моему ежедневная концентрированная работа/учеба по 4 часа, а потом абстрагирование от задач для занятий другими делами гораздо эффективнее чем циклы запал/угасание.Тут вопрос глобальной привычки.
>>1441350Ну так, что не так? На работу никуда не берут, программирование - единственное, в чём я что-то понимаю.> да еще и на удаленочку сразуЯ бы и не против с утра до вечера в офисе сидеть, да нету в моём посёлке городского типа ни одного офиса.> и на крестах чтобПросто считаю его лучшим языком, от всех остальных хуёво становится. Понимаю, что он сложный, но я не прочь почитать пару-тройку книжек
>>1441743Ну, я до всех трёх вариантов догадался.Отвратительно, придётся использовать второй вариант, хотя очень не хотелось бы нагромождения каких-то одноразовых функций.
>>1441692> T(x+y) создаёт временный объектГде тот шизойд, который в прошлом треде доказывал обратное?
>>1441752Считай с помощью аргументов которые тебе пришли и методов базового класса (только не виртуальных), тогда иниты всякие не понядобятся
>>1441858Грубо говоря, у меня два конструктора, которые загружают что-то из файла и из памяти. И хотелось бы в конструкторе с файлом просто считать что-то из файла и вызвать конструктор с памятью.Если это методы, тоИ есть три стула.1. Ctrl+C/Ctrl+V
>>1441865Так а в чем проблема? Если они что-то общее делают, то выноси это самое общее в private метод с каким-нибудь охуенным названием
>>1441865Сука, как оно отправилось?Если это методы, то я просто в методе с файлом вызываю метод с памятью. И всё работает.Но если это указатели, мне нужно или после двоеточия вызвать вспомогательную функцию, которая внутри себя откроет файл и вернёт указатель на данные. И всё это даже не в теле конструктора, что очень плохо выглядит.То есть смысл теряется, если не использовать тот другой конструктор. Или я делаю init и вызываю его из обоих конструкторов, или я просто дублирую код. Никакого метода в базовом классе для загрузки из памяти или файлов нет, только конструктор. То есть можно сделать, но это тот самый init - нигде в клиентском коде не будет повторной загрузки из памяти или файла.
>>1441872Ага, я так и сделал.>>1441875Так, я всё напутал в этом посте, думал про первую ситуацию, а отвечал на вторую.
>>1441875>Но если это конструкторыБрр, ужас. Из-за случайно отправивщегося поста я стал очень быстро печатать полный ответ и допустил тонну опечаток и все мысли запуталсь. Простите.Проблема чисто символическая и она в том, что конструкторы не выразительные. Если бы они работали как методы, это было бы намного юзабельнее. А так приходится в конструкторе вызывать какой-то посторонние методы, просто потому что один конструктор не может внутри своего тела вызывать другой, только метод.
>>1441878> приходится в конструкторе вызывать какой-то посторонние методы, просто потому что один конструктор не может внутри своего тела вызывать другой, только метод.Это нормально, ты просто не так понимаешь ооп
>>1441865>Грубо говоря, у меня два конструктора, которые загружают что-то из файла и из памяти.имхо, тут ты совершаешь ошибку проектированияв таких случаях конструкторе нада именно что сформировать объект, перевести его в непротиворечивое состояние, так сказатьа всякие сложные заполнения объекта уже делать отдельными методами (типа вытащить много данных с файловой системы или из бд)
>>1441705>Так то можно писать на запале по 6 часов в день, потом перегореть6 часов в день - это минимум для промышленного кодера, те это тупо кодинг без коммуникациии так будет продолжаться годами
>>1441931Разработкой невозможно заниматься больше 4 часов в сутки, ибо это большая когнитивная нагрузка, которую почти никто не тянет (не перегорев). Остальное время сверх этого - шелуха типа перерывов на чай/кофе, совещаний и прочего ненужного говна.
>>1441941никого не ебетпопадешь в тот же геймдев - будешь 10+ часов без выходных ебашить перед релизом на стимуляторах
>>1442211Точно. Благодарю, идеально, почему я не вспомнил про эту штуку.>>1442068А вот это не компилируется, если что. "cannot call constructor '...' directly" или "cannot refer to type member">>1441929Может быть. Объект не имет никакого смысла без данных, потому мне показалось логичным в конструкторе сразу задавать данные и удалять в деструкторе. Не будет второй строчки загрузки в клиентском коде, и не нужно проверять во всех методах загруженны ли уже данные, на случай если кто-то где-то забудет.>>1442569Вот бы питоновские f-string добавили. Специальный компайлтайм костыль именно для строк, которые компилятор развернёт в что-то нормальное. Прочитал про них и аж завидно.
>>1442664>все тонкости имплементации каждой реализации В этом нет нужды, достаточно знать две вещи:1) Оптимизация и скорость там не на первом месте (и это, пожалуй, правильно)2) Писали всю эту хуйню примерно такие же дебилы как и ты (и это, пожалуй, печально)
>>1442667если я стану когда нибудь таким же дебилом, как имплементоры стандартной библиотеки например принципал инженеры из майкрософта с зарплатой в месяц больше, чем у тебя в год - я буду счастлив.
>>1442675>примерно такие же>если я стану когда нибудь таким жеЭто вполне возможно и не очень сложно но лично у тебя не получится.>зарплатой Ясно.
>>1442675там нет ничего сложного, не боги горшки обжигают, включи в той же студии (если ты под виндой) заходить отладчику в код библиотек и заходи в код stl время от времени, ну или просто открой его отдельным проектомиз заморочек, усложняющих код, там разве что необходимость соблюдать требования к безопасности исключений (которые прописаны в стандарте), плюс выделение ресурсов из аллокаторов тоже чутка усложняет
>>1442683Да нет никакой токсичности от этого клоуна, пусть еще веселит. Вангую красноглазого додика-студента, который сидит у мамки на шее (опционально работает говном за 20 тысяч), но он точно самый умный.
>>1442598Ты скозал? В стандартной библиотеке всегда самые или почти самые производительные реализации разве что у какого-нибудь китайца быстрее чутка будет. Посмотри что-ли конференции с выступлениями членов совета стандартизации.
>>1442699>самые производительные реализацииВовсе нет, и это не в приоритете.Безопасность, надежность - и только потом.>у какого-нибудь китайцаУ меня быстрее.>конференции с выступлениями членов совета стандартизации.Не нужны.
>>1442852бля, какой же ты охуенныйпишешь код лучше яйцеголовых что клепают реализации stl, конференции не нужны тк ты и так все знаешь
>>1442686>додикСемантические свойстваЗначениежарг. гомосексуалист (в уголовном арго — молодой пассивный) В неестественно раскрытых совиных глазах Ястребова вспыхнули ржавые белки, в них металось безумие… Под ним бился молодой додик по кличке Снежинка. Л. П. Костомаров, «Десять кругов ада»жарг. ирон. женственный, женоподобный мужчина И реально, что бы вы думали, из-за кулис выходит какой-то додик, тощий, в зелёных очках и с лысой головой, подходит к микрофону и начинает вещать что-то тонким, по-бабьи жеманным голоском.〈…〉Он очень томно растягивает слова, выпячивает губы и делает все эти педиковские ужимки, которые я так ненавижу. С. С. Минаев, «Духless. Повесть о ненастоящем человеке», 2006 г. (цитата из Библиотеки Максима Мошкова, см. Список литературы)жарг. презр. или пренебр. хилый, ничем не примечательный человек Например, решит профессор закончить пару пораньше и для приличия спросит, всё ли всем понятно. Группа уже сложила вещички и ждёт предложения разойтись по домам, и в этот момент Борис поднимает руку и говорит: «А вот я не понял один момент…». В результате народ тоскует и томится, один лишь Борис внимательнейшим образом слушает и кивает головой. Чаще всего в процессе кивания у него появляются и другие вопросы. После проявления такого интереса к предмету преподаватели начинали его уважать, студенты называть додиком, а девушки не любить, несмотря на очевидную красоту. Эльвира Барякина, Анна Капранова, «Рыба в чайнике», 1999—2002 г. На прогулку во двор старейшей московской психиатрической больницы выпускали только с часу до двух дня и только самых спокойных обитателей. / — Маша, загоняй додиков! — кричала из окна второго этажа тётка в замызганном голубом халате и косынке. П. А. Астахов, «Квартира», 2010 г.Синонимыгомосексуал, гомосексуалист, педераст; разг.: гей, голубой, гомик, гомосек, мужелюб; устар.: мужеложец, мужеложник, содомит; устар., частичн.: малакия; книжн.: уранист, урнинг; эвф.: сидор; сленг: в теме, зайка, крашу ногти, сижу в окопе, тематический, яойщик; жарг.: ахтунг, барсук, василёк, васька, галя, гамадрил, гамаз, гамазей, гамак, гном, гобсек, говносек, голубарь, голубец, голубок, голубчик, голубь, гома, гомс, гомусик, двустволка, дирижёр, додик, дочка, дуплан, ермак, жоподрючник, жополаз, жопочник, жопотрах, заднепроходец, звезда, кентавр, котик, кьюр, маркоташник, мастёвый, мужиковед, папа, парафин, пед, педагог, педарь, педе, педерага, педераго, педеряга, педигрипал, педик, педр, педрик, педрила, педрило, педрильник, педруччо, педя, петух, пидарас, пидарь, пидер, пидор, пидорас, пидорасина, пидораскин, пидораха, пидорюга, пидорюжник, пидорюк, пинчер, половой демократ, пэдэ, рудокоп, руслан, субчик-голубчик, такой, темовой, тёпленький, тёплый брат, хали-гали, чебурашка, чичеряка, шахтёр, шкицнурик, шура; активный: акт, актив, активист, георгин, глиномес, говномес, дятел, кочегар, марксист, педикатор, печатник, печник, печной ящер, ромео, солидол иванович, топтун, трубочист, уважаемый, чужежопник; пассивный: акробат, ананаска, армянская королева, бархотка, валет, вафел, вафёл, вафлеглот, вафлёр, вафлист, вафло, гребень, дама, даша, дашка, жена, женива, женщина, жопа, жопник, козёл, козлик, козочка, конь педальный, кочет, манька, маня, маргаритка, маша, машка, моргалик, мурка, наташа, наташка, незабудка, округлённый, пассив, педер, педерасик, педермот, петюнчик, петя, пидовка, пинч, плашкет, подруга, пярну, санта-лючия, Светка, сестра, туз червонный, умница, универсал, шпидагуз, шурик, шурин; изнасилованный: обиженный, опущенный, проткнутый, петух, петушня, петушок, петяра, пятёра, пятёркаАнтонимыГиперонимыГипонимы
>>1442911>какой же ты охуенныйБез комментариев, потому что ярчайшая грань бриллианта моего характера - это скромность.
>>1442699>В стандартной библиотеке всегда самые или почти самые производительные реализацииНу такое.Пример. Есть много точек заданных 8 float-ами, нужно удалить дубликаты. Я прикрутил туда std::unordered_map, и оно работало довольно медленно, 6458 мкс на 100к точек.Мне стало интересно после твоего сообщения чем этот unordered_map занимается и я написал свой - все данные хранятся в цельном куске памяти (и "бакеты", и данные). Заработало где-то в два раза быстрее, но потом я нашёл ошибку и скорость стала лишь чуть-чуть выше.Тем не менее вот этот говнокод: https://ideone.com/v6xbhxНа ideone что-то странное творится в rdtsc и clock - вот картинка с моего ноута. То есть для миллиона и особенно для тысячи моя штука работает ощутимо быстрее и лишь для десяти элементов моя фигня проигрывает, тому что там можно сделать оптимизацию, так как хеш-таблица не даёт выигрыша.То есть первая же реализация от самоучки вроде меня без какого-либо опыта реальной работы оказалась не хуже реализации в std, при том что это первое что в голову пришло и я никогда не писал контейнеры или хеш-таблицы. Впрочем, допускаю мысль что я не умею пользоваться std::unordered_map и там нужно как-то по другому её использовать, чтобы она работала резвее.
>>1442852>У меня быстрее.В каком-нибудь синтетическом тесте с проебанными в нужных местах исключениями, из-за которых течет память
>>1442921>Мне стало интересно после твоего сообщения чем этот unordered_map занимается и я написал свой - все данные хранятся в цельном куске памяти (и "бакеты", и данные). Для этого придумали pool-аллокаторы, который у STL-контейнеров является шаблонным параметром.
>>1442934>течет память Ебать ты криворукий дурачок.>исключениями, из-за которых течет память Ебать ты жопоголовый дебилоид.Начинаю понимать из-за кого на плюсовиков смотрят как на говно.
>>1442936Подскажешь как прикрутить или что прочитать? Хотелось бы сравнить. Я бы предпочёл по возможности всё-таки оставить стандартный unordered_map вместо своего, но только если там не будет 30% разницы.Я полистал, нашёл только какую-то pdf-ку, где какой-то некомпилирующийся allocator_adaptor на несколько страниц и потом к нему ещё сам аллокатор. Но, насколько я понял, оно в любом случае будет в разных местах хранить бакеты и данные, потому что тип стандартного аллокатора содержит пары.
>>1442954https://stackoverflow.com/questions/1061543/whats-the-syntax-to-use-boostpool-allocator-with-boostunordered-map
>>1443090Почему placement new в конструкторе ub. У меня есть указатель, отчего он становится хуже в конструкторе?
>>1443096Стандарт описывает 3 так сказать периода для объекта.1. Что можно делать вне lifetime объекта и не при работе конструктора/деструктора.2. Что можно делать во время работы конструктора/деструктора.3. И во время lifetime.В первом и третьем периоде понятно что будет при placement new, а во втором — нет.
>>1442921чувак, ты задачу удаления дубликатов решаешь через использование хэш-мапов!1 да, блядь, похуй какой производительный мап будет при этомтут уже вопросы не к языку с++ и его стандартной библиотеки, а к твоей базовой алгоритмической подготовке
Не инициализируется glew.Все доп.зависимости подключил.ide - visual studio 2019https://pastebin.com/J2UCJpt6
>>1443145Ага, я же самоучка, ни одной книги не прочитал.Ну-ка, а как сделать быстрее? У меня 10кк элементов. То есть подходит O(n) или O(n log(n)) с хорошей константой, памяти же почти сколько угодно.В голову приходит или сортировка с последующим тривиальным удалением, или хеш. А я не верю в сортировку на 10кк элементов.>>1443151>встроенную операцию uniqueВот замер для 1кк. Там же ещё отсортировать его надо. По идее, unique можно прямо во время сортировки делать, если переписывать сортировку.>std::unordered_map за 238412.367 мкс>me::unordered_map за 159842.574 мкс>std::list+unique за 478863.221 мксДля 10кк там уже в 4 раза разница.
>>1443182бля, чувак, глянул твой код, ты там творишь лютую дичь: сначала делаешь find по ключу, проверяешь не найдено ли, а потом уже insert!лолэто же unordered_map, почитай как она хоть работает, лол,
>>1443195>>1443197>а потом уже insert!Действительно. Впрочем, было не слишком очевидно что оно возвращает ссылку на имеющийся/добавленный элемент, и на цифрах сказалось минимально.Теперь в map и unordered_map у меня в цикле лишь insertВ list в цикле push_back, потом один sort и один uniqueВ vector один sort и один аналог uniqueВсё верно?Любопытно, что вектор перегнал все стандартные контейнеры на любых числах, вот уж не ожидал.
>>1443247std::unordered_map<mm,tint,mm> kk(N);ты задаешь количество сегментов хеша равным количеству вставляемых элементовблядь, да почитай уже как контейнеры stl работают
>>1443250>количество сегментов хеша равным количеству вставляемых элементовЧто с этим не так? Я попробовал выставлять больше или меньше и получилось хуже. Размер примерно в 7/5 от количества элементов на одних данных работает лучше (когда совпадающих почти нет), на других хуже - потому я оставил равный.>почитай уже как контейнеры stl работаютПрости, я видимо очень глупый, но если три раза повторить что нужно почитать как работают контейнеры stl, то я всё-равно не пойму чего ты от меня хочешь. Я примерно знаю как работают контейнеры и прочитал что делают функции, которые использую. Ещё сейчас открыл "Стандартная библиотека C++. Справочное руководство" и не нашёл там ничего существенно нового в соответствующих главах, по крайне мере на первый взгляд.
>>1443341вообще, твой код просто безумно плох, до него доебываться можно бесконечно, и это бесполезночего только стоит как ты сравниваешь вещественные числа..просто пиздец..
в чем и проблема с самоучкамиони могут писать 500+ строк кода в день, считать себя охуенными, но при этом вообще городить в коде лютую хуйнюпри этом им ничего не объяснить, тк тупо у них базы нет чтобы понимать
>>1442852Толстота. Я уверен, что ты даже правильно производительность тестировать не умеешь. Кидай сюда код с тестами, посмотрим.
>>1443424Медленно, 400 мс вместо 250.>>1443427>считать себя охуеннымиНе было такого, я в самом начале указал, что мой код - говнокод, и что я не умею пользоваться unordered_map.И мне всё ещё было бы интересно послушать чем мой код плох, как сделать его эффективнее и чем плохи мои флоаты.
>>1443459Я в курсе как их сравнивать. В данном случае они до бита совпадают, это не результат математических формул, где нужно с относительной ошибкой в 1e-7 сравнивать. Можно их хоть как int-ы сравнивать. >>1443460Уверен, что довольно посредственная. Я уже обнаружил насколько неравномерно она засовывает данные в таблицу и несколько раз поменял. При этом хорошая функция слишком медленная, с ней один только рассчёт хеша для каждого элемента дольше, чем весь алгоритм с обсчётом 1-3 коллизий для каждого элемента с плохой функцией.
>>1443464что не так, ублюдок?недоучка, сравнивающий вещественные через == и делающий find перед вставкой insert в мапупнх, обсуждение закрыто
Аноны, помогите.Написал скрипт чтобы тренировать свою способность складывать 16-ричные числа. Вроде всё работает, но если вдруг написать русскую букву, то уходит в бесконечный цикл.https://pastebin.com/bPeK3K94
>>14435191. else if там нинужен. ты тестируешь на ровно противоположное условие. там должен быть else. а можно даже без else, так как там break есть.2. русская буква у тебя остается в буфере и не может попасть ни в какую переменную. а так как у cin в буфере что-то все-таки лежит, то он не ждет ввода. поэтому нужно его чистить руками https://stackoverflow.com/questions/257091/how-do-i-flush-the-cin-buffer3. continue там тоже нихуя не делает
Принимаю функцией последовательность параметров, Params... params. Как закастить каждый параметр к нужному мне типу?
Пацаны, нужно реализовать чтение и запись txt файла из любой директории. Всё хорошо работает, пока в пути нет кириллицы. Если она появляется, то нихуя не работает. Пробовал wchar_t запилить, setlocale проописать, еще вот такую тему SetConsoleCP(1251) и SetConsoleOutputCP(1251). Но без толку. Что ещё может сработать?
>>1443804>>1443817Вы угораете? Мне нужно не принтить парметры, а преобразовать для дальнейшего пересыла в другую функцию. Ваш способ не работает.
>>1443827>для пересыла в другую функциюНу и передай их в нужную тебе функцию вместо cout/printf, откуда я знаю что у тебя за функция.
>>1443852Иди нахер, сам нихуя не знаешь, только путаешь и пиздишь. Без тебя справился. std::conditional_t мне нужен был.
ЛОООООООООЛВсегда подозревал, что в сфере C++ что-то не так. 41% долбоебов ВООБЩЕ не пишет тесты. Ну вы и уебки, пиздец просто.
>>1443920> 41% долбоебов ВООБЩЕ не пишет тесты> Картинка с юниттестамиХорошо манюня. Попробуй подумать, какие еще тесты бывают, кроме юниттестовмимо 0 юниттестов на небольшоим проекте, но тестовый пайплайн работает ~час
>>1443932Манюнь, ты мне не манюнькай - у тебя пайплайн тестируется час и нет юниттестов. Это само по себе зашквар, чуть лучше чем тестить руками
Есть ли смысл сейчас читать Лафоре 2004 год? Или лучше обратить внимание на какого-нибудь Страуструпа?
>>1443941да, все так. Только ты, судя по всему, не писал больших и сложных проектов, вот и несешь хуйню.
>>1443920Если еще пару тысяч зеленых сверху шлепнут, то буду и тесты писать. А так нахуй надо. На каких вообще галерах требуют от прогера написание тестов? ООО Рога и Копыта?
Народ, такой вопрос есть.Допустим, я скомпилил DLL'ку, и затем использую ее в своем приложении. Приложение компилирую на том же самом компиляторе, то есть никаких проблем, связанных с name mangling, быть не должно. Но если я поставлю какой-нибудь флаг компилятора, который влияет на размер объектов, то получится, что DLL'ка и приложение используют класс из одного заголовочника, но при этом разного размера. Таким образом, из-за одного флага уже рушится бинарная совместимость?И можно это как-то предотвратить, если у меня уже есть сторонняя DLL'ка (написанная на C++, без всяких "extern C"), про которую я знаю, что она была построена на таком-то компиляторе, но при этом без понятия, какие там флаги использовались?
>>1444042А что делать с DLL'кой от сторонней библиотеки, у которой исходники не распространяются, а только .h, .dll и .lib файлы? Обычно поставляется несколько версий для различных компиляторов и конфигураций. Например, я скачал с сайта версию для Visual Studio 2019, платформа x86, конфигурация Debug. Соответственно, чтобы использовать эту DLL'ку, мне нужно создать проект на 2019 студии и поставить там x86/Debug, достаточно ли этого? Есть ли гарантия, что при компиляции этой DLL'ки не использовался, например, флаг /Zp? Ведь мне тогда его тоже надо выставить
>>1444059Если бы использовалось /Zp, то в хедеры бы заботливо прописали pragma pack, или что там. Я думаю, что тебе достаточно сделать именно то, что ты планируешь.
>>1437641Скажите пожалуйста, при использовании remove(int i) для QVector-а индексы внутри него пересчитываются?Ну то есть было, например, внутри QVector<int>: i 1, 2, 3, 4, 5n 10, 30, 40, 80, 70i - это индекс, n - содержимое под этим индексом.Делаем remove(4). Что тогда получится в итоге?i 1, 2, 3, 5n 10, 30, 40, 70илиi 1, 2, 3, 4n 10, 30, 40, 70???
>>1444135Бля, в Qt за полторы строчки кода не проверишь, там нужно ебаться с интерфейсом. А console application там у меня почему то не работает. Поэтому да, проще спросить здесь.
>>1444138И нет ни одного тестого проекта с интерфейсом, где можно временно дописать эти несколько строчек, проверить, а потом стереть? Да не поверю.Точно не знаю, но 99.9% что второй вариант. Не пересчитывать очень уж затратно.
>>1444123Неужели так сложно прочесть?remove не возвращает значение, значит - удаляет элемент без информации о нем.operator[] принимает на вход 0 <= i < size(), значит, коллекция не разреженная.Вывод: если ты из вектора размером в пять элементов удаляешь четвертый элемент, то пятый становится четвертым.нахуй делать реализацию, отличную от std - хуй знает.
Имеется простенькая (200 строк) консольная программа, написанная на С++. Или на С, не знаю как их однозначно различить.В текущем варианте в нее забиваются 4 исходных числа и она считает по забитым формулам нужные значения. Нужно сделать то же самое, но в оконном интерфейсе. То есть чтоб было 4 поля для ввода, и рядом выводились результаты. ОЧЕНЬ желательно встроить в это же окно небольшой статичный рисунок и верхнюю выпадающую панель (как обычно бывает - "файл", "правка", "инструменты", "справка..." и т.д.), где можно выбрать язык и вызывать справку.В гугл ходил. Вариантов решения СТОЛЬКО, что глаза разбегаются, и везде пишут, что на С такое писать довольно сложно и нетривиально. Кроме С ничего не знаю.Посему вопрос к вам: с помощью чего можно максимально просто реализовать такую задачу? Нет ли какого-то конструктора, в котором можно распихать кнопки и поля ввода/вывода, присвоив им определенные переменные? И с помощью чего такие задачи "принято" решать?
>>1444700Я бы посоветовал QtQuick. Свой код на Си завернешь в С++ класс (сойдет простой копипаст) и сделаешь биндинги из него в QML (это делается за тебя, надо только пару макросов дернуть, очень тривиально, по гайдам разберешься). Используя экспортированные методы (это тоже очень легко), будешь потихоньку писать QML. Последнее -- самое сложное. Придется относительно много прочитать мануалов по компонентам на официальном сайте, но если не будешь прокастирнировать, справишься не дольше чем за неделю (да, даже если в первый раз услышал про Qt).
>>1444704Ну и зачем квик советовать людям, который даже кьют не трогали? Если телефоны не нужны, то на виджетах это всё делается за +- пару часов, можно даже просто пример из документации скопипастить и своего добавить. А пока человек поймет зачем нужен Q_INVOKABLE и в чём разница Q_OBJECT от Q_GADGET еще не мало времени пройти может. Ну а для саморазвития пусть берет то с чем не работал
>>1444714Виджеты устарели и ненужны. Так-то и на винформах написать можно, но почему бы не совместить (не)приятное с полезным?
Я вот слышал что c++ для написания интерфейсов далеко не лучший язык. В связи с этим вопрос. Можно ли писать логику на c++, а интерфейс на совершенно другом, заточенным под это дело языком? Что то мне подсказывает что да, поэтому следующий вопрос: как тогда обмениваться данными? Можно ли сделать общее пространство в памяти, например?
>>1444735Лол а на чем ещё интерфейсы делать? Шарп - только виндовс, на никсах только си и кресты, жаба - вырвиглазное говно для пидороа, электрон для червепидоров, ногтевой грязи, пустышек
>>1444735Тут пол треда про qt, але. Бек на крестах, фронт на qml и обожи жаваскрипте в составе одного приложения.
>>1444735А Шаред мемори тоже можно, но стоит ток если у тебя бек например в системе реального времени на выделенных ядрах.
Я немного отстал от жизни - в Visual Studio возможно писать как в борланде - нашлепать формочку, написать обработчик кнопки и чтобы работало более-менее от семерки до десятки? Придется, правда, перенести проект с Си на кресты, но это вроде как лучше, чем делать гуи на одном winapi. Господи, божественный <filesystem>
>>1444735Плюсы для разработки может и не самый удобный язык хотя с учётом qml я бы с этим поспорил, но для пользователя со слабыми устройствами будет заметна реальная разница. Вот тебе скрин с гитхаба, где чувак просто написал спасибо, за то что разработчики не на электроне писали.
>>1444806Неужели qt настолько хорош? У меня пустое окно Может одна кнопка была . Не помню весило 30 мегабайт (оперативки)
>>1444818В дебаге тестировал? Я на телефон пишу приложение расписания для вуза с разными финтифлюшками и анимациями, память отьедает только когда отрисовываю таблицу в 50к пикселей шириной и то там оптимизаций много. А так за где-то час использования метров 5 если телефон правильно ее измеряет. Да и как выше ответили, на никсах у тебя собственно и выбора то нет.
>>1444890Точно также, как это делает QT, только без вагонов говна в придачу.>>1444894auto (auto) auto -> autoauto return(auto)auto
>>1444704>>1444714>>1444718Ого сколько ответов,даже не ожидал. Почитав еще, скачал VS и стал делать через Windows Forms. Как-то все там очень странно...Думал, что сейчас в имеющемся коде перепишу названия переменных (скажем, ввод был в переменную R1 - теперь же TextBox1), а начало подсчета выведу через какой-нибудь if с условием в виде нажатия кнопки. Ага, щас. Код кидать не буду, постараюсь сам сделать. Или нафиг брошу, циферки в консоли и в окне программа пишет абсолютно одинаковые.
>>1437014 (OP)Хелп анон. uint8_t* buffer; uint16_t type; buffer = new uint8_t[4]; buffer[0] = 55; buffer[1] = 88; buffer[2] = 100; buffer[3] = 100; type = buffer[0];нужно в type из buffer загнать два первых значения. Что-бы в битовом представлении они стояли друг за другом. Как это в с++ сделать?
>>1445151error: cannot take the address of an rvalue of type 'uint16_t ' (aka 'unsigned short ') type = &(uint16_t *)buffer;
>>1445166На этой доске работает тег code, чё вы им не пользуетесь?[code]auto * myPtr = getPtr();[/code]
>>1444908>только без вагонов говна в придачуКак нарисовать кнопку без qt?Я другой, и я умею через winapi, но это довольно неудобно, некроссплатформено и даже цвет по нормальному не поменять. И ещё я могу написать вручную, но это ещё подумать нужно, что неубоднее, winapi или ручная отрисовка через тот же winapi.
>>1444806> Вот тебе скрин с гитхаба, где чувак просто написал спасибо, за то что разработчики не на электроне писали. За что разработчики назвали его инвалидом.
>>1445459да не обозвали, а тегнули ищью как invalid. а тамбсдаун и конфюзд реакции от двух залетных жаваскрипт-детей, которые в телегу даже не коммитили
Привет, крестобояре. Ньюфаг итт, так получилось, что накинули интересную задачку на плюсах, с которым я не знаком до этого только писал на них калькулятор и читал книжку. Хочется уточнить:хули всё так через жопу??ты качаешь либу, которая ссылается на файлы из другой либы, которую ты качаешь с оф. сайта, которая ссылается на свои собственные хэдеры, которых в ней НЕТэто что блять за ебанутая система?? мне по кусочкам в интернете собирать это говно? серьезно?я имею ввиду, это так и работает или я долбоёб?
>>1445528организовать прием нескольких параметров с веб-интерфейса через веб-сокет. в данный момент, по сути, запилить просто маленький недосервер, с дальнейшей передачей они там сами пока не в курсе, лол
>>1445518Двачну вопрос. Вот я захотел написать проект. Для этого мне нужна либа1 и либа2. Как мне по-быстрому их интегрировать в свое окружение?
>>1445537К сожалению, стэк технологий (тм) определен не мной.Алсо, вопрос то был в другом: такая ебля с либами и путями - это нормально (eclipse, если это важно)?
>>1445544А подробнее? Я из шарпа качусь, там две кнопки нажал и все в проект само установилось и настроилось. Тут также?
>>1445552иди вместе с конаном в петушиный угол, или в кровавый интерпрайз. Лучше вцпкг для домашних проектиков нет вообще ничего.
>>1445552>>1445553Так что лучше-то? Может есть аля плагин для студии? Чтобы я две кнопки жал и все устанавливалось в проект?
>>1445554ты 1 раз ставишь вцпкг, 1 раз его интегрируешь (почитай ридми на гитхабе блять), и после этого все, что ты устанавливаешь в вцпкг доступно всюду и везде
>>1445557Так это долго и нудно. Качать, по папочкам раскидывать и все такое. Иногда вообще не удается подключить либу, ибо ее прекомпилить надо отдельно.>>1445555Вроде решение от майков, поэтому должно работать. Благодарю за помощь, буду разбираться.
>>1445565Долго и нудно? У тебя две либы. Не вижу сложностей распаковать два архива и вставить четыре строчки в проект.
Помогите плиз с шаблоном Model-View в Qt. В первый раз в жизни буду использовать этот шаблон, поэтому не совсем все понятно.Я пытаюсь запилить клон фотошопа. У меня есть основной класс QMainWindow и дополнительный класс LayersWidget, который я собираюсь запихнуть в правый тулбар. LayersWidget отвечает за слои, в правом тулбаре должен отображаться список этих слоев с миниатюрами и названиями слоев (как в фотошопе). В шаблоне Model-View есть модель, представление и делегат. Я собираюсь использовать табличное представление информации, в одном столбце миниатюра, во втором название. Ну так вот, что из всего этого будет Model, что - View, и что - делегат?Пока думаю так: Model внутри LayersWidget, View в QMainWindow, а вот насчет делегата пока не совсем понимаю, что это и как это должно выглядеть.А не является ли все это оверкиллом в данной ситуации?
Есть один h-файл c кучей функций и два cpp-файла к нему, из который активно трогаю только один (который меньше второго в 10 раз). Когда меняю что-то в h-файле, он перекомпилирует всё около 40 секунд. Если я второй крупный cpp-файл превращу в lib - оно будет быстрее перекомпилироваться при изменении h-файла или время занимает разбор непосредственно h-файла и остаётся только терпеть?Разделение на три h-файла (там классы взаимодействуют, изменяемую часть нужно вставлять где-то в середине) не помогло, или я как-то не правильно их разделил. Причём, там вроде бы нет ни шаблонов, ни какого-либо сложного наследования, суммарно кода на 3к строк, не более, я не понимаю почему оно так урывается. И это даже без -O2.
Вопрос как посчитать в buffer битовые серии из 0 и 1.То-есть подсчитать количество непрерывных серий из 0 и непрерывных серий из 1.И запомнить расположение этих серий.Кто-то знает ответ?[code] unsigned char* buffer; buffer = new unsigned char[10000]; //Заполняем buffer всякой лабудой. buffer заполнен. //???? тут надо посчитать серии. delete[] buffer;[/code]
>>1445851Пишешь функцию доступа к произвольному биту, потом ищешь последовательности 011 и 100, ну и края отлельно.
>>1445964Тогда странно. Обычно MSVC тормознее. Может у тебя зависимости там какие-то. Лучше в любом случае хидер по отдельным файлам разнести, и оставить там самый минимум. Например, можешь имплементации в отдельные файлы вынести, и инклудить их в cpp.
>>1445761>Причём, там вроде бы нет ни шаблонов, ни какого-либо сложного наследования, суммарно кода на 3к строк, не более, я не понимаю почему оно так урывается.Причем тут это, если как я понял от него зависит первый большой сурс файл, который так долго каждый раз и перекомпилируется?
>>1446104Двач сожрал звездочку, успокойся.Тут все дебилы по определению.Это ж двач, помойка интернета.
>>1446021>от него зависит первый большой сурс файлНе знаю. Изменения в любом cpp-файле то за 1 секунду перекомпилируются.Грубо говоря, есть три класса, методы первого и третьего в крупном cpp-файле, методы второго в я редактирую в мелком cpp-файле, и изменения в h-файле касаются второго класса (но в третьем классе есть ссылки и указатели на второй - наверное компилятор просто вот это всё учитывает, и в lib файл это всё-равно не получилось бы загнать - это я глупость спрашивал, наверное).Я что-то разбивал, объединял и сильно лучше стало в какой-то момент, всего секунд 5-8, хотя h файл такой же, просто с изменённым порядком некоторых частей. Так и не понял что это было.
Сап, крестач.Есть одна тян один кодhttps://onlinegdb.com/Bk2vuuz7HНужно вынести в отдельную функцию (функция принимает std::array) то, что в main() закомментировано.Компилятор по ссылке все норм делает, а Студия 17 не хочет жрат такой код. В main() оно работает и в студии, а в отдельной функции уже нет.error C2971: 'std::array': template parameter '_Size': 'size': a variable with non-static storage duration cannot be used as a non-type argument
>>1447187У компилятора по ссылке там наверное оптимизации (например заменяет data.size() на SIZE). Можешь сам явно такую замену сделать, или объяви BUFF как статическую константу, также как и BUFF.
>>1447260> объяви BUFF как статическую константу, также как и BUFF.имелось ввиду "объяви BUF_SIZE как статическую константу, также как и SIZE."
>>1447274>Ты не понимаешь что такое std::arrayЭто да, но все же.Какой из компиляторов себя правильно ведет?>Замени на векторыУ меня не продакшен. Курю книжку по алгоритмам.Так-то и всей книжкой можно жопу подтереть в пользу STL.
>>1447331> Какой из компиляторов себя правильно ведет?Они оба правильно, просто один достаточно умный а второй ни очень. Попробуй может с начтройками оптимизации в студии поиграться, для тестов.
>>1447331Студия верно все делает.Статический массив выделяется на стеке и размер должен быть известен до компиляции. Тем более тут размер - это аргумент шаблона, они тоже вычисляются на этапе компиляции. А когда это не constexpr функция, есть вероятность, что ты в нее можешь передать что-то, неизвестное на этапе компиляции - вот тебе и ошибка, чтобы ты потом не выстрелил себе в ногу, когда будешь размер массива вводить через консоль.Ты можешь использовать vector вместо array, суть изучения алгоритма из книжки не изменится.А можешь закурить operator new или умные указатели, тогда тоже получится.
>>1447446> что ты в нее можешь передать что-то, неизвестное на этапе В ту функцию можно передать только массив конкретного, известного при компиляции размера.
https://docs.microsoft.com/en-gb/windows/win32/toolhelp/taking-a-snapshot-and-viewing-processesНа что указывает число 32 в названии?
>>1437014 (OP)Продублирую также сюда.Здравствуй, погромач.О себе, в ВУЗике кодил на крестах,есть вышка тех.вуза,26 лет, 2 года работы в тех.поддержке. Понял, что очень сильно хочу писать программы для бизнеса, а точнее для бирж. Боты, программы и т.д.Недавно занялся трейдингом(2 месяца), и даже достаточно успешно. ДС, сижу на шее у мамки, ввиду трейдинга зарабатываю где-то 100 баксом в неделю,что хватает на жизнь и двачевание. Сейчас я сижу и читаю про всякие генетические алгоритмы и прочую сложную финансовую еботу и понимаю, что это моё. Итак,есть два стула- оба стула ведут туда,куда я хочу( в разработку ПО либо на node.js либо на крестах)На одном кресты точеные, на другом фронтенды дроченые.Первые два курса я учился, и учился неплохо и даже обучаем, раз смог закончить, но всё таки я положил хуй из-за преподов и лени на кресты.как я понял, что на ноде,что на крестах ебашат софтину для финансового сектора. Поэтому я буду учить что-то,либо кресты,либо ноду,так как время и силы и желание есть- нет только понимания.Оба языка на мой взгляд учить около 2-ух месяцев жесткого вжоба по 15 часов.Я пришёл за советами мудрыми, двач.Зашел я такой на ХХ и увидел,что там не особо много вакансий для junior.1)Куда легче вкатится на позицию junior ,учитывая то, что С++ не дает много позиций, а фронтенд переизбыточен?Т.е. во фронтенд хотят все,слишком много ебучих джунов,никому они не нужны.2)Что в итоге,учить дольше на джуна?3) Что в итоге чаще используется в реальном продукте для финансового рынка- С++ или JS с его диалектами?Если кто-то работает в где-то -может кто-то рассказать, на чём вы пишите и что конкретно делаете. 4) На С++ работы много, но там требуется от года, т.е. не джун, а миддл. Есть ли возможность скипануть как-то год, посидев где-то в опенсорсе и пописав просто за еду/опыт? 5) есть ли компании,которые берут вот совсем за еду, но чтобы блять у меня была ебучая запись в трудовой, о том, что я не олень. Как их найти?
По QML вопросы можно задавать здесь или лучше в жсдыре? Неужели нет нормального автоформаттера для QML? Я должен код руками форматировать что ли? пиздос. а qmlfmt из аура не собирается потому что кто-то обосрался с cmakeом или у меня слишком новая версия мне что руками его конпелировать блядь.
Как устроен класс string? Он работает по типу "Заносим входные данные в temp массив, копируем в динамический" или как-то по другому?
>>1447654>Как устроен класс string? Он работает по типу "Заносим входные данные в temp массив, копируем в динамический" или как-то по другому? Короткие строки пишутся прямо в экземпляр класса, поверх данных, для длинных - аллокация.
>>1447654читаем то, что дают, аллоцируем новый массив, если старого недостаточно - копируем тудано на самом деле все сильно сложнее
Вот есть некая функция https://ideone.com/IkQoKe я могу вместо char написать char&, что по сути изменится в программе? Работает идентично.
>>1447894Тут ничего, ты возвращаешь ссылку на чар, что уже как минимум затратно для малых типов. Далее, если ты результат функции сохранишь для дальнейшего использования, а твоя строка будет уничтожена, у тебя будет ссылка на хуй пойми что. Если бы вернул просто чар, то он бы сохранился и делай что угодно.
Пытаюсь написать класс для создания/чтения BMP файла. Пишет без ошибок. Размер уже созданного файла совпадает с тем что задумано. Но при попытке открыть файл просмоторщиком постоянно выдает.>premature end of file encounteredЧто делать, кто что подскажет?
>>1448070Кидай код.Может, хэдэр неверно записываешь или мусорные пиксели не так воспринимаются.Пикча с шириной % 4 == 0 открывается?
Анон виз трабл хиар.Есть класс Executor с перегруженным operator(). Есть функция execute, которая возвращает объект Executor'a.Хочу, чтоб запустить экзекутор можно было только так:> execute(&InterfacePtr)("sup dvach");Без возможности сохранить его как-то где-то, а позже запустить типа:> Executor exe = execute(&InterfacePtr);> ...> exe("sup dvach");Объявил все конструкторы копирования, перемещения, operator= всех видов deleted и ещё попробовал унаследовать boost::noncopyable - проект продолжает нормально компилироваться и работать со строкойExecutor exe = execute(&InterfacePtr);Как побороть это?
>>1448314deleted не для этого.В private секцию перенеси все. Во всяком случае, Саттер и Александреску именно так и советуют.
>>1448160Либо простое распиздяйство, либо часть процесса по выпиливанию того, что не совместимо с новыми виндоусами.
Поцоны ребята, куда можно закинуть код чтобы его хорошенько полили говном но при этом дали грамотных советов как надо было сделать нормально?
>>1448363На любой форум. Мог бы на двач залить, сказав бы "гляньте какой я крутой код написал". Тебе бы сразу 100500 недостатков нашли бы
Сколько бит может занимать переменная в памяти? Планирую искать значение переменной в памяти и подумал о том, что переменная может занимать 2 байта, а я ищу ее с помощью переменной размером в 4 байта. Получается я никогда не найду ее. Но это еще ладно. Вдруг разрабы заморочились и сделали переменную в 12 бит. Такое может быть? Я планирую использовать bitset и обрезать до первого значащего бита слева. Сработает?
>>1448363Да хоть сюда. Вот пример.Смотрите, какой я хуевый код написал. Перепишу на кресты - вообще от убогости охуеете.
>>1448403ну, можешь сначала по байтам шагатьfor (char ∗ptr = begin; ptr < end; ++ptr)if (∗(uint8_t ∗)ptr == val|| ∗(uint16_t ∗)ptr == val|| ∗(uint32_t ∗)ptr == val|| ∗(uint64_t ∗)ptr == val) нашлась;потом каждые 4 бита дрочи uint4_t, uint8_t, uint12_t, и т.д. (реализация побитовыми сдвигами, естественно)ну и.. ты понел. Пока ты думаешь, комп уже давно бы все варианты отработал
>>1448527Вот о чем еще подумал: мне надо будет отследить значение переменной. Вот это самое сложное наверное. Мне ее размер знать нужно. Допустим я смогу как в cheat engine отследить последнюю операцию, изменяющую эту переменную. Можно ли отсюда узнать размер этой переменной? Посмотреть сколько бит, например, move копирует в ячейку памяти и узнать размер переменной. Может ли быть такое, что переменная занимает 16 бит, а для ее изменения программа перезаписывает не все 16, а , допустим, нужные 9.
>>1448527>>1448607>>1448403Остановитесь, наркоманы.Тебе нужно найти значение в памяти. Значение это последовательность байт (из одного и больше), память это последовательность байт (из дохуя и больше). Как найти вхождение одной последовательности в другую? гуглируй поиск подстроки в строке
>>1449154КАРАСИК название выбирали на даблhttps://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%90%D1%85%D0%BE_%E2%80%94_%D0%9A%D0%BE%D1%80%D0%B0%D1%81%D0%B8%D0%BAЕсли не выебываться, лучше обычным перебором. Один хрен больше 8 итераций во внутреннем цикле не будет.
>>1449127А если массив плотно запакованных 12-битных значений? А если big endian? Не все так просто...
>>1449190Так-то да. Хотя здоровый человек не будет экономить 4 бита на значение (с минусом к скорости доступа), если только их не миллиарды. Тут могу проебаться, но endian должен совпадать, т.к. обе программы в одной среде выполняются.Короче, случаи разные бывают, затачивайся хоть под 13-битный float, если надо.
В книге сказано, что вот это вот, указатель на массив из 7 элементовint (ЗВrf)[7]= &arr; где arr = массив из 7 элементовСобственно, если это указатель на массив, то почему звrf выдает какие то рандомные числа? И вообще, чем эта запись отличается от int *rf=arr; Которая выдает нормальные числа.
>>1449458Потому что если arr в выражениях то же самое, что &arr[0], это еще не значит, что arr != &arr. У тебя нет отдельного указателя на этот массив, чтоб сделать указатель на указатель. У тебя есть только сам массив, и его адрес, с которым связано его имя, для конпелятора такая же относительная константа, как и адрес любой другой переменной.
>>1449458короче, смотриint arr[10];int ∗ptr = arr;ptr - адрес первого элемента arr,&ptr - адрес переменной, которая содержит адрес первого элемента arr.Ты можешь передать указатель на указатель какой-то функции, чтоб она его поменяла, но не можешь передать &arr таким образом, чтоб после вызова arr ссылалось на другой массив, логично ведь. Потому что выделением памяти под arr и определением адреса относительно текущего фрейма в стеке заведует конпелятор.
>>1449458Конпелятор не выделяет для хранения этого адреса отдельную переменную, он сам этот адрес каждый раз подставляет (lea ..., [rbp + смещение_массива_по_текущем_фрейме])
>>1449458Знаешь, в физике есть такой метод "анализ размерностей". Это когда если слева от = метры, то и справа должны быть метры, а не килограммы, иначе это не выражение, а хуйня.Давай подумоем, какой тип имеют rf и &arr. rf, как ты сам написал, это указатель на массив или int ()[7] да такой тип ебанутый, который typeid печатает как PA7_i. arr - просто A7_i, и &arr соответствено PA7_i, так что тут всё ок. Ошибка в том, как ты обращаешься к элементам rf. Если делать rf, это то же что (rf + i). Т.к. rf имеет тип указатель на массив, то и rf + i тоже, а (rf + i) - просто массив, т.е. int. Потому и выводит всякий бред.Хули делать, спросите вы? Обращаться к массиву, а не указателю на него. int a = (rf); // == ((*rf) + i)вывод типов в этом выражении оставим как упражнение читателюНа случай, если двачь распидорасит звёздочки: https://ideone.com/peLAuEУ меня уже давно такое чувство, что половина вопросов в треде от каких-то скриптодетей, неспособных осознать само понятие типа данных. Зачем, лучше на двачах спросить, где звездочку поставить.
>>1449594так и есть, распидорасилоtest, блять`int ()[7]``(rf + i)``int``int a = (rf); // == ((rf) + i)`>((rf) + i)((rf) + i)[code]((rf) + i)[/code]
>>1449634Вот именно, что адрес адреса нигде не хранится, поэтому при взятии адреса массива ты получаешь тот же адрес первого элемента. Для фокусов адресами адресов надо делать отдельный указатель, и с ним уже играться хоть в попу.
>>1449594>У меня уже давно такое чувство, половина вопросов в треде от каких-то скриптодетей, неспособных осознать само понятие типа данных. Зачем, лучше на двачах спросить, где звездочку поставитьА у меня такое чувство, что книжки по C++ пишут те самые скриптодети.Книги по С++, не буду их перечислять, но они считаются топовыми, объем 1000-1300 страниц. И, блядь, нигде толком не описана такая базовая вещь, как синтаксис объявлений. Везде дается только интуитивное представление о самых простейших случаях.
>>1437014 (OP)Ну почему? Почему вы cout называете каут, а не сиаут? Clang у вас это клэнг, а не силэнг. Постоянно с этого охуеваю.
>>1449964а теперь посмотри какое-нибудь выступление Чендлера Каррута, и послушай как он произносит, гений.
Там новые видосы с С++ user group залили.Алсо, всем джавистам и растоводам, которые тихонько сидят итт, посвящается: https://www.youtube.com/watch?v=LZflL44SVVYС++ лучший язык программирования. Ноудискасс.
>>1449976А создатель gif произносит его как джиф, хотя и расшифровка сокращения и грамматически оно произноситься как гиф. Вот только нормальным людям похуй.
Помогите, пожалуйста, с пикрилом.Почему, если я ввожу в консоль 3.51, то в переменную типа float записывается значение 3.50999999?Зачем вообще такое поведение нужно?Буду благодарен, если подскажете термин для гугления этой особенности.
Есть класс с шаблонным конструктором template <typename U>TreeNode(U&& value) : m_value(std::forward<U>(value)) {}Как определить отдельный copy(move) конструктор для него? Обычным способом то он продолжает пытается инстанцировать шаблон.Алсо где перекат?
>>1450197Куда ты блядь собрался perfect forwarding пихать? Ты один хуй копируешь, зачем тогда эти ебанутые конструкции?
Раз уж тут речь про forward зашла, пересылку std::forward<T>(value) нужно принимать, как T value или T&& value?
>>1437014 (OP)Привет. Существуют ли анализаторы кода, но не те, который выдают потенциально опасные места, типа не юзай здесь tie, поставь const бла-бла-ла, а который занимается тем, что следит за количеством пробелов и расставлением {, например и так, чтобы он подстроился под мой стиль? То есть почти любая idea ставит за тебя скобочки, которые могут неприятно подъебать, visual studio пробелы ставит после того, как ты напишешь ;, а вот готовый код отредактировать? Мб это есть в vs и я никогда на это не натыкался?
>>1449581Бамп вопросу. Актуально же не? Надо логгер какой-то пилить насколько я понял? Но как это правильно синхронизировать?
>>1450662Ты чего нервный такой? Если не знаешь ответа на вопрос, то просто ничего не пиши и пройди мимо.
>>1450667Ну тогда объясни, на кой ляд тебе сдалось обрабатывать ошибки в конструкторе? Либо не проверяй свои проверки до создания, либо после.
>>1450690Ты угораешь? Конструктор для чего нужен? Чтобы объект создать. Как мне обработать "ошибку" при его создании? Возвращать null? А если я хочу знать, в чем конкретно проблема и получить какой-то статус?
>>1450719Что такое зашито в твой конструктор, что он может отработать с ошибкой?По-хорошему, он должен только инициализировать поля класса, остальная логика - в методах.
>>1450722Потому что я не хочу использовать эксепшены. Логика в конструкторе связана с инициализацией объекта. Не писать же отдельно метод Initialize? Можно конечно, но я не хочу.
>>1450726Причем тут исключения, я не о том.Хочешь говнокод - пиши конструктор, который делает всё. Нахуй только тебе класс в этом случае, уж не знаю. Пиши как на си, круто же. Посмотри у winapi, охуенно ошибки обрабатывает.Конструктор должен отработать быстро и, желательно, без ошибок, потому что зачем тебе выделенная память, раз твой объект невалидный?А если тебе нужен контейнер этих объектов - ты будешь ждать три года, пока конструктор каждого объекта отработает, а потом ещё и проходить по нему в поисках ошибок, исправлять их? Интересный ты.
>>1450741Я и пишу обертку над винапи. Вот я создаю в конструкторе объект через WinApiJopaInit, ОС вдруг ебанулась и выдает мне статус об ошибке. И что мне делать в таком случае?
>>1450742>ОС вдруг ебнуласьЯ понимаю, что был смысл об этом беспокоиться раньше, но не знаю, есть ли резон в 2019 об этом думать. А ещё не знаю, зачем писать обёртку для винапи, ну да мсье просто знает толк.>И что мне делать в таком случае?Что-что. Реинициализировать объект.Только поэтому лучше иметь метод init, а не делать это все в конструкторе. Этот же метод и вернёт тебе код ошибки, в котором ты проверишь успешность завершения.Подумай сам: если ты инициалируешь только поля твоего класса и последующий init падает/возвращает не ноль, то ты корректируешь его аргументы и вызываешь заново init.А если твой охуенно хитрый конструктор падает, то тебе нужно все равно иметь такой же метод init с кодом, копирующим код конструктора для повторой инициализации. Либо ты вызываешь деструктор только что созданного объекта и создаёшь его заново, что тоже такое себе.
qsort( &a,(bool ()(void , void *))(ind ? numcmp : strcmp));Ругается на знак вопроса. Почему? numcmp и strcmp принимают ссылку int или ссылку на строку соотвественно
>>1450832>numcmp и strcmp принимают ссылку int или ссылку на строку соотвественноthis.В операторе ? аргументы должны быть одинакового или неявно приводимого типа.
>>1450837А как тогда сделать? Надо чтобы в случае сравнения чисел функция принимала ф-цию сравнивающую числа, а в случае строк, сравнивающую строки.
>>1450959Обычная структура с перегруженным оператором >>.Можно сделать свою и тоже передавать в любую функцию.
>>1451030Снова отправилось само собой.Можно написать то же самое для класса с конструктором без аргументов.А если конструктор имеет какой-то аргумент, то как это записывается?
>>1451031https://stackoverflow.com/questions/24924434/c-using-new-to-create-object-array-with-initializer#24924483
qtCreator подсвечивает отключённый через директивы код. Причём, если я явно в этом же файле не пропишу нужный мне дефайн, он не станет его подсвечивать, чтобы бы я там не указывал в остальных файлах (то есть если я ставлю директиво в cpp-файле и сразу за ней же инклюдю h-файл, оно всё-равно воспринимает его как отключённый). Есть способ отключить эту фичу, чтобы он подсвечивал этот код так же, как и остальной?Если просматривать код можно просто перекопировав код в условный notepad++, то вот редактировать код с директивами в креатере категорически неудобно.>>1451061Ну понятно, так я и сам могу.
Аноны погромизды, как качать скилл в плюсах когда выучил только основные знания плюсов в универчике, что писать, что читать, где можно брать задания с подсказками ?
Не могу понять, зачем в классе после списка параметров писать const, в книге как то непонятно обьяснено.
>>1451496Хотя разобрался, без const нельзя будет воспользоваться функцией, если экземпляр класса константный. хотя зачем может понадобиться константный экземпляр класса
>>1451430Попробуй написать что-то реальное, особенно если есть современная мобилка. Для алгоритмов бери классику и ебашь.
>>1451632Ну так я бы и хотел написать что то реальное, но что ? Мне бы какое нибудь шаблонное, но интересное задание с подсказками как надо, и при чем здесь современная мобилка?
>>1451675Смотря что хочешь научиться делать. Можешь телеграмм бота какого-то полезного замутить я бота-хранилище написал, если какую-то конкретную технологию, скажем, QML, то сделай приложение с использованием какого-нибудь АПИ простой клиент ВК скажем, можно написать калькулятор для графов с гуем где ввод пальцами идёт, я ебу, сам придумай что-то под свои нужды.
>>1451743Ай бля проебался, у тебя только начальные знания. Ну тогда выбери какую-то область сети скажем и изучи хотя-бы базовую теорию по теме, паралельно выполняя примеры из учебников/инета. Потом уже если почувствуешь силы начинай что-то более-менее серьезное писать
Сейчас меня нахуй пошлют, но так или иначе. В ойти порядка 2.5 лет. Писал на джаве\дотнете\сейчас пишу на ГОвне. Заебал ебучий энтерпрайз, хочу в геймдев\3d вкатитца. Знаний математики\алгебры у меня нет.После всего того, на чем писал, плюсы кажутся чем-то божественным. еще бы пекейдж- менеджер по- умолчанию, а не ублюдочные инклюды - и просто пушка. Сколько времени уйдет изучить тот же opengl/dx12/vulkan и иже с ними математика, геометрия? ? И, собсна, главный вопрос - где учиться то, что читать ? Какой проект будет неплох, как пет- проджект ?
>>1451751>После всего того, на чем писал, плюсы кажутся чем-то божественным.После Явы и .Net переходить на кресте? Ну такое себе... Ахуеешь от того, сколько ысего придется хуярить вручную. >Знаний математики\алгебры у меня нет.>Сколько времени уйдет изучить тот же opengl/dx12/vulkan и иже с ними математика, геометрия? ? Минимум 6 мес. на основы. Ядро геймдева - чистый матан. Линейная алгебра, матрицы, аналитическая геометрия, элементы комплЕксного анализа и кватернионов - это самый минимум, который тебе нужно будет знать. И это если не задаваться вопросом, кто будет писать графику/музыку/анимацию (иначе получится игра про квадрат на квадрате сидит и по квадрату стреляет).>И, собсна, главный вопрос - где учиться то, что читать ? Какой проект будет неплох, как пет- проджект ?Начни с учебников по типу "Высшая математика для экономистов". Затем попробуй пощупать, например, SFML. После - SDL. А там уже и до OpenGL и DirectX недалеко.
>>1451756СДЛ нахрен не нужен, он ничем от СФМЛ не отличается, кроме си-стайл апи.Алсо забудь про работу на плюсах, в энтерпрайзе только легаси говно и ёбля трупа Qt, геймдева в рашке нет, а тот что есть, весёлые фермы, не сильно отличается от энтерпрайза. Ещё и платят как веб-макакам, а ёбли больше в разы. Сбежишь обратно на джаву через полгода.Хотя игровые движки велосипедить это весело, я вот все выходные провозился с ecs на темплейтах. Завтра на работе на ts хуярить я ненавижу свою жизнь
>>1451756>Ядро геймдева - чистый матан. Линейная алгебра, матрицы, аналитическая геометрия, элементы комплЕксного анализа и кватернионов - это самый минимум,Я бы еще заметил, что без численных методов в кампухтере оно не взлетит никак.
Помогите понять сакральный смысл строчек:[code]for (int i=0;i<4;i++){a.x = figures[n] % 2;a.y = figures[n] / 2;}[/code]https://github.com/laszlothebrave/Tetris/blob/master/main.cppПочему в первом случае используется %, а во втором - / ?
>>1451939Известный трюк с хранением координат в одном числе.Если есть матрица с шириной W, то позиция с координатами х и у: p= y*W + x.Обратно соответственно x = p % W, y = p / W.
>>1451939>почему в первом случае используется %, а во втором - / ?Потому что случаи разные, не?В одной цифре автор кода "зашифровал" два значения. Зачем? - хз.>сакральный смысл строчекОн сокрыт в массиве figures. Да и никакой он не сакральный. Это называется "соглашение". Прост автор в данном случае заключил соглашение сам с собой, поэтому другим нихуя не понятно.
>>1451956Ты только что про него все прочитал. Можешь нарисовать на листочке прямоугольник 3х5, пронумеровать клеточки с 0 и ждать озарения.
Антонидасы, хочу поверх [открытой] картинки рисовать точки, но при этом чтобы их можно было передвигать мышкой. Поверх - означает, что точка не будет рисоваться непосредственно на картинке, но точка будет видна на картинке. Типа такого элемента интерфейса. Как это лучше всего реализовать? Пока думаю заебенить QPainter поверх картинки такого же размера и на него рисовать, только не совсем уверен насчет этого.Может кто нибудь подскажет, как это сделать? Или хотя бы урок Qt-шный на эту тему?вы хули не перекатываетесь?
Программач, очень нужна помощь: на Qt, а точнее на QML, сварганить 4-6 средне-красивых форм(квадраты с текстом в пейнте имеются), забитых рыбой, суть проблемы - нужен стимоподобный стиль, с конфигом цвета элементов. Я не дизайнер от слова совсем, поэтому весь этот цсс вызывает у меня боль, а qml боль в кубе, да и с qt я тоже особо не общался, эти формы лишь небольшая часть общей дичи.Если кто может и не похуй/лень - отпишитесь, куда-нить закатимся - почта, дискорд, впашка.
>>1450786>А ещё не знаю, зачем писать обёртку для винапи, ну да мсье просто знает толк.Потому что я хочу писать на С++, а не на Си. Подсистемы у майкрософт настолько специфичны, что работать без врапперов с ними та еще боль.
>>1452223Так в том и вопрос: нахуй написали MFC и ATL?Времени разобраться в этом ты потратишь мб столько же, сколько будешь писать свою библиотеку, но лучше не напишешь все равно.Смысл вопроса был в этом, а не "зачем не используешь напрямую winapi". Тащемта это пиздец и я вас так понимаю.Бтв к тому вопросу: Саттер/Александреску, "Стандарты программирования на C++", рекомендация 72.
>>1452227Так мне не формочки клепать. Хочу сделать обертку над новым апи, который только появился и прочими специфичными вещами, которых нет в стандартной библиотеке и бусте. Прочитал современные кодестайлы от всяких гуглов, в которых говорят, что эксепшены зло. Ведь можно реализовать какой-нибудь простенький логер ошибок, вместо того, чтобы кидать эксепшены.
>>1452229Тогда пардон, зря агрюсь.Хотя насчёт ошибок/исключений - все равно думаю, что если речь идёт об обычном коде, то мб есть резон в кодах ошибок - ходят же байки, что try/catch дорогие блоки. Хотя натыкался на инфу, что try сам по себе не несёт нагрузки, а catch только при срабатывании чего-то стоит.А конкретно в конструкторах/деструкторах все же лучше постараться сделать гарантированное отсутствие ошибок, т.к. если один из них отработал - то отработал успешно с точки зрения логики, а иначе получается, что объект сконструирован и не сконструирован одновременно.Да и в случае динамического полиморфизма лучше сделать виртуальный метод init и переопределять его, а не дописывать логику конструктора от наследника к наследнику. Все равно потом окажется, что в случае какого-то наследника не нужна будет часть логики.Мне вообще недавно потребовался временный объект для хранения промежуточной инфы, в то время как мой конструктор коннектился к бд - пришлось переносить в отдельный метод.Но если очень хочется - я бы сделал в родительском классе статик контейнер, в который пихал бы в случае ошибки в конструкторе указатель на ошибочный объект и код ошибки, чтобы проверять после создания все неправильные и исправлять их.Быдлокод, но у меня других идей нет, как в этой ситуации быть.
>>1452227>Так в том и вопрос: нахуй написали MFC и ATL?Когда их написали - они были вполне релевантны
Почему после помещения точки с запятой после функции код продолжает компилироваться, но иде начинает предупреждать об empty declaration?
>>1452590>empty declarationПотому что после них не нужна точка+запятая и он считает все от конца функции до нее пустой строчкой? Просто предположение, я только вкатываюсь.
#ifndef UNTITLED3_SCREEN_H#define UNTITLED3_SCREEN_H#endif //UNTITLED3_SCREEN_HЧто это такое? Создается само при создании нового заголовка.
std::set<int>Надо найти min из отсутствующих элементов больше 0 т.е. {1, 2, 3} -> 4 {1, 3, 4} -> 2 {3, 4} ->1 и т. д. с минимально возможной сложностью
>>1452656лайфхак: итераторы обходят элементы множества по возрастаниюint F(set<int> const& s) { int y = 0; for (int x : s) { if (x != ++y) { return y; } } return y + 1;}
>>1452644Чтоб исключить множественный инклюд используется эта штука. Есть еще вариант в одну строку #pragma once - что, ящитаю, гораздо лучше и удобнее.
>>1452125> Антонидасы, хочу поверх [открытой] картинки рисовать точки, но при этом чтобы их можно было передвигать мышкой. Поверх - означает, что точка не будет рисоваться непосредственно на картинке, но точка будет видна на картинке. Типа такого элемента интерфейса. Как это лучше всего реализовать? Смотря для чего тебе эта хуйня нужна.Для самого быстро получения результата я бы взял sfml.Там есть примитивы для разных фигур, в том числе и для окружностей.Поэтому нужно было бы только заморочиться с кодом связанный с передвижением фигур.
>>1452854Ну вот задачка. Генератор ид. Должен выдавать минимальный из возможных доступных, при этом они могут освобождаться. Сложность всех операций не больше логарифмической.
>>1452875>Генератор ид>Должен выдавать минимальный из возможных доступныхПочему бы просто не хранить использующиеся номера в векторе, а свободные номера (с индексами меньше максимального) в другом векторе/списке или дереве? Добавление нового id за константное время, просто взять первое число из второго контейнера, освобождение за логарифмическое (нужно вставить во второй массив в нужное место). К тому же std::set не слишком шустрый.
Скачал проект с гитхаба, никаких .sln нет, только cmake.txt. И как мне это в студию запихать? Как вообще люди без студии пишут код? В нотепаде? Пиздец.
>>1453030Наглядный пример студиядегроида.Цмейк - не поверишь, цмейком и открывается, который выдает файлы для разных прог, включая студии.Пишу в акельпаде, под мингв и линухи, мне збс без всяких умных подстановок скобок и завершения функций, которые только мешают.
>>1453034Да линуксоиды совсем офигели со своими терминалами. Как мне проект то загрузить если здесь один .txt файл? Там в блокноте ни одной ссылки нет, откуда он докачивать файлы будет?
>>1453047Совсем дебил? Еще раз: скачай cmake, запусти, ткни его ебалом в этот файл, конфиг, сгенерить, выбираешь свою студию, получаешь все готовое.
>>1452875> Должен выдавать минимальный из возможных доступных, при этом они могут освобождатьсяПри освобождении сохраняешь этот айдишник.Когда нужно генерировать новый, то возвращаешь его, при условии что он > 0, иначе генерируешь новый.
>>1453034>Пишу в акельпаде, под мингв и линухиОчередной пердоледаун, который не умеет в инструменты разработки.
>>1453050>>1453056Так, открыл в студии, вроде работает. Как мне теперь сгенерить .sln проект из этого всего?
>>1453075я не буду тебя ни в чем переубеждать, по твоему тулингу видно, что ты либо студент, либо дебил, либо и то и то.
>>1452656>>1452875Если бы не std::set а своё дерево поиска, можно было бы решить иначе. В каждом узле дерева пускай мы будем хранить количество элементов в левом поддереве. Скажем, сейчас нода 4, мы левый потомок ноды 6. Значит, в нашем левом поддереве должно быть 3 элемента: 1 2 3. Если да, то спускаемся вправо, иначе спускаемся влево. Когда спускаемся вправо у нас изменяется граница поиска. Например, если спустились вправо от ноды 4, нам нужно искать пропуски не от 1, а от 5. Но если при спуске вправо вычесть из всех узлов 4, мы снова получим обычное дерево.Сложность логарифмическая. Вставки/кручения деревьями усложняются, но не очень сильно. За вечерок можно написать/отладить.Такое чувство, что должен быть алгоритм попроще. Например, хранить список пропущенных айди в векторе/списке/whatever.
>>1453095не, я пойду работать на свое рабочее место в топ контору с HQ в Америке, где все пишут в нормальной студии, а дебилы отсекаются за первые полчаса собеседования.
>>1453108Другой анон, но ЕМНИП нужно из Developer Command Prompt открывать (она есть в пуске, рядом в папке нужной студии)
>>1453132>>1453134Нужно было 19 студию скачать с новым сдк. И ведь нихуя в инсталл гайде не написали. Пришлось 30гб сырого говна поставить. Хоспади, за что такой пердолинг, когда уже запилят единый удобный фреймворк, чтоб все из коробки работало?
>>1453196> Хоспади, за что такой пердолинг, когда уже запилят единый удобный фреймворк, чтоб все из коробки работало? Предлагай https://stdcpp.ru/
>>1453206>Знаю, что в C++20 наконец-то переехала замечательная фича из Си "designated initialization".Наконец то, чёрт возьми. Даже не джва года жду.
Посоны, у меня смежная система с другой конторой, в общем они по TCP посылают мне данные, я в QT работаю, в другом потоке в цикле while(true) принимаю данные вызывая readAll() : QByteArray, в общем получаю ByteArray[4096], как только пакет прилетает.ByteArray такого вида, в общем по сути это CharArray они посылают 2 цифры и знак конца строки. Например 2.095645 1.345443 \nТо есть ByteArray[0] это 2, ByteArray[1] это точка, потом цифры, пробелы, знак перехода строки и все это повторяется, ну и все это обрывается, то есть в начале начинается с середины цифры и в конце обрывается на середине, а в следующем пакете продолжение.Вопрос в общем, как из этого ByteArray забрать эти самые две цифры?
>>1453383Не цифры забрать, а числа конечно же.Пока то что я придумал это конвертировать ByteArray в string, удалить \n - знаки и забрать числа по splitу, но это как-то громоздко.
>>1453383В общем вот так это все выглядит, я просимулировал, только размер в 4096. Какой best practice, чтобы вытянуть числа отсюда?
>>1453394Это те что \n разделены? Ты че с питона вкатываешься? Читаешь символ в строку , пока следующие 2 за ним не \n, потом конвертируешь в число
>>1453462А насчёт обрыва пакета - если не встретил '\n', то прерываешь считывание, приклеиваешь к потоку/пересоздаешь его и читаешь дальше.Можно одним тредом считывать, пока есть данные, а вторым приклеивать новый пакет.
Есть 2 h файла с классами. В одном классе, нужно объявить функцию другого как дружественную, как это сделать? Компилятор ругается на неизвестное имя.
>>1453605>функцию другого как дружественнуюты и должен указать, что это функция другого класса, а не прост функция:friendly_class_name::friendly_func_name()+ ты должен позаботиться, чтобы (частично) дружественный класс был виден в той области, где ты декларируешь дружбу.
>>1453740Что тебе мешает написать геттеры для своих полей? Эта хуета, что у тебя сейчас, нечитаема в принципе
>>1453803Тут рассмотрен случай, когда метод используется в функции и его можно вынести вниз. А в моем классе метод используется при определении вектора.
>>1453864>А в моем классе метод используется при определении вектора. А тебя этот факт не наводит на мысли, что ты изначально через жопу выстроил архитектуру своих классов\приложения, а теперь пытаешься всё это дело подпереть костылями?
>>1453986В таком случае всё может произойти конфликт имён. Напишешь какой-нибудь свой min\max и компилятор будет ругаться.
>>1453986>Зачем постоянно писать std::cin / std::coutПотому что начитаются всяких вк-пабликов про программированию и в путь. Вообще, философия языка С++ подразумевает, что не нужно подключать в свою программу те фишке, которыми ты не собираешься пользоваться. Второй момент, что если у тебя есть другое пространство имен с такими же функциями cin/cout, то можешь попасть на конфликт имен. Если в твоей программе используются только cin и cout, лучше использовать std::cin / std::cout или же using std::cout / using std::cin в заголовке файла, тем самым ты подключаешь только то, чем будешь пользоваться. Если же ты тупо только познаешь азы программирования на C++, то ебашь ysing namespace std и не еби себе мозг.
уже писал в другой тред, но там не ответили, надеюсь на вас.Ссам я джаваскрипт макака на данный момент, но кое что дома клепаю на c++/OpenGl как систему сборки использую cmake что касается подключения библиотек или включения своих сорцов в проект трудностей не вызывает, ну почти, но вот никак не могу понять. По мимо исходников с++ у меня в проекте есть изображения, исходники шейдеров, вскоре будут еще 3д модели. Как с помощью cmake делать так, чтоб они:1. отображались в структуре проекта2. копировались при запуске приложения?включаю их используя include_directories, сами каталоги отображаются/копируются, а вот их содержимое нет.
>>1454011Да если вдруг cmake не лучший выбор, то подскажите, что лучше использовать для сборки c++ проектов в 2к19.да копирвоание файлов я реализовал через cmake -E copy_directory, но как их отображать в дереве проектов, я досихпор ненаю
>>1454011>отображались в структуре проектанахуя?>копировались при запуске приложенияКакой-нибудь pre/post-build скрипт. Или как ты сделал, через смаке.
>>1454011> По мимо исходников с++ у меня в проекте есть изображения, исходники шейдеров, вскоре будут еще 3д модели. Как с помощью cmake делать так, чтоб они:> 1. отображались в структуре проекта> 2. копировались при запуске приложения?Зачем? Пускай он просто лежат в папке assets рядом с исполняемым файлом и всё.
Котаны, котанчики.Есть проблема, подробно изложенная в пастеhttps://pastebin.com/RZKmSYnPЕсли попытаться коротко. Имеется чисто виртуальный метод, который определяется в наследнике и методы с таким же именем, но разным набором аргументов, которые делегируют вызов виртуального метода.Так вот, эти невиртуальные методы не видны в наследнике. Почему так? Где об этом почитать и как бороться?
>>1454198Ну и в продолжении своего поста >>1454231У тебя в классе А идет чисто виртуальная функция, которую ты тут же и реализуешь. Хочется спросить: дядя Петя, ты - дурак? На лицо же типичная проблема непонимания отношений наследования. И как следствие - косяки в самом построении/архитектуре твоей программы. Проще говоря - нечего лепить горбатого. Нужно делать по уму, как написано в умных книжках.
>>1454198Дополню к предыдущим двум своим сообщениям чтобы было понятнееВот представь. У тебя есть базовый класс "Фигуры" и ты хочешь заебенить 2 класса-наследника: окружность и эллипс. И вот вроде бы они и похожи (круг - это частный случай эллипса), но площади считаются по-разному. И тогда ты делаешь свой базовый класс "Фигуры" - абстрактным базовым классом, добавляя туда чисто виртуальную функцию "ВычислитьПллощадь()" и уже в наследниках реализуешь эту функцию так, как тебе нужно. Ну а теперь посмотри на свой пример. Ты в базовом классе хуяришь чисто виртуальную функцию и тут же какую-то ебань в виде обертки, чтобы ее же прямо здесь и реализовать. А дальше снова хуяришь функцию с таким же именем. И потом всю эту ебалу ты пытаешься передать наследнику, в котором... SURPRISE, MOTHERFUCKER ты пытаешь реализовать свой вариант этой ебаной функции. Спрашивается, ну нахуя, блядь? Что это, блядь, за индусский говнокод?
>>1454095>>1454116ну что касается изображений действительно не обязательно, но если я захочу добавлять какие-нибудь файлы конфига, теже шейдеры редактировать и т.д. было бы удобно смотреть в самом проекте
Пишу решатель судоку. За какое время программа должна исполняться? У меня во время первого запуска может загружаться 0.8 секунд, а при последующих 0.17. Понимаю что в основном это время чтения/записи и его особо не исправишь, но мне хотелось бы знать к чему стремиться
>>1453708Ты сделал объявление>class Screen;Но к моменту>Screen(24,80,' ')Компилятор не знает ещё ни об одном поле классаВыход - #include "Screen.h" в начало фалйа и убрать class Screen; в этом файле.
Сап дойч.Ебусь с темплейтами, компилятор отказывается компилить из-за синтаксической ошибки, не могу понять, это я мудак или компилятор.https://pastebin.com/LvHf5NesПричём если вынести Child наверх из класса Parent, то всё волшебным образом начинает работать. Я где-то забыл темплейтные параметры передать? Почему он ругается на распаковку темплейтов?
>>1455187>child.template childDummyFunction<TFunctionParameters...>(); Что, как, почему это работает? 0_оСпасибо огромное
>>1455199https://stackoverflow.com/questions/610245/where-and-why-do-i-have-to-put-the-template-and-typename-keywords
Может ли в игре переменная менять свое расположение? Или узнав расположение переменной единожды я могу быть уверен что в последующие разы она будет там же?
>>1455312И еще вопрос: если мне нужно найти подстроку в гигабайтовой строке с помощью карасика. Можно ли как то строку на куски поделить?
Я хочу здоровенный, толстый, венистый задачник с ответами типа вот такого: http://www.itmathrepetitor.ru/zadachi-po-programmirovaniyu/но с ответами.Везде вижу либо полторы задачки без системы на рандомную тематику но с ответами, либо вот как тут - куча задач на всю хуйню, но без ответов. Ответы - это же самое главное, одно дело высрать кучу говнокода и совсем другое узреть, как нужно то было.
https://purecodecpp.com/archives/433Вот этот набор вроде ничего, но самая первая задача была понять, почему у меня не открываются выпадающие хуйнюшки "[+] Посмотреть код" по ссылкам. Мои хакерские навыки позволили мне понять, что на Фирефокс они не работают, если переходить по ссылке лефткликом и работают, если открывать ссылку в новой вкладке. Я бы объяснил как стать таким же охуенным хакером как я, но у вас энивей не получится нихуя, понимаешь? https://www.youtube.com/watch?v=yHtHSlnplYU
Господа, поясните за сеть в крестах.Есть две задачи:1) Долбить одну апишку гет запросами - тут все вроде понятно, берешь libcurl и долбишь. Но есть ли что-то удобнее под linux / mac? 2) Добавить асинхронный веб сервер в свое приложение чтобы сделать из него сервис с json api. Вот тут уже сложнее - есть море велосипедов, половина из них либо не поддерживается либо пытается заимплементить Http с нуля - хуй знает что использовать. Есть ли тут опытные аноны? Пока присмотрелся к Pistache (но он по отзывам с реддита какой-то велосипедный) и к Boost.Beast (но боюсь что за ним придется тянуть весь буст, с которым я не работал).Прошу советов мудрых
>>14560671. Куда тебе проще курлыка? Там 3.5 строки на весь запрос хватит.2. Бери любой подходящий велосипед, с нуля хттп - а хуле ты хотел? Или тебе надо либу для либы? Буст не нужен.
>>1456073> с нуля хттп - а хуле ты хотел?Хотел как в дудке или пистоне - хттп в стдлибе, чтобы его поддерживали разработчики языка а не переизобретали васяны каждый раз.>Или тебе надо либу для либы?Возможно сущетсвует эталонная(тм) зарекомендовавшая себя (с) реализация хттп, которую можно использовать в своих велосипедах вместо тысячи васянских либ.
>>1456094Ну как клиент - курлык норм, держит гору протоколов и все такое.А вот сервер уже не настолько часто нужен народу, поэтому единственного истинного я не встречал. Да и вообще протокол не сложный, дешевле сделать свой с нужными функциями, чем искать готовый с кучей говна.
Наверно ньюфаги всех тут уже заебали, но всё же спрошу.А если есть знания матана (по крайней мере понимаю о чём речь идёт), из-за специализации в вузике, но на плюсы в моей 600к деревне ищит только одна контора, то как качать скилл?Сейчас погрузился в глубины формнного индуского ада на wso2, однако всё же хочется перебратся на плюсы.Есть идея влится в какой нибудь опен соурс, но вот не знаю какой.
>>1450190Сука, когда же вы научитесь, блядь. move и forward это разные вещи и используются по разному. Первый кастит в rvalue вообще все - значения, правые-левые ссылки, даже небо, даже аллаха, а forward левые (обычные) ссылки скипает . Поэтому их используют в перфекте - при T пропихнуть дальше как T&&, а T& оставить как есть.
Насколько я знаю вывод в консоль довольно медленный. Можно ли как то продолжить выполнение программы не дожидаясь вывода в консоль и не используя потоков?
подскажите как правильно заворачивать вместо delay в millis()есть много веток которые должны работать либо паралельно либо последовательно, + есть данные с датчика которые должны выводится постоянно а delay дает задержку