Вместо шапки — https://github.com/sosachbot/cppthreadhat/wikiОтветы на все вопросы:- http://en.cppreference.com/w/- http://www.cplusplus.com/reference/Прошлый: >>1147021 (OP)
Номер неправильный, сейчас 66 тред.
>>1157192Но ведь прошлый был 67.
>>1157192В жопу иди, петухевен. Правильно оп создал.Освящаю.
полюбуйтес
>>1157233Пиздос требования для "обсуджение до 60к", конечно. Но при чем тут c++?
>>1157259ну вы же байтоебы
Антоны, помогите улучшить одну фичуПытаюсь на плюсах сделать аналог оператора nameof как в c# https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/nameof Вот кодина https://ideone.com/91DITc, если кому удобнее могу скинуть гитхаб
>>1157285Не смешно. Я щас тебе зарплату сторожа зоопарка скину и скажу "вы ж макаки".
Может у кого то есть работающая программа для длинной арифметики?Вычитание или умножение.
не нашел треда по си, но думаю отличий не будет особыхподскажите плз тело компаратора типа дабл>>1157163 (OP)
Сап, погромач, немного не по теме и за такое можно вообще бить санными тряпками и банить по айпи, но есть где-нибудь поочерёдный список литературы, с помощью которой можно выучить плюсы? Прочитал "Сpp без страха", написал свой рогалик, потом зашёл на quizful, выбрал самый лёгкий уровень теста по плюсами, и в итоге обосрался12 / 30 баллов. Вроде бы всё понял в книге, но когда вижу какую-нибудь хуйню приходит осознание собственной низости и недостойности, потому что некоторые люди обладают запасом знаний на порядок больший, чем мой, в возрасте лет так ~15. Что читатьили какой практикой заниматься дальше, чтобы не отсосать потом на вопросе а-ля может ли функция возвращать указатель на void.
Посоветуйте элегантное решение.Как хранить некопируемые объекты в std контейнерах?Сейчас фигачу в контейнер смартпойнтеры через new make_...smart не работает.Есть варианты изящнее?
>>1157632>Посоветуйте элегантное решение.>Как хранить некопируемые объекты в std контейнерах?Элегантное решение: храни как есть и не используй функций контейнеров, которые требуют копирования элементов.
>>1157652Что значит храни как есть? Эти объекты динамические, мне нужен удобный механизм, чтобы создавать, уничтожать и искать.Пф, "хранить как есть", это вообще что значит?
>>1157652 >>1157632PS. Я не могу добавить в контейнер некопируемый объект. Срр11
>>1157632Сделать их movable или хранить пойнтерыВозможно, удастся хранить их в std::list, если пользоваться emplace - он создаст их по месту, и не будет перемещать.
Сап крестины. Последнее время все чаще замечаю что вывелся новый вид крестин - любители статического полиморфизма. Полностью отказываясь от интерфейсов и захяривая все в тысячи, нет, десятки тысяч перегрузок функций они обмазываются тонной трейтов и диспатч тегов. Один вопрос - нахуя? В чем суть?
>>1157596посоны, я че-то нереэальное спросил? поясните?
>>1157632>Как хранить некопируемые объекты в std контейнерах?Храни unique_ptr-ы. Можно еще взять контейнеры из boost::ptr_container
>>1157942Так и делаю, но выглядит по пидорски.>>1157676Перемещаемые можно только в векторе хранить и то с ограничениями. Нельзя создать другие контейнеры для некопируемых объектов.
>>1157942Пояснити за юники, когда есть шареды.
>>1158193В шаредах при каждом копировании используется атомик, это потеря перфоманса на ровном месте, если у тебя многопоточка не используется.
>>1158193>>1158302Ну и потом, если ты не можешь обойтись юником, это признак того, что ты не понимаешь, что нахер происходит в приложении, включая то, нужен ли тот или иной ресурс в тот или иной момент. Это заслуживает пиздюлей.
>>1158316чет проиграл с тебя
>>1157163 (OP)>C++ — 23 вакансии в МосквеРебята самое время вкатываться в кресты. В Москве вас с руками и ногами оторвут даже без опыта работы. Ахахаха. Ты приколись сколько со всей России на одно место рвутся, не меньше тысячи красноглазиков.
>>1158375
>>1158395Ты опыт работы убери. Потому что когда вкатишься тебе спросят про опыт работы и мы вам перезвоним.
>>1158395Проиграл с описания вакансии C, C++, C# Это во все три языка вкатываться надо и ещё в нейронные сети плюс высшее образование. Думаю на всё это уйдет порядка 8 лет, чтобы поучаствовать в таком отборе 1000 на одну вакансию.
>>1158399боль неосилятораэто всего лишь значит, что им будет достаточно, если ты знаешь си-подобный язык
>>1158418>боль неосилятораЯ на крестах не пишу, но уже прошел успешно курс с со всеми тестами по ЯП, по Data Science и скоро закончу с таким же успехом курс по машинному обучению. И знаешь что? Не на одну работу меня не возьмут, потому что нет опыта работы. Так что мимо>это всего лишь значит, что им будет достаточно, если ты знаешь си-подобный языкКакие маня проекции.
>>1158418нет, дружочекзачастую это означает что тебе придется одновременно сидеть на двух стульях: ебашить на сишарпе новую прилагу и заниматься саппортом окаменелого сиплюсплюсного кода родом из девяностых, которую, собственно и пытаются переписать на шарпеи все это за лоупрайсвкатывальщики на такие вакухи нахуй не нужны
>>1158465Два чаю. Я даже на поиск работы в России время тратить не стану, это бесполезно. Я ради прикола в поисковик уже третий год вбиваю программист и вакансии уже три года не меняются, а это говорит о многом.
Вы хоть школу то закончили?)
Как лучше делать? И почему? Язык си шарпа, хотя другие тоже подойдут в данном вопросеfor(int i=0;i<N;i++){if (i>m)count++;}for(int i=0;i<N;i++){count+=(int)(i>m);}for (int i=0;i<N;i++){count+=i>m?1:0;}
>>1158536c++*, если заменить второе на Convert.ToInt32, будт шарпа
>>1158530Нет конечно, я из детсада сразу в вуз поступил. Школа для неосиляторов.
>>1158431>уже прошел успешно курс с со всеми тестами по ЯПЧе за курс-тесты?
Анон, обесни,size_t == size_type ?Я чот запутался.
>>1158647size_t – целочисленный беззнаковый тип результата, возвращаемого операторами sizeof и alignof.http://ru.cppreference.com/w/cpp/types/size_t
>>1158774template<class _Ty, size_t _Size> class array {public: using size_type = size_t;...}
>>1158776Fixtemplate<class _Ty, size_t _Size>class array{public:using size_type = size_t;...}
>>1158241Мопед не мой там есть ссылка на то чей он, я просто на нем ездю.
>>1157587http://cppstudio.com/post/5036/
>>1157747>Полностью отказываясь от интерфейсовЧтобы избавиться от расходов на виртуальные методы?
>>1158193Как уже сказали атомики внутри. Еще можно случайно словить аналог дедлока: никому нахуй не нужные объекты не освобождаются, потому что они ссылаются друг на друга.И вопрос для тебя. Зачем нужны шареды, если уник может дать тебе сырой указатель?
>>1158536Лучше смотреть на вывод ассемблера твоего компилятора.Первый вариант однозначно лучше, так как сразу видна логика того, что ты хочешь сделать. А после оптимизации компиль может сам избавиться от ветвления, и сделать что-то вроде второго варианта.
> И вопрос для тебя. Зачем нужны шаредыЮник некопируемый. Там, где это мешает и где нельзя обойтись перемещением, использую шаред. Пока получается всегда.
>>1158940>>1158914
>>1158940Умные указатели придумали для того, чтобы автоматизировать утилизацию динамической памяти.Я клонил к тому, что внутри скоупа тебе никто не мешает сделать уник, и работать с его сырым указателем, даже если его придется скопировать пару раз. Когда выполнение выйдет за скоуп, указатель корректно умрет, НО нужно быть уверенным в том, что копия сырого указателя не останется где-то вне области видимости, и к инвалидному указателю никто не обратится.А шареды (учитывая подводные камни) имеет смысл использовать только тогда, когда одним объектом владеет несколько сущностей одновременно но это ИМХО
>>1157632emplace
Какой компилятор можно прикрутить к VS Code? А то MinGW скоростью работы вообще не радует.
Не могу подключиться к ком порту из стандартного примера qt5 (terminal). Порт видит, все настройки пишет правильно, но при подключении выдает ошибку "отказано в доступе". ОС Windows 10. Подскажите пожалуйста как исправить.
>>1159145wsl + gcc
кто собирал кьюты под ведроид, отзовись?
>>1159145ты в сколько потоков то собираешь?
>>1158536первый вариант реально нагляднее остальных, что сильно полезно в работе над большим проектом, когда твой код смотрят другие люди, да и ты сам, года через 3-4 после написания.второй вариант сразу нафик если мы пишем на современном цпп - такие приведения типов очень не рекомендуют делать вообще нигде.третий скорее всего соптимизируется в то же самое, что и первый, но выглядит коряво.
Анон, через что графоний выводить? В процессе изучения, консоль скушна, а вкатыватся в ВинАпи, как то рановато. Чего есть простого под винду, графики там порисовать, тетрис хуетрис.
>>1157233>ООО Квант-210\
Сап, анонче. Хотелось бы услышать мнения. Если бы вы писали что-то вроде семантического рабочего стола\семантической оболочки ОС, то какую бы СУБД выбрали в качестве хранилища метаинформации? Считай это все семантические связи между типа объектов, аналитическая информация, статистика, и прочее. НО. Это десктоп. То есть объемы, а самое главное, нагрузка не серверная - клиенты лишь сами сервисы\демоны одного пользователя\может пары девайсов, с учетом шаринга информации между ними. При этом есть потребность хранить\отслеживать отношения (следовательно можно задуматься о рдбмс), в тоже время данные - это в сущности объекты ссылающиеся друг на друга и храняшие друг друга (можно задуматься о графовых бд), есть так же потребность в атомарности записей, а потом приходится сомневать насчет носкюл-решений, ведь придется городить ее поверх. Есть кому что сказать?
>>1159214Если честно, без понятия, единственное что я делал это прописал команды в tasks.json ну и в path компилятор закинул.
Блять, нихуя не понимаю ваши крестыНужно получить массив строк и вроде все написано по гайдам но я просто не могу нормально получить строки по одной с консоли, попробовал уже просто блять всё, помоги, анон
>>1159401Во-первых, это чистый СиВо вторых, аллокация двумерного массива должна выглядеть как-то такT a = malloc(sizeof a N);if (a){ for (i = 0; i < N; i++) { a = malloc(sizeof a M); }}В-третьих, где free?
>>1159402Двач проебал разметку. Вот
https://stackoverflow.com/questions/1970698/using-malloc-for-allocation-of-multi-dimensional-arrays-with-different-row-lengt
>>1159402free чуть ниже, не попал в скрин Ты скажи мне лучше, как используя средства чистого си получить из консоли строку неопределенного размера?
>>1159405Нет такого понятия как строка неопределенного размера. В других языках обычно делается reallocВ той же std::string ты создаешь строкуstd::string str1("My string.");Он создаст массив на 16 элементов. (здесь 11 байт, ибо \0 тоже символ)При попытке превысить 16 производится реалокация. Там память очищается, создаётся новая уже на 32.И так далее
>>1159406Вроде понял, дай бог здоровья
>>1159391>>1159214Можно поподробнее?
>>1159401а что не работает-то? пока вижу только один косяк - ты для temp память не выделил. а так нормально все вроде.
Столкнулся с очень сложной ситуацией: есть функция экспортапи. в ней выделяется память под особую строку, и эта страка ретурнится. Что получаем? Утечку. Как фиксть? auto не работает, так как это vs 9.0. Старых книг Саттера и Майерса под рукой нет.
>>1159344qt
>>1159418Да это и не работало
Ты уверен что это именно утечка, а не контролируемое либой время жизни.Почитай доки подробнее, должно быть что-то вроде как в glfw: "GLFW не освобождает переданные пользователем указатели, а так же запрещается самостоятельное удаление полученных из библиотеки указателей".Если это таки бага, то лучше обратиться к разработчикам api.Если нужно фиксить вот прям щас, можешь написать метод по фиксу (обязательно с четкими комментариями), типа сделать копию строки, и рукопашное удаление.
>>1159187Wsl будет запускать мне виртуальную машину линукса или как это работает?
>>1159547Да я уже сделал. Работает. Утечка все. Самое обидное, что можно предовратить перейдя на 11 с его авто, но не хотят.
>>1159384sqlite
>>1159594беги с такой работы
>>1159594Я правда нихуя не понял как ты хочешь закрыть утечку через auto
>>1159645Лолкейс, у на работе только недавно с VS2015 на VS2017 перешли, я думал у нас ретрограды. Да и boost не последний, а 64
>>1159493 млять, а либой какой нить убогой не обойтись?
>>1158940>Там, где это мешает и где нельзя обойтись перемещением, использую шаред.shared_ptr is as good as a global variable
>>1159711Верь мне, это она и есть...
>>1159344sdl или sfml
>>1159446что за экспортапи? из dll ки вызывается в екзешнике?1. сделай вторую функцию в той же длл-ке которая эту строку будет удалять по укзателю. типа void createStr(); и void deleteStr(void);или 2. убедись что и длл-ка и екзешник имеют одинаковые настройки crt и эти настройки shared library. тогда по идее ее можно будет и в екзешнике удалять.
помогите решить задачку, используя простейшие функции(scanf, printf) и циклы: Вводятся числа по одному на строке, пока не встретится пустая строка. Вывести минимум среди положительных из этих чисел.
>>1159809пиши свое решение, задавай вопросы про то что не получилось.
>>1159826Получился такой код, он вообще не компилируется:int task66() { char n = '0', min; min = n; printf_s("Введите числа: "); while (n != '\n') { scanf_s("%с", &n); int n = n - '0'; min = (int)min; if (n > 0) { if (n < min) { min = n; } } } printf_s("Ответ: %c\n", min);}
>>1159826int task66() {char n = '0', min;min = n;printf_s("Введите числа: ");while (n != ' ') {scanf_s("%с", &n);int n = n - '0';min = (int)min;if (n > 0) {if (n < min) {min = n;}}}printf_s("Ответ: %c\n", min); return 0; }
>>1159836Вообще не могу понять, как можно реализовать ввод до пустой строки.
>>1159840if (std::string(input).empty()) break;Да миллионом способов. И вообще, либо пользуйся средствами плюсов (std::cout, std::cin), либо уходи в ansi c тред, он где-то на этой же доске.
>>1159809https://ideone.com/pPxBZZРешение откровенно хреновое, но вроде как работает
С чего мне начать ремастер ГТА4 на мощностях и масштабах ГТА5? спасибо
Почана а какая разница между:const int getValue { return _val;}иint getValue const { return _val;}
>>1160080Я ни на что не намекаю, но...>Разработка игры Black Mesa велась восемь лет
>>1160080Лучше бы вайс сити
И так, ситуация такая: есть одно семейство классов. Каждый не виртуальный класс в нем имеет constexpr поле с уникальным номером. Нужно собрать функцию, желательно тоже времени компиляции, такую, что бы получала это число и на его основе создавала объект соответствующего класса, если класс с таким номером есть. На текущий момент это реализовано через специальный файл, который хранит имена всех этих классов и набор макросов, который составляет ту самую функцию. Но проблема в том, что таким темпом, при добавлении нового класса, приходится аккуратно редактировать еще один файл. Хорошо бы оставить что-то такое в определении каждого не виртуального класса, что бы потом, в юните компиляции все это собрать. Да вот только что? Может кто знает?
>>1160267слишком легко
>>1160339А ты графон подтяни попробуй
В чем разница рантаймов, которые линкуются собираемой программой с ключами /MT и /MD? Они все, я так понял, реализуют стандарт c++ И windows-специфичные чтуки сверху. Но если с MT всё понятно - линкер подставляет символы из объектников, собранных в .lib, то что происходит с /MD?
>>1160405https://msdn.microsoft.com/ru-ru/library/2kzt1wy3.aspx
>>1160407Спасибо, мистер гугл. Перечитал еще раз эту статью, и с MD до сих пор не ясно. Это типа чё, линкер подставляет адреса вместо символов, а по этим адресам вместо самой реализации происходит получение адреса необходимой функции из .dll и её дальнейший вызов? Если так, то нахуя? Типа скомпилил свою программу один раз, линкер зарезолвил все символы, а робит на всех платформах, потому что в каждой ОС своя версия этой .dll со своей реализацией под целевую платформу?
>>1160405dll - динамическая. загрузит crt во время запуска ту что найдет в системе.статическая - включит всё внутрь екзешника (он по размеру будет больше)
>>1160410билять, не дописалЭто типа чё, линкер подставляет адреса вместо символов из объектников в статической либе, а по этим адресам вместо самой реализации происходит получение адреса необходимой функции из .dll
>>1160410ну подумай. длл могут быть разные в разных системах. одни и те же функции могут работать по разному. второй вариант - всё одинаково везде (при условии, что системные вызовы поддерживаются - собрал в 7, в 98 вряд ли заработает)плюс еще фигня. если у тебя есть екзешник со статической линковкой и твоя же dll тоже со статической линковкой, то будет фигня такая.если в длл есть функция типа void doStuff() { .... void ret = new stuff(); return ret; }то new тут сделается статически прилинкованной црт в длл-ке.а когда ты попробуешь сделать delete в екзешнике, то оно будет выполнено статически прилинкованной црт к екзешнику (другой!!) и всё сломается.
>>1160410MD требует установки вцредиста
В самообучении, я пока не дошёл до этого, но любопытства ради. Как делаются вызовы к операционной системе. Через библиотеку какую или можно какими то базовыми методами это можно сделать?Алсо, в крестах есть какие нибудь базовые встроенные функции, имею в виду без библиотек.
>>1160910все, что делают кресты, это либо ебут уже выделенные байты, либо делают коллы к операционной системе.В винде у тебя есть Winapi и Native API. В никсах есть сисколлы и тоже какой-то там кернел апи.Чтобы ты понимал - любой ввод\вывод (включая консоль), любое выделение памяти - это все делает ОС, кресты лишь ее жалобно умоляют через обертки. Чисто теоретически, ты можешь без проблем писать вообще без стандартной библиотеки С и С++.
>>1160913 ещё хотел спросить,написание прог для микроконтроллеров кардинально отличается от обычного погромирования для осей или там просто свой АПИ от поставщика МК?Дёрганье системы за сиську тоже же вроде идёт через библиотеку, типа <syscall>. Мне прост для понимания как работают библиотеки. Или там просто проприетарные бинариники от поставщиков компиляторов.
https://ideone.com/5ghSp5Аноно, помоги, это cryprtoapiЧто происходит: цикл проходит 1 раз, передаёт структуру. Выходит.Затем, если подано имя сертификата, то оно ищется в этом цикле, однако цикл проходит 1 круг, а потом вываливается( трай-кэтч не отлавливая ошибку)Что не так? Вызовы функций я привёл ниже цикла.
>>1160913Мне даже интересно стало, есть ли языки, которые не ебут уже выделенные байты и не делают сисколлы к операционной системе(Или нижележащему API которое это делает за них)?
>>1160124ты забыл проconst int getValue const { return _val; }
>>1160955С натяжкой можно сказать, что за большую часть языков ВМ или интерпретатор делает все это за программу.Но так то да, таких языков нет.>>1160936У микроконтроллеров разные ограничения есть всякие. Бывают МК вообще без динамической памяти (никакого malloc). А так - да, просто у них свои либы\фреймворки, и ты их дергаешь
>>1160952ты студентик еще или работаешь уже?
>>1160968как сказать, проект дал препод. Это типа чья-то разработка, и её надо рефакторить, и у них внезапно не работает UTF-8/16, ( я ибав).
>>1160973а, ну тогда нормпрокачивайся
>>1160981так в чём ошибка то?
В нюфаг-треде меня проигнорили, поэтому спрошу здесь.Стоит задача: прочитать из двух файлов данные в два вектора. И при этом параллельно. С thread не получилось. Компилятор выдает длиннющую ошибку. Future аналогично.https://pastebin.com/fWaNJstg
>>1157163 (OP)ХХач, когда в ЦПП завезут систему владения?
>>1161137>прочитать из двух файлов данные в два вектора. И при этом параллельно.зачем?только не говори, что так быстрее будет, лол
>>1161125ты шутишь?копай сам
>>1161183Да пиздец, я уже пытаюсь уговорить нахой все переписать, но они не хотят.Можешь подсказать как в йоба-студии можно отладить длл? Я помню, что был метод через интерпретатор, но не могу найти на данный момент его.
>>1161182Файлы большие. Только на помещение одного в строку уходит у меня 8 секунд. А на stoi уходит еще 5. И 2 потока должны мне выиграть эти 13 секунд.
>>1161198Ты понимаешь что это не всегда работает?
>>1161200Почему не всегда? А вообще, почему мой код не компилируется?
>>1161201У тебя больше тактов будет на процессоре. даже если у тебя там сто ядер, то у тебя один диск, понимаешь?
>>1161203Едва ли диск загружается сильно. Если посчитать, то читает файл со скоростью 1 Мб/с. Да и остается еще 5 секунд на stoi. Тут же диск уже не при делах.
>>1161205>>1161205и че? чтение с диска все равно последовательное, у него одна головка которая бегает по пластинам, лола вот оценить размер файла и сделать вектору предварительный reserve не помешает, да
>>1161212а, хотя, погоди, у тебя там просто лютейший код в get_and_formзачем ты это делаешь, лолв общем, ты вообще нулевой походу
>>1161168если вкратце то в с++ достаточно средств, реализующих семантику как владения, так и замещения в rustкак на уровне языка, так и на уровне библиотек, в том числе и стандартной библиотеки
>>1161217Рабочая функция выглядит так:https://pastebin.com/FjCMaeFZЭто для старой доброй длинной арифметики. В файле число. Я его записываю в вектор в обратном порядке по 9 знаков в каждом элементе. На хабре видел другую реализацию этой функции, но она работает в 2 раза медленнее моей.
>>1161221>замещениязаимствование, будет правильней
>>1161222какая нахуй длинная арифметика когда у тебя long long
>>1161225И хули?
>>1161227Тебе байт нужен.
>>1161231В байт я смогу уместить только если возьму базу 10 или 100. А long long поместит миллиард и сократит количество операций в 9 раз.
>>1161232а напрямую нельзя что ли в long long читать? зачем нужно сначала в строку?
>>1161234а, понятноу тебя на одной строке одно длинное число и ты его разбиваешь в вектор при чтении
Перекатился в новый тред с клоном viАктуальная ссылка -- https://git.movepoint.su/anton/iv (git cloneable)В ближайших планах парсинг макросов и сложных вещей типа d<motion>
>>1157613https://2ch.hk/pr/arch/2016-06-08/res/736493.htmlhttps://github.com/sosachbot/cppthreadhat/wiki
Решил начать изучать c++ и выбрал первой книгу Страуструпа из шапки. Собственно возникла проблема, как правильно подключить эту блядскую библиотеку из книги(std_lib_facilities.h) ? Все перепробовал, облазил все форумы уже.
>>1161323ну дык и все как быпиздуй в php тредтам оп учит таких как ты забесплатно который год ужев крестоблядском треде тебе никто не поможет
>>1161323А ты ее скачал?Это ж его либа!!
>>1161360Скачал конечно. С офф. сайта Страуструпа, все по инструкции ее закинул и хуй. Проблема эта у очень многих, судя по гуглу.
>>1161323Что именно не так? Когда я попробовал ее подключить, cl начал ругаться на то, что hash_map - древнее говно, и вместо него надо использовать unordered_map. Лично я решил закомменчиваем кусков кода с hash_map, но можно просто попробовать c++98 компилятор.
>>1161366бедняжкано ты не унывайphp тред где то рядом
>>1161323 гуглить не пытался?http://www.stroustrup.com/Programming/std_lib_facilities.hЭто прост для удобства новичков заголовок. Всё тоже самое можно сделать используя стандартные библиотеки.Кстати, а за каим хуем ты не полез в сам файл за объяснениями?
http://www.designcontest.com/show/bs-faq-be/Это как то странно, белорусский язык есть русского нет. У Страуструпа какие то белорусские корни?
>>1161381Конечно гуглил лол. И делал все по инструкции с его сайта. Скачал либу и вставил к остальным либам в проект, после подключил ее. И перепробовал еще кучу разных вариантов с форумов, но каждый раз при компиляции выдает ошибку, мол либы нету.
>>1161185В вижаке комбинацией клавиш ctrl+alt+P можешь открыть список процессов, к которому можно присоединить дебаггер и производить отладку программы. Главное, чтобы .dll была с отладочной информацией
>>1160955
>>1161265Под винду сконпелять можно?
>>1161383Может прислал перевод кто-то
>>1157163 (OP)ОП даун.Инфа как обычно.
Как в cmake задать путь до .so библиотек, постоянно ошибку выводит "error while loading shared libraries: libPhysX3CommonDEBUG_x64.so: cannot open shared object file: No such file or directory"? find_library и link_directories не решили проблему.
>>1161672Переменнаю окружения LD_LIBRARY_PATH можно определить перед запуском, например, тогда директории, перечисленные в ней будут просматриваться на динамические библиотеки.Можешь еще поковырять на тему ld.so.conf
>>1161692А как это можно сделать средствами cmake?
>>1161700А cmake тут причем? У тебя загрузчик не может найти библиотеки. Возможно, когда ты собирал приложения, ты хуево прописал пути линковки (гугли что-то вроде gdd rpath cmake) и у тебя подставляются абсолютные пути библиотек. Вообще лучше сначала проверь, что именно не может найти загрузчик командой ldd $название_бинарника
>>1161850> gdd> gccfix
>>1161500пока интерфейс на ncurses -- разве что под cygwin/msys . В очень далеких планах можно и на Qt или Gtk фронтенд сделать
Как в vs2017 (или вообще какими ключами компиляции) смерджить все секции в одну - .text? Я видел в msdn'е статьюю про /merge .rdata=.text, но там не сказано, какой разделитель и как использовать для нескольких секций
>>1157596> не нашел треда по си, но думаю отличий не будет особыхв плюсах такое делают лямбдами, в сях функциями. съеби, в общем
>>1157632e m p l a c e
>>1161981А разве ncurses винду не умеет? Или может аналог кроссплатформенный есть? Во многих рогаликах вижу curses сборки
>>1162051http://gnuwin32.sourceforge.net/packages/ncurses.htmну смею предположить что если попердолить то можно организовать, но лично у меня точно руки совсем не скоро до такого дойдут
>>1162056следующая остановка -- пакет для арчлинукса (aur)
keybd_event: идентификатор не найденчто делать
Аноны, если я хочу написать программу с пользовательским интерфейсом, то что лучше использовать? WindowsForm? Qt? Другое средство для разработки GUI? Другой язык программирования?
>>1162290>Другой язык программированияthis
>>1162299Ну и для чего тогда используется c++?Ну и что же используется для разработки приложений с графическим интерфейсом и какой GUI используется?
>>1162319Electron
>>1162319Ну и что же используется для разработки приложений с графическим интерфейсом и какой GUI используется?node.js/php/asp.net + angular.js/react.jsdesktop вымирает. ты можешь сделать gui на крестах, но выебешься просто пездец и сделаешь какое то говно из девяностых. на крестах да, можно делать gui на qt, всяких gtk++, UWP, winforms, хоть winAPI, НОqt - покупай лицензию, дружок-пирожок, либо собирай по кускам либы для .exe и распространяй опенсорсноwinforms/uwp - анальная привязка к .net в 1 случае (в общем то уже и не поддерживается, этакий неудачный эксперимент), либо к windows 10/8.1 и winRT в случае UWP.WinAPI имхо лучший вариант в том плане, что ты можешь сделать вообще всё, что можешь придумать, но делать это очень долго и чем больше окон у тебя в общем, тем сложнее всё это дело разрабатывать, ибо проста тупа процедурное программирование
double test;test=14/4;cout<<test;return 0;Почему 3 выводит вместо 3,5?
>>1162397тому что int/int = intделай 14.0/4 или 14/4.0 или кастуй кого нибудь к double.
>>1162400Вот я бака!!!
Коротко: в целях изучения оОп буду сделать простенькую графическую прогу. симуляция поведения рыбной стаи. Точка - рыба, будет придерживаться ближайшей другой рыбы, убегать от "хишника", плыть к корму etc, что смогу реализовать.Как примерно я думаю буду реализовывать: массив объектов типа рыба, и по эвенту дёргать все объекты за методы в цикле.Вот как реализовать эвент я и хотел спросить. Первая мысль что пришла в голову, просто по таймеру запускать цикл с вызовом методов, но тут мне не понятно как например тогда реализовать разную скорость перемещения "рыб" в пространстве и взаимодействие с пользовательским "хищником". Как называется область которую я затрагиваю, что почитать? Это что то игростроевское, есть норм литература где подобные вопросы затрагиваются?
>>1162514>оОп>массив объектов типа рыбаэто будет у тебя класс "стая" :З, а не голенький массивчик, это же ооп, блядь
>>1162517 не суть, я с моделью взаимоотносительного движения множества объектов хочу разобраться, а что пихать в класс я как нибудь сам разберусь. Вопрос то больше прикладной, чем по самому Си
>>1162539 запости то же сообщение ещё через 5 часов.
>>1162533тогда могу только пописать на тебяты ведь за этим пришел?
>>1162542будет сделано!
>>1162352Щито? Обычные программки для компьютера пишутся на джаваскрепте и пхп? Я думал они только для веба используются. Вообще, я просто хотел сделать пару простых приложений с GUI и выложить их на гитхаб для резюме. Ну перед этим я захотел узнать, на чём удобнее всего писать такие приложения. Мне почему то казалось, что тру программисты подобное пишут на c++.
>>1161414срал и ебал. С отладочной она не компилится, какая-то хуита с линкером.
>>1162646всем насрать на твой гитхаб, июнь ебучийвернее, хрюшам даже поссать на него будет лень, они лучше маникюр доделают чем лезть смотреть че ты там накоммитил, лол
>>1162646>>труЪЕсть задача есть инструмент. Орехи не микроскопом колют, долотом волосы не стригут. Простенькую морду можно и в qt навалять, что то выёбистое для андроида и прочей мобильной пораши есть другие языки, на которых легче быстрее и уже всё готовое. Кресты не для этого, кресты для того чтобы страдать.
>>1162675послушайчто тут обсуждать: electron - это cutting edge в разработке десктопных приложений!точка
>>1162646>Вообще, я просто хотел сделать пару простых приложений с GUI и выложить их на гитхаб для резюме. Ну перед этим я захотел узнать, на чём удобнее всего писать такие приложениякресты и правда не про это. GUI никогда не является целью программы. умеешь делать GUI на крестах - заебись, молодец, нет - ну и в рот его ебать, всегда сможешь освоить технологии при необходимости. у c++ нет прям дефакто стандарта GUI, но из того, что я пробовал winforms, qt/qt quick, UWP, winapi и из того, что я в теории рассматривал gtk++, wxwidgets я бы всё таки посоветовал winapi просто исходя из соображений, что сделать можно реально всё, до чего сможешь додуматься и ты работаешь без всяких посредников и программных обёрток. очевидные минусы - сложность разработки и поддержки кода, привязка к windows
>>1162695 запости то же сообщение ещё через 5 часов.
Анон, помогиЧитаю битмап файл, открыл, считал файлхедер, считал инфохерСчитывание попиксельно работает, но получается высота*(ширина + ширина % 4) считываний с диска.Хочу уменьшить, считать построчно или, что ещё лучше, сразу все данные.Пробовал считать в буфер, уже после него доставая пиксели и загоняя их в vector<vector<RBGTRIPLE>, но получается какая-то ебала.Была идея объявить basic_ifstream<...>, чтобы читать из потока сразу с нужным типом, но как ему указать, с какой позиции я хочу считывать? Ведь мне нужно пропустить файл/инфо хедеры, которые другой размерности
>>1159145У меня виртуалка с дебианом, жму там одну кнопку, она хватает все сырцы с виндовой машины, билдит, запускает.
Как в double увеличивать/уменьшать кол-во знаков после точки?
>>1162887https://stackoverflow.com/questions/9999221/double-precision-decimal-places
>>1162879 запости то же сообщение ещё через 5 часов.
>>1162941иксы переустанови
>>1162768Считай всё разом в массив байт. И оффсетами, анон, оффсетами.
>>1162768Каждая строка в битмапах выравнивается до 4х байт. В зависимости от количества столбцов в конце строк может быть 1, 2 или 3 дополнительных нулевых байт, по этому может ебала возникнуть со сдвигами.
>>1163116>Получается высота*(ширина + ширина % 4) считыванийЗнаю про кратность четырем, я это учел.Проблема в записывании байт в структуру из массива, именно в этот момент получается ересь
>>1162883Там долго нужно ебаться с настройкой, чтобы из под виртуалки можно было в каталоги чужие для неё залезать?
>>1163229Попробуй тупо массив из структуры structure rgb { std::byte r, g, b; }, и заполняй через memcpy. А лучше свой код на пастбин залей и bmpшник, может у тебя рисовалка в неожиданный формат пишет.
>>1162768http://en.cppreference.com/w/cpp/io/basic_istream/readДальше думай сам
Анон, а как должна выглядеть многопоточная работа с массивом объектов?У меня есть массив, куда в одном потоке добавляются объекты с полями типа bool wt0=false, wt1=false ... wtX=false. Есть потоки wt0, wt1 ... wtX которые читают этот массив и после выполнения определённой работы изменяют эти поля в соответствии со своим номером на true.Нужно ли использовать мьютексы или обход массива с чтением и изменением полей объектов (с учётом того что каждый поток будет изменять только своё поле) будет потокобезопасным?
>>1162352>qt - покупай лицензию, дружок-пирожок, либо собирай по кускам либы для .exeЛицензия нужна только для статической линковки. Если ты просто длл к экзешнику положишь - все ок.
>>1163529в вопросе и содержится ответ - нужно закрыть атомарным доступом доступ к элемантам массива по отдельности
>>1163547Ага, только qt creator не собирает тебе все эти либы рядом с .exe.
>>1163586>Ага, только qt creator не собирает тебе все эти либы рядом с .exe.Он и жопу не вытирает после того, как посрешь. Возьми да скопируй или скрипт напиши, охуеть программисты пошли, пиздец просто.
>>1163586http://www.dependencywalker.com/
>>1163632>Возьми да скопируй или скрипт напиши, охуеть программисты пошли, пиздец простоА чё ебать сразу на ассемблере не пиши? Или на инструкциях RISC?
Вкатывается нубло. Значит есть у меня класс динамических массивов. Мне нужно перегрузить оператор сложения двух массивов поэлементно. Как? У меня нихуя не получается, ток начал пытаться разбираться почему, поэтому без кода. От знатоков хотел бы получить пояснение за перегрузку разного рода сложений, если внутри операторв цикл надо юзать, потому что не нагуглил пока ни одной статьи с подобным примером. Хелп
>>1163803>А чё ебать сразу на ассемблере не пиши?Ты реально настолько тупой, что файл скопировать не можешь? Больше ничего ведь делать не надо - взять dll из каталога Qt и положить к экзешнику. Это для тебя такая непосильная задача?
>>1163807>Вкатывается нубло.куда ты лезешь, блядьу нас все в трухузп в два раза меньше чем у ява-лордов и веб-обезьян, а требовать с тебя будут как с молодого кармака, лол
>>1163807> не нагуглил пока ни одной статьи с подобным примеромhttps://stackoverflow.com/questions/15060372/overload-operator-to-add-two-arrays-in-cНу-ну. Тебе надо лишь поменять немного кода под свой класс
>>1163529если разные потоки меняют разные элементы массива - потокобезопасно и так, можно ничего не делать.а так можно лочить весь массив для надежности, можно лочить отдельный объект каждый раз при обращении к нему (и хз что будет быстрее - зависит от количества объектов и потоков)можно вообще ничего не лочить а использовать атомарные операции (InterlockedXXX, AtomicXXX)
>>1163878>если разные потоки меняют разные элементы массива - потокобезопасно и так, можно ничего не делать.А если разные поля одного объекта?
>>1163891Ну все ещё конфликтов быть не должно.
Гайс, подскажите, что лучше паскалевому нубу осваивать в первую очередь: си плас плас или чего попроще для начала?
>>1158536std::count_if
>>1163950в зависимости от того, что ты хочешь делать
>>1163950я бы не советовал вообще в 2к18 инвестировать свое время в изучение крестов
>>1163950Не слушай старпёров
>>1163950Я бы сказал, что без контекста чистых сей непонятны будут 3/4 фич плюсов.
>>1163950c# и достаточно. Нахуй эти кресты, или хочешь всю оставшуюся жизнь в легаси копаться?!
>>1164028окей прочитал он эту плохонькую книжку, даже покодил упраженияи что дальше? он как был нулевым так и останется по сути
https://ideone.com/caBDA7В фаил записывает слишком часто, как сделать так что бы при отпускании клавиши записывалось.
>>1164094https://www.youtube.com/watch?v=BohAWXu1z8U
Собственно, погохите. Инфы дать не могу (ибо дохуя), но я обосрался. В двух словах: по потоку исполнения, есть 2 стула: либо переменная == nullptr и идёт инициализироваться, или уже инициализирована и покок идёт дальше. В коде инициализации уверен на 300000%, но в зависимости от положения звёзд и луны ловлю EXC_BAD_ACCESS, а у указателя адрес в стиле 0x900000000. Причём работает всё через раз, например при подаче на вход 1-2 значений, всё работает, больше — все.Вобщем, делитесь опытом, если кто сталкивался с такой прикольной хуйней.
Есть ли какие нибудь преимущества циклов на итераторах-объектах от циклов с обычными интовыми итераторами? Или если происходит частое обращение к массиву объектов в теле цикла, то эффективнее создавать ссылку на объект, чем каждый раз обращаться к объекту через массив по индексу?
>>1164166те мы должны решить за тебя проблемы в коде который ты даже показывать не хочешь
>>116416695% ошибка в твоём коде, удачного дебага.
Возможно ли использовать в программе на C# код написанный на C++ в виде динамической библиотеке. Она ж компилится в бинарник, нужна только поддержка символов, верно?Или так не выйдет?
>>116424560% что код генетический, предлагаю дизассемблировать.
>>1164250да, вполне можно. Знаю такой пример( правда работает через пень-колоду)
Есть ли профит от создания scope'а внутри функции кроме как в случае, когда в объявленном скоупе расходуется много памяти в стеке и хочется её освободить по выходу?
>>1164273Мьютексы с локами, смартпоинтеры
>>1164166какой смысл делать что-то параллельно, если не знаешь каквангую, что это можно сделать в один поток и заказчики будут довольны производительностю
>>1164250C# может в интероп c СИ, так что просто делаешь либу с extern "C" функциями и грузишь их с нужными сигнатурамиhttps://stackoverflow.com/questions/9093292/use-a-c-library-from-c-sharp-code
>>1164326Да еще оверхед ебнутый от многопоточности (особенно на плюсах)), но если прога вешает ядро на секунду-три то уже надо делать паралельно.
>>1164380Я как-то делал многопокпок под себя, выиграл секунд десять из ста, но код превратился в нечитаемую забагованную пизду с дедлоками с подозрениями на лишние оверхеды. Ну его этот многопокпок, если задача не подразумевает его.
>>1164166Проверка и инициализация в скоупе с мьютексом?
>>1164220Можно вместо array писать просто *i, больше разницы нет, всё заоптимайзится к одному и тому же.
>>1164395Вакаба сожрала квадратные скобки у array, ну ты понял.
>>1157163 (OP)Потсоны помогите прашу, короче есть такой код(https://pastebin.com/M1nPCrm0). Почему при выборе варианта выходит Error? как вынести эти 2 функции в класс и в отдельный файл
Потсоны памагите. Короче есть такой код(https://pastebin.com/M1nPCrm0) - почему выходит Error еще до выбора варианта? Как вынести эти 2 функции в класс в отдельном файле?
>>1163891>А если разные поля одного объекта? Если не битовые — гарантировано потокобезопасно.
двач, почему когда ты написал вирус на cpp и залил на вт, там показывает 3/66, а на следующий день-14/66?не закриптованый
>>1164237Его банально слишком дохуя, чтобы выдрать кусок который можно было бы показать не потеряв всего остального.>>1164326Проблема в том, что ни о какой многопоточности речи и не идет. Все работает в одном потоке, я потому и хуею.>>1164391Есть смысл в однопоточном коде?Собрал с шланговскими санитайзерами — начало падать с SEGV на стороне LLVM вообще в другом месте (да, я пишу конпелятер). Так же пробежался по этому месту, где изначально падало без них раз 20 дебаггером — и у меня стойкое ощущение, что обосрамс на стороне LLVM.>>1164433На вт не заливай, они же деньги зарабатывают на том что сливают сигнатуры свежей малвари вендорам антивирусов. Совсем зелёный штоле?
>>1164508Пошёл я, короче, собирать новую версию LLVM, через неделюку сконпелируется мб.В багзилле ллвма кстати, висят незакрытые репорты сегфолтов с 13 года, всё как мы, байтослесари, любим. Говно, мазут и сегфолты.
Помоги, анон, с кьютэКак отключить выполнение клавиши? ну т.е. допустим есть у меня в моём тексэдите обработка нажатия клавиши таб. обрабатываю, а табуляция добавилась. как убрать это?
>>1164508тогда поставь брекпойн на изменения этой переменнойтак сможешь отследить места где она изменяетсяпоймешь, каким кодом ты случайно затираешь область памяти, которая перекрывает эту переменную..тут, конечно, надо уметь отлаживать и учится этому..
>>1164550ты уточняй что имеешь в видуесли про qml - "event.accepted = true"
Посоны, я чо вот хотел спросить. Функция Bind () - это типа такой убер мега костыль который позволяет смешивать говно разных версий и аффторов, да?Что лучше использовать bind () или λ-функцию?
Анон, где почитать про то какое С++ говно / не говно.Мне прост приятно читать срач и хейт на эту тему, мотивирует и повышает ЧСВ.
char buffer[30000];send(serverSocket, "RETR user.png\r\n", 15, 0);int size = recv(dataSocket, buffer, 30000, 0);ofstream fout("test.png", ios_base::binary);fout.write(buffer, size);fout.close();Пытаюсь скачать файл с ftp сервера. Тут я в буфер его сначала сохраняю, потом создаю файл и бинарно записываю в него содержимое буфера. В хекс эдиторе (пик) видно, что в создаваемом файле данные как то сдвинуты, и что-то мне подсказывает, что именно из-за этого говна файл помечается как поврежденный. Что за хуйня и что делать?
Решил поковырять немного вашу C++. В чем различия в Visual Studio: community, enterprise и proffesional?
>>1164762у тебя с кодировкой что-то. там в начале 0d дублируется вроде в районе 0d 0a.
>>1164764>Visual Studio: community, enterprise и proffesionalВ количестве бабла за подписку.
>>1164764ставь community и не парься. именно язык поковырять везде можно.
>>1164806В любом случае надо платить, или за комьюнити-версию не надо?
>>1164811За комунити версию ничего не надо, но по лицензии ты над коммерческими проектами работать на ней не должен (в нормальных странах в жопу выебут за такое). +У комунити нет всякой бесполезное хуиты вроде TFS (если у тебя нет целого зоопарка обезъян).
>>1164826Спасибо за инфу, анонче. Добра и благ тебе.
>>1164804Извини, немного не понял. Какой кодировкой? Как ее фиксануть? Там у меня по всему файлу именно 0d откуда-то появились. Пиздец какой-то вообще не ебу что делать.
>>1164756http://lurkmore.to/Копипаста:Программирование
>>1164826>но по лицензии ты над коммерческими проектами работать на ней не должен1. ПРАВА НА УСТАНОВКУ И ИСПОЛЬЗОВАНИЕ.a. Индивидуальная лицензия. Если вы являетесь физическим лицом, разрабатывающим собственные приложения для продажи или с какой-либо другой целью, вы можете использовать данное программное обеспечение для разработки и тестирования таких приложений.
ВниманиеВопрос знатокамЕсть что почитать на тему modern c++ образца 17го года? Лучше всего книга с хорошими примерами, или серия записей в блоге, код тоже сойдет, если это будет законченное приложение на 5К -10К строк. Поддался рекламе packt publishing, глянул какую-то парашу от индуса, в-общем не впечатлился, он там и использует умные указатели, но конструирует объекты оператором new зашквар-то какой.Я же ожидал фабричный конструктор make_shared, smart pointers, local type inference, move semantic, lambda functions в умеренном употреблении, concepts без фанатизма, namespace import в теле класса/метода, правильная работа с итераторами/слайсами в 2к17 - короче все что делает код современных крестов чистым и шелковистым. Описание озможностей и хорошие практики их использования без багажа традиционной крестовой мозгоебли. Есть такое?
>>1164900>>1164919>но конструирует объекты оператором new зашквар-то какой.>>Я же ожидал фабричный конструктор make_sharedМожно и так, и так, но я тоже делаю через make_, потому что на new просится delete.
>>1164921#ifndef пдцдегенераты#define пдцдегенератыКогда уже вам модули запилят-то? #endif //пдцдегенераты
>>1164919cppcon канал на ютубеджосаттиса новое издание книги о шалонах
>>1164756если нет бекграунда в несколько лет и программиской вышки - в 2k18 в кресты лучше просто не лезть
>>1164927А как же НАСЛЕДИЕ? Столько софта, которого нет на других языках.
>>1164685Мэйерс, кажется, писал, нахуй бинд, юзайте лямбды.
>>1164927пиздец, а если овервышка, а ты всё сидишь и сука пишешь какую-то хуету в свои 25+ на ебанных крестах?однокуры либо шарпоёбствуют, либо в цодах макаками ебашут на подносах
>>1164872ну погугли чуток сам, ну не сложно ведь совсем. ftp binary transfer mode
>>1157259>Но при чем тут c++?Там же написано для чего онНужен спец заменяющий весь отдел, за целых 60к в Москва
Реализую какое-то странное дерьмо, но мне нужно сделать функцию, которая, например открывает блокнот, вставляет в него текст(заранее известный), дальше она ожидает момент, когда пользователь закроет блокнот, после этого она перезагружает в память тот файл, что пользователь может быть изменил.В общем чем можно открыть блокнот и отследить момент его закрытия? Через винапи? Если да, то как, открыть блокнот можно через createprocess, наверное, а как следить за тем закрыт он или нет?
>>1165008Зачем? Пусть вставляет текст в файл без всякого блокнота, а пользователь жмёт enter в консоли.
>>1165009Просто текст хранится в памяти довольно странным образом и редактировать его напрямую через программу довольно сложно, поэтому я думал сделать вот такое вот странное редактирование через блокнот.Т.к. как редактировать текст напрямую через консоль я не знаю.
>>1165023>я не знаюИ в итоге пытаешься пойти более кривым и сложным путем, ну-ну.
>>1165008Гуглить пробовал ? Первая ссылка в поискеhttp://www.cplusplus.com/forum/general/20884/
>>1165116Спасибо!
>>1165116>>1165134Извини, а как ты запрос составил, что нашёл именно то, что нужно?Я уже дописал в программу, все работает именно так, как хотелось. Ещё раз спасибо.
Зачем давать указателю тип данных если в любом случае придется либо задавать ему память определенного объема или направлять на уже существующую переменную?
>>1165204>задавать ему память определенного объемаНо ведь нет.
>>1165208Ясно, похоже я немножко поторопился задавать вопрос. Слушаю курс cs50 и там пока указатель использовался лишь в компании с malloc(sizeof(datatype)).
Не знал у кого спросить, спрошу у байтоёбов, как у самых умных в этой теме.В разных языках, например в Java и C# есть такая тема, как проверка реализации классом некого интерфейса.Например все перечисляемые типы реализуют интерфейс IEnumerable. Так вот, насколько эта абстракция хуёвая? По сути мы у динамического типа в рантайме смотрим какой он реализует интерфейс. Это совсем не zero cost, да,
>>1165238Если мы говорим про интерфейсы - то это все чекается и проверяется в компайлтайме, т.е. зерокост.Е ли ты в рантайме хочешь узнать, какой класс - это возможно в редком случае (узнать дерайвд класс по указателю на базовый через dynamic_cast) - это не зеро кост
https://ideone.com/5UT5MTесли делать консоль не видимой, то в фаил не записывается.https://ideone.com/caBDA7А в этом коде записывается при не видимой консоли, но записывал слишком часто. Поэтому я в первый код добавил проверку, что если уже нажато то не записывает.
>>1165257ах да, как решить проблему данную
>>1165252Я не совсем про это спросил. Я не про C++ спрашиваю.А про языки типа C# или Java, где в рантайме проверяют класс на наличие у него реализации энного интерфейса.В C++ вроде этого нет. Мне интересно, насколько такая роскошь бьёт по перфоманцу?
>>1157163 (OP)сап, есть массив, например 1 1 2 2 2 3 3 3. Задача- удалить все повторяющиеся числа, я это сделал получилось 1 2 3, но одно но- после тройки остаются удаленные элементы массива. Как сузить массив с 8 элементов до 3?Вот код - https://pastebin.com/Mj9t8Cgd
>>1165283https://wandbox.org/permlink/LC3lbVnejskgF6VH
>>1165283Что вообще понимается под "удалить из массива"?У твоего массива же фиксированный размер.>>1165292Гы, а где ретёрн?)
>>1165297>Гы, а где ретёрн?)http://eel.is/c++draft/basic.start.main#5 :A return statement ([stmt.return]) in main has the effect of leaving the main function (destroying any objects with automatic storage duration) and calling std::exit with the return value as the argument.If control flows off the end of the compound-statement of main, the effect is equivalent to a return with operand 0 (see also [except.handle]).
>>1165297то есть у меня получается из вышеописанного массива 1 2 3 -893546 -457457547- 457457 457 -76767 и т.д, так как я просто сместил ненужные мне числа. Как избавиться от этих неинициализированных чисел?
>>1165292спасибо, конечно, но пока моих знаний не достаточно чтобы понять что там происходит
>>1165301Да я знаю, что можно. Просто бесит когда не пишут ретурн :с>>1165307Да нихуя там не происходит. Стандартные библиотеки юзаются и всё.
>>1165309но всё же , можно ли сузить массив ?
>>1165309ладно, можешь не отвечать >>1165311лучше переделаю код
>>1165311Если ты выделил память на стеке, то нет. Варианты решения: 1) Выделить память в куче с помощью malloc, потом изменить размер с помощью realloc. Вариант так себе, т.к. это не кресты, а Си. Чтобы было на крестах используешь new, но в таком случае придется копировать все в новый массив.2) Юзаешь вместо массивов вектор из стандартной библиотеки. Самый лучший вариант.3) Пишешь свой велосипед класс-обертку над массивом, который хранит размер.
>>1165271https://pastebin.com/2iMxYmH3перформанс - будут накладные расходы на виртуальные функции
>>1165311ну представь, твоя подружка настолько продвинутая, что во вторую дырочку у ней спокойно прододит dragon dildoи ты такой влетаешь на форум проктологов с вопросом: "а можно ли сделать так чтобы моему 12ти сантиметровому инструменту было ТАМ комфортно и узенько"
если я например хочу удалить содержимое папки, сработает функция?:remove("C:\\Users\\User\\Desktop\\test\\.")
>>1165340https://pastebin.com/KyA6pKpg
>>1165204ну потому что если естьтип * ptr = 100;то если сделать ptr + ptr +1; то ptr будет равен 100 + sizeof(тип)
>>1165204тебе же не только начало, а ещё и где конец нужно знать
Плюс есть типа универсальный void указатель
>>1159170У тебя есть права администратора?
Анончики, решил затестировать folly::fibers. Есть возможность затормозить выполнение рутины, что-то вроде delay или отложенное исполнение по таймеру?
>>1157632std::move. Работает для всех методов с параметром T&& (тот же vector.push_back())
>>1165341есть еще ответы?
есть ли видеоуроки на этот язык?и чем пользоваться лучше всего
Анон, подскажи, как мне создать экземпляр класса по определенному адресу.Пишу на работе систему реального времени, и когда я заикнулся при начальнике про создание экземпляра в стеке и куче, он покраснел от злости и сказал, что никакие стек и куча нам не нужны, просто создай объект по определенному адресу, никаких механизмов управления памятью.Уже измучил гугл, но видимо я что-то не то пытаюсь найти. Хотя вопрос простой.
>>1165673>стек и куча нам не нужныНеплохо.
>>1165673placement new тебя спасет. типа char ptr = new char[sizeof(your object)];YourObject obj = new YourObject(ptr);но и потом надо по другомуobj->~YourObject(); // destructordelete[] ptr; // free memoryно вообще твой начальник дебил, если че.
>>1165692звездочки убились, сорян
>>1165692еще сорян, попуталYourObject * obj = new(ptr) YourObject;
>>1165673Пдц крестовики пошли http://www.cplusplus.com/reference/new/operator%20new/>placement (3) void operator new (std::size_t size, void ptr) throw(); мимо разраб на "медленной" жабе
>>1165692Спасибо, но к сожалению это не то, что надо.Я спрашивал у начальника, не про new placement ли он говорит, но он удивился, в какой редакции плюсов такое появилось, а потом сказал, что он имеет ввиду другое, гораздо более простое решение.Что как-то можно объявить указатель, указателю присвоить адрес, а вот как по этому указателю создать объект не в куче - я не понял.
>>1165698void ptr = 0xXYU000XYU;void mem = malloc(ptr);
>>1165705Звездочи сосач съел, но удачного вам отстрела яиц.
>>1165705malloc ведь не запустит конструктор.
>>1165698>>1165695Вот тебе решение дали, там второй аргумент указатель на воид, то есть указатель на кусок памяти, в котором ты и будешь выделять память под свои нужды.Насчёт кучи не понял, ты в любом случае будешь работать с кучей, просто можно выбрать в каком именно месте ты объявишь объект.хотя я вообще без понятия, что твой начальник мог иметь в виду
>>1165698>Я спрашивал у начальника, не про new placement ли он говорит, но он удивился, в какой редакции плюсов такое появилосьТы тралишь нас так?
>>1165723Вероятно, нужно пере этим>placement (3) void operator new (std::size_t size, void ptr) throw();еще зарезервировать память по этому адресу. "A pointer to an already-allocated memory block of the proper size.", а может разъебешь чего нибудь.
>>1165698>Я спрашивал у начальника, не про new placement ли он говорит, но он удивился, в какой редакции плюсов такое появилосьПдц начальники пошли. У вас одна голова на двоих? Ето именно то что нужно, обконструируйся хоть на стеке, ноть в hbm в любом режиме.
>>1165698чувак, ты уточни у него, он точно понимает, что никакой памяти кроме "кучи" и "стека" больше нет? только два варианта.
>>1165742Я бы еще уточнил - нахуя эти приседания вообще делать.
>>1165698Видимо, у вас какой-то ембеддед говночип без виртуальной памяти, поэтому можно сделать как-то так:class1 a = 156a = class1(a,b,c);
>>1165779В первой строчке указатель на class1, да.
>>1165673Пожалуй, заскриню. Был в том треде.
>>1165698>>1165673надеюсь, ты понимаешь что твой лид тоже сидит в этом треде и в понедельник он будет в два раза более злой
>>1165804мимоначальник?
>>1165698>>1165673Вопросы этого анона заставили меня задуматься - а как в памяти расположены данные-члены класса, если в классе объявлен конструктор, деструктор, методы, индексы и всё такое? Оператор sizeof(classname) учитывает размер адресов функций, или он только суммирует размер по типам данных? В памяти последовательно расположены переменные объекта класса сверху вниз в порядке объявления, или от компилятора зависит? Или между членами-данными вполне может затесаться адрес функции какой нибудь хотя зачем, это же оверхед по 4/8 байт на объект
>>1165698>Что как-то можно объявить указатель, указателю присвоить адрес, а вот как по этому указателю создать объект не в куче - я не понял. Можно дождаться http://wg21.link/p0593r2 и тогда при некоторых условиях объект появится сам.
>>1165812sizeof класса без виртуальных функций = сумма sizeof его полей, плюс паддинг между полями.sizeof класса с виртуальными функциями = тожсамое + sizeof указатель на vtable
>>1165854Окей, а в памяти процесса то это как выглядит? Последовательно с паддингом значения полей объекта расположены, или еще что нибудь есть?
>>1165869https://2ch.hk/b/arch/2016-08-23/src/134659857/14719411848920.jpg
>>1165869
>>1165869так же
Читаю Липмана, вроде свежего. Что-то не очень понял, что они имели в виду про инициализацию по умолчанию.Утверждается на 77 странице по внутренней нумерации, что инты объявленные внутри функции (видимо в том числе мейне) - неопределены. Я вот проверил это на g++ из стандартной поставки линукса и там это не так.В мейне это нуль, а в любой другой функции - неопределено, ну т.е. случайное число.И вообще притензия к этой книге. Если бы я не знал более менее то, о чем читаю, то боюсь - не понял бы ничерта. А что делать, когда я реально наткнусь на то, чего не знаю? Или проверять нужно каждый непонятный момент и вопрос? Или я просто невнимательно читаю и там все подводные камни описаны? К примеру этот момент про майн не уточняется, можете сами глянуть, вторая книга для вкатывальщиков из шапки.
Сап крестовый анон. Сижу в деревне. Играю в олдовое говно. Есть исходники софта на полюбившуюся игру. И тут меня заинтересовало. Интересно через сколько я смогу собрать первое рабочее приложение и модифицировать его. Смогу ли продолжить изучение и увижу ли я интерес в крестах для себя. Сможет ли это перерасти в нечто большее облегчающее мою жизнь. Или я заброшу на следующий день?
>>1166016> Сижу в деревне. Хоть на крестах пиши, только не бухай.Подергал чертополох на грядках до начала жары и пошел себе читать про умные указатели и раи. Не жизнь, а мечта!
>>1166013Все правильно там написано. То, что у тебя переменная оказалась инициализирована нулем, это просто везение. По стандарту только у глобальные переменных определена инициализация по умолчанию.
>>1166038Т.е. такого быть не факт, что должно? Фича g++?Спасибо.
>>1166040>Фича g++?Нет, просто повезло, что в момент запуска программы на стеке по данному адресу был ноль. https://godbolt.org/g/4vbJU1
>>1166048Не верю в такое везение. Перекомпилировал, все равно нуль. В случае неопределенной переменной внутри функции - результат менялся каждую секунду при запусках.
>>1166016>через сколько я смогу собрать первое рабочее приложениезависит от правильности и древности манускрипта сорцов>Смогу ли продолжить изучение и увижу ли я интерес в крестах для себя. бля, тебе лучше знать. но вообще штука занятная - мне прогать стало интереснее чем играть.>Сможет ли это перерасти в нечто большее облегчающее мою жизнь.может> Или я заброшу на следующий день?зависит только от тебя
>>1166053Попробуй так:#include <stdio.h>int main() { { volatile int a = 0x55555555; } int b; printf("%x\n", b); return 0;}
двач, какая функция удаляет папку. пробовал remove(), но она работает только для файлов
>>1166088Кошерный нуль, все так же. А зачем ты засунул в маин блок?
>>1166167Это scope.Суть в том, что как только ты вышел из скоупа у тебя переменная 'а' автоматически удалилась.
>>1166152https://msdn.microsoft.com/en-us/library/windows/desktop/aa365488(v=vs.85).aspx
>>1166167Тонкостей не знаю, но, возможно, при старте программы выделенная под стек память обнуляется.Идея была в том что сначала ты создаешь переменную 'а' с каким-то значением, то есть модифицируешь участок памяти стека. При выходе из скоупа указатель стека смещаеться обратно и переменная 'b' создаётся на месте 'a'. В таком случае у не инициализированной 'b' должно быть значение оставшееся от 'a'.Кстати, у меня все так и вышло. Проверял на msvs2017 release.
>>1166307>Кстати, у меня все так и вышло.А вот у меня не вышло и не выходит. И продолжает получаться нуль в мейне и не нуль всюду в остальных местах.
>>1166310Ну можешь не инициализировать явно. Зачем кого-то слушать. Удачного отстрела ноги
>>1166357Не понял твоего поста. Я спрашивал, почему происходит то, чего происходить не должно. В чем отстрел ноги?
Пусть у меня есть класс одним из полей которого является string. Есть несколько вопросов:1) Какой изначально макс. длинны создаётся строка. Строка ведь вроде растёт по такому принципу: есть макс. длина, например 4, как только она достигается создаётся новая строка в два раза больше размером и старая строка копируется в новую, так? Если так, то как она будет увеличиваться, ведь он не может просто так увеличить размер объектаили может?2) Что будет если я например выделю массив таких объектов и у одного увеличу строку, ведь по логике память может заехать на соседний объект и испоганить там всё.
>>1166391>длинныдлины*селф-фикс
>>1166370> Я спрашивал, почему происходит то, чего происходить не должно.А почему это происходить не должно?
>>1166391>1) Какой изначально макс. длинны создаётся строка.Не определено.> память может заехать на соседний объект и испоганить там всё. Твою защёку определённо испоганит.
>>1166399То есть если вдруг нужно делать массив таких объектов, то полем лучше делать указатель на string?
>>1166401Друг, ты серьёзно спрашиваешь или стебёшься?
>>1166391внутри std::string за кучей других абстракций лежит указатель на char или что нибудь подобное, просто класс в переопределенных операторах и функциях управляет памятью. когда ты конкатенируешь строку, то у тебя старая память пидорится, и выделяется новый блок памяти, возможно в другом месте
>>1166403Нет, мне просто нужно знать насколько безопасно так делать или как делать лучше.
>>1166370Забей всю память через new и потом попробуй вывести неинициализированную переменную
>>1166310Похоже указатель стека не возвращается обратно.Можешь дебагере посмотреть память стека.Вообщем как уже сказали - не полагайся на подобное поведение.
>>1166391String содержит указатель на char, память выделяется через new. При всех операциях выделяется новая память, а старая удаляется. Массив string это массив указателей на char. В общем случае данные не следуют друг за другом. Только указатели на эти данные
>>1166430Я имел в виду нет разницы между случаем с полем string и полем string *?Я спрашивал про массив объектов, полем которого является одно из того, что я перечислил выше.
>>1166432книжку почитай, студент, бляа не заябывай людейirl на свои вопросы получишь только презрительное молчание
>>1166432>Я имел в виду нет разницы между случаем с полем string и полем string с твоим первым вопросом это вообще связи не имеет. разница есть. поле string - объект строка будет хранится целиком последовательно в том месте, где создан объект класса. но! содержимое строки != объект строки. объект строки может содержать различные указатели, вспомогательные приватные переменные, но ее содержимое содержится совсем в другом месте в куче, адрес которой - протектед указатель на char где то внутри за кучей наследований.string - это указатель на объект, то есть даже вспомогательные структуры будут хранится не в стеке, а хуйпойми где в куче. пикрил надеюсь поможет тебе понять.
>>1166495ой бляяяя ебучая разметкас твоим первым вопросом это вообще связи не имеет. разница есть. поле string - объект строка будет хранится целиком последовательно в том месте, где создан объект класса. но! содержимое строки != объект строки. объект строки может содержать различные указатели, вспомогательные приватные переменные, но ее содержимое содержится совсем в другом месте в куче, адрес которой - протектед указатель на char где то внутри за кучей наследований.string* - это указатель на объект, то есть даже вспомогательные структуры будут хранится не в стеке, а хуйпойми где в куче. пикрил надеюсь поможет тебе понять.
>>1166497Да, теперь понял.Просто я спрашивал не будет ли "заезжать" соседние поля стринга если создать массив объектов.Судя по твоему ответу ничего плохого не будет, т.к. само поле стринг это объект фикс. размера, и строка хранится в другом месте.
>>1166505>стринг это объект фикс. размераА что, есть объекты нефиксированного размера?
>>1164418Кавычки в кейсах, брат
Комитет по стандартизации языка принял решение о том, что указатели будут объявлены устаревшими в C++20 и с большой долей вероятности будут удалены из C++23.СИ ПЛЮС ПЛЮС ВСЕ
>>1166560Пруфы?
>>1166565АХАХАА С ПЕРВЫМ АПРЕЛЯ ЛООООЛ
>>1166566На дваче каждый день первое апреля
>>1166560УХ БЛЯДЬ!!!>>1166566>>1166567А потом отлегло... но осадочек остался.
АААААААААААА Блядь!!!!http://www.modernescpp.com/index.php/no-new-new26 March 2018 неповторимый оригиналhttps://habrahabr.ru/post/352570/ - 1е апреля не лучшее время для публикации такого.
Аноны, я вот начинал изучать кресты в брошеном универе лет 10 назад, теперь начал по новой. Но ощущение такое что приходится учить совершенно другой язык. А после этой новости, блядь да что делать то? Есть у кого умные мысли о дальнейшем развитии крестов? Куда всё катиться?
>>1166570Все катится к Black Women Who Code
>>1166570Почитай коменты к той статье на хабре, вроде как шутка таки, но даже если и нет то тебе не похуй?Если это будет в 2023 году а стандарт выйдет из хипстерской зоны и начнет юзаться в продакшене только спустя еще лет 5 то к тому времени ты уже будешь невъебенным спецом и тебе на такую хуйню будет похуй
>>1166570В крестах все охуенно, есть вакансии по 200+ штук.Например https://hh.ru/vacancy/25040958Язык развивается, и это очень здорово.
>>1166592бля, даже комментить леньесли в кратце нвидиа одна из последних контор что потихоньку не сворачивает деятельность в рф и платит крестовикам нормальные деньги..в остальном все оче плохо..
>>1166617те она пока еще не ушла, но уйдет тоже в ближайшие годы..
Здравия анонам, как познакомится с последним стандартом C++? Нужно ли для этого знакомится с предыдущими?
Это правда про 8000 часов. Что-то не особо в это верится
>>1166640Ты бы и с собакой познакомился.
>>1166640> как познакомится с последним стандартом C++?Тебе лучше познакомиться с учебником русского.
>>1166666
>>1166426>Похоже указатель стека не возвращается обратно.Он охуел?
>>1166685Предлагаю зарепортить в issue-tracker gcc/claпg и пожаловаться в комитет ISO на страуструпа.
>>1166167>Кошерный нуль, все так же.https://godbolt.org/g/X3Wm5r
>>1166569Так, бля, подождите.Но всё ещё можно будет, например, обращаться к данным, лежащим по какому-либо заданному адресу?Я тонны свистелок пишу с инжектами и чтением памяти процесса.
>>1166689Это первоапрельская шутка.
>>1166167>Кошерный нуль, все так же.Оптимизации включи.
>>1166686Нет, а серьезно.Где корень проблемы?(так же стек кончится)
>>1166617откуда у тебя инфа такая? Тот же интел есть в Новгороде и Новосибирске еще, допустим.
>>1166694Ну и?
>>1166701Хочу получить не 0.
>>1166703https://wandbox.org/permlink/b1kdVnxA8flZnvdW
>>1166703А какая разница, что ты получаешь?UB перестаёт быть UB, если печатается 0?
>>1166705Не перестаёт.Меня тревожит это >>1166426
>>1166706>Меня тревожит Тебе в /psy/
>>1166707Ну что ты буйный такой, мне инересно, почему именно так происходит, и как на это можно повлиять.
>>1166708Потому.Никак.
Ага, всё понятно.
>>1166711Аддресс печатается модификатором p, а не x, довун
Хелп: >>1166679
>>11667131. Перемещаешь спрайт центром в начало координат2. Поворачиваешь вокруг начала координат3. Возвращаешь спрайт обратно где был
>>1166712Я знаю, я просто копипастил, в данном случае не имеет значения, всё и так наглядно и понятно, а довун здесь только твоя мать.
Блядь, как можно вектор инициализировать двумерным массивом строк? Что бы было примерно так:vector <string> Table = {{"один","два"},{"три","четыре"}};Попробовал вот так, но не работает:string s[2][2] = {{"один","два"},{"три","четыре"}}vector <string> Table(s,s+4);
Алсо, как указателю присвоить адрес в конструкторе?
>>1166717Без задней мысли.
>>1166718Да, действительно.
>>11667161.Создать класс с полем из двухмерного массива строк2.Написать конструктор3.Создать вектор4.?????5.PROFIT
>>1166716>Table(s,s+4)Table(&s[0][0],&s[0][0]+4)
Почему здесь у двух разных объектов один и тот же адрес? https://ideone.com/wVQs5IРазве в C++ это разрешено?
>>1166723стек фреймы разные
>>1166724Чо?
>>1166725стек фреймы
>>1166723Они же не существуют одновременно.Первого уже не существует, второй получил его адрес, чтоб данные не копировать.
>>1166727Ок
>>1166733Я это сам придумал кстати.
>>1166716https://ideone.com/d30cJF
В fstream есть функция peek(), которая возвращает следующий символ, если я сделаю peek() 3 раза подряд, то я возьму первые 3 символа по очереди, и если например у меня c=fin.peek(), то в с у меня будет третий символ из файла?И ещё вопрос, если я при открытии проверяют пуст ли файл, то есть делаю peek() и сравнивают результат с EOF, то как мне "вернуть счётчик на место, то есть чтобы я могу снова сделать peek() после условия и он вернул мне первый символ.Извините за тупой вопрос.
>>1166752http://www.cplusplus.com/reference/istream/istream/peek/ : Returns the next character in the input sequence, without extracting it>если я сделаю peek() 3 раза подряд, то я возьму первые 3 символа по очередиДовн, плес
>>1166755То есть с помощью peek() модно проверить только первый символ потока?И чтобы добраться до следующих нужно предыдущие из потока вынуть?
>>1166756Каким методом я могу вынимать символы из потока по одному? .get()?
>>1166752ПИК ПИК ПИК
>>1166699интел сворачивает деятельность потихоньку, новых проектов не начинает в россии, не расширяется.. тоже хотят уйтиразрабы в московском офисе майкрософт тупо сидят, ждут релокации, никакой разработки нет..
>>1157163 (OP)Поясните ньюфагу, с чем кроме указателей можно юзать std::memory_order_consume?
>>1166784http://eel.is/c++draft/basic.exec#def:carries_a_dependency
>>1166693Смею предположить, что компилер анализирует код и при вызове ф-и (main тоже какбэ ф-я) сразу выделяет стек под все объявленные в ней переменные. А дальше они просто создаются по порядку.Напичкали оптимизаторами - хуй разберешь, что и почему
>>1166768Ну ничего, будут писать на модула-2 прошивки для чебурнета на раутерах эльбрус-содружество.
Почему некоторые говорят, что rust или любой другой компилируемый язык лучше C++, потому что у него нет указателей и прямой работы с памятью? В каком месте это преимущество, если это фактически вырезанный функционал?
>>1166720вот хули этого нет по умолчанию? хули я это должен писать? >>1166721спасибо, конечно, анон, но как двумерный вектор это не работает. Получается просто одномерный вектор на основе двумерного массива строк.
>>1166972Хули нет кнопки "зделоть заебись"?
>>1166711>Ага, всё понятно. &b - 1 — UB
>>1166964Тому що управление памятью нужно для очень узкого круга задач. Для всего остального это только помеха и требует внимательного отношения к коду, чтобы не отстрелить себе ноги на простом массиве
>>1166972Ты хоть почитай как шаблоны работают. Нет у тебя стандартного класса для двумерного массива строк. String это массив символов, следственно vector <string> это контейнер для массива символов, но никак не для двумерного массива строк
>>1167026Ну и? Понятно, что есть подводные камни, но почему полный отказ от механизмов работы с памятью преподносят как что то охуенное?
>>1167034Потому что нахуй тебе управление памятью не нужно в 99%. Сборщик мусора очистит. Тебе нужно меньше думать над нюансами, больше над программой вцелом, меньше отлавливать косяков.
>>1167032ну а хули они не сделали поддержку многомерных массивов строк? Охулеи совсем там
Как поменять местами элементы в двух списках?
>>1167142Без задней мысли. https://ideone.com/hkHfb9
>>1167160Спасибо
Сильно уёбищно выглядит?template<typename... Ts>QJsonArray toJsonArray(Ts... params){ QJsonArray rv{}; ((rv.append(QJsonValue(std::forward<Ts>(params)))) , ...); return rv;}
>...>Huita();>...Такое вот создание rvalue-объекта тупо вызов конструктора, больше объект не нужен, поэтому rvalue и выполнение всего нужного в конструкторе норм практика?Как называется эта болезнь?
>>1167209Что мешает сделать функцию и там всё это выполнять? Или у тебя какой-то DI и без объектов не обойтись?
>>1167209Я ещё немного поясню. Используется именно класс, а не функция, потому что много всего приватными методами там внутри класса делается. И это запихано в конструктор. Нужно затем, чтобы всё связанное с объектом удалялось сразу после вызова.
> потому что много всего приватными методами и приватными переменнымиФикс.>>1167211>>1167212
>>1167212Можно вместо конструктора использовать статический метод (а конструктор сделать приватным и пустым и вызывать внутри статического метода) и в нём и выполнять всю хуйню.
>>1167216Я чет думал, что в статических методах можно выполнять только то, что не затрагивает нестатические данные. Спасибо, подходит.
>>1167218Статическому методу просто не передаётся неявно указатель this. Если ему передать явно ссылку на объект, то он вполне может изменять поля.
>>1167209>rvalue-объектаДовун, никаких rvalue или lvalue объектов не существует.Это классификация выражений. http://eel.is/c++draft/basic.lval#fig:categoriesПроследуй в ньюфаг-тред.
>>1167205Довун, forward используется с forwarding references, а у тебя их нет.Вернись в ньюфаг-тред.
>>1167269Таки да. Правда QJsonValue не принимает объекты по универсальной ссылке, так что толку от форвардинга и нетю
>>1167296>QJsonValue не принимает объекты по универсальной ссылке, так что толку от форвардинга и нетТ.е. всё по значению гонять?
>>1167297Примитивы по значению, всё остальное по ссылке.
>>1167298И откуда возьмутся ссылки вtemplate<typename... Ts>QJsonArray toJsonArray(Ts... params)?
>>1167299Ниоткуда. Лучше действительно сделаю простые ссылки. А то у меня там объекты такие маленькие, что копирование, что перемещение занимает одинаковое время и лучше старой доброй ссылки ничто не справится.
А правда, на цпп возможен веб?
>>1167587возможен, но лучше не надо))из последнего глядел на Wthttps://github.com/emweb/wtзаходил на офф. сайт этого фреймворка.https://www.webtoolkit.eu/wtИ что-то как-то не оч., у них постоянно делается по 50 запросов на favicon при скроллинге. ._.
Есть вопрос про Qt + shared_ptr. Вот допустим я сделал класс: https://pastebin.com/R0uwaGptЕсть одна лямбда, которая вызывается по сигналу. Нужно чтобы класс оставался живым пока лямбда не сработает и удалялся после выполнения лямбды если больше на него никто не ссылается.Лямбда захватывает shared_ptr на сам класс (чтобы он не удалился раньше времени). Однако возникает вопрос с удалением. Я сделал кастомный deleter для shared_ptr, который вызывает deleteLater (благодаря тому, что конструктор приватный, а получить объект можно через статический метод, который и определяет deleter, то проблем с удалением быть не должно). Таким образом в конце функции удаляется связь лямбды с объектом, что приводит к удалению лямбды, что приводит к удалению захваченного shared_ptr и тот если больше нет пользователей ставит объект в очередь на удаление.Будет ли это работать как я хочу?
>>1167587Смотря что считать вебом. Нынче идет всегда разделение на бэк и фронт - бэк ты можешь писать хоть на брейнфаке. У яндекса и амазона бэк на С++ весь, например.Фронт - ну какие то потуги с вебассембли есть, но я не в теме
>>1167587Если веб, который прямо хмтл генерирует, то неправда. Ну, так-то он и на машинных кодах возможен, но на практике пытаться не стоит.
>>1167720> У яндекса [...] бэк на С++ весь, например.Пруфы-то есть хоть? Все мои знакомые из яндекса автору, музыка, кинопоиск на джаве пишут.
>>1167722большой поиск, маркет, всякое инхаус говно для МЛ еще (catboost)Соус - знакомый тимлидит в маркете, сам собесился в маркет и поиск.
>>1167587Нет, спроси у чулочника, он свою борду в конце-концов с крестов на js перевел.
>>1167667>И что-то как-то не оч., у них постоянно делается по 50 запросов на favicon при скроллинге. ._.Проверил и проорал.
>>1167587и на ассемблере тоже
Имею я char массив с несколькими символами. Как я могу изменить ascii код каждого символа, например на 3?
>>1167923for(int i=0;i<sizeof(ar);i++) ar+=3;
>>1167926ar+=3;
>>1167927Блядь. Съедает квадратные скобки. ar(i)+=3;Вместо круглых квадратные скобки
>>1167929Почему получились сердечки и смайлики из юникода?
>>1167936Они вроде не из юникода а из ASCII.
>>1157163 (OP)Чет туплю, помогите плз. Считываю цифры вот так: while(cin >> val). Ясное дело, что если я введу не цифру, она останется в потоке cin. Как её оттуда выкинуть? Пробовал и cin.clear() и cin.get(). В конце есть функция, которая задерживает окно:inline void keep_window_open(){ cin.clear(); cout << "Please enter a character to exit\n"; char ch; cin >> ch; return;}Я так понял она съедает этот последний символ .
>>1167947clear не делает ничего с символами внутри потока, он лишь меняет флаг.
>>1167950https://ru.stackoverflow.com/questions/562229/
>>1167950Какой флаг?
>>1167953>Какой флагСостояние потока. http://en.cppreference.com/w/cpp/io/ios_base/iostate
>>1167947Ты, я так понял, по Принципам Страуструпа учишь? Потерпи до 10 главы, там по этой теме все достаточно подробно, чтобы понять.
>>1167956Да. Хорошо потерплю, но как мне ,блин, выкинуть этот символ из потока?
>>1167961http://en.cppreference.com/w/cpp/io/basic_istream/ignore
>>1167722>кинопоиск на джавегыыы
>>1167710надеюсь ты студентик еще или учишься и что этот код никогда не попадет в продакшен
>>1167926>>1167927>>1167929 а почему не for (auto &temp_govno: ar)temp_govno +=3;Зачем каждый раз набирать эту тривиальную хуйню с бегунком когда есть серийниый for?
Гайз, вопрос от ниразу не системщика. Можно каждый раз при загрузке программы переменные выгружать в случайные области выделенной памяти, чтобы старый офсет не работал, а таблицу с адресами держать где нибудь в табличке в лаунчере?
>>1168023> Можно каждый раз при загрузке программы переменные выгружать в случайные области выделенной памятиЕсли под выделенной памятью ты понимаешь виртуальную память процесса, то PE файл должен поддерживать релокации, и механизм ASLR должен сам распидорасить процесс. Переменные тогда объявляешь не в стеке, а через int* v = new int(10) вместо int v = 10;>а таблицу с адресами держать где нибудь в табличке в лаунчеренихуя не понял. лаунчер по твоему, это исполняемый файл, .exe? Теоретически можно, но это вообще ебануться тупая и самокомпрометирующая идея. Ты можешь по запуску программы уже после создания переменных в исполняемый файл хуярить адреса этих переменных, и потом их оттуда считывать. По другому, ящитаю, никак.
>>1168030Ах да, это всё применимо только про windows, про мир *nix мало чего знаю
>>1168030Просто мне интересен один момент про читы, они все работают по чтению/записи по определенному офсету, неужели нельзя сделать чтобы данные распидорашивало в кашу в памяти?
>>1168033>читы, они все работаютс чего ты взял?
>>1168034ну ок, 90%.
>>1168018Тому що раз такой вопрос, то уже просто от auto ньюфаг охуеет. Впрочем, может и стоит их гнать отсюда ссаными тряпками
>>1168041 у Липпмана авто с самого начала книги используется. Я сам новичок если чо.
Вопрос по Qt. Эксперементирую с файловыми потоками. Куда кидать файл чтобы консольное приложение его схавало прямо из редактора, когда я проект собираю. Прост лень каждый раз лезть в папку с скомпилированными екзешниками.консолечка запускает что то типа qtcreator_process_stub.exe
>>1168018Иногда, при дебаге, может понадобиться индекс элемента.
>>1168057На один уровень выше экзешника.Алсо, это настраивается в проекте.
>>1161672Бамп, помогите решить, уже все перепробовал.
>>1168139https://codeyarns.com/2015/08/05/how-to-set-link-directories-in-cmake/
>>1168144Так делал - все равно не находит.
>>1160913Какие глубокие мысли.А ещё процессор исполняет инструкции.
>>1157163 (OP)Здравия, можно ли писать так в плане понятливости или не стоит?cout << "Медианная температура: " << (((temps.size() % 2) == 0) ? (temps[temps.size() / 2] + temps[temps.size() / 2 - 1]) / 2 : temps[temps.size() / 2]) << "\n";
>>1168252понятливости кому?я бы так не писал - расписал бы в несколько строчек с ифами нормально. да и эта - вот поставь брикпоинт на случае когда в массиве нечетное количество элементов
Стоит ли заниматься на степике или codewars?
>>1168323Только как дополнение к основному курсу.
Можно ли как-то определить в коде средствами языка, что наследуемый класс ОБЯЗАН пероепределить виртальную функцию?
>>1168424override
>>1168424Да, называются pure virtual function.virtual void my_fun() = 0;
>>1168427Лол>>1168428Базовый класс не абстрактный.Чуть конкретней - есть visitable класс, нужно чтобы не забыли вставить свой accept для каждого класса добавляемого в иерархию.
>>1168432> Базовый класс не абстрактный.Тогда никак. И это не ограничение C++, в любых языках так. Что мешает сделать класс абстрактным?
>>1168433Хотя, вроде можно использовать CRTP и магию SFINAE для проверки во времени компиляции (но тогда базовый класс будет шаблоном, хотя и с дефолтным параметром на себя). Если интересует, могу написать.
>>1168402Это понятно, я имел в виду эту будет полезным в плане изучения чего-то нового или есть смысл только закреплять уже усвоенные знания?
Можно ли как-то сделать для метода значением по умолчанию поле класса, в котором этот метод находится?Т.к. если просто написать (= поле_класса) происходит ошибка (a nonstatic member reference must be relative to a specific object). Причём нет разницы где я ставлю значение по умолчанию, что в классе, где только прототип метода, что в другом файле, где находится реализация метода.
>>1168453Значение по умолчанию для аргумента метода, конечно. Это я имел в виду.
>>1168453Могу обойти это поставив нужное поле класса аргументом при вызове, т.к. этот метод я вызываю в другом методе этого же класса, но хотелось бы чтобы этот метод можно было вызвать с пустым списком параметров и он бы сам подхватил параметр по умолчанию.Кстати, если то-о может объяснить из-за чего эта ошибка возникает, буду благодарен.Т.к. метод не объявлен как статический, а всё что связано с этой ошибкой в поиске выдаёт только проблему именно со статическим методом
>>1168436Во, сделол: https://ideone.com/FPDCq0Шаблоны провекиtemplate <typename T, typename Base, typename = void_type<>>struct CheckFun: CheckHelper<T, Base> {}; template <typename T, typename Base>struct CheckFun<T, Base, void_type<typename std::enable_if<!std::is_same<decltype(&T::fun), decltype(&Base::fun)>::value, void>::type>> : std::true_type {};нужно определять для каждой функции, вместо CheckFun ставишь имя проверки (которое используешь в static_assert, а в &T::fun и &Base::fun вместо fun ставишь имя функции для проверки.
>>1168482Алсо, если функции перегружены, то придётся писать более сложный шаблон проверки.
>>1168453>Можно ли как-то сделать для метода значением по умолчанию поле класса, в котором этот метод находится?вместо значений по умолчанию используй перегрузку метода
>>1168432>Можно ли как-то определить в коде средствами языка, что наследуемый класс ОБЯЗАН пероепределить виртальную функцию?>Базовый класс не абстрактный.в будущих стантартах языка это можно будет делать средствами рефлексии или метаклассами, кстати
Итак, у меня есть A.cpp, A.hpp, B.cpp, B.hpp, main.cpp. В A.hpp у меня:>include B.hpp>class A{>B foo;}А в B.hpp>include A.hpp>A bar;Ошибки "syntax error: identifier A ... missing type specifier - int assumed".Перед телом класса в каждом hpp объявляю другой класс, вот так:A.hpp:>include "B.hpp">class B;>class A{>B foo;}B.hpp>include "A.hpp">class A;>class B{>A foo;}Теперь ошибка: "unresolved external symbol" и дальше название одного из методов этих классов. Что делать?
>>1168499Я и хотел сделать значение по умолчанию, чтобы не делать два одинаковых метода у которых разница будет лишь в названии поля с которым я работаю внутри этого метода, тогда я остановлюсь на варианте "буду вызывать функцию передавая ей тот параметр по умолчанию, который бы хотел использовать при вызове с пустым списком аргументов".Просто мне кажется иметь две по своей сути одинаковые функции это не очень.
>>1168037Лет 15 назад это было так, ну и на 32-битных машинах.
>>1168521Советую во всех header-файлах использовать директивы препроцессора, которые проверяют не подключен ли уже заголовок или pragma once или ifndef
>>1168533А у меня так и есть, кстати. #ifndef HEADER_NAME #define HEADER_NAME ... #endif. Не помогает.
>>1168521Скинь архивом на почту.
>>1168546Давай почту.
>>1168564u0atgkirzny5@mail.ru
>>1168564Добавьclass Connect4Game;в Connect4View.hppИ заинклудь Connect4Game.hpp в Connect4View.cpp
Эти функции должно убирать из строки все буквы или цифры, но цифры убираются только если они в конце, а буквы - если цифры только в начале. ЧЯДНТ?
>>1168564Я указал в своем посте. >>1168546
>>1168579s.erase(std::remove_if(begin(s), end(s), std::isdigit), end(s));
>>1168579isdigit возвращает bool, попробуй сравнивать напрямую с true/false.
>>1168574Чаю тебе! Все работает.Послушай, как ты до этого додумался? В смысле, как правильно инклудить и объявлять, чтобы в итоге и переопределение класса не вызвало ошибки, мол метод отсутствует, и инклуды по-человечески сработали?
>>1168574Это он знатно обосрался.
>>1167710Просто эмить сигнал из своего класса, чтобы твой объект удалялся тем же тем же объектом, который его и создавал. Тебе ж это дерьмо отлаживать, а как это делать, если он у тебя есть сущность, которая висит где-то в астрале?
>>1168608>Послушай, как ты до этого додумался?Нужен указатель на класс — делаешь forward declaration.Нужно определение класса — инклудишь хедер с определением.В первом случае можно тоже инклудить хедер в хедер, я не сторонник пуризма в стиле "в хедерах можно только форвард-объявления, если не нужно определение класса", но в твоём случае это не работало из-за циклических инклудов.
>>1168633Проблема в том, что я хочу, чтобы объект не удалялся, пока не выполнится лямбда. Т.е. сама лямбда должна стать родителем (точнее одним из родителей) объекта. Мне нужна возможность выполнять код видаauto newTask = task->map<Foo>([] { ... });при этом сам task больше нигде не используется и после выполнения функции `map` может быть удалён.
>>1168637Мне когда нужен указатель на класс я делаю отдельный хедер с объявлением и using'ом указателя, а потом этот хедер подключаю там, где нужно. В этом хедере описаны все указатели на классы, которые используются в проекте.
>>1168654А если в итоге объявление класса в этом хедере перекрывает определение в хедере класса (не понимаю почему это происходит, но ошибки вида unresolved symbol <метод класса> откуда-то ведь берутся)?
>>1168667Ну такого обычно не бывает. Если нормально спроектировать задачу.
>>1168564nomad@ag.ru
Есть функция, вызываемая в конструкторе класса, которая выделяет память вложенным new и присваивает результат полю класса - char@@.Если ее сигнатура выглядит так:void foo(char@@ arr, int size...то в теле функции все работает как надо, а по выходу оказывается что соответствующее поле класса не изменилось. Я знаю что в плюсах параметры могут передаваться по ссылке, по значению, блаблабла, но всё же нихуя не понимаю что произошло. Исправил char@@ на char@@& - все работает нормально, исправил char@@ на char@@@ и добавил пару жутко выглядящих разыменований в теле функции - тоже всё работает нормально, но как это по-человечески сделать?
Есть классы Base и Derived, причем:class Base;#include "Base.hpp"class Derived : public Base { ... }При попытке собрать в студии 15 ошибка "Base class undefined".
Ладно, сейчас перекачу и задам по новой свои вопросы.
ПЕРЕКОТhttps://2ch.hk/pr/res/1169708.htmlhttps://2ch.hk/pr/res/1169708.htmlhttps://2ch.hk/pr/res/1169708.htmlhttps://2ch.hk/pr/res/1169708.html
>>1162319Не слушай скриптоблядков с их Node.js и электронами на десктопе, это моветон когда ебаный гуй жрет пол гига памяти.Лучшее что придумали из GUI на шиндошс - WPF, плюс между C++ и C# оче легкий интероп. На прыщях гуев нет, только Qt и динамическая скриптодрисня вышеупомянутая.Но не советую шквариться об нее.
>>1165181написал на буржуйском "open notepad c++"