Программирование


Ответить в тред Ответить в тред

Check this out!
<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
522 38 114

C++ тред #105 /cpp/ Аноним 28/02/20 Птн 12:07:59 16178571
1542255972905.png (67Кб, 302x302)
302x302
1445738998243.png (28Кб, 862x433)
862x433
1545485568030.png (455Кб, 500x808)
500x808
Аноним 28/02/20 Птн 14:34:08 16179682
Сап, анон. Делаю бенчмарки своего сатана, бенчмарк сделан так: загрузка файла в вектор значений, запуск таймера, цикл по выходным значениям, мой матан (используется Eigen), результат в другой предсозданный до таймера вектор, таймер стоп.
В релизе процессор мммаксиум в 30%, как увести его в сотку?
Аноним 28/02/20 Птн 14:35:24 16179713
Аноним 28/02/20 Птн 14:43:28 16179754
>>1617746 →
Нет, в смысле он имеет ввиду например сменить всякие __gxx_personality_v0, __cxa_throw и тд? Ну там сигнатуру поменять, функции убрать/добавить, крч интерфейс сменить или он про другое?
Аноним 28/02/20 Птн 14:50:08 16179835
Здравствуй, крестотред. Моя проблема скорее эстетическая, чем техническая, но я надеюсь, что ты мне поможешь. Итак, пишу тут рогалик и сейчас занимаюсь реализацией клеток карты.

На каждой клетке может находиться существо, ловушка, предметы, брызги крови и, наконец, поверхность (пол, стена...). Для эффективного использования памяти решил реализовать клетку в виде связного списка, с поверхность в качестве конца (типа паттерн "Декоратор"). Условился, что список должен быть упорядоченным. У каждого класса свой приоритет, которым и определяется положение экземпляров класса относительно других элементов списка - чем выше приоритет, тем ближе к голове списка. Приоритеты от высшего к низшему:
Существо -> Ловушка -> Предмет(ы) -> кровь -> террейн.

Упорядоченным список должен быть для того, чтобы не пришлось ебаться с сортировкой при взаимодействии мира с клеткой

Для примеры: если на клетке есть только существо, кровь и поверхность, то список таков:
[Существо, Кровь, Террейн]

Собственно, записал абстрактные классы CreatureComponent, TrapComponent,ItemComponent,TerrainComponent кровь реализована как декоратор террейна

TrapComponent наследует CreatureComponent, ItemComponent наследует TrapComponent и так далее. Благодаря этому за существом может быть не только ловушка, но и предмет, кровь террейн... Полиморфизм, короче.

Есть две проблемы, которые и понесли меня сюда.

1. При добавлении нового элемента в список приходится определять его тип с помощью dynamic_cast. Dynamic_cast ведь антипаттерн?

2. Всё, что может находиться на клетке, является наследником CreatureComponent. Хер бы с ним, но если подумать... это ведь упорото звучит - террейн является компонентом существа!
Аноним 28/02/20 Птн 14:56:20 16179886
>>1617983
>При добавлении нового элемента в список приходится определять его тип с помощью dynamic_cast. Dynamic_cast ведь антипаттерн?
Для чего? Чтобы потом отсортировать или что? Можно же просто в базовом классе определить виртуальную функцию типо GetPriority() и по ней сортировать.
Аноним 28/02/20 Птн 14:57:53 16179917
>>1617983
Ну, сделали и мы в Блицкриге эту самую ракету. Как и немцы, сделали ее уже ближе к концу проекта и соорудили на базе объекта "самолет". Но программисты несколько схалтурили и не пооткручивали у бывшего самолета подозрительную для баллистической ракеты функциональность. Оказалость, что если во время полета к цели начинал идти дождь или снег, то во-первых ракета говорила человеческим голосом "Fliege zuruck"(нем. лечу назад), а во-вторых разворачивалась и летела обратно на базу. Фигли там, погода то нелетная.

А еще был у нас замечательный юнит — отряд спецназовцев. Войска у нас могут получать в ходе миссии опыт, а за опыт дают всякие интересные способности. Так вот, донельзя прокачанные спецназовцы получали возможность маскироваться под вражескую пехоту. Достаточно было просто кликнуть в отряд неприятельских солдатиков, и наши бойцы переодевались в их форму. Можно было безнаказанно разгуливать по вражеской базе. Ну, до первого выстрела, конечно.

Но, беда в том, что в Блицкриге кроме собственно пехоты еще были всякие антуражные юниты, типа коров, свиней и собак. Выяснилось, что спецназ вовсе не чурается переодевания в бобиков и хавроний. Если учесть, что механизм этого самого переодевания несколько глючил и часть отряда можно было нарядить в одну форму, часть в другую, то можно было создавать совершенно безумные подразделения. Например, отряд из собак, свиней и панцергренадеров. Учитывая, что отряду можно отдавать всякие приказы типа "маршировать", "ползти" и т.д., то игроку предоставлялась уникальная возможность полюбоваться марширующими свиньями. Получалось это у них, впрочем, паршиво, потому что скелет свиньи не соответствует скелету пехотинца и выглядит это как отряд ездящих не попе хрюшек. А еще этот цирк-шапито можо было запихать в окоп. Сидят, значит, свиньи с собаками в окопе и периодически из него выглядывают.

Со свиньями был связан, кстати, еще один баг, из-за которого игра падала. В какой-то момент программисты что-то такое там подкрутили и свиньи перестали быть нейтральными, а обрели возможность принадлежать какому-то игроку. Управлять ими было нельзя, но формально они могли быть "наши" или "ненаши". Так вот свиньи роняли игру. Потому что видя неприятеля, патриотичная хавронья хотела дать врагу отпор и лезла за оружием, которого у нее естественно не было. Если мне не изменяет память, программисты исправили баг, просто выдав свинье пистолет Люгер без патронов. Визуально это никак не видно, но формально, теперь, видя врага, она лезет за оружием, видит что патронов нет и на этом успокаивается.
Аноним 28/02/20 Птн 14:58:07 16179928
>>1617983
>1. При добавлении нового элемента в список приходится определять его тип с помощью dynamic_cast. Dynamic_cast ведь антипаттерн
Скорее всего ты можешь обойтись без него. Например использовать виртуальные методы:

struct Base
{virtual doSmth();};


struct Derived: public Base
{virtual doSmth();};

Derived make_derived();

int main()
{
Base
derived = make_derived();
dervied->doSmth(); //вызовется Derived::doSmth
}

>2. Всё, что может находиться на клетке, является наследником CreatureComponent. Хер бы с ним, но если подумать... это ведь упорото звучит - террейн является компонентом существа!
Да, это какая-то хуита.
Аноним 28/02/20 Птн 14:58:55 16179949
>>1617983
Я немного по другой теме канешн.

>Всё, что может находиться на клетке, является наследником CreatureComponent
Может тогда лучше назвать как-то SurfaceComponent - типа компонент поверхности? Или даже CellComponent - в смысле компонент клетки карты?
Аноним 28/02/20 Птн 15:02:54 161799810
>>1617991
Что за дичь, не верю, что так бывает в реальных проектах.
Аноним 28/02/20 Птн 15:03:37 161799911
>>1617975
ABI - это бинарный интерфейс, то есть соглашения на уровне машинного кода/ассемблера. Ну например - где будут располагаться параметры при вызове функции, каким способом функция вернет результат. Конкретно о чем он рассказывал - сделать destructive move, т.к. сейчас при передаче unique_ptr внутрь функции, по значению, приходится сохранить его адрес в переменную, потому что, по соглашению, деструктор вызывает вызывающий код, после того, как функция отработает. А если бы можно было отдать его внутрь функции и забыть, то не пришлось бы эти 4 инструкции вставлять (2 на сохранение в переменную, и 2 после вызова на восстановление, только лишь чтобы тут же уничтожить).
При смене ABI, даже если сигнатуры самих функций не поменять, потребуется пересборка и перелинковка всего, поэтому какие-то легаси компании и боятся, что у них что то глюканет, в банкинге, к примеру. Про то что ты написал не знаю.
Аноним 28/02/20 Птн 15:04:31 161800112
>>1617999
читать как
>вызывающий, а не вызываемый код, вызывает деструктор
Аноним 28/02/20 Птн 15:05:31 161800213
>>1617998
Вот как раз в реальных проектах мне кажется дичь и творится повсеместно, это не вылизанные простые лабы.
Аноним 28/02/20 Птн 15:09:24 161800414
1482107868009.jpg (59Кб, 625x350)
625x350
1463898170888.png (4802Кб, 1920x1080)
1920x1080
>>1617998
Ну конечно бывает. Из известных примеров - поезд в Fallout 3 это на самом деле голова человечка, потому что так проще было сделать перемещение. А в скайриме трупы не удаляются, а складываются в специальный подвал.
Аноним 28/02/20 Птн 15:13:10 161800715
>>1617999
>где будут располагаться параметры при вызове функции
Я думал это x86 calling convention или типа того, ну ок, не, я про другое, попробуй например слинковать бросающую исключение с++ную прогу сшным линкером и тебе сразу выдаст всякое uindefined reference to __cxa_throw, __cxa_allocate_exception, __gxx_personality_v0 и тд, всё это в отдельной, хелперской к стандартной, либе есть cxxabi, вот я подумал, что ты про изменение самих этих функций крч.
Аноним 28/02/20 Птн 15:14:03 161800916
>>1617983
Ты ж мешаешь гуи с логикой.
Отображение должно быть отделено от сущности, и меняться отдельно. Сущность должна содержать просто отсылку на один единственный класс своих спрайтов или что там у тебя и логику их отображения.
Аноним 28/02/20 Птн 15:15:18 161801017
>>1618007
>>1617999
>Я думал это x86 calling convention или типа того,
>The calling convention of the System V AMD64 ABI is followed on Solaris, Linux, FreeBSD, macOS,[21] and is the de facto standard among Unix and Unix-like operating systems. The first six integer or pointer arguments are passed in registers RDI, RSI, RDX, RCX, R8, R9 (R10 is used as a static chain pointer in case of nested functions[22]:21), while XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6 and XMM7 are used for the first floating point arguments.[22]:22 As in the Microsoft x64 calling convention, additional arguments are passed on the stack.[22]:22 Integer return values up to 64 bits in size are stored in RAX while values up to 128 bit are stored in RAX and RDX. Floating-point return values are similarly stored in XMM0 and XMM1[22]:25. The wider YMM and ZMM registers are used for passing and returning wider values in place of XMM when they exist.[22]:26,55
А, оке.
Аноним 28/02/20 Птн 15:15:50 161801118
Аноним 28/02/20 Птн 15:16:43 161801219
>>1617983
Посмотри, как сделано в любой GUI-библиотеке. Там же тоже можно добавлять любые Control-ы, верно? Но при этом кнопка не является наследником чекбокса.
Т.е. тебе надо всего лишь иметь BaseComponent. А уже CreatureComponent - MonsterComponent должно быть одной из веток. А ItemComponent - другой. Т.е. критерием должно быть, если есть общие свойства с другим классом, то он или их предок должен быть наследником, а не просто от балды.
Что же касается dynamic_cast - вроде бы этого не нужно. Если у тебя вектор указателей на базовый класс, то в него можно добавлять любые указатели на наследников.
Алсо, главное чтобы тебе было удобно, но в последние 10 лет в геймдеве рекомендуют ECS вместо ООП, как раз чтобы уменьшить всю эту связность. Т.е. все это делается композицией, и не важно, кто от кого наследовался, само наличие компонента уже означает наличие соотв-вующего свойства у объекта.
Аноним 28/02/20 Птн 15:17:24 161801320
>>1618002
Хз, не встречал подобного, у меня сложилось ощущение, что полубог- архитекторы всё охуенно планируют, потом их приспешники жестко ревьюят, не позволяя малейшему багу проскочить и всё в таком духе.
Аноним 28/02/20 Птн 15:17:44 161801421
>>1617992
>Скорее всего ты можешь обойтись без него. Например использовать виртуальные методы:

Нельзя, требуется двойная диспетчеризация.
У компонентов должен быть метод виртуальный метод push(CreatureComponent*). Поведение метода зависит от типа аргумента. Скажем, у нас есть список
[Существо, Ловушка, Предмет, Поверхность]
Если мы попытаемся впихнуть новый Предмет в список, то будет вызван метод push у головы списка - Существа. Там с помощью dynamic_cast определяем, что аргумент ниже в иерархии, чем Существо, поэтому вызываем push у следующего за существом элемента - Ловушки. Ловушка с помощью того же dynamic_cast опеределяет, что аргумент ниже в иерархии, поэтому передает следующему элементу - Предмету. Теперь положение в иерархии равное и алгоритм обрывается. Новый вид списка:
[Существо, Ловушка, Предмет, Предмет, Поверхность]
Аноним 28/02/20 Птн 15:21:33 161801622
Аноним 28/02/20 Птн 15:22:12 161801723
>>1618013
А потом меняется ТЗ.
Аноним 28/02/20 Птн 15:23:05 161801824
>>1618014
> Там с помощью dynamic_cast определяем, что аргумент ниже в иерархии, чем Существо, поэтому вызываем push у следующего за существом элемента - Ловушки
Так а почему нельзя сделать виртуальный getOrder(и тут просто возвращать номер в иерархии для каждого предмета), ну и потом
if(head->getOrder < input->getOrder){блабла}
Аноним 28/02/20 Птн 15:24:56 161802225
>>1618017
Такого тоже не встречал, сначала ТЗ утверждается всеми, кто ответственный, тщательно проверяется, согласовывается и только потом уже кодеры начинают работать и если что уже ответственные по шапке получат, а не кодеры. Бля, че так не везде? Мне типа с конторой повезло просто?
Аноним 28/02/20 Птн 15:25:05 161802326
>>1618004
>в скайриме трупы не удаляются, а складываются в специальный подвал.
Кстати, полагаю, это из-за чего-то типа - объекты лута имеют собственниками объекты существ, и при удалении существа игра бы упала, при использовании такого лута.
Аноним 28/02/20 Птн 15:27:39 161802527
>>1618022
Так новая версия вышла, усовершенствованная, нужно больше фич.
Да, повезло, видимо, если вы не продолжаете возится со старыми проектами.
Аноним 28/02/20 Птн 15:28:38 161802728
>>1618025
Ну да, проекты от 17 года все.
Аноним 28/02/20 Птн 15:29:14 161802829
>>1618014
ИМХО этим не должны заниматься сами компоненты. А менеджер компонент. Хотя моя байтоебская сущность вообще просто ввела бы int layer_depth и вообще не проверяла классы :3
Аноним 28/02/20 Птн 15:29:45 161802930
>>1618009
Как кстати вообще реализуют отображение отдельно с логикой? Допустим рисуешь ты человека и у него там в это время нога двигается. Юзают блокировки? Но рендерить весь мир же долго и основной поток в это время будет просто простаивать.
Аноним 28/02/20 Птн 15:31:12 161803331
Сап, сикрестовики. Давайте так, небольшой опрос. В формате одного предложения опишите суть вашего мейн проекта над которым вы сейчас работаете(коммерческого, разумеец).

Хочу узнать сколько из нас хуярит легаси на winapi


Начну с себя: shoticoin. Ноунейм крипта для группы компаний, которые торгуют с Ираном.
Аноним 28/02/20 Птн 15:31:43 161803432
Аноним 28/02/20 Птн 15:33:35 161803533
>>1618033
> В формате одного предложения опишите суть вашего мейн проекта над которым вы сейчас работаете(коммерческого, разумеец).
Очково.
Аноним 28/02/20 Птн 15:34:07 161803634
>>1618033
Я не работаю коммерчески. Проект - игра мечты.
Аноним 28/02/20 Птн 15:34:25 161803835
>>1618022
Ну может где-то такое и есть, но не в геймдеве.
Аноним 28/02/20 Птн 15:40:41 161804136
>>1618036
Я работал около года в компании, где поддерживал движок. Потом слился, ибо хуйня ебаная на C++03

Я вообще не знаю почему это легально писать что-то на C++03. Блять, кресты это язык настолько конченный, что туда string нормальный в 2017 году завезли, а вы на 2003 сидите, ну хуё моё....
Аноним 28/02/20 Птн 15:42:31 161804437
>>1618022
Это очень редко где, не в геймдеве точно (там завтра придумали новую гейммеханику, захотели новый спецэффект, и добавили нового монстра). Но тут подумалось, что на c++ в среднем может быть выше процент, потому что плюсы тяготеют ко всяким наукоемким проектам, типа матана, оборонки, видеокодеков, т.е. сначала надо много и упорно думать и проектировать.
Аноним 28/02/20 Птн 15:43:51 161804538
>>1618014
Чё-то ты перемудрил, это же просто упорядоченный список, а ты ради этого нагородил наследование элементов друг от друга и динамик касты.

Вообще, связанный список — это сомнительная вещь в плане эффективности. Ну вот надо тебе получить Существо в ячейке, к примеру, и тебе приходится перебирать все компоненты, начиная с террейна — загружать каждый в кеш, хотя нужен-то только указатель.
Лучше действительно какое-нибудь специальное хранилище компонентов сделать, которое может по типу быстро вытащить нужный.
Аноним 28/02/20 Птн 15:44:26 161804639
>>1618041
Отчасти согласен, но в геймдеве string все равно не пойдет, ибо без юникода. Вангую C++03 из-за какой то древней консоли, под которую инчае не собрать.
Аноним 28/02/20 Птн 15:48:50 161805240
>>1618044
Ну у нас проекты должны быть с высокой надёжностью тип, наверное поэтому так.
Аноним 28/02/20 Птн 15:53:22 161805941
>>1618046

В 2020 добавят наконец-то std::u8string_view эту хуйню.

>>1618046
Еееесть такое. Плюс там есть либы которые у них только в виде DLL без хидеров без нихуя, поприетарные.
Аноним 28/02/20 Птн 15:55:23 161806242
#include <iostream>
#include <string_view>

int main()
{
std::string_view view("Hey, nigga!");
std::cout << view.starts_with("He") << std::endl;

return 0;
}


Двачеры, а я вам напомню. ЭТО СКОМПИЛИТСЯ ТОЛЬКО НА 2020 КРЕСТАХ.

В кресты наконец-то появился класс "строка". Поздравляю всех
Аноним 28/02/20 Птн 15:59:28 161806643
Аноним 28/02/20 Птн 16:00:14 161806744
>>1618062
Я где-то читал что string_view с подводными камнями, типа его нельзя возвращать, потому что настоящая строка на которую ссылаются могла быть временной. Могу ошибаться.
>>1618059
Проблема вроде как не в utf8, хранить то можно и сейчас, а функции типа поиска по строке не знают, что такое символы, а только байты.
Аноним 28/02/20 Птн 16:03:51 161807145
.png (14Кб, 523x582)
523x582
Аноним 28/02/20 Птн 16:06:14 161807546
>>1618071
Методы не хранятся в объекте, они отдельно хранятся, если только не виртуальные, тогда будет ошибка, так как нужен ещё указатель на таблицу виртуальных функций и он уже в объекте хранится.
Аноним 28/02/20 Птн 16:06:53 161807647
>>1618071
undefined behavior внезапно сделал то, что от него просили. На то он и undefined
Аноним 28/02/20 Птн 16:07:38 161807848
>>1618071
Другой функции f() ты компилятору не предоставлял
Аноним 28/02/20 Птн 16:11:06 161808049
Аноним 28/02/20 Птн 16:21:45 161808750
>>1618066
Ты ещё скажи str.substr(0, start.length()) == start;

Да понятно что можно, просто string_view же вещь...

> Проблема вроде как не в utf8, хранить то можно и сейчас, а функции типа поиска по строке не знают, что такое символы, а только байты.

Это понятно. Так в utf8 string ж вроде пофиксят.

> Я где-то читал что string_view с подводными камнями, типа его нельзя возвращать, потому что настоящая строка на которую ссылаются могла быть временной.

Ну а ты не и возвращай стрингвью которые указывают на стринг. Возвращай стрингвью которые на константы указывают...
Аноним 28/02/20 Птн 16:25:55 161808951
>>1618075
Виртуальные методы же тоже отдельно хранятся, не?

А в объедке, если он имеет что-то виртуальное, хранится ссыль на таблицу с виртуалами. Ссыль размером с машинное слово.
Аноним 28/02/20 Птн 16:30:42 161809352
>>1618075
А, сорян, жорой читаю...
Аноним 28/02/20 Птн 16:56:37 161811153
15556159308800.png (103Кб, 736x736)
736x736
Аноним 28/02/20 Птн 16:59:35 161811354
Аноним 28/02/20 Птн 17:04:18 161811955
>>1618033
Фильтр файловой системы для XDR. Знаю всю подсистему наизусть. Благо есть кресты.
Аноним 28/02/20 Птн 17:05:27 161812056
>>1618113
Там разыменование нуллптра, юби.
Аноним 28/02/20 Птн 18:14:44 161818457
>>1618062
string_view из C++17 если че и уже как 3 года существует.
Аноним 28/02/20 Птн 18:15:02 161818558
>>1618113
There shall be no references to references, no arrays of references, and no pointers to references. The declaration of a reference shall contain an initializer (8.5.3) except when the declaration contains an explicit extern specifier (7.1.1), is a class member (9.2) declaration within a class definition, or is the declaration of a parameter or a return type (8.3.5); see 3.1. A reference shall be initialized to refer to a valid object or function. [ Note: in particular, a null reference cannot exist in a well-defined program, because the only way to create such a reference would be to bind it to the “object” obtained by indirection through a null pointer, which causes undefined behavior. As described in 9.6, a reference cannot be bound directly to a bit-field. — end note ]
Аноним 28/02/20 Птн 18:29:48 161819559
>>1618185
Там нет референсов.
Аноним 28/02/20 Птн 20:41:50 161831260
Посоны, какие аргументы в 2к20 году, чтобы вместо Java изучать C++?
Аноним 28/02/20 Птн 20:43:00 161831561
>>1618312
Работать не в унылом мертвом энтерпрайзе с кучей индусов
Аноним 28/02/20 Птн 20:50:43 161832162
>>1618089
>так как нужен ещё указатель на таблицу виртуальных функций и он уже в объекте хранится.
Ну я про то и написал, ну да, косноязычно вышло с если только не виртуальные.
Аноним 28/02/20 Птн 20:50:47 161832263
>>1618312
Язык, на котором можно делать ВСЕ, от сборки древнего легаси, до современных браузеров, от микроконтроллеров, до игровых движков, веба через emscripten, куча либ на любой случай в исходниках, довольно высокоуровневые абстракции, и при этом доступ к байтоебству, чуть ли не на ассемблере. Что еще надо?
Аноним 28/02/20 Птн 20:52:35 161832564
>>1618322
> чуть ли не на ассемблере
Да буквально на ассемблере можно.
Аноним 28/02/20 Птн 21:27:58 161836465
>>1618325
Ну там есть нюансы, вроде того что надо писать отдельный ассемблер для сборки в gcc и в студии.
Аноним 28/02/20 Птн 21:34:36 161837066
>>1618322
Поддержку в браузерах бы нормальную ещё. А не на уровне wasm.
Аноним 28/02/20 Птн 21:36:54 161837467
>>1618370
Была раньше, NaCl в хромом. Не знаю, дырявая наверное оказалась.
Аноним 28/02/20 Птн 22:22:31 161840168
>>1618120
Где ты видишь разыменование?

>>1618185
Не вижу конфликта.

Аноним 28/02/20 Птн 22:24:25 161840369
>>1618401
>Где ты видишь разыменование?
оператор ->
Аноним 28/02/20 Птн 22:27:34 161840770
Аноним 28/02/20 Птн 22:36:04 161841571
>>1618403
>>1618407
Доступ к данным видите? Вот и я не вижу.
Аноним 28/02/20 Птн 22:40:36 161841872
>>1618415
Вординги стандарта не помню, но там же this скрытым аргументом?
Аноним 28/02/20 Птн 23:22:47 161846973
>>1618401
>Где ты видишь разыменование?
ptr->f(), то же самое, что и (*ptr).f().
Аноним 28/02/20 Птн 23:54:41 161849274
>>1618418
Да, так методы и реализуются.
Аноним 29/02/20 Суб 00:18:22 161849975
>>1618364

Не надо. На самом деле для этого придумали уже давно решение. И называется оно так.

Лоооу лэвэл вирчуал машиииин вирчуал машииин, вирчуал машииин

Пиши на интермидиет коде и будет тебе счастье.
Аноним 29/02/20 Суб 00:19:00 161850176
>>1618499
О, LLVM, это деду нравится.
Аноним 29/02/20 Суб 00:22:56 161850377
Аноним 29/02/20 Суб 00:22:58 161850478
>>1618501
Рил, купил бы макбук только за то, что сделали эти гомсексуалисты хороший компилятор...
Аноним 29/02/20 Суб 00:33:16 161850779
>>1618503
>>1618415
>>1618407

Бля, серьёзно, пчелики?

Напоминад для даунов.

int me - это указатель
me = &yourmama - это мы указателю даём хранить адрес твоей мамки
me - это разлиновывание указателя
me. и me-> это эквиваленты, считай синтаксический сахар.

Mamka
mom = new Mamka();
mom->age = 42;
(mom).weight = 90.6f;
printf("Age: %d, weight: %f", (
mom).age, mom->weight);

Это рабочий код.

Чел который говорит что разыменовывание нулптра это ub прав.
Аноним 29/02/20 Суб 00:34:01 161851080
Аноним 29/02/20 Суб 00:39:17 161851481
>>1618401
12.2.2.1 A non-static member function may be called for an object of its class type, or for an object of a class derived (Clause 13) from its class type, using the class member access syntax (8.5.1.5, 16.3.1.1)
8.5.1.5.2 The expression E1->E2 is converted to the equivalent form ((E1)).E2. <...> Note that((E1)) is an lvalue
Так что технически есть разыменование.
Аноним 29/02/20 Суб 00:44:22 161851782
Лично общался с Маршаллом Клоу, когда он приезжал в Яндекс рассказывать про UB несколько лет назад, многое подчерпнул и из доклада, и из пиздежа.

Надо понимать, что есть святой стандарт, а есть его различные реализации в компиляторах. И суть UB как раз в том, что код корректен с точки зрения синтаксиса и будет компилироваться - но вообще хуй знает, что может произойти в рантайме. Все, что угодно.

Т.е. и ТО ПОВЕДЕНИЕ, КОТОРОЕ ТЫ ОЖИДАЕШЬ - да, это тоже может случиться. И это, блять, самое страшное, потому-что потом оно может взорваться после обновления компилятора (а может и не взорваться).

На правах вброса, знали ли вы, например, что union type punning это UB в С++, и дефайнед поведение в С?

При этом - 100% компиляторов сгенерируют именно тот код, который ты ожидаешь, и все будет работать. Но это все равно UB, и оно может взорваться через 10 лет.
Аноним 29/02/20 Суб 00:51:50 161852083
>>1618517
> union type punning это UB в С++
Это когда в биты float лазяют через union int? Да.
Аноним 29/02/20 Суб 00:54:42 161852384
>>1618517
> На правах вброса, знали ли вы, например, что union type punning это UB в С++, и дефайнед поведение в С?
std::launder
Аноним 29/02/20 Суб 01:47:49 161853485
Сап, есть задача на рекурсию: для данной суммы и списка целых чисел найти все варианты получения суммы из данного списка чисел.

Например, если дана сумма 4, и список целых чисел 4 3 2 2 1 1, то можно получить сумму 4 следующими вариантами: 4 3+1 2+2 2+1+1

Вообще не понимаю, как это сделать, где вызывать рекурсивную функцию и что в нее передавать. Вот, что я пытался сделать: https://pastebin.com/Pabkh7uc

Подскажите плз хоть что-нибудь. Спасибо.
Аноним 29/02/20 Суб 03:44:14 161855286
>>1618534
Ты можешь создавать новые списки, которые содержат не все значения.
С одной стороны, можно передавать списки, в которых по очереди выбрасываются значения
[3 2 2 1 1], [4 2 2 1 1], [4 3 2 1 1] ...
С другой, можно каждый из этих списков передавать рекурсивно, то есть из первого получится
[2 2 1 1], [3 2 1 1], [3 2 1 1], [3 2 2 1]...
Из второго
[2 2 1 1], [4 2 1 1]... и т .д.
Аноним 29/02/20 Суб 03:49:10 161855487
>>1618534
Наверное что-то вроде того

f(4,3,2,2,1,1){

if(sum(4,3,2,2,1,1) == 4){
print(4,3,2,2,1,1)}
else{
f(3,2,2,1,1)
f(4,2,2,1,1)
f(4,3,2,1,1)
f(4,3,2,2,1)
}
}
Аноним 29/02/20 Суб 04:27:18 161856388
1465974412577.png (36Кб, 659x915)
659x915
1531237086170.png (38Кб, 659x915)
659x915
>>1618554
Их можно генерить программно.
Аноним 29/02/20 Суб 04:33:15 161856589
>>1618517
>union type punning … дефайнед поведение в С?
Тащи определение поведения в C
Аноним 29/02/20 Суб 05:50:23 161857890
Аноним 29/02/20 Суб 06:15:51 161858291
>>1618563
Не совсем понял, что ты имеешь ввиду, можно, конечно, это набросок идеи, не более. Учти, что если в лоб сделать будет стопицот раз одни и те же случаи обрабатываться, нужно придумать, как сделать так, чтобы один случай только по одному разу вычислялся.
Аноним 29/02/20 Суб 06:17:53 161858392
>>1618578
>Если не заморачиваться дубликатами
Надо заморачиваться имхо, там экспонента по времени будет, если не заморачиваться.
Аноним 29/02/20 Суб 06:36:12 161858493
>>1618583
А с рекурсией она в любом случае будет, мне кажется. Но в учебных примерах на рекурсию (факториал или числа Фибоначчи какие-нибудь) обычно об эффективности не парятся — я думаю, это из той же серии задачка.
Аноним 29/02/20 Суб 06:38:00 161858594
>>1618584
>А с рекурсией она в любом случае будет, мне кажется.
Да ну не, если убрать лишние вычисления гораздо быстрее должно быть.
Аноним 29/02/20 Суб 09:18:04 161861195
>>1617971
Да, и там вычисление не векторизуется, идёт последовательно с каждой итерацией. Я как-то надеялся, что Eigen будет использовать openmp, матричные операции же хорошо можно разбить на простые действия.
Правда, матрицы константные и относительно мелкие, сторона до 16
Аноним 29/02/20 Суб 10:11:54 161863596
>>1618578
Вдогоночку, если нужны отрицательные числа во входных данных, то нужно убрать оптимизацию "if (sum < targetSum)"
(то есть, просто "else" останется).
Аноним 29/02/20 Суб 10:18:19 161864297
>>1618469
>>1618503
>>1618514
Еще раз повторяю, конкретно в примере выше нет UB, если бы был доступ к данным объекта в теле функции, либо прямой доступ к данным, тогда программа отработала бы некорректно, скорее всего. Вообщем UB здесь видят только люди, которые не знают ассемблер.
Аноним 29/02/20 Суб 10:21:37 161864598
>>1618642
Есть разыменование nullptr, что ещё тебе нужно для UB?
Аноним 29/02/20 Суб 11:04:34 161866799
>>1618028
>Хотя моя байтоебская сущность вообще просто ввела бы int layer_depth и вообще не проверяла классы :3
>>1618018
>Так а почему нельзя сделать виртуальный getOrder(и тут просто возвращать номер в иерархии для каждого предмета), ну и потом
Честно говоря, похоже на C-Style + поясняю ниже.
>>1618045
>Чё-то ты перемудрил, это же просто упорядоченный список, а ты ради этого нагородил наследование элементов друг от друга и динамик касты.
Мне надо, чтобы Существо содержало в себе указатель на Предмет (или то, что ниже ItemComponent в иерархии). Это во-первых, повышает типобезопасность, а во-вторых, позволяет Существу вызывать методы, характерные для ItemComponent и потомков, но нехарактерные для CreatureComponent.
>Вообще, связанный список — это сомнительная вещь в плане эффективности. Ну вот надо тебе получить Существо в ячейке, к примеру, и тебе приходится перебирать все компоненты, начиная с террейна — загружать каждый в кеш, хотя нужен-то только указатель.
У меня головой списка является Существо. Когда ему нужно узнать, какие предметы есть на клетке, оно обходит все следующие элементы Но тут опять геморрой в виде определения типа.
>Лучше действительно какое-нибудь специальное хранилище компонентов сделать, которое может по типу быстро вытащить нужный.
Не до конца понимаю это предложение. Что ли сделать глобальные векторы для Существ, Предметов, Дверей и при обращении к клетке обойти эти векторы, отобрав те элементы, у которых координаты соответствуют координатам клетки?

Есть ведь исключительные случаи, когда логика обхода меняется. Вот, например, если террейн твёрдый, то на нём могут находиться лишь фантомы, а значит для оптимизации имеет смысл добавить отдельный вектор фантомов. Вот поэтому мне такое решение не нравится - никогда не знаешь, сколько векторов потом наделаю. Вот, скажем, я хочу добавить в игру дым - это не сразу разберешь, где что менять надо.


Вообще говоря, я сейчас думаю о компромиссном варианте: Есть классы TerrainComponent, TerrainDecorator и Terrain. Все Существа, Предметы, Двери и т.п. хранятся в отдельном неупорядоченном EntityList Или EntityVector, который является наследником TerrainDecorator. Если я хочу обжечь клетку, то с помощью Visitor получаю этот самый EntityList и обжигаю каждый его элемент (при этом Существо получает урон, бумажные предметы уничтожаются, деревянная дверь загорается...). Если нужно получить существ, то тем же способом получаю список и опять с помощью Visitor фильтрую всех, кроме Существ. (с таким подходом еще и уменьшается ответственность Существ и Предметов, потому что больше не нужно хранить указатель на следующий элемент в списке, а лишь собственные координаты).

По-моему это позволит избавиться как от dyamic_cast, так и от метода вроде getOrder (благодаря шаблонам и виртуальным методам). Но я предвкушаю случай, когда будет непонятно, чем является та или иная НЁХ, которую хочу ввести в игру - отдельным декоратором или энтити?

Я с Entity-Component-System не знаком, поэтому прошу бывалых пояснить, позволит ли эта архитектура избавиться от подобных проблем.
Аноним 29/02/20 Суб 11:10:58 1618669100
>>1618667
Да, для внятности добавлю, что мои термины Component и Entity не имеют ничего общего с ECS. Компонент - это из паттерна "Декоратор", а Энтити просто само в башку пришло.
Аноним 29/02/20 Суб 11:50:12 1618682101
>>1618667
>Не до конца понимаю это предложение. Что ли сделать глобальные векторы для Существ, Предметов, Дверей и при обращении к клетке обойти эти векторы, отобрав те элементы, у которых координаты соответствуют координатам клетки?
Не, я имел ввиду хранилище компонент внутри ячейки. Чтобы писать "cell->get<CreatureComponent>()", или типа того. Ну короче, ECS обычный, да.
Хотя глобальный список тоже может понадобиться, если часто нужно искать какие-то сущности, чтобы не перебирать все ячейки.

> Мне надо, чтобы Существо содержало в себе указатель на Предмет
Хм, ну оно может держать указатель на клетку, в которой оно находится, а из клетки уже вытаскивать что угодно.
Хотя если этот предмет принадлежит существу, а не лежит на полу (т.е. когда существо ходит с одной клетки на другую, предмет двигается вслед за ним), то лучше, чтобы существо само хранило у себя свой инвентарь, не втягивая в это клетку.
Аноним 29/02/20 Суб 12:08:32 1618692102
Зачем нужны лямбды? Какую проблему они решают? Как по мне это синтаксический сахар, причем весьма странно то, что чтение кода они нисколько не упрощают, ведь чтобы действительно понять, что происходит, нужно знать специфику лямбд. Короче поясните мне за эту юзлесс конструкцию, желательно с пруфами в виде реальных кейсов в реальных проектах.
Аноним 29/02/20 Суб 12:19:03 1618698103
>>1618682
>Не, я имел ввиду хранилище компонент внутри ячейки. Чтобы писать "cell->get<CreatureComponent>()", или типа того. Ну короче, ECS обычный, да.
Либо я опять не понял, либо потребуется несоразмерно много памяти. Ведь карта состоит из 1600-3200 клеток, из них не больше 100-200 заняты чем-то, помимо террейна.
>Хотя если этот предмет принадлежит существу, а не лежит на полу (т.е. когда существо ходит с одной клетки на другую, предмет двигается вслед за ним), то лучше, чтобы существо само хранило у себя свой инвентарь, не втягивая в это клетку.
Указатель на предмет нужен существу для того, чтобы оно могло быстро проверить находящие на клетке предметы. Например, когда желает что-то подобрать с пола.
Аноним 29/02/20 Суб 12:30:00 1618702104
>>1618692
>Зачем нужны лямбды?
Можно сказать, что лямбда - это вложенная в функцию функция. С помощью захвата она имеет доступ к переменным окружающей функции. Что можно делать? Например, обработчики событий, написанные по месту. Но надо не забывать что у лямбд оверхед.
Аноним 29/02/20 Суб 12:32:54 1618707105
>>1618702
А что тогда вместо нее, если это оверхэд?
Аноним 29/02/20 Суб 12:41:20 1618717106
И вообще, прошу скинуть исходники какого-нибудь мелкого проекта с использованием ECS. Типичный рогалик является либо говном мамонта на C, либо написан явно в стиле ООП.
Аноним 29/02/20 Суб 13:06:06 1618733107
Аноним 29/02/20 Суб 13:09:15 1618738108
>>1618707
Обычные функции, оверхеда будет аж на 0.00000001% меньше.
Аноним 29/02/20 Суб 13:17:37 1618741109
>>1618702
Я ровно также могу любые переменные передать в качестве аргументов в нужную мне функцию. Не убедил.
Аноним 29/02/20 Суб 13:22:39 1618743110
>>1618582
Да это так, но я за него лабу писать и не собирался :3
Аноним 29/02/20 Суб 13:24:51 1618746111
>>1618741
Зачем нужны циклы, когда есть if+goto???
Аноним 29/02/20 Суб 13:26:43 1618747112
>>1618741
Так я и не спорю что лямбда это просто синтаксический сахар. Просто тебе надо будет скорее всего написать: класс обертку, функцию колбэк в нем, передать этот объект по указателю, а при вызове передать все переменные по ссылкам или указателям, прописав это все по два раза. И еще следить за временами жизни. А с лямбдой ты просто пишешь выполняющий работу код.
Аноним 29/02/20 Суб 13:29:40 1618749113
>>1618738
Тащемта лямбды без захватов и транслируются в обычные функции.
Аноним 29/02/20 Суб 13:34:42 1618751114
>>1618746
я думаю для удобства восприятия, кроме того полагаю дело в компактности кода, goto тоже практически не используется (хотя иногда бывает удобно). Когда видишь цикл сразу понимаешь, ща будут что-то перебирать. Когда видишь if читаешь дальше.
Аноним 29/02/20 Суб 13:36:37 1618755115
>>1618692
по мне так норм тема, когда ф-ия нужна один раз и именно здесь во-первых сразу понятно
1. Она нужна только здесь и никто ее вызвать больше не сможет
2. Не надо придумывать всякие мудацкие имена для мудацких функций.
3. Можно въебать что-то простенькое, например найти числа больше трех, удобно для контейнеров.
Аноним 29/02/20 Суб 13:44:40 1618757116
>>1618747
Я просто указатель на функцию передам. И сделаю вызов с нужными аргументами.

> по мне так норм тема, когда ф-ия нужна один раз и именно здесь во-первых сразу понятно
В таком случае да, полезно, но это штатный случай. Как по мне, это какой то оверинженеринг пилить лямбды только ради этого.
Аноним 29/02/20 Суб 15:02:46 1618826117
1509307588907.png (58Кб, 937x905)
937x905
>>1618757
Ну вот я пример с лямбдой накидал. Обработчик сообщени задан прямо в классе.
Аноним 29/02/20 Суб 15:09:22 1618838118
>>1618826
Какая же у тебя упоротая подсветка.
Аноним 29/02/20 Суб 15:09:46 1618839119
>>1618743
Тю, а я думал ты и есть автор вопроса.
Аноним 29/02/20 Суб 15:16:35 1618852120
>>1618667
>Честно говоря, похоже на C-Style
>виртуальный getOrder(и тут просто возвращать номер в иерархии для каждого предмета)
???
Аноним 29/02/20 Суб 15:22:02 1618862121
>>1618838
Это не у меня, первый попавшийся сайт.
Аноним 29/02/20 Суб 15:22:59 1618864122
Аноним 29/02/20 Суб 15:23:53 1618866123
Аноним 29/02/20 Суб 15:29:32 1618876124
1534559460335.png (73Кб, 765x677)
765x677
>>1618838
Правда, тебе наверное и моя не понравится.
Аноним 29/02/20 Суб 15:30:37 1618877125
Аноним 29/02/20 Суб 16:03:35 1618917126
>>1618876
У тебя ide превращает != в ≠ или этот символ можно пихать в код явно?
Аноним 29/02/20 Суб 16:06:56 1618920127
1547873105788.png (310Кб, 1836x1796)
1836x1796
>>1618917
IDE превращает, это шрифт с лигатурами.
Аноним 29/02/20 Суб 16:21:58 1618941128
Почему у вас у всех на темном фоне текст в IDE?
Аноним 29/02/20 Суб 16:23:42 1618943129
Аноним 29/02/20 Суб 16:29:45 1618954130
>>1618941
От светлой глаза быстрее устают.
Аноним 29/02/20 Суб 16:31:19 1618956131
Аноним 29/02/20 Суб 16:33:16 1618960132
>>1618941
Вкусовщина? Мне больше нравится темная, коллега рядом сидит со светлой. Какая разница лол
Аноним 29/02/20 Суб 16:34:22 1618962133
>>1618954
У меня наоборот. От темного фона через 20-30 минут глаза вытекают, на белом хоть весь день сидеть могу.
Аноним 29/02/20 Суб 16:38:12 1618972134
>>1618956
Кому верить, маня-исследованиям или своим глазам, проводящим 10 часов за монитором в день?
Я пытался пользоваться светлой темой и быстро заебался. Включил тёмную, стало норм.
Аноним 29/02/20 Суб 16:39:38 1618975135
>>1618972
От темной темы глаз фокус теряет, короче зрение проебешь и астигматизм заработаешь.
Аноним 29/02/20 Суб 16:40:40 1618981136
>>1618972
Ты в подвале сидишь что ли? Попробуй просто яркость уменьшать тогда даже на светлой.
Аноним 29/02/20 Суб 16:40:45 1618982137
>>1618975
>tfw уже астигматизм
Аноним 29/02/20 Суб 16:45:09 1618990138
image.png (459Кб, 1920x1080)
1920x1080
Аноним 29/02/20 Суб 16:45:48 1618991139
>>1618975
Астигматизм у меня с рождения, так что хуй. Ещё и экранной лупой пользуюсь.

>>1618981
Наоборот, сижу у окна. Глаза от света быстро заёбываются. Яркость менять бесполезно.
Аноним 29/02/20 Суб 17:02:23 1619001140
В темноте рили вредно сидеть? Не люблю с верхним светом сидеть за компом.
Аноним 29/02/20 Суб 17:15:19 1619018141
>>1619001
По современным исследованиям темнота вносит самый большой вклад, это даже хуже чем пялиться в мелкие экраны телефонов.
Аноним 29/02/20 Суб 18:06:47 1619039142
>>1619001
Рили. Алсо, ебал в рот это зрение, все детство ебошил в игори по 12 часов в день всегда была единичка, как только стукнуло 20 лет, за год ослеп, хотя втыкал за компуктером уже гораздо меньше, часа 2-3.
Аноним 29/02/20 Суб 18:10:07 1619043143
>>1619039
С чем это связываешь?
>>1619018
Ты с верхним светом сидишь ночью или лампы достаточно?
Аноним 29/02/20 Суб 18:12:06 1619046144
Ананасы, вопрос такой
Есть некий класс (не шаблонный), внутри него есть несколько векторов которые содержат pair<string, некий тип>
У этого класса есть функции для поиска элемента внутри этих векторов (т.е. для каждого вектора своя функция) по pair.first грубо говоря по имени, если не найдено ничего, то вернётся дефолтное значение (элемент по нулевому индексу).
Можно ли как-то сделать одну шаблонную функцию для этого?
Аноним 29/02/20 Суб 18:26:24 1619061145
>>1619043
Со старением. Видимо накопилось за все эти годы, надо было спортом заниматься, а не за пекой сидеть, хз что в 30 будет.
Аноним 29/02/20 Суб 18:28:10 1619067146
image.png (1291Кб, 1360x768)
1360x768
image.png (1277Кб, 1360x768)
1360x768
Сорян за оффтоп, но это самый живой тред
Пытаюсь установить Visual Studio 2019 на свою винду 7 SP1, но не выходит. окно со скрина 2 просто исчезает без следа и отклика, как будто я ничего и не запускал. Почему может быть так?
Аноним 29/02/20 Суб 18:36:36 1619073147
Аноним 29/02/20 Суб 18:44:19 1619084148
>>1619067
Хз, у меня тоже Win7 SP1, IE8, могу только перечислить список последних накаченых патчей
KB2504637, KB3033929, KB3191566, KB2872035, KB2809215, KB3004394, KB2999226, KB2882822, KB4056897
Аноним 29/02/20 Суб 18:45:25 1619087149
>>1619067
Удаляй нахуй свою семёр_очку и ставь божественную шиндовс десять, ретроград ты мамкин
Аноним 29/02/20 Суб 18:46:29 1619091150
Аноним 29/02/20 Суб 18:52:33 1619096151
Аноним 29/02/20 Суб 18:58:30 1619102152
>>1619087
> шиндовс десять
Может, ещё и антивирус предложишь выключить, а в сеть ходить исключительно на http-сайты, нечегоскрыватель?
Аноним 29/02/20 Суб 19:05:20 1619116153
>>1619102
А в семёрку-то они добавить не догадались.
Аноним 29/02/20 Суб 19:07:08 1619121154
>>1619102
> Может, ещё и антивирус предложишь выключить, а в сеть ходить исключительно на http-сайты, нечегоскрыватель?
В 2к20 антивирус нужен только корпорациям для защиты своих серверов от бабы Клавы.
Если у тебя возникло желание поставить антивирус на домашний компутатор, значит ты долбоёб, не умеющий пользоваться интернетом.
Аноним 29/02/20 Суб 19:09:59 1619128155
>>1618956
Ну там написано что светлый фон лучше показывает себя при кратковременном использовании, а при долговременном он может быть вреднее тёмного.
Аноним 29/02/20 Суб 19:11:19 1619131156
>>1619116
Не догадались. Иначе не было бы смысла так навязывать десятку, когда она вышла.

>>1619121
На приличных сайтах тупо нет кряков. Если ты на глаз можешь определить чистый экзешник от экзешника с сюрпризом, то таких, как ты, единицы, и они на двачах не сидят.
Аноним 29/02/20 Суб 19:12:37 1619133157
>>1618757
весь си++ оверинжиниринг так-то, один возврат константного значения чего стоит
Аноним 29/02/20 Суб 19:13:42 1619137158
Аноним 29/02/20 Суб 19:15:48 1619141159
>>1619137
> Пользователи рекомендуют проверять наличие иконки OneDrive рядом со значком каталога, и, если ее нет, срочно делать бэкап или хотя бы копировать данные в другой каталог, пока Windows не начал самопроизвольно обновляться.

А завтра все данные с (((этого))) компьютера улетят в "облака" для вашего "удобства".
Аноним 29/02/20 Суб 19:17:10 1619143160
Аноним 29/02/20 Суб 19:21:03 1619150161
>>1619141
Всё давно к этому идёт к "светлому" облачному будущему. Я уверен, что лет через 20 это будет не шуткой, а реальностью.
Аноним 29/02/20 Суб 19:28:21 1619157162
>>1619150
Что значит идёт? Оно уже здесь.
Аноним 29/02/20 Суб 19:31:08 1619161163
>>1619157
Приходи лет через 5, когда все будут писать код в браузерных ИДЕ с рекламными блоками рядом с тулзами.
Аноним 29/02/20 Суб 19:33:40 1619163164
>>1619161
> будут писать код в браузерных ИДЕ
Я тут
Аноним 29/02/20 Суб 19:36:32 1619166165
>>1619131
>Не догадались.
Успокаивай себя.

>>1619137
Что я должен на это сказать?
Аноним 29/02/20 Суб 19:45:34 1619174166
image.png (64Кб, 811x762)
811x762
Сделал маллок, оцените, вроде работает даже.
Аноним 29/02/20 Суб 19:49:44 1619180167
>>1619174
В чем суть? Это просто сраный враппер вокруг HeapAlloc. Иди пиши нормальный менеджер памяти, выделяй большой кусок через VirtualAlloc и нарезай его по месту.
Аноним 29/02/20 Суб 19:56:45 1619193168
>>1619180
Ну так и должно быть. HeapAlloc и так все нарезает и выделяет заранее. Для этого как бы куча и сделана, чтобы не пердолить самому.
Аноним 29/02/20 Суб 20:00:04 1619198169
Аноним 29/02/20 Суб 20:02:24 1619204170
>>1619198
Антивирус перешёл с ЭВМ в облако, но не исчез.
Аноним 29/02/20 Суб 20:11:54 1619213171
>>1619198
Ты наверное не слышал, но там то ли урезанные версии, то ли лимит времени проверки, но есть случаи когда результат проверки одним антивирусом там и локально различается.
Аноним 29/02/20 Суб 20:55:36 1619250172
1470984186583.png (10Кб, 800x600)
800x600
Че за игра?
Аноним 29/02/20 Суб 21:01:10 1619254173
Аноним 29/02/20 Суб 21:03:58 1619258174
>>1619102
>мям я ананимас
>сидит на мейлаче
Аноним 29/02/20 Суб 21:09:00 1619264175
>>1619254
Тада юзерфрендли

>>1619258
Хрен бы с этой анонимностью. Речь о том, что десятой пользоваться тупо опасно.
Аноним 29/02/20 Суб 21:10:51 1619265176
>>1619264
>Тада юзерфрендли
По мне так линупс более юзерфрендли нежели винда.
>Речь о том, что десятой пользоваться тупо опасно.
В каком смысле? Она взорвёт комп твой или что?
Аноним 29/02/20 Суб 21:11:55 1619269177
>>1618642
Я тебе строчки из стандарта привёл, в которых говорится, что при вызове функции класса по указателю на объект неявно производится разыменование указателя. То, что его по факту нет в генерированном коде не значит, что это формально не UB.
Аноним 29/02/20 Суб 21:13:46 1619270178
>>1619250
Не знаю, но напомнило виновый Hexcells
Аноним 29/02/20 Суб 21:15:20 1619271179
>>1619265
> По мне так линупс более юзерфрендли нежели винда.
Ну, хз. Когда под твоё оборудование тупо нет драйверов, а от банального обновления отваливается переключалка раскладки или звук, юзерфрендли это не назвать. Я про убунту сейчас. С гентой у меня всё было намного хуже.
> В каком смысле? Она взорвёт комп твой или что?
Я там выше кидал ссылку, где на десятке исчезают пользовательские данные. Не удивлюсь, если и взорвётся.

Вообще, кругом говнище одно. Ну и ладно, здесь не /s/.
Аноним 29/02/20 Суб 21:18:28 1619273180
>>1618642
>если бы был доступ к данным объекта в теле функции, либо прямой доступ к данным
Тебе же написали выше, там передается this.
Аноним 29/02/20 Суб 21:19:02 1619274181
>>1618642
С каких пор UB измеряется ассемблером?
Аноним 29/02/20 Суб 21:21:27 1619276182
>>1619271
> тупо нет драйверов
Хз, сам с таким не сталкивался, а не, было, что не видел wifi usbшный, но тоже всё быстро фиксится, клонишь гит ихний, устанавливаешь по РЕАДМЕ и всё работает.
>Я там выше кидал ссылку, где на десятке исчезают пользовательские данные.
Не знаю, на работе у всех компы с десяткой, сами проекты на серваках на убунте, дома бубунту юзаю и всё ок.
Аноним 29/02/20 Суб 22:27:57 1619331183
>>1619193
Чтоб не пердолить самому есть уже new.
Аноним 29/02/20 Суб 22:30:15 1619335184
>>1619193
Какбы malloc реализует кучу сам, так что "сделал маллок" подразумевает реализацию кучи.
Аноним 29/02/20 Суб 22:48:42 1619353185
товарищи, есть код https://wandbox.org/permlink/jNtO5JpA2ziKdN8Q

Вываливается компиляция в gcc и clang'е.
Но компилится и работает в студии.
Что-то не так с шаблонами я намудрил.
Посмотрите плиз!
Аноним 29/02/20 Суб 22:49:39 1619355186
>>1619353

вот такая ошибка:

prog.cc: In function 'std::ostream& syn::operator<<(std::ostream&, const syn::Simple_timer_t<Clock_t>&)':
prog.cc:62:42: error: expected primary-expression before '>' token
62 | t.remaining<std::chrono::milliseconds>().count();
| ^
prog.cc:62:44: error: expected primary-expression before ')' token
62 | t.remaining<std::chrono::milliseconds>().count();
Аноним 29/02/20 Суб 22:53:47 1619358187
>>1619335
Маллок подразумевает маллок. За меня кучу реализует ОС, хз че там у линуксодебилов. Чем тебе системный хипаллок не маллок?
Аноним 29/02/20 Суб 22:58:11 1619364188
>>1619355
Погуглил за тебя, объяснить синтаксис не могу, потому что не понял, но надо изменить на
t.template remaining<std::chrono::milliseconds>().count();
Аноним 29/02/20 Суб 23:00:47 1619367189
Аноним 29/02/20 Суб 23:03:29 1619370190
>>1619364

Сасибо! Кажется, работает! А как ты гуглил? По ошибке gcc или clang? Покажи запрос! (стыдно)

И какой review дашь этому быдло классу?

p.s
Я на самом деле С++ не умею и обычно пишу как Си с классами.

Езё раз спасибо
Аноним 29/02/20 Суб 23:03:35 1619371191
Аноним 29/02/20 Суб 23:07:56 1619379192
>>1619371
Я и сам не понял. Впервые вижу такой синтаксис. Видимо это помощь парсеру, который не ожидает там <.
>>1619370
По тексту ошибки и гуглил. Твой код вообще не смотрел, лол. Точечно исправил и дальше пошел, у меня свои методы.
Аноним 29/02/20 Суб 23:08:45 1619383193
>>1619379
Вот как выучить с++? Как думаешь, что знаешь его и такая дичь вылазит или узнаёшь про перегрузку оператора запятая.
Аноним 29/02/20 Суб 23:09:26 1619386194
1527795095732.png (112Кб, 951x803)
951x803
Аноним 29/02/20 Суб 23:10:08 1619388195
>>1619379
По тексту ошибки и гуглил. Твой код вообще не смотрел, лол. Точечно исправил и дальше пошел, у меня свои методы.

По выводу clang'а ?
Аноним 29/02/20 Суб 23:13:47 1619394196
2020-02-29-2311[...].png (253Кб, 1280x1024)
1280x1024
Аноним 29/02/20 Суб 23:18:19 1619398197
1451328382674.png (84Кб, 1377x616)
1377x616
>>1619394
Весело, конечно, так и исугаться недолго.
Наверное, это потому что у меня по привычке англ. стоит в гугл аккаунте
Аноним 01/03/20 Вск 11:20:27 1619665198
Либа для длинной арифметики?
Желательно, без перегрузок и move-семантики, а вроде div(a,b,&c,&d), чтобы было видно все переменные и не было неявных перемещений и копирований.
Аноним 01/03/20 Вск 12:44:53 1619716199
Аноним 01/03/20 Вск 13:04:34 1619747200
>>1619394
Ммм, вондбокс. Мне нравится
Аноним 01/03/20 Вск 13:13:11 1619754201
Аноним 01/03/20 Вск 13:42:34 1619795202
Int in;
char ch;
while(1){
If(cin >> in)
cout << "int "<< in << endl;
else{
cin >> ch;
cout << "char " << ch << endl;
}
}

Господа, можно как-то заставить это работать? Почему в случае, если не получилось считать int, поток не перенаправляется на char и цикл просто зацикливается?
Аноним 01/03/20 Вск 13:43:50 1619796203
>>1619795
Чистить поток нельзя, тк мне нужны данные, которые не записались в in.
Аноним 01/03/20 Вск 13:53:52 1619810204
>>1619795
Получай строку, потом её парси
Аноним 01/03/20 Вск 13:58:00 1619814205
>>1619810
>>1619795
Уже не важно, добавил cin.clear(), заработало.
Аноним 01/03/20 Вск 14:47:56 1619840206
>>1618941
Просто приятнее читать написанный тобой говнокод, вот и всё.
Вкусовщина, имхота, етс
Аноним 01/03/20 Вск 14:59:47 1619848207
>>1619814
> Уже не важно, добавил cin.clear(), заработало.
Ясно. Мб лучше в жс-макаки перекатишься, пока не поздно?
Аноним 01/03/20 Вск 15:11:36 1619857208
>>1619848
Нахуй тратить ресурсы программы на парсинг строки, если можно все красиво и сразу кластеризовать? Мм?
Аноним 01/03/20 Вск 15:48:12 1619890209
>>1619857
>ресурсы программы
Двач - на лезвии науки.
Аноним 01/03/20 Вск 15:53:36 1619894210
>>1619890
Ты токсик, неужели на работке так анально пенетрируют?
Аноним 01/03/20 Вск 16:18:12 1619913211
>>1619894
Лол. Тебе бы правда в JS, там и компилятора нет, никто на ошибки тебе указывать не будет, инфантильный ты наш.
Аноним 01/03/20 Вск 16:22:21 1619916212
>>1619857
> Нахуй тратить ресурсы программы на парсинг строки, если можно все красиво и сразу кластеризовать? Мм?
Сука пчел XD
Ты хоть сам понял, что написал?
Аноним 01/03/20 Вск 16:40:29 1619932213
Аноним 01/03/20 Вск 16:41:37 1619935214
1485843434821.png (7Кб, 415x134)
415x134
>>1619932
Ты действительно такой тупой...
Аноним 01/03/20 Вск 16:47:07 1619943215
>>1619935
Специально на всякий случай из под прокси написал?
Аноним 01/03/20 Вск 16:47:45 1619944216
>>1619943
Чувак, те на ебло уже третий человек(я) ссыт.
Аноним 01/03/20 Вск 16:48:31 1619945217
>>1619943
Да. Я же программист, в отличии от.
Аноним 01/03/20 Вск 19:34:16 1620112218
image.png (7Кб, 359x99)
359x99
Сап програмач, пишу код по книге, но алгоритм count и cin не определяются, что может быть не так?
Аноним 01/03/20 Вск 19:43:45 1620125219
image.png (5Кб, 312x68)
312x68
>>1620112
как выяснил нужно было поставить std::
но теперь еще вопрос задам, почему как мне кажется сбилась кодировка
Аноним 01/03/20 Вск 19:47:19 1620130220
>>1620125
> нужно было поставить std::
Наверняка в примере либо инклудили <iostream.h> (не делай так), либо проебали using namespace std; (и так тоже не делай).

> сбилась кодировка
Почитай про setlocale, либо пиши все сообщения на английском.
Аноним 01/03/20 Вск 19:49:40 1620132221
>>1620130
был, но он не работал и я поставил #include <iostream> и всё пошло

>using amespace std;
вроде при первом открытии для создания программ для консоли это было записано.
Аноним 01/03/20 Вск 22:53:49 1620406222
image.png (41Кб, 1463x183)
1463x183
Что не так? Эти vShaderSource и прочие инициализированы в utils.h, который инклюдится в utils.cpp и main.cpp
Аноним 01/03/20 Вск 23:05:23 1620423223
>>1620406
Попробуй загуглить inline variables
Аноним 01/03/20 Вск 23:07:41 1620430224
>>1620406
Нормальную ос и иде установи, а так все норм.
Аноним 01/03/20 Вск 23:20:26 1620446225
>>1620423
inline помог, ещё помог static, но при нём этом есть предупреждения, что эти переменные defined but not used. Не понимаю, в чём трабл
Аноним 01/03/20 Вск 23:50:56 1620467226
>>1620406
>Эти vShaderSource и прочие инициализированы в utils.h, который инклюдится в utils.cpp и main.cpp
Ну так компилятор его два раза и включил. Ты эту инициализацию либо #pragma once делай. Либо
#ifndef UTIL_H_
#define UTIL_H_
/ codecodecode /
#endif
Либо статиками делай, если нужны разные в каждом файле.

