Это копия, сохраненная 25 августа 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Поседевшие пальцы
Собирают пердак.
Старший брат: >>801836 (OP)
Предыдущий: >>798022 (OP)
TL;DR
Q: Я хочу тотчас вкатиться, а разбираться буду в процессе. Что я должен делать?
Q: Не уверен, что хочу изучать C++. Как мне пощупать его без лишней ебли?
A: Читаешь эту книжку, смотришь упражнения из нее и суешь в онлайн-компилятор. Сообщения компилятора об ошибках копипастишь в гугл, ответы на возникающие у тебя вопросы ищешь в предыдущих тредах, спрашиваешь в этом треде, если не нашел. Если тебя послали на хуй или не ответили, то ты спросил платину, читай предыдущие треды внимательнее.
Памятка ньюфагу
- Вопросы по синтаксису идут на хуй
- Лабы идут на хуй
- "Как мне сделать Х на чистых крестах без библиотек" идут на хуй
- Все идут на хуй
- Хейтер сосет члены на пару со своей мамашей
Небольшие фрагменты кода размещай в треде при помощи тега [code] и жабаскрипт-костыля. Для больших фрагментов используй внешние сервисы.
FAQ
Мотивация
Q: Почему стоит использовать именно C++?
A: Ни один язык не идеален, но по совокупности киллер-фич C++ оставляет все остальные языки позади. Вот основные три:
- Скорость
C++ действительно быстрый язык — вместе с C, его прародителем, они с большим отрывом уделывают по скорости все остальные языки высокого уровня. Код на C++, как правило, медленнее аналогичного кода на C приблизительно на 0-20% а в ряде случаев C++ оказывается даже быстрее, причем замедление появляется только при использовании высокоуровневых конструкций (в C++ ты никогда не платишь за то, чего не используешь). Таким образом, если тебе требуется высокопроизводительный код, C++ станет отличным выбором. - Мощь
C++, являясь одним из наиболее выразительных и мощных языков, позволяет использовать большинство существующих парадигм. Его философия построена на минимальном ограничении программиста в выборе методов и инструментовпростреливания ногирешения задачи. Как следствие, используя C++, ты можешь не думать о том, как обойти искусственные ограничения языка, а беспрепятственно выбрать наиболее подходящие к ситуации средства. - Популярность
C++ по-настоящему популярен. На нем написаны десятки тысяч приложений и миллиарды строк кода, о нем написаны сотни книг, он до мельчайших подробностей документирован и стандартизован. Используя C++, ты никогда не останешься без работы или поддержки комьюнити.
Литература
Q: Окей, я решил вкатиться. Какие же книги мне читать?
A: Специально для тебя аноны /pr собрали уникальную коллекцию отборной литературы по крестам. Только лучшие книги, последние издания, без хуев! Выбирай категорию и обмазывайся:
-
Для нюфань
Учебники для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется:
Автор(ы) Название Год Ссылка Бьерн Страуструп Программирование. Принципы и практика использования C++ 2016 https://yadi.sk/i/Yd6KKpLBqJSUr Стэнли Липпман, Жози Лажойе и Барбара Му Язык программирования C++ 2014 https://goo.gl/kVaela Стивен Прата Язык программирования C++ 2012 https://goo.gl/z7kA8u
Другие обучающие материалы
Q: Я не умею читать.
A: Можешь посмотреть какой-нибудь онлайн-курс: раз, два, три
Q: Не люблю, когда льют воду. Хочу коротких материалов по существу.
A: Вот тебе блоги, факи, референсы и всякое такое:
- Годный блог, в котором все просто и понятно тян не нужны кококок борщ
- Блог с хорошо расписанными фичами новых стандартов
- Краткие описания библиотечных функций и контейнеров - на русском или более подробно на ангельском
- Блог Герба Саттера (на ангельском)
- Блог Скотта Мейерса (на ангельском)
- Блог еще одной тянки, много о Qt и оптимизации (на ангельском)
- Куча других блогов (на ангельском)
- Большой FAQ по C++ (на ангельском)
- Видео с CppCon (на ангельском)
Софт и библиотеки
Q: Я готов начать погроммировать! Куда мне писать код?
A: На этапе написания хэллоуворлдов можно не ебаться с установкой софта, а использовать онлайн-компиляторы: раз, два, три, четыре. Для работы над более серьезными вещами удобнее всего установить какую-нибудь IDE. Ниже приведены несколько хороших вариантов:
Платформа | Название | Описание | Ссылка |
---|---|---|---|
Windows | Microsoft™ Visual Studio® | Общепризнанно самая продвинутая и удобная IDE, не имеющая равных по части автодополнения и возможностей отладчика. По ссылкам справа можно скачать бесплатную редакцию последнего выпуска (2015 Community Edition). Кроме того, существуют редакции с расширенными возможностями (Professional и Enterprise). Они стоят сотни денег, но если ты студент вуза, подписанного на Dreamspark Premium, то ты можешь получить их безвоздмездно (то есть даром). Многим новичкам интерфейс студии кажется чересчур сложным, так что обязательно прочти этот гайд, если у тебя возникают проблемы с компиляцией хэллоуворда | https://goo.gl/qgAAc6 (русская версия) или https://goo.gl/WIPW9L (ангельская версия) |
Все | CodeLite | Простая, легковесная, кроссплатформенная, швабодная IDE. Менее навороченная, чем студия, но среди бесплатных вне конкуренции. Вероятно, это наилучший вариант для новичка с *nix. Под Windows же требует чуть больше ебли с установкой компилятора MinGW/LLVM | http://codelite.org/, "sudo aptitude install codelite codelite-plugins" для установки под *nix |
Все | CLion | IDE, призванная похоронить Visual Studio пока не особо получается. Она стоит денег, но можно украсть почти не протухшую версию на торрентах или получить бесплатную лицензию на год по скану студбилета, если ты студент. Удобные свистелки и перделки присутствуют. Тормоза и баги присутствуют. Кросплатформенность присутствует | https://www.jetbrains.com/clion |
Q: Я прочитал все вышеперечисленное, теперь я гуру! Что дальше?
A: Дальше переходишь по ссылке, пробуешь отвечать на вопросы и понимаешь, что ты пока в самом начале пути. Кроличья нора крестов практически бездонна, поэтому продолжать постигать тонкости и детали можно очень и очень долго. В то же время, на этом этапе у тебя должно быть достаточно знаний, чтобы уверенно писать неплохой код. Поэтому читай исходники открытого софта и библиотек, отправляй пулл-реквесты в них, читай книжки по предметным областям и общим методикам разработки, а дальше уже сможешь запилить свой проект или вкатиться в существующий.
Да, подходит только для вектора.
Алсо, второй нах и фтройке.
Какая мотивация-то? Если хочешь ускорить, то хуярь сразу шаблонные пулы без фрагментации, или там ленивые прокси, скажем, а здесь я не вполне понимаю, в чем профит.
>Какая мотивация-то?
напрямую юзать mmap
> пулы без фрагментации
Тащемта тут без фрагментации (в каком-то смысле)
allocate должен кидать bad_alloc при неудаче, а у тебя он не проверит код ошибки и будет пиздец, не? Алсо, там есть еще несколько подобных требований к аллокаторам, посмотри вот тут, например
http://en.cppreference.com/w/cpp/concept/Allocator
>тут без фрагментации
Не, я не про то. Одно из популярных решений состоит в том, чтобы запрашивать сразу страницами память для каждого отдельного типа, делить ее на равные куски и создавать на ней только объекты этого типа. Получается своеобразный пул, в котором нет фрагментации, из-за ровного размещения. Когда много объектов и мало типов (а не наоборот), то это существенно ускоряет работу.
>allocate должен кидать bad_alloc при неудаче, а у тебя он не проверит код ошибки и будет пиздец, не?
Аллокатор оптимистичный. А так да, по-хорошему надо проверять.
> Алсо, там есть еще несколько подобных требований к аллокаторам, посмотри вот тут, например
Если отмотаешь до конца страницы, там есть minimal example. Я его и реализовывал.
> Не, я не про то. Одно из популярных решений состоит в том, чтобы запрашивать сразу страницами память для каждого отдельного типа, делить ее на равные куски и создавать на ней только объекты этого типа.
Ну кагбэ вектор так и делает, запрашивает contiguous кусок памяти под N объектов и потом конструирует их там.
Где шапку проебали?
Я не в курсе, я просто ньюфаг
пик - норм, с каждым разом все больше проигрываю
стих - можно и поменьше
мимо-стихоебохейтер
Правда, я ещё не знаю, как он себя поведёт при копировании вектора. Что там с аллокаторами делается?
lldb?
ddd
Говно или дерьмо? Хммм... Что же выбрать? Наверное, все же дерьмо... Хотя нет! Дерьмо я выбирал в прошлый раз, так что сегодня пусть будет говно!
Иногда мне снится, что я снова на втором курсе, отлаживаю крестолабу на потрепанном несколькими поколениями студентов компьютере из машзала, с Debian, gcc, gdb и autotools. Я лихорадочно печатаю одну консольную команду за другой, длинноволосый и дурнопахнущий преподаватель в футболке с логотипом GNU осыпает меня проклятиями... Выведя очередную стену неформатированного текста, gdb вылетает в kernel panic, и я просыпаюсь в холодном поту. Потом я подхожу к компьютеру, открываю проект в студии и плачу от счастья.
ПРоблевался с последнего скриншота.
А потом ты начинаешь собирать руками проект на шинде с незавендоренными зависимостями и выкидываешь компуктер нахуй в окошко.
Я знаю, но в крестовом проекте все идентично выглядит, кроме названий.
>собирать руками проект на шинде с незавендоренными зависимостями
Тяжело тебе пришлось, братюнь. Соболезную.
Заранее спасибо.
Спасибо. Добра.
>Потом я подхожу к компьютеру, открываю проект в студии и плачу от счасть
Сейчас бы сюда цитату Криса Касперски об отладке в спермомирке и смешных сперморабах, которые впадают в растерянность без уютных окошек с кнопкотыком.
Хорошо, когда есть консоль (а в студии она есть, не сомневайся). Плохо, когда есть только консоль, смекаешь? Ты можешь возразить, что вот как возьмешь пистон, да как напишешь визуализаторы лучше чем в студии... Только пока ты их пишешь, я буду спокойно работать с удобным инструментарием. Поэтому, кстати, большая часть швабодных утилит смахивает на proof of concept - за пару вечеров хуй напишешь что-то сравнимое по удобству, а на большее мало кого хватает без финансовых вливаний.
Такое возможно сделать в ИДЕ под линукс?
И еще вопрос: какого хуя шапка не обновляется, а с каждым новым тредом копипастится одна и та же инфа (может стих поменяют только)? И это элита /pr? ОП уебок блять.
Эксперт диванный, в ты в курсе, сколько сотен миллионов долларов влито в firefox гуглами и яхами?
Привет парни.
Поставил Eclipse. При наборе "#include <" не отображается список хедеров; при наборе "std::" не отображаются члены неймспейса.
Я слышал, что Eclipse щироко распространен среди профессиональных сиплюсплюсников, а значит эта функциональность явно должна там быть реализованной.
Так как собственно настроить этот автокомплит?
И теперь пердит, что это "хайку"
Не бомби, няша. C++ развивался эволюционно. А эволюция всегда рождает костыли.
Смотрю сейчас talk Александреску про аллокаторы. Оказывается, их запилили только для того, чтобы работать с NEAR- и FAR-указателями на 16-битных интелях. Ради тайпдефа allocator::pointer_type, который был разным у NEAR- и FAR-указателей.
А потом это вошло в стандарт.
Спасибо!
Значит задумайся о карьере грузчики, или хотя бы питониста.
Что именно не понял-то? Наводящие вопросы задавай, никто не будет целую статью в сотый раз тебе писать.
Тащемта, для rvalue можно указать значение, если ты, например, передаешь его в функцию по ссылке, и это хороший тон - менять состояние объекта на другое, валидное до того, как он удалится.
>Одно из популярных решений состоит в том, чтобы запрашивать сразу страницами память для каждого отдельного типа, делить ее на равные куски и создавать на ней только объекты этого типа
Стоковый маллок так и делает для небольших объектов. Только там оверхед на мьютекс.
Но такой вопрос, почему если я жму ctrl + z (насколько я знаю это прервать), то у меня начинает бесконечно выводить пикрил, но только если я 1 раз отвечу нормально.
Какой путь к этим настройкам?
Там же этих настроек дофига. Так же пробовал CodeLite, там точно такая же проблема с автокомплитом.
Мне кажется, что если ты не можешь найти информацию об этом самостоятельно, тебе стоит поюзать что-то коробочное вроде qtcreator'а.
Подключил /usr/include, нихуя не изменилось.
В qt creator хоть есть автокомплит по умолчанию, и тебе не надо тратить хуеву тучу времени на настройку автокомплитa, который по умолчанию должен быть настроен.
О чем думали эти долбаебы, когда писали эти гавно ИДЕ типа CodeLite и Eclipse? Сложно прописать стандартный путь к хедерам в линукс-версии (хотя и это не работает).
>/usr/include
Мде. Ты бы хоть узнал, где лежат хедеры, критик бля. У меня, например, лежат в /usr/include/c++/4.2.1
Eclipse умеет детектить toolchain, кстати. Скорее всего у тебя просто не установлен компилятор и/или стандартная либа.
А даже если бы не умел, для на больших проектах четких посонов это не парит - все равно придется прописывать свой.
Мне твоя MSVC до пизды, когда я пишу под macOS или linux. К тому же необходимость покупать resharper-c++ какбэ напоминает о реальной полезности студии.
мейерса читай
Действительно, надо было подключить другую папку, но это все равно не работает.
А в CodeLite всё и так в настройках прописано, но все равно нихуя не работает.
g++ и весь gcc тулчейн установлены
Попизди мне тут. ctrl+z в винде это EOF (в отличие от ctrl+d в *NIX), а sigint и там, и там это ctrl+c
Проверил. Ты прав.
молодец, сделал открытие. возьми пирожок с полки
Внезапно в релиз версии приложения невероятно медленно отрисовывается интерфейс.
3-5 FPS, при этом в Debug версии никаких проблем.
>Есть у кого опыт создания приложений под винду на QT с использованием QT Quick?
>Внезапно в релиз версии приложения невероятно медленно отрисовывается интерфейс.
>3-5 FPS, при этом в Debug версии никаких проблем.
Профайлер для кого придумали?
>необходимость покупать resharper-c++
Это стало блажью приблизительно с выходом 13 студии. Нет, если ты утенок и не хочешь расставаться с любимой погремушкой, то вперед, но не надо пиздеть о необходимости - мотивации его ставить практически не осталось, 2/3 фич есть из коробки, остальные в легковесных и бесплатных аддинах.
>страуструп
читаю его сейчас
этот пидор уже заебал со своими функциями, которые он сам придумывает
я уже не знаю, это синтаксис плюсов или его функция для книги
пидор
Быстро набросал вот такой код:
http://pastebin.com/vzSXSvQq
Почему первый код работал минут 10, а второй закончил все за 5 секунд? Вектор использовал чисто ради интереса (на самом деле я просто нуб).
Что наоборот? Крестовые функции только в std, сишные (printf, strcmp, malloc etc) - в зависимости от используемого хэдера. В .h нет неймспейсов, а в c есть.
Это может банально от текста зависеть, если там разные символы удаляются и вставляются в разном количестве. Кроме того, хоть insert и erase оба в общем случае вызывают тяжелое копирование всего хвоста вектора, insert дополнительно может вызвать переаллокацию, а erase - никогда. С учетом того, что копирование последовательных символов обычно заоптимизировано до невозможности, у тебя на втором коде, вероятно, много времени уходит на переаллокации. Но вообще это надо смотреть с профайлером, конечно, так сразу мало что можно сказать.
Спасибо. В первом коде условие сработало где-то 200 раз, во втором 4560 раз. Первый работал 10 минут, второй 5 секунд. Я в замешательстве. Возможно, причуды компилятора.
Где магические цифры? Перечисли, пожалуйста. Я, вроде, комментарии оставил.
>не больше 10
Я в учебниках видел и по 50.
Считается хорошим тоном, если код функции помешается на один экран.
Ну или она выполняет одно осмысленно законченное действие.
Так же любые числа желательно заменять на константы, с более понятными именами.
>Считается хорошим тоном, если код функции помешается на один экран.
Более того, еще лучше будет, если ты смотришь на функцию и СРАЗУ ПОНИМАЕШЬ, что там происходит.
Про константы с именами я запомню. Код помещается. Он же маленький, ну.
Да
Проигрываю с тебя, потому что в хорошем реальном коде действительно нет магических констант и методов на 30 экранов.
В хуевом - конечно есть. Но такое говно поддерживать и расширять нереально.
Диван, плиз.
Посоветуй что почитать про кути.
Сам ява примат.
Расскажите о работе на плюсах в России (прежде всего интересует ДС и ДС2). Я студентота IT-направления, имею опыт написания учебных проектов на C/C++/Java/C#. Пора наконец выбрать, в каком направлении развиваться (хотя бы определиться с языком). Склоняюсь к плюсам, но знакомые говорят, что на плюсах с каждым годом работы все меньше, и советуют учить джаву. Что бы вы посоветовали? Слать их нахуй и учить плюсы? Или, может, действительно, вкатываться в плюсы новичку нет смысла, и перспективнее учить что-либо другое?
>Толсто
Она реально растет, лолка. На 2-3 процента в год. А c++ падает на 1-2 процента. И C падает тоже.
Проблема в том, что во-первых, это все сопровождалось ДИЧАЙШЕЙ нагрузкой на цпу, а во-вторых, постоянно происходило мигание этой пикчи с белым экраном.
Как это нужно качественно реализовывать?
Как их отличать? Вот это непонятно.
Если вот у меня есть класс
class Point
{
int x, y
};
и функция, которая создаёт объект Point, могу ли я вернуть этот созданный объект как rvalue?
Point&& make_point(int x, int y) {
return Point(x, y);
}
Так можно? Ведь если я правильно понял, Point(x, y) это ведь rvalue?
Так, хорошо. Тогда вот ещё: видел я примеры, где преимущество rvalue показывалось на примере swap, которая выглядела как
template<class T>
void swap(T& a, T& b)
{
T tmp(std::move(a));
a = std::move(b);
b = std::move(tmp);
}
Но ведь если я передам в такую функцию два уже созданных объекта, то они же будут lvalue, так ведь? И смысл тогда во всем этом? Что у меня так будет три копирования, что эдак. Или нет?
Хотя нет, при создании tmp будет вызван конструктор перемещения, и если в классе есть указатели, то их можно не копировать. Но в двух последних строчках b и tmp всё равно будут lvalue, смысл к ним move применят? Где я не прав?
А, понял. operator= мне перегрузить никто ведь не мешает.
И если у меня есть указатели, я перегружаю его как
operator=(SomeClass &&r),
перемещаю эти указатели и радуюсь жизни.
Я всё правильно понял?
Ты не различаешь тип объекта и его value category. Это две отдельные вещи.
Насколько я знаю, настройка сего происходет на 192.168.0.1. Также есть определенные тулзы, позволяющие делать это не заходя в браузер.
Когда я писал клиент-серверы, при первом запуске происходил запрос от фаервола на разрешение, возможно это и было "открытием" порта? Возможно ли открывать порты скрытно, с правами администратора или с правами сервиса?
легче, но когда работаешь с проектом в несколько тысяч строк ооп заметно упрощает твою жизнь.
окей. тогда другой вопрос, как понять, что нужно писать именно класс и использовать всякие блядские виртуальные деструкторы, явные конструкторы, перегрузку операторов и т.п.? это приходит с опытом? я просто сейчас разбираюсь с Qt и при написании своей проги думаю: Писать тут класс или просто написать функцию. Простите за мою тупость, ну чтож поделать, надеюсь аноны помогут мне выбраться из этой блядской ямы непонимания.
Все так. Можешь еще посмотреть, как std::move устроен.
попиши немного на С в процедурном стиле и тогда ты на своем опыте поймешь предназначение всех этих средств ООП.
ладно, хорошо, спасибо. со временем и опытом думаю придет понимание.
посмотри на вектор из std, например. Это тоже класс и у него есть интерфейс( публичные методы/переменные, которые доступны пользователю) и имплементация(приватные методы и переменные, необходимые для функционирования объекта). Плюсы в таком разделений в том, что:
1. пользователю НЕ НУЖНО коывряться в имплементации, чтобы что-то получить.
2. Можно поменять имплементацию (использовать другой алгоритм, другой контейнер) и при этом интерфейс останется таким же. То есть разработчику не придется менять интерфейс каждый раз.
3. Ошибок намного меньше, так как пользователь не имеет доступа к важным для функционирования членам класса.
4. НАСЛЕДОВАНИЕ! Qt, например, очень завязан на этой концепции.
Я хочу сделать ежедневник. В каждом дне - по несколько записей и так на протяжений 50 лет. Я сделаю отдельный хэдер и в нем определю 3 класса:
1.Date, в котором находится массив из 50 объектов Year.
2.Year, в котором находится массив из 12 объектов Month.
3.Month, в котором находится вектор из N объектов Day и переменная day_count. N расчитывается в конструкторе и day_count приравнивается к нему.
3.Day, в котором находится вектор записей(QString).
В Date я определяю operator[](int y), который возвращает y элемент из массива с Year.
В Year я определяю operator[](int m), который возвращает m элемент из массива с Month.
В Month я определяю operator[](int d), который возвращает d элемент из вектора с Day.
В Day я определяю метод getEntry(int index), который возвращает index элемент из вектора с записями.
В итоге:
В коде я могу написать Date date; date[y][m][d].getEntry(index); и получить соответствующую запись. Только вот в ней нихуя не будет хДДДД, так что надо еще определить setEntry(QString entry), потом написать эксепшионы, потому что operator[] не делает range check, потом сука дописать к твоему конструктору в Month дефолтный, потому что он нужен для array, а потом еще определить operator=, да и == тоже, и деструктор написать, а потом тебе внезапно нужны размеры каждого из массивов и ты имплементишь getCount, а в твоей голове появляется мысль-"а не сделать мне массивы публичными", но ты эту мысль должен откинуть, потому что НЕ ООП, и вообще, тебе надо имплементить at().
хороший пример, спасибо:)
Модные языки приходят и уходят. Кресты остаются. ИМХО.
Нахуя столько классов, если разделение на годы и месяцы важно только при отображении? Для внутреннего представления достаточно класса Day, или вообще отдельных записей, привязанных к unix time, например. Тогда не будет ебли со сменой часовых поясов, чуваками, живущими дольше 50 лет, и подобной хуйней.
Важна предметная область, а не язык. Для С++ - особенно. Со знанием джавы и без опыта гораздо проще устроится. На С++ будут требовать опыт в нужной области.
вообще хочу я в Digital SIgnal Programming, но...почитав основы для вывода звука с помощью какой то XAudio библиотеки и HEX вообще тонн текста...
В общем окончательно стал понимать что IT из меня только эникейщийк.
Че делать как быть?
максимум что умею на данный момент - хелло ворлд с закрывающимся окошком по нажатию на энтер
Вкатывайся в веб.
Мобильная разработка, фронтенд, бэкенд, сисадминство, бизнес приложения. Возможности безграничны! А ты перечислил тяжелые для вката области, которые не получится хуякс хуякс и в продакшен. Выбери что-то попроще и потихоньку обрастая нужными для вката куда ты хочешь навыками. Матан например можно и выучить на базовом уровне.
А чего за фронт энд? А что на счет бетатестинга? хотя не - бетатестинг мы и так за бесплатно делаем, т.к. много игруль каких норм работают с патча 1.6 ....
фронт энд - разработка интерфейса, но для веба? ну та же верстка не? Вот она у меня и была, после того как на HTML И CSS заделал страницу с тремя рамками, гиперссылками и окном, тоже понял что это уровень hello worlda.
Верстка - это верстальщики, а я про создание клиентских приложений, js, angular, вот это все, интерактивные странички, сейчас вообще все больше логики держат на клиенте, асинхронные запросы опять же.
Это фингербокс.
шо? я заполняю его виджетами с динамическим контентом, по которому они должны сортироваться.
Меняй содержимое, так быстрее будет
Насколько я знаю, самый быстрый способ - сделать много лейаутов (в твоем случае делать каждый раз новый)
Может эксперты знают другое решение
Программач, я ведь знаю тут собрана самая мозговитая прослойка двача. Мне нужна помощь в решении следующего алгоритма.
Задачка не из легких. Уже два дня потею, вот вот вроде выведу норм алгоритм,но нифига. Я уже и рекурсией, и мат. формулы искал.
Ближе к делу.
Необходимо подсчитать число разбиений (N) на слагаемые, для вводимого нами числа (Sum), при том, что у нас есть список доступных слагаемых (Arr).
Пример: мы вводим число 7, и задаем слагаемые - [1,2,5]. Из этих условий следует, что Sum = 7; Arr = [1,2,5], а количество разбиений N нам нужно вычислить:
1) {5,2};
2) {5,1,1};
3) {2,2,2,1};
4) {2,2,1,1,1};
5) {2,1,1,1,1,1};
6) {1,1,1,1,1,1,1};
В нашем случае N = 6;
Важный момент - слагаемые могут повторяться, но их последовательность не важна, то есть разбиения типа {5,2} и {2,5} тождественны между собой и должны учитываться как одно решение
Ребят, помогите плз. Упарывание всяких там формул Эйлера и т.д. не помогло в силу отсутствия решения для конкретно подобного случая
Виджеты?
Расставляй виджеты вручную, для простых случаев это удобно или напиши свой лейаут.
Почему нельзя просто
fract = (float)(val - int(val));
i = val - fract;
Быстрее же. Я видимо чего-то недопонял. Пример из -12.354 требуется получить -12 и -0.354
Есть ли в мире C++ сертификация вроде джавовской Oracle Certified Associate?
Нет.
> fract = (float)(val - int(val));
> i = val - fract;
ну вот как раз на твоём примере (отрицательные значения) касты могут сломаться
Специально отрицательный проверил.
Причем не выводится даже строка "before loop". Но если закомментировать так: https://ideone.com/LRarix , то "before loop" выводится. Как так объявление и заполнение вектора повлияло на поток выполнения, что даже до отладочной печати не дошло?
QVector типа QString и строковые литералы типа const char * могут быть не совсем совместимы, хотя я могу ошибаться.
Замена на vec << QString("xxx") << QString("yyy") << QString("zzz"); не помогла.
У меня все выводится.
> вроде OCA
Это где будут спрашивать что покажет статический счётчик после строчки Huita a = 5, а код из примеров будет наполовину написан диграфами, а остальной · триграфами, ибо легаси?
Почему это помогло? Проект, собранный как гуйня, до этого позволял писать в консоль.
Как происходит отрисовка на окнах? Почему при перезаливе картинки на окно и использования refresh() / update() происходит мерцание с промежуточным белым экраном? Как грамотнообновлять графическое содержимое окон?
>В чем тогда преимущество скорости вставки, если надо раздвигать массив указателей
Для типовых случаев разница будет невелика. Массив раздвигается быстро, потому что линейно лежит в памяти, что удобно кешу.
Мне нужен прогрес бар заполненный 2 цветами в разных местах и чтоб прогресс показывался в виде треугольника сверху этого бара.
фреймбуфер слишком часто обновляется из приложения и поскольку код,который выводит фреймбуфер на видеокарту, работает параллельно, то ты видишь промежуточное состояние фреймбуфера.
Я - школяр. Закончил школку, неплохо сдал егэ, но мне пофиг, вкатываюсь на матфак, ибо знаю, что IT-образование у нас полная дичь, а матфак в нашем мухосранском ГУ не такой геморрный, и времени на самообразование у меня будет достаточно, но и матан там неплохо преподают.
Собственно, я уже примерно полгода как застрял на уровне книг "для начинающих". Я разобрался с классами, более или менее понимаю суть указателей и ссылок, немного могу в STL. И всё. Куда двигаться дальше? Сейчас я изучаю потихоньку SFML, ибо хочу вкатиться в геймдев, но понимаю, что на 2д играх далеко не уйдёшь. Пробовал вкатываться в трёхмерную графику, но там всё слишком уж сложно для меня, поэтому пока сижу на 2д.
Так вот, в чём суть. Что мне изучать дальше? Пытаться осилить книги "для продолжающих"? Или забить на них, и дальше изучать мультимедийные библиотеки, разбираясь с возникающими вопросами по мере их появления?
Не знаю, что мне выбрать из этого, ибо боюсь, что слишком много времени потрачу на основы и не успею к концу учёбы поднять необходимые навыки, чтобы запилить что-нибудь достойное показа на каком-нибудь геймдев конкурсе или для получения работы, и буду поддерживать старые программы за копейки, или наоборот, слишком, устремлюсь вперёд в одном направлении, и буду писать говнокод из-за отсутствия необходимых навыков.
>буду писать говнокод из-за отсутствия необходимых навыков.
Ты его в любом случае будешь писать, это не то чего что стоит опасаться начинающему.
Единственный способ поднять уровень в такой ситуации — пилить проект.
Поясни примеры проектов, тыкни мордой в пример проектов, доступных более-менее начинающим, пожалуйста.
мимонуб
Благодарю, анон. Выглядит старовато, ну да фиг с ним.
учи*
https://www.youtube.com/playlist?list=PLfAlku7WMht6janxhS4D7XqajI7Knq1sS
Это годная бабенция для начала? Мне ее в нюхак-реде посоветовали.
Эта хрень везде по-разному называется: в винде там вообще UTF16, а на линуксе "ru_RU.UTF-8".
Я понимаю еще, когда нужно брать символы для форматирования денег и времени/даты. Но причем здесь проверки для символов UTF-8?
Речь идет о такой хуите. Вот нахуй здесь локаль нужна, а?
http://en.cppreference.com/w/cpp/locale/isupper
Да, локали — это странная часть C++, я уже писал, вроде в прошлом треде.
Enjoy your UTF-8 files.
volatile uint32_t d1 = va_arg(args, uint32_t);
volatile uint32_t d2 = va_arg(args, uint32_t);
volatile uint64_t d = ((uint64_t)d2<<32) | (uint64_t)d1;
double dd = (double)&d;
но это ж не дело. С 64 битными целами то же поведение - 32 бита только читает, нужно два раза читать. Может флаг в опциях какой? cortex m4 c fp
Вообще для игр очень популярен движок Unity. Но там нужно вроде C# юзать. Попробуй игры под Android писать например. Выучишь Java, а критические секции сможешь писать на плюсах (NDK)
Unity популярен для домашних поделок мамкиных геймдизайнеров, а я хочу вкатиться именно в геймдев. Понимаешь? Не клепать модельки, а отрисовывать их. Не делать недо-скрипты для управления. Я не хочу делать игру на движке, я хочу пилить сами движки. Поэтому я пытаюсь вкатиться в плюсы.
Да и к тому же, если бы я именно учился бы делать игры, то пошёл бы в UE4. Ибо там C++ и офигенный визуальный язык или что там такое.
Это норм или НЕОЧЕ?
И как тогда поступать? Можно сначала создать новый фреймбуфер, а потом скинуть куда-то указатель на него?
Как в разметке формы сделать так, чтобы виджет занимал всё доступное пространство родительского виджета?
В гугле искал - не нашел работающего решения.
Ведь наверняка это как-то делается без костылей.
>Это как?
Делю весь файл на 8(или другое кол-во потоков) частей, обрабатываю их параллельно, результат собираю воедино. Сократил время работы в два раза с таким подходом.
Дай обоснование, даун
Если острой нужды в деньгах нет, то смысл. Лучше пилить свой проект тогда уж и выложить на гитхаб. Про опен сорс молчу вообще.
lumines, например.
>>808852
>>808871
Ага, заябись. Как бы теперь сделать автоматический ресайз?
https://gist.github.com/anonymous/2138d087e289a056096636b80f8d4a19
QResizeEvent?
Где не там?
https://gist.github.com/anonymous/2138d087e289a056096636b80f8d4a19
Я немного охуеваю с этих Qt, казалось бы простая вещь делается не очевидно.
Ты не описал все условия: в памяти у тебя текст или на диске, например. 44 МБ/с больше похоже на чтение с диска.
Твоя задача в идеале скейлится линейно. Другое дело, что там можно в скорость памяти/борьбу за кеш упереться. Если 8 потоков сократили время в 2 раза, то это очень странно. Либо слишком много потоков, либо у тебя тупо чтение с диска идёт.
public:
Counter() : count(0) {}
unsigned int getCount() { return count; }
Counter operator++()
{
++count;
Counter temp;
temp.count = count; //<-----------------
return temp;
}
private:
unsigned int count;
};
Почему у меня есть доступ к private полю объекта temp?
Может потому что это твой класс?
Теперь хочу приобщиться к крестам по настоящему, но для проектов посложнее примитивных нужны библиотеки.
Меня интересует в первую очередь то, о чем никто нигде не пишет в мануалах, документации итд - какой централизованный подход принят при подключении зависимостей к проекту.
Текущая конфигурация - win 10-64(так исторически сложилось), clion. Допустим я нахожу либу, где система сборки иная - SCons. Щито мне делать? Качать очередную систему сборки, компилить, подключать библиотеку, юзать?
>Качать очередную систему сборки, компилить, подключать библиотеку, юзать?
Да. А вообще лучше сразу завендорить эту зависимость (руками конечно же).
> > какой централизованный подход принят при подключении зависимостей к проекту.
> никакой
Какие же всё таки плюсы ахуенные!!
>Я не хочу делать игру на движке, я хочу пилить сами движки
Тогда собирай команду, хуле. Но только лет через 3-5, когда наберешься достаточно опыта в собственно программировании.
А то! Хошь - на cmake опиши загрузку и установку зависимостей.
Возник такой вопрос, по поводу подсказок при вводе.
Мне нужно каким-то образом хранить тысячи ключевых слов и функций и потом, при каждом изменении пользователем кода в текстовом поле, находить подходящие и выводить в подсказку. По началу я думал просто занести все ключевые слова и функции в файл и потом его перебирать, например пользователь набирает "cla" - программа ищет в этом файле все, что начинается с этого и выводит в подсказку. Но это выглядит не очень оптимизировано, т. к. в php тысячи функций и их находить в одном файле, при каждом изменении кода - я подозреваю будет медленно.
Предложите, пожалуйста, какую-нибудь хорошую концепцию для хранения и поиска нужных ключевых слов/функций.
Пикрелейтед - то, что я хочу получить в итоге.
>По началу я думал просто занести все ключевые слова и функции в файл и потом его перебирать
Во-первых, если ты не хочешь чтобы на каждую итерацию автокомплита уходило по 2 секунды - нужно всё держать в памяти.
>Предложите, пожалуйста, какую-нибудь хорошую концепцию для хранения и поиска нужных ключевых слов/функций.
Авторы бд всё придумали за тебя уже хуй знает сколько лет назад, загугли бинарные деревья поиска.
object.SendSignal("foo");
>Держать в памяти >бинарные деревья поиска
Ты имеешь в виду при запуске программы все эти тысячи функций загружать в контейнеры set/map/qset/qmap, а потом при помощи регулярных выражений выбирать все что начинается с того, что ввел юзер и выводить в подсказку, тогда скорость мгновенная будет? Или есть варианты лучше?
Иди читай "Алгоритмы" Кормена от корки до корки, когда закончишь - возвращайся.
Чем тебя виртуальные функции не устраивают?
У меня, к сожалению нет овердохуя часов на чтение левых книг. Сейчас итак читаю несколько. Я спрашивал, что конкретно лучше юзать для этой задачи - хранения и поиска большого обьема текста - базы данных sql, или контейнеры Qt/STL, или файлы.
>У меня, к сожалению нет овердохуя часов на чтение левых книг
У меня тоже нет, но я же читаю
да я сейчас просто и так несколько книг параллельно читаю, еще одну не осилю одновременно. Просто хочу конкретно понять и читать уже непосредственно про то, что юзать для этих задач
Естественно контейнеры. Читать файл при каждом вводе на несколько порядков дольше (оперативная память нужна именно чтобы так не делать). Из контейнеров выбери такой, где поиск за логарифм, типа set (который реализован как раз на дереве)
А qmap как по производительности? Мне он кажется более удобным.. Он ведь тоже на красно-черном дереве реализован.
Иди и сделай бенчмарк поиска там и там, какие проблемы?
Алсо, в Qt все контейнеры куда более удобные и адекватно реализованные (не то что стандартные стльные, "стондарт ни горонтирует, разработчик хуй кладёт").
Вообще, у тебя есть куча кода для изучения – исходники того же КультяпКреатора.
Ладно, шучу. Кейс примерно такой (смотри картинку)
Итак, есть, например, 3 воркера, которые посылают запросы на условный target сервер (зеленый круг). Запрос идет в формате обычного restAPI, то есть
[https://example.com/user=1&option=2]
[https://example.com/user=2&option=3]
[https://example.com/user=2&option=4]
1. Запрос выполняется исключительно по защищенному соединению.
2. Ответ в JSON формате.
3. API не передает никаких индификаторов тго, кто запрос послал, поэтому возвращенный ответ по телу идентифицировать нельзя.
Соответственно я пока не придумал, в какой момент генерировать запросы, но идея такова.
1. Worker генерирует запрос в формате выше
2. Передает его в Proxy Controller
2.1. Proxy controller присваивает отдельный прокси
2.2. Выполняет запрос.
2.3. Получает ответ.
3. Передает ответ одному из Worker'ов, например, через Load Balancer.
Теперь собственно вопрос - куда гуглить? Есть ли какие-нибудь библиотеки, которые позволяют это сделать менее болезненно? Какие варианты вообще существуют.
А зачем. Где нужны новые движки? Просто ради опыта или как профессия? Кажется достаточно узко и невостребовано.
Ради конкуренции, которая двигает уровень в первую очередь.
Так же если написать что-то стоящее – можно и продаться за хорошие деньги.
Ну вот например физика. Столько есть годных вариантов, которые до зрелого уровня напильником годами доводили. Неужели кто-то будет свою физику с нуля пилить. Кучу шишек набьешь, в итоге изобретешь велосипед, по-моему.
Физический движок не обязательно писать. А вот реализовать концепцию которая есть в паре закрытых продуктов (как мультитрединг в движке naughty dog например) – всегда полезно.
Нормально. А ты как, много нормально распаралеленных движков видел? Или испозующих хотя бы 2 ядра?
Не прошло и 6 лет, как крестухи поняли, что std::future это монада.
никогда не пользовал хуеты из с++ большей чем просто си с классами. что я делаю не так? смотрел в код C# дрочеров со всякими предикатами и linq хуинq асинк поебень и тд и тд. это вообще выглядит как другой язык. ЗАЧЕМ ВСЕ ЭТО? нужно просто си. с классами.
>на хелловолрдах линукс написан
да-да, хеллоуворлдщик. ни мьютексов там нет, ни conditional variables, ни отложенных заданий
Чем пользуются сдешние хацкеры? Слышал про vim/emacs, но я так понял, что этого мало...
Если я ёбну codelite, можете назвать годный набор джентельмена, без всякого лишнего дерьма? Тот минимум, который должен быть у каждого уважающего себя кодера?
linux-кун
Школьник плес, хватит ересь нести. Хочешь гд, пиздуешь в /gd.
> немного могу в STL
Исходники читал или как? Посмотрел что умеет вектор? Знаешь как происходит выделение памяти в том или ином контейнере?
> Я разобрался с классами
Узнал что значит паблик, приват, протектед поля или что такое виртуальные функции, а понял, знаешь название парадигм? Ох лол, люди годами разбираются во всех тонкостях ООП, дизайне классов и прочем. А ты у нас индиго, за годик и уже сток всего умеешь.
> суть указателей и ссылок
Уверен, что ты понимаешь на уровне. УКАЗАТЕЛЬ ИНИЦИАЛИЗИРУЕТСЯ АДРЕСОМ ПЕРЕМЕННОЙ или чет тип такого. Если я задам тебе вопрос, что такое утечка памяти, то ты обосрешься.
В этом проблема детей типа тебя и вам подобных. Прочитал про типы данных/ссылки/указатели/основы ООП вы уже думаете что все, потолок. Хотя даже вопрос, что такое this, зачем ставить const в методе или как перегрузить оператор поставит тебя в тупик.
Офк ты не можешь в template metaprogramming, не знаешь новых стандартов, не можешь написать свой аллокатор(ты даже не знаешь что это такое скорее всего), алгоритмы, ub, потоки, красно-черные деревья, паттерны, структуры данных(ты даже не поймешь отличие вектора от листа). И все что я перечислил, это можно сказать только начало твоего увлекательного пути к совершенствованию байтоебства и еще меньшему пониманию ООП и с++.
Если просто, то делай свои проекты, не важно что. Главное кодить как можно больше. Не надо боятся говнокода, на твоем уровне ты все равно ничего не поймешь.
Про юнити ты нес хуету. Движки делают супер кодеры, ты таким никогда не станешь. Поэтому сможешь только быть макакой. Но не волнуйся, скоро ты поймешь, что в с++ для тебя нет места, т.к. ты самонадеянный уебок, без скиллов, но думающий что он все может.
мимо изучаю с++ 2 недели
Бля, чувак, да ты охуенен.
А я никак места не могу себе найти, чтоб сесть и почитать того же Бишопа или Липмана. Разве что на улице изучаю "Конкретную математику" 3 года гумманитарного вуза дают о себе знать, так что нужно приводить свой мозг в порядок, а то он зависает на сложных задачах
Вот завтра домой поеду - мб там обстановка получше.
А у тебя всё получится - я уверен. Интересно будет пересечься с тобой в будущем. Желаю удачи
>Исходники читал или как?
Да, эти http://libcxx.llvm.org/
> Посмотрел что умеет вектор?
Что именно я должен был там посмотреть?
> Знаешь как происходит выделение памяти в том или ином контейнере?
allocator::rebind и прочее уродство
> Узнал что значит паблик, приват, протектед поля или что такое виртуальные функции
Зачем разбираться, я это сразу знал.
> знаешь название парадигм
Метапрограммирование.
> Ох лол, люди годами разбираются во всех тонкостях ООП, дизайне классов и прочем.
Говноеды, сэр.
> А ты у нас индиго, за годик и уже сток всего умеешь.
Да, сейчас дочитываю Concurrencry in action. Месяца не прошло с того, как начал учить цепепе.
> Хотя даже вопрос, что такое this
Интересно, что ты сам ответишь, лол.
> Офк ты не можешь в template metaprogramming
На базовом уровне (enable_if и т.п.) могу, а бОльшее не нужно помнить. Главное, знать, где подсмотреть.
> не можешь написать свой аллокатор
Аллокаторы не нужны, PMR рулит.
> красно-черные деревья
Сам-то ты хуй по памяти напишешь.
> ub
Сам-то ты undefined от unspecified не отличишь.
мимо уженешкольник-абитуриент
>Исходники читал или как?
Да, эти http://libcxx.llvm.org/
> Посмотрел что умеет вектор?
Что именно я должен был там посмотреть?
> Знаешь как происходит выделение памяти в том или ином контейнере?
allocator::rebind и прочее уродство
> Узнал что значит паблик, приват, протектед поля или что такое виртуальные функции
Зачем разбираться, я это сразу знал.
> знаешь название парадигм
Метапрограммирование.
> Ох лол, люди годами разбираются во всех тонкостях ООП, дизайне классов и прочем.
Говноеды, сэр.
> А ты у нас индиго, за годик и уже сток всего умеешь.
Да, сейчас дочитываю Concurrencry in action. Месяца не прошло с того, как начал учить цепепе.
> Хотя даже вопрос, что такое this
Интересно, что ты сам ответишь, лол.
> Офк ты не можешь в template metaprogramming
На базовом уровне (enable_if и т.п.) могу, а бОльшее не нужно помнить. Главное, знать, где подсмотреть.
> не можешь написать свой аллокатор
Аллокаторы не нужны, PMR рулит.
> красно-черные деревья
Сам-то ты хуй по памяти напишешь.
> ub
Сам-то ты undefined от unspecified не отличишь.
мимо уженешкольник-абитуриент
Половина твоих ответов на уровне ТЫ САМ ТО ХОТЬ ЗНАЕШЬ, А?. Хотя я спрашивал базовые вещи 90% того что я спрашивал есть в Страуструпе. Ты говоришь аллокаторы не нужны, что ООП это просто и вообще хуйня. Я ору с тебя просто. Ты даже про указатель this не знаешь.
Бля, ты не знаешь че такое this, но знаешь ООП ))). И при этом, ты можешь в шаблонное метапрограммирование. Ох вей.
> знаешь название парадигм
Я имел ввиду ООП парадигмы. А то что ты назвал можно включать в подъязык с++, я имею ввиду. Си, ООП, STL, с++ с шаблонами Так говорил Мейерс, офк ты лучше чем он.
> Говноеды, сэр.
Нет смысла комментировать даже.
> На базовом уровне (enable_if и т.п.) могу, а бОльшее не нужно помнить. Главное, знать, где подсмотреть.
На уровене хеллоуворлд, я так же хаскел знаю.
> Аллокаторы не нужны, PMR рулит.
Бля. Ну подрастешь поймешь.
> Да, эти http://libcxx.llvm.org/
БЛЯ, Я ТАК ОРУ С ТЕБЯ. У тебя есть компилятор, а ты с сайтика чет смотришь. Ну очевидно, что твои слова правда.
Алсо, львиную долю мною написанного ты пропустил. Поэтому можно сделать вывод, что ты даже про перегрузки, утечки памяти ток слышал, но не видел и не понимаешь.
Думаю особого смысла нет что-то говорить тебе. ЗНАЮЩЕМУ ПОНИМАЮЩЕМУ ВСЕ ПАРАДИГМЫ С++, ВКЛЮЧАЯ ШАБЛОННОЕ МЕТАПРОГРАММИРОВАНИЕ, ООП И ПРОЧИЕ, НО НЕ МОГУЩЕМУ В this->.
Как бы я показал тебе твой потолок. КНИЖКА С БАЗОВЫМ СИНТАКСИСОМ.
отклеился
Толсто. Concurrency in action за месяц на не освоишь, даже если нонстоп по 10 часов в день ебашить будешь. Memory ordering - оно такое.
Либо ты толстишь, либо ты толстишь, потому что будь ты таким умным, не задавал бы вопросов про "шта мне учить дальше". А так, вниманиеблядь незаметна, конечно. Съеби.
> Concurrency in action за месяц на не освоишь
В среднем ~50 страниц в день. При этом никаких "10 часов" и "ебашить". Вперемешку со скроллингом двачей и прочими делами.
Почитать и освоить – разные вещи, не находишь?
>>810807
>мимо уженешкольник-абитуриент
Я что-то илюшу вспомнил и прослезился :,(
cccccccукаа
Пикрелейтед - вышеописанное, но на виджетах.
Можно конечно. Вопрос только в том, что ты уже дохуя реализовал на виджетах и переезжать на QML несколько непродуктивно.
для себя делаю, так что время есть. да и заебался я баги ловить, нужно переписывать все равно.
Ну так я не читаю дальше, пока не пойму текущего.
>Половина твоих ответов на уровне ТЫ САМ ТО ХОТЬ ЗНАЕШЬ, А
Ну дак потому что ты не знаешь нихуя, а до меня доебался.
> Ты говоришь аллокаторы не нужны
Конечно. Я тут недавно скидывал ссылку на видео, где Александреску рассказывает про происхождение аллокаторов: это был костыль для памяти с сегментацией, во времена DOS. В стандарт аллокаторы вошли по инерции.
Т.е., конечно, настраиваемые выделятели памяти нужны, но в том виде в каком они есть в C++ — не нужны.
Благо, в 17-м стандарте уже будут pmr (про которых ты нихуя не знаешь).
> Ты даже про указатель this не знаешь.
Потому и спросил, что ты сам ответишь, т.к. знал, что ты обосрёшься и назовёшь this указателем. Ну, раз это указатель, то:
1. Как я могу взять адрес этого указателя?
2. Как я могу присвоить ему что-нибудь?
> ООП это просто и вообще хуйня
А что, не так, что ли? ООП это не лемма Йоннеды, это банальщина.
> Бля. Ну подрастешь поймешь.
Даже консервативный по самое немогу комитет стандартизации собирается наконец-то включить в стандарт нечто лучшее, чем аллокаторы, а кто-то настолько тормоз, что до сих пор верует в их нужность.
> На уровене хеллоуворлд, я так же хаскел знаю.
На более продвинутом уровне редко когда нужно. Если только не шаблонное метапрограммирование ради шаблонного метапрограммирования.
> У тебя есть компилятор, а ты с сайтика чет смотришь.
Даун, ты отличаешь компилятор от стандартной библиотеки?
А ссылку я дал чтобы указать, какая у меня стоит реализация stdlib.
> Алсо, львиную долю мною написанного ты пропустил.
Для тебя, тупого говна, того количества вопросов, на которое я соизволил ответить — уже слишком большая честь.
Всё, я ушёл пилить убийцу крузиса.
>Половина твоих ответов на уровне ТЫ САМ ТО ХОТЬ ЗНАЕШЬ, А
Ну дак потому что ты не знаешь нихуя, а до меня доебался.
> Ты говоришь аллокаторы не нужны
Конечно. Я тут недавно скидывал ссылку на видео, где Александреску рассказывает про происхождение аллокаторов: это был костыль для памяти с сегментацией, во времена DOS. В стандарт аллокаторы вошли по инерции.
Т.е., конечно, настраиваемые выделятели памяти нужны, но в том виде в каком они есть в C++ — не нужны.
Благо, в 17-м стандарте уже будут pmr (про которых ты нихуя не знаешь).
> Ты даже про указатель this не знаешь.
Потому и спросил, что ты сам ответишь, т.к. знал, что ты обосрёшься и назовёшь this указателем. Ну, раз это указатель, то:
1. Как я могу взять адрес этого указателя?
2. Как я могу присвоить ему что-нибудь?
> ООП это просто и вообще хуйня
А что, не так, что ли? ООП это не лемма Йоннеды, это банальщина.
> Бля. Ну подрастешь поймешь.
Даже консервативный по самое немогу комитет стандартизации собирается наконец-то включить в стандарт нечто лучшее, чем аллокаторы, а кто-то настолько тормоз, что до сих пор верует в их нужность.
> На уровене хеллоуворлд, я так же хаскел знаю.
На более продвинутом уровне редко когда нужно. Если только не шаблонное метапрограммирование ради шаблонного метапрограммирования.
> У тебя есть компилятор, а ты с сайтика чет смотришь.
Даун, ты отличаешь компилятор от стандартной библиотеки?
А ссылку я дал чтобы указать, какая у меня стоит реализация stdlib.
> Алсо, львиную долю мною написанного ты пропустил.
Для тебя, тупого говна, того количества вопросов, на которое я соизволил ответить — уже слишком большая честь.
Всё, я ушёл пилить убийцу крузиса.
Овер 100 страниц в гугле скандируют сишный велосипед. На sprintf студия отвечает error C4996: 'sprintf': This function or variable may be unsafe.
Как бэ настойчиво намекая, что должно быть более простое и безопасное решение "искаропки".
http://ideone.com/aakY6F может кто помочь? Мне кажется тут не хватает всего одной строки, но какой найти не могу.
Нахуя нужно: выводить в графический интерфейс разные значения вместе с другими форматированными строками.
Помню, в сишке ты можешь задать определённое количество цифр после запятой в printf. Мб тут тоже в самом операторе нужно?
>Овер 100 страниц в гугле скандируют сишный велосипед.
Откуда столько долбоёбов, употребляющих слова, не зная их смысла? Через пост в цепепе-треде "костыль" или "велосипед". И везде не в тему.
Идиот, "велосипед" — это когда ты сам реализуешь что-то, что мог взять готовое.
> На sprintf студия отвечает error C4996: 'sprintf': This function or variable may be unsafe.
Во-первых, есть, как ты, идиот, выражаешься, "велосипед" под названием snprintf.
Во вторых, какое тебе дело до кукареков студии? пусть кукарекает, что с неё взять.
Ах, да. Сейчас тебе насоветуют флагов в stream запихать. Желаю тебе хорошей производительности, со стримами-то.
Плохо искал как-то.
http://ideone.com/WJ4qNu
>>811090
>Желаю тебе хорошей производительности, со стримами-то.
И чем же она пострадает?
>Т.е., конечно, настраиваемые выделятели памяти нужны
Как ты завертелся на сковородке. "Выделятель памяти" - это и есть аллокатор. То, что со временем у них поменялся интерфейс, не делает их не аллокаторами. Школьник и есть школьник, спартак - чемпион, а аллокаторы не нужны, PMR рулит. Лишь бы спиздануть какой-то тупой лозунг. И тире длинное на дваче не забыть - ведь как же иначе. Ты животное тупое.
>Как ты завертелся на сковородке.
Тупое говно, я в первом посте написал, что pmr нужно. Кстати, смотрю, ты, тормоз, наконец узнал о них. Оказывается, ты не настолько туп.
>"Выделятель памяти" - это и есть аллокатор.
Не маневрируй, тупое говно, ты не в /po/. Аллокатор это то кривое нечто, что есть сейчас в стандарте под названием std::allocator.
> Школьник и есть школьник
Я так понял, у тебя совсем аргументы кончились, если ты так открыто перешёл на личности.
Илюш, успокойся.
Ты написал, цитирую: "Аллокаторы не нужны, PMR рулит.". Т.е. аллокаторы не нужны аллокаторы нужны. Зачем ты это написал? Просто чтобы выебнуться. Потому что ты тупой школьник.
>Не маневрируй, тупое говно, ты не в /po/. Аллокатор это то кривое нечто, что есть сейчас в стандарте под названием std::allocator.
А у тебя что? ВЫДЕЛЯТЕЛЬ ПАМЯТИ. Не подскажешь, как это по-английски будет? Уж не memory allocator ли?
>Я так понял, у тебя совсем аргументы кончились, если ты так открыто перешёл на личности.
Аргументы по поводу чего? Это был мой первый пост ИТТ. Пафос моего поста в том, что ты тупое животное, а с животным и обсуждать нечего.
http://acm.timus.ru/problemset.aspx
> Т.е. аллокаторы не нужны аллокаторы нужны.
Это только твоя интерпретация, идиот.
> А у тебя что? ВЫДЕЛЯТЕЛЬ ПАМЯТИ.
Этим я подчёркиваю, что всё, что нужно делать — это выделять память. Если ты, даун, когда-нибудь доберёшься до std::allocator, то увидишь... хотя нет, не увидишь, ты слишком тормозен, а это скоро будет deprecated, а потом удалено. Тогда так: если бы ты хоть раз смотрел на std::alocator, то заметил бы несколько идиотских вещей, вроде функций construct и destroy. Каким боком конструкция и деструкция к выделению памяти — ХЗ.
Поэтому выделятели памяти нужны, а аллокатор — нет.
> Зачем ты это написал? Просто чтобы выебнуться.
Ты — типичное быдло. Если кто-то знает что-то, что не знаешь ты — значит он "выёбывается". Если твой потолок это знать, зачем нужны модификаторы доступа, то всё, что дальше этого — это выебоны. Пиздец.
> Аргументы по поводу чего?
Вот я о том и говорю — что у тебя нет ни по какому поводу аргументов. Только "да ты шкальник!111"
Видел его отключение в бенчмарках уровня "посчитать количество слов" и последующий профит на 0,2 с, на практике слабо представляю проблемы с перформансом это этого.
В олимпиадном программировании такое в ходу. Но вообще да, особой пользы в практических задачах почти никогда нет.
Ты ущербный какой-то бро. Хули ты до него доебался? При чем доебался сходу >>810796
Школьник, еба, игнорируй пидораса, нахуй ты с ним спорить полез.
>Это только твоя интерпретация, идиот.
Нет, твоя. Вот ты пишешь:
>Поэтому выделятели памяти нужны, а аллокатор — нет.
Т.е. поэтому аллокаторы нужны, а аллокатор - нет.
Ты в курсе вообще, как слово allocator с английского переводится? Или то, что аллокаторы есть в любом языке, а не только в С++. Тебе похуй, потому что все, что тебе нужно было сделать, это громогласно заявить на фразу "ты попробуй напиши аллокатор" - аллокаторы не нужны, потому что школьник-нигилист предпочитает громко спиздануть любую хуйню лишь бы громко, и показывало, какой он нитакойкакфсе. Нормальный человек бы написал, что "интерфейс std::allocator в скором времени будет deprecated". Только из этого не будет следовать ничего, кастомные аллокаторы как писали, так и будут писать. В моем последнем проекте аллокатор для CUDA и OpenCL, например, вообще имеет нестандартный интерфейс для нестандартного контейнера, который умеет свопаться при определенных условиях. И что, это не аллокатор по-твоему. А, это ВЫДЕЛЯТЕЛЬ ПАМЯТИ. Бляя, сук, как же я проигрываю с этой хуйни. Я уже написал, что аллокаторы не нужны, поэтому, чтобы не соснуть, я придумаю ВЫДЕЛЯТЕЛЬ ПАМЯТИ. Пощади, молю.
Я ток два поста настрочил. Больше не буду. Я понял что с ним смысла говорить нет. Человек не понимает своих знаний на общем фоне.
Да было б из зачего. Там какой-то нервный на анона (типа школьника) сходу жестко наехал, хотя тот просто вопросы задал. Видно какую-то струнку зацепилу у ущербного...
А моча не трет тут? Я из саентача залетный, там моча трет споры про определение N. Просто некоторые аноны не понимают как запрограммировать инуитивную метаиндукцию с помощью которой разрывается логическая петля в аксиомах Пеано. Но за это банят.
Что-то как-то с трудом верится.
>>811294
Это вообще не сложно. В вузе все на отъебись преподавалось.
А придумали что-то принципиально новое, отличное от адаптеров к си-шным alloc-am?
Какие требования должны быть к аллокатору?
>Что-то как-то с трудом верится.
Потому что ты глуп.
Это плюс для джуна, а если ты еще и обаятелен - то считай себя принятым.
Ну а чо нет, я не очень могу в с++11/14, но в более древних плюсах не было ничего кроме оберток к аллокам.
Эти функции придётся писать на ассемблере, что можно сделать, но достаточно мучительно(и оно того не будет стоить)
>придётся писать на ассемблере
Мальчик, ты дурак?
Даже интрисинки не особо нужны, хотя могут и пригодится кое-где.
>работать с кучей
Как обычно и как везде же.
Отжираем по максимуму и используем эту уже свою кучу оптимальным для данной задачи образом. И нет, дрочить системные аллоки - это для безруких дебилов.
Все просто.
Просто не копрофил в отличии от тебя
И если просто говно суть неизбежный элемент жизни, то говно с претензией - типа буста - это уже лишнее.
>что мне могут сделать?
Тебя посадят, а ты не воруй.
>И как они узнают
Через телеметрию в твоей десятке.
Ясно всё
Нахуй гринтекстить и задавать тупые вопросы?
Ясно, что софт, который написан на определённом ИДЕ палится, если ты его решишь продавать
Да, удачи. Но мне сейчас куда важнее освоить Бишопа, так что уделять внимание твои постам не буду. Через месяцок подваливай
Да. Я тебе задал конкретный вопрос - чем тебе не нравится fast_pool_allocator. Ты ответить ничего не можешь, а просто уныло ведешь беседу в стиле /vg/. Если тебе не нравится весь буст, тут два варианта, либо ты крестохейтер и тебе следует съебать из треда сосать хуйцы вместе с мамашей, или ты не в курсе, что в бусте обкатывается большинство вещей, которые потом стандартизирует. А fast_pool_allocator - идеальная штука в 2 строчки сделать контейнер, который не будет тормозить от частых выделений и освобождений памяти (любимый дроч у функциональщиков). Возможно он не самый быстрый, но точно самый удобный - определил параметр у контейнера и все.
>в бусте обкатывается большинство вещей, которые потом стандартизирует
Да, комитет именно такие пидоры и есть.
Вот поэтому у вас и нет модулей. И не будет.
https://2ch.hk/sci/res/371785.html#374444 (М)
https://2ch.hk/sci/res/371785.html#374485 (М)
>ну че ты как маленький, отфотошопил я его же скрин.
Типичный вговнемоченый уровня обо/сцай типичен.
Вопросов больше не имею.
(Автор этого поста был забанен. Помянем.)
>это мелкобуквенное кукареканье
Крестьянин с обо/сцая as is.
У тебя кефир стынет и теории относительности не опровергнуты.
(Автор этого поста был забанен. Помянем.)
Всегда пиши его, Остальное тебе пока не надо знать. А еще везде где только можно const пиши, даже в таких случаях
const Rational operator*(const Rational &lhs, const Rational &rhs);
>Вроде умные люди
Вниманиеблядь, рассуждающая об аллокаторах, не написавши ни строчки кода, и даун, который на него сагрился умными людьми не являются.
Чем? У меня непрерывный фейспалм от его постов и охуительных условий. Единственное, в чем его можно похвалить, так это в полемике. Навык пиздежа с умным видом о том, о чем знаешь поверхностно, может пригодиться в /po/
Помню себя в школьные годы.
Ну он нёс такую хуету с серьёзным лицом, что у меня аж живот заболел от смеха
Вот, уже один, не понимающий смысла слов/выражений "велосипед", "костыль" или "выстрелить в ногу" загорелся.
>Он, видимо, про std::ios_base::sync_with_stdio не слышал.
Какое отношение ios_base::sync_with_stdio имеет к stringstream, болезный наш?
В документации к sum сказано, что указание в параметре цифры -1 выполняет подсчет с конца до начала.
Нифига не ясно.
Есть у меня некоторые структуры и небольшие методы в них.
Как сделать чтобы эти методы гарантированно
wait
Уже нашел, не надо.
Идите все нахуй.
Дурачок)
если понять еще как они работают
Что они делают? Какая нахрен сумма елементов с негативным параметром? И почему она выдается в результате как массив?
В треде крестов - топ шапка. Остальные какие-то тупые. Ну у Сишников ещё более-менее и пайтонофагов.
Саму суть понял, но как-то разплывчато. Мб кто подскажет
++yoba &= 1 это или yoba = yoba + 1; yoba = yoba & 1 или наоборот. Стандартом не определено
boost::zip, std::sum, гуууугл
ty che na standart, pidor? anu idi syda
>>812258
Стандарт как раз нормальный, им именно что определено, что компилятор имеет право ебать подобные выражения в рот и программиста заодно.
Вот допустим пример
>>std::cout << "POSHEL NAHUY, PIDORAS" << std::endl;
std::cout - операнд вывода, а << оператор, который показывает ему что выводить? А тут << std::endl; как?
В сишке-то было понятно printf("POSHEL NAHUY, PIDORAS/n");
А тут << ... << играют роль () или указывают на операндов?
> компилятор имеет право ебать подобные выражения в рот
вот как надо выкидывать в биореактор макак, пишуших подобные выражения
Почему не определено? Сначала же ++ делается. А потом все остальные операции
То, что ты проебался - я понял, но непонял, что ты имел в виду.
В книге был пример про сочетание, но ты лучше обьясни роль << вот этого вот в коде...
http://www.cplusplus.com/reference/ostream/ostream/operator<
грубо говоря, оператор -- та же функция или метод, только называется, как называется. никто не запрещает сделать вот так:
std::cout.print(outStream("raz", outStream("razraz", outStream("pssh"))));
То есть << для объекта std::cout принимает параметром std::ostream&. Свободный оператор << принимает значение какого-нибудь типа в одной перегрузке и в другой перегрузке std::ostream& и значение какого-нибудь типа, и обе перегрузки возвращают std::ostream&.
sum += val - к sum присваевается sum + val. sum = sum + val.
Это блять как? Зачем? Что за синтаксис? аААА
Ты имеешь в виду что-то вроде ++i, где i - переменная?
Да с этим вроде всё норм. Но вот этот += с одной стороны кажется удобным, а с другой - каким-то залупоглазым монстром
Может кто нибудь помочь найти где я облажался? Ридеры почему-то входят в вечный wait.
http://pastebin.com/MXAcGJLv
Не, я про i++, который сначала возвращает i как есть, а потом увеличивает его на единицу.
Я имел в виду, что всё, что ты просписал в строках с #include - имеется в каждом компиляторе как стандартный набор
Все которые поддерживают C++11.
Тебе удобнеt писать your_variable_name_from_any_library_numder_1488=your_variable_name_from_any_library_numder_1488+n?
Забыл добавить your_library_name:: перед именем переменой.
Сегодня новую картинку скачал. Красивая?
Непривычно это когда +=1 пишешь вместо ++ как в питоне. Или когда пишешь var=$(echo "2.5*"$var | calc -p)
Двачяя
Кстати, что-то не могу нормально задать условие.
Мне нужно задать чтоб программа выполнялась при i >= 0 и i<=0.
И как мне их записать? Если просто while (i<=10) - всё выполняется, но выходит за пределы 0, когда добавляю (i>=0, i<=10) - аналогично.
Выполняю упражнения из книги.
Кстати, я уже разобрался сам, выставив одно крайнее условие.
А что, несколько условий в while нельзя задавать? Там дальше if уже юзать, при надобности..
Липман из шапки. Упражнения к разделу 1.4.1
Говорю же, у меня всё вышло, но мне нужно знать, как ставить несколько условий в while
Там нет упражнения в котором нужно or или and. Там все упражнения про то чтобы сначала задать начально значения переменой, а потом по 1 уменьшать его или увеличивать пока оно не примет другое значение.
Я в этом разорбрался. Но я вспомнил одну задачку на си, и мне вдруг стало интересно, как это делать тут.
Гугл выдавал мне совсем не то, что нужно было
Гуй умер, движки на крестах уже никто не пишет, LLVM вроде пока цветет и пахнет.
Просто где?
Ни одна из этих областей не умерла, вась. Ну разве что в мечтах веб- и Ява макак.
За время твоих бамповмог бы и сам проверить.
Что на выхлопе у тебя, где комменты? Думаешь, кому-то нужно тратить своё время и копаться в говнокоде? Прояви уважение
У тебя не совсем верно написан тестовый пример.
Он не отражает сути задачи.
В твоём примере ошибка в строке 25 (http://pastebin.com/MXAcGJLv).
>while (! readers_count >= 0) can_read.wait(lock);
Тут мы должны ожидать сообщения от can_read, только когда другой поток пишет.
У тебя используется значение -1. Но читающий поток это значение все равно никогда не увидит. Т.к. оно меняется в пишущем, захватывая мьютекс на всю операцию.
Твой while (! readers_count >= 0) получается вообще избыточен. У читающего потока вообще никогда не возникнет ситуация, когда он не может читать. Но никакого data race не случится. Т.к. на всю работу с файлом у тебя стоит мьютекс.
Вот и выйдет, что первым начнёт работать тот, кто быстрее залочил мьютекс во время создания потоков.
>Где сейчас C++ реально используется?
Нигде не используется, вакансий нет, проходи в другой тред.
Ребята, буду благодарен за помощь в моих вопросах, есть недопонимание и пробелы, которые я хотел бы заполнить. большими хуями
1) Есть тридва файластула:
main.cpp, ClassName.h, ClassName.cpp.
Соответственно, там лежит главный файл с main'ом, описание класса, реализация класса. В файле реализации - Classname.cpp, я подключаю только header-файл -
ClassName.h, в header-файле, я вверх вставляю только такой код (защита от повторного включения)
#ifndef __CLASSNAME_H__
#define __CLASSNAME_H__
#endif
Внимание, вопрос: как работает эта конструкция, и что за константа __CLASSNAME_H__? чему она равна?
2) Как из главного файла - main.cpp (в котором я подключил только header-файл ClassName.h я вижу реализацию данного класса? Почему я не должен подключать файл с реализацией с помощью директивы
#include "ClassName.cpp"
Заранее, спасибо, ребята, если что пост большой, мог обосраться с разметкой.
upd.
Попробовал, оказывается без
>>#include "ClassName.cpp"
ничего не работает.
Тогда возникает еще вопрос: надо бы по-хорошему и в файл с реализацией защиту от повторного включения сделать?
И вообще нахуй нужны .h файлы, можно было бы хуярить реализацию вместе с описанием, помогите, почему я такой тупой?
всмысле, блядь, тебе пруф что ли предъявить?
блядь, тварюга, ну пожалуйста, я читал здесь же
https://code-live.ru/post/separate-compilation-cpp/#_1
у того пидораса все работает, а у меня нихуяя,,
атятятя помоги пожалйста
http://programmers.stackexchange.com/questions/254233/why-do-we-need-to-include-the-h-while-everything-works-when-including-only-the
Спасибо, молодой человек, за короткий и лаконичный ответ.
Дружище, подскажи дауну - я делаю как сказал >>813006 - пидор, и у меня выводится ошибка (не может достучаться до реализации методов.
Т.е. в хидере - только интерфейс,
В цпп - только реализация, т.е. определена каждая функция через :: , соотв. в него подключил хидер
В майн если только подключаю хидер, все накрывается медным тазом, но если еще и подключаю цпп, то все норм.
Ошибка пикрелейтед.
И при чем тут это к шаблонам, а тем более контейнерам? Ты даун?
Поцоны, хочу в гейдев научиться, и, конечно кодинг.
С++ ведь подойдет?
Извиняюсь за тупой вопрос
Ну что ты начинаешь?
найс самоподдув)))
в душе не ебу, как можно поддерживать школьника-робота с всеголишь одной командой: "нет ты"
А то смотрю, некоторые посты потёрли
Ну хоть коней с котами не постят. Аж хорошо-то как
Я ж не Эскобар, среди этих двух долбоебов ИМХО школьник лучше, и потому победит. Но лучше бы всем тредом запилили какой-нибудь годный крестопроект, а не агрились друг на друга как псы цепные.
А как по мне, так этот школьник - соснёт хуйца, ибо ток на двощах может срать
>надо бы по-хорошему и в файл с реализацией защиту от повторного включения сделать?
Если собираешься их инклудить, то да. Так удобно делать, чтобы быстро запилить прогу без проекта/мейкфайла - тупо заинклудить все cpp в main.cpp, и скомпилировать одной строчкой.
>И вообще нахуй нужны .h файлы
Чтобы линковщик смог соединить объектные файлы друг с другом. Каждый cpp файл компилируется независимо, и чтобы потом соединить их вместе, компилятор должен знать типы функций и структур, которые будут вызываться из других модулей.
>можно было бы хуярить реализацию вместе с описанием,
Запросто. Но тогда потребуется один объектный файл на всю программу. То есть достаточно крупная программа будет компилироваться каждый раз по несколько минут.
>Никто и никогда cpp не инклудит, ебанько
Инклудить можно что угодно и куда угодно - это тупо конкатенация текста.
Я уже выучил thumb ассемблер под арм, про что вы ебланы и не слышали. А я могу конвертить из кайла в гнусь легко. Циклы блять. Вот же маги тут собрались 30 летние.
Чего такой нервный? Таблеточки принял?
А ты крутой? Знаешь нахуй никому не нужный уебищный стек технологий? Небось еще под спектрум пишешь сейчас.
Спектрум разве что его мамка под столом ползая застала.
Мне предлагают ввести 2 числа и из них вывести те числа, которые будут в промежутке.
http://ideone.com/3xVIWj
Чёт вообще ничерта не выводится
Упс, я кое что не туда поставил. Лол
Так в чём соль: всё зависит от введённых тобою чисел. По этому я и вписал туда >= x
отуда ты такой взялся? у тебя z инициализирована нулём, и по твоему условию ты никогда в тело цикла не попадёшь
Да просто слишком буквально принял указание так прописывать переменные.
Окей, сейчас вроде работает, благодарю
Ты не понимаешь, тебе нужно самому научиться разбираться в проблемах, искать решения и прочее. Ты можешь спросить в треде, как сделать хуйню_нейм лучше или какая реализация более подходящая, но никак не сделайте за меня, покажите мне ошибку и им подобное.
В шапке даже сказано что тебе стоит пойти НАХУЙ, а также что делать если в проге ошибка. Алсо, если твой котелок совсем не варит, то берешь и останавливаешь программу на каждой строчке, где потенциально ошибка и смотришь что происходит. Дебажить по простому говоря.
Не нравится что-то скрой пост и всё. Я не заставлял тебя лезть и проверять.
Да, не мог найти ошибку, бывает. Сам нюфагом был. Отстань, короче
Ты что блядь совсем дебил? Что нахуй за позиция, НЕ НРАВИТСЯ НЕ СМОТРИ.
Ты даже ошибки компилятора читать не можешь, на том же идеоне написано.
error: 'z' was not declared in this scope
while (z > x)
Как это перевести на русский?
Z, была не объявлена в этой области, грубо говоря, какие твои действия? ОБЪЯВИТЬ ЕЕ! Тут проблема не в ошибки, все ошибаются, тут нет ничего страшного. НО ТЫ БЛЯДЬ ЧИТАТЬ НЕ УМЕЕШЬ, ПРОСТЕЙШУЮ ОШИБКУ. Можно даже в vs кликнуть по ошибке он тебе строчку покажет. А если установить visual assist или resharper, то они даже за тебя исправят.
> Сам нюфагом был
Я блядь читать умел, ошибки. Тебе же ясно написано. У тебя же не ошибка в шаблоне, которую бывает хуй прочтешь.
Пиздец кароче. У тебя с такой позицией нихуя не получится. Лучше язык меняй вообще, цпп не очень вариант для таких как ты.
Мдэмс, а вот почему-то не было ошибок у меня. Оно просто скнопелировало, выводило или ничего, или 0 и всё. Смотри пикрелейтед
Тебе лишь бы придраться. Иди к чёрту
У меня были проблемы, когда в int я вписал z = 0.
ты уже смотришь более позднюю версию кода, когда я оттуда по ошибке стёр переменную вообще, и не успел вернуть обратно
>Используй иде, а не какую-то хуету
Cтоит qt creator, но пока лень в интерфейсе разбираться. Лучше уж тогда vim+gcc, но там тоже нужно разбираться, так что пока достаточно и этого
Кстати да, я думал над этим, но совсем забыл, пока разбирался "почему же оно не выводит ничего"..
Нужно подумать на досуге над этим
Ну тип можно юзануть if и for, но как бы по книжице ты ещё этого не знаешь, так что выйдет не кошерно.
Других мыслей на этот счёт у меня нет
Ну у меня вышло, когда я переписал её на if и for, хотя до if-а ещё не дошёл.
сорян, просто поделиться не с кем
Ошибка правда в этой строке, но потому что ! имеет высший precedence чем >=, лол, чего я не знал. Спасибо.
я писал, но все было ок.
я даже не знаю чем тебе помочь, профайлером разве что посмотри, ага.
тамеры?
у Кт проблемы с именами просто
QList - это вектор
QLinkedList - это линкед лист, тот самый, с указателями
(ещё есть очередь и стек отдельно)
есть ещё QVector - хуй пойми что вообще, не использовал ни разу
Там же по инвайтам заходить...
лейаут формы измени на строковы или колончатый, в него свой виджет, и сайз полиси на расятягивание
суффиксное дерево
Не получается собрать GDB для Qt. Есть у кого-то готовый набор файлов, чтоб забросить куда надо? (чисто для С++).
Ага, отладчик такой.
codecvt_utf8 при кодировании в wchar_t на винде дает неправильный результат. UCS там даже и не пахнет.
Плюс охуенные "текстовые потоки", которые по стандарту можно инстанциировать только с char и wchar_t(который на винде 16 бит) и нельзя с char16_t и char32_t так и добавляют кроссплатформенности.
Ууууужас
Только char и u8"", wchar_t ненужен.
char16/32_t — нужно (как настоящий тип, по которому можно перегружать), но не до конца понятно, где именно.
Не понимаю, ты хочешь, чтобы стандарт Unicode на 1500+ страниц включили в стандарт плюсов?
<неважно что> g(void);
а другая — возвращает
void f(<неважно что>);
я не могу устроить композицию этих функций
g(f(<аргументы для f>));
???
Ведь по типам всё в порядке.
В последнем драфте добавили чуть ли не 300 страниц, так что подобный ход не будет чем-то из ряда вон выходящим, лол.
Я не про указатель.
Когда только вкатывался в программирование, учил с++. Так что классы, шаблоны, лямбды, умные указатели всё это примерно понимаю. Потом занимался питоном, жавой, шарпом. Сейчас снова надо вернуться к с++. Чего умного почитать посоветуете?
Потому что формально g(void) не принимает void, а является полным эквивалентом g(), т.е. функции без параметров. Из-за этого void в принципе не может быть параметром, чисто синтаксически оно не распарсится так.
Логика очень простая. Возврат void как полноценного типа оставили только ради шаблонов, чтобы можно было писать что-то вроде return f <T> (); А сценарии, в которых надо написать f(g <T> (...)) с void-функциями, встречаются гораздо реже (это вообще нечто странное - внешняя шаблонная функция должна быть грязной/методом, чтобы был смысл вызвать ее без параметров, но в то же время для нетривиальных аргументов шаблона она как-то должна использовать полученный аргумент), а поведение их - неоднозначно. Вероятно, поэтому такое и запретили. Другая причина - f (void) это C-совместимая часть (на крестах так вообще не пишут, f () короче), а когда это пилилось в C, полиморфизма, шаблонов и всей хуйни не было, и к типам отношение было проще, в духе "ну надо как-то обозначить отсутствие параметров, о, у нас void свободно, возьмем его". Все равно типы всегда были известны сразу, и было принято такое делить на отдельные инструкции, а не выебываться.
>внешняя шаблонная функция должна быть грязной
А ты соображаешь, я смотрю. Да, это отличная идея помечать грязные функции! Почему же C++ не позволяет принимать void? Как const у методов означает thread safety, так void в параметре функции означал бы, что она имеет сайд-эффекты.
Так подписывай каждый такой метод: "грязный сука, обосрался блядь".
char и wchar_t нужны, но для совместимости - нельзя такое выбрасывать.
>но не до конца понятно, где именно
В basic_string, basic_istream/basic_ostream и во всем, что связано с локалями (ctype, например).
>>813547
На него можно сослаться, как на стандарт C, например. А вообще нужно только добавить средства для доступа к символам строки, закодированной в разновидность utf. Да, будет доступ O(n) (или дополнительные O(n) по памяти), ну а другого решения и нет какбэ.
> во всем, что связано с локалями
Забыл напомнить, что они неюзабельны, и, следовательно, ненужны.
>На него можно сослаться, как на стандарт C, например.
И что делать, когда выйдет новый стандарт юникода, после того, как сослались на старый?
Вангую, чтобы локаль не подменили в другом треде во время вызова.
>const у методов означает thread safety
Схуяле? Пока работает const метод, может вызваться мутатор, и все, приплыли.
>означал бы, что она имеет сайд-эффекты
Небось на концептах можно будет такое сделать. Пока что есть friend-инъекция, можно помечать что угодно чем угодно, хоть и с еблей. Я сейчас пилю автоматические гарантии исключений, например.
>И что делать, когда выйдет новый стандарт юникода, после того, как сослались на старый?
То же, что и делают с C. Вон в 17 стандарте теперь ссылаются на C11 вместо C99.
>Забыл напомнить, что они неюзабельны, и, следовательно, ненужны.
Ваши предложения?
Концепция локалей нормальная, но тупо сделали, что хуйня портабельная. На разных платформах локали называются по-разному - вот где пиздец, как так можно было сделать, я хз.
>Вангую, чтобы локаль не подменили в другом треде во время вызова.
Тоже так думаю. Только нахуя такое счатье, из-за которого производительность не масштабируется во времени? Хотя, Джоссатис пишет, что юзайте напрямую фацеты, когда хотите перворманса.
Вся суть крестотреда в одной строчке.
>Концепция локалей нормальная, но тупо сделали, что хуйня портабельная.
Это такой принцип развития C++: взять нормальную концепцию и сделать тупо.
Да, thousand_sep() возвращает char_type, должен const char_typr*. Ну там много подобного.
Так что не нужны.
Какие там ошибки?
>Это такой принцип развития C++
Это такой принцип развития любой хуйни, создаваемой комитетом. Каждый в свою сторону одеяло тащит.
1) size_t int n - два типа одновременно. То же самое для массива
2) size_t, j - запятая лишняя.
3) j += 1 - тут декремент нужен, а не инкремент.
Вообще, i += 1 - это как-то не по-нашему. Лучше ++i.
Для массива не лишняя, long long ~ long long int, как и для других спецификаторов размера.
4) j=i-1
kuriata desu
Иногда один С++ заебывает, хочу почитать для развития что-нибудь про алгоритмы и организацию самих железок. Есть что-нибудь для ньюфагов, но без воды?
>А сколько же ты литературы перевернул, что во всех вода?
Вангую в нем шкальника, который месяц изучает cpp и чет уже ПРЕСЫТИЛСЯ.
Пусть буфер отчистит
С каких это хуёв QList вектором стал? QVector это аналог std::vector
Крайне херовая будет шпаргалка
Проиграл с маньки. Ну давай почитай const-методом из вектора, пока туда пишут. Такой-то threadsafe будет.
Ты опять выходишь на связь, школьник? Пошел нахуй отсюдова со своими аргументами уровня /po
Если какие-то опущенцы придерживаются небезопасных соглашений, то это не значит, что нужно повторять за ними. Показывай авторитетный стайлгайд в качестве пруфа или молчи вечно.
И тут ты срываешься, хочешь идти писать на борде, мол " что это за хуйня ", но понимаешь, что тебя начнут гнать палками как нюфаню и тут... Приходит озарение, тебе как-будто открывается истина и до тебя доходит вся суть того, над чем ты ломал голову пол часа.
Спасибо, анон, что ты есть
Не, мне такое низя. Я ведь ещё учусь и должен сам находить кривости кода. Но схоронил на всякий
Аааа, я понял, к чему ты клонишь!
https://ru.wikipedia.org/wiki/Метод_утёнка
Тип сформуливровав запрос, я сам дал на него ответ?
Первый раз о таком слышу. Хех
> опущенцы придерживаются небезопасных соглашений
Опущенец, это предполагает std-либа в отношении тех классов, которые ты ей подсовываешь.
> Показывай авторитетный стайлгайд
> авторитетный
Тупое быдло с зековской психологией не думает, оно опирается на афтаритеты. Ну ладно, я терпим к недостаткам людей и к быдлу и могу дать ему ссылку на авторитет https://herbsutter.com/2013/05/24/gotw-6a-const-correctness-part-1-3/
>утверждает, что константность метода означает потокобезопасность
>пруфает анрилейтед статьей про разделяемые константы
>>утверждает, что константность метода означает потокобезопасность
>>пруфает анрилейтед статьей про разделяемые константы
Цитата из "анрелейтед" статьи
> Concurrent const operations on the same object are required to be safe
Чуть ли не буквально первая строка твоего гринтекста.
Ты, видимо, просто английского не знаешь, вот и не понял.
Насчет второго вывода: интерпретатор на идеоне говно. Юзайте ракет.
>2016
>не иметь обратных итераторов
>писать велосипеды
reverse(begin(seq),end(seq));
reverse(rbegin(seq),rend(seq));
Что писать в резюме, если опыта работы по C++ нет?
Ceрьeзнo
В том и вопрос, что commercial development experience есть, а C++ experience нету. Писать что теребил буст и opengl?
Не забудь упомянуть что письку теребил.
No C++ commercial development experience
Пиши, что ешь борщи. Все поймут.
сажа прилипла
Ах да, самые тупорылые презентации у страуструпа, саттера и мейерса, три старых клоуна-гомоске блять. Еще и этот хуй со своими патлами седыми. Зашел посмотреть что там новенького в плюсах на каналы какой-то конфы 2014-2015, воз и ныне там, мастодонты показывают как создать переменную, лямбду, метод и прочее капитанское говно по полтора часа. Пиздец, приплыли. МЫ ЖЕ БОРЕМСЯ С КОМПЛЕКСИТИ. Даже на WWDC такой хуйни нет, там только по 20 минут намекают на новое апи, а потом дырявые аплодируют когда оно появляется на экране.
>недоразвитый язык
Ей богу, не хотел оскорбить местных бичар, только хотел сказать, что прочитав книгу 1000 страниц по С++ ты научишься читать строку из файла, применяя аж целую СТАНДАРТНУЮ БИБЛИОТЕКУ и ИТЕРАТОРЫ и АЛГОРИТМЫ! А после первого туториала по питону или какому-нибудь еще говну уже можешь сделать твиттер, онлайн магазин и фейсбук. Ну вы понели. Я вообще не знаю нахуй я сюда это пишу, я вас обмудков и за людей то не считаю, лол.
>C++ реально используется?
Я на мобилах использую. А так — нигде, мертвое говно, нинужно. Двачедауны из этого треда 100% не пишут ничего на плюсах за деньги, готов на это квартиру поставить.
мимо хейтер всего живого
Пошел нахуй пидор гнойный, в глаза ебешься или просто тупой блять? Я тебе про фому, ты мне про ерему, мне на тебя похуй, на твой ебучий си++, на твоего анального бога страуструпа, раст, ди, р и прочее говно. Я эти базворды в резюме писал когда ты похапе осваивать начал. Мозги включи, мудень ты педальный, я где-то написал что у меня проблемы с изучением си++? Или что мне его надо изучать? Я поднял конкретно один вопрос — страуструп лох, его книги самые тупые, самые дорогие, а презентации самые уебанские. Одно видео рича хикки заводит больше, чем все, что высрал труп страуса за всю свою жизнь. Я жалею 1200 рублей, за которые я купил С++ что-то там этого пидораса в две тысячи каком-то году. Просто тогда все дрочили на эту парашу и без бумажной книги было не тру.
Ах да, еще ваша съебавшая через пизду за бугор аленка си++ с ванькой который душил питона и перекладывал бумажки в хуяндексе, блять, два гениальных программиста, на зарплате офисное кресло пропукивали, удалите нахуй этот говноблог из оп-поста, стыдно смотреть.
Конечно страуструп тупой хуесос без навыков. Какой-нибудь школьник в треде уже пишет лучше чем он и излагает материал проще/понятней.
Он же всего лишь создал С++, стал первопроходцев в ООП. Так по хуйне.
Предлагаю всем хуесосить его, нихуя в жизни не достиг. Пердун старый блядь.
Ты в натуре ебаный баран. Прочитай еще раз, клоун, мои послания и достигни, сука, просветления.
Нет.
Я хуевый самбист, ведь ни раз опускался до мата.
Но мать учила быть сильным и это вещь многогранна.
Скажем, есть таблица, а есть виджет для редактирования содержимого клеток.
Могу ли я во второй передать этот индекс и оставить его там? Или будет бобо если в табличке что-то поменяется?
Установка запарывается на этапе qmake. Возникает ошибка "Unable to generate UUID" гугл по этой теме результатов не дал. Может я что-то криво собираю? Работаю на винде. Добавил qmake в Path. Версия qt - 5.7 или для корректной работы qmake нужно сделать что-то еще?
Что лучше прочитать, если я уже знаю базовые принципы программирования?
1. Страуструп
2. Рао "Освой с++ самостоятельно"
Главное осваивай ООП, шаблоны, stl. Офк ты можешь прочитать 1000+ страниц книги для новичков. Но ты же уже знаешь их). Поэтому решай всякие задачки.
Например сортируй векторы лямбдой, напиши свою структуру данных (словарь, стэк, вектор), простенькую игру. Лучше учи алгоритмы и паттерны.
А вообще ты пиздоглазое мудило и я ебал твою мать, в шапке все написано.
Ну если ты познал уже базовые принципы С++, можешь почитать книгу джеффа элджера - http://www.sugardas.lt/~p2d/books/Eldger.pdf
Там речь идет о довольно интересных темах.
Все шло гладко, пока не дошел до главы, в которой описывается работа с интерфейсом, а именно с библиотекой fltk. Уже четыре часа я с ней бьюсь и не могу запустить проект. Сделал все, как описано на сайте http://www.c-jump.com/bcc/common/Talk2/Cxx/FltkInstallVC/FltkInstallVC.html
Вот скрин выполнения, кодировка в ошибках меня пугает.
IDE msvs 2015.
Выручайте господа, я уже в отчаянии.
Спермопроблемы.
А индиги выше уже вкатываются в убийцы Crysis ( Warhead, 2, 3 ) И прочие шляпы.
Дохуя блять умные, а гуманитарный вуз со второго курса мозги очень сильно разжижает отсутствием матана и вообще какой то практики. Я в этом плане с 23 уровня деградировал.
Обычная < const < constexpr < отсутствие переменной.
Да, меньше багов
Вот есть у меня устройство. Для него установлен официальный драйвер. Хочу использовать этот драйвер для управления устройством, потому что официальное приложение неудобное, а аналоги платные. Суть в чём, как мне использовать хуйнейм-драйвер? Нихуя гугл не помогает, везде статеечки как НАПИСАТЬ драйвер, но я это в рот ебал, мне нужно готовый использовать
Этот вопрос решается на стороне телевизора.
Тебе нужна его прошивка, которой нигде не будет.
Теоретически её можно сдампить, а дальше долбить её дебагером.
>>818053
Если разработчик не дал никаких официальных API для работы с его драйвером, то ты никак не сможешь его тыкать напрямую.
Твой выход - реверс протокола.
Сначала погугли, вероятно кто-то уже всё отревёрсил и тебе осталось взять только нужную либу.
Если нет, то ставишь сниффер на тот вид связи что у железки.
Смотришь пакеты и выстраиваешь принцип работы.
Уже не терпится написать что-нибудь полезное.
Придумал для себя удобный "менеджер задач".
Так вот в чём вопрос. Стоит ли прямо сейчас читать книги из следующих разделов (Скотта Мейерса и т.д.) или лучше сейчас попробовать так поковырять, а потом вернуться к теории?
>Этот вопрос решается на стороне телевизора.
>Тебе нужна его прошивка, которой нигде не будет.
>Теоретически её можно сдампить, а дальше долбить её дебагером.
Покажи книгу которая научит
К сожалению в ревёрсинге я не силён.
Занимался им только на базовом уровне.
Попробуй посмотреть в сторону крякинга.
Там ты получишь нужные базовые знания инструментов, асма и принципа работы программ.
Конечно тебе нужны знания ассемблера, причём на твоём тв он, вероятно, будет несколько другим.
>Сука, убивал бы за перегрузку арифметических операторов
И ещё так убого сделанную. Не могли сделать как в хачкеле, чтобы можно было делать свои операторы и задавать им приоритет и ассоциативность
Нет. Можно сделать поток
Версию фреймворка при сборке поставил 3.5, потыкал все что только нашел - все равно на батином ноуте с неапдейченной семеркой не запускается (ошибка при запуске 0xc000007b).
говноедская студия ненавижу блядь сука сука
http://www.rohitab.com/discuss/topic/40262-dynamic-forking-process-hollowing/
>>818076
Пиши как только есть желание, опыт важнее теории
Будешь идти в контору - лучше прочитай все
>>818005
Если ты про современные ящики типа lg smart tv то на офф сайтах есть апи, поковыряй там
Может найти какой-нибудь опенсорс, где меня будут учить, а я буду прогать для них за спасибо?
Куда дальше развиваться? Что можно делать?
C++ ненужон
>http://www.rohitab.com/discuss/topic/40262-dynamic-forking-process-hollowing/
А если приложения разной разрядности?
А это точно удалит весь qt? У меня даже папка в home с ним создалась. Раньше такого никогда не было.
На самом деле он писал какой-то йоба проект и несколько тредов назад закончил. Потом нажал кнопку компилировать и до сих пор ждёт пока компиляция завершится.
Зато есть пакет Яровой.
> Стэнли Липпман, Жози Лажойе и Барбара Му Язык программирования C++
Добра. Спасибо. Я просто слепошарый немного, не увидел Downloads
Бмп
Бамп
Можно. Но не нужно
Исходники в UTF-8, пикрелейтед хуита. В убунте на кодблоке все с кириллицей нормально. Если перевести через какой Sumlime в виндокодировку, все сразу в MVC ок, но какого хуя там должна быть виндокодировка в 2015й то версии?
Что-то ОП не подоспел
и конкретно охуел
не способен в перекат
ОП-хуец дегенерат
Наконец-то кое-как
Мы решились напустяк
Запилили тред мы новый
Аутируя как совы
А точнее как сычи
Братья-боги крестухи
И пасту заебеньте с перекатом, может ОП воскреснет к след. треду.
Есть у меня объекты Класс и Сабкласс, но храню я их всех в массиве с типом Класс. Как мне в лупе понять, какого именно класса объект и сделать с ним какие-то действия, кроме проверки dynamic_cast'ом? Возможно ли это, если у базового класса нет виртуальных? Или в этом случае и компьютер даже не в курсе, что там объект другого типа, т.е. на стадии компиляции уже всё закрепляется?
То есть, что-то такое:
MyClass a;
MySubClass b;
MyClass •arr[2] = {&a, &b};
for (int i = 0; i < 2; i++){
if (type(arr) == MyClass){
arr->baseMethod()
} else if (type(arr) == MySubClass){
arr->subClassDataMember = 20;
}
}
Я понимаю, что так делать не стоит и нужно менять архитектуру приложения, но никакого приложения нет, просто возможность интересуют.
У базового класса может не быть чисто виртуальных (pure virtual) методов, тогда ты сможешь создать объект этого класса.
Если есть чисто виртуальные методы, то тогда ты просто не сможешь сделать объект базового класса, т.к. в таблице вирт. функций у тебя не будет реализации этого метода.
Проверить является ли класс базовым или наследником без всяких изъёбов можно только через dynamic_cast.
Но ты в любом случае не сможешь обратиться к данным/методам наследника, если работаешь с базовым.
Я бы тебе пару примеров накидал, но мне пора на вёсла.
Не, чисто виртуальные я ещё не трогал (главу не до конца дочитал, лол).
>Но ты в любом случае не сможешь обратиться к данным/методам наследника, если работаешь с базовым.
Да, про это я что-то забыл. А как-нибудь можно затайпкастить там, но с сохранением данных наследника?
Просто (MySubClass)•arr не сделать же, потому что вызывается конструктор MySubClass(const MyClass *o), ну и очевидно, что из объекта o не достать subClassDataMember, потому что проблема что до каста, что внутри конструктора одна и та же.
Плохо понял о чём ты.
Тебе ничего не мешает кастовать указатель. Можешь гонять его как тебе удобнее. static_cast или dynamic_cast.
https://ideone.com/Q3qnZv
Вот я сохраняю и меняю данные наследника.
Менять данные напрямую вообще не очень хорошо. Всё желательно делать через методы.
В качестве исключений могут быть простенькие структурки с каким-то простым набором данных.
А, ну да, лол, чего это я. Спасибо.
125 постов как в бамп лимите. Уроды перекот не пилят.
Чёт я тебя слегка дезинформировал.
Используй dynamic_cast, когда тебе нужно проверить возможность каста. Или тебе нужно обыграть это.
Короче, dynamic_cast для runtime.
static_cast для compiletime. В любом случае используя static_cast, ты должен быть уверен что такое преобразование возможно.
Потому что опа больше нет
Это копия, сохраненная 25 августа 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.