Сохранен 541
https://2ch.hk/pr/res/798022.html
Прошлые домены больше не функционируют, используйте адрес ARHIVACH.HK.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Оффициальный™ традиционный® C++ тред #38

 Аноним 17/07/16 Вск 00:32:04 #1 №798022 
14687047244290.jpg
Скоро, очень скоро
Старый ОП, который
Насаждал к искусству жаркий пыл в сердцах,
Из 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: Дальше переходишь по ссылке, пробуешь отвечать на вопросы и понимаешь, что ты пока в самом начале пути. Кроличья нора крестов практически бездонна, поэтому продолжать постигать тонкости и детали можно очень и очень долго. В то же время, на этом этапе у тебя должно быть достаточно знаний, чтобы уверенно писать неплохой код. Поэтому читай исходники открытого софта и библиотек, отправляй пулл-реквесты в них, читай книжки по предметным областям и общим методикам разработки, а дальше уже сможешь запилить свой проект или вкатиться в существующий.


Аноним 17/07/16 Вск 00:33:17 #2 №798026 
Насру первым.
Аноним 17/07/16 Вск 01:11:37 #3 №798042 
>>798026
Погоди, дай тоже примостить сраку.
Аноним 17/07/16 Вск 01:40:27 #4 №798069 
Хаскелобог вкатывается в тред, кого обоссать?
Аноним 17/07/16 Вск 01:46:08 #5 №798075 
Сап. Недавно пришлось заново устанавливать вижлу, и во время этого меня заинтриговал пункт по крестам для андроида. Где-то слышал немного про это, но все же. Стоит ли вскрывать эту тему, или забить и для мобильной разработки продолжать учить джаву?
Аноним 17/07/16 Вск 01:56:26 #6 №798086 
>>798075
Имхо, если ты выбираешь между крестами и жабой для мобильной разработки с нуля, не зная ни того ни другого, то лучше начать с жабы. Во-первых, в NDK тебе все равно потребуются как минимум базовые знания жабы, потому что там осуществляется активное взаимодействие твоего кода с жабным. Во-вторых, из-за общей заточенности андроида под жабу имеет смысл использовать кресты только когда тебе требуется что-то довольно производительное, типа вычислений или игрового движка. Иначе ты просто будешь воевать со своим инструментом, а код будет состоять из адаптеров к жабным методам.
Аноним 17/07/16 Вск 01:57:57 #7 №798088 
>>798075
Но вообще это интересная тема, так что лучше поставить, если есть лишние 5ГБ. Я поставил, все заработало без ебли, отладка на девайсе работает, эмулятор работает.
Аноним 17/07/16 Вск 02:01:31 #8 №798094 
Сап, мамкины погроммисты. Нужна помощь, можете обоссать ньюфага.
Проблема следующая, начал 2 дня назад изучать С++, короче при попытке вывести стандартный халоворлд в консоли нихуя не выводится, хотя часа два назад всё выводилось как надо, а щас нихуя... В душе не ебу в чём проблема гуглил нихуя толкого не нашёл, может объяснит кто ссаному ньюфагу в чём проблема?
#include <iostream>
using namespace std;
int main() {
cout << "Nassal nufagy za sheky!\n";
return 0;
}
Аноним 17/07/16 Вск 02:04:31 #9 №798097 
14687102711620.png
>>798094
Аноним 17/07/16 Вск 02:06:32 #10 №798099 
>>798097
VS Express 2013
[Указанные ниже фреймы могут быть неверны и (или) отсутствовать, символы для kernel32.dll не загружены]
Аноним 17/07/16 Вск 02:25:12 #11 №798108 
>>798094
попробуй погуглить и/или добавить #include <windows.h>
Аноним 17/07/16 Вск 02:34:16 #12 №798113 
>>798094
все, сука, теперь я тебя обоссу.
//ссу
//обоссал
Аноним 17/07/16 Вск 02:36:43 #13 №798115 
>>798022 (OP)
>крестухи
Разбудил тян и соседей.
Аноним 17/07/16 Вск 02:38:09 #14 №798116 
>>798115
откуда у тебя тян?
Аноним 17/07/16 Вск 02:39:09 #15 №798117 
>>798108
>>798094
Решил проблему добавлением строчки system("pause"); вместо "Точки останова" с ней не выводится нихуя.
>>798113
Спасибо, дружок пирожок.
Аноним 17/07/16 Вск 02:39:44 #16 №798118 
>>798117
ну ладно, все я не дуюсь
Аноним 17/07/16 Вск 02:41:20 #17 №798120 
>>798116
Ты, наверное, будешь смеяться. Познакомился на дваче.
Аноним 17/07/16 Вск 02:41:39 #18 №798121 
>>798117
ты хот ь по базовому курсу цпп учишь?
Аноним 17/07/16 Вск 02:42:04 #19 №798122 
>>798120
ну меня улыбнуло)
Аноним 17/07/16 Вск 02:43:07 #20 №798123 
>>798117
> Решил проблему добавлением строчки system("pause");
Ты что ли двойным щелчком запускал консольную программу? Да, крестобляди совсем деградировали.
Аноним 17/07/16 Вск 02:44:28 #21 №798124 
>>798120
Это не тян, это трап с длинным и толстым хуем.
Аноним 17/07/16 Вск 02:45:41 #22 №798125 
>>798121
Бьерн Страуструп
Программирование. Принципы и практика использования C++
По этой книжке начал вкатываться по совету в ОП посте.
>>798123
F5)))))))))))))
Аноним 17/07/16 Вск 03:19:26 #23 №798133 
>>798125
> F5)))))))))))))
Проверил. Какое же все-таки говно эта студия. В консольных C# приложениях после завершения подставляет pause, а в таких же C++ приложениях - нет.
Аноним 17/07/16 Вск 03:44:00 #24 №798139 
>>798133
> F5)))))))))))))
>Проверил. Какое же все-таки говно эта студия. В консольных C# приложениях после завершения подставляет pause, а в таких же C++ приложениях - нет.
Ты лалка, Ctrl-f5 нажимай. А вообще, нехуй запускать консольщину из шум. Bash поставь, если линупс не осилил.
Аноним 17/07/16 Вск 11:59:35 #25 №798249 
>>797141
Ну, сучечки, жду ваших ответов.
Аноним 17/07/16 Вск 12:01:27 #26 №798250 
>>797427
Олимпиадники как всегда производят нечитаемый кал вместо кода. Найс.

Тебя уже кто-то обосрал выше по треду же, хуле не исправляешься?
Аноним 17/07/16 Вск 12:03:44 #27 №798255 
Анонусы, помогите советом. Хочу написать мат. либу. Проблема в архитектуре. Вот допустим проц поддерживает AVX2. Логично его юзать. Но как мне все это прописывать? Не буду же я тупо ифами проверять.
Аноним 17/07/16 Вск 12:03:45 #28 №798256 
>>797857
Правильно, но это не критично.
Аноним 17/07/16 Вск 12:05:47 #29 №798257 
>>798255
Зоделой интерфейс с абстрактными операциями, а затем нахуячь наследников с реализациями под разные архитектуры.
Аноним 17/07/16 Вск 12:59:13 #30 №798287 
>>798249
Там уже был ответ же.
>>797201
Аноним 17/07/16 Вск 16:00:17 #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.
Аноним 17/07/16 Вск 16:49:05 #32 №798457 
Посоны, ASIO добавляют в цэ++17?
СериализацЭЯ будит?
Аноним 17/07/16 Вск 17:11:38 #33 №798469 
>>798457
http://stackoverflow.com/a/38060437
Аноним 17/07/16 Вск 17:35:22 #34 №798492 
>>798469
Нда, едем на черепахе.
Могли бы уж в какой-нибудь TR занести статическую рефлексию.
Сети из коробки нету. Дичь.
Аноним 17/07/16 Вск 17:38:34 #35 №798495 
>>798492
> Нда, едем на черепахе.
Главное, что не туда едем.

> Сети из коробки нету. Дичь.
Дичь была бы если бы она была.
filesystem будет — это дичь.
Всякие сферические функции — дичь.
Отсутствие uhash — дичь
Аноним 17/07/16 Вск 17:48:53 #36 №798502 
>>798495
>filesystem будет — это дичь.
Таки вы ебанутый, уважаемый?
Аноним 17/07/16 Вск 17:53:51 #37 №798504 
>>798502
А поцчему ви спгашиваете?
Аноним 17/07/16 Вск 17:58:10 #38 №798511 
>>798504
Таки я пекусь о здоровье местных постояльцев
Аноним 17/07/16 Вск 18:09:32 #39 №798518 
>>798492
Такую сеть, как в boost::asio, я бы и даром не взял. И вообще, это же вам не примитивные смарт поинтеры, которые всем одинаково хороши, тут каждому нужна своя сеть. Кому-то надо низкоуровщину с сокетами, кому-то - пару легких классов как в libcurl, кому-то - монструозную хуйню с continuations типа касабланки... Поэтому подходить надо очень вдумчиво, а не просто тащить всякое дерьмо в стандарт.
Аноним 17/07/16 Вск 18:52:31 #40 №798560 
>>798518
Ладно, хуй с ней, с этой сетью, что душе угодно, можно нарыть. Однако, где моя рефлексия, когда ее введут блять, я буду сериализовать все классы.
Аноним 17/07/16 Вск 19:34:21 #41 №798604 
>>798560
запили реализацию в clang, допили существующие пропосалы, вот и появится. Стандарт - это ж некоммерческий opensource, на обычных мимокрокодилах все держится.
Аноним 17/07/16 Вск 21:27:04 #42 №798675 
14687800249100.jpg
>>798604
> Стандарт - это ж некоммерческий opensource, на обычных мимокрокодилах все держится.
https://isocpp.org/files/img/foundation-members-2016.jpg
Аноним 17/07/16 Вск 21:47:51 #43 №798693 
>>798675
Вот уж действительно манямирок. Только у тебя. Если бы организации плотно инвестировали время разработчиков в C++, у нас бы давно был аналог .NET или Swift. Это ясные примеры того, как впрягаются большие компании. А у нас есть полурандомы из гугла, эппла, мс, которые на своей инициативе пилят стандарт. Концепты - 3.5 анонимуса, networking - 3.5 анонимуса, модули - по 5 анонов в гугле и мс. Диапазоны - вообще 1, лол.

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

Тут можно привести в пример Go – сам язык говно, но вы понели.
Аноним 17/07/16 Вск 22:21:44 #45 №798725 
>>798722
>не четырёх сотен миллиардов долларов за спиной.
Не было
Аноним 17/07/16 Вск 22:23:43 #46 №798730 
>>798722
>Так же криво развивался разве что D
Лол, можно узнать, что в нем кривого?
Аноним 17/07/16 Вск 22:44:28 #47 №798751 
>>798722
Я согласен, что swift как-то ниоче, просто привел его как пример, когда впрягается большая компания. Go можно отнести туда же. А вот D - это как раз хороший пример хорошего языка, на который похуй корпорациям.
Аноним 17/07/16 Вск 22:50:59 #48 №798761 
>>798730
2 стандартные библиотеки, вечно молодой, пьяный и меняющийся язык, куча разных компиляторов. До недавних пор кроме DMD не было ни одного полноценно работающего компилятора, поддерживающего хотя бы половину позапрошлого стандарта.

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

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

Ты серьёзно спрашиваешь что не так с его развитием?
Аноним 17/07/16 Вск 22:52:55 #49 №798763 
>>798761
>Тот же Брайт только и занимался и занимается тем что коммитит "уменьшение ал
Для полноты картины: в самом компиляторе, а не кодогенераторе.
Аноним 17/07/16 Вск 22:58:45 #50 №798773 
>>798761
>2 стандартные библиотеки
Ясно, понятно. Дальше можно не читать, следующий.
Аноним 17/07/16 Вск 23:07:51 #51 №798781 
>>798773
А что не так-то? Нюфаг в ди коммунити не верит? Врёти? Или читать не умеем и определять пршедшее время?
Они были одной из главных проблем в развитии языка. То что сейчас она одна – несколько поздновато.
Аноним 17/07/16 Вск 23:09:25 #52 №798785 
>>798781
После пиздежа про "две стандартные библиотеки" кроме смеха ничего остальное не вызывает. Сразу становится ясно, насколько ты "в теме".
Аноним 17/07/16 Вск 23:11:07 #53 №798787 
>>798785
Так всё таки читать не умеем, написано же ясно "проблемы в развитии". Прошедшее время, понимаешь?
Аноним 17/07/16 Вск 23:12:34 #54 №798789 
>>798787
Ну, я меня интересует текущий вариант D - D2. Что там творилось в D1 10 лет назад - меня слабо волнует. На данный момент это охуенный язык с охуенными фичами и охуенной стандартной библиотекой.
Аноним 17/07/16 Вск 23:20:02 #55 №798796 
>>798789
У тебя серьёзные баги в мозгах видимо.
Всё кроме первого абзаца кстати и к настоящему времени относится, комунити-драйвен язык, все дела. не гори ток

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

>Библиотека там хорошая разве что по сравнению с плюсовой
По сравнению с любой. Она даст на крык крестовой, растовой, жабьей. Кому еще? Кто там остался?
Аноним 17/07/16 Вск 23:37:30 #57 №798805 
>>798798
В растовой и плюсовой ничего и нету – только затычки к языку. Про жабную – даже не смешно.

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

Алсо, у языка так же проблемы с его местом в этом мире – предназначения для него банально нет. На дворе 2к16, и "у нас есть алгол60 и больше нихуя" уже не котируется, даже у самых убогих высеров вроде Говна оно есть.
Аноним 17/07/16 Вск 23:39:07 #58 №798809 
>>798805
>опять песня про нишу и предназначение
Аноним 17/07/16 Вск 23:42:01 #59 №798817 
>>798798
>что они тогда кукарекать будут?
Да то же, что и всегда. Нет оценки объективнее, чем оценка комьюнити. Если все голосуют ногами за СТАРЫЕ И ПРОТУХШИЕ КРЕСТЫ, то можно сколько угодно оправдываться и изображать доктора Зло - народ-то не обманешь бенчмарками и сладкими обещаниями.
Аноним 17/07/16 Вск 23:44:05 #60 №798818 
>>798817
>аргументы уровня "миллион мух не может ошибаться"
Все и за путина ногами голосуют, следуя твоей логике - он охуенен и пиздат. И айфоны скупают пачками, жрут дерьмо уровня "вы можете зарядить свой телефон только своей зарядкой", и радуются.
Аноним 17/07/16 Вск 23:46:39 #61 №798821 
>>798809
Как же заебали D-питухи со своей религией языка, на котором ни одного крупного проекта не написали за 10 лет. Ну сколько можно, а?
Аноним 17/07/16 Вск 23:47:16 #62 №798822 
>>798817
>Если все голосуют ногами за СТАРЫЕ И ПРОТУХШИЕ КРЕСТЫ
Про звено запаздывания слышал? Если сейчас все кинутся голосовать ногами за другое - результат ты увидишь далеко не сразу.

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

Кресты тупо унаследовали все костыли сишки. А В наследовать кослыли и пердолинг не стал.
Аноним 17/07/16 Вск 23:52:40 #67 №798831 
>>798829
Кодобаза > костылей.
Аноним 17/07/16 Вск 23:52:57 #68 №798832 
>>798822
>Языку еще нет 10 лет, лол, проекта ему крупного за 10 лет не написали.
Ох, ох, погоди, я и забыл, что ему не 10, а 9 лет. Это действительно многое меняет.
Аноним 17/07/16 Вск 23:53:16 #69 №798833 
>>798818
>следуя твоей логике - он охуенен и пиздат
Он успешно справляется с задачами, на которых другие обосрались, точно такая же ситуация с крестами. И в обоих случаях есть раскачивающие лодку неосиляторы, которые пытаются выдать разрозненные попытки перепила за рабочую альтернативу.
>И айфоны скупают пачками
Опять же, айфоны лучше всех справляются с ролью дорогой и статусной игрушки, с которой не нужно пердолиться. Хотя здесь я уже и сам не фанат.
>>798822
>Если сейчас все кинутся голосовать ногами за другое
Кинутся, когда придумают что-то получше. Так было с Фортраном, скинутым с пьедестала, например. И с жабой. Раз не голосуют (а TIOBE не наебешь - не голосуют), значит, пока не придумали. Думайте дальше, господа.
>проекта ему крупного за 10 лет не написали
Ну ничего, мы подождем. А скорость выпуска крупных проектов на крестах спишем на статистические флуктуации.
Аноним 17/07/16 Вск 23:53:22 #70 №798834 
>>798827
Все проекты на них тоже посчитаю тогда. А ещё алгол можно посчитать – в си же подобный ему синтаксис со скобочками делали, чо уж.
Аноним 17/07/16 Вск 23:55:55 #71 №798837 
>>798834
ты алгол видел хоть?
Аноним 17/07/16 Вск 23:55:58 #72 №798838 
>>798833
>точно такая же ситуация с крестами
Хуй там. Ты пытаешься обрисовать ситуацию, как будто кресты были охуенны в свое время и потому взлетели. Хуй там - взлетели они исключительно потому, что была повсюду сишка - а кресты были практически ее надмножеством, макак переучивать не нужно, даже сишная блевотина компилится крестовым компилятором.

Только и всего. Не приписывай крестам имбопиздатость - они просто взлетели паразитируя на популярности си.
Аноним 17/07/16 Вск 23:59:00 #73 №798841 
>>798837
Не, я просто написал хуйню твоего размаху.
>>798838
>даже сишная блевотина компилится крестовым компилятором.
Я тебя сейчас разочарую, но в крестах изначально не было кучи сишной хуйни вроде автоматического приведения типов, и нет – не компилировалось.
Аноним 18/07/16 Пнд 00:00:10 #74 №798842 
>>798838
Это не совсем так. Кресты взлетели по совокупности факторов. Помимо популярности сишки был общий хайп на ООП и, что важнее, общая философия крестов по вбиранию фич и парадигм из других языков. На более мощный язык всегда легче мигрировать, поэтому отбрасывание фич в угоду безопасности или еще какой хуйне это тупиковый путь. Имхо, конечно, а так поживем - увидим.
Аноним 18/07/16 Пнд 00:00:24 #75 №798843 
>>798838
Кресты были охуенны - Страуструп придумал как сделать симульное ООП эффективным (а симула - это первый ооп-язык, а не хипстерский тормозной смолток, который и тогда был тормозным, и сейчас) с помощью VMT.
>макак переучивать не нужно
Да ты сам тупая макака, но при этом имеешь наглость обвинять программистов, которым не переучиваться нужно, это хуйня, им нужно ПЕРЕПИСЫВАТЬ КОД. Диванные теоретики типа тебя всегда почему-то об этом забывают, что программисты пишут код, пишут кодами, и потом им пользуется, для них кодирование - это пет-проекты длиной по месяцу. Про тебя история. Но нет, все макаки кроме я.
Аноним 18/07/16 Пнд 00:04:21 #76 №798844 
14687894618680.jpg
>>798843
АППЛ-ТО ПЕРЕПИСЫВАЕТ ВЕСЬ КОД НА SWIFT, А ТЫ ВСЕ СИДИШЬ НАД СВОИМ ЛЕГАСИ КАК БАЙБАК
Аноним 18/07/16 Пнд 00:05:34 #77 №798845 
>>798844
У аппла конкурент С++ - Objective C, при чем тут это?
Аноним 18/07/16 Пнд 00:06:20 #78 №798846 
>>798845
При этом у них самих всё написано на плюсах, кроме гуйги и интерфейсов к библиотекам.
Аноним 18/07/16 Пнд 00:07:26 #79 №798848 
>>798845
>Objective C
Правильнее всё же эту парашу было назвать "Smalltalk-C".
Аноним 18/07/16 Пнд 00:08:39 #80 №798851 
>>798846
Ты удивишься, но порой и их системные приложения ВНЕЗАПНО написаны на Obj-C++.
Аноним 18/07/16 Пнд 00:11:14 #81 №798853 
>>798851
У меня у самого приложения пишутся на Obj-C++, но не потому что мы так премся от этого языка, а потому что единственный способ взаимодействовать с их гуйней. Но дело не в этом
>Swift может использовать рантайм Objective-C, что делает возможным использование обоих языков (а также С) в рамках одной программы
Т.е. в аппле умные люди сидят, они не заставляют выкидывать кодобазу, а позволяют постепенный переход. А ди требует меня отказаться. Я кстати с одним из разработчиков свифта знаком, крестоблядь как я, мы вместе хуисосили D с ним.
Аноним 18/07/16 Пнд 00:11:30 #82 №798854 
Поясните, нахуя было выдумывать move-семантику, rvalue-ссылки, perfect forwarding и т.д., когда можно было просто запретить автоматические объекты передавать только указатели, как в obj-c?
Аноним 18/07/16 Пнд 00:13:22 #83 №798855 
>>798853
>а потому что единственный способ взаимодействовать с их гуйней.
Сестра, 2 кубика Qt этому больному.

Аноним 18/07/16 Пнд 00:14:23 #84 №798856 
>>798845
Не при чем, это напоминание о том, что корпорации могут себе позволить переписывание легаси. Таким образом, раз уж не метнулись переписывать все на D, значит, вероятно, дело не только в жестокости мира, а, например, в объективных недостатках D, о которых писал анон выше.
Аноним 18/07/16 Пнд 00:15:34 #85 №798857 
>>798856
>Таким образом, раз уж не метнулись переписывать все на D, значит, вероятно, дело не только в жестокости мира, а, например, в объективных недостатках D, о которых писал анон выше
Раз не кинулись все переписывать на с++ - тогда дело в недостатках с++.
Аноним 18/07/16 Пнд 00:16:25 #86 №798858 
>>798854
Передаешь указатель на char - замедляешься в 4 раза.
Аноним 18/07/16 Пнд 00:17:36 #87 №798860 
>>798857
>Раз не кинулись все переписывать на с++ - тогда дело в недостатках с++.
В тот момент и не надо было, можно было просто сделать 'extern "C"' и дополнять легаси на более удобном языке.
Аноним 18/07/16 Пнд 00:17:39 #88 №798861 
>>798857
Что переписывать? Треть всего существующего кода на крестах, куда уж больше.
Аноним 18/07/16 Пнд 00:18:00 #89 №798862 
>>798858
Пруфы, пруфчики в студию.
Аноним 18/07/16 Пнд 00:18:17 #90 №798863 
>>798861
>Что переписывать?
Дохуя чего. Практически все, что написано на сишке, к примеру. Взять то же ведро линупса.
Аноним 18/07/16 Пнд 00:18:58 #91 №798865 
>>798861
>Треть всего существующего кода на крестах
Замеры в студию!
Аноним 18/07/16 Пнд 00:19:18 #92 №798866 
1
Аноним 18/07/16 Пнд 00:21:44 #93 №798868 
>>798863
Алсо, сейчас это сделать - можно в полуавтоматическом режиме. А если не переписывать, то можно свободно дополнять на C++, но вот только Линус против.
Аноним 18/07/16 Пнд 00:23:33 #94 №798870 
>>798856
Что самое прикольное - D свои недостатки исправит. А кресты так и останутся парашей, которая компилируется часами, с говном вместо шаблонов и залупой на воротник вместо модульности.
Аноним 18/07/16 Пнд 00:23:35 #95 №798871 
>>798857
Apple пилят лучший в мире компилятор С++ clang. Наверное им виднее, что нужно писать, а что нет. С++ явно не язык для гуйни в принципе.
Аноним 18/07/16 Пнд 00:24:56 #96 №798873 
>>798871
Только потому, что gcc они не переваривали по причине лицензии.
Аноним 18/07/16 Пнд 00:26:12 #97 №798875 
>>798870
>А кресты так и останутся парашей, которая компилируется часами, с говном вместо шаблонов и залупой на воротник вместо модульности.
Смешно будет, когда модули и концепты выкатят хотя бы в виде TS (а это будет уже в течении года). Ведь тогда окажется, что C++ от своих проблем избавился и все такой же популярный, а D - тоже без недостатков, только вот нахуй не нужен будет.
Аноним 18/07/16 Пнд 00:28:04 #98 №798878 
>>798862
Какие тебе пруфы, лалка? Почитай, как устроен стек вызовов, посмотри листинг.
Аноним 18/07/16 Пнд 00:28:35 #99 №798879 
>>798875
>Ведь тогда окажется, что C++ от своих проблем избавился
От бесконечного времени компиляции и груза обратной совместимости он не исбавится никогда. Все, чего к нему смогут прикрутить сверху - будет прикручено костылями, потому как изначально в языке не предполагалось.

D это как вяленый, а кресты - как X. Придет время - и иксы отправятся на помойку.
Аноним 18/07/16 Пнд 00:29:32 #100 №798881 
>>798862
>>798865
У тебя там ОТРИЦАНИЕ включилось? Не умеешь гуглить или не хочешь?
Аноним 18/07/16 Пнд 00:30:35 #101 №798882 
>>798881
Мань, ты высказал утверждение - тебе его и доказывать. Так я тебе могу сказать, что я ебал твою мамку - опровергнуть ты это не сможешь, а за пруфами я темя в гугл отправлю.
Аноним 18/07/16 Пнд 00:33:09 #102 №798883 
>>798879
>От бесконечного времени компиляции и груза обратной совместимости он не исбавится никогда
Манька не в курсе, что модули можно использовать уже сегодня и там к тому же инклуды транслируются в импорты на лету для старого кода.
Аноним 18/07/16 Пнд 00:34:09 #103 №798884 
>>798870
Исправит все - и широкую, ясную
Грудью дорогу проложит себе;
Жаль только, жить в эту пору прекрасную
Не доведется ни мне, ни тебе...
Аноним 18/07/16 Пнд 00:35:19 #104 №798885 
>>798884
Чай не коммунизм - мне доведется, я не сомневаюсь. Процесс идет.
Аноним 18/07/16 Пнд 00:35:31 #105 №798886 
>>798884
Раз, два, три, четыре, пять, - с детства с рифмой я дружу
Аноним 18/07/16 Пнд 00:36:29 #106 №798887 
>>798886
Все там нормально с рифмой, только ударение проебано. Фиксится заменой "исправит" на "выправит"
Аноним 18/07/16 Пнд 00:38:54 #107 №798889 
Как тепло и лампово тут у вас. Зовите почаще этого евангелиста, его полыхание согревает мои старые кости.
Аноним 18/07/16 Пнд 00:40:26 #108 №798891 
D - говно вместо языка.
Аноним 18/07/16 Пнд 00:42:47 #109 №798893 
>>798889
>Как тепло и лампово тут у вас
Это все потому, что нет лабодаунов.
Аноним 18/07/16 Пнд 00:43:44 #110 №798895 
>>798891
Да этот D даже на говно не похож!
Аноним 18/07/16 Пнд 00:44:47 #111 №798896 
>>798891
>путин - хуйло
Аноним 18/07/16 Пнд 00:47:11 #112 №798898 
>>798022 (OP)
>Из Dерьма восстанет
А оп-то тоже ИЗ ЭТИХ.
Аноним 18/07/16 Пнд 00:58:37 #113 №798903 
Я скоро буду делать масштабный пулл-реквест в шапку, будет клево, если анон вбросит новых книжек по крестам или еще чего-нибудь. Сейчас планирую вкатить Дьюхерста, и еще нашел охуенный свежачок про оптимизацию кода (2016, на ангельском, что-то на уровне Мейерса или даже выше). Еще думал заняться составлением diff для 17 стандарта на человеческом языке, чтобы всякую несущественную хуйню и полностью новые фичи выкинуть, и оставишь мякотку типа изменений в поведении для begin/end и range-based-for, облегчив перекатывание предельно. Если анон желает присоединиться, буду рад.
Аноним 18/07/16 Пнд 01:20:40 #114 №798915 
>>798903
>для begin/end и range-based-for
И в чем здесь мякотка? Очередной сахар. Другое дело static if, string view, fs, fold, concurrent stl.
Аноним 18/07/16 Пнд 03:00:20 #115 №798941 
>>798915
> Очередной сахар.
> Другое дело string view, fs, concurrent stl
А это блядь, даже не сахар. Это просто апдейт к либам.
Аноним 18/07/16 Пнд 03:06:00 #116 №798944 
14688003609830.png
Ладно, крестухи. Хватит сраться.
У меня тут жопа горит от стандарта. Пидоры разрешили reinterpret_cast поинтера на standard-layour struct к поинтеру на её первый мембер. А КАСТИТЬ standard-layour class НЕ РАЗРЕШИЛИ, СУКИ.

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

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

Нет, я, конечно, достаю. Но кагбэ это нарушает стандарт.
Аноним 18/07/16 Пнд 03:19:17 #117 №798945 
>>798944
Почему ты разделяешь понятия class и struct? А вообще для классов так кастить действительно нельзя. Vptr, все дела.
Аноним 18/07/16 Пнд 03:33:43 #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.
Аноним 18/07/16 Пнд 03:46:19 #119 №798957 
>>798915
Я хочу, чтобы был исчерпывающий список мест, в которых стало можно/нужно писать по-другому. Иначе можно через пару лет обнаружить, что, скажем, известные тебе ограничения на if-expression уже давно ослаблены. Или наоборот, что запретили твои любимые триграфы. Понятно, что я сейчас утрирую, но там действительно много подобных "тихих изменений", а во всех гайдах обычно пишут только про самые существенные - новые фичи, расшмрения библиотеки etc.
Аноним 18/07/16 Пнд 03:49:30 #120 №798958 
>>798945
Так а что мешает делать vptr в структуре, лол? Это совершенно ортогональные с layout вещи. По стандарту class и struct отличаются только аспектами доступа.
Аноним 18/07/16 Пнд 08:50:15 #121 №799027 
>>798875
> своих проблем
Вырвиглазного синтаксиса и богатой истории, со стандартом больше напоминающим законодательство какой-нибудь страны? Сомневаюсь.
Аноним 18/07/16 Пнд 12:54:33 #122 №799149 
>>798958
А кто сказал, что нельзя, лол? Он явно что-то другое имел в виду, говоря структуры. Но если думать о его классах, как об обычных struct/class, то там нельзя кастить указатель на класс на указатель на первый член с помощью reinterpret.
Аноним 18/07/16 Пнд 13:18:33 #123 №799167 
>>798957
Все уже украдено до нас: http://clang.llvm.org/cxx_status.html
Аноним 18/07/16 Пнд 13:24:16 #124 №799173 
>>799167
Ну и по библиотекам:
http://libcxx.llvm.org/cxx1x_status.html
http://libcxx.llvm.org/cxx1y_status.html
Аноним 18/07/16 Пнд 14:45:18 #125 №799217 
14688423183140.jpg
>>798893
Ну блин.
лабодаун
Аноним 18/07/16 Пнд 15:58:10 #126 №799269 
Я смогу после книги Страуструпа написать маленькую програмку (идею уже год вынашиваю), которую действительно можно использовать или меня только числа складывать научат и придётся все самому гуглить?
Аноним 18/07/16 Пнд 15:59:34 #127 №799271 
>>798944
>>798953
Себя я убедил в том, что стандарт разрешает мне так делать. Интересно, какое мнение у ананасов. Моё утверждение, что следующий код легален:

const std::type_info& extract_type_info(std::type_index index)
{
return ★reinterpret_cast<std::type_info const★ &>(index);
}
Аноним 18/07/16 Пнд 16:09:39 #128 №799279 
>>799271
Нах тебе вообще rtti сдалось?
Аноним 18/07/16 Пнд 16:27:51 #129 №799294 
>>799271
А где гарантии, что type_index это standard layout? Я только про копируемость вижу.
Аноним 18/07/16 Пнд 16:42:41 #130 №799312 
>>799294
>А где гарантии, что type_index это standard layout?
Посмотри на его определение в стандарте. Там даже private-мембер определяется.
Аноним 18/07/16 Пнд 17:37:42 #131 №799340 
Есть две функции, которые отличаются только компаратором в сортировке. Как лучше их объединить в одну?
Аноним 18/07/16 Пнд 17:45:09 #132 №799346 
>>799340
Передавай компаратор аргументом.
Аноним 18/07/16 Пнд 17:49:07 #133 №799349 
>>799346
А чего не шаблончиком?
Аноним 18/07/16 Пнд 17:52:04 #134 №799354 
>>799349
Шаблоны для параметризации типом.

Или я неправильно понял, чем отличаются компараторы.
Аноним 18/07/16 Пнд 17:52:39 #135 №799355 
>>799354
Разве шаблоны не для чего угодно, что известно при компиляции?
Аноним 18/07/16 Пнд 17:53:32 #136 №799357 
>>799355
Нет конечно.
Аноним 18/07/16 Пнд 17:55:16 #137 №799360 
>>799357
Взять к примеру дишечный sort - шаблонным параметром можно передать компаратор

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

Сделай точно так же в крестах (ну, синтаксис будет другой - скобочки угловые вместо восклицательного знака). Разве нельзя? Тут же тоже шаблончики.
Аноним 18/07/16 Пнд 17:55:37 #138 №799361 
>>799355
Именно что да, передавай шаблоном если не хочешь определять компаратор в раниаймеи не еби мозга.
Аноним 18/07/16 Пнд 18:04:23 #139 №799365 
Норот, в цпп есть map/reduce/filter? Где искать?
А в бусте?
Аноним 18/07/16 Пнд 18:06:35 #140 №799366 
>>799365
>map
std::transform
>reduce
std::accumulate
>filter
std::copy_if (?)
Аноним 18/07/16 Пнд 18:13:07 #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 ничем не хуже, если ты не ФП-ебанат, конечно.
Аноним 18/07/16 Пнд 18:13:07 #142 №799374 
>>799271
Я сто лет использую структуры как массивы с именованным членами и проблем не имею.
Аноним 18/07/16 Пнд 18:17:40 #143 №799376 
>>799374
Знал людей, которые сто лет не инициализируют локальные переменные, собирают только в дебаг-режиме в VS и проблем не имеют.
Аноним 18/07/16 Пнд 18:29:46 #144 №799382 
>>799374
Ну и мразь же ты, это уже чересчур!
Аноним 18/07/16 Пнд 18:29:49 #145 №799383 
>>799376
Укажи вариант, при котором это работать не будет, при условии, что структура - POD, и внутри у нее тоже POD, причем одинаковые.
sageАноним 18/07/16 Пнд 18:30:16 #146 №799384 
>>799376
>людей, которые сто лет не инициализируют локальные переменные
Зачем их инициализировать, если уверен, что ниже они обязательно инициализируются перед использованием?
Аноним 18/07/16 Пнд 18:33:14 #147 №799387 
Завезли какие-нибудь способы сократить буквоговно в сигнатурах функций?

https://ideone.com/TpfQ1Y
Аноним 18/07/16 Пнд 18:34:04 #148 №799389 
>>799384
> ниже они обязательно инициализируются
В том-то и дело, что не инициализируются.
Аноним 18/07/16 Пнд 18:34:29 #149 №799390 
>>799387
Уже много лет как.
Аноним 18/07/16 Пнд 18:35:25 #150 №799391 
>>799387
typedef/шаблоны.
Аноним 18/07/16 Пнд 18:35:30 #151 №799392 
>>799383
Стандарт говорит нам только про каст к первому мемберу. Про остальные — ХЗ.

Это если формально посмотреть.
Аноним 18/07/16 Пнд 18:36:39 #152 №799393 
>>799366
>>filter
>std::copy_if (?)
Ладно, это не совсем filter, он может только копировать в другой контейнер.

В бусте есть вроде фильтр.
Аноним 18/07/16 Пнд 18:37:29 #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)
^


Аноним 18/07/16 Пнд 18:37:43 #154 №799396 
>>799346
>>799361
Хотелось бы еще скрыть компараторы внутри функции и передавать только какое-нибудь ключевое слово, чтобы было понятно, какой использовать
Аноним 18/07/16 Пнд 18:38:44 #155 №799397 
>>799366
Г-ди в крестопараше куда понятнее имена, чем у фунциональных каргопетушков.
Аноним 18/07/16 Пнд 18:39:58 #156 №799400 
>>799397
Ну я бы так однозначно не говорил.
Аноним 18/07/16 Пнд 18:41:50 #157 №799401 
>>799392
Если углубиться, то там вроде бы есть какие-то гарантии про минимальное достаточное выравнивание и последовательность размещения, но это все довольно мутно и неявно, так что я бы просто не стал использовать, чтобы не рисковать.
Аноним 18/07/16 Пнд 18:43:36 #158 №799403 
>>799396
Так создай классы Cmp1 и Cmp2, с функциями cmp, и юзай как huita<Cmp1>(args); не зню можно ли в таком же кошерном виде передавать функции
Аноним 18/07/16 Пнд 18:44:04 #159 №799404 
>>799401
static_assert'ы проставь и рискуй.
Аноним 18/07/16 Пнд 18:45:40 #160 №799406 
>>799393
Ну хорошо, remove_if есть (хотя ты и copy_if можешь использовать для тех же целей, там допустимы пересечения коллекции-источника с коллекцией-приемником).
Аноним 18/07/16 Пнд 18:45:42 #161 №799407 
Смотрите, во втором вызове find я передаю пустой диапазон: хотя оба итератора указывают на существующий элемент, но в терминах библиотеки этот диапазон пуст, потому что правая граница не включается. Надо ли добавлять отдельную обработку случая равенства итераторов, чтобы результат такой оказии был корректным?

https://ideone.com/6Jtihz
Аноним 18/07/16 Пнд 18:48:27 #162 №799409 
>>799404
И что в них писать, лол? Нет, я допускаю, что можно придумать монструозную ебалу, которая это проверит на основе существующих недоконцептов, но нахуя, если это в итоге принесет выигрыш в несколько символов всего.
Аноним 18/07/16 Пнд 18:48:45 #163 №799410 
>>799407
А сейчас в чём проблема?
Аноним 18/07/16 Пнд 18:49:46 #164 №799412 
>>799407
Нет, все в порядке. Только разыменовывать этот итератор нельзя в общем случае, если там может быть end ().
sageАноним 18/07/16 Пнд 18:50:12 #165 №799413 
>>799397
Просто ты питуз. Эти имена в ФП пришли из математики и старше твоих крестов.
Аноним 18/07/16 Пнд 18:50:27 #166 №799414 
>>799407
И вообще, зачем ты пишешь свой find?
У тебя почти тот же код, что в http://en.cppreference.com/w/cpp/algorithm/find Possible implementation
Аноним 18/07/16 Пнд 18:51:14 #167 №799415 
>>799413
> Эти имена в ФП пришли из математики и старше твоих крестов.
Давайте пользоваться римскими, а не арабскими числами тогда. Они старше.
Аноним 18/07/16 Пнд 18:51:27 #168 №799416 
>>799409
>И что в них писать, лол?
Размер структуры и размер массива совпадают. По стандарту компилятор паддинг может добавлять куда угодно, но на практике ни один компилятор этого не делает.
Аноним 18/07/16 Пнд 18:51:34 #169 №799417 
>>799415
>числами
*цифрами
Аноним 18/07/16 Пнд 18:52:19 #170 №799418 
>>799413
Ну все, начинаем общаться в терминах трудов Лейбница, а то всякие современные петухи напридумывали новых названий, аж слушать противно.
Аноним 18/07/16 Пнд 18:52:54 #171 №799420 
>>799416
> По стандарту компилятор паддинг может добавлять куда угодно
Что, стандарт совсем не накладывает ограничений сверху?
Аноним 18/07/16 Пнд 18:53:19 #172 №799421 
>>799417
Цифры это числа
Аноним 18/07/16 Пнд 18:54:02 #173 №799422 
>>799420
Вот я и говорил >>799401, что вроде бы там есть ограничения на паддинг, но они мутные какие-то и хорошенько запрятаны. Явного утверждения ЗАПРЕЩЕНЫ ЛИШНИЕ ДЫРКИ там нет.
Аноним 18/07/16 Пнд 18:54:12 #174 №799423 
>>799421
>символы - это строки
Питухонщик, плес
Аноним 18/07/16 Пнд 18:54:17 #175 №799424 
>>799421
И?
Аноним 18/07/16 Пнд 18:54:38 #176 №799425 
>>799414
А я просто с итераторами разбираюсь.
Аноним 18/07/16 Пнд 18:55:00 #177 №799427 
>>799415
Позиционные системы счисления удобнее для использования в жизни и программирования. Битовые сдвиги бы не работали с римской системой. А то, что петушкам непонятно, что такое отображение списка или дерева, это их проблемы.
Аноним 18/07/16 Пнд 18:55:01 #178 №799428 
>>799423
Тащемта, он прав. Любая цифра это число, но не наоборот.
Аноним 18/07/16 Пнд 18:56:08 #179 №799429 
>>799425
Почему find возвращает bool, а не iterator? это какой-то exists, а не find.
Аноним 18/07/16 Пнд 18:56:17 #180 №799431 
>>799428
Эдак и любая точка - это отрезрок
Аноним 18/07/16 Пнд 18:56:57 #181 №799432 
>>799429
Возврат итератора как раз в следующей задаче :3
Аноним 18/07/16 Пнд 18:58:58 #182 №799434 
>>799421
Число это последовательность цифр. Даже если последовательность из одной цифры, то это последовательность цифр (== число), а не цифра.
Аноним 18/07/16 Пнд 18:59:09 #183 №799435 
>>799420
>Что, стандарт совсем не накладывает ограничений сверху?
Нет, архитектуры CPU ведь могут быть произвольной ебанутости.
Аноним 18/07/16 Пнд 19:23:15 #184 №799456 
>>799435
std::max_align_t
Аноним 18/07/16 Пнд 19:32:50 #185 №799466 
>>799456
Паддинг от алайна не зависит по стандарту. Стандарт задает только порядок членов структуры в памяти, но расстояние между ними может быть произвольное.
Аноним 18/07/16 Пнд 20:48:46 #186 №799532 
>>799466
Таки да. Не нашёл ничего конкретного про паддинг, что что-то бы гарантировало.
Аноним 18/07/16 Пнд 21:53:46 #187 №799603 
>>799431
Точка это компакт, она замкнута.
Аноним 18/07/16 Пнд 21:56:14 #188 №799606 
>>799603
>Точка это компакт
Это сленг. Тут имеется в виду множество из одной точки.
Аноним 18/07/16 Пнд 22:19:26 #189 №799640 
Есть объявленный, но не определенный вектор. В конструкторе класса мне нужно изменить размер этого вектора и проинициализировать его элементы данным значением. Как это сделать кратко без присвоения вроде v = std::vector(n, val)?
Аноним 18/07/16 Пнд 22:22:52 #190 №799644 
>>799640
>Есть объявленный, но не определенный вектор.
Это называется "default constructed", а не так, как у тебя.

>>799640
> изменить размер этого вектора и проинициализировать его элементы данным значением.
std::fill_n(std::back_inserter(v), n, val);
Аноним 18/07/16 Пнд 22:25:18 #191 №799653 
>>799644
>default constructed
initialized


self-fix
Аноним 18/07/16 Пнд 22:38:11 #192 №799669 
>>799644
Неоптимально же. resize (n, val) лучше, ну или хотя бы сделать reserve сперва, иначе лишние аллокации возможны.
Аноним 18/07/16 Пнд 22:40:08 #193 №799672 
>>799669
Гм. Я думал, что resize всегда дефолтным значением заполняет.

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

>>799733
Вот здесь говорят, что set можно использовать как очередь с приоритетами.
http://cybern.ru/algoritm-dejkstry-dlya-razrezhennyx-grafov-realizaciya-na-c.html
Аноним 18/07/16 Пнд 23:58:19 #197 №799747 
>>799742
Нахуя, если есть priority_queue? Какие-то петухи ставят костыли, а ты и рад проглотить. Читай Седжвика лучше, няша.
Аноним 18/07/16 Пнд 23:59:45 #198 №799748 
>>799742
> while(0);
Аноним 19/07/16 Втр 00:01:15 #199 №799750 
>>799748
Кстати да, у нас за такое убивают нахуй. Родина дала им for(;;), итерируй! Не хочу, хочу жрать предупреждения.
Аноним 19/07/16 Втр 00:01:28 #200 №799751 
>>799742
Новая версия моего элитного кода и отладочный высер:

https://ideone.com/wciskr
Аноним 19/07/16 Втр 00:01:57 #201 №799752 
>>799750
Ты не понял.
Аноним 19/07/16 Втр 00:02:11 #202 №799753 
>>799747
>Читай Седжвика лучше, няша
Я Кормена читаю, а реализации гуглю в интернете. Попадается лютое говно.
Аноним 19/07/16 Втр 00:11:39 #203 №799760 
14688762997680.png
14688762997701.png
>>799742
Не читай этого Василия, он неправильно юзает std::set. Просто потому, что в интерфейсе set'а никакого поведения, похожего на очередь с приоритетами, и близко не планировалось. Также его код говно нечитаемое.

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

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

Алсо, я не понимаю, нахуя ты лазишь в интернет, когда у Кормена все написано просто заебись (пикрил2).
Аноним 19/07/16 Втр 00:23:14 #204 №799764 
14688769943060.png
>>799751
Говно нечитаемое. Нахрен ты лепишь туда макросы, когда ты пишешь ебаный поиск кратчайших путей? Я ебал читать. Визуализация - говно. Слишком нагружено и непонятно. Осиль dot или просто печатай пошагово результирующий массив.
Можно видоизменить граф для большей наглядности(храни буквенные идентификаторы), должно получится, как на пикриле.

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

Аноним 19/07/16 Втр 00:30:56 #205 №799770 
14688774567300.png
>>799760
У меня в Кормене алгоритм так записан. Какое-то подзалупное говно с расходом памяти на очередь с приоритетами, содержащую все ребра. Пацаны говорят, что достаточно добавлять по одному ребру в очередь. К тому же у него слишком высокая декомпозиция алгоритма на отдельные функции. Если писать так, как у Кормена, то придется передавать в функцию relax ссылку на очередь. Это слишком грязно.

Когда все хранится в разных областях видимости, такую идеальную декомпозицию без грязи не сделать.
Аноним 19/07/16 Втр 00:31:15 #206 №799771 
>>799764
>И еще - осиль тесты
Что по тестам читать?
Аноним 19/07/16 Втр 00:37:01 #207 №799774 
14688778211560.png
>>799770
Во-первых, нахуя ты полез в серьезную литературу, если ты, блядь, не шаришь ебаный алгоритм дейкстры? Тебя не смущает то, что тебе сложно читать "Построение и анализ"?

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

По тестам почитай введение http://www.boost.org/doc/libs/1_61_0/libs/test/doc/html/boost_test/intro.html
Чтобы просто начать тестировать. Потом сам найдешь что-нибудь посложнее.
Аноним 19/07/16 Втр 00:44:48 #208 №799778 
>>799770
>Пацаны говорят, что достаточно добавлять по одному ребру в очередь
Можно и так.

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

>Если писать так, как у Кормена, то придется передавать в функцию relax ссылку на очередь. Это слишком грязно.
Не кукарекай, умник. Сперва реализуй алгоритм самостоятельно и, самое главное, правильно. А потом будешь оптимизировать.
Аноним 19/07/16 Втр 00:47:25 #209 №799779 
>>799778
>Его декомпозиция совершенна.
Не спорю, алгоритм хорош, но на мою реализацию он не ложится. Не знаю, как вообще получить опыт реалиазации алгоритмов такого же качества, если получается говно.
Аноним 19/07/16 Втр 00:49:13 #210 №799780 
>>799778
>Не кукарекай, умник. Сперва реализуй алгоритм самостоятельно и, самое главное, правильно. А потом будешь оптимизировать
Я умею проделывать этот алгоритм на бумажке, писал реализацию без очереди с приоритетами, а сейчас хочу разобраться в эффектином варианте Дейкстры. Если его писать на фибоначчиевых кучах, сложность алгоритма вообще достигает теоретического минимума.
Аноним 19/07/16 Втр 01:07:06 #211 №799787 
>>799779
>но на мою реализацию он не ложится
Измени реализацию?

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

Так что твой алгоритм никак не изменится от замены одной реализации очереди на другую.
Аноним 19/07/16 Втр 01:10:50 #212 №799789 
14688798507570.png
>>799787
>Ты писал не алгоритм Дейсктры
Тогда что это? http://e-maxx.ru/algo/dijkstra

Алсо, почему на пикче раннеры идут к вершинам, к которым идти не нужно? Или они там от балды натыканы? Алгоритм Дейкстры ведь жадный, он на каждой итерации выбирает ребро наименьшего веса. Судя по пикче, там происходит что-то другое.
Аноним 19/07/16 Втр 01:13:07 #213 №799791 
>>799789
>Алсо, почему на пикче раннеры идут к вершинам, к которым идти не нужно? Или они там от балды натыканы?
Мда.
Аноним 19/07/16 Втр 01:16:21 #214 №799795 
>>799791
Алгоритм выбирает ребро наименьшего веса. Следующая итерация начинается с конечной вершины этого ребра. Точно так же ищется самое оптимальное на этом этапе решение, и следующая итерация начинается с самой близкой вершины. Что не так? На картинке явно не это.
Аноним 19/07/16 Втр 01:21:39 #215 №799804 
>>799795
По-моему, картинка вполне соответствует алгоритму.
Аноним 19/07/16 Втр 01:21:56 #216 №799805 
14688805165490.png
>>799789
>Тогда что это? http://e-maxx.ru/algo/dijkstra
Алгоритм Дейкстры с очередью с приоритетами. На пикриле можно увидеть основную операцию очереди с приоритетами.

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

>Алгоритм Дейкстры ведь жадный
Бля, заканчивай гнать умные слова. Впечатление ты на АиБ ни на кого не произведешь. Жадность алгоритмов тебе никак не объяснит, что происходит у Дейкстры. По крайней мере, пока.
Аноним 19/07/16 Втр 01:23:10 #217 №799806 
Алсо эта книжка есть на русском.
Аноним 19/07/16 Втр 01:26:39 #218 №799808 
>>799805
>Жадность алгоритмов тебе никак не объяснит, что происходит у Дейкстры
Вполне себе объясняет. Там на каждом шаге делается оптимальный выбор.
Аноним 19/07/16 Втр 01:28:21 #219 №799809 
>>799805
>Алгоритм Дейкстры с очередью с приоритетами. На пикриле можно увидеть основную операцию очереди с приоритетами
Нет, это хуйня, а не очередь с приоритетами. Очередь нужна для извлечения ребра наименьшего веса за O(1), а по ссылке и на пикче - брутфорс. Пиздец наркоманы.
Аноним 19/07/16 Втр 01:37:14 #220 №799817 
14688814347730.jpg
>>799808
>Вполне себе объясняет. Там на каждом шаге делается оптимальный выбор.
Ну раз объясняет, то расскажи нам тогда, в чем СУТЬ?


Аноним 19/07/16 Втр 01:38:44 #221 №799819 
14688815249830.png
>>799809
Блядь, вот это кадр к нам занесло, пиздец просто.

>Очередь нужна для извлечения ребра наименьшего веса за O(1)
Охуительные истории. Ты бы хоть книжки умные почитал, перед тем, как такую хуйню постить.
Аноним 19/07/16 Втр 01:39:43 #222 №799820 
>>799817
>СУТЬ
Ты из Герцена, что ли? Какую-то суть в алгоритмах ищешь.
Аноним 19/07/16 Втр 01:42:20 #223 №799822 
>>799817
На каждой итерации выбираешь ближайшую вершину. Если метку этой вершины можно улучшить, то улучшаешь, делаешь записи в массив, и такие же действия повторяешь для вершины, ближайшей к текущей.
>>799819
Именно так. Очередь с приоритетами нужна для того, чтобы элемент с наибольшим или наименьшим приоритетом извлекать за O(1).
Аноним 19/07/16 Втр 01:42:29 #224 №799823 
>>799820
Лолка, а ты думаешь все алгоритмы выдумают просто так? Типа раз и догадался? Лал.
Аноним 19/07/16 Втр 01:53:54 #225 №799827 
>>799822
>На каждой итерации выбираешь ближайшую вершину
Почему ближайшую? А не, например, дальнюю. Или посередине. Или первую. Ты тупо пересказываешь алгоритм, а я спросил, почему он выглядит именно так, а не иначе.

>Именно так. Очередь с приоритетами нужна для того, чтобы элемент с наибольшим или наименьшим приоритетом извлекать за O(1).
Бля, ну залезь и почитай, заебал. O(1) - это время лучшей реализации такой очереди, но саму очередь определяют 2 операции: доступ к минимальному элементу и вставка. Вполне можно придумать ситуацию, когда константное время вставки элемента будет предпочтительнее, чем константное время изъятия. И в такой ситуации лучше будет применить очередь, основанную на массиве.
Аноним 19/07/16 Втр 02:01:24 #226 №799832 
>>799827
>Почему ближайшую? А не, например, дальнюю. Или посередине. Или первую
Потому что для каждого кратчайшего пути к какой-то вершине любая последовательность ребер в этом пути - тоже кратчайший путь. Поэтому выбираются ближайшие вершины, которые входят в кратчайший путь.
Аноним 19/07/16 Втр 02:24:47 #227 №799843 
Завтра буду писать так, как у кормена: класть сразу все ребра в очередь и вынимать по одному.
Помогите разобраться, что у меня здесь не так? https://ideone.com/pFZd13
Алгоритм работает верно: перед выполнением std::replace данные в distances правильные. std::replace должен заменить все значения INF = MAX_INT на -1, но почему-то алгоритм заменяет все подряд элементы на -1.
Аноним 19/07/16 Втр 02:25:10 #228 №799844 
>Кормена
Аноним 19/07/16 Втр 02:40:29 #229 №799850 
>>799843
Офигеть, перед возвратом вектор содержит правильные значение, а из функции возвращается вектор со значениями INT_MAX. Как это получилось?

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

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

Может быть проблема в самих крестах?
Аноним 19/07/16 Втр 11:32:08 #232 №800008 
>>800001
Может быть, проблема в том, что необучаемые за 22 года так и не вышли за пределы C с классами?
Аноним 19/07/16 Втр 12:11:00 #233 №800025 
>>799858
Я не пони. Как ты сделал так, что возвращеный вектор стал содержать корректные значения? Я уже дифф сделал, но нихуя непонятно, почти ничего не изменилось же. Как так перед возвратом в векторе одни значения, а после возврата - другие?
Аноним 19/07/16 Втр 12:36:07 #234 №800043 
>>800025
>Я не пони. Как ты сделал так, что возвращеный вектор стал содержать корректные значения? Я уже дифф сделал, но нихуя непонятно, почти ничего не изменилось же. Как так перед возвратом в векторе одни значения, а после возврата - другие?
Лолка, у тебя там счетчик j в for, а используешь i
Аноним 19/07/16 Втр 13:39:25 #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
Аноним 19/07/16 Втр 13:42:25 #236 №800082 
>>800078
И еще:
>Graph::result
Graph::result result = g.dijkstra(...) выглядит как говно, если не использовать auto. Стоит ли вообще использовать в этом классе typedef?
Аноним 19/07/16 Втр 15:52:20 #237 №800206 
14689327405560.png
Какую функцию библиотеки можно использовать вместо этого велосипеда? Нужно вывести элементы вектора, начиная с первого и пропустив элемент с индексом start. Приходит в голову только что-то вроде фильтра или map, который получает предикат, не позволяющий добавить в возвращаемый список элемент с номером start.
Аноним 19/07/16 Втр 16:37:03 #238 №800249 
>>800206
http://ideone.com/8rae98
как-то так, но for (...) лучше
Аноним 19/07/16 Втр 16:39:07 #239 №800253 
СРОЧНО
Как лучше найти элемент который чаще всего встречается в векторе?
Аноним 19/07/16 Втр 16:43:03 #240 №800257 
>>800253
запихай элементы в std::multimap и потом через count получай количество вхождений каждого
Аноним 19/07/16 Втр 16:44:00 #241 №800258 
>>800257
>> std::multiset
Аноним 19/07/16 Втр 16:48:37 #242 №800262 
>>800249
Говно какое-то без замыканий.
http://ideone.com/S1F7D1
Аноним 19/07/16 Втр 16:50:03 #243 №800264 
>>800262
> 2016
> ostream_iterator
Все чёткие пацаны переехали на experimental::ostream_joiner
Аноним 19/07/16 Втр 16:53:36 #244 №800266 
>>800262
ты в лямбды не научился, не захватил значение `start`, нужно его в квадратных скобках написать, а если ты хочешь выкидывать элемент по его индексу, то сделай так:
http://ideone.com/zHkkZL
но так делать не очень хорошо, по сути
Аноним 19/07/16 Втр 16:54:53 #245 №800267 
>>800264
VC++ 2013 не может в перемещающие операции, какой там нахуй экспериментал, не думаю, что даже в 2015 версии такое есть
Аноним 19/07/16 Втр 16:56:46 #246 №800268 
>>800267
Я вообще думаю, нафига в C++ столько ненужного дерьма было понапихано.
Вот неполный список:
- wchar_t
- локали
- ostream_iterator
Аноним 19/07/16 Втр 17:05:45 #247 №800276 
>>800268
Что бы о модулях сидеть пиздеть 10 лет и так ни к чему не придти.
>>800268
>- локали
>- ostream_iterator
Что бы можно было сказать что "мы над чем-то там работаем, у нас нихуя не говёная стандартная библиотека" примерно ту же болезнь унаследовали авторы ди от авторов плюсов, лел
Аноним 19/07/16 Втр 17:15:44 #248 №800287 
Есть массив пар. Как у них быстро first и second местами поменять?
Аноним 19/07/16 Втр 17:19:37 #249 №800288 
>>800287
XORSWAP
Аноним 19/07/16 Втр 17:20:01 #250 №800289 
Сап ребят, такой вопросик. Можно ли на плюсах написать полноценное андроид приложение? Или все таки правда на плюсах писать онли тогда, когда нужен выигрыш в производительности. Очень лень учить Java только ради андроида. Сяп.
Аноним 19/07/16 Втр 17:22:07 #251 №800291 
>>800288
пример кода можно?
Аноним 19/07/16 Втр 17:22:45 #252 №800293 
>>800288
в смысле swap не сработает т.к. make_pair нужен
Аноним 19/07/16 Втр 17:23:08 #253 №800294 
>>800289
NDK читай, там должно быть многое, но на яве проще.
Аноним 19/07/16 Втр 17:23:48 #254 №800296 
>>800287
Всё спасибо сам разобрался
Аноним 19/07/16 Втр 17:24:57 #255 №800298 
>>800289
Там абсолютно нечего учить.

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

А вот про wchar_t я не знаю. Поясните мне. Насколько я понял, он нужен, если мы хотим хранить юникод, поддерживающий несколько языков одновременно. Какие альтернативы?
Аноним 19/07/16 Втр 18:01:05 #258 №800325 
>>800316
>С каких пор локали перестали быть нужными?
С таких, что для них ничего не гарантируется. Только наличие локали "С". Какой смысл вносить в стандарт entity, для которой не предоставляется никаких гарантий? Как писать переносимый код с этим?

> ostream_iterator был еще в оригинальной реализации i/o потоков.
Кому нужен вывод с delimeter-ом после последнего элемента?

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

По мне так wchar_t и прочие локали только сбивают с толку. С ними невозможно написать переносимый код, хотя кажется, что для переносимости они добавлялись.
Аноним 19/07/16 Втр 18:04:15 #259 №800330 
>>800325
>Кому нужен вывод с delimeter-ом после последнего элемента?
Да не ебу, просто нельзя говорить, что эту хуйню запилили вместо модулей. Я вообще этой поеботой из итераторов и алгоритмов почти никогда не пользуюсь. Нахуй на каждый чих они зоделали функций, я не ебу.
Аноним 19/07/16 Втр 18:05:28 #260 №800331 
>>800330
> нельзя говорить, что эту хуйню запилили вместо модулей.
Я вообще что-то говорил про модули?! о_О

> Я вообще этой поеботой из итераторов и алгоритмов почти никогда не пользуюсь.
Скорее всего, зря.
Аноним 19/07/16 Втр 18:07:37 #261 №800333 
Как обфусцировать код без потери производительности?
Аноним 19/07/16 Втр 18:10:01 #262 №800336 
>>800333
Название какой-нибудь простенькой проги скажите.
Аноним 19/07/16 Втр 18:15:23 #263 №800344 
>>800336
Чтобы из консоли работала и быстро.
Аноним 19/07/16 Втр 18:23:31 #264 №800358 
Пишу в истерике, выручай, анон! Пишу тебе прямиком из двухтысячных! Не компилитсо, однако, если поставить "::MY_RESULT"(намекая на глобальную область видимости?) то компилится. Алсо в моем времени компилился и без двойных двоеточий. Делал свои потуги под VS2015
Код тут: http://pastebin.com/x1N2tSub
Аноним 19/07/16 Втр 18:24:08 #265 №800359 
>>800333
>>800336
>>800344
Продолжу вопрос этого хуя. Насколько сильно обфускаторы влияют на генерацию ассемблерного кода? Так можно обходить сигнатурные анализаторы?
Аноним 19/07/16 Втр 18:31:46 #266 №800371 
>>800358
>typdef
Аноним 19/07/16 Втр 18:33:12 #267 №800373 
>>800358
насчет очепятки с typedef`ом. тут все ок, это я просто пьяненький был, когда писал. так шо ошибка актуальна.
Аноним 19/07/16 Втр 18:34:15 #268 №800376 
>>798022 (OP)
Хелп! Как завершить поток ввода в консоли windows 10? Ctrl-Z не помогаетвыводит ^Z, enter тоже.
Аноним 19/07/16 Втр 18:34:50 #269 №800378 
>>800376
http://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/
Аноним 19/07/16 Втр 18:36:45 #270 №800379 
>>800359
На кой хуй вообще обфусцировать исходный код, если при одинаковой логике конечный ассемблерный код не будет отличатся?
Аноним 19/07/16 Втр 18:39:04 #271 №800380 
>>800378
Ну бля(
Аноним 19/07/16 Втр 18:39:26 #272 №800381 
>>800379
>На кой хуй вообще обфусцировать исходный код
Я думаю этот все тот же дебил, что уже неделю спамит своим фейк.av. Вероятно его поделие после нескольких тредов в /b уже добавили в базы и теперь он ищет обфускатор.
Аноним 19/07/16 Втр 18:56:45 #273 №800390 
>>800206
А зачем? Разве через if не проще и быстрее написать? Да и код понятней, не?
лабодаун
Аноним 19/07/16 Втр 18:59:12 #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'
Аноним 19/07/16 Втр 19:00:51 #275 №800397 
>>800396
>bool isReadValue() const
Уже поправил на isReadOnly. Не помогло.
Аноним 19/07/16 Втр 19:07:10 #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 стандарт, в котором конструктор преобразования с аргументом по умолчанию может работать как дефолтный конструктор.
Аноним 19/07/16 Втр 19:07:24 #277 №800407 
>>800396
>QT
Мамке своей это скажи, капслоковый мудель.
>Q_OBJECT
Открой и посмотри. Добавляет соответствующий для Qt контент в класс.
> Q_PROPERTY
А вот хуй знает, но для них что-то генерирует мок-компилятор.
Аноним 19/07/16 Втр 19:08:58 #278 №800412 
>>800406
>что компилятор Qt не поддерживает 11
Какой ещё компилятор Qt, дурындель?
Аноним 19/07/16 Втр 19:11:06 #279 №800420 
>>800412
>Какой ещё компилятор Qt
MetaObjectCompiler?
Аноним 19/07/16 Втр 19:13:17 #280 №800424 
>>800412
Который я прописал в настройках (MinGW).
Аноним 19/07/16 Втр 19:14:42 #281 №800426 
Ненавижу qt т.к. кресты не тот язык на котором можно писать гуи и сделал он для великих дел, а не кодинга мышью. А софтвар дефлоперы самые менее опущенные из всех зашкварных программистов. Раньше десктоп был на дэлфи и дэлфидаунов за программистов не считали. Потом появился дотнет и сишарп. Они почему-то перестали считаться зашквареными, но десктоп остался работой для тупых. Кресты не для тупых. Qt не для крестов.
Аноним 19/07/16 Втр 19:18:21 #282 №800436 
14689451011730.png
>>800426
>Кресты не для тупых
Напиши-ка решение дискретной задачи о рюкзаке на нумералах Чёрча, Манька.
Аноним 19/07/16 Втр 19:25:25 #283 №800447 
>>800420
Он к компилятору плюсов не относится никак.
Аноним 19/07/16 Втр 19:32:58 #284 №800457 
>>800396
Пиздец. Оказывается, все дело в том, что QT ссу в рот капсохейтеру заставляет определять классы в хедерах. Если класс определен в файле имплементации, все это почему-то не будет компилироваться.
Аноним 19/07/16 Втр 19:36:06 #285 №800463 
14689461666520.png
Ого, то есть из-за последнего private после появления Q_OBJECT в сорусе необходимо ставить public, если это нужно.
Аноним 19/07/16 Втр 19:38:24 #286 №800470 
>>800463
1) Q_OBJECT ставится в самом начале.
2) Классы по умолчанию и так приватны, вась.
>>800457
Ссу в рот твоей мамаше, проверяй.
Аноним 19/07/16 Втр 19:41:15 #287 №800475 
>>800470
>проверяй
Что проверять-то, обезьяна мемасная?
Аноним 19/07/16 Втр 19:41:46 #288 №800478 
>>800475
У собаки проверяй.
Аноним 19/07/16 Втр 19:51:53 #289 №800488 
>>800436
Нумералы Черча не полны по Тьюрингу, маня.
Аноним 19/07/16 Втр 19:54:37 #290 №800491 
>>800488
>Чёрча
>по Тьюрингу
Ух как байтодебила понесло.
Аноним 19/07/16 Втр 19:58:18 #291 №800496 
>>800488
Вроде полны.

http://neerc.ifmo.ru/wiki/index.php?title=%D0%9B%D1%8F%D0%BC%D0%B1%D0%B4%D0%B0-%D0%B8%D1%81%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5
> На основе этого всего уже можно реализовать эмулятор машины тьюринга

>>800436
А кресты тут при чём?
Аноним 19/07/16 Втр 20:09:01 #292 №800507 
Почему у меня все вылетает, когда я вывожу массив типа char c \0 в конце?
Аноним 19/07/16 Втр 20:11:38 #293 №800510 
>>800507
Разобрался, уебываю.
Аноним 19/07/16 Втр 20:28:02 #294 №800521 
ПОясните тупому ньюфагу что не так?
Почему у меня всегда выводит число 2, а должно, вроде бы, выводить квадраты дальше.
Аноним 19/07/16 Втр 20:30:38 #295 №800524 
14689494382920.png
>>800521
Ой, пик забыл.
Аноним 19/07/16 Втр 20:33:38 #296 №800527 
14689496185380.png
14689496185391.png
>>798022 (OP)
Посоветуйте, как можно код улучшить. Мне кажется, я хуево написал. Это задачка из Страуструпа. По задумке вводятся 2 числа и один символ. Числа потом выводятся, а если символ равен |, то консоль закрывается.
Хотелось бы, чтобы третий символ не обязательно было вводить, а еще лучше, чтобы | можно было вместо одного из чисел ввести и ввод прекратился бы. Конкретно непонятно, как проверить тип данных, которые поступают из cin.
http://pastebin.com/e5JAXf8h
Аноним 19/07/16 Втр 20:34:27 #297 №800532 
>>800524
А ты сам можешь объяснить что делает твоя программа? По шагам каждую строчку расскажи.
Аноним 19/07/16 Втр 20:36:54 #298 №800533 
14689498142260.png
>>800532
Точно, забыл про задание. Я задание по страуструпу делаю - пик.
Хотел пока сделать так, чтобы до 1000 выводились квадраты по порядку.
Аноним 19/07/16 Втр 20:39:29 #299 №800538 
>>800533
На программу свою посмотри. Прочитай блять каждую строчку.
Аноним 19/07/16 Втр 20:42:14 #300 №800539 
>>800538
Я там отдельно функцию вынес - sqr.
Суть в том, что в цикле идёт обращение к этой функции, в которой если
- square = 1, то прибавляется 1
- если != 1, то умножается на самого себя
Только я не пойму почему не работает.
Аноним 19/07/16 Втр 20:44:37 #301 №800542 
>>800533
Из одной главы задачи решаем, ахуеть. Только ты дальше продвинулся.
Аноним 19/07/16 Втр 20:46:39 #302 №800544 
>>800539
В функции не нашёл ошибку? Тогда расскажи что в мэйне делаешь.
Аноним 19/07/16 Втр 20:52:41 #303 №800553 
>>800544
Инициализирую square, потом в цикле беру функцию sqr из square. Я не пойму, почему в функции sqr не увеличивается square.
Аноним 19/07/16 Втр 20:57:40 #304 №800561 
>>800553
>почему в функции sqr не увеличивается square.
А он есть в твоей функции? У тебя там s
Аноним 19/07/16 Втр 21:00:35 #305 №800570 
>>800561
В функции вроде не обязательно чтобы имена совпадали, нет?
Я заменил s на square - всё равно не работает.
Аноним 19/07/16 Втр 21:02:19 #306 №800571 
>>800570
Это значит ты не правильно описал что в мэйне происходит. Заново расскажи.
Аноним 19/07/16 Втр 21:02:50 #307 №800573 
>>800527
Бамп. Я тоже комментарий хочу
Аноним 19/07/16 Втр 21:04:17 #308 №800578 
>>800527
Тупое условие. Не понимаю чего он хочет. Есть авторское решение?
Аноним 19/07/16 Втр 21:07:12 #309 №800583 
14689516330270.jpg
>>800571
Я не понимаю. Почему-то функция не работает.
Аноним 19/07/16 Втр 21:09:16 #310 №800585 
>>800583
Думаешь функция не работает? Тогда проверяй её ещё раз.
Аноним 19/07/16 Втр 21:11:19 #311 №800587 
14689518798950.png
>>800585
Вот, упростил, но не понимаю. Должно же выводить 1, 2, 3 етц.
А оно мне бесконечную 2 выводит.
Аноним 19/07/16 Втр 21:12:44 #312 №800592 
>>800587
Может ошибка не в функции? Мэйн прочитай. Каждуй строчку поясни.
Аноним 19/07/16 Втр 21:15:26 #313 №800593 
>>800592
Иницизализирую square и rice_count, потом цикл:
до тех пор пока квадрат <= счёт_риса ТО:
вывести функцию квадрата

функция просто +1 делает
Аноним 19/07/16 Втр 21:16:07 #314 №800594 
>>800578
Нет походу. Во введении написано, что на сайте есть решения избранных задач. Но я там нифига найти не могу.
http://www.stroustrup.com/programming.html
Аноним 19/07/16 Втр 21:17:56 #315 №800597 
>>800593
Всё происходит так как ты описал. А как должно быть?
Аноним 19/07/16 Втр 21:19:21 #316 №800599 
>>800593
http://informatics.mccme.ru/mod/book/view.php?id=563&chapterid=304
Аноним 19/07/16 Втр 21:19:45 #317 №800601 
14689523858450.png
>>800597
НУ так и должно быть, а вывод просто число 2 ббесконечно.
Аноним 19/07/16 Втр 21:19:48 #318 №800602 
>>800594
Какая глава?
http://stroustrup.com/Programming/Solutions/exercise_solutions.html
Аноним 19/07/16 Втр 21:21:13 #319 №800603 
Напомните литературу про сетевое проганье на языке богов.

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

Впрочем, кресты — это тоже в какой-то степени задротство.
Аноним 19/07/16 Втр 21:53:55 #324 №800636 
>>800622
>Ты путаешь ум и задротство
Сказал петушок, не приводя определения "ума". Когда спорят, например, ученые, они сначала договариваются о терминах, чтобы каждый понимал, о чем точно они спорят. Вот поэтому ты петушок. И все крестухи такие же петушки
Аноним 19/07/16 Втр 21:54:22 #325 №800637 
>>800496
Лямбда-исчисление != нумералам Черча. Это все равно что сказать, что раз кресты полны, то числовые литералы тоже.
>>800491
Ну ты словарь-то открой, должно полегчать.
Аноним 19/07/16 Втр 21:54:51 #326 №800638 
>>800636
> Когда спорят, например, ученые
Ну так ты не учёный, а хуй мочёный.
Аноним 19/07/16 Втр 21:55:20 #327 №800639 
НЕ
КОРМИТЕ
ЛАБОДАУНА
Аноним 19/07/16 Втр 21:58:26 #328 №800642 
>>800636
Определения "петушка", "ученых" и "определения" в студию, маня. Не, ну серьезно, я, конечно, понимаю, что маневрирование помогает психологически, когда нет аргументов, но мы же твои приемы насквозь видим, лучше бы занялся чем-нибудь полезным и не нервничал лишний раз.
Аноним 19/07/16 Втр 22:00:08 #329 №800645 
14689548082180.jpg
>>800638
Я АВТОР СТАТЕЙ, ДОКЛАДОВ И МОНОГРАФИЙ
Аноним 19/07/16 Втр 22:00:35 #330 №800647 
>>800645
Ссылки на препринты.
Аноним 19/07/16 Втр 22:01:25 #331 №800648 
>>800645
Или на proceedings.
Аноним 19/07/16 Втр 22:02:25 #332 №800651 
>>800647
https://habrahabr.ru/post/274099/
https://habrahabr.ru/post/269731/
https://habrahabr.ru/post/266851/
Аноним 19/07/16 Втр 22:06:37 #333 №800659 
>>800639
Запушил QWORD тебе в рот.
Аноним 19/07/16 Втр 22:19:49 #334 №800672 
>>800618
А что этот амперсанд делает, что без него не работало?
Аноним 19/07/16 Втр 22:23:06 #335 №800676 
>>800672
Амперсанд называется "зделать заебись". Если что-то не работает, ставишь его.
Аноним 19/07/16 Втр 22:24:46 #336 №800680 
>>800672
>>>800599
вот тебе анон скинул ссылочку, прочитай раздел "Передача параметров по значении и по ссылке", а вообще лучше все прочитай. Удачи.
Аноним 19/07/16 Втр 22:37:59 #337 №800694 
>>800676
проиграл, спасибо.
sageАноним 19/07/16 Втр 22:38:39 #338 №800696 
>>800694
С тобой никто не играл.
Аноним 19/07/16 Втр 23:54:58 #339 №800761 
14689616990760.png
>>800651
На острие науки, хуле.
Аноним 20/07/16 Срд 00:00:20 #340 №800769 
>>800761
Обтекай, старпёр.
Аноним 20/07/16 Срд 00:01:32 #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 секунды, что бесконечно много для такой операции. Можно устранять избыточность запросов к БД, создать адекватное соединение, но моя гипотеза такова, что я не смогу организовать работу серьезно быстрее.

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

Аноним 20/07/16 Срд 00:02:08 #342 №800772 
>>800771
>небольшой рассчет
Аноним 20/07/16 Срд 00:02:48 #343 №800774 
>>800772
Да-да, знаю, что он пиздец антинаучный и уровня /b, но я тупой, как пробка.
Аноним 20/07/16 Срд 00:06:13 #344 №800779 
>>800774
И я там кажется обосрался. Уже сам не знаю, как считать. Короче, у меня цель - один блок информации в секунду. От запроса к серверу до выгрузки в базу данных.

Один блок информации - от 1 до 6000 юнитов. Вариативность объема юнита от 4 байт до 70 байт (по оптимистичном расчету) и до 150 байт (по грустному расчету)
Аноним 20/07/16 Срд 00:08:57 #345 №800784 
>>800779
>Один блок информации - от 1 до 6000 юнитов. Вариативность объема юнита от 4 байт до 70 байт (по оптимистичном расчету) и до 150 байт (по грустному расчету)
К сожалению, вайпнул всю информацию. Могу лишь сказать, что в среднем на блок информации - 1000 юнитов. Да, долбоеб, не посчитал моду, например. Про объем юнита просто в голове прикинул. Могу ошибаться, так как у меня при сохранении некоторых юнитов в бд были сообщений о том, что varchar(256) превышен, что пиздец странно.
Аноним 20/07/16 Срд 00:11:06 #346 №800788 
Нахуй ты считаешь средний вариант, если нужно брать максимальный?

И еще объясни, ты хочешь в реалтайме принять данные по сети, сконвертировать и сохранить на диск, а обрабатывать ты уже будешь потом?
Аноним 20/07/16 Срд 00:11:45 #347 №800790 
>>800771
Почему не взять юниты большего размера? У тебя узкое место в скачивании данных? Его же никак не ускорить.
Аноним 20/07/16 Срд 00:12:20 #348 №800791 
>>800788
Похоже конвертирование у него и есть обработка.
Аноним 20/07/16 Срд 00:15:49 #349 №800797 
>>800771
>- Многопоточность. Как оптимально организовать доступ к очереди?
Уверен это распространённая проблема и статьи экспертов помогут тебе больше чем советы с двача.
Аноним 20/07/16 Срд 00:23:41 #350 №800806 
>>800788
Максимальный = 6000 юнитов на блок. Необработанный юнит может весить и по 1 кб, обработанный = 150 байт, так как извлекаются всего 2 поля.
>>800790
Нет, у меня есть идея, как увеличить пропускную способность: сжать документ, найти канал шире. Узкое место скорее всего тут исключительно в обработке данных.

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

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

>>800797
Зашел сюда чисто по старой памяти. Очень мило общались с Qt господином. Да и к тому же, анон частенько дает дельные советы.
Аноним 20/07/16 Срд 00:34:36 #351 №800816 
>>800806
>Схема такая:
У тебя 20мбит потока данных всего, нафиг ты хочешь сжимать, а, шакал? Я более чем уверен, что ты добьешься нужной производительности и на своем проекте на джаве, просто нужно запустить профайлер и посмотреть, где оно тормозит.

Торрент-клиенты и 500мбит могут выдавать, твоя задача очень скромненько смотрится на их фоне.
Аноним 20/07/16 Срд 00:37:11 #352 №800817 
>>800816
Хорошо, а подход вообще целесообразен? Просто мой предыдущий подход, который мне казался наиболее оптимальным (запрос->обработать->очередь->отправить в бд->сохранить в бд) брал почти по 3.7 секунды на блок, что пиздец, как много.
Аноним 20/07/16 Срд 00:40:35 #353 №800823 
>>800817
>запрос->обработать->очередь->отправить в бд->сохранить в бд
А типа есть другие варианты, лол?

>брал почти по 3.7 секунды на блок
Для таких проблем умные люди придумали профайлер. Может у тебя там менеджер памяти дохуя времени тратит, а все остальное ходит быстро. Тогда тебе просто нужно пул данных заебенить и все будет круто.
Аноним 20/07/16 Срд 00:47:21 #354 №800829 
>>800823
>А типа есть другие варианты, лол?
Очередь у меня была в облаке, поэтому может быть и задержка была - sqs. Второй обосрамс, что я видимо сделал крайне хуевый десериалайзер и сериалайзер json объектов. В итоге у меня один блок дважды парсится, бля. Наверное, в облако стоит тупо только обработанный юнит отправлять без обертки.

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

Ладно, хотя бы теперь яснее стало, пока все описывал. Попробую на Java дописать, а там может и на крестах.
Аноним 20/07/16 Срд 00:51:46 #355 №800834 
>>800829
>Очередь у меня была в облаке, поэтому может быть и задержка была - sqs
Почему у тебя очередь и парсер на разных тачках? Ты планируешь масштабирование?
Аноним 20/07/16 Срд 00:55:47 #356 №800842 
>>800834
Да. Парсеров может быть дохуя.
Аноним 20/07/16 Срд 00:58:02 #357 №800845 
>>800842
Олсо, я нигде не могу найти вменяемых бэнчей (ага, потому что не знаю, что гуглить). Вдруг Java дохуя медленная будет для этой задачи.
Аноним 20/07/16 Срд 01:05:00 #358 №800855 
MZ
Аноним 20/07/16 Срд 01:05:33 #359 №800857 
>>800845
Ну ты блин гонишь
https://www.google.com/search?client=safari&rls=en&q=java+profiler&ie=UTF-8&oe=UTF-8
Аноним 20/07/16 Срд 01:15:07 #360 №800863 
>>800857
Бля, ну профайлер - это заебись, но я бы хотел посмотреть, например, как себя ведут те или иные типы данных vector vs. x и т.д. Выгугли библиотеку, которая json парсит. Выбрал правильно, пока читал - понял, что говном занимаюсь.
Если описать алгоритм подробнее.
Запрос-ответ=>кидаю внутреннему воркеру в отдельный тред=>вытаскиваю данные=>упаковываю опять в нужный json=>отправляю в очередь=>ловлю в очереди=>распаковываю=>отправляю в бд.
В общем, действительно прихожу к выводу, что нужно во-первых, оптимизировать парсер json, срать не в облако, а себе в ФС, а потом погонять профайлером.
Аноним 20/07/16 Срд 01:36:09 #361 №800879 
Посоны, я нашел зеркало того двача: http://peid.has.it
Аноним 20/07/16 Срд 13:53:51 #362 №801179 
Можно ли при помощи EFLAGS определить, что программа находится под эмулятором? Например, при помощи popfd изменяется значение какого-то привилегированного бита в EFLAGS, исключение обрабатывается эмулятором, но реальное значение в процессоре не изменяется. Тогда, читая EFLAGS и сравнивая его значение с ожидаемым, можно ли определить эмуляцию?
Аноним 20/07/16 Срд 14:31:17 #363 №801202 
>>801179
Ты заебал, лалка. Твою поделку в любом случае вскроют быстрее, чем очко твоей мамаши, понимаешь ты это?
Аноним 20/07/16 Срд 14:37:22 #364 №801209 
>>801202
Ты не того детектишь, петушок. Меня удивляет, вообще, что форс Куранина настолько серьезным. Думал сначала, что кто-то траллит или распространяет криптолокер, а там, похоже, действительно самодельный антивирус. Пацаны его даже реверсили.
Аноним 20/07/16 Срд 14:38:44 #365 №801210 
>>801209
Я ничего не говорил про Куранина, а вот ты спалился, петух.
Аноним 20/07/16 Срд 14:43:15 #366 №801213 
http://pastebin.com/GVyrtZwz

Почему этот heap-based Prim's Minimum Spanning Tree algorithm не работает?
Аноним 20/07/16 Срд 14:45:29 #367 №801216 
>>801213
Потому что это не heap-based prim's minimum spanning tree algorithm.
Аноним 20/07/16 Срд 14:54:23 #368 №801221 
>>801210
Но ты говорил это вчера, рустерок.
Аноним 20/07/16 Срд 14:58:20 #369 №801223 
>>801221
Может и не я.
Аноним 20/07/16 Срд 14:59:39 #370 №801224 
>>801223
А может и ты. К чему эти нелепые отговорки? Стыдишься чего-то, петушок?
Аноним 20/07/16 Срд 15:10:00 #371 №801229 
Я вчерашний кун, что 2 выводил бесконечно в функции.
Я всё понял.
Аноним 20/07/16 Срд 15:24:06 #372 №801248 
Как правильно сравнить вектор int со списком int? Писать функцию, сравнивающую пары элементов?
Аноним 20/07/16 Срд 15:27:23 #373 №801262 
https://ideone.com/1P9gsV - поясните, какое сделать условие в цикле, чтобы там еще 1 раз цикл прошёл после выполнения условия?
Т.е. в задаче надо сделать так, чтобы последнее отображение было после 1000, а у меня получается до неё.
Аноним 20/07/16 Срд 15:29:01 #374 №801268 
Взял короче книжку по крестам из шапки, которая референс от Страуструпа и которая устаревшая, и это, ебать там всё СЛОЖНА. Даже всякие жабы и шарпы полегче будут. Хотя это конечно с какой-то стороны хорошо, ибо программирование сугубо интеллектуальная деятельность вроде математики, САМОРАЗВИТИЯ СУПЕР ИИ ТЕХНОКРАТИЯ, но с другой стороны я не завидую вкатывающимся охранникам 27 лет из пятерочки, у них мозги взорвутся и они с большой вероятностью выкатятся обратно, кек.
Аноним 20/07/16 Срд 15:31:56 #375 №801274 
>>801268
>Взял короче книжку по крестам из шапки, которая референс от Страуструпа и которая устаревшая, и это, ебать там всё
Читал какого-то Стравуструпа в 15 лет, когда дрочил на вирасы и журнал ксакеп. Понимание какой-то сложности не представляло. Архитектура пека гораздо сложнее синтаксиса и библиотеки петушиных крестов.
Аноним 20/07/16 Срд 15:32:54 #376 №801275 
>>801268
Не сложно, а не твое. Тебе программирование неинтересно просто.
Аноним 20/07/16 Срд 15:40:18 #377 №801282 
>>801275
Не было бы интересно - не лез бы.
Аноним 20/07/16 Срд 15:51:29 #378 №801294 
>>801248
std::transform (std::begin(v), std::end (v), std::begin (l), std::back_inserter (res), std::less);
Аноним 20/07/16 Срд 15:54:46 #379 №801296 
>>801268
Попробуй ангельскую версию же. Она не устарела и не зашкварена отвратительным имхо какого-то русского старпера, поэтому читается легче.
Аноним 20/07/16 Срд 15:58:59 #380 №801298 
>>801296
Хорошо. Больше не буду лезть с тупыми постами.
И вдогонку. Сложность это то, что добавляет шарм и магию, возбуждает интерес. Простые вещи быстро приедаются.
Аноним 20/07/16 Срд 16:37:26 #381 №801334 
>>801179
При чём тут C++-тред? Больше негде насрать?
Аноним 20/07/16 Срд 16:40:21 #382 №801337 
>>801334
Асмотред-то утонул, а у сишников сидят какие-то поехавшие и дрочат на синтаксис.
Аноним 20/07/16 Срд 16:44:25 #383 №801338 
Есть ли у окон приложений (не игр) fps?
Аноним 20/07/16 Срд 17:19:39 #384 №801358 
>>801338
Конечно. Сколько раз в секунду они обновляют результирующее изображение
Аноним 20/07/16 Срд 17:59:14 #385 №801403 
Как без сторонних библиотек получить какие-нибудь уникальные данные компа? Типа дата установки биоса или серийный номер жётского диска.
Аноним 20/07/16 Срд 18:04:30 #386 №801407 
>>801403
Забыл сказать что прога на винду.
Аноним 20/07/16 Срд 18:06:30 #387 №801415 
>>801337
Сишники не могут дрочить на синтаксис, там ~50 ключевых слов.
Если хочешь посмотреть на реальное задрачивание синтаксиса и неочевидной хуйни, ты на месте.
Аноним 20/07/16 Срд 18:08:48 #388 №801420 
>>801202
А что, он малварь пишет?

Почему бы на чистом С не делать, нахуя тебе кресты для этого?
Аноним 20/07/16 Срд 18:28:18 #389 №801427 
>>799742
Проиграл с дауна. Мимо 2000+ рейтинга на кодефорсес
Аноним 20/07/16 Срд 18:30:05 #390 №801429 
14690286055250.png
Проиграл с этого школьника.
Аноним 20/07/16 Срд 18:32:37 #391 №801431 
14690287576030.png
Ананасы, как в Qt сделать контейнер для других виджетов, который будет просто задавать фон? В deisgner-e использовал QFrame и ставил бэкграунд колор, но через код этот QFrame нихуя не показывается.
Пикрелейтед - как я сделал в designer-e. Фрэйм с белым бэкграундом и парочкой label в нем.

вот код, который не работает:
http://pastebin.com/uZv2tUQs

Аноним 20/07/16 Срд 18:32:51 #392 №801432 
>>801427
А ты не только проигрывай, а еще объясняй, что не так и как исправить.
Аноним 20/07/16 Срд 18:33:39 #393 №801433 
>>799843
http://acm.timus.ru/problem.aspx?space=1&num=2093
Вот сюда вот отправляй

все тот же классный парень >>801427

Аноним 20/07/16 Срд 18:34:24 #394 №801435 
>>801432
Моя последняя работающая реализация такая: https://ideone.com/O1ziGq
Аноним 20/07/16 Срд 19:04:15 #395 №801465 
>>801431
Заменил QFrame на QWidget - все работает.
Аноним 20/07/16 Срд 19:11:09 #396 №801473 
Устанавливаю с++ на винду по этой инструкции http://www.biosoft-m.ru/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_GNU_C_(gcc)_%D0%B4%D0%BB%D1%8F_Windows_(MinGW)
Но мне не хватает некоторый хейдеров. string.h stdlib.h. Жалуется что не может их найти поэтому не компилирует мой хэлоуфорд. Как их все установить?
Аноним 20/07/16 Срд 19:29:32 #397 №801501 
>>801179
>>801403
>>801407
Бесполезно, дружочек, бесполезно.
Аноним 20/07/16 Срд 19:31:37 #398 №801505 
>>801501
Первый пост не мой. Я уже код написал. http://pastebin.com/KTEhj139 Виндой давно не пользовался и не могу туд компилятор установить. >>801473
Помоги
Аноним 20/07/16 Срд 19:31:57 #399 №801506 
>>801473
>устанавливаю C++
Ты небось забыл установить интернет и гугл.
Аноним 20/07/16 Срд 19:33:07 #400 №801509 
>>801506
Это шутка такая.
websocket Аноним 20/07/16 Срд 19:42:16 #401 №801522 
14690329363780.jpg
Такое дело. Пишу вебсокет сервер. Handshake прошёл без проблем, данные с клиента тоже получаю норм, но при отправке на клиента строки AAA, конверчу её в 129:3:62:62:62, после чего добиваю пробелами \r\n\r\n и шлю в сокет. В ответ клиент сука рвёт соединение с ответом header invalid. Сижу над tcpdump-ом третий час. Rfc весь перелопатил
Анон-погромист, выручай!
Аноним 20/07/16 Срд 20:20:16 #402 №801554 
Чем посоветуете генерировать доку к коду?
Аноним 20/07/16 Срд 20:36:36 #403 №801577 
14690361969370.jpg
- Ну ты у меня такого рантайма получишь, суканах. Иди сюда! Собирайся! Собирайся в бинарник! Отвечай, говори. Все эти макросы, шаблоны у тебя в исходниках или в хэдерах. А эти ассерты... Эти ассерты!!! Все ваша блядская архитектура, проделки Александреску. Собирайся в бинарник, ибо стандартизация уже близко! Стандартизация.... Раскрывай пачки. Раскрывай пачки, сука! Смотри что я из-за тебя делаю, на компоновку!!!
- Тебе нравятся мои методы, да?
- Да!
- А мне нравятся предупреждения!
- Все кому нравятся предупреждения - говнокодеры!!!
- Мне нравится, как они подсвечиваются...
- СУКАНАХ!!!
- Нравятся ошибки...
- Суканах!
- Нравится крашиться...
- Суканах!
- Я люблю костыли...
- СУКАНАХ!
- Я хочу костыль, я знаю, что тебе тоже нравится... Я знаю, что тебе нравится, что я хочу костыль... Тебе нравятся мои макросы, мне тоже. А еще мне нравятся нестандартизованные фичи...
- Суканах!
- Хочу неопределенное поведение! Я так хочу!
- А я не хочу!
- Хочешь почувствовать мои баги своим отладчиком? Хочешь?
- Сучка, ты сводишь меня с ума, заткнись! Ты испорчена! Тебе нет места в памяти!
- Я чувствую, тебе нравится... Ты сходишь с ума от моей скорости...
- Я оптимизирую тебя.
- Ты оптимизируешь меня? О как прекрасно, обожаю оптимизации, и тебе тоже понравится. Обожаю cstdlib, обожаю ассемблерные вставки... Вот это да! Этот профайлер, он сводит тебя с ума... Видишь, он тебе нравится, и я тебе нравлюсь. Перепиши меня, это же так естественно... Нравится? Ведь нравится. Быстрее... Быстрее!
- Ты настоящая сука!
- Собирай релизную версию... Вот молодец...
- Что ты задумала?!!
- Чудненько, а теперь посмотри на размер моей кучи...
- Суканах!!!
- Мне так нравится...
- Нет, а если я добавлю памяти? Нет! Сука, блядь, дедлайн близок... Ах ты сука! Ты меня совращаешь, блядская сука, СУКА!!! Сука... Знаешь, что бывает с такими суками? Знаешь? Их запускают под valgrind'ом, запускают без отладки!
- О да, виртуализуй мой процесс! Как это прекрасно... Трассировка это прекрасно, вдвигай поглубже, глубже, в библиотеки...
- Получай, сука! Вот тебе за все хорошее! Нравится, сука? Вот тебе статический анализ! Я отправляю коммит!!!
- Пора бы...
- Смотри, сука! Иди сюда... Смотри! Смотри, что ты наделала! Это ты виновата...
Аноним 20/07/16 Срд 21:56:32 #404 №801631 
>>801338
Нет, они же не перерисовывают постоянно.
Аноним 20/07/16 Срд 22:01:02 #405 №801637 
>>801473
Бамп
sageАноним 20/07/16 Срд 22:02:49 #406 №801638 
>>801637
> Данная информация предназначена только только для IT-специалистов по системной интеграции модулей БИОСОФТ-М.
Аноним 20/07/16 Срд 22:04:31 #407 №801640 
>>801638
Похуй должно быть. mingw везде одинаковый. Как его блять устанавливать?
Аноним 20/07/16 Срд 22:08:49 #408 №801642 
>>801640
Сейчас бы в 2016 в доки не уметь
http://www.mingw.org/wiki/Getting_Started
Аноним 20/07/16 Срд 22:10:32 #409 №801643 
>>801642
Да мне всего пару хейдеров надо. Как из докачать?
sageАноним 20/07/16 Срд 22:10:45 #410 №801644 
>>801640
mingw обычный вроде не в моде сейчас. Везде mingw-w64.

Можешь попробовать поставить его через MSYS2.
Аноним 20/07/16 Срд 22:11:43 #411 №801645 
>>801644
Окей. А как поставить msys2?
sageАноним 20/07/16 Срд 22:13:52 #412 №801647 
>>801645
https://msys2.github.io/
Аноним 20/07/16 Срд 22:15:23 #413 №801651 
>>801647
На установке инструкция кончается. Что потом?
sageАноним 20/07/16 Срд 22:15:41 #414 №801652 
>>801645
Только запускай не msys-shell, а mingw-w64 shell если хочешь подключать виндовые хедеры.
sageАноним 20/07/16 Срд 22:16:20 #415 №801653 
>>801651
http://stackoverflow.com/questions/30069830/how-to-install-mingw-w64-and-msys2
Аноним 20/07/16 Срд 23:01:34 #416 №801685 
>>801640
Ставь TDM-GCC, будет тебе счастье.
Аноним 20/07/16 Срд 23:02:52 #417 №801687 
>>801685
А что это? Там winapi есть?
sageАноним 20/07/16 Срд 23:08:30 #418 №801690 
>>801685
Ты ещё djgpp посоветуй.
Аноним 20/07/16 Срд 23:39:13 #419 №801720 
>>801631
Ну так и fps не 120, лалка.
Аноним 21/07/16 Чтв 10:52:10 #420 №801925 
14690875302520.png
Поясните, вот я как бы почти решил задачку: https://ideone.com/a7Ze4y
НО, если я ввожу большие числа, например 1000000, то там начинается бесконечное непонятно что - пикрил.
Я правильно понял что это из-за того, что int имеет ограничение на размер? Если так - как его обойти, если не так, что я не так сделал? С маленькими значениями работает ок.
Аноним 21/07/16 Чтв 10:59:22 #421 №801928 
>>801925
int замени на long long. И вообще, почитай про типы в C++.
Аноним 21/07/16 Чтв 11:02:54 #422 №801931 
>>801928
Сдела лонг лонг,
с 1 000 000 000 работает
с 1 000 000 000 0 не работает
А как сделать чтобы работало? Или это уже продвинутый уровень?
Аноним 21/07/16 Чтв 11:09:24 #423 №801938 
>>801931
использовать длинную арифметику..
Аноним 21/07/16 Чтв 11:19:24 #424 №801948 
Сап крестаны, вообщем припекло. В универе были лабы, которые я с переменным успехом мог выполнить, а сейчас лето, решил что-нибудь написать и понял, что той базы, что мне дали нихуя не хватает, что я не могу нихуя годного написать, что мне делать?
Профа у меня нихуя не прогерская, т.е. на след курсе мы будем делать проги для подсчёта интегралов, а никаких новых курсов по проге не будет. Прочитать книгу с более глубоким подходом к изучению и опять сосницкого сделать? Что мне делать?
Аноним 21/07/16 Чтв 11:30:22 #425 №801959 
>>801948
ну блять, определись, что именно ты хочешь написать и двигайся.. просто гугли. программист, не использующий гугол - !программист.
Аноним 21/07/16 Чтв 11:32:00 #426 №801962 
14690899204710.gif
>>801959
Я не он, но я хочу писать игры.
>>801925-кун
Сначала доизучаю книгу страуструпа, а дальше будут смотреть в сторону дума первого.
Хочу сделать что-то типа своего дума с открытым миром, рпг и т.д. с такой графикой.
Аноним 21/07/16 Чтв 11:39:17 #427 №801970 
>>801962
игры делаются так:
1. пишется движок. там определяется физика, хуйня с графикой разная, ну и т.п. Нужны знания с++(на чем-нибудь другом напишешь или напишешь, но хуево - твое говно будет лагать), тригонометрии, как выводить графику и еще там чето я хз.
2. на самом движке создается игра. тут все уже намного легче, потому что почти никаких знаний и не надо.

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

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

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

Есть ещё варианты, как сделать быстрее?
Аноним 21/07/16 Чтв 12:40:02 #429 №802019 
Так, посоны, короче. Есть Visual Studio 2013, с++11 стандарт уже вышел, но в чем соль, в MSVC 2013 я заметил, что не работают:
перемещающие копирование и присваивание по-умолчанию
constexpr
Это пиздец...
Аноним 21/07/16 Чтв 12:42:37 #430 №802022 
>>802015
зачем в вектор, если максимальное кол-во строк уже задано?
std::array<char, 1048576>
Аноним 21/07/16 Чтв 12:45:34 #431 №802025 
>>802022
Строка где-то от 70 до 150 байт занимает.
А ты, если я правильно понял, предлагаешь создать массив из 1048576 элементов? Плюс ещё данные терять бы не хотелось.
Аноним 21/07/16 Чтв 12:47:15 #432 №802026 
>>802015
Зачем вектор? Просто делай fread(), если счетчик не переполнился fwrite().
Аноним 21/07/16 Чтв 12:54:56 #433 №802032 
>>802015
считывай в буферный массив 4+-2 мегабайт, затем из буферного массива в выходной файл.
Аноним 21/07/16 Чтв 12:56:56 #434 №802034 
14690950164930.jpg
>>802019
>Есть Visual Studio 2013, с++11 стандарт уже вышел
>2016
>C++17
>Visual Studio 2015 Update 3
Марти, ты ли это?
Аноним 21/07/16 Чтв 13:18:34 #435 №802053 
>>802034
можно уже и vs 15 превью поставить, если хочешь быть на острие
Аноним 21/07/16 Чтв 13:30:39 #436 №802063 
>>802015
ппц
fgetc и putc
Аноним 21/07/16 Чтв 13:36:35 #437 №802070 
>>802032
ппц
стандартный ввод-вывод и так буферизируется, нах еще что-то делать
Аноним 21/07/16 Чтв 13:37:23 #438 №802073 
>>802070
А ВДРУГ НЕ СБУФЕРИЗИРУЕТСЯ?
Аноним 21/07/16 Чтв 13:43:56 #439 №802085 
>>802070
кек, даже не знал
Аноним 21/07/16 Чтв 13:50:14 #440 №802090 
>>802073
>>802085
вдобавок размер буфера оптимизирован под целевую платформу
Аноним 21/07/16 Чтв 15:36:13 #441 №802175 
Почему этот код компилируется, если nums - вектор, но не компилируется, если nums - list? Про инвалидацию итераторов ниже знаю.

https://ideone.com/EoXjv0
Аноним 21/07/16 Чтв 15:38:09 #442 №802179 
>>802175
Ошибки ты не читаешь принципиально?
У std::list итератор не random accesss
Аноним 21/07/16 Чтв 17:20:07 #443 №802235 
>>801522
Danke!
Я сам разрулил. Проблема была в отправке данных с флагом out of band.
Аноним 21/07/16 Чтв 17:27:08 #444 №802239 
Скачал MinGW отсюдова http://sourceforge.net/projects/mingw
вроде установил. Добавил в PATH путь до /MinGW/bin
Теперь вопрос. Как добавить возможность компилировать c++11?
Если писать так g++ main.cpp, то ругается на синтаксис c++11, если писать так g++ -std=c++11 main.cpp то ругается еще больше. Как быть?
Аноним 21/07/16 Чтв 18:33:53 #445 №802261 
>>802239
Показывай код и выхлоп компилятора, телепаты в отпуске.
Аноним 21/07/16 Чтв 18:51:02 #446 №802264 
>>802261
Это все было на работке, сейчас я дома за бубунтой. Завтра все скину
Аноним 21/07/16 Чтв 20:09:04 #447 №802306 
>>802261
На секунду вернулся на ЛОР образца 2008 года. Приятные воспоминания...
Аноним 21/07/16 Чтв 20:29:03 #448 №802316 
Хочу научиться тестировать свои алгоритмы, но не знаю, с чего начать. Нагуглил какие-то юнит-тесты, но, по-моему, это какая-то хуйня. Во всех примерах этих тестов, которые я видел, просто сравнивается результат вызова функции с ожидаемым значением. Но что, если алгоритм слишком сложный, и возможных входных данных и результатов овер 9000? Так, как показано в статьях, протестировать все эти случаи невозможно.
Аноним 21/07/16 Чтв 20:40:13 #449 №802319 
>>801554
Бамп вопросу.
Аноним 21/07/16 Чтв 21:28:16 #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) и ситуацию с переполнением.
Аноним 21/07/16 Чтв 21:29:01 #451 №802355 
>>801554
Очевидный doxygen

Пример:
http://llvm.org/doxygen/
Аноним 21/07/16 Чтв 22:24:07 #452 №802380 
>>802316
Доказывай, а не тести.
Аноним 21/07/16 Чтв 23:51:18 #453 №802422 
Что делать, если начал читать книгу по С++ и к 500 странице забыл, что написано на 100 допустим?
Аноним 22/07/16 Птн 01:15:46 #454 №802446 
>>802422
Отвечайте
Аноним 22/07/16 Птн 01:28:11 #455 №802451 
>>802422
Не учить что на какой странице написано.
Аноним 22/07/16 Птн 01:36:39 #456 №802461 
>>802451
Я просто решил проверить и наугад открыл 100 страницу
Аноним 22/07/16 Птн 01:38:41 #457 №802463 
>>802461
И оказалось, что ты не угадал, что там должно быть.
Аноним 22/07/16 Птн 01:47:39 #458 №802470 
>>802422
Всё правильно делаешь. Сначала учишь Си с классами, потом его забываешь и с каждой сотней страниц учишь всё более современный с++.
Аноним 22/07/16 Птн 01:49:07 #459 №802472 
>>802463
Не траль плиз
Аноним 22/07/16 Птн 05:07:24 #460 №802536 
>>802034
Смищно, потому что CUDA 7 версии (в том числе и 7.5) работает только на MSVC 2013, ахахахаха.
Вроде 8 уже поддерживает 2015
Аноним 22/07/16 Птн 07:12:08 #461 №802547 
>>802261
http://pastebin.com/WgEDd3FK
Выхлоп
Аноним 22/07/16 Птн 09:14:09 #462 №802569 
>>802536
>> fatal error C1189: #error: Microsoft Visual Studio
2015 Update >= 2 is not supported yet!
КЕК, я ебал эту нвидиа
Аноним 22/07/16 Птн 11:36:23 #463 №802637 
Как разучиться писать на си с добавлением классов и начать нормально(современно) жить?(
Аноним 22/07/16 Птн 12:23:49 #464 №802680 
14691794292520.jpg
Господа, вопрос по синтаксису. Читаю Страуструпа "Программирование принципы и практика в с++"
И встретил пару моментов, которые я понять не могу. Будьте дбобры объясните.

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;
};
Аноним 22/07/16 Птн 12:32:17 #465 №802685 
>>802680
ist{iname} - это новый вид инициализации в c++11
ist.exceptions(), очевидно, вернет текущую маску, а | ios_base::badbit добавил badbit. | - это побитовое или, да. С помощью & и | легко ставить флаги в одно число, а не заводить несколько булинов.

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

В общем, читай про фичи c++11
Аноним 22/07/16 Птн 12:40:00 #466 №802693 
>>802637
Начать писать на Rust или Go.
Аноним 22/07/16 Птн 12:46:26 #467 №802701 
14691807861610.jpg
>>802685
Весьма благодарен.
Аноним 22/07/16 Птн 13:49:38 #468 №802726 
>>802680
>MSVC2010
Сейчас какой год, мудень? Десятый?
Ещё и литру 89 года выпуска возьми, для консистентности рабочего окружения.
Аноним 22/07/16 Птн 13:59:22 #469 №802730 
>>802726
Действительно мудень, я забыл, что у меня 2013 IDE есть.
Я 2010 оставил для winforms.
Аноним 22/07/16 Птн 14:59:47 #470 №802754 
Почему итератор и ссылка на элемент 4 не инвалидируются после удаления элемента, стоящего перед четверкой?

https://ideone.com/UzhSnu
Аноним 22/07/16 Птн 15:04:48 #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.
Аноним 22/07/16 Птн 15:07:07 #472 №802763 
>>802760
В книге написано, что инвалидируются все итераторы и ссылки на элементы, следующие после удаляемых, а ты мне про return value втираешь. Страшилки из книги не воспроизводятся.
Аноним 22/07/16 Птн 15:14:06 #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.
Аноним 22/07/16 Птн 17:06:30 #474 №802816 
14691963907890.jpg
ВОПРОС НА МИЛЛИОН
Хочу стать супер оптимизатором, смотреть, что за ассемблерный код там сгенерировался, использовать ассемблерные вставки и прочее.
Но ассемблер я почти не знаю. Было дело как-то давно в универе, но я абсолютно ен помню ничего.
Собственно, вопрос:
Что мне почитать про ассемблер? Что мне нужно знать про архитектуры процессоров(под разные архитектуры - разные языки же)? Что мне нужно знать, касательно С++?
Аноним 22/07/16 Птн 17:07:29 #475 №802818 
>>802816
http://beginners.re
Аноним 22/07/16 Птн 17:10:25 #476 №802819 
>>802816
Тебе нужно научится писать на плюсах (а не учить ассемблер) и оптимизировать в первую очередь алгоритмы – вот и 95% производительности в любом софте.
Аноним 22/07/16 Птн 17:30:16 #477 №802828 
>>802818
Спасибо. Именно то, что я искал.
Аноним 22/07/16 Птн 18:42:06 #478 №802861 
>>802730
>2013
>какой сейчас год
Ты дурак или прикидываешься, няша? Ну открой шапку, там есть ссылка на прекрасную последнюю VS 2015, в которой половина проблем старых версий давно решена.
Аноним 22/07/16 Птн 19:00:34 #479 №802869 
В чем разница между итераторами контейнеров vector и list, из-за которой мой код сегфолтится, если сравнивать элементы вектора на четность таким образом: if (*it % 2 == 0)?
Если убрать == 0, но оставить приведение по модулю, то код компилируется и запускается.

https://ideone.com/FvKaCp
Аноним 22/07/16 Птн 19:39:03 #480 №802880 
>>802869
Если у списка написать ==0, то тоже все валится. http://stackoverflow.com/questions/4645705/vector-erase-iterator
Аноним 22/07/16 Птн 19:47:14 #481 №802886 
>>802880
end() инвалидейтится у векторя
Аноним 22/07/16 Птн 19:51:59 #482 №802888 
>>802886
С ним все в порядке. erase() возвращает указатель на следующий элемент за удаляемым. После удаления последнего итератор указывает туда же, куда и end(), но потом увеличивается в цикле и вылезает out of range.
Аноним 22/07/16 Птн 22:47:04 #483 №803031 
>>802547
И никто не ответил. Да вы охуели
Аноним 23/07/16 Суб 01:51:46 #484 №803189 
>>803031
Код где, блеать?
Аноним 23/07/16 Суб 02:09:46 #485 №803194 
>>803189
От сейфа?
Аноним 23/07/16 Суб 03:43:32 #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

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

Как сделать то же самое без лямбда-выражения? То есть передать в for_each предикат с 1 параметром, но при этом с еще одной переменной "извне".
И функторы тоже нельзя использовать.
Аноним 23/07/16 Суб 14:13:33 #490 №803430 
>>803429
bind
Аноним 23/07/16 Суб 15:41:52 #491 №803501 
Подскажите, используя какие структуры/типы данных удобней и прельстивей ебать байты?
Аноним 23/07/16 Суб 15:54:06 #492 №803508 
>>803429
А нахуя так вообще делать?
Аноним 23/07/16 Суб 18:25:47 #493 №803576 
>>802816
Ни разу не пытаюсь критиковать желание, но хотелось бы узнать у анона - вообще актуально ли в 2016 использовать ассемблерные вставки? Всегда казалось, что компилятор почти во всех случаях генерит крайне годный код. Не выйдет ли так, что оптимизация ручками будет либо в ноль, либо слишком маленький прирост или вовсе тормоза?
Аноним 23/07/16 Суб 18:57:58 #494 №803602 
>>803189
нахуй тебе код? Тебе достаточно знать то, что там используются штучки с++11
Аноним 23/07/16 Суб 19:01:31 #495 №803607 
>>803576
1) Открой, например, исходники любого видеокодека – куча ассемблерного кода. И так во всех проектах где нужно делать что-то за 0.02 вместо 0.05. Или можешь посмотреть как пишутся всякие алгоритмы компрессии;
2) Будешь неаккуратен – словишь как раз таки регрессию производительности, т.к. сама вставка и всё что с ней связано оптимизироваться не будет (поэтому кстати куски которые нужно написать на асме пишут на нём полностью, а не вставкой с парой инструкций), а так же есть куча платформозависимой хуиты и хуиты в разных компиляторах (в стандарте прописана только необходимость наличия вставок, остальное не оговаривается от слова совсем).
Аноним 23/07/16 Суб 19:31:22 #496 №803625 
Почему рекурсивная реализация бинарного поиска перестает компилироваться, если итераторы передавать по ссылке?

https://ideone.com/bp36j1

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

Что не так с этим кодом? Один баг я пофиксил, заменив std::min на std::min_element. Но теперь происходит что-то непонятное.
Аноним 23/07/16 Суб 21:06:26 #499 №803671 
>>803664
Как минимум std::iter_swap вместо std::swap

Остальное не проверял, просто за что глаз сразу зацепился.
Аноним 23/07/16 Суб 21:07:08 #500 №803673 
>>803664

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

Выебнулся, молодец
Аноним 23/07/16 Суб 21:07:50 #501 №803674 
>>803673
> std::min_element
> int
Обосрался, молодец.
Аноним 23/07/16 Суб 21:17:22 #502 №803679 
>>803671
С iter_swap'ом лучше, но все еще не работает как надо. https://ideone.com/ylzMAK

Пошел читать про iter_swap.
Аноним 23/07/16 Суб 21:22:27 #503 №803681 
>>803679
- auto smallest = std::min_element (it + 1, v.end());
+ auto smallest = std::min_element (it, v.end());
Аноним 23/07/16 Суб 21:27:21 #504 №803683 
Назрел вопрос.
Что должен уметь делать джун-девелоп с++?
И как можно оценить свой уровень?
Аноним 23/07/16 Суб 21:28:36 #505 №803684 
>>803681
Почему так? Я рассматриваю текущую ячейку it и ищу минимум среди следующих за ней ячеек. Найденный минимум свапаю со значением it.
Аноним 23/07/16 Суб 21:30:19 #506 №803685 
>>803684
А если в текущей ячейке элемент меньше всех, идущих после него? Как у тебя на втором шаге, когда it == 2, а smallest == 3
Аноним 23/07/16 Суб 21:38:45 #507 №803687 
14692991259410.png
>>803685
Тогда, видимо, у Кормена ошибка. Его алгоритм будет свапать элемент в текущей ячейке даже если он наименьший.
Аноним 23/07/16 Суб 21:40:52 #508 №803688 
>>803687
У него нет никакой ошибки.
Аноним 23/07/16 Суб 21:50:38 #509 №803691 
>>803688
Он ищет минимум среди элементов от (i+1)-го до n-го. Предполагается, что выполняется инвариант цикла, состоящий в том, что элементы до i-го включительно минимальны и отсортированы. Но у меня почему-то так не работает.
Аноним 23/07/16 Суб 21:54:32 #510 №803697 
>>803691
А пункт "A." ты не видишь?
Аноним 23/07/16 Суб 21:55:08 #511 №803698 
>>803691
> Но у меня почему-то так не работает.
Твой код не соответствует его псевдокоду.
Аноним 23/07/16 Суб 21:57:34 #512 №803703 
>>803697
В самом деле. Когда алгоритм простой, я как-то пропускаю некоторые детали.
Аноним 23/07/16 Суб 22:09:44 #513 №803709 
>>803683
просто не лезь сюда, на работу все равно не устроишся, явка, веб может быть еще успеешь..
Аноним 23/07/16 Суб 22:12:45 #514 №803710 
>>803709
Веб как-то не впечатил(
Я полгода в вузе учил си, потом плюсы ещё столько же.
Ща шароюбюсь по гиту, исправляя баги в kdeшных программах(легкие).
Вот и хочу узнать возмут ли меня куда-нибудь джуном или надо что-то подучить.
Аноним 23/07/16 Суб 22:16:48 #515 №803711 
>>803709
Конкуренции боишься?
Аноним 23/07/16 Суб 22:57:05 #516 №803729 
>>803674
for (auto &i : v)
std::cout << i << " ";

Да инт.

Попытался еще раз выебнуться, молодец
Аноним 23/07/16 Суб 22:58:46 #517 №803730 
>>803710
i++ на ++i в for правишь?
Куда KDE без тебя.
Аноним 23/07/16 Суб 23:17:55 #518 №803743 
>>803730
Нет, баги -это новые фичи или некритичные недоделки, которые висят в вишлисте на сайте кде и касаются уже функционала программ.
Но это уход в сторону от вопроса.
Так что должен уметь джун?
Аноним 24/07/16 Вск 00:22:56 #519 №803798 
Меня рассмешила эта манька, у которой у Кормена ошибка в коде. Просто апофеоз юношеского максимализма.
Аноним 24/07/16 Вск 00:25:54 #520 №803802 
>>803798
Да тебя, аутиста, и auto вместо int смешит.
Аноним 24/07/16 Вск 00:54:29 #521 №803826 
>>803743
Писать рабочий код, не слишком выбивающийся из принятых в коллективе конвенций. Простые истины типа code complete надо. Виртуальные деструкторы надо. Анальные пляски на мутирующих шаблонах не надо, если только это не проект специально для создания какой-нибудь уберлибы. Оптимальность надо на примитивном уровне типа отсутствия дублирования данных, экспоненциальных алгоритмов и подобных непотребств, умение дрочить ассемблер не надо, но приветствуется в эмбеддеде.

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

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

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

Первые три пункта всегда находятся именно в таком порядке друг относительно друга, по убыванию важности. Четвертый пункт может быть на любом месте, в зависимости от ситуации.
Аноним 24/07/16 Вск 01:00:20 #522 №803829 
>>803826
Спасибо.
Думаю, что пойду в ближайшее время что-то искать по работе.
Пока не очень получается ориентироваться в классах больших проектов.
То бишь мне должны примерно сказать где вносить правки.
Это с опытом приходит?
Аноним 24/07/16 Вск 01:31:41 #523 №803846 
>>803743
Ты меня, человека который написал змейку, учишь, что такое баг?
Аноним 24/07/16 Вск 03:41:14 #524 №803888 
>>803710
>исправляя баги в kdeшных программах
Сам ищешь? Почему до тебя их никто не нашёл и не исправил? Ты знаешь какой-то секрет?
24/07/16 Вск 10:47:58 #525 №803959 
С удовольствием бы покодил на сишке, а что?

За веб хоть платят, а на придумывание своей пердольной ебы финансов нету.

Аноним 24/07/16 Вск 11:40:57 #526 №803979 
>>803829
Да. Но тебе скорее для начала дадут таску, где ты пишешь с нуля какой-нибудь второстепенный модуль, а не правишь чужие.
Аноним 24/07/16 Вск 12:03:50 #527 №803996 
>>803888
Да, я знаю их секрет.
У них есть сайт с описанием багов.
Вбиваешь в поиске jj + название программы и готово.
https://bugs.kde.org/
Аноним 24/07/16 Вск 18:29:53 #528 №804297 
перекат, не?
Аноним 24/07/16 Вск 18:45:50 #529 №804325 
>>804297
Не.
Аноним 24/07/16 Вск 18:56:00 #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;
}

Правильно ли я всё сделал?
Аноним 24/07/16 Вск 18:58:24 #531 №804348 
>>804343
> вполне работающий код
> #include "stdafx.h"
> #include <conio.h>
> #include <process.h>
У меня твой "вполне работающий" код даже не скомпилируется. Уноси свой спермокод отсюда.
Аноним 24/07/16 Вск 19:04:51 #532 №804355 
>>804348
#include "stdafx.h" - необходимая параша для компиляции в Visual Studio (в моей версии).
#include <conio.h> и #include <process.h> для работы кода вообще нахуй не нужны, если ты об этом. Просто привычка совать это в любую парашу - мало ли, вдруг функционал пригодится.
Аноним 24/07/16 Вск 19:40:12 #533 №804387 
>>804355
>#include "stdafx.h"
precompiled headers выключи и все будет работать без этого.

>#include <conio.h>
нинужно

>#include <process.h>
нужно, но не тебе
Аноним 24/07/16 Вск 20:20:09 #534 №804421 
>>804387
Оп, спасибо за совет. Не знал, что их можно отключить. Кстати, а зачем они вообще в студии?
Аноним 24/07/16 Вск 20:24:38 #535 №804426 
>>804421
Чтобы не парсить один и тот же хедер, который инклудится 1000 раз в большом проекте.
Аноним 24/07/16 Вск 21:05:54 #536 №804475 
Поясните, почему double работает с очень большими числами, а инт - нет?
Аноним 24/07/16 Вск 21:16:41 #537 №804487 
>>804475
Потому что разные типы данных?
Аноним 24/07/16 Вск 21:19:49 #538 №804488 
>>804475
У doubl'а есть лицензия на работу с очень большими числами, а у инта -- нет.
Аноним 24/07/16 Вск 21:32:30 #539 №804500 
>>804475
Потому что double хранит числа не точно. По сути он хранит небольшое число и степень, в которую число нужно возвести.

Отсюда появляется такое дерьмо:
double i = pow(2, 68);
assert(i == (i + 1));
Аноним 24/07/16 Вск 21:51:33 #540 №804521 
НОВЫЙ ТРЕД
https://2ch.hk/pr/res/804519.html
https://2ch.hk/pr/res/804519.html
https://2ch.hk/pr/res/804519.html
Аноним 05/08/16 Птн 18:43:42 #541 №813950 
>>798022 (OP)
Иногда один С++ заебывает, хочу почитать для развития что-нибудь про алгоритмы и организацию самих железок. Есть что-нибудь для ньюфагов, но без воды?
comments powered by Disqus

Отзывы и предложения