Эх яблочко, да рядом с грядками. Не водись, анон, с крестоблядками. От крестов умы у них куцые - Норовят учинить революцию.
Эх, яблочко, ты мое спелое. Старый ОП говорит: "Шапку делаю, Не могу сейчас перекат создать" - Кто-то враз решил новым ОПом стать:
"Эх, яблочко, на подоконничке. Отдавай, ОП-хуй, мне исходнички. В шапке не нужон твой дурацкий стих, Перекатим без легитимности.
Эх, яблочко, да сбоку зелено. Треду на ОП-пик поставим Ленина, Шапку сократим раза в полтора - Для больших перемен подошла пора.
Эх, яблочко, да с горки котится. Стихоебская власть не воротится!" Но увы! Недолга власть народная. Эх, яблочко, да огородное.
TL;DR
Q: Я хочу тотчас вкатиться, а разбираться буду в процессе. Что я должен делать? Q: Не уверен, что хочу изучать C++. Как мне пощупать его без лишней ебли? A:
Читаешь эту книжку, смотришь упражнения из нее и суешь в онлайн-компилятор. Сообщения компилятора об ошибках копипастишь в гугл, ответы на возникающие у тебя вопросы ищешь в предыдущих тредах, спрашиваешь в этом треде, если не нашел. Если тебя послали на хуй или не ответили, то ты спросил платину, читай предыдущие треды внимательнее.
Памятка ньюфагу
Вопросы по синтаксису идут на хуй
Лабы идут на хуй
"Как мне сделать Х на чистых крестах без библиотек" идут на хуй
Все идут на хуй
Хейтер сосет члены на пару со своей мамашей
Небольшие фрагменты кода размещай в треде при помощи тега [code] и жабаскрипт-костыля. Для больших фрагментов используй внешниесервисы.
Q: Почему стоит использовать именно C++? A:
Ни один язык не идеален, но по совокупности киллер-фич C++ оставляет все остальные языки позади. Вот основные три:
Скорость
C++ действительно быстрый язык — вместе с C, его прародителем, они с большим отрывом уделывают по скорости все остальные языки высокого уровня. Код на C++, как правило, медленнее аналогичного кода на C приблизительно на 0-20% а в ряде случаев C++ оказывается даже быстрее, причем замедление появляется только при использовании высокоуровневых конструкций (в C++ ты никогда не платишь за то, чего не используешь). Таким образом, если тебе требуется высокопроизводительный код, C++ станет отличным выбором.
Мощь
C++, являясь одним из наиболее выразительных и мощных языков, позволяет использовать большинство существующих парадигм. Его философия построена на минимальном ограничении программиста в выборе методов и инструментов простреливания ноги решения задачи. Как следствие, используя C++, ты можешь не думать о том, как обойти искуственные ограничения языка, а беспрепятственно выбрать наиболее подходящие к ситуации средства.
Популярность
C++ по-настоящему популярен. На нем написаны десятки тысяч приложений и миллиарды строк кода, о нем написаны сотни книг, он до мельчайших подробностей документирован и стандартизован. Используя C++, ты никогда не останешься без работы или поддержки комьюнити.
Q: Но он же давно устарел! A:
Современный C++ весьма далек от языка, которым он был в 1998 году. В настоящее время кресты живее всех живых, их развитие движется семимильными шагами, а новые стандарты принимаются каждые три года, сохраняя при этом полную обратную совместимость с предыдущими. К сожалению, из-за обилия некачественной литературы по С++, в которой игнорируются новые средства языка, бытует мнение о его "несовременности".
Q: Сейчас все пишут на %languagename, а кресты сосут у него! A:
Нужно понимать, что используемый язык должен соответствовать поставленной задаче. Никому не придет в голову писать на C++ скрипты или веб-фронтенд хотя это вполневозможно, но лишь немногие языки могут соперничать с ним по разнообразию решаемых задач.
Q: Хуле тут так сложно? Я открыл учебник, там какой-то ад! A:
Попробуй учебники, изданные после 2011 года, в которых рассматриваются возможности новых стандартов (C++11 и C++14). Этифичи не только добавили выразительности, но и серьезно упростили жизнь разработчиков. Теперь программировать на C++ стало проще, чем когда-либо! Это не отменяет необходимости прочитать несколько серьезных книжек, чтобы написать на нем что-то годное. Тем не менее, да, C++ это по-настоящему сложный язык. Его никак не получится выучить за 21 день, ну вот совсем никак. Именно высокий порог вхождения повышает твою ценность как специалиста, не позволяя нанять вместо тебя индуса за еду. Более того, крайне нежелательно пытаться изучить его первым, если ты раньше вообще не программировал. С большой вероятностью это приведет к разочарованию и потере времени. Гораздо лучше будет начать с другого языка и базовых вещей алгоритмы, архитектура пека, операционные системы, а уже потом вернуться к крестам.
Литература
Q: Окей, я решил вкатиться. Какие же книги мне читать? A:
Специально для тебя аноны /pr собрали уникальную коллекцию отборной литературы по крестам. Только лучшие книги, последние издания, без хуев! Выбирай категорию и обмазывайся:
Для нюфань
Учебники для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется:
Кроме того, есть еще пара старых добрых учебников для ньюфагов. Часть информации в них устарела, но многие считают, что это компенсируется их большей, по сравнению с современными учебниками, понятностью:
Следует пролистать все перед переходом от лаб к написанию настоящего софта.
Последний пункт есть квинтэссенция ГИБКОСТИ, поэтому стоит прочитать его в любом случае, чтобы охуеть от того, как можно делать:
Автор(ы)
Название
Год
Ссылка
Ален Голуб
Веревка достаточной длины, чтобы выстрелить себе в ногу
Ахтунг!
Предыдущие два раздела дополняют, а не заменяют классические книги о лучших практиках разработки без привязки к конкретному языку (Макконнелл, Uncle Bob, GoF).
Справочники
Наиболее детальные описания языка. Удобно использовать как референс, читать от корки до корки не обязательно:
Q: Я готов начать погроммировать! Куда мне писать код? A:
На этапе написания хэллоуворлдов можно не ебаться с установкой софта, а использовать онлайн-компиляторы: раз, два, три, четыре. Для работы над более серьезными вещами удобнее всего установить какую-нибудь IDE. Ниже приведены несколько хороших вариантов:
Платформа
Название
Описание
Ссылка
Windows
Microsoft™ Visual Studio®
Общепризнанно самая продвинутая и удобная IDE, не имеющая равных по части автодополнения и возможностей отладчика. По ссылкам справа можно скачать бесплатную редакцию последнего выпуска (2015 Community Edition). Кроме того, существуют редакции с расширенными возможностями (Professional и Enterprise). Они стоят сотни денег, но если ты студент вуза, подписанного на Dreamspark Premium, то ты можешь получить их безвоздмездно (то есть даром). Многим новичкам интерфейс студии кажется чересчур сложным, так что обязательно прочти этот гайд, если у тебя возникают проблемы с компиляцией хэллоуворда
Простая, легковесная, кроссплатформенная, швабодная IDE. Менее навороченная, чем студия, но среди бесплатных вне конкуренции. Вероятно, это наилучший вариант для новичка с *nix. Под Windows же требует чуть больше ебли с установкой компилятора MinGW/LLVM
http://codelite.org/, "sudo aptitude install codelite codelite-plugins"
для установки под *nix
Все
CLion
IDE, призванная похоронить Visual Studio пока не особо получается. Она стоит денег, но можно украсть почти не протухшую версию на торрентах или получить бесплатную лицензию на год по скану студбилета, если ты студент. Удобные свистелки и перделки присутствуют. Тормоза и баги присутствуют. Кросплатформенность присутствует
Здесь ты можешь найти все остальные существующие IDE, если ни одна из вышеперечисленных тебе не приглянулась.
Разумеется, установка IDE вовсе не обязательна. Ты можешь использоватьтекстовыйредактор в связке с каким-нибудькомпилятором, выбросить мышку, отрастить бороду и примкнуть к Церкви Святого Столлмана. Но лучше тогда сразу отправляйся в тред сишников, если не хочешь быть обоссанным другими сектантами за использование б-гомерзкого C++.
Q: Не буду я все делать сам! Подавайте сюда софт, который все сделает за меня и подотрет мне жопу! A:
Без проблем:
Статический анализатор, который умеет находить в коде ошибки и неоптимальные места. Швабодный. Есть плагин для Visual Studio
Гугловский фреймворк для автоматизации тестирования
Также не стоит забывать о том, что правильные посоны экономят свое время и нервы, используя мегагодные git и cmake во всех проектах.
Q: Мне надоело писать велосипеды, какие у вас тут популярные либы? Q: Нужно зделать %монструозная_хуйня_нейм, но я обосрался от одной мысли о написании ее с нуля, что же делать? A:
Гляди сюда:
boost
Бесспорно, это самый популярный набор C++-библиотек. Не будет лукавством сказать, что C++ во многом обязан популярностью именно ему. Воистину всеобъемлющий, boost способен удовлетворить твои самые скотские фантазии. В нем есть практически все - от математических функций до сетевых компонент, от инструментов тестирования до динамических типов. Функции для работы с твоей мамашей там тоже есть. Разумеется, все это швабодное и работает на любых платформах. И да, boost является своеобразным инкубатором хороших библиотек, поэтому наиболее удачные из них с большой вероятностью можно будет увидеть после принятия очередного стандарта уже как часть стандартной библиотеки.
Недостатком boost можно считать его размер - более 300 мегабайт. Большинство компонент boost не являются независимыми, и попытка использовать один единственный контейнер обернется фактическим подключением 2/3 всего присутствующего в комплекте. Таким образом, если boost не будет использоваться на полную, лучше юзать другие, более специализированные библиотеки.
Существует швабодный кроссплатформенный фреймворк-надмножество C++ под названием Qt. Он содержит довольно большое количество компонент (для работы с сетью, базами данных, для юнит-тестирования и др.), но киллер-фичей и основным полем его применения являются возможности по разработке графических интерфейсов. Qt сам по себе, как расширение языка, предоставляет для этого более удобные средства, чем обычные библиотеки, а использование специализированных IDE наподобие Qt Creator позволяет в буквальном смысле собирать интерфейсы мышкой, а код писать только по существу.
Тем не менее, использование Qt нельзя однозначно назвать хорошей практикой. Во многом это уже не C++, а другой язык, со своими концепциями и паттернами. Qt-код требует дополнительного препроцессинга при помощи встроенных в Qt утилит (т.н. метаобъектная компиляция), поэтому не получится просто подключить Qt как обычную библиотеку и использовать свой любимый компилятор без дополнительного софта. Нельзя сказать, что это существенное препятствие, но есть мнение, что использование Qt нарушает дух C++, раздувает машинный код и порождает макак-любителей кодогенерации.
В настоящее время основные версии Qt - 4.8 и 5.х, полной обратной совместимости между ними нет как в пистоне, ага.
Несколько специализированных библиотек для часто встречающихся задач. Все — маленькие, быстрые и простые в освоении:
libcurl - сишная библиотека для работы с сетью (существует также curlpp - крестовая обертка для нее, но использовать ее не стоит, ибо разработка заброшена еще в 2009 году)
Q: Я прочитал все вышеперечисленное, теперь я гуру! Что дальше? A:
Дальше переходишь по ссылке, пробуешь отвечать на вопросы и понимаешь, что ты пока в самом начале пути. Кроличья нора крестов практически бездонна, поэтому продолжать постигать тонкости и детали можно очень и очень долго. В то же время, на этом этапе у тебя должно быть достаточно знаний, чтобы уверенно писать неплохой код. Поэтому читай исходники открытого софта и библиотек, отправляй пулл-реквесты в них, читай книжки по предметным областям и общим методикам разработки, а дальше уже сможешь запилить свой проект или вкатиться в существующий.
>>681348 (OP) > >Эх яблочко, да рядом с грядками. >Не водись, анон, с крестоблядками. >От крестов умы у них куцые - >Норовят учинить революцию. > >Эх, яблочко, ты мое спелое. >Старый ОП говорит: "Шапку делаю, >Не могу сейчас перекат создать" - >Кто-то враз решил новым ОПом стать: > >"Эх, яблочко, на подоконничке. >Отдавай, ОП-хуй, мне исходнички. >В шапке не нужон твой дурацкий стих, >Перекатим без легитимности. > >Эх, яблочко, да сбоку зелено. >Треду на ОП-пик поставим Ленина, >Шапку сократим раза в полтора - >Для больших перемен подошла пора. > >Эх, яблочко, да с горки котится. >Стихоебская власть не воротится!" >Но увы! Недолга власть народная. >Эх, яблочко, да огородное. Вкотился.
>>681428 Да, пока так. Купил книжку Г. Шилдта, читаю. Вообще всё началось с того, что купил набор Arduino, начал разбираться, чтобы с ребёнком играть. Втянулся, захотелось научиться погромировать и под пекарню. Сейчас понимаю, что не научился в институте только из-за того, что было отвратительное качество преподавания.
>>681427 В принципе неплохая легковесная среда разработки с поддержкой gcc, но блять, во-первых, она на делфи, что значит постоянные падения, а во-вторых там нет нормального отладчика. Ну то есть для хеллоуворлда пойдёт.
>>681430 Ну а что ты хотел, это всё-таки столпы, на которых ещё держится программирование под винду. И я не знаю, где у тебя там Qt весит меньше гига, если для труЪ кроссплатформенности нужно примерно те же 5 гигов.
Анончики, помогите! Вообщем пилю класс массива bool. Значения храню в int. Хочу сделать operator[] возвращающий не значение, а ссылку. Может подскажете как сделать? Вот код: http://ideone.com/KlJu2K
>>681348 (OP) >Небольшие фрагменты кода размещай в треде при помощи тега [code] и жабаскрипт-костыля. Им никто не пользуется. Алсо. Снова заблудился в шапке на этот раз из-за кнопок MOAR. Надо полоски те что на пике между разделами позаметнее сделать. И в таблице не отображаются колонки. Так надо? А так шапку ахуена. Круче всех что были раньше.
>>681680 Там красивый жирный и кнопочки только теперь это заметил. Кстати абу недавно такое годное оформление сделал и никому не сказал. Game называется. Попробуй ещё захочешь.
>>681685 >Это же от стиля борды зависит А подогнать под борду нельзя? Я хтмл не знаю, но наверно цвет там настроить можно. >На гитхабе есть границы и полоски. Покажи.
>>681683 Если кратко, то через ссылку сделать нельзя (это как раз одна из причин критики vector <bool>). Поскольку у тебя фактически отсутствует "настоящий bool", размером в байт, а есть только один бит, который невозможно адресовать, то и ссылка на него невозможна.
Для решения этой проблемы можно возвращать прокси, который будет предоставлять интерфейс bool, но при попытке изменения себя будет автоматически запаковывать новое значение в нужный бит int'а. Именно так сделано в STL, соответствующая сущность называется std::vector<bool>::reference. Но ты должен помнить, что это не полноценная ссылка, а "нечто, ведущее себя как ссылка", поэтому если у тебя, например, уже есть код с bool &, то придется его переписать для совместимости с этой хуйней.
>>681672 Относительно нормально наверное только через прокси объект можно сделать. Возвращать не ссылку на bool а ссылку на прокси (который должен каститься в bool). Также как в stl сделано.
>>681348 (OP) Расскажи, как такую шапку сделал. Я такой шапки и вообще настоящих кнопок и таблиц ни в одном треде не видел. В маркдауне вообще кнопок нет. Как сделал?
>>681735 Почитал, нашёл только упоминание какой-то MakabaCode. И с каких это пор моче разрешили править исходники портала и инжектить HTML + JS? Так один модер может всю доску трояном заразить. Вангую это новая фича макабы и работает во всех досках, просто не опубликовали ещё мануал по разметке.
>>681748 На каждой второй доске прикрепленный тред с такими же фичами, и внезапно это делает не святой дух, а модер вручную. И может заразить доску трояном, но нахуя, лол? Геморроя много довольно, поэтому не очень распространено для обычных тредов. Но у нас же самая лучшая доска, поэтому стоит попробовать с гитхабом, ящитаю.
>>681755 >И может заразить доску трояном, но нахуя, лол? А ведь не так давно кто-то взломал админку от бэ и слил пароль. Толпа олдфагов с мелкоборд целых 15 минут банила всех подряд. Это только представьте какой он профит проебал не заразив весь бэ троянами.
>>681348 (OP) >Небольшие фрагменты кода размещай в треде при помощи тега [code] и жабаскрипт-костыля. Может модер это алчан который снова свою парашу в шапку пихает?
Аноны, умею в основные конструкции, стл (шаблоны не умею), немного в ооп. Что делать дальше? Нубокнижки не доставляют. Откуда черпать информацию? Куда ее прикладывать?
>>681852 Я так никогда не делал Я привык получать задачи, ибо грешу олимпиадками Как это делать? Все, что я придумывал, было уже реализовано и в сотни раз лучше. Зачем мне энтропию вселенной увеличивать и приближать тепловую смерть?
Как в С++ сделать свой оператор? Я сделал структуру, например рациональную дробь, и хочу для неё определить "<" (меньше). Но чтобы не less(a, b) писать, а a<b Я точно знаю, что так можно.
>>681853 >>681861 >>681856 >>681853 >>681851 кажется кто-то хочет ПРОСТО повыёбываться, а не решить свою проблему под проблемой понимать собственное образование
>>681868 Ты вниманиемразь и это видно за километр. Иначе бы ты уже начал что-то пилить. Свой проект, сто первый клон игрового движка или учебную ОС. Плюс тонны open source говна не дадут заскучать юному падавану. Но ты ноешь здесь. Иди нахуй отседова, в общем.
>>681871 Ты не понимаешь. Я застрял где-то между последней главой книжки по синтаксису и действующим проектом. В ваших опенсурсах мне не разобраться, а первые крестики-нолики я запилил еще лет в 12 на делфи. Мне не понравилось
>>681891 > умею в основные конструкции, стл (шаблоны не умею), немного в ооп. Этих знаний недостаточно нигде, кроме веб-макакинга, и то там нужны знания фреймворков. А раз уж он пошел в С++, то пусть готовится учиться всю свою С++-карьеру. совсем-другой-анон-практически-ридонли
>>681891 >Наверняка нужны какие-то познания в архитектуре ЭВМ, операционных систем, всей хуйни. >>Что делать дальше? Нубокнижки не доставляют. Откуда черпать информацию? Куда ее прикладывать?
>>681904 Ну хуй знает. У всех есть какие-либо идеи. Я вот например как мудак сижу и пилю population dynamics симуляцию (распространение заразы). Пусть попробует SDL подключить и написать игрушку. Пусть попробует SFML подключить и написать модулятор голоса. Один ананас вообще васянил свою бд. Простор огромный, пиши что хочешь, быдлокодь как будто никто не видит. Попутно, на ошибках, будешь набивать экспу.
>>681909 У меня знания примерно как у задавшего изначально вопрос -- математика и олимпиадное программирование. Пиздец как долго пытался подключить все ваши SFML и SDL ёбаные, не прикручивается нихуя к Кодблоксу. Ну да ладно, С++ билдер есть. Но я ещё не разобрался, что там к чему. Вроде возможности широкие. Можно с графениумом и гуём приложения пилить. Достаточно, чтобы много всего интересного реализовать. Но что-то я в своё время на Паскале Абц хуярил ради развлечения. Типа хуяришь точки, и он полином по ним строит. Ещё чуть-чуть в устройстве компьютера разбираюсь, книжки для совсем нубов читал. И на ассемблере программировал, но совсем немножко (самое крутое шо написал -- разложение числа на простые множители).
>>681918 > математика machine learning, моделирование, разработка движков, систем компьютерной алгебры. > олимпиадное программирование Нинужна. Вообще тебе плюсы не нужны пока. Попробуй на %язык_нейм% покодить прикладные задачки, просто ради результата. Глядишь, освоишься в предметной области, а дальше видно будет тебе самому. Просто идея "C++ ради С++" оче хуевая и антипродуктивная.
>>681946 >machine learning, моделирование, разработка движков, систем компьютерной алгебры. Очевидно, там нужно нечто намного большее, чем знания продвинутого 11-классника. >Нинужна Правда? А то мне говорили, что в университете по нему ещё больше дрочатся, и что если ты победитель acm icpc какого-нибудь -- тебя куда хошь возьмут работать. А я надеялся с поступлением забыть об этом говне. >Попробуй на %язык_нейм% покодить прикладные задачки, просто ради результата. Это какие? Знаю только что на ПХП просто для интернетика что-то писать.
>>681982 Да какие вопросы могут быть, только вот хотел поныть, что набрал чуть больше 600 баллов, но проходной больше. А всё потому что я не интересовался программированием до 11 класса, в прошлом году и на регион не прошёл.
>>681987 Грустно. Уже 2016 год на дворе, а все препроцессором копипастим. Поигрался с растом. Как же они охуенно там сделали: в файле указываешь зависимости, и при билде они скачиваются и компилируются. Просто модульный оргазм.
>>681995 Вечер в хату, крестопетухи. Короче, такая маза - как, в натуре, вывести содержимое контейнера в std::cout епта, да с чтоб с разделителем? >std::copy(lave.begin(), lave.end(), std::ostream_iterator<uint>(std::cout, ", ")); Эта ментовская хуита еще и в конец это ебошит, не по понятиям это.
Компилирую в линуксе свой проект с Qt. Выполняется команда g++ ... libQt5Core.so.5.5.0, но внезапно выхлоп ldd <мой бинарник> показывает среди прочего LibQt5Core.so.5. Это симлинк на LibQt5Core.so.5.5.1 Почему так? Мне нужно в итоге деплоить либу вместе с бинарником, но бинарник ждет с какого-то хуя симлинк. Пиздец какой-то. Как побороть? Хочу чтобы линковалось к самому файлу, а не через симлинк. Переворошил маны ld и gcc и ничего не нашел. Одна лишь на анона надежда осталась. Ибо иначе придется городить огромнейший костыль...
>>682107 >Почему так? Хуй знает, может для совместимости обратной, когда меняется минорная версия - симлинк просто на другую либу указывать будет, а все остальное не изменится.
>>682149 >Можешь потом в другой вектор записать и удалить. Это будет лишнее копирование и лишний вектор >А вообще >Лабы идут на хуй А при чем тут лабы?
>>682150 >Это будет лишнее копирование и лишний вектор Ну сделай свою реализацию и выводи сразу в консоль. Либо дописывай в конец массива, а потом удаляй начало.
>>682156 >Ну сделай свою реализацию Я уже давно сделал свою реализацию - через erase. Вопрос был в том, может существовал какой-то нативный способ сделать это в одну операцию. Хуй знает, чего есть в этом <algorythm>.
Странно вообще, что для множеств вообще операторы не определены, и приходится пердолится с std::set_huinyaname.
>>681348 (OP) >Читать по необходимости: >Николаи Джоссатис C++. Стандартная библиотека Вот после таких советов и появляются пишущие на C++ как на фортране. Джосаттис же опционален, нахуй я буду его читать? Я лучше напишу for-цикл (а вы догадывайтесь, нахуй он нужен) вместо использования std::for_each, std::find_if или ещё чего, подходящего по СМЫСЛУ.
>>682171 Ты что-то имеешь против фортрана, сука???
А по делу - ну дак ясен пень, что написать for проще чем эту ебань for_each - кому охота раздувать короткий и простой код на ебань с шаблончиками и итераторами на полэкрана?
>>682174 > ясен пень, что написать for проще чем эту ебань for_each - кому охота раздувать короткий и простой код на ебань с шаблончиками и итераторами на полэкрана? Нормальным людям — охота. См. пикрелейтед.
Даунам, у которых "C++ — это как C, только вместо malloc() надо писать new" — им, конечно, неохота. Думать некогда — надо лабать говнокод.
>>682186 >надо лабать говнокод. В большинстве случаев говнокодом будут все эти for_each и прочая ебань.
Вся эта хуйня должна упрощать код, а не усложнять. Мало кому охота ломать глаза об std::pizda<hui<anus< zalupa>>::const_iterator.begin>() и прочее говно.
>>682051 >std::copy(lave.begin(), lave.end(), std::ostream_iterator<uint>(std::cout, ", ")); Кроме написания input_iterator на so предложили ещё вот так std::copy(ints.begin(), ints.end()-1, std::ostream_iterator<int>(std::cout, ",")); std::copy(ints.end()-1, ints.end(), std::ostream_iterator<int>(std::cout)); http://stackoverflow.com/a/17358207
>>682190 >Мало кому охота ломать глаза об std::pizda<hui<anus< zalupa>>::const_iterator.begin>() и прочее говно. Болезный, где ты на пикрелейтед увидел хоть один шаблон?
>>682196 > Ты рекламщик сука чтоле, выпятить один случай, и умолчать про 90% говна? 100% вызовов std::copy, std::for_each и проч. не требуют ни одного шаблона. Максимум — если один из параметров какой-нибудь ostream_iterator, то ему нужно указать тип, да.
>>682215 Об том и речь. Ибо стандартной библиотекой крестов можно пытать врагов народа. Более неудобного блевотного и многословного говна надо еще поискать.
Хотя, далеко ходить в принципе не надо - есть еще говно поароматнее, бустом зовется.
>>682304 Нихрена не понял, что ты хотел сказать. Я имел в виду, что должно было быть написано > Для меня, "новые кресты" мало чем от старых отличаются.
>>682295 По стандарту никаким, платформа имеет право, например, просто игнорировать неопределенное поведение. Фактически если ты сделаешь что-то типа [code lang="cpp"]char p = nullptr; while (true) p++ = 42;[/code] , то покрашится практически на любой платформе, кроме, возможно, встроенных.
>>682305 >Нихрена не понял, что ты хотел сказать. Перевожу еще раз - все отличия новых крестов от старых можно прочитать на https://ru.wikipedia.org/wiki/C++11. Одна веб-страничка небольшая.
Все остальное - хуйня уровня "в stl добавили каких-то новых методов и какие то задепрекатили"
Коданы, начал делать небольшой проектик, но у меня получились монолит и божественный объекттоварищ подсказал, сам то я таких слов отродясь не слышал. Что почитать про эти ошибки, чтобы больше их не повторять?
>>682311 >небольшой проектик >божественный объект >монолит Все правильно, так и должно быть. Нехуй дрочерством и оверинжинерингом для маленьких проектиков маяться.
>>682311 Проектик разрабатывается командой, или ты один и для себя? Если второе - забей нахуй на эти паттерны, они для того нужны, чтобы придать стаду мартышек квадратно-гнездовой способ мышления.
>>682308 Ты можешь прочитать про то, что они есть, но не научиться в них. Те же универсальные ссылки требуют знания довольно большого количества деталей при работе. Про превращение правила трех в правило пяти асимметричным образом тоже ничего в твоей статье не сказано, ну ты понел.
>>682309 При чем тут хейтерство, дятел ты толстоклювый? Когда большинство крестоблядков начинало учить кресты - альтернатив не было, кресты были "языком по дефолту". Ну а хуле, паскаль из альтернатив?
А сейчас дохуя других языков, стали ли бы те, кто полез в кресты много-много лет назад, юзать их сейчас для ЛЮБОЙ задачи?
Если у новичка стоит задача не именно "погромировать на с++", а просто "погромировать" - то кресты ему нахуй не нужны, с той нишей, где стоит применить именно их и ничто иное - он не столкнется.
>>682322 Статья про то, что нас ебли в жопу, и вас тоже надо ебать без знания низкоуровневых/теоретических деталей получится не программист, а слесарь, который не будет уметь справиться с протекающими абстракциями.
>>682324 >получится не программист, а слесарь Но большинству этого и нахуй не надо, рили. Погромистов овердохуя, а вакансий, где действительно нужно копаться в байтоебском говне, по сравнению с общим числом - ничтожное количество.
И те, кому это нужно || интересно - сами в этом и разберуться.
>>682326 Ну вспомни себя школьником, лол. Сосницкий обычно просто интересуется пекарнями и хочет поступить в какой-то-рилейтед вуз, но весьма смутно представляет, чего он хочет от жизни, какие есть области знаний, чем программирование отличается от CS и вот это все. Если в этот момент ему не дать пинка в нужном направлении, то он может выучить какое-то говно типа php или вообще какой-нибудь эзотерической поебени типа purebasic, потому что так на сосаче сказали, лол. И потом в лучшем случае потеряет уйму времени на переучивание, а скорее всего пороху на это уже не хватит, и вырастет очередная макака. Не как что-то плохое, с учетом спроса на макак, но я все же за честное предоставление шанса тем, кто может осилить.
>>682329 >Ну вспомни себя школьником, лол. Лично я погромировал на паскале. Си мне на тот момент резко не понравился тем, что (в отличие от крестов) был ничем не лучше поцкаля, но я ненавидел его printf (по сравнению с няшным writeln).
У меня был диск "погромирование по-русски", то ли 5в1, то ли 7в1, лол.
>>682333 На тот момент, я терпеть не мог форматный вывод. Меня бесили "строки" его (суть указатель), что из нужно с & подсовывать и прочее.
Собсно, потом я паскаль дропнул, когда мне настоебенили его ограничения, а кресты подкупали std::cout и (!!!) контейнерами. Free Pascal этих ограничений не имел, да и контейнеры в него уже завезли (не помню когда, но сейчас уже точно есть). Но когда я узнал про сабж, к нему я уже охладел. Интернетов то в школе у меня не было, и книжки были в формате схороненных html'ек или и вовсе txt-шек.
>>682332 Вооот, я это ты по всем пунктам. А сейчас жалею, что страдал хуйней в школе и кучу времени потерял. Тот же Илюша, при всей смехотворности, достиг большего, чем я в его возрасте.
>>682336 >А сейчас жалею, что страдал хуйней в школе и кучу времени потерял. А я вовсе не считаю, что я в школе хуйней страдал и кучу времени потерял.
А в кресты я вкатился, когда на 3м курсе одну прогу для метрологии надо было написать для конференции. Взял тогда связку из крестов и Qt - надо было шоб кроссплатформенно, сам писал на линупсе, а сдавать надо было под винду.
Ящитаю, новичкам в кресты надо соваться ИСКЛЮЧИТЕЛЬНО только в связке с Qt. Иначе это поедание кактуса впустую, ничего практически пригодного на голых крестах не написать, а их стандартная библиотека это страдания.
>>682318 По-твоему тут дохуя людей возрастом 30+? 11-й стандарт вышел 5 лет назад, те, кому сейчас 23 при его появлении еще в школе учились. А учитывая, что фичи стандарта были известны и в 2009 (когда я начал работать на 4-м курсе универа), то ты реально описываешь или динозавров, или слоупоков-неосиляторов.
>>682343 Лично я им заинтересовался, когда вышел Qt5 - там впилили фичу, что в коннект сигналостоловый стало возможно совать лямбды. Заюзал эту фичу (она упрощала очень дело за счет захвата внешней переменной внутрь) в тестовом задании, конкретно сабж оче понравился проверяющему и в конечном итоге меня взяли.
Но зачем учить фичи просто ради фич новичку? Ящитаю, сабж нужен только если прям щас без него никуда, а его использование сильно упрощает дело.
И вот прям даже и не знаю - что это за случаи, с которых новичок без всего этого не сможет обойтись.
>>682346 > Ящитаю, сабж нужен только если прям щас без него никуда, а его использование сильно упрощает дело. Если ты не будешь знать о лямбдах, как ты поймёшь, что они тебе нужны?
>>682350 Вот я тут скидывал скрины: >>682186 Тот, кто писал говноцикл не знал про алгоритмы в stl. Пошёл ли он про них узнавать? Нет, он написал, как мог.
>>682362 >Что тут сабж? Не бывает ИРЛ, чтобы кого то поставили переписывать кусок кода (работающего) да еще и за деньги. А если ты такой хуйней будешь заниматься добровольно - будешь крайним, что от своей работы проебываешься.
>>682373 > Я ожидал примера - встречался ли ты с этим в своей практике. А я ожидал от тебя миллион долларов в подарок. Хуй тебя знает, что ты ожидаешь. Ты написал: > Не бывает ИРЛ, чтобы кого то поставили переписывать кусок кода (работающего) да еще и за деньги. Я тебе привёл пример, что бывает. И тут началось: > ВАШИ ДОКАЗАТЕЛЬСТВА НЕ ДОКАЗАТЕЛЬСТВА Всё, иди нахуй. Я больше не буду продолжать разговор.
>>682375 >ИРЛ - это "в реальной жизни" Гугл у нас в пониленде существует? > т.е. то, с чем ты столкнулся непосредственно. Это твои фантазии.
> Так что больше похоже, что реально за деньги ты нихуя не кодил, и не знаешь, как оно бывает то. У тебя очень много фантазий. Напрочь оторванных от реальной ИРЛ-жизни.
>>682379 >Ох ты, какие интересные маневры начались. Какие блядь манёвры? Где ты встречал определение IRL как "то, с чем ты сталкивался лично"? Твоё доморощенное определение — это твои влажные фантазии.
>>682381 >Ты прекрасно понял, что я имел в виду. Нет, я не ванга и не твоя мамаша, которая тебя гиперопекала и пыталась догадаться, что тебе надо. Ты написал IRL — я привёл случай из реальной жизни. Человек делал код-ревью. На работе.
>>682381 > за неимением фактов из своей практики Так бы и говорил сразу. Не "так не бывает ИРЛ", а "я с таким не встречался — значит этого не существует".
>>682386 >Я спросил вообще то другое, а именно - встречался ли ты с этим? >>682363 >Не бывает ИРЛ, чтобы кого то поставили переписывать кусок кода (работающего) да еще и за деньги.
>>682397 Не, я вообще не понимаю твоего упорства. Ну сказал бы "о, на самом деле бывает переписывание кода за деньги. Надо же, а я не встречался с таким!". Нет, ты начал какой-то хуйнёй маяться.
>>682401 Я уже давно сказал "в гугле бывает переписывание кода за деньги". А потом спросил тебя, а встречался ли ты сам с таким непосредственно. Судя по тому, как ты виляешь - ты студент от силы, и теоретик комнатный.
>>682402 >а встречался ли ты сам с таким непосредственно. Допустим, нет. >ты студент Нет. >теоретик комнатный. Нет.
> "в гугле бывает переписывание кода за деньги". А гугл — не ИРЛ? Или ты думаешь, что в гугле работают только PhD из MIT, а "простому смертному" туда попасть нереально? Или что практики разработки в гугл как-то кардинально отличаются от практик разработки средней IT-конторы?
>>682404 >А гугл — не ИРЛ? >Или ты думаешь, что в гугле работают только PhD из MIT, а "простому смертному" туда попасть нереально? Нет. Просто гугл это исключение из правила. А в реале же, как правило, переписывание кода (особенно чужого) в рабочее время сочтут проебом.
Заказчику обычно глубоко насрать на потроха проги, и "красивость кода" его совершенно не ебет. А вот скорость разработки - еще как.
>>682405 Опять таки - это из моей практики, ибо я как раз и любил ебошить код с навороченными крестами, а на стороне жабаскрипта - модной функциональной хуйней.
Мало того, что это не приветствовалось, так еще и было так, что мой "алгоритмический" код переписывали на "си с классами" обратно, ибо "коллеги не понимают эту хуйню новомодную".
>>682406 Лично в моей практике никаких тестов мы не писали (кроме ассертов, сабж же тестом не считается? Или сойдет за подобие юниттеста?).
И логика начальства была "главное быстрее, похуй на вылизывание и отладку". Суть в том, что когда ты отправил не до конца рабочее решение, но в срок - это лучше (и по условиям контракта), чем проебать срок но доработать по-нормальному.
Я даже в коммандировки за полторы тыщи км раз 5 мотался, чтобы отлаживать на месте лол, бо вовремя этого сделать не давали, кококо-отправляем.
>>682410 >кроме ассертов, сабж же тестом не считается? Или сойдет за подобие юниттеста? Я встречал (и мне кажется это правильным взглядом) такое отношение: assert это invariant и документация.
>>682415 В любом случае, тестированием у нас считался другой процесс - запускаешь линию, а за нее - сервисного инженера.
Он в процессе работы записывает, с какой хуйней столкнулся, а ты исправляешь. "Успешное тестирование" - это когда без косяков удается прогнать серию плат полностью, там сотню или тысячу, зависит от условий.
Ну или, там - поставить мелкий компонент на видеосовмещении и запаять его. В любом случае - написанием тестов не автоматизировалось, нужна была человеческая составляющая.
>>682107 Если мэнтейнеры так сделали, значит надо. Ты когда пакет будешь собирать (deb, rpm, etc) ты в зависимостях укажешь имя либы с её, скорее всего, мажорной версией и всё. Дальше лезть смысла нет, в другой версии системы или при апдейте вся кухня может поменяться и у тебя будет ситуация хуй в гавне.
>>682107 > Почему так? http://stackoverflow.com/a/6339947 > Мне нужно в итоге деплоить либу вместе с бинарником А зачем ты линкуешься с либами из дистрибутива? > бинарник ждет с какого-то хуя симлинк. Не то, чтобы специалист по линкерам. Я думаю там пофиг, симлинк или нет. Если будет файл с таким именем, слинкуется с файлом.
>>682899 >Это я понимаю, но я собираюсь распространять бинарь вместе с либами И либы ты будешь распихивать по системным путям? > ибо в дистр такую хуйню вряд ли возьмут. ЛОЛ. Никто не запрещает ставить пакеты не из репов. Собираешь .deb или .rpm под какую-то версию дистрибутива и публикуешь у себя на сайте.
>>682910 На все 20 современных дистроверсий? ЛОЛ. Я статически собирал и норм было, вот только неоптимально по размеру из-за наличия двух исполняемых файлов :3
>>682913 Ну раз ты так охуенно все прочитал и правильно используешь, то какие проблемы блядь? Откуда это: >>682911 возникает? Во-первых какого хуя ты доебался к минорной версии, а? Если ты распространяешь свои версии либ, то кладешь их в той же папке, меняешь порядок поиска либ с помощью rpath и не выебываешься. Во-вторых, ты с хуяли пиздишь, что все прочитал про shared libraries и не знаешь на что влияют минорные версии в имени библиотеки? А, сука? http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html Смотри секцию library versioning
>>682934 Не увидел ничего по ссылке, что бы помогло. Расписано о версиях, зачем, почему. Но ничего о том, как линковаться к конкретному .so файлу, а не к его мажорной версии. Прочитал весь раздел "Library Versions".
>>683054 Мой комент ты, видимо, жопой читал. Тебе не нужно вообще выбирать конкретную версию либы, потому что твоя либа не должна находиться среди системных. Она лежит в /opt! Это может быть директория ./, а может быть любая другая, которую ты укажешь через rpath.
Но если вдруг тебе ну очень прям хочется засунуть свою либу с /usr/lib, то ты либо собирай ебаный пакет, либо не лезь, потому что наверняка тебя будет материть пользователь, когда увидит, что ты случайно заменил системную либо своей криво скомпиленной. И если ты даже на этот совет наплевал в лучших традициях "я лучше знаю"(на самом деле нет), то хочу тебе сказать, что твое жопочтение - это тенденция, ведь ты хуево прочитал не только мой пост, но и доки к ld.
При сборке либа лежит не в системной директории, а в /home/anon/qt-5.5.0-yoba/ и там все эти симлинки, их-то и надо обойти.
Попробую двоеточие. Может ты заодно подскажешь, как отредактировать строчку, которую cmake подаёт линкеру для определенного пакета, найденного через find_package?
>>683184 Потому что я тупо копирую файл потом в дистрибутив, который буду распространять. И вот у меня теперь костыль в 20 строк чтобы всё переименовать посредством cmake.
>>682955 Синтаксис, правила и ограничения. Можно будет экспортировать специализацию шаблонов. Насколько я знаю на конференции в Ленехе было представлено две реализации - сланговская и майкрософтовская. Они не смогли решить какая лучше и пилят пропозал дальше. Но потестить модули уже можно в свежих компиоляторах.
http://pastebin.com/c534k665 Программа должна заменять буквы после точек на прописные. Но в файле вывода все пробелы вырезаются. Видимо, дело не в алгоритме, а в том, что cin считывает пробелы, пока не наткнётся на букву. Как это пофиксить?
остановка считывания в строку (string) как только встретим "точку". ни while(cin.get()!='.') ни (cin >> temp1 !=".") не работает. цикл не останавливается. В чем проблма?
>>683532 >вывод на экран vector < string words; >как осуществить? cout ругается Лабодрочер, как он есть. Наверняка пытаешься код из методички подправить, да?
просит помощи недопрограммист-любитель. (это хобби. ковыряюсь потихоньку) Вот. есть LED-матрица от Адафрута (8 светодиодов по горизонтали и 5 диодов по вертикали) Есть Ардуино. Все собрал-подключил. Захотел сваять код для бегущей вертикальной строки (столбец из 5 светодиодов) Есть библиотека этого же самого Адаврута с командой
pixels.setPixelColor(i, pixels.Color(r,g,b));
где i - номер светодиода (считается от нулевого до 39 - линейно) r,g,b - соотв. красный, зеленый, синий от 0 до 255
сам столбец построил командой
for(int i=0;i<NUMPIXELS;i=i+8){
// pixels.Color takes RGB values, from 0,0,0 up to 255,255,255 pixels.setPixelColor(i, pixels.Color(r,g,b)); pixels.show(); }
NUMPIXELS - количество светодиодов (8х5=40) а вот дальше - труба. нужно, чтобы в цикле этим переменным последовательно прибавлялись значения (т.е. все номера светодиодов для второго столбца - это уже не 0,8,16,24, и 32 как в первом "включении" а 1,9,17,25, 33 - и так 8 раз до "полного пробега строки"
решил это по колхозному:
для перемещения "на 1 пиксель":
for(int i=1;i<NUMPIXELS;i=i+8){
pixels.setPixelColor(i, pixels.Color(r,g,b));
и так еще 7 раз, просто тупо меняя начальное значение i "Бегущая строка огней" побежала. Но, скетч выглядит колхозным и я чувствую, можно это решить элегантней. Если кто сможет помочь - подскажите пожалуйста. Надеюсь на помощь гуру.
Аноны, читаю книгу из шапки и вот на такую хуйню наехал. Это что же получается, братцы, без const'ау меня теперь будет с указателя все копироваться и даже не имеет значения, что у меня итератор неконстантный?! Почему так происходит, им недостаточно ссылки? Я же ведь не делаю преобразование из const в не-const
>>685889 Что ты несешь, лол? Там ясно написано: без ссылки или указателя будет копирование, со ссылкой или указателем - не будет. Константность ссылки не влияет на это, а просто позволяет передать в функцию константу в качестве аргумента.
Еще раз: T coll - можно пихать что угодно, но будет копирование. Плохо. T & coll или T * coll_ptr - копирования не будет, но нельзя сделать printElems (5), например. Все еще плохо. const T & coll - вот теперь заебись, можно пихать что угодно и без копирования.
>>685795 можно хоть пример, а то нифига не понятно (вернее понятно, что можно решить еще одним циклом) Но как заставить переменную i последовательно принимать нужные значения? У меня при добавлении второго цикла все рассыпается. Видимо упирается все в поиск алгоритма.
Я щас печитывал подробно список изменений в 11 и 14 стандарте – auto, decltype в каждом анусе, std::option, лямбды, ufcs в 17-м предлагают – ощущение что из плюсов плавно делают такой очень быстрый хаскель.
Плюсаны, спрашиваю платину, решил попробовать с++(никакого проф образования, просто для фана), так вот встал вопрос. Есть класс, объявлять в нем поля как указатели или как просто объекты? Где обстоятельно почитать в каких случаях что ипользовать?
>>686140 >Есть класс, объявлять в нем поля как указатели или как просто объекты? Как просто объекты. Но не всегда. > Где обстоятельно почитать в каких случаях что ипользовать? Это сложно. Зависит много от чего.
>>686140 > обстоятельно почитать Опыт же, врядли где-то такое рассматривается в книге, так как хитрости никакой нет. Если объявить как объект то тебя будет копия. Если как указатель (ссылку) то будет совместное использование. Если нужна копия - объявляешь как объект (возможное исключение - жирные объекты, возможно лучше перестраховываться и даже копии в куче размещать), если совместное использование - указатель (в том числе умный) или ссылка. Есть несколько книг Майерса (что-то типа "Эффективное использование C++"), там могут подобные вопросы рассматриваться, но конкретно твой больше упирается в свойства указателей/объектов чем в то что лучше.
>>686122 Тащемта, последняя значимая, но не реализованная фича хачкеля - pattern matching. Все остальное уже есть в том или ином виде, либо коротко делается при помощи одной std library. Маловероятно, конечно, что PM впилят в одном из следующих стандартов прямо в ядро, как лямбды, например, но если впилят, то у монадолюбителей не останется вообще никаких преимуществ, с учетом общей тормознутости их языка.
>>686291 https://github.com/solodon4/Mach7 Есть уже PM от челиков из комитета и Страуструпа. Кстати, если std::optional переедет из experemental в полноценное использование, например в stl, и pm будет реализован как часть языка в каком нибудь c++20 – внезапно кресты станут растом.
>>686337 Шаг влево или вправо - харам. Пытаешься абсолютно безопасно использовать Int там, где надо Integer, компилятор хватает тебя и отрубает голову под нашид. Все как в исламе, хуле.
>>686174 Ну теперь более-менее понятно. Я только одного не понял, если я объявляю поле не указателем, то оно сразу инициализируется с пустым конструктором штоле? А если у меня только один конструктор и в нем несколько аргументов?
>>686409 > объявляю поле не указателем, то оно сразу Да. По нормальному запись вида Foo foo; надо было вообще запретить и заставить писать Foo foo(); - но тогда возникает путаница с декларациями функций, поэтому разрешено (и нужно) Foo foo; что означает вызов конструктора по умолчанию > только один конструктор и в нем несколько Будет ошибка при компиляции, если у аргументов конструктора нет значений по умолчанию.
>>686392 >Пытаешься абсолютно безопасно использовать Int там, где надо Integer Это не всегда безопасно. Таки чем именно идея молча конвертировать long в int или тем более float в int и не выдавать даже предупреждения лучше?
>>686417 Я не говорю о long в int. Integer заведомо шире Int, поэтому можно бы было сделать автоматическое безопасное приведение, как в сиподобных языках, но нихуя.
>>686415 Как-то это не очень удобно получается, в другом языке программирования я бы определил аргументами у конструктора класса какие-то обязательные вещи, без которых например объект класса не функционирует по умолчанию. А тут получается надо какую-то дополнительную функцию для инициализации вводить? Или это вообще плохая практика посылать что-то в конструктор и вообще хранить указатели на какие-то объекты других классов, потому что они могут быть внезапно уничтожены?
>>686421 Да, ты прав, я почему-то прочитал что ты Integer хочешь конвертнуть в Int. Но по большому счету это придирки, которых к тем же крестам можно придумать сколько угодно.
>>686409 > Я только одного не понял, если я объявляю поле не указателем, то оно сразу инициализируется с пустым конструктором штоле? man "initializer list"
Сап, аноны. До сих пор ебусь с задачей о назначениях, был тут пару недель назад, тащемта до сих пор нет идей, нагуглил вот такую хуйню, но разобраться с ней не могу там же есть условие задачи
Так же мне посоветовали изучить задачу о рюкзаке. Так вот, хуйня в том, что я не понимаю как реализовать это в моей задаче, а т.е. нахуй находить мне сумму дохода на должностях, что это мне даст и как быть с оптимальным решением? Моя задача в том, чтобы найти ВСЕ решения
Вообще подкиньте хотя бы алгоритм решения, ибо ступорюсь на случае, когда один рабочий по назначению на первой должности оказывается лучше на пятой, то получается мне надо уходить опять в начало, как с этим быть? И уйдя в начало, дойдя опять же до какой-нибудь должности может произойти тоже самое, в рюкзаке рассматриваются два случая, точнее функции, которые считают что будет если взять предмет и что будет если его не брать. Как сюда это все запихнуть не ебу вообще, меня скорее задача эта ебет уже в течении месяца.
>>687348 > делает хуйню > спраштвает как избавиться от хуйни Уточни анальные ограничения которые ты себе выдумал. Конкретно интересует почему ты в коде шаблона можешь использовать отстаток от деления аргумента шаблона как условние для условного оператора, но равенство аргументов шаблона уже использовать нельзя. А вообще нужно сделать так чтобы спецификация шаблона для конца рекурсии была пустая.
>>686946 Я его пробовал, ему простого набора MinGW мало, ему какая-то утилита ещё нужна (название похоже на cmake) под виндой, причём не та, которая идёт в комплекте с MinGW, а какая-то другая. Code::blocks работает без неё.
>>687616 О, ты то мне и нужен. Подскажи, что делать: накатил Moonrise на Eclipse, чтобы было не скучно и картинки весёлые, в General-Appearance-Color Theme выбрал цвета для шрифтов, но в Консоли один хуй чёрный шрифт. На тёмном бэкграунде как-то не очень смотрится. Как поменять цвет шрифта в выводе консоли?
>>687719 Ох, добра тебе, анон. Ты лучший. Только хуйня в том, что ВЕКТОРОВ СЛИШКОМ МНОГО. Реально ли ее переписать так, чтобы каждый элемент матрицы был структурой и в ней отмечать то самое po (выбирали мы его или нет). А так же как допилить со ВСЕМИ РЕШЕНИЯМИ?
Вопрос по Gtk. Допустим, у меня есть css, который я загружаю CssProvider'ом и есть виджет, стиль которого я хочу менять динамически на описанный в css. Как мне это реализовать?
>>687804 > ВЕКТОРОВ СЛИШКОМ МНОГО Они все нужны. Ты предлагаешь какую-то хуйню. Опустим то что в матрица U меньше столбоцов чем po. Замена равноценна обмену вектора размером (N+1) на вектор размера (N+1)xM. Мне сложно придумать ситуацию где это может быть оправдано. Разве что ты работаешь на системе где вектора - очень ограниченый (количественно) ресурс выдача которого управляется (и анально ограничена) ОС. Но я не слышал о таких. >ВСЕМИ https://ideone.com/poEFEA
Из шапки убраны ссылки на предыдущий и сишный треды, чтобы не приходилось редактировать каждый раз. Теперь они относятся к обновляемой информации, которую добавляет в ОП-пост сам ОП.
>>688050 Ты не ньфаг, а мудак, в интернете все есть, в книжках все есть, но ты, уебок, постишь свое говно тут. Ты безнадежен, иди в питонотред или в клуб любителе пхп. С++ первым языком брать не стоит. Особенно беспросветным тупицам.
>>688302 У них гарантированый размер. Тогда как у обычных типов размер четко не определен. Они могут оказатся все равны друг другу. Определено только то что sizeof(char) == 1 и что каждый последующий тип должен быть как минимум равене предыдущему. Тоесть long не может быть меньше int (но может быть равен). Ну и еще якобы минимальный размер определяется: char минимум 8 бит, инт минимум 16, лонг минимум 32 и лонг лонг минимум 64. Но все типы могут оказаться равны 64 (или вообще 128) битам - это будет соотвествовать стандарту.
>>688398 Из нее удобней переводить в двоичную (и обратно), чем из десятичной. Простой заменой, каждый разряд в шестнадцатеричной однозначно превращается ровно в четыре разряда двоичной. А десятичную нужно разлаживать на множетели, вычитать, умножать и т.д.
Дайте пример сложных задач? Что вообще сложного в c++, не понимаю чому все ноют? Чет я вижу и решаю спокойно, но это хуйня для студентов, хочу сложных задач.
>>688322 >минимальный размер определяется: char минимум 8 бит, инт минимум 16, лонг минимум 32 и лонг лонг минимум 64. Но все типы могут оказаться равны 64 (или вообще 128) битам - это будет соотвествовать стандарту.
Мои старания не прошли зря. Несколько тредов назад тут писали, что все они могут быть равны одному байту (8 бит) и это будет по стандарту. Пришлось ребяткам показывать таблицу с INT_MAX, LONG_MAX и проч.
Речь шла о том, что INT_MAX и проч. накладывают на размер типов в битах определённые ограничения снизу.
И тут влезает какой-то даун с numeric_limits и восьмидесятыми. Что он хотел сказать, я не понял. Выебнуться тем, что знает о существовании numeric_limits? Ну молодец, хули. Знаешь. Теперь иди дальше.
>>688610 Речь шла об ограничениях на размер в битах. Стандарт C++ говорит о том, что numeric_limits эквивалентен type_MIN/MAX/etc. Стандарт C++ не приводит никаких численных значений ни для numeric_limits, ни для type_MIN/MAX.
Минимальные численные значения для INT_MIN, INT_MAX и др. определены в стандарте C. Меня интересовали конкретные численные значения. Естественно, что я говорил о INT_MAX, а не о numeri_limits<int>::max().
Теперь объясни мне, нахуй он ты? это вставил: > как там в 80ых? > std::numeric_limits еще не завезли?
> Есть такие вещи как кодстайл и легитимная для языка библиотека. climits — легитимная для C++ библиотека, инфа 100%.
>>681348 (OP) Какие проекты, вероятнее всего, среднестатистический некриворукий анон будет делать, если выучит C++ на уровне приличного новичка? Какие проекты чаще всего попадаются? Какие проекты интересные? Какие проекты в 2016 году делаются на Qt? На голом C++? Под какие платформы? Бывалые, опишите, интересно же. На моей прошлой работе был крохотный проект на плюсах с нормальным ООП, но он был скорее огромным таким биндингом для использования другого проекта.
Не водись, анон, с крестоблядками.
От крестов умы у них куцые -
Норовят учинить революцию.
Эх, яблочко, ты мое спелое.
Старый ОП говорит: "Шапку делаю,
Не могу сейчас перекат создать" -
Кто-то враз решил новым ОПом стать:
"Эх, яблочко, на подоконничке.
Отдавай, ОП-хуй, мне исходнички.
В шапке не нужон твой дурацкий стих,
Перекатим без легитимности.
Эх, яблочко, да сбоку зелено.
Треду на ОП-пик поставим Ленина,
Шапку сократим раза в полтора -
Для больших перемен подошла пора.
Эх, яблочко, да с горки котится.
Стихоебская власть не воротится!"
Но увы! Недолга власть народная.
Эх, яблочко, да огородное.
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: Современный C++ весьма далек от языка, которым он был в 1998 году. В настоящее время кресты живее всех живых, их развитие движется семимильными шагами, а новые стандарты принимаются каждые три года, сохраняя при этом полную обратную совместимость с предыдущими. К сожалению, из-за обилия некачественной литературы по С++, в которой игнорируются новые средства языка, бытует мнение о его "несовременности".
Q: Сейчас все пишут на %languagename, а кресты сосут у него!
A: Нужно понимать, что используемый язык должен соответствовать поставленной задаче. Никому не придет в голову писать на C++ скрипты или веб-фронтенд хотя это вполне возможно, но лишь немногие языки могут соперничать с ним по разнообразию решаемых задач.
Q: Хуле тут так сложно? Я открыл учебник, там какой-то ад!
A: Попробуй учебники, изданные после 2011 года, в которых рассматриваются возможности новых стандартов (C++11 и C++14). Эти фичи не только добавили выразительности, но и серьезно упростили жизнь разработчиков. Теперь программировать на C++ стало проще, чем когда-либо! Это не отменяет необходимости прочитать несколько серьезных книжек, чтобы написать на нем что-то годное. Тем не менее, да, C++ это по-настоящему сложный язык. Его никак не получится выучить за 21 день, ну вот совсем никак. Именно высокий порог вхождения повышает твою ценность как специалиста, не позволяя нанять вместо тебя индуса за еду. Более того, крайне нежелательно пытаться изучить его первым, если ты раньше вообще не программировал. С большой вероятностью это приведет к разочарованию и потере времени. Гораздо лучше будет начать с другого языка и базовых вещей алгоритмы, архитектура пека, операционные системы, а уже потом вернуться к крестам.
Литература
Q: Окей, я решил вкатиться. Какие же книги мне читать?
A: Специально для тебя аноны /pr собрали уникальную коллекцию отборной литературы по крестам. Только лучшие книги, последние издания, без хуев! Выбирай категорию и обмазывайся:
Для нюфань
Учебники для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется:
Кроме того, есть еще пара старых добрых учебников для ньюфагов. Часть информации в них устарела, но многие считают, что это компенсируется их большей, по сравнению с современными учебниками, понятностью:
Best practices
Книги про основные подводные камни для тех, кто осилил предыдущий пункт. Следует пролистать все:
Проектирование
Следует пролистать все перед переходом от лаб к написанию настоящего софта.
Последний пункт есть квинтэссенция ГИБКОСТИ, поэтому стоит прочитать его в любом случае, чтобы охуеть от того, как можно делать:
Ахтунг!
Предыдущие два раздела дополняют, а не заменяют классические книги о лучших практиках разработки без привязки к конкретному языку (Макконнелл, Uncle Bob, GoF).
Справочники
Наиболее детальные описания языка. Удобно использовать как референс, читать от корки до корки не обязательно:
Кроме того, на ангельском доступны стандарты C++11, C++14, а также последняя версия черновика стандарта C++17.
Тонкости языка
Книги для тех, кто возлюбил кресты всей душой и желает углубиться в детали:
Отдельные аспекты
Читать по необходимости:
и других фич последних стандартов
для разработки многопоточных приложений
остальным частям стандартной библиотеки
язык программирования, чтобы ты мог
программировать, пока программируешь"
в ужас даже исходники boost::MPL
на C++. Для его чтения не нужно знать
мертвые языки, в отличие от этого вашего Кнута
https://goo.gl/yDuQgG (часть 5)
Другие обучающие материалы
Q: Я не умею читать.
A: Можешь посмотреть какой-нибудь онлайн-курс: раз, два, три
Q: Не люблю, когда льют воду. Хочу коротких материалов по существу.
A: Вот тебе блоги, факи, референсы и всякое такое:
Софт и библиотеки
Q: Я готов начать погроммировать! Куда мне писать код?
A: На этапе написания хэллоуворлдов можно не ебаться с установкой софта, а использовать онлайн-компиляторы: раз, два, три, четыре. Для работы над более серьезными вещами удобнее всего установить какую-нибудь IDE. Ниже приведены несколько хороших вариантов:
https://goo.gl/WIPW9L (ангельская версия)
"sudo aptitude install codelite codelite-plugins"
для установки под *nix
Здесь ты можешь найти все остальные существующие IDE, если ни одна из вышеперечисленных тебе не приглянулась.
Разумеется, установка IDE вовсе не обязательна. Ты можешь использовать текстовый редактор в связке с каким-нибудь компилятором, выбросить мышку, отрастить бороду и примкнуть к Церкви Святого Столлмана. Но лучше тогда сразу отправляйся в тред сишников, если не хочешь быть обоссанным другими сектантами за использование б-гомерзкого C++.
Q: Не буду я все делать сам! Подавайте сюда софт, который все сделает за меня и подотрет мне жопу!
A: Без проблем:
Также не стоит забывать о том, что правильные посоны экономят свое время и нервы, используя мегагодные git и cmake во всех проектах.
Q: Мне надоело писать велосипеды, какие у вас тут популярные либы?
Q: Нужно зделать %монструозная_хуйня_нейм, но я обосрался от одной мысли о написании ее с нуля, что же делать?
A: Гляди сюда:
boost
Бесспорно, это самый популярный набор C++-библиотек. Не будет лукавством сказать, что C++ во многом обязан популярностью именно ему. Воистину всеобъемлющий, boost способен удовлетворить твои самые скотские фантазии. В нем есть практически все - от математических функций до сетевых компонент, от инструментов тестирования до динамических типов. Функции для работы с твоей мамашей там тоже есть. Разумеется, все это швабодное и работает на любых платформах. И да, boost является своеобразным инкубатором хороших библиотек, поэтому наиболее удачные из них с большой вероятностью можно будет увидеть после принятия очередного стандарта уже как часть стандартной библиотеки.
Недостатком boost можно считать его размер - более 300 мегабайт. Большинство компонент boost не являются независимыми, и попытка использовать один единственный контейнер обернется фактическим подключением 2/3 всего присутствующего в комплекте. Таким образом, если boost не будет использоваться на полную, лучше юзать другие, более специализированные библиотеки.
Литература:
Qt
Существует швабодный кроссплатформенный фреймворк-надмножество C++ под названием Qt. Он содержит довольно большое количество компонент (для работы с сетью, базами данных, для юнит-тестирования и др.), но киллер-фичей и основным полем его применения являются возможности по разработке графических интерфейсов. Qt сам по себе, как расширение языка, предоставляет для этого более удобные средства, чем обычные библиотеки, а использование специализированных IDE наподобие Qt Creator позволяет в буквальном смысле собирать интерфейсы мышкой, а код писать только по существу.
Тем не менее, использование Qt нельзя однозначно назвать хорошей практикой. Во многом это уже не C++, а другой язык, со своими концепциями и паттернами. Qt-код требует дополнительного препроцессинга при помощи встроенных в Qt утилит (т.н. метаобъектная компиляция), поэтому не получится просто подключить Qt как обычную библиотеку и использовать свой любимый компилятор без дополнительного софта. Нельзя сказать, что это существенное препятствие, но есть мнение, что использование Qt нарушает дух C++, раздувает машинный код и порождает макак-любителей кодогенерации.
В настоящее время основные версии Qt - 4.8 и 5.х, полной обратной совместимости между ними нет как в пистоне, ага.
Литература:
https://goo.gl/toUDWc (исходники примеров)
https://goo.gl/qpkZFm (книга) +
https://goo.gl/LIIECh (исходники примеров)
Другие хорошие библиотеки
Несколько специализированных библиотек для часто встречающихся задач. Все — маленькие, быстрые и простые в освоении:
И еще куча библиотек на любой вкус.
Q: Я прочитал все вышеперечисленное, теперь я гуру! Что дальше?
A: Дальше переходишь по ссылке, пробуешь отвечать на вопросы и понимаешь, что ты пока в самом начале пути. Кроличья нора крестов практически бездонна, поэтому продолжать постигать тонкости и детали можно очень и очень долго. В то же время, на этом этапе у тебя должно быть достаточно знаний, чтобы уверенно писать неплохой код. Поэтому читай исходники открытого софта и библиотек, отправляй пулл-реквесты в них, читай книжки по предметным областям и общим методикам разработки, а дальше уже сможешь запилить свой проект или вкатиться в существующий.
Предыдущие треды на архиваче
Старые ненумерованные треды
Отдельные Qt-треды