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

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

 Аноним 24/11/15 Втр 12:25:05 #1 №587839 
14483571059830.png
"Здесь заточен народ неблагородный,
Рождающий позорный говнокод,
С дедами в диком байтоебстве сходный.

Весь сахар оверхедом он сочтет:
Среди худой рябины не пристало
Смоковнице растить свой нежный плод.

В невежестве порочный изначала,
Ничтожный и до тактов жадный люд!
Писать для них тебя бы запятнало:

Здесь, лишь увидев твой high-level труд,
Отладчиком начнут в нем ковыряться,
Которым байты каждый день ебут.

Пусть впредь в своем навозе копошатся.
Пойдем же дальше - нас монады ждут".


TL;DR Читаешь https://goo.gl/kVaela, делаешь примеры и суешь в http://ideone.com, ошибки копипастишь в гугл, непонятное ищешь в предыдущих тредах, спрашиваешь в этом треде, если не нашел. Если тебя послали на хуй или не ответили, то ты спросил платину, читай предыдущие треды внимательнее. И прочитай FAQ, расположенный в следующих постах, в нем много полезного.

Унаследованная памятка:

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

Тег [code] работает через жабаскрипт-костыль: https://github.com/ololoepepe/MakabaCode

Старший брат: >>579550 (OP)
Предыдущий: >>581583 (OP)
Аноним 24/11/15 Втр 12:25:40 #2 №587840 
FAQ:

Q: Почему стоит использовать именно C++?
A: Ни один язык не идеален, но по совокупности киллер-фич C++ оставляет все остальные языки позади. Вот основные три:
+ C++ действительно быстрый - по скорости они вместе с C с большим отрывом уделывают любой другой язык. Замедление относительно C находится в районе 0-20% а в ряде случаев C++ оказывается даже быстрее, причем проявляется только при использовании высокоуровневых конструкций (в крестах ты никогда не платишь за то, чего не используешь).
+ C++ один из наиболее выразительных и мощных языков, позволяющий использовать большинство существующих парадигм. Его философия построена на минимальном ограничении программиста в выборе методов и инструментов простреливания ноги решения задачи.
+ C++ по-настоящему популярен. На нем написаны десятки тысяч приложений и миллиарды строк кода, о нем написаны сотни книг, он до мельчайших подробностей документирован и стандартизован. Используя C++, ты никогда не останешься без работы или поддержки комьюнити.

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

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

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

Для нюфань:
Учебники для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется.
Стэнли Липпман, Жози Лажойе и Барбара Му - Язык программирования C++ (2014) - https://goo.gl/kVaela
Стивен Прата - Язык программирования C++ (2012) - https://goo.gl/z7kA8u
Бьерн Страуструп - Программирование. Принципы и практика использования C++ (2011) - https://goo.gl/nAFUXa

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

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

Наиболее детальные описания языка:
Бьерн Страуструп - Язык программирования C++ (на ангельском) (2013) - https://goo.gl/XkAiOX
<устарело> Бьерн Страуструп - Язык программирования C++ (2010) - https://goo.gl/iZBDiV
Стандарт C++14 (на ангельском) - https://github.com/cplusplus/draft/raw/master/papers/n4140.pdf
Последняя на данный момент версия черновика стандарта C++17 (на ангельском) - http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4527.pdf

Тонкости языка (для гурманов):
Андрей Александреску - Современное проектирование на C++ (2002) - https://goo.gl/e1V5BC
Герб Саттер - Решение сложных задач на C++ (2002) - https://goo.gl/iWaa6S
Герб Саттер - Новые сложные задачи на C++ (2004) - https://goo.gl/4nn512

Также для легкого чтения подойдет книжка c историей создания C++:
Бьерн Страуструп - Дизайн и эволюция C++ (1994) - https://goo.gl/FqbPwo

Отдельные аспекты:
Читать по необходимости.
Энтони Уильямс - Параллельное программирование на C++ в действии (2012) - https://goo.gl/qJfBkD
Николаи Джоссатис - C++. Стандартная библиотека (2012) - https://goo.gl/PEyiMH
Дэвид Вандевурд, Николаи Джоссатис - Шаблоны C++. Справочник разработчика (2003) - https://goo.gl/0M4NpG
Роберт Седжвик - Фундаментальные алгоритмы на C++ (2001) - https://goo.gl/4jwxSl (части 1-4), https://goo.gl/yDuQgG (часть 5)

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

Q: Ты охуел? В этих книгах по тысяче страниц! Хочу коротких статей.
A: Вот тебе блоги, факи, референсы и всякое такое:

Годный блог, в котором все просто и понятно тян не нужны кококок борщ - http://alenacpp.blogspot.ru
Блог с хорошо расписанными фичами новых стандартов - http://scrutator.me
Краткие описания библиотечных функций и контейнеров - http://ru.cppreference.com/w/ или более подробно на ангельском http://en.cppreference.com/w
Блог Герба Саттера (на ангельском) - http://herbsutter.com
Блог Скотта Мейерса (на ангельском) - http://scottmeyers.blogspot.ru
Куча других блогов (на ангельском) - https://www.quora.com/What-are-the-best-blogs-on-C++
Большой FAQ по C++ (на ангельском) - https://isocpp.org/wiki/faq

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

Видеокурс на тытрубе - https://www.youtube.com/watch?v=atVgLRzl3rI
Еще один - https://youtube.com/watch?v=MOpF5lk3cLY
Среди прочих есть несколько курсов по C++ - https://stepic.org

И еще есть вот такое, если проникся:
Видео с CppCon (на ангельском) - https://youtube.com/user/CppCon/videos
Аноним 24/11/15 Втр 12:26:08 #3 №587842 
Q: Я готов начать погроммировать! Куда мне писать код?
A: Под шиндошс удобно использовать IDE Microsoft™ Visual Studio®. Базовую версию (2015 Community) можно бесплатно скачать отсюда: https://goo.gl/qgAAc6 (русская версия) или https://goo.gl/WIPW9L (ангельская версия). Чтобы начать писать код, нужно запустить Visual Studio, кликнуть "Файл - Создать - Проект - Пустой проект", после создания кликнуть слева правой кнопкой мыши по пункту "Файлы исходного кода", выбрать "Добавить - Создать элемент - Файл C++". Свои хэллоуворлды писать в этот файл, в дальнейшем можно добавить другие файлы и хедеры. Чтобы скомпилировать и запустить проект, нужно нажать "Сборка - Собрать решение", а затем "Отладка - Запуск без отладки".

Под *nix, как правило, уже предустановлен компилятор gcc (если нет, используй sudo aptitude install gcc), так что достаточно сохранить хэллоуворлд, набранный в текстовом редакторе, и выполнить g++ helloworld.cpp и ./a.out. Но удобнее установить какую-нибудь IDE, например, Code::Blocks (sudo aptitude install codeblocks) и работать в ней.

Еще у нас есть IDE, призванная похоронить Visual Studio пока не особо получается. Она стоит денег, но можно украсть почти не протухшую версию на торрентах или получить бесплатную лицензию по скану студбилета, если ты студент. Удобные свистелки и перделки присутствуют. Тормоза и баги присутствуют. Кросплатформенность присутствует - https://www.jetbrains.com/clion

Можно также не устанавливать ничего, а запускать свои хэллоуворлды на http://ideone.com, выбрав в левом нижнем углу язык C++14.

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

Статический анализатор, который умеет находить в коде ошибки и неоптимальные места. Швабодный. Есть плагин для Visual Studio - http://cppcheck.sourceforge.net
Детектор утечек для Visual Studio. Предельно прост в прикручивании - https://vld.codeplex.com
Гугловские утилиты для контроля корректности кода - https://github.com/google/sanitizers
Гугловский фреймворк для автоматизации тестирования - https://code.google.com/p/googlemock

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

boost

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

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

http://www.boost.org - скачать бесплатно без смс.
http://sindicollo.blogspot.ru/2008/09/boost.html - документация к некоторым компонентам.
http://www.boost.org/doc - документация (на ангельском).

Литература:
Ариндам Мукерджи - 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.х, полной обратной совместимости между ними нет как в пистоне, ага.

http://www.qt.io/ru - скачать бесплатно без смс.
http://doc.crossplatform.ru - документация к 4.8.
http://doc.qt.io - более полная документация к обеим версиям (на ангельском).

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

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

Несколько специализированных библиотек для часто встречающихся задач. Все маленькие, быстрые и простые в освоении:
libcurl - сишная библиотека для работы с сетью (существует также curlpp - крестовая обертка для нее, но использовать ее не стоит, ибо разработка заброшена еще в 2009 году) - http://curl.haxx.se
SFML - работа с графикой и аудио - http://www.sfml-dev.org
FLTK - графические интерфейсы - http://fltk.org

И еще куча библиотек на любой вкус - http://en.cppreference.com/w/cpp/links/libs
Аноним 24/11/15 Втр 12:26:55 #4 №587844 
Структура шапки переработана.
Основной материал перенесен в FAQ, который был отделен от шапки.
В самой шапке размещены краткие указания по вкатыванию для тех, кто не читает FAQ.
Информация о boost расширена до отдельного подраздела.
Добавлен подраздел о Qt.
Добавлены видеокурсы.
Новая структура подраздела о специализированных либах (теперь только простые и легковесные, остальные в каталоге по ссылке). FLTK добавлена. Casablanca убрана как слишком тяжелая.

Предыдущие треды на архиваче:
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/
Аноним 24/11/15 Втр 13:04:32 #5 №587859 
Благословляю.
Аноним 24/11/15 Втр 14:02:13 #6 №587890 
14483629332310.png
>>587839 (OP)
>
>TL;DR Читаешь https://goo.gl/kVaela, делаешь примеры и суешь в http://ideone.com, ошибки копипастишь в гугл, непонятное ищешь в предыдущих тредах, спрашиваешь в этом треде, если не нашел. Если тебя послали на хуй или не ответили, то ты спросил платину, читай предыдущие треды внимательнее. И прочитай FAQ, расположенный в следующих постах, в нем много полезного.
Слишком коротко всё в кучу и бесполезно. И вообще что ты наделал? Нельзя раскидать шапку по 3ём постам. Я в ахуе от таких изменений.
#раньшебылолучше
Аноним 24/11/15 Втр 14:09:46 #7 №587896 
В моей игре в классе GameState есть unique_ptr на World(который собсна за саму игру отвечает без ничего лишнего). В гуе GameState есть кнопка перезапуска игры, следовательно было бы неплохо просто переинициализоровать World. Вопрос в том, как корректно?
world.reset();
world = std::make_unique<World>(args..)
Вот так будет без UB?
Аноним 24/11/15 Втр 14:09:47 #8 №587897 
У вас нет виртуальных функций в шаблонных классах? Пососите! Теперь я передаю лямбда-выражение в конструктор этого класса и всё работает! Как здорово я всех наебал!
Аноним 24/11/15 Втр 15:10:02 #9 №587928 
>>587890
Там внезапно обнаружился лимит в 15000 символов. В прошлой шапке было 14 с лишним тысяч, так что куте бы не влезло уже. Да и анон просил убрать стену текста, так что мне показалось это разумным компромиссом между полнотой и удобством чтения.

tl;dr набросал на скорую руку, если кто допилит, буду рад поправить.
Аноним 24/11/15 Втр 15:14:32 #10 №587929 
>>587896
reset не нужен же. unique_ptr вызывает delete для старого указателя автоматически при присваивании.
Аноним 24/11/15 Втр 15:33:10 #11 №587939 
В прошлом треде не ответили, но все же.
Вопросы по CUDA здесь же задавать?)
Аноним 24/11/15 Втр 15:37:28 #12 №587941 
>>587939
> )
Уёбывай обратно на Пикабу, быдло.
Аноним 24/11/15 Втр 15:44:58 #13 №587944 
>>587939
Задавай, хотя не уверен, что здесь есть CUDA-куны.
Аноним 24/11/15 Втр 15:48:18 #14 №587946 
>>587941
Так /pr/ же - это филиал Пикабу!
Аноним 24/11/15 Втр 16:02:00 #15 №587951 
>>587941
Ахах)))
Ты жалок и убог) Скобочки используют только русские, чтобы поставить смайл) Значит пошел нахуй, бендера))
(Автор этого поста был предупрежден.)
Аноним 24/11/15 Втр 17:56:36 #16 №588015 
>>587928
Плюсы шапки в том что всё в одном месте. и не нужно среди двух сообщений искать нужный фрагмент пролистываюя их. Тогда может не сильно пока важную часть вынести только не на пастебин, а туда где можно 1 кликом по ссылки проходить вроде списка кнтг или блогов. Он же не меняется.
Аноним 24/11/15 Втр 17:58:11 #17 №588019 
14483770913820.png
Нет в stl контейнера для матриц?
Аноним 24/11/15 Втр 17:58:46 #18 №588022 
Когда стоит юзать inline?
Или нету никаких критериев и нужно просто пробовать, быстрее будет с инлайном или нет?
Аноним 24/11/15 Втр 18:00:00 #19 №588024 
>>588019
Юзай какой-нибудь массив и обращайся [ i*width + j].
Аноним 24/11/15 Втр 18:03:19 #20 №588031 
>>588022
>Когда стоит юзать inline?
когда у тебя маленькая функция. Всего пару строк и жедательно без ветвлений. Но это рекомендация поэтому компилятор может скомпилировать твою функцию как обычную.

>>588024
Что? А в array или vector нельзя двухмерный сделать?
Аноним 24/11/15 Втр 18:22:05 #21 №588051 
>>588022
инлайнить ли функцию компилятор решает сам. inline в c++ это директива для линкера, которая указывает что функция может быть определена в нескольких объектных файлах - по умолчанию попытка слинковать два файла с одной функцией вызовет ошибку, а с inline одно из определений будет выкинуто. так что inline надо использовать на всех функциях в заголовочных файлах.
Аноним 24/11/15 Втр 18:41:25 #22 №588074 
14483796858190.jpg
АНОНЫ, МОЛЮ ПОМОЩИ!
Осталось подправить всего одну функцию, уже который день ебусь с этими сортировками и структурами, все никак не доебусь.

Объясняю: Есть матрица структур (каждый элемент матрицы - структура включающая в себя 3 поля), пользователь вручную задает размер матрицы и забивает поля, в моем случае это фамилия, год рождения и стаж работы.

Задача программы отсортировать полученные данные ПО СТОЛБЦАМ и вывести отсортированную матрицу.
Врывался в прошлый тред с этой задачей и меня успешно послали нахуй, ибо я вообще ничего не сделал. Сейчас же уже все готово, кроме ЕБУЧЕЙ СОРТИРОВКИ.

http://ideone.com/Itn9E6

Вот код программы, там я подчеркнул нерабочую функцию сортировки и описал в чем косяк. Забыл добавить, что сортировать надо именно МЕТОДОМ ШЕЛЛА.

Если уж не написать, то хоть подскажите как исправить, с меня море цп ну или как обычно нихуя
Аноним 24/11/15 Втр 18:52:54 #23 №588086 
>>588015
Ну, я не очень представляю, как выделить из последовательного фака важную часть. Попробуй набросать примерно, братюнь.
Аноним 24/11/15 Втр 18:55:40 #24 №588092 
>>588051
> inline надо использовать на всех функциях в заголовочных файлах
Охуеть.
Всегда думал, что эта просто фича, которая работает, как макрос.
Аноним 24/11/15 Втр 19:26:44 #25 №588125 
>>588074
>ешно послали нахуй, ибо я вообще ничего не сделал. Сейчас же уже все го
В циклах i и j поменяй местами (в первом j во втором i). В std::swap убери .age
Аноним 24/11/15 Втр 19:26:49 #26 №588126 
>>588074
>swap
Ну сделай swap(arrWithDigits[j], arrWithDigits[j+gap]), без .age, в чем проблема? Это шаблонный метод, он будет работать, если твоя структура имеет конструктор копирования (а она имеет).

В циклах у тебя какой-то ад, надо делать вот так:

[code lang="cpp"]
void sortShell (Worker data, size_t size, int delta = 1) //в delta передаем длину строки матрицы
//в data передаем указатель на первый элемент очередного столбца
//в size передаем высоту столбца
{
for (auto dd = (size / 2)
delta; dd != 0; dd /= 2)
for (Worker i = data + dd; i != data + deltasize; ++i )
for (Worker j = i; j - data >= dd && comp( j, ( j - dd)); j -= dd)
swap (
j, *( j - dd));
}
[/code]

И вызвать эту функцию по очереди для указателей на элементы нулевого столбца твоей матрицы.
Аноним 24/11/15 Втр 19:29:31 #27 №588128 
>>588092
И еще.
inline функции должны быть определены в заголовочном файле.
Аноним 24/11/15 Втр 19:31:35 #28 №588130 
>>588128
Не обязательно, если определение не найдено в текущей единице трансляции, то компилятор просто проигнорирует директиву inline и вставит вызов.
Аноним 24/11/15 Втр 19:34:07 #29 №588131 
>>588086
>Но он же давно устарел! Почему стоит использовать именно C++? Сейчас все пишут на %languagename, а кресты сосут у него!
Читай это Вместо спойлера ссылка на пастебин с копипастой или список каких-нибудь популярных статей на эту тему

>Окей, я решил вкатиться. Что мне делать?
Тут не только список кнги, а программу обучения расписать типа читай книги пиши код или как обычно советуют. А потом ссылки на книги/блоги/видеоуроки вынесеные на пастебин.
Аноним 24/11/15 Втр 19:34:50 #30 №588133 
>>588126
блин дружище, вроде пояснил по-умному, но все равно не пойму как в твой код запихать мою матрицу структур. особенно непонятно что в функцию передаю, хоть и расписал, но оче тяжело. объяснишь подробнее на примере моего кода?
Аноним 24/11/15 Втр 19:36:47 #31 №588137 
>>588126
>>588133
Worker datа - Worker* arrWithDigits[]
size_t size так и есть
а вот что за дельта?
Аноним 24/11/15 Втр 19:39:21 #32 №588143 
>>588131
Мне кажется, если убрать куски фака с заманухой и развенчанием мифов на пастебин, то они не будут выполнять свою функцию по привлечению ньюфагов, не?
Аноним 24/11/15 Втр 19:43:26 #33 №588145 
>>588137
Ты в своем варианте пихаешь двумерный массив в алгоритм для одномерного и пытаешься сортировать строки в нем. Такое хуй перепилишь под сортировку столбцов, потому что элементы столбца не расположены последовательно. Я предложил представить всю твою матрицу как большой одномерный массив из последовательно записанных строк, а сортировку по столбцам обеспечивать тем, что шаг алгоритма будет не 1, а браться из delta равным длине строки. Таким образом, из всего большого массива будут браться элементы, кратные delta, которые и образуют один столбец. И алгоритм сортировки одномерного массива, который ты, подлец, стырил из википедии, будет работать практически без изменений.
Аноним 24/11/15 Втр 19:44:23 #34 №588146 
>>588143
>выполнять свою функцию по привлечению ньюфагов
А разве их функция не в том чтобы не спамили однотипными вопрсами? Много ньюфагов не привлечёшь, но и не надо. Сами захотят придут. Надо просто помочь и сделать удобную шапку.
Аноним 24/11/15 Втр 19:48:48 #35 №588150 
>>588143
Зачем вообще привлекать, как будто мы тут какой-то хипсторский лиспохаскель раскручиваем.

Лучше вставить вместо ответа стишки, которые чтото там про новый стандарт и охуенность языка несколько тредов назад лол
Аноним 24/11/15 Втр 19:51:06 #36 №588154 
>>588150
Ксати стишками самое место в начале шапке т.к. если бы там были не сташки, то из-за оп-пика текст бы чуть смещался и было бы не так удобно как теперь.
Аноним 24/11/15 Втр 19:51:31 #37 №588156 
>>588146
Не, однотипные вопросы же обычно не про это, а по самому языку, где хранятся объекты и вот это все. От них нужно избавляться чем-то вроде пунктов в памятке, наверное. А пункты про место крестов среди других языков как раз, чтобы перебить хейтеров и не позволить им отпугнуть нюфаню до того, как он попробует. По крайней мере, я исходил из таких соображений.
Аноним 24/11/15 Втр 19:53:04 #38 №588157 
>>588150
Даешь целиком рифмованную шапку!
Аноним 24/11/15 Втр 20:00:11 #39 №588164 
14483844118930.png
Пишет, что не объявлен s в функции, как его объявить?
Аноним 24/11/15 Втр 20:02:30 #40 №588170 
>>588164

float s, очевидно же
Аноним 24/11/15 Втр 20:04:08 #41 №588173 
14483846481800.png
>>588170
Пробовал, тогда не объявлен r.
Аноним 24/11/15 Втр 20:06:33 #42 №588177 
>>588173
s = circle(r);
Аноним 24/11/15 Втр 20:07:52 #43 №588179 
>>588145
ты ебаный гений дружище. Только как-то все это тяжело в исполнении, а твой код совсем непонятен мне. си изучаю с сентября

Я так понял мне надо создать одномерный массив из элементов столбцов, отсортировать их и поменять в исходном?
Аноним 24/11/15 Втр 20:09:38 #44 №588182 
>>588177
Это же мой первый вариант?
Аноним 24/11/15 Втр 20:10:02 #45 №588183 
>>588182
Может быть.
Аноним 24/11/15 Втр 20:12:26 #46 №588185 
>>588182
тебе же сказали объявить s внутри функции
Аноним 24/11/15 Втр 20:24:48 #47 №588189 
>>588179
Нет. Тебе не надо ничего создавать, твоя исходная матрица, по сути, это тот же одномерный массив из последовательно записанных строк. Только у тебя тип Worker * [], а нужно просто указатель на Worker. Для этого достаточно взять указатель на самый первый элемент первого столбца и впихнуть его в предложенную мной функцию, это отсортирует все элементы первого столбца в твоей матрице, а остальные не тронет. Потом делаешь то же самое для указателя на первый элемент второго столбца, и так далее.
Аноним 24/11/15 Втр 20:25:50 #48 №588191 
14483859506770.png
>>588185
Внутри circle? Там ерунда получается. Вот так работает, но я хочу, чтоб и первый вариант работал.
Аноним 24/11/15 Втр 20:28:35 #49 №588193 
>>588191
Инапсуляция же. s из main виден только в main. Ты можешь объявить второй s внутри circle, не связанный с первым, как сказал тот анон. Или сразу возвращать значение выражения, как на твоем втором скрине. Или вынести объявление s из main в глобальную область видимости, тогда к ней будет доступ отовсюду.
Аноним 24/11/15 Втр 20:35:24 #50 №588197 
Как сделать юнит-тест для Qt-говнокода, использующего сигналы, слоты и вообще EventLoop?
Пробовал весь тест в новый QThread перемещать, а тот в stdout жалуется, что нельзя использовать EventLoop без QApplication.
Аноним 24/11/15 Втр 20:36:20 #51 №588198 
14483865802120.png
>>588193
Спасибо, понятно расписал. Я сразу подумал, что использование одной переменной s не лучшая идея. Вот пример, который я пытался модифицировать под себя. Поправь, если не правильно понимаю, 11 строчка посылает значение lbs в функцию, а возвращаются уже оттуда kilograms, вроде ясно. Но откуда известно, что kilograms = kgs?
Аноним 24/11/15 Втр 20:36:21 #52 №588199 
>>588191
>>588173
>>588164
Это такая толстота? Ты даже хеллоуворлд пока не написал и не прочёл даже введение любой книжки на пол страницы?
Аноним 24/11/15 Втр 20:40:52 #53 №588201 
>>588199
Это ленивый школар из нуботреда.
>>588158
>>588161
>>588178
Аноним 24/11/15 Втр 20:42:06 #54 №588202 
>>588201
Не, я совсем другой нуб. :)
Аноним 24/11/15 Втр 20:43:43 #55 №588203 
>>588202
>нуб
тролль
фикс*
Аноним 24/11/15 Втр 20:47:35 #56 №588205 
>>588203
Да я не тролю, серьезно пытаюсь вникнуть. Можешь не верить. Вот эта глава у лафоре мне сложной показалась, особенно вторая ее часть, так что буду перечитывать, пока не врублюсь!
Аноним 24/11/15 Втр 20:47:48 #57 №588207 
>>588198
Из 11 строчки. У тебя видимо серьезные проблемы с пониманием синтаксиса функций и возвращаемых ими значений. Читай литературу из фака и не выебуйся.
Аноним 24/11/15 Втр 20:50:06 #58 №588208 
>>588205
>лафоре
А ты точно лафоре читаешь? Такие трудности разве только у страуструпа есть.
Аноним 24/11/15 Втр 20:54:08 #59 №588209 
>>588208
Да его, у меня просто околонулевой уровень, пытался дейтейла читать, но там вообще темный лес для меня!
Аноним 24/11/15 Втр 20:55:09 #60 №588211 
>>588209
С++ это твой первый язык?
Аноним 24/11/15 Втр 20:58:16 #61 №588213 
>>588211
До этого немного на паскале тренировался, я уже в каком-то из тредов писал, что это что-то типа хобби, так что не бейте меня сильно!
Аноним 24/11/15 Втр 20:59:40 #62 №588215 
>>588213
Вернись на паскаль и изучи процедуры с функциями на нём. Потом возвращайся к С++.
Аноним 24/11/15 Втр 21:05:55 #63 №588217 
>>588215
Дело только в более понятном синтаксисе?
Аноним 24/11/15 Втр 21:07:51 #64 №588218 
>>588217
Да. А ещё тут ты потом будешь передавать в функцию структуры или указатели, а в паскале только с базовыми типами научишься работать. Это проще.
Аноним 24/11/15 Втр 21:15:41 #65 №588221 
>>588218
Спасибо за доброту, анон! Про структуры и указатели я в курсе, они есть в этой главе, и вот там я очееень очееень поверхностно все понял, буду читать дальше. На паскаль не хочу.
Аноним 24/11/15 Втр 21:15:53 #66 №588222 
14483889538630.gif
Помоги, молю.
>>588197
Аноним 24/11/15 Втр 21:36:47 #67 №588226 
>>587929
>>587929
Я думал об этом варианте. Набросал в деструкторах логгер, присваиваю новое значение указателю - все ненужные данные удаляются, прекрасно.
Аноним 24/11/15 Втр 22:05:24 #68 №588241 
>>588197
На чем вообще тесты в Qt гонять? На их же Qt Test?
Аноним 24/11/15 Втр 22:30:05 #69 №588253 
>>588024
Не, ты не понял суть его вопроса. Нужен контейнер для произвольно-мерной матрицы.

Да проще тебе ебало набить^W^W^W самому написать класс с выделением памяти и рекурсивным алгоритмом обращения по compile-time неизвестному количеству индексов количества такого-то.
Аноним 24/11/15 Втр 22:31:58 #70 №588256 
>>588051
>инлайнить ли функцию компилятор решает сам. inline в c++ это директива для линкера, которая указывает что функция может быть определена в нескольких объектных файлах - по умолчанию попытка слинковать два файла с одной функцией вызовет ошибку, а с inline одно из определений будет выкинуто. так что inline надо использовать на всех функциях в заголовочных файлах.

Охуеть. Я думал инлайн это подстановка кода из функции в любое место, чтобы не тратиться на вызов функции.
Аноним 24/11/15 Втр 22:37:28 #71 №588261 
>>587839 (OP)
http://pastebin.com/ameqBHY9
анон помоги пожалуйста. не корректно работает программа, хотя код вроде бы правильный
мне нужно создать массив, в котором находятся элементы, которые содержатся в двух множествах
если общий элемент один, то всё верно, а если их несколько, то программа не работает, что не так?
Аноним 24/11/15 Втр 22:41:52 #72 №588264 
>>588092
>>588256
Тоже с этого удивился. Читал где-то что он при компиляции в ассемблер на место функции не call ставит а макрос.
Аноним 24/11/15 Втр 22:45:02 #73 №588266 
>>588253
>для произвольно-мерной матрицы
Возьми вектор, да добавляй туда что-хочешь. Потом обращайся по индексам, умножая на размерность.
>самому написать класс с выделением памяти и рекурсивным алгоритмом обращения
Иди в социальные сети хвастать знаниями баззвордов.
Аноним 24/11/15 Втр 22:46:01 #74 №588267 
>>588131
>ать?
>Тут не только список кнги, а программу обучения расписать типа читай книги пиши код или как обычно советуют. А потом ссылки на книги/блоги/видеоуроки вынесеные на пастебин.

Я вообще предлагал всю шапку на пастбины расхуячить, и даже не я один, но ОП-хуй, ценителем стихотворчества которого я являюсь, не хочет так.
Аноним 24/11/15 Втр 22:51:51 #75 №588276 
>>588267
Можно растаскать на пастебины, но только очень аккуратно чтобы можно было всю шапку прочитать и перейти на нужный пастебин.
Аноним 24/11/15 Втр 22:53:26 #76 №588279 
>>588266
>Возьми вектор
Можно вектор, можно std::unique_ptr
Я бы лучше сделал std::unique_ptr , чтобы подчеркнуть, что вот мы создаём объект kXmXn например и никак не меняем его никакие размеры (а как ресайзить? По какой размерности?)

>Иди в социальные сети хвастать знаниями баззвордов.
Я может много выпил, но если на этапе компиляции размерность матрицы неизвестна, как без рекурсии ты вообще реализуешь обращение к элементу матрицы? Уж просвети дурака.
Аноним 24/11/15 Втр 22:53:47 #77 №588280 
>>588276
Я это уже джва треда жду.
Аноним 24/11/15 Втр 22:55:06 #78 №588283 
>>588198
Ты указал, что переменной kgs надо присвоить возвращаемое значение функции lbstokg. Отсюда и получается, что kilograms == kgs, потому что функция как раз возаращает переменную kilograms.
Аноним 24/11/15 Втр 22:56:46 #79 №588286 
>>588280
через 5 дней мы этот тред в бамплимите унисём и оп сделает. Но не на пастебин. Надо туда где можно быстро одним ликом пройтись по ссылке. Может на гитхаб? только не на свой. оп заведи фейковый гитхаб лол
Аноним 24/11/15 Втр 23:01:49 #80 №588290 
>>588276
А нельзя на каком-нибудь вики лурке в личном пространстве статью сделать? Будет тебе и навигация, и разметка. Или на гитхабе gist.

Оп выложи исходники шапки, кто-нибудь мб удосужится предложить варианты
Аноним 24/11/15 Втр 23:01:53 #81 №588291 
>>588279
>pointer
Я не понял, что тебе нужно. При чём тут пойнтер? Это даже не контейнер.
>а как ресайзить? По какой размерности?
Опять же зависит от задачи. Можно вставлять в вектор в конец строки. Можно какой-нибудь костыль написать.
>как без рекурсии ты вообще реализуешь обращение к элементу матрицы
Какая нахуй рекурсия для обращения к элементу?
Аноним 24/11/15 Втр 23:03:35 #82 №588295 
>>588291
>в конец строки
Ну, в смысле в конце каждой строки, в 2д, например. В 3д тоже в конце каждой строки, только уже по двум осям перебор.
Аноним 24/11/15 Втр 23:04:20 #83 №588297 
>>588290
>вики
Думал об этом но тогда это похоже слишком. С таким же успехом результатом можно сайт поднять на домене гитхаб.ио.
Аноним 24/11/15 Втр 23:05:48 #84 №588300 
>>588291
Ты вообще дурак, блядь? Я говорю, что надо сделать велосипедный контейнер, в котором на этапе компиляции не известен не только размер по количеству элементов, но и сама размерность матрицы.

До тебя хоть что-нибудь доходит?
Аноним 24/11/15 Втр 23:12:30 #85 №588309 
>>588300
Тогда придётся дополнять остальные ячейки нулями какими-нибудь.
Аноним 24/11/15 Втр 23:14:21 #86 №588312 
>>588019
Matrix::Matrix()
{
this->cols = cols;
this->rows = rows;
this->matrix = new float[this->cols this->rows];
}

float& Matrix::getElement(int x, int y)
{
return matrix[this->rows
x + y]
}

Matrix::~Matrix()
{
delete[] this->matrix;
}

Вот. Самый простой способ. Умные укзазатели для лохов и пидорасов, которых я лично ебал в жопу.
Аноним 24/11/15 Втр 23:15:07 #87 №588314 
>>588312
Ебаная макаба.
http://pastebin.com/FAEdhvUr
Аноним 24/11/15 Втр 23:15:25 #88 №588315 
>>588314
Точку там сам вставишь, тыпонел.
Аноним 24/11/15 Втр 23:18:45 #89 №588318 
>>588312
Ну нихуя себе. Мы-то сами не могли создать массив обычный.
Аноним 24/11/15 Втр 23:26:57 #90 №588326 
>>588318
А зачем для такой простой цели ебать векторы?
Аноним 24/11/15 Втр 23:28:19 #91 №588328 
>>588326
Проще массивы с тиле си
Аноним 24/11/15 Втр 23:29:50 #92 №588330 
>>588328
И быстрее.
Аноним 24/11/15 Втр 23:31:44 #93 №588332 
>>588328
>>588330
Читай посты выше. Этому пидору нужен динамически расширяемый контейнер.
Аноним 24/11/15 Втр 23:33:52 #94 №588335 
>>588332
>>588019
>Нет в stl контейнера для матриц?
Где это прочитал?
мимо тот пидор который не дождался ответа и написал программу с массивами в си стиле
Аноним 24/11/15 Втр 23:36:26 #95 №588337 
>>588335
Лол, я ему тоже сразу написал вот: >>588024
Но потом вот что выяснилось. >>588300

Аноним 24/11/15 Втр 23:38:17 #96 №588338 
>>588337
Вы это продолжайте. Интересно же узнать какой лучший способ придумаете.
Аноним 24/11/15 Втр 23:44:30 #97 №588343 
>>588241
Да. Насколько я понял, у них для этого QTestLib и куча макросов. Все что хочешь проверяй, кроме специфичных кьютовых механизмов, блядь.
Аноним 24/11/15 Втр 23:54:01 #98 №588351 
>>588338
По-моему, если это именно матрица(все элементы заполнены), то можно юзать vector и при добавлении "нового" элемента, добавлять не один элемент, а целый пласт (одной размерносью меньше, чем максимальная). То-есть, например, если добавляем новую размерность в 2D, то при добавлении одного элемента, нужно добавлять целый 2D слой и заполнять его нулями. Если новый элемент меньше доступных, то опять добавляем целый слой.
А в векторе это будет просто insert в конец вектора при добавлении в последнюю размерность / insert в конец каждого пласта при добавлении в предпоследнюю размерность / insert в конец каждой строки при добавлении в предпредпоследнюю размерность и так далее. Ну, то-есть, просто в предыдующий цикл при переборе элементов.

Ну, а если это не матрица, а просто многомерная какая-то хуйня, то тогда надо ебаться с указателями на указатели и всё-такое.

Аноним 24/11/15 Втр 23:57:40 #99 №588355 
>>588351
а если разряженая матрица?
Аноним 25/11/15 Срд 00:06:35 #100 №588364 
>>588019
Сам пили или юзай какие-то библиотеки.
http://eigen.tuxfamily.org/index.php?title=Main_Page
http://glm.g-truc.net/0.9.7/index.html
Аноним 25/11/15 Срд 00:11:38 #101 №588368 
>>588051
7.1.2.2 A function declaration (8.3.5, 9.3, 11.3) with an inline specifier declares an inline function. The inline
specifier indicates to the implementation that inline substitution of the function body at the point of call
is to be preferred to the usual function call mechanism
. An implementation is not required to perform this
inline substitution at the point of call; however, even if this inline substitution is omitted, the other rules
for inline functions defined by 7.1.2 shall still be respected.
Аноним 25/11/15 Срд 00:12:28 #102 №588369 
Какое есть годное чтиво по шаблонам?
Аноним 25/11/15 Срд 00:16:17 #103 №588371 
Хочу поставить себе Visual Studio 2015, но от меня требуют .net framework при том, что нужная версия (4.6) у меня уже установлена. Что делать?
Аноним 25/11/15 Срд 00:17:33 #104 №588373 
>>588371
переустанов дотнет
Аноним 25/11/15 Срд 00:27:34 #105 №588378 
>>588369
Этот тред.
Аноним 25/11/15 Срд 00:28:42 #106 №588379 
>>588371
Поставь QtCreator, не надо ебаться с этой студией.
Алсо, майкрософтовский компилятор даже не соответствует стандартам C++11. Какого хуя его используют вместо gcc или clang?
Аноним 25/11/15 Срд 00:28:48 #107 №588380 
>>588378
Можете мне упаковать?
Аноним 25/11/15 Срд 00:47:22 #108 №588389 
>>588379
Загадка века, на самом деле
Аноним 25/11/15 Срд 00:52:27 #109 №588391 
>>588379
Удобный дохуя. Но в целом всё хуевато временами, да, вон та же vs 2012 может только в 3 из 9 оверлоадов to_string.
Аноним 25/11/15 Срд 01:06:42 #110 №588396 
>>588380
Нет, упаковать не получится.
Чего спросить-то хотел? Если что-то конкретное - спрашивай, если нет - то оно тебе и не нужно.
Аноним 25/11/15 Срд 01:42:19 #111 №588410 
Блять, как же я заебался.
Что нужно:
Накатить нормальную IDE (под Windows 8 всё) с нормальным компилятором, поддерживающим c++11 и подключить какую-нибудь либу для unit-тестирования.
Что происходит:
Устанавливаю Eclipse, устанавливаю minGW, Cygwin (разные сборки), устанавливаю GoogleTest либу, пишу хелло ворлд.
Далее несколько сценариев:
1) Не компилится GoogleTest.
2) Не компилится вообще ничего.
3) Не поддерживается c++11.

Я уже второй день читаю stackoverflow, но так и не сумел наладить всё вместе. В этом сраном GoogleTest какой-то сишный код есть и нихуя блять не работает. Перепробовал разные компиляторы. Попробовал накатить другой релиз эклипса. Всё без толку. В сраном эклипсе еще ошибки какие-то вообще не информативные.
Пиздец просто.
Аноним 25/11/15 Срд 01:43:45 #112 №588412 
>>588410
Сейчас еще какой-то краш происходит из-за дебага.
Просто запускаю - всё нормально.
Запускаю дебаг - ошибка.
Запускаю опять просто Run - ошибка. Хотя пол минуты назад работало.
Аноним 25/11/15 Срд 01:54:19 #113 №588416 
14484056599890.gif
>>588410
>нормальная IDE для win8
>для С++
>eclipse
>не VS
ох мальчик
Аноним 25/11/15 Срд 02:06:09 #114 №588421 
>>588416
>Visual C++
Ну хуй знает.
Аноним 25/11/15 Срд 02:35:50 #115 №588429 
Для тестов юзайте https://github.com/philsquared/Catch
Аноним 25/11/15 Срд 02:42:18 #116 №588430 
>>588416
Ладно, а на ваших линуксах такие проблемы возникают?
Если я накачу какую-нибудь убунту, будет такая же ебля или нет?
Аноним 25/11/15 Срд 02:48:29 #117 №588432 
>>588430
g++ main.cpp
Аноним 25/11/15 Срд 02:48:56 #118 №588433 
>>588432
Ясн.
Аноним 25/11/15 Срд 02:52:54 #119 №588435 
Стоит ли в >2016 учить буст?
Аноним 25/11/15 Срд 02:54:34 #120 №588438 
>>588435
обязательно
буст наконец-то торт
Аноним 25/11/15 Срд 03:03:47 #121 №588442 
>>588438
Почему вдруг? Что с ним произошло?
Я почему-то думал, что всю годноту к выходу нового стандарта уже в него завезут.
Аноним 25/11/15 Срд 08:00:20 #122 №588503 
>>588410
QT Creator поставь. Не обязательно же QT юзать.
Аноним 25/11/15 Срд 08:24:39 #123 №588508 
>>588442
Завезли future, async, promise и move из важного. Все.
Еще по слухам asio могут в c++17 завезти, но стандартная библиотека плюсов все равно бомжеватой будет.
Аноним 25/11/15 Срд 08:55:30 #124 №588516 
>>588379
Там отладчик хуевый, блядь, платиновый спор итт, лол.
>>588371
Ты скачиваешь инсталлятор, он должен сам все необходимое поставить, не? Он же не говорит ",net мне запили быстраблядь", он берет и ставит его сам.
Аноним 25/11/15 Срд 09:13:54 #125 №588520 
По поводу шапки на гитхабе/вики и тому подобного. Я, конечно, могу так сделать, но вангую, что на порядок уменьшится количество прочитавших шапку. Серьезно, сравни количество прочитанных постов и количество переходов по ссылкам, когда ты скроллишь треды. Многие я, например читают только длинные посты, когда устал и лениво читать все подряд, ссылка тогда банально может затеряться. У питонистов, например, гляньте шапку на гитхабе, она мертвая вообще. Всего десять вотчеров, никаких действий и обновлений за последний месяц нет вообще.

И я таки не вполне понял, чем плох вариант с факом в верхних постах. Если проблема только в том, что посты с факом сжались и приходится скроллить по ним, то давайте я попробую перепилить так, чтобы они не сжимались, как с оппостом было, например. Или еще что-то придумаем давайте. Ну срсли, товарищи, я же не из тщеславия копротивляюсь, а хочу, чтобы максимальная польза анону была.
Аноним 25/11/15 Срд 09:15:25 #126 №588522 
14484321253490.gif
>>588355
Так заряди ее.
Аноним 25/11/15 Срд 09:55:55 #127 №588527 
>>588520
Вынести не шапку надо, а фрагменты которые менять не планируются наример и которые короткий ответ на вопрос. И желательно без такхт долгий вступлений
>Специально для тебя аноны /pr собрали уникальную коллекцию отборной литературы по крестам. Только лучшие книги, последние издания, без хуев! Выбирай категорию и обмазывайся:

К примеру
>посоветуйте книг
>выкбирай по этой ссылке
>где используют кресты
>вот тут всё давно пояснили и тут желательно ссылка на хабр или другую популярную статью, а не самописную пасту
Так она вся в 15к постов влезет и остаётся полной.
Аноним 25/11/15 Срд 10:03:03 #128 №588532 
Как называется это вид отношения? На примере, у меня есть класс Car, и в силу определенных обстоятельств, при создании Wheel, Engine, Pipe и т.п. мне нужно указывать на родителя(то бишь Car).
Так вот, это аггрегация или как? И что еще более важно, Car существует в виде умного указателя, его же в конструктор других объектов и передавать, либо пытаться передать ссылку на объект, который стоит за указателем?
Аноним 25/11/15 Срд 10:23:17 #129 №588546 
>>588532
Композиция же.
Аноним 25/11/15 Срд 11:28:21 #130 №588589 
>>588516
Отладчик там будет такой, который ты сам установишь. GDB, LLDB, CDB - выбор за тобой.
Аноним 25/11/15 Срд 11:29:31 #131 №588590 
>>588410
QtCreator + clang. Вот это всё.
Аноним 25/11/15 Срд 11:31:50 #132 №588591 
>>588338
А вот мой вариант! Сделать std::map, ключи которого будут std::tuple<int, int>, а значения - int, float или чего там ещё захотите. И ведь будет работать!
Аноним 25/11/15 Срд 11:41:59 #133 №588593 
>>588589
В том-то и суть, что отладчик студии на голову выше остальных, но работает только с ней и Visual C++ compiler.
Аноним 25/11/15 Срд 11:54:42 #134 №588605 
>>588593
А чем gdb плох?
Аноним 25/11/15 Срд 11:56:39 #135 №588608 
>>588546
А по поводу указателя что?
Аноним 25/11/15 Срд 12:03:05 #136 №588614 
>>588608
Он работает.
Аноним 25/11/15 Срд 12:05:31 #137 №588615 
>>588608
Указываю тебе пройти нахуй. Возвращайся, как освоишь ссылки.
Умные указатели, охуеть! Тебе лень написать delete? Те же ссылки - это умные укзаатели, которые удаляются при выходе из области видимости. Соси хуй.
Аноним 25/11/15 Срд 12:38:26 #138 №588651 
>>588309
Какие остальные ячейки? Все ячейки в момент создания матрицы инициализируются нулями.
Аноним 25/11/15 Срд 12:42:06 #139 №588653 
>>588520
>Если проблема только в том, что посты с факом сжались и приходится скроллить по ним, то давайте я попробую перепилить так, чтобы они не сжимались, как с оппостом было, например.

This. Перепили чтоб без скроллинга. Скроллинг это хуже всего.
Аноним 25/11/15 Срд 12:57:48 #140 №588671 
14484454685240.png
14484454685281.png
14484454685302.png
>>588605
А ты попробуй пересесть с него на VS, тогда поймешь. Пикрелейтед.
Аноним 25/11/15 Срд 12:59:02 #141 №588673 
14484455428750.jpg
>>588615
>ссылки - это умные укзаатели, которые удаляются при выходе из области видимости
Чиво, блядь?
Аноним 25/11/15 Срд 13:34:56 #142 №588697 
>>588591
У мапы обращение не константное.
Аноним 25/11/15 Срд 13:40:06 #143 №588700 
14484480068620.png
>>588615
Щето? Хорошо хоть, под спойлером

>>588532
Если у тебя Wheel, Engine, Pipe и т.п. не живут дольше, чем Car, то можешь передавать им прямой указатель на Car (типа shared_ptr::get)

Если они живут дольше(что было бы странно), то им передавай weak_ptr, инициализированный shared_ptr'ом.

Передавать сам shared_ptr это лишний оверхед в данном случае.
Аноним 25/11/15 Срд 13:56:18 #144 №588707 
>>588700
>что было бы странно
Ничего не странно, машина развалилась на ходу.
Аноним 25/11/15 Срд 14:20:24 #145 №588723 
>>588673
>>588700
Вы чего, ёбу дали? Открываем документацию и читаем:
A reference, like a pointer, stores the address of an object that is located elsewhere in memory.
Ссылки удаляются вместе с объектом, то есть всё так, как я написал. Пиздец, кому я это объясняю.
Аноним 25/11/15 Срд 14:21:22 #146 №588724 
>>588671
Я в такие тонкости не вникал. Брейкпоинты ловит, переменные показывает - мне достаточно.
Аноним 25/11/15 Срд 14:24:26 #147 №588726 
>>588723
Проиграл с толстячка.
Аноним 25/11/15 Срд 14:24:49 #148 №588727 
>>588723
Я это и так знаю автор вопроса
Но основной объект у меня все равно shared_ptr. Как ты оттуда ссылку возьмешь, без анальных разыменований?
Аноним 25/11/15 Срд 14:27:00 #149 №588730 
>>588727
А почему бы не сделать основной объект ссылкой?
Аноним 25/11/15 Срд 14:28:00 #150 №588731 
>>588700
оверхед - потомушта use_count растет, или что?
Наверное так и сделаю, через unique + raw pointerы в конструкторах членов Car.
Аноним 25/11/15 Срд 14:29:01 #151 №588734 
>>588730
>>588730
Що?
Аноним 25/11/15 Срд 14:30:31 #152 №588736 
>>588734
Нет, не ссылкой, а обычным объектом. Перепутал. Для чего указатель то?
Аноним 25/11/15 Срд 14:30:34 #153 №588737 
>>588734
через reinterpret_cast в ссылку перегнать
Аноним 25/11/15 Срд 14:31:58 #154 №588738 
>>588727
В чем проблема с разименованиями?
Аноним 25/11/15 Срд 14:34:51 #155 №588740 
>>588736
Блять, ну хотя бы потому, что этот объект необходимо уметь удалять / заменять другим в рантайме. А при сыром объевлении объекта что?
Аноним 25/11/15 Срд 14:35:17 #156 №588741 
>>588738
Да ни в чем, но разве это идиоматично?
Аноним 25/11/15 Срд 14:35:33 #157 №588742 
>>588740
>объявлении
фикс
Аноним 25/11/15 Срд 14:40:30 #158 №588745 
>>588740
Copy constructor?
Аноним 25/11/15 Срд 14:41:23 #159 №588747 
>>588700
Хм, а если передать смартпойнтер - так вообще получится хуйня какая-то, Car владеет указателем на Wheel, а Wheel - на родительский Car, и если не удалить Car вручную, о ни один из этих объектов не освободится, ибо use_count обоих больше единицы будет всегда.
Аноним 25/11/15 Срд 14:43:18 #160 №588748 
>>588745
Можешь конкретнее?
Аноним 25/11/15 Срд 14:51:32 #161 №588751 
>>588723
Ты тред не попутал? Джава в соседнем, если что. Или давай конкретный пункт стандарта, где сказано про удаление вместе с объектом, или пиздуй туда, клоун, блядь.
Аноним 25/11/15 Срд 14:52:12 #162 №588752 
>>588724
Тогда да, лучше использовать что-то кроссплатформенное.
Аноним 25/11/15 Срд 14:54:11 #163 №588753 
>>588741
Еще как. Например, функция принимает указатель, первым делом проверяет его на nullptr, если все норм, то разыменовывает в ссылку и работает с ней, чтобы не писать лишних символов и случайно не изменить указатель в теле функции.
Аноним 25/11/15 Срд 14:57:23 #164 №588754 
>>588741
> идиоматично?
Ну а зачем тогда нужны указатели, если ты ссышь их разименовать? Почему по твоему шаред_птр может выдать указатель на объект, но не выдает ссылку? Дурачки библиотеку проэктировали? Просто ссылку в любой момент можно разименовать. Передавай в конструктор шаред_птр, в нем вытаскивай указатель и храни в ссылке. Можно даже просто указатель хранить. Это если твои части не имеют никакого отношения к управлению временем жизни Car.
sageАноним 25/11/15 Срд 14:58:44 #165 №588756 
>>588754
>Просто ссылку в любой
Указатель конечно же, а не ссылку.
Аноним 25/11/15 Срд 15:02:39 #166 №588761 
>>588731
Оверхед от создания копий shared_ptr
Аноним 25/11/15 Срд 15:08:56 #167 №588764 
>>588761
Через ссылку же, зачем копия.
Аноним 25/11/15 Срд 15:16:58 #168 №588768 
http://ideone.com/6Y4gHz
В общем, сделал вот так. Вроде все как надо.
Аноним 25/11/15 Срд 15:33:42 #169 №588776 
>>588761
Cобственно ты повторил то, что я сказал.
Или ты имеешь ввиду не увеличение use_count, а создание второго контрол блока(что происходит лишь в случае инициализации сырым указателем, или я чего-то не знаю?). В остальных случаях просто увеличивается use_count, насколько мне известно.
>>588768
Вот такая реализация со ссылкой хуже, чем она могла бы быть с weak_ptr'ом? Я weak_ptr почти не юзал, не вижу преимуществ, они есть в данном случае?
Аноним 25/11/15 Срд 16:01:14 #170 №588797 
Boost жи
Аноним 25/11/15 Срд 16:01:43 #171 №588798 
>>588748
Просто присваиваешь переменной новое значение.
Аноним 25/11/15 Срд 16:03:25 #172 №588804 
>>588751
Ссылка не может быть nullptr, дебил.
Аноним 25/11/15 Срд 16:07:58 #173 №588808 
>>588776
Если ты передашь wheel'у shared_ptr, то в конструкторе копирования увеличивается use count и еще вроде бы происходит синхронизация ибо это все вроде бы thread safe.

Оверхед на самом деле небольшой, ты же не будешь тысячи раз это делать в цикле, но все равно лучше обычными указателями делать там, где не нужна вся эта синхронизация и совместное владение, а то не ровен час у тебя такое и в каком-нибудь горячем коде появится.
Аноним 25/11/15 Срд 16:23:53 #174 №588822 
>>588804
Лол, не рушь его манямирок.
И вообще, рад, что разрулил через ссылки, т.к. привычно всегда было конструкторы передавать именно ссылки...
Аноним 25/11/15 Срд 16:25:47 #175 №588824 
>>588808
Ну да, я просто думал, что что-то еще упускаю, об этом оверхеде я в курсе.
Аноним 25/11/15 Срд 16:30:15 #176 №588829 
>>588804
http://ideone.com/70r7JG
Аноним 25/11/15 Срд 16:34:40 #177 №588831 
>>588532
>И что еще более важно, Car существует в виде умного указателя, его же в конструктор других объектов и передавать, либо пытаться передать ссылку на объект, который стоит за указателем?
Так ты 90% создаешь циклическую ссылку. Судя по всему, у тебя авто владеет двигателем и колесами. Значит при уничтожении Car должен уничтожаться двигатель, но не наоборот. Значит, в конструктор двигателя ты должен передавать или weak_ptr, или тупой указатель, или ссылку. Лучше всего weak_ptr конечно.
А вот в Car должен лежать unique_ptr на двигатель и или колеса (вряд ли один двигатель будет шариться между разными машинами). Ну или shared_ptr, если шариться оно может.
Аноним 25/11/15 Срд 16:35:32 #178 №588832 
>>588822
Передавать ссылки из shared_ptr это какое-то ковбойство, на первый взгляд. Надо тоже так везде сделать :3
Аноним 25/11/15 Срд 16:35:56 #179 №588834 
>>588829
Но зачем стрелять себе в ногу? На практике ты такого делать не будешь.
Аноним 25/11/15 Срд 16:40:25 #180 №588844 
>>588829
Дебил, он тебе это и сообщил. Хули ты такой ебанутый?
Аноним 25/11/15 Срд 16:40:45 #181 №588845 
>>588832
А у меня и не шаред :>
Аноним 25/11/15 Срд 16:43:29 #182 №588847 
>>588844
Ссылка МОЖЕТ быть nullptr. Поэтому когда в коде не видно, что что-то может быть nullptr - это очень вредно. Пишешь такой ., а там на самом деле ->, и пизда. Будешь хамить дальше, я ваш школотред покину - и ебитесь тут сами с собой, школьники.
Аноним 25/11/15 Срд 16:44:12 #183 №588849 
>>588831
Такс такс.
С ссылкой я уже выше сделал, чем лучше с weak_ptr? По сути, в таком виде отношений, как ты и сказал, Car переживет всех своих членов, следовательно проверка expired Car'a излишняя, тащемта можно остановиться на ссылках. Не так?
Аноним 25/11/15 Срд 16:44:32 #184 №588852 
>>588847
это UB, даун
Аноним 25/11/15 Срд 16:44:56 #185 №588854 
>>588852
Сколько тебе лет?
Аноним 25/11/15 Срд 16:50:30 #186 №588861 
>>588854
26
а ты только что сделал dereference null-поинтера => UB
Аноним 25/11/15 Срд 16:53:11 #187 №588868 
>>588847
>>588856

Это всё тот залётный хам начал, который сказал, что ссылки сами удаляются лол
Аноним 25/11/15 Срд 16:54:01 #188 №588870 
-Ты не можешь съесть булыжник
-Нет, смотри, могу.
откусывает
ломает зубы
булыжник цел
Видишь, булыжник можно съесть!
-Но ты же его не съел.
-Будешь хамить дальше, я ваш школотред покину - и ебитесь тут сами с собой, школьники.
Аноним 25/11/15 Срд 16:56:24 #189 №588872 
>>588870
Это С++, детка. Основное know how тут не магические заклинания для аутистов (int v[10]; v[10000]=1000; мааам, он UB сделал), а опыт. Если ты еще и написал, что "ссылки сами удаляются", то просто иди нахуй.
Аноним 25/11/15 Срд 17:16:23 #190 №588885 
>>588849
Я подумал, почитал SO и понял, что weak_ptr здесь никаких преимуществ не дает. Поэтому лично я за тупой указатель. Почему не за ссылку - миллион раз случалось так, что объект, который не может быть null, внезапно оказывается, что может. Типа двигателя, существующего без машины. В случае со ссылками, нужно всегда запихивать инициализацию в initializer list конструктора, что тоже не всегда хорошо. Ссылки я сейчас стараюсь использовать в основном для мелочей типа ostream& operator<<, а не в классах.
Аноним 25/11/15 Срд 17:22:01 #191 №588889 
>>588847
>>588844
>>588804
МОЛЧАТЬ! ЧТО ЗА ХУЙНЯ У ВАС ТУТ? ОП ПОЯСНЯЕТ
Можно сделать любой грязный хак и погрузиться в UB по ноздри, с этим никто не спорит. Речь идет о том, что правила хорошего тона заставляют программиста обеспечивать существование объекта, пока существует ссылка, а для указателей такого нет из-за легального значения nullptr. Если тебе дали ссылку, то ты имеешь полное право работать с ней как с корректным объектом, а все проблемы с его существованием/неравенством адреса nullptr - это проблема того, кто тебе ее дал. ЕМНИП даже сам факт видимости ссылки на некорректный объект является UB, поэтому все остается на совести создателя ссылки, он просто не имеет права ее никому отдавать, если там нет корректного объекта.

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

