Вместо шапки - https://github.com/sosachbot/cppthreadhat/wikiОтветы на все вопросы - http://en.cppreference.com/w/ http://www.cplusplus.com/reference/Прошлый >>1336773 (OP)
>>1342454Около-виртуализацию пишем самопальную, Виндовс 10\2016, Вижуал студия самая последняя, Виндовс драйвер кит, решарпер\всякие разные ништяки по желанию. С++17 разрешен и активно используется.Из внешних зависимостей только какая-то говнолиба для парсинга жсонов
>>1342482>Тред уже был, хоть и кривойДебил, тот тред создан задолго до бамплимита и ссылку на него как на перекат вбросили по-приколу.
Посоны, у меня при дебаге выбивает исключение RPC Server is unavaible. Что делать? Пробовал гуглить, включать службу в брандмауэре Windows, но что то не помогло нихуя.Код должен открывать файл и читать оттуда.
Пиздец просто. Сап, студент на связи. Преподы нам вообще нихуя не обьяснили, а из статеек в инете я нихуя понять не смог. Ну вот обьявил массив этих ебучих указателей, записал туда ссылки вроде как на строки, но блядь по делу-то там оказываются только первые элементы строк. Обьясните как это сделать умоляю, я уже два часа ебусь и никак не понимаю принцип работы этой хуйни
>>1343022Мне это надо реализовать через указатели на строки блядь, нахуй мне эта функция? Лишь бы сказать чего
Ладно, сформулирую вопрос иначе. Как мне получить указатель на, скажем, вторую строку массива, ибо когда я делаю так как я это понимаю, я получаю указатель на первый элемент строки.
>>1343050char a[N][M] это сишный массив из N строк, максимального размера M.a[0] - первая строкаa[1] - вторая строкаСравнение - strcmp(a[0], a[1]).В чем твоя проблема?
>>1343053Мне УКАЗАТЕЛЯМИ, УКАЗАТЕЛЯМИ НАХУЙ нужно это делать, а не готовой функцией, ну еб твою матьПро то, по какому принципу сравнивается целиком вся строка, я даже спрашивать не хочу
ТАК СТОП. ЕСЛИ Я ПРАВИЛЬНО ПОНЯЛ, ТО УКАЗАТЕЛЕМ НА СТРОКУ КАК БЫ ЯВЛЯЕТСЯ a[0]? Т.е. это и есть указатель? И мне нужно ебаться с этими непонятными звездочками? Я уже окончательно запутался
>>1343059ну это твоя главная проблема, додик. Ты вообще не знаешь С. Иди почитай, что такое указатели, что такое сишные строки.
>>1343059Это первый элемент, указатель это a, a[0] то же самое, что *(a+0), то есть a.http://faqs.org.ru/progr/c_cpp/cfaqrus.htmНадо в шапку добавить
>>1343006Похоже, что в задаче строками называют не C-строки, a row двумерного массива. Тип элемента не обязан быть char.>сортировку ... по ... последнего столбца массиваЧтобы эта хуйня имела смысол, необходимо чтобы каждая строчка имела одинаковую длину.
>>1343006>Поступил в вуз на ит>Надеется, что люди с зп 10к знают программирование и продолжают работать учителями
Помогите, как в интовый массив вместо нуля добавить пробелfor (int i = 0; i < arraySize; i++) { for (int j = 0; j < arraySize; j++) { if (elements[j]==0) { elements[j]=(char)" "; } cout << " " << elements[j]; } cout << endl << endl; }не работает, стринг не шарю
>>1343127"abc" - указатель на строку. Ты должен добавить символ-пробел, а не строку, первый символ которой пробел, а символ обозначается одинарными кавычками.
>>1343130на двач так скопировалось, это не кейсдаже если правильно писать пробел заменяется на интовый номер таблицы аскри
>>1343127Можешь попробовать сохранить код пробела и потом постоянно преобразовывать его в чар или перегрузить оператор индексации массива, чтобы там меняло код на символ.
Вопрос про Qt и Excel. Нашел стопицот примеров кода с открытием книги с диска, но ни одного примера к подключением к УЖЕ ОТКРЫТОМУ документу. я об этом:XL = new QAxObject("Excel.Application", this);
Есть у класса поле с массивом указателей (указателем на указатель), вроде перегрузил индекс для класса, чтоб возвращал указатель, но приравнивание для него не работает т. к. не lvalue.Мб я как даун перегрузил? Ну естественно да.
Сап, нашёл книгу Qt 5.10. Профессиональное программирование на C++, у меня знания уровня основных понятий, ну тоесть функции, структуры, до ооп на плюсах дошёл, и на жабу перешёл так как EPAM через пол года на треннинги пытаться. Так вот, эта книга с моими знаниями будет слишком непонятной, или можно читать?
>>1343583Если планируешь на жаве, то кют будет бесполезен. Это по сути фреймворк уровня дотнета, построенный на расширении крестов, с метапрограммированием, рефлексией и системой общения объектов, не свойственной стандартному ооп. Плюс новый реактивно-декларативный интерфейс.
>>1343652я понимаю, но некст 2 семестра qt на плюсах, поэтому хочу не хочу, прийдётся освоить, книгу с моими знаниями стоит читать, или что то ещё подучить?
>>1343583И что, норм книга? Смотрел отрывки в гугле, показалось, что те же самые экзамплы с сайта куть.
>>1343697я не ебу, посмотрел шо кьют 16 гб весит в лучшем случае, скину с 100 мбит интернета в общаге, с понедельника начну читать, если смогу себе позволить сразу её, а пока шо узнал что такое классы и что их в идее надо по разным вкладкам ебашить, КАКАЯ ТО НЕАДЕКВАТНАЯ ХУЙНЯ.
>>1343583то всё таки стоит читать, по ходу можно выучить всё недостающее, или стоит что то отдельно до чтения знать?
>>1343705Пиздец ты деловой.Возьми да попробуй почитать неделю-две. Ты что, блядь, 300 кк/наносек зарабатываешь, что так свое время ценишь?
>>1343671Читай, никаких запредельных фич языка там в основе не требуется. Я его вообще по хелпу в основном изучал, он там хороший и с примерами, кроме может только последних тестовых дополнений.
Есть ли вообще какие-то применения таким вещам как "Указатели" или "ссылки". Не понимаю, зачем вообще они нужны, если можно использовать обычные переменные, к чему всё усложнять?
>>1343893Прата проще, показывает как можно писать нехитрые программки на c++. Это скорее книга для полного снуля, чтоб вкатиться в для первого знакомства с программированием. Сам язык описывается довольно поверхностно. Простые внятные задачки + есть ответы на контрольные вопросы (но не решения задач).Липпман сложнее. Упор делается именно на описание языка и STL, а не на программирование как таковое. Задачки часто абстрактного характера и завязаны на ранее написанные классы, почти всегда с невнятной логикой. Перевод у обеих книжек ужасный + сделан с первых выпусков, до исправления оригинальных опечаток во всяком случае это касается тех экземпляров, что можно скочать бесплатно без смс.
Посоветуйте литературу для изучения low-level системного программирования на С++/C. С меня фотки арбузов.
>>1344061Лоу-левел системное программирование к языку мало отношения имеет.Ебашишь либо какой-нить референс красноглазого апи, либо богоподобный МСДН. И все.
>>1344089что тебе надо, то и делай?Я выучил системное программирование на уберхардкорном уровне когда меня взяли работать системным программистом. Без этого - хуй бы что получилось имхо
>>1344102А вот, что от тебя требовали на этой работе на приеме, какие навыки, какой стэк(LIFO)? Вообще, в основном под какую платформу системные программисты более востребованы, или требуется иметь познания и на шиндовс и на юникс?
Подскажите, пожалуйста, библиотеки для работы с графикой без всяких окон и множества ненужных сущностей на линукс
>>1344151Оверолл больше нужны красноглазые полудурки, мне же повезло найти нормальную работу с нормальной ОС. Требовали очень сильный С++, ну и если есть кернел-опыт то сразу 10 из 10 (мне повезло, писал драйвер на удаленке очень убогий).
>>1343139а если в массиве изначально были элементы, которые совпадают с кодом пробела? Тогда при выводе они будут заменяться на пробел
>>1343139>перегрузить оператор индексации массива, чтобы там меняло код на символ.Какой же ты говноед
>>1343127Мне кажется, если ты объяснишь, что, а не как, пытаешься сделать, советы будут гораздо лучше.
>>1344209Хуйня, я как-то реализовал интереса ради индексацию массивов а-ля паскаль [x, y], благо кресты даже такие извращения позволяют. Кро
На чем можно максимально быстро и просто (в стиле "Си с классами") сделать оконное приложение для Винды? Логика программы на Си есть, надо к ней интерфейс сделать. Желательно с поддержкой от XP и до бесконечности.
>>1344224Qt уж только, если С++. Или wxWidgets, но я за них не шарю.А вообще...:-Java Swing-C# (WinFoms, WPF)-Tk (python и прочее)-С (gtk)Это не ты в ситреде спрашивал аналогичный вопрос?Вообще, если нужна поддержка ХР можешь на винапи насвинячить.
>>1344224QT, там и примеров дохуя, выбираешь один из видов проектов и появляется окно готовое, все бля
Аноны, начинаю вкатываться, объясните ньюфагу, если у нас два объекта класса А и у обоих есть методы foo(), адреса этих методов будут одинаковыми?
>>1344224>. Желательно с поддержкой от XP и до бесконечностиQt, самая поздняя 5.6.3 (официально 5.6.1) , дальше не поддерживает ХР
>>1344209Перегружаю все операторы в том числе и new с (), твои контрагрументы? А вообще мой вариант с перегрузкой оператора индексации охуенен.
>>1343006Строка это массив символов. То есть массив char. Ссылка на строку то есть на массив символов указывает на первый элемент этого массива, то есть на первый символ этого массива.
>>1343703Двачую. Я вообще ахуел с этой параши. Лучше буду на винапи формочки клепать чем обмазываться 100гб-фреймворком.
>>1344224WPF с C#. Либо делаешь обёртки над внешним интерфейсом в C++/CLI и используешь их прямо в шарповом коде, либо оборачиваешь внешний интерфейс в extern "C" и используешь P/Invoke из шарпов.
>>1344216Расскажи как ты это сделал (если x и y - инты)? Перегружать оператор индексации можно только с одним аргументом, а оператор запятой только для классов.
>>1344333P/Invoke позволяет вызвать обычные сишные методы из обычной динамической библиотеки. Скажем, у тебя есть метод double foo(char , int) в bar.dll, который ты хочешь вызвать из кода в шарпах (ну или любого языка на CLR). Для этого нужно просто написать https://pastebin.com/EwEJvFYD . Сам не пробовал, но говорят, что работает даже под Xamarin.Шарпы позволяют довольно хорошо интеропиться с этим делом, есть плюшки типа автоматических конвертеров (string в char, если стоит в атрибуте CharSet.Ansi или wchar*, если CharSet.Unicode), точное указание того, как передавать структуры с помощью MarshalAs (можно даже указатели на функции/делегаты возвращать и передавать) и прочее. Там много подводных камней, правда, которые я так на ходу не вспомню (некоторые передаваемые объекты нужно удерживать с помощью GC.KeepAlive, передача COM объектов как-то странно устроена и другое).
>>1344224RAD Studio C++ BuilderОстальных петухов не слушай, с вышеуказанным ничто не сравнится и близко как по удобству разработки, так и по скорости готового приложения. Билдер делает нативные GUI приложения винды и нативный же бинарный исполняемый код.
Аноны,вкатился на двачи спустя 2 года вылезаторства.С СИРИОЗНОЙ проблемой,собсно сабж - есть файл.тхт,в нём строки формата первая строка-"2ch_uje_neTOT Вот так вот " вторая строки- "SPASIBO_ABU axaxa kek lol" собственно вопрос как считать только 1 слово из строки(т.е. 2ch_uje_neTOT,SPASIBO_ABU) и перейти ко второй строке,желательно используя string а не char ?getline считывает всю строку,а >> все слова из строки и не переносится в низ после первого
>>1344420ifstream infile("файл.txt"); string line; while (getline(infile, line)) { string word = line.substr(0,line.find_first_of(" ")); // }
Мужики, может кто-то объяснить, что делает программистт с++ в условной конторе 5 дней в неделю? я типа понимаю айтишники там принтеры чинят и по тикетам работают, но программисты то что делают там, если контора обычная, а не по разработке ПО?типа как они на хлеб зарабатывают если не фрилансят а сидят вв конторах обычныхязыки с++ с# mysql
>>1342454Серверную часть для видео/аудио вещаний. Конкретно сейчас работаю над SFU. Стек: C++17, немного легаси из Boost и C++14.Dev окружение: ArchLinux, Emacs
>>1344306Спасибо конечно большое, но мне уже обьяснили, что препод обозвал строкой не строку, а row двумерного массива
Мне 15 учу плюсы и решаю всякие задачки, но никогда не делал ничего серьезного или хоть сколько полезного, такого что бы не так - написал удалил - а Шоб друзьям не стыдно было показать)))) Дайте совет, плез, что написать или к чему стремиться.
>>1344551Сам когда-то давно ради фана сделал: визуализатор множества Мандельброта. В принципе ничего очень сложного в этом нет, зато красивая картинка и навыки создания интерфейсовПродвинутая версия: многопоточность. Чуть более продвинутая: оптимизировать на SSE
Котоны, мне нравится Си++, но не нравится СТЛ изза уёбищности интерфейса и тормозной конпелляции.Как думаете, написать свой СТЛ полностью с нуля сложно вообще?
>>1344551Напиши двухсвязный список с использованием SSE2/AVX или чего-то подобного. Сравни скорость работы с традиционной реализацией и сообщи результаты.
>>1345059Ну, если ты правда его напишешь - то получишь +много к скиллу. Но, с вероятностью в 99.9% ты даже простецкий вектор напишешь вкривь и вкось и забьешь.
>>1345094https://stackoverflow.com/questions/38236771/do-i-need-to-use-closehandle-after-creating-a-new-process/38236860tl;dr Он это зомби-процесс, закрывай.
>>1345117>>1345128Согласен что вектор будет коварнее списков, но попроще чем дерево или хэш таблица.Окей, если всё-таки получится, вдобавок к скилу прибавку бабла можно получить, как думаете?
>>1345141Все зависит от твоего умения себя подать.Вектор коварнее списков? Это же просто динамический манямасив, это проще чем списки даже.
Я определил алиас битсета, чтобы вмещалось ровно столько битов, сколько содержится в объекте. Выглядит примерно так:template <typename T>using Bits = std::bitset<sizeof(T) * 8>;Как мне при помощи шаблонной магии сделать так, чтобы не нужно было каждый раз явно указывать тип класса, с котором я его вызываю?Например писать не Bits<int>(12345), а Bits(12345)?
>>1345141Какое бабло лол. СТЛ признан сообществом и долгое время используется, никто не будет отказываться от него в пользу твоей библиотеки, потому-что его писали люди с опытом программирования больше твоего срока жизни. Если ты ничего революционного не напишешь, а просто копию кривую СТЛ то можешь себе оставить ее. Но твои проекты станут непереносимыми, а читать их другим людям без знания твоей библиотеки будет невозможно. Но как выше анон сказал - скилл подтянешь
>>1345184>Как аллоцировать память, чтобы вставка была O(1)?помогает короткая, но искренняя молитва перед самим актом аллокации!
>>1345184Нет, ну допустим вектор это динамический массив. Вот выделил ты вначале памяти на 100 элементов и твой пушбек представляет из себя вставку на позицию после последнего. Когда массив закончится, как ты сделаешь очередную вставку?
>>1345218Аллокация в k раз больше памяти, перемещение содержимого вектора. В целом, очень даже О(1). Реаллокаций будет log(k)(N) штук, то есть мало.
>>1345156CreateThread это WINAPI_beginthread - это похоже на обертку некоей стандартной библиотеки для С от микрософта.>>1345141Прибавка бабла тут только косвенная от получаемых скиллов.>>1345147Абсолютно точно, можно сделать helper функцию, которая будет из аргумента за тебя выводить тип для битсета и конструировать его, аля auto zalupa = make_bit_set(1488).Чистыми шаблонами скорее всего не выйдет, т.к. у битсета нет нужных конструкторов. Хотя могу быть не прав.>>1345224мув конструктор для всех твоих кастомных типов должен быть noexcept, иначе ломается много гарантий для стандартной библиотеки.
здоровая когда в пайтоне пайинсталлером собираю свою сранину в экзему, то могу указать --onefile чтобы не было всякой требухи дополнительной.как скомпилировать свои хеловорлды с++ так, чтобы они запускались на других компах, без вываливания ошибок про отсутствующую длл? че, поменять "дебаг-режим" сборки на "релиз"?как вообще внутрь exe поместить нужные либы, ну или хотя бы от ошибок избавиться подобных, мол "crt хуйни нет на компе"?
>>1345365собираю в g++ он потом mingw.dll требует. собираю в "высрал студио" -- требует crt_что-то.dll, при сборке сраного хеловорлда
>>1345356https://helloacm.com/how-to-static-link-vc-runtime-in-visual-c/В случае студии, в других вариантах гугли "Статическая линковка рантайма" или чето в таком духе>>1345365В этом была изначальная идея библиотек - переиспользовать их в разном софте, идея на бумаге была неплохая, в реале увы, не сложилось даже у красноглазой питухос
>>1345388>отлично, спасибо! Если соберешься Qt статически собирать, сразу купи антипригарный коврик под жопу.
>>1343700Ну хуй знает, мне этого за глаза хватает. Но я 3д не делаю, конечно.Приложение в итоге с DLL весит около 20мегабайт.
>>1345692gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10)отлично пропускает, только >>1345585 вот этот вариант
>>1345817Формально для size_t нужен сишный хедер <stddef.h>, а для std::size_t <cstddef>, но у меня все эти типы без хедеров нормально подхватываются и я использую вариант без std, так как так удобнее.
>>1345884А если я везде использовал просто size_t, но в каком-то месте оно попало под using namespace std, ничего криминального не произойдет? Они всегда эквивалентны в рамках одной платформы?
>>1345721template<typename T>using IDENTIFIER<T> = бла-бла-бла;это синтаксически некорректно, в alias-declaration может быть только идентификатор, угловые скобки после него недопустимы. https://timsong-cpp.github.io/cppwp/n4659/dcl.dcl#nt:alias-declarationНо почему-то на пике в >>1345541 написано только, что "идентификатор не определён", а сам кривой шаблонный alias-declaration не подчёркнут.
>>1345906Заюзай костыль с си, создай прешку в старом стиле только для объекта, попавшего в юн, или как выше сказали вызови сишный хедер. Ещё вариант спиздить функцию из сишного хедера и под другим названием переписать в хедере, превращая с помощью стракта или прешки в сайзт, но это костыль уровня обхода студенческого антиплагиата
>>1345817>size_t и std::size_t>>В чем разница-то? Можно их считать всегда взаимозаменяемыми? Стандарт говорит так: если какая-то хрень "из C" (точнее, из C++-ного хедера, представляющего C-хедер) доступна без `std::`, то эта хрень должна быть полностью эквивалентна хрени с `std::`.Но стандарт не обязывает, чтобы хрень без `std::` вообще была.
>>1345933Не нужно знать. Древние программисты таким образом добавляли в программы защиту от тупости своей/железа
>>1345933Прешка — прекомпилятор, препроцессор. Такая штука которая перед компиляцией или объектизацией собирает весь текст всеех файлов в твоих прогах и начинает переводить его в язык более понятный компилятору, но в отличии от компилятора не будет пытаться исполнить хуйнюя если не знает что она значит и обрабатывает макросы, собирает функции из библиотек. Например можешь функцию в хедере создать и вызвать ее указателем из него, и при компиляции препроцессор заберёт эту функцию из хедера, не смотря на то что в программе она не объявлена. Если юзаешь стандартные библиотеки, с помощью прешки можешь переделать свой код в си99 формат, короче важая вещь, чем бы ты на сипипи не занимался, ознакомься
>>1346132Кстати, вот касательно этого.Есть же в 17 стандарте свёртка, которая умеет выполнять нужную команду над переданными через запятую аргументами, а не над initializer_list.И, чисто в теории, можно же собрать строку с именами аргументов, которую потом пихнуть в макрос, вызывающий эту свертку. Насколько это пиздец?Не то чтобы я прям могу придумать, как это применять, но, например, в pl/sql такое используется часто - собирается динамически строка с запросом/анонимным блоком и отдаётся на выполнение серверу. Интересно, реализуемо ли это в плюсах и вообще может ли быть смысл?Хотя можно не ебать мозг и работать с initializer_list, конечно.
>>1346140>Есть же в 17 стандарте свёртка, которая умеет выполнять нужную команду над переданными через запятую аргументамиТроеточие вроде еще в C++11 добавили.>можно же собрать строку с именами аргументов, которую потом пихнуть в макрос, вызывающий эту свертку.А смысл? Это же во время компиляции все выполняется, со статическими строками. То есть без разницы со строками ты работаешь, или прямо с аргументами. Строки только добавляют лишний гемморой.
>>1346140Не очень понял что ты имеешь в виду, но судя по всему это возможно реализовать ещё чуть ли не в 89-ом стандарте си через стракты, значит и стд плюса для этого будет достаточно. Эскперементируй, что не получится — приноси код.
>>1346141Я просто встретил троеточие со сверткой непосредственно у Галовица в C++17 STL, вот и проверил, что только в этом стандарте появилось.>Во время компиляции ... со статическими строкамиА, то есть такой во время работы программы это уже не так будет работать?>>1346142Хотел метапрограммирование через жопу - формировать код во время выполнения программы и исполнять его в той же проге, но без шаблонной магии. Не ради профита, а понять, можно ли так.Но за наводку спасибо, покурю сегодня.
>>1346132>Прешка — прекомпилятор, препроцессорЗа много лет ни разу не слышал такого сокращенияМимопроходил
Сап, плюсаны! Как сделать в QT так, чтобы при открытии окна сохранения через getSaveFileName(прикреплейтед1) в окне можно было выбрать конкретное расширение, а не как на пик2?
>>1346192>формировать код во время выполнения программыА вот хуй, это тебе не пхп. Единственный способ запустить код на цпп, это его скомпилировать. Если ты наркоман, можешь сгенеренный код передать в какой-нибудь компилятор, заранее подключенный в виде библиотеки (хз бывает ли такое вообще). Потом полученную dll в той же программе динамически подключить и запускать.Алсо, есть интерпретаторы (!) для С, которые позволяют говнокодить на нем в лучших традиция джаваскрипта. Насчет интерпретаторов Спп: не уверен, что нашелся поехавший, реализовавший эту идею. Но если они существуют, я хочу это чудо увидеть.
>>1346468Можно наследоваться от QFileDialog, и написать обработчик сигнала filterSelected, который вызывается каждый раз, когда юзер выбирает элемент комбобокса. Запоминать тип, выбранный в комбобоксе, затем при закрытии диалога вручную дописывать его к имени файла.Вероятно, существуют более красивые решения.
Сап, анон. Брату в шарагу нужно написать на плюсах программу сортировки пузырьком одномерного массива, который вводится с клавиатуры и имеет 5 элементов. Сам я веб-макака и с плюсами не знаком, можешь накидать код, пожалуйста? Делов на 2 минуты, а я благодарен тебе буду очень.
памагити псевдодвумерный динамический массив с элементами целочисленного типа. Сначала память отводится под адреса строк, потом в цикле под строки.Размеры массива вводятся с консоли.Массив заполняется случайным образом.После заполнения массива находится та характеристика (max, min), по которой нужно отсортировать строки массива.Выводится массив в виде матрицы с выводом справа найденной характеристики.Массив упорядочивается и снова выводится таким же образом.Переставляются два столбца согласно варианту задания и снова выводится массив.Строки массива упорядочить по убыванию минимума в строке. Поменять местами 2 столбца, чтобы минимальный элемент для всей матрицы оказался в нижнем левом углу.
>>1346715vector<int> g[MAXN]; //массивbool used[MAXN];vector<int> ans; //ответ void dfs (int v) { used[v] = true; for (size_t i=0; i<g[v].size(); ++i) { int to = g[v]; if (!used[to]) dfs (to); } ans.push_back (v);} void puzyryok_sort() { for (int i=0; i<n; ++i) used = false; ans.clear(); for (int i=0; i<n; ++i) if (!used) dfs (i); reverse (ans.begin(), ans.end());}Не благодари
Добрый вечер.Можете вкратце но аргументированно объяснить почему программист на c# или backend зарабатывает в среднем больше, чем на c++?Спасибо.
>>1346963Зарплата программиста зависит от места работы, а не от технологии.В среднем вебмакакоконторы богаче, чем НИИ имени подзалупина, которая за 40к в месяц требует 10 лет крестов. Однако это все средняя температура по больнице, которая вообще ничего не показывает.
>>1346963вопрос не в том, а в том что сможешь ли ты открыть, к примеру, александреску "современное проектирование на с++" и понять хотя бы часть написанного, а потом еще понять что за последние 20 лет еще на порядок больше в языке нахуевертиливопрос не в зарплате, а в уровне твоего сумашествия
>>1346963>ои вообще это хуевое сравнение, тк ситуация с сишарпом в россии (и на постсовке) еще хуже чем с крестами
>>1346963Потому что спрос на программистов C# выше, чем на программистов C++. Backend - это вообще не технология, а часть продукта, которая может написана теоретически на любом языке, а практически - С++ для этого не подходит. Короче говоря, потому что С# более отвечает потребностям сегодняшнего дня.
>>1345817Возможно я ошибаюсь, но по моему если ты в самом начале кода, после включения библиотеки напишешь - using namespace std; то std в дальнейшем не надо указывать, но я только вкатываюсь, может херню несу
>>1347013> ситуация с сишарпом в россии Да кого ебет рашка, я например наугад открыл вакансии в Торонто.Постсовок блядь.
>>1346989>Зарплата программиста зависит от места работы, а не от технологии.Пригорает от попугаев, повторяющих фразы, не понимая смысла. А технология и место работы не взаимозависимы?Мудак блядь.
Сегодня я охуел от copy elision. Ебучие плюсы, сколько же в них подводных камней. А как прошёл ваш день?
>>1343006Ну тип например 5 столбцов, берёшь по строкам проходишься, сравниваешь и меняешь. int^^ array;// заполненный массивfor(size_t i = 0; i < n; ++i){for(size_t j = i; j< n; ++j){if(array[n] > array[j][n])swap(array, array[j])}}
>>1347065>if(array[n] > array[j][n])>swap(array, array[j])if(array[n - 1] < array[n - 1][j])swap(array, array[j])
>>1346963В новое охотнее вкладываются, а в хайповую тему особенно. Вот и все.Это касается любого бизнеса. В айти просто новое чаще появляется.
>>1347037нет, баба-дауниха, не зависимы. Кто-то ебет говно на С++, писанное дедами, кто-то работает в Нвидии на х5 зарплату от этого. Технологии схожи. А иногда, одинаковы.
>>1347015>а практически - С++ для этого не подходитРасскажи это яндексу, гуглу, фейсбуку или амазону.
>>1346963Просто С++ преподают в вузах вот и выкатываются от туда либо вебмакаки, которые хуже червя-пидора, либо говнокодеры на С++, которые пишут всё в одном файле на стандарте прошлого века, не чистят память и вообще не моются. Обычный С++ программист зарабатывает больше С# кодера, но и ебется с самим кодом больше.
>>1347157> которые пишут всё в одном файле на стандарте прошлого века, не чистят память и вообще Больше легаси, больше багов, больше работы вкатывальщикам с двощей. Охуенно жи.
>>1347139У них хайлоад, нужна максимальная производительность и отказоусточивость, поэтому все на нативе написано.
Анон, два вопроса. Первый - откдуа взять документацию? С удивлением для себя обнаружил, что её продают через официальные магазины ISO/ANSI. Второй - как получить доступ к микрофону/разъёму-микрофон на звуковой карте?
>>1346468>>1346678Пасаны я деб, все поправил. Забыл точки в фильтре у расширений, теперь все сохраняется как надо
Сап. Какими знаниями нужно обладать чтобы начать изучение qt, я пока что стою на пороге наследования и полиформизма, нужно продвинуться дальше, или по ходу можно будет изучить?
>>1342442 (OP)сап анонам. Учусть в университете. Тут хуй знает как объясняют. Как лучше самому учить. Видео или литература, или что-то еще?
>>1347741Видео, литература, интернет, желание и труд. Только большую часть местных советов не забывай скипать
Анон, поясни в чем разница g(a, b) и g(&a, &b). Я понимаю, что в первом случае надо передавать как &a, &b, а во втором как a, b. Но все же какая между этими функциями фундаментальная разница?
>>1347794Фундаментальная разница в том, что указатели (которые *) могут быть нулевыми и к ним можно применять адресную арифметику, а ссылки (которые &) нулевыми быть не могут, и адресную арифметику к ним применять нельзя.Хорошим тоном считается использовать только константные ссылки, а если тебе нужно менять значения, то использовать указатели, так программисту понятно, что если он пишет g(&a, &b), то a и b могут поменяться. В случае же неконстантных ссылок у тебя функция g(a,b) может ВНЕЗАПНО поменять a или b, что не очень красиво.
>>1347809Ну типа пишешь перед каждой переменной const, дальше само пойдет, особенно когда захочешь написать цикл.
Правильно ли я понимаю, что начать углубленное изучение ЯПа нужно с заучивания английского языка? На русском очень мало контента, книги переведены женщинами, которые вообще ничего не знают о программировании и допускают кучу смысловых и логических ошибок, статей мало. Особенно интересует системное программирование, ассемблер, прочее байтоебство, хайлоад, производительность итд. Дискасс.
>>1347836>>1347836че? именно по языку с++ основные книги переведены - старуструп, саттер, джосаттис, александреску, мейерс...на английском тебе придется читать когда будешь специализироваться в чем-то, да и то не фактк примеру, если будешь крипту делать, то придется почитывать уже статейки на английском..а изучать язык можно спокойно по книжкам что переведены
>>1347836Английский, конечно, нужен, но это не первостепенная задача для тебя.>>1347821Там же императивный стиль. Или ты угараешь?>>1347809А в чем проблема писать в функциональном стиле, зная саму ФП парадигму? Все возможности (почти) для этого тут есть, особенно, в С++17.>>1347794Во втором случае:1) Нельзя в адресную арифметику и вообще как-то менять ссылку.2) Не нужно разыменовывать.3) Не может быть нулевой.>>1347673Да начни просто делать и все.>>1347221>как получить доступ к микрофону/разъёму-микрофонWindows API. Или в юниксах надо на /dev/залупа обращаться.
А поясните за виртуальный деструктор.Понятно примерно с чем он борется и как его использовать.Не понятно, как он вообще вписывается в механизм виртуальных функций?Ведь виртуальная функция во всех производных классах должна иметь такое же имя, как в базовом. Но в производном классе деструктор всегда будет иметь другое имя.Алсо, если посмотреть типичный пример (пикрил), то производный класс никак явно не переопределяет виртуальный деструктор базового. Получается зря старались, зря объявляли его виртуальным? Но вроде нет, не зря, все работает ведь.
>>1348280Популярен где? На линуксе кроме кутэ и нет ничего, он вот и популярен у красноглазиков, а сибилдер под винду, там он не один, вдобавок быдло скатилось на шышарп который проще.Надеюсь теперь понятно, что долбоеб это ты - хвалишь более убогое.
>>1348314>Ведь виртуальная функция во всех производных классах должна иметь такое же имя, как в базовомЭто особый случай, в конструкторах деструкторах работает стек из функций от базы до конечного потомка. >>1348314>Алсо, если посмотреть типичный пример (пикрил), то производный класс никак явно не переопределяет виртуальный деструктор базового. Просто частный случай.
>>1348323>линуксе кроме кутэ и нет ничегокак это? прямо так и нет? а я в чем тогда пишу? в том что НЕ существует?
>>1348314>в производном классе деструктор всегда будет иметь другое имяи че? смещение в vtable будет одно и тоже
>>1347221>как получить доступ к микрофону/разъёму-микрофон на звуковой карте?Эн лет назад я обращался через WASAPI, уже и не вспомню как. Наверняка есть портативные библиотеки под всё это дело.
Если вызвался конструктор перемещения, то объект гарантировано будет перемещен(всмысле, что конструктор не просто скопирует данные, а именно переместит) ? Я могу это как-то проверить?Как правильно использовать список инициализации с этим перемещающим конструктором:Vector(Vector &&tmp) : fuck(tmp.lng), oppai(tmp.angle)ORVector(Vector &&tmp) : fuck(move(tmp.lng)), oppai(move(tmp.angle))?
Как подключить ебучию динамическую библиотеку? Я создал там класс, который разделил на h and cpp. Подключаю в консольном проекте через #include "name.dll", ошибок нет, файл находит. Но в файле, куда подключаю не видит ни моего класса, нихуя не видит вообще.
>>1348516Чтобы использовать классы и функции, тебе все равно нужны их объявления, даже если реализация целиком в .dll. Поэтому, во-первых, подключи хедер.h. Во-сторых, вместе с собранной библиотекой идет .lib файл с таким же названием. Он нужен, чтобы временно разрезолвить нереализованные объявления на этапе статической линковки (попробуй сбилдить без него). Чтобы его подключить, пропиши его в target link libraries в настройках проекта (загугли) или используй #pragma comment(lib, "LibVector.lib")
>>1348543https://docs.microsoft.com/en-us/cpp/build/exporting-from-a-dll-using-def-files?view=vs-2017
>>1348553Лучше почитай в каких случаях твой код на С++ будет быстрее чем из коробки на том же С#. С++ сосет без оптимизации, если что.
>>1348323>Надеюсь теперь понятно, что долбоеб это ты - хвалишь более убогое.Я где-нибудь это хвалил? Зачем ты сразу в обзываки скатываешься, как бука злая.Имею ввиду, что большинство вакансий (конечно, может я в глаза долблюсь) требуют знания Qt, а не билдера.
Как можно объявить байты?"12345" - в памяти создается массив из 6 байтов (по одному на цифру + нуль терминатор в конце) и возвращается указатель на этот массив.Вопрос: Как сделать то же самое, только с цифровыми байтами вместо букв, и чтобы никаких объявлений переменных (как видно в примере выше нет никаких переменных).
>>1348553Используешь не-компайл-тайм фичи? Плюсы будут медленнее (скрытые аллокции и всякая шняга). Используешь компайл-тайм фичи? Компиляция плюсов будет медленнее раз в пять-шесть-сто. Быстрее? Говорят, что в плюсах не нужен указатель на void, потому что есть шаблоны, поэтому компилятор обладает более полной информацией о типах и способен лучше оптимизировать, но матёрые си программисты-оптимизаторы, которым нужен ПЕРФОРМАНС, и так не используют указатель на void. Таким образом, если тебе нужен ХАРДКОРНЫЙ ПЕРФОРМАНС, то ты будешь использовать плюсы только как си с классами-структурами и неймспейсами. Но процент кода, который требует такого, обычно довольно маленький, поэтому не еби себе мозг и пиши нормально. Большая часть скорости обычно зависит от архитектуры программы, нежели от конкретного языка. Если ты не используешь фичи плюсов не по назначению (например, проходишь циклом по паре тысяч объектов, вызывая у каждого виртуальные методы), то скорость программ будет одинаковая.
>>1348417Добавь printf в конструкторы и всё увидишь.Во втором вопросе move нужен. Объяснения: https://en.cppreference.com/w/cpp/utility/move
Хули мне с этим делать? Я читаю-читаю, но написать нихуя полезного не могу, т.к. на голых плюсах, я так понял, хуй что реализуешь. Где взять практику? Что писать? Долго ещё теорию гонять, которая без нормальной практики забывается с ахуевшей скоростью?
Прохожу щасс плюсы пол года, а потом джаву, и препод говорит, что после плюсов, джаву месяц будем проходить, типа джаву с бекграундом плюсов легко дается? Это правда или я просто буду хуеевым джаваскриптером?
Плюсаны, виртуальный деструктор в базовом классе нужен если все мемберы в произвольном классе с автоматическим типом хранения?
>>1348742если ты захочешь делать, как ниже, то нужен:struct Child : Base {};BasePtr b = new Child{};delete b;
>>1348772быстрофикс: в смысле его не язык требует, а это считается хорошим тоном, чтобы потом не наебаться
>>1348776Хороший тон это да конечно... Вот стаким кодом https://ideone.com/iDRQAp у меня получилочь воспроизвести утечку с нетривиальным деструктором, но с char[10000] нет. Если без традиций, ритуалов и хорошего тона - нужен или нет?
Ананас, расскажи как работают CLI command line interface программы.Например, с гитом понятно. Запускаешь программу с аргументами и тд.А как быть которые обрабатывают ввод? Там, грубо говоря, внутри крутится бесконечный цикл и обрабатывает ввод?
>>1348325>Это особый случайОпять Невидимая Рука Страуструпа что-то дописывает в мой код.>и че? Ну у меня когнитивный диссонанс: то ли я неверно понял виртуальные функции, то ли это специфика самого деструктора.>>1348499Чому нет? Можно даже явно вызвать.
>>1348809Не бесконечный, а пока в stdin не встретится eofВ кернигане и ричи параграф 1.9 содержит пример
>>1348819>Чому нет? Можно даже явно вызвать.Это не значит, что у него есть имя.Про конструкторы явно сказано, что у них нет имени. Про деструкторы не сказано. Вот я и спрашиваю.
>>1348885>>1348895Не ради того, чтобы спорить, а просто пруфы, что не я это придумал.Даже Страуструп говорит об имени деструктора.
Почему не сделают какую-нибудь надстройку над крестами, чтобы по умолчанию использовала умные указатели, сохранив синтаксис для обратной совместимости с библиотеками. Не прикрутят какой-нибудь универсальный менеджер пакетов. Это же был бы лучший язык эвер.
>>1348974>Почему… Не прикрутят какой-нибудь универсальный менеджер пакетов.Потому что таких не существует.
>>1348975Да даже если расслабить требования да "хоть какой-нибудь стандартный пакет менеджер", всё равно не смогут сделать. Потому что коммитет не способен его стандартизировать, сделать и потом мейнтейнить. А вот язык от конкретной канторы себе такое позволить может.
>>1348974>Это же был бы лучший язык эвер. Только для твоих задач. Далеко не всем нужны умные указатели и "универсальный" менеджер пакетов.Возьми Swift, там и умные указатели и менеджер пакетов, или какой-нибудь язык с GC вроде D или Go.
Что значит "функция не генерирует исключения", вот есть у меня функция, которая юзает sin/cos с cmath, в функции нет throw catch. Стоит ли мне объявлять её как noexcept ?
>>1344474Ну что делают.... как всегда, с ноля пилят супер-пупер какую-нибудь систему учета чего-нибудь на предприятии.
>>1348742>мемберы в произвольном классе с автоматическим типом хранения?У подобъектов такой же storage duration, как у содержащего их объекта. Будет объект с automatic storage duration ("на стеке") — будут его member subobjects с automatic storage duration. Будет создан динамически (dynamic sotrage duration) — такой же storage duration будет у member subobject-ов.Если ты имел ввиду что создаёшь объекты всегда "на стеке", то ему не особо нужен виртуальный деструктор.А если ты имел в виду что-то другое, то у тебя в голове каша.
>>1348776>быстрофикс: в смысле его не язык требует, а это считается хорошим тономВ смысле что язык требует. Без виртуального деструктора в >>1348772 будет неопределённое поведение
>>1349084>Что значит "функция не генерирует исключения"Это просто еще одна проверка кода компилятором. Ты объявляешь noexcept, и если компилятор видит, что где-то бросается исключение, то он выводит ошибку. Так же как const не гарантирует, что значение нельзя изменить, ведь это всегда можно сделать через void указатель. Просто лишняя возможность проверить, не стреляешь ли ты себе в ногу.
>>1349208>будет неопределённое поведение Там вполне определенное поведение. Вызовется только деструктор родителя (а деструкторы наследников - нет).
>>1348974>Не прикрутят какой-нибудь универсальный менеджер пакетов.как это нету?в линукс системах dpkg, rpm и другие, в bsd-семействе тоже есть системные менеджеры пакетов..
>>1349084Нужно еще проверить на предмет исключений все функции, которые ты вызывал из своей функции (библиотечные можно проверить по справочнику). Если ни одна из них не кидает исключений, значит можешь (но не обязан) объявить свою noexcept.В некоторых случаях компилятор может применить дополнительные оптимизации, если знает, что функция не кидает исключений.Стоит или нет? Смотря как твоя функция будет использоваться. Все подряд объявлять noexcept конечно же излишне.Стоит, если, например, ты будешь передавать свою функцию как предикат в алгоритмы STL; или если твоя функция может вызываться неявно (твоя функция — конструктор перемещения, например). STL не всегда отдельно обрабатывает noexcept функции.
Сап двач. Я предлагаю вам хоть чем то занять свою никчёмную жизнь, попробуйте решить эти охуевшие задачи по программированию. Покажите на что вы способны мамкины программисты, отработайте свои 300кк в наносекунду
>>1349390Там, в принципе, не такая и сложная задача, так что сделаю рейт поменьше тебе. $3800 USD - и по рукам.
>>1349207Это у тебя в голове каша. Storage duration никак не относится к памяти - стеку или куче. Automatic storage duration - это не на стеке, а то что объект создается в начале скопа и удаляется в конце, без участия юзера. Dynamic sotrage duration - объек создается и удаляется через вызов функций аллокации памяти, т.е. с участием пользователя.
>>1349437>Automatic storage duration - это не на стеке, а то что объект создается в начале скопа и удаляется в концеscope это свойство имён https://timsong-cpp.github.io/cppwp/n4659/basic.scope#def:scope> In general, each particular name is valid only within some possibly discontiguous portion of program text called its scope.Объект можно создать с помощью placement new внутри массива unsigned char с automatic storage duration, и у этого объекта будет automatic storage duration, а имени не будет и ни о каком скопе смысла говорить вообще нет.
>>1349437>создается в начале скопа и удаляется в конце{Class ass; // начало скопа для ass{Class ass; // конец скопа внешнего ass. внешний ass удаляется?}}
>>1348742Виртуальный деструктор нужен для вызова деструктора базового класса при удалении объекта неследованого класса. Что там в наследуемом классе находится неважно (он может быть вообще пустым). Если у тебя в классе имееться кастомный (не по умолчанию) деструктор то ты или объявляешь деструктор виртуальным, или от класса нельзя наследоваться.
>>1349386>Тащи пруф. Посмотри в стандарте как деструкторы работают, там вполне определенное поведение. В смысле порядок вызова деструкторов в данном случае однозначный. Что конкретно произойдет из-за того, что у потомка деструктор не сработает в стандарте не описано, конечно же.
>>1349493>и у этого объекта будет automatic storage durationНе будет. Деструктор-то у него не сработает при удалении стек фрейма.
>>1349574>Виртуальный деструктор нужен для вызова деструктора базового класса при удалении объекта неследованого класса.:facepalm:> Если у тебя в классе имееться кастомный (не по умолчанию) деструктор то ты или объявляешь деструктор виртуальным, или от класса нельзя наследоваться. Наследуюсь от контейнеров из stl, у которых нет виртуальных деструкторов. Брат жив.>>1349583>Посмотри в стандарте как деструкторы работают, там вполне определенное поведение.Посмотри в стандарте описание поведения delete.Там явно сказано, что если ты подсовываешь указатель на T который не указывает на объект типа T, а указывает на объект типа U, и T не является базовым классом U с виртуальным деструктором, то поведение не определено.
>>1349585>Не будет. Деструктор-то у него не сработает при удалении стек фрейма.Будет. Срабатывание или несрабатывание деструктора при выходе из блока это не тот способ, которым определяется automatic storage duration.
>>1349596Найс лаба. Но согласен полную херню написал про деструктор, что-то воскресенье на меня негативно влияет.
>>1349354По какому справочнику смотреть, бросают ли исключения библиотечные функции? Открыл http://www.cplusplus.com/reference/cmath/cos/, там не написано, бросает ли cos()исключения.
>>1349609https://timsong-cpp.github.io/cppwp/n4659/library.c#2> The descriptions of many library functions rely on the C standard library for the semantics of those functions.Смотри в стандарте C, бросает ли cos исключения
Если я использовал конструктор перемещения, для объекта в котором всего 2 переменные. И в итоге у объекта, с которого я перемещал, сохранились значения. Это значит, что я не переместил, а скопировал? Что вообще должно остаться у объекта? Нули или мусор?
>>1349609https://en.cppreference.com/w/cpp/numeric/math/coshttps://en.cppreference.com/w/cpp/numeric/math/math_errhandling
>>1349667Наконец-то до спермоблядков дошло что будущее за UTF-8.Из 30 лет со дня изобретения UTF-8 не прошло.
>>1349640Конструктор перемещения нужен, если у объекта есть внешние ресурсы (причем с уникальным владением). Типа хуйни, выделенной в куче, или там открытого сокета.А если все поля класса это простые типы (и массивы из них), то копирование и перемещение делают одно и то же.
>>1349675выбор двухбайтового представления юникода инженерами майкрософт был абсолютно верен, для их ситуации
>>1349976нет, из соображений производительности в первую очередьведь юникод они в ядро запиливали, надо было чтобы быстро работалопотом удобней с двухбайтовой кодировкой работать самим программистам..потом им не надо было ни жить ни быть чтобы была обратная совместимость с ascii кодировкjq как в utf8 сделано, так как в ядре уже была поддержка и широких кодировок для азиатских языков и других трюков, те в ядре винды не было такой жесткой привязки к asci как было в некоторых операционках юниксового семейства..вообще, выбор представления юникода - это не холивар, это обычный инженерный выбор, одни представления удобней для одного, другие - для другогона rsdn были длинные обсуждения этого, и почти никто не обсирал выбора инженеров майкрософт
>>1349983>на rsdn были длинные обсуждения этого, и почти никто не обсирал выбора инженеров майкрософтЕщё бы на сайте чьё название каргокультирует MSDN обсирали Microsoft
Анон, поясни можно ли въехать в лямбда-выражения в Си++ без подготовки или надо налегать на лямбда-исчисление Чёрча, теорию категории и т.д.?
>>1350123Ты... ты пользовался наследием без глубокого изучения теории типов в System F<: ?! А ну живо иди извиняться лично перед Мартином-Лёфом!
>>1350123Конечно можно, даже необходимо. Обязательно перед эти выучи работу машины Тьюринга, автомата Маркова, машины Поста. Иначе будешь говнокодером
>>1350185Ты же петухан, который ни одной программы не написал.Иначе было бы очевидно, что UTF-8 это говно ёбаное, вообще невозможно с ним работать, потому что это не простые строки, а пожатые. Ты буквально не можешь взять какой-то символ из строки так: ch = str[5] - взять пятый символ из строки, потому что там пожато и символы все разной длины, так что нужно ПАРСИТЬ СТРОКУ НАХУЙ. Это всё равно что держать все структуры и прочие буферы в памяти пожатыми в ZIP, и при каждом обращении распаковывать, таская за собой библиотеку зипа. Ты чё, ебанутый, блять? Это не только неудобно, но и производительность по пизде. Это каким же надо быть отбитым говноделом, иди нахуй на питоне говни, пидрила тупорылая.
>>1350123нужно скорее понимать, что лямбды в с++ скорее синтаксический сахарнужно понимать, как раньше использовались функциональные объекты, их фишки, как использовались такие оригинальные средства как bind и mem_funпосредством лямб делать те же задачи стало удобнейно это не лямбды функциональных языков
>>1350218кстати, функциональные объекты в крестах так и не стали популярными, большинство кода работающего с stl так и работало в структурном стиле с унылым циклом по коллекциям, это конечно печаельнопо видимому из-за того что поддержка вложенных классов в компиляторах медленно появлялась, да и потому что вложенные классы вообще считались экзотической особенностью и не стали по настоящему рабочим инструментом
>>1350233В виндоус для юникода используется 2 байта. Это не совсем верно, потому что бывает символы которые в 2 байта не влезут, но там совсем экзотика - всякие матановые символы.
>>1350220Потому что несмотря циклы проще, лучше читаются, быстрее компилируются, дают более понятные сообщения об ошибках.Нет никаких причин извращаться со всякими transform, back_inserter и лямбдами, если можно написать простой цикл.
>>1347221>Второй - как получить доступ к микрофону/разъёму-микрофон на звуковой карте? https://www.openal.org/documentation/OpenAL_Programmers_Guide.pdf
>>1350246>Нет никаких причин причина в увеличении абстракцииразделяется код обхода контейнера и код выполняющий что-то над элементамиэто если простыми словами, тк ты похоже low
>>1350265>увеличении абстракцииНо лямбда же удобнее всего, когда она на месте создается для передачи в алгоритм.ИМХО это не увеличение абстракции, а магические числа с поведением функции.я лоу
>>1350265>причина в увеличении абстракцииНе всегда абстракция хорошо. Особенно там, где она не нужна, иначе у тебя будут абстрактные фабрики свободных монадических стеков аппликативов-визитёров, настраиваемых через XML. Пару тредов назад давали ссылку, где хорошо расписал парень всё. http://aras-p.info/blog/2018/12/28/Modern-C-Lamentations/
>>1350202>Иначе было бы очевидно, что UTF-8 это говно ёбаноеА вот инженерам из Microsoft Console Team очевидно, что за UTF-8 будущее даже во внутреннем представлении. Поэтому они переходят с UCS-2 на UTF-8 внутри.Правда, приходится использовать под 1 UTF-8 code unit wchar_t, а не обычный char. Слишком много везде wchar_t.
>>1350202>Ты буквально не можешь взять какой-то символ из строки так: ch = str[5]Это нигде в реальной жизни не нужно. Только в laba2, где задание звучит как "перевернуть строку".
>>1350356Выводиться оно может хоть в UTF-8, хоть в анус мамаши, разницы нет, проблема во внутреннем представлении в программе, с которым ты работаешь.Ну а что они там сейчас думают, мне плевать, как и данному треду, потому что тут C++, а не сисярпы и прочие UWP-скрипты говно-мобилко-веб-платформы, которую они лепят, стараясь убить нормальный десктоп и его приложения, т.е. С++ убить. Современный тренд - уходить с нормальных приложений на тормозные скрипты виртуальных машин, лепить обертки оберток оберток. Даже если в их строках, чтобы тупо напечатать одну букву будет вызов десятка вложенных функций, каждая с циклами по всей строке, им похуй, только рады и скажут "заебись, потому что это говно написали они и без него никто другой ничего не сможет, а значит они - гегемоны абсолютной власти. ПРОФИТ.
>>1350124Че ты шутишь? Я серьезно спрашиваю. Ты походу типичный ЧСВ-прогер не прогер, а пидор.>>1350128Не понял о чем ты.>>1350160Спасибо.>>1350188Спасибо, если не стебёшься.>>1350218Спасибо. Что такое сахар?
>>1350436С++ это хайлоад и системное программирование в основном, десктоп на С++ уже считай мертв. Но я понимаю твой подрыв..
>>1350474>десктоп на С++ уже считай мертвОй вэй, слухи сильно преувеличены.Просто взял несколько приложений, что у меня на рабочем столе: LightAlloy, Audacity, Sandboxie, MS Office, куча музыкального софта, торенты, браузер. Все писано на плюсах, либо с их участием.
>>1350603Все ссылки находятся по адресу улица Пушкина, дом КолотушкинаСсылка не объект, а потому не имеет адреса.
>>1350620но ведь они хранятся в оперативке под определенным адресом, проблема в том, что обычным способом, адрес указывается на объект в любом случае
>>1350679Похоже на высер какого-то декомпилятора. Мне непонятно, например, почему в строчке с return есть +1. Примерно понятно, откуда взялся >>5 - декомпиляторы любят подобный мусор.Но в целом из названия и кода понятно - метод возвращает соответствующую имени класса virtual table.По адресу self лежит табличка видауказатель_на_virtual_table указатель_на_имя_классауказатель_на_virtual_table указатель_на_имя_классауказатель_на_virtual_table указатель_на_имя_классауказатель_на_virtual_table указатель_на_имя_классаРазмер строки таблицы - 0x8. По смещению 0x4 лежит указатель на имя класса, который загружается в test и дальше сравнивается по имени с name. По смещению 0x0 лежит указатель на йобу, в йобе по смещению в 1 байт лежит указатель на virtual table.
>>1350805Половина фич плюсов - попытка исправить недочёты сей. Следующая четверть - попытка исправить недочёты плюсов. Если тебе меньше 19 лет, то я бы начал с си. Иначе - добро пожаловать в волшебный мир "а нахрена это сделано вот так".
>>1350805вообще не стоит изучать щас с++ если ты новичеквыбери что-то другоеэто не троллинг, это лучший совет который можешь получить
>>1350829Хз, мне наоборот всё логичным кажется, то и дело восхищаюсь инженерным гением разработчиков компилятора.
>>1350805Смотря что ты собрался делать потом на плюсах. Если системное программирование/десктоп, то лучше начать с СИ. Если решил работать на высоком уровне абстракции, то СИ учить не нужно. Накатываешь какой-нибудь QT и рубишься.
Можно где-нибудь найти плюсопрограммиста для работы за еду или около того ну там например за $500 в месяц? Мне для прототипа моего персонального проекта нужно часть на плюсах допилить, а у самого времени нет, где искать погромиста?
>>1350829Так я понял, что С++ это С со всякими новыми парадигмами и фичами из коробки. Я же могу просто писать как на ванильной сишке и не использовать привнесенные костыли которые мне не нравятся?>>1350839Почему так? Знаю только пиздон, но не могу придумать, что на нем писать кроме скриптиков, а на работки он идет обычно как бонус, а не основное требование.Веб-языки меня не прельщают, т.к. ненавижу сети вообще и даже на фронтенде я так понимаю мне придется с ними часто париться. Не статические сайтики на бесплатных настроенных хостингах же всю жизнь делать.>>1350861Спасибо.
>>1350896> что С++ это С со всякими новыми парадигмами и фичами из коробкиЭто абсолютно другой язык, но практически совместимый с си. Ты вполне можешь писать на си, используя только некие фичи крестов, но зачем?
Возможно сохранить определённый метод определённого класса для дальнейшего вызова с различными аргументами? Классы разные, но аргументы методов одинаковые.Кроме сохранения лямбда функции в std::functional ничего в голову не приходит (и такое решение мне не очень нравится по эстетическим соображениям - там наверняка намного больше ресурсов уходит, чем требуется для сохранения двух указателей на класс и метод) - с шаблонами ещё совсем не разобрался, и как это написать мне не понятно - каким-то образом нужно сохранить тип класса, чтобы вызов его метода по указателю скомпилировался и сработал. Может быть там есть какая-то хитрая фича с использование std::invoke или ещё чего-нибудь?
>>1350957>(и такое решение мне не очень нравится по эстетическим соображениям - там наверняка намного больше ресурсов уходит, чем требуется для сохранения двух указателей на класс и методЕбанутый, лучше просто сдохни
>>1350957>чем требуется для сохранения двух указателей на класс и методУказатели на метод обычно очень нетривиальные (это не обычный указатель), и не факт, что они будут расходовать меньше ресурсов, чем лямбда.
>>1351036Ну это только если с виртуальным наследованием. Там компилятору и правда приходится дрочить вприсядку, чтобы получить правильное смещение.
Аноны, стоит вкатываться в метапрограммирование и подавать резюме в майрософт, чтобы студию разрабатывать?
>>1351047они не спонсируют визу вроде бы, сам хотел в команду студии податься в свое время. А вкатиться в метапрограммирование для самого себя очень полезно.
>>1351036>и не факт, что они будут расходовать меньше ресурсовТо есть если переписать все эти методы как статические и явно передавать им указатель на экземпляр (в таком случае тип всех методов (точнее, уже почти просто функций) совпадает), то это будет лучше в плане ресурсов?
>>1350857У меня довольно много претензий к языку, если честно. Первое, что приходит на ум:>почему std::initializer_list в сочетании с list initialization рушит все оверлоуды?>такие правила выбора, тебе просто стоит запомнить>почему при передаче в тред ссылки я должен использовать std::ref?>такая семантика у ссылок, тебе просто стоит запомнить>кто в своём уме придумал Most Vexing Parse? Просто потому что кому-то взбрела в голову идея объявления функции внутри функции, не значит, что это надо было делать>ну, эта грамматика нам от сей досталась, тебе просто стоит запомнить>std::unordered_map всегда использует open_hashing >такой вот он STL, тебе просто стоит запомнить>почему нет аналога defer? Я не хочу плодить классы, если мне что-то нужно всего один раз>пользуйся RAII и молчи>почему мой проект собирается два часа?>потому что надо использовать меньше темплейтов, а темплейты генерят столько кода, потому что мы унаследовали модель компиляции сейЕсли напрячься, можно было бы ещё много чего вспомнить. Да, все эти проблемы решаемы. Да, для большинства это не проблемы. Но если бы их не было, мир бы стал чуточку лучше и добрее. И ведь другого "Си, но лучше" на горизонте нет. Jai мог бы стать, но по текущему состоянию он становится таким же кластерфаком, что и плюсы.
>>1351077>Но если бы их не было, мир бы стал чуточку лучше и добрееЯ бы даже согласился на то, чтобы все это осталось. Но что мешает как-то визуализировать при необходимости, то что фактически происходит "между строк". Те же временные объекты, например.Изучать язык стало-бы в разы проще, да и опытные программисты делали бы меньше ошибок.И ладно бы всем похуй было бы на вкатывальщиков. Так ведь нет, книжки пишут, курсы всякие пилят, а такой очевидной вещи за 35 лет никто не сделал.
>>1351225Похоже, что кресты 1 / 3 ебошут целочисленным делением, т. е. 1 / 3 == 0.Попробуй записать так: 1.0 / 3
>>1351231А вообще православнее все цифры записать с точкой.Цифра без точки считается int, а с точкой - double. Поэтому в твоем выражении будут неявные преобразования int в double.Если все записать с точками, то преобразований не потребуется.
>>1351232>преобразований не потребуетсяОни всё равно будут только при компиляции и будут только там где это требуется
>>1342442 (OP)Какая unix система чаще всего используется у разработчиков? Как пример для понимания Bubuntu, CentOS/Fedora.И что-нибудь кроме g++?
>>1351329Вопрос возник из-за того, что в одной вакансии требуется знание линуха плюс netbeans и я отчаянно пытаюсь узнать, а что вообще используют программисты. Речь как ни странно идёт именно о С++ программировании. Мне нужно это всё опробовать, дабы не сесть в лужу.
>>1351335Я же эту бабанту или федору ставить буду, потом на это нетбос и г++, надо потренироваться иначе буду красным сидеть и гагатать от происходящего.Вообще для новичка гит и прочее, то есть портфолио очень важно, да? Программы как оно самое есть если что.И ещё вопрос. Как оно вообще происходит то, там, на работе программиста на линух? К самому линух отношусь нейтрально из-за большого веса VS 2017.
>>1351326Ubuntu-подобные системы де-факто стандарт для обычного десктопа. Если бы мне пришлось сидеть с красноглазым говном вместо ОС, я бы, наверное, накатил Kubuntu.>>1351337С каких пор ВЕС ВИЖУАЛ СТУДИИ это важно? У тебя ССД на 60 гигов? Ну серьезно. Флаеры пораздавай день, купить на 256гб.И да, нетбинс это просто анальный террор, если пользоваться не-студией, то хотя-бы культикреатор, а не этот жавадерьмо.
>>1351370У меня есть ССД на 256, но время установки огорчает, сильно.Касаемо нетбоса, я понимаю. И что такое кутьикреатор? А эклипс?Касаемо бабанты, это хорошо, меньше проблем, наверное.И ещё вопрос, тут стращают, шо шаблоны это плохо. Так что же это получается, мне придётся писать некоторое количество реализаций классов на нужные мне типы данных и терпеть ради скорости? И второе. Как раньше народ игры на С писал. Например, дум. Что конкретно? Вот есть кучка монстров, их над создать, причём разных и управлять, и если про управлять это допустим стек, очередь или список самодельные, то как быть с разнми монстрами? Структуры?
>>1351377>И что такое кутьикреатор?qtCreator. Более-менее компактная и минималистичная ide. Хреново справляется с подсветкой (и автоотступами) всяких новых фич из новых стандартов, в остальном почти золото, по сравнению со всякими студиями или тормозными clion - я по своей воле ни на чём другом писать не стал бы. Попробуй, сам посмотри, оно за десять-пятнадцать минут ставится.>И второе. Как раньше народ игры на С писал.А в чём проблема?>и если про управлять это допустим стек, очередьВот тут вообще не понял что ты имеешь ввиду.Угу, структуры. У тебя есть структура под монстра. Можно несколько разных как разные сущности, если требуется для разных функций. Или можно в структуре хранить указатель на "пользовательские данные", которые требуются для конкретного монстра. В зависимости от типа монстра вызываются разные функции, чтобы они по разному действовали во время игры. Хранить монстров в списке или массиве, как угодно.
Вечер в хату молодые(и не очень) люди! Намедни всучили лютую(для меня дауна) лабу на плюсах, а я не знаю как подступиться к ней даже:Постановка задачи.Разработать объектную программу для хранения и обработки данных об участниках групп социальных сетей. Сеть рассматривается как набор групп, где каждая группа имеет уникальное название. В свою очередь, каждая группа рассматривается как набор участников, причем каждый участник имеет уникальное имя и параметр «Статус участника».Разработка включает в себя определение необходимых объектов и описание их в виде классов, программную реализацию методов добавления и удаления групп в соцсеть и участников в группы с подсчетом общего числа участников, всестороннее тестирование методов с помощью консольного (при разработке) и оконного (в окончательном варианте) приложения.Для объединения групп в рамках соцсети используется структура данных в виде адресного разомкнутого упорядоченного однонаправленного списка с заголовком. Для объединения участников в группы используется очередь на основе обычного массива со сдвигом элементов.Сначала в консоли, в перспективе еще и ГУЙ запилить, но это все лирика. Как это хоть примерно должно выглядеть?
>>1351377>Как раньше народ игры на С писалТочно так же, как и сегодня пишут на сях, плюсах, питонах и других языках.Если сильно упростить, в том же думе каждом кадре тебе нужно сделать:1) Посмотреть текущее состояние, скажем, клавиатуры2) Исходя из состояния алавиатуры обновить мир3) Вывести мир на экран4) Воспроизвести звуки5) GOTO 1Каждый из этих шагов есть отдельная функция, которую тоже можно разбить на подпроблемы. Вот так и пишется. Только в реальны0 приложениях есть куча других вещей типа загрузки-выгрузки ресурсов, обработки сети и тд.
>>1351395Попробую под бабанту, всё таки простота сред на линух манит, недавно прознал про билдер, восставший, задумался, ибо вес 2015 и 2017 просто повергает в шок, 2015 - 35ГБ, а уж сколько 2017 остаётся гадать.Значит таки структурами. Проблема в бобработке некоторой кучки разных монстров, которые создаются тем же редактором карт. Но вот беда, структуры разные, их только последовательно друг за другом массивами или списками. Я ту поглядел время появления шаблонов, это начало 90х, так?
>>1351377>установки огорчаетЯ не понимаю твоей проблемы. 1 раз поставил, и забыл. Апдейты отнимают по минуте.> Касаемо нетбоса, я понимаю. И что такое кутьикреатор? А эклипс?QtCreator - написан на крестах, и не лагает как остальное джавадерьмо. Я бы сказал, что топ2 ИДЕ после божественной студии.> И ещё вопрос, тут стращают, шо шаблоны это плохоШаблоны - это инструмент. Иногда инструмент не подходит под действие, иногда подходит идеально. Знать и уметь в шаблоны надо хоть на каком-то уровне. Я на работе в свое время нахуевертил вариадиков, зато у нас auto buff = serialize(a,b,c,d,e,f, ...) например, вместо хуевой горы говна.> Как раньше народ игры на С писал.Народ писал и на ассемблере. Идеи одни и те же, плюс минус, как написал >>1351420 просто кресты выразительнее, нежели си
>>1351420Один сканлайн с бросанием лучей это целая куча функций и структур, забыл ещё про отброс того, шо не видим, по идее кстер должен решать эту проблему.Считаю это главным гемором.
>>1351422>Я не понимаю твоей проблемы.Йота, Ростелеком не может провести к вам инет, ведь вы в чёрном списке с 90х годов плюс ВЫ невыгодны для нас, похуй, что рядом с центром ДС2.А так, убедил, таки попробую его добыть, но пока для меня круче 2010 ВС ничего нет.
>>1351420>10 Посмотреть текущее состояние, скажем, клавиатуры>20 Исходя из состояния клавиатуры обновить мир>30 Вывести мир на экран>40 Воспроизвести звуки>50 GOTO 10Поправил зумера.
>>1351410>адресного разомкнутого упорядоченного однонаправленного списка с заголовкомNon-intrusive singly linked list что-ли? Ну а так у тебя всё расписано.Есть связный список групп. Группы можно добавлять в список, удалять из него, изменить название или произвести операцию над участниками этой группы. В каждой группе есть массив участников (не знаю, он должен быть статического размера или динамически расширяемый). Участников можно добавлять, удалять, или изменять имя и статус.>>1351433На телефоне был, извиняйте. ...чёрт, на телефоне. Скоро стану как эта вся молодёжь. Надо пить больше Монстра и играть в кваку. clack Да, вот в моё время были игры чтобы погамать, не то что сейчас. sip
>>1351448Ты повторил то, что написано в задании, это никак не помогает( Я структурно не могу понять что да как. То есть, я создам класс "Участник", "Группа" и "СоцСеть" Потом отдельно нужно навернуть классы "Очередь" и "Список". Очередь будет в private секции Группы, а Список в свою очередь там же у СоцСети или как?
>>1351370>У тебя ССД на 60 гигов? Ну серьезно. Флаеры пораздавай день, купить на 256гб.И сколько дней мне надо флаеры раздавать, чтобы новый ноут взять?
>>1351503Ну я кроме плюсов языками не владею, да и их только учу. >к джавистам надо.Для меня это тоже самое, что на монгольском языке ответ искать.И вообще, вопрос у меня возник в процессе чтения книги именно по плюсам. Чую, что там применяется один из паттернов, но не могу ссобразить какой. Вот вроде подходят фасад и делегирование, но оба с натяжкой.Тащить же сам пример из книжки будет слишком громоздко - 9 классов, код с объяснениями занимает около 30 страниц.
>>1351509Как показывает моя практика работы С++ макакой (а это уже почти 5 лет), то эти убер-паттерны нигде не используются, тупо за счет того, что они безумно громоздкие, и слишком глобальные. Если ты какая-нибудь джава-энтерпрайз макака - может быть да. Кресты вообще про другое.
>>1351472Если правильно помню, то Фасад - упрощение сложного интерфейса. То есть тебе нужно, скажем, создать объекты A, B, C и вызвать у каждого по десять методов. Вместо этого ты делаешь класс Zayobcer, у которого есть метод makeZayobca(), в котором выполняются все эти действия. То есть это по сути простое применение абстракции, но энтерпрайз в лице банды четырёх сделал, как обычно, всё сложнее, чем оно на самом деле.Delegation не помню, что бы в GoF был. Судя по гуглу, это, если тебе нужно использовать метод foo класса A, но чуть расширить b lheubv, ты создаёшь класс B и хранишь в нём экземпляр А (например, по имени m_a). Затем B::foo() просто вызывает m_a->foo(). Сейчас такую вещь нахывают принципом composition over inheritance.
>>1351472Facade использует Delegation. По сути одно и тоже, просто разные цели. Цель Delegation - размазать реализацию класса по нескольким с целью сделать возможной модификацию поведения класса (например dependency injection) или преиспользовать код (сделать что-то похожое на миксины). Цель Facade - не светить наружу десятком классов, а выставить только один. Но Facade реализуется с помощью Delegation, тоесть реальной разницы нет.
>>1351563>не надо было хуевый покупать изначально Он изначально пиздатый, если винду и студию не ставить.
>>1350957>>1351036>и не факт, что они будут расходовать меньше ресурсов, чем лямбда.Угу, ты оказался прав. Лямбды хороши.Сравнил дома в каком-то искусственном тесте, 6 типов классов, 100к экземпляров каждого типа, 10кк сохранённых пар, 10кк вызовов:1. std::bind сохранённые в std::function 64 байта на каждую пару, общее время сохранения - 1700 (миллионов тактов), вызовы - 462. Отвратительно.2. Лямбды с связыванием по ссылке в std::function 32 байт на пару, 758, 427 (выходит лямбды почти не занимают память (std::function уже имеет размер в 32 байта) - видимо как-то хитро сжимаются, сохраняясь по одному разу для каждого из 6 классов, а одно связанное значения сохраняется в std::function (если добавить ещё связанных переменных, то при превышении захвата в 16 байт потребление скачком прыгает до 64 байт на пару) Вот бы где почитать про подобные тонкости реализации...3. Пары из статического метода в std::function + void указывающий на экземпляр 40 байт, 758, 4264. Статические методы в обычных указателях на функции + void указывающий на экземпляр(>>1351067) 16 байт, 805, 334Не представляю почему сохранение в std::function<int(void,int)> быстрее, чем в int ()(void,int) - числа почти не прыгают, из раза в раз получается 805 и 758-759. Если попытаться выровнять структуру до 32 или тех же 40 байт - время сохранения только увеличивается.
Аноны, а нет ли такого сборщика который бы вытаскивал те функции, которые используются в программе ну и функции внутри тех функций и таким образом собирал программу минимизируя вес? В больших библиотеках ведь не 100% кода используется. мимо-нуфаг
>>1351698Только оно посредственно работает, у меня почти не поменялся размер в открытом сейчас проекте.
>>1345059Сложно. Даже обычный std::string имеет хуеву тучу тонкостей которые ты можешь даже не знать, не то что заимплементить. Типа того что при малых длинах строк контент хранится в самой структуре и аллокаций памяти не происходит.То есть, написать самому можно (и если есть время и упорство - постараться точно стоит), но гарантированно выйдет менее производительный чем стандартный.
>>1345224Вроде в 17-х крестах noexcept спецификация является частью системы типов, а значит можно в компайл тайме выбирать между перемещением и копированием.К тому же, std::vector как мне кажется юзает именно перемещение, ведь ты можешь сделать вектор юник поинтеров, например.
>>1351714>Вроде в 17-х крестах noexcept спецификация является частью системы типов, а значит можно в компайл тайме выбирать между перемещением и копированием."В огороде бузина, а значит в Киеве дядька".Пиздец, нахуй.https://en.cppreference.com/w/cpp/utility/move_if_noexcept существует со времён C++11 и никакие части системы типов тут не нужны.
>>1351582Используются. Другой вопрос можно/нужно ли этого избежать.Ящитаю так: если есть вероятность что-то встретить в чужом коде, то есть и смысл в этом разобраться.>>1351588>Delegation не помню, что бы в GoF былДа, в ГоФ не описывался. На педивикии есть.>>1351596>Facade реализуется с помощью DelegationВот это, похоже, и есть мой случай.Алсо, забавную вещь нагуглил в процессеhttps://en.wikipedia.org/wiki/Schizophrenia_(object-oriented_programming)
>>1351582>паттерны нигде не используютсяПаттерны какбэ не указывают что тебе делать, это про просто список широко распространенных уже используемых техник. Их назвали для более понятного общения программистов друг с другом, а не твоей обязанности их использовать.
>>1351582>практика работы С++хуевая у тебя практика, однакоза много лет коммьюнити с++ накопило большую базу знаний о реализации паттернов в языкеони могут реализовываться динамически, в стиле gof и чем то копировать смаллтолк приемыони могут реализовываться статически, в стиле книги александреску "соверменное проектирование" и дальше то что пошло в буст на основе этогоони могут даже реализовываться в стилях функционального программирования, что одно время было популярно и стало возможным с последними стандартами языказачастую перед проектировщиком сейчас не стоит вопрос о придумывании чего-то нового, а вопрос выбора, как будет реализовываться та или иная связка паттернов..
>>1351808>хуевая у тебя практика, однакоНу почему сразу хуевая? Просто повезло человеку с местом работы.
>>1351812если отвечать без ерничанья, то простому то кодеру не надо это зубритьв том смысле что на это надо нихуево времени потратитьчтобы тот же gof проштудировать надо времяне говоря уж о книжке александреску, до нее надо читать "шаблоны" джосаттиса иначе вообще нихуя не понятна магия будетну и само, собой понимать, что все не стоит на месте, и то что там уже понаписано, щас делают немного другими способами, тк новые стандарты языка щас уже, новые семантические и синтаксические конструкции естьскорее это нужно проектировщикам библиотек, архитекторам.. в общем уровень ведущего кодера и выше..
#define TEXT "This is a text" const char* giveText(){ return TEXT;}Такое может работать, или будет ошибка?
>>1351980Чисто теоретически. Интересно, где хранится константа. Не будет ли той же ошибки, что и при возвращении указателя на локальный объект, который удаляется при выходе из скопа
>>1351982"This is a text" это статическая сишная строка, которая хранится в образе экзешника. Т.е. у нее есть строго определенное место, и каждый раз ты будешь на нее указатель возвращать.
>>1351982>Интересно, где хранится константа.Ну, так и прогугли - "где хранятся строковые литералы?"Насколько я помню в какой-то области перед глобальными переменными, что подтверждается значениями указателей. (тут для сравнения указатели на переменные из стека, из кучи и глобальную)
>>1351996Полагаю, здесь у тебя дата-мегмент.Это зависит от компайлера, на самом деле. Я не знаком с самыми современными трендами в мемори лейаутах, но главное, что они не хранятся на стеке, что позволяет им быть доступными из любого места в коде.
Есть тут кто? На печально известную бабанту поставил нетбос и благополучно подключил Г++, но вот беда, как это дело собирать, в моём случае есть четыре простеньких файла, вариант на хабре с прописанием всего этого дела в консоли не впечатлил и хотелось БЭ автоматизации. Я скромно догадываюсь, что нужно что-то скачать от ГНУ, чтобы это помогало собирать всю эту кучу и показывать результат.
>>1351996>>1351996поведение будет зависеть еще и от ключа компиляторов, которое управляет совместимостьюраньше это не было строковой константой, в него можно было писатьк примеру, в книжке кернигана "программное окружение юникс" только в путь так делают - в нескольких местах в примерах там изменяют строковый литерал
>>1352521Вопрос с подвохом. g++ это программа, у неё нет души, и поэтому не может дружить. Вот я с #include<thread> дружу давно, очень хороший хедер.
>>1352521Нужно вручную линковать pthreads (ну или ide может за тебя сделать, если какая-то годная, не знаю существуют ли такие).
Геймдевы тут? Скиньте алгоритм создания цилиндра из одной точки. origin За одно поделитесь материалом по гейм-дев матану, с рейтрейсингом и прочими йобами. С меня тонны нефти.
Аноны, может кто посоветовать материалы по честно говоря не уверен как это называть теории веб-сетей и подобного. Ну http/TCP, я про это вот. А то меня все эти названия пугают только. Желательно не кнутоподобные и не больше 1к страниц можно на ангельском
>>1352973>алгоритм создания цилиндра из одной точкиВ каком смысле? Далее ты говоришь про рей-трейсинг. Тебе нужен алгоритм пересечения луча и цилиндра?
>>1352941>Нужно вручную линковать pthreadsНужно указать флаг -pthreadЭто не только на линковку влияет.
>>1349964>выбор двухбайтового представления юникода инженерами майкрософт был абсолютно верен, для их ситуацииХватит видеть мудрость там, где была банальная лень и похуизм.Делали по принципам "640 килобайт два байта хватит навсегда" и "после нас хоть потоп".
>>1353625Windows NT это 1989-й год. Intel 80486 вышел, с пайплайном и кэшем.Windows NT писали под 32- и 64-битные процы (ладно, на 64-битной DEC Alpha оно работало в 32-битном режиме, так что только 32 бит) на C. Какие циклы вручную, когда C, пидоран?
>>1353638>когда не можешь в аллегорииДавай тогда своими именами. Полудурок ебаный, хипстер ублеванный, ты понимаешь, блядь, что СТРОКИ это очень важно, они собираются на каждый чих и модифицируются во всех бизнес-приложениях, да и даже в работе ФС\реестра?И что, потенциально, каждая операция по лукапу и замене превращается из O(1) в O(n)?
>>1353642>даже в работе ФС\реестра?И что там надо? Разбить строку по слешу (бекслешу), конкатенировать строки, выполнить поиск по таблице файлов/ключей.Разницы в этих операциях никакой для UCS-2 и UTF-8.
>>1353698>Ядро уже пропатчил на поддержку 2048 ядер? Нет? Пиздуй работать, ленивый похуист. Зачем патчить в меньшую сторону?$ grep NR_CPUS /boot/config-4.15.0-4*/boot/config-4.15.0-43-generic:CONFIG_NR_CPUS=8192/boot/config-4.15.0-44-generic:CONFIG_NR_CPUS=8192/boot/config-4.15.0-45-generic:CONFIG_NR_CPUS=8192
Поясните за BOOSTНавернул Липмана и сверху Прату для закрепления. Там пишут, что в с++11 появились много чего полезного в том числе многопоточность.Погуглил кратко про boost. Я до этого думал, что это чисто библиотека под многопоточность, но, как я теперь понял, это какая-то чудо сборная солянка всяких ништяков, которые впоследствии попадают (или уже попали в с++11) в стандарт.Так что же такое std и примочки с++11? Это часть библиотеки boost или уже войдя в стандарт оно стало независимым? Например, std:vector существует аналог в библиотеке BOOST? Это одно и тоже? Они Взаимозаменяемы? А std:thread?В очереди стоит книга Вильямса про многопотосность. Там будет именно с++11 функционал? Есть ли книга по boost или его изучать только по документации?Какой минимум нужно прочитать, чтобы переходить к изучению boost?
>>1353994std это стандартная библиотека. Когда говорят C++11, подразумевают std, а boost это сторонняя библиотека, нужна если тебе стандартной мало.
Если ли причины в 2019 писать новый проект на плюсах, а не на расте? Вроде modern c++ более приятным стал, но до раста всё равно не дотягивает ведь.
>>1354389Если ли причины в 2019 писать новый проект на расте, а не на плюсах? Вроде текущий борроу чекер более приятным стал, но до количества библиотек и поддержки плюсов всё равно не дотягивает ведь.На чём хочешь, на том и пиши.
>>1354389Если ли причины в 2019 писать новый проект, а не допиливать старый? Вроде этот процесс более приятным стал, но до рефакторинга всё равно не дотягивает ведь.
>>1354389>новый проектЭто такой эвфемизм чтобы слово "лабы" звучало по солиднее? Наша компания ведущий разработчик программных решений и комплексов для лаб по программированию. Уже более половины семестра решения компании laba1 и laba2 являются эталоном в области лаб по программированию. Регулярная сертификация на соответствие стандартам индустрии позволяет нам создавать лабы мирового уровня. В настоящее время вы активно исследуем возможность использования языка Rust для разработки надежных и качественных программных решений. В частности наш новый продукт laba3 релиз которого запланирован на вторую половину семестра является первым коммерческим решением на Rust в этой области.
А есть какая-нибудь удобная система, которая сама скачает зависимости, а мне нужно только указать адрес и название пакета?Как мавен у джавы...или нужно пердолиться скачивая и конпелируя все дерьмо, указывая папку в настройках проекта итд
>>1354928нихуя нет. тоже задавался этим вопросомза столько лет эти инвалиды нормальные тулзы даже не придумали. то ли дело мавен/гредл в джаве или карго в растев питоне такая же хуйня на самом деле
Какую использовать библиотеку для рисования элементов GUI в opengl окне? Чтобы слайдером менять размер/цвет и т.д.
Как работают такие функции как sleep_for() ? Я понимаю, что они приостанавливают поток на заданое количество миллисекунд. Но что происходит внутри? Там стоит какой-то счетчик? Но когда и каким образом этот счетчик проверяется, если поток остановлен?
Есть такой код:int main(int argc, char argv) {parse(argv[3]);}Как задать функцию parse, чтобы она, допустим, читала третий символ из второго аргумента?
>>1355118Потоками система занимается. После вызова sleep она помещает поток в список отдыхающих. Когда проходит нужное количество времени - перемещает в список ожидающих своей очереди на выполнение.
>>1355125В argv хранятся поинтеры, которые указывают на строки. Эти строки в общем случае разбросаны по памяти, то есть не идут друг за другом подряд. Поэтому сомневаюсь, что можно по адресу начала одной строки как-то найти начало другой.
>>1355125Если я тебя правильно понял, то думаю так: argv[0] это название экзешника, а первый аргумент находится в argv[1], так что тебе нужен индекс 2 для второго аргумента. Дальше третий символ строки это второй индексint main(int argc, char* argv[]) {parse( argv[2][2] );}
>>1355134>>1355160на самом деле мне надо более сложно парсить этот аргумент, не очень понимаю как его передать в функцию. Скопировать в массив чаров или строку и передать функции уже его? допустимchar *с = new char[strlen((argv[2]) + 1)];strcpy(с, argv[2]);и как тогда инициализировать parse, чтобы она читала c и выводила третий символ?
>>1355122В стандартной библиотеки все загажено каскадами шаблонов. К сожалению я не настолько крут, чтобы расшифровать эти джунгли.>>1355126>Когда проходит нужное количество времениВот мне интересно как это происходит, как система считает это время? Каждый цикл например if (counter >= sleetime) ? Но это же затрачивает ресурсы.
>>1355204> Но это же затрачивает ресурсыНевозможность приостановить бесполезный тред еще больше ресурсов затратит. Тем более потери на проверку счетчика очень незначительные по сравнению с общими потерями на работу ОС с потоками.
>>1355118Обернута функция системного апи какая-то. Например это https://docs.microsoft.com/en-us/windows/desktop/api/synchapi/nf-synchapi-sleep
>>1355204>как система считает это времяЕсть такая штука на уровне процессора, как прерывания. Если по-простому, то это событие, при котором процессор бросает всё, что делает, и берётся выполнять обработчик прерывания. Среди них есть прерывание таймера, которое происходит с одинкаовым интервалом. Когда случается прерывание таймера, ядро смотрит, что прошло столько времени, значит, состояние текущего треда можно сохранить и запустить другой. Вот там внутри где-то и есть какой-нибудь список из спящих тредов.
https://www.youtube.com/watch?v=mUQZ1qmKlLY - хуета или достойно внимания?Вкатываться в ойти не собираюсь, это так, для общего развития, так что расслабьте булки.
>>1355620Почему именно видео в хуёвом качестве и на английском? И если ты разом собираешься это всё смотреть, то мало что отложится в голове, надо на каждую тему по несколько часов уделять.
>>1355673Именно это потому что увидел это видео в меме.Так то я уже нашел по совету достойные книги по сетям и крестам.
>>1355691Самому их достоинство сложно определить, я только начал, но их мне посоветовал знакомый, с 10-летним стажем джавы, работающей удаленке за четверку грина, а ему я доверяю.
>>1355708Я видел как кто-то в треды скидывал эту книгу, говорил, что слишком сложная.Я сейчас это буду читать: http://naymov.com/edu/ukit/olifer.pdf
Что можно прочитать, чтобы начать писать на плюсах как можно быстрее (при условии, что знаю другие ЯП)? stdlib не предлагать.
Написал хелло ворлд, скомпилировал, а бинарник весит 1.5 мб. Почему так? Может как то настраивать нужно? Помогите плиз.
>>1356277да, но какая-нить виртуалка с линуксом все равно будет необходима, т.к. студия будет на ней все ремоутно собирать и дебажить
>>1356301>>1356305Может у тебя рантайм какой-нибудь бандлится в екзешник? Пикрелейтед собрал в codelite, при запуске жалуется что не находит Libstdc++-6.dll
Тру системники тут? Есть фуллскрин приложение Opengl/directx. Возможно ли как-то поверх него разместить свое окно или просто делать отрисовку? Работаю в ядре.
>>1356334Фрапс внедряется в процесс. Нужен глобальный метод без вмешательства взаимодействия с процессом.
>>1356324Стимовский оверлей, например, выводится поверх любой вещи. В теории реально, но как это сделать...
Анончи, подскажите, декомпиляция - миф или реальность?Шарпы, например, легко декомпилятся.Проебал исходники, экзешниу есть. Люто не хочу писать заново - шансы есть?Из гугла нашел только некий бумеранг (как-то не сработало) и декомпайлер от аваста, но с ним вообще не разобрался.
>>1356453Декомпиляция в каком-то виде существует - кури HexRays, но это, фактически, дизассемблер, который обратно в С попытались собрать, т.е. убожество.
>>1356453Миф. С++ компилируется в машинный код сразу понятный процессору. C# в байткод, который потом интерпретирует виртуалка. Если хочешь освежить память/забыл какие алгоритмы использовал, подрубай иду/олю и смотри. А так в любом случае придется писать все заново.
>>1355211Так и нужно было сразу, [] - оператор для Си-червей пидоров, нормальные С++ господа используют array или string
>>1356737потому-что ты вообще не понимаешь, что делаешь. Вперед читать книгу про функции и возвращаемые значения
Аноны, нормально ли учить фреймворк Qt без углубления в реализацию? Если создание окон/диалоговых сообщений я еще могу осилить с помощью винапи какого-то, то блютуз/веб библиотеки для меня скорее как магия выглядят. Как это вообще реализовывали, если в плюсах нет средств для этого?
>>1356782Абсолютно вся работа с чем-то, кроме заранее выделенной памяти - это дерганье API операционной системы.Учить фреймворк нормально без его кишок. Он для этого и фреймворк, чтобы быть самым низким слоем абстракции, вместо API системы
>>1356812То есть сами запросы в веб/блютуз и другие беспроводные сети идут от системы, а возможность их использования зависит от языка ну или библиотек?
>>1356815вообще все идет от операционной системы. У юзеров прямого доступа вообще ни к чему. Все системное API это "Уважаемая операционка, сделай пожалуйста вот это", не более.Все это апи - чистая сишечка обычно, Микрософт немного С++ потом добавил.
>>1356875Винапи - сишечка. КОМ-параша - С++. Там кое-какая работа со звуком доступна только из КОМ-параши, например
>>1356868А каким образом тогда Qt предоставляет кроссплатформеность? Он для каждой системы хранит пак функций которые заменяют аналогичные для другой системы?
Кому не лень, объяснитепочему yoba=3;cout<<yoba++ + ++yoba + ++yoba; будет 15а не 11 если считать как дауни не 14 если все же брать во внимание, что после сложение, посфексный инкримент перезаписывает yoba-y но откуда 15 то?
>>1357345Вот тут например выходит 14https://ideone.com/elwYPGА все потому, что порядок вычисления в этом случае неопределен:https://en.cppreference.com/w/cpp/language/eval_order#Undefined_behavior_2
>>1357392а по итогу чемуу доверять? если не сложно, можно подробнее про эту неопределенность и как вообще логику найти?
>>1344551>Шоб друзьям не стыдно было показатьваше место у параши -> https://2ch.hk/gd/res/550538.html
Посоны! помохите тупому.Не могу найти как в распределении бернулли поменять параметр распределения на живом объекте после конструктора. На цэпэпэ рефе нихуя нет. Функций у класса beroulli_distribution с гулькин хуй и ничего похожего не set я там не вижу. Мне нада соотношение рандомных булей поменять несколько раз в прожке.Или из вариантов делать только временный объект с нужным параметром?
Господа крестоносцы, такая вещь. Пишу dll либу для рабочей задачи. Раньше использовал чистый C. Сейчас всю внутреннюю работу перевожу на C++. C использую для фронтенда либы. Функции в либе при создании каких либо объектов (не экзепляров класса, а просто дескрипторы) возвращали статус об отсутствии свободной памяти путем проверки указателя на NULL после аллокации памяти. В С++ прочитал про два пути. Аллокация с new которая кидает bad_alloc и аллокация с new(std::nothrow), после которой идет проверка на nullptr. А как лучше делать проверки с вещами вроде std::string name = new std::string(ptr_str) или vector<int> data = new vector<int>(random_size), в случае когда память внутри объектов не аллоцировалась? С меня за благодарность new coulpe<tea>[2];
>>1357468В статье об этом сказано.Алсо, в 2014 и даже позже, были актуальны старые компиляторы с неполной поддержкой 11
Вообще есть разница как инициализировать все элименты структуры на 0. Например вот так:STRUCTURA moyaStructura;memset(&moyaStructura, 0, sizeof(STRUCTURA));Или просто так:STRUCTURA moyaStructura = {};
>>1357479Насколько я знаю, в STL с отключением исключений всё довольно плохо. Но я вплотную этим не занимался, так что может что-то есть.
>>1357479по хорошему, ты пишешь сишный интерфейс, который полностью инкапсулирует все говно внутрях, и где-то внутри ты все эксепшены и ловишь
>>1358025Число больше размера табуляции - вот и колбасит. И, да, во втором цикле твоё j должно быть меньше количества столбцов, а не строк
Блять хули Седжвик такой сложный?Только начал читать, а там ёбаная математика и нихуя не подробно. Не то чтобы вообще ничего не понятно, но некоторые вещи не понятны. Как читать книгу где не всё понятно?
граждане, проблема такого рода. есть проектик, внутри него собирается в качестве либы библиотечка снмп++. с помощью силанга все собирается, с помощью гцц выпадают ошибки - undefined reference на определенные в либе константы. в чем может быть проблема? у гцц как-то отдельно настраивается линковщик?
Нюфажий вопрос:Вот хочу я создать свой первый шаблонный класс.В примерах шаблонного класса вижу вот такое:template <typename T, int N>Вопрос: зачем нам вообще объявлять переменную N в поле template? Что нам это даст? Подразумевается, что N это нечто, которое будет использоваться в конструкторе.
>>1358657чтобы смочь где-то сделать статический массив, напримерНапример std::array<int, 5> не аллоцирует память на хипе, т.к. N - это компайл-тайм значение
>>1358600>Дропать и читать другую. >>1358601>Это тебе не формочки на хтмл+цсс клепать. Учи математику или дропай книгу>Может есть что по алгоритмам, но с более подробным матаном? Полистал Кнута, там вроде бы матана побольше, но, судя по отзывам, в том числе в шапке, он не менее сложный да ещё не на плюсах
>>1358685Старайся читать на несколько раз и понимать, бери усидчивостью. Седжвик пишет феноменально скучно и хуево.
>>1358685Кнут не то чтобы сложный, его просто сложно читать. Что-то вроде справочника, сухой и точный язык. А по алгоритмам может аноны курсы какие посоветуют, я лично Седжвика осилил с базой 1 курса универа по тех. специальности. А точнее: что не знал - гуглил, и пытался найти разъяснение человеческим языком
>>1358661Спасибо, но я слишком тупой и ничего не понял. Впрочем, неважно.Другой нюфажий вопрос:Если я хочу перегрузить оператор для созданного мною класса, то я могу делать это как внутри класса в области "public", так и вообще снаружи класса, я всё верно понимаю? Спасибо!
>>1358698>Если я хочу перегрузить оператор для созданного мною класса, то я могу делать это как внутри класса в области "public", так и вообще снаружи класса, я всё верно понимаю?Не все операторы можно перегружать снаружи класса, например как =, и не все можно перегрузить внутри класса, некоторые через friend функции, как >><<. Учти, что некоторые операторы нужно перегружать попарно.
>>1358717Спасибо, анончик.Нагуглил вот такое:template <typename T1> friend ostream& operator<< (ostream& out, const Matrix<T1>& m) Объявление перегрузки собственно оператор вывода для шаблонной матрицы мне и нужно было перегрузить
>>1358698По поводу статического массива. Размер класса равен сумме размеров его полей. Допустим у тебя есть класс, где ты строго определил массив int размерностью 10. Тебе не нужно не больше не меньше, ровно столько.Если ты пишешь так:class A{ vector<int> a}То тебе при изменении размера vector<int> нужно будет писать код, чтобы ловить исключение об отсутствии памяти(можно не писать, но программа с вероятностью 1/1^6 будет падать при некоторых условиях). А размер класса равен размеру sizeof(vector<int> a). Данные в векторе при этом хранятся на другом участке памяти, а не внутри класса.А если ты пишешьA{ array<int, 10> a}То во время компиляции a - будет статическим массивом из 10 int'ов. и размер класса A будет равен sizeof(arrray<int, 10>a) - в данном случае 44 байта.Перегруженные операторы можно объявить в виде функцииГлавное что бы внутри класса было дружественное определениеfriend A operator+(A l_ob, A r_ob)
>>1358743хуево работать с красноглазым говном, но я бы, вероятно, раскурил студийную кросскомпиляцию под линукс
>>1358731Спасибо большое за подробное объяснение!притворюсь что понялПодскажите ещё, пожалуйста, а как мне создать функцию, которая будет принимать как аргумент произвольный итератор, а не итератор конкретного типа (то есть не итератор по вектору, по мэп'у, етц.)? Спасибо!
>>1358754Не обязательно красноглазить. Качаем Visual Studio Code и плагины для cmake и дебага. Но если у тебя в проекте еще какая нибудь CUDA, и прочая залупа которая требует дополнительного компилятора - приходиться ебашить.
>>1358775Вот ты и спалился, первокурсник. Есть ПО не из раздела компьютерных игр, или всяких фотошопов, где как раз большая доля продаж - серверные версии под linux - Встроенные системы, сервисы с машинным зрением и всякие СУБД, за которые клиент отдает 7000$/шт. Вот и приходиться изъебываться с кросс-платформеностью.
>>1358864Ты пойми - это не ПО, которое ставиться на комп для одного юзера аля фотошоп или игрулька. Гугли цены на корпоративные решения Oracle DB. У них, по твоему, небольшой объем продаж?
>>1358896Цена образуется не из крутизны софта, он может быть вообще бесплатным.Микрософт, допустим, может себе позволить продавать винду/офис занедорого тупо за счет объемов продаж.>решения Oracle DB. У них, по твоему, небольшой объем продаж?В штуках относительно небольшой.Ораклу, только чтобы в ноль выйти, нужно ставить очень высокий ценник.Вон, например, продукты Embarcadero тоже стоят по полтора ляма, и че?
Плюсы, ХЭЛП ! Я блять уже заебался, хуй знает что не правильно. Вкратце ошибка при перегрузке оператора ввода вывода.https://www.codepile.net/pile/7R798Ngk
Может кто подсказать с чем может быть связана ошибка? Весь инет облазил, точного ответа не нашёл. Если в кратце - пытался через консоль собрать Qt для запуска на других пк, но видимо что-то сломалось и теперь проекты вообще не компилируются. Выдает пик. В инете пишут что проблема с окружением, но в файлах системы я ничего не менял, так что причина проблемы для меня неясна. Сейчас заново качаю установщик, но может кто подскажет в чём могла быть ошибка?
>>1359080Всё стоит, я уже скачал новую версию впрочем. Не ебу в чём ошибка была, в инете всё как-то размыто и советуют какие-то параметры добавить в pro файл, при том что он не менялся вообще.
>>1359197я бы посоветовал таки собираться либо собираться комплектным MinGW, либо полноценно ебашить в студии с qt плагином
Аноны, можно ли как-то сохранить данные обьекта map? Мне нужно внести данные пользователя, а после использовать их в другой момент времени? Это в файл пихать нужно, а потом считывать и заново создавать мапу?
>>1359267ну как бы, все, что ты можешь хранить в файле, это какие-то байты.Соответственно, тебе надо написать некий функционал, который конвертирует твою мапу в байты, которые можно записать, и потом такой же функционал, который принимает байты, и создает из них мапу.Если у тебя мапа самая простая, а-ля uint32,uint32, то вполне можно сделать хуйню типа, первые 4 байта - количество элементов, и дальшее читаешь по 8 байт, кастишь к числам, и в пустую мапу записываешь. Это все несложно, да и весьма хорошая задача для обучения.
Всё я заебался учить новые фишки языка и нигде их не юзать, пока начну учить Qt, чтобы хоть там их юзать в будущем
не бейте, лучше обоссыте. начала учить ваш c++, пока что остановилась на указателях. сколько мне лет еще это учить, чтобы стать тру кулхацкером программистом? приземлите кто-нибудь меня, мне кажется, что у меня нет будущего
>>1365200Зелень, тебе все равно никто не поверит.Учи, читай книги из шапки, практикуйся и ищи хоть какую-то работу, чтобы получать опыт уже реальной разработки.И вообще https://2ch.hk/pr/res/1358809.htmlПравда, его скоро перекатят в C++ #84, но это хотя бы последний на данный момент тред.