Вместо шапки — https://github.com/sosachbot/cppthreadhat/wikiОтветы на все вопросы:- http://en.cppreference.com/w/- http://www.cplusplus.com/reference/Прошлый отказывается умирать в >>1129255 (OP) (OP)
Хочу стать программистом.
>>1147068Ну, начинать надо не с плюсов
>>1147074Почему? А вообще почему я спрашиваю, я безработный бездельник и ищу работу, и тут вакансию нашёл - C++ junior, где из требований база С++, ООП и мелочи. Можно ли этому за месяц подучиться и попросить взять джуниором?
Хотел задать вопрос про обращение из static функции к нестатическим членам класса, но вовремя понял что всё - тлен. Значит ли это что я стал хорошим программистом?
>>1147076Конечно можно. Но ты же бездельник.
>>1147076За месяц? Даже если бы ты сказал за год, я бы рассмеялся.
>>1147080А с чего начать? Я начну... Только не знаю с чего, а родители на работу гонят. Вот я бы за месяц подучился и связался с ними, воот. Только помоги.
>>1147083Шилдт Г. С++ Базовый курс
>>1147097А он не устаревший? Я просто посмотрел, в шапке в основном 15+ года, а Шилдт 2010.
>>1147100Завали ебало и делай что сказал он.
>>1147106Хорошо, уже качаю.
>>1147111На самом деле не особо дрочи на определенную лит-ру, которую советуют. Попробуй все и реши сам что лучше. Часто тут советуют хуйню с кучей воды.страуструп
>>1147021 (OP)Вопрос по указателям. Точнее их применению.Положим, есть функция MessageCheck(), обрабатывающая по несколько сообщений за раз. Есть сообщения.[code]std::string Message1 = "Msg1";std::string Message2 = "Msg2";std::thread(MessageCheck, Message1, Message2).detach(); [/code]Если происходит изменение значения переменной Message1, которая была передана в качестве параметра[code]Message1 = "Msg3";[/code]то, в случае, если работа потока ещё не была завершена к моменту присвоения нового значения и значение Message1 всё ещё использовалось в обработке данных, результат функции MessageCheck() может оказаться неправильным. Если я не буду использовать указателя, то такой проблемы не возникнет. Я правильно рассуждаю?Это что касается обработки данных.Есть вопрос в части быстродействия.Происходит ли работа с указателями быстрее, чем с просто переданными в качестве параметров переменными? По сути, в последнем случае получается же, что для переданного значения вновь выделяется какой-то адрес памяти и туда данные заносятся снова. Это же вызывает некоторые затраты в ресурсах и времени?Ну и третий. Pointer-to-pointer, то бишь что-то типа[code]int *UserArgument = 6;[/code]как это вообще понимать? Зачем нужен указатель на указатель?Какая в этом вообще логика?
>>1147147Проебался с разметкой. Щас пофикшу.
>>1147147https://pastebin.com/MEZ66amHТри блока для каждого из случаев.
Анон, а как ловить свои сообщения? Я попробовал пикрилейтед, что-то не получается.
>>1147217Вопрос снят чтением мануалов.
>>1147217Вопрос в изменённой форме остаётся. Как ловить свои сообщения, если винапишный message loop крутится в отдельном qt-треде?Или какой вообще способ просто остановить этот луп из основного треда?
Стоит ли учить? Допустим, что у меня дохуя свободного времени и я ищу себе хуйню в которой смогу реализоваться. Будет ли это актуально через 10, 15, 20 лет? Впрочем, я, наверное, за такое количество лет уже и перекатиться смогу. В любом случае, главный вопрос такой - стоит ли тратить сейчас примерно год-полтора на хорошее изучение плюсов?
Сап, плюсач. Пишу проектик на Qt. Проблема такова: когда запускаю процесс (QProccess), то через время главное окно перестает отвечать. Появилась идея запустить функцию с данным процессом асинхронно. Кто-нибудь может кратко объяснить как вызвать функцию асинхронно (которая меняет форму в основном потоке. или так нельзя?) и не вешает основное окно? Спасибо.
>>1147294C++ будет актуален вечно
>>1147452Почему?А питон, яваскрипт и пхп?
>>1147454И Питон, и Яваскрипт и ПХП. Просто потому что на них уже написана тонна кода, который никто не будет переделывать.
>>1147496Про кобол тоже так думали.
>>1147454Потому что единственный годный язык, работающий везде, и к тому же очень быстрый
>>1147454> C++, php, Java, C#, JS, python Эти можно учить не боясь ни за что.
>>1147076>за месяц подучитьсяотпишись через месяц, плиз, в тредкак у тя там успехисерьезно
>>1147083>а родители на работу гонятну ептиди работай грузчиком, в магазы может возьмут товар выставлять, дворником, или еще кудакресты ты НИКАК не освоишь за короткое времяНИКАК
>>1147452боже, да зачем вы вкатывальщиком кресты советуете, они только теряют свое время и все>>1147294за год-полтора ты сможешь стать нормальным веб-кодером если будешь въябыватьпиздуй в пхп тред, там сумашедший альтруист оп уже который год натаскивает таких как ты
>>1147624Ну а если я не хочу веб? Тошнит от индустрии сайтов и пр.
>>1147627>я не хочу веб1С тогда
>>1147624> боже, да зачем вы вкатывальщиком кресты советуете, они только теряют свое время и всеСоси длинный и толстый хуец. Я вкатился в C++ и не жалею.> там сумашедший альтруист оп уже который год натаскивает таких как ты.Хуйня это. Самому легче научиться.>>1147629>1С тогда Ты на порог вхождения ориентируешься?Я не люблю 1С. И для меня в 10 классе скачать репозиторий blender'а и набрать около сотни мерджов за 2 года было легче, чем было бы выседить оффлайн курсы по этой хуёне.Короче, стулья такие. Либо идёшь в веб-петушню и аутсосишь одинаковые говносайты на фреймворках, за неделю по одному.Либо идёшь в мобилкохуйню и делаешь либо мобильные версии веб приложений, либо стартапришь и пишешь какую-нибудь хуйню, рисующую собачью морду на фотках.Ну или стадишь C++ и участвуешь в годных проектах.
>>1147668>Ну или стадишь C++ и участвуешь в годных проектах.Ну а ты в каких участвуешь? Древнее легаси или йоба-софт?
Тактический бамп >>1147278Пока сделал костыль через наследование от QAbstractNativeEventFilter и ловли им юзердефайнд сообщения, которое при его ловле заставляет сделать UnhookWindowsHookEx() и ловля сообщений прекращается. Но тред не удаляется, видимо winapiшный луп остаётся жив и препятствует его удалению.
>>1147671Ну там, даже не знаю.ГИС Панорама, Компас, ABBYY, 1С(как разработчик платформы), Мой Офис, и многое другое. Куда лучше чем "сайт визитка".
>>1147730PS: то, где реально мои знакомые работалиPSS: своё место не скажу
>>1147730Например, в моем регионе нет офисов этих компаний, мне теперь в дс ехать за работой?
>>1147733Ты живёшь в Сибирском лесу?Я в захваченном санкционном Крыму без IT. И есть.
Хелп, с++ Помогите пжлст с прогой.Мне дано целое положительное число. Требуется вывести на экран кратность наименьшего среди всех его простых делителей. Ну там, допустим число 83006= 2 7 7 7 11 * 11Наименьшее это 2-ка, и его кратность на экран...С меня нз.. Донат на пиво там, хехЕсли что вот телега @komanni В будущем может прост тоже потребоваться помощь.. я буду так же спонсироватьВЫРУЧИ АНОНИМ МОЛЮ!
>>1147772А что мешает тупо забрутфорсить? Первое число на которое делится без остатка - твое. https://scastie.scala-lang.org/IKRj3LkgSVaIKMVkz7JMuA
>>1147772перебор и сравнение остатка от деления с нулём. Скинуть счет?
>>1147790Мешало моё слабоумиеСпасибо большое, падаю в ноги
Ничего не выходит, ((9((Если получится самому, скину в трехд
>>1147772Ну, а в чём проблема, анон? int YourFunc(int Num){int i = 2;while (Num%i!=0)i++;int co = 1;while(Num%i == 0){ Num/=i; co++;}return co;}
>>1147927Быстрофиксvoid YourFunc(int Num){int i = 2;while (Num%i!=0)i++;int co = 1;while(Num%i == 0){Num/=i;co++;}std::cout<<co;}
Хмм, у меня вышла такая ебола Теперь осталось чтоб он мне выводил кратность наименьшего
>>1147929>>1147927Это слишком высший язык для 60 летнего преподавателя
>>1147939чё?Обычная тупая функция
>>1147937Это жесть какая-то, для задачи всё сильно переосложнено. Тебе же не надо все делители хранить.
>>1147962Хмммм
>>1147685>>1147278Если кому интересно, я обосрался. Но в процессе я ушёл от winapiшного лупа и теперь весь захват и механизм его остановки укладывается в 4 недострочки
>>1147937>пик идентификатор массиваТРЕБУЮТ НАШИ СЕРДЦАА!!!
>>1147772https://ideone.com/rHCVptЕсли я правильно понял слово кратность.
Откуда люди берут знания о всяких способах сборки, делают руками мейкфайлы и сотню каких-то технологий? Смотрю гитхаб и охуеваю. Где все это узнать?
Сап плюсаны.Вопрос по stl-контейнеру std::deque.Если из одного потока делать только push_back, а из другого только pop_front (с предварительной проверкой, что оно не пустое), нужно ли заморачиваться синхронизацией?
>>1148341Хотя, наверное, если это непрерывный в памяти контейнер (как вектор), то синхронизация-таки нужна, чтобы контейнер ВНЕЗАПНО не начал переезжать на новое место после очередного push_back, а в это время ты пытаешься выбросить первый элемент вызовом pop_front.
За год обучения c++ можно уже будет понимать и писать большую часть программ?
>>1148344>За год обучения c++ можно уже будет пониматьСмотря какое обучение.Я вот работаю Qt-формошлепом уже полтора года и многие примеры кода, которые вываливают на форумах, не понимаю (точнее, не хочу тратить больше условного времени N, чтобы вникнуть). Особенно шаблонно-замороченные.>и писать большую часть программ?Ну, по поводу написания софта некоторая уверенность появилась, но сильно не хватает навыков проектирования. Вот щас ради развлечения пишу одну софтину для управления железом через ком-порт, уже в третий раз логику переделываю.
>>1148341http://eel.is/c++draft/res.on.objects
>>1148345где работаешь? Оборонка?
>>1148316В мейкфайлах сложного ничего нет
Сап, анончики. Двойная диспетчеризация через класс Visitor для шаблонного класса. Как это сделать блятб?!
>>1148785>где работаешь? Оборонка?Госконтора, но ни с чем серьезным не связанная.
>>1148814Через анафорические лямбды.
>>1147734>Ты живёшь в Сибирском лесу?Ростовская область. Есть только 1C.
Антоны, привет. Как сделать массив функций?
>>1149057auto x = / то, как ты создаёшь нужный тебе массив /;А так почитай про указатели на функции
>>1149060Типо массив указателей на функции?
>>1148345С пониманием шаблонного поноса та же хуйняМимо 5 лет
>>1147320Объясните квадратные скобки, впервые вижу. У лямбд список захвата перед круглыми скобками, точно не он.
>>1147320Да там и внутри круглых хуй пойми чт.о
>>1149070>С пониманием шаблонного поноса та же хуйняЯ вообще психологическую травму получил с этого дерьма.После трех месяцев в конторе дали мне проект, который на этих ебаных шаблонах и c++03 сделан. Особенно порадовали имена шаблонных функций, занимающие по 800 символов в развернутом виде, в дебаге. Натурально охуел от контраста. Несколько дней ходил в угнетенном состоянии, т.к. было ясно, что я вообще нихуя не могу понять в этом дерьме. Отчаялся настолько, что даже начал думать, что кодинг не моё и зря я сюда сунулся.Потом на лурочке в статье про ебанутый код увидел подозрительно похожий рисунок пикрелейтед.Давай смотреть, откуда это. Оказалось, есть такой утырок по фамилии Александреску -- и точно! -- нашел на полке в конторе его книгу. Сперва обрадовался. Пробежался. Некоторые идеи уловил, но код от этого читать легче не стало. Причем, тот проект был прикладной приложухой, в котором полиморфизм, обеспечиваемый шаблонами, нахуй не нужен был.Короче, чувствую, на восстановление психического состояния нужно еще год-два, чтобы я не блевал от вида шаблонов (сам кое-где уже начал их юзать).
>>1149076http://lurkmore.to/_/118731#mws_GDP3wIdХотя мне больше понравилась эта. http://lurkmore.to/_/118731#mws_i5CVAqm
>>1149074>Да там и внутри круглых хуй пойми чт.о Тем не менее, это валидный синтаксис.>>1149073>Объясните квадратные скобкиhttps://cdecl.org/?q=char+%28%26F%28%29%29%5B1%5D(const — это метод константный)
>>1148814соответствующую статью в gof читани, если нулевойдалее тебе надо будет динамический полиморфизм классической реализации заменить на статический, вот статейка кратенько:habrahabr.ru/post/208718/уточни у препода чё он конкретно хочет, тк есть разные варианты реализации под разные применения
>>1149083Спасибо, поржал.Вот это вообще жиза, ведь у этого сатанинского трактата и вправду нет переизданий:>Сразу после того, как он дописал последнюю главу, ему сделали последнюю лоботомию и писать книги ему больше не хотелось.
>>1149076Полистал книжку, не, ну его на хуй, от этого бежать надо. Этот тот самый монстр со второго оппика, который умоляет о смерти.
>>1149105бля, чувак, александреску - это забавы времен зарождения метапрограммирования в крестах, там ниче такого сложного не должно быть для современного крестовикаты лучше глянь что делают на семнадцатом стандарте, как запиливают новые бустовые библиотеки на замену старых
Ананасы, объясните зачем нужны не member функции (например std begin и end)? Какая разница между vector.begin() и std::begin(vector)?
Не ведитесь на шапку, новички. Лучше этот пост прочитайте.https://pro-prof.com/books/cpp
>>1149209первое: они более универсальнывторое: запись получается еще более лаконичнавообще, рекомендую
>>1149213ну да, шапочка так себеесли бы мне не были безразличны новичесы, можно было бы ее и попричесать
>>1149209ООП подход и неООП подход.
>>1147937<iostream.h> - это что? VC++5?
>>1149076такое лечится только переходом на жабаскрипт
Ананасы, как придумать себе программы для портфорлио?
>>1149209std::begin/end работают для встроееных массивов так же как и для классов коллекций.или, допустим, есть какая-то левая коллекция, написанная долбоёбом, который не определил для нее методы begin/end. Ты можешь написать для этой коллекции std::begin/end и она будет работать прямо как стандартная коллекция:namespace std { auto begin(долбанная_коллекция const & к) { твоя реализация } auto end(долбанная_коллекция const & к) { твоя реализация }}
>>1149213Это уже старьё. Теперь такое не в моде.
>>1149209методов .begin() и .end() в классе может не быть (например, не стльный контейнер), а у сишных массивов вообще никаких методов нет. такие функции позволяют писать темплейты, которым будет пофиг, работают они с сишными массивами или с стльными контейнерами или с чем-то другим, код будет одинаков.Для классов без .begin() и .end() правда придется написать соответствующие функции, зато в код самих классов лезть не придется.Т.е., допустим, есть у тебя какая-то библиотека, в которой какие-то свои контейнеры со своей структурой и нету у них .begin(). В таком случае можно, не модифицируя этот класс, дописать где-нибудь сбоку реализацию begin(SomeWeirdContainer&) и end(SomeWeirdContainer&) и пихать дальше этот класс куда угодно. В бусте, например, есть boost::range, в которую можно передавать не пару итераторов, а тупо контейнер (на самом деле не только контейнеры, но не суть), и работать она будет именно через begin/end.
>>1149243>namespace std {>auto begin(долбанная_коллекция const & к) { твоя реализация }>auto end(долбанная_коллекция const & к) { твоя реализация }>}range-based for loop не найдёт этих специализаций.
>>1149243Похоже, я здесь пропёрся. Функции begin/end, наверное, надо определять в том же namespace, что и долбанная_коллекция. Потомушта ADL, мать его за ногу.
>>1149247Найдёт, если begin/end находятся через ADL.
>>1149249Для этого твоя коллекция должна каким-то образом оказаться в namespace std.
>>1149249>Найдёт, если begin/end находятся через ADL.Вроде range-based for не использует уже ADLhttp://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1442
>>1149249>>1149251Вдогонку к defect report-у http://eel.is/c++draft/stmt.ranged#1.3.3
>>1149251там зачеркнуто adl и прям сразу после написано про associated namespaces, которые по сути и есть adl. Хрень какая-то если честно. В любом случае std:: не относится к associated namespaces, так что не найдет
>>1149251Это просто уточнённая формулировка для ADL.
>>1149258Ок
>>1149256Я так понимаю, это значит, что если твоя коллекция будет параметризованна типами из других namespace-ов, то lookup будет производиться в этих namespace-ах.
>>1149241нахера?учись переворачивать список, ходи по собеседованиям
>>1149264> ходи по собеседованиям Чтоб пригласили надо хотя бы что-то показать.Рассказываю я всё равно хуёво, а тут хотя бы будет на что взглянуть.
Ковыряю GUI в WinAPI, хочу менять прозрачность окна по mouse enter/mouse leave ручной анимацией (не AnimateWindow). И тут внезапно для меня я понял, что такие вещи по добру бы делать асинхронно. Вот только если я запущу тред из WndProc, то мне надо либо тут же его join'ить, чтобы по выходу из скоупа поток не распидорасило. Так вот, как асинхронно выполнять манипуляции с окнами в WinAPI в общем случае?
Поясните мне про то, что написано в сиаут.
>>11493767 чисел.
>>1149387Это я и сам понял.Я не понимаю вот это !!И зачем вообще нужны битовые сдвиги.Под а подразумевается символ 'C', который я перевожу в двоичную систему.И вот это говно тоже не понимаю: '& 0x80'
>>1149393А откуда код?Может по этому огрызку нельзя понять зачем это всё.
>>1149397Ну это, тащемта, всё
>>1149393>Я не понимаю вот это !!>первое ! - implicit-приведение к bool - если 0, то true, если не 0, то false. Второе ! - инверсия, т.е. из true в false и наоборот. Т.к. это вывод в cout без std::bool_alpha, то будет выведено 0 или 1.
>>1149265>хотя бы что-то показать.никто и смотреть не будет, лолвсем похуй че ты там в гитхабе настрочил у себя
Почему не сделают список инициализации для не-конструкторов?
>>1149256>В любом случае std:: не относится к associated namespaces, так что не найдет Я про это и написал >>1149247
>>1147076 я тут без лишнего пиздежа взялся за изучение крестов по мануалу из шакпи, и мой дорогой, я внимательно вчитываюсь и старательно конспектирую всю хуйню, и уже как долбаный месяц по 2-3 часа в день. И я только только закончи изучать типы переменных, с их особенностями, массивы указатели и ссылки. Сейчас изучаю функции.По видимому начать писать простые примеры я начну в два два с половиной месяца изучения крестов. А после основ нужно же изучить ещё стандартные библиотеки, чтобы не изобретать велосипед.
Есть в стандартной библиотеке регулярки?
>>1149646А мог бы за это время выучить верстку или вкатываться в пеашпи. Но ты захотел жрать плюсоговно.
>>1149652Да.
>>1149660двачую
>>1149264Под выражением переворачивать список, ты имеешь в виду отвечать на вопросы?
>>1149702писать его на бумажке
>>1149393>И зачем вообще нужны битовые сдвиги.Пикрелейтед (1 и 2), результат операции (0x01 << 4). Чтобы понять сдвиги, используй двоичное представление числа.Зачем нужны? Ну, конкретно я обычно использую их, когда надо разбирать всякие бинарные протоколы. Например 3-й пикрелейтед.Еще можно использовать их для арифметических операций. Сдвиг влево, это условно умножение на 2.Ты бы хоть статью какую сперва прочитал по теме.
switch_map[0x00] = &Decoder::op0x00;switch_map[0x01] = &Decoder::op0x01;switch_map[0x02] = &Decoder::op0x02;switch_map[0x03] = &Decoder::op0x03;switch_map[0x04] = &Decoder::op0x04;switch_map[0x05] = &Decoder::op0x05;switch_map[0x06] = &Decoder::op0x06;switch_map[0x07] = &Decoder::op0x07;Можно как-то автоматизированно адреса функций в map загнать?А то я начал делать, а потом понял, что у меня этих функций будет около 300.Это 300 строк кода просто под присвоение адресов.Или надо было оставить жирнейший свитч?
>>1149393>И зачем вообще нужны битовые сдвиги.Более быстрые арифметические операции, возможность деления / умножения через магические числа, приведение адресов и ещё много-много интересного и полезного.
Мне требуется массив с переменным кол-вом элементом, который будет расщиряться в зависимости от польовательского ввода. Эффективно будет использовать динамический массив? Или лучше List?
>>1149972vector юзай и не парься
>>1149974А если у меня задача требует пиздец какой производительности? Все равно ВЭкToR?
>>1149975> какой производительностиКакой?
>>1149981Максимальной. Интерпретатор пишу.
>>1149986Интерпретатор чего?
>>1149990Своего языка...
>>1149996Соснешь ведь с плюсами. Такие вещи лучше писать на лиспах и эмэлях.
>>1149660>>1149700нет уж, меня ждёт увлекательный мир микроконтроллеров и шаговых двигателей.
>>1150082мамка с борщем есть?а бабка что хату оставит?так как тебе понадобятся ресурсы
>>1149950Программно генерируй .cpp или какой-нибудь конфигурационный файл.
>>1150182Ещё получил совет сделать либу, а из неё построить map с указателями, так как там обращение будет идти по названию и можно будет добавлять индекс к названию. Что скажешь?
>>1150186Нормальный вариант, по сути та же штука. Но только скажи прощай LTO, так как либу придётся подключать динамически. Но не думаю, что это сколько-либо скажется на твоей производительности.
>>1149950boost_pp_repeat
Сап.Нашел функцию преобразования из 10-й СС в 2-ю. while (c > 0) { std::cout << bool(x&c); c >>= 1; }Допустим, возьмем x = 5, c = 4(как я понял нужно брать такое число, которое в двоичной даст столько же битов сколько в x). Теперь перейду к bool(x&c)(пик)Как после этих операция получилась эта заветная пятерка.
>>1150209Сорян за табуляцию, копировал из vs
Аноны, помогите, нашёл на форуме код для проверки ввода. У меня он сейчас выглядит вот так, всё хорош работает, но я не понимаю, как оно работает. Код используется при вводе дабла и инта, чтобы в дабл пользователь не смог ввести символ, а в инт символ/дабл. Спрашивал в треде для нуфагов, но там мне никто не ответил.
cin.get() вроде получает символ из потока и возвращает код символа.cin.clear() восстанавливает поток, если ввел букву, или неожиданный символ.Мимо другой нуфаг
>>1150218Собственно больше интересует работа условия цикла. Т.к. насколько я понял про .get() и .clear(), если я например введу 35rt, то я зайду в цикл, .clear() вернёт rt в поток ввода, откуда .get() будет забирать их к себе и сравнивать с символом переноса строки, т.к. символ не будет равен символу переноса строки он выдаст исключение.
>>1150224Поправка, .clear() забирает обратно в поток все символы/ неподходящие типы, а .get() очищает поток ввода, чтобы не оставить за собой косяков,после этого выбрасывается исключение.С этим более менее разобрался.Я не понимаю как работает условие, то есть почему при вводе просто Int, например. я вообще не пройду условие цикла и выйду из функции, а если введу символ, то попаду в цикл => получу исключение.
>>1150224>>1150228>>1150218В общем, я сам не шарю, но вот. Если убрать (std::cin.peek() != '/n') и ввести что-то типа char, то exception не вызывается, и int остается прежним. !(std::cin >> a) возвращает false(и ожиает ввод)(std::cin.peek() != '/n') возвращает true пока не завершил строку!(std::cin >> a) || (std::cin.peek() != '/n') возвращает True.В итоге цикл выполняется, и ожидает ввод.>я вообще не пройду условие цикла и выйду из функцииА вот это не совсем понял, условие вроде как проходится.Но в любом случае стоит подождать более знающих анонов.
>>1150234Если убрать .peek(), то cin просто обрубается на моменте, когда хочешь ввести ему не число, естьесли ввест 123qwe, то он запишет в a 123 и выйдет из функции. Если же ввести просто символ. то исключение вызывается. т.к. сразу выполняется условие у !cin, значит peek() нужен, чтобы не пропускать данные первая часть которых может подойти, как, например 123qwe. То есть если первым будет символ, а не число сразу сработает условие !cin и нам дадут исключение.Всё ещё не очень понятно, как они работают вместе.
>>1150241Сейчас попробовал поиграть с if(cin) в тестовой программе.В общем если в cin >> a подать 123qwe, то он запишет 123, выдаст TRUE, а qwe оставит в потоке, то есть скорее всего cin считывает 123qwe, проверяет 1, отправляет его в переменную, аналогично делает с 2 и 3, потом получает q, видит что типы не совпадают, оставляет её в потоке, возвращает значение TRUE, т.к. запись в a была произведена, но в потоке осталось qwe, и именно поэтому нужен .peek(), т.к. если мы ввели 123qwe !cin записал в а 123, оставил в потоке qwe и вернул FALSE, т.к. запись была произведена и стоит отрицание, теперь в дело вступает .peek(), который смотрит первый элемент в потоке, это оказывается не \n,он возвращает TRUE, FALSE || TRUE = TRUE, мы идём в цикл и вызываем исключение.Знающие аноны, поправьте, если где-то не прав, но то что я написал полостью соответствует тому, как это работает у меня.
>>1150209Есть мнение, что рациональней сперва освоить русский язык, а потом уже приступать к ЯП.
>>1150371Ты про ебанутую структуру вопроса, а точнее её отсутствие? Ну уж извини. В любом случае я уже разобрался :3
>>1150193Окей, попробую так, мпасибо.
>>1147074Почему нельзя использовать плюсы для обучения, используя только сишные фичи?
>>1148341Псс, парень, не хочешь немного "ускориться"?http://www.boost.org/doc/libs/1_66_0/doc/html/lockfree.html
>>1150062А что не так? И что за эмэль?
>>1149400На какой-то шифратор похоже. Судя по всему берет однобайтовый знак в плюсах не должно работать как надо, если компилятор не перенастрпоить с 4х байтового чара, и 8 раз вычисляет каждый бит, на основе манипуляций с исходным символом.
>>1150577>А что не так?Десятое правило Гринспена. Чтобы написать свой интерпретатор, или компилятор, тебе надо нахуячить половину лиспа, или эмэля. А зачем, когда они уже написаны?>И что за эмэль?https://en.wikipedia.org/wiki/ML_(programming_language)
>>1150583А что делать если я натурал?
Не могу разобраться в typedef.Вот есть такая хуйня:typedef int (*get)(int value); И использую указатель на функцию, принимающую один int и возвращающую тоже int.А как это записать без typedef?
>>1150600using zalupa = int(*)(int); ?zalupa z = [] (int) { return 3; };
>>1150608Что в объявлении означают скобки []?
>>1150609Область захвата лямбды. Прочитай про лямбды.
>>1150608>using Зачем? Мне максимально просто и для понимания, так-то через typedef удобно, но как это записывалось бы без него?
>>1150616>ЗачемЧеловек просто пидор и все
>>1150611Нихуя себе, не видел такого, интересная штука.Только пишут, что квадратные скобки это список захвата.То есть при таком объявлении мы создали указатель на функцию, которая возвращает 3, при этом она получает интовый аргумент, но не получает своих локальных переменных в списке захвата?или как ещё обозвать эти переменные в списке захвата, т.к. это же по факту просто будут поля класса лямбды, которые конструктором объявятся значениями переменных, которые попадут в список захвата?
>>1150646Алсо если сама область видимости захвата определяется блоком в котором мы лямбда-функцию объявляем?Например мы хотим, чтобы она захватила все переменные по ссылке, пишем [&], она захватит все переменные что были объявлены до неё в этом блоке?
>>1150648Хотя какой смысл, он наверное захватывает только те переменные, которые встречаются в теле само лямбда-функции? А то как-то тупо получается. И мы указываем либо режим захвата, либо конкретные переменные которые нам нужны. Так?
>>1150583>Десятое правило Гринспена. Чтобы написать свой интерпретатор, или компилятор, тебе надо нахуячить половину лиспа, или эмэля. А зачем, когда они уже написаны?>
>>1150616Если делать просто псевдонимы типов, то разницы никакой.Using там будет полезен для шаблонной магии.Ну и плюс моё личное то, что с using несколько нагляднее т.к. там есть знак присваивания, а с typedef иногда забываю что должно идти первым: псевдоним или исходный тип.
>>1150667дурак ты
>>1150667На мой вопрос так никто и не ответил.>>1150600
>>1148037проорал
>>1150600http://citforum.ru/programming/cpp_march/cpp_063.shtml
Аноны, если я сделаю так:if (chto_to > 10){int huita = new int[huj]; }То если условие не выполнится то память на массив не потратится?
Структуры - синтаксический сахар?
>>1150733Не потратится.
Попытаю удачу.Ищу хороших С++ разрабов (2 вакансии).Работа в ДС, релокация из запердяевска - вполне возможно.Требования:3 года+ крестов.Уметь в модерновый С++, всякие мув-семантики и прочий SFINAE вы понимаете.Хоть немного уметь в Winapi и не боятся вещей, типа LPCTSTR.Свободный разговорный английский. Нет, никак иначе нельзя.Умеете пользоваться любой виртуализацией.Вообще знаете винду хорошо.Плюсы:Уметь в qt.Уметь в python или LUA.Условия:Офис в ДС, охуительный соцпакет, охуенная компания со штаб-квартирой в США, известная на рынке, проект внутренний (никакая не галера), очень крутые коллеги, зарплата по договоренности, я думаю в районе ~200к чистыми договорится можно. Разработка под Windows8+ в Visual Studio 2015.[email protected] - сюда можно кинуть анонимное резюме (просто вычистите всю контактную инфу, если норм - я вам отвечу, и дальше уже предметно будем общаться).
>>1150733Кстати, даже если условие выполнится, то ты не сможешь обратиться к массиву, т.к. условие выполняется, заходишь в блок, создаёшь массив, выходишь из блока, массив автоматически удаляется.
>>1150756>массив автоматически удаляется.Нет, только указателя на него проебешь (но в примере его нет).
>>1150759Ну так обратиться он к нему всё равно не сможет уже, не?
>>1150765это просто не скомпилируется. Если написать правильно, то сможет с помощью сдвига указателя, но это хак и так никто не делает
>>1150752В чем заключается соцпакет? Обеды, страховка, скидки и красивый офис не в счет.
>>1150768Как ты узнаешь, где он?
>>1150788Обеды, страховка, занятия английским для продолжающих, компенсация фитнеса, внутренний магаз ништяков, акции конторы, всякие обучалки оплачивают. Я даже не знаю, что еще может входить
>>1150792Примерно вот так?
>>1150813Ну так ты адрес сохранил, чтоб потом кастовать и сдвигать. А если переменную с адресом проебал (вышел из области видимости), а массив остался (как у чувака в примере), то как ты его найдешь в памяти (чтоб удалить, например)?
>>1150814Думаю, что никак.Не знаю, о чём писал >>1150768
>>1150735ни в коем случаеполезнейшая конструкция, обладающая собственным семантическим смыслом, добавленная в процессе эволюции си
>>1150752ну напиши минусы товсе ж своидедлайны? 100 часовая рабочая неделя? много легаси?
>>1150838Нету минусов, рили очень близко к работа мечты. Дедлайны есть офк, но пока очень мягкие, рабочая неделя обычная 40ч, легаси вообще нет, проект с нуля пишем.
>>1150752>Умеете пользоваться любой виртуализациейЗдесь что имеется в виду?
>>1150752Удалёнка есть?
Аноны, подскажите на какой платформе можно вкатываться, чтобы работать за еду? Т.к. решать универские задачки и различные примеры из книжек поднадоело, нужен реальный опыт.
>>1150851Сразу задам ещё один вопрос.У меня ноут на 4-х поточном селероне и он откровенно подлагивает в студии, думал насчёт отдельно редактора, отдельно компилятора, но не знаю, что можно поставить или может есть какие-то облегчённые IDE?мне с этим в IDE тред бежать?
>>1150851Поясни вопрос, не понял
>>1150853VS code не катит?
>>1150854Где подать анкету/искать работу.Даже оплата не важнано если бы хватало на еду хотя бы, было бы круто, нужен только опыт.
>>1150858Думаю покатит, но, насколько я понял это только редактор, хоть и "умный"?
>>1150859Да луркай компании и пиши напрямую, так и так, возьмите в подмастерья вот мой гитхабКонтрибьюшны есть в опенсорс какой-нибудь?
>>1150859>>1150861Ну и карер ру же появился для такого дела вродехз чо там с ним
>>1150861В гит заливал только лабы универские. Ничего серьёзного нет.
>>1150850Изредка можно, фуллтайм - нет>>1150848Ты знаешь, что это такое, без проблем можешь работать с ВМками и прочим при помощи Vmware или Vbox'a не смотря на забавное требование - многие вообще не умеют.
>>1150858Скачал, сразу гит привязал, какая же удобная штука. спасибо анон!
>>1150853Попробуй Qt creator
>>1150649Короче, ты можешь вроде захватить все, что есть в скоупе, где объявлена лямбда. Взять какой-то внешний объект, или несколько, или все, или ни один, как хочешь.
>>1150875Где-нибудь есть гайд по настройке? А то у меня почему-то при отладке не отображаются переменные. Хотя сама программа, которую я писал на студии работает правильно, нужно было только путь к бинарнику прописать.
Дополз до указателей на функции, функция как параметр для функции, функция возвращающая функцию.Это слегка сломало шаблон. Дальше будет веселее да?
>>1150986Ты пидор
Антоны, какая есть THE FASTEST BLJAT структура данных, которая будет расширяться в зависимости от пользовательского ввода?
>>1151145Твой anus.
>>1150986Двачую этого >>1150996
>>1151150Т.е. вектор?
Требуется ли при vector::push_back делать vector::resize? Или первый метод сам за меня все сделает?
>>1151154поди да почитайhttps://llvm.org/svn/llvm-project/libcxx/trunk/include/vector
>>1151155Я уже познал суть сего эмпирическим методом.
>>1150996>>1151151А чо не так то а?
>>1151167В том что ты пидор.
Есть у кого-нибудь из анонов пример опенсоурс инди игры на плюсах?Важно, что бы качество кода и архитектура приложения были хорошими, а движок был самописным.
Пасаны, смотрите, только начал кладбище изучать, хотел посмотреть как работают функции с потоками, и получилась ошибка вида "use of deleted function (summa)", вот код: https://pastebin.com/9Mac3thK. Цикл, из "\" делающий "/" потому, что пользователь не вдупляет, зачем два слеша указывать в пути.
>>1151226ifstream не копируемый. Передавай по ссылке.
>>1151238Мдэ. Надо мне, наверное, читать что-то кроме гугла и ошибок компилятора.
>>1150795Ну так везде сейчас. Нет смысла перекатываться к вам.
>>1151245если у тебя 200+к зарплата - то может быть.
>>1150752winapi, ёлы... Напомнило, как на нашей местной галере esignal блычат долбаный mfc проект которое десятилетие.Звучит интересно... хотя кому я вру. Сейчас, пока не закончил вуз, хватает и 120 в донской столице. А когда закончу, 200 на фуллтайм как-то выглядят совсем маловато.
Затратно ли делать using namespace std?
>>1151290>using namespace stdКонечно затратно, это буферизует все вызовы функций из std через отдельный тред.
Затратно ли снимать свитер?
>>1151244На самом деле это всё и логически понять можно.ну не всё, но много чегоИ для коленочных программ достаточно и гугла с компилятором.
>>1151290Юзай std::, будет тебе счастье.
>>1151297На самом деле это вообще узкая ебанина, которая к логике отношения не имеет, её надо просто запомнить, один раз встретив.
>>1151292Штоблядь?
>>1151275> когда закончу, 200 на фуллтайм как-то выглядят совсем маловатоты зажрался, студентик..
>>1151304Почему не имеет отношения к логике? Логика там есть, и заключается она в том, почему сделали именно так.
>>1151306Да разве это зп - 200? На еду разве, да на машину в кредит. На жильё и семью этих копеек уже не хватит. Несерьёзно.Даже если ты лодырь, живущий у мамки, мамка быстро тебе скажет, что этого мало.
>>1151320я живу на 40 в дсмама говорит, что я молодец
>>1151145Только добавлять? Связанный список бакетов, декуеуе. В принципе подойдет вообще что угодно. Если ввод с клавиатуры, то любые издержки по аллокации будут несоизмеримы с реакцией и скоростью ввода пользователя.
правильный крестобоярин >>1151324а вот этот неправильный >>1151275
>>1151360На самом деле на 50. Это как с членом. Говоришь девушке, что у тебя 11, а потом наслаждаешься её удивлением твоему 12см крепышу.
Имеется код:while (true){ Sleep(100); for (int i = 0; i < 255; i++) { int state = GetAsyncKeyState(i); if (state == -32767) { cout << i; }}Как при помощи какой-то функции перевести код клавиши в ее название? Или придется самому все пилить?
>>1151413Используй ассоциативный массив: ключ - клавиша, значение - строка.
>>1151422нахуй стариков
Блять, почему текстовые файлы размером в 5 гигабайт так плохо обрабатываются.
>>1151467А ты попробуй убрать .txt из названия.
Антонуаны, есть ли в windows.h функция возвращающая текущую раскладку?
Как реализовать подобное: при определенном условии в программе на сях будет запущен определенный exeшник(скрипт на питоне).
>>1151501А, наверно просто system("/путь к exe/");
>>1151514Линуксоиды отпиздят за такой способ
Почему alt, shift и т.п. имеют код из двух чисел?
>>1151492есть
>>1147021 (OP)strstr - норм функция или так, хуйня?
>>1151549какае то сишная поеболина
>>1151534Can you сказать which?
>>1151558ты шутишьэто ищется в msdn за минуту
>>1151559Thank for your ответ.
>>1151561угудавай, работай
>>1151549Тебе дали string в с++, используй их,зачем тебе сишные char * строки, извращенец.
Какой инструментарий вы юзаете? Не могу определиться с выбором.Студия слишком жирная.VS Code неплох, но были проблемы с ним, да и gnw довольно медленный компилятор.Qt отвратительно выглядит. Работать с ним не нравится.Есть ли альтернативы? Или может к VSC можно другой компилятор прикрутить?
>>1151624Clion. Ничего лучше пока не видел.
>>1151626Это полноценная IDE?Или аля VSC - редактор с возможностью работы с компилятором?
>>1151627Уже нагуглил, только она бесплатная лишь первые 30 дней.
>>1151627IDE в которой есть всё, даже то, что никогда тебе не будет нужно. А вообще, что вообще такое полноценная иде в твоем понимании? Ну, 30 дней триала, бесплатная полностью, если ты студент, тем паче, никто не запрещал своровать.
>>1151631Просто фраза "30 дней триала" ассоциируется с winrar, который надоедает напоминаниями о том, что его уже пора купить при каждом действии.
>>1151634Скачал, устанавливаю, посмотрим, что это такое.Алсо есть какие-нибудь советы по настройке?
Что это такое?
>>1151659Исключение, ты как-то повредил память рядом с переменной "а". Попробуй перезапусти студию просто.
Блять, придумайте мне задачу на крестах или питоне, делать нехуй.
>>1151662Лол, я делал просто программу для решения кубических уравнений, что за хуйня.
>>1151663https://2ch.hk/pr/res/1134574.html
Аноны, можно как-нибудь настроить чтобы переменные в дебаге VSC отображались всегда, а не только когда ты ходишь пошагово с точкой остановки етц?
>>1151664Возможно написал какую-то хуйню, мало ли, всякое случается. Но нельзя исключать просто случайную ошибку.
>>1151664Ну, у меня например получается наглухо повесить винду (7, только корсор двигается) парой тредов.Это же кресты, расслабься и запасись бинтами чтобы простреленные ноги заматывать.
В универе задали лабу. Но суть не конкретно в ней. Объясните что ему не нравится? Он пишет, что первый аргумент оператора new должен быть size_t, но он, блять, и есть size_t.
>>1151736То что ты в обрубке IDE работаешь.
>>1151737Нет выбора, студия много жрёт, ноут быстро разряжается, а я им каждый день пользуюсь и с собой таскаю везде.CLion и Qt не особо понравились.
>>1151738Sublime/Vim/Emacs + GCC?
>>1151741Заебусь настраивать?
Насколько сложно написать свой движок брузера?
>>1151742В sublime даже проще чем с VS code. Просто качаешь linter-gcc, качаешь сам gcc и все.
>>1151742>>1151741И что сам посоветуешь? По внешнему виду все примерно одинаковые.
>>1151744Тогда можно чуть поподробнее? Или лучше ссыль.
>>1151736Попробуй не size_t, а std::size_t.
>>1151747Кажется помогло. Не знал, что он живёт в std. Спасибо.
>>1151743От "хуйня за 5 минут, чтобы сделать запрос к url, и вывести ответ в консольку", до "ёбаный в рот, мне нужна команда как у мазилы или гугла", в зависимости от реализуемых фич, и строгости следования стандартам веба.
>>1151746Cублайм - https://www.sublimetext.com/3GCC -https://sourceforge.net/projects/tdm-gcc/Пропиши в path путь к компилятору и все. В самом сублайме установи linter-gcc.
>>1151747Я тоже не знал, лол.Но в примере тут http://en.cppreference.com/w/cpp/memory/new/operator_new оно было с неймспейсом, а в студии я пишу без него.
>>1151752Спасибо.Через н-ное время отпишусь.
>>1151751Ну допустим, где-то по середине.
>>1151752Так у меня уже установлен MinGW, я через него в VSC компилил или это разные вещи?
>>1151751Ты же понимаешь, что это "где-то посередине" размером с ведро твоей мамаши?От парсинга html, работы с протоколами, и рекурсивной обработки ссылок на другие ресурсы, и до собственного графического движка, и своей реализации жаваскрипт машины?
>>1151761Нет.
>>1151762Блять, я эти мелочи за ночь запилю.
>>1151763Ну похрену, всё равно уже установил.
>>1151764Ну и че ты тогда у меня спрашиваешь? Просто сделай.Или хотя бы какие-то конкретный вопросы задавай, покукаретизируем.
>>1151765Просто sublime чуть меньше жрет чем VS code, если прям с зарядком пиздец. А еще меньше жрет блокнот.
>>1151766Нет, я понятно что шутил что запилю это за ночь. Я просто ахуел и прикрыл свою реакцию маской уверенности.
>>1151767А где там устанавливать linter-gcc?Полазил по вкладам не нашёл что-то.Пойду погуглю.
>>1151770Отбой, я разобрался сам.
>>1151360Почему 50 в дефолт-сити правильно, а 120 в ростовчике неправильно?Крестофилы низший сорт программистов чтоль?
>>1151748<cstdlib> (или <new>, откуда ты там берёшь size_t) это заголовочный файл стандартной библиотеки C++, а там всё живёт в std.На то, что сишные символы где-то находятся без std даже при подключении C++-библиотек, полагаться не стоит, это не переносимо.
>>1151772Как сделать, чтобы он при билде не один .cpp файл билдил?
>>1151784ну там какой-то интересный человечек:студентик в ростове-на-дону, подрабатывающий на крестах получая 120к и ноющий что ему как бы мало, а вот 200к уже нормальноя хз, может пока мы спали столица дона стала ай-ти меккой
>>1151799ппца вот в visual studio уже бы все компилил вовсюа так да, настраивай
>>1151854Не знаешь, что в билдере прописать для компиляции нескольких .cpp файлов?По имени не вариант, т.к. билдер один для всего.*.cpp тоже почему-то не прокатывает, пишет g++ invalid argument.Хотя если писать самому через консоль то всё запускается, странно.
>>1151851Да это наверное влажные фантазии какого-то июня, получающего максимум восемьдесят.
>>1151862>>1151851А какие вообще у сипипишников зарплаты? Что я потерял, выбрав пару лет назад джаву?
>>1151865Зависит. В тредах разные люди пробегали. И зарабатывающие 4-5к баксов, и 2к баксов.
>>1151865дс - джун 60-80, мид 80-100, сеньор 120болотный - джун 40-60, мид 60-80, сеньор 100мухосрани - джун 20, мид 30-50, сеньор 50-60работа в нии - можно делить на 2работа в игроделе - можно убирать 20%работа с микроконтроллерами - можно убирать 30%если математик-программист, то можно на десяточку меньше платить, им нормне троллинг
Как понимать эту строчку?Пока вводится число, или как?
while(cin >> value)>>1151888
>>1151889Пока вводится значение, которое может записаться в value если на пальцах, в общем, если value int, то если ты введёшь символ или число с плавающей точкой, то ты не войдёшь в цикл.
>>1151879Ну это дистанционщики на штаты в основном.
>>1151892Большое спасибо, все понятно объяснил
>>1151881Судя по всему, крестяшники действительно низший сорт в сравнении с джавистами и шарпниками. Джуны получают как крестомиддлы, миддлы как крестосеньоры.>работа с микроконтроллерами - можно убирать 30%Это разве не на С без плюсов в основном?И почему в геймдеве меньше?
>>1151897только сделай очищение входного потока, а то будут ошибки и ты долго будешь их искать.Дело в том, что если value int,а ты, например, ввёл 'a', то он не запишет 'a' в value, но 'a' останется висеть в потоке, и когда ты в след. раз вызовешь cin, то у тебя 'а' сразу запишется куда-то.Поэтому обязательно очищай входной поток.
>>1151881>болотный - джун 40-60, мид 60-80, сеньор 100Эх. Вкатился в ДС2 из мухосранска в похроммисты, получаю 65. Поначалу казалось, что на эту зарплату можно жить.А сейчас присматриваю жилье и понимаю, что могу себе позволить только однуху в 42 квадрата в 700 метрах от метро. Пиздец.Не смотря на то, что по жизни доходы растут, на каждом этапе внезапно приходит осознание, что ты по-прежнему нищий.
>>1151889тип объекта cin - istreamперегруженый оператор >> для istream возвращает ссылку на istreamесли ввод закончился, то оператор >> устанавливает setstate(failbit)istream отнаследован от класса basi_ios, у которого в свою очередь оператор приведения к bool, который возвращает false если установлен флаг failbitтк условие цикла требует bool, то в istream который вернет оператор >>, сработает оператор приведения к bool, пока не закончен поток ввода, от будет возвращать true, но когда читать больше будет нечего он вернет false и цикл завершитсяэто если упрощенно писать
>>1151899почему "низший сорт"? просто получают меньше чем люди, занимающися явой или веб-программированиемну то есть не микроконтроллеры, а вообще промышленная автоматизация, асу и прочее, тк реальная промышленность в жопе то и обслуживающая их часть ай-ти тоже копеечки получаетв геймдеве меньше потому что всегда есть фанатики работающие за идею
>>1151881>если математик-программист, то можно на десяточку меньше платить, им нормВот сейчас обидно было
А почему так сложилось, что цппшники такие бичи? Вы же элита блядь.
>>1151907ты с семьей что ли?нафиг те такая большая однуха, у меня тоже новострой 40кв она же огромная, лолживешь один - живи по хардкору - снимай хрущобу/брежневку самого маленького метража - очень удобно, вся инфраструктура есть, деревья во дворах есть, до метро почти всегда можно пешком добратсяты все равно туда только спать будешь приходить, живешь в большом городе - делай активности, качалочка, фитнес, клубец в пятницу ну или музей в субботу от уровня твоего зависит
>>1151922Да и ночевать на работе можно.
>>1151907и, блин, вот вы реально странныереально ты можешь снимать жилье аж километрах в 2-2.5 от метро, это расстояние проходится бодрячком за двадцать минутчеловеку как животному все равно в день надо километров 9 наматывать чтобы себя не чувствовать полутрупом
>>1151924не надо передергиватьно идеально вообще тупо выбрать жилье в пешей доступности от своей работы, километрах в трехи ходить пешком тудау меня двое знакомых так и сделали - тупо выбирали жилье у работы и все, когда переезжали на работу в дс и болотный
>>1151919никакой обиды, это реальность жизниобычно как бывает: чувак учится на математика (не на прикладную математику, где кодеров готовят), а на такого хардкорного математика, а по выходу из универа оказывается что работы не просто мало, а ее вообще нет - те тупо можно дальше делать академическую карьеру или в нии за копейки работатьну а те кто таки смогли кодерами устроится - те счастливы, хотя они на работе и ебашат лютый матан, но платят им традиционно копеечку
>>1151930Окончил парень университет, пошел работать инженером, женился,ребенок у него родился - а на инженерскую зарплату не проживешь.Пошел он лучшую работу искать. Куда ни сунется, его спрашиваютпро образование, предлагают быть инженером, а на инженерскуюзарплату как проживешь? Спасибо, друзья научили:- Ты говори, что 7 классов школы кончил.Ну, он так и сказал, взяли его в цех помощником токаря, платят - двеинженерские зарплаты, все хорошо. Через полгода подходит к нему профорг:- Ты у нас один из лучших рабочих. Мы посоветовались, решили, что тыдолжен школу закончить. Пойдешь в 8-й класс вечерней школы.Ну, куда денешься? Пошел.Сидит он на уроках по вечерам, спит от усталости, учителя неслушает. Вдруг вызывают его к доске, спрашивает его учитель найтиобъем цилиндра. А он школьной формулы, хоть убей, не помнит. Заслоняядоску собой, взял он простенький двойной интеграл, перешел к полярнымкоординатам и получил ответ. Только объем у него почему-то вышелотрицательным. Стер он интеграл, написал новый, все перерешал -опять объем отрицательный! Вдруг слышит, двоечник и худший учениккласса шепчет ему с парты:- Ты пределы интегрирования перепутал! Переставь их, всеполучится!
>>1151926Я ленивый, мне и полутрупом норм.Сейчас снимаю студию в 300 метрах от метро.>реально ты можешь снимать жилье аж километрах в 2-2.5 от метро, это расстояние проходится бодрячком за двадцать минутМне от метро до работы 15 минут пиздовать.>>1151922>ты с семьей что ли?Один.>нафиг те такая большая однуха, у меня тоже новострой 40кв она же огромная, лолХочется купить сразу и надолго.К тому же размер -- понятие субъективное. Бываю в гостях у другана, 43 квадрата однуха, ничего огромного там нет. Правда, он с бабой живет.>ты все равно туда только спать будешь приходить, живешь в большом городе - делай активности, качалочка, фитнес, клубец в пятницу ну или музей в субботу от уровня твоего зависитС каких это пор задроты-байтоебы занимаются подобной хуетой?
>>1151941>С каких это пор задроты-байтоебы занимаются подобной хуетой?всегда занимались, выгораешь же
Реквестирую книгу для новичков, где норм описали указатели
>>1151985>норм#define
>>1151985k&r
пиздос. завтра надо сдать программу.С++ длинная арифметика сложение цифр.вводим 2 числа a и b. выводит их сумму.Может кто писал такую и у кого-то код есть?
>>1151999>пиздос. завтра надо сдать программу.>вводим 2 числа a и b. выводит их сумму.Молодой человек вы разве не знали, что в ВУЗ поступают изначально умные люди для того, чтобы стать еще умнее? Идиотам там делать нечего, только время терять. Послушайте моего совета и забирайте документы оттуда пока не поздно.
Господа такой вопрос, программирую на крестах второй год в своем НИИ. В принципе разбираюсь на уровне джуна. Проведя анализ биржи фриланса: https://www.freelancer.com/jobs/пришел к выводу, что для удаленной работы, по сравнению с web-программированием, кресты находятся в невыгодной позиции. Табличка с данными на пикче.Часто слышал, что web проще чем desktop разработка и в частности web языки легче изучаются, чем кресты - этим и объясняется низкий порог вхождения в данную область. Крч. Здесь есть люди, которые сменили лыжи с десктоп разработки на крестах на веб-разработку? Расскажите про свой опыт, пожалуйста. Сам интересуюсь потому что из НИИ буду уходить ибо там мрак и хочется пойти туда где деньги можно получать меньше напрягаясь.
>>1151881Жесть какая
>>1151999double a;double b;std::cin >> a >> b;std::cout << a + b;
Как преобразовать HKL в string?
Что за хуйня LPSTR?
>>1152069Индусы-дегенераты когда писали Windows API, делали typedef-ы на фундаментальные типы С и указатели на эти типы.LPSTR этоtypedef CHAR *LPSTR а CHAR этоtypedef char CHAR Привыкай.
>>1152073...Они что ли специально читаемость кода снижали?
>>1152076Это типа на будущее задел и wrapper-ы. Будешь использовать обертки и если что-то поменяется внутри то не придется переписывать ничего.Короче хотели как лучше а получилось как всегда.
>>11518952к для московского крестуха это дно.Чел который 4-5к зашибал кстати тоже в Рашке в офисе работал.
>>1151999несложно же, напиши сам
>>1152004Мб ему в жс перекатиться и попробовать JQuery basic math plugin?
[code]int a,b;double d;d = a / b; //d будет без дробной части, т.к. a/b - целочисленное делениеd = const_cast<int>(a) / b; // будет норм.[/code]Есть ещё какие способы по плавающему поделить целые числа, чтобы без уродливой конструкции const_cast?
>>1152174static_cast
>>1152174Сишный каст?d = (double)a/b
>>1151999в строки эти числа сконверти и хуярь поразрядно еще в строку
>>1152174d = 1. * a/b;
>>1152174>Уродливой конструкцииПитон иди учи, статическая типизация не для тебя.
>>1152006Ты про веб забываешь, что там технологии устаревают раньше, чем выходят, вебники жестко выгорают.Плюсы норм тема, только к ним нужны питон + машоб + зрение опционально - и ты можешь более интересными и оплачиваемыми задачами заниматься, нежели вебники, и стабильно расти в доходах.
>>1152091Это не дно, это основная масса, уважаемых профи притом. Больше 2 возможно, и больше 10 возможно, и миллионером стать возможно - только в рашке это достижения, а не мэйнстрим.Сам получаю 3к, 26лвл. Закончу аспирантуру - уеду, конечно же.
>>1152004>>1152169>>1152021>>1152118>длинная арифметика
>>1152254https://docs.microsoft.com/ru-ru/cpp/c-language/cpp-integer-limitsчисловые типы данных ограничены не только по значению, но и по количеству разрядов. Поэтому пишутся дополнительные типы данных поддерживающие длинную арифметику для OCHE длинных чисел.
>>1152221>аспирантуру - уеду, конечно жеглавное не возвращайсяосвободи нишу, так сказать, хе хе
>>1152296В СНГ зарплаты всё равно растут медленнее. Чему радоваться-то.
>>1152091>2к для московского крестуха это дно.это зп серьора с 8+ годами опыта и вышкой по специальностимногие работают за меньшие деньги - 70-80 в дс, с 10+ годами опыта
>>1152073>Индусы-дегенераты когда писали Windows API, делали typedef-ы на фундаментальные типы С и указатели на эти типы.наверное, все же не стоит так категорично судить о вещах, в которых ты, похоже, не очень хорошо разбираешься
>>1152303Как раз столько получаю (в недефолтном городе). Без вышки, 7 лет стажа.>>1151275Что я не так делаю, Мастер?
>>1152319Таки заверши образование, позор же.И сходи к раввину наконец, исповедуйся.
cout << GetKeyboardLayout(0);system("pause");cout << GetKeyboardLayout(0);При смене раскладки все равно выдает разное значение. В чем дело, посонлар?
>>1152303>>11523191500 баксов для провинции наверное норм.Для ДС столько — надеюсь вы так троллите, оберегая сферу от залётных.
>>1152205Два чая этому знатоку.
>>1152388одинаковое значение*
>>1152392для провинции норм тыщ 40тя еще обоссут на собесе если ты какую-нибудь хуйню в крестах не сможешь объяснить, про которую уже и сам страуструп забыл, нахуй она нужныте нада сильно шарить на такие деньги
>>1151881жирновато
>>1152613>>1152392>>1152303>>1151865>>1151851>>1151275Зачем спорить и гадать на кофейной гуще? Заходите на любую биржу труда программистов и смотрите какая обстановка на сегодняшний день. Особенно понравилась Ростовская область, за которую один человек топил выше.
>>1152747В догонку сравнение с Java разработчиками.
>>1151638Да. Работай под линуксом, с виндой ты заебешься настраивать свой анус Clion.
>>1152747>>1152748АААААААААА БЛЯЯЯДЬ!!!!!
>>1152752кстати норм зп для поселка со сменным графиком и такими требованиями
>>1152752> работа в теплом помещении> за персональным компьютером> не менее 20000Шел 2018 год, загнивал запад..
>>1152747Что за биржа?
>>1152747В общем не хуже джава-приматов. Тогда всё ОК.
>>1152796Похоже на авито.
>>1152796Забыл написать. hh.ru
Зашел в тред чтобы узнать как решить проблему, пока формулировал вопрос ответ сам пришел в голову. Спасибо анноны, люблю двач.
>>1153070https://ru.wikipedia.org/wiki/Метод_утёнка
прорекламирую свой текстовый редактор на c++11 и ncurseshttps://gitlab.anrchst.ru/anrchst/ivкрэшится на некоторых корнер-кейсах, но я им уже редактирую
>>1153096По markdown могу дать совет.>`make iv.opt`>`sudo cp iv.opt /usr/local/bin/iv`У тебя в ридми эти команды отображаются в одну строку, потому что между ними нет пустой новой строки. Это первое. Второе, код оборачивают в ```. То есть>```>make iv.opt>sudo cp iv.opt /usr/local/bin/iv>```Там тогда можно не вставлять пустую строку между строками, и вообще будет выглядеть как единый блок. Одиночные ` обычно используют для названий переменных в тексте или типа того.
>>1153116спасибо, наконец запомню ```. но в данном случае и так норм
>>1153117хотя пох, поправил
>>1151865>>1152747>>1151881
>>1153096https://habrahabr.ru/sandbox/114334/"А ведь если задуматься, между процессом внутривенной инъекции и логикой текстового редактора есть определенное сходство! Представим, что допустим мне допустим нужно допустим ширнуться допустим метпервътином.В главных ролях:— Игла / струна (string!)— Баян (syringe, focus substance container)— Вена (голубой экран ПК)Если у тебя, читатель, та же форма аутизма что и у меня, то ты уже понял, что мы будем набирать в спецбуфер символы файла посланные нам Шивой путем их удачного нахождения где-то рядом, и инжектить их out в View максимально быстро вместе с красивой подсветкой :)" ебать ты наркоман
>>1153131чет в голосбайтоёбы все такие?
>>1153134статью я писал когда коммитов было в джва раза меньше, и я вообще не был уверен в концепции, но щас вроде взлетает, самому по крайней мере нравицца
>>1153134"мне, пожалуйста, пиццу с солями"
Итак. Есть поставщики данных которые регулярно создают файлы с данными. Есть отправщики данных, которые передают их в места назначений. Есть удалятель данных который удаляет файлы после того как они были отправлены по всем назначениям. Возможна ситуация когда файл один, а назначение одноВозможна ситуация когда файл один, а назначений многоВозможна ситуация когда файлов много, а назначение одноВозможна ситуация когда файлов много и назначений многоЕсли файл пишется, то передавать/удалять его не нужно. Правильно ли я понимаю что решение выглядит как ограждённый мьютексами список экземпляров структуры с полями вида (отправщик-1 отправил; отправщик-2 отправил; .... отправщик-555 не отправил;), куда периодически подглядывает удаляльщик и удаляет файл если его отправили все отправщики? Или есть решение лучше?
>>1153142везде shared_ptr и rm в деструкторе
>>1153144Т.е. список объектов. А если объект в списке вызовет свой деструктор, то список ведь не заресайзится, а просто на месте этого объекта будет nullptr?
Мб кто-то тут поможет.Есть задача на C++. Задачу вроде решил правильно, ответы выводит нужные, но когда загружаю решение пишет ошибку. В чем может быть проблема? Тестировал уже сто раз как мог, вроде ошибок нету. Почему не принимает не понимаю. Код прилагаю.Задача: Паша и Миша играют в игру. Сегодня они играют в нее t раз. Правила игры такие. На столе лежит q спичек и есть максимальное число спичек которое 1 игрок может взять за один ход это z. (z не может быть больше q). Каждый ход игроки по очереди берут от 1 до z спичек. Паша всегда начинает первый. Надо вывести сколько в каждой игре Паше надо взять спичек на первом ходу, для того чтобы гарантировано выиграть, а если это невозможно вывести 0.#include <iostream>using namespace std;int main(){int t, q, z, e;long long int x[10000], n[10000];cin>>t;for(int i=0;i<t;i++){cin>>x>>n; q=x; z=n; if(q < 1 && z < 1){cout<<"0"<<endl;return 0;} if(q==z){cout<<"1"<<endl;return 0;}else{ for(int i=1;i<q;i++) { if((q-i)==z+1 && i<=z) {cout<<i<<endl;break;} if(i==q-1){cout<<"0"<<endl;break;} }}}return 0;}
>>1153153а в списке объектов weak_ptr, он да, обнулится
>>1153158#include <iostream>using namespace std;int main(){int t,q,z;long long int x[10000], n[10000];cin>>t;for(int i=0;i<t;i++){cin>>x>>n;q=x;z=n;cout<<q%(z+1)<<endl;}return 0;}
>>1153186Все заработало
>>1152747Вроде же уже обсуждали, биржа показывает зарплаты ниже реальных.Грубо говоря, то, что вакансия висит на бирже, уже значит, что она с оплатой ниже реального рынка - иначе бы была уже занята.
>>1153198А мне показалось, что даже наоборот. Указывают одну, а потом всячески сбивают.
Аноны, такая ситуация:Есть два .h файла, выглядят грубо говоря вот так, так много ещё чего есть но проблема только в этом. Не компилится, т.к. в параметр static-функции я передаю объект класса, но в этом файле находится только прототипбез прототипа он ругается даже в самом объявлении функции в классе А, до реализации дело не доходитТак вот, я понимаю, что если я закину всё определение класса B в файл с классом A этой ошибки не будет, но так делать я не хочу, можно ли как-то это обойти?
>>1153198Я лично всегда делал контрпредложение в полтора раза больше максималки в вакансиях.Это прокатывает в одном собеседовании из трех примерно. Ну и зачем тогда работать за гроши?Еще один секрет от деда - не просите повышения, уходите сразу к другим. Проще нанять нового человека на большую зп, чем поднять старому, психология же. Больше года на одном месте работать не стоит, больше двух - категорически.
>>1153205>Проще нанять нового человека на большую зп, чем поднять старому, психология же.Раскрой мысль.
>>1153205>Еще один секрет от деда - не просите повышения, уходите сразу к другим. Проще нанять нового человека на большую зп, чем поднять старому, психология же.Ищи нового. Искать нового — это напрягать программистов ходить на собеседования, тратить их дорогущее время. Если найдёте — новый поначалу будет разбираться в системе, тупить. А таски стоять нетронутыми.>Больше года на одном месте работать не стоит, больше двух - категорически.Тыскозал?
>>1153203засунуть f в B?
>>1153206Ну просто кодер перед тобой, ты знаешь его как облупленного со всеми его недостатками, раз. Сравнивать текущие показатели с прошлогодними не очень чувствительно.Два, он же работает на этой зп, терпит, так нафига ему повышать? Проще рассказать, что не справляется, если слишком уж явно справляется пообещать - потом, когда-нибудь.
>>1153214Но f это функция класса A.Думаю, что это скорее всего сработает, но немного нарушается логика.
>>1153198статистика с hh наоборот получается слишком оптимистичнапотому что там дохуя вакух которые висят годами и созданы фирмами лишь для мониторинка рынкаплюс дохуя дублирующих вакансий - когда контора ебашить одну и ту же вакансию в десятки городовплюс дохуя дублирующих вакансий сделанных от разных кадровых агентств, а по сути на одно местореальная ситиация гораздо печальней даже вот этой не совсем радостной картинки >>1153127 (и да, советую присмотрется к точечкам с левой стороны - скорее всего вы будете выгрызать на собесе себе эти цифры)
>>1153218>там дохуя вакух которые висят годами и созданы фирмами лишь для мониторинка рынкаЧто это такое?В моем городе пара галер держат вакансии постоянно, но они и берут по ним время от времени. Что значит- только для мониторинга, не могут же они...
>>1153221это влажные фантазии анона о массовом заговоре сотрудников кадров
>>1153223сотрудник кадров, плиз
>>1153229нет. аналитик (бывший прогер)работаю на проетке HCM в крупном банке и знаю много поднаготной
>>1153240возьми меня роботатья старый но дешевый и с дипломом и с опытом
>>1153262хотя не надобуду догнивать
Можно ли как-то прикрутить к своему поделию произвольную либу в рантайме?Допустим, у меня есть программа, которая на этапе сборки ничего не знает о некой либе.Она принимает путь к этой либе, описание ее содержимого и загружает все что ей сказали.Ближе всего к этой концепции dlopen, но ему вроде как заголовок на этапе сборки нужен, совсем-совсем произвольную им не загрузишь.
>>1153298надеюсь ты еще студентик или учишьсябезработный старпер
>>1153298Можно, dlopen, dlsym, руками кастишь найденную функцию к нужной сигнатуре. Но ты анивей должен ее знать. Т.е. взять рандомную либу и наугад чето там погрузить у тебя не получится. Клепать рандомные плагины самому для своего говноподелия - вполне реально, сам так в сосничестве баловался.
>>1152006Если ты об этом всерьёз задумался, то значит тебе уже пора вкатываться в ПХП.
>>1151736operator new в классе. Чему вас только там учат? Такой херни в нормальном коде уже лет 10 не видел.
>>1153342Это нужно для самостоятельного распределения памяти.
>>1153342Например кастомные операторы new нужны для всяких трюков с выравниванием. Eigen их юзает, для всякой SIMD магии.
>>1153127Спасибо за труды, если сам сделал этот график. Можно добавить в следующий тред.
>>1153210>Если найдёте — новый поначалу будет разбираться в системе, тупить. А таски стоять нетронутыми.Два чая. Если ты нужен руководству, то поднимут зп. Если ты просиживаешь штаны и на тебе ничего не завязано важно, то отпустят и заменят таким же из соседнего отдела.
так, а в vs15 теперь нельзя формы делать на плюсах?
>>1153376>Если ты нужен руководству, то поднимут зп.Ты кое-что путаешь. Руководство довольно херово в среднем соображает, насколько ему нужен конкретный кодер.Так что повышение зависит не от твоей реальной пользы, но от того, как ты себя презентуешь.В итоге, сычам, на которых реально всё увязано - запросто дают поджопники. А социоблядям, просиживающим штанишки - да, поднимают по первому требованию.
>>1153420припекло
>>1153420>Руководство довольно херово в среднем соображаетНа херовых галерах — херово соображает
>>1153426Напротив, реальный положительный опыт.Поняв, что кодить неважно - на новой работе стал всячески подчеркивать начальству, что остальные разработчики не справляются, не понимают поставленные задачи и т.п. Свои же успехи напротив накручивал + втирал про свежечитанные статьи с хабра + строчил в джиру больше, чем работал + делегировал свои задачки всяким джунам.В итоге сейчас за полтора года вырос от миддла до тимлида, в зарплате в 2.5 раза + премии + свободный график.
>>1153435пришел к нам как то джунначал выебываться какие мы все хуевые, комментраии не пишемдовыебывался
>>1153439Так нужно начинать на равных, т.е. минимум с позиции мидла. Потом сделать немного нормальной работы, узнать есть ли альфачи в конторе и устраивать против них козни вышестоящему начальству, а беток и омег подминать под себя, не забывая и их тоже хуесосить перед начальством. Сначала втихая, а потом, когда образ говеных погромистов у начальства уже сложится - уже напрямую, чтобы все видели, кто главный. Совсем охуенно, если есть возможность пидорнуть как можно больше людей с конторы и нанять вместо них своих шавок, которые будут тебя боготворить. Тогда контору можно будет вообще как угодно вертеть на хую, пока не появится более прокачанный альфач и не попытается провернуть ту же схему.
>>1153446Тут самое главное, чтобы начальство не обладало никакими техническими навыками, т.е. понимало суть погромирования по минимуму (а таких 95% менеджмента). Дальше чистые софт скиллз, примативная доминация, игры обезьян.
>>1153446>>1153449Бля, вот сейчас думал, нигде ли я не преувеличиваю, не жирно ли получилось и с улыбкой вспоминаю, что из моего опыта почти все альфачи по такой схеме работали. Остальные, чаще всего, сосут хуи за мелкий прайс.Есть реально охуенные спецы, я с ними почти не работал - они нигде надолго не задерживаются, люто ебашат проект и уходят ебашить новый, оставляя зверинцу поддержку и дальнейшее "развитие" проекта, практически не участвуя во всей этой вакханалии. Респект таким парням.
>>1153314Веб-макака, плюсами занимаюсь по любви.
>>1153323Ну про наугад никто не говорит. Я думал, json рядом с ней положить со всемли плюшками.
Наткнулся на интересную особенность: если future не сохранять в переменную, то программа блокируется на месте вызова асинхронной функции.https://ideone.com/J5o1FLhttps://ideone.com/VaBhXAПочему так? Где об этом почитать?
>>1153537https://stackoverflow.com/questions/30810305/confusion-about-threads-launched-by-stdasync-with-stdlaunchasync-parameter
Ой, не та ссылка.
>>1153537А, нет, та, просто в вопросе этого нет, но есть в ответе.
>>1153537Жабка кстати тоже так делает, вроде.
>>1153545>>1153541Спасибо. Довольно логичное поведение. Правда, после пистона и шарпа, неожиданное.>>1153557Про джаву не знаю, но в шарпе таких граблей не встречал.
релиз плюсоклона vi `iv` v0.0, 128 коммитов нахуячил >>1153096
>>1153586В русские буквы-то уже умеет?
>>1153365>кастомные операторы new нужны для всяких трюков с выравниваниема можешь еще привести примеры практического использования этого? те которые на продакшене используются, в боевом софтеесли знаешь, конечно
>>1153591умеет!
>>1153615А член увеличивает?
>>1153615
$ git clone http://git.anrchst.ru/anrchst/iv.gitCloning into 'iv'...fatal: unable to access 'https://git.anrchst.ru/anrchst/iv.git/': SSL: certificate subject name (anrchst.ru) does not match target host name 'git.anrchst.ru'
>>1153620да, Clone URL я нормальные еще не выставил, клонировать можно ту же https-ссылку$ git clone https://gitlab.anrchst.ru/anrchst/ivCloning into 'iv'...remote: Counting objects: 501, done.
>>1153622и еще можно в Releases скачать .tar.gzалсо, в качестве гайда по vi начинать можно с config.cpp,там кейбиндинги. реализация в handle_command.cpp
>>1153612Таким трюком можно ещё запретить использовать объекты класса в куче, а только на стеке.
>>1153622А зачем ты вообще пишешь клон ви? Just4lulz?
>>1153668ну да, ну и кресты подзадрочить
>>1153557Это неправда.
>>1153699> handle_command.cpp Сделай разбор аргументов через mapКлюч строка - название функции (или что там у тебя)А значение функция которая разбирает саму строку дальше.
>>1153728ну это довольно очевидная оптимизация, что-то подобное будет
>>1153753> будет
Меня послали в ваш тред.Суть вопрса — Паттерны Банды четырех. Не могу понять одну штуку с паттерном Декоратор.Вот у меня есть, например, Декоратор: class Decorator: public Devil{...};Я унаследовал от этого декоратора Wings и Vile, оба одинаково: class Wings: public Decorator{...};А теперь хочу запилить себе черта с крыльями и вилами.Пишу такое объявление: Devil✱ tres{ new Vile(new Wings(new Devil(200000))) };Вызываю функцию для проверки — она выдает, что крылья и вилы есть.tres->who();Вызываю дополнительную фичу, которую делают вилы, всё ок: dynamic_cast<Vile✱>(tres)->vile_poke();А когда хочу вызвать фичу, которую делают крылья, получается вылет за попытку разыменовать nullptr:dynamic_cast<Wings✱>(dynamic_cast<Vile✱>(tres))->wing_clap();ЧЯДНТ?Как вообще можно добраться до всех этих промежуточных фичей, которыми задекорирован объект.Devil✱ cuatro{ new Wings(new Vile(new Cigar(new Devil(61613)))) };Банда показывала инициализацию матрешкой, но из такой штуки можно добраться только до функций наружного декоратора — для cuatro только до функций Wings, а как же мне заюзать внутренние матрешки Vile и Cigar?
>>1153867запости на pastebin код
>>1153867>>1153890https://pastebin.com/NMqSYw48Вот он. В финальном примере с cuatro вообще никуда кроме внешней добраться нельзя.
>>1153909Зачем ты делаешь такие объявления? Devil dos{ new Vile(new Devil(61613)) };Devil tres{ new Vile(new Wings(new Devil(200000))) };
>>1153922Двачую вопрос, есть ощущение, что ты вообще не понимаешь, как применяется наследование.
Кто может подсказать какие годные видео/статьи/книги про асинхроность и конкурентность? Необязательно именно под кресты, просто чтобы толково объяснили, как и для чего это нужно.
>>1153934Лучший способ - это сделать многопоточную йобу.
БляДь, что делать, если ебучая вижуал студио сломалась, новые проекты не создает, а на всех старых написано сбой загрузки и если перегружать, то нихуя не происходит. Спасите, молю
>>1153948Я и такую делаю многопоточную йобу, но хочется чтобы сначало было понимание, а потом код, а не наоборот.
>>1153951Удали студию, ставь linux mint и qt creator.
>>1153953советы уровня /b
>>1153953Я УЖЕ РЫДАЮ
>>1153439concurrency in action или чот такое
>>1153932>>1153922А как мне его объявлять? Сразу типом декоратора? Судя по тому, что выдает виртуальная функция who(), срезания нет и все надстройки классов-наследников (сиречь декораторы) видны.>есть ощущение, что ты вообще не понимаешь, как применяется наследование. Признаться, не до конца. Я зря использую эти dynamic_cast? Как стоит в моем случае обращаться ко всем декораторам глубже самого наружного?
>>1153975Начать с того, что ты пиздоглазое мудило в C++ нет дектораторов.
>>1153980он о паттерне видимо
>>1153980Дектораторов нет вообще, по крайней мере гугол не знает о таком.А если ты хотел напечатать декораторов, но опечатался, напомню, с чего начинался мой вопрос:>Суть вопрса — Паттерны Банды четырех. Не могу понять одну штуку с паттерном Декоратор.Так что, по делу мне посоветуете что-то?Может, Я просто лишнего ожидаю от этого декоратора и он свои дела делает только при создании объекта? Только что перечитал код в примерах Банды и стало закрадываться такое подозрение.
>>1150569тебе сишных фич мало? уже и указатели на функции осилил? ну давай зафигарь себе еще и шаблоны, добавь радости.потому что обучение. учиться надо постепенно.
>>1153922>>1153932Смотрите, перепилил код объявления объектов. https://pastebin.com/C9U8GkHBВсе равно остается вопрос, как вызвать это самое AddedBehavior, когда декораторов несколько вложенных. Для наружного — без проблем (как и было моим кривым способом), а вот вложенный уже никак недоступен, получается.Что делать?
>>1154041Не совсем понятно зачем ты используешь этот декоратор в данном примере.
>>1153975чувак, ты реально не понимаешь что пишешь.вот это вотDevil tres{ new Vile(new Wings(new Devil(200000))) };еще как-то работает. ты, кстати, понимаешь сам, что именно тут происходит?если че, ты тут объявляешь переменную типа "указатель на Devil", дальше, new Vile (...) кладет в переменную типа "указатель на Devil" объект типа Vile,а дальше вся эта ботва после new Vile записывает что-то в Devil devil; в классе Decorator.дальше вот это:dynamic_cast<Wings>(dynamic_cast<Vile>(tres))->wing_clap(); вот это - dynamic_cast<Vile>(tres) сработает потому что Devil tres{ new Vile(...) - там и лежит Vile.а вот это - dynamic_cast<Wings*>(...) - уже нет. потому что Vile (то что создавалось) - это или Vile или Decorator или Devilclass Vile : public Decoratorclass Decorator : public Devilа Wings (к чему приводится) - это или Wings или Decorator или Devilclass Wings : public Decorator
Как правильно в вижаке или вообще цеплять библиотеки в следующих сценариях:1. Я использую стороннюю библиотеку и НЕ вношу в нее никакие изменения, я не хочу, чтобы при компиляции целевого проекта пересобиралась либа, но при этом я хочу использовать функции/классы из этой либы. Достаточно просто в дополнительных включаемых файлах в настройках целевого проекта указать путь к исходникам либы? Нужно ли при этом в ссылках проекта добавлять проект либы? Нужно ли билдить либу в static lib, или ее вообще можно не билдить, раз я только исходники беру?2. Я использую библиотеку и иногда вношу в нее изменения, я согласен, если такая либа будет перекомпилироваться каждый раз, когда я собираю целевой проект, но в идеале бы, конечно, чтобы пересборка либы была только по необходимости. Я также, как и в первом сценарии, хочу использовать функции/классы из этой либы. На первый взгляд мне кажется, что достаточно просто в инклуды проекта прописать путь к исходникам либ. При таком раскладе всё вроде собирается и работает. Но зачем тогда нужны статические библиотеки?
>>1154062на оба вопроса. берешь либу, вносишь (или не вносишь) изменения, собираешь один раз, указываешь путь к заголовкам и собранной либе. (static или dynamic - зависит от настроек твоего проекта - везде должно быть одно и то же).если dynamic - при запуске программа тоже должна ее найти. можно в post-build step копировать либу в папку с екзешником.
>>1154060Можно сделать оператор преобразования типа.Или сделать нормальное наследование без ебучих ненужных здесь декораторов.мимо
>>1154066Алсо спасибо за объяснение, сам не до конца понимал как работает это объявление с несколькими типами в скобках.
>>1154066можно. но не сделано же. а самая радость там - фигурные скобки в строке с new. вот для чего они там? почему фигурные а не обычные? вот стопудово автор сам не знает.
если совсем вкратце, то декораторы не должны изменять интерфейс базового класса, которому динамически добавляют функциональностьты паттерн декоратор не правильно используешь, в твоем примере добавляя новые методы wing_clap, vile_poke и пытаясь их использовать напрямую..
>>1154060>чувак, ты реально не понимаешь что пишешь.Да! Потому и пришел за помощью.>>1154054Я этот пример придумал от балды, чтобы проверить, понял по примеру из книжки или не понял. Оказывается, таки не понял.Я себе это представлял так. Есть Дьявол с каким-то числом.Можно снабдить его Вилами, у которых метод vile_poke(), наносящий урон.Можно прицепить ему Крылья, у них метод wing_clap(), делающий оглушение.Можно дать ему Сигару, которую он курит (метод smoke()) и уменьшает видимость.Все эти уроны оглушения и уменьшения видимости зависят от его номера. Поле с номером объявляется в самом базовом классе Devil.Для комбинации Вил, Крыльев, Сигары (…Хвоста, Перевернутого_распятия, Плетки, Клейма и т. д.) есть два варианта:1. Запилить всё сразу в базовом классе и перегружать в наследниках только то, что нужно. Это плохо, классы платят за то, что им не нужно.2. Понаследовать множественным наследованием все нужные комбинации. Тоже плохо — комбинаторный рост.Я так понял по примерам Банды четырех, что можно сделать иначе:от Дьявола унаследовать Декоратор и его конкретными объектами сделать Крылья, Вилы и прочее, — всё с соответствующим добавленным поведением. А потом изначальный объект Devil при создании вкладывать в это дело по принципу матрешек.Теперь мудохаюсь и не могу понять, как мне вызывать это добавленное поведение у вложенных внутрь матрешек. Пример Vile✩ x{ new Vile(new Wings(new Devil(200000))) };Для наружной вызывается норм, ведь это ее метод. x->vile_poke();Для внутренней тоже норм, ведь все декотраторы наследуют этот метод, а внутри объект базового класса: x->who();А вот как сделать вызов x->wing_clap(); метода в классе Wings мне непонятно. Приведения dynamic_cast никуда не приводят (пардон за тавтологию).Получается, рекурсивно вложить можно сколько хочешь, а вызывать дополнительно прописанное поведение можно только у внешнего декоратора? Я правильно понял идею?
>>1154081Я тоже не знаю, показалось странным, но т.к. я джун, то подумал, что просто не знаю, что это такое и так нужно, попытался нагуглить, но даже запрос нормально составить не получилось.
>>1154086в этом случае помощью будет совет забыть всю эту шнягу и изучать синтаксис языка. что значат фигурные скобочки, что такое наследование, что значит ???_cast и т.д. на очень простых примерах. для текущего уровня знаний задача слишком сложная.
>>1154086еще раз: декораторы НЕ изменяют интерфейс класса, которому добавляют функциональностипомедитируй над этим..
>>1154092прикол в том, что это синтаксис инициализации массива!типа int data[] = {1,2,3}; и после этого data[0] будет 1, data[1] - 2 и т.д. а тут при создании объекта в конструктор класса передается массив, созданный на месте, состоящий из одного объекта. зачем??
>>1154096Типо мы создаём указатель на массив из одного элемента, который довольно странный, какое-то извращение.
Знаю С и Java. С какой книги начать С++?
>>1154093Спасибо. Видимо, стоит освежить и дополнить знания.>>1154095Спасибо. Вот это было прямо мега в точку!Я понял, что до этого всё понимал шиворот-навыворот. Благодарю, что разобрались в моей проблеме и пнули в нужном направлении.
>>1154101Липпман, Шилдт
>>1154104Шилдт - говно.
>>1153355Не нужен operator new для самостоятельного распределения памяти. Аллокатор надо свой писать, а не operator new. http://en.cppreference.com/w/cpp/concept/AllocatorДумаешь, написал ты operator new для своего класса, а потом хочешь его в std::vector поместить, вызовется ли твой operator new для выделения памяти под элементы вектора? Подумай еще раз. Правильный ответ: нет, нихуя не вызовется. И вообще, STL игнорирует operator new, а использует только аллокаторы. И правильно делает.
>>1150729Бля, ты можешь мне на моём примере показать, как развернуть эту конструкцию?
>>1151580Потому что они очень много где нужны, а потом всё ебало в c_str()
>>1152513Помню меня на собеседовании спросили про auto_ptr, а я помнил лишь то, что он deprecated, хотя в целом об умных указателях знал достаточно. Охуеть короче.
>>1153070Я обычно успеваю сформулировать и отписать, а потом решение приходит до первого ответа.
>>1154398Это правильный ответ вообще-то. Можешь обоссать их, если возражают.
>>1154401Ну работаю в итоге.
инициализация фигурными скобочками это C++11 если ниче не путаю
>>1154420точно, https://stackoverflow.com/questions/41212130/understanding-the-weird-syntax-with-curly-braces-in-a-constructor-initializer-li#41212253
>>1154420Да, но вроде ещё в си так можно было инициализировать структуры.
>>1154424я знал что если конструктор принимает std::initializer_list, то так можно, а так вот встречал, но матчасть не знаю
>>1154101>Знаю Сadt мап на красно-черных на макросах напишешь?
>>1147021 (OP)Здарова аутисты, поясните мне за барьеры памяти, std:atomic, вот это всё...
>>1154348Чё ты несёшь.Ты вот говоришь вещи которые не относятся к моей программе никак, ты вообще даже не знаешь принцип работы и почему я перегружал operator new.
>>1154469открываешь драфт текущего стандарта, там под atomic аж целый раздел выделен, читаешь, медитируешь..если тупой и сам не можешь то идешь на канал cppcon, там с десяточек докладов есть - смотришь, медитируешь..
>>1154531Ну я чё ты двумя словами то не можешь братухе пояснить ежже? Русачек штоле? собсно вопрос вызывает только memory_order_acq_rel, примерчик бы простой как его применять, а остальные я юзал в своем быдлокоде..
>>1154534это гуглится жеты pr на прочность проверяешь что ли?
>>1153415https://social.msdn.microsoft.com/Forums/vstudio/en-US/e6fbde42-d872-4ab3-8000-41ab22a4a584/visual-studio-2017-windows-forms?forum=winformsdesignerНо может лучше что-то кроссплатформенное, типа кути или wx виджетов?
https://www.wikihow.com/Write-Standard-Code-in-C%2B%2BАнглийский знаю плохо, подскажите, можно ли научиться программировать по данному гайду?
>>1153951То же что и при любой проблеме с шиндой.
>>1154567Нет, иди нахуй.
>>1154567Да, добро пожаловать.
>>1154030Я про это и писал. Взять конпетятор от плюсов и просто не использовать всякие смартпонтеры, виртуальные указатели на шаблоны перегруженных классов.Для обучения if-ов, for-ов и прочих встроенных массивов хватит. Только ввод некрасиво смотрится, и инклюды.
>>1154081>Скотт Мейерс. Эффективный и современный C++ Фигурные скобки это инициализатор списком http://en.cppreference.com/w/cpp/language/list_initialization
>>1154420Грубо говоря, суть в C++11 с этими фигурными скобочками стала такой. Если у класса есть пользовательский конструктор, то тогда будет произведена попытка вызова конструктора с параметрами, заданными в фигурных скобках, если же такого конструктора нет, то будет произведена попытка привести элементы в фигурных скобках к initializer_list, но, опять же, со своими ограничениями. Если конструктора нет - то будет выполнена агрегирующая инициализация (короче говоря, как инициализировались структуры все время)Подробнее сюда http://en.cppreference.com/w/cpp/language/list_initialization
>>1154587Переустановить?
>>1149646Ты там дрочишь месяц, что ли ? мимо месяц уже шаблончеки простые пишу
>>1154101Лафоре. Немного устарела, но в целом ахуеннейшая книга. Из минусов - много воды.
Крестоны, подскажите, а где можно полуркать полезную инфу для C++ программиста, помимо самого кодинга. Например:Wix, деланье инсталяторов.CmakemakefileNu vi ponali.Кроме официальной документации. Желательно видеокурс.
>>1154686google.google
>>1151193Handmade Hero, начинай прямо с первых стримов. https://www.youtube.com/user/handmadeheroarchiveОчень годная вещьТолько учти, что у реальных движкописателей, которые считают байты как детей родных, очень своеобразный подход к коду и используется около нуля фичей плюсов ради ПРОИЗВОДИТЕЛЬНОСТИ и ДЕТЕРМИНИРОВАННОСТИ.
>>1154064>указываешь путь к заголовкамНу да, additional include libraries, вот там указываю путь к хэдерам>и собранной либе.Вот это как я понял равносильно в VS добавить один проект в референсы другому (либу добавить в качестве референса у целевого проекта), так? Если да, то у меня при каждой сборке все равно сначала либа строится оче долго, ЧЯДНТ?
>>1154783> Если да, то у меня при каждой сборке все равно сначала либа строится оче долго, ЧЯДНТ? Собери библиотеку, получи на выходе .dll или .lib файл, после чего выкидываешь .cpp-шники либы из проекта, оставляя только хедеры.Линкуешь проект с полученным ранее .dll- или .lib-файлом.
>>1154506Да мне похуй на твою laba1.cpp. Раскинь мозги, если хочешь научится чем-то большему, чем твои примитивные домашние задания.
>>1154783не. в 2010 студии это в свойствах проекта - VC++ directories - include directories, library directories и т.д. в 2013 так же, в 2015 не помню где, там вроде по другому как-то, нет сейчас под рукой.причем чисто от себя советую туда писать что-то типа $(BOOST_DIR)\include $(BOOST_LIB)\stage\lib а BOOST_DIR установить в настройках винды в переменных окружения. тогда если будешь открывать проект на другой машине - не надо будет менять файлы проекта и либы по тем же путям класть, достаточно будет только переменную установить в другое значение.а референсы - это для установления зависимостей между проектами в солюшине. между своими. типа если твой екзешник зависит от твоей же дллки - указываешь зависимости там и дллка будет компилироваться сначала а потом екзешник.
Поясните дурачку как вообще должен выглядеть cmake файл. Раньше через студию работал и всякое говно просто по папкам кидал и галочки ставил в настройках проекта, а сейчас требуют слать сырцы и "cmake файл". Що это вообще?
char buffer;buffer = getBuffer(); // Получаем указатель на char[50]memset(buffer, 0, sizeof(buffer));Этот memset отработает так, как я думаю? Не затрет неизвестно что после указателя, а именно данные в массиве?
>>1154686> Cmakehttps://eax.me/cmake/
>>1154939https://cmake.org/examples/https://cmake.org/cmake-tutorial/
>>1154956А ты посмотри sizeof(buffer).
>>1155006Там макаба звёздочку съела.
>>1155010Тогда всё ок должно быть.
>>1151193Так напиши сам простенькую игру.
>>1154956ты получаешь указатель просто на char* и затираешь 4 или 8 байт
>>1155029Да макаба пожрала звёздочки.Ща.
>>1155030https://paste.ofcode.org/ZnsafjsXt4rUP6XtMhR7Ke
>>1155003Пиздец говнище. А автоматически нельзя это как-то? Из проекта студии там сгенерировать?
>>1155043Учись ходить, колясочник.
>>1155043Так напиши генератор cmake файлов.
>>1155033Лучше сделай функцию которая возвращает размер буфераИначе у тебя просто будет указатель на char и выяснить размер массива у тебя не получится.
>>1155051Подожди-подожди. Я сейчас хочу понять, где я мудак. Разыменование что даст? Я получу просто первый символ массива? Таким образом, sizeof не сработает так, как я этого ожидаю?
>>1155078> Я получу просто первый символ массива?Да.> Я сейчас хочу понять, где я мудак.Разберись как работают указатели> Таким образом, sizeof не сработает так, как я этого ожидаю? Не-а
Вымерли.
Посоны, недавно пользовался в C# System.Windows.Threading.Dispatcher, охуенная штука, скажу я вам. В C++ есть какая-нибудь уже готовая баблиотека, которая реализует данный функционал или опять придется хуи сосать и бочку делать?Boost не подойдет - там ни хуя такого нету.
>>1155614А что он делает? Тред пул что-ли?
>>1155614Попробуй корутины от фэйсбука.Ключевое слово - FiberManager.
Цппаноны, лет 10 назад была книга у Эккеля- think c++ что ли. Стоит ли ее читать или устарелое говно?
>>1155802Устарелое, конечно, но если перекатываешься из C, то можешь прочесть, она как раз для таких написана.
Чифир в радость, програмач. За 4 месяца прочитал и освоил 4 книги из шапки, прорешал около 200 задач на кодварсе и сейчас начал учить алгоритмы. И шот до меня не допрет. Сам пример из книжки Седжвика. Попарно связанные переменные. Есть вопрос - пикрелейтед 21ая строкаЯ не понимаю некоторых вещей: 1. Каким образом массив приходит к значению переменной t ? Банальным перебором ? 2. Почему id = id[q] эквивалентны ? У нас же присваивание слева - направо. есть книжки по алгоритмам попроще ? ядебил
>>1155833а что тут вообще происходит? заполняется массив, потом пары чисел со входа читаются и дальше что должно быть?
>>1155839Попарные связи 1-2 2-3 3-4 и тд. Если ввести, к примеру, 1-2, 2 - 4 то в связи 1 - 4, консолька выдаст, что они уже итак попарно связанные. Как-то так.
>>1155833То ли я дибил, то ли этот код вообще нихуя полезного не делает как и большинство охуенных задачСказал бы хоть, что это за "алгоритм" и что он предположительно должен делать.
>>1155844Хуета какая-то. При чём здесь связи? Если много раз повторять ввод p и q, то либо все элементы со значением id[p] получат значение id[q], либо наоборот - как равенство поставишь.
>>1155847Это первый найивный подход к решению задачи disjoint union set вроде. Мимо алгоритмодрочер.
>>1155844ну короче он просто идет и ставит в массиве вместо бОльшего числа в паре меньшее.типа когда 1-2 -> 11.а то что закомментировано - наоборот. вместо меньшего большее. как бы заполняет промежуток.а пофигу - потому что он просто сравнивает два элемента массива в начале. вот это t = id[p]; if (t == id[q]) ...то же самое что и if (id[p] == id[q]) и пофигу какое там в обеих позициях, большее или меньшее.
>>1155896Огромное спасибо, анончик.Надеюсь, я смогу осилить этого ёбаного Седжвика.
Поясните за хедеры и прочую хуйню.Вот я написал кучу кода в одном фале. Подумал, мол, это пиздец не круто и вынес в другой файл. Теперь я должен написать кучу кода с forward definition'ами в .h файле и его заинклюдить? Это правда такое говно, или я чего-то не понимаю?
>>1156037Если ты сделаешь из проекта либу и попробуешь прилинковать её к другому проекту, то если у тебя есть определения к хедере, всё может закончиться лютым пиздецом.
>>1155653Спасибо, посмотрю.
Нужна помощь.Ни как не доходит как объявить псевдоним шаблонного класса, чтобы не нужно было к каждому определению метода дописывать полное описание шаблона. То есть вместоtemplate<class T>class Foo{T Bar();}template<class T>T Foo<T>::Bar(){//...}можно было написатьusing //тут как-то сказать что Foo - это шаблонclass Foo{T Bar();}T Foo::Bar(){//...}
>>1156172using используется для задания синонима типа. представь, что у тебя в коде часто объявляются векторы с твоими типами Foo и Bar:std::vector<Foo, Alloc<Foo>> v1, v2;std::vector<Bar, Alloc<Bar>> v3, v4;но ты можешь сделать так:template<class T>using Vec = vector<T, Alloc<T>>;и переписатьVec<Foo> v2, v2; Vec<Bar> v3, v4;а то, что ты пытаешься убрать - это обязательная часть описания метода (такая же как и возвращаемый тип, параметры, класс-хозяин)
Вкатываюсь в кресты (опыт в программировании есть около 2х лет). Вопрос про работу: возможно ли джуном (года через полтора) устроиться не формошлепить на культяз?
>>1156103Я тогда вообще не разумею как вся эта магия работает. Вот мне приспичило код вынести в отдельный файл. Поскольку это не шарпы и автомагии не предвидится, надо поплясать с бубном, чтобы код с другом файле можно было использовать из основного. Вопрос - как?
>>1156296возможно все на свете
>>1156304файл 1 (интерфейс без реализации как в шарпе):class myclass { void func(); };файл 2 (реализация класса)#include "файл 1"void myclass::func() { реализация }файл 3 (использование класса)#include "файл 1"void main() { myclass mc; mc.func(); }шарп за тебя сам всё находит, если namespce позволяет, а тут руками надо растаскивать класс на куски.
>>1156324Я хедер содержит интерфейс или реализацию? И получается, что класс-обёртка является пространством имён?
>>1156334Если есть шаблоны, то реализацию нужно писать только в хедере. Если нет, то, как правило, в хедере пишут только интерфейс, но можно и писать реализацию: если прям в классе писать, то ничего не нужно, правда если определения методов занимает много строк, то класс становится почти не читаемым. Если собрался писать реализацию отдельных функций в хедере, то нужно не забывать писать inline перед возвращаемым типом, чтобы не нарушать ODR (one definition rule). А ну и всегда в хедере должен быть header guard, типа: #define HUI_PIZDA_H#ifndef HUI_PIZDA_H// Код хедера#endif
>>1156355Обосрался немного с гвардом. Фикс:#ifndef HUI_PIZDA_H#define HUI_PIZDA_H// Код хедера#endif
>>1156358#pragma once вроде уже везде работает
>>1156364Да, но я написал стандартный вариант. QtCreator, которым я пользуюсь, генерирует именно его.
>>1156355вкатывальщик пришёл из чудесного мира шарпа, где хуярят всё в кучу. тут проблемка то в другом - реализация часто использует другие классы, а для этого придётся инклюдить их хедеры в текущий хедер, что хуёво скажется на времени компиляции.#pragma once в начале хедера лучше, чем #define родом из 90-х. inline не обязателен - компилятор сам анализирует и подставляет текст методов.
>>1156387кстати еще прикол. инклудить надо минимально.если в хедере какой-то другой тип не используется, а используется только в цпп - инклудить его надо в цпп.
>>1156390и использовать в объявлении классов указатели на сторонние классы вместо их инстансов
Пиздец двач, я заебался, помоги. В проекте хочу использовать Crypto++, и при этом подключить/собрать её один раз и не собирать при каждой рекомпиляции проекта. Уже пробовал1. Добавлять в "дополнительные включаемые файлы" путь к .h и .cpp файлам, благо они там на одном уровне лежат. Не помогло, unresolved link error на каждое использование либы - это моя основная проблема сейчас. При этом, во внешних зависимостях проекта хэдеры из либы появляются и IDE (VS 2017) ничего не подчеркивает.2. После шага 1 пробовал добавлять в солюшн проект crytptlib (сама либа) и в зависимости целевому проекту добавить этот проект. Заебись, 10/10, всё компилируется. Правда теперь я каждый раз жду, пока пересобирается сама crypto++, что мне в общем то нахуй не надо3. Скомпилировал Crypto++ во все возможные варианты, в настройках целевого проекта в вижаке в каталоги vc++ в каталоги библиотек добавил путь к скомпилированным либам в соответствии с типом сборки проекта (дебаг к дебагу, х64 к х64, MT к MT, MTd к MTd). На всякий случай в соответсвии с одним гайдом поместил все скомпиленные либы на один уровень с исходниками. В настройках компиляции "ввод" input может быть еще называется где нибудь указал сука используй cryptlib.lib опять же в зависимости от настроек сборки проекта. ХУЙ! снова этот unresolved link error всюду и везде, ебать двач как у меня горит от этой залупы, ЧЯДНТ?
>>1156418Посмотри с помощью depends, какие символы экспортит твоя либа.
>>1156418если включил в солюшн проверь настройки - везде static или dynamic lib стоит
>>1156428Он .lib не хавает. Могу в .dll собрать и посмотреть, но что мне это даст? Я вроде как собирался в качестве .lib использовать, раз для меня либа играет роль библиотеки классов.
>>1156437Я уже убрал, ибо я просто хотел проверить, если в референсы добавить будет ли норм. Я из идеологических соображений не хочу иметь 3rd party либу в солюшне, хочу лишь использовать классы и функции оттуда.
>>1154081Пропустил ваши сообщения тогда. Спрашивают о фигурных скобках. Сейчас объясню.>>1154092Что бы ты не гуглил, вот от первоисточника: http://www.stroustrup.com/N1919-initializer_lists.pdfА тут еще ссылка с разжеванным ответом: https://stackoverflow.com/questions/18222926/why-is-list-initialization-using-curly-braces-better-than-the-alternativesЕсли кратко резюмировать, то, например, есть у нас тип Т.T✴ myobject = new T(); ← это привычная форма, ибо более стараяT✴ myobject2{new T()}; ← это вас смутило, но суть та же.Зачем же смущать благородных донов новой непонятной формой записи, спросите вы и будете правы. У старой записи есть одна проблема.= ← этот знак означает присвоение. Чтобы было чего присваивать моему T✴ myobject, сначала справа от знака = создается временный объект, для него вызывается конструктор, а потом при присвоении он копируется (или передвигается, как повезет) туда, куда показывает свежеобъявленный указатель. Лишние телодвижения.С инициализацей в стиле С++11 через эти наши фигурные скобки такой проблемы нет. >>1154085А за совет спасибо. Я уже понял, что декоратор принимал не за то, чем он есть. Decorators are not what they seem.>>1154101Почему бы не со Страуструпа? У него там даже отдельные подразделы есть специально для тех, кто хочет перейти с Java и C.
>>1156486>сначала справа от знака = создается временный объект, для него вызывается конструктор, а потом при присвоении он копируется (или передвигается, как повезет) туда, куда показывает свежеобъявленный указатель.ты бредишь. new T() возвращает void, поэтому твоё выражение это T{void*}, а это инициализация одного указателя другим с неявным приведением. нету тут никаких временных объектов, их копирования и сдвига.
>>1156505звёздочки проебалисьvoid* = new T();T✴{void✴};
>>1156387Разве inline модно писать перед любыми функциями?Компиляторы вроде ругаются если ты задашь большую inline-функцию.Или я что-то путаю?
>>1156543Можно*фикс
>>1156505Пересказываю, что знаю и насколько помню. Могу, конечно, и ошибаться, но конструктор, ЕМНИП, неявно возвращает ссылку на созданный объект.Про сдвиг речи не шло. Есть такая штука && — семантика передвижения. Тоже из C++11. Неявно может (и чаще всего будет) подкидываться компилятором взамен возврата по значению и прочих трюков с объектами, которым жить осталось до конца утверждения.Все эти танцы с указателями на void это вроде как анахронизм в наследство от C. Тут уже не берусь утверждать.А вот начинать со слов «ты бредишь», а потом писать, что в фигурных скобках происходит неявное приведение — это как минимум забавно. Одна из причин, почему Страуструп их запилил — чтобы сделать унифицированный синтаксис инициализации без опасных приведений. Серьёзно. Попробуй написать float x{0.75}; и он тебя заругает и приводить double к float не даст. Не думаю, чтобы приводило UDT к void.
Аноны, подскажите, а как белые люди входные данные читают и валидируют?Из консоли надо считать пару чисел и, если входные данные неверные - неверный формат или неверные значения - сообщить об ошибке и предложить ввести заново. Ничего умнее https://pastebin.com/KUpswsiM не придумал, но break и continue - вроде как дурной тон.
>>1156580Про continue слыхал что-то такое, но почему break дурной тон?
>>1156580Дурной тон — прятать continue в однострочник.
>>1156580>>1156602Вообще, лучше результаты условий сохранять куда-то, а затем в зависимости от результатов пропускать некоторые проверки, потом возвращать результат.Твой код не сильно читаемый. Если ты это один раз сделал, один раз отладил и спрятал глубоко в либу — то и хуй бы с ним.А если это актуальный код, который будет переноситься/использоваться/модифицироваться, то выглядит как говно.
>>1156604Ну так да, это просто задание в клуб местных робототехников, реюза тут никакого не будет. А конечный автомат какой-нибудь и правда неплохой идеей кажется.
>>1156570читаем вот это:http://en.cppreference.com/w/cpp/memory/new/operator_newи убеждаемся, что new во всех стандартах возвращает void✴.читаем вот это:http://en.cppreference.com/w/cpp/language/list_initializationи убеждаемся, что запрещены сужающие неявные преобразования. преобразования указателей, в свою очередь, сужающими не являются.ещё раз повторяю - ты бредишь в твоём примере используется инициализация переменной встроенного типа.
>>1156652>ты бредишь в твоём примереНе знаю, кому это адрессовано, но в изначальном примере (>>1153867) инициализировался очевидно пользовательский тип Devil✱ tres{ new Vile(new Wings(new Devil(200000))) };
>>1156505>возвращает voidЧто-то на хуиту похоже. https://ideone.com/EVhgA7Но сам я вкатывальщик и стандарт не читал.
Если ты сидишь в VS, то нажми на malloc / new F12 и посмотри как они определены в хедерах библиотеки std (stdlib.h / new.h).
Поясните за кириллицу в плюсах, а то я сейчас с ума сойду, пиздец какой-то.https://pastebin.com/97NBrzNfНадо типа считать текстовый файл. Подъёбок две - файл на русском и в кодировке UTF-8. Наколхозил вот это поделие, вывод в консоли по пизде соответственно. И я не могу понять - то ли читается через жопу, то ли выводится через жопу, и как с этим бороться.
>>1157185https://ru.stackoverflow.com/questions/459154/Русский-язык-в-консоли
>>1157207Попробовал жонглировать с wchar'ами, всё вообще по пизде пошло.
>>1157270Ты кодировки то не-попутал, братан. В какой кодировке у тебя исходный файл?
>>1157185Пользуйся линуксом, там такого пердлолинга с кодировками нет, везде расово полноценный UTF8.
>>1157321Исходный файл - UTF-8. Кодировал через PowerShell. И я не могу раздуплить, то ли моё поделие читает криво, то ли выводит криво.
>>1157185По умолчанию консоль в RU винде работает в кодировке 866.Подключи Windows.h и поменяй кодировку (SetConsoleOutputCP) на utf-8 CP_UTF8 (или 65001). Кстати, скажу за студию только, но у нее сорцы идут в кодировке 1251, поэтому зашитые литералы будут выводиться криво, если консоль в другой кодировке. А если поменять их кодировку на utf-8, то лучше добавить флаг компиляции /utf-8. Тогда компилятор сразу будет воспринимать код в данной кодировке без внутренних преобразований.Ну, это только касательно кодировок, работа со строками - это уже отдельный геморрой.
>>1157392Как только люди не пердолятся, лишь бы линукс не использовать.
>>1157398Щас бы студию менять на красноглазое говно
>>1157438Щяс бы по двое суток ебаться, когда на экран нужно вывести символы из не-английского алфавита.
>>1157571ведь я каждый день в консоли вывожу символы не-латинского алфавита. Каждый день это делаю. И именно из-за этого мне надо поставить глюкавое говно, вместо нормальной операционки и нормальной IDE.
Статические либы можно линковать с .dll? Научился линковать .lib к .exe, но вот с .dll - беда какая то, vc++ жалуется на unresolved symbols, хотя пути указаны по аналогии с .exe (естественно с учётом другой линковки CRT).
>>1157716библиотеки бывают динамические и статические.Статическая либа - это большой .lib файл, внутри которого находятся скомпилированные объектники, и линкер их запихивает в .ехе файл, т.е. у программы нет внешних зависимостей.Динамическая библиотека - это крошечный .lib файл, который говорит линкеру, что дефинишен таких то функций есть, но они будут загружены в рантайме. Т.е. ехе файл будет произведен, но он не запустится, если нет рядом нужной дллки, т.к. CRT перед запуском main, ищет все либы, с которыми слинкованэ и загружает из них нужные функции.
>>1157656> ко-ко-ко нинужно
>>1157784Но ведь динамическая библиотека это dll файл, по сути тот же exe, только без точки входа. Загрузка dll осуществляется методом LoadLibrary() хоть до вызова main хоть внутри него (уже в процессе работы exe). Или я чего-то не понимаю?
>>1157810есть 2 вида использования DLL. Тот, что я написал выше, и тот, который ты сейчас написал. В LoadLibrary и GetProcAddress ничего сложного, у тебя есть специфические вопросы мб?>>1157806Твоя параша красноглазая не нужна. Я никогда ни на одной работе не выводил русский текст в консоль
>>1157858В студии в general я вижу dynamic library(.dll) - это то что я написал и static library(.lib) - то что ты. Как мне получить версию с "большим lib" и "крошечным lib"? Какие-то ключи поставить?
>>1157869всё, я понял как линковать *.dll статически
>>1156543Компиляторам в большинстве случаев похуй, могут не захотеть инлайнить, а могут сами заинлайнить мелкие функции.
>>1156580>но break и continue - вроде как дурной тон. Это если совсем структурное программирование головного мозга. Пользоваться можно, но осторожно, если continue случится от некорректного (в тех или иных случаях) условия, или не в том месте, то можно проебать часть необходимых вычислений. Так, например, можно перестать инкрементить счетчик whileа и зациклиться.
>>1157185Винда и msvc? Попробуй вот этот вариантstream_fixer.h https://pastebin.com/1LvxuKALstream_fixer.cpp https://pastebin.com/bMzFx7tQПеред вызовом ввода/вывода сделай void FixIOStream();и пользуйся wstring, wcout и wchar_t.обычный cout вроде сломается при этом.
>>1158104hopefully(newMode != -1) || throwX(string() + "setmode failed for " + name);Что это за перл такой
>>1157858>Я никогда ни на одной работе не выводил русский текст в консоль> кудах-тах-тах, никогда не нужно было и вот опять
>>1158282кукарекай, петушок. Все хорошо.
>>1158341> полтреда кудахтанья про то, что в его параше не работает вывод русского языка> называет других петушками
>>1156486>> А тут еще ссылка с разжеванным ответом: https://stackoverflow.com/questions/18222926/why-is-list-initialization-using-curly-braces-better-than-the-alternatives>> в комментариях к самому вопросу обсуждают auto, вообще ни о чем.в первом ответе, где 200 голосов говорят про что фигурные скобки полезны для инициализации простых типов - дадут ошибку компиляции (это действительно полезно)в комментариях к первому ответу наоборот говорят что лучше фигурные скобки не юзать, т.к. может быть шняга типа A(5,4) и A{5,4}.во втором ответе, где 65 голосов про преимущества не говорят, но говорят, что конструктор с initializer_list будет предпочтительнее обычного конструктора (в смысле будет вызываться он, а не !!!!другой конструктор) и еще предупреждают, что будут дополнительные накладные расходы - конструктор с initializer_list передает его по значению (хотя тут обычно компиляторы это место оптимизируют) в комментариях ко второму ответу народ тоже не понимает зачем он нужен.>> Если кратко резюмировать, то, например, есть у нас тип Т.>> T✴ myobject = new T(); ← это привычная форма, ибо более стараявызовется только copy constructor, слышал про такой? в примерчике смотри случай 2.оператор присваивания вызовется только в случае 2.1>> T✴ myobject2{new T()}; ← это вас смутило, но суть та же.>> вызовется то же самое - copy constructor, см случай 5!!! если добавить инит_лист цтр - вызовется он, но смысл??>> Зачем же смущать благородных донов новой непонятной формой записи, спросите вы и будете правы. У старой записи есть одна проблема.>> = ← этот знак означает присвоение. Чтобы было чего присваивать моему T✴ myobject, сначала справа от знака = создается временный объект, для него вызывается конструктор, а потом при >присвоении > он копируется (или передвигается, как повезет) туда, куда показывает свежеобъявленный указатель. Лишние телодвижения.это бред. смотри примерчик. если в твоем классе нет конструктора с initializer_list, то вызовется всё то же самое, что и в случае 2 (для тебя специально сделал вариант 4 - когда в одном классе указатель на другой) - вызовутся copy constructor для обеих классов.если у тебя определен конструктор с initializer_list, то да, вызовется он, но смысла в этом ноль. т.к. в нем всё равно придется копировать данные из initializer_list себе внутрь класса. и скопировать их нифига не просто. в примерчике есть пара вариантов, которые вроде бы напрашиваются, но нифига не сработают.конструктор с initializer_list нужен только если у тебя внутри класса есть массив чего-то. тогда он имеет смысл, да. но если там только одна переменная.. >> С инициализацей в стиле С++11 через эти наши фигурные скобки такой проблемы нет. вот тебе примерчик - https://pastebin.com/mHbvQgmBв общем, у тебя в голове какая-то каша просто. и факт того, что подобные примерчики пишешь не ты, а тебе пишут посторонние люди, ты как-то не особо и стремишься разобраться с ней. сначала я думал, у тебя какие-то сложности с множественным наследованием, и, может быть, еще небольшие проблемки с обычным, но тут выяснилось, что ты и про конструкторы ничего не понимаешь.настоятельно тебе советую учить язык постепенно. я бы вообще начал с чистого С, без классов, без new и т.д. только printf, только malloc, но, думаю, не согласишься.но даже если нет - начни со старого стандарта. поставь 2010 студию и изучай только то, что компилируется в ней.
Котаны, выручайте. На меня вываливают сотни тон какой-то чуши с сообщениями об ошибках, ничего не понятно.queens — псевдоним для vector<pair<size_t, size_t>>q = queens{std::make_pair<size_t, size_t>(2,1)}; // работаетsize_t i = 2;q = queens{std::make_pair<size_t, size_t>(i, 1)}; // выкидывает кучу хламаВот пример, почищенный от всего лишнего: https://ideone.com/O6skZDЧЯДНТ? Или что делает не так эта функция make_pair?
>>1159259<size_t, size_t> убери
>>1159281Спасибо, помогло!
Господа товарищи, нужна ваша помощь, наставьте советом.Я написал рабочую программу: https://ideone.com/RlswwgТа система, в которую пытаюсь загрузить выдает огромное полотно сообщений о непонятных ошибках: https://pastebin.com/KfE0pnPgЯ как-то неправильно использую итераторы у map и set?Сразу говорю: сам новичок и эта программа — задание по теме словарей и множеств. Подозреваю, что у меня требуется что-то, что итератор не поддерживает. С другой стороны, в ideone ведь работает.В чем дело?
>>1160081auto j {i.second.begin()}; и jp{j}замени {} на ()
>>1160100Феноменально! Большое человеческое спасибо.Я так понял, что эта {} байда кроме как в инициализации списком инициализации больше особо и не нужна, только путает? Или что у меня не так было?
>>1160081Да еще один вопрос по этому поводу. У меня там костыль с еще одним итератором, чтобы вывести последний элемент без лишней запятой. Типа через запятую, но после заключительного чтобы без нее. Это можно сделать как-то по красоте? Пробовал .end()-1 — не компилировалось. Как перебрать все элементы множества от первого до предпоследнего?
Так, аноны, поясните правильно ли я делаю?это ебанное криптоапи, функция эта в dll, но я ебав от прошлого разраба, и трогать заголовок функции трогать нельзя:bool GetCertContextFromSystemStore(PCCERT_CONTEXT a_pCertContext, ......){.......PCCERT_CONTEXT pCertContext.......a_pCertContext=pCertContext; CertFreeCertificateContext(pCertContext); pCertContext=NULL;...........}
>>1160322Твой компилятор в первом error сказал, что в выражении ++jp первый операнд (то есть jp) имеет тип: initializer_list<initializer_list<string::const_terator>>Это говорит нам о том, что компилятор вывел тип для j - initializer_list<string::const_terator> вместо string::const_terator и для jp вывел уже по аналогии initializer_list<initializer_list<string::const_terator>>.Как же так? Почему компилятор VS выводит тип auto val{T} как T val, а noname выводит initializer_list<T> val? Ответ на вопрос тут https://habrahabr.ru/post/330402/ в главе Almost Always Auto.Резюме.1. Не использовать auto c {}. 2. Не пихать {} на каждом углу, до тех пор, пока не будут выучены на зубок все нюансы и способы использования (а их реально дохуя).
>>1160322Байда довольно универсальная и удобная:int zero{}, one{1.0};struct point { double x, y; }; point p{ zero, one };class keyPoint { public: int key; point p; }; keyPoint kp{11,{1.2, 2.3}};keyPoint arr[] = { {11,{1.2, 2.3}}, {22,{2.4, 2.5}} };std::vector<keyPoint> vec{ {11,{1.2, 2.3}}, {22,{2.4, 2.5}} };class list { public: list(initializer_list<int>&&) {}; }; list ls{ 1, 2, 3, 4, 5 };Но чтобы ей пользоваться тебе придётся вдумчиво почитать её длинное описание, ибо все способы выше имеют нюансы.
>>1160323--end()?
>>1160416Спасибо за статью, видимо, то, что сейчас мне надо.>>1160432На 1.0 при инициализации инта заругается.Почленовая инициализация объектов структур — коню понятно.Со списком инициализации тоже. Какие тут вообще нюансы?Вот что с auto лучше не использовать, это для меня было неожиданностью. А где-то в стандарте об этом есть? Ну типа там unspecified behaviour или еще что-то.>>1160606Феноменально. Я почему-то думал, что это rvalue и не должно заработать, но потом понял, что оно ведь и нужно мне только с правой стороны. Спасибо!
>>1161070>На 1.0 при инициализации инта заругается.да, сначала там был double, однако:int ai[] = {1.0}; скомпилится, int i{1.0}; - нет>Почленовая инициализация объектов структур — коню понятно.struct intS{int i;}; class intC{int i;}; intS si{0}; - да, intC ci{0}; - нетstruct S{double a,b,c;}; S s1{1.0}; - да, S s4{1.0,1.0,1.0,1.0}; - нет>Со списком инициализации тоже. Какие тут вообще нюансы?vector<int> vec1(5), vec2{5} - будут разнымиstruct list { list(initializer_list<int>&&) {}; list(double) {}; };list ls{ 1.0 }; - не скомпилится, хоть и есть конструктор для doublelist ls{}; вызовет конструктор c initializer_list, а если в класс добавить list() = default, то нет
>>1161070>А где-то в стандарте об этом есть? Ну типа там unspecified behaviour или еще что-то.Не ленись, сходи по ссылке - там написано, что в 14м году на стандарт накатили патч, изменивший трактовку твоего случая. И, как я понял, у тебя один компилятор реализует стандарт до 14 года, а второй после.Ещё у компиляторов бывают расширения меняющие стандарт:VS может неконстантную l-value ссылку инициализировать от r-value: T f() { return T(); }; T& t = f();
Как отобразить несколько графиков в одной с.к. в QChart?
>>1161106int ai[] = {1.0}; не должно скомпилироваться. Может у тебя опечатка и подразумевалось int ai[] = {1,0};Я не случайно сказал структур, а не классов, у классов уровень доступа private, при чем тут фигурные скобки вообще.intS и intC это что-то для меня новое. Объяснишь?Дальше снова почленовая инициализация, чего нехватило — добивается значениями по умолчанию, с лишними — ясен пень не скомпилируется.Дальше о синтаксисе конструктора. Уже бы взял пары чисел для удобства (кол-во элементов, значение1) или {значение первого элемента, значение второго элемента}.Можно ли так писать в одной строке vector<int> vec1(5), vec2{5}; не знаю. Я бы не рискнул и почему-то кажется, что это bad practice.1 — в твоем примере при объявлении опускается и, будучи параметром по умолчанию, заполняет все 5 элементов значением по умолчанию для типа int.Дальше list ls(1.0); очень даже скомпилируется с твоим конструктором для double. Но если объявить конструктор принимающий список инициализации и пихать в него список из одного элемента неподходящего типа, конечно не скомпилируется. Это пример из разряда не используйте нашу микроволновку для сушения домашних животных.Финальный пример, ЕМНИП при объявлении любого конструктора конструктор по умолчанию не генерируется по умолчанию. С командой =default ты явно говоришь, чтобы всё-таки генерировался.Всё верно? Если да, тогда какие еще есть именно подводные камни, которые остаются неочевидными после чтения Страуструпа?
>>1161379>int ai[] = {1.0}; не должно скомпилироваться.1>d:\code\test15\test15\test15.cpp(84): warning C4838: conversion from 'double' to 'int' requires a narrowing conversion1>d:\code\test15\test15\test15.cpp(84): warning C4244: 'initializing': conversion from 'double' to 'int', possible loss of data1> test15.vcxproj -> D:\Code\test15\Debug\test15.exe========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========Но ведь стандарт не позволяет?
>>1161379>Дальше list ls(1.0); очень даже скомпилируется с твоим конструктором для double.Стандарт говорит, что сначала ищется конструктор с initilizer_list и если нет подходящего, то просматриваются все остальные. В нашем примере (initilizer_list<int>) не подходит, а (double) подходит. Но увы, list ls{1.0} не компилится.
>>1161379>Можно ли так писать в одной строке vector<int> vec1(5), vec2{5}; не знаю. Я бы не рискнул и почему-то кажется, что это bad practice.Тут главное, что vec(5) содержит 5 элементов, а vec{5} только один.
>>1161379>конструктор по умолчанию не генерируется по умолчанию.Так я не про это, а про то, что у тебя есть 2 конструктора - с initializer_list и обычный. По идее initializer_list имеет приоритет, но для ls{} будет вызван обычный.
>>1161417Ну и собственно практика. Ты сначала написал только конструктор с initializer_list, написал кучу кода везде. А потом добавил default и у тебя всё поплыло и ты сидишь и ищешь эти ебучие скобочки по всему проекту.
>>1161379>у классов уровень доступа privateбыло так:class C { public: int i; int get() { return i; }; };сделал get виртуальной и всё - вперёд переписывать все вхождения C num{1} на C num; num.i = 1;
Что делать, если выдают кракозябры? Ситуация такова:static void write(const wstring& w) { setlocale(LC_ALL, "ru-RU"); // для подстаховки, считывало и без него std::wfstream stream; stream.open("sample.txt", std::ios::out); stream.imbue(std::locale{ "rus_rus.866" }); // при считывании это помогало, тут уже нет stream << w; stream.close(); }В текстовом файле оказываются такая хрень:Ља Є®§пЎал ҐЎгзЁҐ, Є Є®Ј® д ««®б ўл вгв?!Я что-то упускаю из виду, но что?
>>1161870> Я что-то упускаю из виду, но что?Тот факт, что у тебя Ш1ИДОШ5 вместо операционной системы.
>>1161870> stream.imbue(std::locale{ "rus_rus.866" });Попробуй поменять на 1251, может помочь.
>>1162004>>1162122Спасибо, заработало. Что на эту тему лучше почитать, чтобы таких вопросов не возникало?
>>1162130про юникод, например