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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
29 Кб, 600x418
Оффициальный™ традиционный® C++ тред #40 #821402 В конец треда | Веб
Над тредом вновь алеют яркие
Пердаков огни.
Баттхёрты сочные, сладкие
От студентов, которые дни
Проводят в смятенье, клепая всё свой говнокод
От ярости сотрясая
Самый небесный свод
Ругая Страусов трупы
И комитетский сброд

Но знай - их ошибки не вечны
Декреты сменяют устав
И код, считавшийся вечным
Забудется, легаси став
Не верь разработчику юному
Он глуп, как и нужно скоту
Ведь опытный комитетчик
Чует его за версту

Старший брат: >>820659 (OP)
Предыдущий: >>804519 (OP)

TL;DR

Q: Я хочу тотчас вкатиться, а разбираться буду в процессе. Что я должен делать?
Q: Не уверен, что хочу изучать C++. Как мне пощупать его без лишней ебли?
A: Читаешь эту книжку, смотришь упражнения из нее и суешь в онлайн-компилятор. Сообщения компилятора об ошибках копипастишь в гугл, ответы на возникающие у тебя вопросы ищешь в предыдущих тредах, спрашиваешь в этом треде, если не нашел. Если тебя послали на хуй или не ответили, то ты спросил платину, читай предыдущие треды внимательнее.

Памятка ньюфагу

  • Вопросы по синтаксису идут на хуй
  • Лабы идут на хуй
  • "Как мне сделать Х на чистых крестах без библиотек" идут на хуй
  • Все идут на хуй
  • Хейтер сосет члены на пару со своей мамашей

Небольшие фрагменты кода размещай в треде при помощи тега [code] и жабаскрипт-костыля. Для больших фрагментов используй внешние сервисы.


FAQ

Мотивация

Q: Почему стоит использовать именно C++?
A: Ни один язык не идеален, но по совокупности киллер-фич C++ оставляет все остальные языки позади. Вот основные три:

  • Скорость
    C++ действительно быстрый язык — вместе с C, его прародителем, они с большим отрывом уделывают по скорости все остальные языки высокого уровня. Код на C++, как правило, медленнее аналогичного кода на C приблизительно на 0-20% а в ряде случаев C++ оказывается даже быстрее, причем замедление появляется только при использовании высокоуровневых конструкций (в C++ ты никогда не платишь за то, чего не используешь). Таким образом, если тебе требуется высокопроизводительный код, C++ станет отличным выбором.
  • Мощь
    C++, являясь одним из наиболее выразительных и мощных языков, позволяет использовать большинство существующих парадигм. Его философия построена на минимальном ограничении программиста в выборе методов и инструментов простреливания ноги решения задачи. Как следствие, используя C++, ты можешь не думать о том, как обойти искусственные ограничения языка, а беспрепятственно выбрать наиболее подходящие к ситуации средства.
  • Популярность
    C++ по-настоящему популярен. На нем написаны десятки тысяч приложений и миллиарды строк кода, о нем написаны сотни книг, он до мельчайших подробностей документирован и стандартизован. Используя C++, ты никогда не останешься без работы или поддержки комьюнити.

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

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

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


Литература

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

  • Для нюфань

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


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

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


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

  • Best practices

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


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

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

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


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

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

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

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


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

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

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

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


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

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

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


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


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

Q: Я не умею читать.
A: Можешь посмотреть какой-нибудь онлайн-курс: раз, два, три

Q: Не люблю, когда льют воду. Хочу коротких материалов по существу.
A: Вот тебе блоги, факи, референсы и всякое такое:

  • Годный блог, в котором все просто и понятно тян не нужны кококок борщ
  • Блог с хорошо расписанными фичами новых стандартов
  • Краткие описания библиотечных функций и контейнеров - на русском или более подробно на ангельском
  • Блог Герба Саттера (на ангельском)
  • Блог Скотта Мейерса (на ангельском)
  • Блог еще одной тянки, много о Qt и оптимизации (на ангельском)
  • Куча других блогов (на ангельском)
  • Большой FAQ по C++ (на ангельском)
  • Видео с CppCon (на ангельском)


Софт и библиотеки

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


Платформа Название Описание Ссылка
Windows Microsoft™ Visual Studio® Общепризнанно самая продвинутая и удобная IDE, не имеющая равных по части автодополнения и возможностей отладчика. По ссылкам справа можно скачать бесплатную редакцию последнего выпуска (2015 Community Edition). Кроме того, существуют редакции с расширенными возможностями (Professional и Enterprise). Они стоят сотни денег, но если ты студент вуза, подписанного на Dreamspark Premium, то ты можешь получить их безвоздмездно (то есть даром). Многим новичкам интерфейс студии кажется чересчур сложным, так что обязательно прочти этот гайд, если у тебя возникают проблемы с компиляцией хэллоуворда https://goo.gl/qgAAc6 (русская версия) или
https://goo.gl/WIPW9L (ангельская версия)
Все CodeLite Простая, легковесная, кроссплатформенная, швабодная IDE. Менее навороченная, чем студия, но среди бесплатных вне конкуренции. Вероятно, это наилучший вариант для новичка с *nix. Под Windows же требует чуть больше ебли с установкой компилятора MinGW/LLVM http://codelite.org/,
"sudo aptitude install codelite codelite-plugins"
для установки под *nix
Все CLion IDE, призванная похоронить Visual Studio пока не особо получается. Она стоит денег, но можно украсть почти не протухшую версию на торрентах или получить бесплатную лицензию на год по скану студбилета, если ты студент. Удобные свистелки и перделки присутствуют. Тормоза и баги присутствуют. Кросплатформенность присутствует https://www.jetbrains.com/clion

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

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

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

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

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

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

  • boost

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

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

    Литература:


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

  • Qt

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

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

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

    Литература:


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

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

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

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

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


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


#2 #821422
Есть один йоба проект, изначально был реализован на сишечке, был шустр прост и охуенен, потом его переписали на плюсы, стало огромадное неповоротливое и непонятное уебище. Вопрос, нахуя?
>>821516>>834605
#3 #821436
Над тредом вновь алеют яркие
Пердаков огни.
Баттхёрты сочные, сладкие
От студентов, которые дни
Проводят в смятенье, клепая всё свой говнокод
От ярости сотрясая
Самый небесный свод
Ругая Страусов трупы
И комитетский сброд

Но знай - их ошибки не вечны
Декреты сменяют устав
И код, считавшийся вечным
Забудется, легаси став
Не верь разработчику юному
Он глуп, как и нужно скоту
Ведь опытный комитетчик
Чует его за версту
#4 #821437
>>821402 (OP)
c++ не нужен, есть раст
>>821454
#5 #821454
>>821437
Зачем нужен Раст когда есть Си?
>>821480>>824571
Прата #6 #821459
решил тут наваять шаблон, а чёто не пойму, что шаблон нельзя в cout вывести?
http://ideone.com/Ir4tpi
>>821470>>821471
#7 #821470
>>821459
Ты читать умеешь или у тебя с этим туго?

У тебя имя функции конфликтует с std::plus, ибо нехуй делать using namespace std;

prog.cpp:3:5: note: candidates are: template<class T> int plus(T&, T&)
int plus(T &a,T &b);
^
In file included from /usr/include/c++/5/string:48:0,
from /usr/include/c++/5/bits/locale_classes.h:40,
from /usr/include/c++/5/bits/ios_base.h:41,
from /usr/include/c++/5/ios:42,
from /usr/include/c++/5/ostream:38,
from /usr/include/c++/5/iostream:39,
from prog.cpp:1:
/usr/include/c++/5/bits/stl_function.h:147:12: note: template<class _Tp> struct std::plus
struct plus;

http://ideone.com/GnFFmj
>>822097>>824352
#8 #821471
>>821459
template <typename T>
T plus(T &a,T &b);

если у тебя T специально к инту не кастуется
>>821838
#9 #821480
>>821454
Заем нужен Си, когда есть перфокарты?
#10 #821516
>>821422
Чтобы обмазаться говном, очевидно же
sage #11 #821542
Саги треду без шапки. Уроды блядь ебаные. Ненавижу вас.
>>821567
sage #12 #821550
sage
>>821567
#13 #821567
>>821550
>>821542
Аутист? Мод шапку делает.
>>821568
sage #14 #821568
>>821567
Иди нахуй залетная студенто блядь. Подождал бы ОПа и все. Так всегда.
>>821634
207 Кб, 1700x1734
#15 #821634
>>821568
ОБЕЩАННОГО ТРИ ГОДА ЖДУТ
#16 #821701
>>821688
хуйня, вопросы изи для дцп-девелоперс
#17 #821835
>>821688
Первую задачу помню надо было решить для подачи заявки на стажировку в яндекс. Щас на сайте не могу найти.
#18 #821838
>>821471
template <typename T, typename U>
decltype(auto) plus(T&& a, U&& b) { return a + b; }
#19 #821842
>>821688
Читать GotW
#20 #821900
Вопрос скорее по си, но не хочу в тот тред идти. Нужен массив структур размер которого не известен на этапе компиляции. В этой структуре будет 1 char и 1 int. Массив до 10к элементов. Как лучше сделать? 1 массив структур или 2 массива 1 char'ов и 1 int'ов? Если делать структуру, то наверно поля выравнивать надо будет. А если делать 2 массива, то 2 раза маллок вызывать надо. Надо чтобы работало как можно быстрее. И не тратиться на лишнюю память.
>>821933>>822075
87 Кб, 251x459
#21 #821927
\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n
>>821931
#22 #821931
>>821927
Это макака виновата
#23 #821933
>>821900

> А если делать 2 массива, то 2 раза маллок вызывать надо.


Кто тебе запрещает один раз выделить память размером как суммарно оба массива?
>>821948
#24 #821948
>>821933
То что потом с ней будет не удобно работать. Надо же на 2 массива поделить. Может ещё какие-то подводные камни есть?
>>821978
#25 #821978
>>821948
Что там делить?
size_t size = ...; // Размер массива
int #ints = malloc((sizeof (int) + 1) # size);
char #chars = (void #) ints + sizeof (int) # size;
Решетку замени на звездочку.
#26 #822046
Переполнение инта - неопределённое поведение. А у других типов как? Встреченных и тех что в стандартной библиотеке.
>>822047
sage #27 #822047
>>822046
У беззнаковых — за максимальным значением должен идти нуль.

> тех что в стандартной библиотек


Переполнение вектора, что ли?
>>822068
#28 #822060
Там в прошлом вроде треде один анончик писал, что нашел новые годные книги по крестам и попытается впилить их в шапку. Только ради них зашел, а тут нихуя.
>>822065>>822172
#29 #822065
>>822060
Если ты про дейтла, то этот форсер больше года их пытается в шапку впилить.
#30 #822068
>>822047

>У беззнаковых — за максимальным значением должен идти нуль.


А почему у остальных не так?

>Переполнение вектора, что ли?


Ага. Или строки. Что будет если их сделать слишком большими?
>>822070>>822171
sage #31 #822070
>>822068

> Что будет если их сделать слишком большими?


Вытекут через монитор.
#32 #822072
Господа, какую посоветуете либу для http? Главное асинхронность. Курву ебать штоле?
>>822173
#33 #822075
>>821900
Храни все в одном большом char[]
Смещение легко посчитать.
#34 #822097
>>821470
какой у тебя компилер? У меня сообщения чуть чуть отличаются. Ну типа говорит что вызывать здесь plus это ambligous
>>822102
sage #35 #822102
>>822097
Мой говорит что я ambitious.
#36 #822159
>>822061
Строка 20, &L[j].
Наглядный пример вреда копипаста.
#37 #822171
>>822068

>А почему у остальных не так?


Фактически оно так, но на некоторых платформах аппаратно контролируется знак, поэтому какие-то требования бы вызвали костыли и неоптимальность в реализациях.

>Ага. Или строки. Что будет если их сделать слишком большими?


Если считать "большим" заполнение всей доступной кучи, то со стандартным аллокатором гарантируется исключение std::bad_alloc (как и для обычного new), а с пользовательским - зависит от того, как он реализован. Другого переполнения тут быть не может по определению - тип индекса (обычно size_t) гарантируется таким, что в него влезет любое количество потенциально влезающих в память объектов. Скажем, если у тебя на x86 4ГБ памяти, то даже если ты всю память потратишь на единственный вектор байтов, то в 32-битный unsigned int индекс все равно влезет, и нехватка памяти наступит раньше переполнения.
#38 #822172
>>822060
Я работаю над этим, посоны, уже скоро прям все будет.
#39 #822173
>>822072
Касабланка, например. Она заточена под асинхронность, там continuations, все дела.
#40 #822206
>>821402 (OP)
Здравствуйте уважаемые сеньоры разработчики!
Очень нужен ваш совет по плюсам. Есть ли в них что-то похожие на динамическую типизацию, вернее даже не типизацию а какой-то костыль, который бы позволял создавать определенные коллекции с определенным типом.

Например вот так:

[code]
class Helper
{
public:
Дим_Тип Get_Rabdom(int size, Дим_Тип)
{
Дим_Тип data;
for(int i=0; i<size; i++)
{
data.add( random() );
}
return data;
}
}

Helper help;

vector<int> myVector = myHelper.Get_rand(50, vector<int>);

map<int, int> myMap = myHelper.Get_rand(50, map<int, int>);

[/code]

Пробовал через template<typename Type> но вроде через них так нельзя.
#40 #822206
>>821402 (OP)
Здравствуйте уважаемые сеньоры разработчики!
Очень нужен ваш совет по плюсам. Есть ли в них что-то похожие на динамическую типизацию, вернее даже не типизацию а какой-то костыль, который бы позволял создавать определенные коллекции с определенным типом.

Например вот так:

[code]
class Helper
{
public:
Дим_Тип Get_Rabdom(int size, Дим_Тип)
{
Дим_Тип data;
for(int i=0; i<size; i++)
{
data.add( random() );
}
return data;
}
}

Helper help;

vector<int> myVector = myHelper.Get_rand(50, vector<int>);

map<int, int> myMap = myHelper.Get_rand(50, map<int, int>);

[/code]

Пробовал через template<typename Type> но вроде через них так нельзя.
>>822232>>822236
#41 #822232
>>822206

> какой-то костыль, который бы позволял создавать определенные коллекции с определенным типом


К чему тут вообще динамическая типизация? Любой стандартный контейнер для такого подойдёт

Или тебе надо нечто на подобии ArrayList из java или с#?
Из твоего кода нихера не понял
#42 #822236
>>822206
Через шаблоны как раз можно, но этот тип надо явно указывать аргументом шаблона. Типа template <typename T> T getRandom (int size) ... и потом auto my_vector = help.getRandom <vector <int>> (50).

Если хочешь, чтобы тип передавался именно параметром, в рантайме, то можно юзать std::any в качестве возвращаемого типа, а параметром передавать строку/enum/еще какой-нибудь идентификатор. Но тогда энивей внутри придется вручную писать switch по каждому из возможных типов.
>>822284
100 Кб, 1280x1024
#43 #822284
>>822236
Я так уже пробовал
#44 #822294
>>822284

>явно указывать тип аргументом шаблона


>...help.getRandom <vector <int>> (50)


> не получается


«Лучезарному колесу в золотых мехах, носителю грозной стрелы, слуге под самым седалищем Великого и могучего Утеса, сверкающего боя, с ногой на небе, живущего, пока не исчезнут машины, к ступне повергает это донесение ничтожный стражник из рода вихрей, носитель отличного меча. Доношу первое: большая машина «воин-купол» пришла в движение от пальца в отверстии пятом и от пальца в отверстии сорок седьмом, и движение было неодолимое, быстрое и прямое. Доношу второе: явились на небывалой машине трое, не знающие речи, не носящие оружия, не понимающие установления и желающие странного. Не зная их сущности, пребываю в ожидании высоких приказаний. Доношу третье: уголь кончается, а топить мертвецами по вашему милостивому слову мы за невежеством и недоумием не умеем. При сем прилагаю: первое – чертеж большой машины «воин-купол» и второе – образцы материи, приклеенные неизвестными людьми к ранам преступников».
>>822377
#45 #822308
>>822284
getRandom<int>(50)
>>822342
#46 #822342
>>822284
Что это вообще за дичь? Твой метод возвращает std::vector<int>, а не T. Даже если ты сделаешь как предлагает >>822308, то у тебя код даже не скомпилируется.
#47 #822377
#48 #822470
Решил попробовать себя в программировании. Выбрал c++. Почему он считается одним из самых сложный языков программирования? Если мне не хватает мозгов я его не смогу осилить?
>>822503>>822529
#49 #822503
>>822470

> Почему он считается одним из самых сложный языков программирования?


