Этого треда уже нет.
Это копия, сохраненная 3 февраля 2016 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
29 Кб, 404x935
Оффициальный™ традиционный® C++ тред #17 НОВОГОДНИЙ #615922 В конец треда | Веб
Так дрогнул тред от взрывов пердаков,
Что я подумал: "Это крестобляди
Ввязались в спор о фичах языков,

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

Предвосхитив чудовищный отсос,
Что был для скалоблядка столь желанен.
И тот бы роковой удар нанес,

Не будь стремглав куратором забанен".


НОВОГОДНЕЕ ОБРАЩЕНИЕ ОПа

Братья-крестоаноны! Старый год подходит к концу, и я думаю, что сейчас самое время написать несколько слов о нашем треде, подвести итоги или вроде того. Уже шесть с лишним месяцев я с большим удовольствием исполняю обязанности ОПа. Не будет сильным лукавством сказать, что за это время мы с вами серьезно изменили тред к лучшему. Общими усилиями была выстроена неплохая шапка, найдено и структурировано большое количество годной литературы. Активность анонов увеличилась почти в два раза, а треды порой улетали в бамплимит с поистине космической скоростью.

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

Пусть в 2016 году все мы еще дальше продвинемся в изучении темных закоулков крестов. Пусть неосиляторство и баги минуют нас. Пусть школьники сдадут свои лабы, а их старшие товарищи найдут годные вакансии. Пусть написание кода будет приносить нам только удовольствие, и ни капли бугурта. С наступающим Новым Годом вас, братишки!

P.S. Исходники кода с сюрпризом из оппика - https://goo.gl/kByKap

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

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

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

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

Старший брат: >>609376 (OP)
Предыдущий: >>607053 (OP)\r\n\r\n

\r\n\r\nFAQ:

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
Скотт Мейерс - Эффективный и современный C++ (2015) - https://goo.gl/Im8VYQ
Скотт Мейерс - Эффективное использование 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/n4567.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++ (2009) - https://goo.gl/isSt7j
Дэвид Вандевурд, Николаи Джоссатис - Шаблоны 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
Блог еще одной тянки, много о Qt и оптимизации (на ангельском) - https://katecpp.wordpress.com/about
Куча других блогов (на ангельском) - 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\r\n\r\n

\r\n\r\nQ: Я готов начать погроммировать! Куда мне писать код?
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, например, весьма удобную CodeLite (sudo aptitude install codelite codelite-plugins), и работать в ней. Ее также можно использовать и в шиндошс, но тогда сперва придется установить MinGW (http://mingw.org).

Еще у нас есть 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://www.solarix.ru/for_developers/cpp/boost/boost-library-list.shtml - краткие аннотации к большинству компонентов.
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
#2 #615925
#2 #615925
#3 #615935
Аноны , что я делаю не так при нахождении среднего арифметического всех элементов бинарного дерева поиска http://pastebin.com/ASMx7YXh
44 Кб, 557x488
31 Кб, 1276x524
#4 #615941
Сделаю перепост сюда, может кто сможет помочь.

Как сделать ремап адресов в ida?

На первом скриншоте дебаггер с выделенной инструкцией jal.
Она расположена по адресу 800C5638, а сам джамп уводит нас на $800C50AC.
Всё понятно и никаких проблем нет, но это дебагер, в нём удобно код не покомментируешь, он тебя его не проанализирует и не поможет разобраться.

На втором скриншоте ида, где проведен дизасм файла, содержащего тот же самый код.
Только переход здесь на C50AC, а не на 800C50AC, в то время как на psx память замапплена 0x80000000. Ну и сама инструкция по другому адресу, ибо в ида отсчёт с нуля. Как можно заставить иду отображать данные так, как мне надо? Иначе метки никуда не ведут и анализировать код сложно.
Я, конечно, считаю всё ручками, но хотелось бы пользоваться автоматизацией. Много меток ручками исправлять оче долго.
#5 #615987
Что будет если скомпилировать оп-пик?
#6 #615993
>>615987
В консоли появится физиономия Страуструпа и уничтожит твой комп.
#7 #615997
>>615935
Нету реутрна в функции которая должны возвращать int
#8 #616011
Не используйте boost. Безумные ошибки на компляции, тормоза компилятора, падения от нехватки памяти на компиляторе. Нахера? Я один раз втащил модный boost fsm и boost bind, до сих пор не могу отмыться от него.
#9 #616040
>>615987
А ты попробуй и узнаешь. Ничего плохого не случится.
#10 #616045
>>616040
Самому перепечатывать?
#11 #616080
>>616011
Bind уже в std.
#12 #616086
>>616080
И более того, даже там он уже не нужон.
#13 #616112
>>616045

>P.S. Исходники кода с сюрпризом из оппика - https://goo.gl/kByKap

#14 #616114
>>616086
Из-за лямбд штоле?
#15 #616117
>>616112
Там стишок! шапку не читаю а смотрю на обновления в первом посте
#16 #616122
>>616117
Ну вот, а я сначала хотел все это запихнуть во второй пост, но потом решил, что так лучше видно будет.
#17 #616217
>>615922 (OP)

> треды порой улетали в бамплимит с поистине космической скоростью


Ага и перекаты даже не успевали делать. А однажды перед тем как перекатились тред успел на 7мую страницу утонуть.
#18 #616218
Что используете для лога и конфигов? Заебало велосипеды писать в каждом проекте.
#19 #616220
>>616011
Некоторые либы говно то еще, но есть и годнота же. Как до cpp11 без буста можно было жить вообще не представляю.
#20 #616222
>>615922 (OP)

>Уже шесть с лишним месяцев


Твою мать... присел с чайком крестотред почитать.
#21 #616230
>>616218
Лог - это конечно сложнаааа)))
И надо каждый раз писать))) Мммм
#22 #616234
>>616218
Boost::log и boost::config
#24 #616483
С наступающим!
Вопрос такого плана, имеется базовый класс для эксепшонов и его легендарный метод http://en.cppreference.com/w/cpp/error/exception/what
Так вот, какого хуя const char what() ? Блядь, серьезно?
Есть реально весомая прична ебаться с char* const? Почему не тот же стринг? Я что-то упускаю
#25 #616493
>>616483
Очевидная же причина - string может сам бросить exception.
#26 #616494
>>616493
Да уж, лол.
Пора идти спать, совсем башка туманная, спасибо.
#27 #616497
>>616483

> ебаться с char* const


Где там ебля-то? Если нужно что-то сложное сделать то в string кастишь и все. Так, небольшое неудобство.
#28 #616499
>>616493
Вообще, как я заметил, в крестах эксепшоны используются в основном при написании библиотек, да? Редко встречаю их, в той же джаве они на каждом шагу.
#29 #616500
>>616497

>неудобство


Ну да, это и имел ввиду. Как хорошо, что вы мне пояснили причину.
48 Кб, 811x301
#30 #616505
аноны, уебок и ничего не умеющий на связи, подскажите, что надо написать чтобы открыть форму? в delphi было бы так - form1.show; а что в qt писать?
#31 #616507
>>616505
form1.ui
Даблкликом кнопочки не открываются, уёбывай.
#32 #616512
>>616507
Он не это имел ввиду.
>>616505
.show() тебе будет достаточно.
#33 #616521
Хочу на досуге фана ради написать клон haxball.com
Не могу определиться, на чем писать - Qt или SFML оба тулкита юзал неодноразово
SFML естественнее для игор, но с другой стороны - SFML/Network имеет убогое API.
Qt вроде как никто не использует для такого, но с другой стороны - апи для работы с сокетами просто прекрасен.
Так и не понял, на чем остановиться.
Аноним #34 #616522
>>616499
В языках без сборки мусора эксепшоны достаточно опасная вещь, нужно хорошо понимать как с ними работать чтобы недопускать утечек памяти. Поэтому некоторые предпочитают их вообще не использовать.
#35 #616524
>>616218
для петов или на фрилунсе это подрубаю https://github.com/easylogging/easyloggingpp
в конторке велосипедим, конечно же
#36 #616525
>>616522
noexcept в c++11 is just for this?
#37 #616538
Как удалить пробелы в начале файла, не переписывая его ? Т.е. в файле строка " abcde" заменить на "abcde", без буферов и тд.
#38 #616544
>>616538

>Как переписать файл не переписывая его?

#39 #616546
>>616544
Нда, косяк. Ну ты понял, что я имею в виду. Заменить пробел на пустоту.
#40 #616548
>>616546
Нельзя так просто. Если залезть в файловую систему то наверное можно кластера дропать - но обратно же уменьшать можно только целыми кластерами, в произвольном месте и на произвольное количество не уменьшишь.
#41 #616553
>>616011
в прошлом треде пытался разогнать аж двадцатью постами за то что юзать boost - это самое худшее что может случиться на проекте
был не понят, так чтож не пытайся даже
#42 #616556
Возможно ли расметиться на жестком диске так, что бы даже после полного удаления разделов на диске и установки новой системы ожить? Возможно это стоит делать через биос? Доступ полный, вплоть до запуска со своего носителя.
#43 #616567
>>616556
Как он в этот тред забрел
#44 #616594
Можно ли обрезать файл ? Допустим файл размера 128 обрезать до 120.
#45 #616595
>>616594
байт\t
#46 #616598
>>616594
Вписать EOF вместо 121 байта.
#47 #616624
#48 #616625
Я, наверно, сильно туплю, но как можно организовать хранение объектов одного класса, но чтобы при этом доступ к ним был доступен по имени? Массивы не подходят, т.к. к объектам надо обращаться по индексам, а мне необходимо по имени.
#49 #616626
>>616625
man, unordered_map?
81 Кб, 1765x1558
#50 #616628
>>616625
Закрепить пикрел в шапке надо, чтобы вас, тупней, еблом в говно тыкать.
#51 #616663
>>616628
Так себе картинка. Много чего непонятно.

>Нужно производить упорядочнные выборки?


Шо це таке?
#52 #616668
>>616628
Нет OCHE важного вопроса:
— Меньше тыщи элементов?
— Ога...
— Тогда зделойте пжлст char[] и memcpy()
#53 #616670
>>616663
Порядок элементов тебе важен или нет. Например, для std::lower_bound и std::upper_bound, бинарного поиска и т. п.
#54 #616671
>>616668
Ты из какого сишкотреда выполз?
#55 #616673
>>616670
Там в самом начале есть вопрос еще до этого: "Порядок важен?"
#56 #616676
>>616673
Здесь имеется в виду очередность вставки/удаления.
#57 #616685
>>616663

>Так себе картинка.


>Много чего непонятно.


Ты совсем ебанутый?

>>616668
Н А Х У Я
А
Х
У
Я
#58 #616689
мам ну че он >>616685 обзывается
#59 #616692
Есть ли в C++ рефлексия, атрибуты на классах/функциях/параметрах/перечислениях ??? Ну то есть как в C#
#60 #616694
>>616692
Если вкратце, то нет.

Есть конечно костыли, которые каждая 10-я компания свое выкатывает - что-то там в анриал энджин, что-то там в бусте есть, в Qt тоже свое.
#61 #616700
>>615922 (OP)

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


>


>Вопросу по синтаксису идут на хуй.


>Лабы идут на хуй.


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


>Все идут на хуй.


>Хейтер сосет члены на пару со своей мамашей.


>


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


когда уже это уберёшь?
#62 #616702
>>616556
Может в мбр писать? там всё равно много места, а используется мало.
#63 #616704
>>616702
А есть реальные примеры такого заражения, имею ввиду не примеры кода, а существующие угрозы?
#65 #616718
>>616628
tangro говно какое-то зделал, даже разложить на плоскости не смог. Вот как надо, блядь: http://goo.gl/5AIkZc
#67 #616730
>>616718
АААА ПИДОР БЛЯДЬ! МУДЕЛЬ СУКА! Как такое в png скидывать можно вообще, поехавший?
Вообще, когда нюфагочелик спрашивает какой контейнер позволит ему хранить хуитки по [имени]=значению, скидывать вот этот высер параноика немного неправильно, не находишь?
#68 #616780
>>616730

>png


Ну переконвертируй, хуле. Я с хабры спиздил в неизменном виде.
#69 #616858
>>616524
Использовал его, потом написал своё. Раскидывать по файлам там не очень удобно было -- слишком много кода клиентского выходило и внедрение зависимостей громоздким получалось.
Дело двух вечеров, зато всё как мне надо.
#70 #616860

>Thankfully, the C++ Standard Library has a cure for this in the form of std::lock — a function that can lock two or more mutexes at once without risk of deadlock. The example in the next listing shows how to use this for a simple swap operation.



Оооокей, а доселе как с этим справлялись? Как это работает?
#71 #616866
>>616860
Писали велосипеды же. Ну типа делаешь общий управляющий мьютекс, который блокирует любые операции с остальными мьютексами. Но вообще это все довольно медленно, правильные посоны критичные места теперь проектируют сразу на атомарных операциях.
#72 #616869
Кто-нибудь может прояснить вопросец по семантике перемещения?
Почему вот при a = std::move(b) b обнуляется?
#73 #616871
>>616869
А что с b должно по-твоему произойти?
#74 #616872
>>616869
Вот например, здесь:
http://en.cppreference.com/w/cpp/language/move_constructor

Before move, b1.s = "test"
After move, b1.s = ""

Явного обнуления нет в конструкторе перемещения, ну разве что могу предположить, что оно происходит в самом string'e.
Таки я должен самостоятельно присваивать старым указателям nullptr при работе со своими типами?
#75 #616877
>>616866
Пока не дошёл до них.
#76 #616884
>>616872
Должен. Старое обнуляется только для классов из стандартной библиотеки, у которых это явно прописано в описании move (например, у умных указателей).
#77 #616904
>>616628
А если мне, блядь, производительность нужна до нескольких тысяч запросов за 1 миллисекунду? Что мне выбирать?
#78 #616913
>>616904
Слишком тупо заданный вопрос. Без инфы об окружении и модели обработки это как хуем в воздухе махать.
#79 #616999
>>616884
Хм, значит я все правильно думал.

>описании move


В move конструкторе, ты хотел сказать
#80 #617009
>>616913
Ну смотри, допустим, мне нужен менеджер текстур для самописного движка. Задача - избежать загрузки одной и той же текстуры дважды, у каждой текстуры должен быть ID, на который будут ссылаться модели объектов. При этом есть функция Init(), которая, собственно, загружает текстуры в программу. До вызова этой функции отрисовку объектов с текстурами проводить нельзя. После вызова нельзя загружать текстуры.

Допустим, первая задача решается обычным unordered_map с ключом - адресом текстуры на диске. А что делать с ID, на который будет удобно ссылаться? Сейчас у меня это реализовано как двойной указатель на текстуру, в котором до вызова Init() лежит nullptr, а после - указатель на загруженную текстуру.
#81 #617011
>>617009
Я тебя помню. До сих пор не дописал движок и не начал делать игру, кееек.
#82 #617044
>>617011
Какую именно?
#83 #617048
>>617009

>Задача - избежать загрузки одной и той же текстуры дважды


Почему бы и не выделить это все в отдельный блок?
#84 #617052
>>616904
>>617009
Ты, блядь, вася. Каким вообще ебаным хуем контейнер в твоей задаче может стать боттлнеком, если ты читаешь текстуры с, сука, жёсткого диска? Какие, блядь, тысячи запросов в мс? Одну текстуру для каждого юнита 9000 раз загружать чтоле будешь? Коли хочешь прям повыёбываться милисекундами - можешь попробовать ещё dense_map_hash из гугловского sparsehash хотя чо там, как минимум до ляма элементов не намного быстрее любого джява хэшмэпа будет.

Второй части похоже нихуя не понял.
Можешь например пихать в значение хэшмэпа хуитку вида std::pair<адрес текстуры на жд, адрес текстуры в памяти> или просто указатель на структуру в которой будешь менять указатели на адрес. Ещё можешь по человечески попробовать описать проблему, если я таки нихуя не понял.
#85 #617058
>>617011
Так это ж любительский проект. Иногда открываю, дописываю какую-нибудь фичу. Я не работаю над ним 24/7.

>>617052
Ну смотри. Допустим, я загрузил все текстуры в память. Использую только map. Тогда каждый раз при отрисовке объекта я буду производить логарифмический поиск нужной текстуры в контейнере. Каждый раз, для каждого объекта! А если у меня в сцене 10000 объектов? Поэтому простой map использовать нельзя. Или приходить к ухищрениям, как я. Когда для загрузки текстур у меня один контейнер, а для их использования - другой.
#86 #617060
>>617052
Да дебил он странный, где он собрался избегать загрузки дважды?
Кстати, >>617009 можешь глянуть мой загрузчик взять, http://pastebin.com/ULLpfzKi
#87 #617062
>>617060
http://pastebin.com/bzCicdUX прошу прощения
#88 #617067
>>617060
Так блядь, я избегаю загрузки дважды. Сначала у меня в map добавляются текстуры по ключу - имени файла. Текстуры не инициализируются! Т.е. по каждому ключу лежит нулевой указатель. Потом(после того, как они все добавлены) вызывается Init(), в котором уже через foreach происходит загрузка каждой текстуры из этого map. И только после этого их можно использовать.
#89 #617072
>>617067
Ну ты и даун.
Что тебе мешает проверять наличие данного ключа в контейнере и не загружать дважды? Сука, выколол бы глаз тебе.
#90 #617074
>>617072
Блядь, Я ТАК И ДЕЛАЮ.

Но что делать в рантайме уже при использовании текстур? Поиск по ключу - O(log N), и для рантайма это не подходит. Грузить в другой, более подходящий контейнер? Использовать ссылку на указатель или двойной указатель? Я использую последний вариант, но он не очень гибок. Думаю сделать всё-таки отдельный vector только для рантайма.
#91 #617091
>>617072
>>617074
Еблан еблана погоняет.
а) unordered_map не допускает дубликатов, даже проверять нихуя не недо;
б) поиск по unordered_map - O(n);
в) используя кортежи можно обойтись 1 контейнером.
Хватит спамить, мудели.
#92 #617095
>>617074
Мать твою, тогда ХЕШ
НУ ЧТО ТЫ ЗА УЕБОК ТАКОЙ, Я ТЕБЯ СПРАШИВАЮ?! ТЫ С ТАКИМ УМНЫМ ВИДОМ НАХУЙ ПОДНИМАЕШЬ ТАКИЕ ВАННАБИ УМНЫЕ ВОПРОСЫ, 10^-9 мс сэкономить, охуеть, оптимизатор хуев, даже линерифметическую сложность нагуглил, молодец НО ТЫ, БЛЯТЬ, ДАЖЕ ОСНОВ не понимаешь, деточка, пошел нахуй из этого треда с двойными указателями, ты оптимизирован по жизни, никто кроме нас твоих высеров не увидит.
#93 #617107
>>617091

>unordered_map не допускает дубликатов, даже проверять нихуя не недо;


map тоже, внезапно, да?

std::map<std::string id, std::unique_ptr<Texture>> прекрасно справятся с ебучей задачей этого игродела.
#94 #617109
Ладно, я не хочу ни с кем ссориться, давайте будем жить дружно можно в качестве примирение обоссать игродебила с его движкопроблемами
#95 #617110
>>617109

>примирения*

#96 #617116
>>617095
Каких нахуй основ? Я на графике специализируюсь, все эти хэши и сеты нужны только всяким писателям фабрик абстрактных фабрик. И да, у меня на отрисовку кадра есть только 16 мс. Шестнадцать миллисекунд, блядь, это тебе не твой энтерпрайз, когда минутные задержки при поиске - это нормально и вообще оптимизация для байтоёбов. Если я буду одни текстуры из контейнера получать 2-3 мс, то нахуй можно забыть о просчёте физики, постпроцессинге и нормальной анимации. Потому что так разбазариваться временем отрисовки кадра нельзя, это жёсткий рантайм.

Твой хэш тоже медленный, потому что есть коллизии. Чем больше объектов в твоём хэшмапе, тем дольше будет поиск. Один вектор с обращением по ID - куда более приоритетный вариант. Но не является ли это обращение слишком большим оверхедом?
#97 #617120
>>617116

>все эти хэши и сеты нужны только всяким писателям фабрик абстрактных фабрик


Еще один поехавший байтоеб.
#98 #617121
>>617116
А у тебя просчет физики в одной каше с отрисовкой графики? Хуясе.
#99 #617123
>>617114
Прости, я не знал про O(n)
#100 #617124
>>617116
Тут такой вопрос внезапно: а почему просто не запихать в вектор всё то, что должно быть в текущий момент на экране, и не ебать мозги?
#101 #617125
>>617114

>мой же аргумент


Какой? std::pair? Я код скинул хуй знает сколько постов назад, мог просто сразу сказать про O(n) в умапе, осталось бы десять символов добавить и задача решена.
#102 #617128
Нахуя вообще получать текстуры из контейнера, если они лежат в видеопамяти?
#103 #617129
>>617128
Чем ты их оттуда выщипывать будешь?
#104 #617130
>>617121
Нет, конечно. Но ведь за кадр надо сделать и то, и то, верно?

>>617124
Я так и делаю. Но только не то, что на экране, а то, что в сцене. Octree-оптимизаций и подобных вещей у меня пока нет.
#105 #617131
>>617129
Что-то типа object->texture_id.
#106 #617132
>>617130
Блядь, ну, начнем с того... Что если тебе нужно каждый кадр запрашивать текстуру - это уже хуйня какая-то, конечно если у тебя не имитация партиклов которые живут по 2-3 кадра.
#107 #617133
>>617128
У тебя же не одна текстура на всю сцену. А как ты будешь говорить GPU, какую текстуру использовать для конкретного объекта? Правильно, следующей конструкцией:
dc->PSSetShaderResourses(0, 1, mTexture);
#108 #617134
>>617131
И тут у тебя 100 объектов.
object1->texture_id
object->texture_id
#109 #617135
>>617131
Ну охуеть.
Не проще ли ПРОСТО в объекте хранить ссылку на объект текстуры? И искать ее в umap контейнере только при инициализации объекта.
#110 #617136
>>617134
Ебать, а запихнуть это в сам класс религия не позволяет?
#111 #617137
>>617135
Так об этом и речь.
#112 #617138
>>617132
А как ещё рисовать объекты? Текстурных слотов в GPU только 16, для каждого объекта ты волей-неволей будешь должен установить его текстуру в нужный слот, затерев то, что в этом слоте находилось.. Конечно, на самом деле ты используешь дескриптор, а GPU дальше сам всё сделает, но это уже мелочи реализации.
#113 #617139
>>617137
Я понял, что ты это имел ввиду. Осталось объяснить это ему, судя по >>617134 ему не очень понятно.
#114 #617141
>>617138
Но-но-но, не перекручивай, мы говорили о получении текстуры из контейнера текстур, все что происходит дальше - никого ИТТ не ебет.
#115 #617143
>>617135
Так у меня пока так и делается. Только в классе объекта хранится ссылка на объект текстуры. При вызове функции Init() таким образом инициализируются все текстуры во всех объектах. Довольно удобно.

Но по определенным причинам я всё равно порываюсь сделать запрос по ID.
#116 #617154
>>617143
Каковы причины? Все равно во время жизни объекта будет юзаться только она одна, я бы ее стащил единожды по айди и не морочил себе голову.
Вот, кстати, глянь http://pastebin.com/bzCicdUX
Сам таким пользуюсь, разве что нужно заменить на umap, как тот анончик подсказал.
Два в одном - и выгрузка, и загрузка, если такой текстуры нету еще в контейнере.
#117 #617163
>>617116

>16 мс


Это не жесткий рантайм, это так, детская песочница. Жесткий рантайм - это планировать работу ПО оптимально под политики планировщика системы. 16мс, охуеть вообще, дожили.
#118 #617213
>>617163
А вот надо будет тебе ВСЕГДА 16 мс иметь, и это будет самый что ни на есть обычный жесткий реалтайм.
#119 #617221
>>617154

> std::map<std::string, std::unique_ptr<T>> m_resources;


Почему бы не хранить хэш строки, а не саму строку, а?
#120 #617224
>>617213
В игорях так не бывает.
#121 #617225
>>616999
Конструкторе или операции присваивания.
#122 #617232
>>617213
Жесткий реалтайм - это QNX, и уж точно не игры. Если допустим дрифт в 100мкс это уже soft-realtime.
#123 #617238
В голос проиграл с текстурозагружателя.
мимооп
#124 #617248
>>617232
У тебя какие-то странные термины. Жесткий реалтайм - это гарантированное время отклика. Хоть час, лишь бы гарантированное. Мягкий - это когда чаще всего время отклика равно предполагаемому, но иногда допустимо некоторое отклонение.
#125 #617254
>>617221
Действительно, почему бы и нет?
Не понял вопроса.
#127 #617259
>>617256
Не, я к тому, что если ты и сам в курсе, что так нужно - почему бы и нет?
Этот код я взял из курсовой работы годовой почти давности, и там было всего 25 текстурок.
#128 #617261
>>617259
Думаю потому, что сравнение строк и сравнение чисел различается по скорости.

> Этот код я взял из курсовой работы


Если текстуры не большие, то имеется смысл объединить их в одну большую текстуру и менять координаты при рисовании или создать массив текстур.
#129 #617265
>>617261
Я тогда не думал, что так можно было с хешем, лол.

А насчет кропалки - в моем случае и так текстуры резались на анимации, один большой файл был бы накладным в реализации, наверное.
#130 #617266
>>617163
Мне же не только текстуры выбирать из контейнера за это время, верно?

>>617154
Ну, например, дело в том, что в DirectX11 текстуры имеют тип ID3D11ShaderResourceView, в DirectX12 - ID3D12ShaderResourceView, в DirectX9 - IDirect3DTexture9, а в OpenGL вообще GLuint.

И есть три варианта решения возникающих проблем:
1. В абстрактных классах объектов сцены хранить двойной указатель на void, а в наследниках, специфичных для конкретного рендера, делать reinterpret_cast, благо оверхеда 0. Минусы - выглядит довольно некрасиво. Это то, как сейчас делаю я.
2. Написать класс-враппер Texture, в котором будут методы GetD3D11Tex(), GetD3D12Tex() и т.д. Хранить в нём несколько указателей(md3d9Tex, md3d11Tex и т.д.), только один из которых валиден. Т.е. допустим, если сейчас у нас режим рендера в D3D11, то функция GetD3D11Tex() будет возвращать нужный нам дескриптор, а при попытке вызова GetD3D12Tex() будет возвращаться nullptr. Минусы - оверхед по памяти и чуть-чуть по скорости. Этот метод мне нравится меньше всего.
3. В классах объектов сцены хранить ID текстуры. В классе менеджера текстур иметь методы GetD3D11Tex(UINT id), GetD3D12Tex(UINT id) и т.д. Минусы - небольшой оверхед по памяти(дополнительные контейнеры для разных типов в менеджере текстур) и большой по скорости(дополнительная операция чтения из памяти при каждом использовании текстуры). Над этим методом думаю.
#131 #617273
Пацаны, захотелось мне наваять что-нибудь на Qt, остановился на клиенте для Pastebin, какие подводные камни?
#132 #617274
>>617273

>какие подводные камни?


наверно то что там с нетом нужно работать.
#133 #617275
>>617273
Никаких няша. Кроме того что pastebin заблокирован за экстремизм.
#134 #617278
>>617275
У кого, блин?
>>617274
Не проблема же.

Да и все равно, наверное, пад сибя, потому что нахуй никому это дерьмо не надо. Единственное, пока не разобрался с их ключами.
#135 #617279
>>617278
>>617273
А что ты хочешь делать-то?
#136 #617281
>>617279
Он наверно это написал чтобы отвлеч нас от гемдева и текстур. Теперь будет семёнить.
#137 #617283
>>617279
Да я часто этим говном пользуюсь, даже чаще гиста, а так бы запилил удобный интерфейс, синхронизацию паст с локальным хранилищем, это к примеру конечно.
#138 #617284
>>617281
Ноуп, не буду, зачем мне это нужно? Сритесь дальше, может и до моей охуительной задумки дойдет
#139 #617289
>>617281
К слову, термины "игры" и "геймдев" я считаю слишком зашкваренными. Я предпочитаю термин "графические приложения реального времени".
#140 #617290
>>617289

>графические приложения


А если игра без графики? Или она настольная? Тогда это нихуя не графическое или не приложении. Значит термины "игры" и "геймдев" убрать нельзя.
#141 #617292
>>617283

> синхронизацию паст с локальным хранилище


Храни в каком-нибудь дропбоксе и всё.
#142 #617293
>>617290
В таком случае там ни текстур, ни рендера не будет. А это меня не волнует.
#143 #617294
>>617292
А при чём тут Qt?
#144 #617296
>>617293

>А это меня не волнует.


Но они есть! И термины подходят для них тоже.
#145 #617297
>>617294
А зачем для этого делать что-то на Qt если такое можно и на простых скриптах провернуть?
#146 #617299
>>617296
Да, но я специализируюсь только на графических приложениях реального времени.
#147 #617300
>>617297

>захотелось мне наваять что-нибудь на Qt,


Мне кажется что он хочет потренироваться и ему похуй насколько полезно/конкурентно способно и популярно его приложение.
#148 #617305
>>617300
this.
Нет, мне конечно было бы приятно, если бы кто-то из моих одноклассников взял на вооружение.
>>617297
На скриптах удобно только непосредственно заливать, сам так делаю.
Но ведь можно прикрепить охуительный гуёк с разными фишечками.
#149 #617308
Объясните мне пожалуйста, как сработает в следующем примере конструктор/деструктор:
Есть класс Point. Он умеет пару полей, пару функций и не имеет конструктора копирования. Есть какая-то функция, которая имеет в параметрах объект Point.
Я создаю объект Point:
Point a;
Далее, вызываю функцию:
do_something(a);
Когда вызовется функция, то создастся побитовая копия "a" и будет указывать на него же. Когда функция закончит выполнение, то вызовется деструктор этого созданного объекта. И получается, наш оригинальный объект "a" тоже испортится деструктором?
#150 #617309
>>617308
Если передаёшь по значению, то вызовется деструктор для копии.
#151 #617310
>>617309
Так а эта копия не будет указывать на оригинал? Как там скопируются значения, если конструктор копирования не определен?
#152 #617311
>>617310

> не будет указывать на оригинал


Покажи определение функции тогда.

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


Его сделает за тебя компилятор.
#153 #617313
>>617308
в оригинале объекта указатель на строку, а в деструкторе эта стока удаляется. После выхода из функции а повредиться?
#154 #617314
>>617311
Ну а зачем тогда вообще нужен конструктор копирования? Приведи какой-нибудь пример.
#155 #617316
>>617313
Вот да, я про это и спрашиваю.
#157 #617320
>>617318
Ну, то что создаётся дефолтный конструктор копирования, ничего не значит. Как он копирует ссылки/указатели?
26 Кб, 284x432
#158 #617322
>>617313
Как написать так чтобы программа не ломалась, а выводила тру и фолс? После второго вызова пишет невалидный указатель и ломается.
#159 #617323
>>617322
Строки в стиле си сравниваются через strcmp
23 Кб, 255x377
#160 #617328
>>617323
А этот почему сначала 5 и 0 выводит, а потом ломается?
#161 #617329
>>617320
В том-то и прикол, что тут тебе уже свой пилить нужно конструктор.
Глупые вопросы задаешь.
FFTW #162 #617330

>If you are planning to use the DHT because you've heard that it is “faster” than the DFT (FFT), stop here. The DHT is not faster than the DFT. That story is an old but enduring misconception that was debunked in 1987.



Ядро быстрого преобразования Хартли — это
cos(x) + sin(x) == sqrt(2) * cos (-pi / 4 + x)

Как оно может не быть быстрее DFT? Нет, ну как?
#163 #617331
>>617328
В следующий раз, пожалуйста, выкладывай свое говно на идеон.
#165 #617333
>>617328
В общем, когда твой объект удаляется в main это происходит уже второй раз (1ый раз в f).
Для таких случаев придумали shared_pointer.
Ну или передавай по ссылке в функцию.
#166 #617336
>>617333
Точнее при удалении происходит очищение памяти.
#167 #617342
В чём шутка?

a: а linux'вская версия gcc может exe'шник выдать?
b: Может.
b: g++ file.c -o file.exe
b: ./file.exe — всё работает
#168 #617343
>>617342
В линуксе нету расширения у бинарников.
#169 #617344
>>617343
А виндосовские бинарники он может делать?
#170 #617347
>>617344
Наверное.
#171 #617348
>>617342
Варианты навскидку:
1) У питуха mingw, он действительно конпелирует для венды и запускает через wine.
2) .exe по какой-то причине не является настоящим расшерением файла.
#172 #617349
>>617343
Бля, почти попал.
мимо спермовор >>617348
#173 #617351
>>617344
Да, но не совсем через gcc.
#174 #617352
>>617351
а как?
#175 #617353
>>617352
Как-то видел в репах дебиана мингв.
Видимо при помощи него.
#177 #617360
>>617352
http://www.tinc-vpn.org/examples/cross-compiling-windows-binary/
Кстати, мне как фрилансеру тема охуенная, заказчики бывают на винде, но так влом ребутиться и менять полностью свое окружение.
#178 #617369
>>617328
Для этого и нужен конструктор копирования. Когда ты передаешь объект в функцию (таким образом каким ты его передаешь) создается его копия. Конструктор по умолчанию создает неглубокую копию - тоесть получается что у двух объектов указатель i указывает на одну и туже область памяти. Потом когда после завершения функции один из объектов (копия) автоматически удаляется - освобождается (в вызове деструктора) и память на которую указывает i. Указатель в изначальном объекте начинает указывать на уже освобожденную память что UB. Нужно или избежать копирования, или, что правильней - переопределить конструктор копирования - с глубоким копириванием или другими способами избежать преждевременного освобождения памяти на которую указывает i (к примеру i можно сделать умным указателем). Гугли "правило трех C++".
#179 #617376
>>617358

> В linux вообще нет понятия "расширение".


Схуяли нет? Просто там расширение не определяет исполняемый это файл или нет.
#180 #617406
анон,как отключить Precompiled Headers в vs ? вроде ставил не испольховать в свойствах проекта,но всё равно ошибка с1083
#182 #617409
>>617399
$ echo "#include <vector>" > aaa.cpp
$ gcc -shared aaa.cpp
$ mv aaa.cpp aaa.c
$ gcc -shared aaa.c
aaa.c:1:18: fatal error: vector: No such file or directory
#include <vector>
^
compilation terminated.
#183 #617426
>>617408
сделал всё как у тебя,всё равно
Ошибка\tC1083\tНе удается открыть файл включение: corecrt.h: No such file or directory\tConsoleApplication8\tc:\program files (x86)\microsoft visual studio 14.0\vc\include\crtdefs.
как я понял нужно изменить католог включения?или что,где найти этот файл ?
#185 #617433
Что означает синтаксис:
::function_name();
То-есть, без указания пространства имён. Просто два двоеточия.
#186 #617435
>>617433
Глобальное пространство имен.
#187 #617436
>>617399
Дебил тупой? Дебил тупой.
aaa.cpp и aaa.c разные названия, тебе не кажется? Extension тут при чем?
#188 #617437
Я ньюфаг. За плечи всего месяц опыта на СИ. Посоветуйте для нюфани книгу по крестам.
#189 #617438
>>617435
Спасибо. Я догадывался.
#191 #617442
>>617437
Почитал шапку. А к алгоритмам когда приступать? Что вообще читать чтобы пердолить программирование как бог?
#192 #617450
Посоны, я тут после Java внезапно перекатываюсь на C++. Есть вопросы:
1) Что из опенсурсных проектов можно почитать для усвоения хорошего стиля современного цпп?
2) Какие компиляторы сейчас поддерживают полностью с++11 и c++14 стандарт?
#194 #617472
Сап. Призываю SFML-гуру. Суть такова:
Есть спрайт прямоугольника rect. Есть окно window и его view.
Допустим, я хочу, чтобы при растягивании окна через
window.view = sf.View((0, 0, event.size[0], event.size[1]))
и изменении масштаба через
window.view.zoom(event.zoom)
абсолютный размер этого прямоугольника и его положение относительно границ окна не менялось.
Собственно, что уже пробовал:
1) присваивать windows.view кастомный sf.View(0, 0, 1.0, 1.0) - в таком случае меняется размер при ресайзе окна.
2) не присваивать кастомный view - тогда меняется размер при зуме.
Вопрос: что сделать, чтобы всё работало?
#195 #617488
>>615922 (OP)

В шапке в разделе про IDE не хватает пары строк про божественный Xcode для макоёбов. Поправьте чтоли, а то нубасы же так и будут себе тормозной Clion втыкать.
#196 #617493
>>617450

>почитать


Дум 3 или репы любого успешного чувака на гитхабе.
#197 #617494
>>617450
Google code style guide
#198 #617502
Я начинающий крестовик, и мне нужен ответ от продвинутых плюсовиков. Я написал немного кода ideone.com/1zY2dF с целью похимичить с указателями на виртуальные функции. Похимичить получилось, memset работает на ура. Так вот есть 2 вопроса:
1. Как избавиться от таких хитрожопых юзеров, которые смогут в клиентском коде вот так взять и подхачить мемсетом виртуальные методы?
#199 #617503
Ну и если к аппелировать к этому примеру то допустим это отвечает ситуации когда долг может увеличивать только Нацбанк а не Приват. Просто в объекте Привата даже при приватном наследовании указатель на виртуальную функцию хранится, вопрос в том, как его вызвать...
#200 #617505
2. Можно ли в случае приватного наследования PrivatBank : NBU_Bank (без использования friend), понятное дело что функцию Increase_Debt он видеть не будет, заставить объект PrivatBank вызвать эту функцию Increase_Debt?
#201 #617508
>>617502
Только начинающий, а уже ебанутый крестоеб.
Вот кому в голову может прийти так нахитрожопить? Это же непереносимо и поломается при любом обновлении.
#202 #617514
Нда, ну и ебанутый API у этого пастбина.
Возвращать ошибки не кодами, а строками, блядь, это же надо додуматься, нахуй.
#203 #617515
>>617494
Кстати, странный он какой-то.
#204 #617517
>>617515
Почему? Да даже если и странный, то по крайней мере в нём всё досконально разобрано, так что он готов к применению.
#205 #617532
Можно вернуть значение из функции по ссылке?
То-есть, передать по ссылке значение в функцию. Значение, на которое указывает ссылка изменить и потом после завершения функции его использовать?
#206 #617533
>>617532
Ну да, проверил, всё норм. Просто наткнулся на гитхабе у чувака на метод, который использует указатели. Думал, может почему-то нельзя так сделать.
#207 #617566
>>617493
Современного же. То есть с 11+ стандартами. Я тут порылся нашел пару фейсбучных либ
https://github.com/facebook/wangle и https://github.com/facebook/folly/ вроде ок должно быть.
#208 #617836
>>617533
Я тебе открою тайну - ссылка это есть указатель, только очень ограниченный в своих телодвижениях и возможностях.
#209 #617936
>>617836
Не вводи человека в заблуждение.
>>617532
Для этого они, в основном, и используются. Ссылка - это, по сути, еще одно имя для переменной, привязанное к тому же адресу. И работать с ним надо как с обычной переменной.
#210 #617955
>>617936
Обоснуй или иди нахуй, ньюфаг. Имя переменной, привязанное к адресу... Охуеть просто.

>работать с ним надо как с обычной переменной


Просто промолчу. Когда уже каникулы заканчиваются?
#211 #617967
>>617955
Ну ок, "name alias", у меня плохо с русским.

>И работать с ним


>с ней


фикс

int a = 1; // peremennaya
int& b = a; // ssylka
int* c = &a; // ukazatyel'
&a == &b; // true

>>работать с ним надо как с обычной переменной


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


То есть, b, по твоей логике - указатель? Может его разыменовывать можно, pointer arithmetics применять?
#212 #617968
>>615922 (OP)
Анан, как заделать что-то вроде динамической (не уверен, что это можно так назвать) типизации в плюсах? На пример, есть json/xml/bencode файл/строка. Парсим это всё и выплёвываем объект/ноду, содержащий другие ноды. Эти ноды содержат значения (инты, флоаты, строки) либо словари/списки других нод. Если ты понял мой бред, как такое можно заделать? Через наследование или как? Пни позязя в нужном направлении. С меня как всегда.
#213 #617970
>>617968
auto/enum
#214 #617971
>>617968
boost::any, boost::variant например. В qt что-то такое было.
#215 #617972
>>617968
boost::any глянь. Ну или union использовать.
#216 #617973
#217 #617990
>>617970
Пиздос, полон тред дегенератов. Причем здесь auto, если ему надо в _рантайме_ генерировать ноды? Скажи мне, жертва инцеста.
#218 #618010
>>617967

> //peremennaya


> // ssylka


> // ukazatyel'


Самый каноничный петух ИТТ найден.
#219 #618036
репортует >>617968 -кун
https://gist.github.com/anonymous/4dc4c242c0975ed33065
так, получается вот так с юнионом. правда с геттером какая-то пизданога получается.
если делать как описано здесь http://stackoverflow.com/a/26163140
и потом кастовать внутри свободной функции к нужному типу (через свитч по типу). как по вашему, нормально будет?
#220 #618038
>>618009

>прочитал с++ за 21 день и кудахкает


Эти проекции. Вот этот бред:

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


ты оттуда и вычитал, да?
>>618008
Ладно, допустим, это указатель. А что у нас является значением указателя? А что будет являться значением b? >>617967
И почему тогда &a == &b, если мы сравниваем указатель на a с указателем на указатель на a? Можешь сконпелировать и убедиться. Тебе не помешает.
#221 #618045
>>618038
Указатель - адрес.
Угадай, каков адрес адреса.
#222 #618049
>>618045
Указатель -- переменная, содержащая адрес, указывающий на кусок памяти. Естественно у этой переменной есть адрес.
Мимопроходил
#223 #618054
>>618045
Адрес адреса? Что, блядь? Адрес указателя, может быть? Так схуяли адрес указателя на int равен адресу самого int? (полагая, что мы все еще в рамках манявселенной, в которой ссылка это указатель)
#224 #618057
>>618054
Ссылка - это простенький сахарок над указателем. Но нужно отдавать себе отчет в том, что это указатель, иначе можно выстрелить в ногу.
#225 #618083
>>617508
Ну тут уж хуй знает, если перенос на какие-нибудь ебнутые эмбедеды то может и полетит к хуям, а практика показала что во вменяемых компиляторах кланг джей-си-си и мсвс указатель идет вначале а потом поля. Твой ответ как пуканье в офисный стул - такой же бесполезный. Меня интересует секьюрный аспект, вот нахуячу я либу, с кококо архитектурой, а Васян в клиентском коде ебнет мемсет и нагнет меня раком. Вот собственно умных С++ господ я и спрашиваю, как такое ситуацию обойти секьюрно
#226 #618094
>>618083
1. Запускать код на собственном сервере.
2. Ебаться с шифрованием, виртуальной машиной и антиотладочными приемами.
Все. А твои йоба-хаки имеют мало смысла, если у человека будет доступ к бинарникам твоей либы (не говоря уже об исходниках), поменять он сможет что угодно и как угодно.
#227 #618095
>>618057
Это ПРОСТО, блядь, биндинг/алиас/привязка/whatever, они не занимают память сами по себе, в отличие от указателя. Ладно, "статический" (компайл тайм) указатель, если так хочется.
http://pastebin.com/nUF9DYzp
Вывод:
14 88 228
14 88 919
#228 #618099
>>618095
Хуйню несешь http://ideone.com/Ry1UcZ .
#229 #618108
>>618099
Ну про структуры забыл, да.
#230 #618113
>>618108
Если бы на ideone можно было легко вывести ассемблерный листинг, я бы это и там показал. http://stackoverflow.com/questions/2336230/difference-between-const-pointer-and-reference
И больше не неси чуши с такой агрессией.
#231 #618116
>>618099
Да, если бы это был указатель, то во второй строчке было бы 12 (предполагая x86_64)
#232 #618119
>>618116
Школьник маняврирует, вы поглядите-ка. http://ideone.com/Ry1UcZ
#233 #618167
>>618119
https://ideone.com/Hk1gbP
Ладно, ладно, ты подебил. А что на это скажешь?
http://pastebin.com/ydMuxxtH
#234 #618188
В основе ссылки лежит указатель, усните себе это, зарубите на нос.
Если у вас не хватает серого вещества, чтобы думать и анализировать, можете продолжать за пределами этого треда.
Чемпион этого вечера - >>618113 который сам опроверг себя.

Никто, блядь, не говорил что ссылка = указатель.
Не нужно вырывать из контекста.
#235 #618203
За много про иде. идеон оставь, а остальное замени на это.

Windows: Visual Studio
Cкачать: https://goo.gl/qgAAc6
Инструкция: https://goo.gl/JMd57G

Linux: Code::Blocks
Cкачать: https://goo.gl/ZjrPgb
Инструкция: https://goo.gl/mFln8S

OS X: Xcode
Скачать: https://goo.gl/NEhJC4
Инструкция: https://goo.gl/TlN2QC
#236 #618204
>>618203

>курсив


конечно заменить на жирный или вообще без разметки
#237 #618207

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


И пора её убрать
#238 #618215
>>618203

>ide


Vim
#239 #618217
>>618175
>>617955
https://stackoverflow.com/questions/57483/what-are-the-differences-between-a-pointer-variable-and-a-reference-variable-in/57492#57492

>Since a reference has the same address as the original variable itself, it is safe to think of a reference as another name for the same variable.


> This variable is on the stack. Since a reference has its own space on the stack, and since the address is the same as the variable it references.


> This implies that there is a real address of a reference that the compiler will not tell you.

#240 #618221
>>618215
в иде лучше не давать выбор т.к. будут вопросы про отличия и нужно много расписывать а среди нас вряд ли есть тот кто все иде пробовал.
#241 #618223
>>618221
Cледуя той же логике, можно сразу на завод идти.
#242 #618225
>>615922 (OP)

>Почему стоит использовать именно C++?


- Очень быстрый
- Достаточно высокоуровневый
- Адаптируется под разные задачи
- Всегда останется популярным
#243 #618228
>>615922 (OP)

> Но он же давно устарел!


С++ никогда не вымрет т.к. нужно поддерживать старые проекты и последнее время он стремительно развивается.
#244 #618229
>>615922 (OP)

>Сейчас все пишут на %languagename, а кресты сосут у него!


тут вообще нужно переделать вопрос. типа нахуя нужны кресты и что на них пишут. потом над этим подумая и ты оп тоже попробуй
#245 #618233
>>615922 (OP)

> Окей, я решил вкатиться. Какие же книги мне читать?


вот это нужно куда-то вынести где есть разметка и нет регистрации. Убрать устаревшее и добавить дейтла или как эта книга называется которыю какой-то анон из треда в тред в шапку реквестит
вынести надо т.к. её удобно использовать без треда и делает шапку трудно просматриваемой. долго листать и искать нужный пункт когда список книг отвлекает
#246 #618235
>>618203
кстати можно ещё ссылку на вот это кинуть http://www.cprogramming.com/c++book/jumping_into_c++_sample.pdf
#247 #618244
>>615922 (OP)

> Хуле тут так сложно? Я открыл учебник, там какой-то ад!


Попробуй https://goo.gl/kVaela т.к. после выхода 11ого стандарта язык стал проще. Но С++ остался очень сложным языком поэтому лучше не учить его первым. Перед крестами почитай про алгоритмы, архитектуру компьютера операционные системы. тут наверно надо дать ссылок на краткий курс и думаю TL;DR не нужен
#248 #618245
>>615922 (OP)

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


Думаю можно так и оставить. Но может перефразировать вопрос? типа дайте список программ упрощающих жизнь. Может ещё от мата в шапке избавиться?
#249 #618248
>>615922 (OP)

>Я не умею читать.


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

>Ты охуел? В этих книгах по тысяче страниц! Хочу коротких статей.


а это снова перефразировать надо т.к. статьями книги не заменить. и там поясняют какой-то отдельный аспек но подробно.
#250 #618252
>>615922 (OP)

>Q: Мне надоело писать велосипеды, какие у вас тут популярные либы?


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


это тоже мне нравиться. вопросы только объединить наверно надо как-то. как вариант вместо двух абзацев текста вставить ссылку на вики или ещё куда-то где так-же пояснили. и ещё можно литературу продублировать в библиотеке которая будет вынесена из шапки. зделать через с в следующий напиши
#251 #618265
>>618248

>раньше


выше
#252 #618306
>>617009
Flyweight
#253 #618308
>>618083
1. Что ты там прятать собрался от своих пользователей?
2. Экспортируй из длл, пряч детали за pimpl, не используй virtual
#254 #618309
Можете объяснить, как работает memcpy?
Делает побитовую копию? То-есть, мне следует его использовать, если хочу скопировать значения, но не указатели/ссылки?
#255 #618314
>>618309
Копирует область памяти на другую область. Предполагается, что области не пересекаются.

Часто применяют для копирования POD.

Если у тебя простые типы (числа), то =.
Если у тебя указатели на простые типы, то a = b
#256 #618316
>>618314

>Если у тебя простые типы (числа), то =.


>Если у тебя указатели на простые типы, то a = b


Не понял. Указатели будут указывать на оригинальные значения, верно?
#257 #618317
Я тут с глупеньким вопросом. По работе нужно тестировать некий софт, и вот в логах замечаются такие вещи:

>foo.cc(238): x called with y


>bar.cc(120): Starting up z


и т.д.