В остальном (кроме вопросов корректности и разыменования) ссылки эквивалентны константным raw-указателям, никакой сборки мусора там нет и быть не может, тот, кто утверждал это - зеленый. Такие дела.
Аноним 25/11/15 Срд 17:26:33 #192 №588893 
>>588889
Просто ссылка - это синтаксический сахар над указателями и, фактически, ссылка работает так же, как и указатель, но ее надо инициализировать при объявлении и нельзя переназначать.
Даже код компилируется такой же.
Аноним 25/11/15 Срд 17:38:04 #193 №588901 
>>588872
Не говорил такого пока.
Аноним 25/11/15 Срд 17:39:47 #194 №588904 
>>588885
Ладно, похоже, мне придется сначала посмотреть, как оно в деле. Начну с ссылок, будет плохо - возьму raw указатели.
Аноним 25/11/15 Срд 18:50:02 #195 №588947 
>>588261
ну помогите пожалуйста
Аноним 25/11/15 Срд 19:01:03 #196 №588957 
>>588947
Слишком много кода, мне лень читать. Энивей тебе стоит переписать свой велосипед с использованием std::set, если ошибка не пропадет, то я гляну.
Аноним 25/11/15 Срд 19:08:59 #197 №588967 
>>588957
вроде бы проблема в коде в строках 182-207, но я не знаю в чём именно. Мне нужно написать код без контейнера std::set
Аноним 25/11/15 Срд 19:25:26 #198 №588988 
>>588967
Зачем джва раза size увеличиваешь? Алсо, "не работает" - очень туманное понятие, которое в сумме с лютой содомией в твоем коде далеко не помогают разобраться, в чем проблема.
Аноним 25/11/15 Срд 19:34:42 #199 №588992 
14484692820750.png
>>588988
ну то есть когда в двух множествах содержится больше одного одинакового элемента, то всё равно в третьем множестве массив состоит только из одного элемента
Аноним 25/11/15 Срд 20:10:38 #200 №589012 
>>588261
Начни с того что или убери using namspace std; или придумай для своего класса другое имя.
Аноним 25/11/15 Срд 20:25:34 #201 №589030 
>>588992
> using namespace std;
Вот я, например, когда вижу такую конструкцию, смело ссу в рот человеку, её написавшему.
Аноним 25/11/15 Срд 20:43:10 #202 №589049 
>>589030
почему?
Аноним 25/11/15 Срд 20:44:46 #203 №589053 
>>589049
У него привычка такая. Для твоей программы это не страшно.
Аноним 25/11/15 Срд 20:55:31 #204 №589067 
>>589012
имя класса изменилось, но проблема всё равно осталась(
Аноним 25/11/15 Срд 21:03:19 #205 №589079 
>>589030
И правильно делаешь, няша.
Аноним 25/11/15 Срд 21:19:00 #206 №589089 
>>589049
Потому что пересечение пространства имён.
Аноним 25/11/15 Срд 21:26:09 #207 №589094 
>>588261
2ch_set.cpp:2:19: фатальная ошибка: conio.h: Нет такого файла или каталога

Ёбжешь, ну что за?
Аноним 25/11/15 Срд 21:30:12 #208 №589103 
>>588261
Исходное множество 1
{1, 2, 3, 4, 5}
Исходное множество 2
{2, 3, 4, 5, 6}
Получившееся множество 3
{2, 3, 4, 5, 0, 0, 33, 0, 0}

Какой-то ад, GCC вот выдал
Аноним 25/11/15 Срд 21:46:22 #209 №589123 
>>588992
У тебя в operator* такие косяки:

ты создаёшь результирующий set с max_size равным размеру первого set'а, но он может быть равен сумме размеров двух сетов

увеличиваешь size 2 раза, как анон выше сказал

зачем-то у тебя объявлен k, без которого можно было бы легко обойтись

вот код переписанного оператора http://pastebin.com/3M0fcujp

вроде работает, но это всё пиздец полный.
Аноним 25/11/15 Срд 22:00:45 #210 №589135 
14484780451760.png
>>589123
этот вариант тоже не работает
Аноним 25/11/15 Срд 22:14:18 #211 №589150 
>>589030
Вообще, в разных простейших примерах, когда хочется быстро скомпилировать код и объяснить суть, это вполне нормально, для того возможность включать целые пространства имен и пилилась. Проблема в том, что если ньюфагу об этом не сказали, то он запомнит МАГИЧЕСКУЮ ФРАЗУ в начале примера и будет так делать везде, а это неприемлемо.
Аноним 25/11/15 Срд 22:15:56 #212 №589155 
>>589123
Почему это? У него же пересечение, а не объединение, значит, энивей размер не превысит размеров обоих операндов.
Аноним 25/11/15 Срд 22:18:39 #213 №589159 
14484791195560.png
>>589150
>неприемлемо
Аноним 25/11/15 Срд 22:20:34 #214 №589163 
>>589150
И да, печально, что практически нигде нет информации про best practices работы с пространствами имен, единицами трансляции, что можно писать в хэдере, а что нельзя, как вообще разбить по каталогам свой ебучий проект, когда он стал больше, чем laba2, ну и всякое такое. Приходится всем постигать это самим, набивая шишки.
Аноним 25/11/15 Срд 22:21:28 #215 №589164 
>>589150
>для того возможность включать целые пространства имен и пилилась
Нет.
Аноним 25/11/15 Срд 22:22:33 #216 №589167 
14484793536680.png
>>589159
Аноним 25/11/15 Срд 22:23:15 #217 №589168 
>>589164
Поясни.
Аноним 25/11/15 Срд 22:23:16 #218 №589169 
>>589164
Ну, точнее, явно не только.
Аноним 25/11/15 Срд 22:25:05 #219 №589173 
>>589169
Мне кажется, ее запилили для удобства в случаях, когда ты уверен, что не будет коллизии. В частности, в простейших хэллоуворлдах.
Аноним 25/11/15 Срд 22:26:20 #220 №589174 
>>589173
Это само собой, но это не единственный юзкейс.
Аноним 25/11/15 Срд 22:30:15 #221 №589177 
>>588019
Вектор векторов нет
Аноним 25/11/15 Срд 22:31:10 #222 №589178 
>>588797
Если ты про заглавную букву, то нихуя, взгляни на их логотип.
Аноним 25/11/15 Срд 22:31:19 #223 №589179 
>>589168
http://stackoverflow.com/a/14395960
Аноним 25/11/15 Срд 22:32:32 #224 №589181 
http://ideone.com/i5MPNR
Аноним 25/11/15 Срд 22:32:50 #225 №589182 
>>589135
Откомпилировал на MinGW это http://ideone.com/x8AllP работает нормально, по сравнению с твоим изменено несколько строчек, из важных только 191 и 203. Проблема в твоей системе (компиляторе) наверное.
Аноним 25/11/15 Срд 22:32:51 #226 №589183 
>>589181
Что не так, с этой прогой?
Аноним 25/11/15 Срд 22:35:31 #227 №589184 
>>589179
Два чаю. Но если говорить именно о глобальном юзинге, то таки я был прав, не?
Аноним 25/11/15 Срд 22:36:23 #228 №589187 
>>589183
>#include <iostream>
>#include <iostream>
Дальше не читал.
Аноним 25/11/15 Срд 22:37:02 #229 №589189 
>>589184
Я всего лишь сказал, что удобство не only motherfucking option
Аноним 25/11/15 Срд 22:38:11 #230 №589191 
>>589182
наверное проблема в 214-232 строках, потому что когда я вызываю в исправленном методе operator* метод s.output, то всё выводится нормально.
Аноним 25/11/15 Срд 22:40:08 #231 №589194 
>>589189
Что-то из разряда ++i вместо i++
Аноним 25/11/15 Срд 22:40:48 #232 №589195 
>>589183
Вроде все норм.
Аноним 25/11/15 Срд 22:42:20 #233 №589202 
>>589194
++i + ++i
Аноним 25/11/15 Срд 22:47:06 #234 №589206 
>>589202
Хаха)) Смишной, давай питюню братишь
Аноним 25/11/15 Срд 22:53:54 #235 №589217 
>>589206
Опять модер предупреждение даст?
Аноним 25/11/15 Срд 22:59:32 #236 №589223 
>>589217
Я за политоту давал, а не за скобочки, лол.
Аноним 25/11/15 Срд 23:10:25 #237 №589234 
14484822257810.png
14484822257841.png
https://ideone.com/hWWZW5
Помогите пожалуйста разобраться. Мои тесты проходят, а на сервере нет. Результат чуть меньше чем надо выдаёт.
программу пояснять или и так понятно?
Аноним 25/11/15 Срд 23:25:00 #238 №589253 
Кто уже изучил CppCoreGuidelines?
Аноним 25/11/15 Срд 23:26:53 #239 №589256 
>>589253
Его еще пилят (еще пилить и пилить).
>>
Алсо пофиксил. Частично...
http://ideone.com/i5MPNR
Аноним 25/11/15 Срд 23:30:04 #240 №589259 
>>589234
Нихуя не понял в твоём коде.
Очевидное решение за N M (N + M):
Проводим линию из (0, 0) в (x, y), подсчитываем профит за N+M. Всего нужно перебрать 1600 вариантов (x, y), вроде бы не так много.

Если у тебя что-то умнее, то объясни.
Аноним 25/11/15 Срд 23:49:34 #241 №589280 
>>589259
динамическое программирование же
Аноним 25/11/15 Срд 23:51:50 #242 №589282 
14484847103960.png
>>589259
>Всего нужно перебрать 1600 вариантов (x, y)
При любом размере n и m?

>Если у тебя что-то умнее, то объясни.
line принимает размер поля и шаг. Шаг на пике 3 красным. if(l==k) то рисует зелёные точки иначе красные. Линия делается пока не дойдёт до края и сначала сверху вниз потом с лева на право. Поэтому 2 вайла. И в main фор перебирает длину шага. Пробовал длину шага от 1 до максимальной из сторон перебирать, но тоже не работает.
И в отрисовки где-то ошибка т.к. ответ занижен.
Аноним 25/11/15 Срд 23:53:38 #243 №589283 
>>589280
Поясни мысль. Каждый угол наклона имеет примерно уникальный набор квадратиков, которые прямая пересекает. Как ты предлагаешь кешировать? (в моём понимании динамическое программирование = рекурсия + кеширование)
Аноним 25/11/15 Срд 23:54:03 #244 №589284 
>>589280
Алгоритм какой=то конкретный или самому выводить?
Аноним 25/11/15 Срд 23:56:24 #245 №589285 
>>589282
>При любом размере n и m?
В условии написано, что размеры меньше 40. В худшем случае.

Кажется, у тебя решение не выдаёт оптимальный результат потому что ты перебираешь не все тангенсы. Ты перебираешь только 1/x а надо y/x
Аноним 25/11/15 Срд 23:58:03 #246 №589287 
>>589282
Ну, ты понял, что тебе нужна функция line(0, 0, x, y) которая выдаст тебе сколько очков соберёт линия, которая проходит через две точки (0, 0) и (х, у), и в качестве (x, y) перебрать все узлы сетки, а не только те, что снизу.
Аноним 25/11/15 Срд 23:59:54 #247 №589294 
>>589287
Это выходит с дробями работать? Не понимаю как проложить прямую между двумя точками чтобы захватить максимальное количество клеток?
Аноним 26/11/15 Чтв 00:08:49 #248 №589306 
>>589287
> и в качестве (x, y) перебрать все узлы сетки, а не только те, что снизу.
А понял. Но это не оптимально т.к. прямые из 0;0 в 1;1 и 2;2 одинаковые. Из 0;0 1;3 и 2;6 тоже одинаковы.
Аноним 26/11/15 Чтв 00:10:40 #249 №589310 
>>589294
Нет, тут можно обойтись целыми числами.
Представим, что у нас линия идёт не вниз, а вверх. Уравнение прямой, проходящей через 0 0 и (a, b) такое: y = (b / a)x.
Клетка (k, l) пересекается прямой с тангенсом (b / a) если
l/(k + 1) <= b / a <= (l + 1) / k
Значит, в каждой строчке нам нужно найти все клетки у которых это неравенство выполняется.
Идём в первую строчку, находим группу стобиков, для которых это неравенство выполняется.
После этого идём во вторую строчку. Мы можем начать перебор уже не с нуля, а с первого столбика с предыдущей строчки, для которого неравенство выполнялось. (потому что линия не может изогнуться налево уже)
Как-то так. В неравенстве умножь просто обе стороны и не будет дробей.
Аноним 26/11/15 Чтв 00:12:09 #250 №589313 
>>589306
Можешь вместо (x, y) брать (x / gcd(x,y), y / gcd(x, y))
и держать массив 40 на 40, чтобы знать, что такой вот тангенс мы уже просмотрели.
Аноним 26/11/15 Чтв 00:14:02 #251 №589314 
>>589310
Спасибо. Щас попробую понять.

>>589280
А с ДП как решать?
Аноним 26/11/15 Чтв 00:27:47 #252 №589324 
>>589314
О, я придумал быстрее алгоритм. Пускай каждому тангенсу соответствует ячейка в массиве в 1600 элементов. Причём, этот массив отсортирован по значению тангенса.
Потом бежим по каждой ячейке поля, видим: клетка (k, l) столько-то очков. Нужно прибавить всем тангенсам, которые между l / (k + 1) и (l + 1) / k это количество очков. Это делается деревом отрезков, например. После этого тупо бежим по дереву и находим тангенс с максимальным значением и выводим его.
Аноним 26/11/15 Чтв 00:29:19 #253 №589326 
>>589324
Получается O(N M log(N M) + N M)
Аноним 26/11/15 Чтв 00:34:42 #254 №589335 
>>589324
>l / (k + 1) и (l + 1) / k
Почему туда? Не совсем понял алгоритм? Если тангенс меняется, то и какие-то клетки нужно отнять, а не только прибавить.
Аноним 26/11/15 Чтв 00:45:44 #255 №589342 
>>589335
Ещё немножко упростил алгоритм: нам нужно уметь быстро отвечать на вопрос: сколько профита между таким-то и таким-то тангенсом.
Для этого заведём массив, в которм будет сказано: сколько профита под таким-то тангенсом (<=). Его можно посчитать за NM log(NM) (частичные суммы), пускай он будет зваться under
Ещё возьмём массив, где будет ответ на то сколько профита с таким-то тангенсом (==) пускай будет equal
После этого нам просто нужно найти такой индекс i, что under - under[i - 1] + equal[i - 1] максимально. Это делается за NM. Собственно, это и будет ответ. Искомый тангенс x: under <= x <= under[i - 1].
Аноним 26/11/15 Чтв 00:48:46 #256 №589346 
>>589342
Как считать профит тангенса?
Аноним 26/11/15 Чтв 00:52:57 #257 №589352 
>>589346
Частичной суммой, итерируясь по клеткам, отсортированым по тангенсам.
Аноним 26/11/15 Чтв 00:54:29 #258 №589353 
>>589352
Я не понимаю. Можно пример или подробней? Там же прямая проходит между двумя точками и не понятно какие клетки пересекает.
Аноним 26/11/15 Чтв 01:14:05 #259 №589359 
>>589353
Каждая клетка на карте имеет два тангенса: [l, r]
Если некоторая прямая имеет тангенс x такой, что l <= x <= r, то прямая получает профит.
Имеем прямую с тангесом x.
Суммируем профит всех клеток, у которых x <= r. После этого отнимаем профит всех клеток, у которых x < l.
Для этого нужно посчитать массив, в котором будет говориться сколько профита у клеток с r <= t_i где t_i - итый тангенс.
После этого нужно посчитать массив, в котором будет говориться сколько профита у клеток с l < t_i, где t_i - итый тангенс.
Дальше понятно?
Аноним 26/11/15 Чтв 01:37:04 #260 №589370 
Всё, я придумал самое понятное объяснение решения этой задачи. Представь, что каждая клетка это магазинчик. У магазинчика есть время работы. Например, магазинчик (k, l) открывается в l / (k + 1), а закрывается в (l + 1) / k. У каждого магазинчика есть количество денег в кассе (профит клетки).
Теперь задача перефразируется так: вам даны расписания кучи магазинчиков. Вы можете остановить время в некоторый момент и пойти обворовать все кассы открытых магазинчиков. Найти самый удобный момент для ограбления.
То есть тангенс это время, а линия, идущая через клетки - это мы остановили время и бежим грабим все открытые магазинчики.
Как решать задачу про магазинчики - сортируем события типа (открылся магазинчик) и (закрылся магазинчик) по времени, а потом идём и держим в памяти текущий профит. Если магазинчик открылся, прибавляем его профит. Если закрылся, отнимаем. Максимальный профит, который мы держали в памяти - ответ.
Всё.
Аноним 26/11/15 Чтв 03:51:09 #261 №589388 
>>589370
1. а есть пруф того, что линия должна проходить через узлы сетки на границах?
2. что там со случаем горизонтальных линий?
Аноним 26/11/15 Чтв 09:56:51 #262 №589451 
Допустим, у меня есть класс GeometryManager. Он нужен для того, чтобы хранить в себе все модели, и если мне понадобится загрузить 1 модель 10 раз, то я просто буду доставать её из кеша. Метод get(const std::string &name) даёт мне ссылку на нужный объект. Так что мне приходится создавать ссылку на эту модель в классе Object. И тут вопрос: что лучше, использовать ссылку или указатель? Я имею ввиду объявление в классе.
Аноним 26/11/15 Чтв 10:01:44 #263 №589455 
>>589451
Смотря как ты управляешь жизнью модели. Если выбирать между ссылкой и указателем то лучше ссылка, так как она безопасней, смысла в указателе нет. Возможно тебе стоит умные указатели использовать.
Аноним 26/11/15 Чтв 10:02:10 #264 №589456 
>>589451
Используй указатель если нужно что-бы модель отцеплять можно было. Если есть гарантия что объект по указателю не умрёт раньше чем объект его содержащий, то используй простой указатель, если такой гарантии нет, то std::shared_ptr.
Аноним 26/11/15 Чтв 10:24:45 #265 №589466 
>>589455
А почему у меня отваливается дефолтный оператор присваивания, если я завожу ссылку в классе? Или это из-за чего-то другого?
Алсо, не хочу мусорить в коде умными указателями. Очень уж плохо они выглядят, как по мне.
Аноним 26/11/15 Чтв 10:25:20 #266 №589467 
>>589388
Сообщение, на которое ты ответил, и есть пруф этого факта.

С вертикальными, ты хотел сказать. Ну да, некоторые магазинчики закрываются в моментль (l+1) / 0, ну значит будет inf, больше всех остальных, после сортировки они в конец уйдут.
Аноним 26/11/15 Чтв 10:29:13 #267 №589469 
>>589466
Из-за типа на который ссылка. У него видимо оператор присваивания не определён.
Аноним 26/11/15 Чтв 10:31:50 #268 №589470 
>>589469
А почему дефолтный не работает? Или дефолтный тоже надо определять, вроде T& operator =(const T&) = default; ? Раньше без этого всё работало.
Аноним 26/11/15 Чтв 10:34:52 #269 №589472 
>>589470
А определён ли дефолтный? Проверь, если да, значит в чём то другом дело.
Аноним 26/11/15 Чтв 10:35:38 #270 №589473 
Ах, да. Ссылке нельзя ничего присвоить. Жалко, я думал обойтись без указателей. Может быть, есть способ отсортировать вектор объектов, у которых в классе есть ссылка? Или обязательно нужно менять её на указатель?
Аноним 26/11/15 Чтв 10:36:00 #271 №589474 
>>589470
Почитай за принципы генерации конструкторов.
Аноним 26/11/15 Чтв 10:38:23 #272 №589477 
>>589473
Код сегодня будет или по кофейной гуще гадать?
Аноним 26/11/15 Чтв 10:42:08 #273 №589481 
>>589473
Погугли pimpl. Можешь внутренности Object по такому же принципу сделать, но тогда у тебя всеравно будет указатель.
Аноним 26/11/15 Чтв 10:43:24 #274 №589483 
>>589473
>>589481
И объекты будут разбросаны по всей памяти, а не в одном участке находится.
Аноним 26/11/15 Чтв 10:48:17 #275 №589487 
>>589473
Я не оче понял твой вопрос, но контейнеров ссылочных типов не бывает. Если тебе нужен контейнер и его сортировка, то используй либо указатели, либо std::reference_wrapper.
Аноним 26/11/15 Чтв 10:50:30 #276 №589488 
>>589477
http://pastebin.com/akdXyZ1V - Manager.hpp

