Это копия, сохраненная 4 сентября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Ответы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/
Прошлый: >>1423580 (OP)
Пишу:
imageLabel->setPixmap(QPixmap::fromImage(currentFile.toImage()));
imageLabel->resize(2 * imageLabel->pixmap()->size());
А ему поебать, все равно рисует картинку такого же размера.
Ну ты говоришь, что программа не работает. Но ведь она работает - запускается, что-то делает, завершает работу. Другое дело, что ты написал какую-то белиберду и ждёшь, что она будет работать так, как ты хочешь, а как ты хочешь - неизвестно, ведь ты не написал.
что ты сделать то хочешь? раздели каут на два стейтмента, ты видимо думаешь что они не в том порядке вычисляются, как в реальности.
https://ideone.com/UF8yYI
отключать отключать антиалиасинг при рисовании, очевидно. делается командой antialiasVyklyuchit();
Что попробуй? Я прошу мне объяснить алгоритм, как это делается?
всё просто же. вот с этим алгоритмом можно даже не отключать антиалиас, он специально для сетки:
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);
}
Это в directx?
а хотя не, тебе же сетка "границ" пикселей нужна, я обчитался. тогда нужно нарисовать линию по вертикали между каждым пикселем в видимой области и линию по горизонтали и получится сетка.
Спс.
Еба, я только сегодня читал у Александреску о том, что аргументы функции вычисляются как компилятору будет удобно, но сейчас смотрел на проблему анона и не думал, что для нескольких операторов вывода будет такая же шняга.
А как тогда получается, это выглядит?
Вроде
operator<<(std::cout, stoi(str, ptr)), operator<<(std::cout, ptr);
Так должно быть?
operator, не гарантирует последовательность вычисления, как я помню. Но почему тогда вывод местами не меняется, если сначала второй operator<< вычисляется в его случае?
C c++17 перегруженные операторы имеют порядок выполнения соответствующий встроенному
Всё там нормально работает. Это я сам обосрался
Логика такая же как и a=b=c;
Идёт справа налево возвращая объект ostream пристыковывая его к левостоящему.
Ты уверен что тебе меню надо?
Я бы сделал тривью и два делегата, один простой, у второго внутри твоя вьюха.
Ну и моделями кормишь
>>37345
Так в тривью же требуется класс плюсовой, который будет данные возвращать. Как заполнять модель из QML? Я так понимаю тут конструкторы с параметрами нельзя вызывать, а за получение данных у меня отдельный класс отвечает. Может кто-то минимальный пример или псевдокод написать? какой же этот QML после плюсов непривычный
>Распараллеливание задачи
(если это возможно) на N ветвей (будь то использование потоков или
процессов) практически не изменяет итоговое время ее выполнения
Насколько я понял, это связано с тем, что много времени уходит на смену контекста выполнения и диспетчеризацию потоков.
Это сейчас актуально? Всегда думал что многопоточность = скорость, а тут такая вот хуйня.
Целую в пупочек, лапочка.
А с меню там вообще отдельная история. Они очень сложные и, особенно, если у тебя айтемы могут динамически менять размер, т.е., твои меню айтемы могут быть разного размера, то придётся костылировать навроде этого:
https://ideone.com/zOPXSx
Ёбся с меню, было дело. Не православно.
Не, размеры постоянные. Я вообще не понимаю, почему при таком пиаре и якобы развитии семимильными шагами в QML всё еще нет такой базовой хуйни как drop-down menu с нормально кастомизируемыми айтемами. Кстати заметил баг, что если использовать какую-то вьюшку в Combobox делегате то параметр closePolicy будет сбрасываться в значение 18 из 16 блять и по всей видимости активыми будут все сразу, из-за чего нельзя сделать меню с вьюшкой, при нажатии на айтемы которого вьюшка будет оставаться открытой. Если заменить на какой-нибудь Column то работает как надо. То ли я привык к виджетам, то ли QML еще реально сыроват
чот локов дохуа
>Я так понимаю тут конструкторы с параметрами нельзя вызывать, а за получение данных у меня отдельный класс отвечает
Там как минимум есть Instantiator и Component.onComplete.
Модели на лету я делал.
За динамикой следить необходимо. Сраный гц её не убивает
1) Почему люди ругаются на дополнительный проход компилятора и moc файлы? Разве это какое-то значение в рантайме имеет?
2) Почему сейчас более активно развивают QML а не виджеты?
Бочку делаешь?
1. Поцчему там все ругаются я точно не скажу. Со своего опыта:
- Надо делать постоянные клины и тд;
- Генерячку достаточно легко поломать, в контексте Qml, например приватный геттер на публичной проперти\приватный сигнал и тд. У QmlEngine происходит былинный отказ;
- Прочие неудобности связанные с генерячкой;
- Неудобство написания наследников QObject в cpp файлах;
- Ну и самое главное, что QObject классы не могут быть темплейтными;
2.
- Виджеты устарели и достаточно сложно костамайзятся;
- Формошлёпам, особенно с веб бэком, легче вкатываться в юай;
- Для меня, конечно, сомнительный плюс, но есть какой-никакой гц;
- Виджеты сложно портировать под мобильные платформы но тут я не уверен
3 раза в день, в субботу не делаю, в воскресенье - 8
Очевидно!
1) Где вообще нынче пишут на Qt кроме заводов ебаных с анальной проходной?
2) Про Felgo пару слов, пожалуйста.
3) Где взять дебаггер для QJSEngine?
4) Че там по эмбеду? Вообще возможно ли использовать Qt без динамической аллокации?
в такой тред только покакать ходить
1.
- Automotive
- Гейдевайсы, мыши, клавиатуры колошки там всякие и тд
- Разного рода плагины к фотожопам фл и тд
- Разных мастей юай, особенно если демоны\сеть есть и должна быть отдельная приложуха
- Медицина, забугорная
- проще по вакансиям поглядеть, это из моего опыта.
2. В душе неебу чо за хуйня.
3. Насколько я знаю у него нет дебуггера. QQmlEngine наследует JSEngine, а для него есть встроенный. Пик рилейтед. Отсюда есть два путя, либо использовать QQmlEngine для своих скриптов, что, тащемта, ок, либо, как вариант, присунуть встроенный qml дебуггер какими-нибудь бубнами для JSEngine. Тут я подробней не подскажу.
4. В эмбедедде Qt есть.
>Qt без динамической аллокации
Още сильно сумлеваюсь, процентов 80 дам, что нельзя.
>проще по вакансиям поглядеть, это из моего опыта
А там одни ДС1 и ДС2, без удаленки, или сосать хуй дальше на заводе. Эх хех.
>3. Насколько я знаю у него нет дебуггера
Эх, поэтому мы сидим до сих пор на QtScript, ведь никто не хочет прикручивать отладчик ручками.
Thank you, sir!
более подробно можно глянуть тут: https://doc.qt.io/qt-5/qtquick-debugging.html#qml-debugging-infrastructure
Учитывая, что qml способен жрат .js файлы, можно дебуггер натравить на твои скрипты, как это сделать нужно курить доку.
>ведь никто не хочет прикручивать отладчик ручками
Проще всего взять ваш пакован скриптов, засунуть в qml engine и радоваться жизни с дебуггером из коробки.
Можешь еще подсказать? Я вот создал модель, вроде всё работает, но передать в аргументы конструктора данные я не могу, заполняю модель в компоненте Component.onCompleted, но судя по дебагу вьюшка дёргает методы rowCount и columnCount, а первый у меня возвращает количество айтемов в массиве данных, который на момент создания модели равен 0 и соответственно нихуя не происходит. Есть какие-то сигналы что данные изменились, или способы еще раз инициализировать обьект?
Для начала покажи-ка код.
В прошлой эсомэске (ссылка на айдиван) я тебе показал сеттер, через который ты должен сэтить данные в модель:
>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 энтри поменялась, ну ты понел.
>заполняю модель в компоненте Component.onCompleted
Ты уверен в том, что это именно правильное место для сэта данных?
Каким образом ты получаешь данные, хардкодишь?
Да я дальше как-то сам наверное, разве что что-то очень сложное будет. Не люблю людей задалбывать. В любом случае спасибо, надо было сюда 3 дня назад писать, сэкономил бы время
Зачем ты на пике используешь Qt.binding и function(), когда можно написать просто color: твой_тернарный_оператор?
А что вместо него используешь?
по идее - ничего. Если очень хочется, то сделай функцию, типа:
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));
>работает
Пояснять?
>делоешь колбек на евент нажатия
>не работает
>ставишь дебаг НАЖАТО для евента
>всё работает
Эффект наблюдателя, не иначе
представьте, до сих пор есть люди, которые сами форматируют код и следят за количеством колонок.
Есть некий QNAM, и в доке написано, что он хэндлит в параллели 6 реквестов. Как можно поменять количество тхредов?
Это я к чему: с англиским просто, а в русском, финском и тп скорее всего буквы в таблицах не в том порядке что в алфавитах из-за букв с диакритическими знаками.
Если кому интересно.
Он не хэндлит 6 реквестов в параллели, он 1 хост выкачивает 6 соккетами https://code.woboq.org/qt5/qtbase/src/network/access/qhttpnetworkconnection.cpp.html#132
Самому QNAM похуй сколько потоков, он асинхронно долбится, так что тхреды для QNAM нахой не нужны.
Растягивает очко до колоссальных размеров и острыми углами причиняет нестерпимую боль.
Пишу свою модель данных в виде редактируемого дерева по канонам MVC, наследуясь от QAbstractItemModel. Данные отображаются в QTreeView. Теперь встал вопрос, что мне нужно некоторые ячейки раскрасить в определенный цвет. Где и как это реализовать, чтобы не нарушить MVC? Реализовать делегат, ProxyModel или еще что?
Так его давно добавили
Шаблоны чтоли?
configuration name: libcurl-vc16-x64-release-dll-ipv6-sspi-winssl
NMAKE : fatal error U1073: не хватает сведений для построения "..\lib\libcurl.rc"
Всем кастомайзом ячеек и прочего занимаются делегаты. Например https://doc.qt.io/qt-5/qtquickcontrols2-customize.html#customizing-combobox
Да, но вот я ее сейчас использую в методе MyModel::data(), что как мне кажется не есть гуд. Т.к. по идеи MVC, подобные "украшательства" вроде как должны делать вьюха или делегат (насколько я понял), а не модель. Или я не прав?
Йобанарота, делегат жи, какая ему хуй разница где хуйню свою малевать, первый семпл дал. В тривью такой-же делегат сунь и всё
... никакого Ада нет. Ну как же нет, когда ты работаешь в Аду? Не веришь - ну посмотри на последний вывод об ошибке твоего компилятора. Как же может венец творения, высшее создание Божие, работать с сущностями, имена которых занимают десятки мегабайт? Если твой язык такой продвинутый, такой прям весь свободный - что ж ты без костылей имя типа переменной в рантайме получить не можешь? Ты в Аду, сынок, ты не знаешь type erasure, у тебя нет рефлексии. Ты уже, голубчик, в Аду, из которого выход - только один, в JVM
вы, блять, че, шарами объебались? человек спросил конкретно за QTreeView не кумээльный тривью ебана, я ему ткнул в то, что ему и нужно было, хуле вы мне своими куикконтролзами тыкаете
в интернетах всякая муть с обфускаторами, чем-то там ещё.
накидайте методов, че кого, куда копать
>а нахо оно там нужно тогда? чем тебе это не часть модэл епта
Чё т вообще не понял тебя. Переведи на наш(с)
Creative gigaworks t40 series ii
Может, и не аудиофильские, но чистый звук, классные басы (если выкрутить) и есть джек для наушников. Живы уже ~6 лет, рикамендую.
Используем. Тимлид жив, зависимость есть.
если ты пишешь как пикрилейтед, то нет. а для нормальных людей есть кланг с дефолтными настройками. а если твои настройки не дефолтные, то твой форматтинг говно.
в данном конкретном кейсе - нет
Картинка супер. Теперь только так буду форматировать. Почти как в питоше будет.
в контексте форматтеров кланг это clangformat
Спасибо большое
vcpkg integrate install
> всё, что не умеет кланг-формат — ненужно
Ясно-понятно. Только проблема в том, что он не умеет почти нихуя. Его отличие от примитивного astyle разве что в том, что он умеет различать лямбды.
На Qt Quick кто-то пишет? Или только на них и пишут, а на виджеты уже похуй?
Чекнишь мой проект на виджетах? shorturl.at/avQZ9
Хочу узнать насколько говно у меня код, по десятибалочке, если можно. И дотягиваю ли до чуть выше джуниора, как думаешь?
Если работает - норм.
А кстати, gcc умеет в не-ASCII идентификаторы и с какими флагами?
Вроде в msvc раньше работало, можно было ЁПТАСКРИПТ на дефайнах запилить.
В голос с этого говна.
оно не так плохо, если писать на C++, используя Qt, т.е. без moc (verdigris это вин) и без всяких выблядков типа QtQuick.
А если писать на каком-то ебанутом диалекте С++ с миксом JS - это уже к С++ треду отношения не имеет.
начиная со стандарта с++11 в идентифакторах можно использовать "other implementation-defined characters" (пункт 2.11), что и позволяет, по сути, использовать любые символы юникода
исходники долны быть в юникод-формате, само собой
и, для удобства, нужен текстовый редактор, позволяющих легко вводить символы юникода, к примеру тот же емакс
и нужен шрифт, в котором есть прорисованы символы, которые будешь использовать (чтобы они красиво отображались, а не позицией в юникоде)
тогда можно будет делать идентификаторы изо всего что есть в юникоде:
http://xahlee.info/comp/unicode_emoticons.html
#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/ . При компиляции пустого проекта (инклуды на месте) все работает, но при попытке вызвать метод из либы для вк происходит пикрелейтед
Копмилятор занимает память у ОСи, и получает от нее указатели на участки выданной памяти, и создаёт в ней свою виртуальную индексацию поверх виртуальной адресации ОС. Если помимо РАМ используется ещё и ГПУ, то там вообще уровней 300 абстракций
Крестители, вкатываюсь, хочу знать, что выбрать из IDE?
Visual Studio или Qt Creator?
Почему большинство предпочитает Qt Creator и все на него так дрочат?
emacs
>Visual Studio
this
>Почему большинство предпочитает Qt Creator и все на него так дрочат?
Кто все? В нашей большой команде этим пользуются 2.5 человека, дрочащих QML.
Qt — кроссплатформенная библиотека разработки GUI на С++.
>Почему большинство предпочитает Qt Creator и все на него так дрочат?
Потому-что идиоты-хейтеры-микрософта.
Всё правильно, говно мамонта остается на говне мамонта. Ты бы еще удивился, почему тебе запретили заправлять современные машины сеном и управлять поводьями вместо руля.
У меня в QtCreator в половине случаев не работает дебаггер. Так что нахрен, пользуюсь чистым GDB под линуксом и VS под вендой. 98% дебага у меня под шиндусом.
Как познать GDB? Не смог дебажить наше приложение в проде, потому что оно мультитредное и спавнит дочерние процессы, а значит нужны какие-то ебические комбинации флагов. В VS на винде просто ставишь галку child process debugging и все работает как часы.
Cап, анон.
Как часто изпользуются ссылки и указатели в твоих программах? Только что прошел их, и не могу понять, в чем их смысл на практике.
>Как часто изпользуются ссылки и указатели в твоих программах
Всегда. Сиди перечитывай пока не поймешь. Это одна из базовых вещей, если ее не осилишь - можешь дальше даже не пытаться
У меня оба. Легаси на первом, новое формошлепство на втором. В плане удобства вс с решарпером лучше, плюс в вс есть т4, пока до программирования интерфейса не доходит.
Пример?
сколько времени стоит в человекочасах подготовить джуна на крестах? на hh требуют ХОРОШЕЕ ЗНАНИЕ STL
что они блять, под этим подразумевают?
Мимо-Зигодев
Часов сто-120 хватит. Т.е. около месяца интенсивного изучения по 3-4 часа в день должно хватить для джуна.
Она подключена. В output видно что он ее ищет, а ошибок нет. Я думаю что он находит. Пока писал нашел проблему. В curl разрядность 32, а у меня 64. Сейчас попробую у меня поменять
С компа не могу написать пока. Начало ошибки такое "unresolved external symbol __imp___invalid _parameter referenced to function "void* __cdecl и тд
Потому что до полноценного мидла не дотянул, очевидно.
- Структура\рахитектура на 3
- Вероятно необдуманное дипкопи и если для кьютовых классов это ещё норм из-за COW, то для своих неок:
void addGroupFromDb(Group group);
void setName(int id, QString name);
- Статика в Qt приложении (Qt классы лучше не использовать после того, как ивентлуп всё). Тут желательно синглтон с контролируемым временем жизти зделоть
И тд
Дед, уйди, заебал.
>- Структура\рахитектура на 3
>- Вероятно необдуманное дипкопи
>И тд
Ахуенно ответил. Вероятно тупа LE PERDOUNOOL V LU JU и тд.
P.S.: Либо пиши нормально и аргументируй свои предъявы конкретными примерами, либо уебуй нахуй. Жабоскрипт-тред в другой стороне.
Ну а в чем проблема?
Самый простой топорный вариант: зная количество элементов, проходишься по всем и первые три запихиваешь в один tuple, а остальные - в другой.
Вангую что-то вроде
[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]
Ты, маня, если та огрументация не нраиса - уёбуй нахуй, я своё время на полное ревью тратить не намерен. Всяким разным щенка в лужу пердеть - тоже. Своё мнение я сказал.
>>39690
Понимаю, поэтому с тобой я нормально общаюсь. В дух словах ты молодец, память не проебал, всё сделал более-менее ок. Следи за копированием, лучше планируй ну и далее по тексту.
>>39639 это другой анон и он молодец, понимает
if constexpr (std::tuple_size_v<TPL> > 4) {
(забираешь первые четыре)
} else {
забираешь все остальное
}
И как это будет работать, если tuple будет заполняться из потока или из файла?
Плюс там же нужно tuple<A, B, C, D, E, F> разбить на tuple<A, B, C, D> и tuple<E, F> - не знаю, справится ли с этим авто. С другой стороны, std::any должен съесть такое.
А ещё, как я понимаю, нужна рекурсивная функция, если на вход придет tuple с десятью элементами, чтобы вернуть в конце массив с несколькими tuple.
Спасибо за псевдокод, но это и так понятно. Реализовать-то как? Я чуть не лопнул пока думал.
Да это багор, у меня до этого аналогичная реализация и была с кучей тайпнеймов. Я думал можно как-то элегантно средствами языка все это дело развернуть. Нельзя все таки что-ли?
Вот я тоже на сиквенсы смотрю, но ничего не думается.
Из С перекатываюсь. Как же у вас тут сложно все.
Ну Си я достаточно знаю, решил подтягивать то, чего в нем нет. Вот шаблончики например. Всегда любил макродрисню, очень похожая тема.
Самый сильный, красивый и умный анонимус всех времен, благодарю от сердца. Алсо, это плагин какой-то элементы подсвечивает? Пойду тестировать код, от души.
Спасибо. Алсо, а std::tuple<ARGS...>&& tpl не запихать туда? И почему std::tuple_size не хочет работать?
Анон! Если ты еще тут, помоги. Всю ночь голову ломал. Новое условие к задаче - если во входящей 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, то я получу десятичное число.
Есть какие-нибудь удобные способы это сделать?
руками распарси
Аноны, нужно написать некий аналог команды tree, как работают с директориями труъ с++ разработчики?
Забыл добавить, что всё это под линух.
boost::filesystem
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)); });
Всегда так делай, если вызовов больше одного
Благодарю, анончик. Есть вообще специализированные книги/статьи по данной теме? Ибо пролистал пару книжек Страуструпа, там подобного очень мало.
Алсо, голая студия не хочет правильно код обрабатывать. Даже на std::tuple_size<decltype(tpl)>::value ругается, но по итогу все компилирует. Как правильно дебажить/смотреть в какой вид темплейты разворачиваются, если меня даже ide подводит? Решарпер панацея?
std::vector<std::string> *v = new std::vector<std::string>;
В этом же случае delete не освободит память, выделенную под сами строки? В этом случае придётся указатели на строки ставить и выделять память ещё и под них?
>Есть вообще специализированные книги/статьи по данной теме
https://www.amazon.com/C-Templates-Complete-Guide-2nd/dp/0321714121 - добро пожаловать. Сам осилил из нее где-то треть, мне хватает. но я и так много знал, раскуривал кучу статей и блогов в свое время, когда еще мечтал найти крутую работу
>Алсо, голая студия не хочет правильно код обрабатывать. Даже на std::tuple_size<decltype(tpl)>::value ругается, но по итогу все компилирует
Я голой студией не пользовался с релиза R++, по-этому мне тут нечего сказать. Вариантов украть решарпер - куча, я 2 года сидел на лицензии знакомого студентика, а потом мне на работе купили.
> Как правильно дебажить/смотреть в какой вид темплейты разворачиваются
Я не знаю какого-то суперспособа, кроме чтения ошибок компиляции. Недавно открыл для себя https://cppinsights.io - вроде прикольно.
Вообще, если я правильно понимаю, что использовал этот анон, то там свёртка - это вообще 17-тый стандарт. Мб из-за этого на tuple_size и ругается(хотя он есть в <tuple> в C++11). Попробуй в свойствах проекта включить latest или C++17 в C++/Язык.
в коде из C++17 фич только CTAD, фолды я сам не очень хорошо умею.
std::get<IDX>(tpl)... - это обычное раскрытие в вариадик пак, в С++14 точно работало
а, ну и иф констескрпы конечн
delete вызывает деструктор вектора. Деструктор вектора вызывает декструторы содержимого вектора.
Если бы у тебя бы вектор указателей - тогда да, пришлось бы руками чистить. А в твоем кейсе все ок
Ах да, в плюсах же есть множественное наследование. Тогда понятно что нельзя.
Да я имел в виду какой- нибудь встроенный кейворд типа this, только определяющий класс который от которого было наследование. Вот только что искал баг, оказалось что вызывалась функция на уровень ниже по иерархии наследования вставленная копипастом
Ты пытаешься в массив записать массив, в плюсах так не работает. Возьми string вместо массива char.
Сиговно типа char* - это не С++.
Если ты хочешь изучать С++ - используй высокоуровневые примитивы типа std::string, std::vector и тд. А потом уже углубишься на уровень "ехал указатель через указатель"
В чем экзистенциальный смысл писать auto вместо int в таком коде?
У size() беззнаковый тип size_t, деля int на size_t в роль вступают правила такого деления signed на unsigned: https://ideone.com/d4cHBl
Пиздец конечно ебанутое правило, по-моему должно быть наоборот, ансигнед должен кастоваться в сигнед.
Авто удобно писать если я вдруг параметр функции изменю с vector<int> на другой тип
>Авто удобно писать если я вдруг параметр функции изменю с vector<int> на другой тип
И что, от этого тип переменной step изменится? А если в рыло?
Благодарю еще раз, анон. Буду курить. За https://cppinsights.io/ отдельно плюс, то что нужно.
>Как правильно дебажить/смотреть в какой вид темплейты разворачиваются, если меня даже ide подводит?
metashell
https://pastebin.com/a7xWhaQg
че за сипараша? Может ты будешь в стиле крестов писать, а не писать сикод на крестах?
ну ты тредом промахнулся тебе в ситред
>Хороший код, давно занимаешься?
Ого, спасибо. Занимаюсь не так уж давно. Многое пришлось читать прямо во время написания.
> но выглядит реально как из 95 года
Похоже, всё из-за того, что ориентируюсь на знания из универа, книг и интернета, с "реальным" погромированием дел не имел, вот оно и устаревшее какое-то.
Все хорошо, но ты, видимо, читаешь какие-то старые книжки и какую-нибудь парашу вроде стек перелился, потому что по стайлу это выглядит как си код в спешке переделанный под кресты.
какие-то пойнтеры на СТЛ контейнеры которые в той же функции удоляются чего блядь. ты наверное хотел систайл арреи там использовать но опечатался
>алмановские скобки
а я думаю что я кручу-кручу а код не движется
ты дебаггером встал на строчке, которая еще не выполнилась, и в val мусор находится. На следующем брейкпоинте на твоем скриншоте значение будет валидным
Есть в классе указатель на вектор указателей другого класса(хорошее ли это решение - не знаю).
При попытке инициализировать его прямо в определении класса либо в списке инициализации в конструкторе, в итоге он nullptr. Пробовал и конструктор по умолчанию {}, и new std::vector<MyClass>, разницы нет.
Но почему-то после переноса this->container = std::vector<MyClass> непосредственно в тело конструктора все начало работать.
Почему так?
Нет, ты хорош, но если поставишь компилятор с 17-ым стандартом, то filesystem:: recursive_directory_iterator сделает все за тебя - нужно будет только на основании метода depth рисовать рамочку.
Давай код
Достаточно сложные для чтения конструкции с несколькими уровнями вложенности, когда приходится считать скобочки чтобы понять смысл написанного а код STL с их __Fwd_Iterator_Bd это вообще пиздец
Как сделать, чтобы CentralWidget в QMainWindow всегда располагался по центру окна, но при этом сам не растягивался на все окно? Alignment я внутри QWidget че то не нашел, хз как сделать. Неужели Layout-ы придется вставлять туда?
А они всегда нужны что ли, ебать? У меня просто виджет простой, с QLabel внутри, который представляет из себя пикчу. Ну и всякий код для управления этой пикчей. Куда там лэйауты то совать?
А с использованием лэйаутов как? Я пробовал делать, но у меня в итоге картинку стало растягивать на всю ширину экрана.
Короче, решил проблему, сделав центральным виждетом не свой йоба-виджет, а QScrollArea. А в QScrollArea засунул свой виджет. Вроде работает.
Сейчас очень нужны деньги, на стройку не берут, заучивать веб языки ну очень не хочется. Можно ли как-нибудь заработать на близком к душе C++?
Скачал уже скомпилированную одну из них, там dll и lib-файлы. И возник вопрос: что лучше использовать, чтобы проще было дописать подключение библиотеки под другую платформу?
Я думаю, под виндой брать dll и кидать в папку к экзешнику. Под линуксом, я так понимаю, достаточно присутствия .so в системе. Или я ошибаюсь?
Бля, я конечно диванный, но сомневаюсь, что хотя бы в ДС 1-2 реально найти, особенно в короткие сроки.
Соррян, неправильно прочитал, думал ты про удаленку.
>Копмилятор занимает память у ОСи
Нихуя не компилятор. Это сама ОС выделяет тебе память для твоего процесса, при его запуске. Насколько помню, в винде, при запуске проги, код размещается в одном участке адресного пространства, данные в другом участке. Программа, по необходимости, может запросить дополнительную память у ОС посредством системных вызовов (VirtualAlloc, вот это вот всё).
Дело в том, что в языке C++ не указывается, что из себя представляет память компьютера, как там всё устроено. Какой используется процессор, какая ОС (и есть ли она вообще). В общем - что из себя представляет платформа, на которой работает программа. Программы на C++ можно писать для самых разных компьютеров, процессоров, ОС. У тебя там x86, а у кого-то ARM или MIPS. У кого-то есть виртуальная память, а у кого-то её нет, и защиты памяти даже нет.
в этом году ожидаю повышение зарплаты до ~360к в месяц чистыми. Мимо крестосениор в ДС.
3 года капчевания, не меньше полутысячи постов в "войти в айти" тредах /b с тралленгом лалак
>на стройку не берут
ну да, если ты нищий и голодный, но больной и хилый, то самое то подумать о вкате в айти!
да еще и на удаленочку сразу
и на крестах чтоб
А серьезно если? Мне как ньюфагу интересно, сколько времени займет рост до такого уровня зп.
пятилетку программистом, и еще пятилетка просто ОЙТИ СПЕЦИАЛИСТОМ без кодинга
Все зависит от твоих стремлений. Если программировать каждый день, постоянно что-то новое изучать и прочее, то можно за год дойти до 100 тысяч зп на удаленке.
Можно просто делать работу и пить чай и за 3 года остаться на 40к в офисе.
Анон с зп 360к явно работает на зарубеж, на Финляндию или типа того. Я такой зп не видел, но предполагаю, что за 3-5 лет ее вполне реально достичь, если не лениться.
свежо предание
Для повышения образования я сейчас начал потихоньку разбираться в плюсах. Про указатели - кажется кажется понял. Вообще байтоебство это интересно. Но мне не понятно как пишут код на плюсах для допустим ардуино или еще какой нибудь платы
Там специальный компилятор который компилирует код в исполняемый файл понятный этой микросхеме? Сама плата программируется программатором?
мимо - пхп-макакий
>Все зависит от твоих стремлений.
от каких стремлений, епт? вот я хочу делать деревянные бочки для засолки огурцов, люблю свою работоу, каждый день делаю по бочке, самосовершенствуюсь, изучаю какие-то новые способы изготовления бочек, бля я самый настоящий мастер изготовления березовых кадушек! только нахуй это никому не нужно
точно так же и с программированием: вдруг оказывается что кодеры и нахуй не нужны, вернее столько много
бля хуйню написал, был не в себе, сорри за треш
2. И аналогичный вопрос при наследовании. Можно написать через двоеточие :Q(x*x), но если мне нужно перед этим что-то посчитать - то выглядит это ужасно, нужно создавать дополнительную функцию, которую указать после двоеточия и которая помимо возврата Q сделает необходимые действия. Уж лучше создать нормальную функцию _init() и вызвать её в обоих конструкторах в конце, которая будет вместо конструктора.
>>Все зависит от твоих стремлений
Скорее от организованности и умения ставить себе задачи.
Так то можно писать на запале по 6 часов в день, потом перегореть и забить на месяц-полтора, обнулив по итогу все.
А если дисциплинирован, и в момент упадка хотя бы по часу- полтора работаешь - то не потеряешь.
мимо-пхп-макакий
П.С. и вообще по моему ежедневная концентрированная работа/учеба по 4 часа, а потом абстрагирование от задач для занятий другими делами гораздо эффективнее чем циклы запал/угасание.
Тут вопрос глобальной привычки.
Ну так, что не так?
На работу никуда не берут, программирование - единственное, в чём я что-то понимаю.
> да еще и на удаленочку сразу
Я бы и не против с утра до вечера в офисе сидеть, да нету в моём посёлке городского типа ни одного офиса.
> и на крестах чтоб
Просто считаю его лучшим языком, от всех остальных хуёво становится. Понимаю, что он сложный, но я не прочь почитать пару-тройку книжек
Ну, я до всех трёх вариантов догадался.
Отвратительно, придётся использовать второй вариант, хотя очень не хотелось бы нагромождения каких-то одноразовых функций.
Считай с помощью аргументов которые тебе пришли и методов базового класса (только не виртуальных), тогда иниты всякие не понядобятся
Грубо говоря, у меня два конструктора, которые загружают что-то из файла и из памяти. И хотелось бы в конструкторе с файлом просто считать что-то из файла и вызвать конструктор с памятью.
Если это методы, то
И есть три стула.
1. Ctrl+C/Ctrl+V
Так а в чем проблема? Если они что-то общее делают, то выноси это самое общее в private метод с каким-нибудь охуенным названием
Сука, как оно отправилось?
Если это методы, то я просто в методе с файлом вызываю метод с памятью. И всё работает.
Но если это указатели, мне нужно или после двоеточия вызвать вспомогательную функцию, которая внутри себя откроет файл и вернёт указатель на данные. И всё это даже не в теле конструктора, что очень плохо выглядит.
То есть смысл теряется, если не использовать тот другой конструктор. Или я делаю init и вызываю его из обоих конструкторов, или я просто дублирую код. Никакого метода в базовом классе для загрузки из памяти или файлов нет, только конструктор. То есть можно сделать, но это тот самый init - нигде в клиентском коде не будет повторной загрузки из памяти или файла.
>Но если это конструкторы
Брр, ужас. Из-за случайно отправивщегося поста я стал очень быстро печатать полный ответ и допустил тонну опечаток и все мысли запуталсь. Простите.
Проблема чисто символическая и она в том, что конструкторы не выразительные. Если бы они работали как методы, это было бы намного юзабельнее. А так приходится в конструкторе вызывать какой-то посторонние методы, просто потому что один конструктор не может внутри своего тела вызывать другой, только метод.
> приходится в конструкторе вызывать какой-то посторонние методы, просто потому что один конструктор не может внутри своего тела вызывать другой, только метод.
Это нормально, ты просто не так понимаешь ооп
>Грубо говоря, у меня два конструктора, которые загружают что-то из файла и из памяти.
имхо, тут ты совершаешь ошибку проектирования
в таких случаях конструкторе нада именно что сформировать объект, перевести его в непротиворечивое состояние, так сказать
а всякие сложные заполнения объекта уже делать отдельными методами (типа вытащить много данных с файловой системы или из бд)
>Так то можно писать на запале по 6 часов в день, потом перегореть
6 часов в день - это минимум для промышленного кодера, те это тупо кодинг без коммуникации
и так будет продолжаться годами
Разработкой невозможно заниматься больше 4 часов в сутки, ибо это большая когнитивная нагрузка, которую почти никто не тянет (не перегорев). Остальное время сверх этого - шелуха типа перерывов на чай/кофе, совещаний и прочего ненужного говна.
Не, ну аннотации поверх крудов шлёпать можно и 8 часов.
никого не ебет
попадешь в тот же геймдев - будешь 10+ часов без выходных ебашить перед релизом на стимуляторах
Двачую. Монотонная хуйня, кода писать надо дохуя, все время кто-то сбоку ебет .
Хорошо, что я не промышленный кодер
То есть даже крупнее?
Точно. Благодарю, идеально, почему я не вспомнил про эту штуку.
>>42068
А вот это не компилируется, если что. "cannot call constructor '...' directly" или "cannot refer to type member"
>>41929
Может быть. Объект не имет никакого смысла без данных, потому мне показалось логичным в конструкторе сразу задавать данные и удалять в деструкторе. Не будет второй строчки загрузки в клиентском коде, и не нужно проверять во всех методах загруженны ли уже данные, на случай если кто-то где-то забудет.
>>42569
Вот бы питоновские f-string добавили. Специальный компайлтайм костыль именно для строк, которые компилятор развернёт в что-то нормальное. Прочитал про них и аж завидно.
>все тонкости имплементации каждой реализации
В этом нет нужды, достаточно знать две вещи:
1) Оптимизация и скорость там не на первом месте (и это, пожалуй, правильно)
2) Писали всю эту хуйню примерно такие же дебилы как и ты (и это, пожалуй, печально)
если я стану когда нибудь таким же дебилом, как имплементоры стандартной библиотеки например принципал инженеры из майкрософта с зарплатой в месяц больше, чем у тебя в год - я буду счастлив.
>примерно такие же
>если я стану когда нибудь таким же
Это вполне возможно и не очень сложно но лично у тебя не получится.
>зарплатой
Ясно.
там нет ничего сложного, не боги горшки обжигают, включи в той же студии (если ты под виндой) заходить отладчику в код библиотек и заходи в код stl время от времени, ну или просто открой его отдельным проектом
из заморочек, усложняющих код, там разве что необходимость соблюдать требования к безопасности исключений (которые прописаны в стандарте), плюс выделение ресурсов из аллокаторов тоже чутка усложняет
или глянь реализацию libcxx, она посвежее и пободрее других реализаций stl
Да нет никакой токсичности от этого клоуна, пусть еще веселит. Вангую красноглазого додика-студента, который сидит у мамки на шее (опционально работает говном за 20 тысяч), но он точно самый умный.
Ты скозал? В стандартной библиотеке всегда самые или почти самые производительные реализации разве что у какого-нибудь китайца быстрее чутка будет. Посмотри что-ли конференции с выступлениями членов совета стандартизации.
>самые производительные реализации
Вовсе нет, и это не в приоритете.
Безопасность, надежность - и только потом.
>у какого-нибудь китайца
У меня быстрее.
>конференции с выступлениями членов совета стандартизации.
Не нужны.
бля, какой же ты охуенный
пишешь код лучше яйцеголовых что клепают реализации stl, конференции не нужны тк ты и так все знаешь
>додик
Семантические свойства
Значение
жарг. гомосексуалист (в уголовном арго — молодой пассивный) В неестественно раскрытых совиных глазах Ястребова вспыхнули ржавые белки, в них металось безумие… Под ним бился молодой додик по кличке Снежинка. Л. П. Костомаров, «Десять кругов ада»
жарг. ирон. женственный, женоподобный мужчина И реально, что бы вы думали, из-за кулис выходит какой-то додик, тощий, в зелёных очках и с лысой головой, подходит к микрофону и начинает вещать что-то тонким, по-бабьи жеманным голоском.〈…〉Он очень томно растягивает слова, выпячивает губы и делает все эти педиковские ужимки, которые я так ненавижу. С. С. Минаев, «Духless. Повесть о ненастоящем человеке», 2006 г. (цитата из Библиотеки Максима Мошкова, см. Список литературы)
жарг. презр. или пренебр. хилый, ничем не примечательный человек Например, решит профессор закончить пару пораньше и для приличия спросит, всё ли всем понятно. Группа уже сложила вещички и ждёт предложения разойтись по домам, и в этот момент Борис поднимает руку и говорит: «А вот я не понял один момент…». В результате народ тоскует и томится, один лишь Борис внимательнейшим образом слушает и кивает головой. Чаще всего в процессе кивания у него появляются и другие вопросы. После проявления такого интереса к предмету преподаватели начинали его уважать, студенты называть додиком, а девушки не любить, несмотря на очевидную красоту. Эльвира Барякина, Анна Капранова, «Рыба в чайнике», 1999—2002 г. На прогулку во двор старейшей московской психиатрической больницы выпускали только с часу до двух дня и только самых спокойных обитателей. / — Маша, загоняй додиков! — кричала из окна второго этажа тётка в замызганном голубом халате и косынке. П. А. Астахов, «Квартира», 2010 г.
Синонимы
гомосексуал, гомосексуалист, педераст; разг.: гей, голубой, гомик, гомосек, мужелюб; устар.: мужеложец, мужеложник, содомит; устар., частичн.: малакия; книжн.: уранист, урнинг; эвф.: сидор; сленг: в теме, зайка, крашу ногти, сижу в окопе, тематический, яойщик; жарг.: ахтунг, барсук, василёк, васька, галя, гамадрил, гамаз, гамазей, гамак, гном, гобсек, говносек, голубарь, голубец, голубок, голубчик, голубь, гома, гомс, гомусик, двустволка, дирижёр, додик, дочка, дуплан, ермак, жоподрючник, жополаз, жопочник, жопотрах, заднепроходец, звезда, кентавр, котик, кьюр, маркоташник, мастёвый, мужиковед, папа, парафин, пед, педагог, педарь, педе, педерага, педераго, педеряга, педигрипал, педик, педр, педрик, педрила, педрило, педрильник, педруччо, педя, петух, пидарас, пидарь, пидер, пидор, пидорас, пидорасина, пидораскин, пидораха, пидорюга, пидорюжник, пидорюк, пинчер, половой демократ, пэдэ, рудокоп, руслан, субчик-голубчик, такой, темовой, тёпленький, тёплый брат, хали-гали, чебурашка, чичеряка, шахтёр, шкицнурик, шура; активный: акт, актив, активист, георгин, глиномес, говномес, дятел, кочегар, марксист, педикатор, печатник, печник, печной ящер, ромео, солидол иванович, топтун, трубочист, уважаемый, чужежопник; пассивный: акробат, ананаска, армянская королева, бархотка, валет, вафел, вафёл, вафлеглот, вафлёр, вафлист, вафло, гребень, дама, даша, дашка, жена, женива, женщина, жопа, жопник, козёл, козлик, козочка, конь педальный, кочет, манька, маня, маргаритка, маша, машка, моргалик, мурка, наташа, наташка, незабудка, округлённый, пассив, педер, педерасик, педермот, петюнчик, петя, пидовка, пинч, плашкет, подруга, пярну, санта-лючия, Светка, сестра, туз червонный, умница, универсал, шпидагуз, шурик, шурин; изнасилованный: обиженный, опущенный, проткнутый, петух, петушня, петушок, петяра, пятёра, пятёрка
Антонимы
Гиперонимы
Гипонимы
>додик
Семантические свойства
Значение
жарг. гомосексуалист (в уголовном арго — молодой пассивный) В неестественно раскрытых совиных глазах Ястребова вспыхнули ржавые белки, в них металось безумие… Под ним бился молодой додик по кличке Снежинка. Л. П. Костомаров, «Десять кругов ада»
жарг. ирон. женственный, женоподобный мужчина И реально, что бы вы думали, из-за кулис выходит какой-то додик, тощий, в зелёных очках и с лысой головой, подходит к микрофону и начинает вещать что-то тонким, по-бабьи жеманным голоском.〈…〉Он очень томно растягивает слова, выпячивает губы и делает все эти педиковские ужимки, которые я так ненавижу. С. С. Минаев, «Духless. Повесть о ненастоящем человеке», 2006 г. (цитата из Библиотеки Максима Мошкова, см. Список литературы)
жарг. презр. или пренебр. хилый, ничем не примечательный человек Например, решит профессор закончить пару пораньше и для приличия спросит, всё ли всем понятно. Группа уже сложила вещички и ждёт предложения разойтись по домам, и в этот момент Борис поднимает руку и говорит: «А вот я не понял один момент…». В результате народ тоскует и томится, один лишь Борис внимательнейшим образом слушает и кивает головой. Чаще всего в процессе кивания у него появляются и другие вопросы. После проявления такого интереса к предмету преподаватели начинали его уважать, студенты называть додиком, а девушки не любить, несмотря на очевидную красоту. Эльвира Барякина, Анна Капранова, «Рыба в чайнике», 1999—2002 г. На прогулку во двор старейшей московской психиатрической больницы выпускали только с часу до двух дня и только самых спокойных обитателей. / — Маша, загоняй додиков! — кричала из окна второго этажа тётка в замызганном голубом халате и косынке. П. А. Астахов, «Квартира», 2010 г.
Синонимы
гомосексуал, гомосексуалист, педераст; разг.: гей, голубой, гомик, гомосек, мужелюб; устар.: мужеложец, мужеложник, содомит; устар., частичн.: малакия; книжн.: уранист, урнинг; эвф.: сидор; сленг: в теме, зайка, крашу ногти, сижу в окопе, тематический, яойщик; жарг.: ахтунг, барсук, василёк, васька, галя, гамадрил, гамаз, гамазей, гамак, гном, гобсек, говносек, голубарь, голубец, голубок, голубчик, голубь, гома, гомс, гомусик, двустволка, дирижёр, додик, дочка, дуплан, ермак, жоподрючник, жополаз, жопочник, жопотрах, заднепроходец, звезда, кентавр, котик, кьюр, маркоташник, мастёвый, мужиковед, папа, парафин, пед, педагог, педарь, педе, педерага, педераго, педеряга, педигрипал, педик, педр, педрик, педрила, педрило, педрильник, педруччо, педя, петух, пидарас, пидарь, пидер, пидор, пидорас, пидорасина, пидораскин, пидораха, пидорюга, пидорюжник, пидорюк, пинчер, половой демократ, пэдэ, рудокоп, руслан, субчик-голубчик, такой, темовой, тёпленький, тёплый брат, хали-гали, чебурашка, чичеряка, шахтёр, шкицнурик, шура; активный: акт, актив, активист, георгин, глиномес, говномес, дятел, кочегар, марксист, педикатор, печатник, печник, печной ящер, ромео, солидол иванович, топтун, трубочист, уважаемый, чужежопник; пассивный: акробат, ананаска, армянская королева, бархотка, валет, вафел, вафёл, вафлеглот, вафлёр, вафлист, вафло, гребень, дама, даша, дашка, жена, женива, женщина, жопа, жопник, козёл, козлик, козочка, конь педальный, кочет, манька, маня, маргаритка, маша, машка, моргалик, мурка, наташа, наташка, незабудка, округлённый, пассив, педер, педерасик, педермот, петюнчик, петя, пидовка, пинч, плашкет, подруга, пярну, санта-лючия, Светка, сестра, туз червонный, умница, универсал, шпидагуз, шурик, шурин; изнасилованный: обиженный, опущенный, проткнутый, петух, петушня, петушок, петяра, пятёра, пятёрка
Антонимы
Гиперонимы
Гипонимы
>какой же ты охуенный
Без комментариев, потому что ярчайшая грань бриллианта моего характера - это скромность.
>В стандартной библиотеке всегда самые или почти самые производительные реализации
Ну такое.
Пример. Есть много точек заданных 8 float-ами, нужно удалить дубликаты. Я прикрутил туда std::unordered_map, и оно работало довольно медленно, 6458 мкс на 100к точек.
Мне стало интересно после твоего сообщения чем этот unordered_map занимается и я написал свой - все данные хранятся в цельном куске памяти (и "бакеты", и данные). Заработало где-то в два раза быстрее, но потом я нашёл ошибку и скорость стала лишь чуть-чуть выше.
Тем не менее вот этот говнокод: https://ideone.com/v6xbhx
На ideone что-то странное творится в rdtsc и clock - вот картинка с моего ноута. То есть для миллиона и особенно для тысячи моя штука работает ощутимо быстрее и лишь для десяти элементов моя фигня проигрывает, тому что там можно сделать оптимизацию, так как хеш-таблица не даёт выигрыша.
То есть первая же реализация от самоучки вроде меня без какого-либо опыта реальной работы оказалась не хуже реализации в std, при том что это первое что в голову пришло и я никогда не писал контейнеры или хеш-таблицы. Впрочем, допускаю мысль что я не умею пользоваться std::unordered_map и там нужно как-то по другому её использовать, чтобы она работала резвее.
>У меня быстрее.
В каком-нибудь синтетическом тесте с проебанными в нужных местах исключениями, из-за которых течет память
>Мне стало интересно после твоего сообщения чем этот unordered_map занимается и я написал свой - все данные хранятся в цельном куске памяти (и "бакеты", и данные).
Для этого придумали pool-аллокаторы, который у STL-контейнеров является шаблонным параметром.
>течет память
Ебать ты криворукий дурачок.
>исключениями, из-за которых течет память
Ебать ты жопоголовый дебилоид.
Начинаю понимать из-за кого на плюсовиков смотрят как на говно.
Подскажешь как прикрутить или что прочитать? Хотелось бы сравнить. Я бы предпочёл по возможности всё-таки оставить стандартный unordered_map вместо своего, но только если там не будет 30% разницы.
Я полистал, нашёл только какую-то pdf-ку, где какой-то некомпилирующийся allocator_adaptor на несколько страниц и потом к нему ещё сам аллокатор. Но, насколько я понял, оно в любом случае будет в разных местах хранить бакеты и данные, потому что тип стандартного аллокатора содержит пары.
да
Почему placement new в конструкторе ub. У меня есть указатель, отчего он становится хуже в конструкторе?
Наверное, spacer'ов забыл вокруг своего виджета добавить
Стандарт описывает 3 так сказать периода для объекта.
1. Что можно делать вне lifetime объекта и не при работе конструктора/деструктора.
2. Что можно делать во время работы конструктора/деструктора.
3. И во время lifetime.
В первом и третьем периоде понятно что будет при placement new, а во втором — нет.
чувак, ты задачу удаления дубликатов решаешь через использование хэш-мапов!1 да, блядь, похуй какой производительный мап будет при этом
тут уже вопросы не к языку с++ и его стандартной библиотеки, а к твоей базовой алгоритмической подготовке
Все доп.зависимости подключил.
ide - visual studio 2019
https://pastebin.com/J2UCJpt6
Я даун забыл написать glfwMakeContextCurrent(window);
Ага, я же самоучка, ни одной книги не прочитал.
Ну-ка, а как сделать быстрее? У меня 10кк элементов. То есть подходит O(n) или O(n log(n)) с хорошей константой, памяти же почти сколько угодно.
В голову приходит или сортировка с последующим тривиальным удалением, или хеш. А я не верю в сортировку на 10кк элементов.
>>43151
>встроенную операцию unique
Вот замер для 1кк. Там же ещё отсортировать его надо. По идее, unique можно прямо во время сортировки делать, если переписывать сортировку.
>std::unordered_map за 238412.367 мкс
>me::unordered_map за 159842.574 мкс
>std::list+unique за 478863.221 мкс
Для 10кк там уже в 4 раза разница.
бля, чувак, глянул твой код, ты там творишь лютую дичь: сначала делаешь find по ключу, проверяешь не найдено ли, а потом уже insert!
лол
это же unordered_map, почитай как она хоть работает, лол,
>а потом уже insert!
Действительно. Впрочем, было не слишком очевидно что оно возвращает ссылку на имеющийся/добавленный элемент, и на цифрах сказалось минимально.
Теперь в map и unordered_map у меня в цикле лишь insert
В list в цикле push_back, потом один sort и один unique
В vector один sort и один аналог unique
Всё верно?
Любопытно, что вектор перегнал все стандартные контейнеры на любых числах, вот уж не ожидал.
std::unordered_map<mm,tint,mm> kk(N);
ты задаешь количество сегментов хеша равным количеству вставляемых элементов
блядь, да почитай уже как контейнеры stl работают
>количество сегментов хеша равным количеству вставляемых элементов
Что с этим не так? Я попробовал выставлять больше или меньше и получилось хуже. Размер примерно в 7/5 от количества элементов на одних данных работает лучше (когда совпадающих почти нет), на других хуже - потому я оставил равный.
>почитай уже как контейнеры stl работают
Прости, я видимо очень глупый, но если три раза повторить что нужно почитать как работают контейнеры stl, то я всё-равно не пойму чего ты от меня хочешь. Я примерно знаю как работают контейнеры и прочитал что делают функции, которые использую. Ещё сейчас открыл "Стандартная библиотека C++. Справочное руководство" и не нашёл там ничего существенно нового в соответствующих главах, по крайне мере на первый взгляд.
вообще, твой код просто безумно плох, до него доебываться можно бесконечно, и это бесполезно
чего только стоит как ты сравниваешь вещественные числа..
просто пиздец..
они могут писать 500+ строк кода в день, считать себя охуенными, но при этом вообще городить в коде лютую хуйню
при этом им ничего не объяснить, тк тупо у них базы нет чтобы понимать
Толстота. Я уверен, что ты даже правильно производительность тестировать не умеешь. Кидай сюда код с тестами, посмотрим.
Я в курсе как их сравнивать. В данном случае они до бита совпадают, это не результат математических формул, где нужно с относительной ошибкой в 1e-7 сравнивать. Можно их хоть как int-ы сравнивать.
>>43460
Уверен, что довольно посредственная. Я уже обнаружил насколько неравномерно она засовывает данные в таблицу и несколько раз поменял. При этом хорошая функция слишком медленная, с ней один только рассчёт хеша для каждого элемента дольше, чем весь алгоритм с обсчётом 1-3 коллизий для каждого элемента с плохой функцией.
что не так, ублюдок?
недоучка, сравнивающий вещественные через == и делающий find перед вставкой insert в мапу
пнх, обсуждение закрыто
Написал скрипт чтобы тренировать свою способность складывать 16-ричные числа. Вроде всё работает, но если вдруг написать русскую букву, то уходит в бесконечный цикл.
https://pastebin.com/bPeK3K94
1. else if там нинужен. ты тестируешь на ровно противоположное условие. там должен быть else. а можно даже без else, так как там break есть.
2. русская буква у тебя остается в буфере и не может попасть ни в какую переменную. а так как у cin в буфере что-то все-таки лежит, то он не ждет ввода. поэтому нужно его чистить руками https://stackoverflow.com/questions/257091/how-do-i-flush-the-cin-buffer
3. continue там тоже нихуя не делает
SetConsoleOutputCP(1251). Но без толку. Что ещё может сработать?
>для пересыла в другую функцию
Ну и передай их в нужную тебе функцию вместо cout/printf, откуда я знаю что у тебя за функция.
Иди нахер, сам нихуя не знаешь, только путаешь и пиздишь. Без тебя справился. std::conditional_t мне нужен был.
Всегда подозревал, что в сфере C++ что-то не так. 41% долбоебов ВООБЩЕ не пишет тесты. Ну вы и уебки, пиздец просто.
А нахуя совмещать работу кодера и тестировщика?
> 41% долбоебов ВООБЩЕ не пишет тесты
> Картинка с юниттестами
Хорошо манюня. Попробуй подумать, какие еще тесты бывают, кроме юниттестов
мимо 0 юниттестов на небольшоим проекте, но тестовый пайплайн работает ~час
Манюнь, ты мне не манюнькай - у тебя пайплайн тестируется час и нет юниттестов. Это само по себе зашквар, чуть лучше чем тестить руками
да, все так. Только ты, судя по всему, не писал больших и сложных проектов, вот и несешь хуйню.
Если еще пару тысяч зеленых сверху шлепнут, то буду и тесты писать. А так нахуй надо. На каких вообще галерах требуют от прогера написание тестов? ООО Рога и Копыта?
Допустим, я скомпилил DLL'ку, и затем использую ее в своем приложении. Приложение компилирую на том же самом компиляторе, то есть никаких проблем, связанных с name mangling, быть не должно. Но если я поставлю какой-нибудь флаг компилятора, который влияет на размер объектов, то получится, что DLL'ка и приложение используют класс из одного заголовочника, но при этом разного размера. Таким образом, из-за одного флага уже рушится бинарная совместимость?
И можно это как-то предотвратить, если у меня уже есть сторонняя DLL'ка (написанная на C++, без всяких "extern C"), про которую я знаю, что она была построена на таком-то компиляторе, но при этом без понятия, какие там флаги использовались?
А что делать с DLL'кой от сторонней библиотеки, у которой исходники не распространяются, а только .h, .dll и .lib файлы? Обычно поставляется несколько версий для различных компиляторов и конфигураций. Например, я скачал с сайта версию для Visual Studio 2019, платформа x86, конфигурация Debug. Соответственно, чтобы использовать эту DLL'ку, мне нужно создать проект на 2019 студии и поставить там x86/Debug, достаточно ли этого? Есть ли гарантия, что при компиляции этой DLL'ки не использовался, например, флаг /Zp? Ведь мне тогда его тоже надо выставить
Если бы использовалось /Zp, то в хедеры бы заботливо прописали pragma pack, или что там. Я думаю, что тебе достаточно сделать именно то, что ты планируешь.
понял, спасибо
Скажите пожалуйста, при использовании remove(int i) для QVector-а индексы внутри него пересчитываются?
Ну то есть было, например, внутри QVector<int>:
i 1, 2, 3, 4, 5
n 10, 30, 40, 80, 70
i - это индекс, n - содержимое под этим индексом.
Делаем remove(4). Что тогда получится в итоге?
i 1, 2, 3, 5
n 10, 30, 40, 70
или
i 1, 2, 3, 4
n 10, 30, 40, 70
???
Бля, в Qt за полторы строчки кода не проверишь, там нужно ебаться с интерфейсом. А console application там у меня почему то не работает. Поэтому да, проще спросить здесь.
И нет ни одного тестого проекта с интерфейсом, где можно временно дописать эти несколько строчек, проверить, а потом стереть? Да не поверю.
Точно не знаю, но 99.9% что второй вариант. Не пересчитывать очень уж затратно.
Очень надеюсь, что второй вариант. С первым все пойдет по пизде.
Неужели так сложно прочесть?
remove не возвращает значение, значит - удаляет элемент без информации о нем.
operator[] принимает на вход 0 <= i < size(), значит, коллекция не разреженная.
Вывод: если ты из вектора размером в пять элементов удаляешь четвертый элемент, то пятый становится четвертым.
нахуй делать реализацию, отличную от std - хуй знает.
Спасибо, анончик. Просто делаю все в спешке и часто упускаю важную инфу.
Какой же этот синтаксис с [[хуйня]] нечитабельный, надеюсь что-то получше придумают
co_ebaniy_syntaksis
Искусный троллинг растоводов.
Мда, а я так стектрейса ждал :(
В текущем варианте в нее забиваются 4 исходных числа и она считает по забитым формулам нужные значения. Нужно сделать то же самое, но в оконном интерфейсе. То есть чтоб было 4 поля для ввода, и рядом выводились результаты. ОЧЕНЬ желательно встроить в это же окно небольшой статичный рисунок и верхнюю выпадающую панель (как обычно бывает - "файл", "правка", "инструменты", "справка..." и т.д.), где можно выбрать язык и вызывать справку.
В гугл ходил. Вариантов решения СТОЛЬКО, что глаза разбегаются, и везде пишут, что на С такое писать довольно сложно и нетривиально. Кроме С ничего не знаю.
Посему вопрос к вам: с помощью чего можно максимально просто реализовать такую задачу? Нет ли какого-то конструктора, в котором можно распихать кнопки и поля ввода/вывода, присвоив им определенные переменные? И с помощью чего такие задачи "принято" решать?
Я бы посоветовал QtQuick. Свой код на Си завернешь в С++ класс (сойдет простой копипаст) и сделаешь биндинги из него в QML (это делается за тебя, надо только пару макросов дернуть, очень тривиально, по гайдам разберешься). Используя экспортированные методы (это тоже очень легко), будешь потихоньку писать QML. Последнее -- самое сложное. Придется относительно много прочитать мануалов по компонентам на официальном сайте, но если не будешь прокастирнировать, справишься не дольше чем за неделю (да, даже если в первый раз услышал про Qt).
Ну и зачем квик советовать людям, который даже кьют не трогали? Если телефоны не нужны, то на виджетах это всё делается за +- пару часов, можно даже просто пример из документации скопипастить и своего добавить. А пока человек поймет зачем нужен Q_INVOKABLE и в чём разница Q_OBJECT от Q_GADGET еще не мало времени пройти может. Ну а для саморазвития пусть берет то с чем не работал
Залей куда-нибудь свой код и скинь сюда ссылку. Могу помочь с переписыванием на C++\Qt.
Виджеты устарели и ненужны. Так-то и на винформах написать можно, но почему бы не совместить (не)приятное с полезным?
Лол а на чем ещё интерфейсы делать? Шарп - только виндовс, на никсах только си и кресты, жаба - вырвиглазное говно для пидороа, электрон для червепидоров, ногтевой грязи, пустышек
Тут пол треда про qt, але. Бек на крестах, фронт на qml и обожи жаваскрипте в составе одного приложения.
А Шаред мемори тоже можно, но стоит ток если у тебя бек например в системе реального времени на выделенных ядрах.
Придется, правда, перенести проект с Си на кресты, но это вроде как лучше, чем делать гуи на одном winapi.
Господи, божественный <filesystem>
Плюсы для разработки может и не самый удобный язык хотя с учётом qml я бы с этим поспорил, но для пользователя со слабыми устройствами будет заметна реальная разница. Вот тебе скрин с гитхаба, где чувак просто написал спасибо, за то что разработчики не на электроне писали.
Неужели qt настолько хорош? У меня пустое окно Может одна кнопка была . Не помню весило 30 мегабайт (оперативки)
В дебаге тестировал? Я на телефон пишу приложение расписания для вуза с разными финтифлюшками и анимациями, память отьедает только когда отрисовываю таблицу в 50к пикселей шириной и то там оптимизаций много. А так за где-то час использования метров 5 если телефон правильно ее измеряет. Да и как выше ответили, на никсах у тебя собственно и выбора то нет.
Я тру крестобоярин и мне не нужен обосранный QT в котором я плачу абсолютно за все.
Да.
>>44714
>>44718
Ого сколько ответов,даже не ожидал.
Почитав еще, скачал VS и стал делать через Windows Forms. Как-то все там очень странно...
Думал, что сейчас в имеющемся коде перепишу названия переменных (скажем, ввод был в переменную R1 - теперь же TextBox1), а начало подсчета выведу через какой-нибудь if с условием в виде нажатия кнопки. Ага, щас.
Код кидать не буду, постараюсь сам сделать. Или нафиг брошу, циферки в консоли и в окне программа пишет абсолютно одинаковые.
Хелп анон.
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 загнать два первых значения. Что-бы в битовом представлении они стояли друг за другом. Как это в с++ сделать?
error: cannot take the address of an rvalue of type 'uint16_t ' (aka 'unsigned short ') type = &(uint16_t *)buffer;
На этой доске работает тег code, чё вы им не пользуетесь?
[code]
auto * myPtr = getPtr();
[/code]
THX Anon
>только без вагонов говна в придачу
Как нарисовать кнопку без qt?
Я другой, и я умею через winapi, но это довольно неудобно, некроссплатформено и даже цвет по нормальному не поменять. И ещё я могу написать вручную, но это ещё подумать нужно, что неубоднее, winapi или ручная отрисовка через тот же winapi.
> Вот тебе скрин с гитхаба, где чувак просто написал спасибо, за то что разработчики не на электроне писали.
За что разработчики назвали его инвалидом.
да не обозвали, а тегнули ищью как invalid. а тамбсдаун и конфюзд реакции от двух залетных жаваскрипт-детей, которые в телегу даже не коммитили
хули всё так через жопу??
ты качаешь либу, которая ссылается на файлы из другой либы, которую ты качаешь с оф. сайта, которая ссылается на свои собственные хэдеры, которых в ней НЕТ
это что блять за ебанутая система?? мне по кусочкам в интернете собирать это говно? серьезно?
я имею ввиду, это так и работает или я долбоёб?
организовать прием нескольких параметров с веб-интерфейса через веб-сокет. в данный момент, по сути, запилить просто маленький недосервер, с дальнейшей передачей они там сами пока не в курсе, лол
Двачну вопрос. Вот я захотел написать проект. Для этого мне нужна либа1 и либа2. Как мне по-быстрому их интегрировать в свое окружение?
К сожалению, стэк технологий (тм) определен не мной.
Алсо, вопрос то был в другом: такая ебля с либами и путями - это нормально (eclipse, если это важно)?
А подробнее? Я из шарпа качусь, там две кнопки нажал и все в проект само установилось и настроилось. Тут также?
Погуглил. Мне это отдельно надо устанавливать или оно уже в студии где-то есть?
иди вместе с конаном в петушиный угол, или в кровавый интерпрайз. Лучше вцпкг для домашних проектиков нет вообще ничего.
ты 1 раз ставишь вцпкг, 1 раз его интегрируешь (почитай ридми на гитхабе блять), и после этого все, что ты устанавливаешь в вцпкг доступно всюду и везде
Я б по быстрому поднял QWebSocketServer, но вам виднее.
Долго и нудно? У тебя две либы. Не вижу сложностей распаковать два архива и вставить четыре строчки в проект.
360x360, 0:56
Я пытаюсь запилить клон фотошопа. У меня есть основной класс QMainWindow и дополнительный класс LayersWidget, который я собираюсь запихнуть в правый тулбар. LayersWidget отвечает за слои, в правом тулбаре должен отображаться список этих слоев с миниатюрами и названиями слоев (как в фотошопе).
В шаблоне Model-View есть модель, представление и делегат. Я собираюсь использовать табличное представление информации, в одном столбце миниатюра, во втором название.
Ну так вот, что из всего этого будет Model, что - View, и что - делегат?
Пока думаю так: Model внутри LayersWidget, View в QMainWindow, а вот насчет делегата пока не совсем понимаю, что это и как это должно выглядеть.
А не является ли все это оверкиллом в данной ситуации?
А делегаты?
А насчет оверкилла что скажешь? Не кормлю ли я мух пиццей флорентиной?
Разделение на три h-файла (там классы взаимодействуют, изменяемую часть нужно вставлять где-то в середине) не помогло, или я как-то не правильно их разделил. Причём, там вроде бы нет ни шаблонов, ни какого-либо сложного наследования, суммарно кода на 3к строк, не более, я не понимаю почему оно так урывается. И это даже без -O2.
То-есть подсчитать количество непрерывных серий из 0 и непрерывных серий из 1.
И запомнить расположение этих серий.
Кто-то знает ответ?
[code]
unsigned char* buffer;
buffer = new unsigned char[10000];
//Заполняем buffer всякой лабудой. buffer заполнен.
//???? тут надо посчитать серии.
delete[] buffer;
[/code]
Ты че, цикл не можешь написать?
Пишешь функцию доступа к произвольному биту, потом ищешь последовательности 011 и 100, ну и края отлельно.
Используй std::bitset
нахера, когда можно сделать vcpkg install?
Тогда странно. Обычно MSVC тормознее. Может у тебя зависимости там какие-то. Лучше в любом случае хидер по отдельным файлам разнести, и оставить там самый минимум. Например, можешь имплементации в отдельные файлы вынести, и инклудить их в cpp.
>Причём, там вроде бы нет ни шаблонов, ни какого-либо сложного наследования, суммарно кода на 3к строк, не более, я не понимаю почему оно так урывается.
Причем тут это, если как я понял от него зависит первый большой сурс файл, который так долго каждый раз и перекомпилируется?
Двач сожрал звездочку, успокойся.
Тут все дебилы по определению.
Это ж двач, помойка интернета.
>от него зависит первый большой сурс файл
Не знаю. Изменения в любом 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
У компилятора по ссылке там наверное оптимизации (например заменяет data.size() на SIZE). Можешь сам явно такую замену сделать, или объяви BUFF как статическую константу, также как и BUFF.
> объяви BUFF как статическую константу, также как и BUFF.
имелось ввиду "объяви BUF_SIZE как статическую константу, также как и SIZE."
>Ты не понимаешь что такое std::array
Это да, но все же.
Какой из компиляторов себя правильно ведет?
>Замени на векторы
У меня не продакшен. Курю книжку по алгоритмам.
Так-то и всей книжкой можно жопу подтереть в пользу STL.
> Какой из компиляторов себя правильно ведет?
Они оба правильно, просто один достаточно умный а второй ни очень. Попробуй может с начтройками оптимизации в студии поиграться, для тестов.
Наверное стоит 17 стандарт врубить, там вроде constexpr в stl завезли
Студия верно все делает.
Статический массив выделяется на стеке и размер должен быть известен до компиляции. Тем более тут размер - это аргумент шаблона, они тоже вычисляются на этапе компиляции. А когда это не constexpr функция, есть вероятность, что ты в нее можешь передать что-то, неизвестное на этапе компиляции - вот тебе и ошибка, чтобы ты потом не выстрелил себе в ногу, когда будешь размер массива вводить через консоль.
Ты можешь использовать vector вместо array, суть изучения алгоритма из книжки не изменится.
А можешь закурить operator new или умные указатели, тогда тоже получится.
> что ты в нее можешь передать что-то, неизвестное на этапе
В ту функцию можно передать только массив конкретного, известного при компиляции размера.
На что указывает число 32 в названии?
Ни на что, эта функция отлично работает на х64 и видит 64хбитные процессы
Продублирую также сюда.
Здравствуй, погромач.
О себе, в ВУЗике кодил на крестах,есть вышка тех.вуза,26 лет, 2 года работы в тех.поддержке.
Понял, что очень сильно хочу писать программы для бизнеса, а точнее для бирж. Боты, программы и т.д.
Недавно занялся трейдингом(2 месяца), и даже достаточно успешно. ДС, сижу на шее у мамки, ввиду трейдинга зарабатываю где-то 100 баксом в неделю,что хватает на жизнь и двачевание. Сейчас я сижу и читаю про всякие генетические алгоритмы и прочую сложную финансовую еботу и понимаю, что это моё. Итак,есть два стула- оба стула ведут туда,куда я хочу( в разработку ПО либо на node.js либо на крестах)
На одном кресты точеные, на другом фронтенды дроченые.
Первые два курса я учился, и учился неплохо и даже обучаем, раз смог закончить, но всё таки я положил хуй из-за преподов и лени на кресты.как я понял, что на ноде,что на крестах ебашат софтину для финансового сектора. Поэтому я буду учить что-то,либо кресты,либо ноду,так как время и силы и желание есть- нет только понимания.Оба языка на мой взгляд учить около 2-ух месяцев жесткого вжоба по 15 часов.
Я пришёл за советами мудрыми, двач.
Зашел я такой на ХХ и увидел,что там не особо много вакансий для junior.
1)Куда легче вкатится на позицию junior ,учитывая то, что С++ не дает много позиций, а фронтенд переизбыточен?Т.е. во фронтенд хотят все,слишком много ебучих джунов,никому они не нужны.
2)Что в итоге,учить дольше на джуна?
3) Что в итоге чаще используется в реальном продукте для финансового рынка- С++ или JS с его диалектами?
Если кто-то работает в где-то -может кто-то рассказать, на чём вы пишите и что конкретно делаете.
4) На С++ работы много, но там требуется от года, т.е. не джун, а миддл. Есть ли возможность скипануть как-то год, посидев где-то в опенсорсе и пописав просто за еду/опыт?
5) есть ли компании,которые берут вот совсем за еду, но чтобы блять у меня была ебучая запись в трудовой, о том, что я не олень. Как их найти?
Неужели нет нормального автоформаттера для QML? Я должен код руками форматировать что ли? пиздос. а qmlfmt из аура не собирается потому что кто-то обосрался с cmakeом или у меня слишком новая версия мне что руками его конпелировать блядь.
Enjoy opensource
Hft это либо кресты, либо раст. Но нодомакакой устроиться в разы проще да
По замыслу - да. По тому, как она написана - нет.
>Как устроен класс string? Он работает по типу "Заносим входные данные в temp массив, копируем в динамический" или как-то по другому?
Короткие строки пишутся прямо в экземпляр класса, поверх данных, для длинных - аллокация.
читаем то, что дают, аллоцируем новый массив, если старого недостаточно - копируем туда
но на самом деле все сильно сложнее
Тут ничего, ты возвращаешь ссылку на чар, что уже как минимум затратно для малых типов. Далее, если ты результат функции сохранишь для дальнейшего использования, а твоя строка будет уничтожена, у тебя будет ссылка на хуй пойми что. Если бы вернул просто чар, то он бы сохранился и делай что угодно.
>premature end of file encountered
Что делать, кто что подскажет?
Так, в том то и дело что совпадает.
Скорее всего неправильно заполняешь хедер.
*я не понял
Кидай код.
Может, хэдэр неверно записываешь или мусорные пиксели не так воспринимаются.
Пикча с шириной % 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);
Как побороть это?
deleted не для этого.
В private секцию перенеси все. Во всяком случае, Саттер и Александреску именно так и советуют.
Либо простое распиздяйство, либо часть процесса по выпиливанию того, что не совместимо с новыми виндоусами.
На любой форум. Мог бы на двач залить, сказав бы "гляньте какой я крутой код написал". Тебе бы сразу 100500 недостатков нашли бы
Да хоть сюда. Вот пример.
Смотрите, какой я хуевый код написал. Перепишу на кресты - вообще от убогости охуеете.
ну, можешь сначала по байтам шагать
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, и т.д. (реализация побитовыми сдвигами, естественно)
ну и.. ты понел. Пока ты думаешь, комп уже давно бы все варианты отработал
Вот о чем еще подумал: мне надо будет отследить значение переменной. Вот это самое сложное наверное. Мне ее размер знать нужно. Допустим я смогу как в cheat engine отследить последнюю операцию, изменяющую эту переменную. Можно ли отсюда узнать размер этой переменной? Посмотреть сколько бит, например, move копирует в ячейку памяти и узнать размер переменной. Может ли быть такое, что переменная занимает 16 бит, а для ее изменения программа перезаписывает не все 16, а , допустим, нужные 9.
КАРАСИК название выбирали на дабл
https://ru.wikipedia.org/wiki/Алгоритм_Ахо_—_Корасик
Если не выебываться, лучше обычным перебором. Один хрен больше 8 итераций во внутреннем цикле не будет.
А если массив плотно запакованных 12-битных значений? А если big endian? Не все так просто...
Так-то да. Хотя здоровый человек не будет экономить 4 бита на значение (с минусом к скорости доступа), если только их не миллиарды. Тут могу проебаться, но endian должен совпадать, т.к. обе программы в одной среде выполняются.
Короче, случаи разные бывают, затачивайся хоть под 13-битный float, если надо.
int (ЗВrf)[7]= &arr; где arr = массив из 7 элементов
Собственно, если это указатель на массив, то почему звrf выдает какие то рандомные числа? И вообще, чем эта запись отличается от int *rf=arr; Которая выдает нормальные числа.
Потому что если arr в выражениях то же самое, что &arr[0], это еще не значит, что arr != &arr. У тебя нет отдельного указателя на этот массив, чтоб сделать указатель на указатель. У тебя есть только сам массив, и его адрес, с которым связано его имя, для конпелятора такая же относительная константа, как и адрес любой другой переменной.
короче, смотри
int arr[10];
int ∗ptr = arr;
ptr - адрес первого элемента arr,
&ptr - адрес переменной, которая содержит адрес первого элемента arr.
Ты можешь передать указатель на указатель какой-то функции, чтоб она его поменяла, но не можешь передать &arr таким образом, чтоб после вызова arr ссылалось на другой массив, логично ведь. Потому что выделением памяти под arr и определением адреса относительно текущего фрейма в стеке заведует конпелятор.
Конпелятор не выделяет для хранения этого адреса отдельную переменную, он сам этот адрес каждый раз подставляет (lea ..., [rbp + смещение_массива_по_текущем_фрейме])
Знаешь, в физике есть такой метод "анализ размерностей". Это когда если слева от = метры, то и справа должны быть метры, а не килограммы, иначе это не выражение, а хуйня.
Давай подумоем, какой тип имеют 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
У меня уже давно такое чувство, что половина вопросов в треде от каких-то скриптодетей, неспособных осознать само понятие типа данных. Зачем, лучше на двачах спросить, где звездочку поставить.
так и есть, распидорасило
test, блять
`int ()[7]`
`(rf + i)`
`int`
`int a = (rf); // == ((rf) + i)`
>((rf) + i)
((rf) + i)
[code]((rf) + i)[/code]
&a - адрес a; А где хранится этот адрес? И где в таком случае хранится адрес адреса?
Вот именно, что адрес адреса нигде не хранится, поэтому при взятии адреса массива ты получаешь тот же адрес первого элемента. Для фокусов адресами адресов надо делать отдельный указатель, и с ним уже играться хоть в попу.
>У меня уже давно такое чувство, половина вопросов в треде от каких-то скриптодетей, неспособных осознать само понятие типа данных. Зачем, лучше на двачах спросить, где звездочку поставить
А у меня такое чувство, что книжки по C++ пишут те самые скриптодети.
Книги по С++, не буду их перечислять, но они считаются топовыми, объем 1000-1300 страниц. И, блядь, нигде толком не описана такая базовая вещь, как синтаксис объявлений. Везде дается только интуитивное представление о самых простейших случаях.
Ну почему? Почему вы cout называете каут, а не сиаут? Clang у вас это клэнг, а не силэнг. Постоянно с этого охуеваю.
а теперь посмотри какое-нибудь выступление Чендлера Каррута, и послушай как он произносит, гений.
Сиаут, кланг. Силэнг это Си.
Алсо, всем джавистам и растоводам, которые тихонько сидят итт, посвящается: https://www.youtube.com/watch?v=LZflL44SVVY
С++ лучший язык программирования. Ноудискасс.
А создатель gif произносит его как джиф, хотя и расшифровка сокращения и грамматически оно произноситься как гиф. Вот только нормальным людям похуй.
Почему, если я ввожу в консоль 3.51, то в переменную типа float записывается значение 3.50999999?
Зачем вообще такое поведение нужно?
Буду благодарен, если подскажете термин для гугления этой особенности.
Всё, нагуглил, спасибо.
template <typename U>
TreeNode(U&& value) : m_value(std::forward<U>(value)) {}
Как определить отдельный copy(move) конструктор для него? Обычным способом то он продолжает пытается инстанцировать шаблон.
Алсо где перекат?
return {}
return T{}
return ()
return T()
???
Куда ты блядь собрался perfect forwarding пихать? Ты один хуй копируешь, зачем тогда эти ебанутые конструкции?
Привет. Существуют ли анализаторы кода, но не те, который выдают потенциально опасные места, типа не юзай здесь tie, поставь const бла-бла-ла, а который занимается тем, что следит за количеством пробелов и расставлением {, например и так, чтобы он подстроился под мой стиль? То есть почти любая idea ставит за тебя скобочки, которые могут неприятно подъебать, visual studio пробелы ставит после того, как ты напишешь ;, а вот готовый код отредактировать? Мб это есть в vs и я никогда на это не натыкался?
clang-format, линтеры?
В студии есть кнопка format document
Бамп вопросу. Актуально же не? Надо логгер какой-то пилить насколько я понял? Но как это правильно синхронизировать?
Ты чего нервный такой? Если не знаешь ответа на вопрос, то просто ничего не пиши и пройди мимо.
Ну тогда объясни, на кой ляд тебе сдалось обрабатывать ошибки в конструкторе? Либо не проверяй свои проверки до создания, либо после.
Ты угораешь? Конструктор для чего нужен? Чтобы объект создать. Как мне обработать "ошибку" при его создании? Возвращать null? А если я хочу знать, в чем конкретно проблема и получить какой-то статус?
Что такое зашито в твой конструктор, что он может отработать с ошибкой?
По-хорошему, он должен только инициализировать поля класса, остальная логика - в методах.
Потому что я не хочу использовать эксепшены. Логика в конструкторе связана с инициализацией объекта. Не писать же отдельно метод Initialize? Можно конечно, но я не хочу.
Причем тут исключения, я не о том.
Хочешь говнокод - пиши конструктор, который делает всё. Нахуй только тебе класс в этом случае, уж не знаю. Пиши как на си, круто же. Посмотри у winapi, охуенно ошибки обрабатывает.
Конструктор должен отработать быстро и, желательно, без ошибок, потому что зачем тебе выделенная память, раз твой объект невалидный?
А если тебе нужен контейнер этих объектов - ты будешь ждать три года, пока конструктор каждого объекта отработает, а потом ещё и проходить по нему в поисках ошибок, исправлять их? Интересный ты.
Я и пишу обертку над винапи. Вот я создаю в конструкторе объект через WinApiJopaInit, ОС вдруг ебанулась и выдает мне статус об ошибке. И что мне делать в таком случае?
>ОС вдруг ебнулась
Я понимаю, что был смысл об этом беспокоиться раньше, но не знаю, есть ли резон в 2019 об этом думать. А ещё не знаю, зачем писать обёртку для винапи, ну да мсье просто знает толк.
>И что мне делать в таком случае?
Что-что. Реинициализировать объект.
Только поэтому лучше иметь метод init, а не делать это все в конструкторе. Этот же метод и вернёт тебе код ошибки, в котором ты проверишь успешность завершения.
Подумай сам: если ты инициалируешь только поля твоего класса и последующий init падает/возвращает не ноль, то ты корректируешь его аргументы и вызываешь заново init.
А если твой охуенно хитрый конструктор падает, то тебе нужно все равно иметь такой же метод init с кодом, копирующим код конструктора для повторой инициализации. Либо ты вызываешь деструктор только что созданного объекта и создаёшь его заново, что тоже такое себе.
Делать фабричный метод.
Ругается на знак вопроса. Почему? numcmp и strcmp принимают ссылку int или ссылку на строку соотвественно
>numcmp и strcmp принимают ссылку int или ссылку на строку соотвественно
this.
В операторе ? аргументы должны быть одинакового или неявно приводимого типа.
А как тогда сделать? Надо чтобы в случае сравнения чисел функция принимала ф-цию сравнивающую числа, а в случае строк, сравнивающую строки.
В лямбду оберни
Обычная структура с перегруженным оператором >>.
Можно сделать свою и тоже передавать в любую функцию.
Снова отправилось само собой.
Можно написать то же самое для класса с конструктором без аргументов.
А если конструктор имеет какой-то аргумент, то как это записывается?
Если просматривать код можно просто перекопировав код в условный notepad++, то вот редактировать код с директивами в креатере категорически неудобно.
>>51061
Ну понятно, так я и сам могу.
Всё от Скотта Майерса
Хотя разобрался, без const нельзя будет воспользоваться функцией, если экземпляр класса константный. хотя зачем может понадобиться константный экземпляр класса
Это означает что функция не может изменять переменные класса.
Попробуй написать что-то реальное, особенно если есть современная мобилка. Для алгоритмов бери классику и ебашь.
Ну так я бы и хотел написать что то реальное, но что ? Мне бы какое нибудь шаблонное, но интересное задание с подсказками как надо, и при чем здесь современная мобилка?
Делай имиджборду.
Смотря что хочешь научиться делать. Можешь телеграмм бота какого-то полезного замутить я бота-хранилище написал, если какую-то конкретную технологию, скажем, QML, то сделай приложение с использованием какого-нибудь АПИ простой клиент ВК скажем, можно написать калькулятор для графов с гуем где ввод пальцами идёт, я ебу, сам придумай что-то под свои нужды.
Ай бля проебался, у тебя только начальные знания. Ну тогда выбери какую-то область сети скажем и изучи хотя-бы базовую теорию по теме, паралельно выполняя примеры из учебников/инета. Потом уже если почувствуешь силы начинай что-то более-менее серьезное писать
В ойти порядка 2.5 лет. Писал на джаве\дотнете\сейчас пишу на ГОвне. Заебал ебучий энтерпрайз, хочу в геймдев\3d вкатитца. Знаний математики\алгебры у меня нет.
После всего того, на чем писал, плюсы кажутся чем-то божественным. еще бы пекейдж- менеджер по- умолчанию, а не ублюдочные инклюды - и просто пушка. Сколько времени уйдет изучить тот же opengl/dx12/vulkan и иже с ними математика, геометрия? ?
И, собсна, главный вопрос - где учиться то, что читать ? Какой проект будет неплох, как пет- проджект ?
>После всего того, на чем писал, плюсы кажутся чем-то божественным.
После Явы и .Net переходить на кресте? Ну такое себе... Ахуеешь от того, сколько ысего придется хуярить вручную.
>Знаний математики\алгебры у меня нет.
>Сколько времени уйдет изучить тот же opengl/dx12/vulkan и иже с ними математика, геометрия? ?
Минимум 6 мес. на основы. Ядро геймдева - чистый матан. Линейная алгебра, матрицы, аналитическая геометрия, элементы комплЕксного анализа и кватернионов - это самый минимум, который тебе нужно будет знать. И это если не задаваться вопросом, кто будет писать графику/музыку/анимацию (иначе получится игра про квадрат на квадрате сидит и по квадрату стреляет).
>И, собсна, главный вопрос - где учиться то, что читать ? Какой проект будет неплох, как пет- проджект ?
Начни с учебников по типу "Высшая математика для экономистов". Затем попробуй пощупать, например, SFML. После - SDL. А там уже и до OpenGL и DirectX недалеко.
СДЛ нахрен не нужен, он ничем от СФМЛ не отличается, кроме си-стайл апи.
Алсо забудь про работу на плюсах, в энтерпрайзе только легаси говно и ёбля трупа Qt, геймдева в рашке нет, а тот что есть, весёлые фермы, не сильно отличается от энтерпрайза. Ещё и платят как веб-макакам, а ёбли больше в разы. Сбежишь обратно на джаву через полгода.
Хотя игровые движки велосипедить это весело, я вот все выходные провозился с ecs на темплейтах. Завтра на работе на ts хуярить я ненавижу свою жизнь
>Ядро геймдева - чистый матан. Линейная алгебра, матрицы, аналитическая геометрия, элементы комплЕксного анализа и кватернионов - это самый минимум,
Я бы еще заметил, что без численных методов в кампухтере оно не взлетит никак.
[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
Почему в первом случае используется %, а во втором - / ?
Известный трюк с хранением координат в одном числе.
Если есть матрица с шириной W, то позиция с координатами х и у: p= y*W + x.
Обратно соответственно x = p % W, y = p / W.
>почему в первом случае используется %, а во втором - / ?
Потому что случаи разные, не?
В одной цифре автор кода "зашифровал" два значения. Зачем? - хз.
>сакральный смысл строчек
Он сокрыт в массиве figures. Да и никакой он не сакральный. Это называется "соглашение". Прост автор в данном случае заключил соглашение сам с собой, поэтому другим нихуя не понятно.
Ты только что про него все прочитал. Можешь нарисовать на листочке прямоугольник 3х5, пронумеровать клеточки с 0 и ждать озарения.
Хватит этого муслима советовать. Он же ньюфаг вообще.
Пока думаю заебенить QPainter поверх картинки такого же размера и на него рисовать, только не совсем уверен насчет этого.
Может кто нибудь подскажет, как это сделать? Или хотя бы урок Qt-шный на эту тему?
вы хули не перекатываетесь?
Если кто может и не похуй/лень - отпишитесь, куда-нить закатимся - почта, дискорд, впашка.
>А ещё не знаю, зачем писать обёртку для винапи, ну да мсье просто знает толк.
Потому что я хочу писать на С++, а не на Си. Подсистемы у майкрософт настолько специфичны, что работать без врапперов с ними та еще боль.
Так в том и вопрос: нахуй написали MFC и ATL?
Времени разобраться в этом ты потратишь мб столько же, сколько будешь писать свою библиотеку, но лучше не напишешь все равно.
Смысл вопроса был в этом, а не "зачем не используешь напрямую winapi". Тащемта это пиздец и я вас так понимаю.
Бтв к тому вопросу: Саттер/Александреску, "Стандарты программирования на C++", рекомендация 72.
Так мне не формочки клепать. Хочу сделать обертку над новым апи, который только появился и прочими специфичными вещами, которых нет в стандартной библиотеке и бусте. Прочитал современные кодестайлы от всяких гуглов, в которых говорят, что эксепшены зло. Ведь можно реализовать какой-нибудь простенький логер ошибок, вместо того, чтобы кидать эксепшены.
Тогда пардон, зря агрюсь.
Хотя насчёт ошибок/исключений - все равно думаю, что если речь идёт об обычном коде, то мб есть резон в кодах ошибок - ходят же байки, что try/catch дорогие блоки. Хотя натыкался на инфу, что try сам по себе не несёт нагрузки, а catch только при срабатывании чего-то стоит.
А конкретно в конструкторах/деструкторах все же лучше постараться сделать гарантированное отсутствие ошибок, т.к. если один из них отработал - то отработал успешно с точки зрения логики, а иначе получается, что объект сконструирован и не сконструирован одновременно.
Да и в случае динамического полиморфизма лучше сделать виртуальный метод init и переопределять его, а не дописывать логику конструктора от наследника к наследнику. Все равно потом окажется, что в случае какого-то наследника не нужна будет часть логики.
Мне вообще недавно потребовался временный объект для хранения промежуточной инфы, в то время как мой конструктор коннектился к бд - пришлось переносить в отдельный метод.
Но если очень хочется - я бы сделал в родительском классе статик контейнер, в который пихал бы в случае ошибки в конструкторе указатель на ошибочный объект и код ошибки, чтобы проверять после создания все неправильные и исправлять их.
Быдлокод, но у меня других идей нет, как в этой ситуации быть.
Хочу написать какое-нибудь приложение с графическим интерфейсом и выбираю тулкит
>empty declaration
Потому что после них не нужна точка+запятая и он считает все от конца функции до нее пустой строчкой? Просто предположение, я только вкатываюсь.
#define UNTITLED3_SCREEN_H
#endif //UNTITLED3_SCREEN_H
Что это такое? Создается само при создании нового заголовка.
Надо найти min из отсутствующих элементов больше 0
т.е. {1, 2, 3} -> 4 {1, 3, 4} -> 2 {3, 4} ->1 и т. д. с минимально возможной сложностью
Include guards
лайфхак: итераторы обходят элементы множества по возрастанию
int F(set<int> const& s) {
int y = 0;
for (int x : s) {
if (x != ++y) { return y; }
}
return y + 1;
}
Чтоб исключить множественный инклюд используется эта штука. Есть еще вариант в одну строку #pragma once - что, ящитаю, гораздо лучше и удобнее.
> Антонидасы, хочу поверх [открытой] картинки рисовать точки, но при этом чтобы их можно было передвигать мышкой. Поверх - означает, что точка не будет рисоваться непосредственно на картинке, но точка будет видна на картинке. Типа такого элемента интерфейса. Как это лучше всего реализовать?
Смотря для чего тебе эта хуйня нужна.
Для самого быстро получения результата я бы взял sfml.
Там есть примитивы для разных фигур, в том числе и для окружностей.
Поэтому нужно было бы только заморочиться с кодом связанный с передвижением фигур.
Ну вот задачка. Генератор ид. Должен выдавать минимальный из возможных доступных, при этом они могут освобождаться. Сложность всех операций не больше логарифмической.
>Генератор ид
>Должен выдавать минимальный из возможных доступных
Почему бы просто не хранить использующиеся номера в векторе, а свободные номера (с индексами меньше максимального) в другом векторе/списке или дереве? Добавление нового id за константное время, просто взять первое число из второго контейнера, освобождение за логарифмическое (нужно вставить во второй массив в нужное место). К тому же std::set не слишком шустрый.
Наглядный пример студиядегроида.
Цмейк - не поверишь, цмейком и открывается, который выдает файлы для разных прог, включая студии.
Пишу в акельпаде, под мингв и линухи, мне збс без всяких умных подстановок скобок и завершения функций, которые только мешают.
Да линуксоиды совсем офигели со своими терминалами. Как мне проект то загрузить если здесь один .txt файл? Там в блокноте ни одной ссылки нет, откуда он докачивать файлы будет?
Совсем дебил? Еще раз: скачай cmake, запусти, ткни его ебалом в этот файл, конфиг, сгенерить, выбираешь свою студию, получаешь все готовое.
> Должен выдавать минимальный из возможных доступных, при этом они могут освобождаться
При освобождении сохраняешь этот айдишник.
Когда нужно генерировать новый, то возвращаешь его, при условии что он > 0, иначе генерируешь новый.
>Пишу в акельпаде, под мингв и линухи
Очередной пердоледаун, который не умеет в инструменты разработки.
я не буду тебя ни в чем переубеждать, по твоему тулингу видно, что ты либо студент, либо дебил, либо и то и то.
Ну же аноны, помогайте. Хватит ругаться.
>>52875
Если бы не std::set а своё дерево поиска, можно было бы решить иначе. В каждом узле дерева пускай мы будем хранить количество элементов в левом поддереве. Скажем, сейчас нода 4, мы левый потомок ноды 6. Значит, в нашем левом поддереве должно быть 3 элемента: 1 2 3. Если да, то спускаемся вправо, иначе спускаемся влево.
Когда спускаемся вправо у нас изменяется граница поиска. Например, если спустились вправо от ноды 4, нам нужно искать пропуски не от 1, а от 5. Но если при спуске вправо вычесть из всех узлов 4, мы снова получим обычное дерево.
Сложность логарифмическая. Вставки/кручения деревьями усложняются, но не очень сильно. За вечерок можно написать/отладить.
Такое чувство, что должен быть алгоритм попроще. Например, хранить список пропущенных айди в векторе/списке/whatever.
не, я пойду работать на свое рабочее место в топ контору с HQ в Америке, где все пишут в нормальной студии, а дебилы отсекаются за первые полчаса собеседования.
чуть больше 300к в месяц
Другой анон, но ЕМНИП нужно из Developer Command Prompt открывать (она есть в пуске, рядом в папке нужной студии)
> Хоспади, за что такой пердолинг, когда уже запилят единый удобный фреймворк, чтоб все из коробки работало?
Предлагай https://stdcpp.ru/
>Знаю, что в C++20 наконец-то переехала замечательная фича из Си "designated initialization".
Наконец то, чёрт возьми. Даже не джва года жду.
ByteArray такого вида, в общем по сути это CharArray они посылают 2 цифры и знак конца строки. Например 2.095645 1.345443 \n
То есть ByteArray[0] это 2, ByteArray[1] это точка, потом цифры, пробелы, знак перехода строки и все это повторяется, ну и все это обрывается, то есть в начале начинается с середины цифры и в конце обрывается на середине, а в следующем пакете продолжение.
Вопрос в общем, как из этого ByteArray забрать эти самые две цифры?
Не цифры забрать, а числа конечно же.
Пока то что я придумал это конвертировать ByteArray в string, удалить \n - знаки и забрать числа по splitу, но это как-то громоздко.
В общем вот так это все выглядит, я просимулировал, только размер в 4096. Какой best practice, чтобы вытянуть числа отсюда?
Это те что \n разделены? Ты че с питона вкатываешься? Читаешь символ в строку , пока следующие 2 за ним не \n, потом конвертируешь в число
А насчёт обрыва пакета - если не встретил '\n', то прерываешь считывание, приклеиваешь к потоку/пересоздаешь его и читаешь дальше.
Можно одним тредом считывать, пока есть данные, а вторым приклеивать новый пакет.
>функцию другого как дружественную
ты и должен указать, что это функция другого класса, а не прост функция:
friendly_class_name::friendly_func_name()
+ ты должен позаботиться, чтобы (частично) дружественный класс был виден в той области, где ты декларируешь дружбу.
Непосредственно проблемный код
Долбоёб, зачем ООП ломаешь? Ебало бы тебе отрезал, если бы на CR мне такое прислал
Что тебе мешает написать геттеры для своих полей? Эта хуета, что у тебя сейчас, нечитаема в принципе
А вообще, ты бы лучше сказал в чем проблема, а не выебывался.
Все. Разобрался
Тут рассмотрен случай, когда метод используется в функции и его можно вынести вниз. А в моем классе метод используется при определении вектора.
>А в моем классе метод используется при определении вектора.
А тебя этот факт не наводит на мысли, что ты изначально через жопу выстроил архитектуру своих классов\приложения, а теперь пытаешься всё это дело подпереть костылями?
В таком случае всё может произойти конфликт имён. Напишешь какой-нибудь свой min\max и компилятор будет ругаться.
>Зачем постоянно писать 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, сами каталоги отображаются/копируются, а вот их содержимое нет.
Да если вдруг cmake не лучший выбор, то подскажите, что лучше использовать для сборки c++ проектов в 2к19.
да копирвоание файлов я реализовал через cmake -E copy_directory, но как их отображать в дереве проектов, я досихпор ненаю
>отображались в структуре проекта
нахуя?
>копировались при запуске приложения
Какой-нибудь pre/post-build скрипт. Или как ты сделал, через смаке.
> По мимо исходников с++ у меня в проекте есть изображения, исходники шейдеров, вскоре будут еще 3д модели. Как с помощью cmake делать так, чтоб они:
> 1. отображались в структуре проекта
> 2. копировались при запуске приложения?
Зачем? Пускай он просто лежат в папке assets рядом с исполняемым файлом и всё.
Есть проблема, подробно изложенная в пасте
https://pastebin.com/RZKmSYnP
Если попытаться коротко. Имеется чисто виртуальный метод, который определяется в наследнике и методы с таким же именем, но разным набором аргументов, которые делегируют вызов виртуального метода.
Так вот, эти невиртуальные методы не видны в наследнике. Почему так? Где об этом почитать и как бороться?
Попробуй написать using A::Foo() в объявлении наследника
Ну и в продолжении своего поста >>54231
У тебя в классе А идет чисто виртуальная функция, которую ты тут же и реализуешь. Хочется спросить: дядя Петя, ты - дурак? На лицо же типичная проблема непонимания отношений наследования. И как следствие - косяки в самом построении/архитектуре твоей программы. Проще говоря - нечего лепить горбатого. Нужно делать по уму, как написано в умных книжках.
Дополню к предыдущим двум своим сообщениям чтобы было понятнее
Вот представь. У тебя есть базовый класс "Фигуры" и ты хочешь заебенить 2 класса-наследника: окружность и эллипс. И вот вроде бы они и похожи (круг - это частный случай эллипса), но площади считаются по-разному. И тогда ты делаешь свой базовый класс "Фигуры" - абстрактным базовым классом, добавляя туда чисто виртуальную функцию "ВычислитьПллощадь()" и уже в наследниках реализуешь эту функцию так, как тебе нужно.
Ну а теперь посмотри на свой пример. Ты в базовом классе хуяришь чисто виртуальную функцию и тут же какую-то ебань в виде обертки, чтобы ее же прямо здесь и реализовать. А дальше снова хуяришь функцию с таким же именем. И потом всю эту ебалу ты пытаешься передать наследнику, в котором... SURPRISE, MOTHERFUCKER ты пытаешь реализовать свой вариант этой ебаной функции. Спрашивается, ну нахуя, блядь? Что это, блядь, за индусский говнокод?
В visual studio
Ты сделал объявление
>class Screen;
Но к моменту
>Screen(24,80,' ')
Компилятор не знает ещё ни об одном поле класса
Выход - #include "Screen.h" в начало фалйа и убрать class Screen; в этом файле.
Ебусь с темплейтами, компилятор отказывается компилить из-за синтаксической ошибки, не могу понять, это я мудак или компилятор.
https://pastebin.com/LvHf5Nes
Причём если вынести Child наверх из класса Parent, то всё волшебным образом начинает работать. Я где-то забыл темплейтные параметры передать? Почему он ругается на распаковку темплейтов?
>child.template childDummyFunction<TFunctionParameters...>();
Что, как, почему это работает? 0_о
Спасибо огромное
И еще вопрос: если мне нужно найти подстроку в гигабайтовой строке с помощью карасика. Можно ли как то строку на куски поделить?
http://www.itmathrepetitor.ru/zadachi-po-programmirovaniyu/
но с ответами.
Везде вижу либо полторы задачки без системы на рандомную тематику но с ответами, либо вот как тут - куча задач на всю хуйню, но без ответов. Ответы - это же самое главное, одно дело высрать кучу говнокода и совсем другое узреть, как нужно то было.
Чтобы ответы на С++ были написаны соответственно.
Вот этот набор вроде ничего, но самая первая задача была понять, почему у меня не открываются выпадающие хуйнюшки "[+] Посмотреть код" по ссылкам. Мои хакерские навыки позволили мне понять, что на Фирефокс они не работают, если переходить по ссылке лефткликом и работают, если открывать ссылку в новой вкладке. Я бы объяснил как стать таким же охуенным хакером как я, но у вас энивей не получится нихуя, понимаешь? https://www.youtube.com/watch?v=yHtHSlnplYU
Спасибо
Есть две задачи:
1) Долбить одну апишку гет запросами - тут все вроде понятно, берешь libcurl и долбишь. Но есть ли что-то удобнее под linux / mac?
2) Добавить асинхронный веб сервер в свое приложение чтобы сделать из него сервис с json api. Вот тут уже сложнее - есть море велосипедов, половина из них либо не поддерживается либо пытается заимплементить Http с нуля - хуй знает что использовать. Есть ли тут опытные аноны? Пока присмотрелся к Pistache (но он по отзывам с реддита какой-то велосипедный) и к Boost.Beast (но боюсь что за ним придется тянуть весь буст, с которым я не работал).
Прошу советов мудрых
1. Куда тебе проще курлыка? Там 3.5 строки на весь запрос хватит.
2. Бери любой подходящий велосипед, с нуля хттп - а хуле ты хотел? Или тебе надо либу для либы? Буст не нужен.
> с нуля хттп - а хуле ты хотел?
Хотел как в дудке или пистоне - хттп в стдлибе, чтобы его поддерживали разработчики языка а не переизобретали васяны каждый раз.
>Или тебе надо либу для либы?
Возможно сущетсвует эталонная(тм) зарекомендовавшая себя (с) реализация хттп, которую можно использовать в своих велосипедах вместо тысячи васянских либ.
Ну как клиент - курлык норм, держит гору протоколов и все такое.
А вот сервер уже не настолько часто нужен народу, поэтому единственного истинного я не встречал. Да и вообще протокол не сложный, дешевле сделать свой с нужными функциями, чем искать готовый с кучей говна.
А если есть знания матана (по крайней мере понимаю о чём речь идёт), из-за специализации в вузике, но на плюсы в моей 600к деревне ищит только одна контора, то как качать скилл?
Сейчас погрузился в глубины формнного индуского ада на wso2, однако всё же хочется перебратся на плюсы.
Есть идея влится в какой нибудь опен соурс, но вот не знаю какой.
читай книги, пиши код. Какие еще советы ты хочешь?
Сука, когда же вы научитесь, блядь. move и forward это разные вещи и используются по разному. Первый кастит в rvalue вообще все - значения, правые-левые ссылки, даже небо, даже аллаха, а forward левые (обычные) ссылки скипает . Поэтому их используют в перфекте - при T пропихнуть дальше как T&&, а T& оставить как есть.
есть много веток которые должны работать либо паралельно либо последовательно, + есть данные с датчика которые должны выводится постоянно а delay дает задержку
Это копия, сохраненная 4 сентября 2019 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.