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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
640 Кб, 570x636
Оффициальный™ традиционный® C++ тред #22 #663494 В конец треда | Веб
Спасибо за страдания мои:
За тысячестраничные талмуды,
За всратые олдфажные гуи
За NULL'ы и взаимные инклуды.

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

За SFINAE спасибо, за segfault,
За void main и мудрости Алены,
За Герба, положившего свой болт
На крашащие студию шаблоны.

Спасибо за безграмотных юнцов,
Упорно в тред постящих говнолабы
В надежде, что анон в конце концов
Решит их или даст совет хотя бы.

За все я благодарен C++ -
Пока сквозь дебри путь держу отважно,
Я - программист, а не макак-индус.
А остальное, в сущности, неважно.


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

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

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

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

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

FAQ:

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

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

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

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

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

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

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

Проектирование:
Следует пролистать все перед переходом от лаб к написанию настоящего софта.
Последний пункт есть квинтэссенция ГИБКОСТИ, поэтому стоит прочитать его в любом случае, чтобы охуеть от того, как можно делать.
Ален Голуб - Веревка достаточной длины, чтобы выстрелить себе в ногу (2001) - https://goo.gl/fBmuxp
Джеймс Коплиен - Программирование на C++ (2005) - https://goo.gl/Y1WGdU
Андрей Александреску - Современное проектирование на C++ (2002) - https://goo.gl/e1V5BC

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

Наиболее детальные описания языка:
Бьерн Страуструп - Язык программирования C++ (на ангельском) (2013) - https://goo.gl/XkAiOX
<устарело> Бьерн Страуструп - Язык программирования C++ (2010) - https://goo.gl/iZBDiV
Стандарт C++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/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
Куча других блогов (на ангельском) - 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

Q: Я готов начать погроммировать! Куда мне писать код?
A: Под шиндошс удобно использовать IDE Microsoft™ Visual Studio®. Базовую версию (2015 Community) можно бесплатно скачать отсюда: https://goo.gl/qgAAc6 (русская версия) или https://goo.gl/WIPW9L (ангельская версия). Чтобы начать писать код, нужно запустить Visual Studio, кликнуть "Файл - Создать - Проект - Пустой проект", после создания кликнуть слева правой кнопкой мыши по пункту "Файлы исходного кода", выбрать "Добавить - Создать элемент - Файл C++". Свои хэллоуворлды писать в этот файл, в дальнейшем можно добавить другие файлы и хедеры. Чтобы скомпилировать и запустить проект, нужно нажать "Сборка - Собрать решение", а затем "Отладка - Запуск без отладки".

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

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

Предыдущие треды на архиваче:
#1 https://arhivach.org/thread/94971/
#2 https://arhivach.org/thread/94972/
#3 https://arhivach.org/thread/99414/
#4 https://arhivach.org/thread/100995/
#5 https://arhivach.org/thread/105148/
#6 https://arhivach.org/thread/109335/
#7 https://arhivach.org/thread/112797/
#8 https://arhivach.org/thread/114519/
#9 https://arhivach.org/thread/117109/
#10 https://arhivach.org/thread/120019/
#11 https://arhivach.org/thread/122683/
#12 https://arhivach.org/thread/124637/
#13 https://arhivach.org/thread/125532/
#14 https://arhivach.org/thread/127327/
#15 https://arhivach.org/thread/128133/
#16 https://arhivach.org/thread/134437/
#17 https://arhivach.org/thread/135285/
#18 https://arhivach.org/thread/139690/
#19 https://arhivach.org/thread/144812/
#20 https://arhivach.org/thread/147540/
#21 https://arhivach.org/thread/149983/

Старые ненумерованные треды:
https://arhivach.org/thread/45477/
https://arhivach.org/thread/48611/
https://arhivach.org/thread/60085/
https://arhivach.org/thread/66322/
https://arhivach.org/thread/69413/
https://arhivach.org/thread/73221/
https://arhivach.org/thread/77999/
https://arhivach.org/thread/79194/
https://arhivach.org/thread/82038/
https://goo.gl/vvs9GP
https://goo.gl/ZnBsYt

Отдельные Qt-треды:
https://arhivach.org/thread/15387/
https://arhivach.org/thread/65590/
#2 #663495
Обновление шапки отложено из-за масштабности, но уже не за горами. Покайтесь, ибо грядет!

Предыдущие треды на архиваче:
#1 https://arhivach.org/thread/94971/
#2 https://arhivach.org/thread/94972/
#3 https://arhivach.org/thread/99414/
#4 https://arhivach.org/thread/100995/
#5 https://arhivach.org/thread/105148/
#6 https://arhivach.org/thread/109335/
#7 https://arhivach.org/thread/112797/
#8 https://arhivach.org/thread/114519/
#9 https://arhivach.org/thread/117109/
#10 https://arhivach.org/thread/120019/
#11 https://arhivach.org/thread/122683/
#12 https://arhivach.org/thread/124637/
#13 https://arhivach.org/thread/125532/
#14 https://arhivach.org/thread/127327/
#15 https://arhivach.org/thread/128133/
#16 https://arhivach.org/thread/134437/
#17 https://arhivach.org/thread/135285/
#18 https://arhivach.org/thread/139690/
#19 https://arhivach.org/thread/144812/
#20 https://arhivach.org/thread/147540/
#21 https://arhivach.org/thread/149983/

Старые ненумерованные треды:
https://arhivach.org/thread/45477/
https://arhivach.org/thread/48611/
https://arhivach.org/thread/60085/
https://arhivach.org/thread/66322/
https://arhivach.org/thread/69413/
https://arhivach.org/thread/73221/
https://arhivach.org/thread/77999/
https://arhivach.org/thread/79194/
https://arhivach.org/thread/82038/
https://goo.gl/vvs9GP
https://goo.gl/ZnBsYt

Отдельные Qt-треды:
https://arhivach.org/thread/15387/
https://arhivach.org/thread/65590/
#3 #663513
Это ты снес старый перекат?
>>663765
sage #4 #663591
>>663494 (OP)

>эта смищная картинка с самой блевотной игрой в истории человечества


>этот унаследованный стиль обиженки


>этот костыль, собирающий статистику

>>663697>>663765
#5 #663693
#6 #663694
>>663487
И меня мотивируй
#7 #663697
>>663591

>>эта смищная картинка с самой блевотной игрой в истории человечества


Поссал на уриниста.
#8 #663765
>>663513
>>663591
Барин добрый: на конюшне порет только раз в месяц и не до кости :3 <3
#9 #663792
Какой сейчас положняк по гую в Шиндовс 10?
>>663800
#10 #663800
>>663792
Qt5. Остальное – никак.
>>663804
#11 #663804
>>663800
Как он со студией дружит? Много говна за собой возит?
>>663820
#12 #663815
Допустим есть такой код

void main(){}

Компилируем его, получаем исполняемый бинарный файл. Как из этого бинарного файла получить что-то типа такого

>"\x31\xf6\x4d\x31\xff\x66\x41\xbf\x1f\x16\x66\x41\x81\xef\x10\x11\x41\x57\x49\x89\xe7\x48\xbf\xd0\x9d\x96\x91\xd0\x8c\x97\xff\x48\xff\xc7\x48\xf7\xdf\xf7\xe6\x04\x3b\x57\x54\x5f\x41\xff\xd7"


?
#13 #663818
>>663815
скрипты линкера, objcopy
#14 #663819
>>663815
Читаешь побайтово, к каждому байту (в HEX представлении) добавляешь "\x", имеется ввиду конкатенация строк.
#15 #663820
>>663804
Установщик есть под штудию (для 15й только бета пока) Гигобайт с лишним.
#16 #663824
студия - дно ебаное, особенно по части анализа. На больших проектах работает как почта России посылки доставляет.
>>663829
#17 #663829
>>663824
Абсолютно согласен. Жаль для меня нет альтернативы.
>>663831
#18 #663831
>>663829
Проект сконвертить в cmake и юзать
CLion, Eclipse, QtCreator
Это только на вскидку, что умеет работать с отладчиком студии
>>663833>>663835
#19 #663833
>>663831
Я DirectX11 юзаю. В студии отладчик для графики есть. И на Unreal Engine пишу. Тоже без студии не обойтись.
#20 #663835
>>663831
А не, проебался, clion не умеет.
#21 #663953
>>663815
питхоном считываешь файл в байтстроку и ещё печатаешь
>>663954
#22 #663954
#23 #664004
Так как себя мотивировать, плюсаны?
>>664033
300 Кб, 638x826
#24 #664033
>>664004
Почитай.
>>664044
395 Кб, 500x463
#25 #664044
>>664033
Дум же на си написали.
Вообще, мне все говорят что игры писать очень сложно и ничего у меня не получится.
sage #26 #664051
>>664044
Ну и сиди дальше на шее у мамки, нытик.
#27 #664054
>>664044
А ты уже пробовал что-то писать? Может недо движок писал? Или игровую логику?
>>664058
#28 #664058
>>664054
Чесно говоря, я недавно книжку скачал и дошёл до первых глав с программированием.
Но Кармак-то гений был, знает компьютер отлично. А я мало что знаю.
>>664063
#29 #664063
>>664058
Ну тогда советую тебе взять юнити и учить C#. И работу проще найти. Будешь казуалки для мобилок делать. Я вот работу так и не нашел.
>>664068
#30 #664068
>>664063
Но я хочу учить не мертворождённый язык. Тем более что я слышал что игры делают в 90% случаев на с++. Ладно, сегодня отдохну, а завтра за работу.
#31 #664086
Изучаю книгу "Абстракция данных: стены и зеркала". Дюже удивился, что даже в методе вставки элемента в произвольную позицию списка там делаются проверки на неотрицательность позиции и проверка того, выделилась ли память для ноды, или у калькулятора ее не хватило, и в случае фатала выбрасываются исключения. Это все нужно в реальной работе, или такая дотошность избыточна?
#32 #664091
>>664086
Не увидел здесь дотошности.
#33 #664095
>>664086
Если ты пишешь зачем-то велосипедный контейнер, то да, обязательно. Но обычно ты можешь использовать готовый список, например, std::list, в котором все проверки и исключения инкапсулированы.
>>664097>>664099
#34 #664097
>>664095

>велосипедный контейнер


Я ебанутый и прочитал как волосатый мотороллер.
#35 #664099
>>664095
Я просто решаю задачи с хакерранка, да и на собеседованиях все это нужно знать.
>>664129
#36 #664111
>>664086
А еще интересно, почему они в этой книге в качестве позиции используют int и потом делают проверки вместо того, чтобы использовать unsigned?
#37 #664129
>>664111
Для простоты же. Обычно используется size_t и т.п.
>>664099
На собеседованиях тебя не заставят писать что-то с учетом всех деталей, как для продакшена. Могут попросить перечислить, какие ты бы сделал проверки, но не более того.
#38 #664148
>>664044
Дорога произрастает под стопами идущего.
#39 #664159
Смотрите, есть задача напечатать список в обратном порядке. Интуитивно я понял, как ее решать, но не могу объяснить себе, почему после вывода последнего элемента выводятся все остальные с конца.

Код: https://ideone.com/B4oVgn

При вызове функций в стек пушится кадр с переданными аргументами, адрес возврата, EBP и создаются локальные переменные. Интересен момент, когда произошел последний вызов функции. Мне кажется, надо было писать std::cout после скобок, тогда было бы проще разобраться. Вот произошел последний вызов с аргументом NULL, и мы оказались сразу за скобками, где std::cout. Печатаем и выполняем ret, из стека выталкивается кадр. Что теперь? Когда вышли из последнего вызова, то снова попадаем на строчку, где происходит печать и т.д.? Объясните мне.
#40 #664163
>>664159
Хотя нет, если писать std::cout за скобками, тогда будет обращение по нулевому указателю.
#41 #664176
>>664159
Что за сайт?
>>664180
#43 #664190
>>664159

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


Да.
>>664199
#44 #664199
>>664190
Я догадался, но не могу это представить.
>>664220
#45 #664220
>>664199
Ну представь себе вертикальную стопку книг. Ты накладываешь одну книгу на другую (адресс возврата, локальные переменные и т.д.). С каждым вызовом функции ты накладываешь новые книги. Когда ты выходишь из функции, то ты убираешь книги. На самом деле стек растет вниз, а данные мы никак не убираем, а просто перемещается на этот адрес возврата.
>>664234
#46 #664234
>>664220
Стек я себе представляю, я не могу себе объяснить, почему печатается предыдущий элемент. Мы выходим из вызова предыдущей функции, и - что? Что напечается? Данные из элемента, у которого next передали в функцию, из которой только что вышли?
#47 #664236
Похоже, Танненбаум все правильно говорит о том, что для понимания рекурсии надо порешать задачу о переносе колец на палочки с ручкой и бумагой.
>>664254
#48 #664254
>>664236
Бля, ну как можно не понимать рекурсию? Даже дети легко осваивают процедуры в паскале, в отличие от указателей, например.
>>664285
#49 #664285
>>664254
Ну представь, что ты долго раскручиваешь в дизассемблере небольшую программу, которая непонятно как работает. И наконец у тебя складывается полный образ этой программы, ты представляешь все переходы и видишь весь алгоритм. Вот это и есть понимание, а не "карач там функция вызывает сама себя)))"
#50 #664598
>>664111
Когда тебе нужно вычесть из unsigned, ты можешь получить отрицательное число. Страуструп и ко сами признались, что зря стали использовать size_t для контейнеров
>>664671
#51 #664671
>>664598
Ну и это не делает им чести, ибо беззнаковость вписывается в идеологию языка. Лучше изредка делать лишние проверки, чем все время держать половину области значений неиспользованной.
#52 #664722
Какую либу посоветуете для многопоточности? Boost пойдет? Проблем с разными платформами не будет?
>>664725
#53 #664725
>>664722

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


Ебу дал?
>>664726
#54 #664726
>>664725
А что? stl-я хватит?
>>664727
#55 #664727
>>664726

>664725


>А что? stl-я хватит?



Да, на всех платформах есть стандартная библиотека 11 стандарта. На 15 студии кое-что не реализовано, но по мелочи
>>664728
#56 #664728
>>664727
Ладно. Спасибо.
#57 #664738
>>664752>>664921
#58 #664752
>>664738
А инт всегда к ансайну приводится в таких выражениях?
#59 #664759
Сапчен. тут крч у меня эклипсина ругается.
проектик с мейкфайлом и синтаксический анализатор все фичи С++11 выделяет ошибочными все работает но глаз щипит
по сути нужет путь к верной stl папочке как лечить? куда рыть??
>>667254
#60 #664912
Какой может быть смысл у это строки? cin>>n,m;
>>664914>>664920
#61 #664914
>>664912
И зачем в string оба метода size и length?
#62 #664920
>>664912

>cin>>n,m;


Гугли оператор запятая. Сначала выполнится (cin>>n), а потом (cin>>m).

>зачем в string оба метода size и length


Для удобства. Все привыкли что длинна строки а не размер. А size скорее всего есть потому, что он есть во всех контейнерах.
>>664921
#63 #664921
>>664920
>>664738
А вот это зачем?
>>664925
#64 #664925
>>664921
Зачем или почему так? У тебя преобразовывается -1 в тип unsigned. Его значение будет равным (-1)%(2^32). И будет равным 2^32-1. Что точно больше 5.
>>664928
#65 #664928
>>664925

>Зачем или почему так?


Зачем. Можно же просто все unsigned больше отрицательных. Или не -1 в unsigned преобразовывать, а 5u в signed. Хотя и тут могут быть переполнения. Неужели правильно работающего варианта не сделать?
#66 #664929
5u - явное преобразование. Убери u и всё будет норм.
>>664930
#67 #664930
>>664929
Это понятно. А сравнивать unsigned и отрицательные нельзя?
>>664932
#68 #664932
>>664930
Можно. Но как видишь пользы от такого сравнения нет.
>>664934
#69 #664934
>>664932
Понял. Спасибо.
140 Кб, 1272x575
#70 #665002
Есть одна задача. Решая в лоб проверяю каждую подстроку и получаю 70% балов. Пытаюсь решить за O(n) и получаю 50%. Условие на пике моё решение здесь https://ideone.com/VrxvVl На тесте 8 6 (())(()) он посчитал ())(() правильно скобочной последовательностью т.к. не обратил внимание на ())((), а смотрел только на крайние скобки. Как исправить чтобы задача решалась за O(n)?
#71 #665093
Я что-то не могу понять как перегружать оператор [][]. Может кто пояснить?
>>665142>>665168
#72 #665142
>>665093
Эх.. зелёный.
#73 #665151
>>665002
1. Стек
2. Напиши функцию AreParenthesesBalanced.
>>665166
#74 #665166
>>665151

>Стек


Это же решение в лоб. И как тогда пройдёт такой тест?
14 6
(())(())()()()

>AreParenthesesBalanced


Что это?
>>665361
#75 #665168
>>665093
Оператор[] должен вернуть объект, у которого есть оператор[].
Если оператор[][] записать в виде методов, то будет
obj[j] => obj.operator[](i).operator[](j)
>>665169>>665277
#76 #665169
>>665168
там obj[и][ж]
#77 #665250
>>665002
Не люблю олимпиадки, но решил размять мозги.
Говно, но работает: http://www.es6fiddle.com/il0yhijt/
>>665272>>665378
#78 #665272
>>665250
Зачем на js? Хоть поясни алгоритм.
#79 #665277
>>665168
Я правильно понял? Нужно класс в классе делать?
>>665288
#80 #665288
>>665277
Не нужно а можно. Лучше переопределить operator().
>>665289
#81 #665289
>>665288

>Лучше переопределить operator().


Ок. Я задание со stepic делал. Там нужно было именно так.
>>665290
#82 #665290
>>665289
Ну тогда да или прокси класс, или operator[] может возвращать одномерный массив, тогда возможны вызовы с [][] - но это естественно не для всего подойдет.
RetardedHorse #83 #665301
Сап, делаю игру в консольке, как сделать одновременное движение нескольких фигуры(прорисовку фигур я сделал). Куда копать? Многопоточность, таймеры???
>>665313>>665348
#84 #665313
>>665301
Показывай код
34 Кб, 540x358
#85 #665326
Анон, есть IDE для ньюфага? Лучше всего что-то типа Notepad++, но с компилятором.
CODE:: Blocks реально монстр, раньше писал на Dev-C++, но он протух уже год как.
VS - это просто пиздец, я же только хеллоуворды пишу пока.
>>665329>>667252
#86 #665329
>>665326
CLion и QtCreator уже щупал?
>>665337
#87 #665337
>>665329

>CLion


Ты серьезно? Я срусь от VS, а ты мне такое советуешь.
Мне что-то типа Dev-C++, Notepad++, только не дохлое.
>>665344>>665350
#88 #665344
>>665337
Я серьезно. В свое время от блоков, бобов и эклипса обосрался, а как увидел не менее монструозный гринхаус — сразу стало норм. Так что перепробуй сначала все большие IDE, а потом попробуй SciTE и geany.
#89 #665348
>>665301
В цикле апдейтишь положение фигур (сдвигаешь на небольшое растояние, если нужно), потом отрисовываешь.
#90 #665350
>>665337
Тебе что нужно от IDE?
Assistants? Бери Eclipse или CLion или QtCreator
Система сборки? Бери CMake/QMake и не юзай IDE вообще.
Дебагер? Бери что угодно.
VS он боится, охуеть вообще.
sage #91 #665361
>>665166

>Это же решение в лоб


Что тебе не нравится? Мой алгоритм работает за O(n).
>>665378
#92 #665378
>>665361

> Мой алгоритм работает за O(n)


Если ты про >>665250 то там квадрат - один цикл по всей строке, второй внутренний цикл по подстроке не константного размера (размер зависит от условия и может быть порядка размера входной строки). Если у тебя другой алгоритм то судя по "Напиши функцию AreParenthesesBalanced" у тебя тоже там квадрат так как скорее всего на некоторых итерациях (число которых не константно) ты будет просматривать всю подстроку не константного размера.
sage #93 #665382
>>665378

>Если ты про


Нет, в треде, похоже, никто не может в структуры данных.
sage #94 #665383
>>665378

>у тебя тоже там квадрат так как скорее всего на некоторых итерациях


Там вообще одно сравнение и маленькое ветвление.
sage #95 #665384
Как залить решение на вашу парашу?

http://dl.gsu.by/tableByTimes.jsp?cid=19&nid=1422328&u.g=173&sortId=3&sortOrderId=1
>>665392
#96 #665392
>>665378
Не надо на меня гнать. Алгоритм конечно хуйня, но далеко не квадратичный. В лучшем случае будет ровно два обращения к каждому элементу, например.
>>665384
Просто, без задней мысли, открываешь ideone и заливаешь!
>>665393
sage #97 #665393
>>665392

>Просто, без задней мысли, открываешь ideone и заливаешь!


Не, я хочу посмотреть, сколько процентов будет.
>>665481
sage #98 #665397
В общем, держите. Сосач не может в изящность и алгоритмы.
https://ideone.com/Z9IeLw
>>665403>>665406
#99 #665403
>>665397
Таким образом у тебя квадрат будет. Кроме полного прохода по входной строке, также на неконстантном количестве итераций будет проводится проход (вызов AreParenthesesBalanced) по подстроке не константного размера (которая еще и может быть размером с входную).
>>665476
#100 #665406
>>665397
А где решение самой задачи? В >>665002 не это требовалось же.
>>665411
sage #101 #665411
>>665406
Я условие не читал, запостил свое решение другой задачи с хакерранка.
#102 #665476
>>665403

https://ideone.com/b6ai2K

Абстрактное решение за время O(n) и O(1) памяти.
>>665480
#103 #665480
>>665476
а не, хуйня
#104 #665481
>>665393
Зарегайся. Или давай сюда код я залью. Только не js он там руби, питон и перл поддерживает, но не js
30 Кб, 479x453
#105 #665528
>>663494 (OP)
Зачем нужен C++, если есть C?
>>665534
#106 #665534
>>665528
Зачем жрать капусту, когда есть картошка?
>>667251
#107 #665632
Поясните, у меня вопрос - что такое литералы.
Как я понял, литералы есть символьные 'q' и строковые "string", это как бы текст в кавычках.
Я всё правильно понял?
>>665646
#108 #665646
>>665632
Ты можешь написать x = y, с переменной справа, а можешь написать, скажем, x = 1. В этом случае 1 это литерал, т.е. константа, заданная прямо в коде. Есть числовые литералы, булевы, строковые, символьные, а еще пользовательские, когда ты сам задаешь constexpr-конструируемые значения при помощи специального синтаксиса.
>>665653
#109 #665653
>>665646
И еще подвопрос, он вроде в книге еще не рассматривался, поэтому я не могу ответить:
Сформулируйте правило, помогающее решить, безопасно ли то или иное преобразование типов?
>>665745
#110 #665745
>>665653
Это наверное про widening и narrowing преобразования. Преобразования в тип который включает в себя все значения исходного типа безопасно, остальные случаи нет.
>>665897
#111 #665897
>>665745
Какую книгу выбрать, если знаешь С#, что бы поменьше воды было?
>>665936
#112 #665936
>>665897

>Какую книгу выбрать, если знаешь С#, что бы поменьше воды было?



Страуструп в этом плане идеален.
89 Кб, 700x274
#113 #666116
Напейсал курсач на Qt, червепрепод увидел слоты и сказал, что это не плюсы.
Как привязать в qt метод к событию на гуе без сигналов-слотов?
#114 #666155
А если у меня есть:
std::vector<int> v{1};
auto n = v[0]; ,
то auto у меня будет int или std::vector<int>::value_type? И как вообще можно проверить какой тип в переменной auto?
>>666163
#115 #666163
>>666155
Будет int. Я тебе даже больше скажу std::vector<int>::value_type тоже выводится как int.
>>666167
#116 #666165
>>666116
На ебало ему поссы. Это – паттерн реализованный в конкретном коде на плюсах.
Колбеками, например.
#117 #666167
>>666163
А в чем тогда смысл value_type?
>>666170
#118 #666170
>>666167
Чтобы узнавать тип вектора.
>>666175
#119 #666175
>>666170
Понял. В шаблонах зайдет запись T::value_type. Спс.
#120 #666199
Может кто сычику с дз помочь? Вроде как грят, что легко. Но я аутист и не могу прогать
>>666203
#121 #666203
>>666199
Конечно, вкидывай задание.
>>666207
#122 #666207
>>666203
а я могу на ящик скинуть?
>>666210
#123 #666210
>>666207
Какой ящик. Сюда кидай.
#124 #666216
сюда пдф не вкидывается:(
>>666219
#125 #666219
>>666216
Ты на какой специальности учишься? Может это не твое?
Скрин сделай.
>>666221
#126 #666221
>>666219
там одного не хватит
http://www.fayloobmennik.net/5842997
4 вариант
>>666227
#127 #666227
>>666221
http://cppstudio.com/post/413/
Вот тут всё есть.
>>666229
#128 #666229
>>666227
не, я совсем тупой. видел это:)
>>666230
#129 #666230
>>666229
Ну тогда меняй специальность. Дрисню на одну строчку за тебя делать никто не будет.
>>666236>>666237
67 Кб, 600x901
#130 #666233
>>666116

> червепрепод увидел слоты и сказал, что это не плюсы


Пусть препод покажет свой код.
Я прокомментрую.
#131 #666236
>>666230
у меня и так гуманитарная специальность, скелет(?) не нужен, тока a=..,b=..,c=..
#132 #666237
>>666230
умоляяяю
>>666242
#133 #666242
>>666237
Напишите ему на хаскелле
>>666243
#134 #666243
>>666242
надо на с++! и нет, я проебал скелет, который спиздил у дногруппника, теперь нужен:(
>>666265
#135 #666265
>>666243

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


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

>>666282
#136 #666282
>>666265
плак-плак. сложно что ли? а мне жизнь облегчите, я и так уже седой в свои 17
>>666291
#137 #666291
>>666282
Ты слишком тупой, сори. Отсоси чтоли преподу, как там ещё гуманитарии такие вопросы решают.
>>666293
#138 #666293
>>666291
вот давай я расскажу, как решают, а ты запрогаешь?)
>>666296>>666299
#139 #666296
>>666293
Сделай фото с флажком в анусе, запрогаю
>>666300
#140 #666299
>>666293
Ты же не хочешь разобраться, ты втупую просишь сделать вместо тебя. Иди нахуй, мразь, не для тебя эта доска.
>>666301
#141 #666300
>>666296
сука. соблазнительное предложение. а теперь представил в каком я положении? давай сразу на весь семестр лабы?
>>666312
#142 #666301
>>666299
ну я не против, если помогут разобраться
>>666305
#143 #666305
>>666301

>ну я не против, если помогут разобраться


Чтобы помогли разобраться, нужно сначала вопрос задать.
>>666311>>666322
#144 #666311
>>666305
почему сразу мразь?
#145 #666312
>>666300
Ты торгуешься еще что ли? Пока не увижу твою голую задницу, разговор диалог бесполезен.
Я - пидор-программист.
>>666319
#146 #666319
>>666312
половина семестровых лаб и тока потом фотка. иначе никак, соре
#147 #666322
>>666305
хорошо, раз весело сидим, то вот мой вопрос. чем floap отличается от inc? что это вообще?
12 Кб, 604x56
#148 #666337
Господа программисты, я принес сложную задачку
>>666566
#149 #666352

>2016


>c++

#150 #666434
Аноны, как используя qt ftp просто открыть файл.
Вот например есть там картинка, я её выбираю в ListWidget и хочу открыть, как это сделать?
>>666445
#151 #666445
>>666434
Гугл говорит QDesktopServices::openUrl(QUrl("/home/realnc/test.pdf"));
#152 #666482
Была задачка написать что-то типа fizzbuzz'а, но рисовать спиральку квадратную. По выводу видно https://ideone.com/nZWJkc что должно делать и как вырвиглазно сделал я. Попробуйте сами будет весело. А ещё реквестирую версию моей программы с массивом указателей на функции.
>>666575
#153 #666566
>>666337
Лабы в прикреплённый тред
#154 #666575
>>666580
#155 #666580
>>666575
Спасибо.
#156 #666689
Анон хочу написать свой первый фтп клиент на qt.
Подрубился к фтп, работает всё.
Решил сделать его не консольным, заебенил listview. И теперь в гугле не могу найти, как в этот лист запихнуть файлы из фтп.
Подскажите какой метод использовать, чтобы запихнуть.
Понятно что ftp->list() передаёт мне данные, как я понял, но как пихнуть в лист нихуя не понимаю. Помогите аноны!
>>669454
#157 #666730
Есть чат сервер на питоне, который печатает айпи клиента при коннекте. Нужно эти айпишники выводить в textbrowser.
Так вот, как от QProcess получать сигнал во время выполнения программы, а не после ее окончания? readyRead() и readyReadStandardOutput() не работают - весь output печатается в textbrowser только после того, как сервер падает.
>>667301
#158 #666731
Ананасы, такой вопрос. Наверное не совсем по крестам, но всё же: посоветуйте книгу по OpenGL на Mac. Во всех туторах/книгах, которые я находил, примеры были с использованием ссаного WinAPI, я попробовать OpenGL хочется.
>>666838
#159 #666838
>>666731
http://www.opengl-tutorial.org/
Только на англ смотри. Там хоть скрины работают.
#160 #666896
Анон, а тебе слабо ответить, почему 3 = n; является ошибкой?
>>666902
#161 #666902
>>666896
3 - литерал. Литерал - rlanue. Всё.
>>666904
#162 #666904
>>666902
Никто даже не соснул :(
#163 #666915
СССССССССССССУКА
Я уже час въебал!
Как в win32 получить из текстбокса ебаный ИНТЕЖЕР?!
>>666924>>666947
#164 #666924
>>666915
Сдвинь его на 32 бита вправо, как советует этот >>666910 кун.
>>666928
#165 #666928
>>666924
Я бы тебя послал нахуй, но ты этого не достоин.
#166 #666947
>>666915
Получить текст и просунуть в atoi() (сложна (нет)).
>>666954>>667150
#167 #666954
>>666947

>как получить текст


>надо получить текст


Ты дурак?
>>666958
#168 #666958
>>666954
Он спросил как получить интежер. А у тебя проблемы с чтением видимо.
Сложна
#169 #667081
Абрикосы, хочу вкатиться в кроссплатформу и планирую начать изучать QT. Я вообще в ту сторону копаю? Камни?
>>667086
#170 #667086
>>667081

>QT


Просто пиздуй работать грузчиком, это не твое.
>>667102
#171 #667102
>>667086
С чего ты взял?
>>667116
#172 #667116
>>667102
Наверное, он имел ввиду, что QT - это видеоплеер.
#173 #667150
>>666947
Хм.
А текст ты как получаешь? У меня получается только в TCHAR* его взять, но для atoi он не годится.
>>667239
#174 #667239
>>667150
https://msdn.microsoft.com/en-us/library/yd5xkb5c.aspx
а ещё есть _ttoi() которая скорее всего тебе и нужна
#175 #667251
>>665534
Чтобы потом выебать кочан.
#176 #667252
>>665326
vim/sublime/nano/whatevershityoulike + clang/g++ * makefiles
>>667268
#177 #667254
>>664759
Удолить еклипс. Поставеть VIM.
#178 #667265
Крестаны, сегодня наткнулся на Juce. И сразу задался вопросами. Как так получилось, что за пять лет моих крестостраданий я впервые о нем слышу? Его кто-нибудь вообще использует? Чем оно лучше Qt или, убереги патлатый, gtk+этовсё_от_гнома?
>>667271
#179 #667266
Могу ли я используя вектор присвоить значения сразу, как я делал это с массивами в С?
например вместо
vector <string> alph(3);
alph[0]=0;
alph[1]=1;
alph[2]=2;

дописать сразу в первой строке. например с массивом было бы что-то примерно
alph[3]={0,1,2};
help
>>667394>>668059
#180 #667268
>>667252

>makefiles



Как там в 1977?
>>667398
#181 #667271
>>667265
Ценой?
46 Кб, 500x378
#182 #667282
Анон, у меня проблема. Я не понимаю указатели. Вернее я понимаю их суть, но не могу понять где в коде лучше использовать указатели, а где обычные переменные? Крестаны, объясните доступно.
>>667300>>667368
#183 #667300
>>667282
Прочитай про стэк, динамическую память и про stack overflow.
#184 #667301
>>666730
Не гуглится!!!! прошу, помогите!!!
>>668466
#185 #667340
Верно ли то, что результат вычисления CRC16 на little endian и big endian ЭВМ будет одинаков?
uint32_t number = 0xffaaccbb;
uint16_t crc = crc16(CRC_INIT_VAL, (uint8_t*) &number, 4);
>>667468
#186 #667350
>>666116

>что это не плюсы.


Мамка его не плюсы. Докажи ему, приведи пример, что самая лучшая оболочка в nix системах написана с использованием этой библиотеки. Если кукарекает на слоты, расскажи неучу, что в boost тоже есть сигналы и слоты. А если он скажет что boost не кресты, то можешь отчисляться из этой шараги, ты там все равно ничему не научишься.
#187 #667368
>>667282
Есть два стула. Эти два стула надо поменять местами.
Вот ты смотришь на эти два стула, и в воображении представляешь, как они сменили положение. Что быстрее, поменять эти два стула по настоящему, или просто представить, у себя в голове, что они сменили место? А теперь представь, что эта хуита, про "мысли материальны" реально работает.
Или у тебя есть огромная куча говна, но ты пока не знаешь, чем и как эту кучу будешь убирать, допустим это зависит от того, какова структура этого говна. Что ты будешь делать? Перетаскивать гавно то к одному, то к другому инструменту? А может еще и скопируешь это гавно для того чтобы проверить какой инструмент будет удобнее?
В любом коде, где можно избежать копирования или смещения реальных данных, используй указатели/ссылки.
Простейший пример.
int f(int shit){
shit = shit + 1;
return shit;
}
Если ты не будешь использовать тут указатели/ссылки, это дерьмо будет копироваться, а возвращаться совсем другое дерьмо. Так, в твоей памяти, в конце концов будет столько говна, что ты уже ничего не сможешь поделать.
#188 #667388
>>663494 (OP)
Есть одна dll, которая активно использует стандартные потоки С++. Есть один движок, который из своего компилятора выкинул эти самые потоки. В результате движок нормально работает с Debug версией .dll, но при Release версии вылетает. Как сделать так что бы в Release версии в .dll принудительно оставили все для работы с потоками?
>>667397
#189 #667392
Могу ли я используя вектор присвоить значения сразу, как я делал это с массивами в С?
например вместо
vector <string> alph(3);
alph[0]=0;
alph[1]=1;
alph[2]=2;

дописать сразу в первой строке. например с массивом было бы что-то примерно
alph[3]={0,1,2};
help
#190 #667394
>>667266
Да, в с++11 добавили uniform initialization.
#191 #667397
>>667388
Почему двиг вылетает?
>>667399
#192 #667398
>>667268
Неосилятор. Мощнее и проще мейкфайлов ничего не придумали.
А с ninja вообще пушка.
>>667496
#193 #667399
>>667397
Когда пытаешься использовать ifstream например, просто читать/писать. Я спецом все комментировал чтобы исключить свое говно.
>>667505
#194 #667408
Аноны, хелп. Есть Одна Задача на ПОИСК С ВОЗВРАТОМ, суть ее в том, что в некую фирму надо нанять n рабочих на m должностей. При этом есть матрица доходов каждого из рабочих, на всех этих m должностях (обычная матрица, где строка - номер должности, столбец - номер рабочего, значение - доход фирмы при назначении его на эту должность). Необходимо исходя из этого подобрать рабочих так, чтобы фирма имела максимальный доход.

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

Но это нихуя не работает, видимо я не уловил сути бектрекинга, а в интернетах инфы про это толком нет, кроме 500 символов на вики и одного примера.

Помогите хотя бы на словах описать идею реализации этой программы.

Это еще не учтено, кстати, что должностей может быть меньше/больше, чем претендентов, ну да похуй
>>667419>>667428
#195 #667419
>>667408

> то возвращаюсь назад


Ну вот там куда ты возратился должен находится список рабочих. Ты сначала идешь по первому, если вернулся то помечаешь первого как пройденого и идешь по второму. Если вернулся - помечаешь второго и идешь по третьему и т.д. Алсо у тебя жадный алгоритм который не гарантирует оптимального решения.
>>667473
#196 #667428
>>667408
Твой жадный алгоритм не даст максимума, тут нужно задачу переформулировать так, чтобы можно было симплекса методом решать.
>>667429
#197 #667429
>>667428

>симплекса методом


симплекс-методом
#198 #667468
>>667340
Не думаю. В CRC применяется деление многочленов из конечного поля Галуа, которые представлены вектором коэффициентов, и если ты сменишь endianess, то коэффициенты расположатся в обратном порядке, и это будут уже другие многочлены.
#199 #667473
>>667419
Да-да, именно так я и пытаюсь организовать: есть матрица структур РАБОЧИЙ, где как раз имеется его порядковый номер, доход с определенной должности строка, столбец и переменная, куда я буду заносить значение включался ли он в список или нет.
Но вот дойду я допустим до 5-6 должности и пойму что первый рабочий был бы эффективнее тут если он на первой должности имеет максимум дохода и на 6, но разница между следующим по списку доходом меньше в первом, чем в 6
Что в таком случае делать? начинать проход с начала?
>>667548
#200 #667496
>>667398

Месье, а вы не путаете cmake с make? Ninja и make - две разных билд системы, которые не взаимодействуют. А вот cmake как платформонезависимая билдсистема-прокси умеет генерировать билд файлы и того и другого.
>>667956
#201 #667505
>>667399

>Когда пытаешься использовать ifstream например, просто читать/писать. Я спецом все комментировал чтобы исключить свое говно.



Не комментить надо, а дебагером пройтись. А еще лучше проверить параметры линковки твоей либы. Вангую, что ты используешь билдсистему двига и для твоей либы используют те самые параметры, что убирают fstream. Бинарнику, который подгружает твою либу похуй на все, что не касается экспортируемых символов либы и в самой либе можешь устраивать любую содомию.
#202 #667548
>>667473

> начинать проход с начала


Да.
>>667557
#203 #667557
>>667548
Эту комбинацию запоминать или стирать? Я так понимаю запоминать надо только тот, который имеет лучшую позицию, те если пятый работник смотрится лучше на третьей должности, чем на первой, то возвращаясь назад я запоминаю его, чтобы с него не начать. Правильно?
Но исходя из всего этого никакого алгоритма не выходит толком, точнее алгоритм может какой-то и есть, но это совсем не прхоже на бэктрекинг
>>667572
#204 #667572
>>667557
Тебе нужно понять что такое бектрекинг или решить задачу? В случае если ты решил что пятому работнику лучше будет на третьей должности (а она занята) то ты возвращаешся к хуиле кторой сидит на третьей должности и перемещаешь его дальше из тех что он не занимал еще (тоесть на четвертую) и потом начинаешь спускаться ниже.
>>667913
#205 #667630
Анончики, а есть такая табличка http://bigocheatsheet.com/ , только со всеми контейнерами с stl?
#206 #667638
>>667630
Бесполезная хуйня и табличка по ссылке и возможная таблица контейнеров. Ты либо знаешь все эти структуры данных и можешь вывести эту оценку как нехуй делать, либо ты макака, которая не знает, что делает.

Тоже самое с контейнерами. Там даже по названию понятно, какая структура данных лежит в основе контейнера.
67 Кб, 1458x808
#207 #667852
>>667854
#208 #667854
>>667852
Спасибо. Добра тебе анон.
#209 #667913
>>667572
>>667572
Пытаюсь понять трекинг и решить задачу, без понимания же хуй выйдет.
Пс, есть как с тобой связаться? Позадаю вопросы, если не влом тебе конечно. Оче интересная задача, хочется с ней разобраться не ради плюсика в зачет, а для себя
>>667937
75 Кб, 967x986
#211 #667937
>>667913
У тебя не сильно подходящяя задача, так как кроме самого бектрекинга тебе нужно еще и оптимизировать (так как нужен бектрекинг то это метод ветвей и границ). А оптимизации NP-полных задач это посложнее бектрекинга. Его лучше на чем-то типа поиска пути в лабиринте рассматривать. А так ты на слишком большой кусок замахнулся, желательно дробить темы для изучения.
>>668389
#212 #667956
>>667496
Да, cmake. Кто-то пишет мейкфайлы руками?
>>667967
#213 #667967
>>667956
бывает
еба Ирвин #214 #668048
Привет всем. Я учил базу языка C++ уже пару месяцев, задрочил консоль до дыр. Скакал по учебникам, делал задачи, веселился. Теперь встал вопрос о практическом применении. Я решил взять фреймворк QT для начала, но мне интересно, хватит ли мне моих знаний. Из базы выучил почти все, исключая STL и boost, но в этом и проблема: смогу ли я учить QT, если не знаю этих библиотек? В классах вполне шарю, читал книжку по ООП, в низкоуровневой части тоже пока что проблем нет.
#215 #668051
>>668048
нет
#216 #668053
>>668048
Ты должен не просто "читал книжку по ООП", ты должен его охуенно понимать, иначе получится говно
#217 #668054
>>668048

>исключая STL и boost


А что ты учил пару месяцев? Циклы и классы?
>>668058
#218 #668055
>>668048
Всё зависит от тебя.
Попробуй напиши калькулятор и глянь как оно.
Лично мне было проще на дот нете без каких-либо знаний.
>>668060
#219 #668058
>>668054
Скорее дико надрачивался на консоли, так как всякие серьезные дядьки говорили, что если ты не умеешь ваять чудеса в консоли, то тебе не стать программистом. А сейчас понял, что меня где-то наебали.
>>669165
#221 #668060
>>668055
Как это "без знаний" ? Да еще и дотнет на C++?
>>668062
#222 #668062
>>668060

> Как это "без знаний" ?


Значит первый раз и при помощи гугла и здравого смысла.

> Да еще и дотнет на C++?


Да, было дело. Теперь я поумнел.
>>668065
#223 #668065
>>668062
Не, это похвально. Я пробовал в Билдере формы лепить, но мне было 10 лет, и терпения не хватило.
#224 #668080
Ну что, кто ходил на C++ Russia сегодня? Проиграл от того, как в конце доклада по синхронизациям разорвало одного мамкиного алгоритмиста
>>668139
#225 #668139
>>668080
Расскажи или покажи.
#226 #668163
Анон, есть ftp.list() из qtftp, как его засунуть в ListView?
>>668190
61 Кб, 604x349
#227 #668190
>>668163
Лучше поперёк. Да.
>>668435
#228 #668389
>>667937
Изучил поиск пути в лабиринте, суть уловил, возможно не полностью. Но ведь там дойдя до тупика мы просто возвращаемся назад, отмечая тупиковые клетки как посещенные. У меня ж так хуй выйдет, погуглил мою задачу, среди похожих только куски решений венгерским алгоритмом, что не совсем необходимо мне. Ладно, спасибо за помощь, анон, буду сидеть и пытаться что-то сделать с этим
>>668451
#229 #668435
>>668190
а если серьёзно? Это моя первая прога на qt, раньше студия и эмбаркадеро было
>>668460
#230 #668451
>>668389
Если тебе нужен именно бектрекинг тебе нужно понять как представить все возможные комбинации назначений в виде дерева. В корне находится первый сотрудник, от него отходят ребра соотвествующие всем возможныи назначениям. Наследующей уровне несколько вершин соотвествующие доступным назначениям второго работника при соотвествующем назначении первого сотрудника (тоесть от них будет отходить уже на одно ребро меньше чем от первого, так как одна позиция занята), на следующем уровне для третьего и т.д. В самом низу у тебя должно получится n! узлов (листьев) каждое из которых соотвествует одному из возможных вариантов назначения сотрудников. Бектрекингом будет поиск в глубину по этому дереву. Потом тебе останется научится как можно раньше узнавать тупиковые ветви (в которых гарнтировано не будет оптимального решения) и сразу их отбраковывать и возвращатся назад. Но в любом случае это не эффективный способ, так как сложность n!, а у чуваков вон вроде есть за куб решение (венгерский алгоритм).
#231 #668460
>>668435
Если api документации по qt тебе не хватает, поищи примеры использования listview и ftp в qt. Потом думаешь, как эти две сущности подружить.
>>668472
#232 #668466
>>667301
Проблема была в буферизации. Ну что же вы, аноны?
#233 #668472
>>668460
я уже вычитал тучу примеров, нашёл сайт где пиарили либу, которая через metod всё это делает, но её удалили
>>668476
#234 #668476
>>668472
тьфу, model а не metod
#235 #669144
Ананасы, поясните, пожалуйста, за универсальные ссылки в c++ 11. Нихуя понять не могу, что за rvalue, lvalue - это я еще более-менее усваиваю, а вот когда идет речь о том будет ли применяться копирование или перемещение объекта, переданного по ссылке понять не могу. Читаю Скотта Мейерса, и понимаю, что вот тут то полный пиздец. Либо там все достаточно просто и он развел базар на пол-книги, чтобы продать ее. Посоны, помогайте.
>>669151
#236 #669151
>>669144
Общее правило такое: если есть && сущность (параметр, переменная, что угодно), которая инициализируется с выводом типа (при помощи auto, аргумента шаблона и т.п.), то это универсальная ссылка, для которой выбор между rvalue и lvalue определится инициализирующим значением при выводе типа (например, auto && x = 1 будет rvalue, a auto && x = y - lvalue).
>>669162
#237 #669162
>>669151
а это не универсальная ссылка?

>const T &

>>669168
#238 #669165
>>668058
так они не про ту консоль говорили, лол.
>>669169
#239 #669168
>>669162
Нет.
>>669170
#240 #669169
>>669165
А про какую?
>>669171
#241 #669170
>>669168
но ведь подходят и lvalue и rvalue
>>669178
#242 #669171
>>669169
скорее всего про линуксовский шелл.
>>669172
#243 #669172
>>669171
А какая разница?
>>669181
#244 #669178
>>669170
Ну и что? Это другое правило. Универсальные ссылки говорят не о "подходит", а о "является". Например, если T && x выведется в rvalue-ссылку, то это один раз жестко зафиксируется, и не получится потом пихнуть туда lvalue.
#245 #669181
>>669172
даже не знаю как ответить
#246 #669334
>>668048
Какую консоль ты учил?
#247 #669357
>>668048

> Я учил базу языка C++ уже пару месяцев, задрочил консоль до дыр


Задрачивал cin и cout 2 месяца?
#248 #669395
Хочу запилить клон haxball.com под десктоп.
Вопрос такого плана:смогу ли я написать в резюме, что я могу в нетворкинг и игры?
>>669870
#249 #669454
>>666689
Если ты используешь view, тогда у тебя должна быть model, в которой и будут твои данные. Читай про MVC в Qt
#250 #669801
void ftpget(QString url, QString dir){
ftp.connectToHost("ftp.h112858-2.r01.ru");
ftp.login("h112858-2_22","lsu2hmyw.");
ftp.cd("PICTURES");

QFile file("C/Temp/"+url);
file.open(QIODevice::WriteOnly | QIODevice::Append);
ftp.cd(dir);
ftp.get(url,&file);

Анон, что не так с кодом? В папке файл не появляется.
>>669851
#251 #669813
личные данные
#252 #669851
>>669801
что даёт "C/Temp/"+url в дебаге посмотри
>>669938
#253 #669869
Юзаю Cmakelists.
-D CMAKE_BUILD_TYPE=Debug
#ifndef _DEBUG и #ifndef Debug макросы не работают. Чяднт?
>>669958
#254 #669870
>>669395

> что я могу в игры


он умеет играть в игры -- берём!

написать сможешь, да это проверить легко прямо на собеседовании, задав пару простых вопросов на понимание. к примеру:
1. чем отличаются между собой tcp от udp?
2. как бы ты реализовал проверку доставки пакетов при использовании udp (свой rudp)?
3. и платиновый вопрос на общее знание нетворкинга. ты запускаешь консоль и вводишь в ней ping site.org. какие стеки протоколов/протоколы используются, что вообще происходит?
#255 #669878
>>669870
Если он задает такие вопросы, то он даже game loop нормальный сделать не сможет.
>>669916
42 Кб, 224x180
#256 #669885
>>669870

>2. как бы ты реализовал проверку доставки пакетов при использовании udp (свой rudp)?


Засобачил бы через tcp.
>>669897
#257 #669897
>>669885

@
ВЫДАЁШЬ АУТИСТУ ТАСКУ РЕАЛИЗОВАТЬ ЛЕГКОВЕСНЫЙ ПРОТОКОЛ ПОВЕРХ UDP С ПРОВЕРКОЙ ДОСТАВКИ
@
ОН ХУЯРИТ ЧЕРЕЗ TCP
@
НИХУЯ НЕ ГРУЗИТСЯ
@
#258 #669916
>>669878
О да, один ты знаешь такую "тонкую" материю.
#259 #669921
>>669870

>вводишь в ней ping site.org. какие стеки протоколов/протоколы используются


Вот это вообще архиважно.
>>669926
#260 #669926
>>669921
вопрос на понимание. поэтому да, понимать -- важно. если на вакансия не называется "макака за еду"
>>669930
#261 #669930
>>669926
Макака, плиз. То, что ты знаешь какую-то ненужную хуйню - не делает ее какой-то исключительной, а тем более не обязывает остальных знать ее.
Рассказываешь, как это знание тебе пригодилось или идёшь нахуй.
>>669945
#262 #669938
>>669851
у меня дебагер к qt не подключен, я хз как это сделать
я ошибку одну уже нашёл вроде надо писать "C:\Temp\" + url
>>669986
#263 #669945
>>669930
у меня overдохуя историй, где это всё пригодилось ибо я ебусь с нетворкингом каждый день(рассказывать их тебе я не собираюсь ибо иди нахуй, мудила). он спрашивает про графу нетворкинг в cv. я ответил. вопрос про пинг самый платиновый на собеседовании для нетворкинга. а чего ты петушишься, я не понимаю)))0)
>>669951
#264 #669951
>>669945
В данном случае петушишься ты, обосрав меня за то, что я задал вопрос. По одному посту ты уже решил, что я умею, а что нет.Я знаю такой тип людей, вас объединяет синдром вахтера.
Распускай дальше свой павлиний хвост, петушком ты от этого быть не перестанешь.
>>669958
#265 #669954
Думаю, в этом треде могут знать, как использовать use after free уязвимости. А то есть одна в винде дыра, и фикс есть - а эксплойта для исполнения команд - нету. Надо исправить.
#266 #669955
>>669870
1. TCP гарантирует корректную передачу данных. UDP - нет.
2. Самый простой путь - как в sftp, через ACK для каждого пакета.
3. ICMP через UDP. Вроде так.
>>669966
#267 #669958
>>669869
Разве тебе не ifndef нужны?

>>669951
Не знаю насчет пинга, но telnet и подобными инструментам пользоваться надо уметь, наверное
>>669962
#268 #669962
>>669958
Ну и научусь же, для меня это новая тема.
По поводу макросов, нужен такого вида:
#ifndef debug
#define YOBA()
#else
#define YOBA() yobayoba(1488);
#endif
Вот только дебаг не отзывается. Что довольно странно. Какие вариации из гугла не пробовал только.
>>670083
#269 #669966
>>669955
Можно ещё пакеты нумеровать для пущего счастья.
#270 #669986
>>669938
окей, затрахался я с файлом, но понял в чём дело, второй параметр при открытии не нужен, он и говнил.

Теперь вопрос, как через get скачать правильно? А то файл 0 кб
#271 #670053
Анон, как в qt получить данные ячейки из TableView?
#272 #670083
>>669962
Залей выхлоп make clean; make VERBOSE=1 на пастбин

И попробуй ifdef NDEBUG (определяется когда делаешь релизный билд)
>>670113
#273 #670113
>>670083
Да пробовал NDEBUG.
>>670118
#274 #670118
>>670113
Блин. Попробовал еще раз - робит.
Спасибо, милаша :3

А так вообще принято писать? Везде видел именно _DEBUG_
#275 #670120
>>663494 (OP)
ОП-хуй,
Зачем ты упоминаешь глючное, уёбищное говно IDEONE, когда есть божественный REPL.it?
Почему я должен был СЛУЧАЙНО найти эту радость?
#276 #670127
>>670120
респект!
#277 #670146
>>670120
Говно какое-то. Схема есть, а хаскила нет.
>>670164
51 Кб, 1350x525
#278 #670153
>>670120
Посмотрел что это. Похоже у неё другие цели. Вот если у тебя компилятора нет, то ты эту хуиту изаешь. А вот чтобы постить в тред луше идеон. 1 раз написал, скомпилил и кинул линк. а ещё я не понял как пользоваться консолью
>>670171
#279 #670164
>>670146
QBASIC жи есть.
#280 #670171
>>670153
Консоль для ввода-вывода.
>>670176
#281 #670176
>>670171
Почему тогда такое странное сообщение об ошибке?
>>670179
#282 #670179
>>670176
Значит это таки REPL, но для цепепе он не работает.
#283 #670242
Решаю задачу вывода n-го с конца элемента односвязного списка.

Такой код: https://ideone.com/yTyi9n
Но здесь в первом цикле указатель продвигается не на position шагов вперед, а на position - 1. Почему так?
http://tproger.ru/problems/algorithm-to-find-the-nth-to-last-element-of-a-singly-linked-list/

Рассмотрим пример:
1 -> 2 -> 3 -> 4 -> 5 -> 6 -> NULL

На первом шаге p = 1, q = 1

Далее в моей реализации указатель p продвигаем на position = 3 шага вперед:
p = 2; p = 3; p = 4; остановились

Теперь двигаем оба указателя, пока не дойдем до конца списка. Расстояние между ними равно position, поэтому в конце указатель q остановится на нужном элементе.

Итак:
p = 5; q = 2;
p = 6; q = 3;

Остановились. Как видно, ошибка на единицу, но почему так? На сайте мое решение принимается несмотря на то, что указатель p продвигается вперед на position шагов.
>>670260
#284 #670260
>>670242
А, понятно, на ТПпрогер индексы не с нуля. Обычно я пропускаю описание всякого говна и перехожу сразу к изучению кода.
5 Кб, 514x258
#285 #670468
Хотел подключить к кодблокс SFML, сделал как тут http://grafika.me/node/240 , только с последней версией, у меня выдает ирроры, защоооооо?
>>670473>>670480
#286 #670473
>>670468
Без IDE попробуй.
>>670481
6 Кб, 228x221
#287 #670480
>>670468
Я не умею.
>>670481>>670495
#288 #670481
#289 #670494
Я так понимаю, всегда нужно указывать =delete для конструкторов, которые не используются? Либо ситуативно смотреть?
>>670602>>670630
#290 #670495
>>670480
Через CMakeLists делай.
141 Кб, 900x1472
#291 #670522
>>663494 (OP)
Немножко умею сокеты.
Что прочесть что бы мочь SSL? Лучше с примерами и на русском.
>>670529>>671647
#292 #670529
>>670522
https://www.youtube.com/watch?v=CmbXm2tkzME

На русском и с примером
>>670836
#293 #670602
>>670494

>Я так понимаю, всегда нужно указывать =delete для конструкторов, которые не используются?


Только если они сгенерируются по-умолчанию.
Хотя можно для ясности указывать явно. Там довольно большой список ситуаций, в которых методы неявно помечаются как default или delete. Чтобы не страдать хуйней, заучивая эти правила, можно явно написать.
>>670623
#294 #670623
>>670602

>можно явно написать.


Минус в том, что умные дядьки потом у виска могут покрутить, если окажется, что в данной ситуации ни к селу, ни к городу.
>>670659
#295 #670630
>>670494
Я юзаю =delete для методов, которые генерирует компилятор, но мне они не нужны. Например раньше конструктор копирования нужно было создавать с модификатором private, а сейчас можно просто написать =delete.
#296 #670659
>>670623

>Минус в том, что умные дядьки потом у виска могут покрутить, если окажется, что в данной ситуации ни к селу, ни к городу.


Ну скажут, что не знаешь условия implicit defaulted/deleted declaration и хуле?
Зато не будет таких ответов, как у этого Василия, который не знает, что конструктор копирования и оператор присваивания являются implicitly deleted, если есть move аналоги. А когда возникает необходимость делать недоступными эти методы, то аналоги точно есть.
>>670691
#297 #670691
>>670659

>конструктор копирования и оператор присваивания являются implicitly deleted


А я это знаю, наизусть помню все эти правила, ибо однажды показалось это важным.
Но все же, я имею ввиду ситуацию, когда здоровому человеку ОЧЕВИДНО, что никакие такие конструкторы использоваться не будут вовсе, т.к. объект создается единожды эксплицитным конструктором с параметрами.
#298 #670836
>>670529
я что, на /pr захожу что бы со мной тут шутки шутили?
>>673176
#299 #670873
В методе класса нужно запустить другой метод в треде. Нагуглил std::thread t2(&Test::calculate, this, 11, 20); почему синтаксис так отличается от вызова извне? Зачем амперсанды и this?
#300 #670883
>>670873
Амперсанд не обязателен, как и для глобальной функции (имя Callable-сущности превращается в указатель на нее автоматически, когда прорабатывает std::decay). this указывает конкретный объект, от имени которого должен вызываться метод (в общем случае это может быть указатель на какой-то другой объект, если тебе захочется). Внутренности std::thread распознают, что им передан именно метод класса (при помощи отдельной специализации конструктора) и интерпретируют второй параметр особым образом, вызвав в нужный момент this->calculate (11, 20), а не calculate (this, 11, 20).
>>670910
#301 #670885
>>670873
Когда в конструктор std::thread(f, t1, t2 ...) передается функция-член класса то в результате вызывается или (t1.f)(t2, ..., tN) или ((t1).*f)(t2, ..., tN) в зависимости от переданых аргументов. Поэтому в конструкторе треда вторым аргументом должна быть ссылка или указатель на класс, и нужен указатель на функцию-член (получается указатель на указатель), так как там идет его разименование (какого-то хуя, причины наверное были). Для сравнения если в конструктор будет передана обычная функция то будет вызвано f(t1, t2, ..., tN)
http://en.cppreference.com/w/cpp/thread/thread/thread
>>671150
#302 #670910
>>670883
Ну зачем-то же его пишут..
Где ещё такой синтаксис ?
>>670911
#303 #670911
>>670910
Ну не знаю, возможно, чтобы подчеркнуть, что это именно указатель, первоклассных-то функций не завезли. Я бы посоветовал не заморачиваться и писать как удобнее тебе самому.
#304 #671002
>>670873
Запусти std::async и забери фьютчером, если тебе нужен результат.
>>671129
#305 #671129
>>671002
Да знаю, меня именно амперсанд и this интересовал. Ну и :: , забыл как его там.
>>671150
#306 #671136
А вот если у меня в классе есть метод, который плодит несколько разных тредов - джойнить нужно в нем же, или в деструкторе? Или выделить функцию для о джойна всех этих тредов?
>>671144
#307 #671144
>>671136
Если результат тредов нужен в методе - джойн в методе.
Если во вне, то промисы в помощь
>>671154
#308 #671150
>>671129
в принципе, всё написали >>670885

В C++ нет правила, по которому member-функции распадаются (decay) до указателей, как обычные функции. Поэтому нужно указывать явно принадлежность функции классу и взятие адреса амперсандом. Про this вроде бы ясно.
>>671158
#309 #671154
>>671144
Войд методы. В обоих циклы.
#310 #671158
>>671150
Меня сбило с толку именно что thread(calculate, 11, 20) нельзя, выкидывает ошибку, мол, нестатическая йоба, идите нахуй.
Теперь понятно как это юзать, не совсем понял за дикей правда, на досуге почитаю обязательно
>>671169
#311 #671169
>>671158
Когда от тебя ожидают аргументом указатель на функцию (напр. void (*)()), а ты передаёшь имя функции (без амперсанда, тип void()), то C и C++ автоматически преобразуют тип функции в указатель на неё. Это и называется function-to-pointer decay.
Для мембер-функций такого преобразования нет.
7 Кб, 200x200
#312 #671238
Анон, поясни за структуры. Что это такое и зачем нужно. А то никак не могу разобраться
#313 #671241
>>671238
Лучше подумай о карьере грузчика, есои не понимаешь таких вещей.
>>671257
#314 #671257
>>671241
>>671241
Ты злой. Я же нормально спросил. просто нет того, кто бы нормально мог объяснить
>>671264
#315 #671264
>>671257
Это же блядь элементарно. Вот есть у тебя табличка в тетрадке – то же самое и структуры.
Если не понял – пиздуй разгружать фуры.
#316 #671265
>>671238
Структуры - это то же самое, что и классы, только по умолчанию видимость стоит public, а не private.
>>671269
#317 #671269
>>671265
Ебать бы объяснил.
"Двумерное пространство это десятимерное, только 8 измерений свёрнуты в точку."
>>671274
#318 #671274
>>671269
Грузчиков всегда мало.
>>671276
#319 #671275
Есть тут кто пользуется Вижуал студио?
#320 #671276
>>671274
Я не тот анон, который спрашивает про структуры, мимо.

А объясняешь ты хуёвее грузчика.
>>671278>>671284
#321 #671278
>>671276
Можешь объяснить за структуры
тот анон
>>671279
#322 #671279
>>671278
Мне лень.
>>671282
#323 #671282
>>671279
Ну как я понял это тупо несколько переменных под одним именем с методами?
#324 #671284
>>671276
Всё потому, что ты тупее того, кто объясняет хуже грузчика.

Объясню структуры за селфи с флажком в допе и сапом.
#325 #671299
>>671238-кун

struct stack
{
const int MEMORY_ALLOC_SIZE=8;
int data;
int top;
int size;
void create();
void create(int tsize);
bool pop(int
outItem);
bool peek(int outItem);
void push(int item);
bool isEmpty();
void print();
void distruct();
};

int main()
{

}
void stack::create()
{
data=(int
)calloc(MEMORY_ALLOC_SIZE,sizeof(int));
size=MEMORY_ALLOC_SIZE;
top=0;
}
void stack::create(int tsize)
{
data=(int)calloc(tsize,sizeof(int));
size=tsize;
top=0;
}
void stack::push(int item)
{
if (size-top == 1)
{
data=(int
)realloc(data,size+MEMORY_ALLOC_SIZE);
size=+MEMORY_ALLOC_SIZE;
}
data[top]=item;
top++;
}

bool stack::pop(int outItem)
{
if(top==0)
{
return false;
}
else
{
return true;
outItem=data[top-1];
data[top-1]=0;
top--;
}

}

bool stack::peek(int outItem)
{
if(top==0)
{
return false;
}
else
{
return true;
outItem=data[top-1];
}
}

bool stack::isEmpty ()
{
if (size==0)
{
return true;
}
else
{
return false;
}
}

void stack::distruct()
{
free(data);
}

void stack::print()
{
for (int i=size; i>0; i--)
{
printf("%d",data[i-1]);
}
}
#325 #671299
>>671238-кун

struct stack
{
const int MEMORY_ALLOC_SIZE=8;
int data;
int top;
int size;
void create();
void create(int tsize);
bool pop(int
outItem);
bool peek(int outItem);
void push(int item);
bool isEmpty();
void print();
void distruct();
};

int main()
{

}
void stack::create()
{
data=(int
)calloc(MEMORY_ALLOC_SIZE,sizeof(int));
size=MEMORY_ALLOC_SIZE;
top=0;
}
void stack::create(int tsize)
{
data=(int)calloc(tsize,sizeof(int));
size=tsize;
top=0;
}
void stack::push(int item)
{
if (size-top == 1)
{
data=(int
)realloc(data,size+MEMORY_ALLOC_SIZE);
size=+MEMORY_ALLOC_SIZE;
}
data[top]=item;
top++;
}

bool stack::pop(int outItem)
{
if(top==0)
{
return false;
}
else
{
return true;
outItem=data[top-1];
data[top-1]=0;
top--;
}

}

bool stack::peek(int outItem)
{
if(top==0)
{
return false;
}
else
{
return true;
outItem=data[top-1];
}
}

bool stack::isEmpty ()
{
if (size==0)
{
return true;
}
else
{
return false;
}
}

void stack::distruct()
{
free(data);
}

void stack::print()
{
for (int i=size; i>0; i--)
{
printf("%d",data[i-1]);
}
}
>>671312
#326 #671312
>>671299
с указателями обосрался
#327 #671318
Вопрос наверное уебанский, но всё-таки надеюсь, что ответите. Зачем нужны прототипы функций? Почему нельзя сразу писать функции целиком, а мейн последним?
#328 #671321
>>671238
Если тебе нужно отличие структур от классов, то его почти нет, там только по умолчанию все поля public.

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

В си с плюсами добавили классы, уже совсем другую сущность... Об этом в следующем выпуске
#329 #671324
>>671318

> Почему нельзя сразу писать функции целиком, а мейн последним?


Удобнее. И прототипы не для этого зделоли, чтобы ты мог функции после main() писать.

> Зачем нужны прототипы функций?


Чтобы их вызывать, когда реализации в других модулях линковки.
#330 #671325
>>671318
Можно. Пишешь везде inline void funkciya ();

А вообще, читай one definition rule.
#331 #671330
Посоветуйте либу с парсерами файлов разных форматов.
>>671333
#332 #671333
>>671330
Если совсем разных, то только какие-нибудь парсеры бинарных структур можно посоветовать.
#333 #671338
>>671318
Декларирование нужно в первую очередь для многофайловых программ (ускорения их компиляции после внесения небольших изменений). Функция может находиться в другом .cpp файле (или ее реализации в виде исходного кода вообще может не быть, например в случае использования библиотеки), компилятор устроен таким образом что каждый файл компилируется отдельно (еденица трансляции), соответственно инфу о функции (если она в другом файле) для статического контроля получить неоткуда. Для этого нужно декларирование - декларируя функцию ты обещаешь компилятору что такая функция на самом деле есть, и компилятор спокойно компилирует исходный код в объектный.
>>671347
#334 #671347
>>671338
Вот хорошо и понятно объяснил, добра тебе.
#335 #671419
В крестах нет модулей, а в паскале есть. Какое преимущество это даёт паскалю над крестами?
>>671421>>671424
#336 #671421
>>671419
Более быстрая компиляция и линковка. Паскаль еще и однопроходный by design, поэтому компилируется вообще со свистом.
>>671426>>671433
#337 #671424
>>671419

>В крестах нет модулей, а в паскале есть.


И при этом кресты нужны (я тут не обсуждаю, насколько они дерьмовы при этом), а поц-кал — не нужен.
>>671426>>671458
#338 #671426
>>671421

>однопроходный by design


Что это? Только на скорость компиляции модули влияют?

>>671424
Ну я же для примера.
>>671456
#339 #671433
>>671421

> Паскаль еще и однопроходный


Разве к езыкам с каким-никаким синтаксисом это применимо? Я думал только к ассемблерам. А всякие поц-кали так или иначе надо компилировать в несколько стадий.
>>671445
#340 #671445
>>671433
Как раз в ассемблерах нужны множественные проходы потому что forward references
#341 #671456
>>671426

>Что это?


Паскаль со своими секциями type, var, interface и т. п. устроен так, что его можно скомпилировать в один проход. http://fan-5.ru/best/best-69301.php
Это не значит, что его в один проход компилируют, но в любом случае жизнь разработчику компилятора упрощена. Например, вот такой код на C++:

int i;
yoba();
int j;

Компилятор должен будет выделить память на стеке для i и j сразу, то есть предусмотреть это, а значит, сначала распарсить код и проанализировать его. В случае паскаля же:

var i:Integer;j:Integer;
begin
yoba()

Уже как только встречен begin компилятор знает что и как выделять на стеке.

>Только на скорость компиляции модули влияют?


В основном, да. Еще вместо .h/.cpp можно было бы иметь что-то по типу C# - все в одном файле, но это уже мелочи.
>>671462
#342 #671458
>>671424
Мамкины нонконформисты не нужны.
>>671482
#343 #671462
>>671456
И последний вопрос по модулям. Можно не подключать весь модуль, а только часть его функционала? Например не весь algorithm, а только sort из него.
#344 #671471
>>671462
Я что-то проспал и модули включили в стандарт C++?
>>671474
#345 #671474
>>671471
Нет. Только будут. Но ведь они везде одинаковые? Ну или почти одинаковые?
>>671477>>671484
#346 #671475
>>671462
Нет, вась, модули в C++ не завезли. Всё лишнее говно в любом случае будет отрезано линковщиком, даже в случае пропускания компилятором по какой-то причине.
#347 #671477
>>671474
Это ещё не факт.
>>671483>>671497
#348 #671482
>>671458

>нонконформисты


Это типа кто не пишет на поц-кале, как в школе учили, тот нонконформист?
#349 #671483
>>671477
Почему? Что в них плохого?
#350 #671484
>>671474
Как раз из-за того, что у разных членов комитета по стандартизации разные взгляды на то, какими должны быть модули (на самом деле подставь любой FEATURE_NAME вместо курсива), стандарты принимаются так медленно.
>>671486
#351 #671486
>>671484
Вот суки. Путина на них нет. Он бы им устроил вертикаль власти. Сразу бы все стандарты приняли. Пятилетку в четыре года.
#352 #671490
Сделяль две функции
http://pastebin.com/6SPCmKap

Запустил в двух тредиках, заджойнил. Вввод второго пездюка вообще игнорится. Что я принципиально делаю не так?
>>671528
#353 #671492
>>671462

> часть его функционала


В бинарник суется (имеется ввиду статическая линковка) только то что ему нужно. Исключение естественно хедеры, если тебе кажется что хедер дохуя жирный то нужно вручную резать. Кроме теймплейтов, они превращаются в код только при использовании.
#354 #671497
>>671477
В них - ничего. Но они 20 лет осиливали простенький вывод типов, просто потому что сишники из комитета нихатели. То же самое и тут.
#355 #671512
Я ньюфаг, как сделать чар нулевым? Т.е. ''.
>>671513>>671515
#356 #671513
>>671512
char c = 0;
>>671520
#357 #671515
>>671512
char c = '\0';
>>671520
#358 #671520
>>671515
>>671513
А как сделать так, чтобы он отображался пустым?
Т.е. я хочу сделать так, чтобы coins. тут было заместо s пусто, а не пробел. У меня эта буква s в отдельном чаре идёт.
>>671527
#359 #671527
>>671520
Вот строчки кода:
int one_cent = 0;
std::cin >> one_cent;
char one_ending = 's';
if (one_cent == 1) one_ending = '0';
А что в one_ending поставить чтобы там было пусто?
У меня потом вывод идёт:
std::cout << "You have " << one_cent << " one cent coin" << one_ending << "." << std::endl;
>>671584
#360 #671528
>>671490
бумп
#361 #671584
>>671527
Попробуй '\0'. В ascii нет пустого символа, в юникоде должно что-то быть, например есть "\u200B" - "пробел нулевой длины". Второй вариант написать не в одну строку.
>>671605
#362 #671605
>>671584
Пробовал, но там как пробел показывается.
НУ ладно, я уже переписал по другому.
Кстати, а куда тут лучшекод вставлять чтобы вам показать?
>>671608
#363 #671608
>>671605
past ebin.com
>>671612
#364 #671612
>>671619>>671622
#365 #671619
>>671612
int dollar = 0;
while (summ >= 100)
{
summ -= 100;
dollar++;
}

Это называется деление с остатком.
>>671622>>671636
#366 #671622
>>671612
>>671619
К тому же,почему >= 100? 100 центов это не даллар?
>>671636
#367 #671636
>>671622
Ну да, забыл = убрать.

>>671619
Но тут всё верно, так? Кроме >=.
>>671741
#368 #671647
>>670522
бамп вопросу
#369 #671741
>>671746
#370 #671742
>>=
>>671746
#371 #671744

>>=

>>671746
#372 #671746
>>671741
>>671742
>>671744
:: forall a b. m a -> (a -> m b) -> m b
>>671769
#373 #671769
>>671746
хоспади, как же это охуенно
лучшее что придумало человечество!
после goto
#374 #671947
>>671318
так Б-г наказал делать
#375 #671951
Господа, подскажите как поставить себе Qt в VS 2015, текстовый нормальный гайд был бы замечателен.
>>671955>>671975
#376 #671955
>>671951
насколько же ты ущербен, что даже гугл открыть не можешь. при том что он устанавливается уже в три клика. съеби вот просто из программирования в сибирь и сдохни в землянке с медведями.
>>672039
#377 #671975
>>671951
Зарепортил унтерменша, не знающего про гугл
#378 #672039
>>671955
А что, оно уже их беты вышло? Вроде недавно была только бета версия для 15 штудии? // Мимоmingwполуёбок
>>672103
#379 #672103
>>672039
Как там, в 2015? 30 июля был релиз, в ноябре первый апдейт.
#380 #672170
Анон, какие есть годные среды с автогенерацией кода по uml диаграмме классов, окромя staruml и прочего безгранично старого говна? Или есть какие-то более популярные языки моделирования?
>>672893
#381 #672294
Как в C++ компилируются шаблонные класы? Для каждого используемого типа свой экземпляр?
>>672318
#382 #672318
>>672294
Также как и обычный, только код для компиляции генерит компилятор, в зависимости от параметров шаблона.
#383 #672412
#384 #672501
Есть классы Server и Client. Клиент связан с классом Player чтобы отвечать за игровой мех на стороне собсна игрока.
Но столкнулся с тем, что на стороне сервера нужен тоже какой-то класс, который обрабатывает этих самых плееров, т.е. аналог Player на другой стороне трубы. Как бы его так обозвать хорошо, чтобы смотришь в проджект эксплорер - и сразу понятно, что эта хуйня делает.
Мне очень неловко просить помощи, я редко выхожу из ридонли
#385 #672506
>>672501
Назви его Player.
>>672508
#386 #672508
>>672506
Но у меня уже есть такой класс!
>>672509>>672540
#387 #672509
>>672508
Тогда Player_Na_Servere
>>672515
#388 #672515
>>672509
Братиш, зачем ты так.
#389 #672523
Народ. Какие опенсорс проекты на плюсах есть, в уоторые можно коммитить? Кроме суперспецефических вещей вроде rethinkdb и няшной сишечки.
>>672530>>672531
#390 #672526
>>672501
Почему и на сервере не использовать тот же класс?
#391 #672530
#392 #672531
>>672523
Clang, llvm, qtcreator, qt, casablanka, openvr, opencv. А вообще ты охуел немного: первая ссылка в гугле https://github.com/trending/cpp
#393 #672540
>>672508
Используй пространства имен.
>>672541
#394 #672541
>>672540
Но разумно ли это в данном случае?
>>672578
#395 #672553
>>672501
RemotePlayer или ClientPlayer
#396 #672555
Вдогонку:

Когда заходишь в проект и видишь RemotePlayer, сразу подразумевается, что есть другие плееры и все они наследники AbstractPlayer'а
>>672568
#397 #672568
>>672555
Всё-таки у серверного и клиентского слишком разный функционал, чтобы так делать.
#398 #672578
>>672541
А что не разумного? Код клиента в своем неймспейсе, код сервера в своем. Если боишся неймспейсов назви PlayerServerModel и PlayerClientModel. Но подобные многосложные имена ничем не лучше неймспейсов - ты просто пытаешся с помощью префикса/суффикса решить то что должно решаться неймспейсами.
>>672622
#399 #672622
>>672578
Опять таки, Server класс есть, выходит неймспейс надо как-то мудрено называть, ОПЯТЬ ТАКИ.
Сука, именовать эту всю дичь занятие из нервных.
#400 #672778
Пока нашел два решения моей проблемы, оба являются совмещением кода клиентской и серверной сторон в одном классе: макросы и strategy pattern.
Неймспейсы отбросил, потомушта еще больше мешанины получается, не смог я придумать, как сделать из них конфетку.
>>672790
#401 #672790
>>672778

> неймспейсы хуита мутная


> буду использовать макросы

>>672791
#402 #672791
>>672790
Давай расскажи, как ты здесь видишь применение неймспейсов? Удобно пиздец дублировать половину кода и выдумывать охуительные имена.
>>672799>>672959
#403 #672799
>>672791
server::Player client::Player
>>672801
#404 #672801
>>672799
Бред. А потом еще server::game client::game да?
>>672839>>672848
#405 #672839
>>672801
А ты как сделаешь?
>>672847
#406 #672847
>>672839
через жопу
#407 #672848
>>672801

> да?


Нет конечно. Нужно server::Game и client::Game.
>>672851
#408 #672851
>>672858
#409 #672858
>>672851
Хуй на.
#410 #672893
Бамп вопросу >>672170
#411 #672959
>>672791

>Удобно пиздец дублировать половину кода


Ну так вынеси эту функциональность в common. А вообще покажи код
129 Кб, 256x256
чё там в новых версиях #412 #673101
Сейчас для повышения производительности функции ещё пишут инлайнами или уже не надо?
>>673125>>673136
#413 #673125
>>673101
Конпелятор сам решает, инлайнить ли функции. И inline не делеает то, что ты думаешь.
>>673127>>673193
#414 #673127
>>673125
А что он делает, inline?
>>673144
#415 #673136
>>673101
Пишут, но зачем, не в курсе. Думаю, в 95% случаев это не нужно.
>>673193
#416 #673144
>>673127
Намекает, что можно бы заинлайнить, не больше.
#417 #673151
ребята,вы же шарите,да? как сделать прогу для автоматического создания четких пацанских цитаток и мамасиков? ответ нужен срочно,гопота прижала. всем чмоки
#418 #673163
Сука, как в этом ебучем крестовом <random> получить ебучий рандомный char, блядь?
Понахуячили кучу каких-то адапторов, генераторов, дистрибуторов что теперь хуй проссышь.
#419 #673176
>>670836
Не "на", а "в".
#420 #673178
>>673163
Задай границы и конвертируй цифры в чары, червь.
#421 #673179
>>673163
И вообще, лабы идут на хуй.
#422 #673193
>>673136
>>673125
Недавно подняли производительность критического участка на 20% расставив __attribute__((always_inline)) вокруг нескольких методов, после того как дизассемблинг показал, что компилятор по своим соображениям отказывался их инлайнить. Просто inline нужен только для исключения конфликта имен имплементаций в хидерах, собственно к инлайнингу он сейчас имеет очень слабое отношение, компилятор и так пытается все инлайнить.
>>673255
60 Кб, 576x1024
#423 #673225
>>663494 (OP)
А какая типичная работа на C++?
Например на php это какой нибудь круд, nodejs ֊ хипстерская фигня с вебсокетами.
>>673229
#424 #673229
>>673225
Серверсайд, хайлоад, эмбеддед, геймдев.
>>675400
#425 #673255
>>673193
Хы. Александреску рассказывал, как он вынужден был наоборот просить компилер не инлайнить, когда в фейсбуке оптимизировал что-то.
>>673258>>673259
#426 #673258
>>673255
http://www.youtube.com/watch?v=Qq_WaiwzOtI вот здесь это было
#427 #673259
>>673255
Ну тут тонкий вопрос, если все инлайнить то бинарник растет и кэш кода забивается. Универсального решения тут нет, в каждом отдельном случае нужно начинать с бэнчмарков и профайлинга и дальше при каждом изменении делать замеры.
#428 #673290
>>663494 (OP)

> FLTK - графические интерфейсы - http://fltk.org


Господи, либо я дурак, либо эта библиотека говно.
Я, блять, не могу создать обычный чеклист. Гружу я hold_browser, а дальше что? Пытаюсь установить callback функцию для него, а мне хуй в лицо, там нихуя не понятно, в документации нихуя не понятно, примеров нихуя нет. Тупое говно тупого говна
>>673330>>673480
#429 #673330
>>673290
Просто ты туповатый, лол.
#430 #673480
>>673290
либа же изи. ты реально туповат
#431 #673498
>>673163
Срандом пользуйся, червь. Тебе этот <random> еще 10 лет не пригодится, учитывая твои вопросы
>>673524
#432 #673524
>>673498

>Срандом пользуйся


Охуеть советы, за сранд в 2016 году надо руки отрывать.
>>673536
#433 #673536
>>673524
Долбоеб ебаный, назови хоть одну причину, почему этому долбоебу не подойдет сранд?
>>673554
#434 #673554
>>673536
Этому долбоебу и брейнфак подойдет, это же не повод. Сранд, как и значительная часть libc/posix, это примитивные API прямиком из 70х, использующие не синхронизированные глобальные переменные на каждый чих. А значит, если этот долбоеб решит использовать все свои 16 ядер и запустить код в несколько потоков, он внезапно обнаружит, что 1) вероятностное распределение съехало нахуй, т.к. потоки переписывают один и тот же сид 2) начались жесткие тормоза, т.к. перезапись глобальной переменной из разных потоков инвалидирует кэш. Ну и плюс диапазон у него ограниченный и слегка ебанутый.

И зачем, спрашивается, связываться с этим говном мамонта, когда у тебя такой-то <random> есть? Две лишние строчки написать тяжело? Пиши на баше, епта, используй $RANDOM.
>>673563
#435 #673563
>>673554

> несколько потоков для перевода символов из ascii кода

>>673591
#436 #673574
Анончики, а как мне скопировать данные из одного массива в другой, если у элементов массива не переопределен оператор присваивания?
>>673579
#437 #673579
>>673574
Что именно ты называешь "массивом"?
>>673580
#438 #673580
>>673579
T* arr
>>673587
#439 #673587
>>673580
Если достатно неглубокого копирования то копируй каждый объект отдельно с помощью memcpy. Если нужно глубокое то надо переопределять конструктор копирования. Возможен непереносимый пердолинг (если конструктор переопределить нельзя) но с таким лучше не связыватся.
>>673786
#440 #673591
>>673563

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


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


Как скажешь.
>>673595>>673596
#441 #673595
>>673591

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


> laba1


> конкуреси лол?

>>673610
#442 #673596
>>673591

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


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


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


Ты действительно настолько даун? Отмасштабируй очко себе.
>>673610
#443 #673610
>>673595
>>673596

> Лабу можно писать наотъебись, в продакшене я бы написал нормально.


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


И эти вот долбоебы потом приходят в профессию и начинают гнать говнокод мегабайтами.
>>673612
#444 #673612
>>673610
Но пишут говнокод долбоебы, которые не понимают, где нужно использовать хуйнюнейм, а где не нужно.
>>673624
#445 #673624
>>673612
Например те, кто не понимает, что сранд в крестах вообще не нужно использовать, уже 5 лет как.
>>673625
#446 #673625
>>673624
И что же надо использовать вместо сранда?
>>673632
#447 #673632
>>673625
http://en.cppreference.com/w/cpp/numeric/random

Если хочется просто, то http://en.cppreference.com/w/cpp/numeric/random/random_device/operator(), но он может каждый раз в /dev/random лезть, правильнее создать локальный инстанс генератора, например std::mt19937, иницилизировать его сидом из std::random_device и и потом получать значения из диапазона через std::uniform_int_distribution.
#448 #673645
Хули вы тут устроили, блядь. Если знает, почему стоит использовать не std::rand, пусть использует его. Если не знает, то пусть прочитает и использует то, что больше отвечает ситуации. А то определили два пути: говнокод и йоба архитектура, но почему-то компромисса вам не завезли.
>>673677
#449 #673646
Анон, все ли возможные входные данные я учитываю?
https://ideone.com/jQIsea
>>673648>>673649
#450 #673648
>>673646
у тебя там segfault
>>673662
#451 #673649
>>673646

> Node *fast = head->next->next;


Бабах.

> fast = fast->next->next


Пиздых.
>>673662
#452 #673662
>>673648
>>673649
А так лучше? https://ideone.com/LdUIx0
Можно ли сделать красивее?
>>673670
#453 #673670
>>673662
Например, вот так: https://ideone.com/wxRZar
Сегфолтов теперь быть не должно. Можно было бы подумать, что на списках длины 2-3 цикл не всегда найдется, но по доказательству корректности алгоритма, когда мы попадаем в цикл, указатели всегда встретятся.
#454 #673677
>>673645

>йоба архитектура


Конечно, подключить стандартный заголовок, создать обьект и дернуть у него метод это пиздец какая сложная архитектура. Не позорился бы даун.
>>673739
#455 #673707
Аноны, нужна помощь по qt c++, а именно qftp

ftp.cd("/PICTURES/Apple");

QFile file("C:\\Temp\\"+dir);
file.open(QIODevice::WriteOnly);

ftp.list();

while (!(ftp.get("apleiphone4s+2st300mm.WPC",&file))) {Sleep(500);}
file.close();

Файл в папке создаётся, однако он пустой, прорыл в и-нете материал, и нихуя не понял.

Спасибо, Аноны.
>>673751
#456 #673739
>>673677
Ситуация: тебе надо сделать сраную лабу, в которой ты хочешь заполнять массив автоматически, а не вручную. Ты уже знаешь про std::rand и даже если не знаешь - все что тебе нужно прочитать - описание std::rand. Даже про srand читать не обязательно. В процессе чтения ты увидишь, что std::rand является небезопасным, а в C++11, оказывается, есть нормальные решения.

Ок,- скажешь ты. - Давайте использовать современные методы. - И открываешь документацию к <random>. Твоему взору предстанет стена текста, на которой ты сразу же увидишь минимум 15 сущностей, которые надо разбирать, а пример с кодом нихуя не говорит о том, как бы быстро заюзать эту охуительную безопасную йобу. Тут же ты вспоминаешь, что вообще-то ты не ставишь себе задачи изучить весь random(по крайней мере, сейчас), а беглый ее осмотр не внушает тебе уверенности, что это займет 5 минут. Что ты выберешь: потратить неизвестно сколько времени на изучение <random> или по-быстрому заюзать std::rand, который справится с твоей задачей на ура?
Конечно, если ты и так планируешь изучить <random>, то лучше выбрать первый вариант. Но если ты вообще не собираешься писать на C++, или у тебя нет времени, или ты блять просто не хочешь отвлекаться на побочную хуиту, то скажи, какого хуя ты тут выступаешь, мразь? Только честно. Как вообще использование std::rand в ебаной лабе на сортировку мешает мне выбрать нужное решение перед написанием продакшен кода? Как, блять, ну ты объясни мне, пожалуйста!

Я что еще, когда что-то изучаю, должен код через TDD ебашить? Чтоб тебя удовлетворить, пидор? А ты не охуел там?

P.S. Кроме всего прочего вангую в тебе джуниора-оверкиллщика, который на сугубо утилитарные вещи городит по 5 абстракций.
#457 #673750
>>673739
За то время, что ты тут ноешь, ты могу бы уже 5 раз скопипастить нужный кусок из примера и двинуться дальше. Но нет, блядь, надо начать обосновывать совой говнокод, говонокдость которого ты сам прекрасно осознаешь.
>>673756
356 Кб, 1864x1270
#458 #673751
>>673707
Ты вообще в документацию заглядывал?
Охуеть у нас тут спам-лист
>>674136
#459 #673756
>>673750
Так погоди-ка, мразина. И чем ты отличаешься от той макаки, которая хуячит std::rand в продакшене, если такое советуешь? Ты же советуешь заиспользовать либу не глядя, не разобравшись ней, не зная как оно настраивается и как оно себя поведет в дальнейшем. Ебать ты дно, все с тобой ясно.
>>673758>>673767
#460 #673758
>>673756
Я повторяюсь снова, но я подписываюсь под словами этого благородного дона, чей навык красноречия просто сияет своим светочем.
#461 #673767
>>673756
Очевидно же, хуячить <random> не глядя лучше, чем хуячить std::rand не глядя, почему - написано выше. STL ты и так используешь, если ты, конечно, не из тех мудаков, что используют libc в крестовом коде. А ты можешь быть как раз из тех мудаков, судя по твоей анальной привязанности к std::rand.
>>673771
#462 #673771
>>673767
Ты тупой еблан. Хуячить не глядя вообще нельзя, а хуячить std::rand глядя намного проще, чем делать то же самое с <random>
>>673781
#463 #673781
>>673771
Хуячить std::rand глядя вообще невозможно, т.к. первый же гуглежь показывает, что рандом в современных крестах делается через <random>, а std::rand - это полу-депрекейтед пережиток для совместимости с няшной. Ну и если тебе "проще" важнее, чем "правильно", то тебе в пыхипи надо переквалифицироваться.
>>673797
#464 #673786
>>673587
А чо не весь сразу?
>>673788>>673789
#465 #673788
>>673786
Потому что, если конструктор копирования не тривиальный, то просто копировать память нельзя.
#466 #673789
>>673786
В самом массиве у тебя же указатели хранятся, его мало смысла копировать.
#467 #673797
>>673781

>Хуячить std::rand глядя вообще невозможно


Ты точно ебанутый. Стандарт явно говорит:

>The rand function has the semantics specified in the C standard, except that the implementation may specify that particular library functions may call rand.


>It is implementation-defined whether the rand function may introduce data races



Если ты это знаешь, то ты осознанно используешь эту функциональность.

>Ну и если тебе "проще" важнее, чем "правильно", то тебе в пыхипи надо переквалифицироваться.



Что за "правильно", блять? У нас тут не религия. Есть конкретный критерий: the rand function may introduce data races. Устраивает? Заебись. Не устраивает - пожалуйста, проследуйте в <random>.

Так что да, "проще" в данном случае уместно. А вообще очень полезно думать не в рамках "правильно", а в рамках "уместно". Почему-то когда люди слышат "правильно", они часто начинают выключать мозг, вместо того, чтобы самим давать оценку.
>>673954
#468 #673919
Я чото не понял, неужто в гугле не нашлось, как использовать <random>?

Там чото около трех строчек для инициализации, зато не надо вырвиглазное целочисленное деление делать. У Лававея было выступление на cppcon, где он ясно и небеспочвенно сказал, что не надо использовать сишный rand.
#469 #673951
>>673739

> видишь стену текста


Видишь uniform_int_distribution, в которой сразу рабочий пример. А выбирать генератор будешь хотя бы узнаешь чем один отличается от другого.
http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution
#470 #673954
>>673797
Ну да, ну да, "мне только лабу зделоть", "чо-то как-то слишком переусложненно", "ну и что что говно, мне и так норм", "я как писатель лаб знаю лучше".
Не хотим узнавать и использовать правильные и корректные подходы, хотим как диды на PDP-7 городить костыли, нам же только лабы сдать, ебись оно дальше все конем.
#471 #673961
>>673739
Если тебе похуй на рандомность, то проще всего нихуя не открывать, а накалякать на коленке линейно-конгруэнтный генератор в три строчки.
#472 #673975
А у меня лабораторная была про реализацию законов распределения, 5 штук (нормальный, экспонентный, треугольный и еще пара, не помню), тоже <random> юзать надо было?
>>674096
#473 #673997
Нужен кто-то проходивший книгу Стровструпа. Собственно нужна помощь в задании к разделу 5. Что именно от меня хочет автор ? я должен все 25 строчек вставить в его код сверху?Т.е. я должен сначала исправить все ошибки во всех 25ти фрагментах а затем сыграть в "угадайку" где и что должно стоять?
>>673998
85 Кб, 874x617
138 Кб, 903x607
#474 #673998
>>673997

>отвалились скрины


пофиксил
>>674016>>674564
#475 #674016
>>673998
Если бы мне предложили обязательный выбор ложку говна или Стровструпа, я бы выбрал ложку.
#476 #674096
>>673975
Да, и писать свой класс для распределения, вместо стандартных :3
#477 #674136
>>673751
пиздец, я пиздоглазый. Спасибо, Анон
#478 #674173
Анон, поясни,пожалуйста, ещё про qftp ( Я вижу, что он дохуя популярен в этом треде)
Поясни как им правильно пользоваться?
Это то есть каждую команду надо проверять на commandFinished(int, bool) ? Или можно ждать после всех команд ftp.done?
>>674593>>674596
#479 #674204
Sup, /pr. Я нуб, пытаюсь написать раннер, как сделать рандомно генерирующийся уровень? Игра сделана на c++ с библиотекой sfml. Карта в формате tmx.
>>674222>>674223
#480 #674222
>>674204

> рандомно генерирующийся уровень


std::random_device, std::mt19937, std::uniform_int_distribution.
>>674223
#481 #674223
>>674204
>>674222
Бля, криво объяснил. Понятное дело, что он по определенному алгоритму генерироваться будет, скорее всего просто из готового набора чанков будут случайно выбираться некоторые. Но как это можно сделать без перезагрузки игры, на ходу?
>>674235>>674566
#482 #674235
>>674223
Когда доходишь до конца одной карты начинаешь показывать следующую.
#483 #674564
>>673998
Контрольные вопросы можно устно.
#484 #674566
>>674223
По принципу paging geometry вроде как, постранично то есть. Мб так нагуглишь чот.
#485 #674593
>>674173

> что он дохуя популярен в этом треде


к популярности все эти вопросы никак не относятся. просто один долбоёб всё никак мануал не осилит вот и спамит сюда
>>674596
#486 #674596
>>674173
>>674593
ты кстати тоже иди того, rtfm
#487 #674885
>>663494 (OP)
помогите пожалуйста понять, что не так с кодом
http://pastebin.com/bUCXWqUY
есть квадратная матрица размера n, и мне нужно найти длину наибольшей возрастающей последовательности, то есть если матрица размера 3, и в ней элементы 1 2 3 4 5 4 3 2 2, то наибольшая последовательность 1 2 3 4 5,и её надо вывести, но мой код почему-то не работает, подскажите пожалуйста, в чём проблема и каким образом можно вывести саму последовательность?
>>674980>>675015
147 Кб, 1280x964
Хочу в С++ вкатиться. #488 #674965
Посоны, хочу в C++ вкатиться. Погуглил, как окна создаются. Нагуглил простой пример с WinAPI. Пиздец, бля, че это вообще за хуйня? Как в ней разобраться вообще???
Как мне сделать обычное окно, с двумя кнопочками (Start, Reset), текстовой формой, куда коэффициент вбивается и областью прорисовки в центре окна, куда будет выводиться график функции?
#489 #674968
>>674965
Берёшь Qt, в Qt Designer шлепаешь кнопки, поле, текст, создаешь action для кнопок, пишешь простенький код для твоих целей.
Если не справишься, то тебя ничего не спасет и ты не сдашь лабу
#490 #674970
>>674965
Качай Qt или студию.
>>674978
#491 #674971
>>674965
Между тем, даже на винапи такую програмку можно за вечер написать
>>674978
#492 #674978
>>674970
Вот это оно? http://rutracker.org/forum/viewtopic.php?t=3941453
>>674971
Где вообще за это винапи почитать? С примерами там, как кнопочку сделать, как формочку текстовую и т.д.
#493 #674980
>>674885
ну помогите же
>>674984
sage #494 #674984
>>674980 -> >>663494 (OP)

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

#495 #675011
>>674978
VS 2015 Community edition с сайта Microsoft. Бесплатно.
Примеры в интернете. Тысячи их
#496 #675015
>>674885
1. Ошибка внутри else - temp надо в 1 сбрасывать в любом случае, а не только когда temp>count
2. Ты можешь завести begin и temp_begin=0: каждый раз когда попадаешь тот else, если temp>count, сохраняешь begin=temp_begin, а temp_begin в любом случае делаешь = текущий элемент.
Конец отрезка с помощью count можно посчитать.
Может быть чуть проще будет сохранять не начало отрезка, а его конец, если он побил рекорд, тогда temp_end не нужен - сразу в end пишется результат в ветке temp>count.
#497 #675045
>>674965

>Нагуглил простой пример с WinAPI. Пиздец, бля, че это вообще за хуйня?


Теперь ты знаешь, что с ним связываться не стоит.
Qt это более-менее стандартное решение для C++
#498 #675050
>>674978

>Вот это оно?


>2012


кек

http://www.qt.io/download-open-source/ вот это оно.
>>675064
#499 #675064
>>675050
Так там на рутрекере русская версия же. Я на инглише не очень шпрёхаю.
>>675069>>675083
#500 #675069
>>675064
Русская версия чего?
>>675075
#501 #675075
>>675069
Интерфейса, я так понял.
>>675076>>675078
259 Кб, 1457x770
#502 #675076
>>675075
Интерфейс отклеился
#503 #675078
>>675075
У библиотеки нет интерфейса.
Есть ты про QtCreator, то он со всеми языками поставляется (на самом деле я не проверял, но в сырцах лежат переводы в том числе и на русский).
130 Кб, 919x654
#504 #675083
>>675064

> русская версия


А откуда она по твоему взялась?
>>675085>>675120
#505 #675085
>>675083

>А откуда она по твоему взялась?


МБ он думает это Фаргус перевёл.
216 Кб, 289x417
#506 #675120
>>675083

>http://www.qt.io/download-open-source/ вот это оно.


На ХРюху пойдет?
Что скажешь по поводу вот этого?

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



Скачал также книжечку (пикча). Норм или фигня?
>>675157>>675383
#507 #675157
>>675120
5.5.1 у меня на XP пошла. Только qcombobox в тестовом проекте выдаёт эксепшн почему-то, пока не смотрел почему.
>>675165
47 Кб, 908x933
#508 #675165
>>675166
#509 #675166
>>675165
Если у тебя VS2013
>>675178
#510 #675178
>>675166
Не.

>Qt 5.5.1 for Windows 32-bit (MinGW 4.9.2, 1.0 GB)


Этот?
>>675182
#511 #675182
>>675178
Попробуй это взять.
Там в комплекте не только библиотека и QtCreator, но ещё и компиляторы идут.
>>675223
19 Кб, 508x450
#512 #675223
>>675182
Source Components и MinGW мне, как новичку, нужны?
>>675232
#513 #675232
>>675223
Ну, MinGW тебе точно нужен, если у тебя студии нет (только я не понял, почему там 2 MinGW. Или верхний — это MinGW-сборка Qt, а нижний — сам тулчейн?).

А Source — ХЗ.
>>675234
11 Кб, 506x128
9 Кб, 770x126
14 Кб, 506x167
#514 #675234
>>675232
Вот это так и должно быть?
>>675236>>675238
13 Кб, 506x154
14 Кб, 506x167
#515 #675236
>>675234
Пачками полезли
>>675240
#516 #675238
>>675243>>675247
9 Кб, 770x126
#517 #675240
>>675236
Не запускается.
>>675243
#518 #675243
25 Кб, 485x300
#519 #675247
>>675238
Охуенно
>>675249>>675253
#520 #675249
>>675247
Походу, XP — слишком тухлая версия.
#521 #675253
>>675247
Попробуй что-нибудь постарее. Может даже не пятую версию. А 4.8 http://download.qt.io/archive/qt/
>>675267
#522 #675267
>>675253
Вот это пойдет? >>674978
Как-то слишком долго с qt.io качается.
>>675269
#523 #675269
>>675283
#524 #675283
>>675269
Компилятор в комплект входит? Или его где-то отдельно искать?
>>675284
#525 #675284
>>675283
Судя по отличию в размерах mingw и не-mingw-версий — входит.
>>675308
20 Кб, 503x393
#526 #675308
>>675310
#527 #675310
>>675308
Гм. Ну, значит, качай.
>>675315
59 Кб, 754x583
#528 #675315
>>675310
Распаковал. Не могу найти install.exe
>>675316
#529 #675316
>>675315
Это просто архив.
>>675322
118 Кб, 1280x1024
#530 #675322
>>675316
Оно? Куда теперь тыцать, чтобы hello_world.exe сделать? :3
>>675324
#531 #675324
>>675329
10 Кб, 482x207
#532 #675329
>>675324
Qt Creator тоже надо качать?
>>675330
#533 #675330
>>675329
Г. А его не было в инсталлере qt?
Ну, качай http://download.qt.io/archive/qtcreator/
>>675333
#534 #675333
>>675330
Запустил какую-то бяку "qtvars.bat", хз зачем. Теперь проц на 100% грузит и что-то там в дос-окне мигает.
Creator любой на хрюшку встанет? Или старые версии качать?
>>675335
#535 #675335
>>675333
Попробуй начать с последних, у них время модификации ещё старее, чем у инсталлера qt.
>>675344
64 Кб, 1016x733
#536 #675344
>>675335
Тут мне их теперь походу надо всё между собой посоединять, что понаустанавливал?
>>675345>>675346
#537 #675345
>>675344
Видимо да.
>>675351
#540 #675350
>>675346
http://doc.crossplatform.ru/qt/4.3.2/install-win.html или лучше засунь qt в path (третий пункт по ссылке)
>>675352>>675355
45 Кб, 1008x584
45 Кб, 1008x584
83 Кб, 1280x994
#541 #675351
>>675345
Требует, чтобы я ему указал путь к компилятору и к отладчику. Что из этой всей пачки ехе-шников компилятор, а что - отладчик?
>>675352
#543 #675355
>>675350
"F:\mingw32\bin" тоже на всякий случай в path запиздохал :3
>>675356
#544 #675356
>>675355
Это не на всякий случай, там написано так сделать:

> You may also need to ensure that the locations of your compiler and other build tools are listed in the PATH

#545 #675359
>>675352
Я их все три в path подобавлял
F:\Qt\4.8.6\bin;
F:\mingw32\bin;
F:\Qt\qtcreator-2.5.2\bin
>>675361>>675363
#546 #675361
>>675359
Посмотри ещё http://gromr1.blogspot.ru/2014/04/install-qt-4-8-5-mingw-on-windows.html

Естественно, не надо прямо делать всё, что там перечислено.
1) Версии и пути у тебя свои.
2) Собирать GDB вряд ли нужно.
3) Если ты добавил всё в PATH, вряд ли нужно будет руками пути прописывать, компилятор и Qt должны савтодетектиться.

Может, с чем-то другим придётся повозиться.
>>675363>>675367
#547 #675363
>>675359
>>675361
Ну и, до QtCreator 3, понятия "Комплект", наверное, не существовало.
92 Кб, 1015x733
#548 #675367
>>675361
А как теперь из Creator попасть в Designer, чтобы побольше кнопочек в проект напихать?
>>675369
#549 #675369
>>675367
Пуск -> ... -> Designer
>>675383
231 Кб, 1280x1024
#550 #675383
>>675369
Ага. Кажись въехал немношк. Сенк) Пойду книгу курить >>675120
>>675386
124 Кб, 1016x734
95 Кб, 1016x734
#551 #675386
>>675383
А еще такой момент. Как его скомпилировать? Где тут вообще С++ код? XML только какой-то.
>>675388
#553 #675390
>>675388
А не такой вики, только на русском?

>Я на инглише не очень шпрёхаю.

>>675393
24 Кб, 320x301
#554 #675393
>>675390
Там всё в картинках
>>675396
133 Кб, 1280x1024
#555 #675396
>>675393
Работает вроде
#556 #675400
>>673229
Формошлепство, компьютер вижн
#557 #675535
>>663494 (OP)
Сап /pr! Чем отличается буфер от потока в С?
>>675694
#558 #675694
>>675535
Конкретнее. Какой буфер от какого потока?
#559 #675708
test
#560 #675840
Нужно передать видео в реальном времени по UDP. Какие протоколы существуют и куда копать?
>>675911
#561 #675911
>>675840
познай всю силу WebRTC (c++ либы, не js интерфейса)
#562 #675930
Щас бы в новый тред перекатиться.
#563 #676034
Ну окей, а как с работой на этом вашем с++?
Фрилансить или удаленно работать можно?
#565 #681569
Вопрос про Qt.

Как правильно сохранить дату QDate (без времени) в базу данных SQLite (.db) в таблицу с полем DATE и также считать её в формат QDate из базы данных?

"01/02/2005" в базе считывает в QDate как (invalid)
Гугол охуел, у них там работает блять
Где я долбоеб, анончик?
#566 #682922
Посоветуйте легкую графическую библиотеку для работы с 2д графикой
#567 #685112
Кароче, есть Qlable, через свойство Pixmap пытаюсь залить пикчу на форму. На превью отображается, а на дебаге нет. Что за хуйня?
#568 #689143
При установке visual studio обязательно internet explorer нужен?
#569 #690843
пиздос! не пашет dev c++, не хочет компилировать даже hello world, он просто стоит и нихуя не делает
памагити
179 Кб, 657x444
#570 #694254
Прочитал

>Роберт Лафоре - Объектно-ориентированное программирование в C++ (2004)


после 2 лет байтоёбства в K&R, за плечами поверхностное изучение 3 тома Кнута (ещё в универе), небольшой опыт писания на коленке на низком уровне (ASM), немного понимаю в модулях ядра, драйверах Linux и кросс-компиляции. Про графику не знаю вообще ничего, с трудом переделал шаблонную формочку в Qt для отслеживания своего заказа на почте. Не программист, инженер.
Цель - летом сменить работу и пойти джуниором на крестах, потому что интересно, перспективно и потому что заебало инженерить.
Собираюсь обмазаться Маерсом по STL и им же Effective C++, какие ещё советы? Нефть авансом, выручайте, анончики
>>696667>>696959
#571 #696373
Программач, есть один древний пека х86, есть новый пека х64 с VS 2013 на борту. Как мне писать приложения под первый пека?
>>696685
#572 #696382
Задача усложняется тем, что на старом пека ХР, на новом восьмерка
#573 #696667
>>694254
если не секрет, где ты работал два года байтоёбства? и сколько получал?
#574 #696685
>>696373
убейся об стену
#575 #696959
>>694254
Сорт оф поддвачну. Быдлокодерство на крестах в НИИ за плечами, впереди - страх собесов и чувство, что я днище ебаное в рамках коммерческой разработки.
В шапке чот особо не нашел каких-то хинтов по рейтингу знаний так сказать. Что прям таки маст-рид и самое ходовое в вопросах на собеседованиях?
#576 #697316
хорошо ли сейчас в 2016 учить с++ 11 или даже с++14? Обязательно ли знать как было до этого с++98? Прост не хочется голову забивать.
Интересно как с этим в больших корпорациях? Понятно что старое не трогают, а вот новое на новом стандарте пишут или как?
Тред утонул или удален.
Это копия, сохраненная 26 марта 2016 года.

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

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