[Ответить в тред] Ответить в тред

03/04/16 - Набор в модераторы 03.04 по 8.04
26/03/16 - Конкурс: Помоги гомункулу обрести семью!
15/10/15 - Набор в модераторы 15.10 по 17.10



[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 633 | 36 | 118
Назад Вниз Каталог Обновить

C++ тред 32 Аноним 06/05/16 Птн 23:53:59  736493  
14625680394220.png (35Кб, 512x512)
оп наш что то охуел
стих придумать не успел
запилю ка перекат
пусть анончик будет рад


прошлый тред: >>726671 (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: Дальше переходишь по ссылке, пробуешь отвечать на вопросы и понимаешь, что ты пока в самом начале пути. Кроличья нора крестов практически бездонна, поэтому продолжать постигать тонкости и детали можно очень и очень долго. В то же время, на этом этапе у тебя должно быть достаточно знаний, чтобы уверенно писать неплохой код. Поэтому читай исходники открытого софта и библиотек, отправляй пулл-реквесты в них, читай книжки по предметным областям и общим методикам разработки, а дальше уже сможешь запилить свой проект или вкатиться в существующий.


Аноним 07/05/16 Суб 00:14:47  736516
>>736493 (OP)
Стих получше чем у предыдущего опа
Аноним 07/05/16 Суб 08:56:19  736654
>>736493 (OP)
Проиграно!

Мне уже нравится этот тред.
Аноним 07/05/16 Суб 14:25:06  736878
блять проебали юбилейный тред а оп наверно к нему особый стишок готовил или оп-пик рисовал
Аноним 07/05/16 Суб 15:00:20  736922
>>736878
>блять проебали юбилейный тред а оп наверно к нему особый стишок готовил или оп-пик рисовал
Ути-пути какие мы нежные. Стишочек не завезли, картиночка не радует глаз - все, буду сидеть в бамплимите и кушать говно.
Аноним 07/05/16 Суб 15:12:45  736942
>>736922
Кушать говно не обязательно.
Аноним 07/05/16 Суб 15:55:24  736990
>>736942
Пошел нахуй
Аноним 07/05/16 Суб 18:33:48  737146
14626352287120.jpg (61Кб, 317x372)
Вот такой код:

const string s = "Sap /pr";
for (auto &c : s){ /... / }

Написано, что для c выводится тип const char&. Почему? Разве auto не отбрасывает const? Или при амперсанде в деклараторе это будет low-level const?

И еще: тут s типа const string. В объектах типа string символы наверное хранятся как char массив или что-то типа того, а если это const string объект, то по идее как const char.
Вопрос: каким образом при создании const string объекта внутри него char преобразуется в const char?
Аноним 07/05/16 Суб 19:00:54  737161
>>737146
Почитай про вывод типов
Аноним 07/05/16 Суб 19:04:06  737167
>>736516
Если к достоинству всратости прибавить достоинство краткости, то у стиха из шапки будет не менее двух достоинств, господа мушкетеры.
Аноним 07/05/16 Суб 19:33:26  737197
>>737146
>каким образом при создании const string объекта внутри него char преобразуется в const char?
Никаким не преобразуется. У строки есть char begin() и const char begin() const. Компилятор видит, что строка константная, и выбирает последний вариант для итератора.
Аноним 07/05/16 Суб 19:36:07  737200
>>737146
1) С какого хуя auto что-то там должен отбрасывать? На его место просто подставляется таргетный тип. Отбрасывать const можно и нужно с помощью const_cast, а так же всегда можно сделать это через c-style или reinterpret_cast и выстрелить себе в ногу из жопы;
2) Открываешь реализацию итератора, смотришь что, как и с каким типом там возвращается;
3) Сука, если тебе не нужно менять символы - не передавай их по ссылке, на x64 это будет медленнее варианта с копированием лол.
Аноним 07/05/16 Суб 19:43:04  737201
Is Huile
Not good
Based on a roll
Antonczyk announced joy
Аноним 07/05/16 Суб 20:58:38  737259
>>737197
char возвращается оператором [] из строки. Если эта строка константная, то этот char в const char компилятор также преобразует?

Это же костыль, и он неочевиден. "низкоуровнеый язык, всем управляет программист" охуенно.
Аноним 07/05/16 Суб 21:04:37  737263
>>737259
В стринге есть два переопределенных оператора [], один из них возвращает char&, другой просто char.
В случае, если стринг не константный, то будет вызван первый оператор и вернется char&, во втором случае будет вызван второй оператор.
Аноним 07/05/16 Суб 22:09:18  737287
Тут есть гуру Qt?
Не работает велосипедное смешание QTcpServer/QTcpSocket и QThreadPool.
Есть смысл расписывать проблему?
Аноним 07/05/16 Суб 23:38:19  737333
>>737201
op us something ohuel
verse had not come up with
gashes ka roll
anonchik will be happy to let
Аноним 08/05/16 Вск 01:06:55  737380
>>737287
Всегда есть смысл расписать проблему. В овер9000 случаев сам поймёшь в чём она.
Аноним 08/05/16 Вск 01:12:04  737383
>>737380
Ну хорошо.
У меня есть клиент-серверное приложение (чатик).
У клиента есть сокет QTcpSocket
Сервер унаследован от QTcpServer, содержит массив объектов клиентов, в каждом объекте - свой сокет QTcpSocket.
Проблема в том, что если очень быстро отправлять сообщения с клиента - то они "зажевываются" на стороне клиента.
Например, отправил 10 сообщений быстро - прошли хорошо, 11е - зажевалось. То есть оно застряло где-то в очереди к обработке сокета (signal readyRead) на стороне клиента. Самое интересное - при отправке 12го сообщения, обрабатывается 11е, а 12е - зажевывается, соответственно. И так далее.
Вот, могу еще подробнее расписать, если кто-то с таким сталкивался
Аноним 08/05/16 Вск 01:57:24  737393
>>737383
110% проблема в твоём коде.
Кури свою логику при обработке данных. Вероятно, она делает что-то не то, когда получено сразу несколько сообщений.
Учитывая упоминание QThreadPool: внимательно кури порядок операций. Не может ли сложиться ситуация, что данные придут в тот момент, когда ты уже убедился, что их нет, но ещё не попросил систему уведомить тебя о поступлении новых.
Аноним 08/05/16 Вск 07:44:00  737422
14626826408320.jpg (35Кб, 600x800)
Господа, есть одно поле в классе, double типа, и оно не инициализируется в конструкторе, т.е может быть инициализировано а может и нет (Об этом говорит ещё один dirty-flag)

Прикол весь в том что в случае когда оно не инициализировано - я не могу вызвать дефолтный оператор присваивания этого класса , вылетает Floating Point Exception (Underflow error), именно присваивания, я не пытаюсь с этим мусором проводить арифметическую операцию. И что ещё характерно - это только в x86 билде вылетает, в x64 всё нормально.

Т.е в операторе присваивания крешится на месте this->doubleField = that.doubleField

Сталкивались с таким? Природа явления не ясна для меня.
Аноним 08/05/16 Вск 08:27:41  737425
>>737422
ну так инициализируй его всегда и не мучайся
Аноним 08/05/16 Вск 08:31:04  737426
>>737425
Ну я так не могу делать по определённым причинам. Легаси код, всё такое.

Короче мне больше интересно почему ошибка возникает при присваивании, в моём понимании она должна произойти при попытке произвести какую-то арифметическую операцию.
Аноним 08/05/16 Вск 08:52:24  737428
>>737426
Посмотри на ассемблерный код. Может, оно его пытается загрузить в регистр сопроцессора зачем-то, и при этом вылезает ошибка.
Аноним 08/05/16 Вск 09:52:11  737431
>>737422
Код покажи, что ли.
Аноним 08/05/16 Вск 10:19:44  737438
>>737383
Скинь исходники минимально воспроизводимого образца и объясни как воспроизвести.

Посмотрю.
Аноним 08/05/16 Вск 10:29:48  737440
>>737333
Имя славного поэта не напомнишь?
Аноним 08/05/16 Вск 10:59:45  737446
14626943850940.jpg (400Кб, 1920x1200)
начал изучать с++, сильно не пинать
Есть длинный список названий:
ООО Пики и Хуи
ОАО Пики точены
АОА Хуи дрочены
и тд.

Этот список можно запихать в массив из текстового файла - не подходит так как файл всегда открыт для правки.
Можно сразу в коде запихнуть в массив - тоже не удобно так как списков много разных больших и маленьких.
Так вот вопрос: можно ли этот список добавить к коду как дополнительный ресурс и уже из него брать необходимое?
Может криво объяснил, поправьте.
Аноним 08/05/16 Вск 11:14:47  737450
>>737446
Я вообще нихуя не понял ни твоей проблемы, ни что ты хочешь сделать, но попробую выстрелить в небо: в чём проблема использовать вектор или любой другой динамический контейнер?
Аноним 08/05/16 Вск 11:16:26  737452
>>737446
Тебе в Qt - там есть ресурсы.
Будешь открывать свой файл как "qrc://zalupa.txt", а на деле он будет вкомпилен в твою прогу и никто его не отредактирует.
Аноним 08/05/16 Вск 11:16:40  737453
>>737450
Видимо, список СЛИШКОМ большой, чтобы использовать контейнер.
>>737446
Может глянуть в сторону БД, типа sqlite?
Аноним 08/05/16 Вск 11:20:49  737454
>>737452
видел это в qt, но как сделать в с++?
Аноним 08/05/16 Вск 11:22:19  737455
>>737446
Один из вариантов - сериализация.
Аноним 08/05/16 Вск 11:22:31  737456
>>737454
А qt это java чтоле, блять? Охуеть вообще.
Аноним 08/05/16 Вск 11:22:52  737457
>>737453
не хотелось бы подключать базы
Аноним 08/05/16 Вск 11:23:36  737458
>>737456
> это java чтоле
Питон, же.
Аноним 08/05/16 Вск 11:24:25  737459
>>737458
Это PyQt, обвязка поверх крестовых либ.
Аноним 08/05/16 Вск 11:31:44  737463
>>737450
добавить текст как добавляют картинку/звук
типа как >>737452
Аноним 08/05/16 Вск 11:35:27  737465
>>737431
Да я вангую что это на gcc не повторить.

Вот примерно такой код,
https://ideone.com/H0JsOQ

Таки не могу повторить, походу только на x86 Release билде, а дома у меня винды нет чтоб проверить.
Аноним 08/05/16 Вск 11:45:02  737467
>>737446
Если С++11, то можно его тупо заинклудить. Добавь в начале файла const char @str = R"(, а в конце )"; Если нет - то xxd и objcopy тебе в помощь.
Аноним 08/05/16 Вск 11:50:58  737469
>>737467
где об этом подробно прочесть?
Аноним 08/05/16 Вск 11:56:07  737472
>>737465
проверил в VS13 и VS15. Ничего не вылетает.
Аноним 08/05/16 Вск 12:11:29  737476
14626986893020.jpg (34Кб, 600x481)
>>737446
Попробую объяснить вот так:

string list[100501];
list[1] ="ООО Пики и Хуи";
list[2] ="ОАО Пики точены";
.
.
list[100500] ="АОА Хуи дрочены";

Есть вариант как это сделать проще?
Аноним 08/05/16 Вск 12:16:35  737478
>>737469
http://stackoverflow.com/questions/4158900/embedding-resources-in-executable-using-gcc
Аноним 08/05/16 Вск 12:18:15  737479
>>737478
попробую разобрать, это можно применить к >>737476 ?
Аноним 08/05/16 Вск 12:31:20  737482
>>737479
Текст будет в отдельном файле, который вкомпилится в экзешник, обращение к нему через строковую константу. После запуска ты читаешь эту константу, разбиваешь на строки, пихаешь в массив.
Думаю, тебе проще скриптик написать, который читает текстовый файл и генерирует massiv.cpp, и запускать его через твою систему сборки.
Аноним 08/05/16 Вск 12:36:53  737487
>>737472
А ты Floating Point Exceptions вруби в студии.
Аноним 08/05/16 Вск 12:44:21  737491
>>737482
спасибо, буду ковырять
хотя ещё не понял как из файла в строковую запихнуть
Аноним 08/05/16 Вск 12:46:03  737496
>>737487
Всё ок.
Аноним 08/05/16 Вск 12:47:06  737497
>>737491
QFile file("qrc://lalka.txt");
file.open(QIODevice::ReadOnly);
QStringList constants = file.readAll().split('\n');

Как то так
Аноним 08/05/16 Вск 13:28:41  737517
>>737393
Капитан, вначале срабатывает сигнал о новом сообщении, только после этого я запихиваю его в тред.
>>737438
Ничего такого, делаю для себя. Держи, приложил скомпилированные экзешники, если кьют не стоит.
p.s. Я уверен, я много что сделал неправильно.
Алсо, я нашел интересный баг, что если сокет создать в тред пуле, то он отказывается работать напрочь. Поэтому пришлось коннектить клиенты в основном потоке.
http://rgho.st/88KXVZj6C
Аноним 08/05/16 Вск 13:38:44  737524
14627039245640.png (16Кб, 426x171)
>>737517
Это щютка? Мало того, что самый парашный формат архива, который только можно было найти - так еще я и ломать его должен?
Аноним 08/05/16 Вск 13:40:39  737526
>>737524
Это пидородефенс
Ты действительно пароль не знаешь, или просто шутишь?
Аноним 08/05/16 Вск 13:42:03  737528
>>737526
Эээ, единичку попробовал - не работает.
Я че - реально его угадывать должен?
Аноним 08/05/16 Вск 13:44:06  737531
>>737528
стандартный же, ну
Аноним 08/05/16 Вск 13:47:09  737533
14627044294080.png (19Кб, 426x207)
>>737531
Сука, ебись сам со своим говном.
Аноним 08/05/16 Вск 13:50:09  737535
>>737533
Ну прогугли тогда, как определяется стандартный пароль для различных форумов
Аноним 08/05/16 Вск 14:01:33  737551
>>737535
нахуй ты его вообще поставил, даун?

другой-анон
Аноним 08/05/16 Вск 14:12:54  737563
>>737440
Kohl Korutin?
Аноним 08/05/16 Вск 14:17:31  737573
>>737563
Верно, нужно приобрести сборник избранного.
Аноним 08/05/16 Вск 14:52:43  737610
>>737535
Ехай Нахуй, дебил блядь!
Аноним 08/05/16 Вск 16:30:11  737642
Доброго здравия.
Я тут за структуры хотел бы поинтересоваться.
Есть такая хуйня:
http://pastebin.com/5VVA65ic

33 и 34ая строка - уже сделал отдельную переменную, один хуй не понимаю в чем проблема.

Есть два вектора, которые держат две технически идентичные (но разные для восприятия) структуры.
Забиты в одном файле, если важно.

Выделяю под них место, получая инфу с базы.
Для первого - все проходит нормально - приходит значение "4", на "4" и расширяется.

Со вторым все идет через хуй пойми как. Он выбирает даты. Даты выбираются как обычно для qDate (daysTo) - значение "1" - все ок, capacity == 1
Но если значение больше 2 - начинается пиздец.

В функции и в конструкторе выводится "2" - он генерит "4"
В функции и в конструкторе выводится "32" - он генерит "41"

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

Помимо resize пробовал еще reserve - та же ситуация

Куда еще можно копнуть? Кроме ассистанта
Аноним 08/05/16 Вск 16:35:06  737645
>>737642
Блять, а щас reserve заработал
да что ж за магия-то

Благодарю за уделенное время.

продам гараж, куплю тиски для выпрямления анальных рук
Аноним 08/05/16 Вск 17:17:27  737677
>>737642
Ёбаная сука! Говномесный пидорас! Сдохни тварь! Сдохни и не пиши больше! Мои глаза, мои бедные глаза, зачем они видели ЭТО?!

Да, блядь, да. Ебай в assistant, сука, читай, блядь, что там пишут!

reserve - резервирует место, но не создаёт элементы.
rеsize - изменяет размер, т.е. и резервирует и создаёт. Может зарезервировать дохуя больше, чем ты просил. Потому что он, сука, умнее тебя и знает как выделяется память.
size - размер, т.е. количество созданных элементов
capacity - ёмкость, т.е. сколько памяти зарезервировано.
capacity >= size всегда!
Аноним 08/05/16 Вск 17:35:11  737693
>>737517
В твоём коде говна больше чем кода.
Я открыл один только сервер.цпп и уже в шоке.

Вот пара примеров:
ты делаешь waitForReadyRead с ТАЙМАУТОМ БЛЯДЬ! НО НЕ ПРОВЕРЯЕШЬ РЕЗУЛЬТАТ. А что если ничего не придёт и таймаут случится?
ты используешь QDataStream для чтения из сокета. А с чего ты взял, что там достаточно данных для того, чтобы эта операция не вызывала блокировок и читалала то что надо?
Аноним 08/05/16 Вск 18:15:10  737710
14627205101930.png (27Кб, 250x161)
>>737677
Шпокойней-шпокойней.
Помимо таких профессионалов как ты есть и те, кому просто интересно поколупаться. И они таки могут совершать ошибки, особенно на первых порах.
Вспомни себя, к примеру.

Хотя о чем это я, ты же родился с клавиатурой в зубах, конпелятор у тебя в голове встроенный, с первого раза все делаешь без ошибок и вообще - не тупишь никогда по определению
Аноним 08/05/16 Вск 18:47:45  737732
кодить на крестах под линуксом в нетбинсе - совсем извращение или норм?
Аноним 08/05/16 Вск 18:48:22  737733
>>737732
Нетбинс то зачем?
Аноним 08/05/16 Вск 20:14:17  737773
>>737732
Норм, только глаза от жабошрифтов вытекают. Я эклипсом пользовался, там нативная отрисовка, и возможностей не меньше.
Аноним 08/05/16 Вск 21:23:02  737821
А почему лабы идут нахуй?
Аноним 08/05/16 Вск 22:22:27  737856
>>737551
>>737533
Сколько существ[ует/овал] Двач (да, тот самый), так каждый месяц набегают неофиты с этим дебильным вопросом.

Для них поясняю: это специальный IQ-фильтр, который проверяет умение пользоваться хотя бы одним из двух: Гуглом или собственным мозгом.
Аноним 08/05/16 Вск 22:36:21  737869
>>737821
Потому, что мне в очередной раз придется объяснять шефу, что наша новая стажерка-программистка(!) с КРАСНЫМ, блядь, диплом технического ВУЗа не знает "как установить STL в IDE" и что надо было ее принимать на должность кассира или секретаря (только зачем нам третья секретутка в одном офисе).
Аноним 08/05/16 Вск 22:37:51  737872
>>737710
Я был:
последовательней (куда браться за многопоточку, если в тривиальных вещах ошибки)
читал учебники и доки

Да-да доки. Там ангельским текстом для простых смертных заветы по использованию API написаны.

ПыСы.
Поколупаться - профанация, что есть грешно и караться должно без жалости.
Профаны вылезают на рынок и сбивают цену. Затрудняют работу. И подбирать людей и самому работу из-за них менять сложнее.
Аноним 09/05/16 Пнд 00:06:18  737937
14627415780960.jpg (47Кб, 604x340)
Анончик, расскажи мудростей про float to string.

К тебе пришел после гугла, с его советов использую такую конструкцию:
#include <sstream>
float hp;
ostringstream hpOS;
for()
{
hpOS << hp;
//использую hpOS
hpOst.str("");
}

Терпимо стакается с utf8, с помощью такой мерзости как
>File.imbue(locale(locale(), new codecvt_utf8<wchar_t>()));
киррилица вперемешку с нужными данными исправно отправляется в файл (по крайней мере под виндой).


Вопросы:
1.многовато действий для преобразования, есть варианты проще?
2.как вывести один знак после запятой?
Аноним 09/05/16 Пнд 00:07:59  737940
>>737937
>1.многовато действий для преобразования, есть варианты проще?
QString::arg
Аноним 09/05/16 Пнд 00:10:34  737943
>>737940
а через std?
Аноним 09/05/16 Пнд 00:11:09  737946
>>737943
Страдать
Аноним 09/05/16 Пнд 00:11:36  737948
>>737937
В C++11 UTF-8 поддерживается по умолчанию, может как-то копать туда?
>как вывести один знак после запятой?
http://www.cplusplus.com/reference/ios/ios_base/precision/
Аноним 09/05/16 Пнд 00:47:28  737976
>>737948
С 10й студии на 13ю перешел только вчера, собственно потому и спрашиваю.

>precision
Оно задает общее количество знаков. Как лучше поступить вывода всего целого+1го после запятой?
Аноним 09/05/16 Пнд 01:40:18  738000
14627472181070.jpg (12Кб, 299x287)
>>737946
STraDat'

В том же printf() так замечательно все форматируется..

Уже 30 минут ищу, блять.

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

int rcount(int hp)
{
int digitHp = hp;
int _rcount = 1;
for (int i = 0; i<6; i++)
{
if (digitHp/10 >= 1) _rcount++;
digitHp = digitHp / 10;
}
return _rcount;
}

Теперь строка создается так:
hpOS << setprecision(rcount(hp)+1) << hp;

Какое-то говно, хотя бы работает нормально, но бля, задачка на другом языке в 10 раз быстрее бы решилась.
Аноним 09/05/16 Пнд 01:47:09  738002
Может кто пояснить, про указатели в ассемблере?
Допустим есть строка Mas, состоящая из пяти однобайтовых символов.
Нужно заменить все символы, кроме латиницы на какой-то другой символ, допустим /
Вот просто для примера набросал код через указатель
И не совсем понимаю, почему он не работает без указателя, с обычным Mas[cx] я уже решил
http://pastebin.com/PfAzVFdf


Во-первых, если количество итераций и количество знаков без учёта служебного $ совпадает, он внезапно выдаёт мне на один знак больше, а потом ещё и пихает мусор, т.е. явно стирается последний служебний символ, хз по какой причине, ведь итерации всего 2.
Во-вторых, если хоть раз встретится не латиница, он будет заменять любые следующие символы на /.
Аноним 09/05/16 Пнд 03:58:33  738015
>>738002
>из пяти однобайтовых символов

>mov word ptr [di], '/'
Аноним 09/05/16 Пнд 08:00:54  738034
>>738000
>В том же printf() так замечательно все форматируется..
Так и используй его, нахуя тащить говно-iostream туда, где он только мешать будет?
Аноним 09/05/16 Пнд 09:36:26  738049
>>737872
>последовательней
Каким бы ты последовательным не был, прочти тот спойлер, особенно строчку про "никогда не тупишь".

Учебники и доки читаю по мере необходимости использования того или иного функционала, но этот момент пропустил - не отрицаю этого. Объяснил - и на том спасибо.

>Вылезают на рынок

За всех не говори - лично я не вылезаю. У меня и так есть работа, не связанная с погромированием, пишу "в стол" (а точнее для того чтобы помочь себе самому, а не СТАРТАП ЛАЙФХАК МАНИ ХИПСТЕР АЙФОН
Аноним 09/05/16 Пнд 09:48:14  738054
>>737422
Может that.doubleField не инициализирован, и он ругается на него?
Аноним 09/05/16 Пнд 10:36:58  738068
>>738015
Ну 2 байта, не суть, там эти размеры нигде особо не играют роли, вроде как
Аноним 09/05/16 Пнд 12:07:55  738141
Шапку читал, вопрос имею. Для практически полного нюфани кресты подходят как первый серьезный язык программирования? Какая лучшая книга есть на русском с задачами в конце каждой главы?
Аноним 09/05/16 Пнд 12:29:11  738158
14627861513770.jpg (88Кб, 768x432)
>>738068
Как это не имеет значения?
Ты двигаешь указатель на один байт, а читаешь/пишешь слово. А еще эти слова пересекаются. А еще при записи слова в позицию последнего символа затирается ноль (ограничитель строки).

Короче, просто поправь на
>byte ptr
и не доказывай, что и "так должно работать".
Аноним 09/05/16 Пнд 12:38:21  738164
14627867012740.jpg (368Кб, 2000x1086)
>>738141
>как первый серьезный язык программирования
Аноним 09/05/16 Пнд 12:55:48  738178
>>738158
Бля, затупил, мне показалось, что массив однобайтный, потом посмотрел, показалось, что двухбайтный, написал решение для двухбайтного и в итоге он всё-таки был однобайтным.
Аноним 09/05/16 Пнд 13:15:09  738192
>>738164
Хуйня, вот нормальная картинка
http://rgho.st/7vpzp7r8w.view
Аноним 09/05/16 Пнд 13:16:29  738194
>>738164
ИТТ есть работающие в гейдеве? А программистами графики? Кто-нибудь вообще писал тут 3d или, хотя-бы, двухмерную визуализацию?
Аноним 09/05/16 Пнд 13:33:33  738205
>>738194
Ну есть. Правда я джун.
Аноним 09/05/16 Пнд 15:20:14  738287
int array1[10];

int main(){
int array[10];
cout << array1[9] << '\n';
cout << array[9];
}

Почему в array1 все элементы равны нулю, а в array они рандомны?
Понимаю, что array1 глобальный. Но в книге написано, что элементы массивов инициализируются по умолчанию (а для int это 0) вне зависимости от нахождения массива.
Поясните за это плокс
Аноним 09/05/16 Пнд 15:24:39  738291
>>738287
Глобальные элементы и статики инициализируются в нули, а локальные нестатики содержат мусор, так и есть по стандарту.
Сам об этом узнал только недавно, благодаря тесту из шапки, хотя считал, что всегда должен быть мусор.
Аноним 09/05/16 Пнд 15:26:13  738293
>>738205
И много знать из области математики и геометрии нужно?
>>738287
Судя по всему, внутри функции массив только объявляется, то есть под него выделяется память, а вот вне идёт ещё и инициализация. Скорее всего какие-нибудь ебанутые технческие ограничения.
Аноним 09/05/16 Пнд 15:36:25  738320
>>738293
>И много знать из области математики и геометрии нужно?
Вечно один и тот же вопрос. Загугли и скачай книгу math for game developers.
Аноним 09/05/16 Пнд 17:01:21  738431
>>737976
>на 13ю
>2016
>VS2015 Update 2 с Clang'ом и фичами из C++17
Ты ебанутый?
Аноним 09/05/16 Пнд 17:31:49  738452
>>738431
Он на C с классами лабки пишет, ему можно.
Аноним 09/05/16 Пнд 17:32:21  738454
>>738293
>И много знать из области математики и геометрии нужно?
Для графики - линейка в объеме первого курса, но ее нужно очень хорошо понимать. Теормех-гидродинамика для физона.
Аноним 09/05/16 Пнд 17:46:16  738462
>>738454
>Для графики - линейка в объеме первого курса
Полистал уже книжку, вижу, правду говоришь.
>но ее нужно очень хорошо понимать
С пониманием у меня проблем почти никогда не возникает. Понимать-то я её понимал, весьма простая штука, но вот если бы в институте оценки за понимание ставили.
>Теормех-гидродинамика для физона.
А вот это может стать серьёзным препятствием.
Аноним 09/05/16 Пнд 17:59:22  738473
Поясните кто нибудь за именование методов классов.

Чому во всех нотациях их называют начиная с m_ или заканчиваю подчёркиванием? Чому нельзя в конструкторе через this как в яве инициализировать и не издеваться над глазами?
Аноним 09/05/16 Пнд 18:01:13  738475
>>738462
Написал много, но в последний момент стёр.
Просто делай игры и все придет само.
Аноним 09/05/16 Пнд 18:01:24  738476
>>738473
Где это в яве методы инициализируются через this?
Аноним 09/05/16 Пнд 18:01:34  738478
>>738473
m_ - member
>Чому нельзя в конструкторе через this как в яве инициализировать и не издеваться над глазами?
Тебе кто-то запрещает и пиздит тебя палкой, если ты это сделаешь?
Аноним 09/05/16 Пнд 18:10:17  738483
>>738478
>Тебе кто-то запрещает и пиздит тебя палкой, если ты это сделаешь?
Именно это и сделают если закоммичу куда нибудь или в команде с устоявшимся кодстайлом буду писать "отсебятину".
Аноним 09/05/16 Пнд 18:28:53  738495
>>738034
нужно рисовать текст, а не выводить в сосноль.
Аноним 09/05/16 Пнд 18:58:46  738530
>>738478
>m_ - member
Tudod mit jelent ez?
Аноним 09/05/16 Пнд 21:47:13  738643
>>737551
Пароль должен стоять не на архиве, а на скачивание. Чтобы скачивали только двачеры и мимокроки не портили счетчик скачиваний.
Аноним 09/05/16 Пнд 22:33:46  738674
>>738462
>А вот это может стать серьёзным препятствием
Да не станет, не парься. Там все просто. Когда конкретные вещи делать начнешь - сразу станет ясно какие знание нужны, нагуглишь и выучишь.
Аноним 09/05/16 Пнд 22:39:30  738685
>>738473
>Чому нельзя в конструкторе через this как в яве инициализировать и не издеваться над глазами?
Можно, но тогда тебе придется геттеры называть getHuita, как в джаве, что гораздо заебнее.
Аноним 09/05/16 Пнд 22:55:56  738701
14628237561990.jpg (62Кб, 787x1049)
ФОТОШОП МАСТЕР 80 ЛВЛ ВРЫВАЕТСЯ В ЭТОТ ИТТ ТРЕД
Аноним 10/05/16 Втр 00:21:00  738782
>>738483
Сорта говна. Использую тот стиль, что в коде вокруг и мне глубоко похуй на него.
Аноним 10/05/16 Втр 00:46:38  738807
>>738701
Сборник стихов сделай.
Аноним 10/05/16 Втр 00:54:05  738813
>>738807
Какой сборник? Всё на архиаче.
Аноним 10/05/16 Втр 13:22:06  739169
Почаны.
Я ньюфаг (иду нахуй).
Я хочу чтобы мое приложение дебаг мессаджи показывало в отдельной консоли (в нескольких отдельных для разных вещей).
Я понимаю, что мне нужно из родительского приложения запускать процессы консолей, но ума не приложу как организовать между ними обмен данных.
Хочется чтобы в родительском приложении был интерфейс типа
void OpenConsole( enum target );
void MakeEntry( enum target, char* message );
то есть никаких наворотов. Таргет это целевая консоль, их ограниченный список.
Как мне в процессе с таргет консолью принимать эти мессаджи из родительского?
Напоминаю: я ньюфаг и хуй.
Аноним 10/05/16 Втр 13:29:41  739175
>>739169
Винда или Unix-like?
Аноним 10/05/16 Втр 13:33:37  739180
>>739175
Винда.
Аноним 10/05/16 Втр 13:40:42  739185
>>739180
Тогда кури WinAPI, иначе можно было бы наверное использовать файлы-дырки.
Аноним 10/05/16 Втр 15:10:17  739256
>>737937
http://en.cppreference.com/w/cpp/string/basic_string/to_string
Аноним 10/05/16 Втр 19:02:45  739600
вот вы тут плачете что работы на плюсах нет, а мы не можем трех блядь миддлов в Амстердаме и еще трех в другом европейском городе найти.

никто не хочет в Европе работать?
Аноним 10/05/16 Втр 19:07:06  739604
>>739600
>миддлов в Амстердаме
Эй, вы там совсем уже от дудки никакие штоле, укурки ебаные?
Аноним 10/05/16 Втр 19:13:47  739613
>>739600
линк на вакансию
Аноним 10/05/16 Втр 19:34:08  739628
>>739613
никуда не уходи, скину линк через час
Аноним 10/05/16 Втр 20:02:32  739638
>>739613
Окей.
Аноним 10/05/16 Втр 20:02:42  739639
>>739613
https://goo.gl/zhgTTh
там найдешь как остальные вакансии посмотреть
Аноним 10/05/16 Втр 20:12:51  739649
>>739639
Расскажи, что реально вы хотите увидеть в кандидате. Я уже не раз сталкивался, что по описанию я 100% подхожу, а когда дело доходит до приглашения на интервью, то "ой, а у вас еще <то, чего не было в вакансии> нет" или "ой а у вас слишком специфический опыт".

Еще мне интересен требуемый уровень английского. У меня он не fluent, но говорить могу.
Аноним 10/05/16 Втр 20:15:25  739650
>>739639
1.5+ года в С++, оверолл 6+ в айти(суровый саппорт). Жил\работал в Швеции пару месяцев, теперь хочу в Европку на ПМЖ, английский свободный разговорный. По уровню сказал бы, что между джуном и мидлом, не долбоеб. Есть шансы?
Аноним 10/05/16 Втр 20:16:50  739653
>>739649
знание плюсов: от низкоуровнего кода до метапрограммирования. gtest/gmock. Linux environment.
English upper mediate и выше. придется много общаться с голландцами и немцами.
Аноним 10/05/16 Втр 20:17:38  739654
>>739650
я тимлид а не эйчар. попробуй. дойдешь до тех собеседования, узнаешь
Аноним 10/05/16 Втр 20:20:23  739660
>>739654
ну а чо, ебну завтра резюме им.
Аноним 10/05/16 Втр 20:21:13  739662
14629008730760.webm webm file (1941Кб, 768x576, 00:00:07)
Есть 2 массива:

int array[10];
int array1=array;


Почему begin() и end(), также как и range for использовать с array можно, а с array1 нет? Ведь array это же тоже int
.
И где прочитать про то, почему именно так продизайнили, не как, а именно почему, с какой целью. В стандарте это есть?
Аноним 10/05/16 Втр 20:21:41  739663
>>739660
не забудь потом про меня рассказать. я хоть бонус получу
Аноним 10/05/16 Втр 20:23:29  739666
>>739663
"Мне ананас с двачей посоветовал вакансию"? Или что им сказать?
Аноним 10/05/16 Втр 20:24:01  739668
>>739666
уххх какой трипл. Не, я офк скажу, рефбонусы дело полезное
Аноним 10/05/16 Втр 20:25:01  739670
>>739666
напиши сюда 2a24d218@opayq.com т резюме приложи. там все обсудим
Аноним 10/05/16 Втр 20:25:51  739673
>>739670
Бля, так на сайте отсылать резюме или тебе?
Аноним 10/05/16 Втр 20:26:27  739674
>>739673
сначала мне. я с тобой побщаюсь, потом к эйчарам пойдем
Аноним 10/05/16 Втр 20:28:28  739678
>>739662
Потому что array это массив, для него известна длина и компилятор может сгенерировать end() для него. array1 это просто указатель. Неизвестно даже указывает он вообще именно на буфер или просто на одно значение. И не известен размер буфера - следовательно невозможно сгенерировть end().
Аноним 10/05/16 Втр 20:30:22  739679
>>739670
ща отошлю. 739650 и 739666-кун.
739668 - эт не я.
Аноним 10/05/16 Втр 20:34:47  739686
>>739673
Отправил + добавил ссылку на пост с метахуйней в позапрошлом треде.
Аноним 10/05/16 Втр 20:35:40  739688
>>739686
получил. в течении суток отпишу.
Аноним 10/05/16 Втр 20:35:51  739690
>>739678
Спасибо за ответ.
Но array ведь тоже преобразовывается в "просто указатель". Или компилятор помечает этот указатель каким-то образом , видя [10] (я чую опять неочевидную хуйню)?
Аноним 10/05/16 Втр 20:36:48  739693
>>739688
и я тебе отправил, 739650-кун
Аноним 10/05/16 Втр 20:37:22  739694
>>739688
ты сам принимаешь решение? Вроде тимлид, а вроде и бонус какой-то ждешь за инвайт.
Аноним 10/05/16 Втр 20:39:28  739696
>>739694
рефервл бонус дают тому, кто привел нового сотрудника.
просто вполне возможно что я буду тех собеседование проводить. и мое решение будет влиять на результат.
Аноним 10/05/16 Втр 20:40:11  739697
>>739693
ананасик, зачем данные спрятал. кому я спам слать буду?
резюме сильное, мне нравится
Аноним 10/05/16 Втр 20:41:50  739700
>>739653
забыл указать. c++03. энжой аур легаси. раньше 2018 новый стандарт не можем использовать
Аноним 10/05/16 Втр 20:42:56  739702
>>739697
мне просто нравится слово ананасик
Аноним 10/05/16 Втр 20:44:28  739703
>>739702
в течении суток отпишу. голосом не боишься общаться?
Аноним 10/05/16 Втр 20:44:37  739704
>>739700
фу бля. А чего так? У вас же linux environment. Проприетарный компилятор юзаете?
Аноним 10/05/16 Втр 20:45:31  739706
>>739703
Без проблем могу, что по-английски, что по-русски.
Аноним 10/05/16 Втр 20:48:09  739708
>>739697
рейт второе резюме
Аноним 10/05/16 Втр 20:48:57  739709
>>739704
сдк. есть очень крупный кастомер с vs2008. чтоб он разорился, сука
Аноним 10/05/16 Втр 20:49:58  739710
>>739708
красивое, опыт с железом. есть под такое пару вакансий
Аноним 10/05/16 Втр 20:51:35  739713
>>739706
шведский ананас, ты сейчас где живешь? дома или в Швеции?
Аноним 10/05/16 Втр 20:53:15  739717
>>739710
у меня нет опыта с железом. Это статический анализ железнячих проектов. Там был отдельная команда hardware-разработчиков, которые объясняли software-dev'ам, что какие фичи нужно пилить.
Аноним 10/05/16 Втр 20:54:22  739719
>>739713
в Москве я в данный момент. Пообщаться в рабочее время по МСК - легко.
Аноним 10/05/16 Втр 20:55:53  739723
>>739719
у меня CET+1, разница небольшая.
Аноним 10/05/16 Втр 21:00:34  739729
Ну может вы мне тогда скажите, какого хуя VS15 не видит WNDCLASS? VS10 видит, а эта сука нет. Выебывается еще, в WinUser.h кидает объявление в неактивный блок неактивный блок препроцессора!
Аноним 10/05/16 Втр 21:03:22  739733
>>739690
Не помечает (array обычный указатель), но размер известен и он может использоваться когда нужно (например для выделения памяти под массив).
Аноним 10/05/16 Втр 21:04:29  739735
>>739729
Я кажись понял. VS15 совсем разучился работать со статическими библиотеками.
Аноним 10/05/16 Втр 21:10:44  739743
Чет не конпелируется:
http://ideone.com/BJRRw4
Аноним 10/05/16 Втр 21:14:12  739748
>>739743
Что тебя удивляет? У тебя рекурсивное определение без остановки. Юзай enable_if
Аноним 10/05/16 Втр 21:26:58  739766
Привет илитарии, нужена ваша помощь. Сам ниразу не программист, просто интересно программирование и пилю прогу для себя.

По делу.
Есть словарь примерного вида - 2 байта - номер параметра, 2 байта - длина байт значения этого параметра в бд, 1 байт - тип данных в бд(параметр может быть записан как long, float, int, char[n]), 20 байт - название.
Всего 200 параметров.

Теперь по базе данных.
Первые 15 байт одинаковая информация для каждой строки (длина этой строки в байтах, ключевой параметр и пр.), далее следует анал-карнавал - 1 байт номер параметра в справочнике, потом длина байт для значения по справочнику и так идет до конца строки, затем опять новая строка, где первые 15 байт практически идентичны 15 байтам предидущей строки, дальше снова идут параметры в таком же виде. Всего в строке может быть от 1 до 200 параметров. Количество строк с параметрами не ограничено.
Проблема возникла со считыванием данных. Конечно, можно создать структуру со всеми 200 параметрами и просто заполнять в нее каждую строку и закидывать эти структуры в массив, но жалко тратить память на неиспользуемые параметры. Массив ассоциативных массивов создавать тоже не вариант, параметры в строках разного типа.
Аноним 10/05/16 Втр 21:36:12  739785
>>739766
boost::any
Аноним 10/05/16 Втр 21:41:00  739802
>>739766
> Массив ассоциативных массивов создавать тоже не вариант, параметры в строках разного типа
Это самый норм вариант, если я правильно тебя понял. Тебе нужно создать класс Параметр и хранить в ассоциативном массиве его. А от этого класса уже отнаследовать все возможные типы.
Аноним 10/05/16 Втр 21:53:01  739816
>>739802
Это плохая архитектура, потому что когда ты пытаешься делать доступ по интерфейсу к разнотипным объектам, остается только пересечение. Лучше сделать, чтобы метод ему возвращал что-то типа maybe, ну или бросал исключение, если элементы отсутствуют совсем редко.
Аноним 10/05/16 Втр 23:57:07  739944
int array[2][3];
for (int (&i)[3] : array){
for (auto j : i)
cout << j << " ";
cout << std::endl;
}

Почему на месте "int (&i)[3]" если просто поставить "auto i", то ошибка?
Аноним 10/05/16 Втр 23:57:40  739945
>>739766
tagged union
Аноним 10/05/16 Втр 23:58:00  739946
ясно понятно

int array[2][3];
for (int (&i)[3] : array){
for (auto j : i)
cout << j << " ";
cout << std::endl;
}

Аноним 11/05/16 Срд 00:02:18  739951
Парни, почему если класс имеет объект как член, то его инициализация происходит перед вызовом конструктора класса-хозяина?
Аноним 11/05/16 Срд 00:05:12  739952
>>739946
>>739944
auto &i : array

>>739951
По стандарту. Ну и как-то логично, что в конструкторе все элементы класса уже должны быть инициализированы, иначе с чем ты работать будешь.
Аноним 11/05/16 Срд 00:05:21  739953
>>739951
Чтобы в конструкторе класса хозяина с ним можно было работать.
Аноним 11/05/16 Срд 00:41:43  739995
>>739952
А с виртуальным базовым классом?
Аноним 11/05/16 Срд 01:24:10  740020
>>739995
Что с виртуальным базовым классом? Сформулируй полный вопрос, а не обрывок.
Аноним 11/05/16 Срд 01:50:02  740023
>>740020
>Что с виртуальным базовым классом?
А что с ним?
Аноним 11/05/16 Срд 05:01:47  740077
14629321075140.jpg (488Кб, 1920x1083)
>>739256
Ох спасибо, стало лучше.

sprintf пока пристроил на примере:

float hp = 289.6965416518;
char buf[128];
sprintf(buf, "%.1f", hp);
string sHp = buf;
life_bar_tooltip.setString("hp:" + sHp);

Вроде 3 действия, но char buf можно оставить в глобале и забыть.

Попытался впилить тоже самое через to_string:
float hp = 289.6965416518;
int precision = 10;
float dhp = floor(huita * precision + .5) / precision;
string sHp = to_string(hp);
life_bar_tooltip.setString("hp:" + sHp);

Минимум 3 действия. Ибо в sHp сохраняются на конце нули, тянущиеся после округления. Не найду как избавиться без костылей. Даже если получится, возможно что это будет проще, чем вариант с массивом символов?
Аноним 11/05/16 Срд 05:15:01  740085
>>740077
/float dhp = floor(hp * precision + .5) / precision;
/string sHp = to_string(dhp);
5утра
Аноним 11/05/16 Срд 18:13:19  740511
Посоветуйте, что почитать про сетевое программирование и межпроцессное взаимодействие?
Аноним 11/05/16 Срд 18:36:44  740536
Анон, впервые заглянул в cpp тред. Господи, какой же охуенный оп-пост, 10 из 10!
Аноним 11/05/16 Срд 19:10:05  740576
До чего же ваши кресты медленная пораша.
Посмотрите только сколько ассемблерных действий происходит во время выделения памяти под указатель:
x = new int;
И вы еще при этом утверждаете, что оптимизирующие компиляторы все сами сделают, что кресты быстрый язык, пидоры.
Аноним 11/05/16 Срд 19:13:19  740578
>>740576
>Посмотрите только сколько ассемблерных действий происходит во время выделения памяти под указатель
4 действия.
Аноним 11/05/16 Срд 19:15:39  740583
>>740578
Батя, ну ты че. Дай потроллить немного.
Аноним 11/05/16 Срд 19:15:45  740584
>>736493 (OP)
>Кроличья нора крестов практически бездонна, поэтому продолжать постигать тонкости и детали можно очень и очень долго.
Действительно, кошмарный язык для пердоленья, а не программирования.
Аноним 11/05/16 Срд 20:57:24  740682
14629894441790.jpg (37Кб, 604x453)
>>740584
Аноним 11/05/16 Срд 21:29:01  740729
>>740511
гугл, шапку
Аноним 11/05/16 Срд 21:54:22  740755
>>739995
Ну, он как бэ интерфейс. У него нечего инициализировать))0))
Аноним 12/05/16 Чтв 07:12:40  741079
>>740584
Так других-то нет.
Аноним 12/05/16 Чтв 07:31:05  741081
>>741079
Есть руст. Без траллинга.
Аноним 12/05/16 Чтв 07:36:01  741082
>>741081
Лет через 10 может и будет. Сейчас там ни либ, ни тулзов, ни кроссплатформенности.
Аноним 12/05/16 Чтв 07:41:09  741084
>>741082
>кроссплатформенности
Поддерживает всё, под что работает (и будет работать) бэкэнд LLVM. Хотя учитывая что плюсы используют только на десктопе и серверах – всё что уже нужно.
С остальным – ну в принципе да, хотя 2/3 плюсовых тулзов там вообще не нужно.
Аноним 12/05/16 Чтв 07:41:14  741085
>>736493 (OP)
1
Аноним 12/05/16 Чтв 07:57:12  741092
>>741084
>Хотя учитывая что плюсы используют только на десктопе и серверах
Ты забыл про микроконтроллеры и мобилки как минимум.
Аноним 12/05/16 Чтв 08:01:55  741094
>>741092
В микроконтроллерах – нет. Мобилки – ок, хотя LLVM на арм вполне себе компилируется.
Аноним 12/05/16 Чтв 08:07:29  741097
>>741094
>В микроконтроллерах – нет
Давно уже да, особенно на 32-битных. В любом случае, с крестами пердолится надо в разы меньше, чтобы что-то собрать под нужную платформу.
Аноним 12/05/16 Чтв 08:09:43  741099
>>741097
Когда я с ними сталкивался успел запомить разве что свежий запах самописных сишных компиляторов, с которыми половину приходилось писать на асме – пердолинга было меньше.
Сейчас-то что нибудь изменилось? Прям где-то нормальная поддержка плюсов а не си с классами?
Аноним 12/05/16 Чтв 09:58:06  741151
>>741099
>свежий запах самописных сишных компиляторов
Gcc есть сейчас почти для всего. Для остального плюсы и не нужны.
>нормальная поддержка плюсов
Стандартной библиотеки часто нет.
Аноним 12/05/16 Чтв 10:00:29  741153
>>741097
В чем преимущество С++ над С в рамках микроконтроллеров?
Аноним 12/05/16 Чтв 10:07:23  741158
>>741153
Деструкторы, темплейты, оверлоад функций и операторов, неймспейсы. Сейчас еще и лямбды.
Аноним 12/05/16 Чтв 10:46:13  741204
>>739662
У них разные типы. У array тип int[10], а у array1 тип int*.
Во второй строчке происходит неявное преобразование.
Для первого типа begin() и end() определены, для второго -- нет. Почему -- тут >>739678 уже расписали.
Поясните плиз Аноним 12/05/16 Чтв 14:51:53  741387
Какие аналоги PEP8 есть для крестов? Есть какие-нибудь плагины для пердолинга индентации в визуал студии?
Аноним 12/05/16 Чтв 15:14:33  741397
>>741387
>Какие аналоги PEP8 есть для крестов?
Была дока от гугла, есть гнушный, есть не гнушный.
http://geosoft.no/development/cppstyle.html
http://www.possibility.com/Cpp/CppCodingStandard.html
и т.д. и т.п.
>Есть какие-нибудь плагины для пердолинга индентации в визуал студии?
А чего в ванильной не хватает?
Аноним 12/05/16 Чтв 18:51:19  741608
>>741387
Прямиком от отцов:
https://github.com/isocpp/CppCoreGuidelines
Аноним 12/05/16 Чтв 22:29:51  741815
https://ideone.com/IspL0t
В 6ой строке в ретурне временный объект не создаётся?
Аноним 12/05/16 Чтв 22:36:29  741824
>>741815
С чего ему там создаваться?
Аноним 12/05/16 Чтв 22:39:13  741829
>>741824
Разыменовывать указатель, но его значение никуда не записывается, а в ссылку кастится.
Аноним 12/05/16 Чтв 22:47:23  741837
>>741815
A - это не массив функций, ты завалил задание.
Превзойти мое решение через темплейты никому не удастся
Аноним 12/05/16 Чтв 22:57:15  741846
>>741837
че за решение?
Аноним 12/05/16 Чтв 22:59:59  741847
>>741846
>>739345 (OP)
Аноним 12/05/16 Чтв 23:16:48  741857
>>741846
>>739937
Вопрос от нуба Аноним 13/05/16 Птн 09:36:27  742026
Почему наследник приводится к базовому классу неявно, а базовый класс к наследнику - явно? Ведь наследник как бы содержит в себе базовый класс и по идее приведение базового класса к наследнику должно быть неявным. И вообще дайте подробности про приведения. Спасибо.
Аноним 13/05/16 Птн 10:06:48  742047
Почему число символов имеет свой отделтный тип?
Аноним 13/05/16 Птн 10:44:11  742071
>>742026
Ну смотри, есть у тебя два класса
class A {
public:
--
}

class B: public A {
public:
-
-
protected:
int lolka;
}

Если ты приведешь A к B, то в A::lolka у тебя будет мусор, а если попытаешься чему-нибудь присвоить, то вообще можешь затереть чью-то память или что-то сломать. По-моему, приводить базовый к наследнику это вообще вандализм и неправильно, так не должно быть никогда.
>И вообще дайте подробности про приведения.
Что именно тебе о них хочется узнать? Неужели мало инфы?

>>742047
Ты о size_t или о чем?
Аноним 13/05/16 Птн 10:53:22  742080
>>742071
Жа, о нем
Аноним 13/05/16 Птн 11:20:34  742097
>>742080
size_t используется не только для количества символов, а для количества любых данных, и еще он возвращается sizeof.
Аноним 13/05/16 Птн 11:28:28  742103
>>742080
Размер size_t на каждой конкретной системе подобран таким образом что он заведомо больше размеров любого буфера памяти который возможно выделить на этой системе. Тоесть храня смещения в памяти с помощью size_t ты никогда не получишь переполнения, его всегда хватит. Что для других типов не гарантируется.
Аноним 13/05/16 Птн 12:09:43  742137
>>738813
Обложку Кохл Корутин - Избранное.
Аноним 13/05/16 Птн 12:26:19  742149
>>742071
> Если ты приведешь A к B, то в A::lolka у тебя будет мусор
Т.е. при приведении память для А как-то перевыделится? Интересует как оно внутри устроено
Аноним 13/05/16 Птн 12:44:39  742165
>>742149
Нет, просто память по адресу А будет использоваться как для типа B, при том что выделена под А.
Короче, это как напялить обувь другого размера. Вроде сидит, но либо болтается, либо жмёт.
Аноним 13/05/16 Птн 12:45:05  742167
>>742026
Из-за множественного наследования. Смещение от наследника к родителю всегда известно, а в другую сторону оно может быть какое угодно.
Аноним 13/05/16 Птн 12:49:46  742173
>>742149
Нихуя не перевыделится. До каста будет считаться что объект лежит в 16 (к примеру) байтах. После каста будет считаться что объект лежит в 16 плюс следующие 32 (к примеру) байта. А так как те 32 байта от левой хуйни то ничего хорошего из этого не получится.
Аноним 13/05/16 Птн 12:51:01  742174
>>742149
Ничего не перевыделяется, просто указатель после преобразования смещается на некоторое количество байт.
Например, если есть struct A : B, C {}, то в памяти будут расположены сначала поля B, потом C, потом то, что добавляет А. Если тебе нужно скастовать A в C, то указатель будет считаться как указатель на А плюс размер В.
Аноним 13/05/16 Птн 13:19:59  742189
14631347994280.jpg (76Кб, 227x227)
Планирую начать изучать С++ уже который раз с сегодняшнего дня.
Аноним 13/05/16 Птн 13:21:26  742192
>>742165
>>742173
Спасибо, теперь понятно, просто я немного идиот.
>>742174
Получается неявно и A к В или С не приведется? Или неправильно приведется? P.S. от копма далеко не проверю.
Аноним 13/05/16 Птн 13:32:34  742197
>>742189
Начни с понедельника
Аноним 13/05/16 Птн 13:52:38  742221
>>742192
>Получается неявно и A к В или С не приведется?
Приведется - смещение от А к родителям компилятору всегда известно.
Аноним 13/05/16 Птн 13:54:24  742223
>>742192
>Или неправильно приведется?
static_cast всегда будет правильным. С-каст будет правильным только для А к В, поскольку у них смещение нулевое.
Аноним 13/05/16 Птн 14:11:48  742237
>>742223
Хм, тогда как вообще адресация по членам класса происходит? Если с помощью смещения, то проблемы приведения базового к дочернему тоже нет. У дочернего сначала идут поля базового класса, потом свои. При обращении к полям базового они будут в начале все ок, а при обращении к не существующим - ошибка, такая же как и при обращении из базового к дочерним.
Аноним 13/05/16 Птн 15:01:11  742264
Есть тут кто может помочь полному нубу?
Аноним 13/05/16 Птн 15:12:33  742271
>>742264
Ты сначала говори что надо
Аноним 13/05/16 Птн 15:16:32  742272
>>742271
1. Для чего нужен .NET Framework, и какую версию его лучше юзать? У меня по дефолту стоит 4.5.2, но там есть 4.6.0.
2. Я по вашему совету скачал Вижуал Студию, сделал в ней хеллоу ворлд, а он не запускается. Вернее, запускается какое-то окно на 0.1 секунды. Что я не так делаю?
Аноним 13/05/16 Птн 15:18:13  742273
>>742272
1. .NET фреймворк нужен для C#, а не для C++ ты ведь не собрался писать на C++/CLI
2. добавь system("PAUSE"); перед return 0;
Аноним 13/05/16 Птн 15:21:04  742278
14631420640620.png (28Кб, 939x408)
>>742273
Ага, спасибо.
>NET фреймворк нужен для C#, а не для C++
Когда я пытаюсь создать С++ файл, пикрил.
Аноним 13/05/16 Птн 15:28:24  742285
>>742278
Тебе нужен не пустой проект, а консольное приложение.
Аноним 13/05/16 Птн 15:29:05  742286
>>742278
Там сделоли чтобы по дефолту даже C++ конпелировал под дотнет. Пердоль настройкию
Аноним 13/05/16 Птн 15:32:32  742288
>>742237
При множественном наследовании может быть, например A -> B, A -> C, D -> B, C. Как ты тут будешь приводить A к D?
Аноним 13/05/16 Птн 15:33:44  742291
>>742288
D -> (B,C)
fix для понятности
Аноним 13/05/16 Птн 15:49:21  742308
Народ! Может есть у кого написанные set/map/queue шаблонные, работающие с stl.
Умоляю помогите!
Аноним 13/05/16 Птн 15:51:48  742311
>>742308
тебе зачем?
Аноним 13/05/16 Птн 15:53:48  742316
>>742291
Я не знаю как в памяти хранится. Я бы хранил так сначал A, потом все что от B (без А), потом все что от С (без А). А в начале смещение не нужно все ок. Если приводить B к D, то опять все ок со смещением (AB все по порядку и в B и D), а вот с приведением С к D наверное были бы проблемы. Но я думаю так сделали не только из-за этого, наверное будут какие-то проблемы с вызовом методов, просто я тупой и не могу понять какие.
Аноним 13/05/16 Птн 15:59:48  742322
>>742308
Открываешь свою любимую IDE, подключаешь хэдер set/map/queue, создаешь переменную нужного типа, тыкаешь правой кнопкой мыши по ее типу и выбираешь что-то вроде "перейти к определению".
Аноним 13/05/16 Птн 16:00:45  742323
>>742197
Лучше пусть начнет сразу, как новый стандарт выйдет, чего переучиваться-то.
Аноним 13/05/16 Птн 16:00:54  742324
>>742316
ЗЫ static_cast же правильно приводит при множественном наследовании, значит теоретически можно сделать и правильно приведение C к D
Аноним 13/05/16 Птн 16:01:29  742326
>>742323
А ты что-то в этом понимаешь.
Аноним 13/05/16 Птн 16:04:43  742333
>>742273
>добавь system("PAUSE"); перед return 0
Вот за такое в любом приличном месте пиздят клавиатурой по еблу. Студия дала вам настройку подсистемы, установи SUBSYSTEM:Console! Не хочу, хочу писать костыли. Небось еще локаль выставляешь каждый раз изнутри кода?
Аноним 13/05/16 Птн 16:09:25  742338
>>742333
Слушай, для новичка дописать одну строчку явно проще, чем лазить в настройках IDE и чего-то там ковырять для того, чтобы консолька не закрывалась при завершении программы.

А клавиатурой по еблу пиздят чаще тех, кто в приличных местах выебывается вместо того, чтобы вежливо посоветовать более оптимальное решение.
Аноним 13/05/16 Птн 16:19:13  742346
>>742285
А в чём их разница? Я всегда думал что пустой лучше.
Аноним 13/05/16 Птн 16:22:43  742349
>>742346
Ммм, да ни в чем. Я в 2008 студии тоже делал "пустые проекты", когда говнокодил олимпиадки.
>>742338
#include <conio.h>
...
getch()

и нахуя приучать людей к system()? это ж вообще дерьмо ебаное, вон в imagick'е из-за этой хуйни дырищу какую нашли
Аноним 13/05/16 Птн 16:26:30  742356
>>742349
А сейчас ты работаешь С++ мастером?
Начинал с 0? Есть дельные советы?
Аноним 13/05/16 Птн 16:48:34  742387
Начал учить C++ неделю назад, а уже люто-бешено ненавижу эту порашу. Степанов-шаблоны, классы-хуясы. Ну и дерьмо.
Аноним 13/05/16 Птн 16:52:03  742389
>>742349
#include <stdio.h> // или cstdio
...
getchar();

Кроссплатформенный вариант, чо.
Аноним 13/05/16 Птн 16:52:15  742390
>>742387
Шаблоны у Александреску ад. А я вот вдуплить с приведением не могу :(
Аноним 13/05/16 Птн 17:38:03  742426
>>742324
Вот, нашел как все это хранится https://habrahabr.ru/company/pvs-studio/blog/186682/
Аноним 13/05/16 Птн 17:52:48  742442
>>742389
Давно не писал на сишко и крестопараше, но мой шиндовариант привлекал тем, что можно было PRESS ANY KEY TO CONTINUE, а в твоем обязательно жмякать ентер. Не знаю почему, меня это раздражало.
Аноним 13/05/16 Птн 17:58:53  742445
>>742333
>>742338
>>742346
>>742349
>>742356
>>742387
>>742390
>>742442
Собрались куча даунов и устроили оргию неграмотности. Идите нахуй отсюда.
Аноним 13/05/16 Птн 18:01:11  742448
>>742445
В рот ебал тебя и твои ебучие кресты. Самый конченый язык эвар.
(Автор этого поста был забанен. Помянем.)
Аноним 13/05/16 Птн 18:02:18  742449
>>742448
Почему? Я только его изучать начал, слышал что это отличный язык.
Какой лучше?
Аноним 13/05/16 Птн 18:14:19  742458
>>742456
А чем он плох-то?
Я думал писать программы и игры.
Аноним 13/05/16 Птн 18:31:58  742471
>>742467
>Если у тебя есть конкретные цели и задачи - забей вообще и пиши на самом подходящем инструменте
Ну у меня есть цели:
>>742458
>писать программы и игры
А на счёт инструмента я не определился.
Аноним 13/05/16 Птн 18:38:45  742475
>>742471
Для тебя самый лучший путь - выбрать наиболее популярный инструмент для решения твоих задач, к которому полно документации, "живых" библиотек, активное сообщество.
>писать программы и игры
Какие программы и игры? Что-нибудь совсем незамысловатое можно и на том же пистоне наваять.
Аноним 13/05/16 Птн 18:39:47  742477
>>742475
А сложное? Например, физику?
Аноним 13/05/16 Птн 18:42:03  742481
>>742477
Опять же, смотри популярные инструменты, движки, на чем они написаны, я не силен в геймдеве.
Аноним 13/05/16 Птн 18:43:21  742484
>>742481
А программы?
А в чём силён?
Аноним 13/05/16 Птн 18:46:25  742488
>>736493 (OP)
Реквестирую хорошую статейку по тэмплэйтам в крестах.
Аноним 13/05/16 Птн 18:48:49  742490
>>742488
Хорошие (читай - с широки м охватом материала) про них только талмуды Степанова и Александерску.
Аноним 13/05/16 Птн 18:49:31  742491
>>742490
От Александреску есть нормальный язык с нормальными темплейтами.
Аноним 13/05/16 Птн 18:50:28  742494
>>742491
>>742490
Спасибо, попробую Александреску.
Аноним 13/05/16 Птн 18:53:14  742497
>>742494
Он >>742491 тебе не про плюсы если что говорил, лол.
Аноним 13/05/16 Птн 18:53:16  742498
>>742490
>Степанова и Александерску
Ну вот зачем ты его дезинформируешь-то? У Степанова вообще все книжки про теорию CS, всякие там преобразования орбит, а про STL у него только старые статьи, да и те написаны до фактической стандартизации шаблонов. У Александреску шаблоны - средство, а не цель, а книга про проектирование.
>>742494
>>742488
Если тебе интересны непосредственно шаблоны как механизм, а не их приложения (обобщенность, метапрограммирование), то юзай Вандевурда-Джоссатиса из шапки.
Аноним 13/05/16 Птн 18:53:43  742499
>>742484
Ой всё.
Считай, что я ничего не умею и меня не было в этом треде, меня забанили.
Аноним 13/05/16 Птн 19:00:30  742512
>>742494
Не пробуй Александреску, ты либо сломаешь мозг и начнешь писать теплейтами как он, либо просто продолжишь пользоваться ими как все нормальные люди.
Аноним 13/05/16 Птн 19:02:55  742514
>>742512
>либо просто продолжишь пользоваться ими как все нормальные люди.
Все нормальные люди избегают этой параши как только могут.

Нормальные темплейты есть только в дишечке. Которую пилит Александреску, ага.
Аноним 13/05/16 Птн 19:05:50  742517
>>742514
Темплейты задумывались не для того как их использует Александреску, а ди вообще язык без задач
Аноним 13/05/16 Птн 19:07:45  742520
>>742512

Н Е О С И Л Я Т О Р
Е
О
С
И
Л
Я
Т
О
Р
Аноним 13/05/16 Птн 19:11:25  742524
>>742520
Просто я не видел ниодного реального проекта или задачи, где нужно было извращаться с метапрограммированием. Как только я увижу что для какой-то задачи метапрограммированние на шаблонах лучше чем что-то еще, я изменю свое мнение. Но скорее всего для этой задачи я просто возьму какой-нибудь другой язык
Аноним 13/05/16 Птн 19:22:34  742541
>>742524
Самый такой элементарный пример. Процентов 50 кода, который ты пишешь каждый день - всякие конструкторы, инициализаторы, копирование, перегруженные операторы, проверки инвариантов, гарантии безопасности исключений, виртуальность деструктора, синглтоновость etc, можно написать один раз и вынести в стратегии. Сразу долой огромное количество ошибок и потенциальных выстрелов в ногу из-за того, что ты забыл что-то явно указать. Просто наследуешься от нужных стратегий и пишешь только код по существу.
Аноним 13/05/16 Птн 19:26:29  742544
>>742517
Задача ди - сделать кресты с нормальной библиотекой и без выстрелов в ногу и костылей.
Аноним 13/05/16 Птн 19:28:08  742546
>>742541
50% кода который я пишу каждый день это не конструкторы и т.д. что ты там написал. Я не создаю классы половину своего рабочего времени, максимум 2 раза в месяц для какой-то новой функциональности наследуюсь и переопределяю методы. Я честно не помню когда что-либо приходилось писать прям с нуля.
Аноним 13/05/16 Птн 19:29:10  742547
>>742544
А как же стать популярней крестов? Зачем нужен язык которым никто не пользуется?
Аноним 13/05/16 Птн 19:30:01  742549
>>742547
Тебе яп задачу решать, или дрочить на тех, кто пользуется?
Аноним 13/05/16 Птн 19:30:24  742550
>>742544
На мой взгляд, единственной меркой качества языка является его успешность. Если D не выстрелил, значит, с ним что-то не так. Можно сколько угодно кукарекать про тонны крестового легаси и отсутствие пиара, но факт остается фактом - если язык не используется, то идиотизмом будет вкатываться в него всерьез. Мы тут не шутки шутим, надо работать, а не заниматься бета-тестированием для веселых румынов, обивая пороги на SO в поисках ответов на элементарные вопросы.
Аноним 13/05/16 Птн 19:33:04  742553
>>742550
>обивая пороги на SO в поисках ответов на элементарные вопросы.
А в крестах не обиваешь, лол?

>будет вкатываться в него всерьез
Это не кресты. В него "вкатиться всерьез" можно за неделю, бо не нужно заучивать поведение говна и выстрелов в ногу и механизмы костылей. Он просто работает.
Аноним 13/05/16 Птн 19:33:07  742554
>>742546
Понимаю, поэтому я и не говорю об универсальности. Зачастую ты берешь либы/фреймворки и пишешь просто логику, опираясь на их структуру. Но когда ты сам пишешь либу/фреймворк или занимаешься непосредственно проектированием кода, то полезность шаблонов трудно переоценить.
Аноним 13/05/16 Птн 19:33:09  742555
>>742549
Объясняю как обстоит дело на рынке. Ты либо приходишь в проект, либо начинаешь проект. Приходишь ты в проект на язык который знаешь, этот вариант рассматривать не будем. Начинаешь ты проект на любом языке и к тебе идут люди со знанием этого языка. А теперь ответь сколько людей знают Д? А яву? А кресты?
Аноним 13/05/16 Птн 19:34:12  742556
Здравствуй, Маленький Принц. Представим, что твоему барашку стало одиноко. И ты попросил нарисовать ему друзей. Ты выделил для барашков целую планету (точнее, астероид) по соседству. Эта планета — доступная память. Вся она уставлена коробочками, в которых будут жить барашки. Чтобы не запутаться, все коробочки пронумерованы. Коробочки — это ячейки памяти. Барашек в коробочке — это данные. Допустим, что попался какой-то особо упитанный барашек. Ему понадобится две коробочки. Или даже больше. Барашек — неделимая структура (для нас с тобой, Маленький Принц, это точно так), а коробочки идут подряд. Нет ничего проще. Мы вынимает стенки между двумя рядом стоящими коробочками и кладем туда барашка. Места в коробочке не очень много. И барашек не может свободно развернуться. Поэтому мы всегда знаем, где его голова, а где хвост. И если нам что-то нужно будет сказать барашку, мы обратимся к той коробочке, где у него голова.
Аноним 13/05/16 Птн 19:36:19  742559
>>742555
А сколько нужно людей, чтобы писать на яве или крестах? А читаемость кода?

А если смотреть, за сколько времени он учится - то тут он на пару порядков уделает кресты с жабой. Собсно это и есть помесь крестов и жабы минус стрельба по ногам.
Аноним 13/05/16 Птн 19:37:11  742560
Анончики, не могу справиться с элементарным алгортимом. Задача типа ХЕШИРОВАНИЯ:
Есть эта самая таблица (вектор структур), которую я считываю из файла, имеющего размер size. Считывая из файла с помощью функции получаю ключ (номер элемента массива), моя задача забить этот массив линейно, с определенным шагом. Т.е. если ячейка массива уже занята - двигаюсь дальше на шаг и так до конца. Когда дохожу до конца - начинаю искать место сначала и до этой ячейки. Последовательность действий:
Разбил ее на две функции. Первая
1. Проверяю вектор на заполненность, если пустых ячеек нет - делаю resize на step
2. Проверяю размер ключа, если он больше, либо равен размеру вектора - присваиваю ключу ноль
3. Вызываю основную функцию заполнения вектора, передавая в нее ключ, данные и размер вектора (потом станет понятно зачем)

Вторая функция
1. Начинаю искать место для ключа, проверяя свободна ли эта ячейка или нет, если занята - увеличиваю шаг и проверяю пока не дойду до конца (того самого размера массива). Помимо этого есть булевская переменная которая при нахождении места для ключа дает ТРУ.
2. Проверяю ТРУ ИЛИ НЕ ТРУ. Если не тру: вызываю функцию рекурсивно, передавая в качестве ключа 0 (ищем теперь не с ключа, а сначала), а в качестве размера поиска (в пред пункте размер массива) я передаю ключ, чтобы не повторять действия выполненные в пункте 1


Так вот, хуйня в том, что если мой массив будет размером и колвом элементов n, то с шагом равным 1 он забьет этот массив, все заебись. Даже если я увеличу кол-во элементов - он ресайзнется, норм работает в общем, НО, если я делаю шаг равным 2 - ломается нахуй. Проблемы с выделением памяти.

В чем мой алгоритм плох? С хуя он выходил за рамки, если по идее сделав шаг, который в сумме даст размер больший n - я просто начну искать место сначала, а проверка на забитость у меня еще до заполнения.
Аноним 13/05/16 Птн 19:37:13  742561
>>742556
>Поэтому мы всегда знаем, где его голова, а где хвост.
Если на планете используется little-endian, то барашку не поздоровится.
Аноним 13/05/16 Птн 19:37:44  742562
>>742550
Я тебе сейчас секрет открою: ди и без того используется в крупных проектах. Та же Remedy использует его не один год во всех своих ААА проектах.

Тут дело в людях.
Аноним 13/05/16 Птн 19:37:47  742563
>>742554
Ну возможно, спорить не буду. Просто даже в наших велосипедных самописных либах я не встречал шаблонов, кроме как для написания своих контейнеров. Просто от Александреску у меня сложилось впечатление что он все пишет только на шаблонах трудно читаемый код и никак иначе.
Аноним 13/05/16 Птн 19:38:00  742564
>>742553
>А в крестах не обиваешь, лол?
В крестах накоплено огромное количество знаний, на поиск ответов уходят секунды.
>В него "вкатиться всерьез" можно за неделю
Я подразумеваю не освоение языка, а переход на него в реальной работе. Нужен софт, нужны хорошие практики, нужны набитые шишки, в конце концов. А их нет. Поэтому тот, кто начнет серьезный проект на D, будет как раз набивать шишки и нарабатывать опыт для себя и других. А можно потратить это время и силы по существу, если не сходить с проторенной дороги без необходимости.
Аноним 13/05/16 Птн 19:39:16  742567
>>742563
Открой исходники STL или того же boost, например. Чем крупнее и универсальнее либа, тем больше необходимость.
Аноним 13/05/16 Птн 19:41:10  742575
>>742562
Remedy всплывает почти в каждом споре про D, лол. Одного крупного проекта недостаточно для выработки best practices, нужны сотни.
Аноним 13/05/16 Птн 19:42:10  742577
>>742564
>В крестах накоплено огромное количество знаний, на поиск ответов уходят секунды.
А в D эти знания тупо не нужны. Там просто есть стандартная библиотека, в которой есть все что нужно. И в средствах языка есть абсолютно все, что нужно. Там не нужно искать "как накостылить то или это". Там не нужен буст. Чтобы на нем кодить - не нужен SO вообще, и гуглить какие-то костыли. Достаточно просто прочитать доку к его библиотеке.

>Нужен софт, нужны хорошие практики
Блин - это просто улучшенные жабокресты. Юзаешь те же самые практики, просто минус костыли.
Там не нужно блин читать стопицот книжек по тонкостям шаблонов как в крестах - потому что там шаблоны пишутся нормально.
Аноним 13/05/16 Птн 19:43:31  742580
>>742559
Простота языка еще никогда не позволяла сажать макак на места сениоров. В любом случае макаки будут решать свои задачи, а специалисты - свои. Возможно, их жизнь будет легче, но кого это ебет, если ты банально не сможешь найти столько людей?
Аноним 13/05/16 Птн 19:43:46  742581
>>742559
Количество людей зависит от размера проекта. Я просто не могу поверить, что для написания какого-нибудь интерпрайза с одинаковым функционалом людей со знанием ди нужно в два (3, 4 и т.д) раз меньше, хотя бы потому что на ди не написано столько фреймворков на все случаи жизни
Аноним 13/05/16 Птн 19:45:19  742585
>>742575
Аж 3 ААА игрушки, куча проектов в проде (каждый год куча народу на dconf из новых компаний выступает).

Вот конкретно какие практити плюсов ты используешь? Виртуальный деструктор?
Аноним 13/05/16 Птн 19:45:41  742586
Это какая-то местная забава в каждом треде пытаться доказать что D лучший язык на свете и всем надо писать только на нем?
Аноним 13/05/16 Птн 19:46:59  742587
>>742544
>Задача ди - сделать кресты с нормальной библиотекой и без выстрелов в ногу и костылей
Поясните, а что в С++ за костыли и выстрелы в ноги?
Аноним 13/05/16 Птн 19:47:40  742588
>>742581
Для ди просто не нужны фреймворки, лол.
Там просто есть нормальная стандартная библиотека.
90% того, что пилят Qt или буст - там или встроено в язык, или в библиотеку.

Это в крестах - сколько там вариантов строк? std::string, char*, QString, cv::string, что-то из буста для питона? Кто больше вспомнит?

То же самое для массивов, умных указателей, неба и аллаха.
Аноним 13/05/16 Птн 19:48:31  742590
>>742567
Да я же не говорю что не нужны совсем, я говорю что большинству не нужны. В том числе и мне.
Аноним 13/05/16 Птн 19:49:31  742591
>>742586
> местная
Это один батхертнутый. Он недавно появился, еще и года наверное не прошло.
Аноним 13/05/16 Птн 19:49:37  742592
>>742587
Ну вот тебе самое простое - модульность.
Ебаные пересечения инклудов и дефайнов.
Аноним 13/05/16 Птн 19:51:04  742594
>>742588
> Dбил думает что все задачи можно решить универсальным классом
Аноним 13/05/16 Птн 19:51:15  742596
>>742588
Жди, может начнут пилить для ди свои фремворки, обертки над стандартной библиотекой и там все это появится. Ведь программисты любят писать свои велосипеды
Аноним 13/05/16 Птн 19:51:30  742597
>>742592
Что же получется, крестоносцы сами ругают свой язык, но продолжают жрать кактус?
Аноним 13/05/16 Птн 19:51:44  742599
14631583045140.jpg (55Кб, 540x361)
аноны, есть тут такие же всратые как я, которые не могли понять списки и деревья? дайте какой-нибудь гайд понятный. курю джесса либерти "с++ за 21 день бесплатно без смс", но там пример охуевший.
суть то ясна, все просто, но вот как создавать их, добавлять, как-либо упорядочивать их, етс?
Аноним 13/05/16 Птн 19:52:56  742601
>>742596
Ну они там есть. Vibe.d К примеру, что-то вроде RoR, для сайтиков.

Но в отличие от него, кресты в голом виде неюзабельны - нужно обязательно накатывать Qt или буст, чтобы их уже как то юзать. А они реализуют пересекающуюся функциональность.
Аноним 13/05/16 Птн 19:53:31  742602
>>742592
Это же как нужно писать чтобы ifndef'ы совпали ...
Аноним 13/05/16 Птн 19:53:56  742603
>>742597
Ну они пытаются прикрутить все это костылями. Вон модульность обещали как-то прихреначить - но в ++17 таки обломали.
Аноним 13/05/16 Птн 19:56:31  742610
>>742599
Чтобы понять деревья, нужно знать основы теории графов, это несложно на самом деле, больше учить новые термины.
Списки ещё легче. Вообще берешь любую книгу по дискретке или алгоритмам, находишь главы про структуры данных, графы, и читаешь. Там всё это есть.
Аноним 13/05/16 Птн 19:56:54  742611
>>742577
Это что-то уровня аргумента хаскеллистов про "если собралось, то 99% работает правильно". Давай по пунктам:

1. Я использую VS с кучей плюшек, наподобие визуальной отладки. Что может предложить инфраструктура D, чтобы погроммист получил сравнимые удобства? Сколько всего IDE для D и какова вероятность, что каждый сможет перекатиться со своей IDE на новую, не прожигая стул от ее ущербности?
2. Я хочу сделать хитровыебанную хуйню, которой точно нет в стандартных библиотеках. Сортировать графы графов аудиокодеков, епту. В крестах я гуглю и нахожу стороннюю либу в 99% случаев. В скольки процентах случаев я найду таковую на D? Сколько денег понадобится на содержание дополнительных макак, ответственных за прикручивание библиотек из других языков к D? Что делать с принципиально непробрасываемыми вещами типа тестовых фреймворков?
Аноним 13/05/16 Птн 19:57:01  742612
>>742601
> кресты в голом виде неюзабельны
а никому и в голову не приходило в стандартную библиотеку все тащить, или писать каждый раз свои велосипеды
Аноним 13/05/16 Птн 19:59:28  742617
>>742560
Бамп
Аноним 13/05/16 Птн 20:00:30  742618
>>742610
основы теории графов знаю, но не понимаю, как это соотносится. я говорю, смысол деревьев и списков мне ясен, а вот все остальное - нет
Аноним 13/05/16 Птн 20:01:10  742619
>>742560
>проблемы с выделением памяти
>описал алгоритм, но не приложил исходники
Аноним 13/05/16 Птн 20:01:35  742620
>>742617
код давай, нихуя нипонятно
Аноним 13/05/16 Птн 20:02:28  742622
>>742611
>Сколько всего IDE для D и какова вероятность, что каждый сможет перекатиться со своей IDE на новую, не прожигая стул от ее ущербности?
Нормальных две - плагин для идеи, и плагин для xamarin studio - monodevelop (эта мне нравится больше). Есть еще плагин для визуалстудии, но его я не пробовал, потому как у меня линупс, а она не кроссплатформенная.
Есть еще на эклипсе - мне не понравилась, вариант для KDevelop (только линупс + вечная альфаверсия, не рассматриваю), плюс велосипеды написаные на самом себе.

>Сортировать графы графов аудиокодеков, епту.
Тут охрененная стандартная библиотека, в частности - охрененные шаблоны. Сортируй что хочешь, просто заинклудь std.algorythm и хоть обдрочись, там реально все на все случаи жизни.
>В скольки процентах случаев я найду таковую на D?
Что именно например?

И да - ди просто может юзать сишные и крестовые либы, они совместимы.

>Что делать с принципиально непробрасываемыми вещами типа тестовых фреймворков?
Юниттесты уже встроены в язык и систему сборки. И еще какие-то контракты, их я не пробовал.
Аноним 13/05/16 Птн 20:02:30  742623
>>742611
> Сколько всего IDE для D и какова вероятность
Как минимум 2 полноценные (1 из них плагин к студии), т.е. как и у плюсов - либо божественные и тормозящие одновременно цлион и студия, либо инвалиды вроде креатора, которые пидорасятся от любого более менее хитровыебаного кода.
>ответственных за прикручивание библиотек из других языков к D
Там всё что нужно прикручивается из тех же плюсов копипастой с минимальным рефакторингом и 1 лишней строчкой кода.
>Что делать с принципиально непробрасываемыми вещами типа тестовых фреймворков?
Непереносимые вещи лучше оставить там, где они были изначально. Если ты изначально брал чужую библиотеку - сомневаюсь, что горишь желанием её редактировать.
Аноним 13/05/16 Птн 20:02:36  742624
>>742618
Что остальное? Алгоритмы сортировки? Так читай есть разные деревья, для них свои сортировки
Аноним 13/05/16 Птн 20:02:59  742625
>>742619
Вот именно, что описал весь алгоритм. Какие могут быть проблемы с ресайзом? Проблема видимо в алгоритме, возможно где-то просчитался или что-то забыл
Аноним 13/05/16 Птн 20:05:27  742628
>>742625
вангую в коде хуяйня типо massive[i+1], но ты же на словах все верно написал?
Аноним 13/05/16 Птн 20:06:16  742630
>>742624
Р-Е-А-Л-И-З-А-Ц-И-Я
хрен с деревьями, давай вот про списки, односвязные хотя бы
Аноним 13/05/16 Птн 20:06:22  742631
>>742560
> делаю шаг равным 2
Если у тебя массив с четным количеством элементов то с шагом два ты пройдешь только по половине элементов.
Аноним 13/05/16 Птн 20:09:21  742633
>>742622
>И да - ди просто может юзать сишные и крестовые либы, они совместимы.
А про сишку - и вовсе считай надмножество сишки, там как часть стандартной библиотеки - запендюрена как import core.stdc. Плюс платформозависимые вещи для упарывания сисколлами, posix-хуесикс.
Аноним 13/05/16 Птн 20:09:46  742635
>>742630
Это вообще просто. Грубо говоря ты хранишь значение и указатель на следующий элемент, при добавлении элемента делаешь new, при удалении бегишь в конец и удаляешь, потом снова, пока так все не удалишь. Сортировать можешь хоть пузырьком, просто указатели устанавливаешь на другие элементы
Аноним 13/05/16 Птн 20:11:43  742637
>>742622
>>742623
Хорошо, все-таки неправильно будет на такое писать возражения с дивана. Я попробую заюзать анонсированное тобой, и потом сможем более аргументированно посраться, если захочешь.
Аноним 13/05/16 Птн 20:12:19  742639
Поясните за статические и динамические библиотеки.
В чем разница? Зачем для динамической линковки нужна статическая либа?
Аноним 13/05/16 Птн 20:12:35  742640
>>742628
>>742619
>>742620
http://ideone.com/nImRxW

держите мой говнокод
Аноним 13/05/16 Птн 20:12:40  742641
>>742639
>Зачем для динамической линковки нужна статическая либа?
А она разве нужна, лол?
Аноним 13/05/16 Птн 20:13:54  742642
>>742637
Я не против.
Спросишь тут или в дишкотреде, если будут какие-то затруднения.
Аноним 13/05/16 Птн 20:14:30  742643
>>742622
>Что именно например?
Например, видеостриминг, есть там такое?
Аноним 13/05/16 Птн 20:15:10  742645
>>742643
Что ты конкретно имеешь в виду? Назови из крестов что ты юзаешь для этого.
Аноним 13/05/16 Птн 20:15:22  742646
>>742641
Он, наверное, про хэдеры говорит?
Аноним 13/05/16 Птн 20:16:14  742647
>>742646
Ну можно и без хедеров, просто гемора больше.
Аноним 13/05/16 Птн 20:16:48  742648
>>742646
Да нет. Я подключаю dll, а VS просит lib
Аноним 13/05/16 Птн 20:16:49  742649
>>742643
Да класс Karina.d
Аноним 13/05/16 Птн 20:17:06  742650
>>742643
Есть например биндинг к ffmpeg - ffmpeg-d.
Аноним 13/05/16 Птн 20:18:55  742651
>>742646
>>742641
Я даун. dllexport не прописал.
Аноним 13/05/16 Птн 20:19:03  742652
>>742645
Вот такое, скажем:
https://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/chapter-gstreamer.html
Аноним 13/05/16 Птн 20:20:20  742653
>>742649
>>742650
Бля, да ладно вам. Ну не может быть, что в D вообще все есть!
Аноним 13/05/16 Птн 20:21:21  742654
>>742652
Есть биндинг к gstreamer, как часть биндинга gtk-d.
>>742653
D просто совместим с крестами и сишкой, лел.
Аноним 13/05/16 Птн 20:21:42  742656
>>742653
Ди - у нас все есть, но никто не пользуется
Аноним 13/05/16 Птн 20:21:48  742657
>>742652
>няшная
>есть ли для ди
Ты так смеёшься?
Аноним 13/05/16 Птн 20:23:55  742660
>>742640
У крестогоспод ifstream сам открывает файл в нужном режиме, сам приводит прочитанные куски файла к нужному виду? нихуя себе йоба, а я в жопу пердолился с няшной чистой
Аноним 13/05/16 Птн 20:24:24  742662
>>742660
>к нужному типу
Я еблан да.
Аноним 13/05/16 Птн 20:25:32  742665
А еще на Ди можно писать борды. Там есть pedalik.d который считается устаревшим и более новый makaka.d
Аноним 13/05/16 Птн 20:26:10  742666
>>742665
А я кстати собираюсь написать на D свою борду, лол.
Аноним 13/05/16 Птн 20:29:36  742668
Как там вообще у Ди дела? Новые фичи когда будет или язык идеален?
Аноним 13/05/16 Птн 20:36:03  742676
>>742668
А каких фич тебе там не хватает?

Мне не хватает нативной гуйни, а-ля import gui.*
Пока перебиваюсь биндингом dqml.
Аноним 13/05/16 Птн 20:59:20  742690
>>742676
Раз так все замечательно то почему Ди не взлетел?
Аноним 13/05/16 Птн 21:02:24  742695
>>742690
А он не взлетел?
Что в твоем понятии "взлетел"?
Аноним 13/05/16 Птн 21:07:28  742702
>>742695
Используется более, чем 10к людей.
Аноним 13/05/16 Птн 21:08:10  742703
>>742695
Количество проектов, обсуждение языка. На хипстерском го много кода, много статей, все о нем говорят, на том же хабре ни дня без статьи про го, а про Ди я вообще ничего не слышу
Аноним 13/05/16 Птн 21:10:00  742706
>>742702
Зачем тебе это, это сродни дрочки на количество подписчиков на ютабе?

>>742703
Но при этом ди гораздо лучше хипсторского го.
Го пиарит гугл, го - типо "инновация". Дишка - же просто "кресты 2.0".
Его никто не учит с нуля - не модно. На него только с крестов спрыгивают.
Аноним 13/05/16 Птн 21:14:20  742710
>>742703
Впрочем, и на хабре есть статьи о нем, пусть и не так много.
https://habrahabr.ru/hub/d/

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

У крестов же "популярность" (как и у сишки) очень просто объясняется - их преподают в вузиках и школах.
Аноним 13/05/16 Птн 21:14:43  742711
>>742706
Мне кажется не особо как-то спрыгивают. Никто не будет перписывать старый код, да и вообще народ как-то с опаской смотрит на Ди, как и на раст.
Аноним 13/05/16 Птн 21:16:46  742713
>>742711
Вот и ответ - старый код не переписывают, а новый - а все уже написано, лол.
Аноним 13/05/16 Птн 23:13:35  742830
>>742640
AddInTable(0, name, number, key);
Под конец у тебя key будет >= last, и если он не найдет элемент за один проход, а потом еще и за второй, то выйдет за пределы при проверке. Видимо, ты хотел сделать от 0 до изначального key, тогда тебе в начало функции надо вставить что-то вроде const int originalKey = key; и затем делать AddInTable(0, name, number, originalKey);

Кстати:
>good != true
>good == false
Криво же выглядит, используй !good.
Аноним 13/05/16 Птн 23:54:59  742861
>>742710
Паскаль тоже преподают, по твоей логике все должны писать на нем тоже. Жабу и похапе не преподают, почему же они в топе? Хуевый аргумент, короче, не находишь?
Аноним 13/05/16 Птн 23:55:59  742862
>>742861
>Жабу и похапе не преподают,
Лолват, это жабу то не преподают?
Аноним 13/05/16 Птн 23:57:51  742863
>>742862
Разве что на спецкурсах или в шибко продвинутых универах. Стандартный курс: паскаль-асм-няшная-кресты-лисп.
Аноним 13/05/16 Птн 23:59:26  742865
>>742863
Херню несешь. Жабу преподают массово что в западных универах, что у нас.
Да и насчет паскаля ты не ошибся - дельфи еще дохрена где остался. Но все так же - старый код.
Аноним 14/05/16 Суб 02:49:50  742955
>>742639
есть static library (.lib, содержащая бинарный код)
есть dynamic library (dll)
dll, в свою очередь можно линковать двумя способами - implicit (статически) и в рантайме explicit(на самом деле смособов больше, есть еще отложенная)
для implicit linking тебе тоже потребуется .lib файл, но только с секцией экспорта, те она работает как библиотека импорта здесь, а не как хранилище оттранслированого бинарного кода
Аноним 14/05/16 Суб 03:06:50  742959
Помогите посчитать Pi, используя MPI, через другие ряды

Взял пример из статьи
https://ru.wikipedia.org/wiki/Message_Passing_Interface
http://pastebin.com/b2uztEqG

Все работает, вычисляет в несколько потоков. Но преподаватель хочет, чтобы считало другим методом, например, через другие ряды https://ru.wikipedia.org/wiki/Пи_(число). Как это реализовать?
Аноним 14/05/16 Суб 08:34:39  742998
>>742959
Берешь <random> и считаешь Бюффоном, самое то для распараллеливания.
Аноним 14/05/16 Суб 09:47:42  743015
>>742959
А в чем проблема? Берешь любой ряд и пусть каждый процессор вычисляет свой кусок этого ряда. Все члены ряда зависят только от своего индекса, от соседних членов не зависят, поэтому проблем с распараллеливанием здесь нет никаких.

Ты не можешь найти кусок в коде, где происходит вычисление кусочка ряда (он, между прочим, откомментирован и там это место обозначено) и подменить одну формулу на другую?
Аноним 14/05/16 Суб 11:07:44  743040
>>742865
Двачую этого
Два семестра Java были после паскаля, крестов и дельфи

Про качество, конечно, говорить не буду, но ебалом в документацию окунули - уже хорошо

мимо-из-рггму
Аноним 14/05/16 Суб 11:09:59  743043
>>742863
В россии лисп? Хуй знает. ООП на джаве любят преподавать, например.
Аноним 14/05/16 Суб 11:21:20  743047
>>743015
Да не могу, не работал с MPI и С++ до этого.
Аноним 14/05/16 Суб 14:05:48  743168
>>743047
Ну так почитай и разберись. Когда у тебя возникнут конкретные вопросы — тогда приходи, поможем.

Честное слово, я не против помочь человеку, который пытается разобраться, но на чем-то застрял, но мне дико бомбит от халявщиков, которые ничего читать и гуглить не хотят, а желают, чтобы им на блюдечке готовые решения давали.
«Я раньше с Х не сталкивался и не работал» — это не оправдание. Все мы раньше не сталкивались и не работал ни с чем, но как-то разобрались, знаешь.

Ресурсы по плюсам есть в шапке, про mpi можешь почитать, например, тут https://habrahabr.ru/post/121925/ или про любой другой ссылке в гугле про запросу "c++ mpi". Удачи.
Аноним 14/05/16 Суб 20:21:47  743624
Нужна помощь с формочкой, уже не знаю куда обращаться. Диагноз прозвучал как приго... в смысле:
Есть функция в отдельном файле:

#include "MyForm.h"
void showvec(System::Windows::Forms::TextBox^ &textBox)
{
textBox->Text = "";
}

В нее, по идее, должен поступать адрес textbox->text и в функции этот параметр изменяться. Компилятор на функцию не ругается, а вот вызов не работает.
Аноним 14/05/16 Суб 20:22:49  743628
>>743624
поправка:
{
textBox->Text = "";
}
Аноним 14/05/16 Суб 20:34:05  743648
>>743043
Говорю за ВМК-факультеты универов, специальность ПМиИ. В МГУ, КГУ, НГУ так. В институтах, возможно, другая программа.
Аноним 14/05/16 Суб 21:02:14  743670
>>743624
Во-первых, отладчиком пройдись и посмотри, заходит он в эту функцию вообще или нет
Во-вторых, ты правильно разыменовываешь ссылки? У тебя там навешана и шарповская ссылка и сишная, ты уверен, что это так нужно разыменовывать?
Аноним 14/05/16 Суб 21:15:39  743673
>>743670
С формами и классами я в первый раз. В функцию не заходит, т.к. неоткуда. Я ее вызвать не могу. Насколько я понимаю:
Тип_результата имя_функции(тип_формального_параматра имя_формального_параметра)
По другому разыменовать не могу - ругается.
Аноним 14/05/16 Суб 21:18:03  743675
>>743673
А что ты ей передавать пытаешься?
Аноним 14/05/16 Суб 21:20:11  743677
>>743670
void showvec(System::String^ *textBox)
Можно попробовать, но я не знаю как с ним работать.
Аноним 14/05/16 Суб 21:20:41  743678
>>743675
Я пытась передать адрес тексбокса, чтобы с ним работать внутри функции.
Аноним 14/05/16 Суб 21:26:56  743687
>>743678
вызов покажи
Аноним 14/05/16 Суб 21:29:48  743688
>>743687
Честно говоря, мне стыдно. Перепробовал несколько, вот самый адекватный из них:
showvec(&textBox1);
Аноним 14/05/16 Суб 21:34:00  743692
>>743688
>>743628
>>743624
Ты нормально покажи весь код, что откуда вызывается. По функции из одной строчки никто ничего тебе не скажет.
Аноним 14/05/16 Суб 21:40:14  743702
>>743692
http://pastebin.com/p5bAcu6b
http://pastebin.com/yaa6FJ00
Аноним 14/05/16 Суб 21:43:01  743705
>>743702
сообщение об ошибке компилятора тоже в студию
Аноним 14/05/16 Суб 21:45:14  743706
>>743705
http://pastebin.com/WsGQBQy9
Аноним 14/05/16 Суб 21:46:23  743708
>>743706
void showvec(System::String^ textBox)
вот таким вот объявление функции сделай
^ -- это уже ссылка, добавлять & или * не нужно
Аноним 14/05/16 Суб 21:53:32  743713
>>743708
Спасибо, теперь компилятор не ругается! Но функция не работает, гугл говорит, что '^' - это побитовое исключение.
Может, я ошибся с вызовом?
showvec(textBox1->Text);
Аноним 14/05/16 Суб 21:58:11  743716
>>743713
вызывать ты так должен:
showvec(textBox1);
Аноним 14/05/16 Суб 22:02:15  743721
>>743716
Но ведь я не могу так вызвать(+ только что проверил)
Класс схож со структурой.
Если у меня структура:
struct randomstruct
{
char c[10];
char d[10];
}
и переменная
randomstruct a;
То чтобы что-то записать в 'а', я должен указать элемент структуры:
a.b='g'
Аноним 14/05/16 Суб 22:03:09  743722
>>743721
>a.b='g'
a.c='g'
самофикс
Аноним 14/05/16 Суб 22:13:17  743732
>>743708
ой фак, я тебе не то скопировал
вот так у тебя функция должна быть объявлена:
void showvec(System::Windows::Forms::TextBox^ textBox)
вот так ты её доложен вызывать:
showvec(textBox1);

>>743721
Тип System::Windows::Forms::TextBox^ -- это шарповская ссылка, что-то вроде shared_ptr, только со свистелками, считай что это просто умная обертка над указателем. Когда ты пишешь showvec(textBox1); ты передаешь внутрь функции указатель на своей текстБокс и используешь его внутри. Никаких присваиваний структур делать не надо.
Аноним 14/05/16 Суб 22:27:32  743738
>>743732
Спасибо, я уже не смогу сегодня проверить. Час с копейками на меня потратил... Отпишусь потом.
Аноним 14/05/16 Суб 22:41:18  743743
>>743732
>>743738
На самом деле я все смог проверить. Все работает, ты мне очень помог, спасибо тебе. А то я с утра мучаюсь.
Аноним 15/05/16 Вск 20:39:48  744464
14633339890220.png (37Кб, 1124x553)
почему оно не считывает первый массив междуй хуй1 и хуй2?
Аноним 15/05/16 Вск 21:14:50  744491
Каким образом функция main(int argc, char *argv[]) при исполнении получает свои аргументы? Кто ей их передает в юниксах и в шиндовс? Где документация на это?



Аноним 15/05/16 Вск 21:16:17  744493
>>744464
Может компилятор выкинул нахуй. Ты там гарантировано за буфер вылазишь, это UB - тоесть компилятор может засунуть туда что угодно, хоть винт отформатировать и это будет полностью соответствовать стандарту.
Аноним 15/05/16 Вск 21:17:45  744495
>>744493
в вижуалзе точно такойже результат
Аноним 15/05/16 Вск 21:18:22  744496
>>744464
https://study.cs50.net/pointers
https://www.youtube.com/watch?v=yOdd3uYC--A
Аноним 15/05/16 Вск 21:22:45  744506
>>744491
ОС передает. Читай в документации к своей операционной системе.
>>744495
Чем бы твой "вижуалз" небыл, это врядли что-то меняет. Если ты объявил массив foo размера bar то читать или писать в foo[bar] ты не можешь. Это UB.
Аноним 15/05/16 Вск 21:42:16  744532
>>744506
>ОС передает. Читай в документации к своей операционной системе.
Посмотрел сейчас в дебаггере и выяснил, что шиндовс предварительно обрезает все лишние пробелы из argv.

Правда по адресу, где оно находится, предварительно лежит в памяти какое-то дерьмо неясного происхождения.

Дополнительные ссылки на документацию приветсвуются.
Аноним 15/05/16 Вск 21:57:01  744557
>>744532
https://ru.wikipedia.org/wiki/Program_Segment_Prefix
https://support.microsoft.com/en-us/kb/123729
Аноним 15/05/16 Вск 21:57:32  744559
>>744491
> The POSIX standard declares exec functions in the unistd.h header file, in C language. The same functions are declared in process.h for DOS (see below), OS/2, and Microsoft Windows.
Нашел. Вроде оно.
Помогите с пердолингом Аноним 15/05/16 Вск 22:35:59  744610
Посоны, поясните такую вещь:
Указатели argv[0]...argv[argc-1] ссылаются на участки памяти, где лежат аргументы командной строки.
Указатель argv[argc] ссылается на NULL (0x00000000), как ему и положено.

А почему argv[argc+n] ссылаются на рандомные(?) участки памяти? Ну по крайней мере отладчик студии мне именно это показывает. Так и должно быть?
Аноним 15/05/16 Вск 22:43:40  744621
Дополнительное исследование показало, что максимально я могу обратиться из под отладчика к argv[argc+2321], а к argv[argc+2322] уже не могу. Лол. Сейчас проведу эксперимент, что будет если прочитаю по этому адресу из работающей программы.
Аноним 15/05/16 Вск 22:44:41  744622
>>744559
Потому что это уже не часть массива argv, там память, относящаяся к чему-то другому. Читать из нее это UB, поэтому у тебя все имело право вообще покрашиться. Но фактически просто нет контроля, и загрузчик может при каждом запуске изменять порядок argv и других данных по какой-то своей внутренней логике. Если тебе не повезет и argv окажется в конце виртуального сегмента, то сработает защита и выбросится SEH (как правило), если же после argv идет другая глобальная переменная или просто неиспользуемая часть выделенной тебе памяти, то ты просто считаешь ее.
Аноним 15/05/16 Вск 22:44:57  744623
>>744622
сюда >>744610
Аноним 15/05/16 Вск 22:46:07  744626
>>744621
Под отладчиком и без отладчика ничего не отличается же, если собрано с одними и теми же параметрами.
Аноним 15/05/16 Вск 22:50:07  744632
> Сейчас проведу эксперимент, что будет если прочитаю по этому адресу из работающей программы.
Случилось вот что. Для argv[argc+2322] все прошло ок:
Argv[2328] is a: "(null)"
А для argv[argc+9999] сдохла со словами:
Unhandled exception at 0x00ed1070 in print_argv.exe: 0xC0000005: Access violation reading location 0x0065c544.
Аноним 15/05/16 Вск 22:57:35  744642
>>744632
Запусти свою программу из-под OllyDbg, вообще охуеешь, как там все устроено. Любопытство - это здорово, вообще-то. Если ты не растеряешь его и научишься ставить настоящие вопросы, то цены тебе не будет, братюнь.
Аноним 15/05/16 Вск 23:09:19  744656
>>744464
>>std::cin >> n;
Считывает только число, отставляя '\n' в буфере, который подбирается первым getline
Аноним 15/05/16 Вск 23:13:06  744657
>>744622
>сработает защита и выбросится SEH (как правило)
Полез читать что такое SEH я нюфаня и обнаружил такое письмо, от автора SEH:
https://www.justice.gov/sites/default/files/atr/legacy/2006/03/03/1341.pdf
А Билл Гейтс голова! Посоны, а вы умеете преобразовывать код из Паскаля в С++ и из С++ в Джаву?
Аноним 15/05/16 Вск 23:13:56  744658
>>744610
lol, по-твоему вся память начиная argv+argc должна нулями забиваться. Сам понимаешь что это бред?
Аноним 15/05/16 Вск 23:16:08  744660
>>744658
Тем не менее, по факту часто вся свободная память забивается в режиме отладки нулями, 0xDEADBEEF или чем-то подобным.
Аноним 16/05/16 Пнд 00:04:36  744703
>>744632
Смотри, существует такая штука как пейджинг (paging), погугли и почитай что это такое. Если вкратце -- те адреса, которые ты имеешь в своей программе -- это не физические адреса реальных ячеек в оперативной памяти, а виртуальные адреса, которые операционная система отображает на реальные ячейки памяти. У каждого процесса в системе есть виртуальная таблица страниц отображенной для него памяти. Каждый указатель в твоей программе -- это, грубо говоря, индекс в этой таблице. Когда ты обращаешься к памяти по какому-либо указателю, система за кулисами идет в эту таблицу, смотрит на индекс и если в этой таблице такой индекс есть, то она читает ячейки соответствующие записи в таблице по этому индексу. Если такого индекса в таблице нет, то бросается исключение что-то вроде access violation, мол, полез ты не в свою память, дружок, хуй тебе. На процессоре дергается прерывание и в программу твою прилетает сигнал SIGSEGV (это в posix, что там в винде я не знаю), который её и грохает (если ты, конечно, не перехватываешь его, но это уже другая история).

Стоит еще сказать, что память выделяется кусками -- страницами. Если ты выделишь память в один байт, то для твоей программы выделится целая страница, поэтому если ты напишешь, скажем, что-то такое: char x = new char; (x+1) = 42; То с высокой долей вероятности у тебя программа не упадет, несмотря на то, что ты юзаешь невыделенную память. Но может и упасть, если компилятор соптимизирует код таким образом, что этот байт будет выделен где-то на конце страницы, но это OCHE маловероятно.

Когда ты свою прогу запускаешь, система выделяет для неё память и куда-то в эту память кладет аргументы командной строки. Соответственно по указателям на эти аргументы есть записи в табличке страниц и когда ты из них читаешь все хорошо. Вероятно эти страницы помечены флагом readonly и если ты попробуешь в них что-то писать, тебя система пидорнет. Когда ты начинаешь итерироваться по argv[argc+n], первое время ты итерируешься по уже выделенной странице, т.к. маловероятно что аргументы так удачно выровнятся, что попадут прямо в конец страницы и следующий же байт окажется на другой странице, скорее всего впереди еще есть сколько-то байт до конца страницы и ты можешь из них читать. Но рано или поздно ты дойдешь до конца страницы и уже следующий байт будет ссылаться на несуществующую запись в таблице страниц и система тебя грохнет способом который я описал выше.

Вообще если тебе интересна эта тема, почитай Таниенбаума, он всю эту кухню по хардкору расписывает.
Аноним 16/05/16 Пнд 02:35:24  744774
>>744703
Бро, как-то ты смазанно рассказал про paging и memory regions, поэтому я добавлю:

- Раньше оперативной памяти не хватало и программисты писали некую срань под названием "оверлеи". Они перекидывали из оперативки на жесткач, кусочки программы, которые прям сейчас были не нужны. Потом олдфаги заебались и решили перекинуть этот геморрой операционной системе.
- Разработчики ОС и железа поднатужились и высрали технологию, которую назвали paging (страничной памятью). Помимо автоматического перекидывания данных из памяти на диск и обратно, оно еще дает виртуальное адресное пространство, так что программисты перестали терпеть жопоболь из-за дележки памяти с другими программами и ядром ОС.
- Помимо этого, посоны обнаружили, что ебаны в рот, кулхацкеры не дремлют и регулярно пытаются заставить комп выполнять опасный код. Для противодействия этому придумали разделение памяти на сегменты(memory regions), которые призваны запретить интерпретацию данных программы как инструкций. Поддержали сразу и программно, и в железе.

Помимо этого в intel придумали еще и сегментную память. Это такие крутые memory regions, где у каждого региона свое адресное пространство. В современных ОС не используется, потому что разработчики *nix и windows в рот ебали эту дрисню. Дело в том, что из-за нее сильно изменилась бы работа с памятью, а поскольку на других архитектурах эту ёбань не завезли, им пришлось бы дико пердолиться, поддерживая разные модели памяти для платформ. Поэтому в x64 intel выпилили нахуй сегментную память из процессора, ибо только место занимает.

Аноним 16/05/16 Пнд 09:44:42  744861
14633810822320.jpg (269Кб, 877x877)
Аноним 16/05/16 Пнд 10:08:11  744864
почему тут move конструктор не вызывается, знает кто?
https://ideone.com/TFMirB
Аноним 16/05/16 Пнд 10:32:46  744870
>>744864
А зачем там move-конструктор? Он лишний. Там RVO, никаких лишних действий.
Аноним 16/05/16 Пнд 13:47:45  744949
>>744870
Более того, если компилятор не умеет делать RVO, то по стандарту он обязан заюзать копирующий move-конструктор.
Аноним 16/05/16 Пнд 14:35:00  744994
>>744870
>>744949
А как так тогда получается?
http://rextester.com/FGDME69292 (Clang)
http://rextester.com/EVZMH86408 (MSVS)
2 компилятора - разный вывод, кто прав?
Аноним 16/05/16 Пнд 14:48:19  745001
>>744994
Все правы, это implementation defined behaviour. Стандарт разрешает, но не обязывает делать RVO, каждый дрочит как он хочет.
Аноним 16/05/16 Пнд 14:52:15  745010
>>745001
>>744994
Вот поэтому кресты и ни разу не кроссплатформенное говно.
Аноним 16/05/16 Пнд 14:58:44  745025
>>745010
gcc есть везде
Аноним 16/05/16 Пнд 15:06:09  745033
>>745010
На подкапотном уровне тебе никто не обещал кроссплатформенности, маня. Пиздец, так можно про любой язык кукарекать А ЧИВО ЕТА РАЗМЕР БИНАРНИКА ИЗМИНИЛСЯ ПРИ ПЕРЕХОДЕ С КАЛЬКУЛЯТОРА НА СТИРАЛЬНУЮ МАШИНКУ?!!!111 НА ЛИНУПСЕ JVM ЖРЕТ НА ПОЛТОРА МЕГАБАЙТА БОЛЬШЕ РЯЯЯЯЯЯЯ!!!1111 ПИСТОН СТАЛ РАБОТАТЬ БЫСТРЕИ И МАЯ ВЕЛОСИПЕДНАЯ СИНХОРИНЗАЦИЯ ОТВОЛИЛАСЬ!!!!!11111
Аноним 16/05/16 Пнд 15:52:26  745048
>>744994
Ты в глаза ебешься? Поведение MSVC - это как раз тот случай, когда компилятор не умеет делать copy elision в данном конкретном случае. Вместо этого он заебенил move-семантику.
Лично меня такое поведение удивило. Вроде раньше студия умела в RVO в таком простом случае. Может баги полезли из-за внедрения move-семантики

Вообще, copy elision - единственная оптимизация, которую можно выполнять даже в тех случаях, когда у конструкторов копирования есть побочные эффекты.
Аноним 16/05/16 Пнд 16:07:50  745059
14634040706720.png (149Кб, 504x1301)
подскажите годную цветовую схему для кода
Аноним 16/05/16 Пнд 16:27:15  745073
>>745059
https://github.com/irfn/zen-and-art
Аноним 16/05/16 Пнд 16:47:11  745089
>>744994
> 2 компилятора - разный вывод, кто прав?
Правило простое - MSVS всегда неправ.
Аноним 16/05/16 Пнд 17:02:14  745103
>>745089
Если MSVS неправ, то Герб продавит изменение стандарта и он таки станет прав.
Аноним 16/05/16 Пнд 17:32:56  745127
>>745073
ужас какой
Аноним 16/05/16 Пнд 18:46:48  745186
#include <iostream>
#include <string>
using namespace std;

int main()
{ string line("some line");
for (auto bukva : line){
bukva="x";
cout<<line<<endl;}
return 0;
}
Выдает
invalid conversion from 'const char*' to 'char' [-fpermissive]
Что я сделал не так?
Аноним 16/05/16 Пнд 18:51:17  745192
>>745186
>bukva="x";
одинарные кавчки
Аноним 16/05/16 Пнд 18:55:25  745196
>>745186
Ты так буквы в строке меняешь? Тогда auto &bukva
Аноним 16/05/16 Пнд 22:00:47  745353
То чувство когда реализуешь уже третий раз один и тот функционал и всякий раз получается не так как было до этого, хотя функции не меняются.
Аноним 17/05/16 Втр 01:35:00  745471
int i = 2000;
boost::thread* t = new boost::thread( boost::bind(&Player::use,i) );

Почему не работает?
Аноним 17/05/16 Втр 01:55:34  745481
>>745471
>>Player p;
>>auto t = boost::thread(boost::bind(&Player::use, &p, i));
Метод должен вызываться относитедьно объекта.
Читай доки блджад!
http://www.boost.org/doc/libs/1_61_0/libs/bind/doc/html/bind.html
Аноним 17/05/16 Втр 01:56:43  745482
>>745471
И нахер тебе сырой указатель??!
Аноним 17/05/16 Втр 01:58:07  745483
>>745481
А если я прям из класса Player и вызываю
>>745482
Да я перекомпилил уже как только могу, мозг немного треснул
Аноним 17/05/16 Втр 01:58:10  745484
>>745482
Не втдишь, человек игру делает, все должно быть производительно.
Аноним 17/05/16 Втр 01:59:10  745485
>>745471
И вообще лучше будет так:
>>auto t = boost::thread(&Player::use, &p, i);
или
>>auto t = boost::thread([&p] {p.use(i);});
Аноним 17/05/16 Втр 02:00:08  745486
>>745483
В смысле если метод статический?
Аноним 17/05/16 Втр 02:02:10  745488
>>745484
И как сырой указатель тут улучшит производительность??
Аноним 17/05/16 Втр 02:03:36  745489
>>745486
Да нет, прямо из интанса и вызываю
Какая впизду игра, переименовал палевное название структуры в первое что в голову придет
Отлично, this закатило.
>>745485
Когда-нибудь я тоже буду шарить на твоем уровне

спасибо всем, добра
Аноним 17/05/16 Втр 02:06:39  745492
>>745488
Ну так оверхеда нет, что ты начинаешь?
Аноним 17/05/16 Втр 02:10:40  745493
>>745492
RVO, move semantics?
Аноним 17/05/16 Втр 02:12:50  745494
>Оптимизируют без профайлера
>заменяя умные указатели сырыми
>на объекте потока

Совсем поехали ньюфаги
Аноним 17/05/16 Втр 02:13:02  745495
>>745492
В любом случае make_unique > new
Аноним 17/05/16 Втр 02:30:04  745502
>>745492
Ну и в довесок
>> auto t = thread(...);
вызывает меньше аллокаций
Аноним 17/05/16 Втр 13:20:30  745735
#include <iostream>

int main(){
int p;
std::cout << sizeof(
p);
return 0;
}

Каким образом этот код правильно выполняется?
p - указатель на еще не выделенную память, переменной не существует. Какого хуя тогда
Аноним 17/05/16 Втр 13:21:05  745737
>>745735
sizeof((звездочка)p);
Аноним 17/05/16 Втр 13:21:54  745740
>>745737
#include <iostream>

int main(){
int (звездочка)p;
std::cout << sizeof((звездочка)p);
return 0;
}

годный редактор текстов, ничего не скажешь
Аноним 17/05/16 Втр 13:28:57  745748
>>745740
Аноним 17/05/16 Втр 13:29:02  745750
>>745740
sizeof - это оператор, который работает во время компиляции, а не в рантайме. Благодаря тому, что плюса статически типизированы, размер переменной ясен уже на этапе конпиляции.
Аноним 17/05/16 Втр 13:30:09  745751
>>745740
А что не так? sizeof(*p) вернет размер инта относительно char.
Аноним 17/05/16 Втр 13:36:46  745757
>>745751
Не размер относительно char, а размер в байтах. Если что, char не обязан быть размером 1 байт.
Аноним 17/05/16 Втр 13:53:08  745777
>>745757
>Не размер относительно char, а размер в байтах. Если что char обязан быть размером 1 байт, стандарт прямо указывает что sizeof(char) == 1 для всех реализаций. При этом в char не обязательно должно быть 8 бит.
исправлены неточности
Аноним 17/05/16 Втр 13:54:38  745778
суп, аноны. такой вопрос: как в этом вашем кодлайте сделать так, чтобы дебажил в моем няшном терминальчике, а не в сраном xterm?
Аноним 17/05/16 Втр 13:59:36  745781
>>745777
Да, верно, спасибо.
Аноним 17/05/16 Втр 14:33:09  745818
>>745777
Но 1 байт это и есть 8 бит, значит обязан.
Байт размером не 8 бит это не байт, а какое-то другое название
Аноним 17/05/16 Втр 14:34:55  745822
>>745778
в настройках смени
Аноним 17/05/16 Втр 14:37:12  745825
>>745750
Так нет никакой переменной. p - указатель на переменную, которой не существует
Аноним 17/05/16 Втр 14:38:34  745827
>>745822
8 бит - это октет
Аноним 17/05/16 Втр 14:38:57  745829
>>745827
Сюда >>745818
Аноним 17/05/16 Втр 14:40:57  745833
>>745818
> Но 1 байт это и есть 8 бит, значит обязан.
Почему тупоголовые обязательно решают написать посты и обнажить свою глупость? Если ты туп, то сиди ридонли.
> The unit octet was defined to explicitly denote a sequence of 8 bits
> byte is a unit of digital information that most commonly consists of eight bits
> Various implementations of C and C++ reserve 8, 9, 16, 32, or 36 bits for the storage of a byte. The actual number of bits in a particular implementation is documented as CHAR_BIT as implemented in the file limits.h.
Аноним 17/05/16 Втр 14:48:52  745845
>>745825
Есть переменная p, которая указывает на int, этого достаточно компилятору. И p - это не указатель на переменную, а указатель на участок памяти.
Аноним 17/05/16 Втр 14:54:09  745849
>>745833
Эй долбаеб, ты кто такой чтобы решать что мне делать? Что по кайфу то и делаю мудила, ебало завалил
Аноним 17/05/16 Втр 14:55:20  745850
>>745822
пробовал, но там можно настроить только запуск без отладки. без отладки запускается то, что надо. но в дебаге все равно запускает xterm
Аноним 17/05/16 Втр 15:05:25  745860
>>745849
Этот зверек подорвался. Несите следующего.
Аноним 17/05/16 Втр 15:33:51  745877
Сап, аноны. Помогите разобраться с УСЛОВИЕМ задачи. дожили блять
Есть задача:
Дана структура классов программного проекта. Необходимо построить процесс компиляции с помощью топологической сортировки.

Что есть топологическая сортировка я просек, но как понимать СТРУКТУРА КЛАССОВ ПРОГРАММНОГО ПРОЕКТА. О зависимости классов я понял, наследование там, все такое, но что есть СТРУКТУРА КЛАССОВ? Как мне ее передавать и в каком виде она вообще передается.
Аноним 17/05/16 Втр 15:38:09  745883
>>745849
Сасай, бездарность. Иначе в следующий раз просто нахуй пошлем.
Аноним 17/05/16 Втр 15:39:54  745887
>>745877
Имеется в виду граф классов, где ребра отображают отношения между классами (наследование или композицию).
Аноним 17/05/16 Втр 15:41:36  745890
>>745887
окей, это я тоже понял, что необходимо построить граф. про композицию почитаю. но откуда брать этот граф, точнее не так, в каком виде считывать классы?
Аноним 17/05/16 Втр 15:43:46  745893
>>745850
Забей ты на кодлайт, это говно тут всего пара анонов пиарит. В энтерпрайзе все юзают (в порядке убывания) MS VS / Eclipse CDT / QtCreator / CLion. Лично я рекомендую eclipse, очень годный code assistant прямо из коробки.
Аноним 17/05/16 Втр 15:49:01  745896
>>745890
Если это просто задачка на графы, то тебе уже дается направленный граф, на котором нужно заюзать топологическую сортировку. При этом, раз тебя просят сделать топ. сортировку, то граф должен быть ациклическим, хотя по условию в нем могут быть циклы. Т.е. перед топ. сортировкой нужно найти и разорвать циклы.

Если это не чистая задачка на графы, то тебе нужно пропарсить файлы проекта, найти в нем определения классов (хватит обычных регулярок), построить граф этих классов, а потом сделать то, что нужно в чистой задаче на графы.
Аноним 17/05/16 Втр 15:54:40  745900
>>745893
акей. я вообще идешки недолюбливаю. уж очень тормозные. привык все через вим и терминал делать. но все же не хватает идешных фич. хотел из вима иде сделать. чото не осилил. в иде вим-мод сделан через жопу и это делает меня грустить. хотя qtcreator не плох вроде.
Аноним 17/05/16 Втр 15:56:19  745901
>>745896
Спасибо, задача как раз "нечистая". Буду пробовать, добра тебе
Аноним 17/05/16 Втр 15:58:18  745903
>>745900
>уж очень тормозные
Анализ кода очень требователен к I/O операциям. Если IDE тормозят, то в VIM'е будет то же самое.

Решается покупкой ssd или пляской с tmpfs.
Аноним 17/05/16 Втр 16:01:37  745906
>>745903
спасибо. буду знать
Аноним 17/05/16 Втр 16:42:10  745954
Поясните за это:
#define ERROR(str) do { (void)sizeof(str); } while(0)
Зачем цикл в макросе?
Аноним 17/05/16 Втр 17:07:20  745973
14634940406190.png (72Кб, 429x340)
>>745893
>очень годный code assistant прямо из коробки
Аноним 17/05/16 Втр 17:11:52  745974
>>745973
Ты че, ебанутый? eclipse отлично открывает makefile проекты и прекрасно их анализирует. Например, проекты linux, freebsd, virtualbox я просто открыл и начал с ними работать. В других ide так сделать нельзя.
Аноним 17/05/16 Втр 17:19:40  745979
>>745954
Данный цикл в макросе не делает ровным счетом ничего, а зачем он нужен я не понял (вроде бы реализует разное отношение к показу сообщений об ошибках в дебаг версии и в релиз версии). Но ты можешь понять тут или в книге "Enough Rope to Shoot Yourself in the Foot", откуда они этот макрос спиздили.
https://books.google.ru/books?id=wz2nBAAAQBAJ&pg=PA834&lpg=PA834
Аноним 17/05/16 Втр 17:27:58  745980
>>745979
Спасибо. Разобрался.
Если подставим в if без кавычек, то так будет норм работать.
Аноним 17/05/16 Втр 17:34:02  745982
14634956420520.png (226Кб, 1252x3348)
>>745979
Вот кусок из книги.
Аноним 17/05/16 Втр 17:51:49  745997
>>739169
А почему нельзя просто писать в разные файлы, а в консолях сделать банальный tail -f (в винде есть аналог, я уверен, например фар умеет) на каждый лог-файл?
Аноним 17/05/16 Втр 17:53:17  745998
>>745954
чтобы был скоп и использование переменной. иначе может не скомпилировать или ругаться на неиспользованную переменную
Аноним 17/05/16 Втр 18:06:32  746007
Ребята, обучаюсь на курсах, пришло время выбрать выпускной проект, а что-то ничего в голову не лезет, может вы кто что подскажет?
Аноним 17/05/16 Втр 18:20:13  746014
>>746007
>обучаюсь на курсах
лох
Аноним 17/05/16 Втр 18:21:43  746015
>>745954
do while(0) idiom
Аноним 17/05/16 Втр 18:44:02  746047
Что скажете про tinyxml2? Норм или есть ещё аналоги лучше?
Аноним 17/05/16 Втр 18:44:12  746048
Байтоебы, поясните за адресное пространство в шине PCI. Таненбаум чета не понятно объясняет. Например он совершенно нихуя не говорит про конфигурационное пространство.
Аноним 17/05/16 Втр 19:14:38  746068

Как-то раз у вас встречалось нечто вроде "ушли в стартапы за деньгами из настоящей индустрии". Если она настоящая, чего ж там денег меньше? Знаете, тут уже недалеко до другого анекдота "может, с них за вход плату брать?". У ivan-gandhi как-то была ссылка на скальную вакансию где-то там, недалеко от Германии, с издевательской припиской "изменить мир задешево". Вот, это оно и есть.

Шум и пафос. Известность. За это платят. А рабу лампы, вернее - большого индустриального комплекса, который раб без этого комплекса мало что значит - можно и не платить. Куда ж он денется-то. 90ые в РФ это хорошо показали, чего стоят инженеры сами по себе. Пусть дальше занимаются серьезным делом, изобретают снижение издержек для мистера Твистера (он же - герр Херр), хозяина завода, газеты и парахода, снизит на миллион, ему дадут 1000 - от щедрот. Изобретет 3д-принтер в 80х, чтобы до масс этот принтер дошел только после 2010, когда мистер Твистер насытится. Разумеется, гитхаб тут неуместен, с ним под сукно сложно что-то сложить. Программисты обладают гораздо бОльшей автономностью. И если они вдруг мистера Твистера обманывают, обещая ему невесть что на хаскеле, то и поделом. Не обеднеет. Делиться надо.
Аноним 17/05/16 Втр 19:32:35  746083
Посоны, правильно ли я понимаю, что MSVS предоставляет только хедеры и декларации функций стандартной библиотеки. А самих исходников этих функций нет?
И если я хочу посмотреть исходники, то мне нужен gcc/g++?
Аноним 17/05/16 Втр 19:35:56  746085
>>746083
Да нет. Там всё есть. Правой кнопкой на инклюде и open file.
Аноним 17/05/16 Втр 19:38:16  746087
>>746083
ну, видимо, да. MSVC не швабодный, поэтому реализации функций ты не найдешь. а gcc опенсурс, только в исходниках (stl например) там хуй разберешься
Аноним 17/05/16 Втр 19:39:48  746089
>>746087
хотя реализацию stl в msvc наверное можно глянуть, шаблоны же
Аноним 17/05/16 Втр 20:01:51  746103
>>746083
Сам нашел. Они поставляют исходники, но к ним не получится обратиться по 'Go to definition', т.к. программы линкуются к уже готовым .dll
> (1) We ship most of the sources for the CRT with Visual Studio; you can find them in the Visual Studio installation directory under VC\crt\src.
Плюс, что забавно они сами не писали стандартную библиотеку, а тупо купили ее у Плаугера.
Аноним 17/05/16 Втр 20:04:16  746106
>>746103
а поддреживает кто?
Аноним 17/05/16 Втр 20:11:35  746112
>>746106
> Copyright (c) 1992-2009 by P.J. Plauger. ALL RIGHTS RESERVED.
> Consult your license regarding permissions and restrictions.
> V5.20:0009
С 2009 года, наверное, сами поддерживают.
Аноним 17/05/16 Втр 20:31:03  746136
Cап, котаны...
class Matrix
{
private:
USI Matrix_Size;
intm;
static USI HOW_MUCH;
USI numb;
public:
Matrix();
Matrix(USI M_S);
Matrix(USI M_S,int
m);
~Matrix();
const Matrix& operator= (const Matrix&);
Matrix& operator+ (const Matrix&);
};

Matrix::Matrix(USI M_S)
{
HOW_MUCH++;
numb = HOW_MUCH;
Matrix_Size = M_S;
m = new int[Matrix_Size];
for (USI l = 0; l < Matrix_Size; l++) m[l] = new int[Matrix_Size];
for (USI s = 0; s < Matrix_Size; s++)
{
for (USI j = 0; j < Matrix_Size; j++)
{
((m + s) + j) = 0;
}
}
}

Matrix::~Matrix()
{
for (USI l = 0; l < Matrix_Size; l++) delete[]m[l];
delete m;
}

bool Matrix::operator==(const Matrix& s)
{
if (Matrix_Size == s.Matrix_Size)
{
for (USI i = 0; i < Matrix_Size; i++)
{
for (USI j = 0; j < Matrix_Size; j++)
{
if (!(
((s.m) + i) + j == ((m + i) + j))) return false;
}
}
return true;
}
else
{
return false;
}
}

const Matrix& Matrix::operator=(const Matrix& s)
{
for (USI l = 0; l < Matrix_Size; l++) delete[]m[l];
delete m;
m = new int
[Matrix_Size];
for (USI l = 0; l < Matrix_Size; l++) m[l] = new int[Matrix_Size];
Matrix_Size = s.Matrix_Size;
for (USI i = 0; i < s.Matrix_Size; i++)
{
for (USI j = 0; j < s.Matrix_Size; j++)
{
m[j] = s.m[j];
}
}
return this;
}

Matrix& Matrix::operator+ (const Matrix& s)
{
if (s.Matrix_Size == Matrix_Size)
{
Matrix buff(Matrix_Size);
for (USI i = 0; i < Matrix_Size; i++)
{
for (USI j = 0; j < Matrix_Size; j++)
{
((buff.m + i) + j) = ((s.m + i) + j) + (*(m + i) + j);
}
}
cout << "suck my eldak" << endl;
cout << buff;
return buff;
}
else
{
Matrix buff(5);
cout << "Sorry, but you can't sum this matrix! RANDOM MATRIX FOR YOU!" << endl;
return buff;
}
}
Аноним 17/05/16 Втр 20:31:23  746137
>>746136
пиздец я уебан...
Аноним 17/05/16 Втр 20:34:44  746139
http://pastebin.com/RW8E8uxt Вот короч, сосет хуй на перегрузке =
Аноним 17/05/16 Втр 20:42:04  746145
>>746139
И чо?!
Аноним 17/05/16 Втр 20:53:32  746166
>>746139
Пиздец ты понаписал говна.
Во первых, ты проебался в операторе +, у тебя возвращается ссылка на локально созданный объект (читай иногда предупреждения; компилятор тебе нахуя?).
Во-вторых, в присваивании у тебя почему-то Matrix_Size присваивается внутри цикла. Нужно по идее перед тем, как выделять память для новой матрицы, перед строкой 73
Аноним 17/05/16 Втр 20:58:48  746172
>>746166
Нафига ты ему это написал.
Пусть пойдет нахуй со своей лабой да и всё.
Аноним 17/05/16 Втр 21:12:31  746187
>>746047
Так что? Норм или нет?
Аноним 17/05/16 Втр 21:21:17  746199
>>746187
http://stackoverflow.com/questions/9387610/what-xml-parser-should-i-use-in-c
https://en.wikipedia.org/wiki/Xerces
Аноним 17/05/16 Втр 21:23:56  746205
>>746166
cпс
>>746172
лол
Аноним 17/05/16 Втр 21:40:59  746229
>>746172
Вот этого двачую.

>>746205
Дежурно пошел нахуй.
Аноним 17/05/16 Втр 21:57:36  746252
Я продолжаюсь свое знакомство с бустом, интересная штука:
void mainCycle() {
------{{{
Object->Socket->async_write_some(buffer(Object->buff, 5), boost::bind(&server::on_write,this, _1, _2));
------}}}
}
void on_write(const boost::system::error_code& error, std::size_t bytes_transferred) {
//never calls
}

само создание сокета:
c->Socket = new ip::tcp::socket(this->Service);
Acceptor->accept(
c->Socket);

асинхронно записываю 5 байтов
по логике буста должен вызываться on_write() - но в итоге ничего не вызывается, в чем может быть проблема?
Аноним 17/05/16 Втр 21:57:37  746253
Является ли Python всего-лишь синтаксическим сахарком над C++?
Аноним 17/05/16 Втр 21:59:28  746254
>>746253
Есть Cython, который переводится в C++-код и затем компилится. Вот его точно можно назвать сахарком, хотя там не все фичи языка есть.
Аноним 17/05/16 Втр 22:01:46  746258
Являются ли шаблоны Степанова всего-лишь попыткой создать подобие динамической типизации с помощью костылей?
Аноним 17/05/16 Втр 22:23:57  746275
Посоны, посоветуйте, пожалуйста, схему подстветки кода для студии, чтобы визуально сразу было ясно где у меня указатели, где ссылки, а где обычные переменные.
Аноним 17/05/16 Втр 22:28:15  746282
>>746275
Все один хуй идентификаторы. Студия вряд ли их различает.
Аноним 17/05/16 Втр 22:34:23  746284
>>746258
Динамическая типизация с шаблонами вообще не связана. Шаблоны - средства для генерации кода.
Аноним 17/05/16 Втр 22:39:08  746286
Подскажите пожалуйста, я недавно изучаю пдюсы, но не совсем понял как считается медиана:
temps[temps.size() / 2]
Т.е. берётся вектор temps... А дальше я не понял.
Просто, я знаю что если в скобки поставить номер значения вектора, оно его и выведет. А если значение делить на 2 - надо сортировку делать тогда, верно:
Аноним 17/05/16 Втр 22:41:33  746288
>>746286
Сортировку не надо. Погугли алгоритм, на основе быстрой сортировки. Он это за O(logn) делает.
Аноним 17/05/16 Втр 22:42:38  746290
>>746286
ну или
std::sort(temps.begin(), temps.end())
Аноним 17/05/16 Втр 22:42:40  746291
14635141602580.png (18Кб, 661x396)
>>746288
И еще подвопрос, что не так в коде? Вроде, по учебнику делаю. Что-то с сортом не так.
Аноним 17/05/16 Втр 22:43:16  746293
>>746291
>>746290
Вопрос отпал.
Аноним 17/05/16 Втр 22:43:18  746294
>>746291
скрин с книги можно?
Аноним 17/05/16 Втр 22:43:57  746295
>>746294
Я с вашей с оп шапки делаю.
Аноним 17/05/16 Втр 22:45:28  746296
>>746295
И что за книга?
Аноним 17/05/16 Втр 22:46:19  746298
>>746296
Printsipy_I_Praktika_S_Ispolzovaniem_C_-_2015
Аноним 17/05/16 Втр 22:46:45  746299
>>746296
С шапки скачал же.
Аноним 17/05/16 Втр 22:49:37  746300
>>746298
Пофиг.
Ну ты это. Не сортируй то на каждой итерации.
Да и сумму можешь так посчитать
sum = std::accumulate(temps.begin(), temps.end())
Аноним 17/05/16 Втр 22:51:10  746302
>>746300
Хорошо, спасибо. А у вас нет конфы, там?
Аноним 17/05/16 Втр 22:52:22  746303
>>746302
Сначала книжку дочитай.
Аноним 17/05/16 Втр 22:54:42  746306
>>746303
Ну она довольно большая. Уйдёт не менее месяца на это.
Аноним 17/05/16 Втр 22:58:57  746311
>>746300
Странно, пишет что аккумулейт не найдён. Хотя я сделал #include <numeric>
Аноним 17/05/16 Втр 23:01:37  746313
>>746311
Я забыл init value
sum = std::accumulate(temps.begin(), temps.end(), 0)
Аноним 17/05/16 Втр 23:03:09  746319
>>746313
Спасибо, теперь работает. Как я понял, это лучший метод получить сумму с вектора? Лучше чем через вышеупомянутый метод?
Аноним 17/05/16 Втр 23:20:24  746349
>>746258
Я считаю, что единственно верное их применение.
Аноним 18/05/16 Срд 00:35:14  746406
cуп
тут прошел слушек что Кнут -- херня без задачь и надо читать иное.
пруфы и авторов прошу итт..
Аноним 18/05/16 Срд 00:42:56  746415
>>746406
Кнут отличная вещь, но без определенного уровня подготовки осилить его будет очень тяжело. Как учебник по алгоритмам, как его иногда советуют, не подходит вообще. Для этого лучше взять того же Кормена или Седжвика. Плюс есть лекции на курсере и ocw.
Аноним 18/05/16 Срд 00:44:27  746416
>>746415
у меня есть 2 года стажа цпп + лекции по алгоритмике ~~хуёвые~~
алгоритмики не хватает. анон, что читать?
Аноним 18/05/16 Срд 00:45:46  746417
>>746416
Седжвика, лучше в оригинале
Аноним 18/05/16 Срд 00:54:08  746420
>>746417
>Седжвика
надеюсь он не индус и пишет на ангельском чайку тебе анонас
Аноним 18/05/16 Срд 12:12:54  746617
>>736493 (OP)
Поясните разницу между std::move и std::forward.
Правильно ли я понял, что std::move только для rvalue ссылок, а std::forward для rvalue и универсальных и он пытается преобразовать тип ссылки к rvalue, если передана rvalue для приемника?
Аноним 18/05/16 Срд 12:48:08  746646
>>746617
Что такое rvalue ссылка?
Аноним 18/05/16 Срд 12:51:07  746649
>>746646
Почитай про move semantics.
Аноним 18/05/16 Срд 13:01:22  746662
>>746617
move кастит строго к rvalue, а std::forward кастит к реальному типу универсальной ссылки.
Аноним 18/05/16 Срд 13:07:56  746664
>>746662
Спасибо. Значит понял относительно правильно.
Аноним 18/05/16 Срд 15:42:49  746824
Есть какая-нибудь годная статейка про исключения для ньюфагов? Никак не освою когда и где их использовать.
Аноним 18/05/16 Срд 16:16:41  746865
>>746824
Бешено двачую.

Вот это пример из Интернета:
void func()
{
try
{
throw 1;
}
catch(int a)
{
cout << "Caught exception number: " << a << endl;
return;
}
cout << "No exception detected!" << endl;
return;
}

Дерьмовый пример или я тупой (да, я туповат, чего уж). Вот есть у меня такая функция:

QString function(const QString & name_your_mother) {

QString penis = "penis";

return message = name_your_message + penis;
}

Как мне написать исключение, чтобы появлялась ошибка при передачи как аргумента строки "my mama"? Если в поможете я отправлю вам лучшую картинку, что у меня есть! Хоть это и мелочь, но правда помогите пожалуйста.
Аноним 18/05/16 Срд 16:19:21  746868
>>746865
Блин.

QString function(const QString & name_your_mother) {

QString penis = "penis";

return message = name_your_mother + penis;
}

Прошу извинения за мою опечатку.
Аноним 18/05/16 Срд 16:22:30  746870
>>746868
assert поставь. Вообще исключения не нужны.
Аноним 18/05/16 Срд 16:33:30  746879
14635784106900.jpg (35Кб, 600x596)
Щас бы перекатиться
Аноним 18/05/16 Срд 16:46:25  746896
14635791860360.jpg (46Кб, 476x604)
>>746870
Спасибо большое. Твое решение пока мне кажется хорошим. Почему ты считаешь, что assert лучше исключений? Кроме конечно простоты реализации, здесь твое решение классное. Просто интересно. Для использовании в качестве аргумента в будущих спорах с начальником
Аноним 18/05/16 Срд 16:50:03  746901
>>746896
Исключения запутывают код и они достаточно дорогие в плане производительности. В плюсах их использование не поощряется.
assert разворачивается просто в проверку условия и, в случае если условие не выполняется, то в stderr выводится сообщение и вызывается terminate.
assert компилируется только в дебаге, в release этот код просто не попадает.
Аноним 18/05/16 Срд 16:55:41  746908
>>746901
>>assert компилируется только в дебаге, в release этот код просто не попадает.
Я правильно понимаю, что в release этой проверке уже не будет? Это проверка для программиста, но не для пользователя, верно? Но если мне необходимо запретить именно пользователю вводить неправильные данные?
Аноним 18/05/16 Срд 16:57:41  746911
>>746908
Именно так.
Если тебе необходимо запретить вводить пользователю неправильные данные, то пиши явную проверку а-ля
If(data_is_wrong) {
show_message("Чо ты мне втираешь какую-то дичь? Пшел нахуй!")
return 1;
}
Аноним 18/05/16 Срд 17:30:27  746935
>>746908
В этом случае кидай идиоматически правильным будет выбросить исключение, например такое:
http://en.cppreference.com/w/cpp/error/invalid_argument
Аноним 18/05/16 Срд 17:34:30  746938
>>746935
Возврат объекта, представляющего ошибку, был бы норм, если бы в C++ можно было бы возвращать несколько значений или, если бы он был бы динамически типизированным.
show_message(...) - можно делать только в функциях расположенных ооочень высоко.
Аноним 18/05/16 Срд 17:38:06  746943
>>746908
Вкуривай вообщем исключения(обработка ошибок - одна из самых выжных и сложных вещей). Это точно пригодится как минимум при работе с чужим кодом.
Аноним 18/05/16 Срд 18:01:16  746963
>>746943
>вообщем
бля, да ты гонишь.

А по теме, пусть читает про общую обработку ошибок, exception safety и exception neutral. В целом, этого достаточно.
Аноним 18/05/16 Срд 19:32:08  747049
>>746896
В языках без GC исключения опасны так как они прерывают "нормальное" выполнение программы и могут приводить к разной хуйне (утечкам). Безопасное использование исключений требует определенных знаний, использования специальных идеом (правил) программирования, например raii. Многие препочитают просто не ебатся с ними вообще, например гугл в гайдлайнах не рекомендует их использовать.
>>746908
> запретить именно пользователю вводить неправильные данные?
Это ущербная практика в любом ЯП. Нормальные люди не программируют бизнес логику на исключениях. Для проверки ввода пользователя у тебя должен быть специальный код, и в случае неправильного ввода он должен "обычным" способом сообщать кому следует, без разницы используешь ты исключения или нет. Исключения предназначены для обработки исключительно исключительных хе хе хе ситуаций. Там к примеру процесс внезапно не смог прочитать/записать в файл (причем первоначальная проверка наличия этого файла и возможности записи должна проводится вне исключений, "обычным" кодом а исключениями покрыта уже дальнейшая работа с файлом), достучаться до сокета который до этого отвечал и т.п.
Аноним 18/05/16 Срд 20:25:41  747095
Как разобраться в чужом спагетти-коде? Есть ли какие-нибудь хитрости? У кода нет документации и нет туториалов. Код писали несколько европейских профессоров и пара десятков аспирантов в течении ~15 лет с перерывами. Сейчас код забросили.
Аноним 18/05/16 Срд 20:33:37  747106
>>747095
Переписывай
Аноним 18/05/16 Срд 20:42:30  747117
14635933504730.jpg (21Кб, 360x288)
>>747095
>>747106
Аноним 18/05/16 Срд 21:09:50  747148
>>747095
Разбираться в коде, который описывает предметную область, не зная самой предметной области - дело бесконечное. Если изучишь сам предмет, разобраться в коде не составит особых трудностей.
Аноним 19/05/16 Чтв 02:31:13  747401
Есть ли в студии опция записи последовательности шагов, которые прошла программа под отладчиком?
Аноним 19/05/16 Чтв 17:14:29  747724
Какие есть отладчики хорошие, кроме встроенного в студию?
Аноним 19/05/16 Чтв 17:17:08  747727
>>747724
чем он тебе не угодил?
Аноним 19/05/16 Чтв 17:58:57  747751
>>736493 (OP)
Microsoft Visual Studio
Скачал, с офф майкрасофта, но там 2012, в ОП посте 2015.
Аноним 19/05/16 Чтв 18:04:59  747756
>>747751
msvc 2015. Первая ссылка в гугле. Ставь 2015, там стандарт С++11 реализован.
Аноним 19/05/16 Чтв 18:08:52  747762
>>747751
Если ты новичок, то особой разницы какую версию студии ставить нет. Скорее всего тебе нафиг не нужен ни новый стандарт, ни новые свистоперделки. Плюс в новых версиях студии легко могут перестать собираться старые проекты или поломаться бинарная совместимость, если ты компилируешь плагин для какого-то дерьма.
мимо сижу в 2010 студии и мне норм
Аноним 19/05/16 Чтв 18:09:51  747766
14636705911160.jpg (26Кб, 500x334)
>>747756
>там стандарт С++11 реализован
Аноним 19/05/16 Чтв 18:21:17  747778
>>747762
Помоему лучше сразу вкатываться в новый стандарт, по сравнению со старым много удобных нововведений, помимо самого синтаксиса еще куча полезного в STL.
Аноним 19/05/16 Чтв 18:28:41  747785
Есть ли в студии быстрая кнопка "вернуться назад"? Т.е. я нажал "Go to definition", а теперь хочу вернуться обратно на ту строку откуда я это сделал?
Аноним 19/05/16 Чтв 18:33:21  747789
>>747785
Кнопку не нашел, но нашел окно Bookmarks.
Аноним 19/05/16 Чтв 18:53:28  747813
>>747785
Там же можно не перейти к определению, а просто показать его.
Аноним 19/05/16 Чтв 19:37:47  747844
Тем временем:
https://icpc.baylor.edu/scoreboard/
Порадуемся за ленинградцев.
Аноним 19/05/16 Чтв 20:25:32  747879
>>747844
Похуй.
Аноним 19/05/16 Чтв 20:50:33  747895
Допустим у меня есть структура typedef struct foo{...}bar;. У нее внутри массивы, char, uint и прочее.
1) Как мне сделать ее дамп памяти?
2) Можно ли как-нибудь в автоматическом режиме привести типы всех ее элементов и распечатать их значения?
Аноним 19/05/16 Чтв 21:05:53  747913
14636811536440.png (7Кб, 941x80)
>>747895
Программисты -- это, определенно, черви-пидоры. Не понимаю, как можно было не написать библиотеку для этого.

Смотрю сейчас одну программу. Программист объявляет структуру, кладет в нее вложенную структуру, потом забывает, что во вложенной структуре он уже объявил какие-то параметры и начинает их объявлять повторно. Код растет, память засирается, программист рад.

Вот так вы и пишете свои программы, ироды.
Аноним 19/05/16 Чтв 21:09:28  747918
>>747895
Гугли boost рефлексия. Или просто c++ рефлексия
Аноним 19/05/16 Чтв 21:51:51  747951
#include"std_lib_facilities.h"
int main{}
{
cout<<"Hello, World!\n";
return 0;
}


//Гляньте что накодил поцаны.
Аноним 19/05/16 Чтв 22:12:20  747967
>>747951
НЕ работает. Онлайн компилятор ругается.
Аноним 19/05/16 Чтв 22:12:53  747968
>>747967
int main{}
{
чет скобок дофига
Аноним 19/05/16 Чтв 22:22:04  747974
>>747968
Все по книге же, ну.
Аноним 19/05/16 Чтв 22:29:20  747977
>>747968
Все проблема решена, онлайн компилятор не осилил просто.
Аноним 19/05/16 Чтв 22:30:09  747978
Пиздец Страуструп плодит раковых больных с помощью этого:
http://www.stroustrup.com/Programming/std_lib_facilities.h
Всегда подозревал, что фейковое интервью IEEE было нефейковым и он это все делает СПЕЦИАЛЬНО.
>>747974
Тебе нужно написать:
int main()
{
}
Аноним 19/05/16 Чтв 22:34:35  747981
>>747978
http://codepad.org/Soylk7a6

А вот попробуй замени. В VS хз как.
Аноним 19/05/16 Чтв 22:36:04  747984
>>747981
std_lib_facilities.h
файл не стандартный. Как он тебе его найдет?

>>747978
Суровая обертка, особенно над string
Аноним 19/05/16 Чтв 22:44:38  747993
14636870780690.png (58Кб, 822x473)
>>747978
И может это не Страуструпа вина. Тут такие шрифты, что не понятно, круглая там скобка или нет.
Аноним 19/05/16 Чтв 22:45:33  747994
>>747981
Заменил:
http://codepad.org/UPBimIXh
Аноним 19/05/16 Чтв 22:49:40  747996
>>747981
http://codepad.org/MTyis2XJ
Аноним 19/05/16 Чтв 23:04:44  748006
Сап, крестоносцы, давно не видились.
Расскажите, как вы живёте с правилом пяти?
Работает ли правило нуля в наследовании?
Аноним 20/05/16 Птн 00:13:26  748030
>>748006
>Расскажите, как вы живёте с правилом пяти?
норм
>Работает ли правило нуля в наследовании?
че за хуйня?
Аноним 20/05/16 Птн 00:16:34  748032
>>748030
загуглил и ебал я в рот правило нуля.
Аноним 20/05/16 Птн 00:17:25  748033
>>748030
> правило нуля
Не определяй хуиты из пятёрки/тройки и не выёбывайся.

При наследовании то один хуй надо бы определить явно виртуальный деструктор, а за этим радостно шагает вся пятёрка.
Аноним 20/05/16 Птн 00:38:27  748038
>>748033
>а за этим радостно шагает вся пятёрка
нихт. Пятерка - это конструктор по умолчанию, конструктор копирования, оператор присваивания, move-конструктор, move-оператор присваивания
Аноним 20/05/16 Птн 00:39:03  748039
>>737872
Ты бы еще поныл что пальчик болит.
Аноним 20/05/16 Птн 00:54:13  748045
Сап, аноны. Есть одна задача, просить решить просить не буду, нужен совет по алгоритму.
"Дана строка в миллион символов, найти две одинаковых подстроки максимальной длины. Любых."
Просидел дофига, никак не пойму что да как. В плюсах недавно.
Аноним 20/05/16 Птн 00:56:08  748047
>>748038
То есть я могу просто оставить пустой виртуальный деструктор и ссать с потолка на все эти дефолты, что я наплодил?

Спасибо, няша :3
Аноним 20/05/16 Птн 01:04:47  748052
14636954877790.png (230Кб, 1162x1020)
14636954877811.png (89Кб, 972x328)
>>748045
Проблема не в языке, а в том, что ты не шаришь алгоритмы на строках.
Аноним 20/05/16 Птн 03:06:59  748084
>>748045
Суффиксные деревья тебе в помощь. Решает именно эту задачу эффективно. Но это сложная поебота, придется покурить изрядно.
Аноним 20/05/16 Птн 11:52:59  748258
>>736493 (OP)
А аккаунт в студии надо создавать? Просто при старте предложили.
Мимоновичок.
istreamiterator передача в функцию Аноним 20/05/16 Птн 16:17:44  748450
Аноны помогите плиз!
суть такова: я создаю итератор потока для файла. в main все нормально работает (инкрементируется). передаю как параметр в функцию, нихрена не инкрементируется!
вот код http://pastebin.com/XMVGQYRD
знающие аноны, помогите, пожалуйста! уже весь день эту хрень пытаюсь отладить
Аноним 20/05/16 Птн 16:19:51  748451
>>748450
Выражение "минимальный пример" вам о чем-нибудь говрит? Алсо, есть идеон.
Аноним 20/05/16 Птн 16:29:52  748457
>>748451
извиняюсь, вот сделал получше.
http://pastebin.com/dA882Ta0
тут вроде суть передана
Помогите!
Аноним 20/05/16 Птн 16:38:58  748461
>>748457
А по ссылке если?
void incr(istream_iterator<int>& file_iter)
Аноним 20/05/16 Птн 16:45:05  748466
>>748457
Я нюфаня в крестах, но твой пример напечатал два раза строку. Пикрилейтед. В файл я записал рандоные строки. Что твой алгоритм делает я не знаю. Также я удалил нафиг все лишние хедеры и оставил только:
#include <iostream>
#include <fstream>
#include <iterator>
Аноним 20/05/16 Птн 16:45:44  748467
14637519447800.png (1Кб, 281x51)
>>748466
Аноним 20/05/16 Птн 16:47:18  748470
>>748461
>>748466
блин, бред какой-то, что я скинул последнее и у меня вроде работает, а в основном алгоритме (сортировка слиянием для файла), почему-то не работает.
ща буду разбираться
Аноним 20/05/16 Птн 16:49:46  748477
>>748470
Какие хоть ошибки тошнит?
Аноним 20/05/16 Птн 16:55:42  748481
>>748477
ошибки не выдает, просто неправильно работает.
он первое значение выводит, итератор имеет нормальный адрес. после инкремента он пишет что значение такое же осталось и адрес NULL почему-то, но выводит значение(то же самое, не инкрементированне)
Аноним 20/05/16 Птн 17:06:56  748495
14637532161840.jpg (103Кб, 624x541)
>>748481
вот кусок кода
incr работает нормально
distance на 16 строке работает исправно
distance на 20 строке работает не исправно

что за бред не пойму.
на 19 строке копиконтруктор вроде такой же как в incr, должен нормально работать

а distance не мог проинкрементировать мой итератор?
Аноним 20/05/16 Птн 17:17:56  748501
>>748495
добавил distance в incr тоже перестала нормально работать -_-
т.е. после distance почему-то все ломается
Аноним 20/05/16 Птн 17:27:06  748512
14637544261850.jpg (74Кб, 604x336)
>>748501
вот картинка...
Аноним 20/05/16 Птн 18:03:59  748551
>>748512
std::distance
If InputIterator is not at least a forward iterator, first and any iterators, pointers and references obtained from its value may be invalidated.

Итератор становится невалидным. Делай std::distance над копиями.
Аноним 20/05/16 Птн 18:34:41  748576
>>748084
оно за n работает?
Аноним 20/05/16 Птн 19:01:52  748607
>>748551
не получается...
Аноним 20/05/16 Птн 19:05:07  748610
>>748052
>>748084
Спасибо!
Аноним 20/05/16 Птн 19:05:29  748611
>>748551
ваще все плохо
http://stackoverflow.com/questions/16373420/distance-between-istream-iterators
че делать :D
получается только юзать контейнеры придется?
Аноним 20/05/16 Птн 19:06:06  748613
>>748607
>не получается...
Ты заебал. Сделай сначала без итераторов, а потом улучшац
Аноним 20/05/16 Птн 19:16:35  748621
>>748611
Как ты копию итератора делаешь? Давай код
Аноним 20/05/16 Птн 19:18:43  748623
>>748611
В догонку - distance у тебя правильную длину возвращает?
Аноним 20/05/16 Птн 19:22:45  748627
>>748611
И да, я не пользуюсь плюсовыми потоковыми файлами, файловый поток fi в результате вызова distance не перематывается ли в конец? Может надо переместить в начало.
Аноним 20/05/16 Птн 19:30:03  748636
>>748621
istream_iterator<int> isiter(fi);
так. как по другому? ну или через =, не суть же
>>748623
>>748627
правильную длину возвращает. на SO написали что нельзя потоковые итераторы назад переместить никак, так как они InputIterator

думаю теперь контейнер (вектор) юзать.
жалко, с потоками бы круто вышло, если бы получилось, но я уже ниче не могу придумать лучше, а было бы неплохо эту прогу сдать завтра преподу.
Аноним 20/05/16 Птн 20:52:27  748681
Чет не нашел этого в Гугле:
Где та палата мер и весов, в которой закреплены четкие и конкретные значение размера в байтах для встроенных типов short, int, long для каждого конкретного режима x86 (64/32/16/other?), а еще для всяких армов и прочих архитектур.
Аноним 20/05/16 Птн 22:00:55  748751
>>748681
В файле limits.h твоего компилятора
http://pubs.opengroup.org/onlinepubs/009695399/basedefs/limits.h.html
Аноним 20/05/16 Птн 22:19:20  748767
>>748751
Благодарю. А существуют реальные примеры такого, когда для одного режима x86 разные компиляторы давали бы разный размер int, например.
Аноним 20/05/16 Птн 22:20:44  748769
>>748767
Извиняюсь, за прилипшую сажу.
Хотя в тонущем это уже не актуально.
Аноним 20/05/16 Птн 23:25:46  748803
Запилите стишок и перекат.
Аноним 21/05/16 Суб 00:24:09  748841
Как в дебаггере студии смотреть переменные в куче?
Аноним 21/05/16 Суб 00:52:13  748867
14637811336430.jpg (73Кб, 598x331)
>>748767
Аноним 21/05/16 Суб 03:11:01  748921
>>748576
Да, оно работает за O(n)
Аноним 21/05/16 Суб 03:26:00  748931
>>748636
Мне лень проверять, поэтому немного с дивана.
Я вот чего-то не уверен, что копирование istream_iterator'а корректно. Итератор, как абстрактная структура данных -- это такой объект который указывает на элемент внутри коллекции, может его вернуть и сдвинуться. Когда у нас входной поток и существует два итератора на него, и один из этих итераторов сдвигается, то непонятно что должно происходить во втором итераторе. Как бы по контракту, раз мы его не трогали, он должен указывать на тот же элемент, на который указывал раньше. Но это поток, поэтому там этого элемента уже нет. Самым логичным поведением как мне кажется должна быть инвалидация второго итератора и андефайнд бехейвор. Но с другой стороны ему ничего не мешает просто читать данные из потока несмотря на первый итератор.

Короче. надо смотреть в стандарт, что мне делать лень. Может, любопытные поинтересуются.
Аноним 21/05/16 Суб 11:46:25  749087
ПЕРЕКАТ

>>749082 (OP)
>>749082 (OP)
>>749082 (OP)
Аноним 21/05/16 Суб 12:20:33  749114
>>747978
http://ideone.com/VCHFWv

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 633 | 36 | 118
Назад Вверх Каталог Обновить

Топ тредов