Но ведь язык компилируемый, откуда там какие-то номера строк? Не может же оно исходники хранить. Ладно там в при дебаге в вижуал студиях показываются, но в готовом продукте?
#258 #618319
>>618317

>foo


>bar


>По работе нужно тестировать некий софт


Лабы нужно протестировать к сессии.

поправил*
#259 #618324
>>618319
Если бы ещё на вопрос при этом ответил...

Впрочем, там что-то такое, наверное, – http://stackoverflow.com/questions/2849832/c-c-line-number
Спасибо.
#260 #618327
>>617058
Ты будешь загружать текстуры миллионы раз в секунду? Ёбнутый?

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

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

Какой-то даунский вопрос.
#261 #618357
>>618308
Пользователь может просто поиском по памяти найти секретные данные и код.
#262 #618398
>>618357
Если пользователя припрет, он и из-под вмпротекта код и секретные данные вытащит. Тру стори.
#263 #618426
>>618327
Да бляяяяяяяядь, как вы меня заебали.

Н_Е! З_А_Г_Р_У_Ж_А_Ю! Я! Т_Е_К_С_Т_У_Р_Ы! В! Р_А_Н_Т_А_Й_М_Е! ОНИ У МЕНЯ ЗАГРУЖАЮТСЯ ПРИ ИНИЦИАЛИЗАЦИИ! ЕЩЁ РАЗ: ПРИ ИНИЦИАЛИЗАЦИИ! И ЕЩЁ РАЗ: ПРИ ИНИЦИАЛИЗАЦИИ! В КОНТЕЙНЕР! ГЛАВНАЯ ПРОБЛЕМА - КАКОЙ КОНИЕЙНЕР ДЛЯ ЭТОГО ИСПОЛЬЗОВАТЬ!
#264 #618466
>>618316
Блть, там звёздочки
^a=^b
#265 #618483
>>617502
>>616556
Похоже фсб припахала выпускников вирус писать, а они после рашкенских вузов не могут вот и спрашивают помощь в крестотреде. Ещё в бэ кто-то с военной кафедры просил детскую задачку решить.
#266 #618496
>>618478
Давай, скажи ещё раз, что я тупой и не понимаю, что трактором нужно пахать поле. А я, блядь, ещё раз взбешусь и отвечу, что я знаю, блядь, мне нужно узнать, трактор заправлять бензином или керосином. А ты ещё раз ответишь, что как можно быть таким тупым, чтобы не знать, что трактором вспаэивают почту.
#267 #618497
>>618496

>вспахивают поле


Простите.
#268 #618498
Есть крестозадача(нужно чтобы быстро было) — распидорасить буфер и собрать из содержимого один из нескольких вариантов классов, которые затем будут переданы во всевозможные места программы. Но общего функционала у этих классов нет, они просто хранят какие-то данные.
Можно сделать наследование от базового класса, носить с собою тип конкретного и кастить обратно при необходимости. Но как-то это говнецом попахивает, придется часто дергать хип и вообще переплачивать за виртуальные функции.
Можно налепить несвязанных классов и используя тонну многослойного бойлерплейта проталкивать их к нужным адресатам.
Что лучше и есть ли еще варианты?
#269 #618500
>>618498
Ты бы лучше задачу по подробнее расписал, а не свои догадки как её решить.
#270 #618503
>>618498
Статический полиморфизм, CRTP, миксины и т. п.
#271 #618505
Вопрос теоретического характера. Имеется void функция, оба аргумента которой передаются по ссылке (неважно, константные или нет, в моём случае неконстантные, т.е. функция меняет переменные по ссылке).

На мой взгляд, такая функция в 100% случаев должна подставляться. Потому что единственная причина, по которой код был вынесен в отдельную функцию, это избегание дублирования кода и/или повышение читаемости кода (если функция вызывается 1 раз).

Но что-то мне подсказывает, что функция не подставится.
#272 #618511
>>618505
Посмотри отладчиком с -o2, что ты как маленький.
#273 #618512
>>618505
Используй какой-нибудь __forceinline или always_inline
#274 #618513
>>618500
Через сокет бегут данные в большом количестве, а конкретнее это всякая биржевая хуита. Нужно быстро преобразовать во что-то, с чем будет удобно работать и скормить это гую, роботам, логгеру итд.
>>618503
Сколько незнакомых слов, убежал гуглить.
#275 #618515
>>618513

>а конкретнее это всякая биржевая хуита. Нужно быстро преобразовать во что-то


Json какой-нибудь или xml.
#276 #618516
>>618511
Это не ответ на вопрос, т.к. ответ на вопрос в данной среде/компиляторе.

>>618512
Хотелось бы обойтись средствами языка. Вот пишу я inline, а компилятор меня не обязан слушать.
#277 #618517
>>618516
Компилятор пишут дядьки гораздо умнее тебя.
#278 #618520
>>618515

>Json


>xml


>быстро

#279 #618522
>>618516
Оптимизации не прописаны в стандарте, это всегда будет данный компилятор.
#280 #618528
>>618522
Спасибо, буду знать.

>>618517

>Компилятор пишут дядьки гораздо умнее тебя.


Нет. Я настаиваю.
#281 #618529
>>618528

>Нет. Я настаиваю.


Значит используй фичи компилятора.
#282 #618534
>>618505
Вот, смотри, это зависит чисто от оптимизации компилятора.

А поскольку компиляторы соответствуют стандартам(msvc, например, полностью поддерживает C++11 и наполовину - C++14), то и в любом другом компиляторе, поддерживающем те же стандарты, должен быть тот же результат.
#284 #618547
>>618535
Круто. А можешь на русский язык пересказать?

Inb4: O2 сделало подстановку, но всё же, вдруг какие-то тонкости/дополнительная информация.
#285 #618550
>>618534

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


про undefined/unspecified/implementation-defined behavior слышал когда-нибудь?
#286 #618552
>>618426
Это ты уже всех доебал
std::unordered_map, долбоеб, unordered_map.
Моча, забаньте этого пидора, он уже сам с собой.
#287 #618553
>>618426

>Search, insertion, and removal of elements have average constant-time complexity.


>логарифмический

#288 #618554
>>618550
Это было к утверждению >>618516 о том, что высказывание было верно только для данного компилятора. Если бы это было в стандарте, то ответ был бы верен для любого компилятора. А так вопрос не совсем имеет смысла.

>>618547
/O2, как можешь заметить, не только сделало подстановку, но и убрало лишние операции сложения. Оптимизация - вообще довольно обширная тема.
#289 #618555
>>618517
Часто приходится руками рулить в критичных местах, где компилятор стесняется инлайнить. Реально инлайн почти всегда повышает производительность, но увеличивается код и время компиляции. Компилятор не знает, какие куски кода критичны по производительности, поэтому не может сделать правильный выбор.
#290 #618557
>>618555

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


Говорят, что для этого pgo придумали.
#291 #618561
>>618552
Слишком долгое получение элемента из контейнера, не подойдёт.

>>618553
Как ты поиск-то логарифмический по ключу сделаешь? Для HashMap это верно, но там оверхед есть и коллизии, коллизии - это нехорошо.
#292 #618565
>>618561
С ХУЯЛИ ТЕБЯ ЕБЕТ ВРЕМЯ ПОЛУЧЕНИЯ ВО ВРЕМЯ ИНИЦИАЛИЗАЦИИ ТУПОЕ ТЫ ГОВНО.
#293 #618572
>>618561
У хешмапы не логарифмический а константный поиск (в большинстве случаев). У бинарного дерева (с балансировкой) гарантированый логарифмический поиск по ключу. Так как в после изначальной инициализации добавления новых элементов не будет, то можно просто отсортировать в массиве по ключу и искать бинарным поиском - поиск все также за логарифм, но экономия памяти, у бинарного дерева больше накладные расходы памяти на элемент.
#294 #618574
>>618565
ПОТОМУ ЧТО БЛЯДЬ, А ПОСЛЕ ИНИЦИАЛИЗАЦИИ ЧТО МНЕ ДЕЛАТЬ? НУ ЛЕЖАТ У МЕНЯ 50000 ТЕКСТУР В ПАМЯТИ, КАК МНЕ ВЫБРАТЬ ИЗ НИХ КОНКРЕТНУЮ ДЛЯ ОТРИСОВКИ ИМЕННО ДАННОГО ОБЪЕКТА, ДА ПОБЫСТРЕЕ?
#295 #618576
>>618557
Много возни с неопределенным результатом, легче руками указать форсированный инлайн.
#296 #618582
>>618572
Так вот я и думаю сделать так. Только в качестве ключа использовать целый ID, что даст возможность делать что-то вроде

void GetTexture(UINT id)
{
return mTextures[id];
}

Только вот и ставлю я вопрос, а нельзя ли сделать ещё проще.
#297 #618583
>>618574
Пиздец, при чем тут контейнер? Ты хочешь делать object->texture_id ты предлагаешь делать container.get(object->texture_id? Тупое ты говно.
#298 #618585
Проще тебе застрелиться, тупой уебан. Про указатели иди читать.
40 Кб, 640x640
#299 #618588
>>618582

> void


> return

#300 #618592
>>618583
Да, да, я предлагаю делать так. Вместо object->mTex я предлагаю сделать container.get(object->mTextureID). Потому что смысл в этом есть.

>>618585
Делаю указателями, но выглядит некрасиво.
#301 #618597
>>618588
Ну блядь, уже мозги потекли. Ты понял меня.
#302 #618599
>>618592
Никакого смысла в этом нет. Все, иди нахуй.
#303 #618606
>>618599
Никакого смысла в этом нет, пока у тебя рендер один. Как только у тебя становятся два разных(d3d11 и d3d12, например), то возникают проблемы. Контейнер под текстуры у меня один, типов текстур много, а идея враппера мне не нравится. Введение ID делает всё проще.
#305 #618624
>>618317
__LINE__
https://msdn.microsoft.com/en-us/library/b0084kay.aspx
у гвцц и шланга практически тоже самое, гугле
#306 #618626
>>618606
Если у тебя контейнер один, то и указатель тебе нужен тоже только один - того же типа, что и mapped_type этого контейнера.
Т.е. если у тебя есть std::map<string, some_type> container; то
struct Object {
some_type texture_id;
Object(const char
texture_string) : texture_id(&container[texture_string]) {
}
}

И по-другому быть не может. Если у тебя несколько рендереров, то ничего здесь не изменится.
#307 #618627
>>618608
Ну блядь, я так и собираюсь. Но не знаю, есть ли вариант поэффективнее.
67 Кб, 700x525
#308 #618629
>>618627

> Но не знаю, есть ли вариант поэффективнее.


Я не понял ты там убийцу какого-нибудь крузиса пишешь?
Нет?
#309 #618633
>>618627
Храни в векторе, id будет порядковым номером элемента. Быстрее наверное уж не будет.
#310 #618637
>>618629
Нет, но это же не значит, что я не должен думать об эффективности.

>>618626
Изменится. Какого типа должен быть some_type? Для разных рендеров он разный.

>>618633
Ну вот так я и собираюсь сделать. Не будет? Спасибо.
#311 #618639
>>618637
Контейнер под текстуры у меня один - твои слова, тупое ты говно?
#312 #618642
>>618633
Еще один даун не в курсе, зачем нужны указатели.
#313 #618647
>>618637

>Нет, но это же не значит, что я не должен думать об эффективности.


Ты ещё ничего не сделал, а только сидишь и рассуждаешь как правильно было бы сделать.
Так и будешь сидеть ничего не сделав.
#314 #618683
>>618647
Так я сделал. Но я думаю, стоит ли это переделать

>>618639
Могу сделать несколько и сделать методы GetD3D11Tex() и GetD3D12Tex(), которые возвращают текстуры из разных контейнеров.
37 Кб, 951x278
#315 #618721
Шта?
32 Кб, 991x135
#316 #618722
Чому я не могу получить указатель?
#317 #618730
>>618683
Нет, не можешь. Ты только что кукарекал о том, что "Никакого смысла в этом нет, пока у тебя рендер один. Как только у тебя становятся два разных(d3d11 и d3d12, например), то возникают проблемы.".
Ты очень тупой, не можешь продумать мысль на 2 шага вперед, и в итоге тебя тыкаешь в собственное говно, ты придумываешь кукарек, как бы свое говно обосновать, пока не выйдешь на второй круг своих сверхманевров.
#318 #618732
>>618722
Дебил ебаный.
#319 #618734
>>618732
Помоги вылечиться, объясни что не так.
#320 #618741
>>618730
Но блядь, у меня уже _три_ разных рендера. Проблемы небольшие _уже_ есть. Я их_устранил_, но не изящно. Спрашиваю о более изящном методе - мне начинают городить какую-то хуйню, которая у меня уже давно решена и даже не рассматривается в вопросе.
#321 #618745
>>618741
Нихуя у тебя нет. У кого есть, показывает код. Ты вместо этого уже полгода бегаешь со своим ДВИЖКОМ, на котором не будет ни одной игры.
#322 #618750
>>618745
Окей, код чего тебе показать? Код объекта сцены, который не выглядит изящно и нужно это решить? Какой из классов - код объекта d3d11-сцены или какой-нибудь ещё? Или код менеджера текстур, который не выглядит изящно и нужно это решить? Или код отрисовки? Или код инициализации? Кода слишком много, чтобы уместить его в один пост, да и не хочу показывать слишком много.

И да, какие нахуй полгода? Писал месяц назад в первый раз, этот раз второй.
#323 #618772
>>618734
Лол, хз, я для поддержания разговора.
http://ideone.com/fork/461bt5
#324 #618774
>>618722
Вектор - сам по себе указатель.
#325 #618784
>>618774
Указатель на что?
#326 #618790
>>618774
А теперь посмотри на скрин - каков тип у переменной V?
#327 #618794
>>618784
На объект!
#328 #618796
>>618790
Ты взял указатель на указатель и попытался ему присвоить адрес вектора
#329 #618799
>>618794
Ну не на твою мамку же. На какой объект?
#330 #618809
Сколько лучше тратить времени на непосредственно программирование? А то ведь можно десятки лет говнокодить, потом прочитать пару книжек и сразу апнуться на некст левел.
#331 #618813
>>618809
У тебя цель, блядь, написать что-нибудь или стать топ левел кодером?
#332 #618833
>>618813
В говнокоде потом сложно разобраться.
Сейчас работаю на скриптоязыках. Фреймворки, абстракции, код писать - одно удовольствие.
И вот открыл я официальный репозиторий биткоина. Файлы в тысячи+ строк, все понамешено. На первый взгляд - write-only код. Казалось бы - область явно сложнее веба, но почему эти "мастера" не освоили элементарные паттерны?
#333 #618836
>>618809

>Сколько лучше тратить времени на непосредственно программирование?


Чем меньше, тем лучше. Хорошая программа - это уже написанная программа. Если тебе нужно программировать, ты уже делаешь что-то не так.

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


Нельзя.
#334 #618859
>>618833
Потому что с них никто этого не требует, а паттерны ради паттернов не нужны?

>"мастера"


Правильно, так их! Не знаешь или не используешь тырпрайз стандартов кодинга - не программист. Поясни им по хардкору, чтобы в следующий раз боялись запускать иде, не вызубрив паттерны абстрактных фабрик интерфейсов!
кушай-кушай, наслаждайся!
#335 #618860
я являюсь противником применения
обьектно ориентированного подхода в программировании
конечно иногда имеет смысл создать какойнибудь класс
но это очень редко
что мы хотим добиться создавая класс?
нужно осознать что универсальное не может быть шаблонным
и наоборот шаблонное не может быть универсальным
как только вы осознаете этот факт то вы сразу
выбросите все свои книги про обьектное программирование
создатели ООП так же это понимали
сначала никт ои не увидел тех капканов которые
раставлены под слоем конфетных оберток и красивых лозунгов
и тогда они были вынужены придумать "шаблончики "
но эти самые шаблончики все равно базируются на
ограниченности классов и это путь в никуда
только процедурный подход универсален
#336 #618866
>>618860
За что ты так с русским языком?
#337 #618871
>>618860
Это реп?
#338 #618873
>>618871
Я тоже подумал, что это новый трек Оксимирона.
#339 #618874
Сколько времени обычно занимает втянуться в большой проект на новой работе?
#340 #618879
>>618873
Да не, точно не Окси, мне в википедию лезть не пришлось.
#341 #618905
>>618879
Чутка изменить и пойдет:

Сначала никто не увидел капканов,
Под слоем конфетных оберток раставленных.
Но чего же хотим мы добиться созданием
Классов шаблонных без осознания и понимания
Принципов мира объектных абстракций и карикатур
Куда следует стадо баранов
Принять не способных подход процедур
76 Кб, 443x723
#342 #618943
>>617342

>>а linux'вская версия gcc может exe'шник выдать


Следующие действия происходят на Linux системе

>>g++ file.c -o file.exe


gcc компилирует файл file.c в исполняемый файл с именем file.exe

Поскольку эта команда была выполнена на Linux, исполняемый файл имеет формат ELF, а не PE

>>./file.exe


Запускает исполняемый ELF файл на линукс системе.
Линуксу все равно какое расширение у файла, очевидно что все работает.
Файл file.exe не является исполяемым файлом Windows.

На самом деле на линуксе можно компилировать исполняемые файлы для Windows, если интересно гугли про кросс-компиляцию.
#343 #618944
Ребята, подскажите, что за класс и как вообще им пользоваться.
Порой натыкаюсь в коде на строки, типа:
Error("Wrong number");

Что это такое?
#344 #618948
ВАЖНЫЙ ВОПРОС
Кто что может сказать про Intel SSE? Кто-то использовал? Стоит ли использовать?
#345 #618950
>>618948

>Кто что может сказать про Intel SSE?


Пускай компилятор там с нем ебется.
#346 #618951
>>618426
Если у тебя так много текстур, что логарифмический поиск тебя не устраивает может быть есть смысл уменьшить число текстур. Использовать текстурные карты или процедурные текстуры?

Еще один вариант, запили свой контейнер, который с O(1) доступом по ключу как Dictionary в .NET.

Твоя проблема звучит так, как будто у тебя проблема на самом деле с архетектурой.
#347 #618956
>>618874

It's up to you.
#348 #618959
>>618951
Да он просто покукарекать любит.
Даже если у него там тысяча текстур, разница по скорости будет - жалкие доли секунды. Даже если там написать вообще дикий костыль со сложностью O(n^5).
#349 #618976
Посоны, а вы в попенсорц контрибутите вообще или нет?
#350 #618986
>>618959

>жалкие доли секунды


>жалкие


>каждая микросекунда дорога, ибо нет 60 FPS - можно удалять движок нахуй



>>618951
Текстурные карты - неплохо, но от всех проблем не избавляет и порождает парочку новых. Процедурные не подойдут.

И да, я уже вполне разобрался с вопросом.
sage #351 #619017
>>618252
>>618245
избавься от своего присутствия "сдесь" твоей ущербной задницы, "нравиться" ему
#352 #619028
>>618986

Как решил свою проблему?
#353 #619053
>>618948
Если интересно, поковыряй. Тогда будешь понимать, где его использовать. Матрицы поумножай, фракталы порисуй
#354 #619211
>>618986

> нет 60 FPS - можно удалять движок нахуй


Давай ты не будешь тут рассказывать про то, как можно написать хоть что-то сложнее хеллоуворлда одному. Даже всякие оупенсоурс проекты и движки всяких Кирилов с геймдев.ру и то по-лучше твоего будут, не говоря уже о всяких там край-энжинах.
#355 #619351
>>618944
самописный?
#356 #619354
>>619351
Не знаю, поищу.
Я думал это какое-то стандартное средство.
Хотя не исключаю, что это просто функция, которая пишет что-то в лог.
48 Кб, 1037x455
#357 #619435
#358 #619474
>>615941
Где-то в менюшке есть rebase program, одна кнопка и готово
#359 #619553
Как наследуются операторы? Как на них влияет доступ при наследовании (private/public)?
Если операторов много, но они простые(типа сложение/вычитание трех координат точек), стоит вообще делать наследование или лучше просто создать новый класс?
#360 #619575
>>619553
Все в точности как у обычных функций.
#361 #619577
>>619553
Оператор есть иной синтаксис функции.
#362 #619609
Аноны треба на москальском

Бьерн Страуструп - Программирование. Принципы и практика использования C++ (2015)
#363 #619674
>>619670
Мне книга нужна, а не загадки твои
#364 #619680
int a,b;
cin>>a,b;

убучие кресты компилируют эту хуеты и прога не работает. блять что он от это запятой ожидает? почему не вывести сообщение об ошибке нет надо заставть пол часа искать эту ебучию ошибку напхуй. бесит сука
#365 #619686
>>619674
Так может тогда займись ее поисками, ПЕТУХ?
>>619680
Не ждет оно там запятой
std::cin >> a >> b;
Радуйся, дебил.
#366 #619690
>>619680
Поглядите на ньюфага, не знает про comma operator!
#367 #619692
>>619686

>std::cin >> a >> b;


>Радуйся, дебил.


знаю но по привычке пишу так у он это компилирует

>>619690
чего?
#368 #619758
Сап, посоны, помогите с выбором. Что лучше учить: Rust или C++? Очень хочу выучить C++, но не так много времени есть - работаю каждый день по 9-10 часов, поэтому два языка + экосистемы выучить не смогу, надо что-то одно выбирать, да и учить буду где-то года 1.5. Говорят, что раст заменит C++, я в этом мало верю, но хотелось бы знать ваше мнение.
#369 #619761
#370 #619763
>>619758

>9-10 часов


Вряд ли у тебя выйдет серьезно выучить С++. Тем более, если не программист.
#371 #619767
>>619758
почему только эти?
#372 #619787
>>619758
Что мешает иногда смотреть в раст.
sage #373 #619904
>>619758
Лол
На самом деле отсос идёт из неожиданного места

Эти языки заменит C#
#375 #619968
>>619914
C# сейчас развивается быстрее других языков
#376 #619983
>>619968
Сишарпу хватает того что он заменил дэлфи. На большее не способен.
#377 #619994
>>619983
Ближайшие 3 года ты увидишь что ты был неправ
#378 #619995
>>618244
Про высокий порог вхождения ещё наверно надо написать. Сначала он мешает, а потом помогает.
#379 #620021
>>619994
Хотел бы это увидеть.

мимо_люблю_C#_самый_пиздатый_язык
#380 #620032
Хотеть дэбагер. Да так чтобы с гуям и кучай свистоперделок. Чтобы каждый байт из памяти видел и знал кому принадлежит. Чтобы мог со своими хэлоувордами играться. Дута сюда их по ассемблерному коду гноять.
#381 #620037
>>620032

>гноять


гонять
#382 #620087
>>620032
Программирую на PLC, лол
#383 #620102
>>620032

>Дута


Туда
#384 #620234
Может кому интересно будет http://habrahabr.ru/company/infopulse/blog/274549/
#385 #620269
Пачаны, поясните по хардкору, зачем нужны указатели и где они могут реально пригодиться?
#386 #620273
>>620269
передача в функцию как аргумент. 4 байта вместо всего массива
#387 #620275
>>619609
Если я не ошибаюсь, переиздания с 14 стандартом еще не было. В 2015 делали допечатку, она не отличается от издания 2011 года.
#388 #620276
>>620234
tangro, ты же взрослый дядька, чего ты тут забыл?
990 Кб, 245x200
#389 #620279
>>620234
Так это что, Скотт больше не будет книжки пилить? Вот это действительно хуевая новость.
#390 #620334
>>620279
Тебя даже новый год не разбудил...
#391 #620358
>>620276

>взрослый дядька


Это ещё чего. В ПРОЛОГ треде дед 51ого года рождения себя расхваливает.
#392 #620367
>>620234
ДА ОНИ ОХУЕЛИ!
Я до сих пор стараюсь не юзать всякие фичи из с++11, так как не хочу лишних багов добавлять, а тут уже какие-то вообще неясные фичи появляются.
#393 #620370
>>620358

>51года


Лол, пруфы были какие-то? Чёт не могу представить, чтобы на сосаче сидел кто-то 30+лвл.
#394 #620372
>>620370
Аркоту около 40.
#395 #620373
>>620370
Нет конечно. Просто похоже на комплимент напрашивался. Может анон мимо проходил и из профиль этого деда с хабра скопипастил предложение на харкач.
#396 #620413
Учусь в десятом классе, умею в кресты на уровне олимпиадника, то есть базовые конструкции, стл. С ооп не все хорошо. Что мне упороть, чтобы по поступлении устроиться джуниором?
#397 #620414
>>620413

>по поступлении устроиться джуниором


Не реально почти.
#398 #620415
>>620414
Почему? А если попозже? Просто очень вероятно, что в ближайшие лет пять некому станет обеспечивать семью
#399 #620416
>>620415
Значит пойдешь мешки ворочать.
#400 #620417
>>620415
В епам на собеседование первокурсников даже не пускали. В остальных конторах так же наверно.
#401 #620418
>>620416
Я подозревал.
А в гугле написано, что если ищут жуниора - значит готовы учить
#402 #620419
>>620417

>В епам на собеседование первокурсников даже не пускали


В епам первокурсников даже на собеседование не пускали
так наверно красивее
#403 #620422
>>620413
Первый и второй курс - самое тяжёлое время для студентов. Да и глуповаты они еще. Брать таких на работу - геморрой. После - можно.
Олимпиадников вообще не любят в энтерпрайзе, слишком много гонора при нулевых практических навыках.
Но как доп занятие для состоявшегося девелопера - хорошо.
#404 #620426
>>620422
Я же не пробитый олимпиадник и место свое знаю, просто указал, чтобы было понятно, что кодить умею, а в энтерпрайзе вообще ноль.
#405 #620427
>>620426

>энтерпрайзе


А что это? И да бамп вопросу >>619680
#406 #620433
>>620426
Под энтнрпрайзом я подразумевал сколько-нибудь серьёзные конторы с продуктом и рынком (даже небольшая), а не Рога&Копыта© в которой только директор, админ, девелопер и ОХУЕННАЯ ИДЕЯ КОТОРАЯ ДОЛЖНА ВЗЛЕТЕТЬ
#407 #620436
>>620433
Видишь, я настолько ноль, что даже не догнал, что есть энтерпрайз. Я всегда делил программирование на спортивное и промышленное.
То есть я правильно понял, что до третьего курса мне соваться никуда смысла особого нет, а в случае финансового пиздеца идти грузчиком/кассиром/etc?
#408 #620444
>>620436
Вписывайся на вские университеты от контор. Могут заметить и взять к себе.
Но в текущих условиях потребность в таких джунах очень низкая.
Лучше думай как перекатиться на учёбу в Европу. Там побольше возможностей.
#409 #620446
>>620436
Никто не будет с джуна требовать знаний больше олимпиадных. Может знакомство с фрейморком каким (буст там, или кьют). А если требуют, значит хотят найти мидла на зарплату джуна - смысла в такие идти мало. Найчиться самостоятельно (тоесть не работая) очень тяжело, фактически единственный вариант - изучать опенсорсные проекты, читать чужой код.
#410 #620447
>>620436
Пробуй в опенсурс. За год-полтора сможешь очень сильно подтянуть свои умения. Да и красивый профиль на гитхабе все любят
#411 #620452
>>620444
С заграницей вряд ли получится по ряду причин, но спасибо
>>620446
Отлично на шкуре прочувствовал, что реальный опыт необходим. Пробовал годик назад опенсурс почитать, но потонул в каких-то здоровенных проектах. Не подскажешь, куда конкретнее рыть?
>>620447
Пробовать - в смысле писать самому?
#412 #620456
>>620444
как за границу?
#413 #620458
>>620452
Нет, контрибутить. Исправлять какие-то мелкие ошибки, стиль кода, документацию править. Научишься ориентироваться в коде, читать его, плюс контроль версий, сборка разными способами, ревью кода. Все что необходимо для работы.
#414 #620459
>>620458

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


а если не умею как научится?
#415 #620462
>>620459

>научится


Для начала мягкий знак научись ставить.
#416 #620464
>>620458
Спасибо, а какого плана проекты смотреть? Просто на гитхабе искать? Я, помнится, на хромиум смотрел, кажется, но ничего не понял
#417 #620465
>>620459
Жопой. Старайся, пытайся, пробуй.
Не будь ленивым уебаном, которому подавай подробный howto и кнопку makemeawesome
#418 #620469
>>620464
Ты его собрать хоть смог?
#419 #620472
>>620469
Не помню. Мануал по сборке точно читал и долго-долго что-то качал
#420 #620476
>>620472
Ну вот и попробуй собрать.
Параллельно найди какую-нибудь средне популярную либу или утилитку с десятком открытых issue. Попробуй найти среди открытых что-нибудь попроще, типа стиль кода поправить или мелкий фикс запилить. Часто, авторы забивают на такое, пока есть более насущные проблемы и задачи. Ещё хорошо воспользоваться каким-нибудь статическим анализатором кода (cppcheck) и поправить его замечания.
#421 #620477
>>620476
Спасибо большое
#422 #620480
>>620413

>олимпиадник


>10 класс


Ты о чём вообще? Какие еще олимпиады? Школьные что-ли? Или всякие там codeforces?

>с ООП не очень


Что там мочь-то? Или ты имеешь ввиду, что навыки с++ уровня пишешь говнокод в main функцию?
#423 #620484
>>620480
И школьные, и школьно-командные, и кфчик пишу по возможности

Ну, на олимпиадках, понятное дело, все в main лью и вспомогательные функции, а просто так кодить особо не доводилось. Знаком с основными принципами, с синтаксисом тоже, но сказать, что я умею в ооп не могу
#424 #620497
>>620413

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


на уровне районного олимпиадника или даже выше? дейкстру без гугла напишешь?
#425 #620499
>>620497

>дейкстру без гугла напишешь?


Я не он, но дейкстру любой дурак напишет.
#426 #620501
>>620497
>>620499
а дурак который знает "базовые конструкции, стл"?
#427 #620510
>>620501
А вообще, что значит знать СТЛ? Я вот за последний год кроме вектора, стринг и всяких мелких функций, вроде min, max, swap ничего и не использовал. Так зачем мне что-то еще знать?
Бывало раньше юзал стэк, куча, мэп, вот это всё, но чтобы ими пользоваться, достаточно загуглить просто, посмотреть сложность операций и вперед.
#428 #620511
Джуниорских вакансий по крестам вовсе почти нет.
#429 #620512
>>620510
А треды там, смартпоинтеры, байнды всякие?
#430 #620514
>>620511
Вот этого двачую.
Сам планирую пока работу не искать, а после универа устроиться фулл-тайм на что-то, связанное с графикой. Потому что тут опыт Кирильства хоть как-то будет цениться, в отличие от обычных компаний, которые просто смотрят на опыт работы. И там, надеюсь, не будет конкуренция с чуваками, уровня НУ Я РАБОТАЮ СО ВТОРОГО КУРСА, ПОРАБОТАЛ ТАМ С С#, ПОРАБОТАЛ ТАМ С С++, ПОРАБОТАЛ В РАН'Е, ВОТ ТЕПЕРЬ К ВАМ ПРИШЁЛ.
#431 #620515
>>620512
Ну, пойнтеры еще, да. Треды как-то не использовал пока.
#432 #620516
>>620514
Я считаю, вот это всё маняфантазии про РАБОТАТЬ ПОСЛЕ ПОСТУПЛЕНИЯ В УНИВЕР))
Слишком глубокий язык, очень увесистые технологии, связанные с ним. Блядь, вот что вчерашний школьник может наваять полезного? Опыта нет, знаний нет.
Возможно, это потому, что я в мухосранске, в крупных городах, наверное, возможна стажировка ньюфагов, у нас такая раз в году бывает, но там отбор - пиздец.
Я пока на третьем курсе, например, живу как бич за счет мамки, компенсирую свои унижения контрибутами в попенсорц. В то время как мои одногруппники на сисярпе вполне так нормально работают и совмещают с учебой.
#433 #620518
>>620515
Напишешь навскидку свой смарт поинтер?
#434 #620524
>>620510
Понимать принципы построения контейнеров, итераторов, аллокаторов. Помнить как можно больше алгоритмов и их понимать их сложность в различных случаях.

Первая часть достаточно легко решается написанием своих контейнеров и итераторов, совместимых со стандартными алгоритмами (даже просто своя реализация вектора, деки, сета и мапа). Ну и pool алокатор, куда же без него.

Второе - читать cppreference перед сном и иногда писать код с использованием алгоритмов.
#435 #620530
>>620518
А я учу кресты и не знаю что такое итераторы и тем более алокаторы. Знаю кресты наверно на уровне того школьника. Скоро искать работу?
#436 #620533
>>620530
При чем тут смартпойнтер, только?
#437 #620595
Хотел поругаться, что весь тред засрали, но потом вспомнил, что я ноль в программировании и нормальные темы для обсуждения банально не понимаю. Продолжайте, лол.
#438 #620600
ОП в треде?
#439 #620612
http://hh.ua/vacancy/15580923?query=c%2B%2B
Ну вот давайте разберем по частям написанное...
#440 #620613
>>620612
Складывается впечатление что в Днепропетровск нужен крестовик с 6летним опытом и знанием английского
#441 #620615
>>620612
им нужен цепепе-девелопер-вообще, и они не хотят отсекать все возможности (от джуна до синьора)
на самом деле проще и эффективнее послать резюме туда

алсо готовься, что твоё резюме еще может по разным левым HR походить и найму ваще не туда
#442 #620623
http://hh.ua/vacancy/15581602?query=oral%20english%20c%2B%2B
Вот кстати. Думали, я шучу? Нихуя.
#444 #620629
>>620623

>необходимы знания STL


>приветствуются знания С++


Это как? Типа, раз не умеешь программировать, будешь ходить и рассказывать всем про контейнеры и сложность операций над ними?
#445 #620630
>>620629
По всей видимости.
Я бы вбросил туда CV, наверное, эти ребята уже полгода бампают вакансию, но смущает MFC... И тот факт, что они до сих пор не нашли никого, что-то там явно не так.
#446 #620631
>>620627

> I always avoid "oral", because it can be used in sexual context. Does that make sense?



Они какие-то извращенцы.
#447 #620658
>>620656
кажется получилось
prcpWBRpANUSkC>jabberPUNCTUMoSpru
#448 #620663
>>620658
А если я не плюсовик, можно приходить?
#449 #620664
>>620663
Нет. Мы тебе проверку устроим и выгоним если не пройдёшь. За всё время там 3 сообщения.
#450 #620686
а я за пол часа задачу эйнштейна только что решил предположил что в ответе надо дать только национальности и это разные люди.
#451 #620692
Кстати натыкался на блог какого-то хуя который обзоры на книги делает. По крестам обзоров 10 по несколько книг сделал. По моему в этом треде ссылку давали. Реквестирую его блог.
## Mod ## #452 #620700
Господа, ну неужели обязательно доводить до того, что я ночью вынужден чистить сотню анрилейтед сообщений? Что вы несете вообще? Про какие-то джававакансии, про хохляцкие города. Есть специальный тред про работу и всякое такое: https://2ch.hk/pr/res/618884.html (М) Обсуждение крестовакансий легитимно и здесь, их никто не тронет. Но все равно не надо увлекаться этим и топить тред, постя большое количество хуйни.
#453 #620734
>>620700
Ты опоздал на семнадцать тредом, мод
#454 #620736
>>620734

>тредов

#455 #620740
>>620700
Мод, ты нахуя нормальные посты снёс, сука? Нормально же расписал за работу и мотивацию. Нет, хотим перекидываться говном и тереть за днище работу в днище хохляндии.
ДА НЕ БОМБИТ У МЕНЯ!!!111адын
#456 #620741
>>620734
A wizard arrives precisely when he means to.
#457 #620743
>>620740
Не волнуйся, все осталось на архиваче http://arhivach.org/thread/135285/ , если кто-то хочет читнуть. Годнота годнотой, но у нас тут немного другая тематика, негоже засорять.
#458 #620748
WinAPI. Открываю существующий файл

file = CreateFile(
path, \t\t\t\t\t\t\t\t\t GENERIC_READ | GENERIC_WRITE,\t\t\t\t\t\t\t\t\tFILE_SHARE_WRITE | FILE_SHARE_READ|FILE_SHARE_DELETE,
NULL,
OPEN_EXISTING,\t\t\t\t\t\t\t\tFILE_ATTRIBUTE_NORMAL,
NULL
);

Хочу, чтобы во время работы моей программы, он был доступен пользователям. Поставил флаги FILE_SHARE_WRITE | FILE_SHARE_READ|FILE_SHARE_DELETE. Но файл не доступен ни для чего. Как это решить ?
#459 #620783
>>620748
Флаги совместного доступа должны совпадать. Убери share write, и большинство программ согласятся совместно открывать файл.
#460 #620841
>>620692
Сам нашёл не архиваче. Там мало крестов.
http://eax.me/books-issue-1/
#461 #620845
>>620841
- Я не чувствую своих крестов!
- А у тебя их и нету.
#462 #620848
>>620841
Вот ещё книга для шапки в раздел отдельные аспекты. Сам не читал только планирую
file.allitebooks.com/20150510/Professional C++, 3rd Edition.pdf
#463 #620887
>>620748
HANDLE m_hFile = CreateFile(L"data", GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, NULL);
У меня вот так вот было, все работало. Но вообще, файл самому нужно создавать, насколько я помню!
#464 #620939
>>618513
Ну так это же просто бинарные данные, которые можно распаковать в struct'ы, так ведь? Всегда считал что с ними работают через тупой бойлерплейт switch
#465 #620962
>>620939
Ну весь вопрос в количестве этих свичей и говнястости получившегося кода.
Наверное налеплю гору структур, буду отсылать их через тонну функций и pimpl'ов в недра Application, обновлять там какой-то стейт и рассылать только уведомления о том что что-то там изменилось в остальные части программы.
#466 #620981
Наркоман вкатился и спрашивает - в каком c++ builder появилась поддержка юникода?
#468 #621279
Но вот. Мод запретил разговаривать и у нас 15 постов за 20 часов. Давайте сами придумаем проблему которая всех заинтересует и начнём её решать. Только на этот раз пусть про кресты будет.
#469 #621281
>>621279
я клиент для сосача пишу например на плюсах
#470 #621290
Доброй ночи, пачаны. Не знаю где лучше спросить, но т.к. тут обитаю чаще спрошу тут. В общем такая задача, нужно написать автокомплит-плагин тут не важно для какого редактора или IDE для некого корпоративного недоязыка. Что можно погуглить?
#471 #621293
>>621281
кроссплатформенный?
#472 #621294
>>621290

>некого корпоративного недоязыка


парсер есть или надо писать?
#473 #621295
>>621293

>кроссплатформенный?


Qt
Symbian, Maemo, возможно Desktop
#474 #621297
>>621295

>Symbian, Maemo


Тогда молодец. А можно ещё на мой сименс его поставить? Только у меня пол метра свободных осталось. Влезешь?
#475 #621298
>>621294
Надо писать
#476 #621299
>>621290
А насколько умным оно должно быть? Можно собрать все токены длиннее X, затолкать в сортированное дерево и по нему уже смотреть варианты.
#477 #621301
>>621298
Я думаю нужно гуглить разработку плагинов для %иденейм%. Вим наверно самый простой, но и geany вроде простой. Просто посоветовал не разбираюсь в этом кун
#478 #621303
>>621299
Умным должно быть на столько, чтобы после имени экземпляра класса дополнялось методами и полями, в т.ч. если поля тоже экземпляры классов
#479 #621304
>>621298
читни книжку с дракончиком (есть на торрентах) Компиляторы: принципы, технологии и инструменты
#480 #621307
>>621304
Спасибо, посмотрю
72 Кб, 736x736
#481 #621312
Проверка на быдло:

1 Что быстрее - inline или farcall
2 Как выполнить функцию в динамической библиотеке не загружая ее
3 Сколько байт в int
4 Что больше char или int
5 Что такое endiannes
6 Чем процесс отличается от потока
#482 #621314
>>621312
3-6 знаю, 1-2 не знаю даже приблизительно. Каковы мои шансы?
#483 #621315
>>621312

>farcall


кек

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


што
#484 #621316
>>621312

>inline


В ассемблере компилятор по велению левой пятки может макросредства использовать а не вызов функции делать.

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


Не ебу.

>3 Сколько байт в int


Зависит от платформы.

>4 Что больше char или int


Зависит от платформы.

>5 Что такое endiannes


Не ебу.

>6 Чем процесс отличается от потока


Поток это маленьая часть процесса которая работает параллельно с ним.
#485 #621318
>>621315

> Не можешь решить


> Придрался к условию

#486 #621319
Пацаны, я проебался с тестом на быдло.
Во втором вопросе - вместо загрузки - линковка
86 Кб, 736x736
#487 #621321
>>621316
Пример платформы где char больше либо равен int
#488 #621322
>>621319
Автор теста провалил тест
#489 #621323
>>621319
ты еще проебался с тем, что __farcall ни разу не стандарт
#490 #621324
>>621316

>>5 Что такое endiannes


>Не ебу.


Ну ты даешь, это даже я знаю.
#491 #621325
>>621321
Они могут быть равны
71 Кб, 736x736
#492 #621326
>>621325
Пример платформы.
#493 #621328
>>621325
Не могут, char равен 1 байту, int не менее 2.
#494 #621332
>>621324

>endiannes


Загуглил. ГОворит порядок байтов. Это как я понял имеется ввиду что если переменая 4 байта, до их значение записываются с лево на право. Раньше так считать в столюик проще было. Или что-то в этом роде. Читал знал. Название не знал. Честно-честно. Правда-правда.

>>621326
КР580ВМ80А. Теперь проверяй, мудило.
#495 #621334
>>621321
Толстота пошла.
>>621332
Верю. Little-Endian и Big-Endian.
#496 #621339
>>621321

> 1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)


Из стандарта.
117 Кб, 736x736
#497 #621341

>Производство: \tс 1977 по середину 1990-х

#499 #621346
>>621339
там прикол, что int должен позволять значения от -32768 до 32767

но я есть TI C54x в которых char двубайтный :D
131 Кб, 700x467
#500 #621347

>avr-gcc


>deviations


>hack


Низачет.
#501 #621348
>>621344
>>621346
Приводить в пример кривую отсебятину — моветон-с.
#503 #621352
о мы в бамплимите. оп и этой ночью спит?
#504 #621363
Так что там с вопросом про линковку? Платформозависимо пидорасить ручками файл?
#505 #621378
>>621352
Скоро очень скоро.
#506 #621382
кстати совету убрать совет про искать платину на архиваче из шапки
#507 #621494
>>621363
Пусть нормально вопрос сформулирует. Линкуются объектные файлы и статические библиотеки из которых линкер собирает исполняемый файл. Динамические библиотеки не линкуются.
#508 #621641
>>615922 (OP)
Сап, котаны. Зарылся немного в поисках ответа на вопрос - возможно вы знаете - "можно ли разблокировать критическую секцию, заблокированную в треде А , из треда Б?". Ну т.е. есть ли в POSIX или еще где способ вмешиваться в блокированные куски памяти?
#509 #621757
Что мне снег, что мне зной, что мне дождик проливной, когда я ухожу в запой.
Где ОП?
#510 #621772
Можно ли конектить слоты (статические) из другого класа без его инстанса?
#511 #621881
пацаны, я вам задачек принес: http://cppquiz.org/
#512 #621888
>>621881
По русски есть?
#513 #621891
>>621888
там всегда нужно написать что выведет программа либо будет ошибка компиляции либо поведение unspecified либо поведение undefined
#514 #621893
>>621891

>поведение undefined


а это что?
17 Кб, 480x273
#515 #621897
И это вообще что такое? Лафоре и страуструп про него не рассказывали. Что ещё я не знаю и где узнать?
#516 #621900
>>621897
Это ЛЯМБДА.
#517 #621955
>>620418
Ну так и иди в гугол, хули.
#518 #621956
>>620436
Попробуй фриланс, получишь дюже опыта энторпрайза.
43 Кб, 606x374
УПОРОТЫЙ C++ #519 #622024
крестобоги, помогите. мне тут всралось на плюсах пописать, а я м-м-максимум питонобыдло.

вот тут кусок кода: http://lpaste.net/4479853745328357376
я старался как могу, но получилось какое-то говно, ехал const через const, string (&s)[8][2] и все в таком духе.

может кто-нть посмтореть на кусок этого смердящего говнокода и подсказать, где я тут проебался и как это можно более элегантно записать?

задача: на вход номер регистра и его значение, на консолке приттипринтитятся значения битиков. все работает, но выглядит как говно и пахнет как говно.
#520 #622067
>>621956
Можно подумать там нужны крестобляди без тонн опыта.
#521 #622312
>>622024
ипать ты накроман
#522 #622331
>>622067
А кто говорил про кресты? Джаву бери, веб, любой скриптоязык, лабы делай, похуй. Курс настолько на твоей стороне, что можешь демпинговать. Или ты синьер-помидор дохуя? На все готовое хочешь?
#523 #622350
Начааальник! Тонем!
7 Кб, 231x251
#524 #622352
#525 #622353
>>622350
Надо наверно снова все дохлые треды бампнуть чтобы ОП-хуй зашевелился. А потом создать крестотред типа не нашёл создал
#526 #622522
В крестах есть какой-нибудь метод для разворачивания строк или векторов? Типа как reverse для си-строк.
#527 #622526
Что лучше freopen или fstream?
#528 #622597
Для чего нужно явное создание экземпляров?
#530 #622615
>>622613
И это всё? Просто пришёл спустя столько времени после бамплимита и перекатил тред со старой шапкой?
#531 #622616
>>622615
Праздники же, быстрее было никак невозможно. Не сердись, няша.
#532 #623377
Visual studio бесплатен?
sage #533 #623550
>>623377
community edition
#534 #624815
Здарова, почаны. Помогите разобраться:

Пытаюсь релизнуть неконсольную программу и получаю ошибку

LNK2001: unresolved external symbol _wWinMain@16

Если делаю этот же код как консольный проект тоже появляется LNK2001 но с __imp__ShowWindow@8 на конце

С консольным проектом проблемма решилась подключением в linker>input>additionalDependencies стопки разных .lib, по советам из интернетов

По какому принципу их нужно добавлять?
#535 #624830
#536 #624911
codeblock+sfml. При попытке компиляции проекта пишет default is untitled. Отдельный файл (он же пока единственный) компилирует, но не запускает, ссылаясь на отсутствие на компе sfml-graphics-2.dll, хотя она есть. Что делать?
#537 #625804
Помогите с лабой на C++.
Задание: Дан массив типа BYTE размером не менее 256 Кбайт. Переписать его во внешнюю память поблочно. Операцию повторить 10 раз. Характеристика: размер блока (диапазон изменения 512-1024 байта).

Моя попытка решить: http://pastebin.com/EfGYjgfa

Проблема в том, что буфер нужно инициализировать не из файла, а из массива в оперативной памяти.(см. 70 строчку в пасте)
#538 #627864
Сап, с чего начать изучение openGL?
#539 #632612
>>622024
Ничо так.

Что бы улучшить читаемость, объяви typdef на array<string, 8> и bitset<8>. Кстати, там должно быть не 8, а CHAR_BIT (#include <climits> для этого).

Где можно, объявляй переменные как auto или auto&. const не забывай, это святое.

Две функции ExplainRegFunc объяви отдельно (и помести в анонимный namespace), не надо их лямбдами вставлять, хуй проссышь потом.

Придерживайся единого стиля имен - либо describeData, либо foreach_bit.

Я бы еще поток вывода передавал в функции как параметр ostream&. Мало ли, захочется еще куда вывести.

И, блядь, комментарии кто, сука, писать будет? Пушкин?

А так малацца. Толк будет
160 Кб, 806x1024
#540 #633503
Анон, хелп!
Есть класс, интерфейс которого описан в myclass.h. В нем есть конструктор myclass(int xSz=100, int ySz=80);
В реализации(в myclass.cpp) я вижу такую строчку:
...
myclass::myclass(int xSz, int ySz) : X_SIZE(xSz), Y_SIZE(ySz)
{
...
}
...
Что это за дерьмо ":" после аргументов конструктора?
#541 #633965
Здравствуйте, господа! Что скажете насчёт C++ Builder 10 от embarcadero? Пока учусь (в университете) писать в стареньком С++ Builder 6, нравится, но начинаю думать о будущем.
#542 #637015
>>633503
Инициализация полей класса
#543 #639543
>>633503
Это называется "списки инициализации". В них можно через запятую инциализировать поля, вызывать функции и все такое. А так же, только через них можно инициализировать константные переменные и поля класса - ссылки.
http://en.cppreference.com/w/cpp/language/initializer_list
#544 #639544
>>633965
Все таки посоветую Visual Studio или Lion. Имхо, они мощнее. Аргументов не будет
#545 #639595
>>615922 (OP)
Сап, анон. Вот я, начинающий программистраспиздяй, научился писать всякую простенькую херню на с++, типа операций со строками, ввод/вывод из файла, массивы там, циклы. Куда двигаться дальше? Не хочется просто читать учебники, хотелось бы именно иметь какие-то задачи, чтоб по ходу разбираться в новых темах.
#546 #641241
Аноны, стал читать книгу с шапки - эффективный и современный цэ крест крест. Так вот и сразу же затупил, автор повествует о выводе типов - это вообще что? Я сколько книг раньше не читал (тот же страуструп, книги по кьюту) - такой диковинки не встречал. Подскажите, милейшие.
Тред утонул или удален.
Это копия, сохраненная 3 февраля 2016 года.

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

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