Это копия, сохраненная 28 января 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
⚹ https://github.com/sosachbot/cppthreadhat/wiki
Ответы на вопросы:
⚹ https://en.cppreference.com/w/
⚹ https://www.cplusplus.com/reference/
Для указателей: ⚹
Как в WASM затащить STL (но только нужные куски) с помощью clang? Допустим std::list нужен, и больше ничего? Это надо с++ либу всю пересобрать с таржетом wasm? А как?
О, тред наконец-то появился. Наверное, помогло открыть в приватной вкладке, а затем опять в обычной.
В случаях когда ты не хочешь ебаться с потоками.
Emscripten умеет подключить стандартную либу, плюс там дофига всякого искаропки, OpenGL (с эмуляцией десктопного), SDL.
>>50802 (Del)
>>50803 (Del)
>>50805 (Del)
>>50807 (Del)
>>50809 (Del)
>>50810 (Del)
>>50814 (Del)
>>50815 (Del)
>Моя коллекция ссылок
Слишком поверхностно, давай лучше пасты Царя
>И закон Мура не поможет - плотность чипов может удваиваться хоть каждые 6 месяцев, а сделать древнюю орхитектуру быстрее не получается. При чем уже давно. Пора бы уже привыкнуть.
Земля пухом слепому дебичу, хуле.
Пусть попробует запустить тот же rpcs3 на проце 12 года и на последнем хотя бы 9 поколении.
Айблядь, там как раз псто за 12 год.
Не, он там совсем ебобо, собрался 1С на видеокарте крутить.
>Покупают движок, который часто вообще и не движок так как никакой игры на нем не написали. Иногда даже без исходников. И начинается настоящий секс. Если раньше 15 программистов ковыряли свой собственный код то теперь им нужно делать тоже самое но в чужом коде, который они не знают и знать не могут (его, не забываем, писало 150 человек 10 лет), эффективность ковыряния от этого не увеличивается, а очень даже наоборот. Когда и если игра выходит, от оригинального движка там остается хорошо если формат файлов. Это если были исходники. Без исходников, если сильно постараться, можно сделать мобильно-социальное говно или инди-трэш, как Юнити на этом поднимает бабло у меня вызывает только восхищение.
>
>И вообще весь бизнес Эпика/Юнити/Крайтека - сказка просто. Продавать никому ненужное говно сначала за огромные деньги, а теперь и за equity. Сейлзы, которые там работают, наверняка смогли бы продавать снег чукчам и песок бедуинам. Однако есть проблема: конторы, которые делают игры с их инжинами не могут выжить в долгой перспективе. Это как героин - все покупатели быстро оказываются без денег и без здоровья. Очень интересно увидеть, как они ее будут решать.
После того как Square Enix обосралась со своим инхауз-двиглом, после чего в авральном порядке выпустила свои 2 последних проекта (KH3 и ремейк FFVII) на УЕЧе, взлольнул с подливой.
В итоге процессор каррентгена стал общепризнанной проблемой а пекабояре благодарны за то, что им 6 лет можно было не обновлять пекарню и играть с качеством выше чем на про версии пс4.
>После того как Square Enix обосралась со своим инхауз-двиглом
На анрил сейчас быстро и дешево команду можно собрать, которая ассеты будет двигать и в блюпринтах пауков собирать, а у их двигла наверняка кривые полурабочие тулзы, которыми только их ветераны могут пользоваться.
>после чего в авральном порядке выпустила свои 2 последних проекта (KH3 и ремейк FFVII) на УЕЧе
Они же их с самого начала на анриле делали, финалку точно.
И вангую, на этом история их самопального говна Luminous, или как его там, закончится.
Пушо оняме и на уече неплохо выходит и по итогу проект успешно запилен в достаточно нормальные сроки, а не как их просраный долголстрой версус, ставший в итоге пятнашкой.
К чему это я. К тому, что C++ нихуя легче не стал.
Потому что в make_shared нужно не указатель пихать, нет?
return srd::shared_ptr<T>(this) не работает разве?
>нельзя просто так сделать return std::make_shared(this)
А что ты хочешь сделать вообще? Создать копию объекта и вернуть на нее умный указатель или что?
Пиздец полистал его жожу по дням.
Это же эталонная безмозглая байтоблядь с опухшим ЧСВ из палаты мер и весов.
>собрался 1С на видеокарте крутить
Базы данных на видюху как раз хорошо должны переноситься, если не учитывать куцый объем памяти. Большинство операций там хорошо параллелятся.
Точнее - std::shared_ptr<T>(this);
>>51157
Нет, я хочу обернуть this в shared_ptr и возвращать его. Звучит странно, но из функции мог возвращаться не обязательно this, а другой объект того эе типа.
Нашёл enable_shared_from_this, посмотрел и решил вообще не юзать смартпоинтеры в своей функции в надежде, что тот, кто вызовет, не будет пытаться делать delete.
Почему? Чтобы оно удалилось, нужно вызвать деструктор, который занулит рефкаунт shared_ptr. Тут вроде деструктор для него нигде не вызывается, все должно быть норм.
Так на уече делают крупные студии потому что они договорились с уечем на всякие ништяки, вроде компенсации разработки.
Мелкое инди говно наелось уечами и юнитями и пердолит на пердячей тяге буквально со своими движками.
А если у тебя не один shared_ptr, а каждый раз создаётся новый со своим уникальным рефкаунтом, но все они указывают на один объект, и он каждый раз будет делетиться после выхода shared_ptr из области видимости?
Я не очень в смартпоинтерах разбираюсь.
Почитал немного, пишут что вот в чем проблема - допустим,
auto a = myObj.get_shared_ptr_from_this();
{
auto b = myObj.get_shared_ptr_from_this();
b->doSomething();
}
a->doSomething();
В результате у нас два shared_ptr от одного raw указателя, которые ничего друг о друге не знают. После выхода из блока, как я понимаю, объект в "a" будет удален.
enable_shared_from_this добавляет неявно weak_ptr который считает все обращения.
> у опа
У меня не ECS, а обычное дерево (без циклов) и несколько специфичных алгоритмов, и я решил юзануть смартпоинтеры, раньше с ними ничего больше хеллоуворлда не писал. Сейчас осознаю, что они куда сложнее, чем их некоторые преподносят, говоря про прозрачность и простоту.
Если обычное дерево, то зачем там где то возвращать this, обернутый в смартпоинтер?
Из предположения, что тот, кто вызывает, захочет где-то сохранить адрес и потом случайно к нему обратится, когда дерево уже будет удалено.
Вообще, никто же тебя не заставляет возвращать shared_ptr(this).
Ты можешь создать мемебера в объекте, инициализировать его при первом запросе, и возвращать каждый раз один и тот же shared_ptr в геттере.
Не, стековерфлоу говорит, что правильнее унаследовать класс от enable_shared_from_this<T> и возвращать shared_from_this().
Да. А что? Я уже вспомнил, что string это массив charов. В ячейке за последнем символом там какой-то символ конца массива. Как он выглядит в коде? Хочу использовать его как условие.
> символ конца
'\0'. Только это условие тебе не поможет разделять слова, \0 - это не std::isspace(). Но и эта функция не учтёт знаки препинания.
Если (std::isspace(ТекущийСимвол) Или ТекущийСимвол == ',' Или ТекущийСимвол == '.' Или ТекущийСимвол == ';' Или ТекущийСимвол == '-')
// Обработать конец слова
КонецЕсли
А хотя подожди, мне надо взять текстовик с простынёй текста, и записать с переносом строки в другой текстовик все слова больше определённой длины. Без знаков препинания желательно.
>что так как функции для получения рандомных строк написать нельзя, он взял первый попавшийся текстовик с кучей текста
Слово = ""
Пока ((ТекущийСимвол = СчитатьИзФайла(Файл1)) НеРавно '\0')
Пока (std::isspace(ТекущийСимвол) Или ТекущийСимвол == ',' Или ТекущийСимвол == '.' Или ТекущийСимвол == ';' Или ТекущийСимвол == '-')
Слово = СоединитьСтроки(Слово, ТекущийСимвол)
КонецПока
Если (ДлинаСтроки(Слово) < 4)
Продолжить;
КонецЕсли
ЗаписатьВФайл(Файл2, СоединитьСтроки(Слово, " "))
Слово = ""
КонецПока
Как-то так.
>>51511
Нашёл охуенный код а эту тему.
https://fooobar.com/questions/47487/how-do-i-create-a-random-alpha-numeric-string-in-c
Надеюсь, получится получить 1000 рандомных строк разной длины.
О, нет, это один из сайтов наподобие qaru.site!
https://stackoverflow.com/questions/440133/how-do-i-create-a-random-alpha-numeric-string-in-c
А текстовик он вам не даёт, потому что знает, что многие не будут писать алгоритм, а нужный результат захардкодят.
Заводишь два указателя
Проходишь по всем символам, отбирая только те что std::isalpha()
Если isalpha() == true, то увеличиваешь второй указатель, увеличиваешь счетчик на 1, первый указатель не трогаешь
Если isalpha() == false, то слово закончилось, если счетчик >4 то сохраняешь слово (оно начиная с первого указателя и не включая второй), сбрасываешь счетчик, устанавливаешь первый указатель на то же место где второй.
>>51545
Ну, не знаю. Я уже спиздил чужой код и сделал себе 1000 уникальных цифробуквенных строк длиной от 4 до 16.
https://repl.it/repls/MammothGlamorousHardware
Будет лучше, если ты пойдёшь нахуй и в этом треде станет на одного неадеквата меньше.
Шапку читай.
Раскрыт секрет где программисты берут 100к/наносек
Да, а cout це просто наследник ostream. Вот небольшая статейка
https://www.programiz.com/cpp-programming/library-function/iostream/cout
Я такое самописное сделал, но вот смотрел на вектор, а теперь на код массива в бусте и чот приуныл.
Так я про 14
Вот в процессе работы в некой функции происходит поэлементная запись в массив и в какой-то момент, происходит попытка записать по индексам большим чем размер массива, но так как есть проверки, то просто ничего не происходит, а пропускается.
Чем такой подход может быть плох при создании программ?
> Чем такой подход может быть плох при создании программ?
Ты траллишь? У тебя другие данные перезапишутся твоим масивом. Это UB так-то.
Или ты хочешь игнорить запись за пределы границ? Так в чём проблема ловить эксепшены? Это очень медленно, но ты сам выдумываешь говно какое-то.
А вообще можешь просто указатель использовать как массив, если сам следишь за границами.
> Вот в процессе работы в некой функции происходит поэлементная запись в массив и в какой-то момент, происходит попытка записать по индексам большим чем размер массива, но так как есть проверки, то просто ничего не происходит, а пропускается.
if (index < length) { }
...
profit
>>52599
>>52600
>>52601
Я спрашиваю это для того, чтобы велосипед не писать, вдруг есть в STL или буст, на код для массива которого я сейчас смотрю. А вот эти исключения каждый раз ловить полный пидец, только время тратить, а с таким подходом:
if( i < Length )
{
Array[ i ] = a;
}
Соответственно если не попадает, то просто не записывается. Мне это удобно, ибо иногда надо скопировать один массив в другой без мучений по поводу разницы в размерах.
А уже в функции для копирования, отдельной, можно так, дабы не крутить в холостую цикл.
if( LengthFrom > LengthTo )
{
LengthFrom = LengthTo
}
for( auto I = 0; i < LengthFrom )
{
ArrayTo[ i ] = ArrayFrom[ i ];
}
> Чем такой подход может быть плох при создании программ?
Инвалидация итераторов. Не выёбывайся, используй std::map и стандартные алгоритмы. По скорости не просядешь
>Мне это удобно, ибо иногда надо скопировать один массив в другой без мучений по поводу разницы в размерах.
>иногда
>копировать массивы
>лень проверить длину
Потому что ты не должен выходить за границы массива. Если вышел - это говнокод и твои проблемы. За тебя это никто не будет делать, тебе и так исключения кидают.
> Инвалидация итераторов. Не выёбывайся, используй std::map и стандартные алгоритмы. По скорости не просядешь
Ага, мап как и половину стл в крупных айти компаниях как раз не используют, потому что перфоманс у них говно. Не просядет он.
Тебе про массив говорят, а ты дерево ему суешь.
Простой пример, который бесит
Есть смещение в 5 единиц, с которым надо скопировать в массив БЭ с размером 7 целиком в массив А с размером 10
В том случае, который мне предлагается будет тихий пшик, а мне над чтобы скопировались те лелементы, которые влезут, остальные не попали, вооооооот.
>>52610
Уже похоже на ответ.
> Простой пример, который бесит
> Есть смещение в 5 единиц, с которым надо скопировать в массив БЭ с размером 7 целиком в массив А с размером 10
Тебя написать один if бесит? if (i < int(A.size()))?
Пиздос.
Проблема в том, что я вынужден в таком случае трястись от невроза всякий раз когда использую массив, вот я смотрю на него и мучительно вынужден вспоминать, а вдруг значение будет писаться мимо и всё повалится, меня это угнетает, а использовать одну и ту же конструкцию всякий раз, когда я с ними работаю вызывает уныние и стойкое ощущение работы в пустую, словно жизнь пролетает, а я как ебан её трачу непонятно на что. Программирование уровня БЭ.
Пчел, это называется копиаст кода, с моей точки зрения выполнять одну и ту же задачу пример быдлокодинга, тем более делать проверку одну и туже в разных местах кода, это между прочим время, которое ты мог бы потратить на что-то ещё, а ты постоянно отвлекаешься от этого на банальщину про проверки на выход за пределы.
Алгоритмы ты не знаешь или не понимаешь, инфа сотка
>>52662
Главный вопрос в том, а нужно ли так изгаляться и я над ним думаю.
Ну да ладно, поглядел на код буста для массива, сократил код велосипеда до 15 строк, я доволен, плюс получился удобный контейнер.
> вынужден в таком случае трястись от невроза всякий раз
Welcome to C++
Выход за пределы массива, сегфолты, UB, выхлоп компилятора на десятки мегабайт из-за неправильного типа в шаблоне.
объект cout уже есть.
Для того чтобы не трястись от невроза надо использовать не какие то там массивы неизвестного размера, а конкретные типы данных.
Не делай так.
Несколько раз встречал такое в живую, обычно в каких-нибудь таймерах или независимых детаченных тасках. Я не одобряю, но так делают.
Алсо, https://youtu.be/N5TWbeav7hI?t=63
Двачую. Если делаешь статический массив, то должен знать его размер до создания. Проверки на выход - это для чмошников.
Вполне. Функция в классе по сути самая обычная функция, от того что ты удалишь член класса функции ничего не будет.
Ну а вдруг суицид объектов - UB.
Аааа. Типо не ьегитимность в том что с объектом функция удалится? Так насколько я понимаю функция по сути сама по себе, но только доступ к данным имеет.
>удалишь член класса
Себе член удали.
delete не только вызывает деструктор экземпляра, но и освобождает память, выделенную под него.
просто этот дебич не слышал про use after free, оставь макаку в покое, его место - жс-тред.
Вспомнил старую МТГ, всплакнул.
Код функции находится в статической части памяти. Возможно вообще в ROM.
Объекты не носят с собой копии выполняемого кода класса.
delet this не означает автоматически use after free. Ты можешь после удаления хоть войну и мир распечатать, пока не трогаешь поля объекта и подобное.
> Объекты не носят с собой копии выполняемого кода класса.
Ты не в тот тред зашёл, С-тред соседний.
Очевидно, он имел в виду в рантайме. У std::cout нет (физически, в байтах) поля с именем operator<<, которое содержит машинный код операции вывода.
Даже виртуальные методы это просто указатели на соответствующие функции (а вот их уже вполне можно покорраптить).
Я правильно понимаю что по твоему разумению, массив
struct MyType {
int value=0x01020304;
void increment() { value++; }
void decrement() { value--; }
};
будет храниться в памяти как
[04][03][02][01][mov rax,value][add rax,01][mov value,rax][ret][mov rax,value][sub rax,01][move value,rax][ret]
[04][03][02][01][mov rax,value][add rax,01][mov value,rax][ret][mov rax,value][sub rax,01][move value,rax][ret]
[04][03][02][01][mov rax,value][add rax,01][mov value,rax][ret][mov rax,value][sub rax,01][move value,rax][ret]
И когда объект удалают из памяти, то и программный код тоже удаляется из памяти?
Байтоёб as is
>то просто ничего не происходит, а пропускается.
>Чем такой подход может быть плох при создании программ?
Представим себе что твоя фамилия начинается на Я...
И вот такая программа начисляет зарплату. Но массив закончился, и твою зарплату просто пропускают, ничего не происходит.
А в тестах он так же будет писать, отбрасывая что не влезло.
Я бы не отказался. Пока вхрюначил -fsanitize=undefined но он явно не ловит многое
Толстота.
Нет.
Не слушай жырных, почитай дядю Бьёрна и за полгода-год на 60-70к сможешь пойти при условии что не совсем ебанат
Полгода?) А у большинства несколько лет уходит.
А потом на ревью такие вылазят, с циклами по индексам, классами без виртуальных деструкторов и с move-конструкторами без noexcept. А ещё shared_ptr для единоличного владения.
>с циклами по индексам, классами без виртуальных деструкторов и с move-конструкторами без noexcept
Почти всегда так делаю (по индексам без i < size(), естественно), наследования почти нет, эксепшены с rtti отключены (да и stl не используется).
Стариканы все ассемблер знают. Зумерки пытаются понтанутся, но демонстрируют только расплывающееся коричневое пятно на штанах.
Как минимум ты можешь обосраться с vtable. В любом случае, вызывать в крестах методы класса после его удаления - верный способ сломать код.
Поясните, что не так с циклами по индексам.
И в чем проблема с «shared_ptr для единоличного хранения», ведь единоличное хранение в некоторых случаях может внезапно потребоваться сделать не единоличным.
> Поясните, что не так с циклами по индексам.
Возможность отстрелить себе ногу на пустом месте. Например, перепутать индексы во вложенном цикле, отнять два индекса и получить переполнение и в таком духе. А ещё недостаточная выразительность кода в большинстве случаев.
> единоличное хранение в некоторых случаях может внезапно потребоваться сделать не единоличным
Тогда у тебя есть ещё тысяча других забот и одним изменением типа указателя на shared_ptr ты мало чего добьешься. Без shared_ptr проявляется какой-то контроль над временем жизни объекта.
Просто у чела низкая самооценка вот он и упоминает все архитектурные практики используемые ньюфагами про которые помнит. Зашкваром этм практики считаются по той же причине.
Да вот и я подумал об этом же. С одной стороны, упоминает обязательный виртуальный деструктор (типикал джава-ооп практика), с другой — пеняет на шаредптр как дефолтный птр. А если у меня микроконтроллерная параша? Там никаких виртуальных деструкторов не полепишь.
>>53558
>перепутать индексы во вложенном цикле
Так называй их по-человечески. Ты и итераторы можешь так перепутать.
>какой-то контроль над временем жизни объекта
Это я понимаю, я не понимаю, почему ты считаешь это проблемой уровня забытого виртуального деструктора.
@
С ВИРТУАЛЬНЫМ ДЕСТРУКТОРОМ
Манька, плиз. Во первых сама фраза
>создаёшь объект через маллок
Не несёт в себе никакого смысла, а во вторых есть версии маллока с прерываниями. Эту хуйню не юзают не потому что она хуевая, а потому что она уже обернута в кучу конструкторов которые юзают вместо нее
Указатель на неё.
Вот тут например конпелятор не только добавил этот самый указатель, но и насовал паддинга.
https://ideone.com/w6y0oL
А что плохого?
@
ЗАПОЛНЯЕШ ВТЕЙБЛ РУЧКАМИ
@
ВСЕ РАБОТАЕТ, КАК ЧАСЫ
@
@
@
СЛЕДУЮЩИЙ РАЗРАБ ДОБАВЛЯЕТ В КЛАСС ВИРТУАЛЬНУЮ ФУНКЦИЮ, НЕ ЗНАЯ ПРО ТВОЙ КОД
Если уже передали, то никак, это беззнаковый тип. Нужно проверять до передачи.
Аргумент функции
(std::size_t Val)
Ну и далее с ним работаю.
Поглядел на стаке, там норот предлагает преобразовывать в знаковое число, проверять на отрицательность и обратно, правда там же челик сказал, что это неопределённое поведение получается.
Ещё вариант задать максимальное число, но тогда теряется смисль во всей этой битве.
Я хотел вообще через try catch, или вообще забить и использовать знаковое, да не насиловать мозг.
>Поясните, что не так с циклами по индексам.
Возможная потеря производительности. Если ты в цикле делаешь i < vector.size(), и компилятор не знает, что происходит в теле цикла (например, вызов функции, тело которой компилятор не видит), то компилятор предполагает, что размер вектора изменился, и size() будет вызывается на каждой итерации. А поскольку вектор скорее всего будет передаваться через стек, то это будет лишнее обращение к памяти. Если делать итерацию через рейндж, то end() у вектора будет вызываться один раз. На практике такие вещи мало кого волнуют, если ты каждую микросекунду не считаешь.
https://godbolt.org/z/E1acPs
Ты тупой, блять, даунито? Я тебе на то и намекаю, что инт — не функция, дебил, ему невозможно что-то передать. Вопрос-то свой перечитай, макака тупорылая.
И ворнинги компилятора впредь читай, чтобы не передавать знаковые вместо беззнаковых.
В итоге ответа от тебя я не получил, зато визга море.
Если ты тупой и не понимаешь зачем такой вопрос возникает, то нахуй ты мне отвечаешь?
Если тебе это статически можно проверять, на отрицательный литерал, то делай через темплейт, std::is_signed. В рантайме может быть все что угодно. То есть не факт, что char 0xfe дополнится до 0xfffffffe, а не до 0x000000fe, это ты проверить не можешь.
Понял
С range-based for ясно, но в чем разница с it!=v.end() ?
Абсолютно аналогичная ситуация, только вызывается end, а не size.
Ты бы ебальником своим хлопнул, долбоеб. Тебе ответили про ворнинги, какого рожна тебе еще надо? Ты настолько тупой, что в упор ответа не видишь, а сразу начинаешь тявкать в ответ на заслуженный пендель. Тебя за такие «легкие неточности» в любом крестокомьюнити обоссут в момент, а если ты чем-то недоволен — уебывай и дальше будь дауном.
И как он отрицательные числа от значений size_t больше INT_MAX отличит? Ммм?
Кстати, ты еще один дебил.
Да будет тебе известно, нубарик: char, unsigned char и signed char — это разные типы по стандарту. Т.е. знаковость char не определена. Можешь покудахтать в ответ на мое «хамство», хоть посмеюсь над тобой.
>Абсолютно аналогичная ситуация, только вызывается end, а не size.
Да, так и будет, поэтому если производительность важна, то конец вектора лучше в переменную сохранять, и использовать ее в цикле. Но мне кажется у него претензия была об использовании индексов в принципе.
А что это за тип такой — «литерал»? Да еще и со знаком?
Можно параграф стандарта?
>>53831
Да вот и мне то же самое кажется. «Ну и что что class AbstractIntArrayBubbleSortOperation, а зато без фора с индексами!»
>>53833
Ну вот, неграмотный дебил «порешал» — а последствия фиксить опять тимлиду придется!
МОДУЛИ
>А что это за тип такой — «литерал»? Да еще и со знаком?
https://en.wikipedia.org/wiki/Integer_literal
Не придётся, итак сойдёт, сходило и будет сходить. Пока пердоля будет вылизывать свой код, кто-то усовершенствует компилятор, процы мощнее выкатят, а кто-то используя всё это сделает уже десяток проектов, которые будут медленнее долгостроя пердоли максимум на 20%, но удобнее в недостижимое количество раз.
Ура! Я поднялся до уровня макаки и теперь смогу зарабатывать 35 000 рубасов в месяц. Меня устраивает, я доволен.
Гыгык ебать)) буковку в кавычечку взяли ахах))) строка!!)))) (Тип данных строка) ебать ты байт друк ахахаха)))
Нет, но все равно пиши что там у тебя, поможем. Ты главное уебанов у которых строка это литерал не слушай
Но ведь он прав, значение изначально текст и уже потом происходит какое-то преобразование. В книге по Си так вроде бы написано.
Здесь всегда так.
Знает толк в троллинге месье.
что такое функция?
>>53925
>>53929
В C++, например, пользователь может задавать собственные литералы, и самостоятельно парсить строку со значением:
https://en.cppreference.com/w/cpp/language/user_literal
Хотя сахар для численных значений, которые распарсил компилятор, тоже есть.
Пробовал через std::transform и std::copy, но чет неудачно, несостыкуются вещи.
struct PIZDA { int hui; float govno };
vector<int> a(10)
vector<PIZDA> b(10);
std::transform(a.begin(), a.end(), b.begin(), [](int& a, PIZDA& d){
d.hui = a; })
чет типо такого
struct PIZDA { int hui; float govno };
vector<int> a(10)
vector<PIZDA> b(10);
std::transform(b.begin(), b.end(), a.begin(), [](PIZDA& d, int& c){
d.hui = c;
return c; })
Да, это смешно, и я готов с этим поспорить.
Ну почему сразу 2003?
Я пробовал так: https://pastebin.com/KjnDuR6C
Работает как и полагается, но разве нельзя как-то чище? Я пытался, но не вышло, тут 100% есть ребята опытнее меня в разы, поэтому и спрашиваю.
А почему Dummy, а не PIZDA как у меня? Дохуя культурный что ли?
Да я образно накидал, суть в том, что transform принимает binaryOp, и через него надо как то работать
https://pastebin.com/Gw0bf0SC
Ля, получилось, работает. Видать проебал, что именно эта перегрузка трансформа должна возвращать значение. Спасибо, анон.
лол, я в итоге тоже самое сделал, но сорс и дестинейшн в другом порядке (равно как и аргументы лямбды, соответственно), но результат, ясен-пень, тоже.
Учишь кое-что дополнительно, идёшь в говно-НИИ на днозарплату, сидишь там года три, параллельно задрачивая все эти ебпйшие требования, ну и потом можешь попытаться устроиться на нормальную работу, и с какой-то маленькой долей вероятности преуспеешь.
Пример:
std::for_each(v.start(), v.end(), []() { // break from here } );
Обтекай, код скопирован с годболта и упрощен для поста на дваче.
Вызывать методы естественно нельзя. Не обо что, дереференс this это UB.
Но он то delete this уже находясь в методе. Он его не вызывает.
>числовых литералов.
Лол, ты правда не отличаешь тип значения которое получается из литерала от типа самого литерала? Все литералы - строки (только не во всех языках есть к ним доступ). Значения образуются, когда литерал получает контекст в выражении/стейтменте, и значения эти могут быть разыне и разных типов при одинаковом литерале, в зависимости от контекста.
Мемсет не инициализирует объекты вообще. Это UB.
Сидели на трубе
Неа. Литералы - обычо слова, а не строки.
В военное время - двухбайтовых и иногда четырех байтовых
Тогда уж _InterlockedXor()
Двачую. А то обмажутся своей функциональщиной и ебут друг друга лямбдами в жопу.
Да это ты не отличаешь, придурок.
Блять, ну двощ и деградировал, пиздец.
Неграмотный еблан не различает грамматику и прагматику, лол, да еще и свою собачью пасть осмеливается разевать!
Это для компилятора (его парсера) литерал в тексте программы — строка, неграмотный ты даун. А с точки зрения кода (т.е. прагматики) он того типа, значение которого он описывает по стандарту.
У тебя анальная фиксация? Учитывая, что transform() с двумя парами итераторов тебе тоже грязна, ты просто стремишься быть пафосным совковым технохуесосом, занимающимся перфекционанизьмом. Проще будь, челик, все приведенные варианты вполне хороши.
Модули ебать.
Не понял тебя. Особенно про какую-то "прагматику кода", которая почему-то отличается от грамматики и у нее своя точка зрения, отличная от компилятора.
Вот тут: А( 123 ) что такое 123?
А что-то не так?
Так-то лямбды и STL-лайк алгоритмы обмазаны ебейшей оптимизацией. Дизассемблируй прогу, где std::for_each вместо цикла, ты увидишь чиркаш из SIMD инструкций, что как бы намекает, что это быстрее стандартного цикла раз эдак в охуилярд.
В теории, компиляторы таким образом могут оптимизировать и обычные циклы, но на практике я такого не видел.
Да хуй знает, тут напряжно сложно проверять. Я видел зато проги, которые по одному числу SIMD-инструкциями умножают. Наверное, так быстрее. И даже делал тест A умножить на B, идизасм то же самое выдавал. Мое мнение: это все еще ничего не значит, братиш.
Сучара, блять, ты хули такой тупой? Я-то думал, ты мне за семантику предъявишь, и по ходу незаметно для себя признаешь, что 123 в семантике намерик литерал, но ты блять НАСТОЛЬКО ТУПОЕ ДЕБИЛЬНОЕ ГОВНО, что я ваще удивляюсь, что ты хоть как-то крестач освоил.
Ты нихуя не шаришь, дауненок, но выебываешься на знающих людей. Заниматься твоим образованием я больше не собираюсь: надо тебе - сам ищи, почему 0x123 - не строка. Выебывайся дальше, хуесос, поржем над тобой всем крестотредом, неграмотный ты лающий пиздюк.
>>54279
Да он таких слов не знает. В книжонке какой-то там вычитал какую-то хуйню, да не понял, видать. Еще и книжонка-то на русском, поди, какого-нибудь совкового "разбирающегося" дедули-пердподавателя.
При чем тут кресты? Какое именно примерение хеша? У меня 4 бита, чтобы индексировать квадратные виджеты своего пикогуя на окно 1920 x 1080. Ничего не тормозит.
> Так-то лямбды и STL-лайк алгоритмы обмазаны ебейшей оптимизацией. Дизассемблируй прогу, где std::for_each вместо цикла, ты увидишь чиркаш из SIMD инструкций, что как бы намекает, что это быстрее стандартного цикла раз эдак в охуилярд.
=Есть сурс, где это нормально написано с пруфами?
Хотя ладно это в принципе логично. В обычном цикле ты не знаешь зависит ли следующая итерация от предыдущей, а в фор ич ты независимо к каждому элементу лямбду применяешь.
>>54319
>быстрее стандартного цикла раз эдак в охуилярд
>В обычном цикле ты не знаешь зависит ли следующая итерация от предыдущей, а в фор ич ты независимо к каждому элементу лямбду применяешь.
Со всем этим можно было бы поспорить..
Но я не буду этого делать, а лучше продолжу наблюдать как литералоёбы кроют друг друга хуями.
Короче, собирал тут кое-какую небольшую программку которая юзает эту либу.
Под шиндовском, линуксом (дебиан) в смакелист.txt при линковке использовал переменную GLEW_LIBRARY, но вот решил под фрибсд собрать, а там почему-то пришлось её поменять на GLEW_LIBRARIES
От чего так?
Тред про STL и UB хоть и надо иногда разбавлять чем-то необычным, но не настолько специфическим же.
У меня вот glew даже на шинде так вот просто не подцепился, как на лялихе, хотя везде писали, мол, всё с указанными флагами работает. Что там про bsd говорить.
Вообще, стандартная практика - писать километровые смаке-листы с if (вижуалка) else if (mingw) else if (лялех). Даже если юзаются одни и те же кроссплатформенные либы, они с большой вероятностью на разных системах будут подключаться по-разному.
Спасибо, я и забыл про стейтфул лямбды. На сколько сильно такой вариант тяжелее варианта с циклом? Или тут зиро-абстракшн, все красиво? Алсо, посмотрел бы на другие варианты, с ranges например.
Size стоит что нибудь? Есть разница если сохранить в другую переменную размер контейнера и с ней сравнивать?
Что самое смешное из дс. В яндексе сейчас закрыта стажировочка к сожалению, да и мне кажется меня бы туда и не взяли, ибо яндекс для сверхлюдей же, не?
Спрашивается и много ли удобства привнесли все эти STL по сравнению с обычными циклами?
Бака? В яндексе круглый год набор на стажировку. Щас закрылся набор на летнюю разве что.
> Что самое смешное из дс
Охуеваю тогда с тебя. Гуглишь все известные фирмы/банки смотришь на сайте вакансии стажеров, как подать. Миллионы их. У твоего вуза наверняка есть паблик, где вакансии публикуют а-ля карьера для мфти, карьера для вмк.
Признайся, ты на самом деле не хочешь найти стажировку, хотя по факту этим надо было заниматься, начиная прям с первого курса.
Да блять, я просто ебална кусок, который за 2 курса учил 5 языков блять частично с подачки вуза. С начала не брали на стажировки, ибо курс низкий, либо проёбывался, а сейчас вот хуй вообще знает. Надумал просто в c++ завалиться с концами, ибо из всех языков больше всего мне понравился, но сук-ка просто нихуя найти теперь не могу. Сейчас попробую по банкам пройтись
> С начала не брали на стажировки, ибо курс низкий
Не брали или тебя убедили в том, что не надо идти на первых курсов? Правда в том, что это очковтирательство для лохов. Всем плевать на каком ты курсе, в устной беседе или анкете ты можешь даже припиздеть насчет этого - никто не будет этого проверять. И четкие пацаны, которые это понимают, имеют 4 года опыта к окончанию бакалавриата, пока ты даже не можешь нормально прочитать про стажировку в яндексе.
Ну я согласен с тем, что я долбаёб, кто бы спорил. Просто я даже хуй пойму какие знания для стажировки блять нужны
Куда бежать то ему лол
Почитал выше и решил поумничать, ясно.
Надо было тебе лямбду с 10 переменными запостить, чтобы ты бегал восхищался и взвизгивал «ой а ишо красифшы можна?». Да говно плодить не хочу — ты же ведь тогда, когда вырастешь, неиронично в таком стиле писать будешь, и всех вокруг доебывать за циклы фор и сайз не в переменной.
На стажировку яндекса практически невозможно попасть, если ты не студент/выпускник топового вуза, прошедший шад (в Дс) или ксц (в Дс2).
На первом собеседовании с тобой просто поговорят. Откуда ты, где учишься, хорошо ли учишься, участвовал ли в олимпиадках по матеше/пограммированию, есть ли аккаунт на топкодере или кодферсез'е дико советую задрочить красный акк. Пидорнуть могут прям отсюда, если учишься в Заборостроительном.
На втором собеседовании будут алгоритмы, сначала тривиальные без права на ошибку (если не поясняешь за бпф, обходы графов или гцд, идешь нахуй сразу). Потом вместо алгоритмов дают задачки, по ощущениям уровня 2000 кодфорсез.
И только на третьем собеседовании начинают ебать языком, но на самом деле это самая простая часть и на языке практически не валят. Меня спрашивали про стандартную библиотеку, строчки, как ищется подстрока в строке итд.
Правда, я стажировался в 2014 году, за прошедшее время все могло измениться
Это троллинг такой? Красный ник на кодфорсе задрочить=) Так можно тогда не в яндекс стражироваться, а в гугл, фейсбук. Везде дают задачи с литкода. Красный для такого это овероверкил.
> Пидорнуть могут прям отсюда, если учишься в Заборостроительном.
Это полный бред
> если не поясняешь за бпф
Ну точно троллинг, кого это вообще ебет
Пока такой пак себе собрал, если кому не трудно, то оцените плез
https://stepik.org/course/7/promo
https://stepik.org/course/3206/promo
https://stepik.org/course/217/promo
https://stepik.org/course/3206/promo
https://stepik.org/course/153/promo
https://stepik.org/course/149/promo
Спасибо большое, анончик
Книги
Wtf?
Это как огп, только поверх дтк, и без всяких кфу
бесит, когда люди используют аббревиатуры вне какого-либо контекста
Да наверняка пишет laba5_heshtablica.cpp
Примерно одно и то же.
Я использую оба из-за того, что иногда один выдает предупреждения, которые не выдет другой.
Можешь попробовать дебаггером внутрь залезть. А можешь на гитхабе поискать, даже Microsoft туда исходники сливает
в clang есть polly
В MSDN.
>vs
Наверняка - никак, блять.
MSVC индусскими стараниями вообще скоро хоронить будем.
Двадцать лет прошло с ВС6. Мало того, что интеллисенс до сих пор периодически упорно показывает объявления вместо определений, так они еще и компилятор зашкварили, он теперь может сегфолтов и вообще любой внезапной хуйни наоптимизировать.
Смотрим:
https://developercommunity.visualstudio.com/content/problem/622908/vs2015-native-c-a-crash-looks-like-ssa-optimizer-b-1.html
https://developercommunity.visualstudio.com/content/problem/601329/possible-bug-in-vs2019-optimizer.html
https://developercommunity.visualstudio.com/content/problem/215602/new-optimizer-code-generation-bug.html
https://developercommunity.visualstudio.com/content/problem/237802/optimizer-bug-still-persists.html
https://developercommunity.visualstudio.com/content/problem/905823/optimization-bug-in-vs-2019-1644.html
Так что компилируйте с /Od, а хули еще остается делать.
> (ну вы поняли, без цикла с i)
Читать научись. Так-то предложенный аноном вариант более оптимальный, чем твой говно-цикл.
>определение библиотечной функции
Реализации функций обычно недоступны. Ищи в интернете открытые сорцы gnu. Правда смотреть особо не советую, все равно нихуя не поймешь. Один только принтф на 2000 строк у них.
С какого хуя он оптимальней-то? было бы еще не похуй на его оптимальность. преждевременная оптимизация, не, не слышал, школьник?
А может, ты тогда замеришь производительность обоих вариантов, чтобы пиздоболом-то не быть?
Да, ты правильно заметил. Здесь не просто виндузятники, а виндузятники, принципиально юзающие только вс, никаких мингв и шлангов.
>на должности с++ прогера есть реально сложные и интересные задачи
Рутина есть везде, от нее никуда не спрячешься. Но задачи сложные и интересные есть, правда их немного.
Вкатываться в геймдев крайне не рекомендую. Отрасль полна говна - зарабатывать деньги на играх всегда было трудно, студии часто терпят большие убытки, проводятся сокращения штата и т. д.
Вообще, наверное геймдев и разработка каких-нибудь формочек на Qt и MFC - 60% вакансий по плюсам в РФ.
Повторю вопрос, помогите плз. Сейчас юзаю rapidJSON, и он ну очень медленный и хуево конвертит булеаны
В смысле - не бывает по-другому.
Будто бы у других по другому, я прям еще помню как лет 10 назад говорили ни в коем случае не юзать -O3 иначе гроб гроб кладбище пидр
Спасибо, братиш <3
Ну ты кукарекнул, что то быстрее, а я и приебался, с++ тред же. Хули ты недоволен, манюнь? Все по теме.
Какой еще цикл, блять, у тебя там анроллится? На две итерации для "fuck" и "you", дурачок?
Да пусть даже две, это уже выигрыш. А так у меня целых 4. Ну тащи теперь пример с ranges.
А анролл это вообще не всегда выигрыш. Если кэш чаще выбивает.
Эт лаба "двунаправленный список". Можно ли так делать с двойным наследованием и static_cast, или все же лучше пару if-ов на каждую вставку-замену-удаление элемента списка?
>ррряяя бес тсыкла фор йа скозал биля буду сука мамай клинус
https://github.com/gcc-mirror/gcc/blob/440a7ea99590727841c3e6ba656e642401481314/libstdc++-v3/include/bits/stl_algo.h#L4274
Люблю за это крестотред. Всегда есть, кого обоссать.
В чем комический эффект заводить типы Next и Prev, если они вообще ни для каких проверок не используются? Ты же тут же эту информацию отбрасываешь. Достаточно иметь указатель Item* prev, next, не?
Всегда было интересно, такую прическу же не сделать ИРЛ? Там же залысины будут торчать.
Что то ты странное говоришь. У тебя в Item два указателя есть на prev и next, сейчас они от наследования, а так будут от аггрегации. Ну а в листе у тебя и так старт/стоп. Где ты тут разницу видишь?
Ну так в классических реализациях листа там и будет по одному указателю. Не Item zero, stop, а Item ⚹zero, ⚹stop
Да, но их надо проверять if-ами при операциях с листом, а тут не недо.
Чтобы избавиться от предупреждений, если вдруг твой оператор решит возвращать что-то
Каких еще предупреждений? Любой оператор присваивания возвращает значение, вообще-то.
Нахуй ты эти маняфантазии хомячков из жж приволок? Удаффком с упячкой и луркмором бы еще вспомнил.
Пчел, этот бумер умнее и скиллованнее чем 99% современных программистишек. И он уже в 2009 был прошареннее в КС чем ты будешь когда-либо
Дегенератам надо учить алгоритмы, а человек с мозгами просто придумает их сам когда понадобится.
Пиздец кринж. То что ты не троллишь и реально где-то работаешь причем даже за деньги — ещё больший кринж
https://youtu.be/uzF4u9KgUWI
Думаю неплохо было бы в шапку добавить каких-то крутых ют-каналов, например его:
https://www.youtube.com/c/JasonTurner-lefticus
Конкретно про C64 - у него не очень честная презентация, потому что в LLVM нету 8битного (и вроде даже 16 битного) бэкенда, а он своей утилиткой конвертит x86 опкоды в 6502. Ну а так как он реализовал только некоторые инструкции, нужные для PoC, то сами понимаете. Допустим какое то разыменование указателя или передача параметра в фунцию стоит 2-5 байтов (и тактов) В случае же если туда пробросится 32-битная арифметика, лол, то там будет 20-30 байтов сразу. С заемами переносами и сохранениями временных значений в RAM.
Я, честно говоря, в настолько низкоуровневых железных вещах пока ещё не разбираюсь, но в целом вчера дунул и смотрел с отвисшей челюстью
Может быть, не знаю.
В любом случае компилятор они испоганили, тип теперь мс — это облака, остальное нинужна.
Тупо как ребёнок сидел радовался с мыслями "Ну давай, покажи no overhead, ты сможешь" на каждом его вопросе
короче реквестирую приложение к книге, спасибо
Ну, вот тут у меня из 1000 93 дубликатов получается. Не могу понять, где я ошибаюсь, если тут вообще есть моя вина.
Не двигай разряды в десималах, представляй в 16, а лучше 32 и двигай там. 10 слишком маленькая чтобы двигать на 10+ разрядов
Попробуй JS-hash.
Предполагаю, что систему счисления, 16 и 32 скорее всего представления числа в двоичной сс с размером кодировки, грубо говоря, 16 и 32 символа соответственно
std::size_t
int
Для чего?
char на твоей эвм знаковый, вангую
Поиграться со значениями не помогает.
>>55936
Что значит "возьми готовый"?! Ты чё, охуел?!
Мой совет - попробуй реализовать алгоритм на каком-нибудь человеческом языке (python, R, matlab, bc), и проверь кроется ли ошибка в особенности языковой реализации или ты что-то упустил по алгоритму
да и операция "X*P % mod" делается специальной функцией взятия модуля от умножения больших чисел, см
https://www.geeksforgeeks.org/multiply-large-integers-under-large-modulo/
> python
Боже, как же жили наши предки до изобретения исполнимого псевдокода для отладки алгоритмов...
эти предки хотя бы знали, что операция 2 ^ 16 не возводит сука 2 в степень 16
вот уж ололо так ололо
А вот в хачкиле есть оба способа и ещё третий: ^^. Всё зависит от типов.
Нет, не Intel.
Потому что если оба операнда целые, отбрасывается дробная часть. А если хоть один нецелый - что-то может криво округлиться из-за особенностей реализации чисел с плавающей точкой.
Неоптимально считаешь. Лучше так: pow(pow(2, 8), 2).
Показатели перемножаются же при возведении степени в степень.
sqrt(2) попробуй вставить, тоже мб удивишься
@
ОПТИМИЗАТОР
Даже интересно, что сейчас пишут на прологе в реальном мире? И какой диалект, прологов ведь примерно столько же, сколько лиспов.
laba3_hanoi_bashnya.pl
ну то есть, есть какие-то средства, типо GDB, которые помогут определить сколько памяти в каких переменных?
valgrind
> Как найти утечку памяти в C или C++ программе, если это не утечка, а архитектурное решение? Выходные данные передаю в pipe:1 , там выкидывает гигабайты гигабайтов данных, не указатели. Вот одна программка иногда и отжирает по 128 гигов и получает Out Of Memory.
Эм, а найти другое архитектурное решение и научить свой говнокод обрабатывать данные чанками фиксированного размера и вовремя говорить продюсеру "харэ, в меня не лезет" не?
Трабла не в пайпе, нажел утечку в стороннем модуле, API которое дергается внутри, что делать пока не знаю
Сложно, т.к. требует начальных знаний прогерства которых у меня не было. Как Прату дочитаю тогда добью.
>начальных знаний прогерства
Хз что это за зверь. Я школьником к&r еще прочитывал, там всё последовательно объясняется с азов
1920x1080, 3:35
Страуструп не советует начинать изучение С++ с С.
Иначе ты так и будешь потом всю жизнь писать в таком стиле.
Хуйня это всё. "В таком стиле" ты будешь писать, только если выучишь си, напишешь на нём дохуя кода, поработаешь пару лет и уж потом попытаешься перейти на плюсы. А от пары хеллоуворлдов ничего не будет.
Будет страшно - станет все циклы писать for(int i = 0; i < vec.size(); i++) а не как надо итераторами или ренжами. И вместо ООП классов будет начинать разработку со свободных функций на 1000 строк.
Да. А надо писать for(std::map<unsigned int, std::vector<std::pair<unsigned long int, std::string> > > it = myvector.begin(); it != myvector.end(); ++it) да в 2003 збс ваще по кайфу
ваще ит депендс. помню, когда я перешел с quickbasic (sic!) на turbo c++ в школьные года, для меня уже через неделю жизнь без классов и, главное, полиморфизма была немыслимой впрочем, си мне показался наспех слепленной конченной хуетой из говна и палок еще хуже квикбейсика на самом деле нихуя не показался, так оно и было на самом деле
>for(std::map<unsigned int, std::vector<std::pair<unsigned long int, std::string> > > it = myvector.begin(); it != myvector.end(); ++it)
for(std::map<unsigned int, std::vector<std::pair<unsigned long int, std::string> > >::iterator it = myvector.begin(); it != myvector.end(); ++it), конечно же. ну что, сконпилируется теперь?
В таком стиле всякие парсеры и нужно писать. Альтернатива - ООПшное месиво которое будет в 10 раз больше и в 10 раз медленнее.
Была уже в 98
Вовсе не факт.
Сам кресты не знаю, только в си пилил функции.
Какие шансы на успех? Кресты страшные.
Magnum, похоже, только для графики, для физики понадобится ещё один движок (либо реализовывать самому, но ёбнешься)
Ну и смотря что считать игровым движком. Возможность для пользователя загрузить модельки и ресурсы из файлов, настроить контролы и сделать простенький UI - относительно несложно. Сделать свой unreal - невозможно.
Блять, только в крестотреде можно увидеть вопрос «Хачю пилить движок/ось/компилятор/ядро, какие шансы на успех?». Ты для начала попробуй написать клон Пейнта хотя бы, долбоеб, чтобы им пользоваться было можно. О геймдизайне, к которому байтоебство вообще отношения не имеет, я вообще молчу.
> для физики понадобится ещё один движок (либо реализовывать самому, но ёбнешься)
Не, физические движки там в комплекте есть. https://magnum.graphics/showcase/bullet/ скорее пробросы до них.
> Возможность для пользователя загрузить модельки и ресурсы из файлов, настроить контролы и сделать простенький UI - относительно несложно.
Мне вот это всё, только с немношк красивым лайтнингом и тенями. Сколько примерно строк кода, можешь почувствовать?
> Сделать свой unreal - невозможно.
Графон хотю как в анриале. Не весь, конечно, только частично.
>>57136
> О геймдизайне, к которому байтоебство
Таблетки пей и не выдумывай несуществующее, шиз.
>не выдумывай несуществующее
Это ты так свои познания в геймдизайне называешь? Дак я их и не выдумываю. Как ты думаешь, кому нахуй всрался твой движок? До тебя сто раз такие проекты-убийцы юнити «успешно» завершали, но ты даже никогда не слышал о них.
>только с немношк красивым лайтнингом и тенями
Ну вот и делай это, для Юнити — и в ассет стор.
Мне аш физически больно стало с такого. Пиздец просто.
Может какой синтаксический сахар есть, чтобы уменьшить боль от плюсов? Может проброс через nim-lang.org уменьшит боль?
Бля почему я не изучал плюсы раньше, ну что за дебил((9
>>57162
> Это ты
Нет ты.
> познания в геймдизайне
Посмотри определение слова "геймдизайн", шиз.
>>57163
Юнити тормозит, а мне нужна производительность и единая кодовая база для всех клиентов для браузера тоже
Зачем замена крестам, если кресты уже существуют.
Ну это геймдев, тут хоть на питоне пиши, будет много, больно и сложно.
Впрочем, это если попытаться написать что-то более-менее реальное. Самый хеллоуворлдный "движок" будет строк на 500-1000 - он будет почти неконфигурируемым без правки кода, будет уметь только вызывать несколько функций твоего магнума (спасибо ещё, что не голый опенгл или, боже упаси, вулкан) и показывать что-то простенькое. Ну и напишется где-то за неделю максимум.
> Самый хеллоуворлдный "движок" будет строк на 500-1000 - он будет почти неконфигурируемым без правки кода,
> и показывать что-то простенькое. Ну и напишется где-то за неделю максимум.
Да мне нужно-то полтора десятка тыхнологий вроде света, тумана, частиц, несколько пост-эффектов вроде блума, и управлением мешем в 3d - анимации, ригидбоди, ик и прочее. Мало же, не?
Уже несколько десятков движков протестировал, но они в браузере 60фпс не держат на донных видеокартах. Хуево оче, понял что только плюсы и либы спасут. Но с плюсами жить больно, непривычно.
Такие дела. Хз вообще осилю на плюсах напердолить или нет, не могу никак понять объем работ. В скриптоговне жс/питон/сишарп сделал прототипы для движков за недели две или типо того, вместе с небольшой оптимизацией. Там легко было, особенно после первого раза. А плюсы страшна.
>шиз
Да это же ты шизик, блять, который хочет переплюнуть анрил с юнити в одно рыло. Ты хоть одну игру-то придумал, в которую бы кто-то хотел играть, м? Какой тебе свой юнити, долбоеб, иди уроки учи, он никому нахуй не нужен.
>единая кодовая база для всех клиентов
Я и говорю - да ты же тупой задрот и долбоеб. Как у тебя под десктоп и мобилки может быть единая кодовая база, если у них управление радикально отличается, дурачок? Или у тебя управление НИВАЖНА? Еще небось под прыщеось собрался пилить.
>Юнити тормозит
У тебя мозг тормозит, школодура.
>>57194
Почему задроты так любят писать свои говнодвижки, но ни один не пишет своих игр?
https://github.com/TerryCavanagh/VVVVVV
> Да это же ты шизик, блять
Нет, не я.
> который хочет переплюнуть анрил с юнити в одно рыло.
И про это тоже не говорил. Ты понимаешь что ты видишь то, что существует только в твоей голове?
> Я и говорю - да ты же тупой задрот и долбоеб.
Успокойся, всё хорошо. Никто тебя не обижал, санитары хорошие ребята на самом деле. Прими таблеточку.
> Мало же, не?
Проблема в том, чтобы написать glue code, который заставит это всё работать вместе.
> непривычно
Привыкнешь. Главное - начать, через некоторое время боль пройдёт и даже начнёт доставлять удовольстве.
> не могу никак понять объем работ
Немного сложнее шарпа будет. Но всё же сложнее.
>>57237
> Почему задроты так любят писать свои говнодвижки, но ни один не пишет своих игр?
Пишут, вон сколько всяких сокобанов, ксониксов и змеек. Ничего сложного там нет - простая графика на тайлах, немного логики, по которой чуть ли не готовые блоксхемы гуглятся. Да и посложнее даже пишут - вон сколько ассетфлиповненавижу блять это ебучее слово на юнити.
Ну а движок писать кому-то интереснее, это более исследовательская задача, где можешь поэкспериментировать и получше понять, как оно работает. Делается это в любом случае "в стол" - анон напишет и в большинстве случаев даже выкладывать никуда не будет.
> Проблема в том, чтобы написать glue code, который заставит это всё работать вместе.
Он уже есть. В смысле вся логика уже есть, нужно только обёртку нормальную для графона.
> Привыкнешь. Главное - начать, через некоторое время боль пройдёт и даже начнёт доставлять удовольстве.
> Немного сложнее шарпа будет. Но всё же сложнее.
Меня не оставляет вопрос проброса либы в nim-ланг. Как оно вообще? Будет? Сможид?
> Ну а движок писать кому-то интереснее, это более исследовательская задача,
Тащемта игровой движок для своей игры пишу, скину говнокод примеров в паблик. Хз почему вы думаете что игровые движки это редакторы какие-то. Игровой движок это то что управляет активами всякими и рендерит картинку.
Максимум что сделаю - через imgui накидаю визуальных интерфейсов немношк, соносль нескучную и текстовый редактор.
Хз, про nim я только слышал. Если он более высокоуровневый, и есть нормальные биндинги, то может и не так уныло будет. Ну а если биндингов нет, то немало времени уйдёт на их написание.
>исследовательская задача
>получше понять, как оно работает
Ты дурачок, блять? Какая нахуй задача исследования либы, которая специально создана для того, чтобы ты писал код с ее использованием?
>вон сколько всяких
Их придумали тыщу лет назад, это просто дрочево. А инди-игроделы — это совсем другая история, там задротов весьма немного, и зачастую они выбирают тулзы а-ля флэш или гейммейкер. Свой движок делать там точно никому в голову даже не придет.
>>57240
Ну а нахуя тебе тогда «свой движок», шизик? Ты же не о редакторе ассетов/уровней явно говоришь. Ты явно метишь в нишу юнити/анрила. Особенно забавно, что при всем при этом ты даже не знаешь с++.
> Какая нахуй задача исследования либы
Я не про либу говорил.
> А инди-игроделы — это совсем другая история
Чел хочет не просто сделать игру, а сделать именно на самописном движке. Он явно не для работы это делает, а значит волен создавать себе ровно столько проблем, сколько хочет. Ты же тоже бесплатно ему отвечаешь.
Хочу написать полноценный симулятор Вселенной на плюсах, чтобы прямо от реальности нельзя было отличить.
А еще у меня легкая олигофрения, но зато я люблю познавать новое для себя!
Раньше только кубик-рубик собирал и писал hello world на путхоне.
Какие шансы на успех? Кресты страшные(
Только на js получится.
Шапка для кого?
Липпман
Бамп
> и есть нормальные биндинги,
Хм, точно, бля чому до этого не допёр.
Поищу библиотеки и движки с биндингами под разные языки. Тогда на плюсах только 5-6 файликов придется написать.
> Ну а если биндингов нет, то немало времени уйдёт на их написание.
Под ним - да, нихуя нет. Только опенжл вроде.
>>57323
> Ну а нахуя тебе тогда «свой движок», шизик?
Чтобы работал быстро. Свои сцены и моделки потестил в других движках, они хуево работают, медленно, даже с data-oriented оптимизациями. Нужно еще быстрее.
> Ты явно метишь в нишу юнити/анрила
Перестань выдумывать, шизоид.
>>57324
Там еще мейнтейнерв какие-то странные.
А норм что-нибудь знаешь из графики?
В MSDN пишут что файл с объявлением модуля должен иметь расширение .ixx, но тогда подсветка синтаксиса не работает, блять. В .cpp не даёт объявить модуль. Какого хуя вообще? Что за пердолинг?
Более того, даже копипаст из доков не работает. Только std можно импортнуть, а свои модули сломаны? Нихуя не понял, но пригорает.
Это руки у тебя кривые, а не движки тормозные. Ты думаешь, в С++ какой-то свой, особенный OpenGL?
Ты почему таблетки не выпил?
Сколько раз тебе писать чтобы ты таблетки пил, прежде чем на сосач заходить?
Не обращай внимания, это кирилл с /gd протек, он там уже всем мозг вынес своими фантазиями о том как ог напишет самый быстрый движок, потому что все медленные и не дают реализовать его гениальные идеи.
Создай папку Lesson_1/include, в нее положи KHR/*
Компилятору укажи g++ -ILesson_1/include
(это заглавная И)
Использование -L -I -l вполне логично но не помогло почему-то. Попробовал самые разные варианты с -I project/include, -I project/include/KHR ...
Нет, шизик тут только ты.
Представь, ты выдумал вообще всё. И то что я с какими-то юнитями-анриалами хочу соперничать и что редактор хочу сделать. Геймдизайн тоже, причем тут вообще геймдизайн кстати?
Представляешь? Ты всё это выдумал. Это в твоей голове только было.
Короче, пей таблетки и следи за мышлением. Иначе совсем ебанешься кхуям.
Не помогло
Пчел, этот тред сам по себе гавно
Я вообще мимо проходил
В архитектуре x64 каждый char занимает в памяти факиически по 4гб памяти, их которых занят только один байт, а все осиальные пустые. Но все прозрачно мапится на виртуальную память и поэтому для программиста не заметно.
Умом.
Хмм а что логично
Без разницы
Пиздабол.
Ну нет. Минимальная адресуемая единица памяти - байт, а не слово. Но есть нюансы. В стек на x86 всегда пушится по sizeof(int) байт, и там куча места будет использована зря, но если не на стеке, то можно любое количество памяти юзать, также ещё есть alignment в структурах, ещё есть оптимизация...
В общем, местные байтоёбы тебе пояснят лучше, но не стоит об этом думать вначале, используй кресты как высокоуровневый язык, а не как сишку с ассемблерными вставками для системщины, лол.
"" для подключения файлов относительно текущего каталога, а <> - для тех файлов, которые компилятор сам знает, где искать (стандартные или сторонние хедеры).
> местные байтоёбы тебе пояснят лучше
Тонны енумов с битмасками и сдвиги всего что сдвигается. Всё просто кидаешь в uint64 и весело танцуешь с байтами в руках, ебя в рот ненужную систему типов. Если компилятор выёбывается на типы - суёшь ему void.
> ассемблерными вставками для системщины
Сейчас модно писать на крестах кишками из интринсиков. Особенно когда билличмохи не завезли инлайн ассемблер в х64, а в гну синтаксис как пиздец с форматированием в строки.
> В грядущем стандарте
Это который 20, т.е. наоборот прошедший? Или они новый пилят, когда ещё прошлый нигде полноценно не реализовали?
Если бы они пилили стандарты, когда уже что-то полноценно реализовано, они в лучшем случае выходили бы раз в 5-10 лет. Нет, они пилят стандарты всегда и никогда не дремлют.
Скажи, что насчет типа bool, это же просто 0 или 1, а он занимает 1 байт, а что хранится в остальных 7 битах?
Возможно, нули. А возможно, и вовсе нет этих 7 байтов.
Например, на восьмибитках (AVR) в сравнениях принимает участие весь байт, а в присвоениях и прочих операциях - лишь один его бит. Поэтому если ты, допустим, загрузишь в bool откуда-нибудь (записью чаров по указателю, ага) не 0 или 1 что тоже, кстати, неправильно, то будут сюрпризы. Для посвященных в стандарт в этом, конечно, никаких сюрпризов нет, но бывает очень неприятно, если какая-нибудь тупая байтомакака сделает так в своей либе, а ты сиди ищи.
Ну правильно, ты собираешь как еблан из консоли один файлик. Ошибка у тебя в другом.
Напиши простенький cmakelists.txt и собирай как белый человек
> В грядущем стандарте будет еще <=> подключение, т.н. ракетно-космическое.
Торпедировал в открытый космос
А помнишь как ты говорил про какой-то анриал, помнишь? Говорит, анриал хочет кто-то сделать. Кто хочет?
Не обращай внимания, это тупо троллинг.
Это будущий оператор сравнения, который уменьшает бойлерплейт (раньше надо было копипастить три)
К инклюдам это отношения не имеет, как и тот юмор про шаблонное-литеральное.
Инклюд по <> - предназначен для системных либ. Инклюд по "" - предназначен для пользовательских заголовков, он ищет сначала в папке где исходник, и только потом в системных.
Понятно.
Без задней мысли берешь и передаёшь.
А указатель с самом widget на iterator, даже если std::list может измениться, это все еще позволено вроде?
Толсто — это жопа твоей мамаши.
Не совсем понял, что ты написал, но в std::list итераторы инвалидируются только при удалении элемента.
Инвалидируется именно соответствующий элементу итератор? Можно как-то определить, что итератор невалиден?
Инвалидируется только один итератор. Определить я думаю нереально.
Ты лучше скажи, нахуя тебе это?
>нахуя тебе это?
Табами перебираются focused виджеты в окне, но перебираются они итератором. Потом в дело вступает мышка и говорит: а вот теперь этот виджет в фокусе.
Widget *widgetbyxy(MAXWINWIDTH)(MAXWINHEIGHT);
widget = widgetbyxy(mousex-windowx)(mousey-windowy);
Лучше std::map<std::pair<int,int>, Widget* > widgetbyxy;
>А как мышка понимает, что за виджет под ней?
Вырабатывается событие окна с координатами mousemove. Естественно, низкний уровень зашит в ООП-оболочку. Событие приходит в метод. У объекта окна есть хеш-карта скажем 16 x 16 скажем размером квадрата 32 x 32. Там и ищется первый подходящий виджет.
А если у меня GroupBox на все окно, в котором я двигаю виджеты?
А если я и этот GroupBox подвигаю?
LAZY
Я бы наверное добавил к виджету пару указателей назад-вперёд. Но это кмк костыль.
Или parent-childs, как в Qt - это уже не костыль
Для большинства задач хватит знаний работы SFINAE, static_assert и if constexpr. Ну и type_traits до кучи.
Умение работать с mpl/mp11/hana - это в любом случае плюс
Тогда sizeof(size_t)
Идея всего этого в том, что библиотеки на зубодробительном синтаксисе пишут задроты, а пользователю библиотек они уже дают легкий синтаксис. Какой нибудь std::vector внутри тоже страшно выглядит, однако для тебя это просто
auto vec = {2, 3, 4};
for(auto &v: vec) acc += v;
Мне лень.
Но ведь 100% аналогичный код можно написать более изящным способом, и я не говорю сейчас о метапрограммировании даже. Там даже переменные выглядят по-уебански. Или это я просто не шарю?
ну тут std::accumulate напрашивается.
И да, vec - это не вектор, а initializer_list<int> здесь
То и забыла, что единственная игра на юнити о которой я слышала это Тарков. А пилить инди или второсортные шутеры у меня интереса нет.
В соло игры ААА класса обычно не пилятся, слишком много работы. Есть единичные случаи вроде Megaton Rainfall, но там работал очень опытный челик, если не гений, на протяжении ПЯТИ лет, чтобы написать игру.
А я в соло и не стремлюсь. Была бы идея хотя бы. Просто в голову ударила мысль, что стать прогером на геймдеве это хорошая затея. Ладно, всё равно с самых основ начинаю, дальше буду смотреть.
с твоего охуенного знания игровой индустрии, раз на юнити ты слышала ровно об одной игре.
Она имеет в виду что там или ААА игра которую пилит огромная студия годами, или говно какое то. А если свое индиговно делать, то и юнити не нужон.
Ты свою картину мира на других то не проецируй. Если ты следишь за каждым проектом это не значит что кто-то ещё этим занимается. Я вполне могла даже играть в какое-либо творение на юнити но могла даже не знать об этом.
Спасибо. Мне тоже так кажется.
Вот делать мне нечего сидеть здесь и троллить вас. Ты бы лучше что-нибудь по сабжу написал, больше пользы будет.
Ты сначала скажи каковы твои знания в плюсах, хорошо ли знаешь линал, основы физики, геометрию, основы компьютерной графики и владение соответствующими фреймворками.
Если все по нулям, то удачи, при ежедневном задротстве вкатишься лет через 7 в лучшем случае.
>знания в плюсах
3 дня чтения C++ Primer.
>линал, основы физики, геометрию
Да.
>основы компьютерной графики и владение соответствующими фреймворками
Полагая что Photoshop к этому не относится - нет.
Может ты дибил просто?
Ууу, земля тебе указателями, анон_ка.
Если не тупая и с огоньком в глазах, то минимум за лет 5-6 ежедневного ебашилова на энтузиазме будешь готова пилить ААА игры в проектах средней паршивости. Могу пожелать только удачи.
Этот прав.
Пилю графику. Вкатывался через уроки по OpenGL/другую литературу + практику. Также анончики из gd/OpenGL треда помогали.
Сферу называть не буду ибо работников в ней не очень много, а компаний занимающихся еще меньше.не геймдев, но плотная работа с графикой.Работаю в этой же сфере, вроде графику пилить прикольно, но хочется чего-то большего, хотелось бы в геймдеве над движками поработать, именно над движками, но компании в России занимающихся этим не так много, да и вроде на западные проекты охота посмотреть, но к сожалению не имею вышки, а такие проекты не всегда на аутсорс выносят.
Нет.
Ясно-ясно. Я всё же в игрострой мечу. Да и не в СНГ живу, так что думаю куда-нибудь устроюсь.
Просто ебашь, если тебе это реально нравится. Тут только на энтузиазме и можно вкатиться. Учи углубленно плюсы и компьютерную графику, благо в гугле навалом инфы об этом. Подпишись на релевантные субреддиты, твиттеры известных игроделов, если такие есть (хз, ибо я сам исследователь уязвимостей, не связан с геймдевом), в общем, проникайся всей этой темой со всех фронтов, ну и учись.
Буду. Спасибо за мотивацию)
Нет.
А где резюме-то? Или ты думаешь пару ключевых слов написал и хрюши должны в экстазе рассыпаться?
Напиши, чем занимался, что умеешь. Что не умеешь не пиши. И хуйню про бумаги убери.
Должно получиться несколько предложений.
> мирэа
> факультет ит
О, родная шарага, правда, я магистр и работаю не на плюсах.
Вообще, похоже, с неоконченным хуй устроишься, в крайнем случае - учиться на 4 курсе.
Почему не может-то? Тебе кто-то мешает?
Тебе вроде в другом треде уже ответили.
Потому что char c = 'a' - это просто как int i = 65. У него нет места в памяти где оно хранится. Поэтому и указывать не на что. А строка "abc" хранится в памяти. Если это const char s[] = "abc", то в статической части. Если char *s = new char[10], то в куче. И в том, и другом случае можно сделать константный указатель на символ в этой строке - например &s[2]
Потому что сначала нужно сделать преобразование типов:
const char ukazatel = (const char )'a';
Не благодари, анончик :з
А я все же поблагодарю <3
Я даже как то и не подумал о приведении. Но мой компилятор всё равное такое не скушал, даже если сделать его константным, но вот с двойным указателем такое пройдет, хмм
Новый тред - новый жыр
> Потому что char c = 'a' - это просто как int i = 65. У него нет места в памяти где оно хранится.
Что бля?
Таво. Строка вон целиком содержится, а char компилятор просто в операнд инструкции тиснул.
но да я обосрался, конечно во всяких структурах может быть поле char
Анимещка истину глаголит.
В основном нужна медная жопа, читай, усидчивость и способность вести планомерную кропотливую работу. Даже в хайтеке полно рутины.
Это копия, сохраненная 28 января 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.