Потому что иногда сам язык пытается тебя запутать. inb4: как пример, который любят всем пихать — static имеет три совершенно разных смысла в разных местах проги.
>>822520
#50 #822520
>>822503
функции, члены класс и переменные?
>>822525
#51 #822525
#52 #822529
>>822470
Вот, например, осиль статью:
https://habrahabr.ru/post/242639/
>>822577
#53 #822531
Как в си узнать размер буфера для stdout? printf ведь делает буферизацию?
>>822552
#54 #822552
>>822531
implementation defined
>>822555
#55 #822555
>>822552
Какая функция его возвращает?
>>822558
#56 #822558
>>822555
The __fbufsize function return the size of the buffer in the stream stream. This value can be used to optimize the use of the stream.

This function is declared in the stdio_ext.h header.

http://www.gnu.org/software/libc/manual/html_node/Controlling-Buffering.html
#57 #822577
>>822529
Я так понял в случае с константными ссылками форвардинг нам не нужен?
>>822620
#58 #822620
>>822577
Нужен. Компилятор const не принимает во внимание, он нужен только для тайп-чекера, потому что const_cast и mutable.
#59 #822673
Объясните нубу, почему я должен начать изучать данный язык, когда напоявлялись всякие питоны, которые вроде как намного удобнее и красивее? В чем будет профит? Тот факт, что куча народу уже кодит на с++ - для меня не аргумент.
>>822678>>822681
#60 #822678
>>822673
После семи лет опята тебя будут искать работодатели, а не ты их.
>>822724
#61 #822681
>>822673

> почему я должен начать изучать данный язык


Для меня, после паскаля и VB6 это была красота. (Нет, я смотрел питончик — он не красивый, у него [{};] нет)
Потом уже понял, что я статикоскоростьфаг. Хочу статическую линковку и охуенную скорость. (И преждевременные оптимизации, тысячи их!)

Короче, это дело вкуса.
>>822726
155 Кб, 1002x617
#62 #822708
Ребята, а когда примерно оп умер?
>>822811
#63 #822724
>>822678
С другими языками такому небывать?
>>822728
#64 #822726
>>822681
Как раз и пришел с дельфей, паскаля и VB. И вот задумался... Шагать в будущее или положиться на старое дедовское...
#65 #822728
>>822724
Нет. С другими языками есть огромная толпа спецов которыми тебя заменят. На крестах спецы дороже стоят. Ещё дороже только лисп или другие полумёртвые и некому неизвестные
>>829069
#66 #822732
[code] int main(void) [code]

test
>>822733
#67 #822733
>>822732
Слэш забыл. бака.
>>822737
#68 #822737
>>822733
[code] cout << "(" [/code]
#69 #822790
>>821402 (OP)
Что происходит, при передаче указателя на массив по значению? Он указывает на новый локальный массив? Откуда тогда функции известна его длинна?
#70 #822793
>>822790

Я си только учу, но вроде указатель передается только by reference, в этом и смысл. А массив вообще by default передается by reference, но может в плюсах не так.
>>822830
#71 #822805
>>822790

>передаче указателя на массив по значению


Ты не за что не догадаешься. Массив остаётся на месте, а указатель передаётся в функция и там используется.
#72 #822811
>>822708
Жс-кун это старый оп же, он уже больше года как не у дел.
15 Кб, 300x220
#73 #822830
>>822793

>си


>reference

#74 #822839
Почему если переменную не инициализировать то в ней всегда что-то хранится? Как работает оперативка компа что всегда в ячейках что-то записано?
#75 #822844
>>822839
Если глобальная переменная, загрузчиком виндовым вроде декларирована инициализация нулями, в никсах не знаю. Если переменная локальная, то прочитается рандомный мусор со стека, который там остался от вызова других функций, компайлерских прологов или подобной хуйни. На самом деле, в "ячейках" не всегда что-то записано. Попробуй привести к указателю рандомное число и прочитать и прочитать значение, разыменовав его. Скорее всего, подходящей страницы виртуальной памяти не окажется, и вылетит исключение.
>>822857
#76 #822856
>>822839

> Как работает оперативка компа что всегда в ячейках что-то записано?


Для этого есть специальные механизмы в материнской плате. Если бы не они, то чипы с оперативкой исчезали бы из системного блока при освобождении и памяти и появлялись по мере её заполнения. Это очень сложная магия. Зачем она тебе?
>>822857
#77 #822857
>>822844

> и прочитать и прочитать


>>822856

>и памяти и


Как называется эта болезнь?
>>822858>>822988
#78 #822858
>>822857
Аутизм мб. Это посты разных людей, если что, так что назвал навскидку самое распространенное на сосаче.
#79 #822859
>>822839
http://arch.cs.msu.su/Text/
Первых несколько глав
#80 #822897
>>822790
>>822839
Куда скотился C++-тред? Что эти тут делают? Почему не забанены?
>>822922
#81 #822922
>>822897
Вообще пиздец
#82 #822952
Упражнене из книги Прата (код из книги) - https://ideone.com/zIMtHP
Ругается на

>char fab[20];


>Frabjous(const char •s = "C++") : fab(s) {}



Два вопроса:
1. Как это исправить-то, чтобы через initialization list, а не strcpy в теле? Ну и не fab{s[0], s[1], s[2], s[3]}, разумеется.
2. А почему оно вообще не работет-то?

>char x[10]("string")


Нормально, а вот

>const char • s = "string"


>char x[10](s)


не хочет. Но ведь это практически одно и тоже, разве нет?
>>823332
#83 #822961
Возможно ли новичку в программировании (Знаком с плюсами вплоть до классов) реализовать простенькую консольную игру по сети?

Для начала хотя бы игру в "Камень-ножницы-бумага"?
Один игрок пишет одно, второй другое и обоим выписывает результат

Если да, то где искать как это делать?
>>822992
#84 #822988
>>822857

>Как называется эта болезнь?


Пять раз исправил пост
@
Не перечитал перед отправкой
sage #86 #822995
>>822992

>написать простейший сокет-сервер


>продолжительность видео 10:21


>больше 100 строк говнокода на server.cpp


>почти 100 строк говнокода на клиент



пиздец, какие же крестоблядки говноежки, и это в 2016 году
>>822997
#87 #822997
>>822995
Разумеется,
import http.socket
http.socket.server.start()
гораздо проще, но ведь эти же 100 строк кода там внутри и находятся.
>>823009
sage #88 #823009
>>822997
Т.е. без этих 100 строк чистейшего говнокода никак?
>>823017
sage #89 #823015
>>822992
погодите, так это говно ещё и в одном треде работает? больше 100 строк на однотредовый блокирующийся сервер? лооол
представляю какой там будет срачельничек с локами, мьютексами или колбеками с стиле говняшная + pthreads, если надо будет сделать мультитредовый сервак
#90 #823017
>>823009

>Т.е. без этих 100 строк чистейшего говнокода никак?


Никак, это ведь интерфейс ОС.
>>823019
#91 #823019
>>823017
Так а есть какие-то удобные абстракции, что-то в стиле эрланговского gen_tcp или хотя бы akka i/o tcp?
#92 #823023
>>823019
В стандартной либе нет.
#93 #823026
>>823019
Нет конечно, даже самые высокоуровенные библиотеки вроде CAF пародирующие эрланг заставляют писать те же сто строчек на то, что в эрланге делается буквально в 5.
#94 #823049
>>823019
Очевидный asio, его вроде даже собирались в 17 включать, но под конец прокинули через хуй, может в 23 завезут нет.
Впрочем, он давно умеет в standalone без сотен мегабайт буста и элементарно подключается в проект.
10 Кб, 1297x170
#95 #823056
Бояре, как в cmake линковать wtsapi32.lib ?
target_link_libraries(wtsapi32.lib) - ошибка сборки
>>823060
#96 #823060
>>823056

>target_link_libraries(wtsapi32.lib)


Ты бы хоть почитал какие аргументы оно принемает и сколько.
target_link_libraries(target wtsapi32)
>>823068
#97 #823068
>>823060
Ну я же долбоеб.
Спасибо
#98 #823332
>>822952

>1. Как это исправить-то, чтобы через initialization list, а не strcpy в теле? Ну и не fab{s[0], s[1], s[2], s[3]}, разумеется.


Сделать string

>2. А почему оно вообще не работет-то?


Размер массива ограничен, а в s может хранится слишком большая строка.

https://ideone.com/Kq14Y1
#99 #823342
Вечер в хату. Возникла такая вот проблема: необходимо написать кучу бесполезного и однообразного кода(типа самопальной либы для матриц, векторов итп) и все бы ничего(обошелся бы просто встроенными в vc/clion средствами для генерации заголовков методов), но есть такая хрень что необхожимо даже для функций короче пиструна хомяка писать ~4 стоки комментариев до и 1 после. В общем, реквестирую способов не втыкать вручную тысячи говн.
>>823354
#100 #823354
>>823342
Напиши программу/скрипт для генерации комментариев.
>>823360
#101 #823360
>>823354
А без велоспедов.
>>823361
#102 #823361
>>823360
Юзай уже готовые средства кодогенерации/автодокументации.
Либо велосипедь свои, выбора у тебя не осбо много.
>>823363
#103 #823363
>>823361
Ткните пожалуйста лицом в подобное ибо долблюсь в глаза.
>>823382
#104 #823382
>>823363
Смотря что тебе нужно:
https://www.gnu.org/software/m4/m4.html
https://github.com/gccxml/pygccxml
http://eli.thegreenplace.net/2011/07/03/parsing-c-in-python-with-clang
Видел, люди пхп как макроязык для сишки использовали.
#105 #823456
Здарова, господа, посоветуйте годную книгу по многопоточности. Раньше вроде модно было C++ Concurrency in Action читать, сейчас ничего не изменилось?

Не новичёк, азы знаю.
>>823458
#106 #823458
>>823456
Ну так Энтони уже все сказал, с тех пор добавились разве что параллельные версии алгоритмов из серьезного, но это тема на пару страниц, не на книгу. Дальше только читать исходники либ, или какие-нибудь книжки по обобщенной параллельности. Материалы с Highload++ попробуй, например.
#107 #823749
Двач, где мне прочитать о вызовах функции в C++ с точки зрения машины? Т.е. я хочу узнать, как работает память, и т. д., чтобы прояснить для себя некоторые моменты, в частности, move-semantics, и т. д. Хочу узнать как и где работает память в пеке, как функции в С++ реализуются с точки зрения памяти, передача аргументов, возврат, и т. д.
>>823768>>823769
sage #108 #823768
>>823749

>я хочу узнать, как работает память, и т. д., чтобы прояснить для себя некоторые моменты, в частности, move-semantics


Никакого отношения к тому, как работает память, move-semantics не имеет.
Т.е. я имею в виду, что вызов move constructor-а ничем не выделяется.
>>823779
#109 #823769
>>823749

>где мне прочитать о вызовах функции в C++ с точки зрения машины


https://en.wikipedia.org/wiki/X86_calling_conventions

>move-semantics


Move-semantics к работе памяти не имеет отношения. Это чисто фишка системы типов: в каком контексте вызывается &&, а в каком &.
>>823779
#110 #823779
>>823768
Да я понял, спасибо. Я это к тому написал, что начал читать 4th edition, и тупил вообще. Вроде сейчас разобрался, что и как, т.е. если я определяю функцию например:

MyType Sup2ch(MyType);

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

>>823769
Спасибо, я потихоньку начну читать вики на эту тему, а вообще, где нормально и четко можно глянуть инфу о памяти? А то везде в книжках пишут типо этого: "Ну есть стек в main, есть область глобальной памяти, есть куча." Мне кажется, что эта инфа подходит только для очень поверхностного ознакомления.

И да, спасибо, реально помогаете.
>>823781
#112 #823785
>>823781
Спасибо, я, еблан, даже слов для поисковика бы не подобрал. По-русски писал чет, там блядь одно говно за динамические массивы в стиле лабы первокурсника.
>>823786
#113 #823786
>>823785
Если хочешь более подробных примеров - обмазывайся листингами. Тот же шланг с флагом -S выдаст тебе довольно читабельный листинг.
>>823788
#114 #823788
>>823786
Не понимаю

>шланг с флагом -S



Заранее прошу прощения за нубство.
>>823793
#115 #823793
>>823788
Шланг - это clang, компилятор. Делаешь что-то типа clang -S test_file.cpp и на выходе волучешь .s файл с ассемблерным листингом.
Хотя я начинаю сомневаться что ты в нём хоть что-то разберёшь.
>>823799
#116 #823799
>>823793
спасибоу меня gcc стоит, ну поставлю, разберусь,

>In practical words, when we run any C-program, its executable image is loaded into RAM of computer in an organized manner



Поправьте меня, пожалуйста, если не прав, если не трудно поясните:

Запуская программу, начинает как-то работать машинный код (как?) (ну или код более низкоуровнего яп типо ассеблера?), в ходе исполнения инструкций программа имеет доступ к памяти (которая оперативка, RAM), и в статьях рисуночки сверху вниз идет стек, куча, бсс и прочее - сверху это означает лево по оси адрессов, т.е. возле нулевого (или первого доступного реализацией) лежит стек, потом начиная например с 0xAA лежит куча, и так далее.
#117 #823803
Пока не прочитал, но вроде нашел годную статью

http://www.gahcep.com/cpp-internals-memory-layout/
#118 #823804
>>823799
gcc тоже должен уметь выдавать только листинг, погугли.
>>823821
#119 #823821
>>823804
Нашел, спасибо тебе, очень мне помог, отвечаю
15 Кб, 413x529
#120 #823823
Это типо код ассемблера?
>>823824
#121 #823824
>>823823
Типо да, надеюсь ты там без оптимизаций собирал?
#122 #823875
>>823799
Почитай, как многозадачные ОС устроены. Что такое контекст процесса ОС, виртуальная память, и т.д.
#123 #823937
>>823799
если gcc стоит, то можешь clang не ставить. Чтоб получить листинг ключ тот же -S. Если хочешь intel синтаксис, то пишешь -masm=intel
#124 #823939
Есть ли что о новых фичах языка начиная с 10 года?
На работе лютый легаси, и как-то не используем ничего свежего. Ну и в итоге я не следя за новостями уже и не ориентируюсь в том что там надобавляли/собираются добавить.

Есть что почитать об этом сжато? Я не прошу Страуструппа всего читать.
>>823940>>824761
#125 #823940
>>823939
на хабре почитай статьи
#126 #823945
Как получить указатель на объект ofstream? Хочу читать из файла, который открываю как
std::ofstream file("text_file.txt", std::ios_base::in);
и вот как бы мне получить указатель, чтобы скормить его feof()?
>>823949
#127 #823949
>>823945
А зачем? У ofstream есть же метод eof(). Они же вроде одно и то же делают
>>823950
#128 #823950
>>823949
Спасибо, как раз что и нужно! Затупил я.
#129 #824307
Шалом школьники.

У меня вопроc: зачем может понадобиться отмечать деструктор как deleted? Есть какой-то пример где это нужно?
>>824758
#130 #824335
>>824314
ОТКЛЫЛ MAIN.C
@
УВИДЕЛ ЭТОТ УЖАС ИЗ ГОВНОКОДА
@
ПОЛУМЕТРОВЫЕ SWITCH-CASE
@
100 КРАТНОВЛОЖЕННЫЕ IF-ELSE
@
ЗАКРЫЛ НАХУЙ И ПЕРЕКРЕСТИЛСЯ
Прата #131 #824352
>>821470
Бля,проще бы сказал что уже есть такая стандартная функция plus.
#132 #824383
>>824314
даже с точки зрения С-программера это говнокод, съеби
#133 #824389
>>824384
Не писать на си.
#134 #824457
>>824314
Куда-то уехала индентация.
Переменные прямо в хедерах - автор не понимает, что это такое.

>#define ME_TANK 0


Даже в сишечке нужно использовать константы вместо препроцессора. Все назначение этой переменной - это быть вместо указателя tank* me, потому что автор в указатели не может.

>lightsources sources


Автор не понимает, зачем нужна система контроля версий.

README почему-то указывает сюда
https://github.com/rainautumn/ttytanks
Здесь индентация не такая поехавшая.

В целом портрет ясен, самоуверенный школьник. На С++ такое писать действительно не стоит, питона достаточно.
>>824492>>824506
sage #135 #824492
>>824457

>питона достаточно.


fps низкий будет
>>824504
#136 #824504
>>824492

>fps низкий будет


Кекнул с дауна.
#137 #824506
>>824457
>>824457

>lightsources sources


Причем здесь система контроля версий?
#138 #824518
In this particular case, if you forgot to delete a copy or move operation, no harm is done. A
move operation is not implicitly generated for a class where the user has explicitly declared a destructor.
Furthermore, the generation of copy operations is deprecated in this case (§44.2.3). This
can be a good reason to explicitly define a destructor even where the compiler would have implicitly
provided one (§17.2.3).

>Furthermore, the generation of copy operations is deprecated in this case (§44.2.3).



Получается, если я явно опишу деструктор в классе, неявно не будут генерировать ни конструктор копирования, ни конструктор перемещения (copy & move constructors)?
>>824520>>824708
#139 #824520
>>824518
Upd. Почему-то убедился, то это не так (copy генерируется). Знатоки C++11, объясните
>>824593>>824658
#140 #824571
>>821454
в расте есть шаблонное метапрограммирование? Ну или какой-то еще вид компайл-тайм метапрограммирования?
>>824573
#141 #824573
>>824571
Там есть аст макросы, которые предоставляют куда больше возможностей с меньшим кол-вом ебли.
>>824599
#142 #824593
>>824520
Новую книжку Майерса про С++ читал?
Там целая глава про это.
>>824608
#143 #824599
>>824573

>макросы


ой всё!
>>824613
#144 #824600
бамп
#145 #824608
>>824593
А название какое?
>>824612>>824762
#146 #824612
>>824608
Это моя первая книга по 11 стандарту, 4 издание Страуструпа читаю
#147 #824613
>>824599
Какая разница, как называется, если конечная суть одна? или у тебя слово "макросы" ассоциируется с текстовым препроцессором из си?
>>824614
#148 #824614
>>824613
Скорее с хуйнеё которая должна исправить недостатки функций в лиспе
>>824624
#149 #824624
>>824614
По сравнению с тем как сейчас используются шаблоны и какие костыли акробаты с ними городят - это манна небесная.
>>824704
sage #150 #824658
>>824520
Узнай, что значит deprecated
>>824708
#151 #824669
Где найти работу по цпп хоть какую-нибудь? Хоть место где прост кодить разрешат, просто так? Че надо вообще знать? Шаблоны, ооп, стл?
#152 #824704
>>824624
в c++17 будет relaxed constexpr, и большая часть еботни с шаблонами уйдет
>>824705>>824765
#153 #824705
>>824704
или даже в 14 MSVC не поддерживает до сих пор
#154 #824708
>>824658
я не могу, перевод я посмотрел, но я вручную создал класс, не объявляя из методов ничего, кроме деструктора, и все же я смог использовать неявно сгенерированный копи-конструктор. Так почему страуструп говорит о том, что написано здесь >>824518 ?
Объясни, пожалуйста.
>>824710>>824791
#155 #824710
>>824708
Upd. Вот этот код


#include <iostream>

class Foo{
public:
~Foo() {}
};

int main() {

Foo x;
Foo y(x);
return 0;
}


сработал отлично, и не о каких неявно не сгенерированных конструкторах при явном деструкторе не было и речи
#156 #824726
Поясните за Intel C++ Compiler дает ли хоть какой то выигрышь на процессорах интел?
>>824728>>824767
#157 #824728
>>824726
Поставь все три компилятора и прогони бенчмарки с какого нибудь benchmarksgame.
#158 #824758
>>824307
Так иногда делают, чтобы запретить создавать объекты этого типа на стеке. Аналогично, operator new удаляют, чтобы запретить создание в куче. Но вообще это костыль, тому що при размещении в куче тоже, вообще говоря, нужен деструктор. Более православное решение - сделать его приватным, тогда operator delete не обосрется, а удалять напрямую не получится.
#159 #824761
>>823939
Modern C++ от Скотта Майерса
#160 #824762
>>824608
Эффективный и современный C++, в шапке есть.
#161 #824765
>>824704
На смену придет модная дрочильня в виде friend injection, вот тогда-то ты поймешь, что SFINAE это было совсем просто, лол.
#162 #824767
>>824726
Насколько я понимаю, его юзают только когда под суперкомпьютеры пишут код для параллельных вычислений. В обычных задачах можно прикрутить OpenCL/CUDA и получить гораздо больший относительный прирост, плюс останутся модерновые фичи, которых пока нет у Intel.
#163 #824785
Допустим, итераторы first и last задают диапазон элементов. Как проще всего присвоить первым k элементам в этом диапазоне некоторое значение, а оставшимся size - k элементам - другое значение, если k - целое число?

Что в STL особенно удобно для этого?
>>824826
sage #164 #824791
>>824708
deprecated значит, что поведение или функция объявлены устаревшими Они ещё есть, но в следующей мажорной версии стандарта функция будет удалена, а поведение — изменено.
#165 #824826
>>824785
std::fill
>>824853>>825160
#166 #824853
>>824826
fill_n же, тогда достаточно OutputIterator.
>>825160
#167 #825051
Я к вам с глупым вопрос. А в чём такая проблема сделать чтение исходников в два прохода, собирая все объявления в первом (выдёргивая только сигнатуры из definition'ов (какой термин по-русски, кстати, правильный?)), и избавиться от необходимости иметь декларации выше использования и прочий геморрой, возникающий при перекрёстном использовании каких-либо функций/методов, необходимости forward declaration'оа класса и т.д.
Неужели это настолько ресурсоёмко?
>>825092>>825149
#168 #825092
>>825051

>Неужели это настолько ресурсоёмко?


Это ебанутое наследие сишки. Причем оставлено только на глобальном уровне. Внутри класса, например, методы можно в произвольном порядке объявлять. Так же как и делать вложенные функции, объявляя локальный класс внутри функции.
>>825149
#169 #825101
У меня есть класс(A) в нем указатель на абстрактный класс(B), в котором могут храниться объекты разных типов, как написать конструктор копирования(для А), если я не знаю, какого типа объект мне нужно выделить?
>>825107>>825110
#170 #825107
>>825101

>как написать конструктор копирования(для А)


Добавь virtual A clone() = 0 в интерфейс абстрактного класса, пусть наследники сами разруливают, как им копироваться.
>>825163
#171 #825110
>>825101
Если у тебя там указатель, зачем копировать B? shared_ptr не подойдет?
>>825159>>825163
#172 #825149
>>825051
Дело не в однопроходности же, это тебе не паскаль. Грамматика все равно неразрешима, и в общем случае, с шаблонами шаблонов там такая дрочильня, что даже с ручкой и бумагой без поллитры не разберешься. Если убрать декларации, скорость компиляции нихуя не увеличится, но появятся новые проблемы. Например, неочевидно, что делать с вызовами перегруженных функций, когда нельзя предсказать декларацию по вызову, и все зависит только от порядка опережающих деклараций.
>>825092
Даже без легаси пришлось бы делать что-то подобное, я думаю. Класс это нечто целостное, там без такого можно обойтись. А единица трансляции может состоять из хэдеров от разных авторов, и не всегда можно выбрать "единственный правильный для всего файла" набор перегрузок. Жизненный пример: ты хочешь специализировать шаблонную функцию из STL (это разрешено и применяется, например, для std::hash с нестандартными типами), но в самом хэдере она уже используется. Если поместить обе декларации (твою и шаблонную) в начало файла, то код хэдера может заюзать твою версию, чего никто не ждал. А так - пока идет хэдер, юзается стандартная, а дальше уже ты делаешь что хочешь.
>>825648
#173 #825159
>>825110

>Если у тебя там указатель, зачем копировать B?


У него класс - владелец ресурса, похоже. При копировании хозяина надо копировать сам ресурс.
#174 #825160
>>824826
>>824853
Вот кодес, который показал, что я нихуя не понимаю в итераторах. Функция сортирует бинарную последовательность.

https://ideone.com/m4cuAF

Какая сложность у вычисления разности итераторов? Я использую разность вместо вызова std::distance, который в общем случае работает за O(n), но для вектора, вроде бы, за O(1). Можно ли тут уменьшить констату в сложности сортировки?
>>825248
#175 #825163
>>825107
>>825110
Спасибо няши:3
#176 #825248
>>825160
Для BidirectionalIterator гарантируется линейная сложность, как для distance, так и для разности. distance вообще нужно только для однородности кода, из-за того, что для однонаправленных разность недоступна.

За оптимизации сложно сказать. Формально было бы быстрее пихать единицы через emplace_back прямо в том же цикле, но фактически fill_n может использовать memset, который существенно быстрее. Можно параллелизовать fill_n, начиная с нового стандарта. Ну и возможности по байтоебству тут неисчерпаемые, от битовых полей вместр вектора до SIMD-инструкций, которые за пару тактов весь твой вектор свернут в бараний рог.
>>825912
#177 #825439
У меня есть одна идея, приложение для морфа звука:
1. Идет постоянное считывание звука с одного из аудиоустойств
2. Этот звукобрабатывается морфером по определенному принципу
3. Создается новое аудиоустройство, которое воспроизводит полученный звук.
4. Само устройство ”подключается” только при запуске приложения.
Если кто-то подсказал бы что почитать по какому-либо пункту, я был бы крайне признателен, спасибо.
Проблемными кажутся только последние 2.
>>825442>>825452
#179 #825444
>>825442
Надо было сказать что проблемы только с двумя последними пунктами.
Гуглить-то я умею
>>825445
#180 #825445
>>825444
А.
Извиняй.
Это я в глаза долблюсь.
#182 #825455
>>825452
Знаешь, я могу и морфвокс юзать, мне интересно самому написать. А именно как морфвокс создал свой виртуальный микрофон и как сделать так же.
#183 #825474
пара вопросов

1 Как поставить студию 2015 под вайн?
2 Кто-нибудь пробовальставить студию 2015 под вайн не веб-инсталлером, а с iso -образа?
>>825542
#184 #825542
>>825474
ты ебанутый чтоли, это студио-уебище и на винде нинужно.
>>825743
#185 #825648
>>825149

>Если поместить обе декларации (твою и шаблонную) в начало файла, то код хэдера может заюзать твою версию, чего никто не ждал. А так - пока идет хэдер, юзается стандартная, а дальше уже ты делаешь что хочешь.


Так если при одновременном объявлении твоего и стандартного появляется неясность, то почему эта неясность не появляется уже в твоём коде? То есть, допустим, в хедере выполнилась стандартная, потом ты заспециализировал свой темплейт и использовать функцию. Откуда сейчас компилятору знать, что использовать? В чём разница-то? То есть, если твоя функция вызывает неясность, то не так важно уже, когда она появится, компилятор всё равно должен ругаться, разве нет? Я, вероятно, не до конца понял описываемую ситуацию.
#186 #825743
>>825542
Ну не в notepad++ же писать
sage #187 #825759
>>825743
Почему бы и нет?
#188 #825761
>>825743
Пиши в Qt Creator, поставь msvc, собирай через cmake.
Подставить в Qt Creator любое IDE
>>825994
#189 #825854
>>825743
я в нем пишу и ебал я в рот ваши иде, хотя эклипс заебись
>>825914>>828999
#190 #825912
>>825248

>Ну и возможности по байтоебству тут неисчерпаемые, от битовых полей вместр вектора до SIMD-инструкций, которые за пару тактов весь твой вектор свернут в бараний рог.


Можешь привести пример, как здесь применить SIMD-инструкции? Я ньюфаг в SIMD.
>>826603>>828231
#191 #825914
>>825854
ты двойной говноед всего лишь.
>>825923
#192 #825923
>>825914
Пишу в нано на арче, наслаждаюсь консолью и охуенными шрифтами. А вы говноеды. Не более.
#193 #825947
В use_factory создается shared_ptr на число, при этом счетчик ссылок на это число увеличивается. Указатель возвращается из функции, счетчик увеличивается еще раз, но уменьшается на 1 после выхода из функции use_factory. Указатель на число не сохраняется в функции main. Сколько будет ссылок на число и почему? В каком разделе стандарта об этом читать?

https://ideone.com/LuCMP8
>>825995
#194 #825994
>>825761
Подставил Visual Studio 2015. Что дальше?
sage #195 #825995
>>825947
Каких ещё "ссылок на число"? make_shared создаёт int на куче говна.
>>825998
#196 #825998
>>825995
Ну указатель на память, которую аллокатор выделил под число, один хуй.
>>826000
sage #197 #826000
>>825998
И что ты хочешь от нас?
>>826064
#198 #826064
>>826000

>Сколько будет ссылок на std::make_shared<int>(arg) и почему? В каком разделе стандарта об этом читать?

#199 #826133
Привет, я Кирилл, делаю 3д игру на плюсах для себя и из-за недостатка умений чувствую себя крайне неуютно. Я разбираюсь понемногу, вроде горячих вопросов у меня нет.
Но я хотел бы увидеть какие-нибудь примеры или коммьюнити тех, кто пишет подобное. Туториалы, гайды и лекции обычно или слишком общие расчитано на разработчиков другого софта с большим опытом или слишком специфичные одна фича, которую не очень понятно как аккуратно соединить с остальными.
Так вот, может у вас завалялись ссылки на исходники проектов 3d игр, созданных новичками. Лучше небольшие, грубые, недоделанные, незапускающиеся, третий год в разработке и так далее, если вы понимаете о чем я. Хотя бы просто чтобы посмотреть как другие делают. Я пытался вникнуть в коды квейк/дум, но там во-первых си, во-вторых столько оптимизации и макросов, что без гида не разобраться как это все вообще работает.
>>826246>>826286
#200 #826138
Кто шарит, скажите, имеет ли смысл задавать выравнивание функторам? т.е если у нас такой функтор
struct Fun {
void operator()(...) { ... }
};

По-умолчанию у него размер 1 байт. Если добавить __attribute__((__aligned__(8))) то у него получается размер уже 8 байт. Имеет ли это вообще смысл по части увеличения производительности и улучшения кеширования?
>>826142
#201 #826142
>>826138
1. зачем тебе функтор без членов? юзай функцию
2. никакого профита с выравниванием данных не будет --- у тебя же нет данных
#202 #826246
>>826133
В сети куча книг, как зделоть игру от и до - нет, хочу жрать чужой говнокод.
>>826366
#204 #826302
Антуаны, решил начать изучать С++ (будем считать, что с нуля), но есть небольшая проблема:
- я на вахту уезжаю на месяц, тырнетов там нет и есть только некронетбук. Есть ли какие-нибудь IDE, которые смогут поставиться на хрюшку 32 разрядную?
В гугле забанен.
#205 #826366
>>826246
Тебе не приходило в голову, что я параллельно читаю несколько книг, но на код все равно хочется посмотреть?
>>826286
Пробовал сам коду ид разобраться? К тому же у них не плюсы, а чисто си.
>>826760
#206 #826369
>>826302
культя. кодеблокс, эклипс, хз, но может и clion взлетит
86 Кб, 718x1024
#207 #826379
Посоветуйте видеокурсы для вката, чтобы я одновременно качал бицуху и кресты.
sage #208 #826381
>>826302
Ставь прыщи и вим, нахуй тебе иде.
#209 #826382
>>826286
Лол, дум 5 лет назад выложили, а чувство такое, что вчера об этом читал. Как же быстро я старею. Так и до появления модулей не доживу
#210 #826424
>>826302
msvc 6
#211 #826430
>>826302
notepad++ или vim, cygwin. прыщи не обязательно ставить, можешь накатить на хрюшку
>>826540>>826543
#212 #826540
>>826430

>шиндошс


>ставь цыгвин


Лучше виртуалку с линуксом, в нем виртуалку с хп, а в ней цыгвин. Вот это тру будет ебать.
>>826576
#213 #826543
>>826430
Я к тому, что человек вроде с языком хочет ознакомиться, а не с анальными методами прыщесборки. И авто дополнение с дебагером тут в тему будут, а нотепад можешь в жопу запихать.
#214 #826576
>>826540
Да хватит просто в виртуалке студию под вайном поднять.
#215 #826603
>>825912
Бамп вопросу. Хочу писать йоба-сортировки с использованием SIMD.
#216 #826728
Я в дедлоке с шаблонами.
В общем, есть шаблонная функция типа

template<typename InputIterator, typename OutputIterator
typename Foo = Bar<typename std::iterator_traits<InputIterator>::value_type>>
void my_function(InputIterator first, ..., OutputIterator out, Foo fun = Foo())
{ ... }

например я ее вызываю с аргументами по умолчанию:
my_function(v.begin(), v.end(), arr.begin());

все хорошо, но когда я хочу специлизировать параметр шаблона Foo, возникают проблемы - я не могу написать так:
my_function<MyFoo>(v.begin(), v.end(), arr.begin());
потому что первыми в шаблоне идет итераторы, но я не хочу писать специализацию к итераторам для того чтобы зада Foo
и я не могу поставить типа итераторов после Foo потому что дефолтная спецификация зависит от них.

Вопрос к знатокам: как быть?
>>826782
#217 #826760
>>826366
Ну хуй знает. Самое современное из того, что я знаю с открытыми сырцами - UE4. Например, http://rutracker-pro.org/viewtopic.php?t=368955
#218 #826782
>>826728
Насколько я понял, тебе надо, чтобы одни аргументы шаблона выводились, а другие - нет? Напрямую так не сделать - если уж ты пишешь в вызове <...>, то вывод полностью отключается, и рассчитывать можно только на дефолтные параметры.

Для решения твоей задачи можно сделать так:
template<typename InputIterator, typename OutputIterator
typename Foo>
void my_function(InputIterator first, ..., OutputIterator out, Foo fun = Foo())
{ ... }
template <typename Foo>
struct MyFunctionManager
{
template <...>
void operator () (...) {return ::my_function <...> (...);}; //инлайновая обертка с идентичной сигнатурой, которая вызывает основную глобальную функцию
};
my_function(v.begin(), v.end(), arr.begin()); //в таких вызовах аргументы шаблона выводятся, поэтому дефолтные параметры вообще не нужны
MyGunctionManager <MyFoo> () (v.begin(), v.end(), arr.begin()); //а здесь получается "шаблон в шаблоне" ценой всего лишь в две лишние скобки - по производительности деградации не будет
>>826785>>826820
#219 #826785
>>826782
Костыль уровня AbstractSingletonProxyFactoryBean, но ты молодец.
>>826789
#220 #826789
>>826785
Если бы у тебя был шаблон класса, а не функции, то все бы решалось еще проще - просто через alias template, вложенный в шаблон с единственным параметром. Писалось бы TvoyaMamka <MyFoo>::my_function (...) без всяких дополнительных оберток. Поэтому если есть выбор, лучше всегда сделать шаблон класса и работать уже с его методами. Тогда можно делать частичную специализацию, синонимы и много другой полезной хуеты, которую нельзя с функциями.
#221 #826820
>>826782
Спасибо за совет, но я уже решил это оберткой функцией в статический класс

то есть получается так:

template<typename T, typename Foo = Bar>
class A
{
public:
A() = delete;
template<typename InputIterator>
static void fun1(InputIterator first, ...);
};

вызывается все это как я и хотел: A<int, my_fun>::fun1(...)
#222 #827296
Ананасы.
У меня вопрос не касательно языка, но всё же около него.
Мне нравится Qt creator (исключительно как IDE, то есть фреймворком Qt я не занимаюсь), но мне не ясна их политика лицензий.
Я так понимаю их лицензии касаются ПО в котором есть какие-то компоненты фреймворка Qt?
>>827308>>827454
#223 #827308
>>827296
Юзай Clion.
/thread
>>827310
#224 #827310
>>827308

> Юзай Clion.


640 Гб хватит всем. © JetBrains
#225 #827454
>>827296
Вроде да, у Qt Creator, по идее, должна быть отдельная лицензия. Если в ней не говорится о "только некоммерческом использовании", то можешь писать код без использования фреймворка, и все будет легально.
>>827455
#226 #827455
>>827454
Отдельное EULA, в смысле.
быстрофикс
130 Кб, 1448x945
#227 #827483
Делаю N-Body симулятор под ЦПУ и ГПУ AMP не могу найти литературу по этой части, интересует как можно упростить расчеты, разбиение на ячейки и пр. Как N-body вообще переводится на русский язык?
http://pastebin.com/kgAdLp1p
>>827485>>827665
sage #228 #827485
>>827483

>N-body


многих тел
>>827490>>827491
#231 #827665
>>827483
Сам в юношестве делал на GPU такую симуляцию.
Вот хорошая статья https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch31.html
>>828476
#232 #827961
Есть такое определение многомерного массива

int x[5][10];

Почему, когда я хочу передать этот массив в функцию, не важна первая размерность 5?

void VoidFunc(int arr[][10]);

Я понимаю, что запись int x[5][10] означает, что x - массив, состоящий из 510 элементов и занимающий 510sizeof(int) места. Но я никак не могу этого понять, не могу провести аналогию с простым массивом y[20] - например, мы передаем вообще указатель int, без указания вообще размеров этого массива. Но как это работает это с многомерными массивами?
#233 #827964
>>827961

>y[20]


а чем он от y[2][10] отличается?
>>827968
#234 #827968
>>827964
Ну я в первом варианте не могу стукнуться к самому первому элементу вот так

y[0][0]

а во втором могу.
Это самое очевидное, что пришло в голову, а структура массива вроде бы, такая же
#235 #827975
Бамп вопросу
>>827961
>>827988
#236 #827988
>>827975
Это просто разная форма описания куска памяти. Доступ y[6] превращается в y + 6, в другом случае y[6][3] превращается в y + 6*x + 3 где x одна из размерностей массива. Если x неизвестно, то хуй пойми как выполнять доступ к элементам этого массива по двум индексам. Поэтому в данном случае одну размерность при передаче в метод и надо указывать. По моему, как-то так. Для трехмерного массива наверняка надо две размерности указывать. Хотя я могу и наврать.
>>828008>>828140
#237 #828008
>>827988
Немного не понял вот здесь:

>y[6][3] превращается в y + 6x + 3


x - это размерность вторая, типо например y есть y[10][15], тогда y[6][3] y + 6
15 + 3. Так. Тогда, если мы не передадим 15, действительно, неизвестно куда стукаться? Спасибо, анон, ты действительно мне помог, спасибо большое!
>>828012
#238 #828012
>>828008
y есть y[10][15] (в определении массива), тогда y[6][3] y + 6*15 + 3.
быстрофикс
sage #239 #828042
>>827961
Потому что массивы decay до указателей при передаче в функцию.
>>828058>>828105
sage #240 #828045
>>827961

>Но как это работает это с многомерными массивами?


Никакого отличия от одномерных. Когда у тебя массив T[D], то он передаётся как указатель на T. Т.е. int[10] передаётся как указатель на int.
В случае с т.н. многомерным массивом тип T это массив размерностью на единицу меньше. Т.е. для int[5][10] тип T это int[10]. Вот он и передаётся как указатель на int[10]

Ещё раз: никакого отличия от одномерных.
>>828105>>828110
#241 #828058
>>828042
но тогда если decay до указателей, тогда твой ответ неверный: такой массив, например

int x[5][2];

я не смогу передать таким образом в функцию

void VoidFunc(int*);

VoidFunc(x);
sage #242 #828064
>>828058

>тогда твой ответ неверный


Он верный, просто ты нихуя не понимаешь, как распадается многомерный массив до указателя. До указателя на ЧТО он распадается. См. мой следущий мессадж.
sage #243 #828073
>>828058
Если тебе так трудно выучить правила чтения определения типа в C/C++, возьми и посмотри, во что std::decay превратит твой int[5][2]

И потом хорошо подумай, почему это верно. Почему это согласуется и с layout-ом массивов в памяти, и с арифметикой указателей, и с правилом array-to-pointer decay. И как правильно читать определение типа многомерного массива.
>>828076
#244 #828076
>>828073
Ни в коем случае не хотел тебя оскорбить, если что. Сейчас допишу я вообще хуесос
#245 #828105
>>828042
Ты можешь сказать, КАК распадается массив до указателя. Ты написал вот что:

>Потому что массивы decay до указателей при передаче в функцию.



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

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

Все работает как сказал чувак в >>828045 посте?
>>828107>>828110
#246 #828107
>>828105

>КАК распадается многомерный массив



фикс
sage #247 #828110
>>828105

>Все работает как сказал чувак в >>828045 посте?


Кагбэ "чувак" это и есть я. Я же написал, читай мой следующий мессадж. Следующий за тем, на который ты ответил.
>>828127
sage #248 #828116
>>828058
http://ideone.com/yHEV1N раз
http://ideone.com/npKCcE два

Два не компилируется специально, чтобы компилятор показал тип в сообщении об ошибке.

Вот теперь подумай, какая должна быть сигнатура у функции, чтобы туда можно было передать int[5][2]
#249 #828127
>>828110
Еще раз хочу акцентировать внимание, если тебе показалось что я хочу тебя задеть - это не так. Спасибо, реально спасибо, что тратишь на меня время.
#250 #828129
>>828116

>int[5][2]


Какой же ты говноед. и лабодаун
>>828144
#251 #828140
>>828116
ебать как там все сложно с темплейтами.

Ясен хуй, надо передавать int [][2], это я понял из ответа >>827988
>>828152
#252 #828142
Поясните, почему если int поделить самого на себя, то получается не 1, а если double, то 1?
>>828147>>828149
#253 #828144
>>828129
Хули тебе блядь не нравится? Скажи блядь, заебал, хули выебываешься?
sage #254 #828147
>>828142
Так угодно Аллаху
>>828148>>828151
#255 #828148
>>828147
Нет, ну правда?
#256 #828149
>>828142
Если инт поделить самого на себя то будет 1
>>828159>>828240
sage #257 #828151
>>828147
Ну здравствуй, вниманиемразь. Я тебя не забыл.
сагу сними, аутист.
>>828153
sage #258 #828152
>>828140
Суть второй ссылки была в том, что int[5][2] это кагбэ (int[2])[5]
>>828156
sage #259 #828153
>>828151
Ты, наконец, понял, что const means thread-safe?
>>828167
#260 #828156
>>828152
ебать, блядь, я чето не успел даже разобраться пока. Нихуя себе, с хуя ли это так... пдзц
>>828238
34 Кб, 1181x601
#261 #828159
>>828149
Вот, если инт, то почему-то выводится 100 и 99, например. А если дабл, то ок.
>>828163>>828168
#262 #828163
>>828159
пиздец, я считаю себя дауном (это я тут ебусь насчет массивов) но ты пиздец, очевидно в строке

(i/j==1)

косяк, по выводу и так ясно, что работает это у тебя так

(i/(j==1))

В скобки деление заверни
>>828165
#263 #828165
>>828163
или я неправ, похуй, написал через секунду после того как увидел пост
>>828166
sage #264 #828166
>>828165

>или я неправ


Тут можешь не сомневаться: не прав.
>>828168
sage #265 #828167
>>828153
Я в том параде дегенератов и не участвовал - ты меня с кем-то путаешь.
>>828171
#266 #828168
>>828166
Поясни тут: >>828159
>>828172
sage #267 #828171
>>828167
Тогда в чём проблема, мразь? Чай будешь?
sage #268 #828172
>>828168
Ну при целочисленном делении округляется в сторону меньшего. 100/75 = 1.(3), что есть единица в целочисленной арифметике.
>>828175
#269 #828174
Блядь, пиздец, ало че за хуйня вот тут в первой ссылке? >>828116

Это каким хуем там 5? И вообще это законно? Как это работает? Почему темплейт схавал [5][2] как просто [5]? Это как вообще? Что почитать, чтобы перестать быть такой необразованной мразью?
>>828198
#270 #828175
>>828172
Cпасибо, понял. Тогда юзаю дабл?
>>828281
2 Кб, 387x116
sage #271 #828198
>>828200
#272 #828200
>>828198
Это не ответ. Это я и так понимаю
>>828202
sage #273 #828202
>>828200
А что "ответ"?
>>828215
#274 #828215
>>828202
Сори, бля я тупой пиздец. Получается, если
x[5][2] - это array 5 of array 2 of int,
то в аналогии, что array N of int преобразуется при передаче в функцию как int, то
x[5][2] преобразуется как int
x[2] ? Это правильно?
Можно еще вопрос? Где это говно, прочитать из нормальных источников?

Расскажи еще о себе? Как стал таким пиздатым?в плюсах
#275 #828216
>>828215
разметка ебаная, в int\*!
sage #276 #828219
>>828215

> Это правильно?


Ещё скобки нужны. int (*x)[2]
>>828227
sage #277 #828222
>>828215

>Где это говно, прочитать из нормальных источников?


http://unixwiz.net/techtips/reading-cdecl.html
>>828230
#278 #828227
>>828219
Получается, преобразуется в массив указателей на 2 aka int (x)[2] а не указатель на массив из двух int x[2]? Почему так? Где почитать мануал об этом?
#279 #828230
>>828222
это я знаю, как читать типы. Разве там есть, как преобразуются типы при передачу в функции?
>>828236
#280 #828231
>>825912
Слоуответ.
Ну, самое простое это прямо с вектором байтов (без битовых полей, чтобы на каждое число было по байту). Вот тут https://software.intel.com/sites/landingpage/IntrinsicsGuide/, например, референсы для Intel, при помощи функций с ...add... в имени можно сделать, чтобы, скажем, 16 байтов сложились в один при помощи единственной векторной инструкции. Соответственно, производительность может вырасти на порядок.
#281 #828233
>>828227
БЛЯДЬ СКА ВАКАБА ГДЕ МОИ ЗВЕЗДАЧКИ ПИДОООР
#282 #828235
>>828227
фикс, первое это указатель на массив из двух, а второе массив из двух указателей
sage #283 #828236
>>828227

>Получается, преобразуется в


Наоборот. Но для надёжности напиши на past ebin-t
>>828230

> как преобразуются типы при передачу в функции?


ARRAY TO POINTER DECAY, сколько раз можно писать.
#284 #828238
>>828156
Грамматика такая. Гугли right-left rule.
>>828241
#285 #828239
Ребята, спасибо всем, я тот уебак который заебал тут всех с массивами. Большое спасибо!
70 Кб, 658x836
#286 #828240
>>828149
int x = 0; x/=x;
>>828243
#287 #828241
>>828238
да блядь, это хуйня, как читать названия я знаю, как происходит "decay" съебался гуглить
>>828244
#288 #828243
>>828240
ой блядь, ебаный в рот смищно пошутил, мое увожение
>>828247
sage #289 #828244
>>828241

> как происходит "decay" съебался гуглить


Что там гуглить. "array N of T" превращается в "pointer to T"
>>828245
#290 #828245
>>828244
блядь, ты тред читал? А array N of array M во что превращается?
>>828249
#291 #828247
>>828243
Из-за таких как ты, сука, потом ракеты падают, а рентгеновские аппараты убивают пациентов.
sage #292 #828249
>>828245

> А array N of array M во что превращается?


> "array N of T" превращается в "pointer to T"


Что неясно?
>>828251
#293 #828250
Я давно подзабросил изучение С++, но сегодня я вернулся, даже 1 задачку с учебника страуструпа по вычислению простых чисел сделал - я молодец!
>>828353
16 Кб, 734x175
#294 #828251
>>828249
все, я еблан, убей меня

с пика понял все
#295 #828281
>>828175
Тогда юзаешь оператор взятия остатка от деления.
if (i % j > 0) ...
>>828284
#296 #828284
>>828281

> if (i % j == 0) ...


Фикс.
## Mod ## #297 #828297
Хотелось бы обратить ваше внимание, что макаба написана на C++. Впрочем, не только макаба, но и вообще все сервисы, такие как капча, мобильное апи и т.д.
Любите C++, ребятки. И когда php блядь кодер вылезет кукарекнуть сказать что-нибудь про свой любимый язык, просто напомните ему его место.
(Автор этого поста был предупрежден.)
#298 #828301
>>828297
Ах ты пидор, ты правила не чилал? тебе нельзя появляться и что-то говорить.
#299 #828303
>>828297
А почему капча не на пхп?
#300 #828306
>>828297

> Хотелось бы обратить ваше внимание, что макаба написана на C++


Может быть стоит как-то помочь родной макабе если есть какие-то интересные задумки, м?
sage #301 #828310
>>828297
Вот так детки, выглядит эталонная вниманиеблядь, вахтер и утенок в одном флаконе. Сути поста 0, зато плашечкой посветил.
Можешь банить, лолка, мне похуй
#302 #828311
>>828297

>Хотелось бы обратить ваше внимание, что макаба написана на C++


Оно и видно, кек. Твой пост звучит как "Иван Залупин окончил только колледж и создал Одноклассники.ру".
perl-monk
>>828344
#303 #828344
>>828311
Что сказать-то хотел?
#304 #828349
9 лет с нуль.чика кун
>>828359
#305 #828353
>>828250
Молодец. Когда нормально вкатишься как раз модули завезут.
#306 #828359
>>828349

>9 лет с нуль.чика кун


Представь ситуацию. Господа в смокингах и цилиндрах сидят в обедне и пьют чай, обсуждая катаморфизмы, анаморфизмы, параморфизмы наконец. Тут к ним вползает пьяный вдрызг кучер Ванька. Отплевывая лошадиный навоз, он ссыт под себя, одновременно блюя на пол прокисшим борщом. Затем достает задроченный томик Александреску, найденный на помойке. "Modern C++ Design - вот где мыслЯ, блеать, вот где красота и свежесть!". Смеясь, господа растегивают ширинки и мочатся быдлу в рот. Зовут дворника Ваську - местного лисп-задрота, он спускает крестохолопа с лестницы. Он делает это с удовольствием - хоть зачем-то сгодился элите. Поднимаясь за похвалой, он начинает зациклено бормотать про жидов. Господа для острастки ссут на него, после чего возвращаются к своим светским беседам.
#307 #828476
>>827665
Благодарствую.
#308 #828612
Пусть у меня в классе описаны деструктор, конструктор по умолчанию MyClassInt(int x=0), конструктор копирования, operator= копирующий, конструктор перемещения, operator= перемещения. Пусть еще описан метод
friend MyClassInt operator+(const MyClassInt&, const MyClassInt&). Рассмотрим следующий код

MyClassInt x{5};
MyClassInt y{1};
MyClassInt z = (x+y);

Я во всех описаниях сделал принты, соответственно я увидел, что тут сработают три дефолтных коструктора, хотя я ожидал увидеть:
два вызова дефолтных, + еще один вызов дефолтного (для результата оп+) и мув коструктор.
Что за хуйня? Почему так? Где прочитать как и когда вызываются конструкторы, четкие правила, когда и как вызываются конструкторы?
>>828653
#309 #828634
Если у меня есть объект функтор
struct Functor
{
void operator()(int& i)
{
i = 0;
}
};

int main() {

while(1)
{
Functor f;
int j = 1;

f(j);
}
return 0;
}

будет ли он каждый выделять память при создании в цикле или будет просто опущено создание объекта и напрямую вызвана функция ()?
>>828664
#310 #828653
>>828612
Это что, платиновый пост? Уже в каждом втором треде всплывает вопрос про copy elision. Неужели так сложно открыть стандарт и прочитать пункт 12.8/31?
>>828695
#311 #828664
>>828634
В рамках описанной стандартом C++-машины каждый собственный (не являющийся объектом базового класса) объект занимает не менее одного байта в memory storage. Таким образом, у твоего функтора внутри цикла будет выделена память (и он будет иметь адрес).

Стандарт не оперирует для автоматических (стековых) объектов понятием "выделение памяти", можно говорить только о времени жизни объекта. С точки зрения времени жизни, в каждой итерации цикла объект будет новым (т.е., например, использовать объект предыдущей итерации по указателю - undefined behavior). С точки зрения конструкторов/деструкторов - при их наличии они обязаны вызваться заново в каждой итерации, но у тебя они дефолтные, без какого-либо эффекта, поэтому это несущественно.

Но это в рамках формальной модели. Для реализаций же стандарт имеет as if rule. Оно разрешает реализации делать все что угодно, если наблюдаемое поведение (грубо говоря, ввод и вывод программы) соответствует формализованному. Поэтому, например, в твоем случае все эти функторы могут находиться в одной области памяти, или вообще не иметь выделенной памяти, пока ты явно не начнешь использовать в них члены-данные, или даже весь код может удалиться, раз программа ничего не выводит. Фактически большинство компиляторов сделает ту или иную оптимизацию, в зависимости от настроек компиляции.
>>828688
#312 #828688
>>828664
Спасибо за развернутый ответ. Я смотрел диссассемблер и действительно

>эти функторы могут находиться в одной области памяти, или вообще не иметь выделенной памяти, пока ты явно не начнешь использовать в них члены-данные



Пустой функтор не вызывает конструктора по умолчанию и ничего не делает а просто вызывается функция по статическому адрессу, а как только я добавил в структуру переменные, то конструктор функтора стал вызываться и все сопутствующие ему выделения памяти.
#313 #828695
>>828653
Спасибо брат, ты мне помог!
#314 #828766
Так у меня вопрос. Читаю concurrency in action и там говорится что std::async может сама решать выполнять тред параллельно или нет, т.е библиотека поидее должна создавать ровно столько потоков сколько доступно на железе, например на моем i7 доступно аппаратных потоков, но когда я рекурсивно запускаю std::async(f) то у меня создается дохуяища потоков (2к+) которые просто висят. При этом если я юзаю Intel TBB
parallel_invoke в той же рекурсии то все работает нормально и создается ровно 8 потоков, независимо от глубины рукурсии.

Вот и вопрос как сделать с std::async, std::future тоже самое?
>>828808>>829162
#315 #828790
Двач, хочу немного пошалить.

Тезис: есть лабы, которые нужно сделать (а-ля имплементить бинарное дерево или что-то подобное, не суть). На сях, разумеется. Код для проверки будем отправлять своему ТА (Teacher Assistant) c указанием где и как его компилить и запускать, что он, в последствие, и будет делать (компиляция предполагается через g++). В общем, я хочу немного похакерствовать. Что-нибудь достаточно простое, например просто встроить в код доп. функцию, которая соберёт некоторое количество инфы о его системе (какая у него система, линь, винда или макось - я не знаю) и отправит мне на сервер. Ничего серьёзного и сильно подлого. Так вот, какую инфу о системе можно собрать силами С++ (без режима рута, разумеется). Или скажите, хотя бы, как в плюсах выполнить произвольный код в консоли из программы (а-ля shell_exec в php)?
>>828810>>828883
#316 #828808
>>828766

>std::async


Просто не пользуйся этим.
#317 #828810
>>828790

> отправит мне на сервер


Интересно, как ты собрался это делать.
>>828812
#318 #828812
>>828810
А в чём здесь, собсно, проблема?
>>828818
#319 #828818
>>828812
В том, что твой код будет работать в песочнице, из которой ты не откроешь никакого соединения и даже файла.
#320 #828821
>>828818
Лол, с чего ты взял?
#321 #828840
Анон, как заксорить всю строку, чтобы залить программу с ней на вирустотал? https://ideone.com/rmveEz

Похоже, что некоторые байты этой строки рассматриваются как эскейп-последовательности.
>>828847
#322 #828847
>>828840
Заменить единственный обратный слеш на двойной (\\).
>>828850
#323 #828850
>>828847
Не помогает. Последовательность после ксора почти в два раза короче исходной.

https://ideone.com/UHFtNW
>>828869
#324 #828863
>>828818
Лол, ты ебанутый?
#325 #828869
>>828850
Представь себе, существуют непечатаемые символы.
#326 #828883
>>828790
Если учитель продвинутый, то он, конечно использует песочницу, как говорит >>828818-кун. Так сделано в том же ejudge, например. Но часто препод бывает алтимейт совком, который вообще ничего не слышал про ИБ, и запустит он твой код на какой-нибудь хрюше из-под DevCpp. Так что попробовать можно.

За никсы не скажу, но на венде все предельно просто. Весь подозрительный код пихаешь в дллку, которую называешь наподобие msvc311.dll, гришь, что это рантайм от твоего компилятора. В коде дергаешь функцию оттуда с каким-нибудь неподозрительным названием, которая будет делать всю работу. Гуглишь доки к winapi, через его вызовы реализуешь скачивание (со своего или официального сервера) nir commander в какую-нибудь глубокую папку внутри appdata. Записываешь в строку прямо внутри dll текст батника с нужными командами nircmd (там их дохуя - можно грабить пароли, узнать полную инфу о системе, выдвинуть дисковод etc), который потом выводишь в .bat внутри той же папки. Запускаешь батник на исполнение в новом процессе, все. Отправить результаты назад можно прямо из батника, в nircmd есть для этого команды.
>>829007
#327 #828908
Интересно. Удалось снизить детект антивирусов с 11 до 2. Кспермский не кукарекнул, зато мой кодес задетектили два каких-то ноунейм бича Инвинсиа и Киху.

https://ideone.com/pPRUJ0

И странно то, что несмотря на расшифровку эйкар-последовательности без применения антиэмуляции, на мою расшифровывающую программу среагировали не все антивирусы. Но на текстовик с эйкар среагировали все. С антиэмуляцией почти никто не среагировал.
#328 #828917
Алсо, на вирустотале могут забанить подсеть за тестирование малвари?
#329 #828971
Господа, как лучше писать криптор: по принципу упаковщика, который криптует секцию кода, дописывает декриптор в конец и передает ему управление при запуске, или по принципу джойнера, к которому прицепляется зашифрованный экзешник, а в лоадере джойнера используется антиэмуляция?

Думаю над второй реализацией. Лоадер расшифровывает прицепленный экзешник и запускает. Как реагирует антивирус на этот запуск? Сначала запускает экзешник на своей виртуальной машине и проверяет сигнатуры?
#330 #828999
>>825854
>>825854
Говно без задач и с настройками через жопу из коробки
#331 #829007
>>828883
Препод не сказать, что не продвинутый, но по поводу ИБ париться не будет почти точно (молодой парень преподаёт). Вообще я как-то забыл посмотреть на паре какой у него ноут, но есть не маленькая вероятность, что МакОС ибо у нас вообще у многих преподов маки.
Ну и у него точно не древняя винда. Энивей, спасибо за ответ.
>>829049
#332 #829049
>>829007
Древняя венда отличается от недревней только тем, что в новой ты сможешь работать только в рамках прав запущенного процесса, без рута, даже если он работает под рутом. Но считать, скажем, содержимое пользовательской папки ты сможешь в любом случае, а все самое интересное как раз там.

Для других осей все примерно так же, даже еще проще из-за практически гарантированного отсутствия антивируса, который может сагриться на подобное поведение. Легче всего сделать отдельные функции для каждой системы (Windows и POSIX-совместимых), и автоматически выбирать между ними при компиляции через #ifdef и макрос OS_WINDOWS (который есть только в венде).
>>829057
#333 #829057
>>829049

>Легче всего сделать отдельные функции для каждой системы (Windows и POSIX-совместимых), и автоматически выбирать между ними при компиляции через #ifdef и макрос OS_WINDOWS



Да, я примерно об этом и думал.
#334 #829069
>>822728
А зачем им брать дорогого крестовика, когда могут взять более дешевого быдлокодера?
#335 #829162
>>828766

>Вот и вопрос как сделать с std::async, std::future тоже самое?


Явный планировщик с пулом потоков, явный запуск задач на планировщике.
#336 #829505
С какими флагами надо компилировать на clang чтоб была максимальная совместимость с gnu gcc? То есть чтоб не было отсутвующих хедеров, разных type castov и т.п, чтоб можно было писать под clang и не заморачиваясь прям из коробочки билдить на gcc?
А то я столкнулся с такой проблемой написав проект на цланге, который не компилируется без костылей на гцц...
>>829541
#337 #829517
Анон, почему этот код крашится? Что не так с освобождением памяти? Ведь нулевой указатель можно освободить.

https://ideone.com/TY2Iic
#338 #829527
>>829517

>Ведь нулевой указатель можно освободить.



Ноуп
>>829530
#339 #829530
>>829527
Йеп.
#340 #829531
>>829517
Ты два раза освобождаешь. В первый раз вручную, второй раз освобождает shared_ptr
>>829544
#341 #829541
>>829505
Я думаю, если не использовать блоки, то они полностью совместимы.

Недавно столкнулся с тем, что то, что компилируется шлангом не компилировалось g++. Оказалось, это известный language issue и шланг с g++ ведут себя по-разному, т.к. стандарт невнятно оговаривает поведение. Пришлось чуть переписать одну строку (с инициализации с помощью = на brace initialization) чтобы стало компилироваться и там, и там.
>>829670
#342 #829544
>>829517
>>829531
Предвидя вопрос "как отобрать указатель у shared_ptr?": никак.
#343 #829619
Как вывести определенное количество знаков после запятой, если перед запятой оно может быть любым? setprecision в этом случае не помогает.
>>829632
#344 #829632
>>829619
Сам спросил - сам отвечу.
cout << fixed;
cout.precision(n);
#345 #829637
>>829593
Не планируй, пиши браузер прямо сейчас - потом не напишешь, останешься макакой на всю жизнь.
Если напишешь наскоряк хрень с асинхронной тред-базед продгрузкой страниц и поддержкой расширений, тебя возьмут куда угодно, даже если рендерятся нормально только половина страниц.
Дерзай.
#346 #829670
>>829541

>известный language issue


Можно ссылочку?
>>829680
#347 #829680
>>829670
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#325 промотай в конец, до Notes from the August, 2011 meeting. На этот случай с инициализацией мембера шаблоном я наткнулся.
>>829882
#348 #829737
Есть куча классов, все находятся в одном .h-файле. Имя каждого класса начинается с нижнего подчеркивания.(например: _classname). После импелментации каждого класса идет тайпдеф: "typedef _classname classname;". В заголовочного файла идет подключение .inl-файла, в нем реализация этих классов. В чем фейл: Несмотря на тайпдефы, юзание classname в последующих классах не дается. intellisense тупо не распознает тип(classname). Раз тип начинается с нижнего_подчеркивания, а последующий симол в нижнем регистре, значит, класс по-умолчаню будет находится в глобальном неймспейсе? Только влияет ли оно? Пробовал переименовать classname в рандомный набор букв, ну и подставить где надо соответственно. И ошибок небыло. Что за хуйня!
>>829743
#349 #829743
>>829737

> Раз тип начинается с нижнего_подчеркивания, а последующий симол в нижнем регистре, значит, класс по-умолчаню будет находится в глобальном неймспейсе?


Слышал звон, да нихуя не понял.
>>829759
sage #351 #829762
>>829759
Я тебе про это и говорю, что ты нихуя не понял.

Такие имена зарезервированы для определённых мест. Но это не значит, что если ты так назовёшь, то твои классы в эти места попадут.
>>829774
#352 #829774
>>829762
Спасибо за инфу. А что насчет конкретно моей траблы?
SAGE #353 #829869
Гутен таг гоям.

Почему если определён move-constructor,
то синтезированный copy-constructor будет deleted?
>>829881
#354 #829881
>>829869
Потому что rule of five. Считается, что если ты кастомизируешь хотя бы одну из пяти операций (копирование, перемещение, конструктор копирования, конструктор перемещения, деструктор), то с классом нельзя работать дефолтно (например, из-за членов-дескрипторов или еще чего-то), поэтому оставшиеся операции удаляются, чтобы ты не мог выстрелить себе в ногу.
>>829917
#355 #829882
>>829680
Спасибо, няша.
#356 #829916
Я не вижу логики здесь. Почему бы тогда просто не выдавать ошибку компиляции, если был определен только часть из этого набора?
>>829923
#357 #829917
>>829881
829916
#358 #829923
>>829916
А что, тебе не выдаётся ошибка компиляции, когда ты пытаешься воспользоваться удалёнными методами?
>>829937
26 Кб, 580x386
Прата #359 #829936
поясните,плиз, почему в первом шаблоне аргумент - адрес (&a),а во втором - указатель (*a)? И как не запутаться?
http://ideone.com/AzHnfm
>>829940
#360 #829937
>>829923
Раньше выдавалась, но я обновился до Windows 10, теперь всё нормально
#361 #829940
>>829936

>адрес


>(&a)



Кик
Зато понаписал шаблонов и оверлоадингов
71 Кб, 701x291
#362 #829970
Всё, с меня хватит.
Идите на хер с вашим программированием.
неосилятор
#363 #829974
>>829970
Слабовато для крестотреда, местных даже http://ideone.com/uTBv1S не смущает.
#364 #830040
>>829970
Сейчас бы метод класса вне его видимости не определить
#365 #830079
Почему в шапке не указаны QtCreator и KDevelop, студия не нужна а под ней какая-то параша указана.
>>830085
#366 #830085
>>830079
Потому что в шапке работающие IDE, а не говноподелия.
>>830102
#367 #830102
>>830085

>говноподелия


Причём здесь Windows? Ещё Code::Blocks кстати неплох, но в первых автодополнение и организация проектов лучше. Студия зашквар, под MSVC нужно переделывать все исходники и в нормальные проекты такое не пропустят.
>>830104>>830427
#368 #830104
>>830102
Нахуя тебе переделывать исходники, лол? Нормальные проекты пишутся нормальными командами, с пачкой студий и TFS в комплекте. Швадобные нищепроекты пишутся на гнутых тулчейнах. Пересечения у этих экосистем практически нет, просто не нужно подменять понятия.
>>830169
#369 #830125
>>829970
Из какой книги скрин?
>>830416
#370 #830169
>>830104
Как там в нулевых?
>>830439
#371 #830416
>>830125
"С++ без страха".
#372 #830427
>>830102
Я нюфаня, но мне code blocks тоже очень понравилась, правда сравнить могу только с code lite.
Кстати да, а почему её в шапке нет?
#373 #830439
>>830169
Заебись, купил с последней зарплаты телефон с сенсорным экраном.
#374 #830467
>>829974
Что это за пиздец?
>>830559
#375 #830559
>>830467
Это корректный в C++14 код.
>>830663
#376 #830663
>>830559
Ахуеть, на сколько же надо боятся легасиговна (причем такого, которое рефакторится за 10 минут в очень большом проекте 1 грепом) чтобы не зарезервировать ключевое слово языка...

Я подобные хуйню до этого видел только на хабре в срамах про добавление вывода типов в жяву: там разработчики реально трясутся что если добавить кейворд var в язык это доху всего сломает.
#377 #830697
>>829974
Блядь, где об этом говне читать?
>>830859
#378 #830823
>>829974
Поясните что означает эта конструкция: final: final final {final};
Интересует именно херня с двоеточием
>>830859
#379 #830859
>>830697
Я придумал эту хуйню, когда прочитал в стандарте про идентификаторы со специальным значением.
>>830823
Помеченная меткой final локальная переменная класса final с именем final, инициализированная сама собой. using final = final нужен для большего устрашения, чтобы показать, что в контексте инициализатора имя инициализируемой переменной перекрывает имя класса, если явно не делать elaborated объявление.
>>830862>>830972
#380 #830862
>>830859
http://ideone.com/fsq6MA
Полная дрянь, яннп. Я одиннадцатый стандарт то не докурил, а тут ещё этот пиздец. Можно на собеседованиях показывать, лол.
Понимаешь, нахуя такой вывод происходит?
>>830869
#381 #830869
>>830862
Ну очевидно же. В деструкторе создается локальная переменная типа, который удаляется, вызывается ее деструктор, в котором создается локальная переменная... Получается банальное переполнение стека. Самый внешний файл ты создаешь своим конструктором, с i==0, выводится 0. Для всех остальных (которые создаются в деструкторах) юзается конструктор копирования из неинициализированного создаваемого объекта, поэтому в i мусор.
>>830871
#382 #830871
>>830869

>самый внешний объект


Очевидный самофикс.
#383 #830972
>>830859
А, бля, просто метка. Я уж было испугался, что это какая-то новая неведомая дичь
#384 #831017
Шел 2016 год, а лалки все не знали про дамп ast у clang'а
koshmarik uzhasny #385 #831050
Сап крестоносцы, гутен морган, кун 32 лвл, холост, слегка бородат. Имею вопрос по геолокации а преыстория вот в чем:
уже полгода как вкатываюсь в кресты, собрал уже библиотеку всяких Мейерсов, Страуструпов, Сидхартхи, Павловских итд. подписался и просмотрел кучу лекций на ютубе по плюсам и алгоритмам как от доморощеных хацкеров так и от лекториума. прошел пару курсов на степике и получил сертификаты. теперь суть вопроса- где в сети можно попрактиковаться в сабже? где какие курсы есть или проекы для участия начинающих имеющих цель прокачать скилы? В сторону детородных
органов прошу не посылать - сам с них пишу, другие яп прошу не предлагать - не интересуют
>>831339
#386 #831312
Посоветуйте софт, для обнаружения cache miss-ов.
>>831322
#388 #831339
>>831050
Посмотри всякие попенсорц проекты на гитхабе, найди там себе что-нибудь интересное и вкатывайся туда.
#389 #831679
В указателях хранятся какие-то циферки. Что они значат? Если я выведу указатель на функцию на экран, а потом введу его ручками в другую программу, то я смогу запустить эту функцию из другой программы? Проверил. Ошибка сегментации. Почему?
sage #390 #831682
>>831679
Это платиновый пост?
#391 #831752
>>831679
Читай про виртуализацию памяти. Если вкратце - каждый процесс думает, что у него есть вся доступная память (и даже больше), а других процессов в системе нет. Поэтому указатель в новом процессе значит совсем другое, чем в старом (с большой вероятностью, это быдет просто нераспределенная память, поэтому ошибка сегментации).
>>831757
#392 #831757
>>831752

> Читай про виртуализацию памяти


Чёт сложно. А где список всех этих страниц хранится? понял что в таблице страниц но что этоКак ос узнаёт какая память занята и кем? Куда она это пишет? Кстати если процессору якобы доступна вся память, то почему числа в указателях идут не от нуля и так сильно отличаются друг от друга?википедии наверно недостоточно. Что ещё почитать?
>>831952>>831961
#393 #831885
В ебаной студии 2015 комьюнити возникло сообщение Update your trial license. Какого хуя? Я же бесплатную студию качал.

Ставил на нее английский языковой пак, если что.
>>833104>>833223
#394 #831952
>>831679
>>831757
Съеби в ньюфаг-тред.
#395 #831956
>>821402 (OP)
Ньюфаня вкатывается в тред. Изучаю кресты, хотя до этого ни один язык не изучал. Мне нравится язык, но для меня он очень громоздкий совсем чуть-чуть. Планирую написать какую-нибудь серьёзную вещь, может что-то типа большого алгебраического калькулятора. Язык начал изучать месяц назад, плачу за курсы 2к рублей в месяц, их ведёт тетка, которая окончила тульский мехмат. На занятиях нам дают простенькие, на первый взгляд, задачки. Компилятор называется "Bloodshed Dev-C++". Как думаешь, анон, стоит ли писать на этом компиляторе? В данный момент только скачал изучаю книги из шапки. Может бородатые опытные дяденьки чего-нибудь посоветуют? И вообще жду от тебя советов в стиле: "вот так делай!" или "подучись немного!".
>>831964>>832386
#396 #831961
>>831757
Таненбаум, "Операционные системы". Вообще, это в любом курсе по операционным системам есть.

>но что это


В современных процессорах есть аппаратно реализованная таблица, и процессор, опять же автоматически, при встрече команды с адресом 0x111222 ищет 111 (которое общее у всех адресов в пределах страницы) в левом столбце этой таблицы и заменяет на 333, которое находится в соответствующей ячейке правого столбца. Получается уже физический адрес 0x333222, который есть номер ячейки на плате, например. Это все делается специальной частью процессора одновременно с остальными вычислениями, поэтому дополнительные такты не требуются. На самом деле это очень упрощенная схема, там еще есть нюансы по поводу того, как наполняется и изменяется эта таблица, но в целом все так вот просто.

>Как ос узнаёт какая память занята и кем?


Никак, вообще говоря. Вот смотри, в однопроцессорной системе, если запущено несколько программ, они выполняются попеременно, кусочками. Например, программа TvoyaMamka.exe выполнялась 100мс. Каждые 10мс процессор автоматически получал прерывание от системного таймера и передавал управление ОС. ОС смотрела счетчики и говорила "не, еще рано". А спустя 100мс планировщик ОС решает (в соответствии с выбранным алгоритмом): "так, чота TvoyaMamka.exe долго выполняется, тут батя тоже хочет". Схороняет мамкину таблицу страниц в памяти, а назад загружает таблицу, которая принадлежит процессу TvoyBatya.exe. Эти таблицы хранятся вместе с process id, дескрипторами открытых процессом файлов и другой инфой, которая своя у каждого процесса. Вот, таблица перезагрузилась, и теперь те же адреса в командах (если даже они были одинаковыми у бати и мамки) будут отображаться на совсем другую область памяти, где лежат данные и код бати. После этого планировщик опять засекает время, управление передается коду бати, и все повторяется. Нюансов планирования и хранения много, а суть простая, опять же.

> почему числа в указателях идут не от нуля и так сильно отличаются друг от друга?


Даже виртуальные адреса (0x111222), которые имеются в программе, не задаются программистом, а определяются, фактически, ОС (диспетчером кучи либо загрузчиком). Соответственно, это уже вопрос логики ОС, однозначный ответ тут я дать не могу, ибо не профессиональный байтоеб. Может, она стремится по возможности делать соответствие виртуальных и физических адресов один к одному, чтобы не засорять таблицу. Программе-то все равно, с нуля адреса или нет.
#396 #831961
>>831757
Таненбаум, "Операционные системы". Вообще, это в любом курсе по операционным системам есть.

>но что это


В современных процессорах есть аппаратно реализованная таблица, и процессор, опять же автоматически, при встрече команды с адресом 0x111222 ищет 111 (которое общее у всех адресов в пределах страницы) в левом столбце этой таблицы и заменяет на 333, которое находится в соответствующей ячейке правого столбца. Получается уже физический адрес 0x333222, который есть номер ячейки на плате, например. Это все делается специальной частью процессора одновременно с остальными вычислениями, поэтому дополнительные такты не требуются. На самом деле это очень упрощенная схема, там еще есть нюансы по поводу того, как наполняется и изменяется эта таблица, но в целом все так вот просто.

>Как ос узнаёт какая память занята и кем?


Никак, вообще говоря. Вот смотри, в однопроцессорной системе, если запущено несколько программ, они выполняются попеременно, кусочками. Например, программа TvoyaMamka.exe выполнялась 100мс. Каждые 10мс процессор автоматически получал прерывание от системного таймера и передавал управление ОС. ОС смотрела счетчики и говорила "не, еще рано". А спустя 100мс планировщик ОС решает (в соответствии с выбранным алгоритмом): "так, чота TvoyaMamka.exe долго выполняется, тут батя тоже хочет". Схороняет мамкину таблицу страниц в памяти, а назад загружает таблицу, которая принадлежит процессу TvoyBatya.exe. Эти таблицы хранятся вместе с process id, дескрипторами открытых процессом файлов и другой инфой, которая своя у каждого процесса. Вот, таблица перезагрузилась, и теперь те же адреса в командах (если даже они были одинаковыми у бати и мамки) будут отображаться на совсем другую область памяти, где лежат данные и код бати. После этого планировщик опять засекает время, управление передается коду бати, и все повторяется. Нюансов планирования и хранения много, а суть простая, опять же.

> почему числа в указателях идут не от нуля и так сильно отличаются друг от друга?


Даже виртуальные адреса (0x111222), которые имеются в программе, не задаются программистом, а определяются, фактически, ОС (диспетчером кучи либо загрузчиком). Соответственно, это уже вопрос логики ОС, однозначный ответ тут я дать не могу, ибо не профессиональный байтоеб. Может, она стремится по возможности делать соответствие виртуальных и физических адресов один к одному, чтобы не засорять таблицу. Программе-то все равно, с нуля адреса или нет.
>>832099
#397 #831964
>>831956

>какую-нибудь серьёзную вещь


>что-то типа большого алгебраического калькулятора


Это примерно уровень laba2.cpp. laba1.cpp это класс матриц, laba3.cpp - интерпретатор паскаля.
>>831967>>832203
#398 #831967
>>831964
Чому такие термины сложные? Я только-только начал. Объясни на пальцах, если не сложно
>>832330
#399 #832099
>>831961
Спасибо
#400 #832203
>>831964
C лабой 3 напиздел, а так всё так
>>832325
#401 #832325
>>832203
На ВМК было именно так, за другие вузы не скажу, но вряд ли сильно отличается.
>>833225
#402 #832330
>>831967
Матрица это прямоугольная таблица с числами, как шахматная доска типа. Интерпретатор паскаля - программа, в которую загоняешь текст программы на паскале, и она ее выполняет. Как PascalABC, только самописный.
>>832368
#403 #832368
>>832330
Спасибо, няша
#404 #832386
Я вот этот кун >>831956
Прочитал сегодня пару глав первой книги из шапки. И знаете? Мне захотелось стать программистом! Спасибо разработчикам этого раздела, спасибо Страуструпу за книгу и за язык, спасибо добрым анонам и отдельная благодарность пауку Аркадию.
>>832767
35 Кб, 600x596
#405 #832767
>>832386
Про переводчиков все как всегда забыли.
>>833425>>833533
#406 #833104
>>831885

>license


Бамп.
#407 #833154
Сап, программач. У меня встал вопрос: как составить план обучения? Под конец лета начал читать книгу Страуступа по c++ (Принципы и практика использования C++). Прочитал ее до 7 главы. Очень понравился с++ и хотелось бы учиться и работать в этом направлении. Учусь я на 3 курсе колледжа, который находит под управлением гос. университета (город 200 тыс. человек). Сейчас с началом обучения, нам сказали, что будут преподавать c++, ооп в нем же, бд и много чего еще. Хотелось бы знать о тонкостях языка и прочих мелких важных деталях, но я не уверен, что в колледже нам его дадут в том объеме, в котором я хочу его изучать. В добавок из-за большого количества студентов мою группу поставили во 2-ую смену, а это учеба с двух до восьми. Собственно, что делать? Стоит ли бросать читать книгу и учить только то, что дают или продолжить читать и книгу, но как тогда это совмещать?
>>833535
#408 #833174
стандарт с++16 будет?
>>833178
#409 #833178
#410 #833192
Хотеть с++32.
Как же я буду угарать над толщиной священого писания крестоебов и попрекать их ересью за незнание рандомных UB в их параше. А там и до религии недалеко.
>>833310
#411 #833223
>>831885
Мб зарегать свою установку надо?
#412 #833225
>>832325
Привет, ВМК-кун. Какого кода выпуск?
>>833303
#413 #833303
>>833225
2018. Много тут вмкшников, кстати, периодически всплывают в тредах. Вроде и оп был наш человек
>>833356
#414 #833310
>>833192
Посоны, а давайте запилим в этом итт треде секту? Можно привлекать ньюфагов, охуенно же.

В начале была декларация. И была декларация в программе. И была декларация программой...
...
И сказал Он: "Да будут байтоебы исторгнуты из обители мономорфных вычислений". И создал Он шаблоны, и создали шаблоны шаблоны шаблонов. И были перечислены Его создания, и создания их, и создания тех созданий в Священном писании. И имя ему было Стандарт.
...
И сказал Его пророк: "Покайтесь, братья, ибо грядет Борщ, и грядут чистые нечестивцы. И с приходом нечестивцев неосиляторы будут лишены Его библиотеки, и оставит Он одни только S-выражения, и будут у несчастных не векторы, а в каждой паре по Карри".
#415 #833356
>>833303
Ясно
Удачи тебе, няша
2014-кун
#416 #833389
Дорогая редакция, я сейчас ёбнусь нахуй.
В обеих IDE которые я использую (code::blocks и codelite) перестали работать функции. Смотрю в дебаггер, он их просто проезжает без перехода в тело фунции. Всё правильно задекларировано. Старые функции и классы с функциями которые раньше работали тоже перестали работать.
Что за хуйня? Компилятор сломался? Линукс поехал?
Я ньюфаг, но вроде ничего не ломал.
>>833417
#417 #833417
>>833389
Нахуя тебе эта ШВАБОДНАЯ параша?
Используй _НОРМАЛЬНУЮ_ IDE. В никсах это QtCreator или CLion. И вообще нахуй никсы, если ты ньюфаг, накати божественную студию и не еби носорога
>>833426>>833448
#418 #833425
>>832767
Все в оригинале читают.
На самом деле нет.
#419 #833426
>>833417
Навернул qt, всё заработало. Спасибо добрый человек.
#420 #833448
>>833417

> накати божественную студию и не еби носорога


Пиздец проиграл
>>833547
389 Кб, 1920x1080
#421 #833533
>>832767
Переводчикам тоже спасибо! держи картинку, если расстроил
#422 #833535
>>833154
В начале книги Страуступ говорит, что, мол, в свободное время изучайте. Но организовывать свой распорядок будешь сам, не маленький.
#423 #833547
>>833448
Проигрывай сколько угодно над стандартом индустрии. Только не забывай регулярно отмечаться в "МЫ ВАМ ПЕРЕЗВОНИМ"-треде.
>>833752
18 Кб, 925x349
#424 #833625
Господа, помогите мне разобраться, почему вот этот код https://ideone.com/9cwhHP вычисляет правильные чек-суммы для строк, а код на пикче выводит оно и то же число MessageBox'ом?
>>833626
#425 #833626
>>833625
Потому что ты пихаешь buf в crc вместо filename?
>>833627
sage #426 #833627
>>833626
Блять, точно. А я смотрел на этот код и не мог понять, что мне тут глаза мозолит.

Алсо,

>p = (uint8_t *)buf;


Из-за системы типов нельзя использовать без каста?
15 Кб, 545x316
#427 #833716
Почему рандомный ключ печатается на идеоне,но не печатается в консоли?

https://ideone.com/ETSeKp
>>833731>>833774
#428 #833731
>>833716
Не знаю, но сходу вижу, что вот эта строка:

> else xtea_key = 0;


никогда не выполняется.
>>833738
#429 #833738
>>833731
Но в принципе ключ может быть меньшей длины и размер массива может быть больше длины ключа, тогда понадобится эта ветка.
>>833744
#430 #833744
>>833738
Я говорю, что у тебя off-by-one ошибка.
https://ideone.com/tXbhTm
>>833774
#431 #833752
>>833547
Бытиё стандартом индустрии не мешает ей быть полнейшим говном
>>833928
#432 #833774
>>833744
>>833716
У меня какая-то хуита. Вот так объявлены переменные в хедере:
https://ideone.com/8DnoDp

Вот так написана функция main:
https://ideone.com/36m1Rz

Почему после выполнения процедуры генерации ключа в массиве xtea_key содержится просто ноль, если во время ее выполнения выводятся элементы этого массива?
>>833784
#433 #833784
>>833774
http://stackoverflow.com/a/8317056

в хидере:
extern char xtea_key[XTEA_KEY_SIZE];

в файле где gen_xtea_key:
char xtea_key[XTEA_KEY_SIZE];
#434 #833928
>>833752
В чем заключается ее говнистость, гуру ты наш?
Найди мне IDE удобнее, чем студия с решарпером С++?
#435 #834151
>>833928

> В чем заключается ее говнистость


В том, что она работает только на виндовс
>>834174
#436 #834174
>>834151

>я засунул банковскую карту в таксофон на деревенской почте, и он ее зажевал, маааам! банкоматы говно!

#437 #834176
>>833928
Весит дохуя
Системных ресурсов жрет дохуя
Компилятор говно
>>834213
#438 #834213
>>834176
Первые два пункта - хуйня на постном масле. Ресурсов и памяти сейчас как жопой жуй, заплатить пару гигабайт за удобство никто не против.
Про компилятор отчасти согласен. Но сейчас уже встроенный clang практически прикручен, так что очень скоро аргументов против не останется.
>>834306>>834445
#439 #834306
>>834213

>Ресурсов и памяти сейчас как жопой жуй


На десктопе. 11'' планшетик с клавой и 32Гб винтом или хромогобук сейчас обычная вещь. Студию туда не поставишь, а криэйтор встает замечательно.
>>834366>>834393
#440 #834366
>>834306
А, ну так-то да. Но у них и задачи разные. Студия это охуенный комбайн, который ставится на рабочий десктоп и херачит гигантские проекты своим мотовилом. А на планшетах/телефонах/ультрабуках, которые все время таскаешь с собой, все равно особо не поработаешь, банально собираться будет весь день. Поэтому там ставят что-нибудь легкое, чисто чтобы проверять короткие куски кода, типа Code::Blocks, или вообще пишут в текстовом редакторе с плагинами.
>>834392>>834400
#441 #834392
>>834366

>это охуенный комбайн


кухонный. даже на небольших проектах твоя студия отсасывает у эклипса, тормознутое гиканское уебище нинужно если конечно ты не хипстер или пидор.
>>834415
#442 #834393
>>834306

>11'' планшетик с клавой и 32Гб


скока часов вижуалпараша у тебя загружается?
Dmitry #443 #834400
>>834366
Манька, студия для микропроэктов.
Для серьезных задач есть Make/Cmake
>>834415
Dmitry #444 #834402
#445 #834407
>>833928

>решарпером


какой нахуй решайпер в спп? ваще школопидоры ебанулись
>>834416
Dmitry #446 #834413
Антохи поясните за bitwise операторы когда их реально удобно применять? Часто это делаете?
>>834418>>834421
#447 #834415
>>834392

>отсасывает у эклипса


>отсасывает


>у эклипса


>который ломается на исходниках буста


Ну это вообще пушка.
>>834400
Так с cmake и используют. Автодополнение тебе святой дух сделает без IDE?
>>834428>>834441
#448 #834416
>>834407
Там есть решарпер для крестов, но это говно мамонта же. В новых студиях (после 2010) из коробки есть почти все его фичи.
>>834445
#449 #834418
>>834413
!~x - быстрое сравнение с нулем.
Сдвиги для умножения/деления на степени двойки.
Вообще, читай Уоррена-мл., "Алгоритмические трюки до программистов", там дохуя такого.
>>834420>>834421
#450 #834420
>>834418

>~x


Быстрофикс.
#451 #834421
>>834413 >>834418
+ Сравнение по битовой маске
Dmitry #452 #834428
>>834415
Автодополнение в Emacs есть
sage #453 #834441
>>834415

>>который ломается на исходниках буста


Давай кейс, педрила. Ломается у него там, блядь. Даже если ты и нашел баг в парсере, это никак не сказывается на повседневном использовании - я уже 3 год на эклипсе сижу и все там заебись, так что не пизди.

Алсо, твоя говностудия может спокойно закрешится во время установки брейкпоинта в каком-нибудь хедере. Про охуенный встроенный дебагер, который в 2016 не умеет в function call, я вообще молчу.
Про необходимость в платных помидорах или решарперах, когда в еклипсе все идет из коробки, я тоже промолчу.

Про анальный формат проектов студии, закрытость дебажных символов и вообще всю сопутствующую инфраструктуру (начиная от безумно "логичных" обратных слешей в пути и заканчивая отсутствием валгринда) я даже не буду заикаться - ведь ты уже обосрался пару предложений назад.
>>834444>>834447
Dmitry #454 #834444
>>834441
Шо то хуйня шо это хуйня.
sage #455 #834445
>>834416

>В новых студиях (после 2010) из коробки есть почти все его фичи.


Контактирую с 2013 студией по работе. Такое же говно, как и 2010. Можешь начинать свои маневры про 15 студию.

>>834213

>так что очень скоро аргументов против не останется


А можно начать с аргументов "за"? В 2010 студии был один единственный аргумент - более стабильный дебагер, чем gdb. Но мало того, что на линуксах завезли lldb, так и gdb сейчас постабильнее. Не говоря о том, что на OS X платформе все и так работало так же стабильно, как и в VS, так еще вагон плюшек в комплекте шел.
>>834450
#456 #834447
>>834441
Тредов десять назад было, посмотри там в архивах.

>ведь ты уже обосрался пару предложений назад


Ну ты меня просто растоптал, лол. Придется теперь ставить Eclipse, или еще какое гнутое дерьмо, чтобы все было как у людей.
>>834448
#457 #834448
>>834447
пытаешься оправдать покупку вижулапараши кокорпорейт эдишен за пять тысяч долларов? или своровал? тогда твой хэлоуворд нелегитимный, кек
>>834451
#458 #834450
>>834445

>Можешь начинать свои маневры про 15 студию


Не начну, 15 не сильно отличается, по большому счету.

>А можно начать с аргументов "за"?


Работающие из коробки автодополнение и визуальный дебаггер. IntelliTrace. Море плагинов, многие из которых не имеют аналогов. Удобная интеграция с мелкомягкими сервисами хотя это не всем надо. Стабильность ни одного краша за последние несколько лет.
>>834457
#459 #834451
>>834448
Зачем своровал? Контора оплачивает софт, как и в любом цивилизованном месте.
>>834453>>834456
Dmitry #460 #834453
>>834451
Хорошо когда софт контролирует тебя а не наоборот?
>>834463
#461 #834456
>>834451

> Контора оплачивает софт


а, я знаю такие эффективные конторы, макаке заплатить лишние 500 рублей премии хуй, а вот какой нибудь ненужной хуиты накупить всегда пожалуйста. лол
>>834459>>834465
#462 #834457
>>834450

>Работающие из коробки автодополнение и визуальный дебаггер. IntelliTrace


IntelliTrace - хипсторское говно, смысла не имеет. Все остальное есть в любой ide промышленного уровня.

>Море плагинов, многие из которых не имеют аналогов


Море плагинов везде есть, про неимеющие аналогов - примеры в студию.

>Стабильность ни одного краша за последние несколько лет


Словил 3 разных краша за 7 дней работы.

А вообще давай-ка начнем с размера проекта, на котором ты работаешь. А то понабежит мудаков с проектами на 2МБ, которые рассказывают как у них стабильно и быстро работает студия.
>>834474
#463 #834459
>>834456
все просто - макака уволится и лицензия останется у конторы, а вот премию платить - она и так будет, как цена этой лицензии, так и потом макака почувствует вкус денег и в следующем месяце тоже премию попросит.
#464 #834463
>>834453
Блядь, сука, ты и сюда из сишного треда протек? Я ебал твои теории заговора, мне от рабочего софта требуется удобство, а в остальном пусть он хоть в жопу залезает - никакой личной информации все равно нет на устройстве.
>>834477
#465 #834465
>>834456
Ну хуй знает. Такой эффект, конечно, тоже есть, но и эффективность работы должна быть же. Я бы нахуй съебал, если бы мне предложили прийти со своим ноутом и кодить в швабодных иде.
>>834471
#466 #834471
>>834465

>Я бы нахуй съебал


а как такой вариант, остаешься после работы говнокодишь, переработку не оплачивают - нету денех, потом ряяя внедрили новый корпоративный почтовый сервер за $10000, с нагрузкой аж 100 писем в день. а? лол
>>834476
#467 #834474
>>834457

>смысла не имеет


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

>примеры в студию


Скажем, https://visualstudiogallery.msdn.microsoft.com/2fde2c3c-5b83-4d2a-a71e-5fdd83ce6b96 . Хотя насчет этого пункта я не настаиваю - я не особо много ковырялся с Eclipse, возможно, я просто не нашел аналог.

>Словил 3 разных краша за 7 дней работы.


Попробуй на чистую сперму ставить, с последними апдейтами. От этого сильно зависит, как показывает опыт. Кококок вот еще, ради одной IDE...

>А вообще давай-ка начнем с размера проекта, на котором ты работаешь.


Приблизительно 2кк строк, насколько я помню.
>>834480
#468 #834476
>>834471
ВРЕТИ
Dmitry #469 #834477
>>834463
Хорошо у тебя горит, всем есть что скрывать, Я этих опрпвданий уже насмотрелся.
Виндовс - прошивка для слежки, ботнетов, игр, вирусов, для остального просто ненужно.
>>834481
#470 #834480
>>834474

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


Я только сменил работу, у меня новая тачка с чистой виндой сейчас.

>ArrayPlotter


Видел для gdb скриптик, который запускает gnuplot. Нормальное решение, тащемта.
Если хочется прям уж интегрированности, то у еклипса точно есть такой плагин для джавы, скорее всего есть и для c++.
>>834482
#471 #834481
>>834477
Ну так уебывай в криптач, хуле ты здесь-то забыл? Тут серьезные дяди зарабатывают бабло, там таятся школьники с паранойей, все гармонично.
>>834495
#472 #834482
>>834480

>у меня новая тачка с чистой виндой сейчас


Ну хуй знает тогда. Если такое происходит, то, конечно, лучше использовать какую-то другую IDE. Я бы и сам не стал кушать кактус, если бы у меня не работало идеально все.
Dmitry #473 #834495
>>834481
Может это хорошая прошивка для зароботка, но плохая для работы, особенно для программирования.
Dmitry #474 #834605
>>821422
Ты о GCC
61 Кб, 625x353
Неосилятор #475 #835184
Как заебал этот Прата с перегрузками. Перегрузит шаблоны а потом ими погоняет или специализирует, сука. Это у всех авторов так?
>>835228>>835331
#476 #835228
>>835184
Для тебя же стараются, дурачок. Без понимания таких вещей ты еще очень долго будешь пачкать штаны с реальным кодом.
#477 #835331
>>835184
а про SFINAE он уже рассказал? А про поиск зависимых имен? А про ADL? Про разложение до указателя? Про using в шаблонах?
#478 #835335
Возможно, платина, но я внятного ответа так и не нашёл на SO.
Как в C++11 организовать такую блокировку, чтобы читать из очереди могли сколько угодно потоков, а писать — только один? Тянуть буст ради одной фичи не хочу, 17-й стандарт тоже не могу использовать.
#479 #835508
>>835335
сделой shared_mutex самостоятельно или спизди его из libc++ новой
>>835515
#480 #835515
>>835508
Тоже думал над этим. Просто спиздить и вызывать mutex.lock()/unlock() при записи и lock_shared()/unlock_shared() при чтении, как-то так?
#481 #835534
>>835335
Напиши RAII-обёртку вокруг pthread_rwlock_t
#482 #835565
>>821402 (OP)
Че все утверждают, что это дохуя сложный язык? Все основы по языку, которые спрашивают на собеседованиях можно выучить за день. Еще день на основные алгоритмы и еще день на основные библиотеки и фреймворки
3 дня вполне достаточно, чтобы пройти собеседование в яндекс/гугл
>>835569
#483 #835569
>>835565
А чтобы научится писать код не стреляя по себе - нужно еще как минимум пара-тройка лет, в этом-то и все проблема. А потом чтобы начать писать быстрый, безопасный и тем более распределенный код - нужно еще десяток лет, потому что язык - сборище костылей.

А так сам синтасис впринцие не сложный.
>>835571
#484 #835571
>>835569
А в чем смысл вышки по программированию, когда всю базу можно пройти за месяц после школьного выпускного и обкатать изученное, а писать нормальный код в любом случае научишься по ходу работы?
>>835588
#485 #835588
>>835571
Чтобы на парах учить математику, а дома — практиковаться в программировании же.
>>835594>>835674
#486 #835594
>>835588
Что нужно для программирования кроме линейки, дифуров, и матана, которые можно пройти самостоятельно за пол года в 10 классе?
#487 #835600
>>835594
Зависит от того, в какой сфере ты работать собрался. Где-то аналитическая геометрия нужна, где-то — дискретка и т.д.
>>835674
#488 #835674
>>835600
>>835588
>>835594
ваш матан нахуй никому не нужен, в погромирование темболее, смиритесь.
>>835675
#489 #835675
>>835674
Ну и как ты найдешь неизвестную в уравнении без матана?
>>835676
#490 #835676
>>835675

>неизвестную в уравнении


какое нахуй уравнение, какие неизвестные? вылезишь из лабы2 и увидешь удивительный мир.
>>835678
#491 #835678
>>835676
Итат быдлокодер порвался
>>835679
#492 #835679
>>835678
ссу матаноблядям в ротешники, заебали форсить свое говно. кудкудах интыгралы, кудкудах логарифмы, вся эта хуита не нужна.
(Автор этого поста был предупрежден.)
#493 #835681
>>821402 (OP)
Значит функция берет константу. Как ее можно изменить?
#494 #835685
>>835594
Дифуры и матан не нужны, а вот теоркат нужен.
#495 #835889
>>835335
Вот тебе "читатели-писатели" из прошлого проекта. Тут есть нестандартный перехват ошибок ErrorMaster, но ты сам выпили его, мне лень править эту копипасту.

http://pastebin.com/05VkjJZK
>>835922
13 Кб, 582x56
11 Кб, 242x60
#496 #835922
>>835889
Лол, shared_mutex на мьютексах. Я к вам работать не пойду.

https://ideone.com/TBJ01y
>>836001
#497 #836001
>>835922
Так семнадцатый стандарт в то время не завезли еще, лол. А работать-то надо.
>>836009
#498 #836009
>>836001
Твой шаред мьютекс только на чтение работает медленнее, чем обычный мьютекс by design (потому что там 3 мьютекса внутри). Зачем использовать shared_mutex тогда?

Суть shared_mutex в том, что на чтение он работает быстрее обычного мьютекса, когда операция записи происходит редко. Атомик надо юзать.
>>836085
#499 #836085
>>836009
Емнип там было надо специфичное поведение (блокировка поступления читателей при наличии висящих писателей), не совсем как в shared, ну и запилили наивную реализацию, оно все равно 3.5 раза использовалось, при сериализации запросов к апи или типа того. Там ответы по полсекунды и скорость вообще не важна поэтому. А так ты прав, конечно.
#500 #836165
Суть такая, анананс.
Мне нужна софтина (или некий редактор) для просмотра кода и навигация по нему.
Вимы и прочее предлагать не стоит. При навигации в проекте с десяток файлов ещё может и сойдет, но что-то большее это не учитывая виртуальные функции, автоматический вывод типов и прочая шаблонная магия нужна иде или около.
Использовал студию так-то мне больше криэйтор нравится да и работает он быстрее, но для просто навигации слишком она громоздка и тормознута.
>>836193>>837125
#502 #836200
>>821402 (OP)
Так аноны, есть ли какой нибудь сайт или форум, где нюфани помогают друг другу?
>>836203
#503 #836203
>>836200
Харкач. Здесь все твои друзья.
>>836208
#504 #836208
>>836203
Не думаю, что здесь будут помогать мне разбираться с синтаксисом языка. Алсо, хотелось бы потестить свои новоприобретенные знания.
#505 #836216
кек
#506 #836257
Посоны, есть ли большая разница между Visual Studio Community и допустим Professional? Через вузик вроде последний можно получить, но я не ебу как, куда-то надо писать преподу или еще чего конечно спрошу потом, но все же. А тут скачал и вроде норм. Мне пока чисто лабы делать. Хватит для моего уровня? С торрентов кстати зашквар качать?
>>836469
#507 #836260
Кто вообще в здравом уме использует линукс? адо скомпилировать одну либу для сервера было, а я уже хочу назад к сутдии своей.
>>837652
#508 #836276
Сап ананасы.
В общем, устроился я крестоджуном три месяца назад. Разбирался себе потихоньку с работой с видео, кодированном в h264. Вроде, набросал код, который реализует нужный конторе функционал.
И мне дают проект, который пилился до этого несколько лет намного более прошаренным челом. Чтобы, значит, этот функционал туда прикрутить.
Глянул я код, а там ехал template через typename, этим всем погоняют typedef'ы и все это внутри typeFactory. Миллион .h и еще больше #define'ов и еще какие-то кастомные статические библиотеки. Короче, ООП и сложный для нуба код во все поля и хуй пойми, как оно все работает.
Спросить не у кого, т.к. чел, который это писал, взял и помер. Второй шаристый кодер больше по чистому C и ассемблеру, ему вся эта объектная магия тоже не шибко понятна.

Я это все к чему, мне сильно не хватает практического понимания всей этой объектной поеботы, может кто посоветовать адекватные курсы по C++ в ДС2?
#509 #836279
>>836276
Тебя в гугле забанили?
>>836447
#510 #836407
>>836276
Тяжело джуном работать?
Что конкретно делал?
>>836446
#511 #836446
>>836407
Конкретно мне -- трудно.
Первое задание было написать некий клиент, который ищет в сетке устройства конторы, позволяет коннектится к определенной модели и смотреть, что на этом устройстве происходит и настраивать его.

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

Потом работа с IP-камерами. Типа сервер забирает поток h264 с камер, крутит кусок в памяти (секунд 20) и по запросу начинает писать его. Ну и плеер, чтобы полученное видео просматривать.

В общих чертах, так.
#512 #836447
>>836279
Предлагаешь изобразить дауна, который бежит на занятия по первой же ссылке из гугля, не спросив рекомендаций в специализированном месте?
#513 #836469
>>836257
Даже в большей части проф. разработки разницы нет. Студенту тем более. Рекомендую Resharper C++ по студенческой почте нахаляву взять
#514 #836470
>>836276
сколько платят?

А по вопросу - почитай любую книгу про тимплиты, и потом сверху наверни Александреску - Современное проектирование. Ты охуеешь, но потом врубишься.
>>836680>>839074
#515 #836680
>>836470
Зряплаты хватает на еду-проезд-аренду однушки.
Планирую полгода-год поработать, а там уже смотреть на перспективы переката в более хлебное место.
Я так-то вроде понимаю в общих чертах, например фреймворк Qt, который весь из себя объектный, использую без проблем. Но вот именно тот код, который мне дали, это какое-то ебунячье нагромождение абстракций.
Про проектирование попробую читануть, спасибо. Может там как раз такой подход объяснят.
#516 #837125
>>836193
>>836165
Обнаружил, что в криэйтор можно импортировать проект.
Точнее папку с исходниками
#517 #837275
Пиздатая робота. Жаль меня туда не возьмут
https://moikrug.ru/vacancies/1000028597
#518 #837440
>>821402 (OP)
Выучил ваш супертрудный язык за 4 дня. Правду говорят, что мужик работающий меньше чем за 50к - неудачник.
#519 #837590
ПЕРЕКАТ ПИЛИТЕ
>>837593>>838129
#520 #837593
>>837590
Оп пик найди
>>837601
237 Кб, 480x640
#521 #837601
sage #522 #837652
>>836260
Среди всех прекрасных умений прыщей есть одно самое важное. Оно работает хорошо, стабильно, не зависит от погоды, инвестиционного климата и дружественных усилий, предпринимаемых всякими космонавтами. Так сложилось исторически, что именно это умение, технология, легли в основу нового порядка, нового мироощущения, прыщемирка.
Суть вот в чём. Попробуйте представить себе прыщемирок. У него нет границ, которые спермачи могут увидеть, зато есть границы которые они никогда не смогут преодолеть. И вот почему. Допустим, решила какая-нибудь типичная спермоблядь проникнуть в прыщемирок — не важно, будь то пубертатный школьник с истовой жаждой самоутверждения, или завхоз с экономией на бесплатном, или просто пресытившийся анальным гнётом и интересующийся не в меру хомячок; таки или иначе всех ждёт один и тот же печальный итог.
Когда типичная спермоблядь пытается, прельстившись радостями прышемирка, проникнуть в прыщемирок через «парадный вход», гордо задрав нос, её ожидает строгий досмотр, на котором моментально выявляется уровень знаний и умений убогого. В частности, выясняется во всех продробностях та самая противоестественная поза, в которую традиционно привыкла вставать спермоблядина, чтобы её начинал использовать хозяин, выясняется, что за душой у спермоблядины никаких знаний нет, кроме этих самых привычек, связанных с облегчением анального гнёта спермогосподина. И тут, поскольку вход-то «парадный», прямо на глазах тысяч обитателей прыщемирка наступает расправа. Древний и тщательно смазанный для анахронизма карательных механизм запускает свои циклопические манипуляторы прямо в анус спермоблядины и стремительно с треском и искрами разрывает его в клочья. Это одна из самых потешных вещей для всех прыщеблядков. Это то, что делает бессмысленными все прочие развлечения, то, что не сравнится по накалу страстей и силе впечатлений ни с чем. На спермоблядские крики слетается множество зевак. Жалкий опущенец кричит, обвиняет в случившимся кого угодно, но не себя, сетует и стенает о том, что прыщемирок не пригоден для жизни, что прыщеблядям, видимо, нравится перманентный разрыв ануса; всё, что угодно будет выкрикивать — лишь бы не признать собственную убогость и надёжность её определения и её очевидность в прыщемирке. Но прыщеблядям известна истина. Она проста. Тот самый надёжнейший анахронизм вычислил хроническую спермоблядь и точно поразил её. Это делает крики спермоблядыша ещё более смехотворными.
Так бы всё и продолжалось: изредка спермобляди подбираются к границам прыщемирка, получают свой заслуженный разрыв ануса, и пройдя сквозь боль и унижение, уходят не солоно хлебавши. Но для экстенсивного увеличения количества лулзов, а, стало быть, расширения круга жертв, были открыты другие входы в прыщемирок. Например, на одном из них выдают красочную табличку с надписью «инвалид» и инвалидную самодвижущуюся коляску с обещанием доставить прямо через ограду в прыщемирок, где всё будет хорошо, бесплатно и легко. Не забывают, впрочем, предупредить, что вставать с коляски нельзя ни в коем случае. Что удивительно, коляска действительно начинает своё уверенное движение со спермоблядком на борту, однако сам спермоблядок уже очень скоро начинает смутно догадываться, что его обманули, поскольку, положение, в котором он сидит в коляске не такое уж и удобное, и до боли в анусе напоминает ему то самое положение, в которое его так часто ставил спермогосподин, а сама коляска движется с ощутимыми рывками, меняя направление, да и радостей прыщемирка не особо заметно, а окружающие прыщебляди посмеиваются и указывают на спермоблядка пальцами. И тут, спермоблядок понимает, что его разоблачили, поднимается со своей коляски и начинает грозить прыщеблядкам и кричать им, что он тоже прыщеблядь, поскольку уже проник в прыщемирок, преодолев границу. Это вызывает в прыщеблядях только смех, поскольку никакую границу спермач не преодолел — он просто катается в инвалидной коляске. А когда же спермач понимает и это, то он от досады делает неловкое движение и попадает в цепкие манипуляторы, устремившиеся к его заднице. И тут происходит разрыв на потеху всем окружающим прыщеблядям. Пожалуй, вид такой спермобляди, ещё более униженной, забавит куда больше. А собравшиеся вокруг прыщебляди тыкают палочками в агонизирующую спермоблядь, пока та изрыгает проклятья, обильно поливая собственную инвалидную коляску и землю вокруг анальной кровью. Вот в этом-то и состоит мрачная суть древней кровавой традиции прыщемирка, который не прощает и не ошибается. Так и будет: спермоблядство неизбежно должно караться в прыщемирке разрывом пердака. Вот в чём самая большая потеха: дразнить спермоблядка «бесплатным сыром», твёрдо зная, что его ждёт только бесплатный разрыв жопы.
sage #522 #837652
>>836260
Среди всех прекрасных умений прыщей есть одно самое важное. Оно работает хорошо, стабильно, не зависит от погоды, инвестиционного климата и дружественных усилий, предпринимаемых всякими космонавтами. Так сложилось исторически, что именно это умение, технология, легли в основу нового порядка, нового мироощущения, прыщемирка.
Суть вот в чём. Попробуйте представить себе прыщемирок. У него нет границ, которые спермачи могут увидеть, зато есть границы которые они никогда не смогут преодолеть. И вот почему. Допустим, решила какая-нибудь типичная спермоблядь проникнуть в прыщемирок — не важно, будь то пубертатный школьник с истовой жаждой самоутверждения, или завхоз с экономией на бесплатном, или просто пресытившийся анальным гнётом и интересующийся не в меру хомячок; таки или иначе всех ждёт один и тот же печальный итог.
Когда типичная спермоблядь пытается, прельстившись радостями прышемирка, проникнуть в прыщемирок через «парадный вход», гордо задрав нос, её ожидает строгий досмотр, на котором моментально выявляется уровень знаний и умений убогого. В частности, выясняется во всех продробностях та самая противоестественная поза, в которую традиционно привыкла вставать спермоблядина, чтобы её начинал использовать хозяин, выясняется, что за душой у спермоблядины никаких знаний нет, кроме этих самых привычек, связанных с облегчением анального гнёта спермогосподина. И тут, поскольку вход-то «парадный», прямо на глазах тысяч обитателей прыщемирка наступает расправа. Древний и тщательно смазанный для анахронизма карательных механизм запускает свои циклопические манипуляторы прямо в анус спермоблядины и стремительно с треском и искрами разрывает его в клочья. Это одна из самых потешных вещей для всех прыщеблядков. Это то, что делает бессмысленными все прочие развлечения, то, что не сравнится по накалу страстей и силе впечатлений ни с чем. На спермоблядские крики слетается множество зевак. Жалкий опущенец кричит, обвиняет в случившимся кого угодно, но не себя, сетует и стенает о том, что прыщемирок не пригоден для жизни, что прыщеблядям, видимо, нравится перманентный разрыв ануса; всё, что угодно будет выкрикивать — лишь бы не признать собственную убогость и надёжность её определения и её очевидность в прыщемирке. Но прыщеблядям известна истина. Она проста. Тот самый надёжнейший анахронизм вычислил хроническую спермоблядь и точно поразил её. Это делает крики спермоблядыша ещё более смехотворными.
Так бы всё и продолжалось: изредка спермобляди подбираются к границам прыщемирка, получают свой заслуженный разрыв ануса, и пройдя сквозь боль и унижение, уходят не солоно хлебавши. Но для экстенсивного увеличения количества лулзов, а, стало быть, расширения круга жертв, были открыты другие входы в прыщемирок. Например, на одном из них выдают красочную табличку с надписью «инвалид» и инвалидную самодвижущуюся коляску с обещанием доставить прямо через ограду в прыщемирок, где всё будет хорошо, бесплатно и легко. Не забывают, впрочем, предупредить, что вставать с коляски нельзя ни в коем случае. Что удивительно, коляска действительно начинает своё уверенное движение со спермоблядком на борту, однако сам спермоблядок уже очень скоро начинает смутно догадываться, что его обманули, поскольку, положение, в котором он сидит в коляске не такое уж и удобное, и до боли в анусе напоминает ему то самое положение, в которое его так часто ставил спермогосподин, а сама коляска движется с ощутимыми рывками, меняя направление, да и радостей прыщемирка не особо заметно, а окружающие прыщебляди посмеиваются и указывают на спермоблядка пальцами. И тут, спермоблядок понимает, что его разоблачили, поднимается со своей коляски и начинает грозить прыщеблядкам и кричать им, что он тоже прыщеблядь, поскольку уже проник в прыщемирок, преодолев границу. Это вызывает в прыщеблядях только смех, поскольку никакую границу спермач не преодолел — он просто катается в инвалидной коляске. А когда же спермач понимает и это, то он от досады делает неловкое движение и попадает в цепкие манипуляторы, устремившиеся к его заднице. И тут происходит разрыв на потеху всем окружающим прыщеблядям. Пожалуй, вид такой спермобляди, ещё более униженной, забавит куда больше. А собравшиеся вокруг прыщебляди тыкают палочками в агонизирующую спермоблядь, пока та изрыгает проклятья, обильно поливая собственную инвалидную коляску и землю вокруг анальной кровью. Вот в этом-то и состоит мрачная суть древней кровавой традиции прыщемирка, который не прощает и не ошибается. Так и будет: спермоблядство неизбежно должно караться в прыщемирке разрывом пердака. Вот в чём самая большая потеха: дразнить спермоблядка «бесплатным сыром», твёрдо зная, что его ждёт только бесплатный разрыв жопы.
#523 #838129
>>837590
Стих придумать надо
#524 #838744
а как вам Microsoft VS code?
>>838750
#525 #838750
>>838744
Как земля.
#526 #839074
>>836470

>Александреску


Когда мне в очередной раз припекло во время ахуевания от проекта я зашел на лурочку. В статью "умение разбираться в чужом коде". А там картинка в статье с кодом, который как раз напоминающая код проекта (правда, в более упрощенном виде). Лезу я смотреть на подпись под картинкой и точно, Александреску блять.

Кинулся в инет, качать книжку. Приступил к чтению. И тут мысль, блять, а раз проект написан по его книжке, дай-ка я гляну в шкафчик в метре у меня за спиной. Вот она, книжка бля. Забрал домой.

Правда, из этого следует немного грустный вывод. Раз мне никто про эту книжку и методику ничего не сказал, наверное, канторе особо и не нужно, чтобы я справился с задачей. Видимо, моя задача -- изображать программиста, а не приносить некую пользу. Мысленно сделал отметку "съебаться из конторы сразу же, как будет возможность".
#527 #839794
бамп
#528 #839906
добавьте в шапку лучшую иде - Code::blocks. Более лучшую, чем code lite.
#529 #840067
>>821402 (OP)
Вкатываюсь в геймдев, думал на дроиде ява, заебца. Таксс, движки-мейкеры, платное говно, говно, так, што тут у нас, порт с сишки. Ууу хуево.
Ладно, буду свое двигло делать. Лист двиглов на яве: говно, ..., ... ээээ, а где ява?

Эхх, походу не отвертется от крестов, это судьба.

Есть особые подводные камни? Просто скачал вижуал студио и вперед?
#530 #840693
Заглянул к вам из петушиного загона, у вас всегда тут так пусто?
#531 #840717
В крестах нет матриц?
>>840739
#532 #840739
>>840717
Вроде нет, но есть дохуя библиотек от топовых интелоских до днищенских васяновских
>>840742
#533 #840742
>>840739
тогда покажи красивый велосипед матриц
>>840745>>840748
#534 #840745
>>840742
в том же xna фрамеворке/DIRECT3D есть какая-то параша
#535 #840748
>>840742
Да и что тебе мешает написать свой.
>>840758
#536 #840758
>>840748
То что я могу где-то сделать глупую ошибку. Или криво написать. А мне нужно только динамическая матрица и метод для её транспонирования. Проще найти какой-нибудь велосипед и удалить из него всё лишнее.
>>840763>>840768
#537 #840763
>>840758
Ну для этого просто пишешь один единственный шаблонный класс матрицы и метод транспозе возвращающий новую матрицу. Для проверки накидай какой-нибудь изи тест.
>>840765>>840767
#538 #840765
>>840763
не думаю что можно где-нибудь обосраться кроме как в выделении памяти
#539 #840767
>>840763
Такая проблема возникала у многих и кто-то написал дохуя продуманный класс матриц где за каждую строчку пояснить может. Я хочу его, а не свой говнокод за 5 минут.
>>840769
#540 #840768
>>840758
Было бы понятно из-за чего ты искал проблему если бы тебе надо было написать всю матричную алгебру. А так если что то можно взять интеловскую либу(я есличо хз где её можно спиздить).
#542 #840772
>>840769
Он почту прочит. У них гитхаба нет?
>>840773
#543 #840773
>>840772
Нет это проприетарщина(вроде насколько я понял)
>>840775
#544 #840775
>>840773
Ок. Ввиду почту. Спасибо.
#545 #840794
передумал скачивать. Сам напишу

> array<array<int,n>,n> m;


Как значение оп умолчанию задать? 2 цикла в конструкторе делать?
25 Кб, 546x155
#546 #840924
Бля, вы зебали!
Где перекат?
#547 #840966
Совсем уже охуели, пидоры ленивые.

https://2ch.hk/pr/res/840964.html (М)
https://2ch.hk/pr/res/840964.html (М)
https://2ch.hk/pr/res/840964.html (М)
Тред утонул или удален.
Это копия, сохраненная 29 сентября 2016 года.

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

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