Этого треда уже нет.
Это копия, сохраненная 14 августа 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
214 Кб, 956x484
Оффициальный™ традиционный® C++ тред #38 #798022 В конец треда | Веб
Скоро, очень скоро
Старый ОП, который
Насаждал к искусству жаркий пыл в сердцах,
Из Dерьма восстанет,
И прекрасен станет
Тред, в котором лабы пишут на крестах.

Шапку он наполнит,
Свой обет исполнит,
Вам на суд являя новые стихи;
Музы скальда живы,
Но в своих призывах
Будьте терпеливы, братья крестухи.


Старший брат: >>780630 (OP)
Предыдущий: >>786424 (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: Современный C++ весьма далек от языка, которым он был в 1998 году. В настоящее время кресты живее всех живых, их развитие движется семимильными шагами, а новые стандарты принимаются каждые три года, сохраняя при этом полную обратную совместимость с предыдущими. К сожалению, из-за обилия некачественной литературы по С++, в которой игнорируются новые средства языка, бытует мнение о его "несовременности".

Q: Сейчас все пишут на %languagename, а кресты сосут у него!
A: Нужно понимать, что используемый язык должен соответствовать поставленной задаче. Никому не придет в голову писать на C++ скрипты или веб-фронтенд хотя это вполне возможно, но лишь немногие языки могут соперничать с ним по разнообразию решаемых задач.

Q: Хуле тут так сложно? Я открыл учебник, там какой-то ад!
A: Попробуй учебники, изданные после 2011 года, в которых рассматриваются возможности новых стандартов (C++11 и C++14). Эти фичи не только добавили выразительности, но и серьезно упростили жизнь разработчиков. Теперь программировать на C++ стало проще, чем когда-либо! Это не отменяет необходимости прочитать несколько серьезных книжек, чтобы написать на нем что-то годное. Тем не менее, да, C++ это по-настоящему сложный язык. Его никак не получится выучить за 21 день, ну вот совсем никак. Именно высокий порог вхождения повышает твою ценность как специалиста, не позволяя нанять вместо тебя индуса за еду. Более того, крайне нежелательно пытаться изучить его первым, если ты раньше вообще не программировал. С большой вероятностью это приведет к разочарованию и потере времени. Гораздо лучше будет начать с другого языка и базовых вещей алгоритмы, архитектура пека, операционные системы, а уже потом вернуться к крестам.


Литература

Q: Окей, я решил вкатиться. Какие же книги мне читать?
A: Специально для тебя аноны /pr собрали уникальную коллекцию отборной литературы по крестам. Только лучшие книги, последние издания, без хуев! Выбирай категорию и обмазывайся:

  • Для нюфань

    Учебники для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется:


    Автор(ы) Название Год Ссылка
    Бьерн Страуструп Программирование. Принципы и практика использования C++ 2016 https://yadi.sk/i/Yd6KKpLBqJSUr
    Стэнли Липпман, Жози Лажойе и Барбара Му Язык программирования C++ 2014 https://goo.gl/kVaela
    Стивен Прата Язык программирования C++ 2012 https://goo.gl/z7kA8u

  • Кроме того, есть еще пара старых добрых учебников для ньюфагов. Часть информации в них устарела, но многие считают, что это компенсируется их большей, по сравнению с современными учебниками, понятностью:


    Автор(ы) Название Год Ссылка
    Герберт Шилдт C++. Базовый курс 2010 https://goo.gl/qMLAFl
    Роберт Лафоре Объектно-ориентированное программирование в C++ 2004 https://goo.gl/QvjR6x

  • Best practices

    Книги про основные подводные камни для тех, кто осилил предыдущий пункт. Следует пролистать все:


    Автор(ы) Название Год Ссылка
    Скотт Мейерс Эффективное использование C++ 2005 https://goo.gl/wsDXGz
    Скотт Мейерс Наиболее эффективное использование C++ 1996 https://goo.gl/tHa0tO
    Скотт Мейерс Эффективный и современный C++ 2015 https://goo.gl/Im8VYQ
    Скотт Мейерс Эффективное использование STL 2002 https://goo.gl/QtS8Dc
    Герб Саттер и Андрей Александреску Стандарты программирования на языке C++ 2005 https://goo.gl/Cpk4YR

  • Проектирование

    Следует пролистать все перед переходом от лаб к написанию настоящего софта.
    Последний пункт есть квинтэссенция ГИБКОСТИ, поэтому стоит прочитать его в любом случае, чтобы охуеть от того, как можно делать:


    Автор(ы) Название Год Ссылка
    Ален Голуб Веревка достаточной длины, чтобы выстрелить себе в ногу 2001 https://goo.gl/fBmuxp
    Джеймс Коплиен Программирование на C++ 2005 https://goo.gl/Y1WGdU
    Андрей Александреску Современное проектирование на C++ 2002 https://goo.gl/e1V5BC

    Ахтунг!
    Предыдущие два раздела дополняют, а не заменяют классические книги о лучших практиках разработки без привязки к конкретному языку (Макконнелл, Uncle Bob, GoF).

  • Справочники

    Наиболее детальные описания языка. Удобно использовать как референс, читать от корки до корки не обязательно:


    Автор(ы) Название Год Ссылка
    Бьерн Страуструп Язык программирования C++ 2013 https://goo.gl/XkAiOX (на ангельском)
    Бьерн Страуструп Язык программирования C++ 2010 https://goo.gl/iZBDiV <устарело>

    Кроме того, на ангельском доступны стандарты C++11, C++14, а также последняя версия черновика стандарта C++17.

  • Тонкости языка

    Книги для тех, кто возлюбил кресты всей душой и желает углубиться в детали:


    Автор(ы) Название Год Ссылка
    Герб Саттер Решение сложных задач на C++ 2002 https://goo.gl/iWaa6S
    Герб Саттер Новые сложные задачи на C++ 2004 https://goo.gl/4nn512
    Бьерн Страуструп Дизайн и эволюция C++ 1994 https://goo.gl/FqbPwo (для легкого чтения)

  • Отдельные аспекты

    Читать по необходимости:


    Автор(ы) Название Год Описание Ссылка
    Энтони Уильямс Параллельное программирование на C++ в действии 2012 Про использование std::thread
    и других фич последних стандартов
    для разработки многопоточных приложений
    https://goo.gl/qJfBkD
    Николаи Джоссатис C++. Стандартная библиотека 2012 Детальный справочник по STL и
    остальным частям стандартной библиотеки
    https://goo.gl/PEyiMH
    Дэвид Абрахамс и Алексей Гуртовой Шаблонное метапрограммирование на C++ 2009 "Мы встроили в шаблоны C++ функциональный
    язык программирования, чтобы ты мог
    программировать, пока программируешь"
    https://goo.gl/isSt7j
    Дэвид Вандевурд и Николаи Джоссатис Шаблоны C++. Справочник разработчика 2003 После прочтения этой книги тебя не приведут
    в ужас даже исходники boost::MPL
    https://goo.gl/0M4NpG
    Роберт Седжвик Фундаментальные алгоритмы на C++ 2001 Стандартный курс алгоритмов с примерами
    на C++. Для его чтения не нужно знать
    мертвые языки, в отличие от этого вашего Кнута
    https://goo.gl/4jwxSl (части 1-4),
    https://goo.gl/yDuQgG (часть 5)


Другие обучающие материалы

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

Здесь ты можешь найти все остальные существующие IDE, если ни одна из вышеперечисленных тебе не приглянулась.

Разумеется, установка IDE вовсе не обязательна. Ты можешь использовать текстовый редактор в связке с каким-нибудь компилятором, выбросить мышку, отрастить бороду и примкнуть к Церкви Святого Столлмана. Но лучше тогда сразу отправляйся в тред сишников, если не хочешь быть обоссанным другими сектантами за использование б-гомерзкого C++.

Q: Не буду я все делать сам! Подавайте сюда софт, который все сделает за меня и подотрет мне жопу!
A: Без проблем:

  • Статический анализатор, который умеет находить в коде ошибки и неоптимальные места. Швабодный. Есть плагин для Visual Studio
  • Более навороченный, но коммерческий аналог
  • Встроенный в clang статический анализатор
  • Детектор утечек для Visual Studio. Предельно прост в прикручивании
  • На порядок более мощная и сложная утилита для *nix, служащая тем же целям
  • Гугловские утилиты для контроля корректности кода
  • Гугловский фреймворк для автоматизации тестирования

Также не стоит забывать о том, что правильные посоны экономят свое время и нервы, используя мегагодные git и cmake во всех проектах.

Q: Мне надоело писать велосипеды, какие у вас тут популярные либы?
Q: Нужно зделать %монструозная_хуйня_нейм, но я обосрался от одной мысли о написании ее с нуля, что же делать?
A: Гляди сюда:

  • boost

    Бесспорно, это самый популярный набор C++-библиотек. Не будет лукавством сказать, что C++ во многом обязан популярностью именно ему. Воистину всеобъемлющий, boost способен удовлетворить твои самые скотские фантазии. В нем есть практически все - от математических функций до сетевых компонент, от инструментов тестирования до динамических типов. Функции для работы с твоей мамашей там тоже есть. Разумеется, все это швабодное и работает на любых платформах. И да, boost является своеобразным инкубатором хороших библиотек, поэтому наиболее удачные из них с большой вероятностью можно будет увидеть после принятия очередного стандарта уже как часть стандартной библиотеки.

    Недостатком boost можно считать его размер - более 300 мегабайт. Большинство компонент boost не являются независимыми, и попытка использовать один единственный контейнер обернется фактическим подключением 2/3 всего присутствующего в комплекте. Таким образом, если boost не будет использоваться на полную, лучше юзать другие, более специализированные библиотеки.

    Литература:


    Автор(ы) Название Год Ссылка
    Ариндам Мукерджи Learning Boost C++ Libraries 2015 https://goo.gl/b0gPN1 (на ангельском)

  • Qt

    Существует швабодный кроссплатформенный фреймворк-надмножество C++ под названием Qt. Он содержит довольно большое количество компонент (для работы с сетью, базами данных, для юнит-тестирования и др.), но киллер-фичей и основным полем его применения являются возможности по разработке графических интерфейсов. Qt сам по себе, как расширение языка, предоставляет для этого более удобные средства, чем обычные библиотеки, а использование специализированных IDE наподобие Qt Creator позволяет в буквальном смысле собирать интерфейсы мышкой, а код писать только по существу.

    Тем не менее, использование Qt нельзя однозначно назвать хорошей практикой. Во многом это уже не C++, а другой язык, со своими концепциями и паттернами. Qt-код требует дополнительного препроцессинга при помощи встроенных в Qt утилит (т.н. метаобъектная компиляция), поэтому не получится просто подключить Qt как обычную библиотеку и использовать свой любимый компилятор без дополнительного софта. Нельзя сказать, что это существенное препятствие, но есть мнение, что использование Qt нарушает дух C++, раздувает машинный код и порождает макак-любителей кодогенерации.

    В настоящее время основные версии Qt - 4.8 и 5.х, полной обратной совместимости между ними нет как в пистоне, ага.

    Литература:


    Автор(ы) Название Год Ссылка
    Макс Шлее Qt 5.3. Профессиональное программирование на C++ 2015 https://goo.gl/aZ66gK
    Макс Шлее Qt 4.8. Профессиональное программирование на C++ 2012 https://goo.gl/Slb1In (книга) +
    https://goo.gl/toUDWc (исходники примеров)
    Марк Саммерфилд Qt. Профессиональное программирование 2011 Только Qt 4.х:
    https://goo.gl/qpkZFm (книга) +
    https://goo.gl/LIIECh (исходники примеров)

  • Другие хорошие библиотеки

    Несколько специализированных библиотек для часто встречающихся задач. Все — маленькие, быстрые и простые в освоении:

    • libcurl - сишная библиотека для работы с сетью (существует также curlpp - крестовая обертка для нее, но использовать ее не стоит, ибо разработка заброшена еще в 2009 году)
    • SFML - работа с графикой и аудио
    • FLTK - графические интерфейсы

    И еще куча библиотек на любой вкус.


Q: Я прочитал все вышеперечисленное, теперь я гуру! Что дальше?
A: Дальше переходишь по ссылке, пробуешь отвечать на вопросы и понимаешь, что ты пока в самом начале пути. Кроличья нора крестов практически бездонна, поэтому продолжать постигать тонкости и детали можно очень и очень долго. В то же время, на этом этапе у тебя должно быть достаточно знаний, чтобы уверенно писать неплохой код. Поэтому читай исходники открытого софта и библиотек, отправляй пулл-реквесты в них, читай книжки по предметным областям и общим методикам разработки, а дальше уже сможешь запилить свой проект или вкатиться в существующий.


#2 #798026
Насру первым.
>>798042
#3 #798042
>>798026
Погоди, дай тоже примостить сраку.
#4 #798069
Хаскелобог вкатывается в тред, кого обоссать?
#5 #798075
Сап. Недавно пришлось заново устанавливать вижлу, и во время этого меня заинтриговал пункт по крестам для андроида. Где-то слышал немного про это, но все же. Стоит ли вскрывать эту тему, или забить и для мобильной разработки продолжать учить джаву?
>>798086>>798088
#6 #798086
>>798075
Имхо, если ты выбираешь между крестами и жабой для мобильной разработки с нуля, не зная ни того ни другого, то лучше начать с жабы. Во-первых, в NDK тебе все равно потребуются как минимум базовые знания жабы, потому что там осуществляется активное взаимодействие твоего кода с жабным. Во-вторых, из-за общей заточенности андроида под жабу имеет смысл использовать кресты только когда тебе требуется что-то довольно производительное, типа вычислений или игрового движка. Иначе ты просто будешь воевать со своим инструментом, а код будет состоять из адаптеров к жабным методам.
#7 #798088
>>798075
Но вообще это интересная тема, так что лучше поставить, если есть лишние 5ГБ. Я поставил, все заработало без ебли, отладка на девайсе работает, эмулятор работает.
#8 #798094
Сап, мамкины погроммисты. Нужна помощь, можете обоссать ньюфага.
Проблема следующая, начал 2 дня назад изучать С++, короче при попытке вывести стандартный халоворлд в консоли нихуя не выводится, хотя часа два назад всё выводилось как надо, а щас нихуя... В душе не ебу в чём проблема гуглил нихуя толкого не нашёл, может объяснит кто ссаному ньюфагу в чём проблема?
#include <iostream>
using namespace std;
int main() {
cout << "Nassal nufagy za sheky!\n";
return 0;
}
21 Кб, 686x356
#9 #798097
>>798099
#10 #798099
>>798097
VS Express 2013
[Указанные ниже фреймы могут быть неверны и (или) отсутствовать, символы для kernel32.dll не загружены]
#11 #798108
>>798094
попробуй погуглить и/или добавить #include <windows.h>
>>798117
#12 #798113
>>798094
все, сука, теперь я тебя обоссу.
//ссу
//обоссал
>>798117
#13 #798115
>>798022 (OP)

>крестухи


Разбудил тян и соседей.
>>798116
#14 #798116
>>798115
откуда у тебя тян?
>>798120
#15 #798117
>>798108
>>798094
Решил проблему добавлением строчки system("pause"); вместо "Точки останова" с ней не выводится нихуя.
>>798113
Спасибо, дружок пирожок.
#16 #798118
>>798117
ну ладно, все я не дуюсь
#17 #798120
>>798116
Ты, наверное, будешь смеяться. Познакомился на дваче.
>>798122>>798124
#18 #798121
>>798117
ты хот ь по базовому курсу цпп учишь?
>>798125
#19 #798122
>>798120
ну меня улыбнуло)
#20 #798123
>>798117

> Решил проблему добавлением строчки system("pause");


Ты что ли двойным щелчком запускал консольную программу? Да, крестобляди совсем деградировали.
>>798125
#21 #798124
>>798120
Это не тян, это трап с длинным и толстым хуем.
#22 #798125
>>798121
Бьерн Страуструп
Программирование. Принципы и практика использования C++
По этой книжке начал вкатываться по совету в ОП посте.
>>798123
F5)))))))))))))
>>798133
#23 #798133
>>798125

> F5)))))))))))))


Проверил. Какое же все-таки говно эта студия. В консольных C# приложениях после завершения подставляет pause, а в таких же C++ приложениях - нет.
>>798139
#24 #798139
>>798133

> F5)))))))))))))


>Проверил. Какое же все-таки говно эта студия. В консольных C# приложениях после завершения подставляет pause, а в таких же C++ приложениях - нет.


Ты лалка, Ctrl-f5 нажимай. А вообще, нехуй запускать консольщину из шум. Bash поставь, если линупс не осилил.
#25 #798249
>>797141
Ну, сучечки, жду ваших ответов.
>>798287
#26 #798250
>>797427
Олимпиадники как всегда производят нечитаемый кал вместо кода. Найс.

Тебя уже кто-то обосрал выше по треду же, хуле не исправляешься?
#27 #798255
Анонусы, помогите советом. Хочу написать мат. либу. Проблема в архитектуре. Вот допустим проц поддерживает AVX2. Логично его юзать. Но как мне все это прописывать? Не буду же я тупо ифами проверять.
>>798257>>798409
#28 #798256
>>797857
Правильно, но это не критично.
#29 #798257
>>798255
Зоделой интерфейс с абстрактными операциями, а затем нахуячь наследников с реализациями под разные архитектуры.
#30 #798287
>>798249
Там уже был ответ же.
>>797201
#31 #798409
>>798255
http://man7.org/linux/man-pages/man8/ld.so.8.html#NOTES
Hardware capabilities
Some shared objects are compiled using hardware-specific instructions
which do not exist on every CPU. Such objects should be installed in
directories whose names define the required hardware capabilities,
such as /usr/lib/sse2/. The dynamic linker checks these directories
against the hardware of the machine and selects the most suitable
version of a given shared object.
#32 #798457
Посоны, ASIO добавляют в цэ++17?
СериализацЭЯ будит?
>>798469
#34 #798492
>>798469
Нда, едем на черепахе.
Могли бы уж в какой-нибудь TR занести статическую рефлексию.
Сети из коробки нету. Дичь.
>>798495>>798518
#35 #798495
>>798492

> Нда, едем на черепахе.


Главное, что не туда едем.

> Сети из коробки нету. Дичь.


Дичь была бы если бы она была.
filesystem будет — это дичь.
Всякие сферические функции — дичь.
Отсутствие uhash — дичь
>>798502
#36 #798502
>>798495

>filesystem будет — это дичь.


Таки вы ебанутый, уважаемый?
>>798504
#37 #798504
>>798502
А поцчему ви спгашиваете?
>>798511
#38 #798511
>>798504
Таки я пекусь о здоровье местных постояльцев
#39 #798518
>>798492
Такую сеть, как в boost::asio, я бы и даром не взял. И вообще, это же вам не примитивные смарт поинтеры, которые всем одинаково хороши, тут каждому нужна своя сеть. Кому-то надо низкоуровщину с сокетами, кому-то - пару легких классов как в libcurl, кому-то - монструозную хуйню с continuations типа касабланки... Поэтому подходить надо очень вдумчиво, а не просто тащить всякое дерьмо в стандарт.
>>798560
#40 #798560
>>798518
Ладно, хуй с ней, с этой сетью, что душе угодно, можно нарыть. Однако, где моя рефлексия, когда ее введут блять, я буду сериализовать все классы.
>>798604
#41 #798604
>>798560
запили реализацию в clang, допили существующие пропосалы, вот и появится. Стандарт - это ж некоммерческий opensource, на обычных мимокрокодилах все держится.
>>798675
170 Кб, 640x360
#42 #798675
>>798604

> Стандарт - это ж некоммерческий opensource, на обычных мимокрокодилах все держится.


https://isocpp.org/files/img/foundation-members-2016.jpg
>>798693
#43 #798693
>>798675
Вот уж действительно манямирок. Только у тебя. Если бы организации плотно инвестировали время разработчиков в C++, у нас бы давно был аналог .NET или Swift. Это ясные примеры того, как впрягаются большие компании. А у нас есть полурандомы из гугла, эппла, мс, которые на своей инициативе пилят стандарт. Концепты - 3.5 анонимуса, networking - 3.5 анонимуса, модули - по 5 анонов в гугле и мс. Диапазоны - вообще 1, лол.

Увы, но ты не прав.
>>798722
#44 #798722
>>798693
Не, дотнет-то я ещё понимаю, гигантская платформа на все случаи жизни и тд.
Но что в этом перечислении делает свифт-то? Кусок говна, который меняется со скоростью дорелизного раста и на нём не написано ничего кроме пары гуй-приложунек? даже интерфейсы cocoa и foundation до сих пор ненативные. Так же криво развивался разве что D – только у него не четырёх сотен миллиардов долларов за спиной.

Тут можно привести в пример Go – сам язык говно, но вы понели.
#45 #798725
>>798722

>не четырёх сотен миллиардов долларов за спиной.


Не было
#46 #798730
>>798722

>Так же криво развивался разве что D


Лол, можно узнать, что в нем кривого?
>>798761
#47 #798751
>>798722
Я согласен, что swift как-то ниоче, просто привел его как пример, когда впрягается большая компания. Go можно отнести туда же. А вот D - это как раз хороший пример хорошего языка, на который похуй корпорациям.
#48 #798761
>>798730
2 стандартные библиотеки, вечно молодой, пьяный и меняющийся язык, куча разных компиляторов. До недавних пор кроме DMD не было ни одного полноценно работающего компилятора, поддерживающего хотя бы половину позапрошлого стандарта.

Тот же Брайт только и занимался и занимается тем что коммитит "уменьшение аллокации памяти на 0,7% в функции" вместо развития стандартной библиотеки и инфраструктуры. До срача на, блядь, реддите несколько лет назад бы ужасно текущий GC. Сейчас до сих пор 3 человека не могут сойтись во мнении – сделать всё таки нормальный сборщик, продолжать сосать хуй из-за оверхеда барьеров записи в 1-5% для тех, кто не использует этот самый сборщик при том что язык без него полноценно не работает, или всё таки запилить 2 бинарно несовместимые версии.

Ещё можешь посмотреть за текущий https://wiki.dlang.org/Vision/2016H2 а потом за прошлые года, и посмотреть что же сделали.

Ты серьёзно спрашиваешь что не так с его развитием?
>>798763>>798773
#49 #798763
>>798761

>Тот же Брайт только и занимался и занимается тем что коммитит "уменьшение ал


Для полноты картины: в самом компиляторе, а не кодогенераторе.
#50 #798773
>>798761

>2 стандартные библиотеки


Ясно, понятно. Дальше можно не читать, следующий.
>>798781
#51 #798781
>>798773
А что не так-то? Нюфаг в ди коммунити не верит? Врёти? Или читать не умеем и определять пршедшее время?
Они были одной из главных проблем в развитии языка. То что сейчас она одна – несколько поздновато.
>>798785
#52 #798785
>>798781
После пиздежа про "две стандартные библиотеки" кроме смеха ничего остальное не вызывает. Сразу становится ясно, насколько ты "в теме".
>>798787
#53 #798787
>>798785
Так всё таки читать не умеем, написано же ясно "проблемы в развитии". Прошедшее время, понимаешь?
>>798789
#54 #798789
>>798787
Ну, я меня интересует текущий вариант D - D2. Что там творилось в D1 10 лет назад - меня слабо волнует. На данный момент это охуенный язык с охуенными фичами и охуенной стандартной библиотекой.
>>798796
#55 #798796
>>798789
У тебя серьёзные баги в мозгах видимо.
Всё кроме первого абзаца кстати и к настоящему времени относится, комунити-драйвен язык, все дела. не гори ток

Библиотека там хорошая разве что по сравнению с плюсовой. Паравозик немножко уехал.
>>798798
#56 #798798
>>798796
Но это ты горишь, мань.
Я так понял - у любителей разрабатывать анал крестом - только один аргумент "ГЦ кококо". Интересно, когда его окончательно сделают опциональным - что они тогда кукарекать будут?

>Библиотека там хорошая разве что по сравнению с плюсовой


По сравнению с любой. Она даст на крык крестовой, растовой, жабьей. Кому еще? Кто там остался?
>>798805>>798817
#57 #798805
>>798798
В растовой и плюсовой ничего и нету – только затычки к языку. Про жабную – даже не смешно.

Из разговора о проблем в развитии ты где-то углядел срач о GC и его выпиле. Ну ладно – сходи на старый форум digital mars и полистай его. Обсуждения этой темы с "опциональностью сборщика", его допилом и пр. идут уже не первый и даже не второй год. Если не поленишься получишь картину, что Брайт с компанией за люди, и почему D – долгострой который никогда не построится.

Алсо, у языка так же проблемы с его местом в этом мире – предназначения для него банально нет. На дворе 2к16, и "у нас есть алгол60 и больше нихуя" уже не котируется, даже у самых убогих высеров вроде Говна оно есть.
>>798809
#58 #798809
>>798805

>опять песня про нишу и предназначение

>>798821
#59 #798817
>>798798

>что они тогда кукарекать будут?


Да то же, что и всегда. Нет оценки объективнее, чем оценка комьюнити. Если все голосуют ногами за СТАРЫЕ И ПРОТУХШИЕ КРЕСТЫ, то можно сколько угодно оправдываться и изображать доктора Зло - народ-то не обманешь бенчмарками и сладкими обещаниями.
>>798818>>798822
#60 #798818
>>798817

>аргументы уровня "миллион мух не может ошибаться"


Все и за путина ногами голосуют, следуя твоей логике - он охуенен и пиздат. И айфоны скупают пачками, жрут дерьмо уровня "вы можете зарядить свой телефон только своей зарядкой", и радуются.
>>798826>>798833
#61 #798821
>>798809
Как же заебали D-питухи со своей религией языка, на котором ни одного крупного проекта не написали за 10 лет. Ну сколько можно, а?
>>798822
#62 #798822
>>798817

>Если все голосуют ногами за СТАРЫЕ И ПРОТУХШИЕ КРЕСТЫ


Про звено запаздывания слышал? Если сейчас все кинутся голосовать ногами за другое - результат ты увидишь далеко не сразу.

>>798821
Языку еще нет 10 лет, лол, проекта ему крупного за 10 лет не написали.
#63 #798825
>>798822
Вместе с D1 наберётся. Стандартное "Кококо это разные языки" – всё равно что написать "C++11 и 98 тоже разные языки."
>>798827
#64 #798826
>>798818
Путин вполне себе охуенен в своей нише, и айфоны сделали много хорошего. Это как раз многое о тебе говорит, что тебе главное быть не таким как все. Ну тогда брал бы действительно интересные и прикольные языки, Nim тот же. А D слишком мало отличается от крестов чтобы 1.5 фичи позволяли отказаться от 30-ти летней кодобазы крестов и сорокалетней сишки.
>>798829
#65 #798827
>>798825

>Вместе с D1 наберётся.


Хуле, тогда и кресты вместе с си и би посчитай.
>>798834
#66 #798829
>>798826

>А D слишком мало отличается от крестов


D отличается от крестов методом редизайна и исправления их недостатков.

Кресты тупо унаследовали все костыли сишки. А В наследовать кослыли и пердолинг не стал.
>>798831
#67 #798831
>>798829
Кодобаза > костылей.
#68 #798832
>>798822

>Языку еще нет 10 лет, лол, проекта ему крупного за 10 лет не написали.


Ох, ох, погоди, я и забыл, что ему не 10, а 9 лет. Это действительно многое меняет.
#69 #798833
>>798818

>следуя твоей логике - он охуенен и пиздат


Он успешно справляется с задачами, на которых другие обосрались, точно такая же ситуация с крестами. И в обоих случаях есть раскачивающие лодку неосиляторы, которые пытаются выдать разрозненные попытки перепила за рабочую альтернативу.

>И айфоны скупают пачками


Опять же, айфоны лучше всех справляются с ролью дорогой и статусной игрушки, с которой не нужно пердолиться. Хотя здесь я уже и сам не фанат.
>>798822

>Если сейчас все кинутся голосовать ногами за другое


Кинутся, когда придумают что-то получше. Так было с Фортраном, скинутым с пьедестала, например. И с жабой. Раз не голосуют (а TIOBE не наебешь - не голосуют), значит, пока не придумали. Думайте дальше, господа.

>проекта ему крупного за 10 лет не написали


Ну ничего, мы подождем. А скорость выпуска крупных проектов на крестах спишем на статистические флуктуации.
>>798838
#70 #798834
>>798827
Все проекты на них тоже посчитаю тогда. А ещё алгол можно посчитать – в си же подобный ему синтаксис со скобочками делали, чо уж.
>>798837
#71 #798837
>>798834
ты алгол видел хоть?
>>798841
#72 #798838
>>798833

>точно такая же ситуация с крестами


Хуй там. Ты пытаешься обрисовать ситуацию, как будто кресты были охуенны в свое время и потому взлетели. Хуй там - взлетели они исключительно потому, что была повсюду сишка - а кресты были практически ее надмножеством, макак переучивать не нужно, даже сишная блевотина компилится крестовым компилятором.

Только и всего. Не приписывай крестам имбопиздатость - они просто взлетели паразитируя на популярности си.
#73 #798841
>>798837
Не, я просто написал хуйню твоего размаху.
>>798838

>даже сишная блевотина компилится крестовым компилятором.


Я тебя сейчас разочарую, но в крестах изначально не было кучи сишной хуйни вроде автоматического приведения типов, и нет – не компилировалось.
#74 #798842
>>798838
Это не совсем так. Кресты взлетели по совокупности факторов. Помимо популярности сишки был общий хайп на ООП и, что важнее, общая философия крестов по вбиранию фич и парадигм из других языков. На более мощный язык всегда легче мигрировать, поэтому отбрасывание фич в угоду безопасности или еще какой хуйне это тупиковый путь. Имхо, конечно, а так поживем - увидим.
#75 #798843
>>798838
Кресты были охуенны - Страуструп придумал как сделать симульное ООП эффективным (а симула - это первый ооп-язык, а не хипстерский тормозной смолток, который и тогда был тормозным, и сейчас) с помощью VMT.

>макак переучивать не нужно


Да ты сам тупая макака, но при этом имеешь наглость обвинять программистов, которым не переучиваться нужно, это хуйня, им нужно ПЕРЕПИСЫВАТЬ КОД. Диванные теоретики типа тебя всегда почему-то об этом забывают, что программисты пишут код, пишут кодами, и потом им пользуется, для них кодирование - это пет-проекты длиной по месяцу. Про тебя история. Но нет, все макаки кроме я.
>>798844
340 Кб, 1700x1734
#76 #798844
>>798843
АППЛ-ТО ПЕРЕПИСЫВАЕТ ВЕСЬ КОД НА SWIFT, А ТЫ ВСЕ СИДИШЬ НАД СВОИМ ЛЕГАСИ КАК БАЙБАК
>>798845
#77 #798845
>>798844
У аппла конкурент С++ - Objective C, при чем тут это?
#78 #798846
>>798845
При этом у них самих всё написано на плюсах, кроме гуйги и интерфейсов к библиотекам.
>>798851
#79 #798848
>>798845

>Objective C


Правильнее всё же эту парашу было назвать "Smalltalk-C".
#80 #798851
>>798846
Ты удивишься, но порой и их системные приложения ВНЕЗАПНО написаны на Obj-C++.
>>798853
#81 #798853
>>798851
У меня у самого приложения пишутся на Obj-C++, но не потому что мы так премся от этого языка, а потому что единственный способ взаимодействовать с их гуйней. Но дело не в этом

>Swift может использовать рантайм Objective-C, что делает возможным использование обоих языков (а также С) в рамках одной программы


Т.е. в аппле умные люди сидят, они не заставляют выкидывать кодобазу, а позволяют постепенный переход. А ди требует меня отказаться. Я кстати с одним из разработчиков свифта знаком, крестоблядь как я, мы вместе хуисосили D с ним.
>>798855
#82 #798854
Поясните, нахуя было выдумывать move-семантику, rvalue-ссылки, perfect forwarding и т.д., когда можно было просто запретить автоматические объекты передавать только указатели, как в obj-c?
>>798858
#83 #798855
>>798853

>а потому что единственный способ взаимодействовать с их гуйней.


Сестра, 2 кубика Qt этому больному.
#84 #798856
>>798845
Не при чем, это напоминание о том, что корпорации могут себе позволить переписывание легаси. Таким образом, раз уж не метнулись переписывать все на D, значит, вероятно, дело не только в жестокости мира, а, например, в объективных недостатках D, о которых писал анон выше.
>>798857>>798870
#85 #798857
>>798856

>Таким образом, раз уж не метнулись переписывать все на D, значит, вероятно, дело не только в жестокости мира, а, например, в объективных недостатках D, о которых писал анон выше


Раз не кинулись все переписывать на с++ - тогда дело в недостатках с++.
#86 #798858
>>798854
Передаешь указатель на char - замедляешься в 4 раза.
>>798862
#87 #798860
>>798857

>Раз не кинулись все переписывать на с++ - тогда дело в недостатках с++.


В тот момент и не надо было, можно было просто сделать 'extern "C"' и дополнять легаси на более удобном языке.
#88 #798861
>>798857
Что переписывать? Треть всего существующего кода на крестах, куда уж больше.
>>798863>>798865
#89 #798862
>>798858
Пруфы, пруфчики в студию.
>>798878>>798881
#90 #798863
>>798861

>Что переписывать?


Дохуя чего. Практически все, что написано на сишке, к примеру. Взять то же ведро линупса.
>>798868
#91 #798865
>>798861

>Треть всего существующего кода на крестах


Замеры в студию!
>>798881
#92 #798866
1
#93 #798868
>>798863
Алсо, сейчас это сделать - можно в полуавтоматическом режиме. А если не переписывать, то можно свободно дополнять на C++, но вот только Линус против.
#94 #798870
>>798856
Что самое прикольное - D свои недостатки исправит. А кресты так и останутся парашей, которая компилируется часами, с говном вместо шаблонов и залупой на воротник вместо модульности.
>>798875>>798884
#95 #798871
>>798857
Apple пилят лучший в мире компилятор С++ clang. Наверное им виднее, что нужно писать, а что нет. С++ явно не язык для гуйни в принципе.
>>798873
#96 #798873
>>798871
Только потому, что gcc они не переваривали по причине лицензии.
#97 #798875
>>798870

>А кресты так и останутся парашей, которая компилируется часами, с говном вместо шаблонов и залупой на воротник вместо модульности.


Смешно будет, когда модули и концепты выкатят хотя бы в виде TS (а это будет уже в течении года). Ведь тогда окажется, что C++ от своих проблем избавился и все такой же популярный, а D - тоже без недостатков, только вот нахуй не нужен будет.
>>798879>>799027
#98 #798878
>>798862
Какие тебе пруфы, лалка? Почитай, как устроен стек вызовов, посмотри листинг.
#99 #798879
>>798875

>Ведь тогда окажется, что C++ от своих проблем избавился


От бесконечного времени компиляции и груза обратной совместимости он не исбавится никогда. Все, чего к нему смогут прикрутить сверху - будет прикручено костылями, потому как изначально в языке не предполагалось.

D это как вяленый, а кресты - как X. Придет время - и иксы отправятся на помойку.
>>798883
#100 #798881
>>798862
>>798865
У тебя там ОТРИЦАНИЕ включилось? Не умеешь гуглить или не хочешь?
>>798882
#101 #798882
>>798881
Мань, ты высказал утверждение - тебе его и доказывать. Так я тебе могу сказать, что я ебал твою мамку - опровергнуть ты это не сможешь, а за пруфами я темя в гугл отправлю.
#102 #798883
>>798879

>От бесконечного времени компиляции и груза обратной совместимости он не исбавится никогда


Манька не в курсе, что модули можно использовать уже сегодня и там к тому же инклуды транслируются в импорты на лету для старого кода.
#103 #798884
>>798870
Исправит все - и широкую, ясную
Грудью дорогу проложит себе;
Жаль только, жить в эту пору прекрасную
Не доведется ни мне, ни тебе...
>>798885>>798886
#104 #798885
>>798884
Чай не коммунизм - мне доведется, я не сомневаюсь. Процесс идет.
#105 #798886
>>798884
Раз, два, три, четыре, пять, - с детства с рифмой я дружу
>>798887
#106 #798887
>>798886
Все там нормально с рифмой, только ударение проебано. Фиксится заменой "исправит" на "выправит"
#107 #798889
Как тепло и лампово тут у вас. Зовите почаще этого евангелиста, его полыхание согревает мои старые кости.
>>798893
#108 #798891
D - говно вместо языка.
>>798895>>798896
#109 #798893
>>798889

>Как тепло и лампово тут у вас


Это все потому, что нет лабодаунов.
>>799217
#110 #798895
>>798891
Да этот D даже на говно не похож!
#111 #798896
>>798891

>путин - хуйло

#112 #798898
>>798022 (OP)

>Из Dерьма восстанет


А оп-то тоже ИЗ ЭТИХ.
#113 #798903
Я скоро буду делать масштабный пулл-реквест в шапку, будет клево, если анон вбросит новых книжек по крестам или еще чего-нибудь. Сейчас планирую вкатить Дьюхерста, и еще нашел охуенный свежачок про оптимизацию кода (2016, на ангельском, что-то на уровне Мейерса или даже выше). Еще думал заняться составлением diff для 17 стандарта на человеческом языке, чтобы всякую несущественную хуйню и полностью новые фичи выкинуть, и оставишь мякотку типа изменений в поведении для begin/end и range-based-for, облегчив перекатывание предельно. Если анон желает присоединиться, буду рад.
>>798915
#114 #798915
>>798903

>для begin/end и range-based-for


И в чем здесь мякотка? Очередной сахар. Другое дело static if, string view, fs, fold, concurrent stl.
>>798941>>798957
#115 #798941
>>798915

> Очередной сахар.


> Другое дело string view, fs, concurrent stl


А это блядь, даже не сахар. Это просто апдейт к либам.
235 Кб, 582x600
#116 #798944
Ладно, крестухи. Хватит сраться.
У меня тут жопа горит от стандарта. Пидоры разрешили reinterpret_cast поинтера на standard-layour struct к поинтеру на её первый мембер. А КАСТИТЬ standard-layour class НЕ РАЗРЕШИЛИ, СУКИ.

Теперь из std::type_index указатель на std::type_info легитимно не достать, т.к. std::type_info это class, а не struct, хотя и standard-layout и указатель на std::type_info это его первый и единственный мембер.

Повбывав бы...

Нет, я, конечно, достаю. Но кагбэ это нарушает стандарт.
>>798945>>799271
#117 #798945
>>798944
Почему ты разделяешь понятия class и struct? А вообще для классов так кастить действительно нельзя. Vptr, все дела.
>>798953>>798958
#118 #798953
>>798945

>Почему ты разделяешь понятия class и struct?


Хотел уже ответить, но пошёл перечитывать стандарт:
A standard-layout struct is a standard-layout class defined with the class-key `struct' or the class-key `class'

Тогда проблемы нет, лол.

> А вообще для классов так кастить действительно нельзя. Vptr, все дела.


Я же оговорил, что речь идёт о standard-layout. Кастить разрешено явно:
A pointer to a standard-layout struct object, suitably converted using a reinterpret_cast, points to its initial member (or if that member is a bit-field, then to the unit in which it resides) and vice versa.
>>799271
#119 #798957
>>798915
Я хочу, чтобы был исчерпывающий список мест, в которых стало можно/нужно писать по-другому. Иначе можно через пару лет обнаружить, что, скажем, известные тебе ограничения на if-expression уже давно ослаблены. Или наоборот, что запретили твои любимые триграфы. Понятно, что я сейчас утрирую, но там действительно много подобных "тихих изменений", а во всех гайдах обычно пишут только про самые существенные - новые фичи, расшмрения библиотеки etc.
>>799167
#120 #798958
>>798945
Так а что мешает делать vptr в структуре, лол? Это совершенно ортогональные с layout вещи. По стандарту class и struct отличаются только аспектами доступа.
>>799149
#121 #799027
>>798875

> своих проблем


Вырвиглазного синтаксиса и богатой истории, со стандартом больше напоминающим законодательство какой-нибудь страны? Сомневаюсь.
#122 #799149
>>798958
А кто сказал, что нельзя, лол? Он явно что-то другое имел в виду, говоря структуры. Но если думать о его классах, как об обычных struct/class, то там нельзя кастить указатель на класс на указатель на первый член с помощью reinterpret.
#123 #799167
>>798957
Все уже украдено до нас: http://clang.llvm.org/cxx_status.html
>>799173
17 Кб, 400x400
#125 #799217
>>798893
Ну блин.
лабодаун
#126 #799269
Я смогу после книги Страуструпа написать маленькую програмку (идею уже год вынашиваю), которую действительно можно использовать или меня только числа складывать научат и придётся все самому гуглить?
#127 #799271
>>798944
>>798953
Себя я убедил в том, что стандарт разрешает мне так делать. Интересно, какое мнение у ананасов. Моё утверждение, что следующий код легален:

const std::type_info& extract_type_info(std::type_index index)
{
return ★reinterpret_cast<std::type_info const★ &>(index);
}
#128 #799279
>>799271
Нах тебе вообще rtti сдалось?
#129 #799294
>>799271
А где гарантии, что type_index это standard layout? Я только про копируемость вижу.
>>799312
#130 #799312
>>799294

>А где гарантии, что type_index это standard layout?


Посмотри на его определение в стандарте. Там даже private-мембер определяется.
#131 #799340
Есть две функции, которые отличаются только компаратором в сортировке. Как лучше их объединить в одну?
>>799346
#132 #799346
>>799340
Передавай компаратор аргументом.
>>799349>>799396
#133 #799349
>>799346
А чего не шаблончиком?
>>799354
#134 #799354
>>799349
Шаблоны для параметризации типом.

Или я неправильно понял, чем отличаются компараторы.
>>799355
#135 #799355
>>799354
Разве шаблоны не для чего угодно, что известно при компиляции?
>>799357>>799361
#136 #799357
>>799355
Нет конечно.
>>799360
#137 #799360
>>799357
Взять к примеру дишечный sort - шаблонным параметром можно передать компаратор

sort!((a, b) => cmp(a, b) < 0)(numbers);
sort!("a > b")(array);

Сделай точно так же в крестах (ну, синтаксис будет другой - скобочки угловые вместо восклицательного знака). Разве нельзя? Тут же тоже шаблончики.
#138 #799361
>>799355
Именно что да, передавай шаблоном если не хочешь определять компаратор в раниаймеи не еби мозга.
>>799396
#139 #799365
Норот, в цпп есть map/reduce/filter? Где искать?
А в бусте?
>>799366>>799373
#140 #799366
>>799365

>map


std::transform

>reduce


std::accumulate

>filter


std::copy_if (?)
>>799393>>799397
#141 #799373
>>799365
В буст range есть йоба с пайпами и насколько я помню ленивостью http://www.boost.org/doc/libs/1_46_1/libs/range/doc/html/range/reference/adaptors/reference/filtered.html
Но я бы рекомендовал без нужды типа распараллеливания не увлекаться, range based for ничем не хуже, если ты не ФП-ебанат, конечно.
#142 #799374
>>799271
Я сто лет использую структуры как массивы с именованным членами и проблем не имею.
>>799376>>799382
#143 #799376
>>799374
Знал людей, которые сто лет не инициализируют локальные переменные, собирают только в дебаг-режиме в VS и проблем не имеют.
>>799383>>799384
#144 #799382
>>799374
Ну и мразь же ты, это уже чересчур!
#145 #799383
>>799376
Укажи вариант, при котором это работать не будет, при условии, что структура - POD, и внутри у нее тоже POD, причем одинаковые.
>>799392
sage #146 #799384
>>799376

>людей, которые сто лет не инициализируют локальные переменные


Зачем их инициализировать, если уверен, что ниже они обязательно инициализируются перед использованием?
>>799389
#147 #799387
Завезли какие-нибудь способы сократить буквоговно в сигнатурах функций?

https://ideone.com/TpfQ1Y
>>799390>>799391
#148 #799389
>>799384

> ниже они обязательно инициализируются


В том-то и дело, что не инициализируются.
#149 #799390
>>799387
Уже много лет как.
#150 #799391
>>799387
typedef/шаблоны.
#151 #799392
>>799383
Стандарт говорит нам только про каст к первому мемберу. Про остальные — ХЗ.

Это если формально посмотреть.
>>799401
#152 #799393
>>799366

>>filter


>std::copy_if (?)


Ладно, это не совсем filter, он может только копировать в другой контейнер.

В бусте есть вроде фильтр.
>>799406
#153 #799394
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:245:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'const void ' for 1st argument; take the address of the argument with &
operator<<(const void
__p)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/system_error:209:5: note: candidate function [with _CharT = char,
_Traits = std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to
'const std::error_code' for 2nd argument
operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:108:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to '__ostream_type &()(__ostream_type &)' for 1st argument
operator<<(__ostream_type& (
__pf)(__ostream_type&))
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:117:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to '__ios_type &()(__ios_type &)' for 1st argument
operator<<(__ios_type& (
__pf)(__ios_type&))
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:127:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'std::ios_base &()(std::ios_base &)' for 1st argument
operator<<(ios_base& (
__pf) (ios_base&))
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:166:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'long' for 1st argument
operator<<(long __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:170:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'unsigned long' for 1st argument
operator<<(unsigned long __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:174:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'bool' for 1st argument
operator<<(bool __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:178:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'short' for 1st argument
operator<<(short __n);
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:181:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'unsigned short' for 1st argument
operator<<(unsigned short __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:189:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'int' for 1st argument
operator<<(int __n);
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:192:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'unsigned int' for 1st argument
operator<<(unsigned int __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:201:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'long long' for 1st argument
operator<<(long long __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:205:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'unsigned long long' for 1st argument
operator<<(unsigned long long __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:220:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'double' for 1st argument
operator<<(double __f)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:224:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'float' for 1st argument
operator<<(float __f)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:232:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'long double' for 1st argument
operator<<(long double __f)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:270:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to '__streambuf_type ' (aka 'basic_streambuf<char, std::char_traits<char> > ')
for 1st argument
operator<<(__streambuf_type __sb);
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:502:5: note: candidate function [with _CharT = char, _Traits
= std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to 'char' for 2nd argument
operator<<(basic_ostream<_CharT, _Traits>& __out, char __c)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:508:5: note: candidate function
[with _Traits = std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to 'char' for 2nd
argument
operator<<(basic_ostream<char, _Traits>& __out, char __c)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:514:5: note: candidate function
[with _Traits = std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to 'signed char'
for 2nd argument
operator<<(basic_ostream<char, _Traits>& __out, signed char __c)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:519:5: note: candidate function
[with _Traits = std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to 'unsigned char'
for 2nd argument
operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:556:5: note: candidate function
[with _Traits = std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to 'const char
'
for 2nd argument
operator<<(basic_ostream<char, _Traits>& __out, const char __s)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:569:5: note: candidate function
[with _Traits = std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to
'const signed char
' for 2nd argument
operator<<(basic_ostream<char, _Traits>& __out, const signed char __s)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:574:5: note: candidate function
[with _Traits = std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to
'const unsigned char
' for 2nd argument
operator<<(basic_ostream<char, _Traits>& __out, const unsigned char __s)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:628:5: note: candidate function [with _CharT = char, _Traits
= std::char_traits<char>, _Tp = std::basic_ostream<char>] not viable: no known conversion from '__ostream_type' (aka
'basic_ostream<char, std::char_traits<char> >') to 'basic_ostream<char, std::char_traits<char> > &&' for 1st argument
operator<<(basic_ostream<_CharT, _Traits>&& __os, const _Tp& __x)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/bits/ostream.tcc:321:5: note: candidate function [with _CharT = char,
_Traits = std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to 'const char
' for 2nd
argument
operator<<(basic_ostream<_CharT, _Traits>& __out, const char __s)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:497:5: note: candidate template ignored: deduced conflicting
types for parameter '_CharT' ('char' vs. 'std::basic_ostream<char>')
operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/bits/basic_string.h:5172:5: note: candidate template ignored: could
not match 'basic_string' against 'basic_ostream'
operator<<(basic_ostream<_CharT, _Traits>& __os,
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:539:5: note: candidate template ignored: could not match
'const _CharT
' against 'ostream' (aka 'basic_ostream<char>')
operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT __s)
^
main.cpp:29:46: error: invalid operands to binary expression ('__ostream_type' (aka 'basic_ostream<char, std::char_traits<char> >') and
'ostream' (aka 'basic_ostream<char>'))
std::cout << find (v.begin(), v.begin(), 1) << std::cout;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:245:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'const void
' for 1st argument; take the address of the argument with &
operator<<(const void __p)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/system_error:209:5: note: candidate function [with _CharT = char,
_Traits = std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to
'const std::error_code' for 2nd argument
operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:108:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to '__ostream_type &(
)(__ostream_type &)' for 1st argument
operator<<(__ostream_type& (__pf)(__ostream_type&))
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:117:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to '__ios_type &(
)(__ios_type &)' for 1st argument
operator<<(__ios_type& (__pf)(__ios_type&))
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:127:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'std::ios_base &(
)(std::ios_base &)' for 1st argument
operator<<(ios_base& (*__pf) (ios_base&))
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:166:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'long' for 1st argument
operator<<(long __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:170:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'unsigned long' for 1st argument
operator<<(unsigned long __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:174:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'bool' for 1st argument
operator<<(bool __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:178:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'short' for 1st argument
operator<<(short __n);
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:181:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'unsigned short' for 1st argument
operator<<(unsigned short __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:189:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'int' for 1st argument
operator<<(int __n);
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:192:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'unsigned int' for 1st argument
operator<<(unsigned int __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:201:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'long long' for 1st argument
operator<<(long long __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:205:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'unsigned long long' for 1st argument
operator<<(unsigned long long __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:220:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'double' for 1st argument
operator<<(double __f)
^
#153 #799394
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:245:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'const void ' for 1st argument; take the address of the argument with &
operator<<(const void
__p)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/system_error:209:5: note: candidate function [with _CharT = char,
_Traits = std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to
'const std::error_code' for 2nd argument
operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:108:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to '__ostream_type &()(__ostream_type &)' for 1st argument
operator<<(__ostream_type& (
__pf)(__ostream_type&))
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:117:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to '__ios_type &()(__ios_type &)' for 1st argument
operator<<(__ios_type& (
__pf)(__ios_type&))
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:127:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'std::ios_base &()(std::ios_base &)' for 1st argument
operator<<(ios_base& (
__pf) (ios_base&))
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:166:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'long' for 1st argument
operator<<(long __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:170:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'unsigned long' for 1st argument
operator<<(unsigned long __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:174:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'bool' for 1st argument
operator<<(bool __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:178:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'short' for 1st argument
operator<<(short __n);
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:181:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'unsigned short' for 1st argument
operator<<(unsigned short __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:189:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'int' for 1st argument
operator<<(int __n);
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:192:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'unsigned int' for 1st argument
operator<<(unsigned int __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:201:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'long long' for 1st argument
operator<<(long long __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:205:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'unsigned long long' for 1st argument
operator<<(unsigned long long __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:220:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'double' for 1st argument
operator<<(double __f)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:224:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'float' for 1st argument
operator<<(float __f)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:232:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'long double' for 1st argument
operator<<(long double __f)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:270:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to '__streambuf_type ' (aka 'basic_streambuf<char, std::char_traits<char> > ')
for 1st argument
operator<<(__streambuf_type __sb);
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:502:5: note: candidate function [with _CharT = char, _Traits
= std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to 'char' for 2nd argument
operator<<(basic_ostream<_CharT, _Traits>& __out, char __c)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:508:5: note: candidate function
[with _Traits = std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to 'char' for 2nd
argument
operator<<(basic_ostream<char, _Traits>& __out, char __c)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:514:5: note: candidate function
[with _Traits = std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to 'signed char'
for 2nd argument
operator<<(basic_ostream<char, _Traits>& __out, signed char __c)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:519:5: note: candidate function
[with _Traits = std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to 'unsigned char'
for 2nd argument
operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:556:5: note: candidate function
[with _Traits = std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to 'const char
'
for 2nd argument
operator<<(basic_ostream<char, _Traits>& __out, const char __s)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:569:5: note: candidate function
[with _Traits = std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to
'const signed char
' for 2nd argument
operator<<(basic_ostream<char, _Traits>& __out, const signed char __s)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:574:5: note: candidate function
[with _Traits = std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to
'const unsigned char
' for 2nd argument
operator<<(basic_ostream<char, _Traits>& __out, const unsigned char __s)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:628:5: note: candidate function [with _CharT = char, _Traits
= std::char_traits<char>, _Tp = std::basic_ostream<char>] not viable: no known conversion from '__ostream_type' (aka
'basic_ostream<char, std::char_traits<char> >') to 'basic_ostream<char, std::char_traits<char> > &&' for 1st argument
operator<<(basic_ostream<_CharT, _Traits>&& __os, const _Tp& __x)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/bits/ostream.tcc:321:5: note: candidate function [with _CharT = char,
_Traits = std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to 'const char
' for 2nd
argument
operator<<(basic_ostream<_CharT, _Traits>& __out, const char __s)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:497:5: note: candidate template ignored: deduced conflicting
types for parameter '_CharT' ('char' vs. 'std::basic_ostream<char>')
operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/bits/basic_string.h:5172:5: note: candidate template ignored: could
not match 'basic_string' against 'basic_ostream'
operator<<(basic_ostream<_CharT, _Traits>& __os,
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:539:5: note: candidate template ignored: could not match
'const _CharT
' against 'ostream' (aka 'basic_ostream<char>')
operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT __s)
^
main.cpp:29:46: error: invalid operands to binary expression ('__ostream_type' (aka 'basic_ostream<char, std::char_traits<char> >') and
'ostream' (aka 'basic_ostream<char>'))
std::cout << find (v.begin(), v.begin(), 1) << std::cout;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:245:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'const void
' for 1st argument; take the address of the argument with &
operator<<(const void __p)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/system_error:209:5: note: candidate function [with _CharT = char,
_Traits = std::char_traits<char>] not viable: no known conversion from 'ostream' (aka 'basic_ostream<char>') to
'const std::error_code' for 2nd argument
operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:108:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to '__ostream_type &(
)(__ostream_type &)' for 1st argument
operator<<(__ostream_type& (__pf)(__ostream_type&))
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:117:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to '__ios_type &(
)(__ios_type &)' for 1st argument
operator<<(__ios_type& (__pf)(__ios_type&))
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:127:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'std::ios_base &(
)(std::ios_base &)' for 1st argument
operator<<(ios_base& (*__pf) (ios_base&))
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:166:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'long' for 1st argument
operator<<(long __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:170:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'unsigned long' for 1st argument
operator<<(unsigned long __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:174:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'bool' for 1st argument
operator<<(bool __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:178:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'short' for 1st argument
operator<<(short __n);
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:181:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'unsigned short' for 1st argument
operator<<(unsigned short __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:189:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'int' for 1st argument
operator<<(int __n);
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:192:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'unsigned int' for 1st argument
operator<<(unsigned int __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:201:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'long long' for 1st argument
operator<<(long long __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:205:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'unsigned long long' for 1st argument
operator<<(unsigned long long __n)
^
/usr/bin/../lib/gcc/i586-linux-gnu/5.3.1/../../../../include/c++/5.3.1/ostream:220:7: note: candidate function not viable: no known
conversion from 'ostream' (aka 'basic_ostream<char>') to 'double' for 1st argument
operator<<(double __f)
^
#154 #799396
>>799346
>>799361
Хотелось бы еще скрыть компараторы внутри функции и передавать только какое-нибудь ключевое слово, чтобы было понятно, какой использовать
>>799403
#155 #799397
>>799366
Г-ди в крестопараше куда понятнее имена, чем у фунциональных каргопетушков.
>>799400>>799413
#156 #799400
>>799397
Ну я бы так однозначно не говорил.
#157 #799401
>>799392
Если углубиться, то там вроде бы есть какие-то гарантии про минимальное достаточное выравнивание и последовательность размещения, но это все довольно мутно и неявно, так что я бы просто не стал использовать, чтобы не рисковать.
>>799404>>799422
#158 #799403
>>799396
Так создай классы Cmp1 и Cmp2, с функциями cmp, и юзай как huita<Cmp1>(args); не зню можно ли в таком же кошерном виде передавать функции
#159 #799404
>>799401
static_assert'ы проставь и рискуй.
>>799409
#160 #799406
>>799393
Ну хорошо, remove_if есть (хотя ты и copy_if можешь использовать для тех же целей, там допустимы пересечения коллекции-источника с коллекцией-приемником).
#161 #799407
Смотрите, во втором вызове find я передаю пустой диапазон: хотя оба итератора указывают на существующий элемент, но в терминах библиотеки этот диапазон пуст, потому что правая граница не включается. Надо ли добавлять отдельную обработку случая равенства итераторов, чтобы результат такой оказии был корректным?

https://ideone.com/6Jtihz
#162 #799409
>>799404
И что в них писать, лол? Нет, я допускаю, что можно придумать монструозную ебалу, которая это проверит на основе существующих недоконцептов, но нахуя, если это в итоге принесет выигрыш в несколько символов всего.
>>799416
#163 #799410
>>799407
А сейчас в чём проблема?
#164 #799412
>>799407
Нет, все в порядке. Только разыменовывать этот итератор нельзя в общем случае, если там может быть end ().
sage #165 #799413
>>799397
Просто ты питуз. Эти имена в ФП пришли из математики и старше твоих крестов.
>>799415>>799418
#166 #799414
>>799407
И вообще, зачем ты пишешь свой find?
У тебя почти тот же код, что в http://en.cppreference.com/w/cpp/algorithm/find Possible implementation
>>799425
#167 #799415
>>799413

> Эти имена в ФП пришли из математики и старше твоих крестов.


Давайте пользоваться римскими, а не арабскими числами тогда. Они старше.
>>799417>>799427
#168 #799416
>>799409

>И что в них писать, лол?


Размер структуры и размер массива совпадают. По стандарту компилятор паддинг может добавлять куда угодно, но на практике ни один компилятор этого не делает.
>>799420
#169 #799417
>>799415

>числами


*цифрами
>>799421
#170 #799418
>>799413
Ну все, начинаем общаться в терминах трудов Лейбница, а то всякие современные петухи напридумывали новых названий, аж слушать противно.
#171 #799420
>>799416

> По стандарту компилятор паддинг может добавлять куда угодно


Что, стандарт совсем не накладывает ограничений сверху?
>>799422>>799435
#172 #799421
>>799417
Цифры это числа
#173 #799422
>>799420
Вот я и говорил >>799401, что вроде бы там есть ограничения на паддинг, но они мутные какие-то и хорошенько запрятаны. Явного утверждения ЗАПРЕЩЕНЫ ЛИШНИЕ ДЫРКИ там нет.
#174 #799423
>>799421

>символы - это строки


Питухонщик, плес
>>799428
#175 #799424
#176 #799425
>>799414
А я просто с итераторами разбираюсь.
>>799429
#177 #799427
>>799415
Позиционные системы счисления удобнее для использования в жизни и программирования. Битовые сдвиги бы не работали с римской системой. А то, что петушкам непонятно, что такое отображение списка или дерева, это их проблемы.
#178 #799428
>>799423
Тащемта, он прав. Любая цифра это число, но не наоборот.
>>799431
#179 #799429
>>799425
Почему find возвращает bool, а не iterator? это какой-то exists, а не find.
>>799432
#180 #799431
>>799428
Эдак и любая точка - это отрезрок
>>799603
#181 #799432
>>799429
Возврат итератора как раз в следующей задаче :3
#182 #799434
>>799421
Число это последовательность цифр. Даже если последовательность из одной цифры, то это последовательность цифр (== число), а не цифра.
#183 #799435
>>799420

>Что, стандарт совсем не накладывает ограничений сверху?


Нет, архитектуры CPU ведь могут быть произвольной ебанутости.
>>799456
#184 #799456
>>799435
std::max_align_t
>>799466
#185 #799466
>>799456
Паддинг от алайна не зависит по стандарту. Стандарт задает только порядок членов структуры в памяти, но расстояние между ними может быть произвольное.
>>799532
#186 #799532
>>799466
Таки да. Не нашёл ничего конкретного про паддинг, что что-то бы гарантировало.
#187 #799603
>>799431
Точка это компакт, она замкнута.
>>799606
#188 #799606
>>799603

>Точка это компакт


Это сленг. Тут имеется в виду множество из одной точки.
#189 #799640
Есть объявленный, но не определенный вектор. В конструкторе класса мне нужно изменить размер этого вектора и проинициализировать его элементы данным значением. Как это сделать кратко без присвоения вроде v = std::vector(n, val)?
>>799644
#190 #799644
>>799640

>Есть объявленный, но не определенный вектор.


Это называется "default constructed", а не так, как у тебя.

>>799640

> изменить размер этого вектора и проинициализировать его элементы данным значением.


std::fill_n(std::back_inserter(v), n, val);
>>799653>>799669
#191 #799653
>>799644

>default constructed


initialized

self-fix
#192 #799669
>>799644
Неоптимально же. resize (n, val) лучше, ну или хотя бы сделать reserve сперва, иначе лишние аллокации возможны.
>>799672
#193 #799672
>>799669
Гм. Я думал, что resize всегда дефолтным значением заполняет.

Тогда да, resize
#194 #799694
Как std::set может работать как очередь с приоритетами? Оно же реализовано на красно-черном дереве, а бинарные деревья поиска это не кучи. Говорят, что если set хранит пары, то внутри пары упорядочены по первой координате.
>>799733
#195 #799733
>>799694
С чего ты взял, что могут?
>>799742
#196 #799742
Анон, что не так с моей реализацией Дейкстры? https://ideone.com/gOgS0z

>>799733
Вот здесь говорят, что set можно использовать как очередь с приоритетами.
http://cybern.ru/algoritm-dejkstry-dlya-razrezhennyx-grafov-realizaciya-na-c.html
#197 #799747
>>799742
Нахуя, если есть priority_queue? Какие-то петухи ставят костыли, а ты и рад проглотить. Читай Седжвика лучше, няша.
>>799753
#198 #799748
>>799742

> while(0);

>>799750
#199 #799750
>>799748
Кстати да, у нас за такое убивают нахуй. Родина дала им for(;;), итерируй! Не хочу, хочу жрать предупреждения.
>>799752
#200 #799751
>>799742
Новая версия моего элитного кода и отладочный высер:

https://ideone.com/wciskr
>>799764
#201 #799752
>>799750
Ты не понял.
#202 #799753
>>799747

>Читай Седжвика лучше, няша


Я Кормена читаю, а реализации гуглю в интернете. Попадается лютое говно.
133 Кб, 1278x794
1086 Кб, 1156x850
#203 #799760
>>799742
Не читай этого Василия, он неправильно юзает std::set. Просто потому, что в интерфейсе set'а никакого поведения, похожего на очередь с приоритетами, и близко не планировалось. Также его код говно нечитаемое.

Более того, я очень сомневаюсь, что его код рабочий, но я ебал в рот сидеть и проверять эту поебень.

На пикриле ты можешь увидеть, как должен выглядеть хоть немного понятный код.

Алсо, я не понимаю, нахуя ты лазишь в интернет, когда у Кормена все написано просто заебись (пикрил2).
>>799770
230 Кб, 1448x1078
#204 #799764
>>799751
Говно нечитаемое. Нахрен ты лепишь туда макросы, когда ты пишешь ебаный поиск кратчайших путей? Я ебал читать. Визуализация - говно. Слишком нагружено и непонятно. Осиль dot или просто печатай пошагово результирующий массив.
Можно видоизменить граф для большей наглядности(храни буквенные идентификаторы), должно получится, как на пикриле.

И еще - осиль тесты.
>>799771
22 Кб, 555x256
#205 #799770
>>799760
У меня в Кормене алгоритм так записан. Какое-то подзалупное говно с расходом памяти на очередь с приоритетами, содержащую все ребра. Пацаны говорят, что достаточно добавлять по одному ребру в очередь. К тому же у него слишком высокая декомпозиция алгоритма на отдельные функции. Если писать так, как у Кормена, то придется передавать в функцию relax ссылку на очередь. Это слишком грязно.

Когда все хранится в разных областях видимости, такую идеальную декомпозицию без грязи не сделать.
>>799774>>799778
#206 #799771
>>799764

>И еще - осиль тесты


Что по тестам читать?
335 Кб, 1294x1248
#207 #799774
>>799770
Во-первых, нахуя ты полез в серьезную литературу, если ты, блядь, не шаришь ебаный алгоритм дейкстры? Тебя не смущает то, что тебе сложно читать "Построение и анализ"?

Начни с чего-нибудь попроще. Например, с пикрила. Тоже Кормен, но написано намного проще, легче будет вкатиться. Когда осилишь, сможешь легко перекатиться на старшего брата этой книги.

По тестам почитай введение http://www.boost.org/doc/libs/1_61_0/libs/test/doc/html/boost_test/intro.html
Чтобы просто начать тестировать. Потом сам найдешь что-нибудь посложнее.
#208 #799778
>>799770

>Пацаны говорят, что достаточно добавлять по одному ребру в очередь


Можно и так.

>К тому же у него слишком высокая декомпозиция алгоритма на отдельные функции


Его декомпозиция совершенна.

>Если писать так, как у Кормена, то придется передавать в функцию relax ссылку на очередь. Это слишком грязно.


Не кукарекай, умник. Сперва реализуй алгоритм самостоятельно и, самое главное, правильно. А потом будешь оптимизировать.
>>799779>>799780
#209 #799779
>>799778

>Его декомпозиция совершенна.


Не спорю, алгоритм хорош, но на мою реализацию он не ложится. Не знаю, как вообще получить опыт реалиазации алгоритмов такого же качества, если получается говно.
>>799787
#210 #799780
>>799778

>Не кукарекай, умник. Сперва реализуй алгоритм самостоятельно и, самое главное, правильно. А потом будешь оптимизировать


Я умею проделывать этот алгоритм на бумажке, писал реализацию без очереди с приоритетами, а сейчас хочу разобраться в эффектином варианте Дейкстры. Если его писать на фибоначчиевых кучах, сложность алгоритма вообще достигает теоретического минимума.
>>799787
#211 #799787
>>799779

>но на мою реализацию он не ложится


Измени реализацию?

>>799780

>писал реализацию без очереди с приоритетами


Щито? Ты писал не алгоритм Дейсктры. Его Дейкстра не с потолка взял - в его основе лежат определенные идеи, которые безальтернативно приводят к необходимости очереди с приоритетами. Вопрос лишь в том, как будет реализована очередь с приоритетами: через массив, бинарную кучу или фибоначчиеву кучу.

Так что твой алгоритм никак не изменится от замены одной реализации очереди на другую.
>>799789
97 Кб, 665x826
#212 #799789
>>799787

>Ты писал не алгоритм Дейсктры


Тогда что это? http://e-maxx.ru/algo/dijkstra

Алсо, почему на пикче раннеры идут к вершинам, к которым идти не нужно? Или они там от балды натыканы? Алгоритм Дейкстры ведь жадный, он на каждой итерации выбирает ребро наименьшего веса. Судя по пикче, там происходит что-то другое.
>>799791>>799805
#213 #799791
>>799789

>Алсо, почему на пикче раннеры идут к вершинам, к которым идти не нужно? Или они там от балды натыканы?


Мда.
>>799795
#214 #799795
>>799791
Алгоритм выбирает ребро наименьшего веса. Следующая итерация начинается с конечной вершины этого ребра. Точно так же ищется самое оптимальное на этом этапе решение, и следующая итерация начинается с самой близкой вершины. Что не так? На картинке явно не это.
>>799804
#215 #799804
>>799795
По-моему, картинка вполне соответствует алгоритму.
37 Кб, 570x260
#216 #799805
>>799789

>Тогда что это? http://e-maxx.ru/algo/dijkstra


Алгоритм Дейкстры с очередью с приоритетами. На пикриле можно увидеть основную операцию очереди с приоритетами.

>Алсо, почему на пикче раннеры идут к вершинам, к которым идти не нужно?


Боженька не велит? Хуле не нужно-то, алгоритм не видит граф так же как ты.

>Алгоритм Дейкстры ведь жадный


Бля, заканчивай гнать умные слова. Впечатление ты на АиБ ни на кого не произведешь. Жадность алгоритмов тебе никак не объяснит, что происходит у Дейкстры. По крайней мере, пока.
>>799808>>799809
#217 #799806
Алсо эта книжка есть на русском.
#218 #799808
>>799805

>Жадность алгоритмов тебе никак не объяснит, что происходит у Дейкстры


Вполне себе объясняет. Там на каждом шаге делается оптимальный выбор.
>>799817
#219 #799809
>>799805

>Алгоритм Дейкстры с очередью с приоритетами. На пикриле можно увидеть основную операцию очереди с приоритетами


Нет, это хуйня, а не очередь с приоритетами. Очередь нужна для извлечения ребра наименьшего веса за O(1), а по ссылке и на пикче - брутфорс. Пиздец наркоманы.
>>799819
52 Кб, 600x600
#220 #799817
>>799808

>Вполне себе объясняет. Там на каждом шаге делается оптимальный выбор.


Ну раз объясняет, то расскажи нам тогда, в чем СУТЬ?
>>799820>>799822
175 Кб, 500x480
#221 #799819
>>799809
Блядь, вот это кадр к нам занесло, пиздец просто.

>Очередь нужна для извлечения ребра наименьшего веса за O(1)


Охуительные истории. Ты бы хоть книжки умные почитал, перед тем, как такую хуйню постить.
>>799822
#222 #799820
>>799817

>СУТЬ


Ты из Герцена, что ли? Какую-то суть в алгоритмах ищешь.
>>799823
#223 #799822
>>799817
На каждой итерации выбираешь ближайшую вершину. Если метку этой вершины можно улучшить, то улучшаешь, делаешь записи в массив, и такие же действия повторяешь для вершины, ближайшей к текущей.
>>799819
Именно так. Очередь с приоритетами нужна для того, чтобы элемент с наибольшим или наименьшим приоритетом извлекать за O(1).
>>799827
#224 #799823
>>799820
Лолка, а ты думаешь все алгоритмы выдумают просто так? Типа раз и догадался? Лал.
#225 #799827
>>799822

>На каждой итерации выбираешь ближайшую вершину


Почему ближайшую? А не, например, дальнюю. Или посередине. Или первую. Ты тупо пересказываешь алгоритм, а я спросил, почему он выглядит именно так, а не иначе.

>Именно так. Очередь с приоритетами нужна для того, чтобы элемент с наибольшим или наименьшим приоритетом извлекать за O(1).


Бля, ну залезь и почитай, заебал. O(1) - это время лучшей реализации такой очереди, но саму очередь определяют 2 операции: доступ к минимальному элементу и вставка. Вполне можно придумать ситуацию, когда константное время вставки элемента будет предпочтительнее, чем константное время изъятия. И в такой ситуации лучше будет применить очередь, основанную на массиве.
>>799832
#226 #799832
>>799827

>Почему ближайшую? А не, например, дальнюю. Или посередине. Или первую


Потому что для каждого кратчайшего пути к какой-то вершине любая последовательность ребер в этом пути - тоже кратчайший путь. Поэтому выбираются ближайшие вершины, которые входят в кратчайший путь.
#227 #799843
Завтра буду писать так, как у кормена: класть сразу все ребра в очередь и вынимать по одному.
Помогите разобраться, что у меня здесь не так? https://ideone.com/pFZd13
Алгоритм работает верно: перед выполнением std::replace данные в distances правильные. std::replace должен заменить все значения INF = MAX_INT на -1, но почему-то алгоритм заменяет все подряд элементы на -1.
>>799850>>801433
#228 #799844

>Кормена

#229 #799850
>>799843
Офигеть, перед возвратом вектор содержит правильные значение, а из функции возвращается вектор со значениями INT_MAX. Как это получилось?

https://ideone.com/fg4vlu
>>799858
#230 #799858
>>799850
Просто ты лалка
https://ideone.com/Ye8wWU
>>800025
#231 #800001
Вот скажите мне любители выделять и освобождать память почему Firefox не в состоянии работать больше суток без необходимости перезапуска? Каждый день у меня наступает момент, когда открыто 0 вкладок, а Firefox занимает в памяти 3 Гб. Каждый день наступает момент, когда Firefox перестает адекватно рендерить страницу. И наконец в этом году случилось совершенно небывалое — Firefox свалил шиндовс в кернел мод краш.

У разработчиков Firefox было 22 года (с момента выхода первого Netscape Navigator), чтобы научиться правильно выделять и освобождать память и они так и не научились это делать нормально. Самописный мемори аллокатор не помогает:
https://hg.mozilla.org/mozilla-central/file/tip/memory/mozalloc/mozalloc.cpp

Может быть проблема в самих крестах?
>>800008
#232 #800008
>>800001
Может быть, проблема в том, что необучаемые за 22 года так и не вышли за пределы C с классами?
#233 #800025
>>799858
Я не пони. Как ты сделал так, что возвращеный вектор стал содержать корректные значения? Я уже дифф сделал, но нихуя непонятно, почти ничего не изменилось же. Как так перед возвратом в векторе одни значения, а после возврата - другие?
>>800043
#234 #800043
>>800025

>Я не пони. Как ты сделал так, что возвращеный вектор стал содержать корректные значения? Я уже дифф сделал, но нихуя непонятно, почти ничего не изменилось же. Как так перед возвратом в векторе одни значения, а после возврата - другие?


Лолка, у тебя там счетчик j в for, а используешь i
#235 #800078
Отхуесосьте мой код и скажите, как улучшить структуру класса: https://ideone.com/FhnKiV

Изменения:
1. Для краткого определения очереди создал класс node с перегруженным оператором сравнения. Теперь очередь применяет упорядочивание элементов, зная, как их сравнивать.
2. Названия поле класса node более удобны, чем first и second. Не нужно вспоминать: в first вес ребра или номер конечной вершины.
3. Единообразие данных, используемых в представлении графа и его обработке: если в списках смежности хранятся пары (вершина, вес), то в очереди координаты пар расположены тоже в порядке (вершина, вес).
4. Небольшой недостаток использования класса node: надо помнить про порядок инициализации полей.
5. Для декомпозиции алгоритма Дейкстры все ребра сразу помещу в очередь. Это избавит от необходимости помещать ребро в очередь в коде релаксации, и процедуру релаксации можно написать отдельно.
6. Блок private выглядит как говно. Как научиться писать такие же красивые классы, как тут? https://rsdn.ru/forum/cpp/4243140.all
>>800082
#236 #800082
>>800078
И еще:

>Graph::result


Graph::result result = g.dijkstra(...) выглядит как говно, если не использовать auto. Стоит ли вообще использовать в этом классе typedef?
5 Кб, 454x143
#237 #800206
Какую функцию библиотеки можно использовать вместо этого велосипеда? Нужно вывести элементы вектора, начиная с первого и пропустив элемент с индексом start. Приходит в голову только что-то вроде фильтра или map, который получает предикат, не позволяющий добавить в возвращаемый список элемент с номером start.
>>800249>>800390
#238 #800249
>>800206
http://ideone.com/8rae98
как-то так, но for (...) лучше
>>800262
#239 #800253
СРОЧНО
Как лучше найти элемент который чаще всего встречается в векторе?
>>800257
#240 #800257
>>800253
запихай элементы в std::multimap и потом через count получай количество вхождений каждого
>>800258
#241 #800258
>>800257

>> std::multiset

#242 #800262
>>800249
Говно какое-то без замыканий.
http://ideone.com/S1F7D1
>>800264>>800266
#243 #800264
>>800262

> 2016


> ostream_iterator


Все чёткие пацаны переехали на experimental::ostream_joiner
>>800267
#244 #800266
>>800262
ты в лямбды не научился, не захватил значение `start`, нужно его в квадратных скобках написать, а если ты хочешь выкидывать элемент по его индексу, то сделай так:
http://ideone.com/zHkkZL
но так делать не очень хорошо, по сути
#245 #800267
>>800264
VC++ 2013 не может в перемещающие операции, какой там нахуй экспериментал, не думаю, что даже в 2015 версии такое есть
>>800268
#246 #800268
>>800267
Я вообще думаю, нафига в C++ столько ненужного дерьма было понапихано.
Вот неполный список:
- wchar_t
- локали
- ostream_iterator
>>800276>>800316
#247 #800276
>>800268
Что бы о модулях сидеть пиздеть 10 лет и так ни к чему не придти.
>>800268

>- локали


>- ostream_iterator


Что бы можно было сказать что "мы над чем-то там работаем, у нас нихуя не говёная стандартная библиотека" примерно ту же болезнь унаследовали авторы ди от авторов плюсов, лел
#248 #800287
Есть массив пар. Как у них быстро first и second местами поменять?
>>800288>>800296
#249 #800288
>>800287
XORSWAP
>>800291>>800293
#250 #800289
Сап ребят, такой вопросик. Можно ли на плюсах написать полноценное андроид приложение? Или все таки правда на плюсах писать онли тогда, когда нужен выигрыш в производительности. Очень лень учить Java только ради андроида. Сяп.
>>800294>>800298
#251 #800291
>>800288
пример кода можно?
#252 #800293
>>800288
в смысле swap не сработает т.к. make_pair нужен
#253 #800294
>>800289
NDK читай, там должно быть многое, но на яве проще.
>>800298
#254 #800296
>>800287
Всё спасибо сам разобрался
#255 #800298
>>800289
Там абсолютно нечего учить.

Именно гуй приложение разве что на Qt, вот только хуй знает, стоит ли свеч ебля с разными билдами под разные процессоры, большим размером от зависимостей и, самое главное, ебля с публикацией в маркете.
>>800294
Не пиши хуйни, там вообще ничего нету для "полноценного приложения".
>>800299
#256 #800299
>>800298
короче бля, легче java выучить, чем ебаться с плюсами?
#257 #800316
>>800268
С каких пор локали перестали быть нужными?
ostream_iterator был еще в оригинальной реализации i/o потоков.

А вот про wchar_t я не знаю. Поясните мне. Насколько я понял, он нужен, если мы хотим хранить юникод, поддерживающий несколько языков одновременно. Какие альтернативы?
>>800325
#258 #800325
>>800316

>С каких пор локали перестали быть нужными?


С таких, что для них ничего не гарантируется. Только наличие локали "С". Какой смысл вносить в стандарт entity, для которой не предоставляется никаких гарантий? Как писать переносимый код с этим?

> ostream_iterator был еще в оригинальной реализации i/o потоков.


Кому нужен вывод с delimeter-ом после последнего элемента?

> Насколько я понял, он нужен, если мы хотим хранить юникод


wchar_t хранит не юникод, а он достаточен для хранения некоего расширенного набора символов для данно платформы. Т.е. опять же, по сути ничего не гарантируется.

По мне так wchar_t и прочие локали только сбивают с толку. С ними невозможно написать переносимый код, хотя кажется, что для переносимости они добавлялись.
>>800330
#259 #800330
>>800325

>Кому нужен вывод с delimeter-ом после последнего элемента?


Да не ебу, просто нельзя говорить, что эту хуйню запилили вместо модулей. Я вообще этой поеботой из итераторов и алгоритмов почти никогда не пользуюсь. Нахуй на каждый чих они зоделали функций, я не ебу.
>>800331
#260 #800331
>>800330

> нельзя говорить, что эту хуйню запилили вместо модулей.


Я вообще что-то говорил про модули?! о_О

> Я вообще этой поеботой из итераторов и алгоритмов почти никогда не пользуюсь.


Скорее всего, зря.
#261 #800333
Как обфусцировать код без потери производительности?
>>800336>>800359
#262 #800336
>>800333
Название какой-нибудь простенькой проги скажите.
>>800344>>800359
#263 #800344
>>800336
Чтобы из консоли работала и быстро.
>>800359
#264 #800358
Пишу в истерике, выручай, анон! Пишу тебе прямиком из двухтысячных! Не компилитсо, однако, если поставить "::MY_RESULT"(намекая на глобальную область видимости?) то компилится. Алсо в моем времени компилился и без двойных двоеточий. Делал свои потуги под VS2015
Код тут: http://pastebin.com/x1N2tSub
>>800371>>800373
#265 #800359
>>800333
>>800336
>>800344
Продолжу вопрос этого хуя. Насколько сильно обфускаторы влияют на генерацию ассемблерного кода? Так можно обходить сигнатурные анализаторы?
>>800379
#266 #800371
>>800358

>typdef

#267 #800373
>>800358
насчет очепятки с typedef`ом. тут все ок, это я просто пьяненький был, когда писал. так шо ошибка актуальна.
#268 #800376
>>798022 (OP)
Хелп! Как завершить поток ввода в консоли windows 10? Ctrl-Z не помогаетвыводит ^Z, enter тоже.
>>800378
#270 #800379
>>800359
На кой хуй вообще обфусцировать исходный код, если при одинаковой логике конечный ассемблерный код не будет отличатся?
>>800381
#271 #800380
>>800378
Ну бля(
#272 #800381
>>800379

>На кой хуй вообще обфусцировать исходный код


Я думаю этот все тот же дебил, что уже неделю спамит своим фейк.av. Вероятно его поделие после нескольких тредов в /b уже добавили в базы и теперь он ищет обфускатор.
#273 #800390
>>800206
А зачем? Разве через if не проще и быстрее написать? Да и код понятней, не?
лабодаун
#274 #800396
Начал разбираться в QT. Не знаю, есть ли тут соответствующий тред, так что вкатываюсь сюда.
1. Что такое макрос Q_OBJECT, как он работает, и зачем нужны свойства Q_PROPERTY, если они работают как геттеры и сеттеры, которые и так делаются public?
2. Почему это говно не компилится? http://pastebin.com/jnH961E3
Ошибки:
In function Test:
undefined reference to 'vtable for Test'
In function ~Test:
undefined reference to 'vtable for Test'
#275 #800397
>>800396

>bool isReadValue() const


Уже поправил на isReadOnly. Не помогло.
#276 #800406
>>800396
После изменения Test test; на Test tst():
Test tst();
tst.setProperty("readOnly", true);

Ошибка:
request for member 'setProperty' in 'tst', which is of non-class type 'Test()'

Что тут не так? Из-за отсутствия скобок программа не компилировалась, я так понимаю, потому, что компилятор Qt не поддерживает 11 стандарт, в котором конструктор преобразования с аргументом по умолчанию может работать как дефолтный конструктор.
>>800412
#277 #800407
>>800396

>QT


Мамке своей это скажи, капслоковый мудель.

>Q_OBJECT


Открой и посмотри. Добавляет соответствующий для Qt контент в класс.

> Q_PROPERTY


А вот хуй знает, но для них что-то генерирует мок-компилятор.
#278 #800412
>>800406

>что компилятор Qt не поддерживает 11


Какой ещё компилятор Qt, дурындель?
>>800420>>800424
#279 #800420
>>800412

>Какой ещё компилятор Qt


MetaObjectCompiler?
>>800447
#280 #800424
>>800412
Который я прописал в настройках (MinGW).
#281 #800426
Ненавижу qt т.к. кресты не тот язык на котором можно писать гуи и сделал он для великих дел, а не кодинга мышью. А софтвар дефлоперы самые менее опущенные из всех зашкварных программистов. Раньше десктоп был на дэлфи и дэлфидаунов за программистов не считали. Потом появился дотнет и сишарп. Они почему-то перестали считаться зашквареными, но десктоп остался работой для тупых. Кресты не для тупых. Qt не для крестов.
>>800436
66 Кб, 247x248
#282 #800436
>>800426

>Кресты не для тупых


Напиши-ка решение дискретной задачи о рюкзаке на нумералах Чёрча, Манька.
#283 #800447
>>800420
Он к компилятору плюсов не относится никак.
#284 #800457
>>800396
Пиздец. Оказывается, все дело в том, что QT ссу в рот капсохейтеру заставляет определять классы в хедерах. Если класс определен в файле имплементации, все это почему-то не будет компилироваться.
>>800470
17 Кб, 815x225
#285 #800463
Ого, то есть из-за последнего private после появления Q_OBJECT в сорусе необходимо ставить public, если это нужно.
>>800470
#286 #800470
>>800463
1) Q_OBJECT ставится в самом начале.
2) Классы по умолчанию и так приватны, вась.
>>800457
Ссу в рот твоей мамаше, проверяй.
>>800475
#287 #800475
>>800470

>проверяй


Что проверять-то, обезьяна мемасная?
>>800478
#288 #800478
>>800475
У собаки проверяй.
#289 #800488
>>800436
Нумералы Черча не полны по Тьюрингу, маня.
>>800491>>800496
#290 #800491
>>800488

>Чёрча


>по Тьюрингу


Ух как байтодебила понесло.
>>800637
#291 #800496
>>800488
Вроде полны.

http://neerc.ifmo.ru/wiki/index.php?title=Лямбда-исчисление

> На основе этого всего уже можно реализовать эмулятор машины тьюринга



>>800436
А кресты тут при чём?
>>800637
#292 #800507
Почему у меня все вылетает, когда я вывожу массив типа char c \0 в конце?
>>800510
#293 #800510
>>800507
Разобрался, уебываю.
#294 #800521
ПОясните тупому ньюфагу что не так?
Почему у меня всегда выводит число 2, а должно, вроде бы, выводить квадраты дальше.
>>800524
10 Кб, 423x549
#295 #800524
>>800521
Ой, пик забыл.
>>800532
45 Кб, 838x247
7 Кб, 582x264
#296 #800527
>>798022 (OP)
Посоветуйте, как можно код улучшить. Мне кажется, я хуево написал. Это задачка из Страуструпа. По задумке вводятся 2 числа и один символ. Числа потом выводятся, а если символ равен |, то консоль закрывается.
Хотелось бы, чтобы третий символ не обязательно было вводить, а еще лучше, чтобы | можно было вместо одного из чисел ввести и ввод прекратился бы. Конкретно непонятно, как проверить тип данных, которые поступают из cin.
http://pastebin.com/e5JAXf8h
>>800573>>800578
#297 #800532
>>800524
А ты сам можешь объяснить что делает твоя программа? По шагам каждую строчку расскажи.
>>800533
118 Кб, 581x310
#298 #800533
>>800532
Точно, забыл про задание. Я задание по страуструпу делаю - пик.
Хотел пока сделать так, чтобы до 1000 выводились квадраты по порядку.
>>800538>>800542
#299 #800538
>>800533
На программу свою посмотри. Прочитай блять каждую строчку.
>>800539
#300 #800539
>>800538
Я там отдельно функцию вынес - sqr.
Суть в том, что в цикле идёт обращение к этой функции, в которой если
- square = 1, то прибавляется 1
- если != 1, то умножается на самого себя
Только я не пойму почему не работает.
>>800544
#301 #800542
>>800533
Из одной главы задачи решаем, ахуеть. Только ты дальше продвинулся.
#302 #800544
>>800539
В функции не нашёл ошибку? Тогда расскажи что в мэйне делаешь.
>>800553
#303 #800553
>>800544
Инициализирую square, потом в цикле беру функцию sqr из square. Я не пойму, почему в функции sqr не увеличивается square.
>>800561
#304 #800561
>>800553

>почему в функции sqr не увеличивается square.


А он есть в твоей функции? У тебя там s
>>800570
#305 #800570
>>800561
В функции вроде не обязательно чтобы имена совпадали, нет?
Я заменил s на square - всё равно не работает.
>>800571>>800604
#306 #800571
>>800570
Это значит ты не правильно описал что в мэйне происходит. Заново расскажи.
>>800583
#307 #800573
>>800527
Бамп. Я тоже комментарий хочу
#308 #800578
>>800527
Тупое условие. Не понимаю чего он хочет. Есть авторское решение?
>>800594
23 Кб, 480x480
#309 #800583
>>800571
Я не понимаю. Почему-то функция не работает.
>>800585
#310 #800585
>>800583
Думаешь функция не работает? Тогда проверяй её ещё раз.
>>800587
11 Кб, 466x450
#311 #800587
>>800585
Вот, упростил, но не понимаю. Должно же выводить 1, 2, 3 етц.
А оно мне бесконечную 2 выводит.
>>800592>>800618
#312 #800592
>>800587
Может ошибка не в функции? Мэйн прочитай. Каждуй строчку поясни.
>>800593
#313 #800593
>>800592
Иницизализирую square и rice_count, потом цикл:
до тех пор пока квадрат <= счёт_риса ТО:
вывести функцию квадрата

функция просто +1 делает
>>800597>>800599
#314 #800594
>>800578
Нет походу. Во введении написано, что на сайте есть решения избранных задач. Но я там нифига найти не могу.
http://www.stroustrup.com/programming.html
>>800602
#315 #800597
>>800593
Всё происходит так как ты описал. А как должно быть?
>>800601
4 Кб, 407x518
#317 #800601
>>800597
НУ так и должно быть, а вывод просто число 2 ббесконечно.
#319 #800603
Напомните литературу про сетевое проганье на языке богов.

???
#320 #800604
>>800599
Он понимает их отличия. Вот в этом посте это сказал. >>800570
#321 #800607
>>800602
4-я. У меня задание 1, а там вообще только упражнения.
#322 #800618
>>800587
добавить в параметрах функции перед s амперсант, и будет тебе выводить 1, 2, 3 етц.
>>800672
#323 #800622
>>800436
Ты путаешь ум и задротство.

Впрочем, кресты — это тоже в какой-то степени задротство.
>>800636
#324 #800636
>>800622

>Ты путаешь ум и задротство


Сказал петушок, не приводя определения "ума". Когда спорят, например, ученые, они сначала договариваются о терминах, чтобы каждый понимал, о чем точно они спорят. Вот поэтому ты петушок. И все крестухи такие же петушки
>>800638>>800642
#325 #800637
>>800496
Лямбда-исчисление != нумералам Черча. Это все равно что сказать, что раз кресты полны, то числовые литералы тоже.
>>800491
Ну ты словарь-то открой, должно полегчать.
#326 #800638
>>800636

> Когда спорят, например, ученые


Ну так ты не учёный, а хуй мочёный.
>>800645
#327 #800639
НЕ
КОРМИТЕ
ЛАБОДАУНА
>>800659
#328 #800642
>>800636
Определения "петушка", "ученых" и "определения" в студию, маня. Не, ну серьезно, я, конечно, понимаю, что маневрирование помогает психологически, когда нет аргументов, но мы же твои приемы насквозь видим, лучше бы занялся чем-нибудь полезным и не нервничал лишний раз.
55 Кб, 500x667
#329 #800645
>>800638
Я АВТОР СТАТЕЙ, ДОКЛАДОВ И МОНОГРАФИЙ
>>800647>>800648
#330 #800647
>>800645
Ссылки на препринты.
>>800651
#331 #800648
>>800645
Или на proceedings.
#333 #800659
>>800639
Запушил QWORD тебе в рот.
#334 #800672
>>800618
А что этот амперсанд делает, что без него не работало?
>>800676>>800680
#335 #800676
>>800672
Амперсанд называется "зделать заебись". Если что-то не работает, ставишь его.
>>800694
#336 #800680
>>800672

>>>800599


вот тебе анон скинул ссылочку, прочитай раздел "Передача параметров по значении и по ссылке", а вообще лучше все прочитай. Удачи.
#337 #800694
>>800676
проиграл, спасибо.
>>800696
sage #338 #800696
>>800694
С тобой никто не играл.
337 Кб, 1698x1404
#339 #800761
>>800651
На острие науки, хуле.
>>800769
#340 #800769
>>800761
Обтекай, старпёр.
#341 #800771
Анон, дай совет. Хочу сохранить и проанализировать большой объем данных. Я тут небольшой рассчет накидал, нужны какие-то технические рекомендации.

Условно разделим этот список данных на юниты, каждый из которых состоит от 2 (минимально необходимое) до 4 (оптимальное). Соответственно очень грубо посчитал примерное количество символов в строке и пришел к выводу, что там будет где-то 80 байт, но досыпал ещё чуток.
Если один юнит этого списка весит 150 байт, предположив, что это усредненное значение, а количество юнитов будет около 100000000, то передать нужно будет 15000000000 байт информации.
Если предположить, что скорость передачи данных будет около 20 Mbps, то на один юнит будет уходить по 0.0572205 ms.
За один запрос, который, надеюсь, будет проходить за 0.5 секунды мы можем вытащить до 6000 юнитов. Передать 6000 юнитов, как мы посчитали выше, займет 343.323 ms.
Другими словами, 1000 ms - 343 ms - 500 ms = 157 ms.

А сюда ещё надо добавить выгрузку данных в базу, учесть провисание сети многое другое. Теоретически можно повысить пропускную способность в два раза, что сэкономит ещё ~150 ms, однако обработка массива данных должна уложиться в 200 ms. базу данных хочу Clickhouse использовать, ибо разработчики заявляют нихуевый такой перформанс.

Что такое обработка? Приходит огромный массив от нескольких кб до нескольких мб. Около 7-8 полей, которые нужно распарсить (JSON), конвертировать в csv формат и записать на диск. (все поля не нужны)

Концептуально я пока думаю работать так:
Накапливать в ОЗУ большой объем данных, сохранять в csv файл, сжимать его архиватором и передавать в базу, где доступ к данным можно уже будет в риалтайме получать. Однако насколько какой-нибудь List/Array/etc эффективен для этого? Как организовать многопоточность в таком случае? И опять же, сохранять файлы на диск. Если есть SSD и сохранять по 50-100 mb, то не должно же сильно сказаться на производительности?

Другой вопрос на каком языке это все писать. В спешке писал на Java, ибо там все из карбоки, но использовал другую схему. Request -> обработка -> передача в очередь -> обработка -> сохранение данных. Однако скорость дохуя медленная. Обработка одного блока данных из 4 тысяч юнитов занимала порядка 3.7 секунды, что бесконечно много для такой операции. Можно устранять избыточность запросов к БД, создать адекватное соединение, но моя гипотеза такова, что я не смогу организовать работу серьезно быстрее.

Собственно, поэтому такие вопросы.
- Многопоточность. Как оптимально организовать доступ к очереди?
- Объем данных. Когда и как писать в файл?
- Технологии. Может быть я не знаю что-то не знаю\не знаком, что позволит быстро переваривать большой объем данных и сохранять его.
- Советы. Опять же, может быть я что-то воспринимаю не так или не совсем корректно понимаю. Рад выслушать все рекомендации.
#341 #800771
Анон, дай совет. Хочу сохранить и проанализировать большой объем данных. Я тут небольшой рассчет накидал, нужны какие-то технические рекомендации.

Условно разделим этот список данных на юниты, каждый из которых состоит от 2 (минимально необходимое) до 4 (оптимальное). Соответственно очень грубо посчитал примерное количество символов в строке и пришел к выводу, что там будет где-то 80 байт, но досыпал ещё чуток.
Если один юнит этого списка весит 150 байт, предположив, что это усредненное значение, а количество юнитов будет около 100000000, то передать нужно будет 15000000000 байт информации.
Если предположить, что скорость передачи данных будет около 20 Mbps, то на один юнит будет уходить по 0.0572205 ms.
За один запрос, который, надеюсь, будет проходить за 0.5 секунды мы можем вытащить до 6000 юнитов. Передать 6000 юнитов, как мы посчитали выше, займет 343.323 ms.
Другими словами, 1000 ms - 343 ms - 500 ms = 157 ms.

А сюда ещё надо добавить выгрузку данных в базу, учесть провисание сети многое другое. Теоретически можно повысить пропускную способность в два раза, что сэкономит ещё ~150 ms, однако обработка массива данных должна уложиться в 200 ms. базу данных хочу Clickhouse использовать, ибо разработчики заявляют нихуевый такой перформанс.

Что такое обработка? Приходит огромный массив от нескольких кб до нескольких мб. Около 7-8 полей, которые нужно распарсить (JSON), конвертировать в csv формат и записать на диск. (все поля не нужны)

Концептуально я пока думаю работать так:
Накапливать в ОЗУ большой объем данных, сохранять в csv файл, сжимать его архиватором и передавать в базу, где доступ к данным можно уже будет в риалтайме получать. Однако насколько какой-нибудь List/Array/etc эффективен для этого? Как организовать многопоточность в таком случае? И опять же, сохранять файлы на диск. Если есть SSD и сохранять по 50-100 mb, то не должно же сильно сказаться на производительности?

Другой вопрос на каком языке это все писать. В спешке писал на Java, ибо там все из карбоки, но использовал другую схему. Request -> обработка -> передача в очередь -> обработка -> сохранение данных. Однако скорость дохуя медленная. Обработка одного блока данных из 4 тысяч юнитов занимала порядка 3.7 секунды, что бесконечно много для такой операции. Можно устранять избыточность запросов к БД, создать адекватное соединение, но моя гипотеза такова, что я не смогу организовать работу серьезно быстрее.

Собственно, поэтому такие вопросы.
- Многопоточность. Как оптимально организовать доступ к очереди?
- Объем данных. Когда и как писать в файл?
- Технологии. Может быть я не знаю что-то не знаю\не знаком, что позволит быстро переваривать большой объем данных и сохранять его.
- Советы. Опять же, может быть я что-то воспринимаю не так или не совсем корректно понимаю. Рад выслушать все рекомендации.
#342 #800772
>>800771

>небольшой рассчет

>>800774
#343 #800774
>>800772
Да-да, знаю, что он пиздец антинаучный и уровня /b, но я тупой, как пробка.
>>800779
#344 #800779
>>800774
И я там кажется обосрался. Уже сам не знаю, как считать. Короче, у меня цель - один блок информации в секунду. От запроса к серверу до выгрузки в базу данных.

Один блок информации - от 1 до 6000 юнитов. Вариативность объема юнита от 4 байт до 70 байт (по оптимистичном расчету) и до 150 байт (по грустному расчету)
>>800784
#345 #800784
>>800779

>Один блок информации - от 1 до 6000 юнитов. Вариативность объема юнита от 4 байт до 70 байт (по оптимистичном расчету) и до 150 байт (по грустному расчету)


К сожалению, вайпнул всю информацию. Могу лишь сказать, что в среднем на блок информации - 1000 юнитов. Да, долбоеб, не посчитал моду, например. Про объем юнита просто в голове прикинул. Могу ошибаться, так как у меня при сохранении некоторых юнитов в бд были сообщений о том, что varchar(256) превышен, что пиздец странно.
#346 #800788
Нахуй ты считаешь средний вариант, если нужно брать максимальный?

И еще объясни, ты хочешь в реалтайме принять данные по сети, сконвертировать и сохранить на диск, а обрабатывать ты уже будешь потом?
>>800791>>800806
#347 #800790
>>800771
Почему не взять юниты большего размера? У тебя узкое место в скачивании данных? Его же никак не ускорить.
>>800806
#348 #800791
>>800788
Похоже конвертирование у него и есть обработка.
>>800806
#349 #800797
>>800771

>- Многопоточность. Как оптимально организовать доступ к очереди?


Уверен это распространённая проблема и статьи экспертов помогут тебе больше чем советы с двача.
>>800806
#350 #800806
>>800788
Максимальный = 6000 юнитов на блок. Необработанный юнит может весить и по 1 кб, обработанный = 150 байт, так как извлекаются всего 2 поля.
>>800790
Нет, у меня есть идея, как увеличить пропускную способность: сжать документ, найти канал шире. Узкое место скорее всего тут исключительно в обработке данных.

Насколько эффективно записывать блоки данных сначала в ОЗУ, а потом в файл?

>>800791
Схема такая:
1. Ответ->пишем в массив нужные поля->пишем в файл.
2. Сжимаем файлы
3. Загружаю их на сервер бд
4. Расжимаю
5. Пишу в БД.

>>800797
Зашел сюда чисто по старой памяти. Очень мило общались с Qt господином. Да и к тому же, анон частенько дает дельные советы.
>>800816
#351 #800816
>>800806

>Схема такая:


У тебя 20мбит потока данных всего, нафиг ты хочешь сжимать, а, шакал? Я более чем уверен, что ты добьешься нужной производительности и на своем проекте на джаве, просто нужно запустить профайлер и посмотреть, где оно тормозит.

Торрент-клиенты и 500мбит могут выдавать, твоя задача очень скромненько смотрится на их фоне.
>>800817
#352 #800817
>>800816
Хорошо, а подход вообще целесообразен? Просто мой предыдущий подход, который мне казался наиболее оптимальным (запрос->обработать->очередь->отправить в бд->сохранить в бд) брал почти по 3.7 секунды на блок, что пиздец, как много.
>>800823
#353 #800823
>>800817

>запрос->обработать->очередь->отправить в бд->сохранить в бд


А типа есть другие варианты, лол?

>брал почти по 3.7 секунды на блок


Для таких проблем умные люди придумали профайлер. Может у тебя там менеджер памяти дохуя времени тратит, а все остальное ходит быстро. Тогда тебе просто нужно пул данных заебенить и все будет круто.
>>800829
#354 #800829
>>800823

>А типа есть другие варианты, лол?


Очередь у меня была в облаке, поэтому может быть и задержка была - sqs. Второй обосрамс, что я видимо сделал крайне хуевый десериалайзер и сериалайзер json объектов. В итоге у меня один блок дважды парсится, бля. Наверное, в облако стоит тупо только обработанный юнит отправлять без обертки.

Мой же вариантименно генерить большой файл на стороне обработчика, а потом его сразу передавать на сервер, можно сжать.

Ладно, хотя бы теперь яснее стало, пока все описывал. Попробую на Java дописать, а там может и на крестах.
>>800834
#355 #800834
>>800829

>Очередь у меня была в облаке, поэтому может быть и задержка была - sqs


Почему у тебя очередь и парсер на разных тачках? Ты планируешь масштабирование?
>>800842
#356 #800842
>>800834
Да. Парсеров может быть дохуя.
>>800845
#357 #800845
>>800842
Олсо, я нигде не могу найти вменяемых бэнчей (ага, потому что не знаю, что гуглить). Вдруг Java дохуя медленная будет для этой задачи.
>>800857
#358 #800855
MZ
#360 #800863
>>800857
Бля, ну профайлер - это заебись, но я бы хотел посмотреть, например, как себя ведут те или иные типы данных vector vs. x и т.д. Выгугли библиотеку, которая json парсит. Выбрал правильно, пока читал - понял, что говном занимаюсь.
Если описать алгоритм подробнее.
Запрос-ответ=>кидаю внутреннему воркеру в отдельный тред=>вытаскиваю данные=>упаковываю опять в нужный json=>отправляю в очередь=>ловлю в очереди=>распаковываю=>отправляю в бд.
В общем, действительно прихожу к выводу, что нужно во-первых, оптимизировать парсер json, срать не в облако, а себе в ФС, а потом погонять профайлером.
#361 #800879
Посоны, я нашел зеркало того двача: http://peid.has.it
#362 #801179
Можно ли при помощи EFLAGS определить, что программа находится под эмулятором? Например, при помощи popfd изменяется значение какого-то привилегированного бита в EFLAGS, исключение обрабатывается эмулятором, но реальное значение в процессоре не изменяется. Тогда, читая EFLAGS и сравнивая его значение с ожидаемым, можно ли определить эмуляцию?
#363 #801202
>>801179
Ты заебал, лалка. Твою поделку в любом случае вскроют быстрее, чем очко твоей мамаши, понимаешь ты это?
>>801209>>801420
#364 #801209
>>801202
Ты не того детектишь, петушок. Меня удивляет, вообще, что форс Куранина настолько серьезным. Думал сначала, что кто-то траллит или распространяет криптолокер, а там, похоже, действительно самодельный антивирус. Пацаны его даже реверсили.
>>801210
#365 #801210
>>801209
Я ничего не говорил про Куранина, а вот ты спалился, петух.
>>801221
#366 #801213
http://pastebin.com/GVyrtZwz

Почему этот heap-based Prim's Minimum Spanning Tree algorithm не работает?
>>801216
#367 #801216
>>801213
Потому что это не heap-based prim's minimum spanning tree algorithm.
#368 #801221
>>801210
Но ты говорил это вчера, рустерок.
>>801223
#369 #801223
>>801221
Может и не я.
>>801224
#370 #801224
>>801223
А может и ты. К чему эти нелепые отговорки? Стыдишься чего-то, петушок?
#371 #801229
Я вчерашний кун, что 2 выводил бесконечно в функции.
Я всё понял.
#372 #801248
Как правильно сравнить вектор int со списком int? Писать функцию, сравнивающую пары элементов?
>>801294
#373 #801262
https://ideone.com/1P9gsV - поясните, какое сделать условие в цикле, чтобы там еще 1 раз цикл прошёл после выполнения условия?
Т.е. в задаче надо сделать так, чтобы последнее отображение было после 1000, а у меня получается до неё.
#374 #801268
Взял короче книжку по крестам из шапки, которая референс от Страуструпа и которая устаревшая, и это, ебать там всё СЛОЖНА. Даже всякие жабы и шарпы полегче будут. Хотя это конечно с какой-то стороны хорошо, ибо программирование сугубо интеллектуальная деятельность вроде математики, САМОРАЗВИТИЯ СУПЕР ИИ ТЕХНОКРАТИЯ, но с другой стороны я не завидую вкатывающимся охранникам 27 лет из пятерочки, у них мозги взорвутся и они с большой вероятностью выкатятся обратно, кек.
#375 #801274
>>801268

>Взял короче книжку по крестам из шапки, которая референс от Страуструпа и которая устаревшая, и это, ебать там всё


Читал какого-то Стравуструпа в 15 лет, когда дрочил на вирасы и журнал ксакеп. Понимание какой-то сложности не представляло. Архитектура пека гораздо сложнее синтаксиса и библиотеки петушиных крестов.
#376 #801275
>>801268
Не сложно, а не твое. Тебе программирование неинтересно просто.
>>801282
#377 #801282
>>801275
Не было бы интересно - не лез бы.
#378 #801294
>>801248
std::transform (std::begin(v), std::end (v), std::begin (l), std::back_inserter (res), std::less);
#379 #801296
>>801268
Попробуй ангельскую версию же. Она не устарела и не зашкварена отвратительным имхо какого-то русского старпера, поэтому читается легче.
>>801298
#380 #801298
>>801296
Хорошо. Больше не буду лезть с тупыми постами.
И вдогонку. Сложность это то, что добавляет шарм и магию, возбуждает интерес. Простые вещи быстро приедаются.
#381 #801334
>>801179
При чём тут C++-тред? Больше негде насрать?
>>801337
#382 #801337
>>801334
Асмотред-то утонул, а у сишников сидят какие-то поехавшие и дрочат на синтаксис.
>>801415
#383 #801338
Есть ли у окон приложений (не игр) fps?
>>801358>>801631
#384 #801358
>>801338
Конечно. Сколько раз в секунду они обновляют результирующее изображение
#385 #801403
Как без сторонних библиотек получить какие-нибудь уникальные данные компа? Типа дата установки биоса или серийный номер жётского диска.
>>801407>>801501
#386 #801407
>>801403
Забыл сказать что прога на винду.
>>801501
#387 #801415
>>801337
Сишники не могут дрочить на синтаксис, там ~50 ключевых слов.
Если хочешь посмотреть на реальное задрачивание синтаксиса и неочевидной хуйни, ты на месте.
#388 #801420
>>801202
А что, он малварь пишет?

Почему бы на чистом С не делать, нахуя тебе кресты для этого?
#389 #801427
>>799742
Проиграл с дауна. Мимо 2000+ рейтинга на кодефорсес
>>801432>>801433
363 Кб, 854x940
#390 #801429
Проиграл с этого школьника.
3079 Кб, 1366x768
#391 #801431
Ананасы, как в Qt сделать контейнер для других виджетов, который будет просто задавать фон? В deisgner-e использовал QFrame и ставил бэкграунд колор, но через код этот QFrame нихуя не показывается.
Пикрелейтед - как я сделал в designer-e. Фрэйм с белым бэкграундом и парочкой label в нем.

вот код, который не работает:
http://pastebin.com/uZv2tUQs
>>801465
#392 #801432
>>801427
А ты не только проигрывай, а еще объясняй, что не так и как исправить.
>>801435
#393 #801433
>>799843
http://acm.timus.ru/problem.aspx?space=1&num=2093
Вот сюда вот отправляй

все тот же классный парень >>801427
#394 #801435
>>801432
Моя последняя работающая реализация такая: https://ideone.com/O1ziGq
#395 #801465
>>801431
Заменил QFrame на QWidget - все работает.
#396 #801473
Устанавливаю с++ на винду по этой инструкции http://www.biosoft-m.ru/Установка_GNU_C_(gcc)_для_Windows_(MinGW)
Но мне не хватает некоторый хейдеров. string.h stdlib.h. Жалуется что не может их найти поэтому не компилирует мой хэлоуфорд. Как их все установить?
#397 #801501
>>801179
>>801403
>>801407
Бесполезно, дружочек, бесполезно.
>>801505
#398 #801505
>>801501
Первый пост не мой. Я уже код написал. http://pastebin.com/KTEhj139 Виндой давно не пользовался и не могу туд компилятор установить. >>801473
Помоги
#399 #801506
>>801473

>устанавливаю C++


Ты небось забыл установить интернет и гугл.
>>801509
#400 #801509
>>801506
Это шутка такая.
1150 Кб, 1066x1066
websocket #401 #801522
Такое дело. Пишу вебсокет сервер. Handshake прошёл без проблем, данные с клиента тоже получаю норм, но при отправке на клиента строки AAA, конверчу её в 129:3:62:62:62, после чего добиваю пробелами \r\n\r\n и шлю в сокет. В ответ клиент сука рвёт соединение с ответом header invalid. Сижу над tcpdump-ом третий час. Rfc весь перелопатил
Анон-погромист, выручай!
>>802235
#402 #801554
Чем посоветуете генерировать доку к коду?
>>802319>>802355
40 Кб, 720x480
#403 #801577
- Ну ты у меня такого рантайма получишь, суканах. Иди сюда! Собирайся! Собирайся в бинарник! Отвечай, говори. Все эти макросы, шаблоны у тебя в исходниках или в хэдерах. А эти ассерты... Эти ассерты!!! Все ваша блядская архитектура, проделки Александреску. Собирайся в бинарник, ибо стандартизация уже близко! Стандартизация.... Раскрывай пачки. Раскрывай пачки, сука! Смотри что я из-за тебя делаю, на компоновку!!!
- Тебе нравятся мои методы, да?
- Да!
- А мне нравятся предупреждения!
- Все кому нравятся предупреждения - говнокодеры!!!
- Мне нравится, как они подсвечиваются...
- СУКАНАХ!!!
- Нравятся ошибки...
- Суканах!
- Нравится крашиться...
- Суканах!
- Я люблю костыли...
- СУКАНАХ!
- Я хочу костыль, я знаю, что тебе тоже нравится... Я знаю, что тебе нравится, что я хочу костыль... Тебе нравятся мои макросы, мне тоже. А еще мне нравятся нестандартизованные фичи...
- Суканах!
- Хочу неопределенное поведение! Я так хочу!
- А я не хочу!
- Хочешь почувствовать мои баги своим отладчиком? Хочешь?
- Сучка, ты сводишь меня с ума, заткнись! Ты испорчена! Тебе нет места в памяти!
- Я чувствую, тебе нравится... Ты сходишь с ума от моей скорости...
- Я оптимизирую тебя.
- Ты оптимизируешь меня? О как прекрасно, обожаю оптимизации, и тебе тоже понравится. Обожаю cstdlib, обожаю ассемблерные вставки... Вот это да! Этот профайлер, он сводит тебя с ума... Видишь, он тебе нравится, и я тебе нравлюсь. Перепиши меня, это же так естественно... Нравится? Ведь нравится. Быстрее... Быстрее!
- Ты настоящая сука!
- Собирай релизную версию... Вот молодец...
- Что ты задумала?!!
- Чудненько, а теперь посмотри на размер моей кучи...
- Суканах!!!
- Мне так нравится...
- Нет, а если я добавлю памяти? Нет! Сука, блядь, дедлайн близок... Ах ты сука! Ты меня совращаешь, блядская сука, СУКА!!! Сука... Знаешь, что бывает с такими суками? Знаешь? Их запускают под valgrind'ом, запускают без отладки!
- О да, виртуализуй мой процесс! Как это прекрасно... Трассировка это прекрасно, вдвигай поглубже, глубже, в библиотеки...
- Получай, сука! Вот тебе за все хорошее! Нравится, сука? Вот тебе статический анализ! Я отправляю коммит!!!
- Пора бы...
- Смотри, сука! Иди сюда... Смотри! Смотри, что ты наделала! Это ты виновата...
40 Кб, 720x480
#403 #801577
- Ну ты у меня такого рантайма получишь, суканах. Иди сюда! Собирайся! Собирайся в бинарник! Отвечай, говори. Все эти макросы, шаблоны у тебя в исходниках или в хэдерах. А эти ассерты... Эти ассерты!!! Все ваша блядская архитектура, проделки Александреску. Собирайся в бинарник, ибо стандартизация уже близко! Стандартизация.... Раскрывай пачки. Раскрывай пачки, сука! Смотри что я из-за тебя делаю, на компоновку!!!
- Тебе нравятся мои методы, да?
- Да!
- А мне нравятся предупреждения!
- Все кому нравятся предупреждения - говнокодеры!!!
- Мне нравится, как они подсвечиваются...
- СУКАНАХ!!!
- Нравятся ошибки...
- Суканах!
- Нравится крашиться...
- Суканах!
- Я люблю костыли...
- СУКАНАХ!
- Я хочу костыль, я знаю, что тебе тоже нравится... Я знаю, что тебе нравится, что я хочу костыль... Тебе нравятся мои макросы, мне тоже. А еще мне нравятся нестандартизованные фичи...
- Суканах!
- Хочу неопределенное поведение! Я так хочу!
- А я не хочу!
- Хочешь почувствовать мои баги своим отладчиком? Хочешь?
- Сучка, ты сводишь меня с ума, заткнись! Ты испорчена! Тебе нет места в памяти!
- Я чувствую, тебе нравится... Ты сходишь с ума от моей скорости...
- Я оптимизирую тебя.
- Ты оптимизируешь меня? О как прекрасно, обожаю оптимизации, и тебе тоже понравится. Обожаю cstdlib, обожаю ассемблерные вставки... Вот это да! Этот профайлер, он сводит тебя с ума... Видишь, он тебе нравится, и я тебе нравлюсь. Перепиши меня, это же так естественно... Нравится? Ведь нравится. Быстрее... Быстрее!
- Ты настоящая сука!
- Собирай релизную версию... Вот молодец...
- Что ты задумала?!!
- Чудненько, а теперь посмотри на размер моей кучи...
- Суканах!!!
- Мне так нравится...
- Нет, а если я добавлю памяти? Нет! Сука, блядь, дедлайн близок... Ах ты сука! Ты меня совращаешь, блядская сука, СУКА!!! Сука... Знаешь, что бывает с такими суками? Знаешь? Их запускают под valgrind'ом, запускают без отладки!
- О да, виртуализуй мой процесс! Как это прекрасно... Трассировка это прекрасно, вдвигай поглубже, глубже, в библиотеки...
- Получай, сука! Вот тебе за все хорошее! Нравится, сука? Вот тебе статический анализ! Я отправляю коммит!!!
- Пора бы...
- Смотри, сука! Иди сюда... Смотри! Смотри, что ты наделала! Это ты виновата...
#404 #801631
>>801338
Нет, они же не перерисовывают постоянно.
>>801720
#405 #801637
>>801473
Бамп
>>801638
sage #406 #801638
>>801637

> Данная информация предназначена только только для IT-специалистов по системной интеграции модулей БИОСОФТ-М.

>>801640
#407 #801640
>>801638
Похуй должно быть. mingw везде одинаковый. Как его блять устанавливать?
#408 #801642
>>801640
Сейчас бы в 2016 в доки не уметь
http://www.mingw.org/wiki/Getting_Started
>>801643
#409 #801643
>>801642
Да мне всего пару хейдеров надо. Как из докачать?
sage #410 #801644
>>801640
mingw обычный вроде не в моде сейчас. Везде mingw-w64.

Можешь попробовать поставить его через MSYS2.
>>801645
#411 #801645
>>801644
Окей. А как поставить msys2?
>>801647>>801652
sage #412 #801647
>>801651
#413 #801651
>>801647
На установке инструкция кончается. Что потом?
>>801653
sage #414 #801652
>>801645
Только запускай не msys-shell, а mingw-w64 shell если хочешь подключать виндовые хедеры.
#416 #801685
>>801640
Ставь TDM-GCC, будет тебе счастье.
>>801687>>801690
#417 #801687
>>801685
А что это? Там winapi есть?
sage #418 #801690
>>801685
Ты ещё djgpp посоветуй.
#419 #801720
>>801631
Ну так и fps не 120, лалка.
30 Кб, 593x545
#420 #801925
Поясните, вот я как бы почти решил задачку: https://ideone.com/a7Ze4y
НО, если я ввожу большие числа, например 1000000, то там начинается бесконечное непонятно что - пикрил.
Я правильно понял что это из-за того, что int имеет ограничение на размер? Если так - как его обойти, если не так, что я не так сделал? С маленькими значениями работает ок.
>>801928>>801962
#421 #801928
>>801925
int замени на long long. И вообще, почитай про типы в C++.
>>801931
#422 #801931
>>801928
Сдела лонг лонг,
с 1 000 000 000 работает
с 1 000 000 000 0 не работает
А как сделать чтобы работало? Или это уже продвинутый уровень?
>>801938
#423 #801938
>>801931
использовать длинную арифметику..
#424 #801948
Сап крестаны, вообщем припекло. В универе были лабы, которые я с переменным успехом мог выполнить, а сейчас лето, решил что-нибудь написать и понял, что той базы, что мне дали нихуя не хватает, что я не могу нихуя годного написать, что мне делать?
Профа у меня нихуя не прогерская, т.е. на след курсе мы будем делать проги для подсчёта интегралов, а никаких новых курсов по проге не будет. Прочитать книгу с более глубоким подходом к изучению и опять сосницкого сделать? Что мне делать?
>>801959
#425 #801959
>>801948
ну блять, определись, что именно ты хочешь написать и двигайся.. просто гугли. программист, не использующий гугол - !программист.
>>801962
1632 Кб, 1000x563
#426 #801962
>>801959
Я не он, но я хочу писать игры.
>>801925-кун
Сначала доизучаю книгу страуструпа, а дальше будут смотреть в сторону дума первого.
Хочу сделать что-то типа своего дума с открытым миром, рпг и т.д. с такой графикой.
>>801970
#427 #801970
>>801962
игры делаются так:
1. пишется движок. там определяется физика, хуйня с графикой разная, ну и т.п. Нужны знания с++(на чем-нибудь другом напишешь или напишешь, но хуево - твое говно будет лагать), тригонометрии, как выводить графику и еще там чето я хз.
2. на самом движке создается игра. тут все уже намного легче, потому что почти никаких знаний и не надо.

если тебя интересует первое, то просто выучи синтаксис, а потом почитай что-нибудь специализированное. там и про оптимизацию и про матчасть должно быть.
если второе, то просто выучи синтаксис.
#428 #802015
Анон, очень странный таск.
В общем, нужно посчитать как можно быстрее количество строк в файле (должно быть не более 1 048 576 строчек).

Но погоди отправлять меня в учебник по С++. Суть в том, что я не знаю, как это сделать эффективнее. В целом задача стоит так:
Объединить огромное количество файлов, каждый из которых может состоять из 0-6000 строк в файлы по 1 048 576.

Как бы самое очевидное - нужно тупо создавать новый файл, при достижении 1 048 576 строк сохранять его и проходить так по всем файлам.
Другой вопрос, что найти в каждом файле "\n" дохуя долгая задача, как мне кажется. Какие есть варианты решения?
Пока что я вижу только такио решение:
1. Создать вектор
2. Открыть первый файл
3. Записывать в вектор все строки.
4. При достижении i = 1048576 сохраняем вектор в файл, возвращаемся к пункту 2.

Есть ещё варианты, как сделать быстрее?
#429 #802019
Так, посоны, короче. Есть Visual Studio 2013, с++11 стандарт уже вышел, но в чем соль, в MSVC 2013 я заметил, что не работают:
перемещающие копирование и присваивание по-умолчанию
constexpr
Это пиздец...
>>802034
#430 #802022
>>802015
зачем в вектор, если максимальное кол-во строк уже задано?
std::array<char, 1048576>
>>802025
#431 #802025
>>802022
Строка где-то от 70 до 150 байт занимает.
А ты, если я правильно понял, предлагаешь создать массив из 1048576 элементов? Плюс ещё данные терять бы не хотелось.
#432 #802026
>>802015
Зачем вектор? Просто делай fread(), если счетчик не переполнился fwrite().
#433 #802032
>>802015
считывай в буферный массив 4+-2 мегабайт, затем из буферного массива в выходной файл.
>>802070
112 Кб, 800x572
#434 #802034
>>802019

>Есть Visual Studio 2013, с++11 стандарт уже вышел


>2016


>C++17


>Visual Studio 2015 Update 3


Марти, ты ли это?
>>802053>>802536
#435 #802053
>>802034
можно уже и vs 15 превью поставить, если хочешь быть на острие
#436 #802063
>>802015
ппц
fgetc и putc
#437 #802070
>>802032
ппц
стандартный ввод-вывод и так буферизируется, нах еще что-то делать
>>802073>>802085
#438 #802073
>>802070
А ВДРУГ НЕ СБУФЕРИЗИРУЕТСЯ?
>>802090
#439 #802085
>>802070
кек, даже не знал
>>802090
#440 #802090
>>802073
>>802085
вдобавок размер буфера оптимизирован под целевую платформу
#441 #802175
Почему этот код компилируется, если nums - вектор, но не компилируется, если nums - list? Про инвалидацию итераторов ниже знаю.

https://ideone.com/EoXjv0
>>802179
#442 #802179
>>802175
Ошибки ты не читаешь принципиально?
У std::list итератор не random accesss
#443 #802235
>>801522
Danke!
Я сам разрулил. Проблема была в отправке данных с флагом out of band.
#444 #802239
Скачал MinGW отсюдова http://sourceforge.net/projects/mingw
вроде установил. Добавил в PATH путь до /MinGW/bin
Теперь вопрос. Как добавить возможность компилировать c++11?
Если писать так g++ main.cpp, то ругается на синтаксис c++11, если писать так g++ -std=c++11 main.cpp то ругается еще больше. Как быть?
>>802261
#445 #802261
>>802239
Показывай код и выхлоп компилятора, телепаты в отпуске.
#446 #802264
>>802261
Это все было на работке, сейчас я дома за бубунтой. Завтра все скину
#447 #802306
>>802261
На секунду вернулся на ЛОР образца 2008 года. Приятные воспоминания...
#448 #802316
Хочу научиться тестировать свои алгоритмы, но не знаю, с чего начать. Нагуглил какие-то юнит-тесты, но, по-моему, это какая-то хуйня. Во всех примерах этих тестов, которые я видел, просто сравнивается результат вызова функции с ожидаемым значением. Но что, если алгоритм слишком сложный, и возможных входных данных и результатов овер 9000? Так, как показано в статьях, протестировать все эти случаи невозможно.
>>802354>>802380
#449 #802319
>>801554
Бамп вопросу.
#450 #802354
>>802316
Все верно. Алгоритмы с бесконечным кол-вом входящих данных нельзя потестить. Да и не надо. Нужно тестить общий случай (1 - 2 кейса) и граничные.

Т.е. если ты тестируешь арифметическое сложение, то тупо делать так:

assert ( 1+1 = 2)
assert ( 1+2 = 3)
assert ( 1+4 = 5)
и т.д.

Нужно проверить обычное сложение (1 + 5), отрицательные операнды (1 - 4, -1 + 4, -1 + -6) и ситуацию с переполнением.
#451 #802355
>>801554
Очевидный doxygen

Пример:
http://llvm.org/doxygen/
#452 #802380
>>802316
Доказывай, а не тести.
#453 #802422
Что делать, если начал читать книгу по С++ и к 500 странице забыл, что написано на 100 допустим?
#454 #802446
>>802422
Отвечайте
#455 #802451
>>802422
Не учить что на какой странице написано.
>>802461
#456 #802461
>>802451
Я просто решил проверить и наугад открыл 100 страницу
>>802463
#457 #802463
>>802461
И оказалось, что ты не угадал, что там должно быть.
>>802472
#458 #802470
>>802422
Всё правильно делаешь. Сначала учишь Си с классами, потом его забываешь и с каждой сотней страниц учишь всё более современный с++.
#459 #802472
>>802463
Не траль плиз
#460 #802536
>>802034
Смищно, потому что CUDA 7 версии (в том числе и 7.5) работает только на MSVC 2013, ахахахаха.
Вроде 8 уже поддерживает 2015
>>802569
#461 #802547
>>803031
#462 #802569
>>802536

>> fatal error C1189: #error: Microsoft Visual Studio


2015 Update >= 2 is not supported yet!
КЕК, я ебал эту нвидиа
#463 #802637
Как разучиться писать на си с добавлением классов и начать нормально(современно) жить?(
>>802693
90 Кб, 570x566
#464 #802680
Господа, вопрос по синтаксису. Читаю Страуструпа "Программирование принципы и практика в с++"
И встретил пару моментов, которые я понять не могу. Будьте дбобры объясните.

string iname = "test";
ifstrean ist(iname); //В книге синтаксис прямой инициализации был такой ist{iname} в MSVC2010 не работает
ist.exceptions(ist.exceptions()|ios_base::badbit);

Полез смотреть на cplusplus/reference там
void exceptions(std::ios_base::iostate except);
Вроде как exceptions() принимает параметр iostate except. И устанавливает значение iostate goodbit, badbit, failbit или eofbit.
Но что в этом примере ist.exceptions(ist.exceptions()|ios_base::badbit); вернет второй ist.exceptions() который передается как параметр в функцию?
Символ | это побитовое или?

И еще запись такого вида впервые встречаю.
vector<Point> points;
for (int p : points){некое действие};
что происходит в for (int p : points), потому, что всегда встречал : в списках инициализации сущностей классов пример
class Foo
{
public:
Foo(int i, int j = 0) : m_i(i), m_j(j){}
private:
int m_i, m_j;
};
>>802685>>802726
#465 #802685
>>802680
ist{iname} - это новый вид инициализации в c++11
ist.exceptions(), очевидно, вернет текущую маску, а | ios_base::badbit добавил badbit. | - это побитовое или, да. С помощью & и | легко ставить флаги в одно число, а не заводить несколько булинов.

for (int p : points){некое действие}; - это новый вид циклов, введенный в c++11. Удобен для итерирования всякого рода контейнеров (массивов / stl-контейнеров).

В общем, читай про фичи c++11
>>802701
#466 #802693
>>802637
Начать писать на Rust или Go.
29 Кб, 544x433
#467 #802701
>>802685
Весьма благодарен.
#468 #802726
>>802680

>MSVC2010


Сейчас какой год, мудень? Десятый?
Ещё и литру 89 года выпуска возьми, для консистентности рабочего окружения.
>>802730
#469 #802730
>>802726
Действительно мудень, я забыл, что у меня 2013 IDE есть.
Я 2010 оставил для winforms.
>>802861
#470 #802754
Почему итератор и ссылка на элемент 4 не инвалидируются после удаления элемента, стоящего перед четверкой?

https://ideone.com/UzhSnu
>>802760
#471 #802760
>>802754
http://www.cplusplus.com/reference/list/list/erase/

>Return value


>An iterator pointing to the element that followed the last element erased by the function call. This is the container end if the operation erased the last element in the sequence.

>>802763
#472 #802763
>>802760
В книге написано, что инвалидируются все итераторы и ссылки на элементы, следующие после удаляемых, а ты мне про return value втираешь. Страшилки из книги не воспроизводятся.
>>802767
#473 #802767
>>802763
http://www.cplusplus.com/reference/list/list/erase/

>Iterator validity


>Iterators, pointers and references referring to elements removed by the function are invalidated.


All other iterators, pointers and references keep their validity.
44 Кб, 600x402
#474 #802816
ВОПРОС НА МИЛЛИОН
Хочу стать супер оптимизатором, смотреть, что за ассемблерный код там сгенерировался, использовать ассемблерные вставки и прочее.
Но ассемблер я почти не знаю. Было дело как-то давно в универе, но я абсолютно ен помню ничего.
Собственно, вопрос:
Что мне почитать про ассемблер? Что мне нужно знать про архитектуры процессоров(под разные архитектуры - разные языки же)? Что мне нужно знать, касательно С++?
#475 #802818
>>802828
#476 #802819
>>802816
Тебе нужно научится писать на плюсах (а не учить ассемблер) и оптимизировать в первую очередь алгоритмы – вот и 95% производительности в любом софте.
#477 #802828
>>802818
Спасибо. Именно то, что я искал.
#478 #802861
>>802730

>2013


>какой сейчас год


Ты дурак или прикидываешься, няша? Ну открой шапку, там есть ссылка на прекрасную последнюю VS 2015, в которой половина проблем старых версий давно решена.
#479 #802869
В чем разница между итераторами контейнеров vector и list, из-за которой мой код сегфолтится, если сравнивать элементы вектора на четность таким образом: if (*it % 2 == 0)?
Если убрать == 0, но оставить приведение по модулю, то код компилируется и запускается.

https://ideone.com/FvKaCp
>>802880
#480 #802880
>>802869
Если у списка написать ==0, то тоже все валится. http://stackoverflow.com/questions/4645705/vector-erase-iterator
>>802886
#481 #802886
>>802880
end() инвалидейтится у векторя
>>802888
#482 #802888
>>802886
С ним все в порядке. erase() возвращает указатель на следующий элемент за удаляемым. После удаления последнего итератор указывает туда же, куда и end(), но потом увеличивается в цикле и вылезает out of range.
>>803217
#483 #803031
>>802547
И никто не ответил. Да вы охуели
>>803189
#484 #803189
>>803031
Код где, блеать?
>>803194>>803602
#485 #803194
>>803189
От сейфа?
#486 #803217
>>802888
Смотри, когда ты присваиваешь it = u.erase(it), то it указывает на следующий элемент. Далее, значение it инкрементируется и проверяется условие it != u.end().
Если коротко, то при удалении элемента, кратного двум, ты пропускаешь следующий. Т.к. последнее число у тебя кратно двум 10, то при его удалении it становится равным u.end(). Но дальше у тебя it инкрементируется и получается что, out of range.

Почему работает с if (*it % 2)? А оно тоже не работает! Оно будет удалять только нечётные элементы (и оно точно также перепрыгивает через одно при удалении).

Вот тебе исправленный вариант:
https://ideone.com/TunlsB

Надеюсь достаточно подробно рассписал
#487 #803283
Ананасы, есть один проект в Qt. Допустим, что там в перспективе очень много ...window.cpp и .h файлов. Еще там есть .h файлы с классами, которые нужно закидывать в вектор и считывать из него из раличных ...window.cpp файлов по мере надобности. Я этот вектор объявил в этом же .h файле с помощью extern, а в самом первом .cpp файле в самом верху просто определил. Это нормальная практика? Какие подводные камни?
>>803397
#488 #803397
>>803283
Я нихуя не понял.
Давай еще раз, и по-русски.
#489 #803429
Есть такая функция:
void foo(vector<int> v, int a){
for_each(v.begin(),v.end(),[a](int b){cout << (b<a);});
}

Как сделать то же самое без лямбда-выражения? То есть передать в for_each предикат с 1 параметром, но при этом с еще одной переменной "извне".
И функторы тоже нельзя использовать.
>>803430>>803508
#490 #803430
#491 #803501
Подскажите, используя какие структуры/типы данных удобней и прельстивей ебать байты?
#492 #803508
>>803429
А нахуя так вообще делать?
#493 #803576
>>802816
Ни разу не пытаюсь критиковать желание, но хотелось бы узнать у анона - вообще актуально ли в 2016 использовать ассемблерные вставки? Всегда казалось, что компилятор почти во всех случаях генерит крайне годный код. Не выйдет ли так, что оптимизация ручками будет либо в ноль, либо слишком маленький прирост или вовсе тормоза?
>>803607>>803659
#494 #803602
>>803189
нахуй тебе код? Тебе достаточно знать то, что там используются штучки с++11
#495 #803607
>>803576
1) Открой, например, исходники любого видеокодека – куча ассемблерного кода. И так во всех проектах где нужно делать что-то за 0.02 вместо 0.05. Или можешь посмотреть как пишутся всякие алгоритмы компрессии;
2) Будешь неаккуратен – словишь как раз таки регрессию производительности, т.к. сама вставка и всё что с ней связано оптимизироваться не будет (поэтому кстати куски которые нужно написать на асме пишут на нём полностью, а не вставкой с парой инструкций), а так же есть куча платформозависимой хуиты и хуиты в разных компиляторах (в стандарте прописана только необходимость наличия вставок, остальное не оговаривается от слова совсем).
#496 #803625
Почему рекурсивная реализация бинарного поиска перестает компилироваться, если итераторы передавать по ссылке?

https://ideone.com/bp36j1

И как в случае отсутствия элемента в векторе вернуть v.end(), если сам вектор я не хочу передавать в функцию?
#497 #803659
>>803576
когда нужно использовать специализированные инструкции цп, гп или чего-нибудь еще
#498 #803664
Блять, почему даже сортировку выбором с использованием STL написать не получается? https://ideone.com/g3Th8R

Что не так с этим кодом? Один баг я пофиксил, заменив std::min на std::min_element. Но теперь происходит что-то непонятное.
>>803671>>803673
#499 #803671
>>803664
Как минимум std::iter_swap вместо std::swap

Остальное не проверял, просто за что глаз сразу зацепился.
>>803679
#500 #803673
>>803664

>auto 4 буквы, int 3 буквы



Выебнулся, молодец
>>803674
#501 #803674
>>803673

> std::min_element


> int


Обосрался, молодец.
>>803729
#502 #803679
>>803671
С iter_swap'ом лучше, но все еще не работает как надо. https://ideone.com/ylzMAK

Пошел читать про iter_swap.
>>803681
#503 #803681
>>803679
- auto smallest = std::min_element (it + 1, v.end());
+ auto smallest = std::min_element (it, v.end());
>>803684
#504 #803683
Назрел вопрос.
Что должен уметь делать джун-девелоп с++?
И как можно оценить свой уровень?
>>803709
#505 #803684
>>803681
Почему так? Я рассматриваю текущую ячейку it и ищу минимум среди следующих за ней ячеек. Найденный минимум свапаю со значением it.
>>803685
#506 #803685
>>803684
А если в текущей ячейке элемент меньше всех, идущих после него? Как у тебя на втором шаге, когда it == 2, а smallest == 3
>>803687
246 Кб, 853x578
#507 #803687
>>803685
Тогда, видимо, у Кормена ошибка. Его алгоритм будет свапать элемент в текущей ячейке даже если он наименьший.
>>803688
#508 #803688
>>803687
У него нет никакой ошибки.
>>803691
#509 #803691
>>803688
Он ищет минимум среди элементов от (i+1)-го до n-го. Предполагается, что выполняется инвариант цикла, состоящий в том, что элементы до i-го включительно минимальны и отсортированы. Но у меня почему-то так не работает.
>>803697>>803698
#510 #803697
>>803691
А пункт "A." ты не видишь?
>>803703
#511 #803698
>>803691

> Но у меня почему-то так не работает.


Твой код не соответствует его псевдокоду.
#512 #803703
>>803697
В самом деле. Когда алгоритм простой, я как-то пропускаю некоторые детали.
#513 #803709
>>803683
просто не лезь сюда, на работу все равно не устроишся, явка, веб может быть еще успеешь..
>>803710>>803711
#514 #803710
>>803709
Веб как-то не впечатил(
Я полгода в вузе учил си, потом плюсы ещё столько же.
Ща шароюбюсь по гиту, исправляя баги в kdeшных программах(легкие).
Вот и хочу узнать возмут ли меня куда-нибудь джуном или надо что-то подучить.
>>803730>>803888
#515 #803711
>>803709
Конкуренции боишься?
#516 #803729
>>803674
for (auto &i : v)
std::cout << i << " ";

Да инт.

Попытался еще раз выебнуться, молодец
#517 #803730
>>803710
i++ на ++i в for правишь?
Куда KDE без тебя.
>>803743
#518 #803743
>>803730
Нет, баги -это новые фичи или некритичные недоделки, которые висят в вишлисте на сайте кде и касаются уже функционала программ.
Но это уход в сторону от вопроса.
Так что должен уметь джун?
>>803826>>803846
#519 #803798
Меня рассмешила эта манька, у которой у Кормена ошибка в коде. Просто апофеоз юношеского максимализма.
>>803802
#520 #803802
>>803798
Да тебя, аутиста, и auto вместо int смешит.
#521 #803826
>>803743
Писать рабочий код, не слишком выбивающийся из принятых в коллективе конвенций. Простые истины типа code complete надо. Виртуальные деструкторы надо. Анальные пляски на мутирующих шаблонах не надо, если только это не проект специально для создания какой-нибудь уберлибы. Оптимальность надо на примитивном уровне типа отсутствия дублирования данных, экспоненциальных алгоритмов и подобных непотребств, умение дрочить ассемблер не надо, но приветствуется в эмбеддеде.

Обучаемость. Уметь быстро нагуглить и понять то, чего не знаешь. Знание либ и фреймворков, которые используются в проекте, желательно, но не так важно, ибо это все равно вопрос пары недель, если ты нормально схватываешь инфу.

Уметь читать любой код, даже написанный пьяным гуру метапрограммирования 10 лет назад. Чтение с гуглом считается, никого не волнует, что ты там помнишь, главное чтобы не нужно было отвлекать серьезных дядь на разъяснение кода тебе.

Знания по предметной области. В случае, когда задача общая, этот пункт пропускается, но даже не надейся найти вакансию с такими условиями, крудошлепства на крестах нет уже лет 15.

Первые три пункта всегда находятся именно в таком порядке друг относительно друга, по убыванию важности. Четвертый пункт может быть на любом месте, в зависимости от ситуации.
>>803829
#522 #803829
>>803826
Спасибо.
Думаю, что пойду в ближайшее время что-то искать по работе.
Пока не очень получается ориентироваться в классах больших проектов.
То бишь мне должны примерно сказать где вносить правки.
Это с опытом приходит?
>>803979
#523 #803846
>>803743
Ты меня, человека который написал змейку, учишь, что такое баг?
#524 #803888
>>803710

>исправляя баги в kdeшных программах


Сам ищешь? Почему до тебя их никто не нашёл и не исправил? Ты знаешь какой-то секрет?
>>803996
#525 #803959
С удовольствием бы покодил на сишке, а что?

За веб хоть платят, а на придумывание своей пердольной ебы финансов нету.
#526 #803979
>>803829
Да. Но тебе скорее для начала дадут таску, где ты пишешь с нуля какой-нибудь второстепенный модуль, а не правишь чужие.
#527 #803996
>>803888
Да, я знаю их секрет.
У них есть сайт с описанием багов.
Вбиваешь в поиске jj + название программы и готово.
https://bugs.kde.org/
#528 #804297
перекат, не?
>>804325
#529 #804325
#530 #804343
В общем, посмотрел, что тут всем советуют писать калькулятор, а делать утром было нехуй. Кресты начинал учить ещё прошлым летом, но забросил нахуй из-за учёбы. Вот вполне работающий код с костылями:

#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <Windows.h>
#include <cstdio>
#include <cstring>
#include <cctype>
#include <conio.h>
#include <process.h>

using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
setlocale(LC_ALL, "ru_RU.UTF-8");
setlocale(LC_ALL, "");
{
typedef unsigned long int uli;
typedef long double ld;
ld num, a, b, c;
uli x, y, z;
main_menu:
cout << "Введите число, соотвествующее командам, представленным ниже:" << endl;
cout << "1. Сложение." << endl;
cout << "2. Вычитание." << endl;
cout << "3. Умножение." << endl;
cout << "4. Деление." << endl;
cout << "0. Выход из программы." << endl;
cin >> num;
if (num == 1) {
cout << "Введите первое слагаемое:" << endl;
cin >> a;
cout << "Введите второе слагаемое:" << endl;
cin >> b;
c = a + b;
cout << "Сумма слагаемых равна: " << c << endl;
goto main_menu;
}
else if (num == 2) {
cout << "Введите число, из которого будем вычитать:" << endl;
cin >> a;
cout << "Введите вычитаемое:" << endl;
cin >> b;
c = a - b;
cout << "Разность равна: " << c << endl;
goto main_menu;
}
else if (num == 3) {
cout << "Введите число, которое будет умножаться:" << endl;
cin >> a;
cout << "Введите число, на которое будет умножаться первое число:" << endl;
cin >> b;
c = a * b;
cout << "Произведение чисел равно: " << c << endl;
goto main_menu;
}
else if (num == 4) {
cout << "Введите число, которое будет делиться:" << endl;
cin >> a;
del:
cout << "Введите число, на которое будет делиться первое число:" << endl;
cin >> b;
if (b = 0) {
cout << "На ноль делить нельзя! Введите второе число заново." << endl;
goto del;
}
else {
c = a / b;
cout << "Деление дало результат: " << c << endl;
goto main_menu;
}
}
else if (num ==0) {
exit(0);
}
else {
cout << "Число введено неправильно! Попробуйте ещё раз." << endl;
goto main_menu;
}
}
system("pause");
return 0;
}

Правильно ли я всё сделал?
#530 #804343
В общем, посмотрел, что тут всем советуют писать калькулятор, а делать утром было нехуй. Кресты начинал учить ещё прошлым летом, но забросил нахуй из-за учёбы. Вот вполне работающий код с костылями:

#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <Windows.h>
#include <cstdio>
#include <cstring>
#include <cctype>
#include <conio.h>
#include <process.h>

using namespace std;

int main()
{
setlocale(LC_ALL, "Russian");
setlocale(LC_ALL, "ru_RU.UTF-8");
setlocale(LC_ALL, "");
{
typedef unsigned long int uli;
typedef long double ld;
ld num, a, b, c;
uli x, y, z;
main_menu:
cout << "Введите число, соотвествующее командам, представленным ниже:" << endl;
cout << "1. Сложение." << endl;
cout << "2. Вычитание." << endl;
cout << "3. Умножение." << endl;
cout << "4. Деление." << endl;
cout << "0. Выход из программы." << endl;
cin >> num;
if (num == 1) {
cout << "Введите первое слагаемое:" << endl;
cin >> a;
cout << "Введите второе слагаемое:" << endl;
cin >> b;
c = a + b;
cout << "Сумма слагаемых равна: " << c << endl;
goto main_menu;
}
else if (num == 2) {
cout << "Введите число, из которого будем вычитать:" << endl;
cin >> a;
cout << "Введите вычитаемое:" << endl;
cin >> b;
c = a - b;
cout << "Разность равна: " << c << endl;
goto main_menu;
}
else if (num == 3) {
cout << "Введите число, которое будет умножаться:" << endl;
cin >> a;
cout << "Введите число, на которое будет умножаться первое число:" << endl;
cin >> b;
c = a * b;
cout << "Произведение чисел равно: " << c << endl;
goto main_menu;
}
else if (num == 4) {
cout << "Введите число, которое будет делиться:" << endl;
cin >> a;
del:
cout << "Введите число, на которое будет делиться первое число:" << endl;
cin >> b;
if (b = 0) {
cout << "На ноль делить нельзя! Введите второе число заново." << endl;
goto del;
}
else {
c = a / b;
cout << "Деление дало результат: " << c << endl;
goto main_menu;
}
}
else if (num ==0) {
exit(0);
}
else {
cout << "Число введено неправильно! Попробуйте ещё раз." << endl;
goto main_menu;
}
}
system("pause");
return 0;
}

Правильно ли я всё сделал?
>>804348
#531 #804348
>>804343

> вполне работающий код


> #include "stdafx.h"


> #include <conio.h>


> #include <process.h>


У меня твой "вполне работающий" код даже не скомпилируется. Уноси свой спермокод отсюда.
>>804355
#532 #804355
>>804348
#include "stdafx.h" - необходимая параша для компиляции в Visual Studio (в моей версии).
#include <conio.h> и #include <process.h> для работы кода вообще нахуй не нужны, если ты об этом. Просто привычка совать это в любую парашу - мало ли, вдруг функционал пригодится.
>>804387
#533 #804387
>>804355

>#include "stdafx.h"


precompiled headers выключи и все будет работать без этого.

>#include <conio.h>


нинужно

>#include <process.h>


нужно, но не тебе
>>804421
#534 #804421
>>804387
Оп, спасибо за совет. Не знал, что их можно отключить. Кстати, а зачем они вообще в студии?
>>804426
#535 #804426
>>804421
Чтобы не парсить один и тот же хедер, который инклудится 1000 раз в большом проекте.
#536 #804475
Поясните, почему double работает с очень большими числами, а инт - нет?
#537 #804487
>>804475
Потому что разные типы данных?
#538 #804488
>>804475
У doubl'а есть лицензия на работу с очень большими числами, а у инта -- нет.
#539 #804500
>>804475
Потому что double хранит числа не точно. По сути он хранит небольшое число и степень, в которую число нужно возвести.

Отсюда появляется такое дерьмо:
double i = pow(2, 68);
assert(i == (i + 1));
#541 #813950
>>798022 (OP)
Иногда один С++ заебывает, хочу почитать для развития что-нибудь про алгоритмы и организацию самих железок. Есть что-нибудь для ньюфагов, но без воды?
Тред утонул или удален.
Это копия, сохраненная 14 августа 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски