Это копия, сохраненная 26 марта 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
За тысячестраничные талмуды,
За всратые олдфажные гуи
За 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/ , пробуешь отвечать на вопросы и понимаешь, что ты пока в самом начале пути. Кроличья нора крестов практически бездонна, поэтому продолжать постигать тонкости и детали можно очень и очень долго. В то же время, на этом этапе у тебя должно быть достаточно знаний, чтобы уверенно писать неплохой код. Поэтому читай исходники открытого софта и библиотек, отправляй пулл-реквесты в них, читай книжки по предметным областям и общим методикам разработки, а дальше уже сможешь запилить свой проект или вкатиться в существующий.
Предыдущие треды на архиваче:
#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/
Предыдущие треды на архиваче:
#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/
>эта смищная картинка с самой блевотной игрой в истории человечества
>этот унаследованный стиль обиженки
>этот костыль, собирающий статистику
Kak?
И меня мотивируй
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"
?
скрипты линкера, objcopy
Читаешь побайтово, к каждому байту (в HEX представлении) добавляешь "\x", имеется ввиду конкатенация строк.
Установщик есть под штудию (для 15й только бета пока) Гигобайт с лишним.
Проект сконвертить в cmake и юзать
CLion, Eclipse, QtCreator
Это только на вскидку, что умеет работать с отладчиком студии
Я DirectX11 юзаю. В студии отладчик для графики есть. И на Unreal Engine пишу. Тоже без студии не обойтись.
А не, проебался, clion не умеет.
её
Дум же на си написали.
Вообще, мне все говорят что игры писать очень сложно и ничего у меня не получится.
Ну и сиди дальше на шее у мамки, нытик.
Чесно говоря, я недавно книжку скачал и дошёл до первых глав с программированием.
Но Кармак-то гений был, знает компьютер отлично. А я мало что знаю.
Ну тогда советую тебе взять юнити и учить C#. И работу проще найти. Будешь казуалки для мобилок делать. Я вот работу так и не нашел.
Но я хочу учить не мертворождённый язык. Тем более что я слышал что игры делают в 90% случаев на с++. Ладно, сегодня отдохну, а завтра за работу.
Не увидел здесь дотошности.
Если ты пишешь зачем-то велосипедный контейнер, то да, обязательно. Но обычно ты можешь использовать готовый список, например, std::list, в котором все проверки и исключения инкапсулированы.
Я просто решаю задачи с хакерранка, да и на собеседованиях все это нужно знать.
А еще интересно, почему они в этой книге в качестве позиции используют int и потом делают проверки вместо того, чтобы использовать unsigned?
Дорога произрастает под стопами идущего.
Код: https://ideone.com/B4oVgn
При вызове функций в стек пушится кадр с переданными аргументами, адрес возврата, EBP и создаются локальные переменные. Интересен момент, когда произошел последний вызов функции. Мне кажется, надо было писать std::cout после скобок, тогда было бы проще разобраться. Вот произошел последний вызов с аргументом NULL, и мы оказались сразу за скобками, где std::cout. Печатаем и выполняем ret, из стека выталкивается кадр. Что теперь? Когда вышли из последнего вызова, то снова попадаем на строчку, где происходит печать и т.д.? Объясните мне.
Хотя нет, если писать std::cout за скобками, тогда будет обращение по нулевому указателю.
>Когда вышли из последнего вызова, то снова попадаем на строчку, где происходит печать и т.д.?
Да.
Ну представь себе вертикальную стопку книг. Ты накладываешь одну книгу на другую (адресс возврата, локальные переменные и т.д.). С каждым вызовом функции ты накладываешь новые книги. Когда ты выходишь из функции, то ты убираешь книги. На самом деле стек растет вниз, а данные мы никак не убираем, а просто перемещается на этот адрес возврата.
Стек я себе представляю, я не могу себе объяснить, почему печатается предыдущий элемент. Мы выходим из вызова предыдущей функции, и - что? Что напечается? Данные из элемента, у которого next передали в функцию, из которой только что вышли?
Бля, ну как можно не понимать рекурсию? Даже дети легко осваивают процедуры в паскале, в отличие от указателей, например.
Ну представь, что ты долго раскручиваешь в дизассемблере небольшую программу, которая непонятно как работает. И наконец у тебя складывается полный образ этой программы, ты представляешь все переходы и видишь весь алгоритм. Вот это и есть понимание, а не "карач там функция вызывает сама себя)))"
Когда тебе нужно вычесть из unsigned, ты можешь получить отрицательное число. Страуструп и ко сами признались, что зря стали использовать size_t для контейнеров
Ну и это не делает им чести, ибо беззнаковость вписывается в идеологию языка. Лучше изредка делать лишние проверки, чем все время держать половину области значений неиспользованной.
>664725
>А что? stl-я хватит?
Да, на всех платформах есть стандартная библиотека 11 стандарта. На 15 студии кое-что не реализовано, но по мелочи
Ладно. Спасибо.
А инт всегда к ансайну приводится в таких выражениях?
проектик с мейкфайлом и синтаксический анализатор все фичи С++11 выделяет ошибочными все работает но глаз щипит
по сути нужет путь к верной stl папочке как лечить? куда рыть??
И зачем в string оба метода size и length?
>cin>>n,m;
Гугли оператор запятая. Сначала выполнится (cin>>n), а потом (cin>>m).
>зачем в string оба метода size и length
Для удобства. Все привыкли что длинна строки а не размер. А size скорее всего есть потому, что он есть во всех контейнерах.
Зачем или почему так? У тебя преобразовывается -1 в тип unsigned. Его значение будет равным (-1)%(2^32). И будет равным 2^32-1. Что точно больше 5.
>Зачем или почему так?
Зачем. Можно же просто все unsigned больше отрицательных. Или не -1 в unsigned преобразовывать, а 5u в signed. Хотя и тут могут быть переполнения. Неужели правильно работающего варианта не сделать?
Понял. Спасибо.
Эх.. зелёный.
>Стек
Это же решение в лоб. И как тогда пройдёт такой тест?
14 6
(())(())()()()
>AreParenthesesBalanced
Что это?
Оператор[] должен вернуть объект, у которого есть оператор[].
Если оператор[][] записать в виде методов, то будет
obj[j] => obj.operator[](i).operator[](j)
там obj[и][ж]
Не люблю олимпиадки, но решил размять мозги.
Говно, но работает: http://www.es6fiddle.com/il0yhijt/
Зачем на js? Хоть поясни алгоритм.
Ну тогда да или прокси класс, или operator[] может возвращать одномерный массив, тогда возможны вызовы с [][] - но это естественно не для всего подойдет.
Показывай код
CODE:: Blocks реально монстр, раньше писал на Dev-C++, но он протух уже год как.
VS - это просто пиздец, я же только хеллоуворды пишу пока.
>CLion
Ты серьезно? Я срусь от VS, а ты мне такое советуешь.
Мне что-то типа Dev-C++, Notepad++, только не дохлое.
Я серьезно. В свое время от блоков, бобов и эклипса обосрался, а как увидел не менее монструозный гринхаус — сразу стало норм. Так что перепробуй сначала все большие IDE, а потом попробуй SciTE и geany.
В цикле апдейтишь положение фигур (сдвигаешь на небольшое растояние, если нужно), потом отрисовываешь.
Тебе что нужно от IDE?
Assistants? Бери Eclipse или CLion или QtCreator
Система сборки? Бери CMake/QMake и не юзай IDE вообще.
Дебагер? Бери что угодно.
VS он боится, охуеть вообще.
> Мой алгоритм работает за O(n)
Если ты про >>665250 то там квадрат - один цикл по всей строке, второй внутренний цикл по подстроке не константного размера (размер зависит от условия и может быть порядка размера входной строки). Если у тебя другой алгоритм то судя по "Напиши функцию AreParenthesesBalanced" у тебя тоже там квадрат так как скорее всего на некоторых итерациях (число которых не константно) ты будет просматривать всю подстроку не константного размера.
>у тебя тоже там квадрат так как скорее всего на некоторых итерациях
Там вообще одно сравнение и маленькое ветвление.
http://dl.gsu.by/tableByTimes.jsp?cid=19&nid=1422328&u.g=173&sortId=3&sortOrderId=1
Не надо на меня гнать. Алгоритм конечно хуйня, но далеко не квадратичный. В лучшем случае будет ровно два обращения к каждому элементу, например.
>>665384
Просто, без задней мысли, открываешь ideone и заливаешь!
>Просто, без задней мысли, открываешь ideone и заливаешь!
Не, я хочу посмотреть, сколько процентов будет.
https://ideone.com/Z9IeLw
Таким образом у тебя квадрат будет. Кроме полного прохода по входной строке, также на неконстантном количестве итераций будет проводится проход (вызов AreParenthesesBalanced) по подстроке не константного размера (которая еще и может быть размером с входную).
Я условие не читал, запостил свое решение другой задачи с хакерранка.
а не, хуйня
Зарегайся. Или давай сюда код я залью. Только не js он там руби, питон и перл поддерживает, но не js
Как я понял, литералы есть символьные 'q' и строковые "string", это как бы текст в кавычках.
Я всё правильно понял?
Ты можешь написать x = y, с переменной справа, а можешь написать, скажем, x = 1. В этом случае 1 это литерал, т.е. константа, заданная прямо в коде. Есть числовые литералы, булевы, строковые, символьные, а еще пользовательские, когда ты сам задаешь constexpr-конструируемые значения при помощи специального синтаксиса.
И еще подвопрос, он вроде в книге еще не рассматривался, поэтому я не могу ответить:
Сформулируйте правило, помогающее решить, безопасно ли то или иное преобразование типов?
Это наверное про widening и narrowing преобразования. Преобразования в тип который включает в себя все значения исходного типа безопасно, остальные случаи нет.
>Какую книгу выбрать, если знаешь С#, что бы поменьше воды было?
Страуструп в этом плане идеален.
Как привязать в qt метод к событию на гуе без сигналов-слотов?
std::vector<int> v{1};
auto n = v[0]; ,
то auto у меня будет int или std::vector<int>::value_type? И как вообще можно проверить какой тип в переменной auto?
Будет int. Я тебе даже больше скажу std::vector<int>::value_type тоже выводится как int.
На ебало ему поссы. Это – паттерн реализованный в конкретном коде на плюсах.
Колбеками, например.
Понял. В шаблонах зайдет запись T::value_type. Спс.
Какой ящик. Сюда кидай.
Ну тогда меняй специальность. Дрисню на одну строчку за тебя делать никто не будет.
> червепрепод увидел слоты и сказал, что это не плюсы
Пусть препод покажет свой код.
Я прокомментрую.
у меня и так гуманитарная специальность, скелет(?) не нужен, тока a=..,b=..,c=..
надо на с++! и нет, я проебал скелет, который спиздил у дногруппника, теперь нужен:(
Ты слишком тупой, сори. Отсоси чтоли преподу, как там ещё гуманитарии такие вопросы решают.
Ты же не хочешь разобраться, ты втупую просишь сделать вместо тебя. Иди нахуй, мразь, не для тебя эта доска.
сука. соблазнительное предложение. а теперь представил в каком я положении? давай сразу на весь семестр лабы?
>ну я не против, если помогут разобраться
Чтобы помогли разобраться, нужно сначала вопрос задать.
почему сразу мразь?
Ты торгуешься еще что ли? Пока не увижу твою голую задницу, разговор диалог бесполезен.
Я - пидор-программист.
половина семестровых лаб и тока потом фотка. иначе никак, соре
хорошо, раз весело сидим, то вот мой вопрос. чем floap отличается от inc? что это вообще?
>2016
>c++
Вот например есть там картинка, я её выбираю в ListWidget и хочу открыть, как это сделать?
Гугл говорит QDesktopServices::openUrl(QUrl("/home/realnc/test.pdf"));
Лабы в прикреплённый тред
Спасибо.
Подрубился к фтп, работает всё.
Решил сделать его не консольным, заебенил listview. И теперь в гугле не могу найти, как в этот лист запихнуть файлы из фтп.
Подскажите какой метод использовать, чтобы запихнуть.
Понятно что ftp->list() передаёт мне данные, как я понял, но как пихнуть в лист нихуя не понимаю. Помогите аноны!
Так вот, как от QProcess получать сигнал во время выполнения программы, а не после ее окончания? readyRead() и readyReadStandardOutput() не работают - весь output печатается в textbrowser только после того, как сервер падает.
Никто даже не соснул :(
Я уже час въебал!
Как в win32 получить из текстбокса ебаный ИНТЕЖЕР?!
Я бы тебя послал нахуй, но ты этого не достоин.
Наверное, он имел ввиду, что QT - это видеоплеер.
Хм.
А текст ты как получаешь? У меня получается только в TCHAR* его взять, но для atoi он не годится.
https://msdn.microsoft.com/en-us/library/yd5xkb5c.aspx
а ещё есть _ttoi() которая скорее всего тебе и нужна
Чтобы потом выебать кочан.
Удолить еклипс. Поставеть VIM.
например вместо
vector <string> alph(3);
alph[0]=0;
alph[1]=1;
alph[2]=2;
дописать сразу в первой строке. например с массивом было бы что-то примерно
alph[3]={0,1,2};
help
Ценой?
Прочитай про стэк, динамическую память и про stack overflow.
uint32_t number = 0xffaaccbb;
uint16_t crc = crc16(CRC_INIT_VAL, (uint8_t*) &number, 4);
>что это не плюсы.
Мамка его не плюсы. Докажи ему, приведи пример, что самая лучшая оболочка в nix системах написана с использованием этой библиотеки. Если кукарекает на слоты, расскажи неучу, что в boost тоже есть сигналы и слоты. А если он скажет что boost не кресты, то можешь отчисляться из этой шараги, ты там все равно ничему не научишься.
Есть два стула. Эти два стула надо поменять местами.
Вот ты смотришь на эти два стула, и в воображении представляешь, как они сменили положение. Что быстрее, поменять эти два стула по настоящему, или просто представить, у себя в голове, что они сменили место? А теперь представь, что эта хуита, про "мысли материальны" реально работает.
Или у тебя есть огромная куча говна, но ты пока не знаешь, чем и как эту кучу будешь убирать, допустим это зависит от того, какова структура этого говна. Что ты будешь делать? Перетаскивать гавно то к одному, то к другому инструменту? А может еще и скопируешь это гавно для того чтобы проверить какой инструмент будет удобнее?
В любом коде, где можно избежать копирования или смещения реальных данных, используй указатели/ссылки.
Простейший пример.
int f(int shit){
shit = shit + 1;
return shit;
}
Если ты не будешь использовать тут указатели/ссылки, это дерьмо будет копироваться, а возвращаться совсем другое дерьмо. Так, в твоей памяти, в конце концов будет столько говна, что ты уже ничего не сможешь поделать.
Есть одна dll, которая активно использует стандартные потоки С++. Есть один движок, который из своего компилятора выкинул эти самые потоки. В результате движок нормально работает с Debug версией .dll, но при Release версии вылетает. Как сделать так что бы в Release версии в .dll принудительно оставили все для работы с потоками?
например вместо
vector <string> alph(3);
alph[0]=0;
alph[1]=1;
alph[2]=2;
дописать сразу в первой строке. например с массивом было бы что-то примерно
alph[3]={0,1,2};
help
Да, в с++11 добавили uniform initialization.
Когда пытаешься использовать ifstream например, просто читать/писать. Я спецом все комментировал чтобы исключить свое говно.
Застрял как раз на бектрекинге, с файла матрицу считал, создал матрицу структур и занес туда все эти данные. Идея была в том, чтобы сначала выбираю на первую должность рабочего с максимальной прибылью, потом на вторую должность так же выбираю рабочего с максимумом и тд, а если этот рабочий уже назначен, то возвращаюсь назад.
Но это нихуя не работает, видимо я не уловил сути бектрекинга, а в интернетах инфы про это толком нет, кроме 500 символов на вики и одного примера.
Помогите хотя бы на словах описать идею реализации этой программы.
Это еще не учтено, кстати, что должностей может быть меньше/больше, чем претендентов, ну да похуй
> то возвращаюсь назад
Ну вот там куда ты возратился должен находится список рабочих. Ты сначала идешь по первому, если вернулся то помечаешь первого как пройденого и идешь по второму. Если вернулся - помечаешь второго и идешь по третьему и т.д. Алсо у тебя жадный алгоритм который не гарантирует оптимального решения.
Твой жадный алгоритм не даст максимума, тут нужно задачу переформулировать так, чтобы можно было симплекса методом решать.
Не думаю. В CRC применяется деление многочленов из конечного поля Галуа, которые представлены вектором коэффициентов, и если ты сменишь endianess, то коэффициенты расположатся в обратном порядке, и это будут уже другие многочлены.
Да-да, именно так я и пытаюсь организовать: есть матрица структур РАБОЧИЙ, где как раз имеется его порядковый номер, доход с определенной должности строка, столбец и переменная, куда я буду заносить значение включался ли он в список или нет.
Но вот дойду я допустим до 5-6 должности и пойму что первый рабочий был бы эффективнее тут если он на первой должности имеет максимум дохода и на 6, но разница между следующим по списку доходом меньше в первом, чем в 6
Что в таком случае делать? начинать проход с начала?
Месье, а вы не путаете cmake с make? Ninja и make - две разных билд системы, которые не взаимодействуют. А вот cmake как платформонезависимая билдсистема-прокси умеет генерировать билд файлы и того и другого.
>Когда пытаешься использовать ifstream например, просто читать/писать. Я спецом все комментировал чтобы исключить свое говно.
Не комментить надо, а дебагером пройтись. А еще лучше проверить параметры линковки твоей либы. Вангую, что ты используешь билдсистему двига и для твоей либы используют те самые параметры, что убирают fstream. Бинарнику, который подгружает твою либу похуй на все, что не касается экспортируемых символов либы и в самой либе можешь устраивать любую содомию.
Эту комбинацию запоминать или стирать? Я так понимаю запоминать надо только тот, который имеет лучшую позицию, те если пятый работник смотрится лучше на третьей должности, чем на первой, то возвращаясь назад я запоминаю его, чтобы с него не начать. Правильно?
Но исходя из всего этого никакого алгоритма не выходит толком, точнее алгоритм может какой-то и есть, но это совсем не прхоже на бэктрекинг
Тебе нужно понять что такое бектрекинг или решить задачу? В случае если ты решил что пятому работнику лучше будет на третьей должности (а она занята) то ты возвращаешся к хуиле кторой сидит на третьей должности и перемещаешь его дальше из тех что он не занимал еще (тоесть на четвертую) и потом начинаешь спускаться ниже.
Бесполезная хуйня и табличка по ссылке и возможная таблица контейнеров. Ты либо знаешь все эти структуры данных и можешь вывести эту оценку как нехуй делать, либо ты макака, которая не знает, что делает.
Тоже самое с контейнерами. Там даже по названию понятно, какая структура данных лежит в основе контейнера.
Спасибо. Добра тебе анон.
>>667572
Пытаюсь понять трекинг и решить задачу, без понимания же хуй выйдет.
Пс, есть как с тобой связаться? Позадаю вопросы, если не влом тебе конечно. Оче интересная задача, хочется с ней разобраться не ради плюсика в зачет, а для себя
У тебя не сильно подходящяя задача, так как кроме самого бектрекинга тебе нужно еще и оптимизировать (так как нужен бектрекинг то это метод ветвей и границ). А оптимизации NP-полных задач это посложнее бектрекинга. Его лучше на чем-то типа поиска пути в лабиринте рассматривать. А так ты на слишком большой кусок замахнулся, желательно дробить темы для изучения.
бывает
нет
Ты должен не просто "читал книжку по ООП", ты должен его охуенно понимать, иначе получится говно
Всё зависит от тебя.
Попробуй напиши калькулятор и глянь как оно.
Лично мне было проще на дот нете без каких-либо знаний.
Скорее дико надрачивался на консоли, так как всякие серьезные дядьки говорили, что если ты не умеешь ваять чудеса в консоли, то тебе не стать программистом. А сейчас понял, что меня где-то наебали.
> Как это "без знаний" ?
Значит первый раз и при помощи гугла и здравого смысла.
> Да еще и дотнет на C++?
Да, было дело. Теперь я поумнел.
Не, это похвально. Я пробовал в Билдере формы лепить, но мне было 10 лет, и терпения не хватило.
Расскажи или покажи.
Изучил поиск пути в лабиринте, суть уловил, возможно не полностью. Но ведь там дойдя до тупика мы просто возвращаемся назад, отмечая тупиковые клетки как посещенные. У меня ж так хуй выйдет, погуглил мою задачу, среди похожих только куски решений венгерским алгоритмом, что не совсем необходимо мне. Ладно, спасибо за помощь, анон, буду сидеть и пытаться что-то сделать с этим
Если тебе нужен именно бектрекинг тебе нужно понять как представить все возможные комбинации назначений в виде дерева. В корне находится первый сотрудник, от него отходят ребра соотвествующие всем возможныи назначениям. Наследующей уровне несколько вершин соотвествующие доступным назначениям второго работника при соотвествующем назначении первого сотрудника (тоесть от них будет отходить уже на одно ребро меньше чем от первого, так как одна позиция занята), на следующем уровне для третьего и т.д. В самом низу у тебя должно получится n! узлов (листьев) каждое из которых соотвествует одному из возможных вариантов назначения сотрудников. Бектрекингом будет поиск в глубину по этому дереву. Потом тебе останется научится как можно раньше узнавать тупиковые ветви (в которых гарнтировано не будет оптимального решения) и сразу их отбраковывать и возвращатся назад. Но в любом случае это не эффективный способ, так как сложность n!, а у чуваков вон вроде есть за куб решение (венгерский алгоритм).
Если api документации по qt тебе не хватает, поищи примеры использования listview и ftp в qt. Потом думаешь, как эти две сущности подружить.
Проблема была в буферизации. Ну что же вы, аноны?
я уже вычитал тучу примеров, нашёл сайт где пиарили либу, которая через metod всё это делает, но её удалили
тьфу, model а не metod
Общее правило такое: если есть && сущность (параметр, переменная, что угодно), которая инициализируется с выводом типа (при помощи auto, аргумента шаблона и т.п.), то это универсальная ссылка, для которой выбор между rvalue и lvalue определится инициализирующим значением при выводе типа (например, auto && x = 1 будет rvalue, a auto && x = y - lvalue).
Ну и что? Это другое правило. Универсальные ссылки говорят не о "подходит", а о "является". Например, если T && x выведется в rvalue-ссылку, то это один раз жестко зафиксируется, и не получится потом пихнуть туда lvalue.
даже не знаю как ответить
Какую консоль ты учил?
> Я учил базу языка C++ уже пару месяцев, задрочил консоль до дыр
Задрачивал cin и cout 2 месяца?
Вопрос такого плана:смогу ли я написать в резюме, что я могу в нетворкинг и игры?
Если ты используешь view, тогда у тебя должна быть model, в которой и будут твои данные. Читай про MVC в Qt
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);
Анон, что не так с кодом? В папке файл не появляется.
-D CMAKE_BUILD_TYPE=Debug
#ifndef _DEBUG и #ifndef Debug макросы не работают. Чяднт?
> что я могу в игры
он умеет играть в игры -- берём!
написать сможешь, да это проверить легко прямо на собеседовании, задав пару простых вопросов на понимание. к примеру:
1. чем отличаются между собой tcp от udp?
2. как бы ты реализовал проверку доставки пакетов при использовании udp (свой rudp)?
3. и платиновый вопрос на общее знание нетворкинга. ты запускаешь консоль и вводишь в ней ping site.org. какие стеки протоколов/протоколы используются, что вообще происходит?
Если он задает такие вопросы, то он даже game loop нормальный сделать не сможет.
>2. как бы ты реализовал проверку доставки пакетов при использовании udp (свой rudp)?
Засобачил бы через tcp.
@
ВЫДАЁШЬ АУТИСТУ ТАСКУ РЕАЛИЗОВАТЬ ЛЕГКОВЕСНЫЙ ПРОТОКОЛ ПОВЕРХ UDP С ПРОВЕРКОЙ ДОСТАВКИ
@
ОН ХУЯРИТ ЧЕРЕЗ TCP
@
НИХУЯ НЕ ГРУЗИТСЯ
@
О да, один ты знаешь такую "тонкую" материю.
>вводишь в ней ping site.org. какие стеки протоколов/протоколы используются
Вот это вообще архиважно.
вопрос на понимание. поэтому да, понимать -- важно. если на вакансия не называется "макака за еду"
Макака, плиз. То, что ты знаешь какую-то ненужную хуйню - не делает ее какой-то исключительной, а тем более не обязывает остальных знать ее.
Рассказываешь, как это знание тебе пригодилось или идёшь нахуй.
у меня дебагер к qt не подключен, я хз как это сделать
я ошибку одну уже нашёл вроде надо писать "C:\Temp\" + url
у меня overдохуя историй, где это всё пригодилось ибо я ебусь с нетворкингом каждый день(рассказывать их тебе я не собираюсь ибо иди нахуй, мудила). он спрашивает про графу нетворкинг в cv. я ответил. вопрос про пинг самый платиновый на собеседовании для нетворкинга. а чего ты петушишься, я не понимаю)))0)
В данном случае петушишься ты, обосрав меня за то, что я задал вопрос. По одному посту ты уже решил, что я умею, а что нет.Я знаю такой тип людей, вас объединяет синдром вахтера.
Распускай дальше свой павлиний хвост, петушком ты от этого быть не перестанешь.
1. TCP гарантирует корректную передачу данных. UDP - нет.
2. Самый простой путь - как в sftp, через ACK для каждого пакета.
3. ICMP через UDP. Вроде так.
Разве тебе не ifndef нужны?
>>669951
Не знаю насчет пинга, но telnet и подобными инструментам пользоваться надо уметь, наверное
Ну и научусь же, для меня это новая тема.
По поводу макросов, нужен такого вида:
#ifndef debug
#define YOBA()
#else
#define YOBA() yobayoba(1488);
#endif
Вот только дебаг не отзывается. Что довольно странно. Какие вариации из гугла не пробовал только.
Можно ещё пакеты нумеровать для пущего счастья.
окей, затрахался я с файлом, но понял в чём дело, второй параметр при открытии не нужен, он и говнил.
Теперь вопрос, как через get скачать правильно? А то файл 0 кб
Залей выхлоп make clean; make VERBOSE=1 на пастбин
И попробуй ifdef NDEBUG (определяется когда делаешь релизный билд)
Блин. Попробовал еще раз - робит.
Спасибо, милаша :3
А так вообще принято писать? Везде видел именно _DEBUG_
ОП-хуй,
Зачем ты упоминаешь глючное, уёбищное говно IDEONE, когда есть божественный REPL.it?
Почему я должен был СЛУЧАЙНО найти эту радость?
респект!
Посмотрел что это. Похоже у неё другие цели. Вот если у тебя компилятора нет, то ты эту хуиту изаешь. А вот чтобы постить в тред луше идеон. 1 раз написал, скомпилил и кинул линк. а ещё я не понял как пользоваться консолью
QBASIC жи есть.
Значит это таки REPL, но для цепепе он не работает.
Такой код: 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 шагов.
А, понятно, на ТПпрогер индексы не с нуля. Обычно я пропускаю описание всякого говна и перехожу сразу к изучению кода.
Через CMakeLists делай.
>Я так понимаю, всегда нужно указывать =delete для конструкторов, которые не используются?
Только если они сгенерируются по-умолчанию.
Хотя можно для ясности указывать явно. Там довольно большой список ситуаций, в которых методы неявно помечаются как default или delete. Чтобы не страдать хуйней, заучивая эти правила, можно явно написать.
>можно явно написать.
Минус в том, что умные дядьки потом у виска могут покрутить, если окажется, что в данной ситуации ни к селу, ни к городу.
Я юзаю =delete для методов, которые генерирует компилятор, но мне они не нужны. Например раньше конструктор копирования нужно было создавать с модификатором private, а сейчас можно просто написать =delete.
>Минус в том, что умные дядьки потом у виска могут покрутить, если окажется, что в данной ситуации ни к селу, ни к городу.
Ну скажут, что не знаешь условия implicit defaulted/deleted declaration и хуле?
Зато не будет таких ответов, как у этого Василия, который не знает, что конструктор копирования и оператор присваивания являются implicitly deleted, если есть move аналоги. А когда возникает необходимость делать недоступными эти методы, то аналоги точно есть.
>конструктор копирования и оператор присваивания являются implicitly deleted
А я это знаю, наизусть помню все эти правила, ибо однажды показалось это важным.
Но все же, я имею ввиду ситуацию, когда здоровому человеку ОЧЕВИДНО, что никакие такие конструкторы использоваться не будут вовсе, т.к. объект создается единожды эксплицитным конструктором с параметрами.
Амперсанд не обязателен, как и для глобальной функции (имя Callable-сущности превращается в указатель на нее автоматически, когда прорабатывает std::decay). this указывает конкретный объект, от имени которого должен вызываться метод (в общем случае это может быть указатель на какой-то другой объект, если тебе захочется). Внутренности std::thread распознают, что им передан именно метод класса (при помощи отдельной специализации конструктора) и интерпретируют второй параметр особым образом, вызвав в нужный момент this->calculate (11, 20), а не calculate (this, 11, 20).
Когда в конструктор 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
Ну не знаю, возможно, чтобы подчеркнуть, что это именно указатель, первоклассных-то функций не завезли. Я бы посоветовал не заморачиваться и писать как удобнее тебе самому.
Да знаю, меня именно амперсанд и this интересовал. Ну и :: , забыл как его там.
в принципе, всё написали >>670885
В C++ нет правила, по которому member-функции распадаются (decay) до указателей, как обычные функции. Поэтому нужно указывать явно принадлежность функции классу и взятие адреса амперсандом. Про this вроде бы ясно.
Войд методы. В обоих циклы.
Меня сбило с толку именно что thread(calculate, 11, 20) нельзя, выкидывает ошибку, мол, нестатическая йоба, идите нахуй.
Теперь понятно как это юзать, не совсем понял за дикей правда, на досуге почитаю обязательно
Когда от тебя ожидают аргументом указатель на функцию (напр. void (*)()), а ты передаёшь имя функции (без амперсанда, тип void()), то C и C++ автоматически преобразуют тип функции в указатель на неё. Это и называется function-to-pointer decay.
Для мембер-функций такого преобразования нет.
Это же блядь элементарно. Вот есть у тебя табличка в тетрадке – то же самое и структуры.
Если не понял – пиздуй разгружать фуры.
Структуры - это то же самое, что и классы, только по умолчанию видимость стоит public, а не private.
Ебать бы объяснил.
"Двумерное пространство это десятимерное, только 8 измерений свёрнуты в точку."
Ну как я понял это тупо несколько переменных под одним именем с методами?
Всё потому, что ты тупее того, кто объясняет хуже грузчика.
Объясню структуры за селфи с флажком в допе и сапом.
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]);
}
}
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]);
}
}
с указателями обосрался
Если тебе нужно отличие структур от классов, то его почти нет, там только по умолчанию все поля public.
А вообще, изначально структуры (в языке си без плюсов) были как бе синтаксическим сахаром для передачи неодносложных данных в функции и обратно.
В си с плюсами добавили классы, уже совсем другую сущность... Об этом в следующем выпуске
> Почему нельзя сразу писать функции целиком, а мейн последним?
Удобнее. И прототипы не для этого зделоли, чтобы ты мог функции после main() писать.
> Зачем нужны прототипы функций?
Чтобы их вызывать, когда реализации в других модулях линковки.
Если совсем разных, то только какие-нибудь парсеры бинарных структур можно посоветовать.
Декларирование нужно в первую очередь для многофайловых программ (ускорения их компиляции после внесения небольших изменений). Функция может находиться в другом .cpp файле (или ее реализации в виде исходного кода вообще может не быть, например в случае использования библиотеки), компилятор устроен таким образом что каждый файл компилируется отдельно (еденица трансляции), соответственно инфу о функции (если она в другом файле) для статического контроля получить неоткуда. Для этого нужно декларирование - декларируя функцию ты обещаешь компилятору что такая функция на самом деле есть, и компилятор спокойно компилирует исходный код в объектный.
Вот хорошо и понятно объяснил, добра тебе.
Более быстрая компиляция и линковка. Паскаль еще и однопроходный by design, поэтому компилируется вообще со свистом.
>В крестах нет модулей, а в паскале есть.
И при этом кресты нужны (я тут не обсуждаю, насколько они дерьмовы при этом), а поц-кал — не нужен.
>однопроходный by design
Что это? Только на скорость компиляции модули влияют?
>>671424
Ну я же для примера.
> Паскаль еще и однопроходный
Разве к езыкам с каким-никаким синтаксисом это применимо? Я думал только к ассемблерам. А всякие поц-кали так или иначе надо компилировать в несколько стадий.
Как раз в ассемблерах нужны множественные проходы потому что forward references
>Что это?
Паскаль со своими секциями 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# - все в одном файле, но это уже мелочи.
И последний вопрос по модулям. Можно не подключать весь модуль, а только часть его функционала? Например не весь algorithm, а только sort из него.
Нет. Только будут. Но ведь они везде одинаковые? Ну или почти одинаковые?
Нет, вась, модули в C++ не завезли. Всё лишнее говно в любом случае будет отрезано линковщиком, даже в случае пропускания компилятором по какой-то причине.
Почему? Что в них плохого?
Как раз из-за того, что у разных членов комитета по стандартизации разные взгляды на то, какими должны быть модули (на самом деле подставь любой FEATURE_NAME вместо курсива), стандарты принимаются так медленно.
Вот суки. Путина на них нет. Он бы им устроил вертикаль власти. Сразу бы все стандарты приняли. Пятилетку в четыре года.
http://pastebin.com/6SPCmKap
Запустил в двух тредиках, заджойнил. Вввод второго пездюка вообще игнорится. Что я принципиально делаю не так?
> часть его функционала
В бинарник суется (имеется ввиду статическая линковка) только то что ему нужно. Исключение естественно хедеры, если тебе кажется что хедер дохуя жирный то нужно вручную резать. Кроме теймплейтов, они превращаются в код только при использовании.
В них - ничего. Но они 20 лет осиливали простенький вывод типов, просто потому что сишники из комитета нихатели. То же самое и тут.
>>671513
А как сделать так, чтобы он отображался пустым?
Т.е. я хочу сделать так, чтобы coins. тут было заместо s пусто, а не пробел. У меня эта буква s в отдельном чаре идёт.
Вот строчки кода:
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;
бумп
Попробуй '\0'. В ascii нет пустого символа, в юникоде должно что-то быть, например есть "\u200B" - "пробел нулевой длины". Второй вариант написать не в одну строку.
Пробовал, но там как пробел показывается.
НУ ладно, я уже переписал по другому.
Кстати, а куда тут лучшекод вставлять чтобы вам показать?
int dollar = 0;
while (summ >= 100)
{
summ -= 100;
dollar++;
}
Это называется деление с остатком.
бамп вопросу
>>=
так Б-г наказал делать
насколько же ты ущербен, что даже гугл открыть не можешь. при том что он устанавливается уже в три клика. съеби вот просто из программирования в сибирь и сдохни в землянке с медведями.
Зарепортил унтерменша, не знающего про гугл
А что, оно уже их беты вышло? Вроде недавно была только бета версия для 15 штудии? // Мимоmingwполуёбок
Как там, в 2015? 30 июля был релиз, в ноябре первый апдейт.
Также как и обычный, только код для компиляции генерит компилятор, в зависимости от параметров шаблона.
Но столкнулся с тем, что на стороне сервера нужен тоже какой-то класс, который обрабатывает этих самых плееров, т.е. аналог Player на другой стороне трубы. Как бы его так обозвать хорошо, чтобы смотришь в проджект эксплорер - и сразу понятно, что эта хуйня делает.
Мне очень неловко просить помощи, я редко выхожу из ридонли
Братиш, зачем ты так.
Почему и на сервере не использовать тот же класс?
mpv
Clang, llvm, qtcreator, qt, casablanka, openvr, opencv. А вообще ты охуел немного: первая ссылка в гугле https://github.com/trending/cpp
RemotePlayer или ClientPlayer
Когда заходишь в проект и видишь RemotePlayer, сразу подразумевается, что есть другие плееры и все они наследники AbstractPlayer'а
Всё-таки у серверного и клиентского слишком разный функционал, чтобы так делать.
А что не разумного? Код клиента в своем неймспейсе, код сервера в своем. Если боишся неймспейсов назви PlayerServerModel и PlayerClientModel. Но подобные многосложные имена ничем не лучше неймспейсов - ты просто пытаешся с помощью префикса/суффикса решить то что должно решаться неймспейсами.
Опять таки, Server класс есть, выходит неймспейс надо как-то мудрено называть, ОПЯТЬ ТАКИ.
Сука, именовать эту всю дичь занятие из нервных.
Неймспейсы отбросил, потомушта еще больше мешанины получается, не смог я придумать, как сделать из них конфетку.
Давай расскажи, как ты здесь видишь применение неймспейсов? Удобно пиздец дублировать половину кода и выдумывать охуительные имена.
Хуй на.
>Удобно пиздец дублировать половину кода
Ну так вынеси эту функциональность в common. А вообще покажи код
Конпелятор сам решает, инлайнить ли функции. И inline не делеает то, что ты думаешь.
Намекает, что можно бы заинлайнить, не больше.
Понахуячили кучу каких-то адапторов, генераторов, дистрибуторов что теперь хуй проссышь.
Не "на", а "в".
Задай границы и конвертируй цифры в чары, червь.
И вообще, лабы идут на хуй.
>>673125
Недавно подняли производительность критического участка на 20% расставив __attribute__((always_inline)) вокруг нескольких методов, после того как дизассемблинг показал, что компилятор по своим соображениям отказывался их инлайнить. Просто inline нужен только для исключения конфликта имен имплементаций в хидерах, собственно к инлайнингу он сейчас имеет очень слабое отношение, компилятор и так пытается все инлайнить.
А какая типичная работа на C++?
Например на php это какой нибудь круд, nodejs ֊ хипстерская фигня с вебсокетами.
Хы. Александреску рассказывал, как он вынужден был наоборот просить компилер не инлайнить, когда в фейсбуке оптимизировал что-то.
Ну тут тонкий вопрос, если все инлайнить то бинарник растет и кэш кода забивается. Универсального решения тут нет, в каждом отдельном случае нужно начинать с бэнчмарков и профайлинга и дальше при каждом изменении делать замеры.
> FLTK - графические интерфейсы - http://fltk.org
Господи, либо я дурак, либо эта библиотека говно.
Я, блять, не могу создать обычный чеклист. Гружу я hold_browser, а дальше что? Пытаюсь установить callback функцию для него, а мне хуй в лицо, там нихуя не понятно, в документации нихуя не понятно, примеров нихуя нет. Тупое говно тупого говна
Просто ты туповатый, лол.
либа же изи. ты реально туповат
Срандом пользуйся, червь. Тебе этот <random> еще 10 лет не пригодится, учитывая твои вопросы
Долбоеб ебаный, назови хоть одну причину, почему этому долбоебу не подойдет сранд?
Этому долбоебу и брейнфак подойдет, это же не повод. Сранд, как и значительная часть libc/posix, это примитивные API прямиком из 70х, использующие не синхронизированные глобальные переменные на каждый чих. А значит, если этот долбоеб решит использовать все свои 16 ядер и запустить код в несколько потоков, он внезапно обнаружит, что 1) вероятностное распределение съехало нахуй, т.к. потоки переписывают один и тот же сид 2) начались жесткие тормоза, т.к. перезапись глобальной переменной из разных потоков инвалидирует кэш. Ну и плюс диапазон у него ограниченный и слегка ебанутый.
И зачем, спрашивается, связываться с этим говном мамонта, когда у тебя такой-то <random> есть? Две лишние строчки написать тяжело? Пиши на баше, епта, используй $RANDOM.
Если достатно неглубокого копирования то копируй каждый объект отдельно с помощью memcpy. Если нужно глубокое то надо переопределять конструктор копирования. Возможен непереносимый пердолинг (если конструктор переопределить нельзя) но с таким лучше не связыватся.
> я использую разные API для однопоточного и многопоточного кода
> я пишу немасштабируемый код, т.к. мне нравится потом ебаться с конкурренси багами
Как скажешь.
> я пишу немасштабируемый код, т.к. мне нравится потом ебаться с конкурренси багами
> laba1
> конкуреси лол?
> я использую разные API для однопоточного и многопоточного кода
> я пишу немасштабируемый код, т.к. мне нравится потом ебаться с конкурренси багами
> получить ебучий рандомный char в лабе
Ты действительно настолько даун? Отмасштабируй очко себе.
>>673596
> Лабу можно писать наотъебись, в продакшене я бы написал нормально.
> Но я не умею нормально, т.к. я всегда писал наотъебись.
И эти вот долбоебы потом приходят в профессию и начинают гнать говнокод мегабайтами.
Но пишут говнокод долбоебы, которые не понимают, где нужно использовать хуйнюнейм, а где не нужно.
Например те, кто не понимает, что сранд в крестах вообще не нужно использовать, уже 5 лет как.
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.
https://ideone.com/jQIsea
Например, вот так: https://ideone.com/wxRZar
Сегфолтов теперь быть не должно. Можно было бы подумать, что на списках длины 2-3 цикл не всегда найдется, но по доказательству корректности алгоритма, когда мы попадаем в цикл, указатели всегда встретятся.
>йоба архитектура
Конечно, подключить стандартный заголовок, создать обьект и дернуть у него метод это пиздец какая сложная архитектура. Не позорился бы даун.
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();
Файл в папке создаётся, однако он пустой, прорыл в и-нете материал, и нихуя не понял.
Спасибо, Аноны.
Ситуация: тебе надо сделать сраную лабу, в которой ты хочешь заполнять массив автоматически, а не вручную. Ты уже знаешь про std::rand и даже если не знаешь - все что тебе нужно прочитать - описание std::rand. Даже про srand читать не обязательно. В процессе чтения ты увидишь, что std::rand является небезопасным, а в C++11, оказывается, есть нормальные решения.
Ок,- скажешь ты. - Давайте использовать современные методы. - И открываешь документацию к <random>. Твоему взору предстанет стена текста, на которой ты сразу же увидишь минимум 15 сущностей, которые надо разбирать, а пример с кодом нихуя не говорит о том, как бы быстро заюзать эту охуительную безопасную йобу. Тут же ты вспоминаешь, что вообще-то ты не ставишь себе задачи изучить весь random(по крайней мере, сейчас), а беглый ее осмотр не внушает тебе уверенности, что это займет 5 минут. Что ты выберешь: потратить неизвестно сколько времени на изучение <random> или по-быстрому заюзать std::rand, который справится с твоей задачей на ура?
Конечно, если ты и так планируешь изучить <random>, то лучше выбрать первый вариант. Но если ты вообще не собираешься писать на C++, или у тебя нет времени, или ты блять просто не хочешь отвлекаться на побочную хуиту, то скажи, какого хуя ты тут выступаешь, мразь? Только честно. Как вообще использование std::rand в ебаной лабе на сортировку мешает мне выбрать нужное решение перед написанием продакшен кода? Как, блять, ну ты объясни мне, пожалуйста!
Я что еще, когда что-то изучаю, должен код через TDD ебашить? Чтоб тебя удовлетворить, пидор? А ты не охуел там?
P.S. Кроме всего прочего вангую в тебе джуниора-оверкиллщика, который на сугубо утилитарные вещи городит по 5 абстракций.
За то время, что ты тут ноешь, ты могу бы уже 5 раз скопипастить нужный кусок из примера и двинуться дальше. Но нет, блядь, надо начать обосновывать совой говнокод, говонокдость которого ты сам прекрасно осознаешь.
Так погоди-ка, мразина. И чем ты отличаешься от той макаки, которая хуячит std::rand в продакшене, если такое советуешь? Ты же советуешь заиспользовать либу не глядя, не разобравшись ней, не зная как оно настраивается и как оно себя поведет в дальнейшем. Ебать ты дно, все с тобой ясно.
Я повторяюсь снова, но я подписываюсь под словами этого благородного дона, чей навык красноречия просто сияет своим светочем.
Очевидно же, хуячить <random> не глядя лучше, чем хуячить std::rand не глядя, почему - написано выше. STL ты и так используешь, если ты, конечно, не из тех мудаков, что используют libc в крестовом коде. А ты можешь быть как раз из тех мудаков, судя по твоей анальной привязанности к std::rand.
Ты тупой еблан. Хуячить не глядя вообще нельзя, а хуячить std::rand глядя намного проще, чем делать то же самое с <random>
Хуячить std::rand глядя вообще невозможно, т.к. первый же гуглежь показывает, что рандом в современных крестах делается через <random>, а std::rand - это полу-депрекейтед пережиток для совместимости с няшной. Ну и если тебе "проще" важнее, чем "правильно", то тебе в пыхипи надо переквалифицироваться.
Потому что, если конструктор копирования не тривиальный, то просто копировать память нельзя.
В самом массиве у тебя же указатели хранятся, его мало смысла копировать.
>Хуячить 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>.
Так что да, "проще" в данном случае уместно. А вообще очень полезно думать не в рамках "правильно", а в рамках "уместно". Почему-то когда люди слышат "правильно", они часто начинают выключать мозг, вместо того, чтобы самим давать оценку.
Там чото около трех строчек для инициализации, зато не надо вырвиглазное целочисленное деление делать. У Лававея было выступление на cppcon, где он ясно и небеспочвенно сказал, что не надо использовать сишный rand.
> видишь стену текста
Видишь uniform_int_distribution, в которой сразу рабочий пример. А выбирать генератор будешь хотя бы узнаешь чем один отличается от другого.
http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution
Ну да, ну да, "мне только лабу зделоть", "чо-то как-то слишком переусложненно", "ну и что что говно, мне и так норм", "я как писатель лаб знаю лучше".
Не хотим узнавать и использовать правильные и корректные подходы, хотим как диды на PDP-7 городить костыли, нам же только лабы сдать, ебись оно дальше все конем.
Если тебе похуй на рандомность, то проще всего нихуя не открывать, а накалякать на коленке линейно-конгруэнтный генератор в три строчки.
Если бы мне предложили обязательный выбор ложку говна или Стровструпа, я бы выбрал ложку.
Да, и писать свой класс для распределения, вместо стандартных :3
пиздец, я пиздоглазый. Спасибо, Анон
Поясни как им правильно пользоваться?
Это то есть каждую команду надо проверять на commandFinished(int, bool) ? Или можно ждать после всех команд ftp.done?
> рандомно генерирующийся уровень
std::random_device, std::mt19937, std::uniform_int_distribution.
Когда доходишь до конца одной карты начинаешь показывать следующую.
Контрольные вопросы можно устно.
По принципу paging geometry вроде как, постранично то есть. Мб так нагуглишь чот.
> что он дохуя популярен в этом треде
к популярности все эти вопросы никак не относятся. просто один долбоёб всё никак мануал не осилит вот и спамит сюда
помогите пожалуйста понять, что не так с кодом
http://pastebin.com/bUCXWqUY
есть квадратная матрица размера n, и мне нужно найти длину наибольшей возрастающей последовательности, то есть если матрица размера 3, и в ней элементы 1 2 3 4 5 4 3 2 2, то наибольшая последовательность 1 2 3 4 5,и её надо вывести, но мой код почему-то не работает, подскажите пожалуйста, в чём проблема и каким образом можно вывести саму последовательность?
Как мне сделать обычное окно, с двумя кнопочками (Start, Reset), текстовой формой, куда коэффициент вбивается и областью прорисовки в центре окна, куда будет выводиться график функции?
Берёшь Qt, в Qt Designer шлепаешь кнопки, поле, текст, создаешь action для кнопок, пишешь простенький код для твоих целей.
Если не справишься, то тебя ничего не спасет и ты не сдашь лабу
Вот это оно? http://rutracker.org/forum/viewtopic.php?t=3941453
>>674971
Где вообще за это винапи почитать? С примерами там, как кнопочку сделать, как формочку текстовую и т.д.
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.
>Нагуглил простой пример с WinAPI. Пиздец, бля, че это вообще за хуйня?
Теперь ты знаешь, что с ним связываться не стоит.
Qt это более-менее стандартное решение для C++
Так там на рутрекере русская версия же. Я на инглише не очень шпрёхаю.
Интерфейс отклеился
У библиотеки нет интерфейса.
Есть ты про QtCreator, то он со всеми языками поставляется (на самом деле я не проверял, но в сырцах лежат переводы в том числе и на русский).
>http://www.qt.io/download-open-source/ вот это оно.
На ХРюху пойдет?
Что скажешь по поводу вот этого?
>Тем не менее, использование Qt нельзя однозначно назвать хорошей практикой. Во многом это уже не C++, а другой язык, со своими концепциями и паттернами. Qt-код требует дополнительного препроцессинга при помощи встроенных в Qt утилит (т.н. метаобъектная компиляция), поэтому не получится просто подключить Qt как обычную библиотеку и использовать свой любимый компилятор без дополнительного софта. Нельзя сказать, что это существенное препятствие, но есть мнение, что использование Qt нарушает дух C++, раздувает машинный код и порождает макак-любителей кодогенерации.
Скачал также книжечку (пикча). Норм или фигня?
5.5.1 у меня на XP пошла. Только qcombobox в тестовом проекте выдаёт эксепшн почему-то, пока не смотрел почему.
Попробуй это взять.
Там в комплекте не только библиотека и QtCreator, но ещё и компиляторы идут.
Ну, MinGW тебе точно нужен, если у тебя студии нет (только я не понял, почему там 2 MinGW. Или верхний — это MinGW-сборка Qt, а нижний — сам тулчейн?).
А Source — ХЗ.
Походу, XP — слишком тухлая версия.
Попробуй что-нибудь постарее. Может даже не пятую версию. А 4.8 http://download.qt.io/archive/qt/
>Как-то слишком долго с qt.io качается.
http://download.qt.io/archive/qt/4.8/4.8.6/qt-opensource-windows-x86-mingw482-4.8.6-1.exe.mirrorlist
Запустил какую-то бяку "qtvars.bat", хз зачем. Теперь проц на 100% грузит и что-то там в дос-окне мигает.
Creator любой на хрюшку встанет? Или старые версии качать?
Попробуй начать с последних, у них время модификации ещё старее, чем у инсталлера qt.
Тут мне их теперь походу надо всё между собой посоединять, что понаустанавливал?
http://doc.crossplatform.ru/qt/4.3.2/install-win.html или лучше засунь qt в path (третий пункт по ссылке)
Требует, чтобы я ему указал путь к компилятору и к отладчику. Что из этой всей пачки ехе-шников компилятор, а что - отладчик?
>>675350
>>675351
http://doc.qt.io/qt-4.8/install-win.html#step-3-set-the-environment-variables
Это не на всякий случай, там написано так сделать:
> You may also need to ensure that the locations of your compiler and other build tools are listed in the PATH
Посмотри ещё http://gromr1.blogspot.ru/2014/04/install-qt-4-8-5-mingw-on-windows.html
Естественно, не надо прямо делать всё, что там перечислено.
1) Версии и пути у тебя свои.
2) Собирать GDB вряд ли нужно.
3) Если ты добавил всё в PATH, вряд ли нужно будет руками пути прописывать, компилятор и Qt должны савтодетектиться.
Может, с чем-то другим придётся повозиться.
А как теперь из Creator попасть в Designer, чтобы побольше кнопочек в проект напихать?
А еще такой момент. Как его скомпилировать? Где тут вообще С++ код? XML только какой-то.
Работает вроде
Формошлепство, компьютер вижн
Сап /pr! Чем отличается буфер от потока в С?
Конкретнее. Какой буфер от какого потока?
познай всю силу WebRTC (c++ либы, не js интерфейса)
Фрилансить или удаленно работать можно?
Как правильно сохранить дату QDate (без времени) в базу данных SQLite (.db) в таблицу с полем DATE и также считать её в формат QDate из базы данных?
"01/02/2005" в базе считывает в QDate как (invalid)
Гугол охуел, у них там работает блять
Где я долбоеб, анончик?
памагити
>Роберт Лафоре - Объектно-ориентированное программирование в C++ (2004)
после 2 лет байтоёбства в K&R, за плечами поверхностное изучение 3 тома Кнута (ещё в универе), небольшой опыт писания на коленке на низком уровне (ASM), немного понимаю в модулях ядра, драйверах Linux и кросс-компиляции. Про графику не знаю вообще ничего, с трудом переделал шаблонную формочку в Qt для отслеживания своего заказа на почте. Не программист, инженер.
Цель - летом сменить работу и пойти джуниором на крестах, потому что интересно, перспективно и потому что заебало инженерить.
Собираюсь обмазаться Маерсом по STL и им же Effective C++, какие ещё советы? Нефть авансом, выручайте, анончики
убейся об стену
Сорт оф поддвачну. Быдлокодерство на крестах в НИИ за плечами, впереди - страх собесов и чувство, что я днище ебаное в рамках коммерческой разработки.
В шапке чот особо не нашел каких-то хинтов по рейтингу знаний так сказать. Что прям таки маст-рид и самое ходовое в вопросах на собеседованиях?
Интересно как с этим в больших корпорациях? Понятно что старое не трогают, а вот новое на новом стандарте пишут или как?
Это копия, сохраненная 26 марта 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.