М.Двач / Программирование

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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

29 Кб, 600x418

Оффициальный™ традиционный® C++ тред #40 16 Авг, 23:37 #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.х, полной обратной совместимости между ними нет как в пистоне, ага.

Cкачать бесплатно без смс

Документация к 4.8

Более полная документация к обеим версиям (на ангельском)

Литература:

Автор(ы)

Название

Год

Ссылка

Макс Шлее

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

Предыдущие треды на архиваче

https://arhivach.org/thread/94971/

https://arhivach.org/thread/94972/

https://arhivach.org/thread/99414/

https://arhivach.org/thread/100995/

https://arhivach.org/thread/105148/

https://arhivach.org/thread/109335/

https://arhivach.org/thread/112797/

https://arhivach.org/thread/114519/

https://arhivach.org/thread/117109/

https://arhivach.org/thread/120019/

https://arhivach.org/thread/122683/

https://arhivach.org/thread/124637/

https://arhivach.org/thread/125532/

https://arhivach.org/thread/127327/

https://arhivach.org/thread/128133/

https://arhivach.org/thread/134437/

https://arhivach.org/thread/135285/

https://arhivach.org/thread/139690/

https://arhivach.org/thread/144812/

https://arhivach.org/thread/147540/

https://arhivach.org/thread/149983/

https://arhivach.org/thread/151271/

https://arhivach.org/thread/153304/

https://arhivach.org/thread/156131/

https://arhivach.org/thread/156310/

https://arhivach.org/thread/157411/

https://arhivach.org/thread/158594/

https://arhivach.org/thread/160272/

https://arhivach.org/thread/161975/

https://arhivach.org/thread/164154/

https://arhivach.org/thread/167496/

https://arhivach.org/thread/170422/

https://arhivach.org/thread/174114/

https://arhivach.org/thread/177102/

https://arhivach.org/thread/178881/

https://arhivach.org/thread/182021/

https://arhivach.org/thread/184478/

https://arhivach.org/thread/187477/

https://arhivach.org/thread/189136/

Старые ненумерованные треды

https://arhivach.org/thread/45477/

https://arhivach.org/thread/48611/

https://arhivach.org/thread/60085/

https://arhivach.org/thread/66322/

https://arhivach.org/thread/69413/

https://arhivach.org/thread/73221/

https://arhivach.org/thread/77999/

https://arhivach.org/thread/79194/

https://arhivach.org/thread/82038/

https://goo.gl/vvs9GP/

https://goo.gl/ZnBsYt/

Отдельные Qt-треды

https://arhivach.org/thread/15387/

https://arhivach.org/thread/65590/

Ответы>>821437>>822206>>822790>>831956>>835565>>835681>>836200>>837440>>840067

17 Авг, 00:17 #2 #821422

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

Ответы>>821516>>834605

17 Авг, 00:44 #3 #821436

Над тредом вновь алеют яркие
Пердаков огни.
Баттхёрты сочные, сладкие
От студентов, которые дни
Проводят в смятенье, клепая всё свой говнокод
От ярости сотрясая
Самый небесный свод
Ругая Страусов трупы
И комитетский сброд

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

17 Авг, 00:46 #4 #821437

>>821402 (OP)
c++ не нужен, есть раст

Ответы>>821454

17 Авг, 01:50 #5 #821454

>>821437
Зачем нужен Раст когда есть Си?

Ответы>>821480>>824571

Прата 17 Авг, 02:13 #6 #821459

решил тут наваять шаблон, а чёто не пойму, что шаблон нельзя в cout вывести?
http://ideone.com/Ir4tpi

Ответы>>821470>>821471

17 Авг, 03:20 #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

17 Авг, 03:22 #8 #821471

>>821459
template <typename T>
T plus(T &a,T &b);

если у тебя T специально к инту не кастуется

Ответы>>821838

17 Авг, 05:20 #9 #821480

>>821454
Заем нужен Си, когда есть перфокарты?

17 Авг, 09:11 #10 #821516

>>821422
Чтобы обмазаться говном, очевидно же

sage 17 Авг, 10:26 #11 #821542

Саги треду без шапки. Уроды блядь ебаные. Ненавижу вас.

Ответы>>821567

sage 17 Авг, 10:39 #12 #821550

sage

Ответы>>821567

17 Авг, 10:59 #13 #821567

>>821550
>>821542
Аутист? Мод шапку делает.

Ответы>>821568

sage 17 Авг, 11:05 #14 #821568

>>821567
Иди нахуй залетная студенто блядь. Подождал бы ОПа и все. Так всегда.

Ответы>>821634

207 Кб, 1700x1734

17 Авг, 13:14 #15 #821634

>>821568
ОБЕЩАННОГО ТРИ ГОДА ЖДУТ

17 Авг, 15:08 #16 #821701

>>821688
хуйня, вопросы изи для дцп-девелоперс

17 Авг, 17:36 #17 #821835

>>821688
Первую задачу помню надо было решить для подачи заявки на стажировку в яндекс. Щас на сайте не могу найти.

17 Авг, 17:44 #18 #821838

>>821471
template <typename T, typename U>
decltype(auto) plus(T&& a, U&& b) { return a + b; }

17 Авг, 17:47 #19 #821842

>>821688
Читать GotW

17 Авг, 19:11 #20 #821900

Вопрос скорее по си, но не хочу в тот тред идти. Нужен массив структур размер которого не известен на этапе компиляции. В этой структуре будет 1 char и 1 int. Массив до 10к элементов. Как лучше сделать? 1 массив структур или 2 массива 1 char'ов и 1 int'ов? Если делать структуру, то наверно поля выравнивать надо будет. А если делать 2 массива, то 2 раза маллок вызывать надо. Надо чтобы работало как можно быстрее. И не тратиться на лишнюю память.

Ответы>>821933>>822075

87 Кб, 251x459

17 Авг, 19:51 #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

17 Авг, 19:53 #22 #821931

>>821927
Это макака виновата

17 Авг, 19:59 #23 #821933

>>821900
> А если делать 2 массива, то 2 раза маллок вызывать надо.
Кто тебе запрещает один раз выделить память размером как суммарно оба массива?

Ответы>>821948

17 Авг, 20:14 #24 #821948

>>821933
То что потом с ней будет не удобно работать. Надо же на 2 массива поделить. Может ещё какие-то подводные камни есть?

Ответы>>821978

17 Авг, 21:11 #25 #821978

>>821948
Что там делить?
size_t size = ...; // Размер массива
int #ints = malloc((sizeof (int) + 1) # size);
char #chars = (void #) ints + sizeof (int) # size;
Решетку замени на звездочку.

17 Авг, 22:50 #26 #822046

Переполнение инта - неопределённое поведение. А у других типов как? Встреченных и тех что в стандартной библиотеке.

Ответы>>822047

sage 17 Авг, 22:52 #27 #822047

>>822046
У беззнаковых — за максимальным значением должен идти нуль.
> тех что в стандартной библиотек
Переполнение вектора, что ли?

Ответы>>822068

17 Авг, 23:05 #28 #822060

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

Ответы>>822065>>822172

17 Авг, 23:06 #29 #822065

>>822060
Если ты про дейтла, то этот форсер больше года их пытается в шапку впилить.

17 Авг, 23:08 #30 #822068

>>822047
>У беззнаковых — за максимальным значением должен идти нуль.
А почему у остальных не так?
>Переполнение вектора, что ли?
Ага. Или строки. Что будет если их сделать слишком большими?

Ответы>>822070>>822171

sage 17 Авг, 23:10 #31 #822070

>>822068
> Что будет если их сделать слишком большими?
Вытекут через монитор.

17 Авг, 23:16 #32 #822072

Господа, какую посоветуете либу для http? Главное асинхронность. Курву ебать штоле?

Ответы>>822173

17 Авг, 23:19 #33 #822075

>>821900
Храни все в одном большом char[]
Смещение легко посчитать.

17 Авг, 23:57 #34 #822097

>>821470
какой у тебя компилер? У меня сообщения чуть чуть отличаются. Ну типа говорит что вызывать здесь plus это ambligous

Ответы>>822102

sage 18 Авг, 00:02 #35 #822102

>>822097
Мой говорит что я ambitious.

18 Авг, 04:09 #36 #822159

>>822061
Строка 20, &L[j].
Наглядный пример вреда копипаста.

18 Авг, 06:06 #37 #822171

>>822068
>А почему у остальных не так?
Фактически оно так, но на некоторых платформах аппаратно контролируется знак, поэтому какие-то требования бы вызвали костыли и неоптимальность в реализациях.
>Ага. Или строки. Что будет если их сделать слишком большими?
Если считать "большим" заполнение всей доступной кучи, то со стандартным аллокатором гарантируется исключение std::bad_alloc (как и для обычного new), а с пользовательским - зависит от того, как он реализован. Другого переполнения тут быть не может по определению - тип индекса (обычно size_t) гарантируется таким, что в него влезет любое количество потенциально влезающих в память объектов. Скажем, если у тебя на x86 4ГБ памяти, то даже если ты всю память потратишь на единственный вектор байтов, то в 32-битный unsigned int индекс все равно влезет, и нехватка памяти наступит раньше переполнения.

18 Авг, 06:07 #38 #822172

>>822060
Я работаю над этим, посоны, уже скоро прям все будет.

18 Авг, 06:10 #39 #822173

>>822072
Касабланка, например. Она заточена под асинхронность, там continuations, все дела.

18 Авг, 09:43 #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> но вроде через них так нельзя.

18 Авг, 09:43 #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

18 Авг, 10:40 #41 #822232

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

Или тебе надо нечто на подобии ArrayList из java или с#?
Из твоего кода нихера не понял

18 Авг, 10:48 #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

18 Авг, 11:56 #43 #822284

>>822236
Я так уже пробовал

Ответы>>822294>>822308>>822342

18 Авг, 12:13 #44 #822294

>>822284
>явно указывать тип аргументом шаблона
>...help.getRandom <vector <int>> (50)
> не получается
«Лучезарному колесу в золотых мехах, носителю грозной стрелы, слуге под самым седалищем Великого и могучего Утеса, сверкающего боя, с ногой на небе, живущего, пока не исчезнут машины, к ступне повергает это донесение ничтожный стражник из рода вихрей, носитель отличного меча. Доношу первое: большая машина «воин-купол» пришла в движение от пальца в отверстии пятом и от пальца в отверстии сорок седьмом, и движение было неодолимое, быстрое и прямое. Доношу второе: явились на небывалой машине трое, не знающие речи, не носящие оружия, не понимающие установления и желающие странного. Не зная их сущности, пребываю в ожидании высоких приказаний. Доношу третье: уголь кончается, а топить мертвецами по вашему милостивому слову мы за невежеством и недоумием не умеем. При сем прилагаю: первое – чертеж большой машины «воин-купол» и второе – образцы материи, приклеенные неизвестными людьми к ранам преступников».

Ответы>>822377

18 Авг, 12:20 #45 #822308

>>822284
getRandom<int>(50)

Ответы>>822342

18 Авг, 13:02 #46 #822342

>>822284
Что это вообще за дичь? Твой метод возвращает std::vector<int>, а не T. Даже если ты сделаешь как предлагает >>822308, то у тебя код даже не скомпилируется.

18 Авг, 14:04 #47 #822377

>>822294
:D

18 Авг, 15:52 #48 #822470

Решил попробовать себя в программировании. Выбрал c++. Почему он считается одним из самых сложный языков программирования? Если мне не хватает мозгов я его не смогу осилить?

Ответы>>822503>>822529

18 Авг, 16:21 #49 #822503

>>822470
> Почему он считается одним из самых сложный языков программирования?
Потому что иногда сам язык пытается тебя запутать. inb4: как пример, который любят всем пихать — static имеет три совершенно разных смысла в разных местах проги.

Ответы>>822520

18 Авг, 16:31 #50 #822520

>>822503
функции, члены класс и переменные?

Ответы>>822525

18 Авг, 16:33 #51 #822525

>>822520
да

18 Авг, 16:37 #52 #822529

>>822470
Вот, например, осиль статью:
https://habrahabr.ru/post/242639/

Ответы>>822577

18 Авг, 16:38 #53 #822531

Как в си узнать размер буфера для stdout? printf ведь делает буферизацию?

Ответы>>822552

18 Авг, 16:59 #54 #822552

>>822531
implementation defined

Ответы>>822555

18 Авг, 17:01 #55 #822555

>>822552
Какая функция его возвращает?

Ответы>>822558

18 Авг, 17:04 #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

18 Авг, 17:31 #57 #822577

>>822529
Я так понял в случае с константными ссылками форвардинг нам не нужен?

Ответы>>822620

18 Авг, 18:15 #58 #822620

>>822577
Нужен. Компилятор const не принимает во внимание, он нужен только для тайп-чекера, потому что const_cast и mutable.

18 Авг, 19:16 #59 #822673

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

Ответы>>822678>>822681

18 Авг, 19:19 #60 #822678

>>822673
После семи лет опята тебя будут искать работодатели, а не ты их.

Ответы>>822724

18 Авг, 19:21 #61 #822681

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

Короче, это дело вкуса.

Ответы>>822726

155 Кб, 1002x617

18 Авг, 19:57 #62 #822708

Ребята, а когда примерно оп умер?

Ответы>>822811

18 Авг, 20:15 #63 #822724

>>822678
С другими языками такому небывать?

Ответы>>822728

18 Авг, 20:17 #64 #822726

>>822681
Как раз и пришел с дельфей, паскаля и VB. И вот задумался... Шагать в будущее или положиться на старое дедовское...

18 Авг, 20:22 #65 #822728

>>822724
Нет. С другими языками есть огромная толпа спецов которыми тебя заменят. На крестах спецы дороже стоят. Ещё дороже только лисп или другие полумёртвые и некому неизвестные

Ответы>>829069

18 Авг, 20:35 #66 #822732

[code] int main(void) [code]

test

Ответы>>822733

18 Авг, 20:36 #67 #822733

>>822732
Слэш забыл. бака.

Ответы>>822737

18 Авг, 20:39 #68 #822737

>>822733
[code] cout << "(" [/code]

18 Авг, 21:55 #69 #822790

>>821402 (OP)
Что происходит, при передаче указателя на массив по значению? Он указывает на новый локальный массив? Откуда тогда функции известна его длинна?

Ответы>>822793>>822805>>822897

18 Авг, 22:02 #70 #822793

>>822790

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

Ответы>>822830

18 Авг, 22:17 #71 #822805

>>822790
>передаче указателя на массив по значению
Ты не за что не догадаешься. Массив остаётся на месте, а указатель передаётся в функция и там используется.

18 Авг, 22:27 #72 #822811

>>822708
Жс-кун это старый оп же, он уже больше года как не у дел.

15 Кб, 300x220

18 Авг, 23:01 #73 #822830

>>822793
>си
>reference

18 Авг, 23:21 #74 #822839

Почему если переменную не инициализировать то в ней всегда что-то хранится? Как работает оперативка компа что всегда в ячейках что-то записано?

Ответы>>822844>>822856>>822859>>822897

18 Авг, 23:29 #75 #822844

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

Ответы>>822857

19 Авг, 00:07 #76 #822856

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

Ответы>>822857

19 Авг, 00:08 #77 #822857

>>822844
> и прочитать и прочитать
>>822856
>и памяти и
Как называется эта болезнь?

Ответы>>822858>>822988

19 Авг, 00:10 #78 #822858

>>822857
Аутизм мб. Это посты разных людей, если что, так что назвал навскидку самое распространенное на сосаче.

19 Авг, 00:18 #79 #822859

>>822839
http://arch.cs.msu.su/Text/
Первых несколько глав

19 Авг, 02:25 #80 #822897

>>822790
>>822839
Куда скотился C++-тред? Что эти тут делают? Почему не забанены?

Ответы>>822922

19 Авг, 05:44 #81 #822922

>>822897
Вообще пиздец

19 Авг, 08:48 #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

19 Авг, 09:11 #83 #822961

Возможно ли новичку в программировании (Знаком с плюсами вплоть до классов) реализовать простенькую консольную игру по сети?

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

Если да, то где искать как это делать?

Ответы>>822992

19 Авг, 10:37 #84 #822988

>>822857
>Как называется эта болезнь?
Пять раз исправил пост
@
Не перечитал перед отправкой

19 Авг, 10:40 #85 #822992

>>822961
https://www.youtube.com/watch?v=IydkqseK6oQ

Ответы>>822995>>823015

sage 19 Авг, 10:53 #86 #822995

>>822992
>написать простейший сокет-сервер
>продолжительность видео 10:21
>больше 100 строк говнокода на server.cpp
>почти 100 строк говнокода на клиент

пиздец, какие же крестоблядки говноежки, и это в 2016 году

Ответы>>822997

19 Авг, 10:57 #87 #822997

>>822995
Разумеется,
import http.socket
http.socket.server.start()
гораздо проще, но ведь эти же 100 строк кода там внутри и находятся.

Ответы>>823009

sage 19 Авг, 11:21 #88 #823009

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

Ответы>>823017

sage 19 Авг, 11:35 #89 #823015

>>822992
погодите, так это говно ещё и в одном треде работает? больше 100 строк на однотредовый блокирующийся сервер? лооол
представляю какой там будет срачельничек с локами, мьютексами или колбеками с стиле говняшная + pthreads, если надо будет сделать мультитредовый сервак

19 Авг, 11:37 #90 #823017

>>823009
>Т.е. без этих 100 строк чистейшего говнокода никак?
Никак, это ведь интерфейс ОС.

Ответы>>823019

19 Авг, 11:53 #91 #823019

>>823017
Так а есть какие-то удобные абстракции, что-то в стиле эрланговского gen_tcp или хотя бы akka i/o tcp?

Ответы>>823023>>823026>>823049

19 Авг, 12:02 #92 #823023

>>823019
В стандартной либе нет.

19 Авг, 12:08 #93 #823026

>>823019
Нет конечно, даже самые высокоуровенные библиотеки вроде CAF пародирующие эрланг заставляют писать те же сто строчек на то, что в эрланге делается буквально в 5.

19 Авг, 13:00 #94 #823049

>>823019
Очевидный asio, его вроде даже собирались в 17 включать, но под конец прокинули через хуй, может в 23 завезут нет.
Впрочем, он давно умеет в standalone без сотен мегабайт буста и элементарно подключается в проект.

10 Кб, 1297x170

19 Авг, 13:11 #95 #823056

Бояре, как в cmake линковать wtsapi32.lib ?
target_link_libraries(wtsapi32.lib) - ошибка сборки

Ответы>>823060

19 Авг, 13:16 #96 #823060

>>823056
>target_link_libraries(wtsapi32.lib)
Ты бы хоть почитал какие аргументы оно принемает и сколько.
target_link_libraries(target wtsapi32)

Ответы>>823068

19 Авг, 13:39 #97 #823068

>>823060
Ну я же долбоеб.
Спасибо

19 Авг, 18:51 #98 #823332

>>822952
>1. Как это исправить-то, чтобы через initialization list, а не strcpy в теле? Ну и не fab{s[0], s[1], s[2], s[3]}, разумеется.
Сделать string
>2. А почему оно вообще не работет-то?
Размер массива ограничен, а в s может хранится слишком большая строка.

https://ideone.com/Kq14Y1

19 Авг, 19:06 #99 #823342

Вечер в хату. Возникла такая вот проблема: необходимо написать кучу бесполезного и однообразного кода(типа самопальной либы для матриц, векторов итп) и все бы ничего(обошелся бы просто встроенными в vc/clion средствами для генерации заголовков методов), но есть такая хрень что необхожимо даже для функций короче пиструна хомяка писать ~4 стоки комментариев до и 1 после. В общем, реквестирую способов не втыкать вручную тысячи говн.

Ответы>>823354

19 Авг, 19:28 #100 #823354

>>823342
Напиши программу/скрипт для генерации комментариев.

Ответы>>823360

19 Авг, 19:33 #101 #823360

>>823354
А без велоспедов.

Ответы>>823361

19 Авг, 19:35 #102 #823361

>>823360
Юзай уже готовые средства кодогенерации/автодокументации.
Либо велосипедь свои, выбора у тебя не осбо много.

Ответы>>823363

19 Авг, 19:39 #103 #823363

>>823361
Ткните пожалуйста лицом в подобное ибо долблюсь в глаза.

Ответы>>823382

19 Авг, 20:21 #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
Видел, люди пхп как макроязык для сишки использовали.

19 Авг, 22:14 #105 #823456

Здарова, господа, посоветуйте годную книгу по многопоточности. Раньше вроде модно было C++ Concurrency in Action читать, сейчас ничего не изменилось?

Не новичёк, азы знаю.

Ответы>>823458

19 Авг, 22:24 #106 #823458

>>823456
Ну так Энтони уже все сказал, с тех пор добавились разве что параллельные версии алгоритмов из серьезного, но это тема на пару страниц, не на книгу. Дальше только читать исходники либ, или какие-нибудь книжки по обобщенной параллельности. Материалы с Highload++ попробуй, например.

20 Авг, 11:58 #107 #823749

Двач, где мне прочитать о вызовах функции в C++ с точки зрения машины? Т.е. я хочу узнать, как работает память, и т. д., чтобы прояснить для себя некоторые моменты, в частности, move-semantics, и т. д. Хочу узнать как и где работает память в пеке, как функции в С++ реализуются с точки зрения памяти, передача аргументов, возврат, и т. д.

Ответы>>823768>>823769

sage 20 Авг, 12:26 #108 #823768

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

Ответы>>823779

20 Авг, 12:30 #109 #823769

>>823749
>где мне прочитать о вызовах функции в C++ с точки зрения машины
https://en.wikipedia.org/wiki/X86_calling_conventions
>move-semantics
Move-semantics к работе памяти не имеет отношения. Это чисто фишка системы типов: в каком контексте вызывается &&, а в каком &.

Ответы>>823779

20 Авг, 12:46 #110 #823779

>>823768
Да я понял, спасибо. Я это к тому написал, что начал читать 4th edition, и тупил вообще. Вроде сейчас разобрался, что и как, т.е. если я определяю функцию например:

MyType Sup2ch(MyType);

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

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

И да, спасибо, реально помогаете.

Ответы>>823781

20 Авг, 12:52 #111 #823781

>>823779
https://www.google.ru/?q=c+program+memory+layout

Ответы>>823785

20 Авг, 12:56 #112 #823785

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

Ответы>>823786

20 Авг, 12:59 #113 #823786

>>823785
Если хочешь более подробных примеров - обмазывайся листингами. Тот же шланг с флагом -S выдаст тебе довольно читабельный листинг.

Ответы>>823788

20 Авг, 13:01 #114 #823788

>>823786
Не понимаю
>шланг с флагом -S

Заранее прошу прощения за нубство.

Ответы>>823793

20 Авг, 13:06 #115 #823793

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

Ответы>>823799

20 Авг, 13:17 #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 лежит куча, и так далее.

Ответы>>823804>>823875>>823937

20 Авг, 13:19 #117 #823803

Пока не прочитал, но вроде нашел годную статью

http://www.gahcep.com/cpp-internals-memory-layout/

20 Авг, 13:19 #118 #823804

>>823799
gcc тоже должен уметь выдавать только листинг, погугли.

Ответы>>823821

20 Авг, 13:39 #119 #823821

>>823804
Нашел, спасибо тебе, очень мне помог, отвечаю

15 Кб, 413x529

20 Авг, 13:49 #120 #823823

Это типо код ассемблера?

Ответы>>823824

20 Авг, 13:51 #121 #823824

>>823823
Типо да, надеюсь ты там без оптимизаций собирал?

20 Авг, 14:49 #122 #823875

>>823799
Почитай, как многозадачные ОС устроены. Что такое контекст процесса ОС, виртуальная память, и т.д.

20 Авг, 16:48 #123 #823937

>>823799
если gcc стоит, то можешь clang не ставить. Чтоб получить листинг ключ тот же -S. Если хочешь intel синтаксис, то пишешь -masm=intel

20 Авг, 16:51 #124 #823939

Есть ли что о новых фичах языка начиная с 10 года?
На работе лютый легаси, и как-то не используем ничего свежего. Ну и в итоге я не следя за новостями уже и не ориентируюсь в том что там надобавляли/собираются добавить.

Есть что почитать об этом сжато? Я не прошу Страуструппа всего читать.

Ответы>>823940>>824761

20 Авг, 16:52 #125 #823940

>>823939
на хабре почитай статьи

20 Авг, 16:57 #126 #823945

Как получить указатель на объект ofstream? Хочу читать из файла, который открываю как
std::ofstream file("text_file.txt", std::ios_base::in);
и вот как бы мне получить указатель, чтобы скормить его feof()?

Ответы>>823949

20 Авг, 17:06 #127 #823949

>>823945
А зачем? У ofstream есть же метод eof(). Они же вроде одно и то же делают

Ответы>>823950

20 Авг, 17:09 #128 #823950

>>823949
Спасибо, как раз что и нужно! Затупил я.

21 Авг, 00:18 #129 #824307

Шалом школьники.

У меня вопроc: зачем может понадобиться отмечать деструктор как deleted? Есть какой-то пример где это нужно?

Ответы>>824758

21 Авг, 01:11 #130 #824335

>>824314
ОТКЛЫЛ MAIN.C
@
УВИДЕЛ ЭТОТ УЖАС ИЗ ГОВНОКОДА
@
ПОЛУМЕТРОВЫЕ SWITCH-CASE
@
100 КРАТНОВЛОЖЕННЫЕ IF-ELSE
@
ЗАКРЫЛ НАХУЙ И ПЕРЕКРЕСТИЛСЯ

Прата 21 Авг, 01:38 #131 #824352

>>821470
Бля,проще бы сказал что уже есть такая стандартная функция plus.

21 Авг, 02:52 #132 #824383

>>824314
даже с точки зрения С-программера это говнокод, съеби

21 Авг, 03:13 #133 #824389

>>824384
Не писать на си.

21 Авг, 10:22 #134 #824457

>>824314
Куда-то уехала индентация.
Переменные прямо в хедерах - автор не понимает, что это такое.
>#define ME_TANK 0
Даже в сишечке нужно использовать константы вместо препроцессора. Все назначение этой переменной - это быть вместо указателя tank* me, потому что автор в указатели не может.
>lightsources sources
Автор не понимает, зачем нужна система контроля версий.

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

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

Ответы>>824492>>824506

sage 21 Авг, 12:10 #135 #824492

>>824457
>питона достаточно.
fps низкий будет

Ответы>>824504

21 Авг, 12:56 #136 #824504

>>824492
>fps низкий будет
Кекнул с дауна.

21 Авг, 13:00 #137 #824506

>>824457
>>824457
>lightsources sources
Причем здесь система контроля версий?

21 Авг, 13:24 #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

21 Авг, 13:31 #139 #824520

>>824518
Upd. Почему-то убедился, то это не так (copy генерируется). Знатоки C++11, объясните

Ответы>>824593>>824658

21 Авг, 15:49 #140 #824571

>>821454
в расте есть шаблонное метапрограммирование? Ну или какой-то еще вид компайл-тайм метапрограммирования?

Ответы>>824573

21 Авг, 15:53 #141 #824573

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

Ответы>>824599

21 Авг, 16:40 #142 #824593

>>824520
Новую книжку Майерса про С++ читал?
Там целая глава про это.

Ответы>>824608

21 Авг, 16:50 #143 #824599

>>824573
>макросы
ой всё!

Ответы>>824613

21 Авг, 16:54 #144 #824600

бамп

21 Авг, 17:06 #145 #824608

>>824593
А название какое?

Ответы>>824612>>824762

21 Авг, 17:10 #146 #824612

>>824608
Это моя первая книга по 11 стандарту, 4 издание Страуструпа читаю

21 Авг, 17:11 #147 #824613

>>824599
Какая разница, как называется, если конечная суть одна? или у тебя слово "макросы" ассоциируется с текстовым препроцессором из си?

Ответы>>824614

21 Авг, 17:12 #148 #824614

>>824613
Скорее с хуйнеё которая должна исправить недостатки функций в лиспе

Ответы>>824624

21 Авг, 17:26 #149 #824624

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

Ответы>>824704

sage 21 Авг, 18:46 #150 #824658

>>824520
Узнай, что значит deprecated

Ответы>>824708

21 Авг, 19:09 #151 #824669

Где найти работу по цпп хоть какую-нибудь? Хоть место где прост кодить разрешат, просто так? Че надо вообще знать? Шаблоны, ооп, стл?

21 Авг, 20:59 #152 #824704

>>824624
в c++17 будет relaxed constexpr, и большая часть еботни с шаблонами уйдет

Ответы>>824705>>824765

21 Авг, 21:00 #153 #824705

>>824704
или даже в 14 MSVC не поддерживает до сих пор

21 Авг, 21:09 #154 #824708

>>824658
я не могу, перевод я посмотрел, но я вручную создал класс, не объявляя из методов ничего, кроме деструктора, и все же я смог использовать неявно сгенерированный копи-конструктор. Так почему страуструп говорит о том, что написано здесь >>824518 ?
Объясни, пожалуйста.

Ответы>>824710>>824791

21 Авг, 21:16 #155 #824710

>>824708
Upd. Вот этот код

#include <iostream>

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

int main() {

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

сработал отлично, и не о каких неявно не сгенерированных конструкторах при явном деструкторе не было и речи

21 Авг, 21:47 #156 #824726

Поясните за Intel C++ Compiler дает ли хоть какой то выигрышь на процессорах интел?

Ответы>>824728>>824767

21 Авг, 22:05 #157 #824728

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

21 Авг, 23:08 #158 #824758

>>824307
Так иногда делают, чтобы запретить создавать объекты этого типа на стеке. Аналогично, operator new удаляют, чтобы запретить создание в куче. Но вообще это костыль, тому що при размещении в куче тоже, вообще говоря, нужен деструктор. Более православное решение - сделать его приватным, тогда operator delete не обосрется, а удалять напрямую не получится.

21 Авг, 23:12 #159 #824761

>>823939
Modern C++ от Скотта Майерса

21 Авг, 23:12 #160 #824762

>>824608
Эффективный и современный C++, в шапке есть.

21 Авг, 23:14 #161 #824765

>>824704
На смену придет модная дрочильня в виде friend injection, вот тогда-то ты поймешь, что SFINAE это было совсем просто, лол.

21 Авг, 23:18 #162 #824767

>>824726
Насколько я понимаю, его юзают только когда под суперкомпьютеры пишут код для параллельных вычислений. В обычных задачах можно прикрутить OpenCL/CUDA и получить гораздо больший относительный прирост, плюс останутся модерновые фичи, которых пока нет у Intel.

21 Авг, 23:57 #163 #824785

Допустим, итераторы first и last задают диапазон элементов. Как проще всего присвоить первым k элементам в этом диапазоне некоторое значение, а оставшимся size - k элементам - другое значение, если k - целое число?

Что в STL особенно удобно для этого?

Ответы>>824826

sage 22 Авг, 00:20 #164 #824791

>>824708
deprecated значит, что поведение или функция объявлены устаревшими Они ещё есть, но в следующей мажорной версии стандарта функция будет удалена, а поведение — изменено.

22 Авг, 03:20 #165 #824826

>>824785
std::fill

Ответы>>824853>>825160

22 Авг, 06:13 #166 #824853

>>824826
fill_n же, тогда достаточно OutputIterator.

Ответы>>825160

22 Авг, 15:29 #167 #825051

Я к вам с глупым вопрос. А в чём такая проблема сделать чтение исходников в два прохода, собирая все объявления в первом (выдёргивая только сигнатуры из definition'ов (какой термин по-русски, кстати, правильный?)), и избавиться от необходимости иметь декларации выше использования и прочий геморрой, возникающий при перекрёстном использовании каких-либо функций/методов, необходимости forward declaration'оа класса и т.д.
Неужели это настолько ресурсоёмко?

Ответы>>825092>>825149

22 Авг, 16:29 #168 #825092

>>825051
>Неужели это настолько ресурсоёмко?
Это ебанутое наследие сишки. Причем оставлено только на глобальном уровне. Внутри класса, например, методы можно в произвольном порядке объявлять. Так же как и делать вложенные функции, объявляя локальный класс внутри функции.

Ответы>>825149

22 Авг, 16:40 #169 #825101

У меня есть класс(A) в нем указатель на абстрактный класс(B), в котором могут храниться объекты разных типов, как написать конструктор копирования(для А), если я не знаю, какого типа объект мне нужно выделить?

Ответы>>825107>>825110

22 Авг, 16:47 #170 #825107

>>825101
>как написать конструктор копирования(для А)
Добавь virtual A clone() = 0 в интерфейс абстрактного класса, пусть наследники сами разруливают, как им копироваться.

Ответы>>825163

22 Авг, 16:53 #171 #825110

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

Ответы>>825159>>825163

22 Авг, 17:33 #172 #825149

>>825051
Дело не в однопроходности же, это тебе не паскаль. Грамматика все равно неразрешима, и в общем случае, с шаблонами шаблонов там такая дрочильня, что даже с ручкой и бумагой без поллитры не разберешься. Если убрать декларации, скорость компиляции нихуя не увеличится, но появятся новые проблемы. Например, неочевидно, что делать с вызовами перегруженных функций, когда нельзя предсказать декларацию по вызову, и все зависит только от порядка опережающих деклараций.
>>825092
Даже без легаси пришлось бы делать что-то подобное, я думаю. Класс это нечто целостное, там без такого можно обойтись. А единица трансляции может состоять из хэдеров от разных авторов, и не всегда можно выбрать "единственный правильный для всего файла" набор перегрузок. Жизненный пример: ты хочешь специализировать шаблонную функцию из STL (это разрешено и применяется, например, для std::hash с нестандартными типами), но в самом хэдере она уже используется. Если поместить обе декларации (твою и шаблонную) в начало файла, то код хэдера может заюзать твою версию, чего никто не ждал. А так - пока идет хэдер, юзается стандартная, а дальше уже ты делаешь что хочешь.

Ответы>>825648

22 Авг, 18:00 #173 #825159

>>825110
>Если у тебя там указатель, зачем копировать B?
У него класс - владелец ресурса, похоже. При копировании хозяина надо копировать сам ресурс.

22 Авг, 18:01 #174 #825160

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

https://ideone.com/m4cuAF

Какая сложность у вычисления разности итераторов? Я использую разность вместо вызова std::distance, который в общем случае работает за O(n), но для вектора, вроде бы, за O(1). Можно ли тут уменьшить констату в сложности сортировки?

Ответы>>825248

22 Авг, 18:06 #175 #825163

>>825107
>>825110
Спасибо няши:3

22 Авг, 20:23 #176 #825248

>>825160
Для BidirectionalIterator гарантируется линейная сложность, как для distance, так и для разности. distance вообще нужно только для однородности кода, из-за того, что для однонаправленных разность недоступна.

За оптимизации сложно сказать. Формально было бы быстрее пихать единицы через emplace_back прямо в том же цикле, но фактически fill_n может использовать memset, который существенно быстрее. Можно параллелизовать fill_n, начиная с нового стандарта. Ну и возможности по байтоебству тут неисчерпаемые, от битовых полей вместр вектора до SIMD-инструкций, которые за пару тактов весь твой вектор свернут в бараний рог.

Ответы>>825912

23 Авг, 00:00 #177 #825439

У меня есть одна идея, приложение для морфа звука:
1. Идет постоянное считывание звука с одного из аудиоустойств
2. Этот звукобрабатывается морфером по определенному принципу
3. Создается новое аудиоустройство, которое воспроизводит полученный звук.
4. Само устройство ”подключается” только при запуске приложения.
Если кто-то подсказал бы что почитать по какому-либо пункту, я был бы крайне признателен, спасибо.
Проблемными кажутся только последние 2.

Ответы>>825442>>825452

23 Авг, 00:04 #178 #825442

>>825439
https://stackoverflow.com/questions/959660/how-to-implement-a-voice-changer

Ответы>>825444

23 Авг, 00:07 #179 #825444

>>825442
Надо было сказать что проблемы только с двумя последними пунктами.
Гуглить-то я умею

Ответы>>825445

23 Авг, 00:09 #180 #825445

>>825444
А.
Извиняй.
Это я в глаза долблюсь.

sage 23 Авг, 00:48 #181 #825452

>>825439
http://askubuntu.com/questions/421947/is-there-a-way-to-modulate-my-voice-on-the-fly

Ответы>>825455

23 Авг, 01:01 #182 #825455

>>825452
Знаешь, я могу и морфвокс юзать, мне интересно самому написать. А именно как морфвокс создал свой виртуальный микрофон и как сделать так же.

23 Авг, 02:23 #183 #825474

пара вопросов

1 Как поставить студию 2015 под вайн?
2 Кто-нибудь пробовальставить студию 2015 под вайн не веб-инсталлером, а с iso -образа?

Ответы>>825542

23 Авг, 08:19 #184 #825542

>>825474
ты ебанутый чтоли, это студио-уебище и на винде нинужно.

Ответы>>825743

23 Авг, 13:07 #185 #825648

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

23 Авг, 15:53 #186 #825743

>>825542
Ну не в notepad++ же писать

Ответы>>825759>>825761>>825854

sage 23 Авг, 16:04 #187 #825759

>>825743
Почему бы и нет?

23 Авг, 16:04 #188 #825761

>>825743
Пиши в Qt Creator, поставь msvc, собирай через cmake.
Подставить в Qt Creator любое IDE

Ответы>>825994

23 Авг, 17:29 #189 #825854

>>825743
я в нем пишу и ебал я в рот ваши иде, хотя эклипс заебись

Ответы>>825914>>828999

23 Авг, 18:44 #190 #825912

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

Ответы>>826603>>828231

23 Авг, 18:47 #191 #825914

>>825854
ты двойной говноед всего лишь.

Ответы>>825923

23 Авг, 18:59 #192 #825923

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

23 Авг, 19:42 #193 #825947

В use_factory создается shared_ptr на число, при этом счетчик ссылок на это число увеличивается. Указатель возвращается из функции, счетчик увеличивается еще раз, но уменьшается на 1 после выхода из функции use_factory. Указатель на число не сохраняется в функции main. Сколько будет ссылок на число и почему? В каком разделе стандарта об этом читать?

https://ideone.com/LuCMP8

Ответы>>825995

23 Авг, 20:29 #194 #825994

>>825761
Подставил Visual Studio 2015. Что дальше?

sage 23 Авг, 20:33 #195 #825995

>>825947
Каких ещё "ссылок на число"? make_shared создаёт int на куче говна.

Ответы>>825998

23 Авг, 20:38 #196 #825998

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

Ответы>>826000

sage 23 Авг, 20:39 #197 #826000

>>825998
И что ты хочешь от нас?

Ответы>>826064

23 Авг, 22:30 #198 #826064

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

24 Авг, 01:50 #199 #826133

Привет, я Кирилл, делаю 3д игру на плюсах для себя и из-за недостатка умений чувствую себя крайне неуютно. Я разбираюсь понемногу, вроде горячих вопросов у меня нет.
Но я хотел бы увидеть какие-нибудь примеры или коммьюнити тех, кто пишет подобное. Туториалы, гайды и лекции обычно или слишком общие расчитано на разработчиков другого софта с большим опытом или слишком специфичные одна фича, которую не очень понятно как аккуратно соединить с остальными.
Так вот, может у вас завалялись ссылки на исходники проектов 3d игр, созданных новичками. Лучше небольшие, грубые, недоделанные, незапускающиеся, третий год в разработке и так далее, если вы понимаете о чем я. Хотя бы просто чтобы посмотреть как другие делают. Я пытался вникнуть в коды квейк/дум, но там во-первых си, во-вторых столько оптимизации и макросов, что без гида не разобраться как это все вообще работает.

Ответы>>826246>>826286

24 Авг, 02:42 #200 #826138

Кто шарит, скажите, имеет ли смысл задавать выравнивание функторам? т.е если у нас такой функтор
struct Fun {
void operator()(...) { ... }
};

По-умолчанию у него размер 1 байт. Если добавить __attribute__((__aligned__(8))) то у него получается размер уже 8 байт. Имеет ли это вообще смысл по части увеличения производительности и улучшения кеширования?

Ответы>>826142

24 Авг, 03:35 #201 #826142

>>826138
1. зачем тебе функтор без членов? юзай функцию
2. никакого профита с выравниванием данных не будет --- у тебя же нет данных

24 Авг, 11:23 #202 #826246

>>826133
В сети куча книг, как зделоть игру от и до - нет, хочу жрать чужой говнокод.

Ответы>>826366

24 Авг, 12:11 #203 #826286

>>826133
https://github.com/id-Software/DOOM
https://github.com/Croteam-official/Serious-Engine

Ответы>>826366>>826382

24 Авг, 12:34 #204 #826302

Антуаны, решил начать изучать С++ (будем считать, что с нуля), но есть небольшая проблема:
- я на вахту уезжаю на месяц, тырнетов там нет и есть только некронетбук. Есть ли какие-нибудь IDE, которые смогут поставиться на хрюшку 32 разрядную?
В гугле забанен.

Ответы>>826369>>826381>>826424>>826430

24 Авг, 14:12 #205 #826366

>>826246
Тебе не приходило в голову, что я параллельно читаю несколько книг, но на код все равно хочется посмотреть?
>>826286
Пробовал сам коду ид разобраться? К тому же у них не плюсы, а чисто си.

Ответы>>826760

24 Авг, 14:15 #206 #826369

>>826302
культя. кодеблокс, эклипс, хз, но может и clion взлетит

86 Кб, 718x1024

24 Авг, 14:23 #207 #826379

Посоветуйте видеокурсы для вката, чтобы я одновременно качал бицуху и кресты.

sage 24 Авг, 14:24 #208 #826381

>>826302
Ставь прыщи и вим, нахуй тебе иде.

24 Авг, 14:24 #209 #826382

>>826286
Лол, дум 5 лет назад выложили, а чувство такое, что вчера об этом читал. Как же быстро я старею. Так и до появления модулей не доживу

24 Авг, 15:07 #210 #826424

>>826302
msvc 6

24 Авг, 15:11 #211 #826430

>>826302
notepad++ или vim, cygwin. прыщи не обязательно ставить, можешь накатить на хрюшку

Ответы>>826540>>826543

24 Авг, 17:38 #212 #826540

>>826430
>шиндошс
>ставь цыгвин
Лучше виртуалку с линуксом, в нем виртуалку с хп, а в ней цыгвин. Вот это тру будет ебать.

Ответы>>826576

24 Авг, 17:40 #213 #826543

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

24 Авг, 18:23 #214 #826576

>>826540
Да хватит просто в виртуалке студию под вайном поднять.

24 Авг, 20:00 #215 #826603

>>825912
Бамп вопросу. Хочу писать йоба-сортировки с использованием SIMD.

24 Авг, 23:02 #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

24 Авг, 23:25 #217 #826760

>>826366
Ну хуй знает. Самое современное из того, что я знаю с открытыми сырцами - UE4. Например, http://rutracker-pro.org/viewtopic.php?t=368955

24 Авг, 23:44 #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

24 Авг, 23:48 #219 #826785

>>826782
Костыль уровня AbstractSingletonProxyFactoryBean, но ты молодец.

Ответы>>826789

24 Авг, 23:51 #220 #826789

>>826785
Если бы у тебя был шаблон класса, а не функции, то все бы решалось еще проще - просто через alias template, вложенный в шаблон с единственным параметром. Писалось бы TvoyaMamka <MyFoo>::my_function (...) без всяких дополнительных оберток. Поэтому если есть выбор, лучше всегда сделать шаблон класса и работать уже с его методами. Тогда можно делать частичную специализацию, синонимы и много другой полезной хуеты, которую нельзя с функциями.

25 Авг, 01:02 #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(...)

25 Авг, 22:18 #222 #827296

Ананасы.
У меня вопрос не касательно языка, но всё же около него.
Мне нравится Qt creator (исключительно как IDE, то есть фреймворком Qt я не занимаюсь), но мне не ясна их политика лицензий.
Я так понимаю их лицензии касаются ПО в котором есть какие-то компоненты фреймворка Qt?

Ответы>>827308>>827454

25 Авг, 22:36 #223 #827308

>>827296
Юзай Clion.
/thread

Ответы>>827310

25 Авг, 22:36 #224 #827310

>>827308
> Юзай Clion.
640 Гб хватит всем. © JetBrains

26 Авг, 01:34 #225 #827454

>>827296
Вроде да, у Qt Creator, по идее, должна быть отдельная лицензия. Если в ней не говорится о "только некоммерческом использовании", то можешь писать код без использования фреймворка, и все будет легально.

Ответы>>827455

26 Авг, 01:35 #226 #827455

>>827454
Отдельное EULA, в смысле.
быстрофикс

130 Кб, 1448x945

26 Авг, 06:18 #227 #827483

Делаю N-Body симулятор под ЦПУ и ГПУ AMP не могу найти литературу по этой части, интересует как можно упростить расчеты, разбиение на ячейки и пр. Как N-body вообще переводится на русский язык?
http://pastebin.com/kgAdLp1p

Ответы>>827485>>827665

sage 26 Авг, 06:32 #228 #827485

>>827483
>N-body
многих тел

Ответы>>827490>>827491

158 Кб, 853x731

176 Кб, 821x700

26 Авг, 06:37 #229 #827490

>>827485

Ответы>>827491

26 Авг, 06:40 #230 #827491

>>827485
>>827490
А вот, всё.
https://ru.wikipedia.org/wiki/Гравитационная_задача_N_тел

26 Авг, 13:04 #231 #827665

>>827483
Сам в юношестве делал на GPU такую симуляцию.
Вот хорошая статья https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch31.html

Ответы>>828476

26 Авг, 18:24 #232 #827961

Есть такое определение многомерного массива

int x[5][10];

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

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

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

Ответы>>827964>>827975>>828042>>828045

26 Авг, 18:28 #233 #827964

>>827961
>y[20]
а чем он от y[2][10] отличается?

Ответы>>827968

26 Авг, 18:32 #234 #827968

>>827964
Ну я в первом варианте не могу стукнуться к самому первому элементу вот так

y[0][0]

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

26 Авг, 18:41 #235 #827975

Бамп вопросу
>>827961

Ответы>>827988

26 Авг, 18:59 #236 #827988

>>827975
Это просто разная форма описания куска памяти. Доступ y[6] превращается в y + 6, в другом случае y[6][3] превращается в y + 6*x + 3 где x одна из размерностей массива. Если x неизвестно, то хуй пойми как выполнять доступ к элементам этого массива по двум индексам. Поэтому в данном случае одну размерность при передаче в метод и надо указывать. По моему, как-то так. Для трехмерного массива наверняка надо две размерности указывать. Хотя я могу и наврать.

Ответы>>828008>>828140

26 Авг, 19:16 #237 #828008

>>827988
Немного не понял вот здесь:
>y[6][3] превращается в y + 6x + 3
x - это размерность вторая, типо например y есть y[10][15], тогда y[6][3] y + 615 + 3. Так. Тогда, если мы не передадим 15, действительно, неизвестно куда стукаться? Спасибо, анон, ты действительно мне помог, спасибо большое!

Ответы>>828012

26 Авг, 19:19 #238 #828012

>>828008
y есть y[10][15] (в определении массива), тогда y[6][3] y + 6*15 + 3.
быстрофикс

sage 26 Авг, 19:43 #239 #828042

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

Ответы>>828058>>828105

sage 26 Авг, 19:47 #240 #828045

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

Ещё раз: никакого отличия от одномерных.

Ответы>>828105>>828110

26 Авг, 19:57 #241 #828058

>>828042
но тогда если decay до указателей, тогда твой ответ неверный: такой массив, например

int x[5][2];

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

void VoidFunc(int*);

VoidFunc(x);

Ответы>>828064>>828073>>828116

sage 26 Авг, 20:00 #242 #828064

>>828058
>тогда твой ответ неверный
Он верный, просто ты нихуя не понимаешь, как распадается многомерный массив до указателя. До указателя на ЧТО он распадается. См. мой следущий мессадж.

sage 26 Авг, 20:12 #243 #828073

>>828058
Если тебе так трудно выучить правила чтения определения типа в C/C++, возьми и посмотри, во что std::decay превратит твой int[5][2]

И потом хорошо подумай, почему это верно. Почему это согласуется и с layout-ом массивов в памяти, и с арифметикой указателей, и с правилом array-to-pointer decay. И как правильно читать определение типа многомерного массива.

Ответы>>828076

26 Авг, 20:16 #244 #828076

>>828073
Ни в коем случае не хотел тебя оскорбить, если что. Сейчас допишу я вообще хуесос

26 Авг, 20:33 #245 #828105

>>828042
Ты можешь сказать, КАК распадается массив до указателя. Ты написал вот что:
>Потому что массивы decay до указателей при передаче в функцию.

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

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

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

Ответы>>828107>>828110

26 Авг, 20:33 #246 #828107

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

фикс

sage 26 Авг, 20:35 #247 #828110

>>828105
>Все работает как сказал чувак в >>828045 посте?
Кагбэ "чувак" это и есть я. Я же написал, читай мой следующий мессадж. Следующий за тем, на который ты ответил.

Ответы>>828127

sage 26 Авг, 20:40 #248 #828116

>>828058
http://ideone.com/yHEV1N раз
http://ideone.com/npKCcE два

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

Вот теперь подумай, какая должна быть сигнатура у функции, чтобы туда можно было передать int[5][2]

Ответы>>828129>>828140>>828174

26 Авг, 20:44 #249 #828127

>>828110
Еще раз хочу акцентировать внимание, если тебе показалось что я хочу тебя задеть - это не так. Спасибо, реально спасибо, что тратишь на меня время.

26 Авг, 20:45 #250 #828129

>>828116
>int[5][2]
Какой же ты говноед. и лабодаун

Ответы>>828144

26 Авг, 20:50 #251 #828140

>>828116
ебать как там все сложно с темплейтами.

Ясен хуй, надо передавать int [][2], это я понял из ответа >>827988

Ответы>>828152

26 Авг, 20:50 #252 #828142

Поясните, почему если int поделить самого на себя, то получается не 1, а если double, то 1?

Ответы>>828147>>828149

26 Авг, 20:51 #253 #828144

>>828129
Хули тебе блядь не нравится? Скажи блядь, заебал, хули выебываешься?

sage 26 Авг, 20:52 #254 #828147

>>828142
Так угодно Аллаху

Ответы>>828148>>828151

26 Авг, 20:52 #255 #828148

>>828147
Нет, ну правда?

26 Авг, 20:52 #256 #828149

>>828142
Если инт поделить самого на себя то будет 1

Ответы>>828159>>828240

sage 26 Авг, 20:53 #257 #828151

>>828147
Ну здравствуй, вниманиемразь. Я тебя не забыл.
сагу сними, аутист.

Ответы>>828153

sage 26 Авг, 20:53 #258 #828152

>>828140
Суть второй ссылки была в том, что int[5][2] это кагбэ (int[2])[5]

Ответы>>828156

sage 26 Авг, 20:54 #259 #828153

>>828151
Ты, наконец, понял, что const means thread-safe?

Ответы>>828167

26 Авг, 20:55 #260 #828156

>>828152
ебать, блядь, я чето не успел даже разобраться пока. Нихуя себе, с хуя ли это так... пдзц

Ответы>>828238

34 Кб, 1181x601

26 Авг, 20:56 #261 #828159

>>828149
Вот, если инт, то почему-то выводится 100 и 99, например. А если дабл, то ок.

Ответы>>828163>>828168

26 Авг, 20:58 #262 #828163

>>828159
пиздец, я считаю себя дауном (это я тут ебусь насчет массивов) но ты пиздец, очевидно в строке

(i/j==1)

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

(i/(j==1))

В скобки деление заверни

Ответы>>828165

26 Авг, 20:59 #263 #828165

>>828163
или я неправ, похуй, написал через секунду после того как увидел пост

Ответы>>828166

sage 26 Авг, 21:00 #264 #828166

>>828165
>или я неправ
Тут можешь не сомневаться: не прав.

Ответы>>828168

sage 26 Авг, 21:00 #265 #828167

>>828153
Я в том параде дегенератов и не участвовал - ты меня с кем-то путаешь.

Ответы>>828171

26 Авг, 21:00 #266 #828168

>>828166
Поясни тут: >>828159

Ответы>>828172

sage 26 Авг, 21:01 #267 #828171

>>828167
Тогда в чём проблема, мразь? Чай будешь?

sage 26 Авг, 21:03 #268 #828172

>>828168
Ну при целочисленном делении округляется в сторону меньшего. 100/75 = 1.(3), что есть единица в целочисленной арифметике.

Ответы>>828175

26 Авг, 21:04 #269 #828174

Блядь, пиздец, ало че за хуйня вот тут в первой ссылке? >>828116

Это каким хуем там 5? И вообще это законно? Как это работает? Почему темплейт схавал [5][2] как просто [5]? Это как вообще? Что почитать, чтобы перестать быть такой необразованной мразью?

Ответы>>828198

26 Авг, 21:07 #270 #828175

>>828172
Cпасибо, понял. Тогда юзаю дабл?

Ответы>>828281

2 Кб, 387x116

sage 26 Авг, 21:26 #271 #828198

>>828174

Ответы>>828200

26 Авг, 21:29 #272 #828200

>>828198
Это не ответ. Это я и так понимаю

Ответы>>828202

sage 26 Авг, 21:30 #273 #828202

>>828200
А что "ответ"?

Ответы>>828215

26 Авг, 21:37 #274 #828215

>>828202
Сори, бля я тупой пиздец. Получается, если
x[5][2] - это array 5 of array 2 of int,
то в аналогии, что array N of int преобразуется при передаче в функцию как int, то
x[5][2] преобразуется как int x[2] ? Это правильно?
Можно еще вопрос? Где это говно, прочитать из нормальных источников?

Расскажи еще о себе? Как стал таким пиздатым?в плюсах

Ответы>>828216>>828219>>828222

26 Авг, 21:37 #275 #828216

>>828215
разметка ебаная, в int\*!

sage 26 Авг, 21:39 #276 #828219

>>828215
> Это правильно?
Ещё скобки нужны. int (*x)[2]

Ответы>>828227

sage 26 Авг, 21:43 #277 #828222

>>828215
>Где это говно, прочитать из нормальных источников?
http://unixwiz.net/techtips/reading-cdecl.html

Ответы>>828230

26 Авг, 21:46 #278 #828227

>>828219
Получается, преобразуется в массив указателей на 2 aka int (x)[2] а не указатель на массив из двух int x[2]? Почему так? Где почитать мануал об этом?

Ответы>>828233>>828235>>828236

26 Авг, 21:47 #279 #828230

>>828222
это я знаю, как читать типы. Разве там есть, как преобразуются типы при передачу в функции?

Ответы>>828236

26 Авг, 21:47 #280 #828231

>>825912
Слоуответ.
Ну, самое простое это прямо с вектором байтов (без битовых полей, чтобы на каждое число было по байту). Вот тут https://software.intel.com/sites/landingpage/IntrinsicsGuide/, например, референсы для Intel, при помощи функций с ...add... в имени можно сделать, чтобы, скажем, 16 байтов сложились в один при помощи единственной векторной инструкции. Соответственно, производительность может вырасти на порядок.

26 Авг, 21:48 #281 #828233

>>828227
БЛЯДЬ СКА ВАКАБА ГДЕ МОИ ЗВЕЗДАЧКИ ПИДОООР

26 Авг, 21:49 #282 #828235

>>828227
фикс, первое это указатель на массив из двух, а второе массив из двух указателей

sage 26 Авг, 21:49 #283 #828236

>>828227
>Получается, преобразуется в
Наоборот. Но для надёжности напиши на past ebin-t
>>828230
> как преобразуются типы при передачу в функции?
ARRAY TO POINTER DECAY, сколько раз можно писать.

26 Авг, 21:51 #284 #828238

>>828156
Грамматика такая. Гугли right-left rule.

Ответы>>828241

26 Авг, 21:53 #285 #828239

Ребята, спасибо всем, я тот уебак который заебал тут всех с массивами. Большое спасибо!

70 Кб, 658x836

26 Авг, 21:54 #286 #828240

>>828149
int x = 0; x/=x;

Ответы>>828243

26 Авг, 21:54 #287 #828241

>>828238
да блядь, это хуйня, как читать названия я знаю, как происходит "decay" съебался гуглить

Ответы>>828244

26 Авг, 21:54 #288 #828243

>>828240
ой блядь, ебаный в рот смищно пошутил, мое увожение

Ответы>>828247

sage 26 Авг, 21:55 #289 #828244

>>828241
> как происходит "decay" съебался гуглить
Что там гуглить. "array N of T" превращается в "pointer to T"

Ответы>>828245

26 Авг, 21:57 #290 #828245

>>828244
блядь, ты тред читал? А array N of array M во что превращается?

Ответы>>828249

26 Авг, 21:58 #291 #828247

>>828243
Из-за таких как ты, сука, потом ракеты падают, а рентгеновские аппараты убивают пациентов.

sage 26 Авг, 21:58 #292 #828249

>>828245
> А array N of array M во что превращается?
> "array N of T" превращается в "pointer to T"
Что неясно?

Ответы>>828251

26 Авг, 21:59 #293 #828250

Я давно подзабросил изучение С++, но сегодня я вернулся, даже 1 задачку с учебника страуструпа по вычислению простых чисел сделал - я молодец!

Ответы>>828353

16 Кб, 734x175

26 Авг, 21:59 #294 #828251

>>828249
все, я еблан, убей меня

с пика понял все

26 Авг, 22:24 #295 #828281

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

Ответы>>828284

26 Авг, 22:28 #296 #828284

>>828281
> if (i % j == 0) ...
Фикс.

## Mod ## 26 Авг, 22:42 #297 #828297

Хотелось бы обратить ваше внимание, что макаба написана на C++. Впрочем, не только макаба, но и вообще все сервисы, такие как капча, мобильное апи и т.д.
Любите C++, ребятки. И когда php блядь кодер вылезет кукарекнуть сказать что-нибудь про свой любимый язык, просто напомните ему его место.
(Автор этого поста был предупрежден.)

Ответы>>828301>>828303>>828306>>828310>>828311

26 Авг, 22:44 #298 #828301

>>828297
Ах ты пидор, ты правила не чилал? тебе нельзя появляться и что-то говорить.

26 Авг, 22:45 #299 #828303

>>828297
А почему капча не на пхп?

26 Авг, 22:47 #300 #828306

>>828297
> Хотелось бы обратить ваше внимание, что макаба написана на C++
Может быть стоит как-то помочь родной макабе если есть какие-то интересные задумки, м?

sage 26 Авг, 22:48 #301 #828310

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

26 Авг, 22:49 #302 #828311

>>828297
>Хотелось бы обратить ваше внимание, что макаба написана на C++
Оно и видно, кек. Твой пост звучит как "Иван Залупин окончил только колледж и создал Одноклассники.ру".
perl-monk

Ответы>>828344

26 Авг, 23:14 #303 #828344

>>828311
Что сказать-то хотел?

26 Авг, 23:24 #304 #828349

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

Ответы>>828359

26 Авг, 23:26 #305 #828353

>>828250
Молодец. Когда нормально вкатишься как раз модули завезут.

26 Авг, 23:30 #306 #828359

>>828349
>9 лет с нуль.чика кун
Представь ситуацию. Господа в смокингах и цилиндрах сидят в обедне и пьют чай, обсуждая катаморфизмы, анаморфизмы, параморфизмы наконец. Тут к ним вползает пьяный вдрызг кучер Ванька. Отплевывая лошадиный навоз, он ссыт под себя, одновременно блюя на пол прокисшим борщом. Затем достает задроченный томик Александреску, найденный на помойке. "Modern C++ Design - вот где мыслЯ, блеать, вот где красота и свежесть!". Смеясь, господа растегивают ширинки и мочатся быдлу в рот. Зовут дворника Ваську - местного лисп-задрота, он спускает крестохолопа с лестницы. Он делает это с удовольствием - хоть зачем-то сгодился элите. Поднимаясь за похвалой, он начинает зациклено бормотать про жидов. Господа для острастки ссут на него, после чего возвращаются к своим светским беседам.

27 Авг, 03:46 #307 #828476

>>827665
Благодарствую.

27 Авг, 12:44 #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

27 Авг, 13:47 #309 #828634

Если у меня есть объект функтор
struct Functor
{
void operator()(int& i)
{
i = 0;
}
};

int main() {

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

f(j);
}
return 0;
}

будет ли он каждый выделять память при создании в цикле или будет просто опущено создание объекта и напрямую вызвана функция ()?

Ответы>>828664

27 Авг, 14:14 #310 #828653

>>828612
Это что, платиновый пост? Уже в каждом втором треде всплывает вопрос про copy elision. Неужели так сложно открыть стандарт и прочитать пункт 12.8/31?

Ответы>>828695

27 Авг, 14:28 #311 #828664

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

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

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

Ответы>>828688

27 Авг, 14:49 #312 #828688

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

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

27 Авг, 15:01 #313 #828695

>>828653
Спасибо брат, ты мне помог!

27 Авг, 16:47 #314 #828766

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

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

Ответы>>828808>>829162

27 Авг, 17:01 #315 #828790

Двач, хочу немного пошалить.

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

Ответы>>828810>>828883

27 Авг, 17:17 #316 #828808

>>828766
>std::async
Просто не пользуйся этим.

27 Авг, 17:19 #317 #828810

>>828790
> отправит мне на сервер
Интересно, как ты собрался это делать.

Ответы>>828812

27 Авг, 17:19 #318 #828812

>>828810
А в чём здесь, собсно, проблема?

Ответы>>828818

27 Авг, 17:21 #319 #828818

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

Ответы>>828821>>828863>>828883

27 Авг, 17:23 #320 #828821

>>828818
Лол, с чего ты взял?

27 Авг, 17:44 #321 #828840

Анон, как заксорить всю строку, чтобы залить программу с ней на вирустотал? https://ideone.com/rmveEz

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

Ответы>>828847

27 Авг, 17:55 #322 #828847

>>828840
Заменить единственный обратный слеш на двойной (\\).

Ответы>>828850

27 Авг, 18:01 #323 #828850

>>828847
Не помогает. Последовательность после ксора почти в два раза короче исходной.

https://ideone.com/UHFtNW

Ответы>>828869

27 Авг, 18:16 #324 #828863

>>828818
Лол, ты ебанутый?

27 Авг, 18:20 #325 #828869

>>828850
Представь себе, существуют непечатаемые символы.

27 Авг, 18:30 #326 #828883

>>828790
Если учитель продвинутый, то он, конечно использует песочницу, как говорит >>828818-кун. Так сделано в том же ejudge, например. Но часто препод бывает алтимейт совком, который вообще ничего не слышал про ИБ, и запустит он твой код на какой-нибудь хрюше из-под DevCpp. Так что попробовать можно.

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

Ответы>>829007

27 Авг, 18:57 #327 #828908

Интересно. Удалось снизить детект антивирусов с 11 до 2. Кспермский не кукарекнул, зато мой кодес задетектили два каких-то ноунейм бича Инвинсиа и Киху.

https://ideone.com/pPRUJ0

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

27 Авг, 19:11 #328 #828917

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

27 Авг, 20:03 #329 #828971

Господа, как лучше писать криптор: по принципу упаковщика, который криптует секцию кода, дописывает декриптор в конец и передает ему управление при запуске, или по принципу джойнера, к которому прицепляется зашифрованный экзешник, а в лоадере джойнера используется антиэмуляция?

Думаю над второй реализацией. Лоадер расшифровывает прицепленный экзешник и запускает. Как реагирует антивирус на этот запуск? Сначала запускает экзешник на своей виртуальной машине и проверяет сигнатуры?

27 Авг, 20:48 #330 #828999

>>825854
>>825854
Говно без задач и с настройками через жопу из коробки

27 Авг, 21:13 #331 #829007

>>828883
Препод не сказать, что не продвинутый, но по поводу ИБ париться не будет почти точно (молодой парень преподаёт). Вообще я как-то забыл посмотреть на паре какой у него ноут, но есть не маленькая вероятность, что МакОС ибо у нас вообще у многих преподов маки.
Ну и у него точно не древняя винда. Энивей, спасибо за ответ.

Ответы>>829049

27 Авг, 22:18 #332 #829049

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

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

Ответы>>829057

27 Авг, 22:27 #333 #829057

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

Да, я примерно об этом и думал.

27 Авг, 22:48 #334 #829069

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

28 Авг, 02:38 #335 #829162

>>828766
>Вот и вопрос как сделать с std::async, std::future тоже самое?
Явный планировщик с пулом потоков, явный запуск задач на планировщике.

28 Авг, 15:35 #336 #829505

С какими флагами надо компилировать на clang чтоб была максимальная совместимость с gnu gcc? То есть чтоб не было отсутвующих хедеров, разных type castov и т.п, чтоб можно было писать под clang и не заморачиваясь прям из коробочки билдить на gcc?
А то я столкнулся с такой проблемой написав проект на цланге, который не компилируется без костылей на гцц...

Ответы>>829541

28 Авг, 15:50 #337 #829517

Анон, почему этот код крашится? Что не так с освобождением памяти? Ведь нулевой указатель можно освободить.

https://ideone.com/TY2Iic

Ответы>>829527>>829531>>829544

28 Авг, 15:55 #338 #829527

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

Ноуп

Ответы>>829530

28 Авг, 15:56 #339 #829530

>>829527
Йеп.

28 Авг, 15:56 #340 #829531

>>829517
Ты два раза освобождаешь. В первый раз вручную, второй раз освобождает shared_ptr

Ответы>>829544

28 Авг, 16:11 #341 #829541

>>829505
Я думаю, если не использовать блоки, то они полностью совместимы.

Недавно столкнулся с тем, что то, что компилируется шлангом не компилировалось g++. Оказалось, это известный language issue и шланг с g++ ведут себя по-разному, т.к. стандарт невнятно оговаривает поведение. Пришлось чуть переписать одну строку (с инициализации с помощью = на brace initialization) чтобы стало компилироваться и там, и там.

Ответы>>829670

28 Авг, 16:13 #342 #829544

>>829517
>>829531
Предвидя вопрос "как отобрать указатель у shared_ptr?": никак.

28 Авг, 17:58 #343 #829619

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

Ответы>>829632

28 Авг, 18:12 #344 #829632

>>829619
Сам спросил - сам отвечу.
cout << fixed;
cout.precision(n);

28 Авг, 18:23 #345 #829637

>>829593
Не планируй, пиши браузер прямо сейчас - потом не напишешь, останешься макакой на всю жизнь.
Если напишешь наскоряк хрень с асинхронной тред-базед продгрузкой страниц и поддержкой расширений, тебя возьмут куда угодно, даже если рендерятся нормально только половина страниц.
Дерзай.

28 Авг, 18:49 #346 #829670

>>829541
>известный language issue
Можно ссылочку?

Ответы>>829680

28 Авг, 18:54 #347 #829680

>>829670
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#325 промотай в конец, до Notes from the August, 2011 meeting. На этот случай с инициализацией мембера шаблоном я наткнулся.

Ответы>>829882

28 Авг, 19:59 #348 #829737

Есть куча классов, все находятся в одном .h-файле. Имя каждого класса начинается с нижнего подчеркивания.(например: _classname). После импелментации каждого класса идет тайпдеф: "typedef _classname classname;". В заголовочного файла идет подключение .inl-файла, в нем реализация этих классов. В чем фейл: Несмотря на тайпдефы, юзание classname в последующих классах не дается. intellisense тупо не распознает тип(classname). Раз тип начинается с нижнего_подчеркивания, а последующий симол в нижнем регистре, значит, класс по-умолчаню будет находится в глобальном неймспейсе? Только влияет ли оно? Пробовал переименовать classname в рандомный набор букв, ну и подставить где надо соответственно. И ошибок небыло. Что за хуйня!

Ответы>>829743

28 Авг, 20:05 #349 #829743

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

Ответы>>829759

28 Авг, 20:27 #350 #829759

>>829743
http://stackoverflow.com/questions/228783/what-are-the-rules-about-using-an-underscore-in-a-c-identifier

Ответы>>829762

sage 28 Авг, 20:30 #351 #829762

>>829759
Я тебе про это и говорю, что ты нихуя не понял.

Такие имена зарезервированы для определённых мест. Но это не значит, что если ты так назовёшь, то твои классы в эти места попадут.

Ответы>>829774

28 Авг, 20:43 #352 #829774

>>829762
Спасибо за инфу. А что насчет конкретно моей траблы?

SAGE 28 Авг, 22:15 #353 #829869

Гутен таг гоям.

Почему если определён move-constructor,
то синтезированный copy-constructor будет deleted?

Ответы>>829881

28 Авг, 22:27 #354 #829881

>>829869
Потому что rule of five. Считается, что если ты кастомизируешь хотя бы одну из пяти операций (копирование, перемещение, конструктор копирования, конструктор перемещения, деструктор), то с классом нельзя работать дефолтно (например, из-за членов-дескрипторов или еще чего-то), поэтому оставшиеся операции удаляются, чтобы ты не мог выстрелить себе в ногу.

Ответы>>829917

28 Авг, 22:27 #355 #829882

>>829680
Спасибо, няша.

28 Авг, 22:57 #356 #829916

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

Ответы>>829923

28 Авг, 22:58 #357 #829917

>>829881
829916

28 Авг, 23:00 #358 #829923

>>829916
А что, тебе не выдаётся ошибка компиляции, когда ты пытаешься воспользоваться удалёнными методами?

Ответы>>829937

26 Кб, 580x386

Прата 28 Авг, 23:11 #359 #829936

поясните,плиз, почему в первом шаблоне аргумент - адрес (&a),а во втором - указатель (*a)? И как не запутаться?
http://ideone.com/AzHnfm

Ответы>>829940

28 Авг, 23:12 #360 #829937

>>829923
Раньше выдавалась, но я обновился до Windows 10, теперь всё нормально

28 Авг, 23:15 #361 #829940

>>829936
>адрес
>(&a)

Кик
Зато понаписал шаблонов и оверлоадингов

71 Кб, 701x291

28 Авг, 23:35 #362 #829970

Всё, с меня хватит.
Идите на хер с вашим программированием.
неосилятор

Ответы>>829974>>830040>>830125

28 Авг, 23:54 #363 #829974

>>829970
Слабовато для крестотреда, местных даже http://ideone.com/uTBv1S не смущает.

Ответы>>830467>>830697>>830823

29 Авг, 01:53 #364 #830040

>>829970
Сейчас бы метод класса вне его видимости не определить

29 Авг, 05:35 #365 #830079

Почему в шапке не указаны QtCreator и KDevelop, студия не нужна а под ней какая-то параша указана.

Ответы>>830085

29 Авг, 07:08 #366 #830085

>>830079
Потому что в шапке работающие IDE, а не говноподелия.

Ответы>>830102

29 Авг, 08:02 #367 #830102

>>830085
>говноподелия
Причём здесь Windows? Ещё Code::Blocks кстати неплох, но в первых автодополнение и организация проектов лучше. Студия зашквар, под MSVC нужно переделывать все исходники и в нормальные проекты такое не пропустят.

Ответы>>830104>>830427

29 Авг, 08:31 #368 #830104

>>830102
Нахуя тебе переделывать исходники, лол? Нормальные проекты пишутся нормальными командами, с пачкой студий и TFS в комплекте. Швадобные нищепроекты пишутся на гнутых тулчейнах. Пересечения у этих экосистем практически нет, просто не нужно подменять понятия.

Ответы>>830169

29 Авг, 10:04 #369 #830125

>>829970
Из какой книги скрин?

Ответы>>830416

29 Авг, 11:18 #370 #830169

>>830104
Как там в нулевых?

Ответы>>830439

29 Авг, 15:57 #371 #830416

>>830125
"С++ без страха".

29 Авг, 16:07 #372 #830427

>>830102
Я нюфаня, но мне code blocks тоже очень понравилась, правда сравнить могу только с code lite.
Кстати да, а почему её в шапке нет?

29 Авг, 16:24 #373 #830439

>>830169
Заебись, купил с последней зарплаты телефон с сенсорным экраном.

29 Авг, 16:57 #374 #830467

>>829974
Что это за пиздец?

Ответы>>830559

29 Авг, 19:07 #375 #830559

>>830467
Это корректный в C++14 код.

Ответы>>830663

29 Авг, 20:35 #376 #830663

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

Я подобные хуйню до этого видел только на хабре в срамах про добавление вывода типов в жяву: там разработчики реально трясутся что если добавить кейворд var в язык это доху всего сломает.

29 Авг, 21:03 #377 #830697

>>829974
Блядь, где об этом говне читать?

Ответы>>830859

29 Авг, 22:22 #378 #830823

>>829974
Поясните что означает эта конструкция: final: final final {final};
Интересует именно херня с двоеточием

Ответы>>830859

29 Авг, 23:18 #379 #830859

>>830697
Я придумал эту хуйню, когда прочитал в стандарте про идентификаторы со специальным значением.
>>830823
Помеченная меткой final локальная переменная класса final с именем final, инициализированная сама собой. using final = final нужен для большего устрашения, чтобы показать, что в контексте инициализатора имя инициализируемой переменной перекрывает имя класса, если явно не делать elaborated объявление.

Ответы>>830862>>830972

29 Авг, 23:27 #380 #830862

>>830859
http://ideone.com/fsq6MA
Полная дрянь, яннп. Я одиннадцатый стандарт то не докурил, а тут ещё этот пиздец. Можно на собеседованиях показывать, лол.
Понимаешь, нахуя такой вывод происходит?

Ответы>>830869

29 Авг, 23:40 #381 #830869

>>830862
Ну очевидно же. В деструкторе создается локальная переменная типа, который удаляется, вызывается ее деструктор, в котором создается локальная переменная... Получается банальное переполнение стека. Самый внешний файл ты создаешь своим конструктором, с i==0, выводится 0. Для всех остальных (которые создаются в деструкторах) юзается конструктор копирования из неинициализированного создаваемого объекта, поэтому в i мусор.

Ответы>>830871

29 Авг, 23:42 #382 #830871

>>830869
>самый внешний объект
Очевидный самофикс.

30 Авг, 07:51 #383 #830972

>>830859
А, бля, просто метка. Я уж было испугался, что это какая-то новая неведомая дичь

30 Авг, 09:47 #384 #831017

Шел 2016 год, а лалки все не знали про дамп ast у clang'а

koshmarik uzhasny 30 Авг, 11:04 #385 #831050

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

Ответы>>831339

30 Авг, 16:51 #386 #831312

Посоветуйте софт, для обнаружения cache miss-ов.

Ответы>>831322

30 Авг, 17:02 #387 #831322

>>831312
https://courses.cs.washington.edu/courses/cse326/05wi/valgrind-doc/cg_main.html

30 Авг, 17:28 #388 #831339

>>831050
Посмотри всякие попенсорц проекты на гитхабе, найди там себе что-нибудь интересное и вкатывайся туда.

31 Авг, 01:30 #389 #831679

В указателях хранятся какие-то циферки. Что они значат? Если я выведу указатель на функцию на экран, а потом введу его ручками в другую программу, то я смогу запустить эту функцию из другой программы? Проверил. Ошибка сегментации. Почему?

Ответы>>831682>>831752>>831952

sage 31 Авг, 01:38 #390 #831682

>>831679
Это платиновый пост?

31 Авг, 08:25 #391 #831752

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

Ответы>>831757

31 Авг, 08:46 #392 #831757

>>831752
> Читай про виртуализацию памяти
Чёт сложно. А где список всех этих страниц хранится? понял что в таблице страниц но что этоКак ос узнаёт какая память занята и кем? Куда она это пишет? Кстати если процессору якобы доступна вся память, то почему числа в указателях идут не от нуля и так сильно отличаются друг от друга?википедии наверно недостоточно. Что ещё почитать?

Ответы>>831952>>831961

31 Авг, 12:41 #393 #831885

В ебаной студии 2015 комьюнити возникло сообщение Update your trial license. Какого хуя? Я же бесплатную студию качал.

Ставил на нее английский языковой пак, если что.

Ответы>>833104>>833223

31 Авг, 14:47 #394 #831952

>>831679
>>831757
Съеби в ньюфаг-тред.

31 Авг, 14:55 #395 #831956

>>821402 (OP)
Ньюфаня вкатывается в тред. Изучаю кресты, хотя до этого ни один язык не изучал. Мне нравится язык, но для меня он очень громоздкий совсем чуть-чуть. Планирую написать какую-нибудь серьёзную вещь, может что-то типа большого алгебраического калькулятора. Язык начал изучать месяц назад, плачу за курсы 2к рублей в месяц, их ведёт тетка, которая окончила тульский мехмат. На занятиях нам дают простенькие, на первый взгляд, задачки. Компилятор называется "Bloodshed Dev-C++". Как думаешь, анон, стоит ли писать на этом компиляторе? В данный момент только скачал изучаю книги из шапки. Может бородатые опытные дяденьки чего-нибудь посоветуют? И вообще жду от тебя советов в стиле: "вот так делай!" или "подучись немного!".

Ответы>>831964>>832386

31 Авг, 14:57 #396 #831961

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

31 Авг, 14:57 #396 #831961

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

Показать весь текст
Ответы>>832099

31 Авг, 15:01 #397 #831964

>>831956
>какую-нибудь серьёзную вещь
>что-то типа большого алгебраического калькулятора
Это примерно уровень laba2.cpp. laba1.cpp это класс матриц, laba3.cpp - интерпретатор паскаля.

Ответы>>831967>>832203

31 Авг, 15:04 #398 #831967

>>831964
Чому такие термины сложные? Я только-только начал. Объясни на пальцах, если не сложно

Ответы>>832330

31 Авг, 17:50 #399 #832099

>>831961
Спасибо

31 Авг, 19:46 #400 #832203

>>831964
C лабой 3 напиздел, а так всё так

Ответы>>832325

31 Авг, 21:27 #401 #832325

>>832203
На ВМК было именно так, за другие вузы не скажу, но вряд ли сильно отличается.

Ответы>>833225

31 Авг, 21:29 #402 #832330

>>831967
Матрица это прямоугольная таблица с числами, как шахматная доска типа. Интерпретатор паскаля - программа, в которую загоняешь текст программы на паскале, и она ее выполняет. Как PascalABC, только самописный.

Ответы>>832368

31 Авг, 21:58 #403 #832368

>>832330
Спасибо, няша

31 Авг, 22:13 #404 #832386

Я вот этот кун >>831956
Прочитал сегодня пару глав первой книги из шапки. И знаете? Мне захотелось стать программистом! Спасибо разработчикам этого раздела, спасибо Страуструпу за книгу и за язык, спасибо добрым анонам и отдельная благодарность пауку Аркадию.

Ответы>>832767

35 Кб, 600x596

01 Сен, 14:39 #405 #832767

>>832386
Про переводчиков все как всегда забыли.

Ответы>>833425>>833533

01 Сен, 20:37 #406 #833104

>>831885
>license
Бамп.

01 Сен, 21:09 #407 #833154

Сап, программач. У меня встал вопрос: как составить план обучения? Под конец лета начал читать книгу Страуступа по c++ (Принципы и практика использования C++). Прочитал ее до 7 главы. Очень понравился с++ и хотелось бы учиться и работать в этом направлении. Учусь я на 3 курсе колледжа, который находит под управлением гос. университета (город 200 тыс. человек). Сейчас с началом обучения, нам сказали, что будут преподавать c++, ооп в нем же, бд и много чего еще. Хотелось бы знать о тонкостях языка и прочих мелких важных деталях, но я не уверен, что в колледже нам его дадут в том объеме, в котором я хочу его изучать. В добавок из-за большого количества студентов мою группу поставили во 2-ую смену, а это учеба с двух до восьми. Собственно, что делать? Стоит ли бросать читать книгу и учить только то, что дают или продолжить читать и книгу, но как тогда это совмещать?

Ответы>>833535

01 Сен, 21:35 #408 #833174

стандарт с++16 будет?

Ответы>>833178

01 Сен, 21:43 #409 #833178

>>833174
c++17

01 Сен, 22:06 #410 #833192

Хотеть с++32.
Как же я буду угарать над толщиной священого писания крестоебов и попрекать их ересью за незнание рандомных UB в их параше. А там и до религии недалеко.

Ответы>>833310

01 Сен, 22:42 #411 #833223

>>831885
Мб зарегать свою установку надо?

01 Сен, 22:44 #412 #833225

>>832325
Привет, ВМК-кун. Какого кода выпуск?

Ответы>>833303

02 Сен, 00:57 #413 #833303

>>833225
2018. Много тут вмкшников, кстати, периодически всплывают в тредах. Вроде и оп был наш человек

Ответы>>833356

02 Сен, 01:20 #414 #833310

>>833192
Посоны, а давайте запилим в этом итт треде секту? Можно привлекать ньюфагов, охуенно же.

В начале была декларация. И была декларация в программе. И была декларация программой...
...
И сказал Он: "Да будут байтоебы исторгнуты из обители мономорфных вычислений". И создал Он шаблоны, и создали шаблоны шаблоны шаблонов. И были перечислены Его создания, и создания их, и создания тех созданий в Священном писании. И имя ему было Стандарт.
...
И сказал Его пророк: "Покайтесь, братья, ибо грядет Борщ, и грядут чистые нечестивцы. И с приходом нечестивцев неосиляторы будут лишены Его библиотеки, и оставит Он одни только S-выражения, и будут у несчастных не векторы, а в каждой паре по Карри".

02 Сен, 08:12 #415 #833356

>>833303
Ясно
Удачи тебе, няша
2014-кун

02 Сен, 09:50 #416 #833389

Дорогая редакция, я сейчас ёбнусь нахуй.
В обеих IDE которые я использую (code::blocks и codelite) перестали работать функции. Смотрю в дебаггер, он их просто проезжает без перехода в тело фунции. Всё правильно задекларировано. Старые функции и классы с функциями которые раньше работали тоже перестали работать.
Что за хуйня? Компилятор сломался? Линукс поехал?
Я ньюфаг, но вроде ничего не ломал.

Ответы>>833417

02 Сен, 11:03 #417 #833417

>>833389
Нахуя тебе эта ШВАБОДНАЯ параша?
Используй _НОРМАЛЬНУЮ_ IDE. В никсах это QtCreator или CLion. И вообще нахуй никсы, если ты ньюфаг, накати божественную студию и не еби носорога

Ответы>>833426>>833448

02 Сен, 11:16 #418 #833425

>>832767
Все в оригинале читают.
На самом деле нет.

02 Сен, 11:19 #419 #833426

>>833417
Навернул qt, всё заработало. Спасибо добрый человек.

02 Сен, 12:23 #420 #833448

>>833417
> накати божественную студию и не еби носорога
Пиздец проиграл

Ответы>>833547

389 Кб, 1920x1080

02 Сен, 14:45 #421 #833533

>>832767
Переводчикам тоже спасибо! держи картинку, если расстроил

02 Сен, 14:47 #422 #833535

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

02 Сен, 15:14 #423 #833547

>>833448
Проигрывай сколько угодно над стандартом индустрии. Только не забывай регулярно отмечаться в "МЫ ВАМ ПЕРЕЗВОНИМ"-треде.

Ответы>>833752

18 Кб, 925x349

02 Сен, 16:41 #424 #833625

Господа, помогите мне разобраться, почему вот этот код https://ideone.com/9cwhHP вычисляет правильные чек-суммы для строк, а код на пикче выводит оно и то же число MessageBox'ом?

Ответы>>833626

02 Сен, 16:45 #425 #833626

>>833625
Потому что ты пихаешь buf в crc вместо filename?

Ответы>>833627

sage 02 Сен, 16:47 #426 #833627

>>833626
Блять, точно. А я смотрел на этот код и не мог понять, что мне тут глаза мозолит.

Алсо,
>p = (uint8_t *)buf;
Из-за системы типов нельзя использовать без каста?

15 Кб, 545x316

02 Сен, 18:07 #427 #833716

Почему рандомный ключ печатается на идеоне,но не печатается в консоли?

https://ideone.com/ETSeKp

Ответы>>833731>>833774

02 Сен, 18:15 #428 #833731

>>833716
Не знаю, но сходу вижу, что вот эта строка:
> else xtea_key = 0;
никогда не выполняется.

Ответы>>833738

02 Сен, 18:26 #429 #833738

>>833731
Но в принципе ключ может быть меньшей длины и размер массива может быть больше длины ключа, тогда понадобится эта ветка.

Ответы>>833744

02 Сен, 18:30 #430 #833744

>>833738
Я говорю, что у тебя off-by-one ошибка.
https://ideone.com/tXbhTm

Ответы>>833774

02 Сен, 18:43 #431 #833752

>>833547
Бытиё стандартом индустрии не мешает ей быть полнейшим говном

Ответы>>833928

02 Сен, 19:05 #432 #833774

>>833744
>>833716
У меня какая-то хуита. Вот так объявлены переменные в хедере:
https://ideone.com/8DnoDp

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

Почему после выполнения процедуры генерации ключа в массиве xtea_key содержится просто ноль, если во время ее выполнения выводятся элементы этого массива?

Ответы>>833784

02 Сен, 19:26 #433 #833784

>>833774
http://stackoverflow.com/a/8317056

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

в файле где gen_xtea_key:
char xtea_key[XTEA_KEY_SIZE];

02 Сен, 21:36 #434 #833928

>>833752
В чем заключается ее говнистость, гуру ты наш?
Найди мне IDE удобнее, чем студия с решарпером С++?

Ответы>>834151>>834176>>834402>>834407

03 Сен, 09:33 #435 #834151

>>833928
> В чем заключается ее говнистость
В том, что она работает только на виндовс

Ответы>>834174

03 Сен, 10:17 #436 #834174

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

03 Сен, 10:24 #437 #834176

>>833928
Весит дохуя
Системных ресурсов жрет дохуя
Компилятор говно

Ответы>>834213

03 Сен, 11:33 #438 #834213

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

Ответы>>834306>>834445

03 Сен, 13:15 #439 #834306

>>834213
>Ресурсов и памяти сейчас как жопой жуй
На десктопе. 11'' планшетик с клавой и 32Гб винтом или хромогобук сейчас обычная вещь. Студию туда не поставишь, а криэйтор встает замечательно.

Ответы>>834366>>834393

03 Сен, 14:06 #440 #834366

>>834306
А, ну так-то да. Но у них и задачи разные. Студия это охуенный комбайн, который ставится на рабочий десктоп и херачит гигантские проекты своим мотовилом. А на планшетах/телефонах/ультрабуках, которые все время таскаешь с собой, все равно особо не поработаешь, банально собираться будет весь день. Поэтому там ставят что-нибудь легкое, чисто чтобы проверять короткие куски кода, типа Code::Blocks, или вообще пишут в текстовом редакторе с плагинами.

Ответы>>834392>>834400

03 Сен, 14:27 #441 #834392

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

Ответы>>834415

03 Сен, 14:29 #442 #834393

>>834306
>11'' планшетик с клавой и 32Гб
скока часов вижуалпараша у тебя загружается?

Dmitry 03 Сен, 14:40 #443 #834400

>>834366
Манька, студия для микропроэктов.
Для серьезных задач есть Make/Cmake

Ответы>>834415

Dmitry 03 Сен, 14:40 #444 #834402

>>833928
Emacs

03 Сен, 14:45 #445 #834407

>>833928
>решарпером
какой нахуй решайпер в спп? ваще школопидоры ебанулись

Ответы>>834416

Dmitry 03 Сен, 14:51 #446 #834413

Антохи поясните за bitwise операторы когда их реально удобно применять? Часто это делаете?

Ответы>>834418>>834421

03 Сен, 14:51 #447 #834415

>>834392
>отсасывает у эклипса
>отсасывает
>у эклипса
>который ломается на исходниках буста
Ну это вообще пушка.
>>834400
Так с cmake и используют. Автодополнение тебе святой дух сделает без IDE?

Ответы>>834428>>834441

03 Сен, 14:53 #448 #834416

>>834407
Там есть решарпер для крестов, но это говно мамонта же. В новых студиях (после 2010) из коробки есть почти все его фичи.

Ответы>>834445

03 Сен, 14:56 #449 #834418

>>834413
!~x - быстрое сравнение с нулем.
Сдвиги для умножения/деления на степени двойки.
Вообще, читай Уоррена-мл., "Алгоритмические трюки до программистов", там дохуя такого.

Ответы>>834420>>834421

03 Сен, 14:56 #450 #834420

>>834418
>~x
Быстрофикс.

03 Сен, 14:58 #451 #834421

>>834413 >>834418
+ Сравнение по битовой маске

Dmitry 03 Сен, 15:06 #452 #834428

>>834415
Автодополнение в Emacs есть

sage 03 Сен, 15:22 #453 #834441

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

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

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

Ответы>>834444>>834447

Dmitry 03 Сен, 15:26 #454 #834444

>>834441
Шо то хуйня шо это хуйня.

sage 03 Сен, 15:27 #455 #834445

>>834416
>В новых студиях (после 2010) из коробки есть почти все его фичи.
Контактирую с 2013 студией по работе. Такое же говно, как и 2010. Можешь начинать свои маневры про 15 студию.

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

Ответы>>834450

03 Сен, 15:28 #456 #834447

>>834441
Тредов десять назад было, посмотри там в архивах.
>ведь ты уже обосрался пару предложений назад
Ну ты меня просто растоптал, лол. Придется теперь ставить Eclipse, или еще какое гнутое дерьмо, чтобы все было как у людей.

Ответы>>834448

03 Сен, 15:32 #457 #834448

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

Ответы>>834451

03 Сен, 15:37 #458 #834450

>>834445
>Можешь начинать свои маневры про 15 студию
Не начну, 15 не сильно отличается, по большому счету.
>А можно начать с аргументов "за"?
Работающие из коробки автодополнение и визуальный дебаггер. IntelliTrace. Море плагинов, многие из которых не имеют аналогов. Удобная интеграция с мелкомягкими сервисами хотя это не всем надо. Стабильность ни одного краша за последние несколько лет.

Ответы>>834457

03 Сен, 15:39 #459 #834451

>>834448
Зачем своровал? Контора оплачивает софт, как и в любом цивилизованном месте.

Ответы>>834453>>834456

Dmitry 03 Сен, 15:42 #460 #834453

>>834451
Хорошо когда софт контролирует тебя а не наоборот?

Ответы>>834463

03 Сен, 15:45 #461 #834456

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

Ответы>>834459>>834465

03 Сен, 15:45 #462 #834457

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

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

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

А вообще давай-ка начнем с размера проекта, на котором ты работаешь. А то понабежит мудаков с проектами на 2МБ, которые рассказывают как у них стабильно и быстро работает студия.

Ответы>>834474

03 Сен, 15:48 #463 #834459

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

03 Сен, 15:51 #464 #834463

>>834453
Блядь, сука, ты и сюда из сишного треда протек? Я ебал твои теории заговора, мне от рабочего софта требуется удобство, а в остальном пусть он хоть в жопу залезает - никакой личной информации все равно нет на устройстве.

Ответы>>834477

03 Сен, 15:53 #465 #834465

>>834456
Ну хуй знает. Такой эффект, конечно, тоже есть, но и эффективность работы должна быть же. Я бы нахуй съебал, если бы мне предложили прийти со своим ноутом и кодить в швабодных иде.

Ответы>>834471

03 Сен, 16:00 #466 #834471

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

Ответы>>834476

03 Сен, 16:03 #467 #834474

>>834457
>смысла не имеет
В большинстве случаев да, но меня пару раз оно здорово выручало, когда были хитрожопые баги с синхронизацией тредов. Так что я бы не назвал его критичной фичей, но иметь как дополнительный инструмент - очень неплохо.
>примеры в студию
Скажем, https://visualstudiogallery.msdn.microsoft.com/2fde2c3c-5b83-4d2a-a71e-5fdd83ce6b96 . Хотя насчет этого пункта я не настаиваю - я не особо много ковырялся с Eclipse, возможно, я просто не нашел аналог.
>Словил 3 разных краша за 7 дней работы.
Попробуй на чистую сперму ставить, с последними апдейтами. От этого сильно зависит, как показывает опыт. Кококок вот еще, ради одной IDE...
>А вообще давай-ка начнем с размера проекта, на котором ты работаешь.
Приблизительно 2кк строк, насколько я помню.

Ответы>>834480

03 Сен, 16:04 #468 #834476

>>834471
ВРЕТИ

Dmitry 03 Сен, 16:12 #469 #834477

>>834463
Хорошо у тебя горит, всем есть что скрывать, Я этих опрпвданий уже насмотрелся.
Виндовс - прошивка для слежки, ботнетов, игр, вирусов, для остального просто ненужно.

Ответы>>834481

03 Сен, 16:19 #470 #834480

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

>ArrayPlotter
Видел для gdb скриптик, который запускает gnuplot. Нормальное решение, тащемта.
Если хочется прям уж интегрированности, то у еклипса точно есть такой плагин для джавы, скорее всего есть и для c++.

Ответы>>834482

03 Сен, 16:19 #471 #834481

>>834477
Ну так уебывай в криптач, хуле ты здесь-то забыл? Тут серьезные дяди зарабатывают бабло, там таятся школьники с паранойей, все гармонично.

Ответы>>834495

03 Сен, 16:21 #472 #834482

>>834480
>у меня новая тачка с чистой виндой сейчас
Ну хуй знает тогда. Если такое происходит, то, конечно, лучше использовать какую-то другую IDE. Я бы и сам не стал кушать кактус, если бы у меня не работало идеально все.

Dmitry 03 Сен, 16:48 #473 #834495

>>834481
Может это хорошая прошивка для зароботка, но плохая для работы, особенно для программирования.

Dmitry 03 Сен, 19:27 #474 #834605

>>821422
Ты о GCC

61 Кб, 625x353

Неосилятор 04 Сен, 16:30 #475 #835184

Как заебал этот Прата с перегрузками. Перегрузит шаблоны а потом ими погоняет или специализирует, сука. Это у всех авторов так?

Ответы>>835228>>835331

04 Сен, 16:55 #476 #835228

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

04 Сен, 18:02 #477 #835331

>>835184
а про SFINAE он уже рассказал? А про поиск зависимых имен? А про ADL? Про разложение до указателя? Про using в шаблонах?

04 Сен, 18:07 #478 #835335

Возможно, платина, но я внятного ответа так и не нашёл на SO.
Как в C++11 организовать такую блокировку, чтобы читать из очереди могли сколько угодно потоков, а писать — только один? Тянуть буст ради одной фичи не хочу, 17-й стандарт тоже не могу использовать.

Ответы>>835508>>835534>>835889

04 Сен, 20:55 #479 #835508

>>835335
сделой shared_mutex самостоятельно или спизди его из libc++ новой

Ответы>>835515

04 Сен, 21:13 #480 #835515

>>835508
Тоже думал над этим. Просто спиздить и вызывать mutex.lock()/unlock() при записи и lock_shared()/unlock_shared() при чтении, как-то так?

04 Сен, 21:33 #481 #835534

>>835335
Напиши RAII-обёртку вокруг pthread_rwlock_t

04 Сен, 22:20 #482 #835565

>>821402 (OP)
Че все утверждают, что это дохуя сложный язык? Все основы по языку, которые спрашивают на собеседованиях можно выучить за день. Еще день на основные алгоритмы и еще день на основные библиотеки и фреймворки
3 дня вполне достаточно, чтобы пройти собеседование в яндекс/гугл

Ответы>>835569

04 Сен, 22:23 #483 #835569

>>835565
А чтобы научится писать код не стреляя по себе - нужно еще как минимум пара-тройка лет, в этом-то и все проблема. А потом чтобы начать писать быстрый, безопасный и тем более распределенный код - нужно еще десяток лет, потому что язык - сборище костылей.

А так сам синтасис впринцие не сложный.

Ответы>>835571

04 Сен, 22:27 #484 #835571

>>835569
А в чем смысл вышки по программированию, когда всю базу можно пройти за месяц после школьного выпускного и обкатать изученное, а писать нормальный код в любом случае научишься по ходу работы?

Ответы>>835588

04 Сен, 22:46 #485 #835588

>>835571
Чтобы на парах учить математику, а дома — практиковаться в программировании же.

Ответы>>835594>>835674

04 Сен, 22:51 #486 #835594

>>835588
Что нужно для программирования кроме линейки, дифуров, и матана, которые можно пройти самостоятельно за пол года в 10 классе?

Ответы>>835600>>835674>>835685

04 Сен, 22:54 #487 #835600

>>835594
Зависит от того, в какой сфере ты работать собрался. Где-то аналитическая геометрия нужна, где-то — дискретка и т.д.

Ответы>>835674

05 Сен, 00:29 #488 #835674

>>835600
>>835588
>>835594
ваш матан нахуй никому не нужен, в погромирование темболее, смиритесь.

Ответы>>835675

05 Сен, 00:32 #489 #835675

>>835674
Ну и как ты найдешь неизвестную в уравнении без матана?

Ответы>>835676

05 Сен, 00:35 #490 #835676

>>835675
>неизвестную в уравнении
какое нахуй уравнение, какие неизвестные? вылезишь из лабы2 и увидешь удивительный мир.

Ответы>>835678

05 Сен, 00:37 #491 #835678

>>835676
Итат быдлокодер порвался

Ответы>>835679

05 Сен, 00:42 #492 #835679

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

05 Сен, 00:51 #493 #835681

>>821402 (OP)
Значит функция берет константу. Как ее можно изменить?

05 Сен, 01:06 #494 #835685

>>835594
Дифуры и матан не нужны, а вот теоркат нужен.

05 Сен, 14:06 #495 #835889

>>835335
Вот тебе "читатели-писатели" из прошлого проекта. Тут есть нестандартный перехват ошибок ErrorMaster, но ты сам выпили его, мне лень править эту копипасту.

http://pastebin.com/05VkjJZK

Ответы>>835922

13 Кб, 582x56

11 Кб, 242x60

05 Сен, 14:56 #496 #835922

>>835889
Лол, shared_mutex на мьютексах. Я к вам работать не пойду.

https://ideone.com/TBJ01y

Ответы>>836001

05 Сен, 16:45 #497 #836001

>>835922
Так семнадцатый стандарт в то время не завезли еще, лол. А работать-то надо.

Ответы>>836009

05 Сен, 16:53 #498 #836009

>>836001
Твой шаред мьютекс только на чтение работает медленнее, чем обычный мьютекс by design (потому что там 3 мьютекса внутри). Зачем использовать shared_mutex тогда?

Суть shared_mutex в том, что на чтение он работает быстрее обычного мьютекса, когда операция записи происходит редко. Атомик надо юзать.

Ответы>>836085

05 Сен, 18:18 #499 #836085

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

05 Сен, 20:46 #500 #836165

Суть такая, анананс.
Мне нужна софтина (или некий редактор) для просмотра кода и навигация по нему.
Вимы и прочее предлагать не стоит. При навигации в проекте с десяток файлов ещё может и сойдет, но что-то большее это не учитывая виртуальные функции, автоматический вывод типов и прочая шаблонная магия нужна иде или около.
Использовал студию так-то мне больше криэйтор нравится да и работает он быстрее, но для просто навигации слишком она громоздка и тормознута.

Ответы>>836193>>837125

05 Сен, 21:10 #501 #836193

>>836165
http://www.sourceinsight.com/

Ответы>>837125

05 Сен, 21:21 #502 #836200

>>821402 (OP)
Так аноны, есть ли какой нибудь сайт или форум, где нюфани помогают друг другу?

Ответы>>836203

05 Сен, 21:23 #503 #836203

>>836200
Харкач. Здесь все твои друзья.

Ответы>>836208

05 Сен, 21:27 #504 #836208

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

05 Сен, 21:40 #505 #836216

кек

05 Сен, 22:26 #506 #836257

Посоны, есть ли большая разница между Visual Studio Community и допустим Professional? Через вузик вроде последний можно получить, но я не ебу как, куда-то надо писать преподу или еще чего конечно спрошу потом, но все же. А тут скачал и вроде норм. Мне пока чисто лабы делать. Хватит для моего уровня? С торрентов кстати зашквар качать?

Ответы>>836469

05 Сен, 22:30 #507 #836260

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

Ответы>>837652

05 Сен, 22:48 #508 #836276

Сап ананасы.
В общем, устроился я крестоджуном три месяца назад. Разбирался себе потихоньку с работой с видео, кодированном в h264. Вроде, набросал код, который реализует нужный конторе функционал.
И мне дают проект, который пилился до этого несколько лет намного более прошаренным челом. Чтобы, значит, этот функционал туда прикрутить.
Глянул я код, а там ехал template через typename, этим всем погоняют typedef'ы и все это внутри typeFactory. Миллион .h и еще больше #define'ов и еще какие-то кастомные статические библиотеки. Короче, ООП и сложный для нуба код во все поля и хуй пойми, как оно все работает.
Спросить не у кого, т.к. чел, который это писал, взял и помер. Второй шаристый кодер больше по чистому C и ассемблеру, ему вся эта объектная магия тоже не шибко понятна.

Я это все к чему, мне сильно не хватает практического понимания всей этой объектной поеботы, может кто посоветовать адекватные курсы по C++ в ДС2?

Ответы>>836279>>836407>>836470

05 Сен, 22:51 #509 #836279

>>836276
Тебя в гугле забанили?

Ответы>>836447

06 Сен, 02:26 #510 #836407

>>836276
Тяжело джуном работать?
Что конкретно делал?

Ответы>>836446

06 Сен, 09:13 #511 #836446

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

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

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

В общих чертах, так.

06 Сен, 09:14 #512 #836447

>>836279
Предлагаешь изобразить дауна, который бежит на занятия по первой же ссылке из гугля, не спросив рекомендаций в специализированном месте?

06 Сен, 10:30 #513 #836469

>>836257
Даже в большей части проф. разработки разницы нет. Студенту тем более. Рекомендую Resharper C++ по студенческой почте нахаляву взять

06 Сен, 10:34 #514 #836470

>>836276
сколько платят?

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

Ответы>>836680>>839074

06 Сен, 19:33 #515 #836680

>>836470
Зряплаты хватает на еду-проезд-аренду однушки.
Планирую полгода-год поработать, а там уже смотреть на перспективы переката в более хлебное место.
Я так-то вроде понимаю в общих чертах, например фреймворк Qt, который весь из себя объектный, использую без проблем. Но вот именно тот код, который мне дали, это какое-то ебунячье нагромождение абстракций.
Про проектирование попробую читануть, спасибо. Может там как раз такой подход объяснят.

07 Сен, 12:11 #516 #837125

>>836193
>>836165
Обнаружил, что в криэйтор можно импортировать проект.
Точнее папку с исходниками

07 Сен, 15:56 #517 #837275

Пиздатая робота. Жаль меня туда не возьмут
https://moikrug.ru/vacancies/1000028597

07 Сен, 18:36 #518 #837440

>>821402 (OP)
Выучил ваш супертрудный язык за 4 дня. Правду говорят, что мужик работающий меньше чем за 50к - неудачник.

07 Сен, 20:34 #519 #837590

ПЕРЕКАТ ПИЛИТЕ

Ответы>>837593>>838129

07 Сен, 20:36 #520 #837593

>>837590
Оп пик найди

Ответы>>837601

237 Кб, 480x640

07 Сен, 20:40 #521 #837601

>>837593

sage 07 Сен, 22:04 #522 #837652

>>836260
Среди всех прекрасных умений прыщей есть одно самое важное. Оно работает хорошо, стабильно, не зависит от погоды, инвестиционного климата и дружественных усилий, предпринимаемых всякими космонавтами. Так сложилось исторически, что именно это умение, технология, легли в основу нового порядка, нового мироощущения, прыщемирка.
Суть вот в чём. Попробуйте представить себе прыщемирок. У него нет границ, которые спермачи могут увидеть, зато есть границы которые они никогда не смогут преодолеть. И вот почему. Допустим, решила какая-нибудь типичная спермоблядь проникнуть в прыщемирок — не важно, будь то пубертатный школьник с истовой жаждой самоутверждения, или завхоз с экономией на бесплатном, или просто пресытившийся анальным гнётом и интересующийся не в меру хомячок; таки или иначе всех ждёт один и тот же печальный итог.
Когда типичная спермоблядь пытается, прельстившись радостями прышемирка, проникнуть в прыщемирок через «парадный вход», гордо задрав нос, её ожидает строгий досмотр, на котором моментально выявляется уровень знаний и умений убогого. В частности, выясняется во всех продробностях та самая противоестественная поза, в которую традиционно привыкла вставать спермоблядина, чтобы её начинал использовать хозяин, выясняется, что за душой у спермоблядины никаких знаний нет, кроме этих самых привычек, связанных с облегчением анального гнёта спермогосподина. И тут, поскольку вход-то «парадный», прямо на глазах тысяч обитателей прыщемирка наступает расправа. Древний и тщательно смазанный для анахронизма карательных механизм запускает свои циклопические манипуляторы прямо в анус спермоблядины и стремительно с треском и искрами разрывает его в клочья. Это одна из самых потешных вещей для всех прыщеблядков. Это то, что делает бессмысленными все прочие развлечения, то, что не сравнится по накалу страстей и силе впечатлений ни с чем. На спермоблядские крики слетается множество зевак. Жалкий опущенец кричит, обвиняет в случившимся кого угодно, но не себя, сетует и стенает о том, что прыщемирок не пригоден для жизни, что прыщеблядям, видимо, нравится перманентный разрыв ануса; всё, что угодно будет выкрикивать — лишь бы не признать собственную убогость и надёжность её определения и её очевидность в прыщемирке. Но прыщеблядям известна истина. Она проста. Тот самый надёжнейший анахронизм вычислил хроническую спермоблядь и точно поразил её. Это делает крики спермоблядыша ещё более смехотворными.
Так бы всё и продолжалось: изредка спермобляди подбираются к границам прыщемирка, получают свой заслуженный разрыв ануса, и пройдя сквозь боль и унижение, уходят не солоно хлебавши. Но для экстенсивного увеличения количества лулзов, а, стало быть, расширения круга жертв, были открыты другие входы в прыщемирок. Например, на одном из них выдают красочную табличку с надписью «инвалид» и инвалидную самодвижущуюся коляску с обещанием доставить прямо через ограду в прыщемирок, где всё будет хорошо, бесплатно и легко. Не забывают, впрочем, предупредить, что вставать с коляски нельзя ни в коем случае. Что удивительно, коляска действительно начинает своё уверенное движение со спермоблядком на борту, однако сам спермоблядок уже очень скоро начинает смутно догадываться, что его обманули, поскольку, положение, в котором он сидит в коляске не такое уж и удобное, и до боли в анусе напоминает ему то самое положение, в которое его так часто ставил спермогосподин, а сама коляска движется с ощутимыми рывками, меняя направление, да и радостей прыщемирка не особо заметно, а окружающие прыщебляди посмеиваются и указывают на спермоблядка пальцами. И тут, спермоблядок понимает, что его разоблачили, поднимается со своей коляски и начинает грозить прыщеблядкам и кричать им, что он тоже прыщеблядь, поскольку уже проник в прыщемирок, преодолев границу. Это вызывает в прыщеблядях только смех, поскольку никакую границу спермач не преодолел — он просто катается в инвалидной коляске. А когда же спермач понимает и это, то он от досады делает неловкое движение и попадает в цепкие манипуляторы, устремившиеся к его заднице. И тут происходит разрыв на потеху всем окружающим прыщеблядям. Пожалуй, вид такой спермобляди, ещё более униженной, забавит куда больше. А собравшиеся вокруг прыщебляди тыкают палочками в агонизирующую спермоблядь, пока та изрыгает проклятья, обильно поливая собственную инвалидную коляску и землю вокруг анальной кровью. Вот в этом-то и состоит мрачная суть древней кровавой традиции прыщемирка, который не прощает и не ошибается. Так и будет: спермоблядство неизбежно должно караться в прыщемирке разрывом пердака. Вот в чём самая большая потеха: дразнить спермоблядка «бесплатным сыром», твёрдо зная, что его ждёт только бесплатный разрыв жопы.

sage 07 Сен, 22:04 #522 #837652

>>836260
Среди всех прекрасных умений прыщей есть одно самое важное. Оно работает хорошо, стабильно, не зависит от погоды, инвестиционного климата и дружественных усилий, предпринимаемых всякими космонавтами. Так сложилось исторически, что именно это умение, технология, легли в основу нового порядка, нового мироощущения, прыщемирка.
Суть вот в чём. Попробуйте представить себе прыщемирок. У него нет границ, которые спермачи могут увидеть, зато есть границы которые они никогда не смогут преодолеть. И вот почему. Допустим, решила какая-нибудь типичная спермоблядь проникнуть в прыщемирок — не важно, будь то пубертатный школьник с истовой жаждой самоутверждения, или завхоз с экономией на бесплатном, или просто пресытившийся анальным гнётом и интересующийся не в меру хомячок; таки или иначе всех ждёт один и тот же печальный итог.
Когда типичная спермоблядь пытается, прельстившись радостями прышемирка, проникнуть в прыщемирок через «парадный вход», гордо задрав нос, её ожидает строгий досмотр, на котором моментально выявляется уровень знаний и умений убогого. В частности, выясняется во всех продробностях та самая противоестественная поза, в которую традиционно привыкла вставать спермоблядина, чтобы её начинал использовать хозяин, выясняется, что за душой у спермоблядины никаких знаний нет, кроме этих самых привычек, связанных с облегчением анального гнёта спермогосподина. И тут, поскольку вход-то «парадный», прямо на глазах тысяч обитателей прыщемирка наступает расправа. Древний и тщательно смазанный для анахронизма карательных механизм запускает свои циклопические манипуляторы прямо в анус спермоблядины и стремительно с треском и искрами разрывает его в клочья. Это одна из самых потешных вещей для всех прыщеблядков. Это то, что делает бессмысленными все прочие развлечения, то, что не сравнится по накалу страстей и силе впечатлений ни с чем. На спермоблядские крики слетается множество зевак. Жалкий опущенец кричит, обвиняет в случившимся кого угодно, но не себя, сетует и стенает о том, что прыщемирок не пригоден для жизни, что прыщеблядям, видимо, нравится перманентный разрыв ануса; всё, что угодно будет выкрикивать — лишь бы не признать собственную убогость и надёжность её определения и её очевидность в прыщемирке. Но прыщеблядям известна истина. Она проста. Тот самый надёжнейший анахронизм вычислил хроническую спермоблядь и точно поразил её. Это делает крики спермоблядыша ещё более смехотворными.
Так бы всё и продолжалось: изредка спермобляди подбираются к границам прыщемирка, получают свой заслуженный разрыв ануса, и пройдя сквозь боль и унижение, уходят не солоно хлебавши. Но для экстенсивного увеличения количества лулзов, а, стало быть, расширения круга жертв, были открыты другие входы в прыщемирок. Например, на одном из них выдают красочную табличку с надписью «инвалид» и инвалидную самодвижущуюся коляску с обещанием доставить прямо через ограду в прыщемирок, где всё будет хорошо, бесплатно и легко. Не забывают, впрочем, предупредить, что вставать с коляски нельзя ни в коем случае. Что удивительно, коляска действительно начинает своё уверенное движение со спермоблядком на борту, однако сам спермоблядок уже очень скоро начинает смутно догадываться, что его обманули, поскольку, положение, в котором он сидит в коляске не такое уж и удобное, и до боли в анусе напоминает ему то самое положение, в которое его так часто ставил спермогосподин, а сама коляска движется с ощутимыми рывками, меняя направление, да и радостей прыщемирка не особо заметно, а окружающие прыщебляди посмеиваются и указывают на спермоблядка пальцами. И тут, спермоблядок понимает, что его разоблачили, поднимается со своей коляски и начинает грозить прыщеблядкам и кричать им, что он тоже прыщеблядь, поскольку уже проник в прыщемирок, преодолев границу. Это вызывает в прыщеблядях только смех, поскольку никакую границу спермач не преодолел — он просто катается в инвалидной коляске. А когда же спермач понимает и это, то он от досады делает неловкое движение и попадает в цепкие манипуляторы, устремившиеся к его заднице. И тут происходит разрыв на потеху всем окружающим прыщеблядям. Пожалуй, вид такой спермобляди, ещё более униженной, забавит куда больше. А собравшиеся вокруг прыщебляди тыкают палочками в агонизирующую спермоблядь, пока та изрыгает проклятья, обильно поливая собственную инвалидную коляску и землю вокруг анальной кровью. Вот в этом-то и состоит мрачная суть древней кровавой традиции прыщемирка, который не прощает и не ошибается. Так и будет: спермоблядство неизбежно должно караться в прыщемирке разрывом пердака. Вот в чём самая большая потеха: дразнить спермоблядка «бесплатным сыром», твёрдо зная, что его ждёт только бесплатный разрыв жопы.

Показать весь текст

08 Сен, 15:57 #523 #838129

>>837590
Стих придумать надо

09 Сен, 06:05 #524 #838744

а как вам Microsoft VS code?

Ответы>>838750

09 Сен, 08:04 #525 #838750

>>838744
Как земля.

09 Сен, 18:54 #526 #839074

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

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

Правда, из этого следует немного грустный вывод. Раз мне никто про эту книжку и методику ничего не сказал, наверное, канторе особо и не нужно, чтобы я справился с задачей. Видимо, моя задача -- изображать программиста, а не приносить некую пользу. Мысленно сделал отметку "съебаться из конторы сразу же, как будет возможность".

11 Сен, 00:04 #527 #839794

бамп

11 Сен, 10:55 #528 #839906

добавьте в шапку лучшую иде - Code::blocks. Более лучшую, чем code lite.

11 Сен, 16:46 #529 #840067

>>821402 (OP)
Вкатываюсь в геймдев, думал на дроиде ява, заебца. Таксс, движки-мейкеры, платное говно, говно, так, што тут у нас, порт с сишки. Ууу хуево.
Ладно, буду свое двигло делать. Лист двиглов на яве: говно, ..., ... ээээ, а где ява?

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

Есть особые подводные камни? Просто скачал вижуал студио и вперед?

12 Сен, 17:21 #530 #840693

Заглянул к вам из петушиного загона, у вас всегда тут так пусто?

12 Сен, 18:17 #531 #840717

В крестах нет матриц?

Ответы>>840739

12 Сен, 18:50 #532 #840739

>>840717
Вроде нет, но есть дохуя библиотек от топовых интелоских до днищенских васяновских

Ответы>>840742

12 Сен, 18:54 #533 #840742

>>840739
тогда покажи красивый велосипед матриц

Ответы>>840745>>840748

12 Сен, 19:00 #534 #840745

>>840742
в том же xna фрамеворке/DIRECT3D есть какая-то параша

12 Сен, 19:01 #535 #840748

>>840742
Да и что тебе мешает написать свой.

Ответы>>840758

12 Сен, 19:09 #536 #840758

>>840748
То что я могу где-то сделать глупую ошибку. Или криво написать. А мне нужно только динамическая матрица и метод для её транспонирования. Проще найти какой-нибудь велосипед и удалить из него всё лишнее.

Ответы>>840763>>840768

12 Сен, 19:13 #537 #840763

>>840758
Ну для этого просто пишешь один единственный шаблонный класс матрицы и метод транспозе возвращающий новую матрицу. Для проверки накидай какой-нибудь изи тест.

Ответы>>840765>>840767

12 Сен, 19:14 #538 #840765

>>840763
не думаю что можно где-нибудь обосраться кроме как в выделении памяти

12 Сен, 19:16 #539 #840767

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

Ответы>>840769

12 Сен, 19:16 #540 #840768

>>840758
Было бы понятно из-за чего ты искал проблему если бы тебе надо было написать всю матричную алгебру. А так если что то можно взять интеловскую либу(я есличо хз где её можно спиздить).

12 Сен, 19:18 #541 #840769

>>840767
https://software.intel.com/en-us/intel-mkl

Ответы>>840772

12 Сен, 19:20 #542 #840772

>>840769
Он почту прочит. У них гитхаба нет?

Ответы>>840773

12 Сен, 19:22 #543 #840773

>>840772
Нет это проприетарщина(вроде насколько я понял)

Ответы>>840775

12 Сен, 19:24 #544 #840775

>>840773
Ок. Ввиду почту. Спасибо.

12 Сен, 19:46 #545 #840794

передумал скачивать. Сам напишу
> array<array<int,n>,n> m;
Как значение оп умолчанию задать? 2 цикла в конструкторе делать?

25 Кб, 546x155

12 Сен, 22:38 #546 #840924

Бля, вы зебали!
Где перекат?

12 Сен, 23:47 #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/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion