Это копия, сохраненная 6 апреля 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Упившись властью, ты умом сгнила,
Погрязшая в сомненьях и раздорах!
Нет мудрым предложениям числа,
Но счесть бы смог по пальцам однорукий
Советы, что ты ладно приняла.
Сплетаясь в склоке, как весной гадюки,
Вы модули отвергнули в обрат.
Исхода не дождутся наши внуки!
Пока ваш пленум спорами объят,
Приступит к делу колыбель порока,
И Билла псы их к жизни претворят.
Страшась сойтись во взглядах раньше срока,
К своей кончине ускоряете ход:
Немного от оков стандартных прока,
Коль ересь преимущество дает.
Старший брат: >>683573 (OP)
Предыдущий: >>688646 (OP)
TL;DR
Q: Я хочу тотчас вкатиться, а разбираться буду в процессе. Что я должен делать?
Q: Не уверен, что хочу изучать C++. Как мне пощупать его без лишней ебли?
A: Читаешь эту книжку, смотришь упражнения из нее и суешь в онлайн-компилятор. Сообщения компилятора об ошибках копипастишь в гугл, ответы на возникающие у тебя вопросы ищешь в предыдущих тредах, спрашиваешь в этом треде, если не нашел. Если тебя послали на хуй или не ответили, то ты спросил платину, читай предыдущие треды внимательнее.
Памятка ньюфагу
- Вопросы по синтаксису идут на хуй
- Лабы идут на хуй
- "Как мне сделать Х на чистых крестах без библиотек" идут на хуй
- Все идут на хуй
- Хейтер сосет члены на пару со своей мамашей
Небольшие фрагменты кода размещай в треде при помощи тега [code] и жабаскрипт-костыля. Для больших фрагментов используй внешние сервисы.
FAQ
Мотивация
Q: Почему стоит использовать именно C++?
A: Ни один язык не идеален, но по совокупности киллер-фич C++ оставляет все остальные языки позади. Вот основные три:
- Скорость
C++ действительно быстрый язык — вместе с C, его прародителем, они с большим отрывом уделывают по скорости все остальные языки высокого уровня. Код на C++, как правило, медленнее аналогичного кода на C приблизительно на 0-20% а в ряде случаев C++ оказывается даже быстрее, причем замедление появляется только при использовании высокоуровневых конструкций (в C++ ты никогда не платишь за то, чего не используешь). Таким образом, если тебе требуется высокопроизводительный код, C++ станет отличным выбором. - Мощь
C++, являясь одним из наиболее выразительных и мощных языков, позволяет использовать большинство существующих парадигм. Его философия построена на минимальном ограничении программиста в выборе методов и инструментовпростреливания ногирешения задачи. Как следствие, используя C++, ты можешь не думать о том, как обойти искуственные ограничения языка, а беспрепятственно выбрать наиболее подходящие к ситуации средства. - Популярность
C++ по-настоящему популярен. На нем написаны десятки тысяч приложений и миллиарды строк кода, о нем написаны сотни книг, он до мельчайших подробностей документирован и стандартизован. Используя C++, ты никогда не останешься без работы или поддержки комьюнити.
Литература
Q: Окей, я решил вкатиться. Какие же книги мне читать?
A: Специально для тебя аноны /pr собрали уникальную коллекцию отборной литературы по крестам. Только лучшие книги, последние издания, без хуев! Выбирай категорию и обмазывайся:
-
Для нюфань
Учебники для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется:
Автор(ы) Название Год Ссылка Стэнли Липпман, Жози Лажойе и Барбара Му Язык программирования C++ 2014 https://goo.gl/kVaela Стивен Прата Язык программирования C++ 2012 https://goo.gl/z7kA8u Бьерн Страуструп Программирование. Принципы и практика использования C++ 2011 https://goo.gl/nAFUXa
Другие обучающие материалы
Q: Я не умею читать.
A: Можешь посмотреть какой-нибудь онлайн-курс: раз, два, три
Q: Не люблю, когда льют воду. Хочу коротких материалов по существу.
A: Вот тебе блоги, факи, референсы и всякое такое:
- Годный блог, в котором все просто и понятно тян не нужны кококок борщ
- Блог с хорошо расписанными фичами новых стандартов
- Краткие описания библиотечных функций и контейнеров - на русском или более подробно на ангельском
- Блог Герба Саттера (на ангельском)
- Блог Скотта Мейерса (на ангельском)
- Блог еще одной тянки, много о Qt и оптимизации (на ангельском)
- Куча других блогов (на ангельском)
- Большой FAQ по C++ (на ангельском)
- Видео с CppCon (на ангельском)
Софт и библиотеки
Q: Я готов начать погроммировать! Куда мне писать код?
A: На этапе написания хэллоуворлдов можно не ебаться с установкой софта, а использовать онлайн-компиляторы: раз, два, три, четыре. Для работы над более серьезными вещами удобнее всего установить какую-нибудь IDE. Ниже приведены несколько хороших вариантов:
Платформа | Название | Описание | Ссылка |
---|---|---|---|
Windows | Microsoft™ Visual Studio® | Общепризнанно самая продвинутая и удобная IDE, не имеющая равных по части автодополнения и возможностей отладчика. По ссылкам справа можно скачать бесплатную редакцию последнего выпуска (2015 Community Edition). Кроме того, существуют редакции с расширенными возможностями (Professional и Enterprise). Они стоят сотни денег, но если ты студент вуза, подписанного на Dreamspark Premium, то ты можешь получить их безвоздмездно (то есть даром). Многим новичкам интерфейс студии кажется чересчур сложным, так что обязательно прочти этот гайд, если у тебя возникают проблемы с компиляцией хэллоуворда | https://goo.gl/qgAAc6 (русская версия) или https://goo.gl/WIPW9L (ангельская версия) |
Все | CodeLite | Простая, легковесная, кроссплатформенная, швабодная IDE. Менее навороченная, чем студия, но среди бесплатных вне конкуренции. Вероятно, это наилучший вариант для новичка с *nix. Под Windows же требует чуть больше ебли с установкой компилятора MinGW/LLVM | http://codelite.org/, "sudo aptitude install codelite codelite-plugins" для установки под *nix |
Все | CLion | IDE, призванная похоронить Visual Studio пока не особо получается. Она стоит денег, но можно украсть почти не протухшую версию на торрентах или получить бесплатную лицензию на год по скану студбилета, если ты студент. Удобные свистелки и перделки присутствуют. Тормоза и баги присутствуют. Кросплатформенность присутствует | https://www.jetbrains.com/clion |
Q: Я прочитал все вышеперечисленное, теперь я гуру! Что дальше?
A: Дальше переходишь по ссылке, пробуешь отвечать на вопросы и понимаешь, что ты пока в самом начале пути. Кроличья нора крестов практически бездонна, поэтому продолжать постигать тонкости и детали можно очень и очень долго. В то же время, на этом этапе у тебя должно быть достаточно знаний, чтобы уверенно писать неплохой код. Поэтому читай исходники открытого софта и библиотек, отправляй пулл-реквесты в них, читай книжки по предметным областям и общим методикам разработки, а дальше уже сможешь запилить свой проект или вкатиться в существующий.
ОП-хуй шапку проебал.
>>692431
Вы видели тред где решали какая шапку будет? Недавно был. Суть в том что у старого опа лапша в шапке, а у нового не крутой оп-пик, нет стишка и многое из шапки выпилил. Мод решил сделать хтмл разметку для шапки старого опа чтобы не было такого спагетти. Теперь оп пости стишок с оп-пиком и через форму жалоб сигналит моду про новый тред, а тот редактирует шапку вставляя хтмл код в неё. Исходники шапки на гитхабе и скоро такое на всех тредах будет. Надо просто самому хтмл разметку написать и через пул реквестов сюда https://github.com/pr-hats/2ch.hk-pr-Hats/ отправить.
Да, не успевают и выделили модули в отдельную TS
Семнадцатый выйдет в 16ом году? А когда следующий?
C# 10 дней назад свою шапку туда залили, а мод что-то не добавляет её им. Кстати такая система позволит всегда свежие ссылки на треды в шапке прикреплённого треда писать.
>Пока что фича экспериментальная
Еще в том треде писали, что пока что только на крестотреде тестируют. Потом уже всем объявят, если взлетит концепция.
Что тут тестировать? 2 мелких комита за всё время. Никакого прогресса и жалоб. Пора по всем тредам пройтись и с плашкой мода сказать чтобы тоже свою шапку пилили. Надо только за jsом следить чтобы туда лишнего не записали.
Из добавленных фич:
- filesystem
- всякое говно из буста по типу optional, any и пр.
- всякое минорное говно по типу добавления генераторов в <random> и пр.
Ни concepts, ни modules, ни networking, ни Transactional Memory, ни networking не ожидается.
Найс, ждем C++20
Неосиляторы, сэр.
Там вообще вся и всех хуесосят, если ты не заметил.
Стало обидно за язык просто, я нюфаня, хочу разобраться что же лучше.
>Никакого прогресса и жалоб
Оставлю тут свой отзыв. Как его до мода донести не знаю.
1. Убрать из шапки упоминание про [code] т.к. к крестам это не имеет отношения и им тут не пользуются.
2. Заменить все сокращённые ссылки на не сокращёный. Это для удобства. Они всё равно не показываются.
3. У меня не отображаются полоски между колонками в таблице. Наверно нужно как-то переписать чтобы везде работало.
4. Полоски между разделами в шапке при дэфолтном оформлении плохо видно. Заметнее их надо сделать. Или сразу цвет указать чёрный такой чтобы на всех стилях и на архиваче заметны были.
5. В старых тредах на архиваче проебались картинки. Тот кто эти треды заливает уже завёл свой фликер аккаунт для хранения картинок?
Почти нет, но в легаси коде и коде слоупоков возрастом 30+ оно встречается.
Что это вообще? В какой книге поясняют за всё нововведения 11ого стандарта?
Мне ответили, что не знать это стыдно и на работу меня не возьмут.
Прийдя домой, я посмотрел, что же это такое. В тот момент, когда я увидел, что это обычное уменьшение связанности, я понял: Java - говно, а джава-бляди - сраные макаки, которым нужно объяснять, что такое уменьшение связанности, вводя специальный паттерн.
Меня на гитхабе нет, не знаю хтмл и последний пункт не к шапке относится.
Просто ты соснул и не знаешь азбучный термин, и вместо того, чтобы признать, что соснул, обвиняешь других.
> Короче, 17 стандарт как-то НЕ ОЧЕ.
>Из добавленных фич:
он уже выпущен чтоле, ёба? Нет? Вот и иди нахуй со своим тыканьем пальцем в небо.
>всякое говно из буста по типу optional, any и пр.
Это говно в std::experimental уже 2 года.
>Ни concepts, ни modules, ни networking, ни Transactional Memory, ни networking не ожидается.
Я конеш понимаю что тебя волнует нетворкинг, но если асио не добавят - мир станет только лучше.
Ты, кстати, пропруфаешь мб? если правду написал, то го в дж тред посаны))
Бля, да это же даже не паттерн, это, сука, основной принцип ООП, блядь, - АБСТРАГИРОВАНИЕ. Именно поэтому в GoF об уменьшении связанности написали один абзац в первой главе. Это и так подразумевается, когда ты пишешь ООП-код. А Dependency Injection - изобретение java-макаки, чтобы донести простую истину до других java-макак, которые не читают классические труды по проектированию.
Это ж новости с последней конференции. Concepts, TM, modules отложили до лучших времен(нужно набрать больше user experience)
Если вычесть эти фичи, остается то, что я написал.
>Однажды ты спросишь меня,что что я люблю больше:low coupling или dependency injection,я отвечу-low coupling,ты уйдешь так и не узнав что dependency injection это low coupling
https://en.wikipedia.org/wiki/C++17
Нет, не так. Не C++11, но всё же мажорное обновление по сравнению с 14.
С другой стороны и хорошо - в другие языки больше народу потянется, конкуренция всегда полезна надеюсь что ди с растом начнут быстрее разрастаться и из коммитета выкинут нахуй старых пердунов.
facepalm.jpg
не используй его. Зачем он тебе нужен?
while (STIME != __out);
> SIMD vector
А как там с векторами хотели сделать? Просто SSE или gpu можно будет подгружать, если таки сделают?
Скрин забыл.
Во-первых, это говорит о том, что C++ более популярен, чем другие языки.
Во-вторых, тебе то что с этого?
>Во-первых, это говорит о том, что C++ более популярен, чем другие языки.
Нихуй. У нас просто разговоры активнее.
Это называется "качество сообщества". Если в других языках средний разработчик - мартышка, для которой на SO миллионы ответов на одни и те же вопросы, то С++-господа знают цену общению и вместе ведут дискуссии о наиболее важных и животрепещущих проблемах.
Я до сих пор помню спор про дэбигеры. https://arhivach.org/thread/109335/#542719 Пол треды стенами текста обменивались.
>2016, эпоха асинхронности, реактивности и т.п.
>Почему у меня sleep жрет около 30% от общего ресурса CPU?
Ага, в августе-сентябре почему-то был самый пик обсуждений. Сейчас тред уже не торт, наверное темы кончились годные.
>Это называется "качество сообщества". Если в других языках средний разработчик - божественный господин, у которого не возникает проблем на каждом шагу с его основным инструментом, то жопа C++-даунов горит 24/7, отчего они выливают свою боль и тупые вопросы в интернет нескончаемым потоком.
Не благодари
Я писал игру где шарик по экрану летает с нарастающей скоростью и надо меняя направление его полёта не дать ему врезаться в стены. Делал смену кадров с помощью sleep. А как правильно надо было?
Не, крестовый тред достаточно интересный, я сам не крестоблядь, но тут порой интересные дискусии ведутся, люблю почитать. А вот тот же лисотред это какой-то пиздец, скатили в емаксосрач и утонули.
C одной стороны какая-то макака, которая строчит по 1к строк в день, использует реверс-дебаг(вангую бинарник 15КБ), и отправляет джунов фиксить баги(которые обычно требуют понимания предметной области на таком уровне, что надо идти к product owner'у), а еще у которого дебагер никогда не падает и стек не портится.
А с другой стороны вроде серьезный дядя, который не может объяснить, что дебагеры еще как крэшатся, стек еще как ломается, а охуительные истории про включение reverse-debugging на серьезных проектах такие охуеительные.
Вероятно что-то в этом роде http://www.boost.org/doc/libs/1_60_0/doc/html/boost_asio/tutorial/tuttimer2.html
>>692575
Открыл картинку, увидел типичную боль крестомартых про утечки, неопределённое поведение, конпеляцию, магическим образом ломающуюся релизную версию. Что и требовалось доказать.
>boost
>игру где шарик по экрану летает с нарастающей скоростью и надо меняя направление его полёта не дать ему врезаться в стены
>Если упало, ты просто двумя кликами отматываешь состояние программы назад до ближайшей точки, в которой изменялись проблемные данные
Надо бы в шапку запилить сборник охуительных цитат
В прошлом треде ещё вредные советы были.
Действительно, в то время как в нормальных языках зависимости подключаются одной строчкой в конфиге, в крестах обязательно порвать себе очко конпеляцией гигабайтов крестодрисни, а потом вымазать в ней все файлы инклудами. Эта особенность си/с++, наверное, даже хуже, чем все сегфолты и утечки вместе взятые.
Тем не менее крестоблядки уверяли меня, что boost это дохуя стандарт, а то кастрированное поделие без буста это и не с++ вовсе.
>А с другой стороны уставший от жизни алтфак, который хуесосит все новые технологии, чтобы их не изучать.
Пофиксил тебя.
мимооппонент
А что ты вообще подразумеваешь под "sleep жрет около 30% от общего ресурса CPU"?
Даже networking не будет?
Они дали мне пищу для размышлений, несомненно. Наверное даже я спустя полгода стал менее радикально смотреть на это все. Но это таки не отменяет того, что игнорирование имеющихся технологий из-за их несовершенства - в чистом виде неосиляторство. Ты как дровосек, который нашел у барахлящей бензопилы кучу недостатков и пошел рубить лес топором.
Тот алтфак в общем-то прав, я так и не понял, почему он не сказал то, что я. В особенности на linux, gdb просто пиздец какая баженная хрень. Именно поэтому проще использовать печать. И это не говоря о том, что дебагер не всегда применим в принципе. Например, когда под отладкой не повторяется баг.
проще использовать печать
@
в ньюфаг тред приходит ньюфаг у кооторого программа http://ideone.com/3Tarc4 с закоменченой 14 строкой работает неправильно, а с раскоменченой - правильно inb4: вот что printf животворящий делает
На плюсах подобное тоже происходит, просто лень пример высирать когда есть готовый.
Всегда так делаю. Дизассемблер охуенен.
Мне надо именно понимание C++ прокачать, а не реверса. Хотя я, пожалуй, просто рандомную книгу из шапки возьму.
Объектная модель + модель памяти + оптимизации + чистый ассемблер
Там подробно разобрано, во что транслируются различные специфические для C++ конструкции. Попробуй, базарю, еще захочешь.
>gets(isbn);
>while (isbn[pos]) {
>pos++;
Давай ещё более нереальный пример придумай. Если специально себе грабли подкладывать - обязательно наступишь.
>#include <stdio.h>
Уёбывай в C-нить.
Не сошелся, конечно. Просто если надо дебажить под *nix, то и спорить не о чем, я и сам полностью согласен насчет ущербности тамошних отладчиков.
>Bjarne Stroustrup created the C++ language in 1979, and it still scores high in language popularity indexes today as it expands into mobile development.
Как у крестов сегодня в мобилке? Как там решается проблема непереносимости кода? Какие варианты сейчас есть вкатится на плюсахobjective-c мимо в mobile development?
Алсо, Бьёрне много говорит о нитинге. Если это будет действительно так же хорошо говорит, то можно набегать на удавов, гошников, чтобы похуисосить. Анон как бы ты прикрутил нитинг в кресты?
Почему?
> Точно работает на Android и iOS
Ну вот, допустим, я хочу заняться какой-нибудь разработкой игр на с++ или с.
Что мне для этого потребуется?
Можешь посмотреть на openttd. Использует sdl для запуска на Android.
Как же вы заебали: либо игры, либо машинное обучение. Ебани отладчик под *nix. Мы с анонами тебе спеку накидаем.
Android NDK гугли. Вроде даже был гайд на хабре. Ну и официальные доки нормальные у него. Алсо, замечательно интегрируется со студией, отладка на устройстве, нативный эмулятор на десятке, все дела.
Ну уж и никак. Ядро должно уметь писать дамп. Даже на твоей картинке виден стек, например. А потом пялишься в код до посинения и ишешь, что там могло пойти не так.
Вместо этого ты прокачаешь понимание компилятора С++. Это, впрочем, тоже полезно.
Любой нормальный компилятор умеет генерировать ассемблерные файлы, так что дизассемблер нинужен. Покопайся в параметрах командной строки.
В вижуал студии можно смотреть ассемблерный код в отладчике.
>>692787
Параллельные алгоритмы а ля параллелизация частых рутин в MKL. Intel запилил на базе OpenMP.
Пример
template<typename InIter, typename T, typename Reduce, typename Convert>
T transform_reduce(InIter first, InIter last, T init, Reduce red_op, Convert conv_op)
double result =
std::experimental::parallel::transform_reduce(
std::experimental::parallel::par,
std::begin(values),
std::end(values),
0.0,
std::plus<double>(),
[](Point r)
{
return r.x * r.y;
});
И как следствие добавляют функционал для работы в concurrency-среде.
cyka blyat, что ты там увидеть хочешь? Как name mangling выглядит? или обращение к vtable?
я не студент, просто на работе тасок нет вообще.
По крайней мере потому, что это другой стадарт и другое комьюнити.
Делай патчи для кодеблокса, там типично-громоздкий код, который пишут обычные погромисты в среднестатистической конторе.
Тащемта можно месяц в бамплимите сидеть и нихуя не будет. Четыре прошлых треда до сих пор живо. Просто что мимокрокодилы заходить не будут, и наверное скучно станет.
>if (left == right || left == std::prev(right,1) || left == std::next(right,1))
MinGV все ок, MVS вот это не принимает
>left == std::next(right,1))
Мамкинфотошопер
Ты бредишь, я тебе перезвоню.
#include __FILE__
Дурак, параллельные примитивы - это высокоуровневый подход правильных пацанов.
Ты пытаешься читать за границей массива. Без debug assert тебе это прощается, хотя формально это такая же ошибка.
Статья 2007 года, ты ещё из прошлого тысячелетия чтонить принеси. Многое поменялось.
Толстотроллинг о нечитаемых сообщениях в темплейтах уже всем наскучил.
>Толстотроллинг о нечитаемых сообщениях в темплейтах уже всем наскучил.
Вообще я не об этом принёс, см 12-ю страницу.
Ну да ладно.
А нечитаемые сообщения куда-то делись?
>см 12-ю страницу.
Проверил, собиралось 2 минуты и потребляло ок 30МБ. В статье сказано gig of RAM and a couple CPU hours.
>А нечитаемые сообщения куда-то делись?
Стали структурированы и намного легче читаемы.
Конечно, можно много минусов найти, но в последнее время язык оче стремительно развивается.
После выхода с++98 был пятнадцатилетний(!) застой, согласен.
Тут недавно говорили, что жава - убогий язык, и по сути кроме НуллПоентерИксепшена ничего не больше даёт.
Окей. Что бы ты сделал, чтобы решить проблему нечитаемости сообщений?
>Зачем нужны шаблоны
Например чтобы выбрать реализацию дерева или тип аллокатора для твоего мап-велосипеда.
Хочешь красно-чёрное - пожалуйста, хочешь АВЛ нет - проблем, хочешь выпендриться - захерачь Андерсона.
Для реализации каждого дерева нужно определить только базовые операции, а для выбора дерева в твоём недомапе - всего-навсего поменять или добавить один шаблонный параметр.
> Например чтобы выбрать реализацию дерева или тип аллокатора для твоего мап-велосипеда.
Это и без шаблонов можно.
И проще.
Бля, смотри, массив, в нем элементы это объекты определенного класса, у класса есть всякие переменные в public, вот это методы я имею ввиду, и надо сравнить эти объекты с помощью min_element, как подсказали в вопросов треде по признаку этих самых методов. У какого из объектов самый малый метод этот, заданный в классе.
Ну вот, гцц 4.8 - слишком отсталый, хотя версию сделали 3 года назад.
По поводу 12-страницы:
<1 секунды
error: template instantiation depth exceeds maximum of 900 (use -ftemplate-depth= to increase the maximum) instantiating 'Loop<T*> Loop<T>::operator->() [with T = int...
Любую метапрограмму можно ввести в рекурсию без условия выхода.
Высокий порог вкатывания гарантирует, что индусы не отберут у тебя красную икру.
>По поводу 12-страницы:
blyat. Я имел в виду "твою" 12-ю, где наследование структур. g++ компилит минуту, clang++ — мгновенно.
Ну а List<int> у меня тоже сразу обрывается с той же ошибкой.
Пишет
error C2440: инициализация: невозможно преобразовать "std::_Vector_iterator<std::_Vector_val<std::_Simple_types<realPer>>>" в "realPer"
realPer это класс этих объектов.
Да, работы мало, это следствие 15-и летнего застоя и того факта, что в стандартной либе до сих пор нет сети и фаеловой системы.
Тут один ананас говорил, что в плюсы добавят возможность работы с жаба кодом. Таким образом, пока жабобляди будут над нами смеяться, изза того что не в джаву добавят возможность вызова плюсокода, а наоборот - мы тихо и незаметно огрызём у них большой кусок рынка.
>ананас говорил
Пруф или не было! Подробрости, блять! И раазумеется всё это к 2079 в честь столетия крестов.
Они выучат кресты и в их вакансиях появиться ещё 1 пункт.
>ананас говорил
>Пруф
Если так хочешь могу тебе это прямо щас сказать. В плюсы добавят возможность работы с жаба кодом
Где именно? В функции ставлю ругается на то, что выражение должно иметь тип класса в { return i.f < j.f; }. Я не окончательно разобрался с этими ссылками.
bool minSc(realPer i, realPer j) { return i.sc < j.sc; };
realPer perMin = min_element(realPerM.begin(), realPerM.end(), minSc);
Пишет какую-то неебическую хуйню, связанную с ошибкой в algorithm. Первая строчка:
не найден оператор, принимающий левый операнд типа "realPer" (или приемлемое преобразование отсутствует)
Да то был дежурный вскукарек java-мрази. У нас тут еще с ABI не определились, а ты уже предлагаешь писать биндинги на java-код.
Да и нахуя? Чтобы оно так же тормозило?
А что будет если выставить фокус твоему виджету не перепахивая родителей?
И что это за хуйня фокус_чейн?
Да не, весь нет, у меня говно полное, месиво. В чем может быть проблема скажи и я погляжу.
Ясно. Тогда вопрос в тему, как правильно биндить вызовы других языков: python, lua, js, yoba$, etc? Был опыт прикручивания python -- вылез шаблонныйв смысле рутинный, однородный код. Интересует как архитектурный аспект, так и конкретная реализация.
realPer perMin замени на vector<realPer>::iterator perMin и проверь или компилируется.
Бля, ты делаешь из просто объекта, в который записывается другой аналогичный минимальный объект, вектор. Теперь я не могу вызывать из него методы далее, нет, не компилируется. Но красное подчеркивание под min_element исчезло, теперь ругается только где я пытался брать методы из perMin. Я кстати убрал * перед min_element, да.
Я закончил вуз и учил кресты. Теперь хочу весь день калывать на работе т.к. мне больше нечем заняться. Готов переехать в другой город если зарплаты будет хватать на съём квартиры. Но все зарплаты оказывается не больше 40к, а для тех те что больше кресты знать не обязательно, а только будет плюсом. А чтобы утроиться на хорошую работу мне надо 3 года опыта на схожей должности. И где этот опыт найти?
https://hh.ru/search/vacancy?order_by=salary_desc&only_with_salary=true&area=113&text=C++&schedule=fullDay&experience=noExperience&enable_snippets=true&clusters=true&employment=full
Стандартная цена адекватного нуба, который знает C++ - 300$
Поработай так 3-4 месяца и проси все 600-1000$
UPD
Я попробовал вызвать из получившегося вектора тот объект с помощью perMin[0], получил такую же ошибку как >>693035
>Бля, ты делаешь из просто объекта, в который записывается другой аналогичный минимальный объект, вектор.
min_element возвращает не минимальный элемент а итератор на минимальный поэтому его нужно разыменовывать звёздочкой. Сколько строк программа?
>>693059
>perMin[0]
Это у тебя объект. Не вектор. У тебя не определён оператор идексации. Ты не можешь квадратные скобки писать. Ты их можешь писать для realPerM
В позапозапрошлой конторе решил вкатится в шаблоны, голова кипела по-началу. Наваял немало всяких вещей, которые уменьшают код и ускоряют его написание.
Потом у нас поменялся владелец, который заранее выплатил бонус и дал проверочное задание на пару меяцев. В ходе напряжённой работы два чувака решили полностью удалить из репозитория шаблонный класс, который заменили сотней строк кода вместо одной переменной.
Возможно они отомстили мне за то, что часто троллил их насчёт жирного буста, который они так усердно дрочили.
Было ли у вас подобное?
>min_element возвращает не минимальный элемент а итератор на минимальный поэтому его нужно разыменовывать звёздочкой
>Это у тебя объект. Не вектор. У тебя не определён оператор идексации. Ты не можешь квадратные скобки писать. Ты их можешь писать для realPerM
Что значит разыменовывать? Как бы так сделать, чтоб он элемент возвращал, а не итератор? Или по итератору записывал в этот объект все методы, класс же общий, хуй знает. Мне просто надо, чтобы этот элемент записывался в другой объект этого же класса, откуда я мог его использовать, и всё.
>Сколько строк программа?
Около 1000 всего, но почти ничто не имеет отношения к этому min_element, это всё в функции происходит, которая нигде не использована, эта дичь даже не компилится ведь.
>Что значит разыменовывать? Как бы так сделать, чтоб он элемент возвращал, а не итератор? Или по итератору записывал в этот объект все методы, класс же общий, хуй знает. Мне просто надо, чтобы этот элемент записывался в другой объект этого же класса, откуда я мог его использовать, и всё.
Звёздочку перед ним поставить. Превратишь в объект. Но это ты уже делал.
Кидай эту функцию и класс.
>Но это ты уже делал.
Почему это не работает?
>Кидай эту функцию и класс.
Да нет, там полный говнокод, братан.
>Почему это не работает?
Не знаю. Должно быть так.
bool minSc(realPer i, realPer j) { return i.sc < j.sc; };
Какого типа sc?
realPer perMin = *min_element(realPerM.begin(), realPerM.end(), minSc);
sc это double. Он считается с использованием переменных, которые мы даем этой функции, в которой всё это происходит.
бинарный "==": не найден оператор, принимающий левый операнд типа "realPer" (или приемлемое преобразование отсутствует)
Когда я щелкаю по этой ошибке он мне дает строчку из библиотеки algorythm. Вот еще что дает
c:\program files (x86)\windows kits\8.1\include\shared\guiddef.h(192): или "bool operator ==(const GUID &,const GUID &)" [найдено при поиске с зависимостью от аргументов]
1> при попытке сопоставить список аргументов "(realPer, const realPer)"
Понятней не стало.
В шейдерах же массовый параллелизм, вряд ли ты этого добьешься. Хотя с помощью OpenCL можно.
>И что это за хуйня фокус_чейн?
Порядок смены активных виджетов по табу
>А что будет если выставить фокус твоему виджету не перепахивая родителей?
В том то и дело, что ничего. Никакого эффекта. Нужно учитывать вложенность виджетов, насколько я понял. Т.е. если у тебя есть что-то типа
frame
|-box1
..|-input1
..|-box2
....|-input2
....|-input3
То ты не можешь для frame назначить порядок input1-input2-input3, а только box1-input1-box2-input2-input3
По крайней мере у меня проще не получалось, на стековерфлове то же говорят. А в целом в инете инфы мало, так что хуй поймёшь.
Если правильно понимаю, то это поведение не специфирется. Но есть костыль: прогоняешь свою текстуру, через фрагментный шейдер с параметром, который кодирует колонку, итерируешься по параметру, каждый раз вызывая шейдер, лал.
>Требования:
>Понимания принципов объектно-ориентированного программирования, знание одного или нескольких языков высокого уровня (C++, java, pascal).
http://ideone.com/NAOIOn
1. Как работают циклы for в основной функции? Что они делают, почему именно двоеточие и зачем auto v?
2. В функции vecvec assign() мы возвращаем функцию как я понял и в ней:
Передаем вектор размера N+1,0 если я правильно понял?
И непонятно вот это: vecvec(1,vec(N+1, 0))
Ну и еще один вопрос:
Что нужно учить, чтобы писать такие охуенные коды? Я пока умею только говнокодить, книги начал читать, шилтд там, страуструп пока тяжело
То есть нужно по табу переключаться между input1, input2, input3, так?
Не помню как это делается в тех же wxWidgets или Qt, но в крайнем случае придётся написать небольшой класс, которому даётся список виджетов и методы next(), prev(), current(). Может быть в gtk уже есть такой класс хелпер.
Ты какого Стауструпа читаешь? Посмотри прошлый тред там ссылка была на книгу для новичков.
видимо не того, спасибо, гляну обязательно, пока шилтда читаю, там все хорошо и доступно написано
>Может быть в gtk уже есть такой класс хелпер.
Нету в gtk классов. Это си-онли поделие (не считая их мёртворождённого язычка).
Тем что абсолютно нечитабельная портянка
https://ideone.com/XsEekf
Обычно хватает знания самых популярных либ: smart pointers, ptr-containers, foreach, noncopiable, filesystem. Хотя меня как-то спрашивали про geometry и GIL.
1. Это http://en.cppreference.com/w/cpp/language/range-for можно заменить на обычные for
2. Возвращается результат функии, в которую предается в том числе три заполненых нулями вектора размера N+1 и один вектор векторов (vecvec(1,vec(N+1, 0))) который будет использоваться для хранения результата, а в данный момент там один заполненый нулями вектор размера N+1. Это все конструкторы векторов.
Я темплейт функия, я хочу, чтобы она могла принимать итераторы на разные контейнеры STL
пиздец, я написал, пойду просплюсь
Nsight буду юзать.
> какой там статус у униформ вызовов функций?
Небудет, скорее всего.
> Станет ли C++ с выходом 17-го стандарта ещё более трудночитаемым?
Да.
Если отечественные, то не советую. У нас даже в топовых вузах преподавание крестов оставляет желать лучшего, преподы до сих пор живут в 90-х. Чего уж говорить о параше на продажу.
>преподы до сих пор живут в 90-х
Это как раз в отсосных топовых рашковузиков такое положение дел, а в моем миллионнике C++11 и 14 проходили, если говорить только про актуальность стандартов.
Глянуть стоит, раз скачал. Но если ты про книгам не можешь, то как-то стоит усомниться в выборе занятия. Если обычные книги из шапки не вставляют, гугли дополнительно примеры, или найди какую-нибудь статью вроде "пишем свой первый рогалик на C++".
CodeLite
>проходили
В этом вся суть. Везде проходили, но нигде не изучили. Вот какой проект на крестах вы писали в вашем миллионнике? Не отвечай, я знаю, что это была лаба2.
Насколько я понял, там обычные курсы в аудитории, которые они дополнительное еще через Интернет другим ученикам транслируют. Ну а кто-то эти трансляции записывает и на торренты сливает.
По php смотрел как-то курсы от Специалиста. Дядечка там как бог поясняет.
>>693551
>Если обычные книги из шапки не вставляют
Не вставляет их с монитора читать, а бумажных вариантов у мну нет.
И вот как там угадаешь, где мина?
emacs+cmake
Соболезную, братюнь.
QtCreator, вроде можно сразу с компилятором поставить
Распечатай, я так себе "K&R Язык Си" печатал, ох где те времена
У меня лежит малинка, я решил под неё писать быдлокод на крестах. Накатил на неё эклипс и Bluez чтобы не просто быдлокод писать, а ещё светодиодом на БТ-свистке моргать. Хеллоуворлд компилируется, БТ-свисток моргает и даже находит соседние устройства.
Но эклипс на малинке это удовольствие для ценителей, поэтому захотелось мне писать быдлокод на десктопной убунте, а на малинке отлаживать удалённо. Обмазался паком компиляторов для малинового арма и RSE для эклипса. Простой хеллоуворлд компилится, запускается удалённо на малинке и прекрасно отлаживается через GDB. Но вот при попытке сделать что-то сложнее, а именно при попытке подключить блютусовские библиотеки, начинаются проблемы.
Гугл говорит, что нужно кросс-компилить Bluez под армы на десктопной убунте, но, блядь, как это сделать, я ума не приложу. Можно ли каким-то образом линковщику ссылаться на библиотеки, которые хранятся на удалённой машине?
Вот тут https://www.raspberrypi.org/forums/viewtopic.php?f=33&t=98777 паренёк был с идентичной проблемой, но он как-то без проблем скомпилировал Bluez на своей убунте.
Я сам не пробывал, но людям нравится и мне кажется оптимальней.
Короче, не долбиться с кросс-компиляцией, а пользоваться такой замечательной вещью, как proot в паре с qemu-user-arm.
proot.me что-то лежит последнее время, достань страницу из кэша и изучи, там немного.
Олсо, применение этого всего https://lionfacelemonface.wordpress.com/2015/04/18/raspberry-pi-build-environment-in-no-time-at-all/
Линковщику похуй, что линковать - можно просто скопировать arm-либы и правильно прописать пути через -L.
Если хочется совсем просто, то юзай qemu-arm. Но будет медленно, если кода много.
Хочу вкатиться в игрострой. Это лучший для этого язык?
>>693804
А чё, прикольно и даже хитро с целью сделать эстеншен методы как в дотшарпе. И главно теперь не надо переизобретать свой стринг, чтобы добавить в него стартс_уидт()
я всё правильно понел? и нет ли в этой фиче каких подводных камней?
А что с кодировками? Как кошерно принимать строки от пользователя и показывать ему, чтобы он видел все символы? (я пердоля, для меня не очень актуально, а вот у всяких спермоворов вечно геморрой с кириллицей в консоли)
Или корректная работа с кодировками нереальна в стандартном C++, надо тащить всякие сторонние либы?
use icu, perdolic
Это не тот математик-могувпрограммирование? Пишет говномочу как на фортране.
Julia as fast as C.
Понял то ты правильно но,
> нет ли в этой фиче каких подводных камней
обратная совместимость. Комитетские петухи не будут её ломать.
Вот, например, пишешь ты класс векторов или матриц.
Ну или её какой хуйни.
И вот ты с этой хернёй что-то хочешь делать: складывать, сравнивать, присваивать, умножать и тд.
Для этого тебе надо перегружать операторы соответствующие. Ну или для каждого такого действия можно написать функцию.
Оккк, перегрузка операторов это что-то вроде создания операторов под собственный класс. Почему, блядь, так нигде не написали? Почему везде такая вода?
https://goo.gl/e427Sy
Похоже на годноту, я прав?
Я хотел посмотреть но там требуется ещё какая-то регистрация поэтому мы с пикрелейтедом послали их нахуй.
Да, но не столько по разбору C++ в той области, сколько по разбору всех паттернов мп программинга в одном месте.
Сабж ограничен стандартной библиотекой C++, курсы всё же ценные.
Алсо, лучше бы они в текстовом формате опубликовали.
И при чём тут это? Ты всё равно будешь пилить свои велосипедные каналы, очереди и тд. если решишь использовать только стандартную библиотеку. А в той книжке ни слова кроме как о классах из stl.
>Хочу вкатиться в игрострой. Это лучший для этого язык?
0. Если ты собираешся пилиить игры в одно лицо, или микротимой индихуинди, то выбирать нужно движок.
1. Если ты хочешь идти в контору, то подавляющее число пилит под андроид и яблоко. Следовательно Andoid-SDK, Objectiv-C.
2. Если ты хочешь попасть в ААА контору, тот либо С# и Unity, либо C++ и, желательно, какой-то движок (благо уже все стоящие халявные).
3. Обрати внимание, что автор игры - продюсер, потом идет гейм дизайнер, который формализирует на бумагу все идеи продюсера, чтобы кодер (ТЫ) получил конкретное ТЗ для реализации. То есть ААА кодер в /gd/ это просто кодер.
Если бы ты дочитал до конца, то ты бы знал, что там всю вторую половину книги занимает рассказ о красивой реализации параллельных паттернов вроде пула потоков.
>мы, короли чуханов, не пишем ничего длиннее laba1 и laba2, поэтому нам stl норм и мы его используем
Есть кулстори, связанная с laba1 laba2, или просто внезапно начали использовать эти термины?
мимо-ньюфаг
Блядь, заебали вы. Завезут или нет – узнаем в следующем году, сейчас пиздеть что пальцем в небо тыкать.
*в июне.
Что это такое?
friend ostream& operator<<(ostream& out, const Vector2D& vec) // output
{
out << "(" << vec.x() << ", " << vec.y() << ")";
return out;
}
вот тебе жизненный пример
А, я все понял короч.
> В чем профит?
Тебе же простой пример нужен был. В него добавляешь дополнительные проверки, в зависимости от твоего класса, которые позволят иногда вернуть true. Можно, наверное, начать с if (this == &a) return true;
Пару раз делал обертки над стандартными контейнерами. Обычно довольно простые вещи с наивной и немасштабируемой реализацией, но это потому что у меня питомец проект (Pet project)
Кулстори в том, что stl, как и вообще механизм шаблонов в крестах, непригодны для действительно больших проектов, в гейдеве уже давно это поняли, так что дрочить на них могут только студенты, не писавшие ничего длиннее laba1 laba2 это мемчик такой кароч
"Pitfalls of Object Oriented Programming", Tony Albrecht.
>>694207
>>694219
http://voodoo-slide.blogspot.ru/2010/01/amplifying-c.html?m=1
Уже вбрасывал, в ответ были только маняотрицания и "сейчас лучше стало кокок C++11". На вопрос, что именно стало лучше относительно критикуемых автором аспектов языка, ответа, ожидаемо, не последовало.
Google, Страуструп и лямбда
>крутые штуки
>огрызок от type inference, недозамыкания, foreach
>2011
Почему кресты развиваются в таком темпе, будто это хоум-проджект одного человека?
Я еще тогда тебя обоссал. Его доводы настолько нелепы, что даже отвечать лень. Но ради того, чтобы обоссать тебя еще раз:
>Templates suck as they cause link-time spam and compile times to skyrocket. They severely bloat the size of the debug symbol file, which on large projects can easily reach several hundred megabytes of data. Abstractions built with templates perform differently depending on whether compiler optimizations are enabled or not (every tried debugging Boost code?). They’re essentially unusable on large code bases beyond container-of-T and simple functions.
Шаблоны плохие ути пути. Debug-сборка большая, ойпамагите. Аптимизации нипартируемые. Примеров, кстати, он не завез. А по делу: есть одна единственная проблема - охуительный вывод компилятора. Но является ли это критичным? Нет. К тому же, эта проблема полностью уйдет после релиза концептов.
>RTTI sucks because it doesn’t do what anyone wants, and you can’t even rely on it returning a type name formatted in a certain way.
Этой парашей и так никто не пользуется. Либо в класс вводится отдельное поле type_id, или используются cast'ы через visitor'ы.
>Classes suck because their guts have to be in headers for all to see.
Охуительные истории неосилятора. Товарищ с 10 годами опыта не знает про абстрактные интерфейсы, которые можно реализовать либо через наследование, либо через pimpl.
Потому что там сидят старпёры. Предложили корутины как часть языка – былиьпосланы нахуй. Предложили ещё разок присоснуть хуйца из буста – нихатят. Блядь, они вывод типов и вариадик тимплейты 10 лет пилили, о чём вообще говорить.
Потому и появляются постоянно новые языки вроде D и Rust.
>Роберт Лафоре - Объектно-ориентированное программирование в C++ (2004)
после 2 лет байтоёбства в K&R, за плечами поверхностное изучение 3 тома Кнута (ещё в универе), небольшой опыт писания на коленке на низком уровне (ASM), немного понимаю в модулях ядра, драйверах Linux и кросс-компиляции. Про графику не знаю вообще ничего, с трудом переделал шаблонную формочку в Qt для отслеживания своего заказа на почте. Не программист, инженер.
Цель - летом сменить работу и пойти джуниором на крестах, потому что интересно, перспективно и потому что заебало инженерить.
Собираюсь обмазаться Маерсом по STL и им же Effective C++, какие ещё советы? Нефть авансом, выручайте, анончики
Ты хоть раз читал пропозалы, лалка? По ним можно увидеть, что любую фичу ОЧЕНЬ тщательно обсуждают. Тебе до этих старперов еще учиться и учиться.
> Тебе до этих старперов еще учиться и учиться.
Да, чтобы уметь наворотить такое УГ как C++, нужно долго учиться.
Чем это УГ хуже УГ в других языках? Есть много неприятных проблем в C++, но не думай, что в комитете считают, что так и должно быть. У них не хватает времени сделать сразу и охуенно, потому что в отличии от других языков, здесь есть одна большущая проблема: обратная совместимость.
>Почему кресты развиваются в таком темпе, будто это хоум-проджект одного человека?
Ну типа интерпрайз, там помешаны на штабильности.
> обратная совместимость.
Это да. Нужно было сразу дропать совместимость с C на уровне исходных текстов. Не думаю, что в 1978 для кого-то было в новинку вызывать сишный код из более других языков.
>Нужно было сразу дропать совместимость с C на уровне исходных текстов. Не думаю, что в 1978 для кого-то было в новинку вызывать сишный код из более других языков.
Охуительные истории. Дохуя кода на C ты тоже предлагаешь выкидывать?
> Дохуя кода на C ты тоже предлагаешь выкидывать?
Ты жопой читаешь, что ли?
> Не думаю, что в 1978 для кого-то было в новинку вызывать сишный код из более других языков.
У тебя хоть эти десять лет опыта профессиональной разработки есть?
>Этой парашей и так никто не пользуется. Либо в класс вводится отдельное поле type_id, или используются cast'ы через visitor'ы.
Фича X говно плохо сделано тупо, приходится городить костыли. Но это не недостаток языка, нет!
>охуительный вывод компилятора. Но является ли это критичным? Нет.
мда ясно понятно
>>694287
Я что-то сомневаюсь, что если левый хуй с горы врроде меня, предложит новую нужную фичу, ее тут же кинутся добавлять в стандарт.
>корутины
нахуй нужно это говно, тот класс задач что они решаются, легко делается обычной комбинацией подпрограмм и флагов
а что произойдет когда мы в язык введем еще одну конструкцию? правильно, заставим обезьян (обычных пользователей языка) напрягатся и охуевать
Тащемта любой класс задач решается в машкоде.
Эта боль обезьяны. За корутинами будущее, тому що асинхроннiсть.
Кому нужно? Это сообщество выбрало С++, а не С++ был навязан сообществу какой-то корпорацией. Таких умников с дропаньем всего и вся было дохуя, Вирт, например.
Вот и главная проблема – там сидят старпёры которые никуда не спешат. Вот что изменилось во всех фичах из C++11 и 14 за пошедшее десятилетие с 2003-го? А нихуя.
Люди, делающие замены C++ вроде делают что-то классное, а вроде да идите вы нахуй с вашими тараканами – у того же D вроде ахуенная рефакторнутая версия крестов, а у него десяток компиляторов, у каждого свои ошибки, костыли, версии рантайма и языка. Gc от которого хуй убежишь и прочее дерьмо вроде 2 стандартных библиотек.
Итого с одной стороны старики-пердолики, а с другой – велосипедисты переоценивающие свои возможности. Нахуй так жить.
>>694395
Это не мешает в каждом стандарте расширять язык, сохраняя костыли 20ти летней давности. Просто пройдёт ещё 3-6 лет, и может кто-то созреет, что концепция уже давно продумана.
Тем более, люди пишушие конкурентную хуету сейчас страдают намного больше из-за отсутствия таких средств в языке (а потом C# и даже убогие go приматы поясняют за продуктивность, лал).
>У тебя хоть эти десять лет опыта профессиональной разработки есть?
Мы тут "сперва добейся" обсуждаем или конкретные проблемы?
>Фича X говно плохо сделано тупо, приходится городить костыли. Но это не недостаток языка, нет!
Знаешь почему этим никто не пользуется? Потому что когда нужно принимать решение в зависимости от типа, обычно можно использовать стандартные средства полиморфизма, а не typeid. По сути, единственная проблема RTTI -
это медленный dynamic_cast. Но когда тебе нужно сделать переход на другую ветвь иерархии, то скорее всего у тебя и так есть механизм visitor'ов и реализовать быстрый cast проще простого. Да, можно реализовать быстрый dynamic_cast. Но нахуя? Всем же похуй на это.
>мда ясно понятно
Никто не отрицает, что ошибки в шаблонах печатаются дерьмово. Но мешает ли это писать код? Не мешает. Ну ок, потратишь ты минут 10(в крайнем случае) на поиск проблемы, ну и все.
А типичная проблема с шаблонами, когда используешь библиотечный шаблон, вообще решается за 30 секунд. Так что повторюсь опять: хреновый вывод ошибок шаблонов не является критичным. Да и в конце концов, какое решение лучше? Тебе известны решения лучше, чем шаблоны в C++? Если послушать того неосилятора, то нужно переходить на макросы, что конечно же намного читаемо, да.
Или на динамический полиморфизм через void*. Ну это конечно куда безопаснее и быстрее, чем существующие инструменты.
>Я что-то сомневаюсь, что если левый хуй с горы врроде меня, предложит новую нужную фичу, ее тут же кинутся добавлять в стандарт.
Если ты сделаешь research фичи, опишешь все решаемые проблемы и проработаешь тему так, что никто не сможет придумать corner case, а так же предоставишь готовую реализацию, т.е. сделаешь все то, что делает комитет стандартизации, то твой пропосал в кратчайшие сроки попадет в стандарт, уверяю тебя. Но ты же ленивый хуй, поэтому - да, твой пропосал не пройдет дальше обсуждения в google groups.
>На вопрос, что именно стало лучше относительно критикуемых автором аспектов языка, ответа, ожидаемо, не последовало.
Ну ты школьник, у которого в голове один гейдев и своих мыслей нет, нахуя мне нужна полемика с копипастой этого неадекватного лиспоеба? У него там написан бред чуть менее, чем везде.
>Итого с одной стороны старики-пердолики, а с другой – велосипедисты переоценивающие свои возможности. Нахуй так жить.
А третьего не дано. Если бы фичи принимали в стандарт С++ с той же скоростью, что и в D, он бы просто превратился в D с хуевым обратно-совместимым синтаксисом. А разработать zero-overhead имплементации разных модных в этом сезоне фич не так просто.
>Тем более, люди пишушие конкурентную хуету сейчас страдают намного больше из-за отсутствия таких средств в языке (а потом C# и даже убогие go приматы поясняют за продуктивность, лал).
Так есть же уже и stackful и stackless коротюны в виде либ, что еще тебе нужно? Или ты думаешь в стандарте будет что-то охуенно отличающееся? Сахарком это покроют и все.
Я пробовал, вижуал студио не воспринимает меня всерьёз и просит точку с запятой перед {, которая должна быть началом тела функции.
Весь код покажи.
Сходи посмотри в документацию буста как по-франкинштейновски это реализовывается. Сходи к шарпистам и посмотри как у них всё аккуратно.
Ты бы ещё написал, мол, в бусте и пародия на лямбды была, и вообще bind там же был, нахуй в языке оно надо?
Есть задача, которая теоретически должна решаться очень просто стандартными средствами,и которая так и решается на линуксах, но с которой всё не так просто на винде. Задача - упаковать в финальный билд исполняемого файла файл ресурса так, чтобы его можно было считать из кода по указателю просто как область памяти. Условие - использовать при этом мелкософтовские компилятор и линкер(я бы не мучался, если бы это условие не было обязательным). Дополнительное условие - нет возможности использовать .NET
Я уже охуел гуглить и ненагугливать никаких вменяемых решений. Теоретически это должно решаться через систему ресурсов студии, но к ней отсутствует хоть сколько-нибудь вменяемая документация, и все официальные документы предлагают решение только через .NET, который я не могу использовать.
Возможно, я совсем тупой, и не вижу какого-то очевидного решения, в таком случае подскажете его, пожалуйста, очень прошу! Пока что самое простое из найденных решений - это использовать обёртку на ассемблере(через .incbin), но должен же быть менее жопопроходный способ?
Прошу не предлагать включать данные массивом данных в коде.
Прошу не предлагать gcc - я и так знаю, что эта задача решается одной строчкой с ld. Мне нужно решение для студии.
У меня есть код с бустовыми корутинами, никаких принципиальных проблем с ним нет.
>Прошу не предлагать включать данные массивом данных в коде.
Самый нормальный (кроссплатформенный) вариант - сделать pre-build rule, в котором твой ресурс сконвертится в .inc файл и добавится к существующему коду через #include "yoba.inc". А так гугли windows api resources.
Это не пройдет по критерию "Прошу не предлагать включать данные массивом данных в коде"
for (i = 0; i != n; i++)
i будет прибавлять 1 ПОСЛЕ каждого цикла или ПЕРЕД?
после каждой итерации
Если ты напишешь это в цикле - насрать, i++или ++i.
Разница будет когда ты напишешь yobafunc(i++);
Даже для int?
Вы все ебанутые, сука! Мерять что медленнее, i++ или ++i - охуеть просто!
Ну вообще он прав. Постинкремент МОЖЕТ быть медленнее. Если это итератор, то при постинкременте приходится создавать копию текущего состояния, чтобы её вернуть.
Какого блять объекта? Восьми сраных байт? Пиздец у вас байтоебство крышу сносит.
Нет.
Тебе уже блять сказали - когда ты сделаешь printf(i++) и printf(++i) - вот тут и будет разница.
Он решил поделиться знанием, что в случае с итераторами надо пользовать преинкремент.
Все чики твои.
>for (i = 0; i != n; i++)
Короче, for(INIT; COND; INCR) BODY устроен так
INIT
loop: if COND is false goto endloop
BODY
INCR
goto loop
endloop:
Ещё раз спасибо. Сделал. Работает. WinAPI, как всегда, написан через жопу. Ненависть!
>Как считает Страуструп, объединение разработки этих двух языков принесло бы большую пользу, но оно вряд ли возможно по политическим соображениям. Так что практическая совместимость между C и C++ постепенно будет утрачиваться.
Не, ну много где делают свои контейнеры, свои аллокаторы. В Qt, например, при наличии своих контейнеров, перешли к использованию стандартных алгоритмов. Не говоря о том, что стандартные контейнеры тоже рекомендуют использовать, где уместно.
С помощью const std::queue<Yoba>& getYobas() нужно получить ъочередь йоб в другом классе.
Так вот, auto yobki = getYobas() будет достаточно, или нужно auto& yobki = getYobas() ?
А что если не было бы "const"? Тогда в случае с "auto" вызывалось бы копирование?
Прочитать об умных указателях
Насколько я знаю, auto кладёт на reference и делает value. Так что, видимо, оно будет копировать.
Используй auto&
https://m.habrahabr.ru/company/ua-hosting/blog/279791/
Очень разочарован появлением этих двух статей. Сам хотел про что-то одно похожее написать. Обе идеи подсказали в этом треде. Подскажите ещё одну.
Книги из шапки для продвинутых, видео с cppcon'ов и прочих сборищ. В основном, вся актуальная инфа на английском
КОНПЕЛЯТОР САМ ОПТИМИЗИРУЕТ
>>694523
Я (мимокрокодил) стараюсь всегда использовать const и & вокруг объявлений auto, если они подразумеваются, чтобы читатель кода видел мои намерения. Норм же?
Я задал вполне конкретный вопрос.
Какими плагинами обмазаться, кроме автокомплита?
:q!
Ну, то есть first->prev = last, а last->next = first? Или это необязательно?
А хули познавать? Можно наследоваться, переопределять методы в наследнике и прятать требуху в приват.
Вот и все ООП.
Суть в том, что каноничное ООП не так уж часто и нужно.
На Qt пиши - точно познаешь, так как часто придется писать свои классы на основе всяких QAbstractYoba
Я, если честно, за этим решил познавать, ибо от вида кьюта становится страшно и малопонятно
А стд - это тогда чье пространство имен:
Балда, наоборот Qt это кресты для людей, а не для мазохистов.
Нормальная IDE, великолепная встроенная документация, и отличные плюшки на любые потребности и случаи жизни.
В которых будет код со старыми именами переменных - они одна из важных частей замены.
Нет такого.
Ptr-container из буста.
Spatial tree бустовый из geometry и велосипедный R*.
Хитрый вариант листа с Union для упаковки опциональных данных.
Куча кастомных итераторов.
Это вспомнил на вскидку
Но после чистого c++ на одном main.cpp от Qt мне страшно. Уже, конечно, читаю этого Шлее, но мне такого плана книженции никогда не нравились. Предпочитаю методом научного тыка все осязать
Еще auto&& в шаблонах и ночью к тебе придет Майерс и поцелует в писю.
Бля туплю. Сорян.
Ну статический анализатор, не ворнинг компилятора. Андроид студия, например, выделит подобное (в с++ коде, ndk) желтеньким. Больше IDE на текущем компе нет, так что проверить не могу.
Со стандартными контейнерами мне более удобно проходить по map'у.
У qt преимущества тоже вроде бы есть, но на мой практике мне показалось, что они заключаются лишь в наличие некоторых сахарных методов.
>>694662
QtCore слишком жирный, как по мне. Слишком высока связность у этого вашего Qt. Но если не байтоёбствовать, то норм, да.
>>694668
Добавь абстрактный класс в верхушку иерархии и используй агрегирование вместо наследования.
>>694825
Пиздец, как ты такое мог написать? Я не засну теперь нормально после такого. Эта функция должна быть раз в 10 короче. И впредь литералы ставь слева в блоках условия. Но это всё равно пиздец.
>QtCore слишком жирный, как по мне.
А какой смысл дрочить на жирность, с дискеты чтоле грузишься?
При деплое получается 20 мегабайт что ли, запамятовал уже. Не много, но и не мало. Отладочная сборка. Там, где это критично, лучше обойтись легковесными либами. Мне-то норм, но таки не дает покоя наличие тонны какой-то странной хуеты, которая мне никогда не понадобится.
Если пройтись по so'шке qtcore командой strings, ты сможешь найти там пророчества про тебя и твою мамашу.
Вдогонку, для Gui на плюсах Qt это лучшее из зол, наверное. Но использовать Qt, как либуы общего назначения - это уже более тонкий вопрос
Я вообще Qt как этакую стандартную библиотеку крестов воспринимаю.
Ну сириосли, без нее на крестах писать - что кактус жевать.
Некоторые буст жуют. Да и не для всех предметных областей Qt нужен. Есть еще сотни отдельных либ для логов, сериализации, фс, кодировок и интернационализации, потоков (привет c++11-богам) и многого другого из Qt.
Я вот на своем проекте использую Qt. И это значит, что если я захочу переписать сеть или потоки без Qt (да хотя бы ради интереса) то придётся переписывать половину всего кода. Не то чтобы я хочу свалить всю вину на Nokia/Digia за непродуманный дизайн своего поделия. Но мне кажется, что это пиздец сложно -- совмещать Qt сигналы/потоки с другими либами.
Так-то, работает -- не трогай. Но из-за этого проект в стагнации, потому что Qt не всемогущ, а лезть в код самого Qt мне сильно лень при наличии альтернативных либ.
В стандартной библиотеке нет столь высокой связности, потому-то (и из-за обратной совместили) она и развивается медленно -- старые пердуны разделяют мою паранойю.
>за непродуманный дизайн своего поделия
Наоборот, лучшего дизайна библиотеки чем в Qt - в жизни не видел. Часто, даже стоит только подумать "мне нужна такая то поебень" - и она там есть, стоит подумать про "нужен какой-то метод" - и сцуко, он там есть и называется именно так, как т ы ожидаешь.
Собсно, в Qt есть практически все, редко возникает необходимость "сочетать" его с другими библиотеками.
http://pastebin.com/3MEN9FkP
Спасибо! А насчёт практики?
Изучил https://habrahabr.ru/post/117996/, но вообще весьма смутное имею представление о том, как проходит собеседование на джуниора по с++.
Если предложат прямо на месте реализовать какой-нибудь алгоритм уровня 2-3 курса, то я попыхчу, но сделаю, но не больше.
Да и сейчас всем похуй, кому интересно разбираться в не пойми в чем?
Дизайн и наполнение - разные вещи.
Я ньюфаг, но может в условиях нужно писать if (i == 0) и т.д.?
Да. Но проще в самом дереве хранить сумму элементов, а для среднего сумму делить на длину отрезка.
Поставил визуал студию - не компилится, 458 ошибок говоряших о том, что отсутствуют какие то библиотеки.
Есть n натуральных чисел. Нужно разделить их на k отрезков числа идут подряд и пропускать числа нельзя но между отрезали могут быть числа не входящие не в один из отрезков минимальной длины m. Так чтобы минимальное средне арифметического отрезка было максимальным. У каждого отрезка есть средне арифметическое СА и нужно разделить последовательность на отрезки так чтобы минимальное из СА всех отрезков было максимальным. Надеюсь вв поняли. Ограничения n<=10000 k<=500 и m от 3 до n/k.
В шапку это надо. Оп сделай.
Что в вакансиях написано то и надо. stl, boost, qt
Котаны, помогите с решением задач, пожалуйста
1)Написать функцию, которая будет принимать в качестве аргумента одномерный массив целых чисел и возвращать разность между наибольшим и наименьшим значениями элементов.
2)Написать функцию инициализирующую двумерный массив целых пользовательскими значениями.
3) Написать функций my_strcpy(), my_strcat(), my_strlen(), my_strcmp() (две на выбор), которые будут работать аналогично библиотечным функциям strcpy(), strcat(), strlen(), strcmp().
4) Написать функцию, рекурсивно вычисляющую сумму ряда вида Σ 2x/x!, где х принимает дискретные значения от 0, до 20 с шагом 1.
На джуна нет конкретных требований, все очень сильно зависит от конторы. Нужно брать количеством, между собеседованиями подтягивая на чем засыпался. Но в общем как минимум нужно понимать stl (итераторы, функторы), знать ответы на традиционные подъебки (виртуальный деструктор), какую-то библиотеку виджетов (Qt например) в общих чертах - имеется ввиду MVC или подобные паттерны, событийное программирование и т.д. Ну и в базвордах ориентироваться, ООП и т.п.
Исходники не причем. В б кто то создал тред с просьбой помочь сделать лаболаторку на С, ну я решил проверить себя и написать на плюсах. На идеоне компилится.
Тезис первый: без знания предметной области ты можешь устроиться только макакой, вне зависимости от опыта/знания самих крестов.
Тезис второй: макаки на крестах получают очень мало, потому что все студенты изучают кресты на начальном уровне и создают высокую конкуренцию.
заплатил тебе за щеку, проверяй
>но между отрезали могут быть числа не входящие не в один из отрезков
Щас перечитал условие там не понятно написано.
>k*m<=n
>сумма всех T-iых должна быть равна n.
Как это решать?
This example requires Qt to be configured with -opengl desktop
Мне что теперь вручную Qt пересобирать что ли?
Вставь текст ошибки в гугл, мб тебе отдельно чото докачать надо или другую сборку. Мб для выбранного тобой тулчейна так собрали. // не у компа сейчас
Как я понял, в примере устаревший QtOpengl, а сейчас уже работают через QtGui и опнгл туда зашито с -opengl dynamics, поэтому эта херня его не видит. Могли бы и обновить пример.
Конкретно напиши, что ты понимаешь под предметной областью? Все, начиная от Архитектуры ЭВМ и заканчивая работой компилятора?
Нет, это как раз таки универсальные знания, которые неплохо иметь, но которые играют не такую важную роль. А предметная область это, возможно не связанная с языком и программированием вообще напрямую, инфа по тем проблемам, которые в конечном счете решает твой софт. Например, для гейдевелопера предметной областью будет игростроение, оно тянет за собой компграф, компграф тянет векторную геометрию, ну ты понел. Или, скажем, ты пилишь какой-нибудь финансовый софт, тогда ты должен знать статистику, вычислительные методы, ну и в экономике хотя бы терминологию понимать.
Вариант тупо нанять абстрактного кодера и транслировать ему задачи в общепонятных терминах тоже есть, но тогда все равно надо иметь прослойку - дополнительных консультантов по предметной области, чуваков, транслирующих задания в кодерский язык, и так далее. Получается дороже, поэтому обычно стараются нанимать тех, кто так или иначе в теме. Иногда дополнительно нанимают сотни макак-джунов для черновой работы, но там платят мало, задачи неинтересные, и ничему ты не научишься, а поэтому и не вырастешь в синьора. Как-то так.
Что делать, если мне нужно представить массив массивов массивов массивов ... массивов. То-есть, большое кол-во измерений.
Так же скажем, что он может менять размер динамически (то-есть, нельзя использовать одномерный массив, как в геймдеве делают, и обращаться к нему типа arr[i*width + j]).
1d массив: обычный указатель.
2d массив: указатель на указатели.
3d массив: указатель на указатели на указатели?
И так далее?
С такой штукой же работать вообще невозможно. Как обычно делают это?
Для таких как ты придумали zero-overhead std::array
2d массивы нужно делать единым куском.
struct Yoba {
int data;
int cols; int rows;
void get(int i, int j) { return data[irows + j];}
};
Если 3-е измерение небольшое, например цветная картинка RGB, лучше сделать массив не int'ов, а struct Vec3f { int r; int g; int b};
Если третье измерение большое, то можно уже делать указателями.
struct Yoba3d{ Yoba* yobas2d;};
И, наконец, если у тебя, допустим, пятимерный массив, нужно смотреть в сторону sparse структур данных.
struct Yoba5d {
vector<tuble<int, int, int, int, int>> data;
void set(int i, int j, int k, int l, int m, int value) {
data.push_back({i,j,k,l,m,value});
}
};
Почему? Потому что dense массив с ростом измерением очень быстро растет. Например, пятимерный массив со стороной "куба" 10 будет иметь размер 10^5, а со сторонй куба 100 - 100^5.
В реальности никто не закладывается на тензорные структуры - с такой срамотой непонятно как работать. Если что-то больше трёх измерений и с этим активно работают, то следует изучить внутреннюю структуру или как-нибудь аппроксимировать. Смотри cross-approximation, SVD, HOSVD, Tucker decomposition, (Quantized) Tensor Trains.
>>695840
Ну-ка давай поясни, чем это твоя схема лучше использования индексации вида i + j K + k K L + l K L M + ...
Тупой вариант: как ты описал, сишные массивы будешь звёздочки указателей считать.
Получше: boost::multiarray
Сложнота: массив с хитрой адресацией.
IT гигант
Хм, но разве знание предметной области - это не требование для синьоров? А для тех кто ниже, предметная область - желательно, но не обязательно?
Тогда зачем, по-твоему, нужны всяческие ШАДы, мэйлрушные курсы, студенческие стажировки и прочее? На них ведь не кодить учат, а как раз предметной области, при том, что никто тебя не возьмет синьором сразу после.
Понятно, пойду обратно на C#/Unity.
Я считаю полное количество элементов и использую хитрый индексатор с одномерным массивом.
Собираешь массив из маленьких элементарных с фиксированным размером, которые индексируются другим массивом. Для 3д, например, составляешь из кубических массивов со стороной, скажем 16 элементов. Тогда при увеличении размера достаточно перестроить только массив индексов.
Forward declaration еще
недопустимый неполный тип пишет
Чото прочитал и погрустнел. Обещали мажорный релиз - теперь собираются релизнуть 2,5 математические функции палезнасть и стандартизировать убогие директивы отключение варнингов, которые везде свои 9000 лет. Даже банальный constexpr if не завезут.
Аргументы в защиту старпёров пожалуйста, хочется уринировать чью нибудь мамку.
Пикрелейтед короче. Хотел, чтобы при нажатии кнопки StartButton асинхронно запускалась функция ololo. Но всё выполняется последовательно и форма подвисает на несколько секунд, пока выполняется ololo.
ЧЯДНТ?!
Ну бля, сам не люблю эту хуйню. Мне нужно по быстрому GUI прикрутить к научной работе, хотел в winforms состряпать на отъебись.
если бы скорость была не критична, на шарпе бы сделал
Поток создавай.
Это ужасно, сам был в этой ситуации, нужно было гуй пилить на шарпе, а критические по скорости куски кода пилить на сишке и пинвокать. А сейчас так вообще есть возможность на расте такие куски пилить, чем я и пользуюсь.
Начнем с того что создать объект класса внутри самого себя (в общем случае) нельзя в принципе. А содержать ссылки(указатели) как на самого себя (у каждого класса уже есть this) так и на другие инстансы своего класса он спокойно может - например связный список. Мне кажется анон именно его и пытается запилить.
Сделай йобу темплейтным классом. Только так.
>Когда нужно выделять память на стеке
Когда эта переменная используется только в текущей области видимости (от { до } функции всесте со всеми вложенностями).
В остальных случаях - куча.
>Qt
Пошел качать. Давно очень я в нем работал, забыл уже все. Помню только, что OpenGL к виджетам довольно легко подключался.
Перечитай ещё 10 раз тот пост. Если возвращаешь по ссылке - куча. Иначе будет копироваться полностью.
>Если возвращаешь по ссылке - куча.
Даже если он возвращает ссылку на структуру, выделенную на стеке, ногастрелятель?
Последний wx тоже ничего. Не надо макросами все хуярить и экзешники небольшие.
>И что. Выделил на стеке, вернул на стеке. Все без кучи.
1) Передать 4/8 битный адрес вместо целой структуры куда быстрее;
2) Прокатывает до тех пор, пока стек не закончился. А он заканчивается где-то в районе 4 мб.
>>696249
Ещё одно животное читать не умеет. Иди нахуй просто.
>Передать 4/8 битный адрес вместо целой структуры куда быстрее
Без разницы, на самом деле. И так и так обращение по адресу идет. Все результаты больше машинного слова возвращаются через указатель на стек в предыдущем фрейме.
Речь не об обращении. А о том, что если у тебя струкрура, например, величиной в мегабайт - весь этот мегабайт будет бессмысленно скопирован. Если компилятор не соптимизирует, на что бездумно полагаться лучше не стоит.
Хотя туплю, там выше про другое.
В общем случае, когда количество необходимой памяти не известно на момент компиляции.
Обидно из-за модулей и контрактов, но лучше никакие не впиливать, чем впилить неготовое и навсегда зашкварить стандарт, обратно-то не выпилишь. Все остальное вообще нинужно, либо сахарок, либо сверхизбыточнные фичи.
Что не готово-то? Модули?
Главный камень преткновения – экспортируемость йобана в рот текстовых макросов! Спасибо комитет, нас в 2016 они очень волнуют. Можнобыло просто послать нахуй эти макросы – стандартные инклюды-то никуда не денутся.
Про избыточность – ну разве что ufcs. Всё остальное нужно более чем, если ты конечно не наслаждаешься анальными костылями. И уж тем более это всё обкатано десятилетиями в других языках, не надо пиздеть про "кококо сыро". Они решили устроить песочницу – пусть весь мир подождёт, чо.
Итог – хули смысла от 3-х годовых стандартов, если новые фичи всё равно вводятся раз в 10 лет?
Одна из реализаций синглтона или какое-нибудь вссаное дерево, например.
Платиновый дискас. Пора бы уже запилить подшапку о новом стандарте в стиле <<что такое хорошо и что такое плохо>>.
Они не хотят сделать что-то по экспортируемости шаблонов сверх того, что есть. Нахуя модули, если по-прежнему придется делать гигантские шаблоны в один файл? Пущай допиливают.
Это копия, сохраненная 6 апреля 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.