http://pastebin.com/fnurQEee - ObjectManager.hpp
http://pastebin.com/DB6CXwA3 - ObjectManager.cpp

http://pastebin.com/VpkerqrU - Object.hpp
http://pastebin.com/ZyUYzALx - Object.cpp

Вот тут в Object.hpp определена ссылка-член класса geometry. И когда я сортирую массив таких объектов в ObjectManager.cpp, у меня не компилируется и пишет, что удалён оператор присваивания. И я, кажется, понял, что нужно всё-таки использовать указатель. Может есть какой-нибудь умный указатель, который не даст очистить память, на которую он указывает?
Аноним 26/11/15 Чтв 10:52:02 #277 №589490 
>>589481
>>589487
Ды нет, он скорее всего имел ввиду отсортировать контейнер объектов по значению ссылочного объекта внутри. Хотя в таком случае вообще хуй знает, что непонятно.
Аноним 26/11/15 Чтв 10:55:28 #278 №589497 
У него вектор объектов в которых ссылка. У объекта operator= не определён, поэтому не сортируется.
Аноним 26/11/15 Чтв 10:55:46 #279 №589498 
>>589488
Так у тебя его и нет же, оператора-то.
Аноним 26/11/15 Чтв 10:56:25 #280 №589499 
>>589497
Ну да. Тривиальная ошибка.
Аноним 26/11/15 Чтв 10:57:24 #281 №589502 
>>589498
Так он удалён, потому что Nio::Object::Geometry &geometry.
Аноним 26/11/15 Чтв 10:58:38 #282 №589504 
>>589497
А как я его определю? Ведь нельзя просто так сказать ссылке, чтобы она ссылалась на другой объект.
Аноним 26/11/15 Чтв 10:59:30 #283 №589506 
А! Так можно просто сделать вектор указателей, которые очень легко сортировать! И ссылку можно оставить в таком случае.
Аноним 26/11/15 Чтв 10:59:48 #284 №589507 
>>589504
И тут ты должен понять что нужно использовать указатель
Аноним 26/11/15 Чтв 11:00:20 #285 №589508 
>>589504
std::reference_wrapper
Аноним 26/11/15 Чтв 11:01:10 #286 №589509 
>>589506
Ничоси.
Аноним 26/11/15 Чтв 11:02:03 #287 №589510 
>>589507
Да, я уже понял, спасибо.

>>589508
Это, кажется, именно то, что я искал. Его можно запихнуть в вектор? Или как и с обычными ссылками, нельзя?
Аноним 26/11/15 Чтв 11:04:46 #288 №589513 
>>589510
Что же ты непнятливый такой.
Определи присваивания оператор, ибо на чистых ссылках у тебя не получится.
Аноним 26/11/15 Чтв 11:05:41 #289 №589515 
>>589510
Он как раз создавался затем, чтобы пихать его в контейнеры, так что можешь. Проблема только в том, что operator. не перегружаемый, поэтому не получится юзать врапперы как сами ссылки, с точкой для доступа к членам. Придется писать & или get, получать из враппера хранящуюся в нем ссылку, а уже для нее ставить точку.
Аноним 26/11/15 Чтв 11:07:02 #290 №589516 
>>589510
Не, тащемта так можно, просто у тебя по семь пятниц.
Впрочем, оба этих варианта обёртка с лихвой покрывает.
Аноним 26/11/15 Чтв 11:07:28 #291 №589517 
>>589513
Ненужен ему оператор, перечитай на что у него ссылки >>589451
Attention! Аноним 26/11/15 Чтв 12:30:23 #292 №589564 
Вопрос к нюфаням и не только.

Еслы ты всё знаешь то текст по ссылке не читай - сразу отвечай.
Если не знаешь нихуя, то не отвечай. Если хочешь, можешь ответить, только пасту прочти тогда
Если не в курсе об auto, перегрузках, шаблонах, SFINAE, Concepts, то читай соотв. раздел: http://pastebin.com/hmVPBrBh

- - - - - - - - -

Вопрос:

template <typename T>
concept bool CheckedType = true;

auto fn(CheckedType a, CheckedType b) { / ... / }

a и b имеют один тип или разные?

auto fn(auto a, auto b) { / ... / }

А здесь?

auto fn(CheckedType<auto> a, CheckedType<auto> b) { / ... / }

А теперь?

Да, мне не правильный ответ нужен, а мнение. И пояснение почему так считаешь, было бы неплохо увидеть
Аноним 26/11/15 Чтв 12:33:41 #293 №589567 
>>589564
Ебать, нахуя makabacode ссылки разворачивает, пиздец.
Аноним 26/11/15 Чтв 13:08:54 #294 №589583 
>>588410
Почему VS не используешь, поехавший?
Аноним 26/11/15 Чтв 13:11:12 #295 №589585 
Поясните ньюфагу, необходимость наличия фреймворков и visual с++ yf на целевой машине обусловлена студией же? Или языковой платформой в целом? Какого хуя в общем? Поставил студию 15, наделал пробных проектов, на другой машине их не запустил, пока visual c++ 2015 не установил там.
Аноним 26/11/15 Чтв 13:23:01 #296 №589594 
>>589585
Для C#, очевидно нужен .NET https://www.microsoft.com/ru-ru/download/details.aspx?id=30653
Для крестов - рантайм библиотеки. Visual C++ Redistributable там же у майков найдешь.
Аноним 26/11/15 Чтв 13:57:40 #297 №589607 
>>589564
Пасту не читал.
>concept
Это пока нестандарт еще, сразу на хуй. До принятия все изменится сто раз, как с прошлыми фичами было.
Аноним 26/11/15 Чтв 14:01:16 #298 №589609 
>>589564
> auto
Поссал тебе в ротельник.
Аноним 26/11/15 Чтв 14:04:14 #299 №589610 
>>589564
Мне не нравится вся эта движуха. Без олдовых SFINAE-концептов слишком упадет уровень магичности, а я обожаю писать чудовищные вещи на шаблнах, чтобы все охуели, как я могу. Ажтрисет. Раньше были норм метафункции на структурах, теперь ввели constexpr'ы и убили всю сладость метапрограммирования. Даже школьник теперь сможет сидеть и хуярить как на хаскелле. Ладно, я с этим смирился, constexpr'ы таки хорошая штука, но теперь эта хуйня, блядь. Охуевшие комитетские пидарасы хотят сделать из языка джаву, вообще пушка.
Аноним 26/11/15 Чтв 14:08:30 #300 №589611 
>>589610
Хотя если будет возможность не только проверять наличие метода, который можно вызвать с твоим набором параметров, а запилят полноценную проверку по сигнатуре и возвращаемому типу, то это стоит того, наверное.
Аноним 26/11/15 Чтв 14:14:39 #301 №589615 
>>589610
> обожаю писать чудовищные вещи на
Напиши чтоб виртуальные функции работали.
Аноним 26/11/15 Чтв 14:16:57 #302 №589618 
>>589564
То есть, эта хуйня фактически просто расширит SFINAE с проверки сигнатур шаблонных функций на ошибки до проверки произвольного кода в requires? Тогда это сахарок, теоретически при помощи sizeof и т.п. можно впихнуть в сигнатуру что угодно без фактического вычисления. Другое дело, что впихнутое часто не работает из-за кривости компиляторов, но ведь и концепты завезут лет через десять в лучшем случае, лол.
Аноним 26/11/15 Чтв 14:21:01 #303 №589620 
>>589585
Вот этот >>589594 кун дело говорит. Еще ты можешь кинуть нужные дллки, которые установились вместе с redistr, в паку с экзешником на другом компе, все заработает. И еще можно пошаманить с файлом проекта и статически их линковать, тогда запускаться будет где угодно, но размер экзешника вырастет.
Аноним 26/11/15 Чтв 14:22:41 #304 №589621 
>>588368
ключевые слова:
>implementation is not required to perform this inline substitution
компиляторам абсолютно похуй, inline или нет. точно так же они игнорируют register в си. компилятору лучше знать, что надо поместить в регистр или заинлайнить, чтобы быстрее работало.
>other rules for inline functions defined by 7.1.2
как раз про линковку.
Аноним 26/11/15 Чтв 14:27:07 #305 №589623 
>>588092
>>588264
>>588256
хотите еще охуительной инфы? вызов функции стоит абсолютно нихуя. предиктор в процессоре на первом вызове запомнит куда прыгнет call и на всех последующих вызовах инструкции оттуда сразу начнут подгружаться. польза подстановки кода в том, что компилятор может специализировать код функции под передаваемые аргументы (например, удалить ветки, которые 100% не выполнятся).
Аноним 26/11/15 Чтв 14:32:34 #306 №589626 
>>589618
Уже в транке GCC
Аноним 26/11/15 Чтв 14:39:40 #307 №589632 
>>589607
Комитет единогласно за. В GCC запилено. В какой-то экспериментальной ветке clang тоже запилено.
Аноним 26/11/15 Чтв 14:41:36 #308 №589635 
>>589594
>>589620
Всё понял, спасибо, подтвердили мои предположения обо всём.
Аноним 26/11/15 Чтв 14:46:38 #309 №589637 
>>589610
Ты можешь выебываться при помощи constexpr. Я где-то видел, изменяемое состояние в compile-time, или ли что-то подобное, не помню точно.
Аноним 26/11/15 Чтв 14:47:02 #310 №589639 
Нормальная ли практика - использовать forward declaration? Или это плохо и нужно менять архитектуру, чтобы работали обычные инклуды?
Аноним 26/11/15 Чтв 14:51:03 #311 №589641 
>>589611
requires (T a) {
{ a.get_b() } -> B; // есть get_b, возвращает B
}
Аноним 26/11/15 Чтв 14:55:13 #312 №589643 
>>589639
class A;

class B
{
A &p;
};

class A
{
B &p;
};

Сделай так без forward-declaration.
Аноним 26/11/15 Чтв 14:58:14 #313 №589645 
>>589643
В том-то и вопрос: не является ли циклическая зависимость признаком хуевой архитектуры?
Аноним 26/11/15 Чтв 14:58:40 #314 №589646 
>>589643
Так я знаю, что не получится. Но нормально ли так делать?
Аноним 26/11/15 Чтв 15:00:07 #315 №589648 
Так, блядь. Тред оккупировали SFINAE-петухи. Разрешаю вам нассать и насрать им в рот. Если что - все вопросы ко мне.
Аноним 26/11/15 Чтв 15:01:08 #316 №589649 
>>589645
>>589646
Это нужно на конкретную задачу смотреть. Можно ли сделать по другому? Будет ли лучше?
Вот так в вакууме, норм, юзкейс есть.
Аноним 26/11/15 Чтв 15:05:19 #317 №589653 
>>589649
Есть объект. У него есть массив контроллеровназовём их так. Контроллер может контролировать объекти правда. В методе update() объект запускает for_each по массиву контроллеров, в котором вызывает метод process(), принадлежащий классу контроллера. Вообще, контроллер - это интерфейс. Метод process() должен как-то работать с объектом(перемещать его, крутить, вот это всё). Как исправить эту архитектуру? Или всё в порядке и нужно пилить forward declaration?
Аноним 26/11/15 Чтв 15:22:56 #318 №589665 
>>589615
NVI же. Вот такое набросал, тут дохуя всего можно улучшить (засунуть прелюдию в макрос, придумать, как сделать несколько виртуальных методов в одном шаблонном классе и так далее), но идея понятна.

http://pastebin.com/S4r56baH
Аноним 26/11/15 Чтв 15:24:05 #319 №589666 
>>589637
Я знаю, лол. Более того, я один из форсеров этой ебалы..
Аноним 26/11/15 Чтв 15:26:24 #320 №589667 
>>589641
Охуенно.
>>589648
Шел бы ты отсюда, неосилятор. Здесь господа волшебники двухсотого лвла обсуждают важнейшие способы слепить троллейбус из хлеба.
Аноним 26/11/15 Чтв 15:46:54 #321 №589697 
>>589667
Пиздуйте за этим в джаву, к генерикам.
Аноним 26/11/15 Чтв 15:48:14 #322 №589700 
>>589697
Генерики говно, гораздо менее мощные.
Аноним 26/11/15 Чтв 15:55:38 #323 №589713 
>>589666
Опа. Поясни. Что-то сложнее инкремента можно зделоть?

>>589667
> Охуенно
Ты скорее всего в курсе, но это тоже можно на шаблонах напидорить: http://open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4436.pdf
Аноним 26/11/15 Чтв 16:09:01 #324 №589722 
Объясните!!! Эта фича только для бэкенд-разработчиков? Чтобы фронтэндщики могли использовать их библиотеку так, чтобы ничего не сломалось? Или нахуя оно нужно, если в своём коде я и так ориентируюсь? Для чего мне проверять, есть ли такой-то метод с такой-то сигнатурой, если я сам могу открыть код и посмотреть?
Аноним 26/11/15 Чтв 16:11:46 #325 №589725 
>>589722
Для библиотекарей, да.
Аноним 26/11/15 Чтв 16:45:28 #326 №589748 
>>589713
>Что-то сложнее инкремента можно зделоть?
Сейчас на http://b.atch.se есть три статьи, в которых нигра-швед дошел до контейнера метатипов времени компиляции. В сентябре он говорил, что скоро продолжение будет, но чота глухо пока. На русском есть перевод первой статьи http://habrahabr.ru/post/268141, плюс у меня есть пара идей, как сделать полноценные переменные, а не только инкрементируемые. Но я их пока ни во что не оформил, никак руки не дойдут. И еще автор говорил что-то про полноценную интроспекцию, но это было оче туманно, и я не понял, как он предлагает это делать.
Аноним 26/11/15 Чтв 16:46:06 #327 №589749 
>>589748
Запятую убрать, обосрался немного.
Аноним 26/11/15 Чтв 18:06:13 #328 №589797 
Точно ли я туда зашел?..
Аноним 26/11/15 Чтв 18:13:16 #329 №589803 
14485507963480.png
14485507963521.png
Блядь, зашёл в тред - как говна поел. Какие концепты, какие SFINAE? Что ещё за новый, блядь, способ ебать байты? Какие функции времени компиляции? Вы ёбнулись? Пишите, блядь, код, и не выёбывайтесь. Нахуя вам экономить 20 микросекунд на вызов функции при старте программы? Да я ваш рот ебал в жопу, сука, как у меня ГОРИТ пиздец! Съёбнули с треда все блядь быстро!
Аноним 26/11/15 Чтв 18:17:07 #330 №589804 
>>589803
Страуструп, залогинься.
Аноним 26/11/15 Чтв 18:21:50 #331 №589808 
>>589803
Ты просто слишком тупой для языка, на котором господь написал вселенную. За чистым байтоебством иди в си-тред, а тут мы отыскиваем новейшие возможности для самого извращенного и сложного кодинга эвер.
Аноним 26/11/15 Чтв 18:28:23 #332 №589810 
>>589808
Да нахуя оно нужно? Что ты не сможешь написать без этого говна?
Аноним 26/11/15 Чтв 18:30:43 #333 №589811 
>>589713
Тащемта, я, наверное, неправильно выразился. Возвращаемый тип тоже можно без лишних костылей проверить через std::is_same, но проблема в том, что все эти инструменты, которые основаны на проверке корректности выражений, не дают точных сигнатур. Т.е. если foo (1) корректна, то мы не знаем, foo (int) там, или foo (double). То же самое с const и прочей хуйней. Хочется же проверить декларацию в точности, вплоть до const, virtual, constexpr и всякого такого.

За ссылку спасибо, читну.
Аноним 26/11/15 Чтв 18:31:37 #334 №589812 
>>589810
Кластер метапарадигм. Есть такая штука - академический интерес, за счет него прогресс двигается. Такие дела.
Аноним 26/11/15 Чтв 18:31:47 #335 №589813 
14485519074130.png
Почему не работает такой код?
Аноним 26/11/15 Чтв 18:32:38 #336 №589814 
>>589812
Так создайте свой отдельный тред, академики ебаные! А этот оставьте нормальным людям! Да блядь!
Аноним 26/11/15 Чтв 18:33:24 #337 №589815 
>>589814
>нормальным людям
Школьникам с лабами, ты хотел сказать?
Аноним 26/11/15 Чтв 18:34:11 #338 №589817 
>>589815
Нет, нормальным людям. Школьники как раз сейчас будут осваивать новую программу и засрут весь тред вашими CONSTEXPR'АМИ
Аноним 26/11/15 Чтв 18:41:19 #339 №589822 
>>589813
!= вместо ==.
Аноним 26/11/15 Чтв 18:43:31 #340 №589825 
>>589822
Тогда вообще не завершается.
Аноним 26/11/15 Чтв 18:46:50 #341 №589829 
>>589825
i=1 должно быть перед циклом, а не внутри. Да проще тебе ебало набить.
Аноним 26/11/15 Чтв 18:47:19 #342 №589830 
>>589817
>>589817
Что плохого в constexpr? Не то чтобы я понимал SFINAE (вообще первый раз об этой хуйне слышу), но constexpr это охуенная вещь из 11 стандарта, не путай, пожалста, сечку с гречкой, а хуй с трамвайной ручкой.
Аноним 26/11/15 Чтв 18:53:44 #343 №589832 
14485532249700.png
>>589829
Пиздец ты злой!
Аноним 26/11/15 Чтв 18:56:34 #344 №589834 
>>589832
Ебать ты тупой, s = pp заменить на s = sp. Добавить s = 1 после i = 1.
Аноним 26/11/15 Чтв 18:58:44 #345 №589836 
>>589834
Спасибо.
Аноним 26/11/15 Чтв 19:04:12 #346 №589842 
>>589832
http://cpp.sh/2tth
Попробуй.
Аноним 26/11/15 Чтв 19:08:26 #347 №589844 
>>589842
Спасибо, у меня прошлый код тоже заработал, после правок.
Аноним 26/11/15 Чтв 19:19:27 #348 №589845 
http://ideone.com/dUf8UK
Критика? Предложения?
Аноним 26/11/15 Чтв 19:26:06 #349 №589848 
>>589844
У тебя там хуета какая-то.
Аноним 26/11/15 Чтв 19:28:45 #350 №589852 
>>589848
Иди нахуй!
Аноним 26/11/15 Чтв 19:31:05 #351 №589855 
>>589830
И что ты с ними делаешь?
Аноним 26/11/15 Чтв 19:33:35 #352 №589857 
>>589811
Можно так. Но думаю что есть способ лучше.

template <typename T>
requires requires {
{ &T::foo } -> void (T::)(int);
{ &T::foo } -> void (T::
)(int) const;
}

Проверяется в принципе всё, что входит в сигнатуру.

Вот ещё драфт по концептам http://open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4553.pdf
А тут презенташки https://github.com/CppCon/CppCon2014/tree/master/Presentations/Generic%20Programming%20with%20Concepts%20Lite
Аноним 26/11/15 Чтв 19:35:37 #353 №589858 
>>589852
Хуясе, отчего такая ненависть?
Аноним 26/11/15 Чтв 19:35:59 #354 №589859 
>>589857
И нахуя это нужно?
Аноним 26/11/15 Чтв 19:36:46 #355 №589860 
>>589857
Где про это все можно подробнее узнать для неофитов? Метапрограммирование и остальные фаршмачки, это вроде очень дико но интересно
Аноним 26/11/15 Чтв 19:37:40 #356 №589861 
>>589858
Да меня анон выше затравил, я думал, что это ты.
Аноним 26/11/15 Чтв 19:43:11 #357 №589864 
>>589859
Никогда не сталкивался с ошибками при неправильном использовании шаблонной хуиты? Обычно в таких случая компилер тебе тонны текста высрет о том что где то в глубинных ебенях какой-то тип не совпал. И попробуй пойми что не так.

Что б такого говна небыло, пейсатель шаблона пишет ограничения на тип. И тогда вместо тонн текста, ты получаешь пару строк, с указанием где и что не так.
Аноним 26/11/15 Чтв 19:44:20 #358 №589866 
>>589864
Gcc и так пишет, где конкретно ошибка
Аноним 26/11/15 Чтв 19:50:13 #359 №589873 
>>589866
Он тебе выражение показывает, и ты должен догадаться почему тут ошибка. А с тем что выше, тебе сразу пальцем ткнут, куда надо.
Аноним 26/11/15 Чтв 19:51:46 #360 №589875 
>>589873
Вообще-то он даже строчку показывает.
Аноним 26/11/15 Чтв 19:54:37 #361 №589877 
>>589860
Например в интернете. Серъезно, учись искать инфу. Очень полезный навык.

Касаемо крестов, разобраться с крестами, для начала.
Аноним 26/11/15 Чтв 19:57:46 #362 №589879 
>>589857
Вот я и говорю, что вроде новый синтаксис концептов позволяет проверять даже Аллаха, поэтому перспетивы весьма вкусные. А в 14 стандарте такого никак не сделать афаик.
Аноним 26/11/15 Чтв 19:59:53 #363 №589883 
14485571931580.gif
>>589875
>где конкретно ошибка
>шаблоны
>показывает
>где конкретно ошибка
http://codegolf.stackexchange.com/questions/1956/generate-the-longest-error-message-in-c
Аноним 26/11/15 Чтв 20:00:10 #364 №589885 
14485572103480.png
Спасибо тем, кто помог! Заработало! :) i все-таки нулю должно равняться, чтобы все правильно работало.
Аноним 26/11/15 Чтв 20:02:26 #365 №589886 
>>589885
Так я "нахуй иди" или "спасибо"?
Аноним 26/11/15 Чтв 20:03:54 #366 №589887 
>>589877
Пошел в пизду, сучара хуев. Я тебя спросил за определенную вещь, а не за С++, охуеть.
Аноним 26/11/15 Чтв 20:04:43 #367 №589888 
>>589886
Спасибо, спасибо! Просто выражения типа "ебало начистить" никак не способствует обучению. :P
Аноним 26/11/15 Чтв 20:06:30 #368 №589891 
>>589888
Да, да. Ты деньги за интернет платишь не для того, чтобы тебе кто-то в интернете код обсирал.
Аноним 26/11/15 Чтв 20:07:05 #369 №589892 
>>589888
Это же идиома такая, когда лень объяснять подробности... Да проще тебе ебало набить.
Аноним 26/11/15 Чтв 20:08:06 #370 №589894 
>>589883
msvc-проблемы. В gcc всё отлично. Да, текста много, но строчку с ошибкой он таки выделяет. within context
Аноним 26/11/15 Чтв 20:08:41 #371 №589896 
>>589887
Я уже хотел тебе накидать блогов по метапрограммированию, но теперь не буду. Нахамил уважаемому человеку, моему коллеге по анальным пляскам, нехорошо.
Аноним 26/11/15 Чтв 20:09:12 #372 №589897 
>>589887
За какую вещь ты спросил, идиотина? метапрограммирование c++ в гугл забей и разбирайся, мудак блять. ВСЕ ХОТЯТ ЧТОБ ИМ НА БЛЮДЕЧКЕ ПИДАРАСЫ
Аноним 26/11/15 Чтв 20:10:15 #373 №589898 
>>589894
В глаза долбишься? Первый ответ там про gcc, и я ебал читать стену текста без подсветки, даже если конкретный символ где-то в ней будет указан.
Аноним 26/11/15 Чтв 20:11:37 #374 №589899 
>>589891
Тип того. :)

>>589892
ОК, я не в курсе просто. Реально хуево чувствую себя, когда в меня не верят. Правда это уже мои проблемы.
Аноним 26/11/15 Чтв 20:11:52 #375 №589900 
14485579123660.jpg
Засрали тред, содомиты. У вас бамплимит раз в джва дня, а мне стихи сочинять.
Аноним 26/11/15 Чтв 20:13:09 #376 №589903 
>>589900
Прокачаешься как поэт зато! Тебе ведь сложить стих не в тягость?
Аноним 26/11/15 Чтв 20:14:17 #377 №589904 
>>589898
Можно по имени файла искать
Аноним 26/11/15 Чтв 20:15:53 #378 №589905 
14485581534870.png
>>589898
>Первый ответ там про gcc
и ошибка в нем ровно одна (no match for operator==).
>ебал читать стену текста без подсветки
ну так включи ее.
Аноним 26/11/15 Чтв 20:17:58 #379 №589907 
Призываю в тред адепта VS, который где-то выше был. Реквестирую пояснений за Azure и прочую облачную ебалу мелкомягких. В лицензионной VS Enterprise 2015 где-то мелькало что-то связанное с Azure. Значит ли это, что я смогу бесплатно прикрутить это дерьмо и, например, коннектиться к персональной *nix виртуалке на их сервере, чтобы компилить через gcc и clang? Или базы там хранить, например? Пользовался ли ты этими облаками? Если да, то не трясут ли за них дополнительное бабло по подписке?
Аноним 26/11/15 Чтв 20:20:30 #380 №589917 
>>589905
>подсвечивается слово error вместо синтаксиса
10 из 10
Аноним 26/11/15 Чтв 20:22:53 #381 №589924 
>>589903
Мне это вполне доставляет. А вот Данте может в конце концов закончиться, и придется менять концепцию, лол.
Аноним 26/11/15 Чтв 20:23:47 #382 №589925 
>>589917
так как раз его и надо подсветить, чтобы среди тонны последующих note разглядеть (они синие). синтаксис у тебя в редакторе подсвечивается.
Аноним 26/11/15 Чтв 20:26:25 #383 №589932 
>>589905
А могло быть:

main.cpp:5:4: error: type `hui` doesn't meets requirements of `pizda` at `pizda<hui>`

И по порядку расписано почему не подходит.
Аноним 26/11/15 Чтв 20:27:21 #384 №589933 
>>589932
Точнее может, и будет.
Аноним 26/11/15 Чтв 20:29:46 #385 №589936 
>>589932
а могло быть как в еба-лиспе, все программы правильные и сразу делают что тебе надо.
Аноним 26/11/15 Чтв 20:31:19 #386 №589940 
>>589896
>
И не надо, говнюк.
Аноним 26/11/15 Чтв 20:34:38 #387 №589947 
>>589936
Охуенно же.
sageАноним 26/11/15 Чтв 20:36:29 #388 №589952 
14485593898590.jpg
>>589936
Аноним 26/11/15 Чтв 21:05:07 #389 №589982 
14485611079940.png
>>589924
Среди бескрайних C++ просторов
Ублюдки разыскали то,
Что без задач лежало много лет.
И имя этому говну - constexpr,
concept, SFINAE. Сотни мух
Слетелись бы на эту кучу кала,
Была бы эта куча на полу.
И как до них дойдёт, что мета -
Это всего лишь выебон,
Тогда они поймут,
Что потеряли то, чего нельзя вернуть:
Секунды жизни, что они могли потратить
На пиво, паттерны, работу и жену.
Увы и ах, жены у них не будет. Да и работы тоже.
Почему?
Ответ тут очень, очень прост:
Они же метапрограммисты, это всё.
Настолько C++ велик, что ложка дёгтя
Не в силах изменить такой приятный вкус.
Когда увидишь ты адепта меты - ты должен написать ему:
"Ублюдок, мать твою, урод,
Открой свой рот, сейчас я буду туда срать".
И постепенно тред очистится от этих ненормальных,
Кто жизнь свою и место в треде тратит
На фичу без задач, не более того.
И пролежит всё это дело столько,
Сколько лежало до того,
Как начали его все форсить.
Вот сука, как горит очко.
Аноним 26/11/15 Чтв 21:18:22 #390 №590003 
>>589982
Да что тебе так в констекспр не нравится пидор :( Адекватная абсолютно ведь вещь!
Аноним 26/11/15 Чтв 21:28:04 #391 №590020 
Посаны, подскажите где можно найти опен сорс проект для того чтобы поучавствовать в нем?
Аноним 26/11/15 Чтв 21:29:09 #392 №590023 
>>589982
Как уже было сказано выше по треду, констекспр - это анти-метапетушение. Они делают элементарным то, ради чего раньше всякие александерски и последователи писали тайплевел списки с енумами-контейнерами значений, и прочие радости. Так что люби констекспр, это как раз для таких как ты запилено.
Аноним 26/11/15 Чтв 21:30:33 #393 №590026 
>>590023
Да хули ты ему объясняешь. Он же необучаемый, услышал знакомое слово и ринулся в бой с мельницами.
Аноним 26/11/15 Чтв 21:33:13 #394 №590032 
>>590023
Двачую, я тоже не понял этого бугурта по поводу constexpr.
По ходу, это вот этот взрывается >>589885
Аноним 26/11/15 Чтв 21:34:39 #395 №590035 
>>590020
Пару тредов назад был анон с cling, посмотри. Можно будет клеить телок на кулстори о том, как коммитил для церна.
Аноним 26/11/15 Чтв 21:35:59 #396 №590038 
>>590032
Не, это другой, базарю.
Аноним 26/11/15 Чтв 21:38:08 #397 №590044 
>>590020
https://developers.google.com/open-source/gsoc/faq
Аноним 26/11/15 Чтв 22:01:00 #398 №590065 
>>590038
АЗазазаз, это все я был) наебал тя
Аноним 26/11/15 Чтв 22:17:35 #399 №590080 
>>590065
Кончай пиздеть, я молчу уже давным-давно.
Аноним 26/11/15 Чтв 22:40:40 #400 №590107 
>>589829 >>589892
Михаил МК и сюда проникает (возможно, с моей подачи). Это божественно...

А тред в бамплимит за трое суток это конечно да. Откуда все вылезли-то?
Аноним 26/11/15 Чтв 22:43:07 #401 №590109 
14485669873670.jpg
>>590107
> (возможно, с моей подачи)
Ты первый раз в интернете чтоли?
Аноним 26/11/15 Чтв 23:21:37 #402 №590143 
>>590023
Да что с ним можно делать? Кто-нибудь, объясните! Может, я действительно не понимаю эту охуенную фичу!
Аноним 27/11/15 Птн 00:38:39 #403 №590190 
>>590143
constexpr позволяет сгенерировать объекты, вычислить функции (если известно начальное состояние) и т.п. в компайл-тайме.

constexpr int factorial(int n)
{
return n <= 1? 1 : (n * factorial(n - 1));
}

void foo() {
int x = factorial(10);
bar(x);
}

с constexpr значение функции будет посчитано во время компиляции.

Это полезно при шаблонной магии, при создании тяжелых объектов, но состояние которых задано заранее (например, какие-нибудь регулярные выражения).
Аноним 27/11/15 Птн 00:50:15 #404 №590194 
>>590190
Я в D видел такую штуку, только там функции менять не нужно было, а при вызове просто писать
enum x = factorial(10). Можно в крестах так же сделать?
Аноним 27/11/15 Птн 00:54:55 #405 №590198 
>>590190
Да за каким хуем это нужно? Ведь регулярные выражения применяются или к подгружаемому тексту, или вводятся пользователем, их не выполнить во время компиляции.
Аноним 27/11/15 Птн 01:00:13 #406 №590202 
>>590198
Это был просто пример.
Аноним 27/11/15 Птн 01:19:32 #407 №590207 
>>590202
А другой пример?
Вот был у нас в армии командир-дагестанец. Всегда говорил нам, что мы свиньи. Один раз собрал нас всех, и говорит:
Да ви же свиньи! Ви даже нэ понэмаете этого! Гразные жэвотные! Вот у нас на Родине, например, мы витераем жёпу рукой, а потом моем её водой из бутылки.
Недолгое молчание...
Ладно, согласэн, плахой примэр.
Аноним 27/11/15 Птн 01:23:44 #408 №590212 
>>590207
https://encrypted.google.com/#q=constexpr+tricks+c%2B%2B11
Аноним 27/11/15 Птн 02:12:15 #409 №590228 
> Ведь регулярные выражения применяются или к подгружаемому тексту, или вводятся пользователем
Ну вообще-то, довольно часто регулярки задаются константами в коде. В моей практике таких случаев этак 90%, а остальное - это всякие хитрые гуи, где можно было профильтровать список/таблицу по регулярке.
Аноним 27/11/15 Птн 03:24:13 #410 №590247 
>>587839 (OP)
Аноны, а куда работать пойти? Какую библиотеку еще надо подучить?
Чем вообще занимаются быдлокодеры на плюсах?
Аноним 27/11/15 Птн 04:41:12 #411 №590272 
Ребяты, подскажите ньюфагу.

В общем, есть тестовая игра, которую я пилю, попутно разбираясь с языком.
Игровое поле представляет собой матрица AxB, где каждая переменная обозначает ID чего-то, что будет там находиться. Большинство элементов активные, так что я просто проходилась по всей матрице. Потом всё немного изменилось, я понял, что это хуйня, сделал все активные элементы объектами, чтоб загонять все вновь созданные объекты в этот массив и прогонять поверку по элментам массива, а не по всей матрице целиком, чтоб не делать лишних проверок. В итоге, в момент возникновения каких-либо событий, у меня вызываются функции на создании соответствующих объектов и добавление их в вектор.

{
int generation = rand() % 4;
zone[x][y] = 0;
if ( generation == 0 )
Enemies.push_back(Enemy( x, y ));
}

Enemies — вектор, Enemy — класс. Я вызываю конструктор класса и он становится одним из элементов вектора. Дальше происходит что-то странное. Я понимаю, что я что-то упускаю, но не могу понять, как это правильно должно быть реализовано. Короче, я сделал деструктор этому классу, который на выходе подчищает всё ненужное, если объект мне больше не нужен, но этот деструктор вызывается автоматически в момент выхода из вышенаписанной функции. В итоге мне пришлось отказаться от деструктора вообще, сделал свою функцию по выносу мусора. Где и почему я мудак?
Аноним 27/11/15 Птн 04:41:33 #412 №590273 
>>590272
Макаба съела табуляцию, ну вы понели что там должно быть.
Аноним 27/11/15 Птн 08:55:28 #413 №590315 
>>590247
быдлокодеры на плюсах занимаются сейчас QT. Другие области заменены другими языками
Аноним 27/11/15 Птн 09:14:15 #414 №590322 
>>590315
Врети. Как минимум в гейдеве мы короли.
Аноним 27/11/15 Птн 09:58:22 #415 №590331 
>>590322
А как вообще пишется код для игр? Мне казалось, что там просто с готовым движком работают, или нет?
Аноним 27/11/15 Птн 10:02:43 #416 №590333 
>>590198
Они создаются на этапе компиляции.
Регулярное выражение изнутри представляет собой не строку (ВНЕЗАПНО, да?), а конечный автомат, который создается из шаблона-описания (как раз таки строки)
Аноним 27/11/15 Птн 10:28:30 #417 №590345 
>>590228
Гуй ты хардкодишь?
Аноним 27/11/15 Птн 10:31:50 #418 №590346 
>>590333
Понятно. Байтоёбы открыли новый способ выиграть пару микросекунд, написав при этом больше кода.
Аноним 27/11/15 Птн 10:41:52 #419 №590351 
>>588697
Унордеред мапа жи есть.
Аноним 27/11/15 Птн 10:44:48 #420 №590354 
14486102884670.png
>>590331
Аноним 27/11/15 Птн 10:50:31 #421 №590357 
>>590331
Не всегда жи, часто для игры пишется собственный движок, из-за нежелания отстегивать с продаж создателям какого-нибудь UE актуально для индюшатины, из-за лютых требований к производительности актуально для AAA-йоб с графеном, либо просто чтобы зделать по-своему, с преферансом и блудницами тот же xray в сталкере.
Аноним 27/11/15 Птн 11:21:53 #422 №590366 
>>590247
В основном, по профилю. Кроме крестов надо еще хорошо хотя бы одну предметную область знать.
Аноним 27/11/15 Птн 12:04:48 #423 №590388 
>>590272
У тебя создается временный объект класса Enemy, когда ты его кидаешь в вектор туда уходит его копия, при выходе из функции временный объект удаляется (вызывается его деструктор). У тебя три пути:
1) То что удаление временного объекта вызвало проблемы намекает на проблемы с конструкторомкопирования или проебы архитектуры - исправляешь, все остальное оставляешь как есть. Проблема в лишнем копировании.
2) Создаешь объект в куче (добавляешь new) - в векторе хранишь указатели на него. Прийдется озаботится утечками памяти.
3) Пердолинг с move семантикой и прочими rvalues - у тебя классический пример нахуя это нужно, можно избежать копирования. Это нужно выучить и использовать, но возможно для тебя еще рано - помоему лучше в общем язык подтянуть а потом погружаться в такую хуйню.
Аноним 27/11/15 Птн 14:16:05 #424 №590449 
>>590366
В то время как джава и шарпомакак берут куда угодно без опыта. А программист на С++ должен знать ВСЕ чтобы иметь честь соснуть хуев в ООО "РОГА И КОПЫТА"
Аноним 27/11/15 Птн 15:05:56 #425 №590475 
Скоро снова бамплимит за 5 дней.
Аноним 27/11/15 Птн 15:06:56 #426 №590476 
>>590475
Даже в пхп треде за 2 дня 100 постов.
Аноним 27/11/15 Птн 15:45:24 #427 №590502 
14486283241070.jpg
пасаны, довно мучает одна проблема- как организовать ситуацию, когда у тебя есть набор элементов, которые чем-то хранятся и обрабатываются униформально, но при этом являются разными сущностями?

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

конечно можно просто кастануть к нужному классу, но мне это нихуя не нравится.

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

[code]
template<class T>
struct GUIStorage : GUIStorageObject
{
GUIStorage() = default;
GUIStorage(T value)
: m_value(value)
{ }

void setValue(T value) { m_value = value; }
T value() const { return m_value; }

GUIStorageObject* Clone() { return new GUIStorage<T>(m_value); }

private:
T m_value;
};
[/code]

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

как это сделать лучше? при этом учтите что подогнать под один интерфейс все типы хранилищ нельзя, будем считать что у них совершенно разные методы.
Аноним 27/11/15 Птн 16:36:49 #428 №590541 
>>590502
Вектор из unique_ptr на базовые классы, основные действия (добавление-удаление-присваивание, например) делаются над самими указателями без оверхеда, доступ по интерфейсу через виртуальные методы, доступ в обход интерфейса через static_cast <Derived *>, ну или dynamic_cast, если ты ссыкло и не жалко времени.

Вектор из самих объектов базового класса, без указателей, делать нельзя категорически, ибо тогда у тебя не будет работать виртуальность, а при первом же копировании (а вектор имеет право копировать элементы по своему усмотрению, не спрашивая тебя) ты получишь срезку объекта до базового класса и соснешь. По-хорошему, базовый класс вообще не должен позволять создание объектов, за счет чисто виртуальных методов и/или delete конструктора.

>будем считать что у них совершенно разные методы
Это признак хуевой архитектуры в твоем случае. Сделай унифицированный доступ и вынеси в общий интерфейс через базовый класс, или вообще не юзай виртуальность, а перекатись на параметрический полиморфизм с неявными интерфейсами, энивей тебе вряд ли нужно будет менять в рантайме это все.
Аноним 27/11/15 Птн 17:09:19 #429 №590552 
>>590502
> при этом учтите что подогнать под один интерфейс все типы хранилищ нельзя, будем считать что у них совершенно разные методы.
Ты какую-то хуйню несешь. То у тебя "униформально", то - подогнать под один интерфейс нельзя.
ООП подход тут - выделить интерфейс IGuiStorable, и хранить в твоем гетерогенном списке указатели на этот интерфейс. Сами классы при этом могут быть любыми и даже не принадлежать одной иерархии (множественное наследование интерфейсов), соответственно в одном классе сможешь хранить кнопки, в другом - что-то еще.

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

Второй вариант, хранить в гетерогенном списке boost::variant.
Аноним 27/11/15 Птн 17:16:45 #430 №590556 
14486338052560.jpg
>>590541
ну, так я и не делаю, я делаю вот так, забыл запостить

[CODE]
template<class T>
void AddStorage() { m_storage.emplace_back(new GUIStorage<T>); }
template<class T>
GUIStorage<T>& Storage(int num=-1)
{
CASSERT(m_storage.size() && num < int(m_storage.size()), "No such storage in element");
if(num < 0) num = m_storage.size() - 1;

CASSERT(dynamic_cast<GUIStorage<T>>(m_storage[num].get()), "Wrong type for requested storage");

return
static_cast<GUIStorage<T>*>(m_storage[num].get());
}

vector<unique_ptr<GUIStorageObject>> m_storage;
[/CODE]

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

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

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

мне интересно в чём ты видешь хуёвы стороны такой архитектуры, и как их можно было бы усовершенствовать?
Аноним 27/11/15 Птн 17:20:57 #431 №590558 
>>590366
А какие профили у крестоводов?
Можно ли пойти без опыта, чтобы набрать этого самого опыта?
Аноним 27/11/15 Птн 17:21:04 #432 №590559 
>>590388
>1) То что удаление временного объекта вызвало проблемы намекает на проблемы с конструкторомкопирования или проебы архитектуры - исправляешь, все остальное оставляешь как есть. Проблема в лишнем копировании.
Мтак-с, ну да, я в деструкторе удалял некоторые вещи, не являющиеся полями объекта, но связанными с ним.

>2) Создаешь объект в куче (добавляешь new) - в векторе хранишь указатели на него. Прийдется озаботится утечками памяти.
Это мне нравится, спасибо.
Аноним 27/11/15 Птн 17:22:23 #433 №590560 
Аноны, а в крестах можно работать с 3д мешами?
Пишу под уе программную часть, мне надо в определенных точках проводить булевы операции (считай, вставлять)
Аноним 27/11/15 Птн 17:23:26 #434 №590561 
>>590552
ну, униформально то как отрисовывается хуитка на экран, неуниформально то как она изменяется.
>IGuiStorable
>>590556
у меня и так хранятся интерфейсы, но мне потом нужно как-то получить доступ к тому, что в интерфейс не поместилось. то есть было бы охуенно если бы можно было сделать в интерфейсе метод, который отдаёт указатель на конкретный объект, но это немношк невозможно, всё равно надо потом кастать.
>boost::variant
какой мне толк от варианта? он делает то же что и я- кастует в указанный тип и применяет визитор, но мне тут визитор нахуй не сдался.
Аноним 27/11/15 Птн 17:24:12 #435 №590562 
14486342521580.jpg
>>590560
в assimp по-моему есть булевы.
Аноним 27/11/15 Птн 17:25:57 #436 №590564 
>>590560
Если конкретно, то работаю со скелетной анимацией.
Зачем нужно?
Чтобы анимировать дыры от пуль, то, есть - стреляют в нашего персонажа и можно увидеть на нем дыру.
Хочу написать уникальное, а не как в других проектах делают, где просто навешивают скрипт
Аноним 27/11/15 Птн 17:28:01 #437 №590565 
>>590564
> Чтобы анимировать дыры от пуль, то, есть - стреляют в нашего персонажа и можно увидеть на нем дыру.
Тебе, видимо, нужна библиотека CSG
http://opencsg.org/
Аноним 27/11/15 Птн 17:29:11 #438 №590567 
>>590565
Спасибки.
Интересно, а как люди пишут без библиотек?
Аноним 27/11/15 Птн 17:29:40 #439 №590568 
14486345807460.jpg
>>590564
>Чтобы анимировать дыры от пуль, то, есть - стреляют в нашего персонажа и можно увидеть на нем дыру.
делай в скринспейс дырки, базарю. идея с модификацией меша- полная хуйня. было бы более реалистично текстуру модифицировать.

хранишь матрицу трансформации камеры до места дырки, матрицу локальной курвитуры поверхности и по ним накладываешь картинку дырки.
Аноним 27/11/15 Птн 17:30:41 #440 №590569 
>>590568
Для этого придумали декали и они существуют уже давным-давно в этом движке.
Я хочу меши редактировать, это эффектнее для меня будет
Аноним 27/11/15 Птн 17:32:02 #441 №590570 
14486347227860.jpg
>>590567
> Интересно, а как люди пишут без библиотек?
Спроси у этих ребят.
Аноним 27/11/15 Птн 17:34:53 #442 №590572 
>>590558
Гейдев, эмбеддед, научные вычисления хотя прототипы обычно хуярят на пистоне, и только потом переводят в кресты для скорости, хайлоад бэкенд внезапно, даже макаба написана на крестах, иногда всякая финансовая хуйня и анализ данных, да дохуя всего.
Аноним 27/11/15 Птн 17:36:40 #443 №590576 
>>590572
В рашке можно нормально в гейдев податься?
Аноним 27/11/15 Птн 17:38:22 #444 №590581 
>>590576
Skoree net chem da.
Аноним 27/11/15 Птн 17:38:25 #445 №590582 
>>590576
Конечно, смотри в сторону танков, тундры и прочих отечественных дрочилен.
Аноним 27/11/15 Птн 17:41:39 #446 №590583 
>>590582
А на что еще можно податься, разработка программ?
Аноним 27/11/15 Птн 17:43:22 #447 №590587 
>>590576
гей-дев в основном мобильный. есть некоторое количество работающих с графеном. самая популярная либа среди крестоблядей- qt.
Аноним 27/11/15 Птн 17:46:56 #448 №590588 
Аноны, а как на крестах делают алгоритмы быстрее, чтобы все происходило, например, не за 5 секунд, а за 2?
Оптимизация, читал, что здесь нет контроля памяти
Аноним 27/11/15 Птн 17:49:55 #449 №590593 
>>590583
В науку иди, можно гранты пилить.
Аноним 27/11/15 Птн 17:50:32 #450 №590594 
>>590588
1. идешь в магазин
2. покупаешь новый процессор
3. устанавливаешь его в свой компьютер
4. теперь у тебя все происходит не за 5 секунд, а за 2
Аноним 27/11/15 Птн 17:51:10 #451 №590596 
>>590594
Нахуй надо, неоптимизированное дерьмо пилить.
Не у всех есть возможности купить новый процессор.
Аноним 27/11/15 Птн 17:52:16 #452 №590598 
>>590596
Ну пиши нормальные алгоритмы.
Аноним 27/11/15 Птн 17:54:06 #453 №590599 
>>590594
>Нахуй оптимизацию, ко-ко-ко
Из-за таких пидоров как ты выходит Фаллаут 4, с системными требованиями охуеть какими, а графоном как в 3 фаллауте, в котором требовалось намного меньше
Аноним 27/11/15 Птн 17:55:42 #454 №590601 
>>590599
для долбоебов поясняю, что это был сарказм. других методов сделать "чтобы все происходило, например, не за 5 секунд, а за 2" не существует.
Аноним 27/11/15 Птн 17:56:23 #455 №590602 
>>590601
Есть же, алгоритмы.
Аноним 27/11/15 Птн 17:57:33 #456 №590604 
>>590588
Ну вот представь, что нужно вскипятить кофе. У Ерохина есть высокотехнологичная кухня. В ней он нажимает на кнопку, автоматика доставляет из подвала нераспечатанную бочку с водой, на плите зажигаются десять конфорок (с запасом, вдруг ты еще яичницу захочешь пожарить), из стены выезжает робот-сборщик, на месте собирает из деталей робота-курьера, который едет в магазин за чайником... Ну ты понел. А у Славик Сычев живет в хрущевке, он, блядь, идет на проперженную кухню ставит на плиту единственный чайник с треснувшей эмалью, и через пять минут кофе готов. А Ерохин будет ждать до утра, смекаешь? Алсо, у Славика есть мамка язык шаблонов, которую он может попросить заварить кофе, при этом по времени это будет лишь немного медленнее потому что мамка жирная, но зато ему, как и Ерохину ничего не нужно будет делать вообще. Различие в том, что Славик в это время будет сидеть в сычевальне и дрочить на поней, а Ерохин будет ебать Еотову, и оно довольно показательно.
Аноним 27/11/15 Птн 17:58:43 #457 №590606 
>>590602
Какие алгоритмы? Что ты несёшь?
Не устраивает один алгоритм - используй другой.
Аноним 27/11/15 Птн 17:59:17 #458 №590607 
>>590606
В их эффективности и использовании памяти
Аноним 27/11/15 Птн 17:59:45 #459 №590608 
>>590604
>потому
Прогресс стоит за оптимизацией, а не высиранием говна, которое даже не оптимизируют.
Аноним 27/11/15 Птн 17:59:54 #460 №590609 
>>590602
"алгоритмы" в лучшем случае помогут улучшить асимптотику, то есть количество выполняемых операций в сферическом случае получения примерно бесконечного количества входных данных. они вполне могут ухудшить производительность (если ты возьмешь какую-нибудь поебень с охуенной асимптотикой но пиздецовой константой). что более вероятно, ты скорее всего обнаружишь, что более эффективного алгоритма и не существует.
Аноним 27/11/15 Птн 18:44:32 #461 №590627 
>>590609
Квадратическая сложность или линейная, какая в жопу разница))) Докупим железок
Аноним 27/11/15 Птн 19:11:58 #462 №590641 
>>590556
посоны плиз
Аноним 27/11/15 Птн 19:35:47 #463 №590655 
>>590627
бля ну я о чем и говорю, лучшее решение же))
Аноним 27/11/15 Птн 20:13:46 #464 №590664 
>>590561
>у меня и так хранятся интерфейсы, но мне потом нужно как-то получить доступ к тому, что в интерфейс не поместилось
Изнутри интерфейса ты и так к этому доступ получишь. Снаружи - не нужно, это сломает систему типов.
Аноним 27/11/15 Птн 20:16:35 #465 №590665 
>>590588
Вопреки мифам, дело не в отсутствии сборки мусора. Даже с полностью отключенной сборкой мусора управляемые языки будут медленнее.
В крестах все cache-friendly.
Аноним 27/11/15 Птн 20:22:26 #466 №590669 
>>590665
> все cache-friendly
> for (const auto& x : moy_ebany_vector) ...
> for(iterator it = container.begin(); it != container.end(); ++it)
Аноним 27/11/15 Птн 20:25:43 #467 №590671 
>>590669
Кто это к нам залетел, сишник что ли? Я вас уже кормил хуями в растотреде, больше не буду, надоело.
Аноним 27/11/15 Птн 20:28:15 #468 №590672 
14486452957710.png
У них там нет про динамическое программирование. Где искать?
Кто там про оптимизация с 5ти до 2ух секунд спрашивал. Пойдёт? http://e-maxx.ru/bookz/
Аноним 27/11/15 Птн 20:35:12 #469 №590678 
Бля, почему этот тред самый популярный на доске? Весь день сидите поверх нулевой и не тонете, суки.
Аноним 27/11/15 Птн 20:37:15 #470 №590679 
>>590678
Ага. Чуть выше писал что он вдвое быстрее пхп треда. Если так всё и схорониться, то мы обгоним пхп тред по количеству тредов уже к лету. А у опа кончиться поэтический потенциал уже очень скоро лол.
Аноним 27/11/15 Птн 20:40:36 #471 №590682 
>>590678
Потому что здесь один из немногих тредов, не являющихся филиалом stackoverflow для тупых, или просто полем для троллинга типа перезванивай@гитхабь.
Аноним 27/11/15 Птн 20:48:53 #472 №590688 
>>590682
>одним из немногих
А какие еще? Реквестирую моар.
Аноним 27/11/15 Птн 20:50:52 #473 №590692 
>>590682
Да-да, вместо этото тут тред, где все байтоебы решают одни и те же проблемы языка разными убогими костялями. Весело пиздец
Аноним 27/11/15 Птн 20:56:35 #474 №590698 
Господа, поскольку близится бамплимит, а кто-то был недоволен нынешним tl;dr который теперь наверху шапки, предлагаю вам подумать над альтернативой/улучшением существующего варианта. Надо чтобы он кратко давал алгоритм действий тем ньюфагам, которые чукча не читатель, а также предостерегал их от платиновых вопросов. Если успеем сгенерить его до бамплимита, я впилю обновление в новый тренд.
Аноним 27/11/15 Птн 20:58:20 #475 №590699 
>>590698
Сомневаюсь, ньюфаги не будут в кресты лезть, 2015 год все-таки.
Аноним 27/11/15 Птн 21:01:18 #476 №590702 
>>590699
Количество вот таких >>589813 >>589488 >>588261 постов говорит о нихуевой такой популярности, например.
Аноним 27/11/15 Птн 21:03:02 #477 №590707 
>>590702
Это обычные первокуры, которые забудут про эти кресты уже через полгода.
Аноним 27/11/15 Птн 21:09:14 #478 №590720 
>>588286 >>590475
Какие 5 дней, о чём вы? 3 дня.
Аноним 27/11/15 Птн 21:20:54 #479 №590737 
>>590698
надо туда игровых обучалок типа эйлера для крестов впихнуть и что-то для олимпиадников.

уже предлогал начать с пункта для тех кто потерядся среди многобуковок. Сверху стих ниже ссылки на список книг/блогов/библиотек потом FAQ почти полностью переделанный и сокращённы. Ответ на вопрос давать 1-2 предложения и сылку на пасту.
>хочу вкатиться что делать?
Ищешь в списке книг для ньфань и читаешь ту что поновее. IDE настраивать вот так. тут ещё какие-нибудь советы
>что нужно перед тем как вкатится изучить?
не используй кресты как первый язык, а посмотри эту пасту тут ссылка на пасту с советом почитать таненбаума и типа того
>как делать оптимизацию и не писать говонкод?
Ищи такой-то раздел в списке литературы.
>теперь пора учить библиотеки? Что посоветуете.
Тут паста про библиотеки. Какие для чего и с чего начать.
>всё теперь я знаю кресты и могу работать джуниором?
тут я не знаю что писать ни разу не работал
>Какой профит от крестов и зачем их учат?
Тут немного из текущей шапке, но тоже на пастебине

тут ещё несколько пунктов которые я не могу придумать.

>>590720
когда я это писал наверно и половины треда не было.
Аноним 27/11/15 Птн 21:23:16 #480 №590740 
>>590720
нет. всё правильно же. тред создан во вторник теперь пятница это 4 дня, а завтра перекат это 5 дней.
Аноним 27/11/15 Птн 21:26:37 #481 №590747 
>>590740
Пока что полных три дня: 27-24. в подтверждение своей точки зрения я ближу тред к потоплению
Аноним 27/11/15 Птн 21:38:10 #482 №590754 
14486494903840.png
Привет. Мне вообще стыдно такое спрашивать, но, прогуглить я не смог, и поэтому решился спросить тут: как обратиться к объекту класса, объявленного в другом методе другого класса?

Пиздос. Стоило вопрос сформулировать тут, и сразу же в голове решение появилось. Объект нужно в классе создавать, вот. Чтобы доступ к нему иметь в пределах всего класса, а не конкретного метода. Насру этим тут, может поможет какому-нибудь дурачку вроде меня.
Аноним 27/11/15 Птн 21:40:05 #483 №590756 
>>590754
Не за что.
Аноним 27/11/15 Птн 22:27:50 #484 №590794 
Анон, что я сделал не так? Думаю, какое-то несоответствие типов, но не могу его увидеть. Решаю задачу на алгоритмы.
https://ideone.com/fxF5dK
Аноним 27/11/15 Птн 22:32:54 #485 №590795 
>>590794
Что не понятно? Чёрным по белому написанное же.
>/usr/include/c++/5/bits/hashtable_policy.h: In instantiation of 'void std::__detail::_Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, _RehashPolicy, _Traits>::_M_insert_range(_InputIterator, _InputIterator, const _NodeGetter&) [with _InputIterator = unsigned int; _NodeGetter = std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<std::pair<const unsigned int, unsigned int>, false> > >; _Key = unsigned int; _Value = std::pair<const unsigned int, unsigned int>; _Alloc = std::allocator<std::pair<const unsigned int, unsigned int> >; _ExtractKey = std::__detail::_Select1st; _Equal = std::equal_to<unsigned int>; _H1 = std::hash<unsigned int>; _H2 = std::__detail::_Mod_range_hashing; _Hash = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits<false, false, true>]':
/usr/include/c++/5/bits/hashtable_policy.h:736:26: required from 'void std::__detail::_Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, _RehashPolicy, _Traits>::insert(_InputIterator, _InputIterator) [with _InputIterator = unsigned int; _Key = unsigned int; _Value = std::pair<const unsigned int, unsigned int>; _Alloc = std::allocator<std::pair<const unsigned int, unsigned int> >; _ExtractKey = std::__detail::_Select1st; _Equal = std::equal_to<unsigned int>; _H1 = std::hash<unsigned int>; _H2 = std::__detail::_Mod_range_hashing; _Hash = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits<false, false, true>]'
/usr/include/c++/5/bits/unordered_map.h:489:4: required from 'void std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::insert(_InputIterator, _InputIterator) [with _InputIterator = unsigned int; _Key = unsigned int; _Tp = unsigned int; _Hash = std::hash<unsigned int>; _Pred = std::equal_to<unsigned int>; _Alloc = std::allocator<std::pair<const unsigned int, unsigned int> >]'
prog.cpp:10:30: required from here
/usr/include/c++/5/bits/hashtable_policy.h:755:45: error: no matching function for call to '__distance_fw(unsigned int&, unsigned int&)'
size_type __n_elt = __detail::__distance_fw(__first, __last);
^
/usr/include/c++/5/bits/hashtable_policy.h:64:5: note: candidate: template<class _Iterator> typename std::iterator_traits<_Iterator>::difference_type std::__detail::__distance_fw(_Iterator, _Iterator, std::input_iterator_tag)
__distance_fw(_Iterator __first, _Iterator __last,
^
/usr/include/c++/5/bits/hashtable_policy.h:64:5: note: template argument deduction/substitution failed:
/usr/include/c++/5/bits/hashtable_policy.h:755:45: note: candidate expects 3 arguments, 2 provided
size_type __n_elt = __detail::__distance_fw(__first, __last);
^
/usr/include/c++/5/bits/hashtable_policy.h:70:5: note: candidate: template<class _Iterator> typename std::iterator_traits<_Iterator>::difference_type std::__detail::__distance_fw(_Iterator, _Iterator, std::forward_iterator_tag)
__distance_fw(_Iterator __first, _Iterator __last,
^
/usr/include/c++/5/bits/hashtable_policy.h:70:5: note: template argument deduction/substitution failed:
/usr/include/c++/5/bits/hashtable_policy.h:755:45: note: candidate expects 3 arguments, 2 provided
size_type __n_elt = __detail::__distance_fw(__first, __last);
^
/usr/include/c++/5/bits/hashtable_policy.h:76:5: note: candidate: template<class _Iterator> typename std::iterator_traits<_Iterator>::difference_type std::__detail::__distance_fw(_Iterator, _Iterator)
__distance_fw(_Iterator __first, _Iterator __last)
^
/usr/include/c++/5/bits/hashtable_policy.h:76:5: note: template argument deduction/substitution failed:
/usr/include/c++/5/bits/hashtable_policy.h: In substitution of 'template<class _Iterator> typename std::iterator_traits<_Iterator>::difference_type std::__detail::__distance_fw(_Iterator, _Iterator) [with _Iterator = unsigned int]':
/usr/include/c++/5/bits/hashtable_policy.h:755:45: required from 'void std::__detail::_Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, _RehashPolicy, _Traits>::_M_insert_range(_InputIterator, _InputIterator, const _NodeGetter&) [with _InputIterator = unsigned int; _NodeGetter = std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<std::pair<const unsigned int, unsigned int>, false> > >; _Key = unsigned int; _Value = std::pair<const unsigned int, unsigned int>; _Alloc = std::allocator<std::pair<const unsigned int, unsigned int> >; _ExtractKey = std::__detail::_Select1st; _Equal = std::equal_to<unsigned int>; _H1 = std::hash<unsigned int>; _H2 = std::__detail::_Mod_range_hashing; _Hash = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits<false, false, true>]'
/usr/include/c++/5/bits/hashtable_policy.h:736:26: required from 'void std::__detail::_Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, _RehashPolicy, _Traits>::insert(_InputIterator, _InputIterator) [with _InputIterator = unsigned int; _Key = unsigned int; _Value = std::pair<const unsigned int, unsigned int>; _Alloc = std::allocator<std::pair<const unsigned int, unsigned int> >; _ExtractKey = std::__detail::_Select1st; _Equal = std::equal_to<unsigned int>; _H1 = std::hash<unsigned int>; _H2 = std::__detail::_Mod_range_hashing; _Hash = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits<false, false, true>]'
/usr/include/c++/5/bits/unordered_map.h:489:4: required from 'void std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::insert(_InputIterator, _InputIterator) [with _InputIterator = unsigned int; _Key = unsigned int; _Tp = unsigned int; _Hash = std::hash<unsigned int>; _Pred = std::equal_to<unsigned int>; _Alloc = std::allocator<std::pair<const unsigned int, unsigned int> >]'
prog.cpp:10:30: required from here
/usr/include/c++/5/bits/hashtable_policy.h:76:5: error: no type named 'difference_type' in 'struct std::iterator_traits<unsigned int>'
/usr/include/c++/5/bits/hashtable_policy.h: In instantiation of 'void std::__detail::_Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, _RehashPolicy, _Traits>::_M_insert_range(_InputIterator, _InputIterator, const _NodeGetter&) [with _InputIterator = unsigned int; _NodeGetter = std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<std::pair<const unsigned int, unsigned int>, false> > >; _Key = unsigned int; _Value = std::pair<const unsigned int, unsigned int>; _Alloc = std::allocator<std::pair<const unsigned int, unsigned int> >; _ExtractKey = std::__detail::_Select1st; _Equal = std::equal_to<unsigned int>; _H1 = std::hash<unsigned int>; _H2 = std::__detail::_Mod_range_hashing; _Hash = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits<false, false, true>]':
/usr/include/c++/5/bits/hashtable_policy.h:736:26: required from 'void std::__detail::_Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, _RehashPolicy, _Traits>::insert(_InputIterator, _InputIterator) [with _InputIterator = unsigned int; _Key = unsigned int; _Value = std::pair<const unsigned int, unsigned int>; _Alloc = std::allocator<std::pair<const unsigned int, unsigned int> >; _ExtractKey = std::__detail::_Select1st; _Equal = std::equal_to<unsigned int>; _H1 = std::hash<unsigned int>; _H2 = std::__detail::_Mod_range_hashing; _Hash = std::__detail::_Default_ranged_hash; _RehashPolicy = std::__detail::_Prime_rehash_policy; _Traits = std::__detail::_Hashtable_traits<false, false, true>]'
/usr/include/c++/5/bits/unordered_map.h:489:4: required from 'void std::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::insert(_InputIterator, _InputIterator) [with _InputIterator = unsigned int; _Key = unsigned int; _Tp = unsigned int; _Hash = std::hash<unsigned int>; _Pred = std::equal_to<unsigned int>; _Alloc = std::allocator<std::pair<const unsigned int, unsigned int> >]'
prog.cpp:10:30: required from here
/usr/include/c++/5/bits/hashtable_policy.h:768:18: error: invalid type argument of unary '' (have 'unsigned int')
__h._M_insert(
__first, __node_gen, __unique_keys());
Аноним 27/11/15 Птн 22:33:04 #486 №590796 
>>588126
Ищу этого анона, который помогал мне с сортировками. Есть пару вопросов, надеюсь ты тут
Аноним 27/11/15 Птн 22:35:21 #487 №590799 
>>590795
Пиздец, во как все просто. Спасибо, братиш, выручил.
Аноним 27/11/15 Птн 22:37:07 #488 №590800 
>>590737
Ну и оно разрастется тогда, если даже давать ссылки на пастебины или на несколько книг из фака. Я хотел нечто буквально один абзац, чтобы вместо альтернатив решить все за ленивого ньюфага, типа "юзай Лафоре-ideone-cppreference" или что-то в этом роде. Всякие олимпиадники и продолжающие, наверное, осилят фак, а тут именно для петушков, которые не хотят ничего решать, а хотят быстро попробовать и решить, стоит ли вкатываться. Если сделать что-то среднее между факом и одним абзацем, то будет ни рыба ни мясо, вроде и читать лень, а если таки прочел, то нихуя не прояснилось до конца. Как-то так.
Аноним 27/11/15 Птн 22:38:11 #489 №590801 
14486530913690.gif
>>590795
Аноним 27/11/15 Птн 22:39:11 #490 №590802 
>>590796
Тут я, сейчас ненадолго отойду на удовлетворение биопроблем, пили пока свои вопросы.
Аноним 27/11/15 Птн 22:40:03 #491 №590805 
>>590800
>Ну и оно разрастется тогда
Нет же. 1 предложения для вопроса одно для ответа и потом ссылки на пастебин.
Аноним 27/11/15 Птн 22:41:10 #492 №590806 
>>590802
бля, оставь лучше свой контач инбифо вк для быдла
тут короче ебучее число этих сортировок наплыло, я в ахуе. Нужна твоя помощь, с меня материальная поддержка, ибо сроки поджимают
Аноним 27/11/15 Птн 22:41:18 #493 №590807 
>>590805
И получится почти целый экран, мы же летом начинали с подобного, когда только литература была в шапке.
Аноним 27/11/15 Птн 22:43:46 #494 №590808 
>>590806
krestoanon at yandex.ru
Аноним 27/11/15 Птн 22:45:32 #495 №590809 
>>590794
Проблема с insert(). Почитай документацию.
https://ideone.com/GfdGS6
Аноним 27/11/15 Птн 22:46:31 #496 №590810 
>>590807
Именно. Тогда просто советовали книгу, а теперь отвечаем на вопросы. Говорю же на пастебине никакого ограничения по размеру нет. Тот кому интересен ответ на конкретный вопрос тот пройдёт по ссылке и подробно его изучит, а тот кому не интересно просто пропустит 2-3 строчки. И никаких проблем со скролингом нет в отличи от того как теперь.
Аноним 27/11/15 Птн 22:47:37 #497 №590812 
>>590809
Проблема в том, что надо использовать make_pair? Но задача слишком требовательна ко времени выполнения, а пары создаются долго. Нельзя ли как-то на более старом С++ написать то же самое, не используя создание пар? Без вот этого: {i, weight}
Аноним 27/11/15 Птн 22:48:28 #498 №590813 
>>590808
проверь
Аноним 27/11/15 Птн 22:57:22 #499 №590817 
>>590698
Просто убери маты из шапки.
Аноним 27/11/15 Птн 23:00:15 #500 №590818 
>>590817
>маты
>сосач
Я могу ошибаться, но у нас тут не пансион благородных девиц, лол, и анон не оценит. Алсо, ща я такие стихи в новую шапку ебну, что ты вообще позеленеешь, братюнь.
Аноним 27/11/15 Птн 23:01:02 #501 №590819 
>>590812
У тебя же есть данные профилирования? Хотелось бы посмотреть для интереса.
Аноним 27/11/15 Птн 23:05:57 #502 №590822 
>>590819
Нет. Алсо, та же задача: https://ideone.com/WGiaQU

Есть хеш-таблица, которая содержит пары ключ-значение. Таблица моделирует электронного продавца кусков мяса ("All pieces are numbered from 0 to N-1 in order of weight increase"). Когда покупатель выбирает один кусок, из хранилища в контейнер подгружается еще один кусок наибольшего веса. Как сделать обновление контейнера? Думаю, я зря выбрал для контейнера хеш-таблицу (хотел немного ускорить выбор кусков покупателем), т.к. слишком долго искать максимум по номерам в хеш-таблице. Стоит использовать priority_queue?
Аноним 27/11/15 Птн 23:07:05 #503 №590824 
>>590822
>т.к. слишком долго искать максимум по номерам в хеш-таблице
Имею в виду, что если в контейнере уже есть куски с некоторыми номерами, то новый кусок должен иметь следующий номер в порядке возрастания.
Аноним 27/11/15 Птн 23:08:20 #504 №590827 
НОВЫЙ ТРЕД
https://2ch.hk/pr/res/590823.html
https://2ch.hk/pr/res/590823.html
https://2ch.hk/pr/res/590823.html
Аноним 28/11/15 Суб 01:09:22 #505 №590905 
хуй
Аноним 30/11/15 Пнд 00:32:41 #506 №592127 
>>587839 (OP)
Аноны, сейчас джуниору вакансию найти вообще реально?
Аноним 04/12/15 Птн 13:48:12 #507 №595488 
14492260928960.jpg
Программа рандомно выводит одну из фраз.
Как скопировать вывод cout в буфер обмена?
Аноним 04/12/15 Птн 22:05:09 #508 №595927 
>>587839 (OP)
Где мне могут помочь с лабой?
Здесь нахуй пошлют я так понимаю?
Аноним 04/12/15 Птн 23:40:59 #509 №596054 
>>595927
>>590827
Аноним 05/12/15 Суб 11:24:52 #510 №596305 
сап
что бы такое прочитать что бы поднатореть в новых стандартах но при этом не свихнуться?
Аноним 05/12/15 Суб 12:02:25 #511 №596349 
>>587839 (OP)
пацаны, как на плюсах написать
y=ln|5x|+tgx^3 ?
Аноним 05/12/15 Суб 12:55:55 #512 №596373 
>>587839 (OP)
Поясните, как это функцию можно передать как параметр. Я еще понимаю объект с переопределенным (), но функция же не объект, или как?
Аноним 06/12/15 Вск 12:30:14 #513 №596991 
Ананасы , молю о помощи . Как по изи вкатится в классы . Прочитал 100500 статей на тему : "Конструкторы\деструкторы\наследование " , до сих пор въехать не могу .
Аноним 06/12/15 Вск 17:03:21 #514 №597258 
>>596373
У функции есть адрес. Его можно передать.
Аноним 06/12/15 Вск 22:44:47 #515 №597606 
http://pastebin.com/uYLBjN47 Почему выводит только элементы массива , которые хранятся по индексом 4 ?
Аноним 08/12/15 Втр 14:51:48 #516 №599063 
Хеллоуворлдщик на связи. Где-то давно читал, что байт-код это плохо и тормознуто. Решил таки в 30 лет начать изучать кресты и что я вижу в шапке? На винду оп-хуй рекомендует ставить Visual Studio! Но ведь это байткод! Верны ли мои опасения?
Аноним 09/12/15 Срд 08:39:39 #517 №599747 
Есть ли тут дохуя успешные осиляторы, выучившиеся по гайдам из треда? Или тут мамкины студенты окончившие универы?
Аноним 09/12/15 Срд 14:49:01 #518 №599930 
14496617417680.jpg
В тред призываются посоны, могущие в CUDA. Нужна ваша помощь.
Вопрос:
Есть какой-то способ брать картинку с экрана, обрабатывать её в CUDA и в RAM выгружать уже результат обработки?
К примеру, мне нужно алгоритмом выделить три (x,y) точки на экране, исходя из цвета пикселей на нём. Стандартным подходом выглядит:
1) Сделать скрин.
2) Загрузить массив пикселей в память видеокарты через cudaMalloc.
3) Проанализировать их и вернуть результат.
А может ли девайс Куды анализировать прямо то, что сейчас на экране, без промежуточных копирований картинки в оперативную память хоста?
Аноним 09/12/15 Срд 18:12:16 #519 №600069 
Сап плюсач. Помоги мне с COM портом. :3 Есть ли гайды, с пояснениями, как с ним работать - отправлять/принимать сообщения и тому подобное?
Аноним 09/12/15 Срд 21:01:43 #520 №600232 
помогите написать прогу (Первые 15 наиболее часто встречающихся символов коди­ руются четырехбитными кодами от 0000 до 1110. Код 1111 означа­ ет, что следующие за ним 8 битов кодируют один из остальных символов. Разработать функции упаковки и распаковки строки с определением наиболее часто встречающихся символов и коэффи­циента уплотнения.)
Аноним 14/12/15 Пнд 14:53:53 #521 №603143 
>>587839 (OP)
Как заставить qmake сожрать специальные символы(не цифробуквы) в директориях?
Аноним 14/12/15 Пнд 19:01:49 #522 №603345 
14501089098380.png
Сап, анон
Нужна помощь в разборе моих ошибок в коде программы, которая должна была реализовать класс треугольник с операциями вычисления периметра, площади и проверки двух треугольников на равенство (в геометрическом смысле). http://pastebin.com/1x4Djik0 Вот, собственно, сам код. Надеюсь, что тут найдётся добрый человек, который поможет его обосрать и выявить все ошибки.
sageАноним 14/12/15 Пнд 19:16:47 #523 №603356 
>>599063
Совсем тю-тю, чтоли?
sageАноним 14/12/15 Пнд 19:20:05 #524 №603360 
>>592127
Да, но надо постараться и хорошо знать, собстно, кресты.

Джуниор - это не ноль, которого надо учить.
Джуниор - это рабочая единица, которой можно мало платить. Почувствуй разницу.
Аноним 14/12/15 Пнд 22:26:21 #525 №603588 
Сап, pr, помогите ньюфагу ебаному.
Я использую Token_value get_token();, а мне говорит, что идентификатор Token_value не определен, препод сказал, что ничего не надо перед этим писать. Где я долбаеб? Что делать?
Аноним 15/12/15 Втр 00:31:24 #526 №603787 
Сап, анон
Собсна написан класс с одномерным массивом, надо перегрузить + и +=, все сделано, но когда возвращаю измененный массив в мейн, парочка значений просто обнуляются , хуй знает что делать.
http://pastebin.com/HyCrkC1D
Вывод в консоле:
Input size=3
Elem[0]=1
Elem[1]=2
Elem[2]=3
Elementi= 3 1 2 3//вывод из функции
Elementi= 0 0 2 3//вывод после возвращения
Elementi= 1 2 3 3//вывод из функции
Elementi= 1 2 3//вывод после возвращения
Аноним 16/12/15 Срд 00:28:02 #527 №604789 
Пагни, я оче ньюфаг.
Как запилить ввод и вывод на одной строке?
Аноним 16/12/15 Срд 00:31:47 #528 №604790 
>>604789
int main(void)
{
int feet, inches, pounds;

cout << "Input your height: \n";
cin >> feet;
cout << " feet and ";
cin >> inches;
cout << " inches.\n";
cout << "And your weight is ";
cin >> pounds;
cout << " pounds.\n";
Хочу чтобы было:

Input your height:
X feet and Y inches.
And your weight is Z pounds.

Выходит:
Input your height:
X
feet and Y
inches.
And your weight is Z
pounds
Аноним 16/12/15 Срд 16:45:49 #529 №605112 
14502735497390.png
>>604790

Решение дико платформозависимое, так как вообще стандарт и реализации крестов не предполагают такого рода интерактивного ввода. Под Linux запустится, но под Окнами не уверен. Можно попытаться использовать CreateFile/ReadFile/WriteFile из Win32 на стандартных потоках

Смотри пасту http://pastebin.com/83njMgu1

Зачем ты это хочешь? Глупо же.
Аноним 16/12/15 Срд 17:35:55 #530 №605153 
>>605112
Спасибо.
Да просто захотелось так. Я задачки из учебника делаю. Помню лет 10 назад на 1м курсе информатике на паскале я что-то подобное делал. И там вроде проблем не было.
Аноним 17/12/15 Чтв 19:24:52 #531 №606184 
сап, помогите написать задачу, просто времени нет
Программы, реализующая математические
операции с матрицами, представленными в виде
структуры данных.
Аноним 18/12/15 Птн 03:53:38 #532 №606540 
Котоны, как удалить односвязный список в C++?
Аноним 18/12/15 Птн 10:10:42 #533 №606600 
14504226421570.png
Крестаны, нужны знатоки и не очень Qt и Qml. Суть проблемы: окно QML гуя просто перестало рендерится, хотя процесс работает, раньше всё ок было. Пробовал всё ребилдить как под релизом так и под дебагом, перезагружать пеку и тд. Что ещё может быть?
comments powered by Disqus

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