И вообще переменные инициализироваться в .h файлах не должны (если это не константы), мне кажется, ты их как-то не так используешь.
Аноним 01/03/20 Вск 23:52:37 1620471227
Аноним 01/03/20 Вск 23:53:30 1620473228
>>1620467
Таки константы, ifndef есть
Аноним 01/03/20 Вск 23:55:21 1620478229
>>1620473
Показывай код тогда, где-то ошибка.
Аноним 01/03/20 Вск 23:59:38 1620484230
image.png (63Кб, 533x606)
533x606
Аноним 02/03/20 Пнд 00:00:19 1620485231
>>1620484
Только на лицо за второй инклюд не ссыте
Аноним 02/03/20 Пнд 00:11:58 1620493232
>>1620484
Ну, тут я ничего не вижу. Может имя где-то такое же? ютил_х свой переименовывать пробовал? А так может где-то в мейке ошибся, но я в г++ не очень понимаю.
Аноним 02/03/20 Пнд 00:13:25 1620495233
>>1620446
Так а где ты их используешь?
Аноним 02/03/20 Пнд 00:17:58 1620501234
>>1620495
Раскомментил функцию в main.cpp, где они используются, и варнинги пропали, не думал, что эти варнинги относятся к конкретному файлу
Аноним 02/03/20 Пнд 01:25:11 1620527235
Аноним 02/03/20 Пнд 01:25:58 1620528236
Аноним 02/03/20 Пнд 01:27:12 1620529237
Аноним 02/03/20 Пнд 01:34:24 1620533238
>>1620529
Попробуй из /dev/urandom генерировать текст, пока программа с нужным поведением не родится
Аноним 02/03/20 Пнд 01:38:40 1620537239
Аноним 02/03/20 Пнд 01:40:36 1620539240
Аноним 02/03/20 Пнд 08:41:42 1620641241
>>1620529
Читать учебники и понимать что именно меняешь и зачем.
Читать сообщения ворнингов которые буквально говорили тебе что не так.
Сначала тебе писалось, что символ переопределен. А потом - что символ определен, но нигде не используется.
Аноним 02/03/20 Пнд 10:58:00 1620754242
>>1620641
Как символ в инклуд гардах может быть переопределён?
Аноним 02/03/20 Пнд 11:19:55 1620811243
>>1620754
Всё, прочитал, это отличие с++ от с.
Аноним 02/03/20 Пнд 11:54:14 1620849244
>>1618119
>XDR

Ну и нахуя продал попец глиномесам?
Аноним 02/03/20 Пнд 12:31:52 1620909245
>>1620130
>Почитай про setlocale, либо пиши все сообщения на английском.
W S T R I N G
S
T
R
I
N
G
Аноним 02/03/20 Пнд 13:15:55 1620945246
>>1620909
Зачем это в консоли??
Аноним 02/03/20 Пнд 13:19:34 1620950247
image.png (17Кб, 385x88)
385x88
>>1620945
Чтобы небыло вот так. Просто юзаешь wcin, wcout с wstring и все.
Аноним 02/03/20 Пнд 17:28:10 1621134248
>>1620950
сет локал поставил и всё гуд, или тогда будут баги с английским?
Аноним 02/03/20 Пнд 17:54:14 1621150249
Аноним 02/03/20 Пнд 17:54:54 1621152250
Аноним 02/03/20 Пнд 18:14:46 1621164251
>>1621152
Простите, я не очень умный.
Аноним 02/03/20 Пнд 18:19:19 1621167252
>>1621150
Для utf8 есть только ЛИТЕРАЛ u8"", а класс utf8_string никто не завозил, так что нахуй этот utf8.
>>1621134
Англ в диапазон 0-128 входит, так что не должно.
Аноним 02/03/20 Пнд 18:29:49 1621171253
image.png (3Кб, 339x79)
339x79
Аноним 02/03/20 Пнд 19:38:44 1621214254
>>1621150
Но ведь весь винапи использует юникод.
Аноним 02/03/20 Пнд 19:38:54 1621215255
image.png (401Кб, 433x649)
433x649
>>1617857 (OP)
книга по изучению c++ от создателя оного является хорошим материалом для начинающего?
и что по изданиям можете рассказать?
Аноним 02/03/20 Пнд 19:45:22 1621221256
Что нужно изучать помимо крестов, чтобы работу нормальную найти? Большинство вакансий требует что-нибудь в довесок к языку. Где-то хотят ядро линукс, где-то базы данных и SQL, где-то численные методы. На чистых крестах пусть даже с шаблонами уже не получится выехать, зарплаты мизерные. Знать все одновременно нереально, но нужно знать хотя бы что-нибудь из этого на хорошем уровне, чтобы пройти собес в приличную контору. Что более перспективно сейчас, по вашему мнению?
Аноним 02/03/20 Пнд 20:00:54 1621238257
>> лучше для начала наверни сабж из си треда, хотяб 100 страниц, будет намного интересней
Аноним 02/03/20 Пнд 20:02:50 1621241258
>>1621238
Тогда по чистому си кого посоветуете?
Аноним 02/03/20 Пнд 20:06:40 1621246259
>>1621221
за бугром нормальные зарплаты
Аноним 02/03/20 Пнд 21:08:45 1621313260
>>1620130
Как ты будешь пользоваться cout и cin без инклюда библиотеки iostream?
Аноним 02/03/20 Пнд 21:10:33 1621318261
>>1621313
Так поставил, но пример очень странный был, изначально стояло iostream.h
Аноним 02/03/20 Пнд 21:14:36 1621325262
Я не понял, теперь без qt аккаунта не скачать установщик? В чем суть изменений условий распространения у них с февраля?
Аноним 02/03/20 Пнд 21:57:49 1621363263
>>1621221
> Где-то хотят ядро линукс, где-то базы данных и SQL, где-то численные методы.
Ну да. Плюсы нужны только там, где нужна скорость. А это либо математика, либо кишочки системы.
Аноним 02/03/20 Пнд 22:02:44 1621371264
>>1621313
В старых компиляторах была разница между подключением иостреам и иостреам.х (и прочим), последний был пережитком времён, когда не было неймспейсов.
Аноним 02/03/20 Пнд 22:09:51 1621389265
Аноним 02/03/20 Пнд 22:31:42 1621437266
>>1620527
Зато самый действенный.
Аноним 02/03/20 Пнд 22:34:00 1621445267
Аноним 02/03/20 Пнд 23:56:25 1621529268
на сколько важно знание C в изучении C++
Аноним 03/03/20 Втр 00:04:54 1621534269
>>1621529
ты должен знать С на каком-никаком уровне, но сложные чисто сишные идиомы и прочее нахуй не нужны.
Аноним 03/03/20 Втр 00:07:37 1621537270
>>1621534
>сложные чисто сишные идиомы
Это что?
Аноним 03/03/20 Втр 00:09:06 1621539271
>>1621537
как я понимаю, что прям задротом быть не нужно, а нужно понимать основы
Аноним 03/03/20 Втр 00:11:14 1621541272
>>1621539
Ну как ты определишь, когда переставать быть задротом? Хоть примеры бы какие назвал.
Аноним 03/03/20 Втр 00:13:15 1621543273
>>1621537
GOTO для эмуляции RAII например, ебанутые макросы вместо тимплитов и прочая хуйня с ручным мемори менеджментом вместо сиплюсплюса.

Ну это то, что в голову пришло сразу
Аноним 03/03/20 Втр 00:14:46 1621545274
>>1621541
для меня, когда ты уже можешь работать на уровне синьёра
Аноним 03/03/20 Втр 00:16:27 1621546275
>>1621545
Ага, то есть, чтобы начать учить с++ надо знать С почти на уровне сеньёра, я тебя правильно понял?
Аноним 03/03/20 Втр 00:17:36 1621548276
>>1621546
Ты можешь начинать учить прям сразу с С++ (например по яндексовским курсам с курсеры), а потом плавно спускаться на уровень чистого си, чтобы работать с операционной системой, которая отдает сишные интерфейсы
Аноним 03/03/20 Втр 00:19:18 1621551277
Аноним 03/03/20 Втр 00:19:35 1621552278
>>1621546
нет, я имею в виду, что знать так не нужно
Аноним 03/03/20 Втр 00:57:34 1621557279
>>1621167
>а класс utf8_string никто не завозил
И никогда не завезут, клован блядь, разобрался бы как utf8 работает. Половина методов будет аналогична std::string, а для другой нужно будет писать аналог icu чтобы они работали правильно.

>>1621214
>Но ведь весь винапи использует юникод.
Собственно о том и речь, что WinAPI A-функции теперь жрут utf8 строки. Разумеется проверять это я не буду

>>1621546
>на сколько важно знание C в изучении C++
Лишним не будет. Считай линкер работает примерно также, препроцессор такой же, низкоуровневая работа с указателями такая же. Притом, на работу новичков берут охотней, поскольку язык проще.
Аноним 03/03/20 Втр 01:56:59 1621585280
>>1621215
не очень, толку маловато, как на си++ писать она не учит
Аноним 03/03/20 Втр 01:58:04 1621587281
>>1621445
тухло, ку-тэ нужно в основном в НИИ парашах разных, в коммерции на хуй никому не упало. Сейчас вполне хватит с++ и stl.
Аноним 03/03/20 Втр 01:59:32 1621588282
>>1621557
си важен только с академической точки зрения. Раскрывает многие понятия и можно сразу что-то полезное делать, не стреляя себе в ногу. В коммерции на хуй не упал сейчас, вакансий ультрамало.
Аноним 03/03/20 Втр 02:36:17 1621598283
>>1621587
Блядь, лол, ну тебе с дивана виднее.
Аноним 03/03/20 Втр 08:50:30 1621648284
>>1621588
На заводах в микрухах си.
Аноним 03/03/20 Втр 12:11:04 1621791285
>>1621598
слышь, петух, ебало закрой, я на ку тэ уже 5 лет пишу и работу хуй найдешь, что бы с этого ку тэ на норм зарплаты перелезть, либо stl и прикладнуху задротить надо вроде матан, сети вообще на яву переползать, у меня все крестовики знакомые давно уже с крестов съеблись, т.к. на си++ на 120к надо деревья вращать на собеседовании и 5+ опыта, а на яве просто на шару для людей с опытом из 10 собесов на 5 120 предлагают, за яву в ДС вообще херки рвут все, ява нужна, программистов нет, всех сбербанк скупил, а крестобляди поползли с регионов с закрывающихся к хуям заводов и прочих роскосмосов с обороночками, говорят там вообще лютый пиздец
Аноним 03/03/20 Втр 12:14:45 1621795286
Пацаны, как из крестопетухов и обороночки перекатиться в крестобоги? Какие курсы порекомендуете?
Аноним 03/03/20 Втр 12:16:23 1621798287
>>1621795
Просто™ и без задней мысли™ меняешь место работы, остальное само придёт, если ты не овощ
Аноним 03/03/20 Втр 12:19:29 1621801288
Двачеры, что сейчас хоть на собеседованиях спрашивают по си++? Как на счет того что бы организовать какой-нибудь чатик? Ранее я пытался с одним аноном кентануться и выслал ему подробные разборы вопросов с собеседований которые сам проходил (я был на двух и вопросы были интересные), но он потом куда-то пропал, так что для всех заинтересованных пишите мне на
agnomad1488@gmail.com, ну и могу ньюфаням что-то подсказать.
Аноним 03/03/20 Втр 12:33:17 1621820289
Аноны, почему статический член класса нельзя определить в функции main, а надо обязательно либо в хедере либо в спп файле? Не понимаю, объясните пожалуйста.
Аноним 03/03/20 Втр 13:16:44 1621844290
>>1621820
Потому что переменные в функциях создаются на стеке?
Аноним 03/03/20 Втр 13:51:39 1621872291
>>1621820
Потому что член класса - внутри класса, а свободная функция - стоит вне всех классов.
Аноним 03/03/20 Втр 13:56:11 1621876292
>>1621820
А мне интересно, зачем и как именно нужно дробить эти cpp файлы, почему нельзя в хедере все прописать и что за hpp файлы?
Аноним 03/03/20 Втр 14:00:36 1621880293
>>1621557
>а для другой нужно будет писать аналог icu чтобы они работали правильно
Так пусть пишут, я знаю, что с utf8 не все так просто и символы там могут быть разного размера, но почему-то в других языках где utf8 есть изкаробки все прекрасно работают включая доступ к произвольному элементу и тд.
Аноним 03/03/20 Втр 14:11:55 1621890294
>>1621880
Потому что туда впендюрили аналог icu. В жс например charCodeAt и codePointAt разные функции.
Аноним 03/03/20 Втр 14:27:25 1621900295
>>1621876
Это описывается в начале учебников по языку.
Аноним 03/03/20 Втр 14:49:05 1621924296
>>1621150
> ActiveCodePage property in the appxmanifest for packaged apps, or the fusion manifest for unpackaged apps, to force a process to use UTF-8 as the process code page.
> You can declare this property and target/run on earlier Windows builds, but you must handle legacy code page detection and conversion as usual.

Чет херота какая-то, надо мудрить с какими-то манифестами, которые ещё и могут не сработать.
Аноним 03/03/20 Втр 15:38:39 1621947297
>>1621801
Отписался, скинь свои вопросы, а я тебе. Скажи ты был на собеседовании в компании что на Бауманской? Мне там тоже такое досталось?
Аноним 03/03/20 Втр 16:25:17 1621976298
Аноним 03/03/20 Втр 16:26:37 1621979299
class Buttons : puЫic QGroupBox {
Q_OBJECT
puЬlic:
Buttons(QWidget* pwgt = 0); }
Почему 0 а не NULL?
Аноним 03/03/20 Втр 16:27:47 1621980300
>>1621979
потому-что говноедское implicit конвертирование.

А вообще - nullptr
Аноним 03/03/20 Втр 16:30:40 1621984301
>>1621557

>>Но ведь весь винапи использует юникод.
>Собственно о том и речь, что WinAPI A-функции теперь жрут utf8 строки.

Но это включается только глобально и может привести к куче проблем (и приводит, например в некоторых драйверах)
Вот если бы это можно было бы на уровне бинарника манифестом включать (как dpi, long path и прочее)....
Аноним 03/03/20 Втр 16:37:16 1621994302
>>1621979
Ну а что ты хочешь от людей с raw pointers в 2020
Аноним 03/03/20 Втр 16:37:29 1621995303
>>1621900
Блин, несколько книжек читал, там нифига, в начале всегда про пресловутый хелоуворлд. В Керниган-Ричи нашел действительно, правда в середине.
Аноним 03/03/20 Втр 16:38:19 1621996304
>>1621980
>>1621994
Я думал, что Qt это передовая часть экосистемы C++?
Аноним 03/03/20 Втр 16:39:47 1621997305
>>1621996
QT - это свой ебанутый диалект говноедский, который за счет легасевой нагрузки не имеет никакого отношения к модерновому С++.
Аноним 03/03/20 Втр 16:46:04 1622004306
>>1621996
Некоторые вообще не считают кьюти плюсами. Например такой вещи как Q_OBJECT в языке не существует, это для их собственной утилиты.
Аноним 03/03/20 Втр 17:12:21 1622031307
>>1621980
>>1621979

Знаете какое значение макроса NULL? Правильно, implementation defined. По крайней мере был. Да наверно и щас.

>>1621996
Нее, чел, кутэ это полная срака. Я на работе переписываю гуиху на электрон, потому что кутэ это срака...
Core на крестах.

>>1622004
>Некоторые вообще не считают кьюти плюсами. Например такой вещи как Q_OBJECT в языке не существует, это для их собственной утилиты.

О боже, эти божественные слотосигналы из кутэ...

Аноним 03/03/20 Втр 17:26:25 1622047308
>>1621876
А мне интересно, зачем и как именно нужно дробить эти cpp файлы, почему нельзя в хедере все прописать

Потому что C++ это язык для даунов, вот почему.

А вообще, можно. Но не в хидере. Наоборот, хидеры нахуй.
https://en.cppreference.com/w/cpp/language/modules

> что за hpp файлы?

Это заголовочные файлы.
.c и .h в С, .cpp и .hpp в C++. Но в C++ так же поддерживается и h.

Почему же большая часть разработчиков использует .h? Потому что пидорасы.
Аноним 03/03/20 Втр 17:27:46 1622049309
>>1622031
>Я на работе переписываю гуиху на электрон
Удобнее чем qml?
Аноним 03/03/20 Втр 17:28:58 1622050310
>>1622049
Он просто js лучше знает.
Аноним 03/03/20 Втр 17:33:07 1622054311
>>1622050
Так в qml тоже есть жс, лол.
Аноним 03/03/20 Втр 17:39:50 1622060312
>>1617857 (OP)

Сап, антуаны.
Хочу вкатиться в С++ из своей уютной промышленной автоматизации, поскольку все больше производителей контроллеров включают его в список поддерживаемых языков, помимо языков из стандарта IEC61131-3.

Подскажите пожалуйста с чего начать? Поскольку я привык работать с железом когда оно включается, едет, греет, крутит-вертит и так далее. А тут сплошная абстракция на абстракции с кучей непонятных терминов типа header файлы и прочее и прочее.
Аноним 03/03/20 Втр 17:41:23 1622063313
>>1622049
Qml тоже та ещё пепла и нужен в трёх шарагах
Аноним 03/03/20 Втр 17:49:19 1622071314
Аноним 03/03/20 Втр 18:02:14 1622086315
>>1622060
> А тут сплошная абстракция на абстракции с кучей непонятных терминов типа header файлы и прочее и прочее.

Ты чё, на ассемблере писал чтоле?))))
Аноним 03/03/20 Втр 18:19:24 1622101316
>>1622063
Я не про это спросил.
Аноним 03/03/20 Втр 18:57:28 1622127317
Зачем так много этих кастов наплодили? Почему компилятор сам не может проанализировать данные и выбрать правильный каст? Алсо, реквестирую читщит по кастам, сколько не читал все равно путаюсь.
Аноним 03/03/20 Втр 19:06:53 1622140318
Аноним 03/03/20 Втр 19:10:46 1622149319
>>1622086

В том числе)) серьезно, один из языков стандарта IEC это что-то похожее на ассемблер

Нет, я скорее про отсутствие связи с воплощением результата в реальности. Ну тип все курсы начинают с дрочки в консоль и это уныло. В АСУТП ты можешь чуть ли не сразу щёлкать реле и делать всякие прикольные штуки например опрокинуть тонну пакетов молока нахуй
Аноним 03/03/20 Втр 19:19:13 1622158320
>>1622127
Тебе нужен только статик каст и бит каст (пока нету С++20 - то реинтерпрет каст)
Аноним 03/03/20 Втр 19:34:20 1622176321
>>1622140
Его говорят не использовать. Алсо (type)var и type(var) - одно и то же?

>>1622158
А подробнее? Что в с++ 20 изменится?
Аноним 03/03/20 Втр 19:37:44 1622183322
>>1622149
Дак бери МК и долбись в порты. Диодами помигай, i2c попользуй
Аноним 03/03/20 Втр 20:13:33 1622247323
>>1622140
сегодня нормальные компиляторы уже ворнинги выдают на c-style касты
>>1622127
>Почему компилятор сам не может проанализировать данные и выбрать правильный каст?
а как компилятор узнает нужно статическое или динамическое преобразование, если переменная-указатель и в то и в другое может?
>>1622127
>реквестирую читщит по кастам
https://habr.com/ru/post/106294/
Аноним 03/03/20 Втр 20:29:21 1622255324
>>1622176
> Алсо (type)var и type(var) - одно и то же?
Нет, первое - это си-стайл, второе - functional style.
Аноним 03/03/20 Втр 20:54:29 1622293325
>>1621791
>топ 10 ИТ компания, куча проектов на Qt
>челик с двачей сказал, что неактуально
Ну лан.
Аноним 03/03/20 Втр 21:05:09 1622303326
Аноним 03/03/20 Втр 21:05:22 1622305327
Сап двач. Возможно ли компилировать только изменённые .cpp файлы а потом линковать их с уже скомпилированными файлами .o? Я видел такое, но как именно это делается, каким софтом?
Аноним 03/03/20 Втр 21:23:31 1622321328
>>1622305
Система сборки
Для студии это делает MSBuild
Аноним 03/03/20 Втр 21:44:30 1622344329
>>1622305
компилируешь в КОНСОЛЬКЕ?
Любая билдсистема умеет это делать за тебя.
Аноним 03/03/20 Втр 21:47:56 1622346330
>>1622305
Да, и давно уже есть предкоипилированные хедеры, полезно для объемных хедер онли библиотек и прочего.
Аноним 03/03/20 Втр 21:49:46 1622348331
>>1622305
Асло для сокращения времени компиляции придумали pimpl.
Аноним 03/03/20 Втр 22:09:21 1622359332
>>1622348
Чето юзлесс херня какая-то, уменьшает время компиляции, но имеет оверхед во время выполнения.
Аноним 03/03/20 Втр 22:12:25 1622362333
Аноним 03/03/20 Втр 22:13:08 1622364334
>>1622348
Пимпл тащемто не для этого придумывали
Аноним 03/03/20 Втр 23:13:15 1622428335
>>1621984
>Но это включается только глобально и может привести к куче проблем (и приводит, например в некоторых драйверах)
>Вот если бы это можно было бы на уровне бинарника манифестом включать (как dpi, long path и прочее)....
Оно и включается манифестом.
Глобально было во время бета-тестирования.
Аноним 03/03/20 Втр 23:20:21 1622442336
Опытный анон, работающий под GNU/Linux, расскажи, пожалуйста, про свой набор инструментов.
1. DE (WM?), файловый менеджер (консоль?), среда разработки (редактор кода?).
2. Используешь ли какой-то фронтенд для Git'а? А если через консоль все хуяришь - следишь ли за чистотой коммитов или тебе поебать?
3. Ну по мелочи еще расскажи что-нибудь. Например, на чем виртуалки крутишь, или как дела вообще.
Аноним 04/03/20 Срд 00:26:14 1622506337
>>1622442
ubuntu норм (debian или arch тоже, но у большинства тех, вместе с кем работаешь, будет ubuntu)

с файловым менеджером, ide, gui, фронтендом для git-a — идёшь нахуй
используй vim+tmux, исполняй в консоли

для чистоты коммитов — git diff, git add --patch и прочее
git log --graph тебе фронтенд, лол

если есть малейшая возможность не использовать виртуалку — не используй
иначе — virtualbox норм (ну, насколько вообще такое может быть норм)
Аноним 04/03/20 Срд 00:32:09 1622512338
>>1622506
>если есть малейшая возможность не использовать виртуалку — не используй
>иначе — virtualbox норм (ну, насколько вообще такое может быть норм)
Что плохого в виртуалках? Тем более в линуксах такое раздолье с qemu+kvm. Это не говоря о контейнерах, которые вообще манна небесная. Свернул, развернул, упаковал, заморозил, разморозил, назад к ошибке отшагал. Красота! Или одной командой создал, воспользовался, а потом удалил вообще без хвостов.
Аноним 04/03/20 Срд 00:39:09 1622522339
>>1622512
зачем держать у себя windows и запускать виртуалку с linux, если можно поставить linux?
не будет тормозить, как минимум, и всякой пежни (типа vbox-guest-additions) тоже не будет
то, что контейнеры хороши, тут вообще ни при чём
Аноним 04/03/20 Срд 00:43:00 1622525340
>>1622522
Я думаю, вопрос не про это был. Виртуалки он собрался использовать на линуксе. Виртуалки с другими линуксами, или вообще для написания ос под какую-нибудь атмегу. Не говоря уже о упаковке своих проектов в докер, что вообще стандартная практика на сегодняшний день.
Аноним 04/03/20 Срд 00:45:19 1622528341
Аноним 04/03/20 Срд 00:46:11 1622530342
>>1622506
Спасибо.
А по плагинам для vim'а что? Ну, бывает же такое, что ты включаешь в файл какой-нибудь, блядь, #include <linux/sched.h>, и такой, ээ как там че называется. А пока в системе его откопаешь - поседеешь.
То есть, переход к хэдеру, наверное, минимум необходимый. Юзаешь что-то? Вся подобная хуйня, что встречал, завязана на clang.
Вообще, если не западло, скинь свой .vimrc.
Я сам сейчас думаю - юзать vim или же qtcreator + fakevim.
Аноним 04/03/20 Срд 00:54:22 1622539343
webcam-toy-phot[...].jpg (81Кб, 800x600)
800x600
Народ, надо помочь другу с универской задачей, давно не писал на плюсах и глубоко в библиотеки никогда не лез, ибо решал вычислительные задачи.

Задача: дан бинарный файл f1 формата BMP. Требуется реализовать считывание и запись в файл f2 всей служебной информации, которая содержится в f1.

Не могу нагуглить, что за служебная информация в файле, что она собой представляет. Существуют ли методы стандартной библиотеки чтобы ее получить?

Я изучил файловый ввод/вывод, знаком с std::ios_base::binary, но толка хуй есть. Подскажите, братцы, пожалуйста.
Аноним 04/03/20 Срд 00:55:57 1622543344
>>1622530
>А по плагинам для vim'а что?
https://www.youtube.com/watch?v=XA2WjJbmmoM
https://www.youtube.com/watch?v=wlR5gYd6um0
+ книгу читай

>пока в системе его откопаешь - поседеешь.
nerdtree + :! grep

>если не западло, скинь свой .vimrc
формируй сам (с нуля), дело здесь не в "западло/не западло"
для начала попробуй christoomey/vim-tmux-navigator и easymotion/vim-easymotion
ну и nerdtree

>Я сам сейчас думаю - юзать vim или же qtcreator + fakevim.
только первый вариант
Аноним 04/03/20 Срд 01:11:58 1622556345
Аноним 04/03/20 Срд 01:19:57 1622560346
>>1622428
О, надо почитать, а то во время беты посмотрел, увидел глюки и забил
Аноним 04/03/20 Срд 01:47:51 1622566347
Безымянный.png (53Кб, 842x549)
842x549
У меня в системе 125% стоит масштабирование, это из-за этого предупреждение? Я главное загуглил про это, и там предлагают писать сразу в main переменную окружения
qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1");
но мне не помогает никак, неправильно задаю ее что ли?
Аноним 04/03/20 Срд 01:59:29 1622567348
>>1622566
Во, задал qputenv("QT_SCALE_FACTOR", "1.25"), предупреждение пропало.
Аноним 04/03/20 Срд 06:20:24 1622628349
>>1621557
> Собственно о том и речь, что WinAPI A-функции теперь жрут utf8 строки
И кому оно надо? Вот включишь, и будут у тебя проблемы с русским языком (раунд два). Потому что десяточкой мир не ограничивается, да и старых десяточек тоже навалом.
Аноним 04/03/20 Срд 09:11:04 1622664350
Аноним 04/03/20 Срд 11:05:47 1622733351
>>1622628
>да и старых десяточек тоже навалом
Сами себе враги.
Аноним 04/03/20 Срд 11:43:05 1622746352
>>1622303
если ты знаешь что ты хочешь от кода, то ты знаешь
Аноним 04/03/20 Срд 12:32:47 1622784353
>>1622746
Ну охуеть теперь. Допустим я выделил память через std::malloc и хочу привести ее к структуре, инициализировать структуру и передать куда-то. Какие тут вариации поведения могут быть? static или reinterpret в этом случае использовать?
Аноним 04/03/20 Срд 13:06:02 1622815354
>>1617857 (OP)

Объясните пожалуйста нубу, нахуя нужен #define?

Я всмысле, только для создания препроцессорных функций и констант? В чем преимущество, когда есть обычное объявление и определние переменных с функциями в основном коде?
Аноним 04/03/20 Срд 13:08:58 1622817355
>>1622784
static конечно, динамичности в описываемой ситуации нет, + в отличии от reinterpret, переводит потенциальную ошибку на время компиляции
Аноним 04/03/20 Срд 14:16:15 1622871356
>>1622815
>Объясните пожалуйста нубу, нахуя нужен #define?

Он нужен, когда пишешь на няшной плейн сишечке, а не на изувеченной диавольскими кознями пародии.
Аноним 04/03/20 Срд 14:23:14 1622875357
>>1617857 (OP)
С фига ли функция не может вернуть массив НО может вернуть массив в составе другого объекта?..
Аноним 04/03/20 Срд 14:31:05 1622883358
>>1622875
Потому что не умеет предавать размер массива, а размер объекта умеет.
Аноним 04/03/20 Срд 14:42:06 1622886359
Аноним 04/03/20 Срд 14:42:17 1622887360
>>1622875
>С фига ли функция не может вернуть массив НО может вернуть массив в составе другого объекта?..


вектор возвращай, маня, и будет тебе щастье
Аноним 04/03/20 Срд 14:49:41 1622892361
>>1622887
Но ПОЧЕМУ не могу вернуть массив? Вы в cpp треде так-то, а не в js -параше

>>1622883
Почему с размером не может разобраться вызывающая программа?
Аноним 04/03/20 Срд 14:55:06 1622893362
>>1622892
>Почему с размером не может разобраться вызывающая программа?
Потому что она тоже не знает размер.
Аноним 04/03/20 Срд 14:57:36 1622894363
>>1622892
std::array возвращай, мы тут на С++ пишем
Аноним 04/03/20 Срд 15:23:58 1622925364
>>1622875
Ну формально просто потому, что такой синтаксис. Массивы конвертятся в указатели на своё начало, когда упоминаются в выражениях, и поэтому массив нельзя передать в функцию, присвоить другому массиву, и соответственно, вернуть из функции. А когда он в составе другого объекта, то его имя при копировании явно в коде не упоминается, и конвертацию можно обойти.
Аноним 04/03/20 Срд 15:31:44 1622937365
>>1622442
Подрубаюсь по ssh и кожу с винды с вскода, в консольке билжу/дебажу/с гитом работаю/тесты пускаю и тп.
Аноним 04/03/20 Срд 15:36:32 1622940366
>>1622442
А дома убунта gnome qtcreator, но дома я редко чета делаю кроме двачевания с маняме.
Аноним 04/03/20 Срд 15:59:11 1622955367
>>1622815
для отладки бывает полезно
пишешь #define DEBUG
и дальше часть кода в макросах
#ifdef DEBUG
std::cout<<"SHIT!"<<std::endl;

можно переменные генерировать
#definam make_int(a) int var_##;
Аноним 04/03/20 Срд 16:10:12 1622963368
Аноним 04/03/20 Срд 16:11:07 1622965369
Народ, привет. Как можно достучаться к конкретному биту в int'е, например? Я хочу посмотреть его значение, ноль это или один, хочу изменить это значение, вывести на экран. Как это можно сделать?
Аноним 04/03/20 Срд 16:12:08 1622967370
>>1622965
сдвигаешь на нужное количество вправо и делаешь & 1 ?
Аноним 04/03/20 Срд 16:41:20 1622984371
image.png (16Кб, 631x135)
631x135
Объясните тупому школьнику, как решить эту задачу?...Если нельзя передавать параметр, то значит я должен в самой функции вводить с клавиатуры, но при каждой итерации рекурсии он заново будет вводить...
Аноним 04/03/20 Срд 18:09:07 1623047372
>>1622875
Так исторически сложилось. /question
Аноним 04/03/20 Срд 18:09:52 1623048373
image.png (12Кб, 422x137)
422x137
Аноним 04/03/20 Срд 18:10:03 1623050374
>>1622965
гугли побитовые операторы
Аноним 04/03/20 Срд 18:21:16 1623063375
Аноним 04/03/20 Срд 18:21:52 1623064376
>>1622984
Напиши вариант с передаванием параметра.
Потом м
Аноним 04/03/20 Срд 18:22:34 1623067377
>>1622984
Потом посмотри как от него избавиться (хинт - тебе надо будет возвращать результат обратно по стеку вызово)
Аноним 04/03/20 Срд 18:54:38 1623089378
>>1622784
>reinterpret
Вообще никогда не трогать, кроме тех мест, где без него не компилится.
Аноним 04/03/20 Срд 19:23:32 1623133379
>>1623063
Да, такое. Так я и говорю, что он выполняет твой cin при каждой рекурсии. Или то что ты кинул у тебя робит и это у меня траблы с компилятором?
Аноним 04/03/20 Срд 20:22:32 1623181380
Подскажите как грамотно сделать парсер арифметики? Подается строка типа такой: 5+6*myfunc(5,6) + myfunc(10,45)/25 и нужно вычислить значение. Моя идея просто заменять вхождения myfunc на значения и евалить, но может можно как-то более грамотно?
Аноним 04/03/20 Срд 20:26:24 1623189381
1433785349640.png (34Кб, 515x603)
515x603
>>1623133
Ты так и не разобрался что ли? Я же выше написал как. Там всего пара строчек.
Аноним 04/03/20 Срд 20:44:24 1623207382
>>1623181
Если есть чем посчитать выражение в строке без функции, то в чем проблема допилить туда расчёт твоей функции?
Аноним 04/03/20 Срд 20:48:26 1623212383
>>1623181
Парсером ты строишь дерево, а потом евалом считаешь, так? Просто функция - это такой же токен, как и операция, например +. Подумай что будет при вызове myfunc(myfunc(1,2), myfunc(3,4))
Аноним 04/03/20 Срд 20:56:09 1623213384
>>1623207
>>1623212
эх, придется значит свой парсер городить (или украсть и испортить чей-то), а я хотел готовым воспользоваться.
Аноним 04/03/20 Срд 21:03:51 1623222385
>>1623213
Ну так загугли что-нибудь вроде "simple math parser c++" и замени их синусы на свои mOyA_FuNcTiA
Аноним 05/03/20 Чтв 00:22:29 1623442386
Аноним 05/03/20 Чтв 00:24:11 1623443387
>>1623442
А как с отуса слить видео? Каким аддоном для фуррифокса? Те, которые я нашел, не умеют качать оттуда.
Аноним 05/03/20 Чтв 00:25:29 1623445388
>>1623443
Ну скачиваешь видео, задачники и прочие материалы, упаковываешь и заливаешь на торрент или какие-то рекурсы. Не думаю что для этого специальные плагины есть, хотя я за слова не отвечаю
Аноним 05/03/20 Чтв 00:28:45 1623446389
>>1623445
>Ну скачиваешь видео
Как скачать-то? Там в исходнике страницы есть прямые ссылки на видео?
Аноним 05/03/20 Чтв 00:32:50 1623449390
>>1623446
Попробуй райтклик -> Inspect/Посмотреть код -> Откроется консолька, там будет типо <video clas... и где-то среди кучи хтмл тегом будет ссылочка, на нее райтклик и открыть в новой вкладке, а там уже она либо через multipart скачается сама, либо плеер откроется как на дваче и можно будет скачать
Аноним 05/03/20 Чтв 00:38:39 1623451391
>>1623449
Ты так пробовал делать на любом другом курсе, где тебе доступно видео?
Аноним 05/03/20 Чтв 00:44:41 1623454392
>>1623451
На Отусе нет, на степике работает
Аноним 05/03/20 Чтв 13:42:12 1623798393
Синьоры на месте? Когда на собесе спрашивают, типо вот у нас в программе утечки памяти, как средствами, встроенными в язык, то есть без профайлеров там и все такое, бороться с ними? Отвечаешь типо использовать умные указатели, на что говорят, что обернув все в умные указатели все равно видим что память куда-то расходуется, что делать? Сказать типо про RAII, но это же по сути то, что и делают умные указатели, короче че тут надо сказать?
Аноним 05/03/20 Чтв 13:53:30 1623808394
Аноним 05/03/20 Чтв 14:32:56 1623849395
>>1623798
Правильный ответ - валгринд, или тот же студийный профайлер, который это все тоже показывает.

Хуевый ответ, который удовлетворил бы местных обалдуев - перегрузить new\delete, написать свой аллокатор, и прочая тупая хуйн

Аноним 05/03/20 Чтв 15:34:13 1623903396
>>1623798
Ничего не говорить, харкнуть им в ебало и уйти (убежать от охраны). Если в смарт птры обернуто действительно все, то никаким образом утечки происходить не могут
Аноним 05/03/20 Чтв 15:47:52 1623915397
Аноним 05/03/20 Чтв 15:48:17 1623917398
Аноним 05/03/20 Чтв 15:59:59 1623926399
>>1623915
Сам такой термин придумал или сосед по палате помог?
Аноним 05/03/20 Чтв 16:08:46 1623934400
>>1623849
> средствами, встроенными в язык
> без профайлеров
> валгринд, или тот же студийный профайлер,
> Правильный ответ
Вам перезвонят.
Аноним 05/03/20 Чтв 16:15:50 1623944401
>>1623934
А ты не силен в чтении, я смотрю
Аноним 05/03/20 Чтв 16:24:25 1623954402
1445979963402.png (12Кб, 387x290)
387x290
1553630551987.png (15Кб, 374x270)
374x270
>>1623926
>// пикрил 1
template<T, Count>
class CircleReference {

>// Тут Count вложений генерим рекурсивно через шаблоны, хз как это сделать, но уверенн, что так можно
unique_ptr<unique_ptr<...<unique_ptr<pair<T, void *>> start;

>// В конструкторе редуцируем по одной обертке и заполняем последнюю ссылку самим значением
CircleReference(T value) {...}

}

>// пикрил 2,по сути тоже самое но каждая ссылка ссылается на pair, используются shared_ptr

>// последняя ссылка, содержит ссылку на start не типизированно, так как иначе тип пришлось бы выводить бесконечной рекурсией

Если что, я сам изобрел эту семантику ссылки, так что все лавры мне
Аноним 05/03/20 Чтв 16:25:33 1623956403
>>1623954
Применения пока не нашёл, но думаю найдется
Аноним 05/03/20 Чтв 16:36:00 1623965404
>>1623954
И что это за гавнопентаграммы? Распиши последовательность шагов, которая приводит к утечке в такой структуре

>хз как это сделать, но уверенн, что так можно
Кароч ты мамкин фантазер

>семантику ссылки
Без комментариев
Аноним 05/03/20 Чтв 16:38:41 1623968405
Аноним 05/03/20 Чтв 16:51:04 1623977406
>>1623915
>>1623965
>>1623954

Ньюфагов полон тред. Другое дело, что за такой код (да и вообще шаред поинтеры без надобности) вам не перезванивают.
https://gcc.godbolt.org/z/ZsUfwz

мимо-нвидияблядь
Аноним 05/03/20 Чтв 17:08:04 1624006407
>>1623977
А хули там так много? Всего то надо static счетчик добавить
Аноним 05/03/20 Чтв 17:13:42 1624016408
>>1624006
Очевидно, что в коммитете сидят старые пердеды, вся интеллектуальная деятельность которых ограничивается написанием велосипедов, которые они придумывали на листочках в студенчестве
Аноним 05/03/20 Чтв 17:22:23 1624029409
>>1624016
Да у них еще и баб нету скорее всего. Так и вижу этих переполненных завистью и злобой дедов, хуярящих говнокод со скоростью света, лишь бы поднасрать таким успешным плейбоям-гениям как нвидиакун
Аноним 05/03/20 Чтв 17:35:50 1624047410
>>1623977
Знаешь баззворд и решение частной задачи, красавчик

А пафоса то, аж подписался что из нвидиа. Обосрался от смеха тебе в подгузники, лалка
Аноним 05/03/20 Чтв 17:45:23 1624057411
Аноним 05/03/20 Чтв 18:49:07 1624161412
>>1623944
А ты в формальной логике.
Аноним 05/03/20 Чтв 18:53:47 1624163413
>>1623915

хм, а чем круговые ссылки мешают?
понятно, что из-за них нельзя использовать референс каунтинг для сборки мусора. Но если ты птыаешься найти утечку - просто в конце выполнения программы выведи все аллоцированные куски, которые не освободила программа, будет тебе щастье.
Аноним 05/03/20 Чтв 19:03:02 1624171414
>>1623977
Наконец-то нвидия-кун усмирил обезумевших студентиков.
Аноним 05/03/20 Чтв 19:42:45 1624208415
>>1624163
Они и не в конце программы память жрут.
Предположим ты открываешь новое окно, а там parent.child = shared_ptr(this) и this.parent = shared_ptr(parent). Закрываешь окно, ничего не удаляется, утечка.
Аноним 05/03/20 Чтв 21:15:02 1624388416
>>1617857 (OP)
1,5 года опыта работы на Питоне и JS влетел в тред
В обоих этих ЯПах четко присутствует понятие namespace-a: если я пишу import this_module, я потом вызываю код из этого модуля как my_module.func(), можно также подгрузить определенные объекты в общую область видимости конструкцией типа from module import apple, peach и сразу все ясно: откуда эта переменная пришла и соответственно можно оперативно посмотреть ее сигнатуру и документацию
Когда читаю проги на С++ (и в особенности на С), вижу include, но по коду абсолютно не ясно, откуда эта функция/класс взялись. Как эту проблему решать?..
Аноним 05/03/20 Чтв 21:48:36 1624487417
>>1624388
Если ты в блокноте програешь, то да, это проблема
Аноним 05/03/20 Чтв 21:52:08 1624492418
>>1624388
Также как ты пишешь import module, в начале программы идет #include "file"
from module import apple будет соответственно #include "file" \ using apple = somefucking::apple
Аноним 05/03/20 Чтв 22:12:48 1624525419
>>1624388
Модули добавили в 20 стандарте.
Асло в крестах есть четкое понятие неймспейса, но оно ортогонально заголовочным инклуженым файлам, которые могут включать несколько неймспейсов, или один неймспейс может быть размазан по многим файлам.
С иде никаких проблем, связанных с этим, нет, вон решарпер даже за тебя инклуды ставит на неизвестные функции.
Аноним 05/03/20 Чтв 22:18:36 1624534420
>>1617857 (OP)
Сколько старого кода перестанет компилиться из-за появления ключевых слов module и import?
Аноним 05/03/20 Чтв 22:19:44 1624535421
>>1624492
>using
В Си такого нет
>в начале программы идет #include "file"
Это конечно круто, но как я узнаю что класс, используемый в этом файле относится именно к "file"? Особенно если этих инклюдов штук 5?

>>1624525
>в крестах есть четкое понятие неймспейса
А в Си?.. Разбирался на досуге с парой прог, которые прошивают микроконтроллеры - лютая хуйня

>>1624487
Закономерный вопрос: а как на этой хуйне можно было писать в начале нулевых?.. Там же наверно пиздануться можно было
Аноним 05/03/20 Чтв 22:27:33 1624543422
>>1624535
>В Си такого нет
Ну так это Си++ тред, Си тред ниже.
Аноним 05/03/20 Чтв 22:48:46 1624581423
>>1624535
>Закономерный вопрос: а как на этой хуйне можно было писать в начале нулевых?.. Там же наверно пиздануться можно было
Вижуал Студии больше 20 лет, Эклипсу - почти 20. До этого тоже были всякие IDE и редакторы, которые сейчас уже забыты (тот же Борланд). Тот же емакс наверняка ещё в 90-е умел в автокомплит всего.
Аноним 05/03/20 Чтв 23:14:05 1624617424
>>1623798
Хз, мб выделять фиксированный кусок памяти при старте программы и освобождать его в конце работы, а всю аллокацию из этого куска делать.
Аноним 05/03/20 Чтв 23:16:19 1624621425
>>1624208
Вик птр заюзать, не?
Аноним 05/03/20 Чтв 23:17:53 1624626426
>>1624388
>import this_module
это аналогично using namespace module, а не include.
Аноним 05/03/20 Чтв 23:19:38 1624631427
>>1624535
>Это конечно круто, но как я узнаю что класс, используемый в этом файле относится именно к "file"? Особенно если этих инклюдов штук 5?
А как ты запомнил что apple и peach именно в этом модуле, а не в другом?
Аноним 05/03/20 Чтв 23:32:47 1624652428
>>1623954
Это что-то уровня Страуструпа или даже выше
Аноним 06/03/20 Птн 00:06:11 1624682429
Аноним 06/03/20 Птн 00:18:42 1624696430
>>1623977
Как это поможет в поиске утечек?
Аноним 06/03/20 Птн 00:24:33 1624701431
Аноним 06/03/20 Птн 00:27:37 1624702432
>>1624682
>>1624701
Почему? Где-то читал, что раньше не спешили добавлять новые кейворды именно из-за боязни сломать обратную совместимость.
Аноним 06/03/20 Птн 00:30:31 1624704433
>>1624702
Ну так keyword keyword'у рознь. Import будет контексто-зависимым словом, как и override например
Аноним 06/03/20 Птн 00:35:19 1624707434
Аноним 06/03/20 Птн 01:27:01 1624732435
>>1624208

но у тебя в конце выполнения всё равно останутся эти ресурсы не высвобожденными, вот и запалишь это в atexit'е
Аноним 06/03/20 Птн 10:51:36 1624899436
Сап двач, анон, кто может помочь мне с лабой? Дело такое что я файлв и структуры вообще не понимаю. А у меня в этом семе все лабы будут на этом построенны. Может у кого есть материал по этим темам?
Вот завтра нужно сдать лабу, а я нихуя не понимаю.
Залание такое - Написать программу обработки файла данных, состоящих из структур, в
которой реализованы следующие функции: стандартная обработка файла (со-
здание, просмотр, добавление); линейный поиск в файле; сортировка массива
(файла) методами прямого выбора и QuickSort; двоичный поиск в отсортиро-
ванном массиве
Условие такое - Информация о сотрудниках предприятия содержит: ФИО, номер от-
дела, наименование должности, дату начала работы. Вывести списки сотрудни-
ков по отделам в порядке убывания стажа. Ключ: дата начала работы.

Может даже кто-то репетиторством занимается? Я типо готов платить, потому что хочу разобраться в этой теме.
Помогите, иначе информатик пизды даст Аноним 06/03/20 Птн 11:03:38 1624906437
На шахматной доске 8х8 расположены три фигуры: ферзь, ладья и конь. Требуется определить количество пустых полей доски, которые находятся под боем. Для простоты будем полагать, что фигуры могут «бить» через другие фигуры. Например, в рассмотренной справа ситуации будем считать, что ферзь бьет D5 через ладью. Нарисовать в виде блок схемы
Аноним 06/03/20 Птн 11:45:19 1624923438
Аноним 06/03/20 Птн 13:13:19 1624988439
nahui.png (1Кб, 158x39)
158x39
>>1624923
Ты забыл самое главное

Аноним 06/03/20 Птн 13:42:28 1624998440
>>1624899
За день? Лол. Ну только если у тебя есть весь сегодняшний день целиком на это.
Аноним 06/03/20 Птн 13:43:02 1625000441
Аноним 06/03/20 Птн 15:21:57 1625057442
15851973-C718-4[...].png (576Кб, 1242x2208)
1242x2208
3A97E2DB-74E3-4[...].png (367Кб, 1242x2208)
1242x2208
Анончики, кто может помочь, объяснить задачи
Аноним 06/03/20 Птн 15:24:07 1625059443
:
Аноним 06/03/20 Птн 15:38:20 1625070444
>>1624906
>Для простоты будем полагать, что фигуры могут «бить» через другие фигуры.
Зачем?
Аноним 06/03/20 Птн 15:40:06 1625071445
>>1625057
Объясняю.
Найти количество четных элементов, следующих за последним по порядку нулевым элементом
Находишь последний нулевой элемент.
Потом считаешь четные элементы после него.
Всё.
Аноним 06/03/20 Птн 16:11:13 1625107446
>>1624998
Ну мне чисто хотя бы лабу понять
Аноним 06/03/20 Птн 16:37:23 1625132447
1461809550312.png (37Кб, 950x236)
950x236
>>1624906
Объяснений не будет
Аноним 06/03/20 Птн 16:43:55 1625139448
>>1624899
Имхо если не втыкаешь, надо брать академ и разбираться, иначе как снежный ком будет все идти, тут за день и даже за неделю не разберешься.
Аноним 06/03/20 Птн 18:42:07 1625267449
Аноним 06/03/20 Птн 19:06:07 1625276450
Аноним 06/03/20 Птн 19:28:53 1625299451
>>1625267
Во второй по идее больше ( указатель на указатель), но скорее соптимизируется и будет одинаково.
Аноним 06/03/20 Птн 20:36:36 1625335452
>>1624626
Тогда хрен ли это не так часто пишут, как include?


>>1624525
>добавили в 20 стандарте
Хуле так долго-то?
Аноним 06/03/20 Птн 21:35:29 1625439453
Аноним 06/03/20 Птн 21:41:55 1625455454
Стикер (319Кб, 512x512)
512x512
>>1625439
>разжевано
Если не можешь объяснить разницу одним предложением, то это одно и то же.
Аноним 06/03/20 Птн 22:28:03 1625491455
Так как все таки правильно инициализировать переменные в 2к2к? Везде хуячить auto и { } ?
Аноним 06/03/20 Птн 22:35:21 1625496456
Где прочитать про умные указатели в C++? Где используют и как реализовывать.
Аноним 06/03/20 Птн 22:51:46 1625515457
А есть ли разница между new и malloc?
Аноним 06/03/20 Птн 23:29:09 1625567458
>>1625515
malloc не вызывает конструктор, как минимум.
Аноним 06/03/20 Птн 23:44:36 1625597459
>>1625491
Если не шаблоны, то по человечески m_a = 0.0;
Если шаблоны, то смотреть внимательно, либо то же самое, либо {}
Аноним 07/03/20 Суб 02:19:49 1625857460
>>1625567

вопрос пиздец
в стиле
есть ли разница между тыквой и кузнечиком?
Аноним 07/03/20 Суб 05:45:53 1625892461
>>1625515
Ну, маллок есть в си, new нет. Странный вопрос на самом деле, и, очевидно, ответ зависит от того, зачем тебе вообще это нужно
Аноним 07/03/20 Суб 05:47:25 1625893462
>>1618746
За goto на любом собесе тебе насрут на ебальник. Goto, как правило, – признак очень плохого кода
Аноним 07/03/20 Суб 09:03:40 1625936463
Аноним 07/03/20 Суб 09:11:39 1625941464
>>1625893
>>признак очень плохого кода
Промытка, ты хоть раз работал с goto?
Аноним 07/03/20 Суб 09:14:37 1625943465
>>1625567
Да, а в cin не надо указывать тип, но функциональность ведь та же что и у scanf.

>>1625892
А это может быть использованно для чего-то помимо выделения памяти под структуры?
Аноним 07/03/20 Суб 09:55:44 1625960466
>>1625943
X p = (X)malloc(sizeof(struct X));
p->a = 1;
Грубо говоря это UB потому что объект не был создан.
Аноним 07/03/20 Суб 09:57:14 1625961467
>>1625960
X ⋆p = (X⋆)malloc(sizeof(struct X));
Аноним 07/03/20 Суб 09:58:26 1625963468
Салам аллуейкум, братья, жи есть.


У меня вылезает C6385 ворнинг. Не понимаю что не так, код такой:

CComplexVector(const CComplexVector& x) : size(x.size) {
arr = new Complex[size];
for (size_t i = 0; i < size; ++i)
arr = x.arr;
}

Вылезает на строчке с присваиванием значению элемента массива, arr - указатель внутри класса.

Что пишет вижуальная студия: Предупреждение C6385 Чтение недопустимых данных из "arr": доступный для чтения объем равен "(unsigned int)*16+4" байт, однако считать можно только "32" байт.

Не понимаю этой хуйни, подскажите, плз.
Аноним 07/03/20 Суб 10:02:04 1625964469
Аноним 07/03/20 Суб 10:04:30 1625967470
Аноним 07/03/20 Суб 10:22:57 1625986471
Аноним 07/03/20 Суб 10:24:27 1625988472
>>1625967
У него сайз просто переменная внутри
>>1625964
Индекс съело?
Аноним 07/03/20 Суб 10:39:36 1625999473
>>1625963
5 секунд в Гугле: это баг студии, исправлен в 16.4
Аноним 07/03/20 Суб 10:42:35 1626000474
>>1625988
>>1625999
Ну хз больше похоже на то что ты вместо размера используешь размер указателя. Но тебе конечно видней.
Аноним 07/03/20 Суб 11:04:46 1626013475
>>1625960
Что такое UB?

То же самое ведь получается: X p = new(X) ?
Аноним 07/03/20 Суб 11:10:35 1626018476
>>1625893
Исключения хуже goto. Там хоть метка есть, понятно куда управление передается.
Аноним 07/03/20 Суб 13:56:45 1626203477
image.png (57Кб, 590x237)
590x237
image.png (4Кб, 311x108)
311x108
анонесы что делать если код из книги не работает? нашел ее в шапке треда. написанно вроде, что последнею c++17 не поддерживает, но они разве так сильно отличаются? есть ли смысл продолжать ее читать?
Аноним 07/03/20 Суб 13:57:41 1626206478
image.png (1223Кб, 614x889)
614x889
Аноним 07/03/20 Суб 14:07:13 1626220479
>>1626203
Так ты ошибку прочитай
и тогда поймёшь, что обосрался с инклюдом
Аноним 07/03/20 Суб 14:10:30 1626223480
>>1626220
да бля я зыбыл приписать что сработал только исправленный мной код на 2 пике, а на 1 не сработал.
Аноним 07/03/20 Суб 14:26:09 1626238481
>>1626203
Ну смотри, не знаю кто такой этот твой Бьярне Страуструп, но видимо он вынес
#include <iostream>
using namespace std;
В отдельный файлик std_lib_facilities.h
И включает его. Наверное об этом написано где-то в первой главе. Или диск прилагался.
Аноним 07/03/20 Суб 14:29:06 1626243482
>>1625943
>А это может быть использованно для чего-то помимо выделения памяти под структуры?
Да. Есть placement new, который вызывает конструктор для указанного куска памяти и есть operator new, который как и malloc выделяет память без вызова конструктора, и вместо которого можно использовать malloc, если тебе так хочется.
Это может пригодится, если пишешь свой "высокопроизводительный" контейнер, реже использующий операции выделения/очистки памяти, аллокатор для стандартный контейнеров или свой промежуточный менеджер памяти, то есть считай не нужно, потому что уже есть куча аллокаторов и менеджеров на все цвета радуги.
Можно например вектор переписать с использованием realloc при изменении размера, и он будет работать быстрее стандартного, если realloc может изменять размер куска выделенной памяти прямо на месте, без создания нового блока, копирования в него и очищения исходного.
Аноним 07/03/20 Суб 14:31:06 1626248483
>>1626013
Нет не то же, конструктор не вызывается.
UB - Undefined Behavior, это значит что ты написал чушь с точки зрения компилятора, поэтому он имеет право делать что угодно, может будет работать, а может он вообще выбросит твой объект потому что его там не может быть.
Аноним 07/03/20 Суб 14:43:09 1626270484
>>1626238
спасибо, заработало хорошо. наверное все же с диском шло. в книге ничего
Аноним 07/03/20 Суб 14:48:34 1626273485
НА ДВОРЕ 2020 ГОД
@
У КРЕСТОЕБОВ ДО СИХ ПОР НЕТ ПАКЕТНОГО МЕНЕДЖЕРА
Аноним 07/03/20 Суб 14:50:20 1626274486
Аноним 07/03/20 Суб 14:59:04 1626278487
изображение.png (56Кб, 1366x768)
1366x768
изображение.png (76Кб, 1366x768)
1366x768
Как быть? Не устанавливается. В окошке на первом пике как я понимаю нужно выбрать путь установки, но окно пустое. После нажатие далее пикрил 2
Аноним 07/03/20 Суб 14:59:14 1626279488
>>1626273
Ты долбоеб что ли?
conan install package_name
Аноним 07/03/20 Суб 14:59:41 1626281489
Почему в питоне так много всяких очень полезных библотек, которых нет в c++?
Аноним 07/03/20 Суб 15:01:02 1626284490
Аноним 07/03/20 Суб 15:03:37 1626286491
>>1626278
посмотри в левый нижний угол друг мой ДРУЖИЩЕЕЕ
Аноним 07/03/20 Суб 15:07:39 1626288492
Аноним 07/03/20 Суб 15:17:22 1626307493
Аноним 07/03/20 Суб 15:19:53 1626311494
>>1626279
Мань, там полторы либы
Аноним 07/03/20 Суб 15:22:11 1626314495
Аноним 07/03/20 Суб 15:24:05 1626315496
>>1626284
>>1626288
Библиотек для работы с документами, морфолгией. В питоне очень много библиотек, с которыми легче работать чем с плюсовыми
Аноним 07/03/20 Суб 15:24:52 1626316497
Аноним 07/03/20 Суб 15:25:26 1626318498
изображение.png (67Кб, 1366x768)
1366x768
изображение.png (78Кб, 1366x768)
1366x768
Аноним 07/03/20 Суб 15:27:14 1626320499
>>1626318
не знаю но ты мусорку хоть почисти а то забилась вся
Аноним 07/03/20 Суб 15:29:15 1626322500
>>1626311
Больше похоже на полторы тысячи.
Аноним 07/03/20 Суб 15:38:04 1626328501
>>1626315
Ну насчёт доков хз, по-моему на плюсах тоже куча либ. Насчёт ЕЯ согласен, но хз почему так
Аноним 07/03/20 Суб 15:40:11 1626330502
Аноним 07/03/20 Суб 16:14:32 1626355503
Аноним 07/03/20 Суб 16:21:23 1626360504
>>1626281
Потому что ты путаешь язык и его стандартную библиотеку.
Аноним 07/03/20 Суб 17:05:21 1626412505
>>1626273
А зачем крестоёбам хипстерская поделка уровня js-говнокодерков?
Аноним 07/03/20 Суб 17:24:56 1626436506
>>1626278
Попробуй от имени адиминистратора.
Аноним 07/03/20 Суб 17:44:22 1626447507
Аноним 07/03/20 Суб 18:32:08 1626470508
Аноним 07/03/20 Суб 19:16:40 1626493509
Анончики, скачал и поставил VisualLeakDetector

Либы и заголовочные файлы подключил тоже

Но он ругается и ищет utility.cpp

Я его нашёл, он на гите в исходном коде есть, я его скачал, он начал жаловаться на несовпадение версий, но я продолжил и он в любом случае выдаёт ошибку

Необработанное исключение в "0x03238106 (vld_x86.dll)" в "TetrisGame.exe": 0xC0000005: Нарушение прав доступа при чтении "0x4e52454b".

Понятно что это за ошибка. У меня вопрос. Какого хрена? Как так и что я делаю не так?

Или это нормально и я настолько охуенен, что уже при старте рабочая программа не рабочая?
Аноним 07/03/20 Суб 20:37:47 1626558510
изображение.png (539Кб, 1024x1024)
1024x1024
>>1626493
Вобщем ошибка всё равно вываливается при старте, оказалось, что это проблема вин 10.

Ну ничего, всё равно память утекает не постоянно и сам процесс занимает 56 МБ оперативки, а чтобы перевалить за 100 нужно очень долго клацать. Всего 32ГБ, так что хватит за глаза, можно протекать сколько душе угодно, а я так хотел узнать где же проблема.
Аноним 07/03/20 Суб 20:47:39 1626572511
Аноним 07/03/20 Суб 21:07:11 1626597512
>>1625335
>Тогда хрен ли это не так часто пишут, как include?
Не знаааю, так же часто, как и импорт в питоне, может смотришь не там просто?
Аноним 07/03/20 Суб 21:10:05 1626604513
>>1624899
>файл
>структура
Там понимать нечего, что конкретно тебе непонятно?
Аноним 07/03/20 Суб 22:18:58 1626717514
>>1624899
я готов тебе помочь, беру 1к в час.
Аноним 07/03/20 Суб 22:31:07 1626757515
Аноним 07/03/20 Суб 22:53:37 1626801516
>>1624899
В шапку бы посмотрел, там есть материалы. Твоя задача, думаю, легко реализуется с помощью STL, в <algorithm> есть и find, и sort, и всё что душе угодно
Аноним 07/03/20 Суб 23:15:35 1626828517
>>1626801
Это ж лаба. Ему надо написать квиксорт самому.
Аноним 07/03/20 Суб 23:31:50 1626865518
>>1625961
>>1625960
malloc говно.
"Программирование. Принципы и практика использования C++" стр 1054 не используйте malloc()/free() в программах написанных на С++ - Страуструп.
Я ему верю деда вроде шарит.


Аноним 08/03/20 Вск 00:17:53 1626938519
Аноним 09/03/20 Пнд 20:19:42 1628927520
>>1625893
goto лучший триггер тупых промыток, они даже объяснить не могут чем гоу-ту плохо, нормальные пацаны используют гоу ту где нужно, а такие ситуации бывают.
Аноним 11/03/20 Срд 13:17:20 1630060521
>>1623903
двачую, у меня кент работает в топ-конторе (по з.п. где-то 170) он такой хуйни не знает и никто у них не знает.
Аноним 27/03/20 Птн 17:29:09 1644047522
>>1626248
>Нет не то же, конструктор не вызывается.
И чо? При aggregate initialization конструктор тоже не вызывается.
Аноним 14/05/20 Чтв 23:52:07 1688557523
Пачиму треды не трут?
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов