Вместо шапки — https://github.com/sosachbot/cppthreadhat/wikiОтветы на все вопросы:- http://en.cppreference.com/w/- http://www.cplusplus.com/reference/Прошлый:https://2ch.hk/pr/res/1099142.html
Поясните своими словами за объявление, определение и инициализацию. Желательно это сделать с точки зрения того что в этот момент происходит с памятью, где что выделяется, куда что записывается и на что начинает указывать.Как я понимаю:1. Объявление - это присваивание некоторому адресу в памяти имени переменной2. Определение - ???3. Инициализация - записывание исходного значимого для кода значения в область памяти, начиная с адреса, присвоенного этой переменной, до адреса+=длина переменной в байтах.
>>1110807
>>1110852Вернее адрес даже не компилятор считает, а он сам во время выполнения находится, глубина стека, все дела. Угу, так оно и есть, скорее всего - он же не знает через сколько рекурсий ты бедную функцию пропустишь. Не проснулся ещё, извиняй.
>>1110807Объявление - это объявление имени, ODR-использовать нельзя (брать указатель на неопределённую функцию или неопределённую переменную, брать размер от неопределённого класса, определять переменные неопределённого класса или включать их в определение другого класса и т.д.).Определение - определение места хранения / определение тела функции и класса а также определение места хранения всех статических не-инлайн-переменных классаИнициализация - первое присвоение значения переменной.>Инициализация - записывание исходного значимого для кода значения в область памятиЕсли вкратце - нет.> начиная с адреса, присвоенного этой переменной, до адреса+=длина переменной в байтах.Если вкратце, для классов и структур - нет.
Если какой-то член нестатический член класса неопределён, то и сам класс не определён.
>>1110862> определение места хранения всех статических не-инлайн-переменных классаТочнее, использовать их до определения нельзя, но отсутствие определения их не вызывает неопределённость класса, вроде.
Есть ли какая-нибудь функция STL, что б проинициализировать вектор какими-нибудь начальными значениями??Или единственный способ это создавать цикл, в котором каждый элемент инициализируется по одному?
>>1110902> Есть ли какая-нибудь функция STL, что б проинициализировать вектор какими-нибудь начальными значениями??Да. Конструктор называется. Одна из его перегрузок - как раз создать вектор в н элементов (первый параметр), инициализировав его каким-то значением (второй параметр). Разумеется, у твоего кастомного типа в таком случае должен быть реализован конструктор без параметров и оператор присваивания.
>>1110912спасибо,а можно ли инициализировать вектор обычным массиом?
>>1110918Даhttps://ideone.com/iTwSLd
Анон как сделать чтобы шаблон инстанцировался по дефолтному параметру https://wandbox.org/permlink/uBXPgXlOg0KbtCkE
>>1111000Дык он же пишет тебе, что не может Func дедуснуть. Дефолт для Функ сделай.
>>1111045Дефолт для параметра или аргумента? Для параметра я не могу пак перед F, поставить а без него не указать специализацию для дефолта. Короче хуйня какая-то выходит, смотрел тут все выводит http://en.cppreference.com/w/cpp/language/template_argument_deduction
>>1111056>смотрел тут все выводитТам твой случай находится в списке "non-deduced contexts".> пак перед F, поставить а без него не указать специализацию для дефолтаДефолтные параметры - это не специализация. Не знаю, что ты там подумал, ты даже не пробовал.https://wandbox.org/permlink/iG0o15xrIqYJJ8QH
>>1110933а если есть некий массив int Mas[3] = {1,2,3, 4}и нужно проинициализировать вектор его элементами массива со второго Mas[1] по 3ий Mas[2] , то как быть?vector<int> vInt = ??
>>1111075>ResourceType*()Вот это меня смутило, почему в скобках нет параметров.
>>1111092Если у тебя в дефолте Args пустой, то какие там могут быть аргументы? Надеюсь, что ты не удивляешься тому, что параметр пак может быть пустой, так как ты в соседней строчке пишешь <>.>>1111088Ranges TS ещё не завезли, так что быть так:vector<int> vInt (begin(Mas)+1,begin(Mas)+2);> со второго Mas[1] по 3ий Mas[2]с как доллар, в как трезубец
Хотя, нахуй там бегин, там и так можно:vector<int> vInt (Mas+1,Mas+3); +3 потому, что второй параметр - это итератор/указатель на следующий за концом, а не на конец.
>>1111104>(begin(Mas)+1,begin(Mas)+2)блин, вот почему не сделать как у людейMas[1:3]в 2017м ебаться с указателями
>>1111092https://wandbox.org/permlink/VQU4FqGymEct5NcvБлядь все сделал правильно еще вначале, а компилятор выдавал непонятную хуйню тупо из-за опечатки (было AgrTypes в одном месте вместо ArgTypes). Вот я довен, несколько часов потратил на эту хуйню.
>>1111104Это будет работать только для типов с конструктором без параметров. Короче все, проехали.
В чем прикол вектора указателей на пользовательский класс??предположим есть пользовательский класс Aя зарезервировал для такого вектора 4 эмемента и сейчас они проинициализировались чем-то вроде 0000000vector<A*> vpA(4)как мне сделать так, что бы эти указатели указывали на реальные объекты класса Акак такое вообще провернуть?
>>1111118std::vector<A*> v = { new A, new A, new A, new A };http://en.cppreference.com/w/cpp/language/aggregate_initialization
>>1111111Ах ты пидарасина гет проебал
>>1111112Схуяли? При чём тут число параметров у конструктора, если у типа есть копи конструктор?
>>1111112Или ты про ограничение вектора говоришь? Тогда зачем ты (или не ты) спрашиваешь про вектор?
>>1111118>что бы эти указатели>что быКак же вы заебали!
Бамп байтоёбам (уже не совсем) блеатьКакие дела, чо поделываете, как там стандарт новый
>>1111204Уж лучше бы на си кодили
>>1111204>Какие дела, чо поделываете, как там стандарт новый
>>1111204Решаю AOC на плюсах, модули проебались до 20 года, до сих пор куча легаси, теперь можно писатьi = i++ + i ;без UB.
>>1111202Здесь обсуждают строго типизированные языки, а не компот из исторического говна
>>1111433>i = i++ + i ;>без UBС каких это пор?
>>1111454С 17 стандартом.https://stackoverflow.com/questions/47702220/what-made-i-i-1-legal-in-c17
>>1111454А, погоди, я пизжу, i = i++ + i это до сих пор UB.
Двач, где физически находится статическая, динамическая и автоматическая память?Правильно ли я понимаю что автоматические переменные (на стеке) находятся в кеше процессора L3?
Ряяяяя, нужно используя рекурсивные шаблоны нужно реализовать оператор для печати std:tuple:auto operator<<(std::basic_ostream<Ch, Tr>& os, std::tuple<Args...> const& t)Помогите дауну, тут в 5- строк должно выходить
>>1111681Не правильно. Грубо говоря, статическая и прочая память программной природы. Кеш процессора же можно сказать аппаратный, он вертел все твои программы и никакого представления стек там или ещё что не имеет.Поправьте кто, если заблуждаюсь.
>>1111681>Двач, где физически находится статическая, динамическая и автоматическая память?В адресном пространстве, которое может быть виртуальное и настоящее, а физически данные могут хоть на другом конце шара находитьсяи подгружаться по мере надобности. >>1111685Часто в процессорах разделяют кэш инструкций и кэш данных, так как одно с другим никогда не пересекается, и можно определить оптимальную технику для кэширования того и другого.А так - да, кэшу похуй. И уж тем более ничего в кэше не хранится, кэш - исключительно временное хранилище.>>11116831000 рублей и я сделаю.
Если сразу несколько потоков тормознулись на ожидании свободного мьютекса, то очередность возобновления будет в том порядке в котором они его пытались захватить или нет?
>>1111895Почитай цппреференс. В FIFO нет никакого смысла в недетерминированных условиях.
Двощь, ты когда-нибудь контрибутил в Open Source? Думал вкатиться пока новогод, а потом как-то с учёбой и работой комбинировать если будет время. Обязалова-то 0.Я полуркал за Blender. Лепил как-то разные чайники в этой программе. Код сложный, но можно думаю разобраться. Какие вообще подводные камни?И самое главное, можно ли потом это использовать как аргумент на собеседованиях?
>>1111911У меня поток владеет мьютексом практически постоянно, освобождая его только для того чтобы захватить обратно. Так сделано для перформанса. Иногда воркерам нужно вклиниться в этот промежуток для внесения изменений и с обычным мьютексом они могут ждать до второго пришествия. Нашел https://github.com/yohhoy/yamc/tree/master/include fair_mutex как раз то что нужно.
>>1111997Да и еще, можно было нагородить какие нибудь очереди с cv, но я в мультитрединге еще не оче.
Нужно ли производить какие-либо пляски при записи одним потоком данных .push ем в queue, и чтениеудалением .popом другим потоком?
Подскажите годный компилятор для linux, для kali rolling в частности
>>1111937>Какие вообще подводные камни?Можешь вырасти как профессионал.>можно ли потом это использовать как аргумент на собеседованиях? Да.
>>1111937>Какие вообще подводные камни?Заниматься лучше тем софтом, который интересен, а так - никаких.>>1112184Нужно. Потокобезопасность в контейнерах STL только на уровне доступа к элементам.>>1112222Кланг, ясен хуй. Моложе, чем ГЦЦ, но перспектив больше.
Зачем мы с С++ ебёмся, если за жс платят больше в среднем
>>1112301Спасибо
>>1112314Ради того, чтобы не иметь дела со всем этим зоопарком жс и быть подальше от других жс разработчиков хипсторов и пидорасов
>>1112301а есть тутор как установить?
>>1112301>>1112326всё, нашёл, осталось разобраться
>>1112321Собираюсь кстати стать хипстором, штаны подвернуть, смузить пить и т.п., но продолжать писать на с++какие подводные
У нас пара вакансий на 200к+ будут открываться через месяц-другой. И опять никого не найдем, потому-что вокруг одни долбоебы и смузихлебы. Эх, беда..
>>1112338если ты тянешь на 200к кресты в рф это значит, что ты тянешь на овердохуя за границейи зачем спрашивается сидеть
>>1112342Ну, лично я планирую внутри конторы в США перевестись, у нас это возможно.
>>1112344Все правильно делаешь, H1b получить почти невозможно сейчас, L1 изи под пивас раздают.>>1112338Мы жс дебила на 3500$ найти не можем который способен объяснить простейшие вещи, без алгоритмов и прочего дрочева, я даже не представляю как тяжело найти плюсовика нормального
Ерохин уехал в сан франциско как тимлид Эпама, как узнать сколько он получает, а то мамка постоянно меня сравнивает с ним и чмырит
>>1112338>опять никого не найдемтак и хорошо, 200к экономии, или перепродаете джунов по цене синьоров
>>1112378Так у нас люди на проект нужны, не могу же я его вдвоем с коллегой писать, когда начальство хочет быстрее
>>1112338Гюльчатай, послушай...
хоспаде как же хочется модули
>>1112338Пиши требования и вопросы например.
>>11124693+ года С++, не быть идиотом, разговорный английский.Желательно: Qt, драйвера под шинду.Как показала практика прошлого набора, даже просто С++ никто не знает.
>>1112527>драйвера под шиндуСейчас еще этим кто-то занимается?
>>1112539Как видишь.
>>1112527Есть 3 года номинального, но в большей степени на Qt (полноценные пользовательские приложения, многопоточность, работа с сетью и внешними устройствами).Драйверы не писал. Разговорный английский на уровне индуса.Жаль.
>>1112527>3+ года С++вообще не работал прогером, если не считать одной халтурки, пока что только для себя пишу>не быть идиотом+>разговорный английский.Есть, но не флюэнт. Устная речь небыстрая.>Желательно: Qt, драйвера под шинду.Писал халтурку на Qt вперемешку с WinAPI, пользуюсь креатором, как ide. Драйеры не писал, в байтоёбство умею.>Как показала практика прошлого набора, даже просто С++ никто не знает.C++ никто полностью не знает, но я хотя бы знаю многое и многое могу объяснить, тем более со стандартом на руках.ДС.
>>1112546> вообще не работал прогером, если не считать одной халтурки, пока что только для себя пишуНу ты же понимаешь, что это сразу отказ, еще на уровне девочки-эйчарки?
>>1112338>И опять никого не найдем, потому-что вокруг одни долбоебы и смузихлебы. Эх, беда..Да пошел ты нахуй, червь задроченный. Бери тех, кто приходит тратить 8 часой своей жизни в день на твою быдлоработу. Мне, может, вообще кодить не нравится, а хочется зарабатывать уличным музыкантом как в Европе, а приходится писать код на ограниченного задроченного мудака, который еще и носом воротит.
>>1112334От байтоебства может случиться когнитивный диссонанс
>>1112703Всем похуй, что тебе там хочется. Либо соответствуй, либо иди нахуй.
>>1112570Да ты охуел.
>>1111109Итераторами
Двач, я понять не могу, что конкретно в C++ является compile time, а что run time? Может список какой есть?
>>1112767Ты про поведение? Так это надо с примерами, то, что ты просишь - это зубреж, а оно нахуй не надо, ты инженером все-таки решил стать или математиком блять
>>1112766Итератор это указатель.
>>1112730Есть фул на ютубе?
>>1112767Когда собираешь приложение из исходников - это компиляция (build). Когда запускаешь приложение - это выполнение (run).
>>1112774Не обязательно
>>1112784И правда ведь.
Пилю прогу для анализа звукового сигнала.Пока есть генератор, модулирующий синус, и заливающий его в звуковую карту через portaudio.Генератор вызывается, когда portaudio требует коллбеком заполнить очередной буфер кучкой семплов.При этом нужно еще передать этот сигнал куда-нибудь для отображения графики с формой сигнала, и на последующую обработку (фурье, например).Графика (уже) выводится через opengl в отдельном потоке, а данные получает из общего буфера (простой std::shared_ptr<std::array<float>>), в который данные кладет главный поток, тем самым колбеком. Никакой толковой конкурентности, время от времени видна гонка данных.Вопрос в том, как правильно реализовать эти промежуточные буферы, или где взять хорошую готовую реализацию?
>>1112793Такое чтоль пилишь? https://juce.com/doc/tutorial_audio_thumbnail
>>1112774>Итератор это указатель.Здрасте.Вот если бы ты сказал, что итератор произвольного доступа это указатель базаров нет, но остальные 4 вида итераторов, не обладают всеми свойствами указателей
>>1112813Не совсем. Делаю дешифратор морзянки. Графика и звук просто для демонстрации что происходит.
>>1112817Шумы фильтруешь небось?
>>1112818Я пока нифига не делаю кроме пищалки и вывода полосочек.
>>1112774итератор - это абстракция с перегруженным оператором дереференса и инкремента, деинкремента для bidirectional, и - + для random access.Указателем итератор является только в сырых массивах
Салют, двач! Помоги тупому учиться. Пытаюсь написать программку для создания динамической структуры, представленной на пикрелейтед. Ссылку нужно осуществить через поля-указатели. Не могу понять как осуществить взаимосвязь средних блоков. Правильно ли я понимаю, что фактически здесь две структуры: бинарное дерево и взаимосвязанные блоки?
Поясните за практику расстановки инклудов в файлах. Допустим у меня есть проект из 10+ .cpp и .hpp к каждому из них (кроме main). Во всех cpp/hpp нужны примерно одни и те же либы (в основном из stl). В cmake для удобства я собираю каждый cpp как отдельную статическую либу, хотя по отдельности, да и вообще вне проекта, распространять и использовать их не планирую. Можнонормально ли будет запилить какой-нибудь файл global_include.hpp вообще со всеми необходимыми инклудами внешних зависимостей и инклудить его во все подряд hpp, из которых оно потом будет попадать в cpp? Или нужно в каждом hpp и cpp файле всё заново прописывать? Как всё это вообще удобно и по человечески сделать?
>>1112793>Графика (уже) выводится через opengl в отдельном потокеНахуя такой гемморой? Сто лет уже синхронизация есть: https://www.khronos.org/opengl/wiki/Sync_Object
>>1112833>программкуБрр.Не понял что это такое и что из себя должна представлять подходящая структура. Типа, она в каком месте динамическая, в какие стороны динамируется? Можно добавлять блоки во второй ряд? Или вот это чудо стрелками вниз указывает на такие же конструкции? Или две стрелки указывают на ещё один ряд взаимосвязанных элементов по типу второго слоя? Или всё сразу, там что может быть произвольное число чередующихся блоков и слоёв с произвольным количеством элементов в слое?
>>1112878без второго ряда, вниз.
>>1112895Хм, тогда это односвязный список по сути. Нет никакого практического смысла (только если образовательный) делать эти двухсторонние связи указателями, можно просто заменить на три поля, верхнее, левое и правое и добавлять сразу такие блоки.А ещё у каждого элемента указатели лишь на два объекта. Либо соседний и нижний, либо два нижних. Можно единообразно это делать в виде одной структуры на один блок, а смысл первой и второй ссылки восстанавливать во время обхода этой гусеницы. Но это какое-то извращение. Впрочем, не слушай меня, я тоже только учусь. Но могу попробовать написать это, почему бы и нет.
>>1112793shared_mutex
Извините за лабы в треде, но я просто уже перепробовал всё, спрашивал у самых разных людей, а преподаватель шлёт нахуй вместо помочь разобраться.Суть: Есть файл, в нём квадратная матрица, её нужно с помощью функций fstream считать, потом высчитать её определитель и его значение вывести в другой файл.https://pastebin.com/3NEtY3XgЧто не работает:Не выходит присвоить элементам массива соответствующие значения из файла. Строку "in » arr[j]" легко найти по последнему комментарию.Аноны, очень надеюсь на вашу помощь. Не хочу попасть на допку из-за одной лабы.
>>1112982когда ты берешь строку из стрима - это ссылка на память а strtok модифицирует строку, и в результате кораптишь стрим, тебе надо подругому считать
>>1112997Ого, спасибо, что отовался!Я просто переделывал это задание из варианта с использованием классических функций C, вот он - https://pastebin.com/uciJ026Q Так как посоветуешь посчитать размеры матрицы в файле?
>>1112998после подсчета строк надо перемотать файл и взять первую строку, скопировать разбить на токены и посчитать колонки (матрица у теб я всеравно прямоугольная)вот код (ленивый ты хуй и мать у тебя членодевка, надеюсь ты не сдашь и тебя выгонят)https://pastebin.com/UZU24MCU
>>1112999Ух ты ж бля, заработало, спасибо тебе огромное!Да, всё почти так. На самом деле просто сейчас больше времени пошло на дописывание более сложных лаб, но действительно тебе очень и очень благодарен.
>>1113012отсоси, и с новым годом, я бухой и праздники, так бы хер бы чтото смотрел
>>1113013Новогоднее чудо уровня /pr
Здравствуйте, товарищи.Мне нужно выделить из строки формата XX-YY-ZZ поочерёдно XX, YY и ZZ и потом их вывести отдельно друг от друга.Это буду двухзначные числа.Вроде бы не очень-то и трудно, но я всё никак не найду необходимый инструмент для этого.Очень прошу, подскажите, пожалуйста, чем для этого нужно пользоваться.
>>1113038data = "XX-YY-ZZ";cout << data.substr(0, 2);cout << data.substr(3, 2);cout << data.substr(6, 2);
А почему std::unique_ptr<Gdiplus::Bitmap> gdi_p = std::make_unique<Gdiplus::Bitmap>(hBitmap, NULL);мне пишет чтоОшибка C2664 "Gdiplus::Bitmap::Bitmap(Gdiplus::GpBitmap )": невозможно преобразовать аргумент 1 из "HBITMAP" в "const WCHAR "
>>1113064Вопрос снят.
Как считать с текстового файла в кортеж std::tuple<Args...> по соответствующим типам? Я уже 2 дня строю всякое дерьмо и каждый вариант не компилится.
>>1112835Можно, если у тебя именно заголовки стл, или внешних зависимостей, или заголовки которые не планируется часто редактировать, то имеет смысл загнать их в прекомпилированный заголовок. Еще и сборка быстрее станет.
>>1112836Чтобы не блокировать окно консолькой, через которую я ввожу сообщения для генерации морзянки.
>>1113038Ебани на Boost::Spirit
Анон, есть шаблон стека MyStack2, https://pastebin.com/JrRURsKBреализованный с помощью односвязного списка,в реализации оператора = на строчке 72возникает ошибка:'=': cannot convert from 'int ' to 'MyStack2<int>::Node 'почему я не могу создать там новый список, выделив память по указателю на head, я не могу понять, и еще,можно ли реализовывать конструктор копирования через оператор присваивания или надо отдельно там все прописывать, потому то объект еще может не существовать для присваивания в него чего-то (здесь я тоже запутался)?Помоги, плиз
>>1113038flex, bison а вообще регекспы например
>>1113079смотри в сторону Cereal, например, или же если ты хочешь раскручивать кортеж вручную, то надо что-то вроде такого https://ideone.com/IIqTJcЕбаненький пример, но концепция должна быть понятна
Что здесь может быть не так?Уже собирал и пересобирал проект и солюшнособенно мне непонятна выделенная ошибка
>>1113079Args... должны быть известны на этапе компиляции. Т.е. если ты точно не знаешь формат файла - то вообще никак.
>>1113123потому что надо смотреть не error list, а build output, там хоть что-то можно разобрать, а вот это для c# петухов
>>1112897Это задание из самоучителя, плюс я не пойму как это сделать через указатели, но спасибо за ответ, анон.
>>1113123Сделай #include <iostream>Очевидно же, блеять!
>>1113096>>1113083в булочную тоже на самолете ездите?
Помогите, вот примерный кусок, который хз как обойти. Как в класс CSVParser скопировать поток?class CSVParser {std::ifstream file;CSVParser(!?!?) что в конструкторе?}std::ifstream file("test.csv");CSVParser parser(file);Вопрос быть может и ебланский, новичек я, хз как такое прогуглить, за конкретизацию уже большое спасибо, мне лишь бы добраться до инфы.
>>1113247референс передайCSVParser::CSVParser(ifstream& ifs)
>>1113247class CSVParser {std::ifstream file;CSVParser(std::string filename): file(filename){}}CSVParser parser("test.csv");
>>1113079Типо такого? https://wandbox.org/permlink/0PiIDzQIYaH1eILi
>>1112816>Вот если бы ты сказал, что итератор произвольного доступа это указатель базаров нетНихуя. Итератор может вообще никуда не указывать, а текущий элемент в себе хранить, ты можешь хоть функцию-генератор в рандом аксесс итератор обернуть.
>>1112982>а преподаватель шлёт нахуй вместо помочь разобраться.И КОНЕЧНО ЖЕ ты не сделаешь так, чтобы нахуй пошёл он, верно?>>1113237Регекспы - это самый нормальный инструмент для этого. То, что в плюсах нужно объявить ажно три переменных для того, чтобы их использовать (STL) - это проблема плюсов.>>1113123Ты хотя бы первые строчки прочти, уёбок. Крмпиляторы плюсов иногда могут высирать кучу бреда из-за одной опечатки.>>1113283Это неправильно. ifstream не копируется, он только мувается, поэтому если прям до жопы нужно по ссылке передать, то нужно передавать по рвалью-ссылке, и передавать std::move(файл).Иначе ты нарушаешь принципы использования ссылок.
>>1113344> Это неправильно. ifstream не копируется, он только мувается, поэтому если прям до жопы нужно по ссылке передать, то нужно передавать по рвалью-ссылке, и передавать std::move(файл).Ты прав с точки зрения семантики. Но товарищу и так очень тяжело, грузить его мувами и рвэлью перебор, кмк.
Новичек вкатившийся. Надо захешировать openCV::Mat используя вот этот хэш. https://github.com/ron4fun/xxHash/tree/master/src/C%2B%2Bhttps://github.com/Cyan4973/xxHash/blob/dev/xxhash.hФункция хэширования принимает следующие объекты(const void input, size_t length, unsigned int seed);с seed все ясно -- это для генерации одинаковых хэшей при одинаковом сиде. А вот что есть первые два параметра?Правильно ли я понимаю, что void input это указатель на адрес в памяти входных значений, а size_t это их длина?Если так, то что передавать в первый параметр вполне ясно, а вот что передавать во второй? Вернее как узнать, какова длина объекта в памяти?
>>1113354> указатель на адресштоблядь
>>1113356да, хуйню написал. указатель на объект, вернее.
>>1113354>что передавать в первый параметрПоле data матрицы. Там тупо указатель на данные.> что передавать во второйhttp://answers.opencv.org/question/21296/cvmat-data-size/
>>1113314Это очевидно, но это не то решение, что я прошу. Но как буферный вариант, чтобы делать проект дальше походу придется его использовать.>>1113283>>1113344Дальше генерятся итераторы, поле которого этот поток (я, наверное, очень хуевую структуру сделал). Но суть в том, что поток мувается и уходит вообще нахуй из место где я его взял. По-крайней мере я это просто потестил на легких примерах. Мне бы этот поток аналагом глобальной переменной, чтобы я мог считывать.Std::move не вариант потому что синтаксис от того, что я просил будет отличаться. По заданию именно такую конструкуцию реализовать надо.std::ifstream file("test.csv");CSVParser parser(file);А выходит что CSVParser parser(std::move(file));
А я не понял, что не так со ссылками на ifstream. >>1113344
Двач, а разве переменные объявленные как static в block scope могут быть не zero-initialization? Иначе я не могу понять эту цитату в скобках.Variables declared at block scope with the specifier static have static storage duration but are initialized the first time control passes through their declaration (unless their initialization is zero- or constant-initialization, which can be performed before the block is first entered). On all further calls, the declaration is skipped.
>>1113404static int benis; равно нулюstatic int vagoo = calc_vagoo();calc_vagoo вызывается ровно 1 раз в момент инициализации, далее эта строка считай что "пропускается"
>>1113418Спасибо капитан, я это знал.
>>1113374>Std::move не вариант потому что синтаксис от того, что я просил будет отличаться. По заданию именно такую конструкуцию реализовать надо.Тогда разве что в структуре указатель хранить, а передавать по референсу.>>1113378В плюсах принято следующее ебланство для аргументов функций:референс - это параметр, который можно изменять и который где-то хранитсяконст референс - менять нельзя, может быть временным значениемрвалью референс - параметр, из которого можно забрать ресурс, может быть временным значением. Передать по рвалью-рефу можно только временное значение или с помощью каста или мува (это делают мувом)конст рвалью референс - нутыпонелТо есть, если ты хочешь хранить в структуре именно ifstream и передавать именно ifstream, нужно послать нахуй весь мир, передавать по ссылке и мувать в конструкторе, забирая ресурс из исходного объекта. Если тебе просто нужно заставить что-то работать, то делай, что хочешь. Если от тебя этого требуют в учебном заведении, лучше сделай так, чтобы это ни от кого не требовали, это маразм и непрофессионализм.>>1113431Ты только что спросил, как статическая переменная может быть инициализирована ненулём. Что ты знал тогда и нахуя ты спрашивал?
>>1113437Дополню: формально рвалью-референс отличается от референса тем, что первый биндится только к временным значениям, а второй - только к glvalue.То, что нельзя забирать ресурсы из объекта, переданного по референсу, это соглашение, которое языком не обеспечивается.
>>1113437>Ты только что спросил, как статическая переменная может быть инициализирована ненулём. Что ты знал тогда и нахуя ты спрашивал?>unless their initialization is zero- or constant-initialization, which can be performed before the block is first enteredstatic int benis; является zero-initialization.
>>1113437>>1113445Ладно, всё, кажется я понял этот тупизм.static int benis; - zero-initialization, может инициализироваться до входа в code block.static int vagoo = calc_vagoo(); - не zero-initialization, инициализируется когда time control passes through their declaration. (хотя почему-то студия всё равно показывает ноль в этой статической переменной при входе в code block, когда даже time control did not pass through their declaration.)
>>1113437Да, до указателя уже сам додумался, но все равно очень благодарен. Странно, что изначально им не воспользовался, что-то меня оттолкнуло, будто кривое-кривое
>>1110566 (OP)Ребята нужна помощь. Надо сделать задание пикрил. Сначало просто, потом через указатели. Просто я сделал https://pastebin.com/VKp2QDHi . Анонасы ранее посоветовали заменить Arr[0] на Arr и A на (Arr+i), сказали что это через указатели будет. Я заменил https://pastebin.com/L7C5AW1V . Препод сказала, что это не через указатели. Вопрос, как сделать это задание через указатели. Если можно, то исправив незначительно мой код с первой ссылки, если нет, то напишите пж с нуля программу(но без непонятных функций, мы прошли только if и циклы, больше ничего).
>>1113479Arr и (Arr+i) конечно же.
>>1113480Бля он звездочки проебывает. В коде правильно стоит.
>>1113479Вместо new используй malloc, вместо delete - free.a тоже замени на звездочку. Возможно, препод придирается
>>1113515Имел в виду "а в квадратных скобках"
>>1113515>2k18>c++>используй malloc
>>1113522преалоцированный кеш-пул объектов без вызова конструктора (по запросу)? ммм?
>>1113524>2k18>Не знать про placement new
>>1113525>без вызова конструктора
>>1113479https://ideone.com/PWombK
>>1113526>буд-то бы malloc вызывает конструктор
>>1113522Я пытаюсь помочь СТУДЕНТУ СДАТЬ ЗАДАНИЕ.Так что свои вскукареки про 2к18 оставь при себе.В программе уже есть printf.Очевидно, что препод застрял в 90-х и спорить с ним будет себе дороже. Надо просто СДАТЬ (и знать, что на самом деле так никто не пишет).
>>1113529в этом и смысл, преалокация без инициализации, вызова конструктора, плейсмент всеравно вызовет конструктор, не говоря про гемор потом удалять такие объекты
>>1113479>мы прошли только if и циклы, больше ничегоЭто разве не в 5 клессе проходят? Тогда нахуя ты называешь себя студентом, лол.
>>1113531Жирная пидорша блять, вот из-за таких говноедов вроде тебя с пидорашьим мышлением рашкинская индустрия и находится в жопе. Лишь бы сдать, а потом похуй, пляшем, после чего такие программисты лишь могут кнопки жать на кассе в макдональдсе. Посмотри на себя - работаешь в нии или заводе за 12к, в то время как я, пояснявший преподам за новые подходы, тимлид в крутой компании.Соси хуй, блять, я ебал тебя в рот.
>>1113536Не бомби так либераст
>>1113536ты никогда не станешь тимлидом, выебываясь на двачах. Софт скиллов не хватит
>>1113532гугли std::allocator, сынок
>>1113553не надо было про new выебываться если не знаешь, дружок
>>1113479
>>1113527ппц, не позорился бы..
Платиновый ньюфаг влетает в тредю и спрашивает.Для начала: я тупой, ненавижу программирование, ничего не слышал об ООП.Я всю свою короткую прогерскую жизнь писал драйвера и консольные приложения под линукс на Си. Использовал gcc и nano.Теперь меня пинают в сторону плюсов и винды, отсюда вопросы:1. Что такое это ваше ООП: классы, наследуемость и прочие фишки. Почему си-шных структур не хватает?2. Можно ли забить на еблю с вижуал студио на винде и сидеть, максимум, в код блоксе на линупсе и там компилить?И как вообще программировать кроссплатформенную хуйню? Про использование классических типов данных читал. Библиотеки подключать через #ifdef и всё?3. Моветон ли на плюсах забить на тамошние скобачки >> и делать по старинке форматированный ввод\вывод?
>>1113623а, не, нормизвиняюсь
>>1113625ответы зависят от того, какой софт будешь писать под винду
>>1113628Эх, а я думал это общетеоретические вопросы. В далекой перспективе - написание программ с openGL с ниебацца оптимизацией.
>>1113625на третий вопрос ответ зависит важен ли для тебя type safety ввод-вывод, с++ позволяет это делать
>>1113633Нет, нужна только защита от дурака, не от хакеров.
>>1113625на первый вопрос ответ такой: в общем случае возможности с++ по сравнению с си позволяют увеличить уровень абстракции, второе - сделать код типобезопасным
>>1113636>увеличить уровень абстракцииКлассы выигрывают у структур? Можно чуть примеров?
>>1113637в с++ встроенный динамический полиморфизм через виртуальные методы, в си же приходилось ручками vtable делатьв с++ встроенное наследование, в си приходилось опять же ручками через указатели на структуры делатьв с++ инкапсуляция из коробки, в си опять же трюки со структурами надо было делатьопять же деструкторы-конструкторы есть, заменяют фукнции очистки-инициализациину это только по части возможностей ооп, в виде примеров..можешь подходить с чисто практической стороны, продолжая писать в парадигме структурного программирования которым следовал си, но добавляя удобности с++
>>1113642>можешь подходить с чисто практической стороны, продолжая писать в парадигме структурного программирования которым следовал си, но добавляя удобности с++Вот примерно этим и хочу заняться. Ладно, пойду ньюфажную книжку по плюсам посмотрю про все эти конструкторы, полиморфизм и прочие вундервафли.
>>1113642>в с++ встроенныйэто не всегда так круто как рекламируется
>>1113645ну дык чем с++ зато "круты" дак это тем что все его возможности - опциональныа если есть желание, ты можешь писать такой код какой деды на pdp11 делали, а компилить это будет компилятор стандарта с++17
>>1113646Дело ж в чём. ООП или ФП - это парадигмы.Писать ООП код можно на Си, но это будет очень криво. Писать ФП код можно на JS, но выглядеть он будет как аутпут purescript'а
>>1113646А на ООП языках писать ООП просто удобне.
>>1113642в с++ еще метапрограммирование при помощи темплейтов очень важный бонус
пацаны, перепилите викиссылки:Скотт Мейерс Эффективное использование C++ 2008Скотт Мейерс Эффективное использование STL 2002Герб Саттер и Андрей Александреску Стандарты программирования на С++ 2008не работают.там ещё из энтри-левела что-то не то в ссылке, я в прошлом треде говорил, когда качал, чтоб пару моментов базовых объяснить на работе
>>1113685Эх, щас бы в 2017 по книгам пятнадцатилетней давности знания обновлять
Вы тёлок жарите вообще?)
>>1113717Я уже полгода как не жарил(
>>1113725Слабак. Не жарю вот уже шесть лет, последняя тня, которую жарил 6 лет назад все мозги вынесла. И далее не собираюсь, горжусь этим.
>>1113726>Слабак. Не жарю вот уже шесть лет, последняя тня, которую жарил 6 лет назад все мозги вынесла. И далее не собираюсь, горжусь этим. Дай догадаюсь, маленький пипир, сам омежка-кун, свалила к другому, устав от отсутствия оргазмов из-за мелкого пипира?
>>1113726>>1113725да вы охуели, мне скоро 25 и я листва, а они тут тянок жарят.
>>1113729Я в 17 с няшей сбросил, со второй второй раз было полгода назад. Сейчас мне 20.Так что тоже не супер живём.
>>1113448>(хотя почему-то студия всё равно показывает ноль в этой статической переменной при входе в code block, когда даже time control did not pass through their declaration.)С точки зрения языка использование неинициализированной переменной - это UB. Так что что там студия показывает - это её личное дело, использовать это значение в программе ты не можешь.>>1113459Так и есть, тащемта: если ты хочешь расшарить объект, то лучше всего делать это с помощью шаред_птра. Сдохнет локальный объект из-за рефакторинга кода, например - будешь тратить время на дебуг.>>11136251. Всего хватает (оба языка Тьюринг-полные), просто код можно написать по-другому и очень часто короче.Чуть ли не самая важная часть плюсов - RAII.2. Можно, для *кса есть МинГВ. Олсо, рекомендую Qt Creator (компиляторы подцепишь сам, можно использовать без привязки к Qt).>И как вообще программировать кроссплатформенную хуйню? Отделить её от универсального кода и ебашить ифдефы или лучше констэкспр-ифы (C++17).3. iostreamы нужны для абстракции. Если тебе нужно только в файлы и в стандартные потоки выводить, то сишными функциями ты то же самое напишешь короче, чем на плюсах. (особенно доставляет отсутствие бинарного вывода чисел в стандартной либе плюсов, приходится в bitset преобразовывать)>>1113637В плюсах классы и структуры - это одно и то же, только одно по-дефолту публик и наследуется публично.
>>1113728Дай догадаюсь, ты МУЖЧИНА, который ДОЛЖЕН?
>>1113827Я альфа-самец-сениор-девелопер. Ношу модную одежду и солнечные очки, употребляю кокос и езжу на бмв m3.
>>1113834лидер митол группы?
>>1113802Спасибо.>>1113625-кун
>>1113728https://www.youtube.com/watch?v=CIndjPdUWjsТы где-то видел больших пипиров?
Есть подобный кусок кода:class A {};std::string e;std::string::iterator it = e.begin();A func() { // ... };int main() {std::cin >> e;A var = func();}Как мне загнать последние три строки в класс B так, чтобы я мог уже в другой части кода, типаstd::cin >> B::e;A var = B::func();Пробовал все делать статическим, gcc шлёт на хуй.
>>1113951
как ебануть в винапи нормальную архитектуру, нихуя не работает, что у них за адские колбекиerror: cannot convert 'boost::_bi::bind_t<boost::_bi::unspecified, int (__attribute__((__stdcall__)) )(HWND__, long int), boost::_bi::list2<boost::arg<1>, boost::arg<2> > >' to 'WNDENUMPROC {aka int (__attribute__((__stdcall__)) )(HWND__, long int)}' for argument '1' to 'WINBOOL EnumWindows(WNDENUMPROC, LPARAM)' EnumWindows( (boost::bind(&EnumWindowsProc, _1, _2/, hwnds/)), NULL ); ^
>>1113961Вот поясните по пацански, что делает bind? Чем он лучше передачи ссылки на функцию или std::function?
>>1113962Переставить местами параметры, вбить в параметр какое-то определенное значенниепопробуй прошарить асинхронную сетку на boost::asio, все сразу поймешь
>>1113963Ну я так понял это как частичное применение?
>>1113961Что ты пытаешься сделаешь, наркоман? bind возвращает callable object без параметров. EnumWindows принимает указатель на stdcall функцию.
>>1113977И как поступить?Время почитать что это такое
>>1113961Ты в курсе, что в язык лямбды завезли вместо Bind?Или ты из тех несчастных, кому нельзя С++11?
>>1113985Ты никак не преобразуешь с захватом в обычный указатель. Тебе дали целых 4 (или 8) байт в lParam, кастани их в указатель на свой вектор, это же winapi похуй на типы. А биндить оказывается можно с параметрами через костыли с заглушками
>>1113717каждые два дня.
Я сейчас задам платину, а вы просто ответьте: Лафор или Липпман больше подойдёт новичку в программировании?
>>1114003читай все три из шапки, они друг друга дополняют
>>1113951>gcc шлёт на хуй.Ну, он же только тебя шлёт, вот ты с ним и разбирайся.>>1113985Бочку сделать. Лямбду-хуямбду в винапи ты не скормишь, хоть усрись.>как ебануть в винапи нормальную архитектуруИспользуй уже ебанутую, Кутэ, например.
Олсо, плюсовые лямбды конвертятся в функции с C-линкеджом, если у них нет захватов.
>>1114019В Qt есть унификация всего апи? Найди мне EnumWindows
>>1114023Так и скажи: "мне нужен винапи без винапи".
Олсо, сверху уже подсказали, как сделать. Пишешь свою перегрузку EnumWindows, которая принимает лямбду или что там у тебя, а внутри неё пишешь всю эту отсебятину с запихиванием аллаха в лпарам.
>>1114021Этот прав, делай так.Страуструп
>>1114023Блядь сделай уже EnumWindows(EnumWindowProc, reinterpret_cast<LPARAM>(&_hwnds). В колбеке назад преобразуешь. Смотри только чтобы вектор не сдох раньше времени, сделай его статиком что ли.
>>1114028Кстати, почему все пишут эти static_cast, dynamic_cast, reinterpret_cast, ведь можно просто ебануть c-cast (LPARAM), зачем это нужно, быстрее? код нагляднее выглядит? у мейерса есть что-то об этом?
>>1114031c-cast равнозначен reinterpret_cast'увсе остальные имеют другое значение и эффекты
>>1114031https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#es49-if-you-must-use-a-cast-use-a-named-cast
>>1114035Нихуя. Страничку цппреференса, в которой это опровергается, найди сам.>>1114031
>>1114031Это касты сразным смыслом, Си-каст это солянка из всех пяти (ещё конст и ещё фанкшионал стайл каст вроде).
std::vector<bool> a = { 0, 0, 0, 0, 0, 0, 0, 0 };bool b[8] = { 0 };std::cout << sizeof(a) << sizeof(b);>40 8Почему 40?>inb4 не используй std::vector<bool>>inb4_2 смотри, как всё реализовано внутри
>>1114062Сам открой цппреференс, сам прочитай про сайзоф и его значение.
>>1114062sizeof asizeof bтак илитней
>>1114019> Лямбду-хуямбду в винапи ты не скормишь, хоть усрись.неа, весь винапи сделан на коллбекахи внезапно как появились лямбды в крестах, можно просто охуенно вызывать винапишные фии, просто по красоте щас это
>>1114003к&r штудируй, все упражнения делай обязательн, над справочной частью медитируй пока каждое предложение не будешь пониматьначинать с крестов - гиблое дело
>>1114083учить С хуевая идея. Еще Катя Грегори об этом рассказывала. Начинать надо с абстракций, и потом углубляться, а никак не байты ебать на втором занятии
>>1114121Нехуя. Я тоже начинал в шараге с абстракций - поцкаль, делфи, вот эта вся хуерга. Сдавал все на отъебись не вникая, потому как заниматься программированием не собирался. Все началось когда я лет 7 назад случайно попал на wasm.ru и меня зацепило. Потом был си, потом уже ооп и всякая функциональщина. Последовательно проходить все стадии эволюции гораздо лучше, белых пятен не остается.
>>1114128У тебя ошибка выжившего.
>>1114128> Потом был си, потом уже ооп и всякая функциональщинаЗдорово. Но существует и альтернативный вариант.Джва года отработал погроммистом на си. Хотел увольняться, осознал, что работы (в ДС2) почти нет нихуя, что зарплата у крестодаунов раза в полтора выше. А перекатываться лень. Ибо нынешние плюсы с сями имеют мало общего, считай, мне нужно вновь ссаным нюфагом с нулевой зарплатой, учить переусложненный язык со стандартом на 1.5к страниц. К черту такое счастье.
>>1114121окейс каких конкретно "абстракций" следует начинать новичку изучать кресты?
>>1114152Изучи сначала хотя бы как реализуется проактор, а потом уже можем и к классам переходить.
>>1114152string и vector
>>1114082Про лямбду без захватов я уже написал, ничего больше ты передать не можешь. Ты мне перечишь?
>>1114164ты умными словами не в тему покидаться тут пришел, или что?
>>1114148Расскажи больше про работу.Нраица си за простоту уровня палки. А вот о перспективах ничего не знаю
>>1114263>о перспективах ничего не знаю
Подскажите хорошую книгу по Qt можно на английском.
>>1114299Макс Шлее
>>1114305Этот ебалас, похоже, кроме Qt 4 дальше не ушел, потому что инфа устаревшая. docs.qt.io итак уже содержит кучу простейших примеров и описание всего, что необходимо.
>>1114290Но так же везде, нет?
>>1114380https://www.ozon.ru/context/detail/id/31619787/Совсем тютю?
Есть где-то подробное описание директивы #define и всех ее возможностей? А то в книгах только простые упоминания в стиле "как объявить константу но вы так не делайте это устарело".Однако каждый раз заглядывая в стандартные библиотеки вижу что там вообще все написано вот этими вот дефайнами
>>1114446стандарт качай
>>1114263Ссаные нии, железячники-байтоебы, жму пинус.Я болтаюсь где-то между первым и вторым классами, пишу программы, которые по результатам наблюдений в реальном времени пытается подкорректировать движение тела таким образом, чтобы получившаяся матрица ковариаций (то есть некоторая характеристика разброса. Чем меньше, тем точнее твое тело приземлится куда надо) была "маленькой". Такая вот помесь маняматики матстат+теоркиб и байтоебства.
>>1114019>Бочку сделать. Лямбду-хуямбду в винапи ты не скормишь, хоть усрись.>>1114229>Ты мне перечишь?пытаюсь разобраться: какие есть проблемы щас по передаче лямб в виде коллбеков в винапи
>>1114522хм, получается нельзя лямбды с захватом параметров передавать в winapi, тк такие лямбды не приводятся к указателю на функцию
>>1114019>Бочку сделать. Лямбду-хуямбду в винапи ты не скормишь, хоть усрись.http://en.cppreference.com/w/cpp/language/lambdaТаки, есть там каст в обычную функцию, но только при условии, что список захвата пустой.
>>1114462Ого, ты серьезный дядя.А чем можно заниматься за деньги, если нравится копаться в байтах? Драйверы писать да микроконтроллеры программировать?
>>1110566 (OP)помогите мне пожалуйста разобраться с Qt.Я только начинаю разбираться с Qt. Почти сразу при запуске мне выдаётся эта ошибка на первом скрине. Как мне её исправить? Когда я нажимаю на вкладку "примеры" у меня нет примеров. Когда я пытаюсь создать проект, то написано "отсутствуют подходящие комплекты", когда я нажимаю на "настройки", и выбираю компилятор , то при наведении на жёлтый значок Desktop выводится 2 предупреждения "отладчик не задан" и "В конфигурации CMake не указан путь к компилятору С++, при заданном верном инструментарии комплекта" и даже когда я нажимаю "применить", комплект не применяется. Помогите мне пожалуйста разобраться с этими ошибками. У меня установлена Qt Creator 4.5.0-rc1 (4.4.83). Основан на Qt 5.10.0 (MSVC 2015, 32 бита)
>>1114446> и всех ее возможностей? Какие у неё возможности-то, блядь, кроме замены одного идентификатора на другой, да макроподстановки? Там ещё можно изъебнуться и вызывать макро из макро, а ещё-то что?>>1114522>>1114523>>1114533Гугли C-linkage. И это, ты жопой читаешь: >>1114021
>>1114594>>1114615Ну вообще идет, просто при установке нужно было выбрать нужный компилятор, который уже настроен для работы с Qt.
>>1114577> за деньги> Драйверы писать да микроконтроллеры программировать? Нет, лол.
>>1114620у меня же была ранее установлена Visual Studio 2013. А вот при установке Qt я не помню какой был выбран компилятор.Как мне сделать так чтобы приложение хотя бы создалось?
>>1114621Ну а шо тогда
>>1114622Все зависит от того, как ты хочешь использовать QtCreator. Все-таки это полноценная IDE и можно ее использовать без привязки к Qt фреймворку. Для этого можешь использовать уже установленный компилятор от студии. Если же ты решил именно юзать фреймворк, то нужно доустановить настроенный компилятор, как на моем скрине. Чтобы доустановить запусти MaintenanceTool из папки с Qt.
>>1114625объясни пожалуйста разницу между QtCreator и Qt. Мне нужна Qt5.7. Это фреймворк, то есть библиотека? А QtCreator это IDE?Мне нужен фреймворк значит. А как исправить эту ошибку и почему у меня нету примеров? У меня только как на третьем скрине можно выбрать, иначе новый компонент займёт 5 гигов, у меня столько нету. Можно же так установить через tools?после установки у меня всё равно не создаётся проект, комплект не добавляется, как исправить? и та же ошибка внизу выводится про среду MSVC и MySQL.
>>1114631>объясни пожалуйста разницу между QtCreator и QtQt - фреймворк, т.е. набор функций, классов и т.д. для создания приложений. Он весит в собранном виде ~3,5 Гб (компилятор MinGW).QtCreator - IDE изначально предназначенная для удобной работы с Qt, потом переросла в полноценную, т.е. можешь к ней прикрутить любой из компиляторов: MinGW, MSVS, Clang, любую библиотеку, например Boost, FLTK, и т.д. или вообще писать на голом C/C++. Он весит ~300 Мб без компилятора.Как Qt, так и QtCreator можешь собрать сам из исходников, которые можешь скачать поставив галку рядом с пунктом Source (на моем скрине можешь увидеть эту галку), но можешь этого не делать, правда придется, если нужно будет собрать свое приложение со статической линковкой без зависимостей (в нете полно гайдов).>А как исправить эту ошибку и почему у меня нету примеров?Скачать сам фрейворк.>У меня только как на третьем скрине можно выбрать, иначе новый компонент займёт 5 гигов, у меня столько нету. Можно же так установить через tools?Нет, нельзя. Делать нечего, ищи место под сам фреймворк.
>>1114600>Какие у неё возможности-тоНу так вот это я и хочу узнать.Я то понимаю что #define PI 3.14 - константа, но не понимаю по каким правилам определяется тип данных #define sum(a,b) (a + b) - функция но с своеобразным синтаксисом про который я только сегодня узнал, а какие типы она принимает? а зачем вообще так делать? в чем сила этого дефайна? и почему стандартные библиотеки написаны именно с препроцессорами?
>>1114648Сишный препроцессор тупой как валенок - он просто заменит в тексте программы все вхождения на выражение, которое ты определил. Это легко проверить, запустив gcc с ключем -E.Т.е. твой sum(a, b) будет просто заменен на (a+b). Стандартная библиотека была написана давно, и макросы давали прирост производительности по сравнению с вызовами функций. Сейчас использовать такие макросы - моветон, компиляторы достаточно умны, чтобы генерировать быстрый код, + ты еще получишь строгую проверку типов, чего нет в макросах.
>>1114651Спасибо, теперь понял
>>1114620Кому ты пиздишь? Это список дистрибутивов под разные компиляторы.>>1114648>#define PI 3.14 - константа, но не понимаю по каким правилам определяется тип данных Это не константа, это замена идентификатора на текст. Тип 3.14 узнай самостоятельно.>#define sum(a,b) (a + b) - функция но с своеобразным синтаксисом про который я только сегодня узнал, а какие типы она принимает?У идентификатора нету типа, блядь.>а зачем вообще так делать?Обычно так делали тогда, когда компиляторы не умели инлайнить, и шаблонов не было. Покажи мне макрофункции в твоей СТЛ, их там нет, там есть только дефайны для включения/отключения разного кода и для строковых литералов (С/С++ склеивают только литералы вида "a""b" -> "ab", то есть, если ты хочешь определить литерал, так, чтобы он зависел от других дифайнов, использовать переменную не выйдет).
>>1114620И да, прочти текст справа, там так и написано.
И это, компилятор МинГВ включён в дистрибутив только из-за того, что лицензия совместима, а у МСВС даже редистрибьютабла нет, про лицензию не говорю уже.
>>1113994Та не пизди, задрик ;)
>>1113726Последний раз жарил 8 лет назад. До сих пор запах гари стоит блядь. Не рекомендую.
Не могу заставить структурные биндинги дать мне копии, если возвращаемый тип ссылка: я либо получаю всегда ссылки, либо всегда копии. Нахуй так делоть?
>>1114725Вкинь пример.
Есть ли разница записывать значение временной константы в поле класса или в простую внешнюю переменную?
>>1114776Область видимости
>>1114782Ну это понятно, а скорость обращения отличаться никак не будет?
Жил-был СТРАУСТРУП. Шел обычный, скучный день. СТРАУСТРУП занимался рутинными вещами, такими как ебля своей трехсоткиллограмовой матери в зад. Только успев кончить матери в пердак и вынуть измазанный в говне хуй, СТРАУСТРУП услышал стук в дверь. Не заметив, что его мать умерла от сердечного приступа еще 3 дня назад, он пошел открывать дверь и вышел на веранду. На веранде никого не было. СТРАУСТРУП, было, уже начал подозревать СТЕПАНОВА в очередной подъебке, но вдруг, из под крыльца что-то вылетело и понеслось на него. От перевозбуждения СТРАУСТРУП уронил скрепленнеые скотчем очки на пол и смиренно ждал, что будет дальше. ЛЯМБДА, с огромной скоростью пролетела мима СТРАУСТРУПА, квадратной скобкой отпихнула его и заползла в дом, крепко заперев дверь. ЛЯМБДА ясно дала понять, что она приняла дом в качестве аргумента, но отказывается возвращать функцию, которая принимает ПИЗДЮЛИ в качестве аргумента и возвращает дом. ЛЯМБДА заползла на стул перед компьютером и свернувшись в уютный клубок, зашла на ДВАЧ. СТРАУСТРУП знал ЛЯМБДУ. По крайней мере, это слово он точно слышал, но не знал, что оно значит. Он очень удивился, когда недавно узнал, что ЛЯМБДУ включили в НОВЫЙ СТАНДАРТ, принятый полгода назад. СТРАУСТРУП понял, что надо выгнять ЛЯМБДУ из дома, потому что желание в очередной раз залезть на мамочку было слишком велико. Будучи первоклассным инженером, СТРАУСТРУП начал искать решение проблемы. Для разминки он решил повторить таблицу умножения до 12 на 12. Он 2 часа стоял на одном месте и смотрел в никуда, потея как свинья. Пока он боролся с таблицей умножения, из за угла вышел измазанный в говне АНДРЕЙ АЛЕКСАНДРЕСКУ и осмотрелся. Рядом стояли несколько зданий, включая психбольницу для буйнопомешанных и тюрьму. АНДРЕЙ задумался и понял, что в округе нет ни одного настолько больного и гнилого человека, чтобы продать ему свою книгу. Небрежно посвистывая, АНДРЕЙ удалился. СТРАУСТРУП закончил разминку и начал думать, как прогнать ЛЯМБДУ. Вдруг его осенило. Его дом был скомпилирован последней версией GNU G++, которая поддерживает ЛЯМБДУ. Именно поэтому, ЛЯМБДА и смогла проникнуть к нему в дом. СТРАУСТРУП понял, что ему нужна более старая версия G++, которая не поддерживала ЛЯМБДУ и тогда, при попытке компиляции дома, ЛЯМБДУ выкинет вместе с СООБЩЕНИЯМИ ОБ ОШИБКАХ. Но старую версию было негде взять. СТРАУСТРУП нанял ФУНКЦИОНАЛЬЩИКА СО ШТАНГОЙ за 5 тысяч рублей. Так как компьютера у них не было, ФУНКЦИОНАЛЬЩИК вначале написал на бумажке компьютер в 1 строчку НА ХАСКЕЛЕ:Computer = ComputerФУНКЦИОНАЛЬЩИК сожрал бумажку и высрал работающий системный блок с ВОДЯНЫМ ОХЛАЖДЕНИЕМ и предустановленой WINDOWS 7. На компьютере уже был установлен АЛАН ВЭЙК и ХАСКЕЛЛ ПЛАТФОРМ. Корпус был красного цвета, с наклейкой ТУРБО на прозрачной боковой крышке. Затем ФУНКЦИОНАЛЬЩИК написал в 2 строчки старую версию G++:Compiler :: [C++SourceCode] -> [ExecutableFile]Compiler source =(Link . Compile) sourceСТРАУСТРУП взял исходники своего дома и запустил компиляцию. Компилятор начал дристать СООБЩЕНИЯМИ ОБ ОШИБКАХ. СТРАУСТРУП попытался разобрать первую строчку, но увидев такое, дальше лезть не решился(таблица умножения и так вымотала его):std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<std::basic_string<char, std::map<std::basic_string<std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,std::allocator<char> > const, std::basic_string<char, std::char_traits<char>,std::allocator<char> > > > >char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,std::allocator<char> > const, std::basic_string<char, std::char_traits<char>,std::allocator<char> > > > >std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,std::allocator<char> > const, std::basic_string<char, std::char_traits<char>,std::allocator<char> > > > >Высрав 10 000 СТРОК СООБЩЕНИЙ ОБ ОШИБКАХ, компилятор скончался от ЛЕНИВЫХ ВЫЧИСЛЕНИЙ ПРЯМОЙ КИШКИ и из монитора вылетела ЛЯМБДА. Придерживая круглые скобки квадратными скобками, ЛЯМБДА в ужасе съеблась под ближайший камень. Ей еще долго не захочется принимать и возвращать значения. Довольный СТРАУСТРУП плюнул в руку, чтобы наслюнявить хуй и уже решился залезать на мамочку, но передумал и решил вначале запостить эту историю на ДВАЧ.
>>1114758https://wandbox.org/permlink/ihq55Ff2DVcG2sVp
Анончики, выручайте! Нужно получить реальный путь к файлу по имени и директории диска(типа "C:\\"). Есть ли такое в windows.h? Или все же придется прибегать к либам типа буста?
>>1114827Я ничего не понел, что ты хочешь сделоть
>>1114842Вот у нас есть имя файла находящегося по пути например "C:\\papka\\eshepapka\\file.txt". Мы знаем только имя этого файла и букву диска, на котором он находится. Нужно вывести полный путь ("C:\\papka\\eshepapka\\file.txt") этого файла
>>1114844https://msdn.microsoft.com/en-us/library/windows/desktop/aa364418(v=vs.85).aspx
>>1114846Какое-то слово в спам листе. Как я понял это не то, что мне нужно
Есть ли норм документация по winapi на ру ?
>>1114785Где-то читал на хабре, что чел проводил тесты и выяснил, что статические переменные быстрее переменных в куче. По идее что статические, что глобальные переменные хранятся в главном стеке программы, поэтому одинаковые будут по скорости. Но я не уверен
>>1114857https://msdn.microsoft.com/en-us/library/windows/desktop/aa364963(v=vs.85).aspx
>>1114860внезапно на msdn
>>1114788Дык это особенность auto такая: он может добавить ссылочность к типу, но не может убавить её, не придумали ещё такого.
>>1114896Це не ру
>>1114863Большое тебе спасибо, анонче!
>>1114905там decltype(auto), само auto как раз может сделать копию
Помогите пожалуйста.Есть вектора векторов:std::vector < std::vector<unsigned int> > vertexIndices, uvIndices, normalIndices;Надвектор - это часть тела, например рука. Его подвектора - это номера вершин.Достаются так:int matches = fscanf(file, "%d/%d/%d %d/%d/%d %d/%d/%d\n", &vertexIndex[0], &uvIndex[0], &normalIndex[0], &vertexIndex[1], &uvIndex[1], &normalIndex[1], &vertexIndex[2], &uvIndex[2], &normalIndex[2] );Затем я обращаюсь к конкретной части тела и по порядку заполняю. Я отдельно храню координаты вершин, нормалей текстур.Пытаюсь разложить и вылетает ошибка сегментации:vertexIndices[indexer].push_back(vertexIndex[0]); vertexIndices[indexer].push_back(vertexIndex[1]);vertexIndices[indexer].push_back(vertexIndex[2]);uvIndices[indexer] .push_back(uvIndex[0]);uvIndices[indexer] .push_back(uvIndex[1]);uvIndices[indexer] .push_back(uvIndex[2]);normalIndices[indexer].push_back(normalIndex[0]);normalIndices[indexer].push_back(normalIndex[1]);normalIndices[indexer].push_back(normalIndex[2]);Что я делаю не так?
>>1115016>int matches = fscanf(file, "%d/%d/%d %d/%d/%d %d/%d/%d\n", &vertexIndex[0], &uvIndex[0], &normalIndex[0], &vertexIndex[1], &uvIndex[1], &normalIndex[1], &vertexIndex[2], &uvIndex[2], &normalIndex[2] );Ты обращаешься к элементам вектора, размер которого 0.Либо ресайзи сначала, если знаешь размер, либо сначала в переменную, потом пушбэк.еще для отладки можно использовать vector.at(idx) - получишь исключение а не сегфолт
>>1110566 (OP)помогите мне пожалуйста подключить Qt к базе данных MySQL.в главном файле .pro я дописываю QT += core gui sql. А в файле исходников main.cpp я пишуQSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); db.setUserName("root"); db.setPassword(""); if(db.open()) { qDebug() << "connected " << db.hostName(); }else{ qDebug() << "Connection FAILED."; }ещё я библиотеку libmysql.dll закидываю в plugins/sqldrivers. Но у меня всё равно нет соединения с базой данных, помогите пожалуйста, вот что выдаёт на картинке
>>1115053В чём ты пишешь, что это за IDE ?
>>1115053сообщение означает что с Qt плагином все в порядке, но libmysql.dll нет в PATH. Либо добавь ее в переменные среды, либо просто положи в каталог с ехешником твоей программы
>>1115068QtCreator
Роскомнадзор что-то заблочил, и под раздачу попала страница загрузки Qt и форум. Заебись, блять.
>>1115075>QtCreatorШо VS не уважаем ?
>>1115096Формошлепы должны страдать.
>>1115098Байтоеб закукарекал
>>1115097Она не кроссплатформенная
>>1115012О, точно.>>1114978Там русский раздел с переведёнными и машинно переведёнными статьями.>>1115097Весь кутэкреатор в инсталляторе 200МБ, GCC последней версии - ещё 200. Студия - гигабайты, манагед-код.>>1115096GoodbyeDPI
>>1115112> GCC последней версии - ещё 200Проверил - 50 МБ, разворачивается в 10 раз.
>>1115112Я хз, что они в столько гигов пихают, юзаю не более половины
Поясните, почему VS столько весит?
>>1115126Маки хуйни напихали
>>1115126Какая разница? У тебя винт на 80 гигов?
>>1115126VB +C# + куча хлама инструментов
>>1115165Там даже минимум (IDE с компилятором для плюсов) - 5,42 ГБ после установки.
>>1115166>5,42 ГБ после установкитолько долбоеб этим говном пользуется.
>>1114065>>1114062Потому что в случае вектора возвращает размер объекта, если ты применишь sizeof к массиву (а именно sizeof(array_name) ), то получишь размер указателя, потому что фактический пишешь sizeof(array_type * ), с вектором так же, ты получаешь от него размер объекта класса.
>>1115145+1 заебали уже ныть, про "затмевающий небеса" объем требуемой памяти на винте
>>1115179Чего ты тут плюсуешь, чепушила блять? Уебывай отсюда чтобы я духу твоего здесь не видел.
Можно ли выучить кресты не читая книги, я просто слепой пызда, буквы с лупай читаю и глаза болят (нахуй ваши онлайн чтиво, люблю больше в руках держать, срать и читать и тд)
>>1115178>то получишь размер указателя, потому что фактический пишешь sizeof(array_type * ),Наглая ложь.>>1115226> я просто слепой пызда, буквы с лупай читаю и глаза болятКупи очки для чтения/дальнозорких.
>>1115253мне с ними не удобно (они есть), линзы пиздец не люблю, всегда проёбываю их
>>1115253Усё, зоебца, чекнул http://www.cplusplus.com/doc/tutorial/program_structure/, вроде тут норм
>>1115226ну, быть может, по видеоурокам, но анивей, сомневаюсь
>>1115226Мудила блять, 90% времени ты все равно будешь читать чужой код.
>>1115180Рембо, очнись, ты комнатный
>>1115226>я просто слепой пызда, буквы с лупай читаю и глаза болятКакой минус?Может тебе лучше чем-нибудь другим заниматься, а не программированием?
>>1115493Не, я тип ничем больше не интересуюсь, лучше куплю новые очки, с более удобной формой (были бичёвский, квадратные, неудобные)
>>1115361Тогда читай электронную версию, блядь. Пытаюсь натаскаться на плюсы с помощью чтения доков, стаки и написания программ уже пару лет, до сих пор охуеваю от внезапностей.>>1115443Видеоуроки программирования - это блядский цирк.
>>1115551Дай полную документацию по плюсам, искал в гугле, а там ток разделы, нету общей или я тупой
>>1115568Послушай меня 10 лет крестоопыта - не хуй собачий - чтение документации тебе ровным счетом нихуя не даст. Аллах даровал тебе джитхаб - пиздуй туда, пиши код, делай пулреквесты, читай чужой код в конце концов, а неясные моменты гугли или ищи в той же документации/стандарте.
>>1115226>я просто слепой пыздаА как ты программировать собрался?
Аноны, помогите новичку, прошу. Имеется часть кода:getline(cin, a);cin >> b;Когда ввожу строку а и нажимаю на пробел, программе становится просто срать на остальные места, где есть ввод. То есть cin>>b; пропускается и программа выполняется дальше. Как пофиксить сию проблему?
>>1115568В шапку глянь.>>1115578https://stackoverflow.com/help/mcve
>>1115578getline берет всю строку из потока ввода до символа '\n', т.е. до нажатия клавиши Enter. Например: если ввод будет "hui pizda jigurda", а потом Enter, то в твоем случае a = "hui pizda jigurda", b = "", т.к. в потоке ввода после getline останется символ '\n'. Вроде так, но эти тонкости уже не помню, надо тестить.
>>1115661Я обосрался, сейчас потестил, все не так: getline описал правильно, а вот cin >> b будет ждать пока не будет введена строка до пробельного символа и хоть обнажимайся Enter, программе будет похуй.
>>1115664Вроде у cin можно вызвать игнор символов в буфере, может тебе это нужно?
>>1115578>2k18>использовать cin когда есть божественный scanf
>>1115679Поставил сейчас перед getline просто cin.ignore() и все заработало нормально, проблемы исчезли. Спасибо за идею
! Чому по машинному обсучению большинство материалов на пистоне, а не на более быстром C++ ?
>>1115746Потому что проще написать import keras, чем ебаться с компеляций кучи библиотек и ловить сегфолты, отсреливая себе яйца. Энивей все алгоритмы и так реализованы на сишечке и крестах, а на путхоне лишь удобный интерфейс.
>>1115746Либы на плюсах, а пистон API проброшено чтобы непрограммистам (которые и двигают эту науку) проще было.
Не нашел сишечного треда, отпишусь тут. Хочу вывод stdout чужой программы перенаправлять хотпатчем в файл в реальном времени. Думал что прокатит (на шинде) что-то такое:auto hd = CreateFile(...)SetStdHandle(STD_OUTPUT_HANDLE, hd)и т.о. все что пишет в stdout, будет теперь писать по хэндлу в файл. А нихуя. чяднт?
>>1115851freopen?
>>1115853Большое спасибо. Знать бы теперь, чем принципиально отличается freopen и приведенный мной код, и в чем ошибка.
>>1115855Там какая-то нетривиальная ебля нужна.Посмотри тут, если не видел уже https://stackoverflow.com/questions/21374548/setstdhandle-has-no-effect-on-cout-printf
>>1115857Видел, но там и вправду ебля да еще и с CRT. Разбираюсь потихоньку, надеюсь что смогу в итоге родить платформонезависимый вариант без C- и прочих -RT.
>>1115857Хотя ответ Duncan на его же вопрос содержит код который ничего экстраординарного не делает, там freopen и есть, только завернутый в пару функций, оперирующих стеком хэндлов, очень удобно. Буду теперь разбираться с восстановлением оригинального stdout, что-то я не понял откуда _fileno() его берет.
>>1115859Вроде можешь freopen'ом переоткрыть консоль и не париться. А можешь через api найти какую-нибудь штуку вроде getStdHandle чтобы получить хэндл консоли, а потом setStdHandle чтобы вернуть все как было
>>1113694Тред с модными ЖС приблудами которые устаревают через две недели совсем рядом, мы все понимаем. Промахнулся наверное?
>>1115867Вот именно эта штука у меня и не получилась. В итоге freopen сделал все как надо, но хотелось всё же разобраться, почему SetStdHandle не оказывает эффекта на stdout.
Аноны, я тут в тупик абсолютный зашел. Есть значит у меня cmake и вижла. Мне нужно из сипипишника и хедера получить dll. В общем, как мне это сделать? Построил проект, но там нет dll, только exe, ilk и pdb. Помогите пожалуйста!
>>1115915Создай проект библиотеки а не проект приложения, очевидно же
>>1115916Т.е. симейком я ее не соберу?
>>1115917ты -- нет
>>1115886https://docs.microsoft.com/en-us/windows/console/console-handlesМожет это тебе поможет
>>1115940Обидно тащемта. А я смог найти гуид, можешь мной гордиться.
>>1115917Достаточно add_executable заменить на add_library(lib SHARED ...)
>>1116021Да, спасибо. Я уже понял
Всем прив, попробовал сделать консольную змейку:https://pastebin.com/vPCUg7wKСобсно вопросы:1. Нужно ли писать больше комментов, или по названиям функций и переменных и так все понятно?2. Можно ли как-то ебануть отрисовку, не перерисовывая весь экран заново? Прост порой моргает.3. В принципе песдато или хуева получилось и где мне ее допиливать. думаю потихоньку пилить, пока не изучу всю книгу Прата по плюсам, а там мб на Qt с OpenGL переделаю
>>1116045>2. Можно ли как-то ебануть отрисовку, не перерисовывая весь экран заново? Прост порой моргает.используй буферы экрана, но для этого нужно полностью контролировать окно консоли → WinAPI
>>1116050подробнее плиз. мимо другой анон
>>1116051предисловие. я около года назад делал змейку для универа на цпп. вообще, её нужно было делать через WinAPI, так что подходил любой язык, у которого есть доступ к winapi препод топил за делфи, а мне нужно было освоить в максимально сжатые сроки цпп для курсовой. вот одним из условий было реализовать буферизацию экранов для отсутствия джиттеринга экрана при перерисовке. именно поэтому я про это сказал. возможно есть другие пути, но навряд ли. суть в том, что ты через WinAPI заказываешь себе консоль, и через WinAPI же можно консоли скармливать буферы - как бы экраны, которые еще не отображены. по сути буфер - холст, на котором ты произвольным шрифтом в произвольном месте ставишь символ произвольного цвета.
>>1116054Ну плюс там еще нужно было в несколько winapi'шных тредов всё это сделать. один тред как раз отвечал за то, чтобы после каждого "шага" змейки подгатавливать один из двух буферов и закидывать их обратно в консоль, когда придет время. там еще фигурировали мьютексы у змеи, типа когда она сделает шаг, то сбрасывается мьютекст, тред возобновляется и меняет экран
>>1116056вообще, если интересно, то можешь покопаться здесь:https://bitbucket.org/Reddification/cpp_snak, но сразу предупреждаю, там грязно и не прибрано, ибо делалось преимущественно от пизды чисто чтобы изучить winapi, а не сделать K P A C U B O
>>1116056>консольная змейка>тредыИ вот потом такие кадры идут писать промышленный код из-за чего простое приложение занимает 70% памяти и греет проц.
>>1116060да ты не понял, это в образовательных целях делалось, ну. чтобы пощупать всё это в условиях сложнее, чем в цикле посчитать до ста.
>>1116060Ну бло, а как еще сделать не моргающий экран при консольной отрисовке?вернувшийся-анон-со-змейкой
>>1116064Моргает у вас из-за system("cls"). Всего-то нужно закрасить удалившийся символ цветом экрана да нарисовать новый (SetConsoleCursorPosition или что-то подобное). Да, это сложнее простого cls.Алсо посоны, на каком курсе вы учитесь?
>>1116067второй ИВТ, решил в самообразовач на каникулах.анон-со-змейкой
>>1116070Я просто помню, что даже в моем мухосранском вузе такие лабы на консольную графику сдавали в конце первого или самом начале второго курса. И если бы препод там увидел моргание или не дай бог system(cls), сдавал бы ты ему эту лабу до посинения.
>>1116064Чтобы не моргало : делаешь буфер 80х25 (размер консоли) в котором хранится целый экран консоли. И когда надо будет менять кадр - меняешь все в буфере и буфер перезаписываешь в окно консоли начиная с позиции (0,0). Алсо у консоли, есть, вроде, 4 или 8 экранов памяти, так что можешь кадр рендерить на следующем экране, а потом уже туда переключаться. Но я никогда с этим не работал
https://wandbox.org/permlink/eaM3n1Y9eHkv2qaKКак инициализировать std::array в таком случае?
>>1116132{{ {'a', 0}, {'b', 0}, ... }}
>>1116132https://wandbox.org/permlink/YI6MCKpIsYjC8yg1Попал пальцем в небо. Проблема в том, что аггрегатная инициализация - только для структур только с публичными членами и фундаментальных типов, а аррай - это уже не оно, и там инициализация только через конструктор. В стандарте ещё нет конструкторов в соответствии с типом элементов таких, чтобы структуры элементов инициализировались через initialization_list (из-за того, что инициализация аррая неагрегатная, фигурные скобки должны быть преобразованы в инишиалайзер_лист).А быть их там не может из-за того, чот в языке до сих пор нет рефлексии.Инициализацию структур через инишиалайзер_лист тоже не завезли (хотя, что им мешало?).
>>1116150Бля, а из-за чего лижние скобки?
>>1116152std::array это как раз таки оно.>>1116155А хз. Какая-то ебала с аггрегатной иниициализацией.
>>1110566 (OP)Вначале былоbool isCool;...isCool = true;...isCool = false;@Сделал класс с синхронизацией, всеми делами, и конструкторомSignal(bool initialState = false);@Забыл определить, что значит присваивание@Одновременно с этим забыл заменитьisCool = true; на isCool.set()и isCool = false; на isCool.reset()@Обнаружил дикие баги@Нашёл причину@Долго думаешь, почему и как это работает, неужто set() и get() заставляют компилятор генерировать специальный код@Доходит, почему@А теперь вопрос, как такого избежать?
>>1116156>А хз. Какая-то ебала с аггрегатной иниициализацией.Так падажжи я допедрил, там же С-массив - единственный публичный член структуры, отсюда и скобки, и иначе сделать аггрегатную инициализацию без исправлений не получилось бы.
>>1116160Нихуя не понял. Тебе не нравится вызов конструктора во время присваивания?
>>1116172Да. С одной стороны, это удобно, с другой - опасно, и хотелось бы как-то отлавливать такое поведение, либо его запретить.
>>1116067Без system("cls") тоже моргает. Если сколько-то раз в секунду перевыводишь все на экран - моргает, даже если ты не очищаешь экран а посимвольно перезаписываешь.
>>1116179explicit
>>1116199Тогда попробуй буферы менятьhttps://docs.microsoft.com/en-us/windows/console/console-screen-buffers
>>1116223Спасибо
>>1116150Охуеть, заработало.
>>1116296>>1116150>>1116152Охуел дважды.https://stackoverflow.com/questions/28541488/nested-aggregate-initialization-of-stdarray
Почему у меня в итерации, в который число k равно едининце, у меня не выводится GOT IT?
>>1116358Потому что у тебя там скорее всего дробь выводится с округлением. 0.025 - это не степень двойки, ну а про приколы арифметики с плавающей точкой для чисел, которые не выражаются с помощью степени двойки умноженной на степень двойки, ты и сам знаешь.
>>1116358Потому что -> http://floating-point-gui.de
>>1116367>с помощью степени двойки целого числа умноженного на степень двойки
Чем отличается push_back от emplace_back в STL ?
>>1117170emplace_back гарантированно исключает копирование и перемещение.
>>1117170А ещё эмплейс можно использовать с типами без конструктора копирования, а пушбак нельзя:http://coliru.stacked-crooked.com/a/216156db2bb90999
Программы на разных осях по разному будут работать?
>>1117277В начинке - да, разные системные вызовы. Для пользователя - нет
>>1117277Можно написать программу, которая будет вычислять правильно на любой ОС. Про вывод результата - как минимум ты сможешь вывести текст в файл в рабочей директории или в stdout, но строго говоря ты везде натыкаешься implementation-defined-поведение, пытаясь пообщаться с ОС.Так что если тебе нужно что-то правильно вычислить, то ты можешь сделать это в рамках стандарта C++, а если тебе нужно принять или вывести данные, то ты либо полагаешься на негласные правила, либо ты используешь АПИ ОС прямо или через библиотеку.
Если такой прием называется range_base_forstd::list<string> l = {"One", "Two", "Three"};for (string & s : l) std::cout << s << std::endl;,то как называется такая форма оператора forfor (string & s : l)?
Что это за ебанутая ошибка и почему она возникла?неужели нельзя так через итератор осуществлять поиск по спискуstd::list<string> l = { "One", "Two", "Three" }; for (string & s : l) std::cout << s << std::endl; list<string>::iterator iter1 = l.begin(); for (; iter1 != l.end(); ++iter1) { if (*it == "Two") break; } l.erase(iter1);
>>1117405Потому что должен быть iter1
>>1117405ты думал гуглить? Тебе же на английском написано про итератор вектора, ёпта.
>>1117406да, что-то я не заметил>>1117408да, там был итератор вектора, а должен быть итератор списка,
>>1117415std пробовал поставить?ты, как я вижу namespace не используешь.Ну и цикл ты ебануто используешь. Тебе в таком случае надо не for, а while, do while использовать. Ты хоть понимаешь что ты, блядь, в условиях написал?
Когда пишутся шаблоны классов и функций, как понять где писать сам код?если есть, например, классtemplate<class T>class Vasya{T* vas;...}почему нужно писать реализацию его методов прямо в хедере, без вынесения в отдельный cpp файл??
>>1117492https://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in-the-header-file
Кто-нибудь пытался в раст?
>>1117507Тобою выбрана неправильная дверь - клуб растоебов два треда вниз.
>>1117403Это одно и то же, и я никогда не слышал слово "base" в этом контексте, называется это обычно "range for".>>1117492Потому что результатом компиляции единицы трансляции не может быть шаблон, это может быть только статически типизированный код. Ты всё перепутал.
Анон, подскажи плиз по поводу многопоточностиЕсть два потока. Один пишет данные в очередь. Другой читает и удаляет. Нужно ли блокировать очередь мьютексами, если происходит операция isEmpty(), т.е. если просто идет проверка очереди на пустоту?Какая версия второго потока правильнее?1 поток пишет p_mtx->lock();workque->enqueue(data);p_mtx->unlock();2 поток версия 1 читает p_mtx->lock();if (!workque->isEmpty()) { inwork = workque->dequeue();}p_mtx->unlock();2 поток версия 2 читает if (!workque->isEmpty()) { p_mtx->lock(); inwork = workque->dequeue(); p_mtx->unlock();}
>>1117765>Нужно ли блокировать очередь мьютексами, если происходит операция isEmpty(), т.е. если просто идет проверка очереди на пустоту?В общем случае нужно. Если контейнер ганатирует то, что результат empty меняется только после появления элементов (может и не гарантировать), то БЫТЬ МОЖЕТ ты можешь не лочить и оно будет некоторое время работать, но ты грозишься отстрелить себе ногу, так как этот вызов вполне может быть заинлайнен/закэширован, например.
>>1117784Спасибо!Но я что-то таки не понимаю. Уже немного по другой теме Почему я не могу выдернуть из очереди элемент и поместить его отдельную переменную и дальше работать с ним?При том что просто обращение к элементу очереди проходит нормально. Ошибка со второго скрина образуется при закомменчивании qDebug() << QString::fromStdString(workque->dequeue().first);И разкомменчивании inwork = workque->dequeue();Как это сделать правильно?
>>1117765используй генераторы future, нахер тебе этот устаревший дизайн.Also single-reader/single-writer очередь в синхронизации вообще не нуждаетсяпри грамотной реализации.
>>1117823inwork у тебя std::shared_ptr<std::string> и не инициализирован, ты короч 1) копируешь в рандомные адреса памяти вот тута inwork = workqueue->dequeue()2) тип *inwork нихуя не тот что лежит в очереди
>>1117823inwork - это указатель на объект shared_ptr<чототам>. Ты пытаешься присвоить значение несуществующем объекту в строчке 31, поздравляю, твоя ступня умрёт от СПИДа.
2ch, я всё понять не могу, почему автоматические переменные не обнуляются и содержат мусор, а переменные на куче обнуляются?
>>1117876Thnks! Поправил. >>1117873>Also single-reader/single-writer очередь в синхронизации вообще не нуждается>при грамотной реализации.Там на самом деле немного сложнее. Есть ещё пара вариантов как может что-то оказаться в этой очереди. Просто до их реализации я ещё не добрался
>>1117934Никакие не обнуляются (кроме статических)
>>1117979malloc и new дают мне очищенную память.
>>1118053malloc не дает тебе очищенную память.
Как узнать адрес самого указателя? Только через указатель на указатель?
>>1118215Ой, извиняюсь. Затупил и ошибся. Вопрос отменяется.
>>1118217не извиняюпроси на коленях
>>1118222На твоих коленях?
Как считать только одну цифру с потока, например, у нас есть число 100010101010, и надо считать только первую цифру. Я гуглил, честно !
>>1118242Пробуй сдвиги использовать
Какая из бесплатных IDE лучше?
>>1118242Текст или бит?
>>1118277вижуал студия комьюнити эдишнне забудь обмазать плагинами
>>1118277VS community
Какой компилятор самый просто и понятно реализованный? Пусть не самый оптимизированный, главное чтобы стандарту соответствовал, хочу покопаться в реализации, особенно stl.
>>1118294>Какой компилятор самый просто и понятно реализованный?Наверное никакой, но у тебя есть выбор между gcc и clang-llvm. Можешь начать со второго.
>>1118295Как раз во втором ковыряюсь. Но там слишком много всего, я теряюсь даже в реализации вектора.
>>1118064Даёт
Сколько нынче можно просить в ДС имея 2 года опыта?Я шаристый вроде.
>>111830470
>>1118306Хуй саси чмоня. Я без опыта на больше устроился эти самые 2 года назад.
>>1118304>2018>кресты>работа
>>1118303Не даёт, очищенную даёт calloc.
>>1118307140? кресты? даже в дс? без опыта?чё хоть за специализация, если не секрет.. финтех?
>>1118313Что скажешь на это http://cpp.sh/84qmn?
>>1118304Очень зависит от работодателя. В каком-нибудь НИИ тебе 60к дадут, в каком-нибудь яндексе - 110, мне с 2мя годами в свое время дали 150.
>>1118321https://stackoverflow.com/questions/8029584/why-does-malloc-initialize-the-values-to-0-in-gcc
>>1118315Даун? больше 70 это именно 140?>>1118343110 я как раз сейчас получаю. Хотелось бы 150-160 и ИНТЕРЕСНЫЙ ПРОЕКТ, конечно. Пишу всякую серверную хуиту под линукс.
>>1118351https://hh.ru/vacancy/23943924
>>1110566 (OP)Объясните, почему компилятор просирается огромным текстом, когда есть ошибка в шаблонах?Когда это пофиксят, чтобы их можно было нормально читать, а то такое немного пугает:std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<std::basic_string<char, std::map<std::basic_string<std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,std::allocator<char> > const, std::basic_string<char, std::char_traits<char>,std::allocator<char> > > > >char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,std::allocator<char> > const, std::basic_string<char, std::char_traits<char>,std::allocator<char> > > > >std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,std::allocator<char> > const, std::basic_string<char, std::char_traits<char>,std::allocator<char> > > > >
>>1118365потому-что он полный стэк трейс инстанцирования выдает, где можно посмотреть, с какомого момента все пошло по пизде. Вроде были какие-то тулзы для форматирования.А ваще - с опытом научишься.
Без вышки к вам нет пути?
>>1118372Я вообще не пойму, почему люди до сих пор идут в кресты - вон жс придумали уже, учится легко, разработка идет намного приятнее, зарплаты выше, работы больше.Но нет, все равно кто-то хочет жрать плюсопарашу
>>1118372агаеще желательно бабку иметь с квартирой, ну или чтобы родоки те подарили ее хотя бы годам к тридцатитк с деньгами будет туговато
>>1118373получаю на плюсопараше 250к чистыми в месяц, мне норм
>>1118373Я в веб собираюсь идти, кресты для общего развития изучаю. Просто интересно стало.
>>1118377Чем занимаешься?
>>1118373в среднем может быть и большено зарплатный потолок выше для крестов, плюс выходы на крутые областис определенного уровня тебя начинают дико ценить и хантить
>>1118381ядро шиндошса ебу, чтобы оно делало то, что мне нужно.
>>1118385Вот только джуном на крестах попробуй еще устройся, быстрее начнешь на php и жсе писать.
>>1118388win/c++ кстати проседает по ощущениям, не замечал? работы немного, но спецы нужны. один западный партнер тут приглашал почти слёзно, но я не очень умею >>1118389это тоже правда
>>1118389хуйня. Собесил много джунов, общая проблема была в том, что хуесосы даже Майерса не читали. Тех, кто читали - мы брали. Крестоджуном имхо устроиться сильно проще, ведь тебе надо знать только язык, а не РЕАКТ РЕДУКС ХУЮКС ВЕБПАК НОДЕЖС МАКАК АНУС БУТСТРАП
>>1118390> win/c++ кстати проседает по ощущениям, не замечал? работы немного, но спецы нужны. один западный партнер тут приглашал почти слёзно, но я не очень умею Это моя первая работа, где я пишу под винду, а не под ебучий GANOO+LOONIX. Но вообще да, винды очень мало, меня это прям печалит.
>>1118391А без вышки бы взяли?
>>1118394да, если пройдешь собес. Другое дело, что у человека с вышкой больше знаний обычно. Он, как минимум, может за алгоритмы и работу ОС заяснить, что мы иногда спрашивали.
>>1118395Ну, предположим, смогу заяснить. Не могут ли сразу на хуй послать автоматом? Типа даже на собеседование не пустим.
>>1118392>а не под ебучий GANOO+LOONIXНеужели разработка под винду лучше чем под линукс? Обычно все говорят обратное
>>1118397Зависит от конторы. Кто-то смотрит (ебаные деды в НИИ), кто-то не смотрит. Но когда у тебя есть 2+ года опыта, уже никто вообще не смотрит>>1118399Божественная вижуал студия + божественный решарпер С++.
>>1118397Я не он, но скажу. В двух конторах, где я работал, вообще 0 внимания было насчет дипломов. В другой был мужик, кандидат наук, у него пункт был серьезный в голове насчет вышки, всех нахуй посылал. С тимлидом однажды одного пиздюка толкового (из каких-то диких ебеней зауральских) протолкнули в другой отдел в обход этого дядьки. Как повезет, думаю, хз. Если уверен в себе, пробуй же, хуже не будет.
>>1118401>Божественная вижуал студия + божественный решарпер С++.Но ведь есть CLion
главное способность перевернуть список на бумажке
>>1118403сравнил жопу с пальцем
>>1118388>ядро шиндошсана крестах? ой, пиздешь
Эм, привет, крестомастера! Вкатился ещё со школы в 98 стандарт по шилдту, сейчас на пороге 18. Подобрал штаны, и вот за начало 17 перебрался с 11 на 14 стандарт( благодарю Саттера и Майерса).Так вот, я работал с тем что писал драйвера для всякой перефирии, алгоритмы нажирал тонными для математиков на производстве, и накатывал всякие приложухи с dl. В последнее время занимался написанием "безопасных приложений" в банке, перед этим сломав сишарпоёбам в фирме жизнь. Так вот сейчас вот сижу и думаю. ООП круто, и писать какие-то крупные и масштабируемые приложения тоже круто, но хочется что-то чего не пробовал.Глянул, что сейчас есть Sailfish OS с Qt C++ думаю притопать туда. Одновременно хочу вкатится в ОС и встраиваемые системы.Можете подсказать куда смотреть, что читать?Мимо-анон с 10-летним стажем работы на крестах в продакшене
>>1118409с подключением, ньюфаня
>>1118401>>1118402Благодарю за ответы. А на возраст внимание обращают?
Вам самим не обидно добровольно соглашаться жить у параши?Вебмакакам платят за фронтенд в 3-4 раза больше чем вам, причем им только нужно 1 фреймворк в год выучить и все. А тут надо ебаться лет 10, чтобы выучить кресты на нормальном уровне, плюс нужны разные библиотеки вроде буста, и.т.д.
>>1118414конечно обращаютпосле тридцати нахуй никому не нужен будешь
>>1118413окейя не доебатся, а с интересом: кинь пару линков на крестовый код в ядрете не umdf
>>1118416Все что не ДС/ДС2 это помойки со скотом вместо населения и шаурмянками вместо бизнеса. Нахуй ты это принес сюда?
>>1118422вот щас обидно было
>>1118420все кернельное АПИ, все, что приходит в коллбэках и тд и тп - это все чистый С, само собой. Но наш весь код, который это получает\принимает\дергает - С++14. Стандартной либы, ясен хуй, тоже нету, но тут очень решает RAII с деструкторами (свой юник поинтер, своя строка и тд), тимплиты используем, включая вариадики, лямбды.
Как реализовать в консольке? Вот например указываю я каталог на винде, прога его мониторит. Я меняю имя файла, или размер, ну короче меняю параметры, а прога моментально выдает отчет об изменении. Если винапи использовать, то какие функции? Я ньюфаг в этом просто.
>>1118440с этого начать можтhttps://msdn.microsoft.com/en-us/library/aa364417%28VS.85%29.aspx
>>1118445А это? https://msdn.microsoft.com/en-us/library/windows/desktop/aa365465(v=vs.85).aspx
>>1118321Я скажу, что ты пиздобол, и что в стандарте нигде не написано, что маллок обнуляет память, блядь.>>1118242Считывай в char. Если тебе нужен бит, считай в число и вынь бит.>>1118277Кутэкреактор.>>1118294Можешь посмотреть на код верифицированных компиляторов, гугли сам.>>1118365>Объясните, почему компилятор просирается огромным текстом, когда есть ошибка в шаблонах?Потому что шаблоны - это структура с кучей уровней вложенности, и компилятор тебе в каждом типе все эти вложения показывает.Когда у тебя куча специализаций, тебе компилятор покажет, почему каждая их них не подходит.Без этих выводов найти ошибку в использовании шаблона ещё более невозможно. Когда завезут концепты, компилятор тебе сразу сможет показать, что тип у тебя не ДифолтКонстрактибл, например. Когда завезут рефлекшн, можно будет более понятно STL написать, и ошибки тоже будут понятнее.
http://www.boost.org/doc/libs/1_66_0/libs/beast/doc/html/index.htmlСмотрите, там в буст завезли клиент HTTP. Стоит уже сейчас выбрасывать curl, или есть подводные камни?Я знаю, есть ещё куча альтернатив, но тут просто всё в одном получается. Удобно.
кароч, я прогу написал, но это FILE_NOTIFY_CHANGE_FILE_NAME в FindFirstChangeNotification отслеживает и создание файла, и удаление, и изменение имени сразу. А мне надо всё это отдельно.>>1118440-кун
прога вот https://pastebin.com/PwZZgJcx>>1118440-кун
>>1118542> To retrieve information about the specific change as part of the notification, use the ReadDirectoryChangesW function.
>>1118546блин, ну ок
Двач, напомните мне термин, как называется конструктор не по умолчанию?
>>1118597С параметрами
Direct initialization std::string s("hello");Copy initialization std::string s = "hello";Двач, почему второй пример называется инициализация копией, хотя оба варианта вызывают параметризованный конструктор?
>>1118365У тебя что-то устаревшее, может быть? Давно уже пофиксили, кроме того никто не пишет > > >
>>1118605Потому что во втором случае вызывается два конструктора - конструктор стринга из конст чар звёздочка и конструктор копирования (98) или перемещения (11+).
Пишу на Си++ несколько часов. Рейтаните мою альфа-версию простого калькулятора: https://pastebin.com/iws4rzmp там есть некоторые тудушки впрочем.
>>1118683Лабы идут на хуй
>>1118502>Когда завезут концепты, компилятор тебе сразу сможет показать, что тип у тебя не ДифолтКонстрактибл, например. Когда завезут рефлекшн, можно будет более понятно STL написать, и ошибки тоже будут понятнееВ следующем десятилетии планируется все это завезти в кресты?
>>1118639Да нет, вроде все 3 популярных компилятора - msvc, gcc и clang выдают ошибки именно в таком формате.
>>1118683>> switch (operation){>> case '+':Нахуй послан
>>1118683Калькулятор без приоритета операций - говно.
У меня, наверное, платиновый вопрос, но поиск в разделе последний такой вопрос не нашёл.Существует ли приличная GUI библиотека для сей/плюсов вообще? А то во что ни ткнусь - либо устаревшее неподдерживаемое говно(страшно выглядящее к тому же), либо перегружено нахуй и с кучей полудохлых депендентов, либо логику писали инопланетяне и пользоваться невозможно. Казалось бы многого не прошу - дай мне инструмент для создания окна и простейших элементов, но бляяяя...Постепенно я прихожу к выводу, что проще самому банально на винапи написать что нужно, благо много не нужно(даже кроссплатформенность не нужно, для себя пишу под винду). Или взять какую-нибудь графическую библиотеку вроде SDL и на ней накатать.Но вдруг я не нашёл какую-то малоизвестную годную библиотеку, так что если знаете, поделитесь, пожалуйста?
>>1118740https://github.com/cnjinhao/nanaЭто, например.А вообще поддвачну. Qt, wxWidgets, как можно пользоваться этими монстрами?
>>1118740qt - для крестовgtk - для сиelectrone - лучший гуи фреймворк для жс
>>1118742берешь и пользуешься. мое говно на qt:https://camo.githubusercontent.com/8ea200ca6efbde72bbd6122bdc95bac198eb0b05/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f796347434274784e6934745a432f67697068792e676966
>>1118745Как рисовать такой красивый интерфейс?Все, что видел на qt - некрасивое говно с интерфейсом уровня десктопных программ 2000 года, написанных на делфи
>>1118742хм, глянул поверхностно код, вроде всё просто и годно, попробую, спасибо.>>1118743>>1118745Qt точно отказ, мне на него смотреть даже страшно.gtk я пробовал, но на винде это какая-то боль и пердолинг, и выглядит страшно.
>>1118748>Non-Image content-type returnedСкажи лучше, как открывать такие ссылки.
>>1118751Хуй знает, у меня хром, я просто тыкнул мышкой и гифка открыласьпикрил - она
>>1118745Выглядит красиво, конечно. Но я как представлю, что скрывается за этим, так чуть ли не паническую атаку ловлю.>>1118750Я нашел ее, думая о примерно тех же вещах, что и ты. Прямо один в один >>1118740 были рассуждения.
>>1118748>Все, что видел на qt - некрасивое говно с интерфейсом уровня десктопных программ 2000 года, написанных на делфинасколько я понял, qt больше всего подходит для программ, которым нужен нативный интерфейс на разных ос. то есть пишешь свою програмку на линухе, он выглядит нативно для твоего DE (гном, кеды и т.д). потом компилишь эту же самую програмку на винде, интерфейс меняется, чтобы быть похожим на нативный интерфйес винды. делать кастомные интерфейсы на qt сложновато, но это возможно. там есть возможность рисовать кастомные виджеты (функцональные элементы интерфейса), которые, имхо, плохо задокументированы. я смог написать свой прогресс бар, но на это ушло приличное кол-во времени, хотя код очень тривиальный. + можно вставить opengl код (не ебу как этим там пользоваться, но 3дэ эффект вставить, наверное, можно). с анимацией я так и не разобрался, потому что документация ну очень хуйовая. есть еще qt quick, в котором по дефолту стиль material, но опять же, документация очень плохая.в итоге: qt, в теории, очень мощная вещь, но там столько всего нужно знать, а с документацией все хорошо только до тех пор, пока тебе не нужно знать ничего продвинутого.
>>1118761еще с scalability проблемы.
>>1118748еще один пример красивого приложения на qt: battle net>>1118761еще один аргумент за хуевость документации в qt: популярность сайта kdab
Сайты норм писать?
>>1118812CMS на плюсах сам найди, я видел такую.
Бамп
Зачем и когда именно нужно использовать "friend"?Вот пишу я перезагрузку оператора присваивания. Заглянул на StackOverflow для поиска канонов, а там такое:dumb_array& operator = (dumb_array other){swap(this, other);return this;}friend void swap(dumb_array& first, dumb_array& second);Вот почему он friend? Почему не функция-член класса?
>>1118715Двачую адеквата
>>1113167что за книга, что за самоучитель такой?
>>1110566 (OP)ребят с чего лучше новичку изучать си-образные языки? с чистого Си или С++??? подскажите плс, интересно ваше мнение.
>>1118909Чистый C без глобальных переменных.
>>1118909C современного С++, очевидно же!
>>1118848>Вот почему он friend? Почему не функция-член класса? Потому что автор решил сделать функцию свап (которая более логично выглядит в виде функции с двумя аргументами, а не в виде метода с одним аргументом, так как это отражает равнозначность аргументов) и через неё выразить оператор присваивания, так как код реюз и простота исполнения.>>1118909С Си.
>>1118848Плюсы двигаются в сторону шаблонного программирования. Это накладывает определенные ограничения - одинаковые вещи должны делаться одинаковыми способами. Например, если ты пишешь какой-то контейнер, количество элементов в нем должно возвращаться методом size(), не length(), не count() а именно size(), потому что так принято (конечно, ты можешь добавить в класс и length(), но size() должен быть обязателен). Тоже самое происходит со свапом. Исторически сложилось что две пременных свапаются вызовом функции с двумя аргументами. Шаблонные алгоритмы, которым нужно свапнуть два элемента будут свапать именно таким способом. Если ты хочешь чтобы твой класс работал с такими алгоритмами тебе нужно реализовать функцию свапа с двумя аргументами. При этом ты спокойно можешь сделать и функцию-член класса для свапа, если тебе это почему-то кажется удобным.http://en.cppreference.com/w/cpp/concept/Swappable>>1118909С плюсами ситауция простая. Если ты 100% уверен что нужны именно плюсы - учишь плюсы. Если не уверен - не подходишь и на километр. Учить плюсы для того чтобы просто вкатиться в "си-образные языки" бессмысленно.
Короче есть POD структура, где много простых типов int float и т.д. У нее есть дефолтный конструктор где все выставляется в 0. Как мне создать вектор из, допустим миллиона таких структур просто зааллочив кусок памяти не вызывая конструктор для каждой структуры.
>>1118960>>1118978Спасибо, теперь понятно, почему именно friend.Не считается плохим стилем, если в классе много friend-функций? Например, еще сложение, вычитание, умножение, деление и т.п.
>>1118983Если нужно так делай. Вообще их не сильно любят, так как считают нарушением инкапсуляции (что довольно спорно).
Двач, поясните что тут вообще происходит, почему можно для переменной "a" использовать member access operator? Почему в переменной "a" лежит этот typedef? Почему для этого tepedef'a можно вызывать деструктор? Что это даёт?typedef int t;t a = 42;a.t::~t();std::cout << a; //42
>>1118978>>1118960>>1118942спасибо что ответили! Начну изучать Си с нуля и параллельно читать Таненбаума по архитектуре компа! Спасибо вам ребят, и двачу спасибо!
>>1118982Бамп вопросу.Как сделать чтобы вектор просто выделил память под структуры, без вызова конструкторов? Неужели никто не сталкивался, это же пиздец какой оверхед.
>>1119019Если ты с вектором и безопасно работать хочешь то кастомные аллокарторы используются. Но в твоем случае еще и конструктор по умолчанию пустым нужно сделать. Если ты типа ебал безопасность в рот и не хочешь ебаться с всей хуйней, то просто выделяешь нужный объем памяти и кастишь к указателю на свою структуру. Используешь как обычный массив. Естественно, даже с таким подходом голые куски памяти лучше не использовать, а обмотать в какой-то простенький класс, там хранить размер выделеного блока чтобы проверять время от времени.
>>1119010хм, я тоже не догадываюсь что это такое, хотя вроде опыт и есть int b = 12; b.int::~int();так чтож присоединяюсь к вопросу, буду рад если кто-то знает и ответит
>>1119046>>1119010вопрос отменяется, разобрался сам
>>1118983>Не считается плохим стилем, если в классе много friend-функцийЭто реалии плюсов, к сожалению.>>1119019Сделай свой вектор тогда, лол. Либо сделай конструктор в виде init-метода, что логичнее.> это же пиздец какой оверхед.Там скорее всего всё инлайнится и анроллится в методе resize(), но это неточно.>>1119053Ага, теперь мне объясни, я так и не понял.
>>1119248>Ага, теперь мне объясни, я так и не понял.https://stackoverflow.com/questions/24000710/pseudo-destructor-call-does-not-destroy-an-objectПросто охренеть.
Анон, подскажи годный туториал по работе с библиотеками.Гугел, в основном, рассказывает, как прихуярить библиотеку с помощью Visual Studio. Посмотрел пару учебников, но там эта тема как-то обходится стороной.Суть такова:Пусть наш проект лежит в домашней папке ~/my_projectИ содержит один файл main.cpp, который выглядит так https://dev.mysql.com/doc/connector-cpp/en/connector-cpp-examples-complete-example-1.htmlПусть у нас нет IDE, а есть Linux, gcc и Sublime Text/Atom, чтобы понять сам механизм подключения библиотек.Берем, например, библиотеку для работы с MySQL, она выглядит так:mysql-connector-c++-1.1.9-linux-ubuntu16.04-x86-64bit/ COPYING include cppconn build_config.h config.h connection.h datatype.h driver.h exception.h metadata.h parameter_metadata.h prepared_statement.h resultset.h resultset_metadata.h sqlstring.h statement.h variant.h version_info.h warning.h mysql_connection.h mysql_driver.h mysql_error.h lib libmysqlcppconn.so -> libmysqlcppconn.so.7 libmysqlcppconn.so.7 -> libmysqlcppconn.so.7.1.1.9 libmysqlcppconn.so.7.1.1.9 libmysqlcppconn-static.a Licenses_for_Third-Party_Components.txt READMEАнон, куда положить содержимое папки mysql-connector-c++-1.1.9-linux-ubuntu16.04-x86-64bit, чтобы инклуды из файла main.cpp заработали?Надо ли эти библиотеки потом как-то дополнительно передавать в качестве аргументов при компиляции?
>>1119262Ложить можно куда хочешь. Есть стандартные папки куда можно закинуть и забыть. Есть подход ложить библиотеки по папочкам отдельно, чтобы проще было подключать разные версии. В таком случае при компиляции нужно задать папку с инклудами - флаг -I у тебя должно быть что-то типа -Imysql-connector/include - где "mysql-connector/include" адрес папки с инклюдами. При линковке нужно указать объектный файл, для статического просто прописываешь сам файл так же как любой другой объектник ("mysql-connector/lib/libmysqlcppconn-static.a"). С динамической линковкой я точно не уверен, но там вроде тоже просто файл указать. Но если хочешь линковать динамически то лучше файлы в стандартные папки закинуть. Хедеры в /usr/include/, объектники и ссылки (все гавно из lib) в /usr/lib64 или /usr/lib. Тогда флаги с адресами файлов убираешь, а вставляешь имя библиотеки, скорее всего будет "-lmysqlcppconn" (добавляешь в конце команды линковки).
>>1119019Где же твой дух хакерства?Смотришь реализацию вектора, создаешь идентичную вектору public структуру, кастуешь вектор к ней и проворачиваешь свои дела. Ну или сразу по смещениям ебашь.Не забудь только пользоваться векторским аллокатором для аллока/деаллока памяти.
>>1118982>POD структура, где много простых типов int float и т.д. У нее есть дефолтный конструктор где все выставляется в 0Ты либо пиздишь, либо пиздишь.Неявный дефолтный конструктор ничего не выставляет в ноль, а если в ноль выставляет определённый пользователем конструктор, то это уже не POD-тип.
>>1119248>>1119278>>1119037https://ideone.com/9Jeu4gВ 17 стандарте в аллокаторах оставили только выделение памяти, а все остальное вынесли в allocator_traits, что бы бедные программеры не бойлерплейтили при написании своих велосипедов. Только получается чтобы убрать construct это придется специализировать allocator_traits под свой аллокатор, а это еще больше кода.
>>1119270mysql-connector так и не завелся, поэтому попробовал с libcurl что-то сделать, по ней инфы больше.Собрал, установил ее.Взял пример с официального сайта https://curl.haxx.se/libcurl/c/10-at-a-time.htmlИ тут возник еще один вопрос. Пример написан на С, но сначала я пытался собрать его с помощью g++ и получал кучу ошибок типа undefined reference to `curl_easy_setopt', когда я начал собирать с помощью gcc, то никаких проблем не возникло и я получил рабочий бинарник.Так вот, Анон, почему g++ не может собрать бинарник? При этом он доебался только до того, что не может найти определения функций из заголовочных файлов сторонней библиотеки, но не до того, что я ему предлагаю исходник на немного другом языке.Прости мое ньюфажество, но почему компилятор для С++ не может собрать код на С? Покажи, в чем загвоздка на примере вышеприведенного кода с сайта curl.
>>1119334Точно не уверен что за хуйня, но пропробуй все С хедеры обернуть в extern "C" {}. При компиляции имена функций заменятся на специальные (name mangling) по которым они ищутся в объектных файлах. В С и С++ правила отличаются (так как в плюсах есть перегрузка функций - в имя фкнции добавляется тип оператора). Когда компилишь плюсовым компиляторам всем библиотечным функциям выдаются плюсовые имена. Тогда как в объектниках находятся сишные имена - и линкер не находит. Если к объявлению функции добавить extern "C", или написать его в таком блоке то плюсовой компилятор выдаст функции сишное имя и все будет ок.
ребят, на каком уровне нужно знать С\С++ что бы попасть junior'ом на работу в ДС сейчас?
>>1119363junior' это полный рандом. Могут требовать вплоть до мидл уровня (только зарплату джуниорскую предлагать).
>>1119364блин, а как с ума то не сойти тогда, как можно найти работу хотя бы на 40 к в ДС, с горящими глазами и пуканом, но что бы познавать и помогать высшим программистам?
>>1119372Цинкуешь пердак и ходишь по собеседованиям пока не прокнет, подтягивая слабые места. Джуна только чисто количеством взять можно.
>>1119363прочитай майерса и страуструпа - будет достаточно
Здарова, анчоусы. Подскажите, пожалуйста, есть ли какой-нибудь фреймоворк или как это по-хорошему назвать, позволяющий без ебли работать с плагинами (со сторонними длл-ками) Понятное дело, можно написать это ручками, т.е. открытие, закрытие библиотек само по себе не сложно, однако проброс исключений через границу DLL-приложение уже нетривиально, как и ебля с POD'ами и интерфейсами.
>>1119432такого не существует, т.к. разница в ABI и прочей хуете от тебя не зависит. А так - boost::dll
ПЕРЕКАТhttps://2ch.hk/pr/res/1119750.htmlhttps://2ch.hk/pr/res/1119750.htmlhttps://2ch.hk/pr/res/1119750.htmlhttps://2ch.hk/pr/res/1119750.htmlhttps://2ch.hk/pr/res/1119750.htmlhttps://2ch.hk/pr/res/1119750.html
>>1119372Пилю свою тру-стори. Не уверен, что она тебе подойдет.Работал в банке типичным планктончиком. Дальше формул в Экселе нихуя не знал. Решил подучить Питона - во благо книг дохуя и есть примитивные IDE для Андроида (QPython, например), то есть можно заниматься везде. Полгода занимался, кое-чему научился, но с такими знаниями, да без опыта на работу не устроишься. И вот тут я решил написать какую-то простенькую, но полезную хуйнюшку, с навороченным интерфейсом, чтобы вызвать щенячий восторг у начальства и услышать заветное "Хотим!". Написал кошерного менеджера задач сотрудников, который пришелся очень кстати, так как кризис, оптимизация - вся хуйня. Услышал я заветное слово и понеслась... Надо заметить, что заниматься разработкой в банке просто так нельзя: нужен особый допуск и статус разработчика, который можно получить, пройдя тест и подписав кучу бумажек и в результате тебе дают вожделенный статус и разрешение на установку инструментов разработки, но не всех. Мне, естественно, дали право на установку интерпретатора Питона. Но не буду же я писать все свое добро в блокноте. Поэтому я создал хитрожопый запрос на установку дополнительного ПО - Visual Studio 2015 + Python Tools for Visual Studio. В общем не доебешься. Парни, которые, устанавливают ПО по удаленке, не сильно понимают тонкостей, поэтому при установке, я его попросил протыкать вообще все галочки, включая C++ (какая-то часть вроде по умолчанию ставится), разумеется.Так я получал хорошую ЗП и имел возможность учиться кодить. Сейчас, через полтора года, я работаю в том же банке, моя должность по-прежнему официально не связана с разработкой, но у меня в распоряжении небольшой серверок с полным доступом, я пишу много вэб-приложений общебанковского уровня. И я неплохо прокачал Python, JavaScript, C# и свою ЗПВот только С++ в работе я не использую, но это не мешает им заниматься. Может быть позже придет идея.Я не знаком с твоей ситуацией, но может быть пока отложить С++, выучить язык попроще (РНР какой-нибудь или Node или Python), устроиться на хорошую работу, получать деньги и потом продолжить изучение?
>>1119770спасибо тебе анон! Добра тебе! Расписал всё аки бог! Я очень рад за тебя, дай бог что бы у тебя в жизни всё складывалось ещё лучше или так же хорошо и зарплата росла!!!!>>По теме:Сишечку, а потом возможно и С++ хочу изучать из за того что порог вхождения в Си очень большой и если знать Си - "Нормально" то ты и будешь знать и организацию памяти в компе и устройство\архитектуру железа отчасти и ОС и прочие вещи. После изучения и знания этих вещей будет проще вкатиться практически в любой из языков программирования. Поэтому
>>1117403>>1117532Range-based for же всегда это называлось.
Какой IDE кроме vs посоветуйте
>>1120956нет IDE кроме VS и Стефан Ти Лававей пророк ее
Если вызвать AutoIndent (Ctrl+I по дефолту, если правильно помню) на всех строках, то подобный код превращается вот в это. Как исправить?
>>1121165В QtCreator последней версии на винде
ребят тут есть кто живой?
Хочу писать игры на vulkan или directx. Что выбрать? Какие учебники прочитать? C++ практически не знаю.
>>1122136Начни с линейной алгебры и анал геометрии
>>1122136opengl
>>1121165Решилось установкой и настройкой AStyle.
Где брать убойные задачки для практики?
Анон, как отловить косяк в коде? Есть одна программа. В ней есть несколько тредов. Один тред должен заниматься сохранением и переносом данных. Я дошёл до момента когда необходимо перенести сохранённые файлы. Всё работает нормально, но при удалении скопированного файла всё намертво стопорится - окно программы не реагирует на клики, все потоки виснут, кнопки отладки в MVS становятся неактивными. При этом, это происходит только на удалении 6-10 файла. Если не удалять файлы, то всё работает нормально. Сначала я думал что это qfile.remove отрабатывает криво и попробовал и стандартный .remove и winapi DeleteFile, всё приводило к тому же результату. Как мне поймать ошибку?