Парень из прошлого треда, что сделал вот это: https://ideone.com/mW8F0g Объясняй почему int a = ({5;}); работает, и как? И почему clang и gcc это понимают, а vc не особо?
>>1063154 Т.е. выражение с точкой-запятой в конце это statement expression? Вопрос, нахуя ставить там точку с запятой? А statement block это тоже statement expression, какое значение он принимает?
Сап крестач, нюфаг итт вкатился с вопросом - какой профит от scheduling в openmp ? По сути вся параллельность теряется ибо потоки тупо простаивают ожидая своей очереди + тратиться время на переключение между потоками, по сути тоже самое можно и в одном потоке провернуть, не?
Посоветуйте что-нибудь фундаментальное о шаблонах, чтобы я мог читать Александреску и не ломать голову тем, как компилируются шаблоны, из каких этапов состоит их разбор, на каком этапе сборки работают шаблоны, что вообще с ними можно делать и т.д. Читал Липпмана.
>>1063382 почитай хабр )))) А вообще чтобы понять как это всё работает - попробуй навелосипедить <type_traits> можно иногда даже сюда вопросы поконкретнее писать наверное
template <template <typename Created> class CreationPolicy> class WidgetManager2 : public CreationPolicy<int> {
};
1. template <typename Created> class CreationPolicy - объявляется шалонный класс CreationPolicy с параметром типа Created 2. Этот класс используется как параметр типа по умолчанию во внешнем шаблоне
>>1063452 нууу, ты говоришь компилятору "класс виджетМэнэджер2 - шаблонный, параметр шаблона - шаблонный класс, который в скоупе класса будет называться КриейшнПолиси" Как ещё ответить на этот вопрос? Если ты вообще понятия не имеешь что такое шаблоны в с++, попробуй пописать простой умный указатель, или аналог std::array, это будет попроще чем "параметризация шаблона шаблонным классом"
>>1063457 >Если ты вообще понятия не имеешь что такое шаблоны в с++, попробуй пописать простой умный указатель Уже писал, но от шаблонных параметров шаблона у меня вывих мозга. Не могу даже распарсить объявление.
OpenCL. В обычном С для того, чтобы функция могла изменить значение переменной достаточно передать её по адресу. Как это организовать это в функции, вызываемой из kernel'а? От использования & ловлю ошибки. Не использовать функции и всё делать в kernel - нежелательный вариант. Халп, двачик!
>>1063543 Ты передаёшь адрес из юзерспейса в кернель? Не может быть такого, что именно в ядре не работает передача по адресу, это пиздец, там же адресное пространство линейное (инбифо PAE).
Продолжаю погружаться в мир современного сиплюсплюса. Итак, я прослышал, что можно использовать строготипизированный enum class для битовых флагов посредством шаблонной магии std::enable_if и прочего, и писать удобненько в стиле C#: key_input |= InputState::Left; Конечно, такое я в жизни не напишу, поэтому скачал первую попавшуюся либу с гитхаба, всего то 400 строк кода, разве это цена для того, чтобы писать свой код коротко, красиво, молодежно? К тому же я надеюсь, что под капотом он раскрывается в зеро-оверхед. Единственное неровное место, что либо надо помечать свой enum class макросом ALLOW_FLAGS_FOR_ENUM(MyEnum), от чего коробит, у нас же современные плюсы. Либо писать полную конструкцию namespace flags { template <> struct is_flags<InputState> : std::true_type {}; } От чего коробит еще больше. Скрипя сердцем, выбираю первое. Впрочем, замечаю, что компилятору не нравится сама конструкция key_input |= InputState::Right Потому что, видите ли, у меня key_input типа InputState (enum), а результат операции |= какой-то другой. Очевидно там какой-то шаблон в неймспейсе, типа flags::flag<MyEnum>, который мне конечно же лень писать. Вспоминаю замечательное слово auto и обламываюсь, так как типы нестатических членов класса нельзя выводить, потому что какие то старперы мудаки не хотят приводить говнокод в порядок и такой вывод типа им все сломает. Но чу, вспоминаю, что где то читал про decltype, и действительно. Поприветствуйте самый отстойный говнокод, который я когда-либо писал в жизни, барабанная дробь:
class MyClass { ... decltype(InputState::None | InputState::None) key_input; }
>>1063788 И что дальше? #include <cstdint> enum class Flags: int32_t { None=0, One=1, Two=2 }; int main() { Flags f1 = Flags::None | Flags::One; if (f1 & Flags::Two) return 1; return 0; }
binary '|': 'Flags' does not define this operator or a conversion to a type acceptable to the predefined operator binary '&': 'Flags' does not define this operator or a conversion to a type acceptable to the predefined operator
Есть строка s, в которой наверняка будет 3 слова. Как разбить эту строку на слова и записать каждое слово в отельную, новую строку? (слова разделены одним пробелом)
>>1063888 Блять и сколько эта херь памяти сожрет? Зачем динамический массив, если сказано что 3 строки? Биты в кудахдаре ограничены, зачем на такую простую задачу столько памяти?
>>1063891 Прости, в условии ничего не было про биты, если ты под МК пишешь на плюсах об этом надо заранее сообщать. Плюс, откуда мне знать, три там или не три. Анон написал "наверняка". И что у него за слова, 80 буков хватит всем? Кодировка? Так то можно и на C наебошить чтение по char. Более того, в условиях ограниченной памяти, вообще не надо делить на слова. Надо хранить три пары указателей (начало/конец). Но опять же. Динамический массив, ебануться! Сколько он занимает, 16-32 байта оверхеда? Если там задача типа распарсить аргументы кокомандной строки или найти слова на сайте, зачем лишняя ебля?
Значение неинициализированного указателя может быть быть адресом в странице памяти, у которой разрешения не подразумевают read/write? Или он априори в секции данных образа?
>>1063925 Меня интересует не то, что там лежит. Забыл я инициализировать указатель и при memcpy словил "Вызвано исключение по адресу 0x013A13E9 в SchnorrTestingEnvironment.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0xCDCDCDCD", и чё-т я задумался, проблема именно в том, что неинициализированный указатель может ссылаться на какой нибудь PAGE_EXECUTE_READ, в этот проблема? >>1063928 Пока думал над твоим ответом, задумался, а во что компилируется this в функциях класса? при каждом вызове функций происходит неявный push адреса объекта класса? А по теме - мой неинициализированный указатель - не переменная, созданная в скоупе функции, а поле в структуре, которая в свою очередь поле в классе. Разве под него в стеке будет выделяться память?
>>1063934 >во что компилируется this в функциях класса this - просто неявная переменная в всех функциях класса. При некоторых ошибках линковки, кажется, это явно можно увидеть.
>а поле в структуре, которая в свою очередь поле в классе. Класс сам где располагается? В стеке? Значит, что было в стеке на месте, которое занял указатель, то в нём и будет лежать. В куче? То же самое, но в куче. Представь, как твой класс располагается в памяти, и ты всё поймёшь.
>0xCDCDCDCD Некоторые компиляторы в дебаг-режиме заполняют выделенную память таким числом, чтобы легче было выявлять баги.
>в этот проблема? Шанс того, что ты попадёшь на что-то осмысленное - почти нулевой. Хотя у меня был случай, когда указатель появлялся на месте ранее выделенного указателя, что затирало данные в другом конце проги. Поэтому используй умные указатели, где можно.
>>1063949 >this - просто неявная переменная в всех функциях класса. При некоторых ошибках линковки, кажется, это явно можно увидеть Чтобы эта переменная указывала на класс, адрес должен быть передан. Метод - это такая же функция, как и все остальные, никаким магическим образом this он получить не может. >>1063934 > в этот проблема Проблема в том, что ты не понимаешь, что содержание неинициализированной памяти никак не определено, что не всё виртуальное пространство размечено, что программа может вести себя любым образом после использования неициализированной памяти по мириадам причин.
Название ошибки и то, как себя ведёт программа после ошибки,не имеет никакого отношения к C++ и называется undefined behaviour.
>>1064260 Не понимаю тебя. Вся суть плюсов в статической типизации и производительности. Тебе никогда не нужно иметь несколько функций вместо одной, тебе лучше иметь одну функцию пи передавать в неё this, иначе будет больше кеш миссов и бтб чаще не будет содержать инфу о нужном месте. Ты говоришь про эзотерические архитектуры ЦП, в которых есть абстракции?
Такая тема короче, есть .so библиотека, которая используется приложением написанным на С. Но библиотека собирается компилятором плюсовым, в библиотеке для совместимости с С приложением есть такая конструкция:
Но при попытке использовать в какой-нибудь из этих функций метод класса из подключаемой к .so библиоетеке hpp либы всё обсирается. Компилирую я всё это дерьмо с такими флагами g++ -O2 -g -shared -fpermissive -rdynamic -fPIC -o suck_my_cock.o main.cpp -DEXTERNAL_ENGINE
Если не подключать hpp либу и не пытаться использовать методы из неё - всё нормально. Причём компилятор жалуется на С-шные хедеры, мол:
../../fio/fio/minmax.h:5:19: error: expected unqualified-id before ‘{’ token #define min(x,y) ({ \ ^ ../../fio/fio/minmax.h:5:19: error: expected ‘)’ before ‘{’ token ../../fio/fio/minmax.h:6:2: error: expected primary-expression before ‘typeof’ typeof(x) _x = (x); \
>>1064505 Скорее всего вызываешь что то C из C++ или наоборот. А если сам писал, то где то обращаешься к классу вместо переменной (Point.draw() вместо Point p; p.draw())
Кто нибудь в Qt Editor'е с CryptoPP работал в плане просто использовать исходники? Какого хуя эта сука на компиляторе msvc++ сыпется с ошибками LINK типа символ не найден (все файлы есть), а на MinGW с ошибками типа ваш w_char* не LPCWSTR? Как заставить эту падаль работать?
Есть какая-нибудь библиотека, чтобы описывать логику интерфейса? Ну то есть интерфейс я рисую сам, а логику переходов, типа если пользователь нажал кнопку - показать следующий экран, писать лень.
>>1064870 Видишь файл configure в корне, как правило он используется для конфигурации перед сборкой. У него должны быть разрешения на выполнения (если их нет, добавь chmod-ом), потом запускаешь его с ключом --help и смотришь, что тебе предлагает configure. Многие проекты, как правило, ничего не требуют за исключением указания префикса установки (опция --prefix, указываешь ее на свое усмотрение, например --prefix=/ (самый хуевый вариант), --prefix=/usr/ (вариант по-лучше), будет указывать на место, куда будешь ставить либу со всем говном), после того, как ты сконфигурировал это дерьмо (если у тебя нет каких-то devel-пакетов, лучше бы тебе установить их, configure явно будет намекать на их отсутствие), запускаешь make лучше с аргументом -jx, где х - количество твоих ядер у пинцессора + 1, то есть для моего core i5 - make -j5. Ждешь и наблюдаешь за процессом... И потом хуяк, все готово, вах вах. Но осталось только установить либу. Тебе поможет make install (если ты указал префикс, на запись которого ты прав не имеешь, то тебе придется запустить скрипт от рута, но тут уже ничего не поделать, маня) Такие дела, если вкратце. Конечно, можешь прихуячить туда cflags, cxxflags, ldflags и прочее дерьмо, но тут ведь тебе только для себя же.
Аноны, помогите пожалуйста. Я пока плохо понимаю ООП и не могу сделать того, что мог бы на простом С. Вопрос такой, как мне в int main вызвать cin/cout перегруженных операторов << и >>? Я уже реально голову сломал, блять! При попытке как-то перенести istream и ostream что внутри класса, и того что вне класса (вместе с функцией) в main - матерится в мэйне, при попытке убрать один из этих двух операторов - не работает cin или cout (судя по всему из-за перегрузки). Так как или через что мне вызвать cin/cout, чтобы main не ебал мозг? Покажите на примере моего кода, кому не сложно.
Алсо, аноны, проверьте правильные ли решения перегрузок у всех операторов, кому не сложно. А то я не ебу, но мне кажется что где-то есть кривой return. Заранее спасибо за помощь. Код ниже.
>>1063107 (OP) Итак ньюфаг в треде. Разумеется не так давно начал изучать С++, возник вопрос, собственно на счёт программирования на Linux, многих функций попросту нет, у некотороых есть аналоги но не у всех, как например реализовать ньюфане функцию _kbhit ? (из conio.h если что) И вообще как живется красноглазикам которые пишут на С++?
main.cpp В main просто вызывается функция, определенная в hello.s
При сборке получаю ошибку: 1>hello.s(9): error A2006: undefined symbol : printf
Видимо, проблема в порядке обработки исходных файлов и генерации объектников, но я не уверен. Как указать в hello.s, откуда брать информацию о функции printf?
>>1064985 Спасибо за ответ. А как потом это все дерьмо линковать со своей прожкой. Например я сконфигурировал исходники и установил в --prefix=/usr/ там же вроде должны появиться готовые библиотеки формата lib_name.a , с которыми и нужно линковать свою программу, нет?
Посоны, я пишу планировщик потоков. Есть такая функция переключения контекста: https://ideone.com/B2kaUW Проект собираю под архитектуру x86_64, поэтому первые четыре аргумента в вызове функций передаются через регистры. Я настроил в свойствах asm-файла использование 64-битного masm, но после этого возникли ошибки:
>>1065391 Должны сами установиться по пути, который ты указал в --prefix, если не указывал, то наверно корень установки будет /usr или что-то такое. Так что в процессе линковки gcc, скорее всего, либу найдет. Если ты собираешься дальше использовать CMake, тогда можешь воспользоваться pkg_config для поиска необходимых либ, например: >> find_package(PkgConfig REQUIRED) >> pkg_search_module(FFMPEG REQUIRED ffmpeg) >> set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FFMPEG_C_FLAGS}") >> set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FFMPEG_CXX_FLAGS}") >> add_executable(sosach main.cxx) >> target_link_libraries(sosach ${FFMPEG_LIBRARIES}) >> target_include_directories(sosach PRIVATE ${_INCLUDE_DIRS})
Еще есть такая штука, которая тоже много чего сделает для тебя, называется automake, но я не ебу, как ее использовать, лол. Да, впрочем, дохуя этих систем сборки, что уж.
Может кто нибудь по русски объяснить - почему в Python я могу в две команды установить и заюзать любую более менее известную публичную либу, а в C++ вынужден ебать себя в рот в поисках как эту всю хуйню собрать?
>>1065578 Найс, у плюсона порвало пердак. это не кормлене зеленого - я искренне поинтересовался, а ты меня нахуй послал - ну не пидор ли ты после этого?
>>1065588 То, что ты скачал библиотеку на пайтоне, вовсе не гарантирует, что она у тебя правильно скачалась и будет работать. А в плюсах если у тебя не собралась либа, ты знаешь что она не собралась.
>>1065590 >библиотеку на пайтоне, вовсе не гарантирует, что она у тебя правильно скачалась и будет работать. скачать либу на пайтоне и проверить её работаспособность всё проще, чем скачать либу C++ и дождаться пока всё там скомпилируется. так что такой себе аргумент.
>>1065596 Да и ещё мне тяжко всю эту парашу воедино сводить. Солюшн, в нем проект, внутри проект, установить зависимости, компиляция по полчаса. И вот я спрашиваю - зачем это? В чем соль? Почему так, а не иначе? Но видимо разумисты-плюсаны только хейтить способны.
>>1065592 А, тебя никто разубеждать и не собирается. Я как раз последние полгода плюсовые библиотеки разные пробую собирать. Обычно процесс выглядит так: скачал, кинул .h в папку с проектом, все работает. Чуть посложнее - скачал, кинул .h в папку с проектом, посмотрел в getting started какие #define нужны. Случай посложнее - скачал соответствующий Visual Studio project, поменял настройки в свойствах (static, MTd, вот это все). Самые сложные случаи - скачал либу, запустил cmake-gui, поставил галочки в тех опциях что заинтересовали, вписал пути к зависимостям которые не нашлись сами.
>>1065606 Мое субъективное мнение. В проектах для VS все опции стандартизированы и там сложнее перепутать. В cmake там скриптовый язык, который я еще не изучал, склонность автодетектить пути к зависимостям неправильно, потому что у меня например разные версии SDL под разные платформы имеются, опции на усмотрение автора либы.
>>1065597 > Солюшн, в нем проект, внутри проект, установить зависимости А, спермоблядь. Так бы и сказал. Впрочем, и так понятно, что у тебя нет пакетного менеджера.
>>1065622 О, ты удачно напомнил. Ведь под винду и студию как раз есть пакетный менеджер, и не один. Nuget в студии и OneGet в дриснятке. пользоваться ими я, конечно, не буду >>1065624 С разморозкой. В VS2017 и clang уже есть модули из следующего стандарта. https://schneide.wordpress.com/2017/07/09/c-modules-example/
>>1065639 >какой будущий стандарт? С++20 >у VS они уже есть? Как и у Clang. (gcc нинужно) >Никому неизвестно что там будет и как они будут выглядеть Только тебе неизвестно, всем уже известно, по ссылке код.
>>1065639 Ты наверное считаешь, что такой труп страуса сидит и придумывает, рисует в тетрадку, чтобы такого внести в стандарт. И тебе невдомек, что туда попадают уже готовые вещи, с прототипами, написанные майкрософтом и эпплом.
>>1065645 >Это лишь догадки. Это уже факт, озвученный авторами языка. Нагуглишь сам, там дословно с++17 мы уже зафиксировали, теперь мы работаем над c++20. >Который отличается Это неважно. Одним словом отличается.
>>1065647 >Нагуглишь сам, там дословно с++17 мы уже зафиксировали, теперь мы работаем над c++20. Я про то, что не факт, что модули будут в 20ой. В 17ом тоже говорили сделаем, но хуй там.
>>1065654 Я сам хочу вкотится, так что правильного ответа не знаю. Вангую что язык (ну тут понятно), плюс предметная область - если высоконагруженные, то всякие многопоточности, базы данных, работа с памятью, если геймдев - 3d и движки, если микросхемы - оптимизации, тулчейны.
>>1065573 >в C++ вынужден ебать себя в рот в поисках как эту всю хуйню собрать? В 99% случаев для собирания либы нужно просто сказать make. Ну, иногда конфиг поправить под себя.
>>1065573 Потому что легаси, потому что нативный код, потому что в комитете тормоза сидят. >>1065597 >И вот я спрашиваю - зачем это? Для перформанса (которого всё равно может не быть, если постараться и накорябать кучу копирований и коротких циклов). >>1065598 1) Нахуй тебе динамически? 2) Нужно будет попердолить свои перегруженные операторы так, чтобы одна перегрузка принимала какой-нибудь THISTYPEISRETURNEDBYANOTHEROVERLOAD. >>1065639 >С++17 до сих пор разрабатывается. Финал драфт уже есть, его принимают сейчас.
Есть на гитхабе какие-нибудь проекты, в которых, я хз как объяснить, контрибьюторам прям задания кидают? Хочу в крестах скилл поднять на опенсорсе и закрасить плиточки на гитхабе
>>1065769 Идёшь в любую репу с активным автором (чтобы не ждать у моря погоды), открываешь список issues, находишь там то, что тебе интересно, и пишешь автору, что хочешь сделать (желательно - после того, как знаешь, что сможешь и сделаешь), во время этого поддерживаешь контакт.
>>1065950 Это про митинг с 27 февраля по 4 марта. Since 4 марта и до 6 сентября они были in the final procedural endgame of formal ISO approval and publication.
Почему я не могу создать объект класса CoCarClassFactory? Пишет object of abstract class "CoCarClassFactory" is not allowed. https://pastebin.com/iFMT3Tyi
>>1066372 С помощью компилятора - никак. С помощью плюсов: находишь системные вызовы для этого или либы или используешь CLI-программы, встроенные в ОС.
>>1066603 Сейчас я на РАБотку подъеду и спрошу, у меня там код. Что конкретно ты делал на CUDA? Насколько знаком с cusolver и cublas, нужно будет быстро хуярить, если что.
>>1066657 > Что конкретно ты делал на CUDA? Решатели для конечных элементов. С библиотеками, без библиотек... Делал свой MPI-CUDA решатель для кластера, например. > Насколько знаком с cusolver и cublas С первым не работал (работал с cusparse), со вторым – работал. Вообще опыт гомоебли с математическими библиотеками немаленький, если задача нормально поставлена будет, заведу быстро почти что угодно.
Пытался применить оператор "меньше" в виде функции: bool b=std::operator<(x,y); Где x и y - числового типа. Но конпелятор отказывается конпелировать, говорит, что можно сравнивать только две std::pair, либо два std::errorcode либо ещё что-то, но про числа ничего нет. ЧЯДНТ?
Тупой вопрос. std::string с reserve(100) не копирует же данные в другое место, пока изменения в строке не приводя тк увеличению ее длинны на более 100 символов?
>>1066875 http://eel.is/c++draft/basic.string#string.require-4 Никаких гарантий относительно reserve в стандарте нет. >>1066779 Только через компиляторозависимые расширения языка. >>1066806 operator< - это конкретно для вызова и определения перегрузок. Для всего остального есть std::less (используется в качестве сравнителя по умолчанию во многих шаблонах).
Нагородить нелепой хуйни, которой невозможно воспользоватся, пообещать сделать юзабельным в следующих версиях и так ни хуя и не сделать. Именно так разрабатывается С++.
> Однако при разработке стандарта было допущено небольшое упущение — шаблонный вариант пользовательского литерала позволяет работать только с числовыми аргументами, несмотря на то, что парсинг их осуществляется посимвольно. > Такое упущение, конечно же, не могло остаться не замеченным, и на этапе согласования стандарта C++14 было предложено решение для строковых аргументов > Однако в финальную редакцию стандарта C++14 так и не попало. Впрочем, не будем отчаиваться, есть надежда, что нас обрадует C++17.
По хорошему С++ уже давно пора хоронить и порядочные люди так бы и сделали. Будь страус человеком встал бы и сказал: нагородили говна и запутались в нем. закрываем нахуй.
Но нет до последнего будут обмазыватся несвежим говном которое наложили еще два полудебила керниган-ричи.
>>1067704 Всмысле, чтобы враппать эти шаблоны, и их в интерфейсе вообще не было. Ну, блин, без дополнительного класса-враппера, используя только один класс?
>>1067707 Всмысле, мне нужно, чтобы был шаблонный мембер-вектор с компайл-тайм содержимым, не делая при этом сам класс шаблонным. Я даже не знаю как правильно такой враппер написать.
>>1064870 для таких даунов, как ты, все либы уже собраны и аккуратно положены в репу. тебе всего лишь надо сделать: apt install libname-dev apt install libcurl4-gnutls-dev или же libcurl4-openssl-dev (разница лишь в либе для шифрования, как видишь) apt install ffmpeg
>>1067848 Именно так. А все потому открытые библиотеки на юниксах и разрабатывают. >>1067850 Nuget это конечно мило, но гвоздями прибито к Visual Studio и Windows. В одном проекте сейчас переходим на Conan. Вполне юзабельно. Разве что на текущий момент оперативно не переключишь вариант сборки (Debug\Release, x64\x86).
>>1068020 Тебе вряд ли это понравится. 1. Встраивают хром или другой рендер HTML (Sciter) 2. .NET и WPF 3. Берут что то из этого списка https://github.com/fffaraz/awesome-cpp#gui (CEGUI, Dear IMGUI, nana) или вообще какую то еболу типа Ultimate++.
>>1068024 >Эти библиотеки навязывают свой стиль программирования Лол кек. Фреймворк — это практически по определению наличие инверсии зависимостей. Так что да, ты будешь писать в стиле, нужном этим библиотекам. В этом смысл инверсии зависимостей.
Есть ли тут те, кто пишет на QT? Как можно организовать специфическую сортировку элементов в таблице (QTableView)? Существует дефолтная функция, которая сортирует все, кроме заголовков, но мне нужно сортировать только некоторые (например, выделенные) элементы. В интернетах вроде советуют использовать QSortFilterProxyModel, но я нубоват и не могу понять, что оно делает. Оно позволит мне наложить фильтр на имеющуюся модель так, чтобы в нее не вошла часть строк, и потом отсортировать стандартным образом? Но тогда не скроются ли непрошедшие фильтр строки из таблицы? Мне нужно их оставить на местах.
У меня есть динамически выделенный кусок памяти на N байт. Можно ли аккуратно std::move'нуть ( или скопировать ) его в вектор, если N кратно размеру темплейта?
>>1068268 Если не ошибаюсь, ничего специфического в этом нет. Пусть тебе нужно сортировать выделенные элементы по нажатию ctrl+t. Пишешь обработчик ивента, по нажатию ctrl+t идешь смотреть какие строчки в таблице выделены и сортируешь их любым известным методом.
Присел на Qt quick controls 2 после пары счастливых лет на WPF. Как в нем у многокомпонентых контролов например, DelayButton обращаться к свойствам компонентов, из которых он состоит например, к радиусу Rectangle'а, который как бе Background? Если шуршать в самих свойствах контрола, когда инстанцируешь его в Item'е/Page'е, то там невозможно что нибудь изменить из этих свойств. Сама документация Qt в параграфе с многообещающим названием "Styling delay button" об этом говорит только "ну бротан делау буттон состоит из контент и васкдроунь ))00)0 дальше сам делой))00". Это типа чё, мне нужно писать велосипед типа MyDelayButton, и там уже делать как мне надо?
>>1068611 Я думаю быстрей свою библиотеку написать на чистом WinAPI, чем годами наворачивать чьё-то говно, которое в конце концов ещё окажется ещё и не работоспособным.
допустим, у меня в классе есть структура, которая может быть задана, а может и не быть задана. Как сделать, чтобы можно было легкор проверять, задана она или нет?
struct data_s { int i; double d; }
class Jopa { public: struct data_s s1 = {0}; struct data_s s2 = {0}; }
>>1068268 Если тебе нужно сортировать данные модели то тебе нужно унаследоваться от QSortFilterProxyModel и перекрыть там методы filterAcceptsRow и filterAcceptsColumn которые будут пропускать строки и столбцы по заданному условию. Для изменения порядка элементов нужно перекрывать соответсвующий метод. Это нужно потому что элементы модели прикреплены к ней намертво и в другую модель их нельзя передать даже по указателю, поэтому нужна прокси модель, которая будет пропускать и сортировать элементы уже имеющуюся модели для конкретного представления.
>>1068622 >Я думаю быстрей свою библиотеку написать на чистом WinAPI Напиши и покажи, как она работает. Предчувствую, что на ВинАПИ ты не писал, если ты так говоришь.
>>1068637 Я раньше писал на WinAPI, даже лабы в универе делал на нём, когда все писали их на Borland C++ под MS-DOS. Поэтому у меня по ЯТП были всегда пятёрки. Буду потихоньку писать свою библиотеку. Может её сделать платной? Некоторые скажут, что я наживаюсь на их несчастье. Но что я ещё могу делать!? Я умею только программировать.
>>1069111 Не устраивает, что хочу использовать Qt как молоток, а он ведет себя как большой резиновый член, который так и норовит залезть мне в жопу. Это касается и Qt как библиотеки, так и Qt creator'а как IDE. Особенно в QML, это просто пиздец. IDE крашится блять не успеваешь даже строчку дописать.
>>1069199 Что бы не тащить все символы из std в текущее пространство имен. Это точно не стоит делать в заголовочных файлах, ибо не ясно куда они потом будут подключатся и когда возникнет конфликт имен.
>>1067094 > >По хорошему С++ уже давно пора хоронить и порядочные люди так бы и сделали. Будь страус человеком встал бы и сказал: нагородили говна и запутались в нем. закрываем нахуй. > >Но нет до последнего будут обмазыватся несвежим говном которое наложили еще два полудебила керниган-ричи.
Поддвачну.
Нельзя пофиксить кресты сохраняя обратную совместимость. А если не сохранять, то это уже и не кресты.
Тол-же касается джавы кстати, и прости господи, JS.
>>1069252 Ок, ладно. Все равно нихуя не пойму. Короче, не знаю, прокатит ли: тыкаешь `Add entry` указываешь в название поля BOOST_ROOT, а в качестве значения путь к папке, куда ты распаковал Boost, у тебя вроде как `c:/local/boost_1_65_1/`. После этого `configure`, затем `generate` и вроде как все. Но это не точно. Я с буста только препроцессор использовал, а он header-only.
>>1069347 Осилишь. Но у С есть ниша - микроконтроллеры. И это не только хипстерские ардуино, но и контроллеры котлов на заводиках, например. Космические аппараты вроде тоже только на С можно программировать (MISRA C)
>>1069366 Мало памяти - нельзя выделять динамически, низкая скорость проца, реалтайм - нельзя исключения, сами алгоритмы простые - от системы классов и наследования нет плюшек. Проще написать на "высокоуровневом ассемблере", чем гадать, во что раскроется очередной шаблон, если поменять какой то параметр.
Какая книга здесь аналог K&R минималистичная, но охватывающая большую часть множества языка? "Язык программирования С++" Страуструпа? Книги он пишет лучше, чем языки?
>>1069365 Плюсы, как язык, сложнее, чем С, так как база терминов разбухла в разы. Просто на С ты будешь писать ручками многое из того, что в С++ сделано авторами STL и авторами компилятора. Если ты вместо С будешь практиковать С++, некоторый пробел в твоей практике будет.
Олсо, с некоторых пор С не совместим с С++. У С тоже есть новые стандарты (но я почти уверен в том, что у тебя про них ни слова не спросят).
>>1069704 Ага, пишет, и вежливо поливает говном с конца первого абзаца. Я тебе повторюсь — это такое же ответвление от плюсов, как плюсы от си (и труп страуса об этом там же пишет, почитай).
>>1069704 >C++/CLI - это расширения стандартного языка C++. Я всегда использовал лишь как прослойку между managed и native частями приложения. Это и не полноценные плюсы, и не полноценные шарпы. 11 и далее стандарты там в принципе не завезены. Чем меньше C++/CLI, тем лучше. мимопроходил
>>1069732 Никакой магии. сначала по коду проходится транслятор, который расхуяривает весь твой ООП, лямбды и прочее на элементарные единицы, а потом уже им ставит взаимное соответствие со всякими B8 00 00 00.
>>1069786 Стоит ли вкатываться на андроид через Qt, или лучше смотреть в сторону android studio и java? Определяющим критерием для меня является: предоставляет ли Qt возможности вертеть ОС мобилы как мне нужно, ну или хотя бы настолько же, как мне это позволяет java framework'и в том же AS?
>>1069793 Кресты знаю так себе, в свободное от работы время пытаюсь въехать в Qt, а тут еще и параллельно лабы в универе с мобильными приложениями точнее, именно android, а тут как раз Qt предлагает свой фреймворк для этого. Не хочу просто еще на java и AS садиться, но если Qt не позволит, например, взаимодействовать с ФС телефона/другими приложениями/функциями ОС, а AS позволяет, то придется присесть на джаву.
>>1069826 > плюсы -> жс Что же ты делаешь. Если душа лежит - конечно попробуй. Сложно будет разве что с тем, чтобы разобраться во всем js-зоопарке, и писать красиво на языке, который всеми силами поощряет говнокод.
>>1069939 Я вкатывался на скотте мейерсе "Эффективный и современный С++". Прихуел, конечно, знатно... Забавно то, что потом пришлось читать cppreference, чтобы восполнять знания. Лучше бы книгу по крестам прочел )
Сап, плюсач. Вопрос, возможно глупый, но я не смог быстро найти ответ. Как считать из файла в дабл, если числа в файле отделены пробелами 5 4,124 -1000 Причем хотелось бы выполнение двух пунктов. Не использовать библиотеки из плюсов, типа stdio.h Возможно, что файл закончился или написано не число. Раньше я для этого через фстрим делал гетлайн, а потом преобразовывал в инт, но теперь у меня дабл и возможное отсутствие атои аналога в библиотеке. Самому писать функцию для перевода лень, программа то мизерная.
>>1070090 Я к примеру вот так написал программу https://pastebin.com/NQrXtFcG На внутреннюю логику не смотрите, я в функции считываю из файла, как из потока. Однако это все не компилируется, хотя я вроде подключил все библиотеки. Мне кажется дело в команде using namespace std; Но если ее разнести из ашника, то не видит стринг в ашнике, а если вместо стринга написать std::string, то не компилируется как обычно с непонятными ошибками.
Шарит тут кто в Qt? Я в нем всего-то первые два часа и надо заделать лейаут по типу простого paint. То есть в MainWindow я помещаю виджет в дизайн редакторе, например openGLWidget, но как я дальше вообще связываюсь с ним в коде? Для него не создается никаких классов, всё где я пока могу писать код - mainwindow.cpp. Мне надо самому писать класс для каждого виджета и вручную связывать класс и виджет? Мне бы хотя бы нарисовать пару линий на этом gl-виджете из кода.
Может кто работал с QAudioOutput, крэшит каждый раз как пытаюсь его остановить
Суть в чем - вывод аудио не через файл, а через прямое байтоебство (в примере синусоида). Для этого наследуются от QIODevice и оверрайдят read() ( и write() пустой функцией). После этого передают унаследованное в QAudioOutput (QAO). В примере так: Берется здоровый буффер, туда синусодидой вычисляется хуева куча сэмплов, после этого по нажатию ВКЛ буффер начинается считывать данные, к примеру QAO просит 16к байт, функция read() записывает эти 16к байт по переданному поинтеру, делают сдвиг 16к (тобишь в следующий раз скопируют следующие и так далее до ахуения, бесконечный луп выходит). Контроль этим цирком присходит через start() и stop(). Все работает.
Я сделал одно отличие - я хочу, чтобы после того, как проигрались все сэмплы QAD останавливался сам (без лупа). Отпрвляю сигнал в отдельный класс для врапа всего этого, он делает QAudioOutput::stop(), все стопается после этого крэш. Также я пробовал делать стоп не тогда, когда буффер кончится, а после 10 итераций - все равно крэшит. Самое интересное, что если делать аналогичный стоп через ГУИшку все работает нормально.
InteLib is a library of C++ classes which lets you do Lisp programming within your C++ program even without any additional preprocessing, without all those calling conventions etc. You can write a C++ code (that is, a code which is accepted by your C++ compiler) thinking in a "Lisp mode" and the code you write will look much like Lisp code altough it will be pure C++.
To give you the essential feeling, the following example is provided.
Obviously the code is just the same, the syntax changed a bit, but it's still the same. Well, do I surprise you if I say it is C++ code? If you don't believe, look at the following:
>>1070619 Я просто отрисовку с OpenGL переносил, написал обертку небольшую вокруг QPainter. В результате получилось проще и удобнее, чем обычно с кьютовой сценой бывает - почему то никогда задача ровно на их граф не ложится, приходится костылить. Теперь так всегда и делаю для простого интерактива.
Насколько уебищным является решение делать GUI на каком нибудь C#, а потом через P/Invoke в .dll или запуск .exe, написанный на крестах, передавать входные параметры и забирать их?
>>1070795 Зато ебсти себя в жепу связывая очень хуево связываемые вещи ни в каком плане не говно план, да? Ещё и вендорлок на продукты компании, убивающей свои проекты ежегодно.
Собираю из исходников .so библиотеку ./configure with ssl, в итоге получается 3 .so файла libcurl.so, libcurl.so.4, libcurl.so.4.4.0
Итак: 1) если мне нужно использовать в проекте эту шаред библиотеку курла, то необходимо рядом со своей программой ложить все 3 .so библиотеки или нужна только одна? (Какая?)
2) на двух .so файлах нарисована стрелочка(такая типо ярлыка), зачем?
3) каждый из этих .so файлов весит примерно по 500kb, так и должно и столько всего весит вся cURL?
>>1070804 После того, как я осмотрелся в виджетах и quick controls 2, я просто охуел от того, как глубоко нужно засунуть себе хуй в сраку, чтобы добиться того, что на WPF делается за пару минут, и потерял все надежды на нормальный GUI где либо, кроме как на WPF. Это выбор между пиками и хуями, я согласен, но оба стула прикручены к полу, так что я выбираю пики.
>>1070806 >2) на двух .so файлах нарисована стрелочка(такая типо ярлыка), зачем? Это линки. Это один файл и две ссылки на него. На вопрос "зачем" тбе ответят в каком-нибудь юниксотреде. >>1070808 В конце концов если плотность пик достаточна, они не проткнут жопу.
>>1070806 1. Можешь положить к себе, но, на самом деле, лучше make install въебать. Если не хочется, чтобы было конфликтов и смеющимися библиотеками, то во время того, как выполнял ./configure нужно указать --prefix куда все девать. Если префикс нестандартный (то есть не / или /usr), тогда добавляешь в переменную окружения LD_LIBRARY_PATH путь к либам (например /usr/devel/lib), либо настраиваешь ld.so.conf 2. Это символические ссылки, скорее всего. 3. Некоторые либы и мегабайтами весят (Qt не в счет), там, наверно, большое количества строк. Можешь очистить директорию сборки и перед выполнением configure задать переменную окружения CFLAGS="-g0 -O2", тогда их вполне может пожать
Вообще, нахуй ты взялся собирать CURL, если любой нормальный реп уже содержит его devel-версию?!
>>1071141 >осилю ли 1 этот язык? На уровне "сделаю с гуглом и стаковерфлоу" осилишь точно, а вот дальше могут быть проблемы. В языке огромное количество премудростей, отнюдь не улучшающих читаемость. C++ - это река с дном, выложенным скалами. Бери книгу из шапки и читай.
Даунский вопрос. Если я создам в какой-то функции переменную в куче, которая никуда не передаётся и нигде не используется, то после вызова функции она останется висеть в памяти или исчезнет?
>>1071319 Если ты создаешь переменную в куче и не высвобождаешь память, то память висит до конца работы программы. Причем, если ты локально выделил память, то после завершения работы функции/блока, ты еще и потеряешь указатель, так как последний будешь высвобожден из памяти как автоматическая переменная с локальной областью видимости. Варианты решения: 1. Использовать такие объекты как умные указатели, деструктор зашит уже внутри. 2. Более народный вариант и экономный по памяти, передаешь в функцию ссылку на указатель, которому через new выделяешь память память
>>1071577 Читаю, спасибо. На работе видел как то .h файл, который занимается примерно тем же, переопределяет new/delete и записывает в вектор выделения памяти, но я не понял насколько он кроссплатформенный.
>>1071580 >На работе видел как то .h файл, который занимается примерно тем же Свой велосипедный анализатор памяти наверное в каждой второй конторе есть.
>>1071713 Битовая операция XOR (исключающее или). Операции возведения в степень в c-подобных языках нет, это реализуется библиотечной функцией pow() из math.h
>>1071734 А в валгринде дофига не С++? Все же тут дело видимо в том, что всюду дергаются какие то системные вызовы, используется какое то знание о том, как система выделяет память.
>>1072360 ЯННП, что он предлагает то, выкинуть все ООП и писать циклами по массивам? Хотя это 2008, думаю если сейчас выкинуть виртуал, все остальное компилятор соптимизирует лучше, чем писать ручками.
>>1072379 >Это миф. Ты правда считаешь, что виртуальный вызов бесплатный? >Это попросту неправда Правда. Более читаемо, чем is_sphere_in_frustum( sphere, frustum ) ты вряд ли напишешь. Код без абстракций проще для понимания, чем код с абстракциями хотя бы потому, что тебе абстракции в голове не надо держать.
>>1072360 >А у Эктона еще круче Тащем та, краткая суть его слайдов - "При специфических условиях, стандартная реализация ООП сосет по скорости" Конкретно условия: - Объектов много, если бы было мало отставание стандартной реализации было бы незаметно - Операции над объектом легкие/простые. Были бы сложные ( ну там выделение памяти и т.п.) - было бы незаметно по сравнению с virtual - Критично по производительности Всем нормальным разработчикам, это давно было очевидно, ни откровением, ни критикой ООП оно не является. А то, что на одно такое место в типичной прогремма будет 100 и более некритичных мест, где можно использовать virtual ты скромно не фокусируешь акцент. Интересно почему?
>>1072367 Все картинки про узкие места в коде, который будет часто исполняться. Если читаемость кода приведёт к его замедлению, можно и пожертвовать частью ООПа.
>>1072408 >Интересно почему? Потому что в типичном ООП-коде никто не смотрит на узкие места, а сразу хуячат какой-нибудь универсальный AnimalBase, который дальше через виртуальные методы хрюкает, мяукает, выделяет память, рисует виджеты и управляет атомным реактором.
>>1072428 В том то и дело, что на каждой конференции по С++ твердят - проверяйте профайлерами, то что вы считали узким местом дало 0,001% производительности, ради этого не имеет смысла писать С-функции на 1000 строк и отказываться от архитектуры.
>>1072428 И? В 99 случаях из ста оно будет работать удовлетворительно. А то что в одном специальном случае оно не работает - ну так никто ничего не обещал, головой надо было думать.
>>1072436 >Видишь, написал Только на практике это будет что-то вроде current_camera.contains( spaceship ). И чтобы понять, что "contains" в данном случае означает пересечение фрустума со сферой, тебе придется попрыгать по файлам.
>>1072453 >В 99 случаях из ста оно будет работать удовлетворительно. Проблема в том, что когда тебе понадобится скорость, узким местом окажется вся программа целиком, и чтобы оптимизировать придется переписывать все целиком. Плюс в классическом ООП очень сложно изменить программу, и добавить функционал, не предусмотренный на старте.
>>1072465 >А у тебя, в таком случае, будет is_sphere_in_frustum(cube, cloud) Ну это понятнее, чем contains. Тут проблема только в том, чтобы выяснить где фрустум, а где сфера.
>>1072466 Вытекаешь из треда. На случай, если ты не зеленый: Наоборот, профайлером смотришь в какой функции программа проводить 90%+ времени. Ее и оптимизируешь. Повторить пока не надоест. И нет, в классическом ООП намного проще добавить функционал, просто описав новые свойства объектов и связи между несколькими объектами, чем пытаться разобраться в мешанине оптимизированного кода на Си, манглирующего битами.
>>1072471 >Наоборот, профайлером смотришь в какой функции программа проводить 90%+ времени. Это ты на свинге в джаве не писал приложений. Он тормозной необратимо. Весь целиком, без узких мест. И новый функционал в большинстве случаев там можно добавить, только переписав виджет с нуля.
>>1072475 >про него сразу везде писали, что он тормозной Он и сейчас с JIT тормозной, и с AOT будет тормозной, потому что там неизлечимое ООП головного мозга. В Qt чуть получше со скоростью, но и там штаны через голову приходится надевать регулярно, когда от базового функционала хочешь на шаг отойти.
>>1072470 Да, признаю, тут обосрался, если ввести указатель то уже не оптимизирует. Впрочем виртуальный вызов скорее всего не сильно дороже if по типу окажется.
>>1072522 define не сильно дороже. Компилятору приходится впиливать общий для всех классов в код в каждый виртуальный вызов, он не может использовать более простой код специально для этого дерева наследования.
Сейчас у меня godbolt не грузится, завтра проверю.
>>1072576 Т. е. по умолчанию считывается 1 байт? Я ещё писал fin.getline(C.Name, 20, '\t');
в этом случае всё считывается, но выдаётся такая ошибка:
Additional Information: В среде выполнения обнаружена критическая ошибка. Ошибка произошла по адресу 0x63cee100 в потоке 0xe3c. Код ошибки 0xc0000005. Она может быть вызвана ошибкой в CLR или в небезопасных либо не поддающихся проверке фрагментах пользовательского кода. Обычно источниками таких ошибок бывают ошибки упаковки, допускаемые пользователями при COM-взаимодействии, либо PInvoke, повредивший стек.
If there is a handler for this exception, the program may be safely continued.
Вдогонку: когда я сделал все буквы в строке маленькими, всё прошло хорошо. Но у меня там строка с буквами разных регистров и точками. В этом случае происходит ошибка.
>>1072604 >там вообще нет интовых аргументов http://en.cppreference.com/w/cpp/io/streamsize > The type std::streamsize is a signed integral type used to represent the number of characters transferred in an I/O operation or the size of an I/O buffer.
>>1072550 > Компилятору приходится впиливать общий для всех классов в код в каждый виртуальный вызов, он не может использовать более простой код специально для этого дерева наследования Перепутал с динамик_кастом. Теперь я тоже не понимаю, почему виртуальный вызов хуже ифа.
>>1072691 Кстати, вот этот прав. Современные процессоры очень сильно выигрывают от OUT OF ORDER EXECUTION и BRANCH PREDICTION. А виртуальная хуйня не попадает ни в одну категорию оптимизаций. Ибо процессор заранее не может знать куда будет вести следующий jump, там может оказаться вообще не загруженный в кеш адресс, а еще хуже не загруженная в TLB страница, а еще хуже эта страница будет свапнута на диск, а еще хуже если это будет магнитный диск, а еще хуже если этот диск будет в suspend состоянии, а еще хуже если этот диск будет в NUMA кластере на другом юните, а еще хуже если э\тот юнит вообще будет в другом дата центре, а еще хуже если этот датацентр вообще будет в другой стране... Ну ничего пользователь подождет...
>>1072633 Бля как же я проиграл с этой хуйни прям с самого начала. Как же смешно и нелепо когда тян лезут в области, в которых им не место. Хотя это же С++ и детский алгоритм, который освоит даже 5 летний ребенок.
>>1072698 Посмотрел ее другой видос про девушек программистов. цитата из видео: Мы девушки в программирование, как новое открытие в физике
АХаххахаах, как можно быть такой ебанутой. А потом появляются всякие electron'ы, node.js и т.п И из-за толерантности люди начинают на этом делать приложения и все понимают что это тормозное говнище, но терпят ибо 21 век же! равноправие полов!
Как отлавливать рантайм ошибки в сишных либах? Пишу хеллоуворлд на вулкане, все вроде нормально, начинаю передавать команды на отрисовку, и все падает. И фиг поймешь что не так и где искать.
>>1072698 Тян - не тян, какая разница? Если человек пишет кривой падающий говнокод, то проблема ни в том что он парень или девушка, проблема в том что он криворукий идиот.
>>1072691 Нихуя не понял. Если ветка ифа выполнялась, она будет в кэше инструкций. Если виртуальный метод вызывался, он будет в кэше инструкций, а джамп из втабла будет в БТБ-кэше. >>1072697 > А виртуальная хуйня не попадает ни в одну категорию оптимизаций. Ибо процессор заранее не может знать куда будет вести следующий jump Нихуя не понял. Оба варианта - это джамп, причём, если ифов много (вложенных или последовательных) - то это много джампов с кучей фейлов (или процессор не станет применять БТБ там, где нет статистической выгоды?), а в виртуальном вызове фейл БТБ может быть только один. >>1072756 Если ты отказываешься от дебугера, то try-catch.
>>1072758 Разница в устройстве психики и мозга тян. Уже доказано многочисленными исследованиями, что тян плохо справляются с логическими и техническими задачами. Я сам работал в одной тиме с тян, сказать что она говнокодила - ничего не сказать, более того она не понимала вообще что делает, она просто хуячила как ей там обьяснили в вузе или где она там училась не проверял. А еще там был конченый омега тимлид, который постоянно хвалил ее и относился к ней предвзято в лучшую сторону, так что за косяки ей не влетало, но зато другие получали пиздюли в 2х кратном размере если что-то не так ( конечно не от него самого ибо он даже в глаза боялся смотреть, он просто как настоящий чмоха-омега жаловался тех диру и продакт менеджеру, а они были не омеганами и высказывали нам что вот какие мы ебланы, премии не будет, а вот Машенька со слов тимлида молодец и вообще спасла нашу компанию от краха поэтому ей вот премия, хотя сука буквально пару часов назад я обьяснял этой машеньке в что нужно проверять condition_variable в цикле ибо он может ложно сработать, поэтому у нас падает весь сервер ) и вот такой хуйни было дохуище. Теперь я работаю в другой конторе с норм мужиками, и если в команде появится тян, то я сразу уволюсь, хотя такого не будет ибо они понимают, что тян и программирование это как мартышка с гранатой.
>>1072769 > Разница в устройстве психики и мозга тян. > Уже доказано многочисленными исследованиями, что тян плохо справляются с логическими и техническими задачами. Сильное заявление. Пожалуй, его стоит проверить.
Твое наблюдение легче объяснить другим способом. Скорее всего эта машенька была принята в контору из-за смазливой мордашки и сисек. Думаю, среди парней тоже полно патологических тупиц с атрофировавшимся аналитическим мышлением, просто ты их не встречаешь. Потому что у них нет сисек чтобы попасть в одну контору с теми кто сможет оценить их "заслуги" по достоинству. То что тимлид - омеган и пиздолис так же свидетельствует в пользу.
>>1072769 >Уже доказано многочисленными исследованиями, что тян плохо справляются с логическими и техническими задачами. Вообщет доказано обратное, что у них усидчивость лучше. > более того она не понимала вообще что делает, она просто хуячила как ей там обьяснили в вузе То есть как и 99% кунов. Просто из за разницы в количестве при одинаковом проценте в абсолютных числах грамотных кунов больше.
>>1072771 Проверь. Далеко ходить не нужно, погугли недавний скандал в гугл на эту тему, где чел написал охуительный вайтпейпер доказывающий это со всеми ссылками на авторитетные исследования. После чего его уволили ИБО СЕКСИЗМ!! А ОМЕРИКА ЛИБЕРАЛЬНАЯ СТРАНА И ПОХУЙ ЧТО ТАМ ДОКАЗАЛИ УЧЕНЫЕ.
>>1072773 >Да там весь код всех этих миниклассов в один кэш попадет. В современных крестах, где шаблоны в мегабайты инлайн кода разворачиваются - далеко не факт. Кроме того, проц в любом случае простаивает: сначала пока адрес виртуальной функции не подгрузит, потом пока по этому адресу код не получит.
>>1072776 Ну чел идиот конечно, любая обезьяна могла предсказать подобный исход, так что публиковать стоило под вымышленным именем.
>>1072775 > Вообщет доказано обратное, что у них усидчивость лучше. И это никак не связано со способностями к аналитическому мышлению и логике. Усидчивость важна когда ты крестиком вышиваешь.
>>1072781 >И это никак не связано со способностями к аналитическому мышлению и логике. Именно. Логическое мышление у М и Ж одинаковое, а усидчивость у Ж выше, значит она будет сидеть и писать более продуманный и качественный код.
>>1072787 А вот чувак выше утверждает что не одинаковое, и некий сотрудник гугла привел множество пруфов.
Предлагаю всем заинтересованным рассмотреть мою позицию по данному вопросу: Человек, утверждающий что кто-то решает некую задачу лучше по причине его половой принадлежности, а не интеллекта, нарекается идиотом. Если конкретная женшина пишет хреновый код, это не значит что все остальные женщины пишут хреновый код. Если конкретный мужчина пишет хреновый код, это не значит что все остальные мужчины пишут хреновый код.
>>1072790 У тебя очень толерантное понимание, я тебя хвалю за политкорректность, но выводы у тебя очень неправильные. Если взять случайно N мужчин и N женщин и посадить заниматься каким-нибудь интеллектуальным трудом, придумать внятную метрику для производительности, то получится так: 1) В среднем (по матожиданию) женщины и мужчины ничем не отличаются. Складываем метрики в обеих группах, делим на размер группы, получаем два одинаковых числа (главное, чтобы N было достаточно большое). 2) Когда мы попробуем проверить дисперсию выяснится, то откровенно глупых женщин гораздо меньше, чем откровенно глупых мужчин. Они все очень близки к середине, сказочных долбоёбок там немного, но и действительно умных искать днём с огнём. Среди мужчин окажется целая куча полных дебичей, но их скомпенсируют коллеги-задроты, которые будут решать задачу ощутимо лучше среднего сотрудника. 3) Из этого делаем вывод: женщины подходят для работы относительно небольшой квалификации. Бери любую тётку с высшим образованием, месяц обучай, и она будет нормально решать несложные задачи. Тестировать там, копировать код на стековерфлоу, или ещё что -- пожалуйста. Если тебе нужно решать сложную задачу, то надо искать кого-то, у кого есть способность решать такую задачу. А они находятся во второй, реже третей сигме у мужчин. У женщин третья сигма начинается до второй мужской.
Пруфы сам ищи в журналах.
А, да, это не значит, что мужчины умнее или лучше женщин, или наоборот. Просто это работает так. Если тебе нужен действительно хороший работник, ищи умного мужчину.
Тот кто тут топит за девчонок-программисток - просто с ними не работал.
Я работал с тремя в разных компаниях. Два сеньера и мидл. Количество конечно небольшое, но могу сказать вот что по своему опыту: 1. Нихуя не умеют думать бошкой, чтобы решать архитектурные задачи. Им нельзя доверить проектирование проекта, который будет по сложности чуть больше недели. Начинаются вопросы А КАК А ЧЕ А ВОТ КАК БЫ ТЫ СДЕЛАЛ. Ну епта у тебя 4 года опыта подумай бошкой, а я проверю.
2. Отлично справляются с механическими задачами, если опишешь всё, что нужно сделать по шагам с максимальными подробностями. Как только что-то не получается и в гугле нет решения - сразу начинается нытьё и просьбы помочь.
3. Любят подзабить на работу. Если работяга-холостяк может задержаться, когда это надо - то бырышни ровно в 00 покидают офис, им ваще на всё поебать, на сроки, на баги, на бизнес процессы. Тупо похуй. Ну это еще одно. Второе - пиздец какие НЕЖНЫЕ - все три девки любили ПОБОЛЕТЬ. То жопа болит, то пизда, то нога, то сопли. Три недели работали, одну отдыхали. Конечно, приходили со справками, но типо нахуя такие работники вообще нужны?
4. Очень любят выносить всё на уровень руководства, вплоть до генеральных директоров. Например когда есть баг, девочка не соображает как его решить, а вася не хочет помочь (у Васи таски горят). Че делаем? ИДЕМ К ДИРЕКТОРУ И ЖАЛУЕМСЯ НА ВАСЮ.
5. Не сдав таски одна из девочек ЗАБЕРЕМЕНЕЛА. Ну здарова бандиты - у нас теперь карапузик и я больше не работаю у вас. А ниче что заказчику надо сдавать её недоделанную хуйню и сроки никуда не исчезают? Похуй, теперь она мама. Нахуй такие риски?
>>1072799 Вот етого двачирую, и программирование можно на что угодно заменить. Женщин на ответственные должности брать нельзя, и никто обучаемый их и не берёт.
>>1072800 Ну я хотел дополнить, что исключения есть. Есть тянки, которые именно ЕБАШУТ покруче любого хуеносца. Но ни а каком равенстве в данной области нет, большинство - треш и боль. Поэтому, например, у работников гугла вызвал БАГЕТ указ о стремлении к отметке 50-50% женщин и мужчин в компании. Всех недовольных конечно пидорнули, но это уже другая история.
>>1072806 > указ о стремлении к отметке 50-50% женщин и мужчин в компании. А вот это уже sjw-бредятина. Набирать работников нужно сугубо по их способностям, и если так получится что женщин будет три с половиной человека, то так тому и быть.
>>1072806 Ну я и говорю с точки зрения статистики. Пожалуйста, конкретный случай высокой метрики в женской группе может быть, просто он гораздо менее вероятен. Нет ничего невозможного в появлении тянки, которая пиздец гениальный программист и круче всех кунчиков вместе взятых, но шансы на это мизерные. В среднем лучшие люди из мужской группы хуже лучших людей из женской. Зато худшие женщины гораздо лучше худших мужчин, а средних женщин гораздо больше, и с точки зрения HR это очень сладкий вывод. Но в гугл кандидаток среди женщин немного.
>>1072800 >Женщин на ответственные должности брать нельзя, и никто обучаемый их и не берёт Да не пизди. Бухи везде - 100% бабское царство, юротдел - тоже большинство бабы. А там ответственность очень даже нужна.
>>1072810 Бухи рядовые взаимозаменяемые и там бабское царство, но крутой бух -- почти обязательно с хуем. Не забывай, что бухгалтерия в понимании отдела небольшой организации это несложное занятие, я не понимаю, почему бухам вышку дают. А вот если надо налогообложение ОПТИМИЗИРОВАТЬ, а не 1ску заполнять, то там бух-хуемразь сразу.
С юристами там всё немного сложнее, конкретно юристов я не понимаю. Но это редкое исключение.
>>1072809 > В среднем лучшие люди из мужской группы хуже лучших людей из женской. Зато худшие женщины гораздо лучше худших мужчин Но пруфов своему интуитивному ощущению ты, увы, не приведешь.
>>1072813 >но крутой бух -- почти обязательно с хуем Теток главбухов как бы не больше чем мужиков, а главбух - второй человек в фирме обычно. Та же Набиуллина - плохой бух по-твоему?
>>1072814 Ну, допустим, приведу. Я же не пиздабол какой-нибудь, чтобы тебя в гугл посылать просто так, да? Я вначале проверил, что там не пусто (много лет назад), а потом тебя туда послал. На, просвещайся, босота. https://doi.org/10.1016/j.intell.2010.04.006 https://doi.org/10.1111/j.1745-6916.2006.00019.x >>1072815 Я оче уважаю Эльвиру Набиуллину в частности и женщин вообще, и уже писал свою позицию по поводу конкретных примеров. Reasoning на основе конкретных примеров это удел обывателей, а мы тут учёные и инженеры типа. Мы оперируем статистикой.
>>1072824 > Вырывает одну картинку из двух научных статей, которые даже не открывал > Использует это в ответ на аргументацию из ссылок на рецензируемые научные журналы > Статьи свежайшие Ну такое. Ты вот на этой картинке левее был бы ;)
>>1072769 То есть, это не в уёбке-тимлиде мужского пола проблема. >Уже доказано многочисленными исследованиями, что тян плохо справляются с логическими и техническими задачами. Эти исследования выяснили, что это относится ко всем без исключения тян? У меня есть дохрена знакомых мужского пола, не справляющихся с логическими и техническими задачами. >>1072776 >Далеко ходить не нужно, погугли недавний скандал в гугл на эту тему, где чел написал охуительный вайтпейпер доказывающий это со всеми ссылками на авторитетные исследования. Доказывающий то, что все до одного тян плохо справляются с техническими задачами? https://gizmodo.com/exclusive-heres-the-full-10-page-anti-diversity-screed-1797564320 Где это там написано? >>1072790 >А вот чувак выше утверждает что не одинаково Дык оно на самом деле может отличаться, только ты не психоневрологом работаешь, а программистом, и если кандидат решает нужные тебе задачи, это означает то, что он тебе нужен (опустим проблемы межполового взаимодействия). >Предлагаю всем заинтересованным рассмотреть мою позицию по данному вопросу: >Человек, утверждающий что кто-то решает некую задачу лучше по причине его половой принадлежности, а не интеллекта, нарекается идиотом. >Если конкретная женшина пишет хреновый код, это не значит что все остальные женщины пишут хреновый код. >Если конкретный мужчина пишет хреновый код, это не значит что все остальные мужчины пишут хреновый код. Рациональная позиция. >>1072794 Да, действительно, когда мне нужно будет нанять программиста и лучшим кандидатом будет женщина, я пошлю её нахуй потому, что статистически идеальных женщин-программистов меньше, чем мужчин. Так нужно тебя понимать? Ведь шовинистический высер, который мы обсуждаем, именно об этом и говорит. Я ещё могу понять закладывание в бюджет декретных рисков, но, блядь, если наниматель не может объективно оценить кандидатов на собеседовании, то не в поле кандидата проблема, верно ведь? >>1072799 Хочешь ли ты сказать, что упомянутые проблемы принципиально не могут быть решены тимлидами и кадровиками?
>>1072881 >это относится ко всем без исключения тян? Бля олень, когда люди говорят так, это означает что в среднем. Пиздец тут умственно отсталые сидят, которые даже не могут понять смысл простой фразы, а еще спорить пытаются.
>>1072881 >Так нужно тебя понимать? Нет, не так. Ты вообще умеешь обобщать? Так нужно понимать вот этого господина >>1072799 Я, кстати, с ним согласен, но уже как менеджер. Как менеджер я утверждаю, что брать на серьёзную работу в юрисдикции РФ женщин -- безумие в 9 из 10 случаев. Как учёный я просто заявляю, что среди женщин меньше умных людей (и меньше глупых) и поэтому тратить время на поиски надо в основном среди мужчин. Our words are backed with nuclear weapons! academic research. Пока не началось: у меня есть тян, до этого было несколько, мне дают, и.т.п.
>>1072888 >Бля олень, когда люди говорят так, это означает что в среднем. На ебало срал. >и если в команде появится тян, то я сразу уволюсь, хотя такого не будет ибо они понимают, что тян и программирование это как мартышка с гранатой.
>>1072825 Ок убедил. Правда по твоим ссылкам в основном исследования детей из каких то спец классов. Но программисты тоже узкая выборка, и их можно сравнить со спец классом.
>>1072910 Хорошо:3 Я полагаю, что результаты можно обобщать. Сходу не вижу причин, почему нет но меня всегда можно переубедить Просто для взрослой выборки очень тяжело выбить данные, и сравнивать очень тяжело, компетенции уже сильно отличаются.
>>1072881 >Хочешь ли ты сказать, что упомянутые проблемы принципиально не могут быть решены тимлидами и кадровиками? Могут, надо детектить и посылать нахуй таких. И в итоге на 20 нормальных кандидатов-мужчин будет 1 женщина. Что как бы и говорит о том, что в целом женщины менее приспособлены к этой работе.
>>1072925 При этом автоматически отправлять в утиль любого кандидата, не имеющего между ног колбаски все равно тупо. Можно провести сколько угодно исследований и сто раз неопровержимо доказать что в среднем женщины тупее обезьяны, но это не сделает хорошего программиста плохим.
>>1073017 Обе. Конечно объективно, кто захочет вообще тян-чуханку, которая не следит за собой и за своим домом? Очевидно, что жизнь тян это как можно выгодней себе продать за муж и сделать семью, поэтому для тян чистоплотность это очень важный критерий и пренебрегать им будут только ебанутые чуханки, которым похуй вообще на все. А кто захочет такую себе в жены? Никто. Вот и вся арифметика.
>>1073043 Твоя "объективность" выражается в том, что ты свои частные случаи с чистоплотностью проецируешь на всех женщин, так же как и знакомых неудачных программист_ок на интеллект всех женщин.
>>1073043 В сосничестве я считал что человек познавая искусство программирования становится джедаем рациональности. Ибо как писать хороший код, если ты мыслишь как гопожлоб? Либо ты траль, либо я и впрямь был наивным дурачком.
>>1073089 > эл-ты массива идут последовательно в памяти Во-первых не только в с(++), это непосредственно определение массива в программировании. Во-вторых раздвинуть динамически выделенную память ты не сможешь, только выделить заново, скопировать и освободить старую.
>>1073100 >Во-вторых раздвинуть динамически выделенную память ты не сможешь, только выделить заново, скопировать и освободить старую. Ебанутые крестовики, даже не знаю о сишной функции realloc. Конечно она не гарантирует расширения памяти без реалокации на новом адресе, но по возможности просто выделит слудующую за последним элементом память.
>>1073104 Прально! Нечего на этих крестах писать! В святой сишке все сами раздвинутся! Освободят место для новых! Не жадные же эти элементы массива! Раздвинутся! Как ноги твоей мамаши, хуесос, пшёл в свой загон
>>1073114 ... Значит в js нет "классических" массивов? Это уже список какой-то, как ты организуешь произвольный доступ к элементам если они идут как попало?
>>1073056 Слишком романтическое видение мира для программиста. Ты и вправду был наивным дурачком, и прелесть твоего профессионального пути в том что ты перестанешь (или уже перестал) им быть. Есть люди которые так и живут.
>>1073104 Realloc не гарантирует что массив останется на своем месте в физической памяти, и писать код следует из расчета что этого не случится. Плохой аргумент. >>1073089 Этот тоже продвинутый. В сишке (вообще вот это институтское "си - си плюс плюс" это пиздец) ничего само по себе не расширяется, да и в плюсах тоже. В ко-ко-контейнерах под капотом как раз и происходит тот самый malloc / realloc.
>>1073125 Этак можно с возрастом в конченого ценника-мизантрала превратиться. Перестал, но у меня все равно есть какаое-то мутное чувство что технари в среднем должны быть хоть немного менее тупыми чем все остальные.
>>1072633 Перемотал в пару случайных мест - советует использовать сырые указатели, пиздит на shared_ptr и unique_ptr. Вы, не-плюсоводы, немного потеряли в её лице. Она же июнь, а туда же - видосики снимает, типа программированию учит. Вкатывающиеся в программирование люди в принципе все такие.
>>1073128 Вот только ответа на вопрос я не получил. Задал я type_name var* = new type_name[100]; А тут хуяк, а varov-то 102. И что такого страшного будет? Или как тогда правильно дин. массивы выделять?
>>1073128 >в физической памяти Слышал про виртуальную память? Большинство современных ОС работают с виртуальной памятью, и не дают тебе адреса на физическую. Твой массив выглядящий линейным в твоей программе может быть раскидан вообще по разным слотам оперативной памяти, стоящей в твоем компьютере.
>>1073138 > И что такого страшного будет? Утечки памяти, дыры в безопасности, гроб, кладбище, пидор. > Или как тогда правильно дин. массивы выделять? Хочешь запихать в массив 102 элемента, выдели память под 102 элемента.
>>1073139 Ясен хуй! В программировании (по крайней мере в с++) о физической памяти речи не идёт. Все эти ячейки 0хХХХХХХХХХ - это ЛОГИЧЕСКИЙ адрес, а не физический.
>>1073139 Если уж на то пошло, то массив может быть отображен хоть на том подкачки, но мне-то всё равно, к вопросу это не относится. Спасибо за важное уточнение, что массив в текущий момент времени необязательно будет лежать именно в физической памяти.
>>1073138 Используй библиотечный контейнер. В боевых условиях люди пишут свои саморасширяющиеся контейнеры, которые при добавлении / удалении реаллоцируются из каких-то эвристических предположений (мол в меня уже запендюривали один раз тысячу объектов, потом убрали их, а потом запендюрили десять, так что в этот раз я опять расширюсь до тысячи). Страшно будет то, что программа перезапишет код или данные другой программы. Скорее всего система не даст ей этого сделать, но хз что у тебя за система. Так или иначе правильная работа как минимум твоей программы с того момента как она записала данные хуй знает куда не гарантирована.
>>1073153 Ни небо, ни даже аллах не в состоянии написать на си динамический массив без перевыделения памяти. Чувак выше написал про realloc, но в общем случае он ничего не растягивает. В чем вообще твоя проблема?
>>1073156 >Страшно будет то, что программа перезапишет код или данные другой программы Это вообще реально? Даже если массив релоктится, но не туда же, где память занята другой программой?
>>1073157 >В чем вообще твоя проблема? Как православно выделять динамические массивы? Что плохого в new? Что страшного в релокации массива?
>>1073158 Массив реаллоцируется в незарезервированную, свободную память. Но ты-то, делая так: char arr[100]; arr[102] = 4; пишешь не в массив, а за его границу. Предположим ты подсмотрел в отладчике, что arr у тебя указывает на 0xB0000000, значит заканчиваться он будет на адресе 0xB0000063, а arr[102] будет указывать на 0xB0000065, то есть в память, которая может быть занята.
Анон, немного не по теме тхреада, но не гони, а дай совет. Есть проект на плюсах, система сборки cmake. Нужно собрать под шиндошс. Пока что я дошел до того, что скачал cmake, но что делать дальше?
>>1073158 > Как православно выделять динамические массивы? Используй стандартный контейнер, для 99% задач его хватает. Если твоя задача входит в оставшийся 1%, навелосипедь свой на том же new. > Что плохого в new? Что страшного в релокации массива? Тебе тут наоборот пытаются объяснить что это прельстиво и любовно.
>>1073162 Запускаеш cmake-gui указываешь папку с исходниками и папку, куда хочешь чтобы билдилось Нажимаешь configure Молишься чтобы все сошлось Указываешь нехватающие пути, подсвеченные красным Повторяешь последние два пункта пока не надоест Нажимаешь generate Получаешь студийные проекты, которые уже компиляешь в студии.
>>1073149 >А если я не знаю заранее, сколько будет элементов? Тогда используй vector. >>1073145 > В программировании (по крайней мере в с++) о физической памяти речи не идёт C++-проге ничто не мешает на bare metal выполняться, зачем вы пиздите? >>1073158 >Как православно выделять динамические массивы? ВЕКТОР БЛЯДЬ. >Что плохого в new? Возможны утечки памяти из-за отсутствия delete. Реаллокнуть то, что выделено с помощью new, ты не можешь. >Что страшного в релокации массива? Адрес поменяется (или нет). >>1073179 Мне тебе сказать нечего.
Сап, подскажите пожалуйста способ перевода числа в десятичный вид. Гугление дало такой бред что я просто в шоке. Большинство кода выдаёт неверный перевод, а то что выдаёт верны требует подключение <YOBAMEGASUPERLIB.h> Я просто не верю что такая простая задача не имеет простого и лаконичного решения.
Алсо мой код. int N=0, t=0, d=1; cin>>N; vector <int> v = {}; while(N) { t +=(N%2)d; N=N/2; d=d10; } v.push_back(t); for (auto x:v){ cout << x; }
>>1073271 >Гугление дало такой бред что я просто в шоке. Большинство кода выдаёт неверный перевод, а то что выдаёт верны требует подключение <YOBAMEGASUPERLIB.h> this
>>1073426 >C++ тред Вот именно С++, а не Java. Не нравятся голые массивы, пиздуй в Ява тред.
Цитата философии С++ из вики: - Programmers should be free to pick their own programming style, and that style should be fully supported by C++. - Allowing a useful feature is more important than preventing every possible misuse of C++.
Так что можешь пойти нахуй со своим вектором. calloc не запрещен в С++ он быстрее и лучше твоего сраного вектора.
>>1073441 Как ты на разных процессорах тестируешь? Переставляешь новый камень в сокет или на другой системе или на другом компе тестишь? А что там за артефакты на первой пикчи? Еще этот OpenGL 1.0.. Короче я хз на винде что там есть, но тебе нужно в профайлере смотреть. Либо вручную замерять скорость исполнения функций.
Замутил я этот вектор, всё прям-таки писечка! Нужно будет его удалять как-то, прямо-таки ручками освобождать место после того, как мне он уже не нужен будет? Такой расклад, из main дёргаю пару раз функцию, в которой и создаётся этот вектор. Так вот, после возвращении функции, память же не освобождается? Как это у вас в крестах там делается?
>>1073445 Вообщем проблема такая, кидаю exe файл с компа i7 на i5, фпс норм ~440. Но как файл собираемый на i5 дает хуевый фпс, хотя уже проект целиком скинул с i7. И студии одинакого не настраивались из коробки, только openMP включал, и на i5 он тоже вкл. >А что там за артефакты на первой пикчи? TeamViewer дает артефакты.
>>1073438 Ну и бред. Может еще вместо условий и вызова функций goto будем использовать, да?
Твой удел, хуесос - макакить на лабах. В любой конторе за использование маллоков каллоков, а также за голые указатели - тебя пидорнут сразу же, если не сможешь объяснить свой высер. Ты не смог. Пиздуй в Си-тред.
>>1073376 >Но как я понимаю, что он хапает просто кусок памяти, в котором может быть любой мусор, а значит хуй там, а не нули по умолчанию. Чё, как? С дин. массивами примерно так и есть. http://en.cppreference.com/w/cpp/language/new > Как там побырику инициализировать массив с нулями произвольного размера? ВЕКТОР БЛЯДЬ. >>>>>>> >>1073405 >>1073438 >Цитата философии С++ из вики: Это цитата философии создания языка, уёбок. Если ты хочешь динамический массив, тебе нужен вектор, а не нью, который ты не можешь ресайзнуть и который ещё ручками удалять надо. >>1073447 >Нужно будет его удалять как-то, Если ты его не с помощью нью сделал, упаси хоспаде - нет. >>1073478 Нихуя не понял, ФПС разнится в зависимости от машины сборки, а IDE настроена одинаково? Тогда это пиздец. Задай вопрос на СтакОверфлоу, это будет отличный вопрос. >>1073495 >А calloc сразу выделяет инициализированную нулями. А ещё в кажждом байте памяти, выделенной калоком, в два раза больше бит и flip-ошибок меньше. Используйте каллок, посоны!
>>1073438 >calloc не запрещен в С++ http://eel.is/c++draft/intro.object#1.sentence-2 > An object is created by a definition, by a new-expression, when implicitly changing the active member of a union, or when a temporary object is created
Тут не написано, что an object is created by calloc.
>>1073526 >>1073533 >>1073534 Легкий детектор макак - напиши в С++ треде про malloc/calloc/realloc/free в ответ получишь гневное визжание маккакенов. Кек.
>тебе нужен вектор Ты скозал?
>не можешь ресайзнуть Поясняю для дебилов - realloc.
>и который ещё ручками удалять надо. Ойй бля у маки ручки отсохнут ручками что-то удалить... бедная обезьянка, а вдруг она вообще забудет удалить и будет мим лик, и макакена турнут с его говноконторки. Алсо, RAII можешь использовать, если ты такой тупой, что можешь забыть удалить память.
>Нихуя не понял >IDE настроена одинаково >Тогда это пиздец >Задай вопрос на СтакОверфлоу Я просто даже не представляю, ты либо студент первокурсник, либо настоящий дебил. При чем здесь IDE? IDE это всего-лишь редактор, за генерацию бинарника отвечает компилятор, а не IDE. Конечно ты нихуя не понял, ты же привык чуть что сразу бежать копипастить со стек оверфлоу или сразу ныть там/здесь или под юбкой своей мамаши, что не можешь осилить элементарный профайлинг.
>>1073526 > В любой конторе за использование маллоков каллоков, а также за голые указатели - тебя пидорнут сразу же, если не сможешь объяснить Я же не долбоеб работать в конторах с макаками. У нас вообще STL запрещен.
>>1073547 РРРЯЯЯ только МАЛОКИ ТОЛЬКО ВЕЛОСИПЕДЫ ОЙ ЧТО ОШИБКА 00000A АКСЕС ВИОЛЕЙШН ЧТООО?? ПАМЯТЬ УТЕКЛА СТЕК ПОКОРРУПЧЕН БЛЯ СРОЧНА ВСТАВЛЯЕМ FREE ВЕЗДЕ ГДЕ МОЖНО МЕМСЕТ САЛЛОС ГОУТУ ОЙ БЛЯДЬ ДВА РАЗА ВЫЗВАЛИ ФРИ НА УКАЗАТЕЛЬ И ВСЁ РУХНУЛО БЛЯ ЁБАНЫЙ ТИМЛИД ФОПЕН ФРИД ((ANUS)(VOID) (...)) СКТРОЧКА НЕ УМЕСТИЛОСЬ В БУФЕР ЧАРОВ АКСЕС ВИОЛЕЙШН ОЙ КАК ТАК PRINTF("Я ЕБЛАН") ГЕТЧАР ПУТС Я ПУПС КОКОКОКО ОКОКОКОКОКО
>>1073552 >Ну если бы разрабатывал когда-нибудь real-time приложения, то понимал бы почему так. А пока иди лабу делай. ПИздуй отсюда в Си-тред со своими ахуительными советами и малоками.
>>1073553 При чем здесь С тред? Я в ахуе от развития здешних """"ПРОХРАММИСТОВ"""", которые о программирование знают только из фильмов про хакеров, лол. Ты думаешь, если в С++ есть уже готовенькое, то только это надо использовать? Ты не думал, что С++ очень раздутый язык и многое оттуда не нужно, особенно в приложениях зависящих от производительности? Алсо, у нас еще виртуальные функции запрещены и шаблоны можно толкьо умеренно в особых случаях.
>>1073560 В настоящих приложениях критичных до скорости выделения памяти - нормальные программисты не переходят на маллоки, а делают свои пулы памяти, пулы объектов и аллокаторы.
Маллоки и прочие сишные забавы - это рак, который убивает сколь-либо большие проекты на крестах. Профитов от них практически нет, а использование грозит отказом в самый нужный момент.
>>1073562 А ты что все на стеке будешь делать? Память выделенную маллоком можно залочить вообще-то.
>>1073565 Так у нас есть свои специальные алокаторы, но они не для всей памяти, только для самой критичной в лок фри алгоритмах. Ну в общем то для более обычной памяти у нас тоже свои алокаторы. Ну если тебе не критично, то можешь использовать маллок с локом.
>>1073599 В реалтайме не может быть динамической памяти, точка. Потому что объем и, соответственно время обнуления, недетерминировано. Все массивы задаются фиксированными и статическими. Это закон, иначе у тебя уже не реалтайм.
>>1073542 Ясен хуй, ведь создание объекта - это ещё и его конструирование (в общем случае), а каллок умеет только нулями заполнять. Никто не запрещает тебе использовать плейсмент нью. >>1073547 Отвечу тебе, чтобы ньюфаги что-нибудь новое узнали. >Поясняю для дебилов - realloc. Поясняю для генетических уродов: если ты realloc-аешь память, выделенную с помощью new или new[], то это UB. >При чем здесь IDE? При том, что в данном случае компилятор - часть IDE, и параметры компиляции - это часть проекта, который можно открыть только в IDE, и параметры компиляции будет определять IDE. >Алсо, RAII можешь использовать Шаред_поинт на память вместо вектора? Вилку за столом тоже ногой держишь? >>1073550 RAII, 21 век! Как только вектор перестаёт быть видимым, вызывается деструктор и сам освобождает память. >>1073599 >Память выделенную маллоком можно залочить вообще-то. Штоблядь. >>1073630 http://en.cppreference.com/w/cpp/string/basic_string/basic_string Тебе конструктор нужен? Выбирай любой.
>>1073637 Класс где s1=s2 не копирует всю строку, а копирует ссылки как в джаве 2 переменные указывают на одну строку. Но при этом строка изменяемая, а не как в джаве.
>>1073645 Нет. Не обязательно cow. Можно чтобы изменение в первой переменной приводили к изменению второй т.к. они на один объект указывают. Как с обычными ссылками.
>>1073661 Строки это для простоты примера. Мне нужен ссылочный тип, который изменяемый. Передавать объект рекурсивно в функцию. Поменялся объект на одном уровне рекурсии значит поменялся на всех. И чтобы когда объявляю объект этого класса членом этого же класса, то он всё рано должен создаваться в динамической памяти, но чтобы это был именно объект, а не указатель. Шаблоны иногда жалуются, что в них создают не компилируемые объекты, а если переделать их ссылками, то всё работает. Нужно точно так же, но чтобы не пришлось каждый раз явно разыменовывать ссылку когда выполняю операции над объектом.
>>1073682 Почти так, но нужен целый класс с таким свойством. Чтобы не int a, int& b, а T a, T b.
>>1073646 То есть, ты можешь доказать, что realloc памяти, выделенной с помощью new - это не UB. Или ты пиздобол? >>1073689 У тебя есть два варианта: 1) либо все твои функции принимают строку по reference (и я не могу понять, в чём у тебя проблема) 2) либо они все принимают http://en.cppreference.com/w/cpp/utility/functional/reference_wrapper 3) либо они все принимают shared_pointer на ссылку На кой ляд тебе нужен именно класс вместо передачи по ссылке, если не для memory safety - хуй знает.
>>1073714 То же, что и здесь. >>1070147 Компилируешь c++ код clang, а надо clang++. Алсо чому бы тебе не взять готовый парсер, например Gumbo? А если ты для учебы пишешь, то лучше отказывайся от *char.
я не раздуплю, что происходит внутри двух циклов, хотя знаю, что оно должно сделать. но из-за всей этих | и % не особо могу понять отдельные шаги.
для общей картины, эта функция должна записать двухмерный array из int в бинарную PBM картинку. то есть приходит что-то типа [[1,1,1,1,1,1,1], [0,1,1,1,1,1,1]], а в файл потом скидывается байтики FE 7E. (пардон за питоноблядский список как пример, я душу змею обычно)
>>1073796 | это битовое или. % это остаток от деления. << сдвиг на несколько бит. Итак по порядку: i%8 это i завернутое в кольце по модулю 8. Т.е. после 7 пойдет 0, 1... 7 - (i%8) это соответственно инверсия, 0,1,2... превращается в 7,6,5...
indexb последовательное чтение значения из твоего массива [0,0,1] (indexb)%2 хз зачем. Превращает все четные в 0, нечетные в 1.
bit << k сдвигает предыдущее значение на k битов влево. Соответсвенно если у тебя i = 1 (второй байт), k = 6, если значение из массива было 1b, то станет 1000000b, если было 0b, то это просто работа проца вхолостую.
Ну а дальше бит ставится через OR в "аккумуляторе" c для текущего байта.
>>1073804 Спасибо, Серёжа! чую нужно будет достать блокнотик и чисто карандашиком прорешать пример, пока я ещё сходу не понял всё это. Но ты молодец, вообще у вас тут очень всё цивильно, даже нахуй меня ни разу не послали, что почти обидно самую малость.
>>1073701 По ссылке получать не получится т.к. в некоторых случаях нужно будеь nullptr передавать. Нужен какой-то конструктор для этого. Но это пока не важно как и работа с шаблонами. Эти проблемы буду решать по мере поступления. Вообще мне нужно поведение похожее на то, что в джаве, где всё по ссылкам передаются, но так чтобы изменение переменной внутри рекурсивного вызова приводило к изменению самого объекта, а не как в джаве к присвоение переменой новой ссылки а другой объект. В с++ наверно тоже такое есть. Щас подумал. Это похоже больше похоже на поведение указателей, а не ссылок. Но всё равно такое поведение должно быть запрограммировано в самом классе, а не создавать ссылку на объект этого класса каждый раз когда я захочу такое поведение. А его я захочу всегда. Решение с shared_pointer выглядит самым подходящим, но как его впихнуть самого класса? Чтобы выглядело будто typedef сделал.
>>1073819 >По ссылке получать не получится т.к. в некоторых случаях нужно будеь nullptr передавать. Блин, ты сам спросил и сам ответил. Как ты можешь передавать нулптр, не передавая указатель? Странный заппрос, мягко говоря. Ты не нуллптр передаёшь, ты передаёшь информацию "указатель не определён", для этого есть методы в shared_ptr и для этого ты можешь использовать состояние объекта.
Не могу понять твою проблему, ты темнишь. Хочешь передавать указатель - передавай указатель, что тебе мешает? Джаву не видел никогда.
>Но всё равно такое поведение должно быть запрограммировано в самом классе >Решение с shared_pointer выглядит самым подходящим, но как его впихнуть самого класса? Чтобы выглядело будто typedef сделал. Если я правильно тебя понял, тут тебя ждёт облом. Переоппределение operator. ещё не завезли (это такой инструмент для перенаправления всех обращений к членам), так что ничего лучше, чем shared_ptr<T> ты не получишь - всегда будешь писать -> вместо . и всегда будешь создавать указатель.
НО. Если ты решительно готов к тому, чтобы пердолиться с каждым классом, для которого тебе нужно такое поведение, то тебе нужно сделать так: http://coliru.stacked-crooked.com/a/35d2678be310defe То есть, на каждый публичный мембер тебе придётся определить метод - либо прокси-метод, либо геттер и сеттер. Так что если ты хочешь кого-то наебать, передавая такой НЁХ в функции, и у тебя есть члены-переменные - без сеттеров/геттеров не получится.
>>1073836 Похоже не получится объяснить что я хочу не объясняя что я делаю. У меня есть самописный map на джаве на основе бинарного дерева поиска. Там 2 класса. Для самого мапа и для ноды. Но функции поиска и вставки перенесены в класс ноду, а в мапе просто обёртка. Это можно переписать в 1 класс. Хотя придётся помучаться с переносом функции удаления, но это потом. Именно это я и хочу сделать. Но на крестах т.к. в джаве нет такой свободы работы с ссылками. По логике это ещё должно быть шаблоном и некоторые функции должны принимать nullptr. Это в самом алгоритме записано и ни на каком языке от этого не избавиться без всяких извращений. И с клиентской стороны не должно быть отличий. Клиент должен создавать объект этого класса, а не ссылку или указатель на него. Работать как с обычным мапом.
Сайт не открывается. Скинь где подробнее описан тот способ, что ты назвал.
>>1073644 >Класс где s1=s2 не копирует всю строку, а копирует ссылки как в джаве 2 переменные указывают на одну строку. Ты придумал, как ты будешь присваивать строке в таком случае? Если s1=s2 делает s1 указывать на s2, как тогда изменить строку присвоением?
Сап, посмотрел сейчас на курсеру и афигел от того что на ней нет C++, если я скажем через пару лет спижжу трактор в Канаду, я там буду нужен с C++ или сосну?
>>1074312 Виж. Ты предлагаешь новый класс обёртку для предыдещего делать? Так не получится т.к. эта обёртка будет работать только с клиентской стороны. А мой класс ещё сам себе клиент. Я не смогу написать определения функций в самом классе пока у него не будет возможности самого себя через умный указатель передавать в себя рекурсивно. Может эти функции из второго класса можно в первый отправить и держать их как обёртку для приватных рекурсивных чтобы сделать напрямую рекурсию когда публичные вызывают приватные, а приватные публичные?
По поводу нихуя не понял. Обычно деревья делают так. Один класс для дерева и один для ноды. В классе дерева корневая нода и функции для работы с деревом, а в классе нода только пары ключ значение и указатели на дочерние ноды. Я избавляюсь от класса ноды. В классе дерева пары ключ знаяения корня, указатели на дочерние поддеревья и функции для работы с деревом. Поэтому теперь не ноду нужно передовать в функцию, а поддерево, которое того же типа что и само дерево. Но интерфейс со стороны клиента не должен измениться. Вот с этим главная проблема.
>>1074397 Указатели устроивают. Только обёртку нельзя делать отдельным классом. Поведение, которое даёт обёртка должно быть у всех клиентов моего класса, а он клиент для самого себя.
>>1074560 Это не главная проблема. Потом решу. Указатели нормально подходят. Мне нужно как-то разыменовывать указатели с помощью оператора точки. Чтобы клиент тем же интерфейсом пользовался. У меня план сделать рекурсивные функции с умным указателем и обёртку для них обычные функции всё в одном классе. Где-то передавать this в рекурсивную функцию где-то nullptr. При рервом вызове составать sharedptr и дальше его передавать. Или сразу в обёртке его создавать. Короче я кажется понял. Пойду пытаться умные на уных указателях писать. Спасибо.
>>1074521 Твои заморочки какие-то ебанутые. Ты переделал свой класс что дерево стало нодой корня. Нихуя не вижу проблем никаких для клиенского кода, если методы совпадают. И причем тут вообще копирование по ссылке. Ты ебанутый черт. Или просто ебаный даун который в программировании первый день и когда начал писать дерево решил какую-то хуйню умную приплести.
Ответы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/
Прошлый - https://2ch.hk/pr/res/1045411.html