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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
193 Кб, 960x575
Оффициальный™ традиционный® C++ тред #18 #622611 В конец треда | Веб
Иные байтоебством тяготятся,
Но местный сброд, участливый к нему,
Алкает жадно: "Я согласен взяться!"

Ликуй же ныне, ибо есть чему:
В тред вполз с вопросом отрок из гейдева:
"Как мне хранить текстуры, не пойму?"

Лишь крестоблядок не сгорит от гнева
И будет поощрять столь низкий вздор,
Тщась разогнать тоску родного хлева,

Ведя пять дней с невеждой разговор.


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

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

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

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

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

\r\n\r\nFAQ:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

И еще есть вот такое, если проникся:
Видео с CppCon (на ангельском) - https://youtube.com/user/CppCon/videos\r\n\r\n

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

Под *nix, как правило, уже предустановлен компилятор gcc (если нет, используй sudo aptitude install gcc), так что достаточно сохранить хэллоуворлд, набранный в текстовом редакторе, и выполнить g++ helloworld.cpp и ./a.out. Но удобнее установить какую-нибудь IDE, например, весьма удобную CodeLite (sudo aptitude install codelite codelite-plugins), и работать в ней. Ее также можно использовать и в шиндошс, но тогда сперва придется установить MinGW (http://mingw.org).

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

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

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

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

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

boost

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

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

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

Литература:
Ариндам Мукерджи - Learning Boost C++ Libraries (на ангельском) (2015) - https://goo.gl/b0gPN1

Qt

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

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

В настоящее время основные версии Qt - 4.8 и 5.х, полной обратной совместимости между ними нет как в пистоне, ага.

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

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

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

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

И еще куча библиотек на любой вкус - http://en.cppreference.com/w/cpp/links/libs
#2 #622612
#2 #622612
64 Кб, 864x863
#3 #622653
Каким циклам в C++ соответствуют эти циклы repeat until?

Написал такую хуйню: https://ideone.com/hznxek
#4 #622655
>>622653
do while
#5 #622656
>>622655
Ты уверен? Обычно циклы с until работают до тех пор, пока НЕ выполнится условие until. Но все пидорасы в книгах об этом цикле думают по-разному.
#6 #622658
>>622656
По смыслу там не может быть do while, потому что здесь: while(v < p) i++; надо сканировать массив до тех пор, пока элементы меньше опорного. В do while пришлось бы добавить отрицание.
#7 #622666
Читаю Прата. Сейчас дошел до 9 главы. У меня возник вопрос. Вы это все помните наизусть или просто запоминаете какие возможности есть и лезете в мануал? Я просто очень изумлен тем, сколько возможностей есть на крестах.
#8 #622678
>>622666
Там азы написаны, мы знаем намного больше и помним о куче подводных камней.
#9 #622686
>>622666
Главное знать где и что искать. А подробности можно посмотреть на cppreference.com
#10 #622692
>>622678
Не прояснишь мне по поводу стека? Почему в нем операции выполняются быстрее, чем в куче?
#11 #622696
>>622692
Потому что стэк всегда лежит в кэше процессора, а обращение к оперативной памяти в случае cache miss занимает 200 тактов. Плюс выделение/освобождение памяти на стеке - это прибавление-вычитание 1 указателя, а в куче - зависит от аллокатора и деаллокатора. Стандартный malloc/free медленный.
#12 #622699
Если интересно про кэш, почитай лучшие сообщения у этого юзера http://rsdn.ru/Account/Info/38267
#13 #622700
>>622699
>>622696
Благодарю.
#14 #622705
>>622696
В общем случае скорость чтения из стека и кучи одинакова. Куча замедляется, только если она сильно фрагментирована.
#15 #622713
>>622705
Если данные вылетят из кешей, то лови чтение из оперативки. А кешей всего то ~35 мегабайт
#16 #622715
>>622705
В каком-таком общем случае, поехавший?
#17 #622718
>>622713

>35Мб


Это на йоба-серверах? Или я настолько отстал от жизни, что пропустил момент, когда стали распространенны процессоры с огромным кешем?
#18 #622751
>>622718
Он, видимо, дефисчик проебал.
#19 #622837
>>622526

>Что лучше freopen или fstream?


fstream

>>622597

>Для чего нужно явное создание экземпляров?


Для того же, для чего и явное создание переменных встроенных типов.

>>622611 (OP)
OP вообще красавчик со стихом в этот раз.
#20 #622858
Хочу заняться юнити разработкой , и подумываю над с# ,но в университете учил с++ и мне он нравится , можно ли как-то это совместить?
у меня будет где-то год-полгода фри (висеть на шее) , с каким из языков где-то после месяцев 6-9 можно делать хоть какие-то подделки и зарабатывать хотя бы на еду 2-3к рублей в месяц ?
#21 #622859
>>622837

>fstream


Почему?
#22 #622870
>>622859
Прочитать и вывести 100 мегабайт через fstream занимает 480 миллисекунд, а через freopen 6.8 СЕКУНД. В чём дело? Есть какие-нибудь подводные камни для этих способов ввода? Ничего кроме getline придумать не могу, но он везде работает.
#23 #622873
>>622718
6-8миб. Ошибся чутка
#24 #622874
>>622859
Потому что ты пишешь на C++ , а не C .
#25 #622875
Кто-нибудь пробовал модули в новой VS? Как их включить-то?
#26 #622942
Решил взять и прочитать Страуструпа в оригинале. Толк есть?
23 Кб, 663x328
#27 #622957
Я ньюфаг, как в C++, так и в программировании вообще. Излагаю суть задачки. С помощью вложенных циклов (без использования массивов, короче) надо нарисовать в консоли шахматное поле, и на заданную пользователем клетку поставить слона, отметив на поле все клетки, по которым он может двигаться.
Я сделал вот так, но результат у меня кривой: http://ideone.com/CN3Ru7

Помогите выяснить, почему и что не так. Результат для d5 пикрелейтед.
#28 #622977
>>622957
Там где z ты хуитой какой-то занимаешся. Точнее не хуитой, там ходы слона высчитываются, а тебе конб нуэен.
#29 #622983
>>622977
Да нет, мне именно слон и нужен.
Просто одна полоса справа от позиции фигуры почему-то пропускается, а я всё не могу обнаружить, в чём проблема.
#30 #623000
Братцы, а может кто несколько лаб по Теории программирования сделать за вознаграждение?
Основы кодинга, знающему несложно вероятно будет. Сессия завтра.
#31 #623001
>>623000
Или я не в тот тред пишу?
#32 #623004
>>623001
Не в тот сайт.
Задания скинь, интересно почитать.
#33 #623006
>>623004
Лабораторная работа № 1
Классы. Основные понятия

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

Вариант 1==
Класс «Растение»
Поля: тип (дерево, куст и т.д.), высота и т.д.
Для поля «тип» использовать тип данных enum
Методы:
a.\tсравнение по высоте двух растений, в метод передается высота растения, с которым требуется сравнить текущее
b.\tсравнение по высоте двух растений, в метод передается экземпляр класса «Растение», с которым требуется сравнить текущее

И там 5 лаб. Скажите, большой ли это объем работы и в какую сумму может оцениваться?
#34 #623008
>>623006
\t перед a и b лишние.
фикс
#35 #623009
>>622957
В 46 строке, у тебя всегда выводить пробел, если не был выведено 'B'. А кроме этого пробел не нужно выводить если ты перед этим вывел '*'.
#36 #623010
>>623006
Хуйня ниачем. Оценят в самый минимум. Если ты по специальности погромизд, то этого вообще недостаточно.
Держи урок https://www.youtube.com/watch?v=EpjVri1AZZc
#37 #623012
>>623010
Но это задание целиком было, без моих решений.
#38 #623013
>>623010
За видео спасибо.
#39 #623014

> str.replace(str.find(str2),str2.length(),"preposition");


Почему здесь порядок ыполненя не нарушен? Он же может сначала str2.length() посчитать, а потом str.find(str2).
#40 #623015
>>622942
Нет. Выбери что-то другое.
#41 #623019
Хелп товарисчи! Проблема такая,я решил учить c++,до этого программированием вообще не занимался,читаю книгу из описания треда,там все начальные примеры приводятся в visual studio,подскажите где скачать норм версию,а то та что с оф сайта поломала мне винду 7.
#42 #623034
>>623009
Можно как-то пофиксить?
Пытаюсь запихнуть остальные условия (с выводом "B" и "*") в цикл с z, поебавшись при этом с break/continue - пока безуспешно, и, похоже, так и останется.
#43 #623052
>>623015
Я уже сносно умею в плюсы, что выбирать?
#44 #623054
>>623019
С оф сайта качай
#45 #623058
>>622611 (OP)
Анон, скажи когда уже будут модули?
#46 #623065
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4173.pdf

тактактак, наканецта можно перегрузить operator.
#47 #623067
>>623065
И зачем оно надо?
#48 #623072
>>623058
так я так и сделал,но она обновления для винды ставит,после чего ни одна программа не запускается
#49 #623073
>>623067
operator-> уже есть, для симметрии
#50 #623091
>>623052
Либо любую современную книгу из шапки либо любой Мейерс
#51 #623096
Хочу заняться юнити разработкой , и подумываю над с# ,но в университете учил с++ и мне он нравится , можно ли как-то это совместить?
у меня будет где-то год-полгода фри (висеть на шее) , с каким из языков где-то после месяцев 6-9 можно делать хоть какие-то подделки и зарабатывать хотя бы на еду 2-3к рублей в месяц ?
#52 #623104
>>623091
Спасибо
#53 #623105
>>623096

>но в университете учил с++


Разве в университетах не преподают обычный Си только с классами (то есть древний как говно мамонта С++)?

>, и подумываю над с#


У шарпоблядей свой тред. Вообще, если ты знаешь Си или С++, тебе любой язык будет даваться намного проще, так как от Си пошли большинство ЯО, а С++ включает в себя огромное количество идей. Но я сомневаюсь, что ты в универе учил С++.
792 Кб, 1343x670
#54 #623113
>>623105

>ЯО


Хотел запостить ядерное оружие, но почему-то у гугла ЯО ассоциируется с чем-то другим.
#55 #623116
>>623113

>яой

#56 #623119
>>623113
Интересно. А какие языки программирование используют военные, имеющие отношение к такому оружию?
#57 #623121
>>623119
Ада?
#58 #623122
>>623119
Паскаль, отвечаю
#59 #623123
>>623119
хтмл и цсс
#60 #623125
>>623121
Хм. Вполне может быть. Я слышал только о автоматизированных и бортовых системах.

>>623122
Может Фортран тогда уж?

>>623123
Тогда нам конец.
#61 #623170
#62 #623233
Хочу сделать типа виджетик на рабочий стол на qt. Нагуглил что это делается через Qt::WindowStaysOnBottomHint .Создаю новый проект в Qt Creator`e, добавляю одну строчку:
[code]
#include "widget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
\tQApplication a(argc, argv);
\tWidget w;
\tw.setWindowFlags(Qt::WindowStaysOnBottomHint); //this
\tw.show();

\treturn a.exec();
}
[/code]
ничего не меняется, окно как окно. Меняю Bottom на Top - окно исправно висит поверх остальных. qt-opensource-windows-x86-mingw492-5.5.1 ЧЯДНТ?

https://doc.qt.io/qt-5/qt.html#WindowType-enum

>Informs the window system that the window should stay on bottom of all other windows. Note that on X11 this hint will work only in window managers that support _NET_WM_STATE_BELOW atom. If a window always on the bottom has a parent, the parent will also be left on the bottom. This window hint is currently not implemented for OS X.


Написано, что не работает в OS X, про windows ничего, намекает на то, что должно работать.
#63 #623250
>>623105
ну не то что я прям учил с++ , на 1 семестре алгоритмы на с++ , на втором пролог и лисп , 3 и 4 семестр ооп на с++ , а на 5 асп.нет на шарпе , учился на граф.дизайнере но понял , на ласт семестре что не мое и хочу быть программистом , учюсь в польще (мимохохол)
#64 #623295
Можно ли в класс запихнуть переменную, которая будет считать количество объектов? Как это сделать?
#65 #623296
>>623295
Статическая переменная, инкриментируй при вызове конструктора.
#66 #623300
>>623296
https://ideone.com/NZJucu
Пишет без константы никак.
#67 #623304
>>623300
Инициализируй не при объявлении.
#68 #623305
>>623300
А. Кажется понял. Надо было сделать после объявления класса что-то вроде:
int A::counter = 0;
Так?
#69 #623324
>>623300
https://ideone.com/WNADdy

было: ошибка: ISO C++ запрещает инициализацию внутри класса неконстантного статического элемента «A::counter»
#70 #623363
>>623324
почему так нельзя?
#71 #623419
>>623363

> почему так нельзя?


Ну, Страусс утверждает что якобы если такое разрешить то плюсы поломаются http://www.stroustrup.com/bs_faq2.html#in-class но, честно говоря, я не понимаю в чем проблема.
#72 #623460
>>623363
Ты создал объект, изменил значение этой переменной. И создаешь другой объект. Какое значение будет у нового объекта?
А в разных модулях могут быть разные static storage и в них разные значения твоей переменной. Как все это отслеживать?
#73 #623464
>>623419
Короче, как всегда. Старпёры не хотели забивать на убогие компоновщики или тупо не осилили.
Зато на модули какой хайп подняли, стены дрожат.
#74 #623465
>>623464
Хотя вроде же это в новом стандарте есть или будет, не?
#75 #623466
>>623464
Илюшь, съеби обратно в го-вно тред.
#76 #623477
>>623465
Нестатические члены можно так инициализировать.
56 Кб, 1440x1080
#77 #623539
Вопрос по qt,
QObject::connect(this->obj_timer, SIGNAL(timeout()), this->objcts, SLOT(RefreshOL()));
obj_timer, objcts - объекты структуры, откуда исходит коннект
Ошибка на 40 строк, я уж не знаю, что забыл тут
Помню, была подобная ошибка, решалась парой символов
#78 #623557
>>622858
На c++ библиотеки. Из шарпа тупо к ним обращаешься. Вижу так. Буду пробовать так когда-нибудь.

istringstream, ostringstream, stringbuf - в чём необходимость этого при наличии stringstream? Вроде об одно и том же, на первый взгляд.
#79 #623561
Какие подводные камни могут быть при использовании ссылок? Сейчас читаю про них, вроде достаточно удобная штука. Позволяет сделать код немного более читабельным и избежать в некоторых случаях не нужного копирования. Просто я заметил что есть срач из-за них. В чем же недостаток их применения?
#80 #623564
>>623561
Недостатков нет. Просто сложнее чем указатели. Разве что операции с указателями не выбрасывают исключений.
#81 #623598
>>623561
Нельзя изменить ссылку. Значение по ссылке - да, но не саму ссылку.

Ну и в некоторых случаях можно отстрелить ноги, если исходный объект умрёт раньше ссылки.
#82 #623607
Я правильно понимаю, что целесообразно наследовать класс как private тогда, когда необходимо получить все свойства и методы так, чтобы они были доступны только в пределах класса?
#83 #623616
Как начать обмазываться исключениями? Читал, что это вообще очень неодназначная сложная штука, и код надо строить именно вокруг обработки исключений.
#84 #623618
Интеллектуальные указатели - надо, нет? Когда целесообразно использовать?
#85 #623636
>>623616
Код с исключения течет как твоя мамаша, а чтобы не текло, нужно обмазыватья RAII и только RAII, а также copy-and-swap и прочими методиками.
>>623618
Не надо использовать в одном случае - когда нет владения и ты 1000% уверен, что объект будет жить дольше, чем указатель. В остальных случаях надо.
#86 #623638
>>623607
Да.

Но целесробразно ли вообще приватно наследовать класс - другой вопрос.
#87 #623648
>>623636
Владение - это когда я в одной сущности создаю другую?
#88 #623650
Вот скажите, тако вообще возможно? Чтобы код сам себя редактировал и изменял, вносил правки?
#89 #623772
>>623650
В крестах без подключения нестандартных расширений - нет. Это же не интерпретируемый язык, в рантайме остаются только машинные команды, а исходники неизвестны уже. Можно сделать самомодификацию на уровне ассемблерного кода, но это все будет нестандартным, платформозависимым, и потребуется, возможно, менять настройки оси, чтобы разрешить перезаписывать сегмент команд.
#90 #623774
>>623648
Владение - это когда при уничтожении обладающего объекта должен уничтожиться обладаемый (или уменьшиться его счетчик ссылок при соместном владении). Например, vector владеет тем, что в нем хранится, и при уничтожении вектора в его деструкторе он пройдется по своим членам и вызовет деструктор каждого.

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

Поэтому тебе нужно придумать владельца (например, Graph), внутри которого будут unique_ptr на каждую из нод (и при уничтожении Graph у тебя уничтожатся ноды), а вот между нодами уже можно делать обыкновенные простые указатели. Или shared_ptr, если ты хочешь делить ноды между графами, тогда между нодами можно будет завести weak_ptr. Далее, придется написать ad-hoc сбощик мусора в классе Graph, который бы подчищал память.
>>623650
Это называется метапрограммирование.
#91 #623775
>>623772
В общем — это черная магия?
#92 #623776
>>623638
Про это хорошо написано у Саттера-Александреску в Coding Standards. Приватное наследование это, по сути, аналог композиции, и композицию обычно использовать лучше. Но бывают ситуации, когда это не так, например, если ты пилишь стратегии и хочешь, чтобы пустой базовый класс оптимизировался и не жрал памяти.
#93 #623777
>>623775
Да, это используют обычно только для вирусов и прочей хуйни, где иначе никак. Надежность очень маленькая.
#94 #623780
>>623019
Ты сначала винду с офсайта скачай, вообще по софту вопросы в /s задают.
#95 #623787
>>623772
Еще вот что вспомнил. Была такая либа типа http://demonastery.org/2011/04/c-eval-hell-yes/ , возможно, что не именно эта, но суть та же - она не самомодифицировалась, а компилировала новую версию своего кода установленным в системе gcc, после чего делала exec на новый бинарник, чтобы дальше выполнялся он. Такой аналог eval из интерпретируемой параши. Работало довольно медленно, поэтому с большой софтиной пришлось бы долго ждать перекомпиляции, но все равно интересная штука. Возможно, тебе подойдет.
#96 #623788
>>623539
obj_timer и objcts — действительно у наследованы от QObject?
алсо Q_OBJECT макрос нигде не проебал?
#97 #623789
>>623787
Сейчас есть cling и llvm-jit, не нужно каждый раз мир перекомпилировать.
#98 #623790
Правда, с оптимизациями там не очень весело.
#99 #623791
Ребят, установил убунту, а потом уже задумался, хоть куда-то берут на работу если под Линуксом кодишь?
#100 #623792
>>623791
берут
хотя знания винды, макоси, андроида и айоса очень пригодятся
#101 #623794
>>623792
Ну на яблоки у студента денег точно нет. Понял, спасибо за ответ.
#102 #623795
>>623794
юзай хакинтош
#103 #623797
>>623795
На виртуалке, что ли? Хорошая идея.
#104 #623806
>>623789
Там скорость страдает, не?
#105 #623827
>>623806
Оптимизации некоторые недоступны, но один хрен быстрее Java.
#106 #623866
>>623791
Если компания пишет не виндоус-специфик код, то все на линупсах сидят.
#107 #623867
>>623795
Но зачем?
#108 #623874
>>623866
А не пояснишь по поводу вышки. Это обязательное условие? Или просто надо показать на собеседовании себя хорошо?
#109 #623893
>>623867
ПОТОМУ ЧТО МЫ ПЛОТИМ ЭТИМ ПАРАЗИТАМ, ВОТ ПУЩАЙ СТРАДАЮТ!!!111 НАПОКУПАЮТ РАБАМ ЯБЛОК, А ПОТОМ ОНИ РАБОТАТЬ НЕ ХОТЯТ
#110 #623896
#111 #623920
что хорошего в visual studio? Громоздкое говно, да еще и переустанавливать муторно. Чем ecipse хуже например? Посоветуйте ide for C++ кроме вс.
#112 #623922
>>623920

>Чем ecipse хуже например?


1. кол-во NullPointerException за единицу времени
2. уебаношным интерфейсом

>Посоветуйте ide for C++ кроме вс.


kdevelop
#113 #623923
>>623920
Код блокс
#114 #623928
>>623920
На порядок удобнее всего остального, так что прощаются все косяки, да с запасом.

Из легковесных пробуй CodeLite, там тоже неплохое автодополнение, хотя сильно хуже, конечно же.
#115 #623938
>>623788
Проебал, действительно
#117 #624097
>>624078
ограничения по памяти есть?
#118 #624098
>>624097
128 мегабайт. По времени только 1 секунда.
sage #119 #624099
>>624078
За О(M) в среднем делается проверка на интересность (если прикрутить массив из ста ячеек и нехитрую логику, которая будет дропать итерацию, как только число встретилось не первый раз, а предыдущее ему не равно). Всего проверок надо будет 2^100 (максимум можно выбросить сто чисел, всего вариантов будет сумма биномиальных коэффициентов). На 10к должно 2^100*O(M) должно летать, так что вперед.
#120 #624101
>>624099

>На 10к должно 2^100*O(M) должно летать, так что вперед.


петросян.жпег

>>624098
>>624078
кароче, идеи такие:
1. "интересность" — это значит что последовательность состоит из наборов AAAABBCDDEE, т.е. одинаковые числа должны идти подряд вместе
2. чтобы получить интересную последовательность, нужно либо удалить все числа на промежутках между двумя одинаковыми, либо сами одинаковые числа
#121 #624103
>>624101
т.е. имея ABCADEA, нужно либо сносить B,C,D,E либо A
#122 #624109
>>624101

>между двумя одинаковыми


1 2 5 4 6 7 8
#123 #624116
>>623922
Sublime Text + cmake + scan build + valgrind + gdb + компилятор (выставишь через cmake нужный).
#124 #624129
>>624101
И как выбрать? Нетривиальный алгоритм уже будет. К примеру, CBCBBB. С точки зрения C, надо удалять B, ибо 2 против 1, а с точки зрения B (и на самом деле) надо удалять C, ибо 4 против 2. В сложном случае придется многократно обходить всю последовательность, чтобы понять, что же действительно надо удалять в первую очередь. А разделять и властвовать не получится, пример выше показывает, что локальная оптимальность не дает правильного ответа.
#125 #624132
>>624078
если есть последовательность ABCABDA, то очевидно, что:
1. если в искомой посл. есть A, то в искомой посл. не может быть B,C,D
2. если в искомой посл. есть B, то не может быть A,C
3. если есть C, то не может быть A,B
4. если есть D, то не может быть A

т.е. получается какой-то граф..
#126 #624136
>>624129
Двумерная динамика наверно.
#127 #624138
>>624132

>т.е. получается какой-то граф..


Можешь его нарисовать для твоего примера?
#129 #624156
>>624151
Это и я сделал, но как веса рёбер поставить разница количества повторов? и что искать?
7 Кб, 275x155
#130 #624164
>>624156
альтернативно можно вот так
#131 #624191
>>624164
проще не стало
#132 #624300
>>623874
Что? Какая вышка?
#133 #624305
>>623920
Пожалуй, самая мощная среда разработки, в которой есть все. Ещё и бесплатная. А новый режим дебага с анализом памяти вообще красота.

Но для лабы2 ничего этого не нужно.
Да и не только лабы2.
st3+clang+gdb достаточно
#134 #624308
>>624116
Два успешных билда этому.
#135 #624364
>>624078
Если упростить формулировку, то это задача на поиск длиннейшей не убывающей подпоследовательности

За O(n^2) можно сходу решить, n - длина начальной последовательности
#136 #624373
>>624078

>к концу года задачи становятся труднее и интереснее


>увлекательнейшую задачу


>интересная последовательность


Даун-аутист пытается вызвать ИНТЕРЕС к своему говну, но не может, и поэтому от бессильности заставить людей есть говно увлекает их ИНТЕРЕСНЫМИ эпитетами. Прямо как Лавкрафт, который пугает СТРАШНЫМИ словами.
#137 #624392
>>624364
нихуя. там нужно числа в начале выкидывать тоже
#138 #624426
>>624132
Так что с алгоритмом? Он пока самым правдоподобным выглядит.
23 Кб, 810x542
#139 #624444
Обязательно ли регаться? Там телефон требуют
#140 #624450
>>624444
Не знаю точно, но абсолютно уверен что нет
#141 #624452
Что же делать. Как их наебать
#142 #624454
ЕБУЧИЕ МАЙКРОСОФТОБЛЯДИ, НАЕБЫВАЮТ УЖЕ С САМОГО НАЧАЛА. НУЖНО БЫЛО СКАЧИВАТЬ ИСО А НЕ ВЕБ УСТАНОВЩИК. А ВЕБ УСТАНОВЩИХ ЛЕЖИТ ГДЕ-ТО В ЕБУЧИХ ЗАГРУЗКАХ, НЕТ БЛЯТЬ ПИДОРЫ СРАЗУ ПРЕДОСТАВИТЬ ВЫБОР ЧТО СКАЧИВАТЬ, ТАК ЭТИ УЕБКИ МНЕ-НАЧИНАЮЩЕМУ ЗНАКОМИТЬСЯ С ИХ ПРОДУКТОМ ПОДСОВЫВАЮТ ЕБУЧИЙ ТРИАЛ, ПИДОРЫ, ГОРИТЕ В АДУ
#143 #624455
>>624444

>Там телефон требуют


Твоей мамки?
#144 #624456
>>624444
Хуйня какая-то, если честно. Community edition должна быть бесплатна, пиздос какой-то, может там просто надо учётную запись создать или еще какую-то поеботу, но она 100% должна быть бесплатна, а имеет почти всё ,что нужно.
#145 #624457
>>624454

>А ВЕБ УСТАНОВЩИХ ЛЕЖИТ


исо
#146 #624459
Скачиваю исошник 5 гигов, удаляю старую вс, будет пиздец как круто, если исошник потребует у меня регистрации. Ебучий вижуал, еще не начал, но уже думаю съебывать.
#147 #624462
>>624444
Дык запиши его, никто тебя не сдеанонит и на ебло ссать не станет. Денег не снимают, просто зарегаться просят.
#148 #624463
>>624462
Я аноним
#149 #624464
>>624456
Бесплатна. Учетную запись надо.
#150 #624466
>>624454
Я те щас секрет открою: ты - даун.
>>624459
В чём блядь проблема зарегестрироваться-то?
#151 #624467
>>624466
Телефон - деанон
#152 #624468
>>624463
Значит зарегай на свою мамку/папку/бабку/кота.
Палю годноту для совсем ананасиков: https://www.google.ru/search?client=ubuntu&channel=fs&q=online+phone+number+for+verification&ie=utf-8&oe=utf-8&gfe_rd=cr&ei=OGGVVoicGIrIYMPZpMAM
#153 #624469
>>624467
Перед кем? Пиндосами, у которых таких миллиона? В заговор массонов-рептилоидов веришь?
10 Кб, 446x644
#154 #624475
Нажал удаление. Что он делает?
#155 #624480
>>623920

>переустанавливать муторно


Зачем переустанавливать?
#156 #624481
#157 #624516
>>624078
бамп
#158 #624518
Бля, это что, Bridge и есть пимпл? Охуеть.
#159 #624532
#160 #624597
>>624151
>>624132
Охуенная идея, кстати. Два чая придумавшему анону.
#161 #624599
>>624373

>интересная последовательность


Дурачок, я эту задачу уже не в первый раз встречаю. Про "интересность" не тот анон придумал, чтобы заманить, это условие такое в оригинале.
67 Кб, 429x604
#162 #624620
Итак, джентельмены, настало время:
а)
int main()
{

}

или

б)
int main() {

}
#163 #624622
>>624620
"а" разумеется, "б" говно вырвиглазное.
#164 #624626
>>624620
Чтобы никому обидно не было.
[code lang="cpp"]
int main () {
{
\treturn 0;
}
}
[/code]
#165 #624627
>>624620
Не принципиально. Вот у if/while/for нужно использовать только { на той же строчке (а) используют только ньюфаги, пришедшие с паскаля, да Штульман), а для функций - не принципиально, но лучше унифицировать с if/while/for, почему нет. Ведро, книги K&R и Страуструпа, хромиумы и прочее говно используют б) (точнее, Страуструп использует а) для функций, но он вообще обожает влепить где-нибудь ебнутый частный случай). Короче, только 1TBS.
85 Кб, 717x325
#166 #624629
#167 #624636
>>624620
Только (б). Экономим вертикальное пространство ибо функции должны умещается в 20 строк, каждая строчка на вес золота :3
#168 #624645
>>624636
Байтоеб чтоле или пиздонист?
Господа пишут с размахом, не экономя место, с пустыми строками для визуального разделения. Код получается легковесный, легко читаемый. И компактный, если ты не долбокряк.
#169 #624646
>>624645
Пустые строки для абзацев - это другое. В том-то и дело, что от этих висящих скобок толку нет, абзацевость только теряется.
#170 #624647
>>624645
Типичный совок.
#171 #624652
>>624620
int main() { }
Так пишу. Мои функции всегда помещаются в одну строку на монитоде 21/10. Пустые строки для пидорасов и нюфагов.
211 Кб, 521x403
#172 #624664
>>623233
Пожалуй бампану.
#173 #624756
таки поставил ебучий вижуал студио профессионал. Спиратил с рутракера, зато не надо ебаться с регистрациями, истечением 30 дневного польования. Бляди из мелкософта сами подтталкивают к КРАЙНОСТЯМ
#174 #624757
>>624756
Он все равно стучит куда надо. Если у тебя десятка, то жди пативена
#176 #624766
>>624758
Сама обновится до 10-ки скоро :)
#177 #624767
Если ты студент, MS тебе бесплатно может все это дать.
#178 #624770
>>624767
Там регаться надо и телефон давать
#179 #624782
>>624770
Не надо никакого телефона, блджад, необучаемая сука. Dreamspark-логин выдают по почте в домене .edu или аккаунту втентакле, Dreamspark Premium можно получить у админа в своем вузе. И все, блядь, сразу получаешь ключи, никакого телефона не нужно.
#180 #624783
>>624782
Пошел нахуй, студентоблядь
#181 #624784
>>624783
Иди заплати Балмеру еще 5к зелени за топовую версию студии, пока я получаю все бесплатно, маня.
#182 #624791
>>624784
Пфф, я вообще в кьют криейторе пишу.
#183 #624810
>>624597
но что дальше? я просто н понимаю какой путь искать и какие веса рёбрам/вершинам ставить.
#184 #624816
>>624810
Ну раз единственное действие это удалить все вхождения, то, наверное, нужно весами ставить общее количество экземпляров числа. А потом добиваться отсутствия ребер удалением суммарно наименьшего веса вершин.
#185 #624817
Заменяем каждый элемент на тройку [элемент; индекс первой встречи; индекс последней встречи; количество].

Получается набор отрезков. Если 2 отрезка пересекаются, значит такой комбинации быть не может.

Гуглим задачу non intersecting objects maximum, это https://en.wikipedia.org/wiki/Maximum_disjoint_set#1-dimensional_intervals:_exact_polynomial_algorithm . Все?
#186 #624819
>>624647
Свои лабы можешь писать как угодно.
А в индустрии ценится читаемый и понятный код, а не выкрутасы уровня куайнов
#187 #624820
>>624756
Но зачем? Коммунити версия просит только лайв аккаунт. И все. Каждый месяц просто заново заходишь в свой аккаунт из студии, и лицензия обновляется
#188 #624821
>>624817
Точнее, нужен weighted max disjoint set, потому что у нас есть веса - количества элементов.
#189 #624822
>>624816

> суммарно наименьшего веса вершин


Не понял что это. Он будет минимальный если вообще не брать вершин.
#190 #624824
>>622611 (OP)
Седжвика из пасты нирикомендую. Перевод лютое говно, убивающее желание читать.
#191 #624831
>>624791
там не чистый C++
#192 #624832
>>624831
Можно напердолить под чистый c++
#193 #624834
>>624822
Ты удоляешь вершины так, чтобы граф стал без ребер (компонент связности столько же, сколько вершин), но при этом из всех вариантов выбираешь тот, где сумма весов удаляемых вершин наименьшая.
#194 #624835
>>624824
А оригинал?
#195 #624836
>>624834

>Ты удоляешь вершины так, чтобы граф стал без ребер


Это алгоритм какой-то известный или перебором? Там 2^n вариантов удаления.
#196 #624842
>>624836
Там может сработать жадный алгоритм, по идее. У каждого ребра удалить ту вершину, которая имеет меньший вес. Но нужно будет учитывать общие для нескольких ребер вершины, ибо иногда выгоднее удалить вершину с большим весом, за счет того, что она покроет сразу несколько ребер.
#197 #624849
>>624842
К примеру, можно от весов ребер перейти к нормализованным весам: из каждого веса вычесть веса всех смежных вершин. Потом просто удалять вершины по возрастанию этих нормализованных весов (и декрементировать веса, разумеется), пока ребра не кончатся.
#198 #624850
>>624849
Вот это похоже на O(n). Спасибо.
#199 #624852
>>624101

>т.е. одинаковые числа должны идти подряд вместе


Ты вторую картинку глянь, там интересной названа последовательность (1,2,5)
49 Кб, 1172x751
#200 #624853
>>624849
Пикчу забыл.
#201 #624856
>>624852
Ну так все правильно, они же не повторяются.
#202 #624858
>>624850
np-hard превратить в o(n)? Оригинально.
#203 #624860
>>624858
Пруфы, что np-hard.
#204 #624861
>>624858

>np-hard


Что? Там предобработка как на этой пикче >>624853 и в 1 проход максимум найти.
#205 #624862
>>624853
Стой, а на второй что удалять? У них количество ребёр разное, а веса одинаковые.
#206 #624865
>>624862
Блять туплю. По ним пройтись надо и ребра оставшееся посчитать. Можешь не отвечать.
#207 #624866
>>624862
Да, не совсем допилено получается. Но я думаю, что на основе этой идеи должно получиться. Может, похимичить с вычитанием, чтобы явно выделялась центральная вершина.
#208 #624867
Здарова, почаны. Помогите разобраться:

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

LNK2001: unresolved external symbol _wWinMain@16

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

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

По какому принципу их нужно добавлять?
#209 #624868
>>624861
Жадным алгоритмом? С чего ты взял, что он даст наилучший результат?
#210 #624869
>>624868
Придумай контрпример.
15 Кб, 926x614
#211 #624880
>>624865
Не, не сработает так просто. Вот в этом случае оптимально удалить все крайние вершины, но алгоритм выберет одну из центральных. Думаем дальше.
#212 #624881
>>624880
Там же 2 центральных и они соединены ребром. Для удаления этого ребра по любому придётся. Одну из них удалить. А потом и 2 крайних.
#213 #624883
>>624881
Блин, точно. Но все равно меня терзают смутные сомнения, нет уверенности, что на любом оно сработает. Надо как-то формализовать штоле всю эту ебалу. Проблема в том, что после одного удаления приходится пересчитывать некоторые веса, и поэтому неочевидно, что можно просто хуярить по возрастанию, пока не кончатся ребра.
#214 #624884
>>624883
Я завтра напишу программу, а если времени не хватит, то на выходных и отчитаюсь сколько тестов пройдёт. Пока кажется единственное нормальное решение. Википедию с множествами я вообще не понял. В гугле тоже про это мало понятного.
#215 #624890
Встретил такое нечто:
Foo(Foo const &) = delete;

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

Как вообще называется эта фича, чтобы ее можно было нагуглить?
#216 #624892
>>624890
Удаленный конструктор же, он запрещает компилироваться коду, в котором вызывается конструктор копирования. На дефолтный конструктор (и все остальные) это напрямую не повлияет, но дефолтный не сгенерируется, как и в любом другом случае, когда ты сам определяешь какой-то из конструкторов.
#217 #624895
>>623920
Очевидный CLion.
8 Кб, 654x598
#218 #624898
Суп, аноны, у меня СТУДЕНТОПРОБЛЕМЫ. Поясните, пожалуйста, как реализовать вывод полей объекта производного класса, который образован в следствии наследования, как на пикрилейтед. Про ромбовидное наследование я читал, но это не мой случай, т.к. поля объектов будут разные, несмотря на общий класс. (Простите за кривой почерк, надеюсь более-менее понятно обьяснил суть проблемы.)
#219 #624900
>>624898

>поля объектов базового класса

#220 #624905
>>624895
Очевидно, платный
#221 #624907
>>624898
Проблема в чем?
#222 #624908
>>624898
Блять, ну и хуйню же я написал. Суть в том, что Б1 и Б2 - это один и тот же базовый класс, но в производном классе Н2 они оба используются и имеют разные значения полей.
#223 #624910
#224 #624912
>>624908
Че за хуйня, давай на реальном примере
#225 #624913
>>624908
Тогда это не должно компилироваться же, если ты не юзаешь виртуальное наследование.
#226 #624914
>>624912
Есть базовый класс ДАТА, у которого есть поля д/м/г. Есть производный от ДАТЫ класс ФАЙЛ, в котором ДАТА - это дата создания файла. И есть производный и от ФАЙЛА и от ДАТЫ класс, в котором ДАТА из ФАЙЛА - это дата создания, а другая ДАТА - это дата редактирования.

>>624913
Виртуальное мне не подходит, т.к. две ДАТЫ не обязательно одинаковы.
#227 #624916
>>624914
При вызове метода вывода ДАТЫ будет неоднозначность, нужно как-то от нее избавиться.
#228 #624918
>>624916
Ну вон же на википедии есть пример.
https://en.wikipedia.org/wiki/Virtual_inheritance

Хоть и делаешь ты какую-то дичь
#229 #624921
>>624916
Пиши Н1::поле. Но напрямую наследоваться от Б1 все равно будет нельзя, ибо ты не сможешь никак отличить поля, унаследованные из Н1 и напрямую из Б1.
#230 #624924
>>624914
Ты определенно делаешь что-то не то.
#231 #624925
>>624918
Если так сделать, то обе даты будут одинаковы, разве нет?
#232 #624927
>>624925
Жопой читаешь.
In order to call eat(), the same disambiguation, or explicit qualification is needed: static_cast<Mammal&>(bat).eat() or static_cast<WingedAnimal&>(bat).eat() or alternatively bat.Mammal::eat() and bat.WingedAnimal::eat(). Explicit qualification
#233 #624929
>>624645
В том и дело, что пустые строки и так много места занимают, а сами блоки (if, for, while, итд) пускай будут поэкономнее.
#234 #624930
>>624925
Используй композицию вместо наследования, Люк. Заведи в производном классе джва члена базового класса и все. Сейчас ты вскукарекнешь, что тогда нельзя будет делать касты указателей, но я отвечу, что в твоем случае допустимо только приватное наследование, которое и так не допускает касты. Публичное наследование должно удовлетворять отношению "объект производного класса является объектом базового класса", а у тебя такого не будет, будет какая-то двойная нех.
#235 #624931
>>624929
Какое место они занимают, поехавший? Код меряется не строками, а байтами
#236 #624934
>>624930
Спасибо, анончик, вот это, я думаю, мне как раз подойдет.
#237 #624938
>>624929
Пространство по вертикали, недоехавший.
#238 #624940
#239 #624941
>>624938
Ебать, ты чего с квадрата 1024x768 конпелируешь что ли?
#240 #624946
>>624941
У меня открыто 4 окна на мониторе 1920x1200, получается на окно даже поменьше.
#241 #624960
>>624941
Открываю иногда и по 3 колонки окон, в два окна по вертикали. Но монитор всего 24 дюйма. Один.
#242 #624964
>>624960
У меня 17.
90 Кб, 668x319
#243 #624978
>>624946
Сделай вот так, хуле.
#244 #624981
>>624978
И верти шеей как мудак.
#245 #624984
>>624981
Полезно, затекать не будет
#246 #624995
>>624981
В этом плане у него лучше, нежели 3 монитора в ландшафтной ориентации
sage #247 #625068
>>624978

>(90Кб, 668x319)

61 Кб, 1366x768
#248 #625110
Ребята помогите. Что нужно докачивать. Хочу писать на C++, консольное приложение например. Откуда и как докачать Win32?
#249 #625130
Спасибо ребята.
#250 #625139
>>625110
Нажми ok, он тебе и скачает. А что из этих двух тебе нужно - сам решай. Для себя пойдёт первый, для ковыряния легаси - второй.
#251 #625141
>>625139
Да спасибо, разобрался
#252 #625156
Ну что за говно, заебала меня эта визуальная студия. Теперь зависает при запуске без отладки. Пиздец
39 Кб, 1366x768
#253 #625167
Что делать ребята?
#254 #625423
Начал изучать С++, хотел с НГ, но как-то затормозил. Какие подводные камни?
Уже написал свою 1 крутую программу - перевод строки чаров в фски номера.
#255 #625425
>>622611 (OP)
Сяп. codeblock+sfml. При попытке компиляции проекта пишет default is untitled. Отдельный файл (он же пока единственный) компилирует, но не запускает, ссылаясь на отсутствие на компе sfml-graphics-2.dll, хотя она есть. Что делать?

СФМЛ подключена как в гайде написано.
#256 #625447
>>625425

> sfml-graphics-2.dll, хотя она есть


Где она есть? Попробуй в папку с программой кинуть.
#257 #625469
>>625447
Пробовал. Все равно. К тому же, я думаю, тут в другом дело. Проект не компилируется, а файл компилируется. Мне кажется, что проект не компилируется по той же причине, по которой потом программа на запускается, но я хз, почему. Когда сфмл не было, он об этом говорил в виде ошибок компилятора, не распознававшего функции сфмл, сейчас с этим вроде все норм, но все равно проблема именно с либами этой библиотеки
#258 #625528
Есть у кого философеры на C++11?
#259 #625530
Сап аноны. Вопрос от нюфани.
Вопрос касательно использования указателей. Навскидку могу придумать два случая, когда они нужны:
Когда нужно передать "большие данные" (массив) между функциями, тут понятно, выгодней передать указатель.
Или когда заранее неизвестен объем данных, который потребуется, можно динамически выделять память оператором new.
В каких еще случаях лучше использовать указатели, а не обычные переменные?

Пилю прогу на qt для работы, пытаюсь понять, где что лучше использовать.
#260 #625532

>Когда нужно передать "большие данные" (массив) между функциями, тут понятно, выгодней передать указатель.


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

>В каких еще случаях лучше использовать указатели, а не обычные переменные?


графы, деревья, когда размер типа заранее неизвестен из-за наследования, pimpl
#261 #625573
>>625528
Обедающие?
#262 #625581
>>625573
Хоть кукарекающие
#263 #625583
>>625530

>Когда нужно передать "большие данные" (массив) между функциями, тут понятно, выгодней передать указатель.


Открою секрет - в C++ нельзя передать массив по значению. http://cpphints.com/hints/38

>В каких еще случаях лучше использовать указатели, а не обычные переменные?


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

Вся разница между "обычными" переменными и "динамически выделенными" указателями в том, что первые выделяются на стёке а вторые - на куче.
Стёк - быстрее, почти бесплатное выделение памяти. Возвращать из функции стёковую переменную по ссылке нельзя - после возвращения из ф-ции стёк уничтожается.
Куча - медленнее, но твои данные некуда не денутся пока ты их сам не вычистишь и не имеет ограничений в размере.
#264 #625597
>>625581

>кукарекающие философы


Попробуй /ph/.
#265 #625691
>>625583
А когда мы делаем мув, то мы выходит из стека помещаем в кучу, так?
#266 #625740
>>625691
Нет, это не связано.
#267 #625742
>>625691
Нет. Мув, грубо говоря, перемещает данные а не перевыделяет память. Если ты, например, заранее выделишь память в куче - то вполне можно перенести.
Алсо, с кучи в стек ничего выделять руками не нужно, но если переносишь с кучи - не забудь подтереться.
#268 #625753
>>625742
Хотя хз насчёт именно переноса, я не проверял, но у меня такое ощущение что именно при таком раскладе вместо переноса будет просто вызван копирующий конструктор.
#269 #625793
>>625753
Мув меняет принадлежность. Если у тебя нетривиальный конструктор, ты должен сам определить конструктор переноса и конструктор копирования тоже, разумеется. Читай учебники.

>вместо переноса будет просто вызван копирующий конструктор


Это легко проверяется.
#270 #625806
>>625742
http://ideone.com/U5Zrrp
В таком случае все в стеке?
#271 #625822
>>625806
Да. В твоём примере move и не нужен - йоба скопируется, я говорил про возврат указателя на стэк.
>>625793
Хорошо, капитан, почитаю. Проверил. Не нашёл ни одного корректного способа вернуть указатель на стак, мув просто копирует как и без него. Чо делать?
#272 #625826
Помогите с лабой на C++.
Задание: Дан массив типа BYTE размером не менее 256 Кбайт. Переписать его во внешнюю память поблочно. Операцию повторить 10 раз. Характеристика: размер блока (диапазон изменения 512-1024 байта).

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

Проблема в том, что буфер нужно инициализировать не из файла, а из массива в оперативной памяти.(см. 70 строчку в пасте)
#273 #625881
>>625822
Нихуя она не скопируется, ебанутый.
#274 #625886
>>625822
Дебил, прежде чем в следующий раз кукарекать и нормальных людей вводить в заблуждение - проверь и подумай.
Генерируется implicit move ctor, Yoba(Yoba&&),
Это ты можешь проверить, добавив вывод "Yoba ctor called" в конструкторе, и убедиться что вызывается конструктор перемещения.
Ты об этом бы знал, если бы был в курсе про правила генерации специальных методов класса.
#275 #625887
>>625886

>добавив вывод "Yoba ctor called" в конструкторе


добавив вывод "Yoba move ctor called" в конструкторе перемещения
#276 #625944
>>625583
Спасибо за ответ, инфу по ссылке ща почитаю.
#277 #625947
>>625583

>Всегда, когда тебе нужно использовать какие-то данные вне этой функции/класса, или у тебя большой объём данных (зависит от настроек конпелятора, но максимальный размер всех "обычных" переменных где-то 4 мб).



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

Как вообще эти вопросы решают грамотные пацаны? Я вроде и понимаю, что в некоторых функциях мне лучше передать указатели, а не копировать данные, но очкую, что в итоге поимею утечки памяти и трудноуловимые баги поведения программы.
#278 #625949
>>625947
Если у тебя массив выделен на стеке, то можешь передавать на него указатель
#279 #625956
>>625947
http://goo.gl/LsqNZT

Вот тебе грамотная статья по твоему вопросу
#280 #625957

>Как адекватно выделять и освобождать память?


Когда считаешь нужным, в этом вся суть ручного управления памятью.

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


Да куча их. И статические анализаторы кода, и гугловские санитайзеры, и хуитки типа валгринда.
Алсо, если не хочешь сам парится и не стоит важность суперпроизводительности - просто импользуй умные указатели.
#281 #625958
#282 #625961
Привет.
Пишу под MSP430, столкнулся с непонятной вещью:
unsigned long flash_addr =
(unsigned int) page_num FLASH_SEG_SIZE;
memcpy(ram_temp, (void
)flash_addr, FLASH_SEG_SIZE);
/ смотрю отладчиком, а здесь, после memcpy переменная flash_addr ВНЕЗАПНО ОБНУЛЯЕТСЯ /
Почему такое может происходить?
#283 #625962
>>625961
Мерзкая макаба!
Вот отформатированный код: https://gist.github.com/anonymous/6462edfcb45625e75772
#284 #625964
>>625961
Это вопрос к реализации memcpy в твоей хуитке.
#285 #625968
>>625962
Ну во первых, memcpy берёт размер в бпйтах, а не двойных словах.
Во вторых, пошёл вон со своей железякой в другой тред
#286 #625978
>>625956
>>625957

Спасибо.
#287 #625980
>>625957
У scoped и unique_ptr нет оверхеда
#288 #626023
>>625947

> Как адекватно выделять и освобождать память?


Особождать - ТОЛЬКО в деструкторе. Иначе у тебя будет текущий на исключениях код. Выделять, соответственно, только в парном деструктору конструкторе. Вот и вся наука.

>Я вроде и понимаю, что в некоторых функциях мне лучше передать указатели, а не копировать данные, но очкую, что в итоге поимею утечки памяти и трудноуловимые баги поведения программы.


Используй ссылки, написал же. Лучше константные, можно и неконстантные.
#289 #626065
Пацаны, так вопрос.
Есть шаблонныц класс с шаблонной функцией, например такой - www.ideone.com/w3BZXF . Когда все это в одном файле, работает, но стоит мне переместить определение шаблонной функции и ее специализации в .cpp файл, то появляются ошибки линкера.
А оставлять потенциально тяжелую реализацию в хидере, да еще и заинлайненную - это не лучшая практика, наверное.
#291 #626149
>>626065
Это одна из основных бед крестов. За удобство шаблонов и полиморфизм без замедления в рантайме ты платишь тем, что шаблоны целиком должны быть в хэдерах. Из-за этого компиляция сильно замедляется, но тут уж ничего не поделаешь.
#292 #626150
>>626109
Не работает на
7
1 1 2 1 2 2 2
#293 #626152
>>626109
Вместо sortfunc лучше бы сделал лямбду, раз у тебя auto и 11 стандарт.

Ты юзал тот алгоритм с взвешенными графами? Да, мне лень вчитываться до вечера, блджад. Тесты проходят?
#294 #626155
>>626152
не, у меня другой алгоритм, лень описывать, к тому же он похоже все равно не работает.
#295 #626160
>>626152

>Тесты проходят?


Нет только 3. Потом ответ завышен. Здесь тесты если хочешь проверить http://rghost.ru/6LVyKdZkX
Скомпилировать файл и положить в эту папку. Потом запустить test.bat с параметром имени файла без расширения. Результат в res файле будет.
И не лень было это всё писать?
#296 #626295
>>626149
Можно перечислить специализации и тогда унести код в цпп
#297 #626300
>>626295
Это плохая практика, суть шаблонов в автоматической генерации инстансов же. Такое будет немногим лучше макросов.
#298 #626304
>>626300
Макросы плохи не этим.
#299 #626322
>>626300
Ничего не меняется же, кроме лишней работы компиляторы если какие-то из перечисленых специализаций на самом деле не используются.
#300 #626338
>>626322
Только если у тебя лаба2 и шаблон какой-нибудь хуйни с джвумя инстансами на int и double. В реальности шаблоны используются гораздо многограннее, начиная от non-type parameters ты для всех натуральных чисел вызывать инстансы будешь, да?, и заканчивая library-like ебалой навроде самодельных концептов и метафункций.
#301 #626343
>>626338

> ты для всех натуральных чисел вызывать инстансы будешь, да


Любая специализация шаблона известна во время компиляции, следовательно их спокойно можно указать явно. Единственной проблемой является то что у тебя будет список на тысячи (к примеру) специализаций, часть из которых была нужна когда-то, а сейчас нет - что лишняя работа для компилятора.
#302 #626345
>>626343
Ну так определись, если ты хочешь ускорить компиляцию, вынося методы из хэдеров, то это не вяжется с "лишней работой для компилятора" по генерации сотен ненужных инстансов.
#303 #626351
>>626345
Так скомпилируешь один раз в .o и больше не надоть.
#304 #626400
>>624078
Каждое уникальное число в входной последовательности можно представить в виде отрезка у которого начальная координата равна индексу первого появления этого числа, конечная координата - индексу последнего появления (могут совпадать) и есть еще характеристика "вес" которая равна количеству появлений этого числа в последовательности. Тогда задача сводится к нахождению набора непересекающихся отрезков с максимальным суммарным весом - этот сумарный вес и есть ответ. Мне почему-то кажется что это NP-полная задача, тоесть нужно применять какой-то метод оптимизации. Я попробывал простой перебор через рекурсию http://ideone.com/dnXRkk но он отрабатывает только на небольших (по количесву уникальных чисел) задачах (первые 16 из твоих тестов). На больших задачах (важно количество уникальных чисел, а не длина последовательности - по длине там линейная сложность) моя писанина ожидаемо обсирается, причем серьезно - для 100 уникальных чисел похоже в лучшем случае нужны года, а скорее всего тысячелетия. Тоесть просто заменить рекурсию на итерации или "распаралелить" не поможет. Нужен какой-то метод оптимизации, но мне ничего простого не приходит в голову. Я пробывал ветвей и границ применить (так как он легко на полный перебор накатывается) но нихуя не придумал, был один вариант но он не помог, только еще один из первых тестов зафейлил из-за какого-то бага. Идеальный вариант конечно если окажется что тут не NP-полнота. Если задачка с олимпиадки то наверное так и есть - врядли там дают задачи на оптимизацию, хотя я хуй знает. Тоесть возможно есть нормальный способ решения.
#305 #626404
>>626400
Ты весь день этим занимался? Здесь авторские решение есть если поймёшь. Но вариант с графом который выше я на выходных сделаю и отчитаюсь если смогу написать.

http://pastebin.com/HF5g1RkC
http://pastebin.com/Fx2MigGq
#306 #626425
>>625167
Ну бамп, неужели икто не сталкивался? Что делать? Я даже собрать ничего не могу
#307 #626427
>>626425
Перестановить? Установить генту? Сходить в софтач?
#308 #626428
>>626427
Переустановил уже пять раз. Есть бубунту
#309 #626429
>>626404

> Ты весь день этим занимался?


Ты меня наверное перепутал с кем-то. Посмотрел твои решения, первый динамика, никогда не мог сам полностью придумать. Понимаю без проблем, даже с полунамека могу сообразить как решать а полностью сам никак. Другие подходы вроде норм, а в динамическом совсем ноль. Получается такое, если мой вариант подправить https://ideone.com/qbcLKs
#310 #626447
>>626429
Спасибо. Работает. Опишешь алгоритм? Знаю что смотреть программу, но после сортировки не совсем понятно что происходит.
#311 #626450
>>626427
Могут-ли всякие вимы в линуксах заменить визуальную студию?
#312 #626451
Висуал студио говно без задач. Виснет и выдает ошибки. Что я могу еще сказать
#313 #626453
Ебал я его в рот. Перехожу на эклипсе
#314 #626454
>>626450
Не пользовался студией ни разу. Слышал у неё дэбагер ахуенный с свистелками и перделками.
#315 #626501
>>626450
А что тебе нужно для разработки? Подсветка? Автокомплит? Навигация по именам? Отладка?
#316 #626502
>>626447
У тебя есть массив отрезков (начало, конец и вес) который сортируется по координате начала отрезка (у моего варианта там небольшой недостаток что отрезков всегда 100, я не хотел усложнять код, на ответ это не влияет но там получается что может быть дохуя нулевых отзрезков на бессмысленную обработку которых пробывается время). Дальше создается массив размером равном количеству отрезков, в i ячейке которого записывается оптимальный ответ при использовании первых i отрезков (из отсортированого массива). Тоесть в первой ячейке массива хранится оптимальный ответ при использовании только первого отрезка (это вес этого отрезка), во второй ячейке при использовании первых двух отрезков и так до конца. А потом ты постепенно добавляешь новые отрезки (тоесть увеличиваешь индекс i и заполняешь массив). Изначально в текущую ячейку этого массива записывается вес текущего отрезка - так как ты всегда можешь все выкинуть и взять текущий за основу. Потом ты проверяешь все которые ты заполнил до этого - если какой-то из рассмотренных ранее отрезков можно использовать вместе с текущим (ранний отрезок заканчивается до того как начнеться текущий), то ты используешь их вместе - суммируешь и записываешь в текущую ячейку, но просто так записать нельзя так как там может находиться большее значение от рассмотрения предыдущих отрезков - выбираешь максимум и его записываешь. И потом как заполнишь весь массив то максимальное число в нем и будет ответ.
#317 #626532
как быть, если два из предыдущих конфликтуют друг с другом, но не с текущим?
#318 #626539
>>626023
Понял, спасибо.
#319 #626540
во, такое придумал: у нас есть <100 отрезков, т.е. <200 концов. Каждый конец делит нашу прямую на две части: левую и правую. Соот.
result(i,i)=0
result(i,j)=max(result(i,start(k)) + weight(k) + result(end(k),j))
где i,j - номера точек, k - номера отрезков
#320 #626542
Т.е. каждый отрезок разбивает задачу на левую часть, правую часть + вес самого отрезка
#321 #626550
>>626351
Будут .o жуткого размера, и линковаться будет долго из-за необходимости вычищать неиспользуемое говно.
#322 #626551
>>626447
Оно все тесты проходит, или тоже обсирается на длинных?
#323 #626649
>>626551
Все за 0,1 секунду.

>>626502
Спасибо. Кажется понял.
#324 #626792
Какой способ парсинга NMEA будет более быстр, если мне нужно выдрать из ответа пару параметров?
1. Ищем при помощи strlen начало пакета: $GPGGA, при помощи sscanf считывает это всё в кучу аргументов. Проблема в том, что ответов от GPS в буфере может лежать несколько штук разных, не будет ли этот способ медленным?
2. Конечный автомат, на вход принимает по одному байту.
При помощи atof, atoi выдернуть нужную мне информацию.

Пример строки:
$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47
#325 #626795
>>626429
Нелегитимно, стандарт не гарантирует, что по дефолту там 0.
#326 #626796
>>626795
Вот про это, в смысле:

>int i{}

#327 #626800
Нужно найти наибольшую возрастающую подпоследовательность k раз от 1 до 100 после каждого нахождения удалить эту подпоследовательность и развернуть массив. Решил, но решение слишком долгое. Какие средства языка можно использовать чтобы ускорить?
#328 #626801
>>626800
Скидывай решение.
#329 #626802
>>626796
Кстати на самой олимпиаде компилировали без 11ого стандарта. И всякие лямбды делать нельзя.
#330 #626811
>>626801
Тут оптимизировать пытался. Сделал всего 1 массив размером n*k и за 1 проход всё выщитал без удалений. Но не уверен что оно сработало т.к. часть тестов по времени не проходят.

http://pastebin.com/7G0KpXxy
sage #331 #626812
>>626802
Гениально. А чё сразу не на C89-то?
#332 #626814
>>626812
Понятия не имею. Один из авторов вообще в Си стиле пишет избегая vector'ов и fstream'ов.
#333 #626835
>>626814
Ну если цель - олимпиадное питушение, где важна 0,001 мс - правильно делает.
Алсо, попробуй зарезервировать память в векторе после инициализации или заменить его на статичный массив.
#334 #626840
>>626835

>заменить его на статичный массив


А как тогда его длину менять? Я же из двух вектаров 1 склеиваю.
#335 #626844
>>626840
А никак не менять. Взять сразу все 4 мб на стёке и молится что тестов там будет не 40 мб (лол).
По крайней мере через такой анус можно будет убедится, что нету оверхеда на аллокациях.

Алсо, скинь ещё сами тестики.
#336 #626849
>>626844

>Алсо, скинь ещё сами тестики.


http://rghost.ru/6vrVz6HT6
Скомпилировать файл и положить в эту папку. Потом запустить test.bat с параметром имени файла без расширения. Результат в res файле будет.
#337 #626906
>>626844
Переписал. Ничего не поменялось.
http://pastebin.com/U9FrRGE9
#338 #626952
Что значит конструкция if(!cin)
#339 #626953
>>626952
Если в предыдущей строчке cin не распарсил входные данные.
#340 #626956
>>626795

> стандарт не гарантирует, что по дефолту там 0.


Почему ты так пишешь? Судя по http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf
на 190 странице указано что { } считается как braced-init-list
на 201 странице, где рассматривается инициализация с помощью "a braced-init-list" указано что "Otherwise, if the initializer list has no elements, the object is value-initialized"
на 191 странице, где дается определение value-initialized перечислено 4 случая, где первые два относятся к класам, третий к массивам а для скалярного типа остается "otherwise, the object is zero-initialized"
Ну и на 201 странице последняя строка "int k { }; // initialize to 0"
#341 #626960
>>626956
Да, твоя правда, я обосрался.
#342 #626966
>>626811
Чем ты занимаешся в 38-40 строках? тебе не нужно k раз физически инвертировать массив. Просто в зависимости от четности шага нужно искать или возврастающие или снижающиеся последовательности. И в конце один раз перевернуть если k нечетное. В зависимости от того как должны обрабатыватся последовательности равных чисел, можно обойтись и без удаления а делать вместо "удаленных" последовательностей типа "плато" - но там нужно продумать все ситуации. И если задание конечно вообще позволит такое сделать. Как вариант, заменять удаленные числа на заведомо невозможные значения - обратно же если такое возможно по заданию.
sage #343 #626967
>>626966

> или снижающиеся последовательности.


Имелось ввиду "или снижающиеся последовательности, при этом идя с конца массива к началу."
#344 #626975
>>626967

>снижающиеся последовательности


>идя с конца


Это возрастающая. Имеешь ввиду что можно всего в 2 прохода ответ узнать?

>>626966

>заменять удаленные числа на заведомо невозможные значения


Сравнение тоже будет. И скорость работы не поменяется.
26 Кб, 566x273
#345 #627026
Что бля? Чому у меня вечно читает числа, в книжке вот такой пример? Это же нелогично будет бесконечно считать, а написано что если ввести 3 4 5 6, он выведет 18.
ЧЯДНТ?
#346 #627034
>>627026
Ctrl+D
#347 #627186
ССССука.
Путаюсь в ебучих битовых операциях.
sage #348 #627388
>>627026
Чтобы дать программе понять, что ты закончил ввод, введи Ctrl+Z
#349 #627419
>>626952

>Что значит конструкция if(!cin)



cin имеет bool'евые функции-члены о состоянии потока (несколько флагов). В частности, одна из них, успешно ли проходили все предыдущие записи (если ты не очищал этот флаг).

Называется она operator bool (совершенно самоговорящее название). Так вот, вызывается она тупое сравнением потока с логической переменной (или запихиванием внутрь if/while/for и т.д.)

Что означает успешно прошли все предыдущие записи: это означает, что всё было записано как и хотелось, но не сообщает, пустой ли буфер cin. Если хочешь проверить на то, пустой ли он, то включай проверку cin.eof() -- обязательно пустые скобки в конце, т.к. это вызов булевой функции без аргументов.

(cin) означает, что все предыдущие записи были успешны (или ты очистили этот флаг)
(cin.eof()) означает END OF FILE (пустой буфер потока cin)

>>626953

>Если в предыдущей строчке cin не распарсил входные данные.


Необязательно последней.
#350 #627420
>>627186
Что тебе непонятно?
#351 #627704
>>627420
Разобрался уже. И дополнительно в stl' битсет.
Нужно было флаги реализовать.

Где загрузить исходники STL? Нашел http://llvm.org/svn/llvm-project/libcxx/trunk/ , но стащить их не очень выходит.
#352 #627727
>>627704
Гугли STLport, EASTL, RDESTL.
#353 #627738
Может кто подскажет, как в boost::asio использовать SSL и не SSL подключение в одной программе. По отдельности всё понятно, а если мне надо выбирать тип подключения, то тут не знаю, как сокет в boost::asio::ssl::stream передать.
#354 #627950
>>627738
наоборот, юзаешь sslStream.next_layer() пока делаешь незащищенное, а потом переползаешь в защищенное
#355 #627980
>>627950
Проблема в том, что мне может быть нужно нешифрованное соединение без SSL вообще. Получается, что придётся инициализировать SSL (boost::asio::ssl::context, boost::asio::ssl::stream), получить заголовок от клиента и, если нет запроса на SSL, работать с next_layer(). Неужели нет возможности сделать по другому?
#356 #627981
>>627738
Использовать человеческую I/O библиотеку, а не это тормозное overarchitectured9000 говно.
#357 #627982
>>627981
Какую?
#358 #627983
>>627982
libcurl же.
#359 #627984
>>627982
Да хоть libuv из нового.
#360 #627986
>>627983
Только клиент без сервера.
>>627984
SSL не вижу. По внешнему виду, просто лёгкая обёртка над сокетами.
#362 #628052
Решил токой поконтрибутить в Qt сдуру.
Посмотрел пару часов в эту огромную кодобазу, иерархия инклудов перестала помещаться на втором мониторе, я закрыл.
Как у людей выходит понимать все это, отсылать по 5 патчей в день и не сходить с ума?
С какой стороны подходить вообще к таким огромным репозиториям? Или без ста грамм нихуя не поймешь и по-любому придется сквозь тернии к звездам?
#363 #628084
>>628052

>по 5 патчей в день


Батя кстати все время какие-то доки читает, чтобы пулл-реквесты делать часто, контрибутит по 5 раз в день, а потом говорит, что репозиторий на диск не влезает, и еще форкает он. Пиздец короче. Реальная история, я не шароварщик.
#364 #628116
>>627993
Вероятно, и эта библиотека хороша, но мне надо тренироваться на бусте.
Что-то буст начинает меня расстраивать, хотя и начал изучать его совсем недавно. Тысячи конструкторов на любую ситуацию, миллион функций для любого случая, а такую простую вещь, как сокет невозможно передать через конструктор или заменить через метод. Забавно, но неужели ни у кого из пользователей/разработчиков не было необходимости в реализации прокси? Так и пришлось создавать boost::asio::ssl::context и boost::asio::ssl::stream и, в зависимости от заголовка, использовать либо SSL, либо через socket.next_layer() получать сокет и работать уже с ним. Хорошо, что хотя бы к внутренним данным доступ есть.
#365 #628122
>>628116
Дык из-за этого на нем даже ни одного нормального вебсервера нету (где-то были бенчмарки, где бустовый.асио Goвну слил).
Тебе уде говорили: если нужна именно вот такая низкоуровенная хуитка - забей на буст.
#366 #628219
>>628116
Таки что, не стоит бустом обмазываться?
#367 #628263
>>628219
Буст неоднороден, я уже который раз об этом втираю ньюфагам ИТТ. Его писали разные люди, на протяжение почти 15 лет уже. И когда написали хуйню, от нее уже нельзя отказаться, приходится поддерживать. Поэтому там есть годнейшие вещи треды, умные указатели, chrono, которые постепенно перекочевывают в стандарт. Есть просто хорошие пулы всякие, any/variant. Есть сложные и узкоспециализированные spirit, MPL, они быстро устаревают, но стабильны и все еще могут дать прикурить standalone-аналогам. Есть громоздкие части для популярных задач filesystem, test, они обычно хуже, чем standalone-аналоги, но не сильно, зато позволяют не прикручивать ничего, кроме буста. А есть всякий шлак, который неудачно впилили, и теперь выпилить уже не могут, а нормальный аналог пихать не хотят, потому что перекрытие зон ответственности, и вообще ВСЕ УЖЕ НАПИСАНО. asio - типичный пример такого говна, которое трогать не стоит, только понюхать, поморщиться и найти нормальную либу.
#368 #628272
>>622611 (OP)
Плюсогоспода, поясните вот что. Уходят ли кресты постепенно в легаси? В каких проектах они теряют популярность, а в каких - набирают?

Например, не станут ли через пару лет весь GUI делать на чём-то более лёгком в освоении, чем плюсы+Qt? Вон даже Microsoft в какой-то VS ограничил поддержку плюсов, чтобы на решётку перешли. Если есть какие-нибудь хорошие статьи 2015-2016 годов, поясняющие области применения C++ и то, откуда он не собирается уходить, с удовольствием почитал бы. Ну и ваше мнение интересно, разумеется. Заранее спасибо.
#369 #628273
>>628272
Просто есть пару свободных месяцев - думаю либо в плюсы нормально вкатиться, либо вкатиться в решётки или вообще в джаву.
35 Кб, 640x549
#370 #628301
>>628273

>есть пару свободных месяцев


>в плюсы нормально вкатиться

#371 #628312
>>628272

>на чём-то более лёгком в освоении, чем плюсы+Qt


Его и для плюсов уже на QML пишут (для лёгкого софта там и плюсов не надо).

> области применения C++ и то, откуда он не собирается уходить


Чо там статьи-то писать.
Легаси в: десктопных хуитках, автоматизации, всякой сайнс-хуйне, энтерпрайз и пр. где скорость разработки стоит выше производительности;
Не собирается двигаться из: игрулек (конкретно - движков), системщины и всякого эмбедеда (сюда только вкатывается, лол), всякого супер-хуйлода вроде поисковика гугла, короче говоря везде, где главное - производительность.
73 Кб, 604x604
#372 #628313
#373 #628314
>>628273
Хуёвая затея. Если нюфаг - даже не смотри в сторону плюсов, конкретно становление как программиста они только замедляют.
#374 #628317
>>628272

>ограничил поддержку плюсов


>запилили фичи из семнадцатого стандарта


>добавили поддержку clang


>крестовые апдейты чаще, чем твоя мамаша дает в очко


Ну окей, че.
#375 #628320
>>628314
Я кстати после крестов пытался питон выучить недавно начал. Там полный пиздец с пониманием. Может говноскрипты писать и научишься, но программировать вряд ли. Там сразу ООП и совсем нелогичная или не оптимизированная архитектура. Там меняется тип переменных в ходе работы программы. С первых минут в глаза бросается вся хуйня из-за которой он будет тормозить. Поэтому для ньюфагов наверно лучше паскаль какой-нибудь, а не эту хуету которую обычно советуют.
#376 #628325
>>628052
Ты им пользовался вообще? Понимание его архитектуры начинается после понимания принципов использования.
#377 #628330
>>628052
Хули там понимать? Хочешь вектор - берешь кулист, хочешь строку - берешь кустроку.
#378 #628331
>>628320
Суть всяких питонов в обучении - без ебли можно реализовывать разные алгоритмы, двигаться в этом направлении хоть как-то. Я в своё время был упрямым школьником начал с плюсов, и плюсов сего действа сейчас не вижу.
Насчёт паскаля ты вообще прав, надо модеру пизды дать чтобы из шапки строку про "Рабе/петон для нюфань" убрал.
#379 #628334
>>628325
>>628330
Ахуенные истории от папок ципипи подъехали. Ублюдки вроде вас, понимающих всё с полюзанья кде уже убили - вам, похоже, мало.
#380 #628340
>>628331

>без ебли можно реализовывать разные алгоритмы


там при обучении по началу многое не поясняют т.к. слишком много всякой хуеты. Я пока даже не понял как там ввод вывод работает.

>надо модеру пизды дать чтобы из шапки строку про "Рабе/петон для нюфань" убрал.


Щас вроде новый. Он добрый не считая предупреждений за скобочки))))) и отзывчивый. Скорее всего прислушаемся. А вообще пора новую шапку для прикреплёного треда пилить всем программачем. Или может сначала крестоёбскую доделаем?
56 Кб, 505x380
#381 #628350
>>628320
Здесь, дорогие друзья, мы с вами можем наблюдать, как детеныш Gallus Static, заботливо выращенный в теплом и уютном вольере, впервые столкнулся с диким и опасным миром динамической типизации.
#382 #628352
>>628350
Сейчас же все уже на смешанной типизации, не?
#383 #628353
>>628352
А что у бэйсика?
#384 #628357
>>628352
Нет, сплюнь. Это пережиток Си.
Сейчас мода на статику с выводом типов.
## Mod ## #385 #628363
>>628331

>Рабе/петон для нюфань


Я насчет Ruby и сам не оче согласен, но не хочу игнорировать труд предшественника. Пусть у него вся лента из "руби, скалы и еще какой-то хуйни", человек старался же, собирал материалы. Не мной покладено, не мне и дадено, такие дела. К тому же, я бы для начального обучения алгоритмизации выбрал питон, а не паскаль, ибо вред от отсутствия жесткого контроля за ньюфагом с лихвой компенсируется живостью языка и на порядок более высоким уровнем абстракции. ИМХО.
>>628340
Я только за. Если анон захочет допилить прикрепленный тред, с удовольствием все добавлю. Алсо, можете создать тред для обсуждения всего этого. Если анон проявит желание и начнется движуха, то можно будет прикрепить его, или сделать голосовалку, или еще что-то.
#386 #628389
>>628363

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


Того долбаёба который ссылки на треды про ЯП по пол года не обновлял?
У него ещё есть админка?

>Я только за.


https://2ch.hk/pr/res/628387.html (М)
#387 #628522
>>628334
Ага, брать кулист вместо няшного кувектора.
175 Кб, 700x516
#388 #629115
>>628301
>>628314
>>628312
Знаю сишку на довольно неплохом уровне, могу в микроконтроллеры на сишке, могу в приличный код, но по части ООП и мультитрединга новичок. Знаю плюсы на уровне теории (прослушал курс в универе, лол) и пары лаб, но не практиковался пока в STL и разных shared_ptr и прочих тонкостях, которые, как я понял, необходимы. Рефакторил немного один проект на плюсах, офигел от паттернов.
>>628312
Про Qt - довольно логично, ибо плюсы в GUI как-то непонятно даже, зачем. А почему в энтерпрайзе он легаси? В эмбеддед пока не собираются завозить джаву? Сложно ли вкатиться в такие серьёзные проекты? Что обычно нужно знать, кроме стандартных вещей вроде ООП и мультитрединга? Работы вообще много в мире, или на плюсовиков спрос ограничен, как на админов?
>>628317
Вроде бы, Intellisense там теперь не такой интеллигентный, как прежде, в отличии от шарпа. Сам не смотрел, но слова анона, который об этом сообщил, насторожили.
#389 #629365
>>629115
Помидоры скачай, хули как маленький.
#390 #629367
Дайте годный гайд как запилить сервер на сокетах в Qt
#391 #629376
>>629367
Лабы идут на хуй.
#392 #629378
>>629376
Надо убрать это правило из шапки.
#393 #629379
>>629367
Ричард Стивенс, любая книга по TCP/IP.
#394 #629399
>>629378
Хейтер сосет хуй на пару со своей мамашей.
#395 #629507
>>629376
Лабы идут нахуй. Мне >>629367 для себя. Но я нихуя нормального не нагуглил.
#396 #629532
Котоны, делаю хуйню на Qt, короч.
Для хуйни нужен секундомер.
Ну я короч велосипед с second++ пилить не стал, взял qtime
Тут такая хуйня, доки говорят что:

addSecs()
Returns a QDateTime object containing a datetime s seconds later than the datetime of this object (or earlier if s is negative).

(вольная копипаста, суть передана)

И, собственно, добавить секунду в QTime stopwatch у меня получилось только так:

QTime temp = stopwatch->addSecs(1);
*stopwatch = temp;

Это нормально или полный пиздец и можно проще?
#397 #629537
>>629532
Да, долбоеб, додумался до
*stopwatch = stopwatch->addSecs(1);
но все равно мне это кажется костылем
#399 #629558
>>629537
Нормально это. Енджой ойр ИММУТАБЕЛЬНОСТЬ.
#400 #629559
>>629558
Хорошо, благодарю.
Если честно, сам немного жалею что такой диплом брал, еще и на qt. Лучше бы простое "проектирование"
#401 #629580
http://pastebin.com/c9pKVq4N

Вроде все правильно сделал, но в io не совсем по порядку оно все.
Можете советов дельных дать, что можно переделать?
#402 #629581
>>629580
Производитель потребитель задача.
#403 #629596
Как можно оптимизировать этот код?

int i, j;
float sum = 0;
int num = 100000000;
for( i = 0; i < num; i++ )
{
for( j = 0; j < num; j++ )
{
float x = myDataX;
float y = myDataY[j];
float value = x+y;
sum+=value;
}
}

Кроме как вынести

float x = myDataX;

из вложеного цикла ничего в голову не приходит. Подскажи Анон?
#404 #629598
>>629596
int i, j;
float sum = 0;
int num = 100000000;
for( i = 0; i < num; i++ )
{
for( j = 0; j < num; j++ )
{
float x = myDataX;
float y = myDataY[j];
float value = x+y;
sum+=value;
}
}

быстрофикс
#406 #629614
>>629598

>


http://pastebin.com/xkHpGxzk
Помог чем смог
#408 #629652
>>629621
Ну, что ты хотел, милаш?
#409 #629672
>>629596
Во-первых неясно зачем тебе переменные x, y и value. Во-вторых тебе достаточно сумму первого массива умножить на 100000000 и прибавить к ней сумму второго массива умноженую на 100000000 ^ 2.
#410 #629768
>>629539
>>629399
пшёл нахуй со своей парашей. и высер твой из шапки нужно убрать.
#411 #629776
Посоны, постоянно на SO вижу отсылки к стандарту, мол
"Деструктор анального писюна, псалма 14 параграф 88 лука"
Где достать это говно? Как часто оно обновляется?
#412 #629777
>>629776
open-std.org Обновляется, 98, 2003, 2011, 2014, и будет вроде 2017. Важные обновления - 98 и 2011, а промежуточные - багфиксы по сути.
#413 #629798
>>629776
оно тебе не нужно, сын мой

>>629600
>>629598
>>629596
какая-то хуйня написана
у тебя myDataX и myDataY не зависят от одного из циклов
короче получается так:

sum = (std::accumulate(myDataX, myDataX + num, 0f) + std::accumulate(myDataY, myDataY + num, 0f)) * num;

либо распиши что там у тебя вместо "float value = x+y;"
#414 #629875
>>629798
Нужно.
#415 #629881
>>629776
Оно есть в шапке этого треда же.
#416 #629903
>>629672>>629798
кусок кода из тестового задания, где надо его оптимизировать
вот программа для теста (переменную num я уменьшил) результат в ней: 998540800
http://pastebin.com/XesqpaGR

если суммировать элементы и множить потом на размер, как здесь:
sum = (std::accumulate(myDataX, myDataX + num, 0.f) + std::accumulate(myDataY, myDataY + num, 0.f)) * num;

результат получается: 999000000
#417 #629908
>>629903

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



Это я к тому что понятия не имею чего хотел автор достичь переменными x, y, value
#418 #629936
>>629903

> если суммировать элементы и множить потом на размер, как здесь:


А здесь все ок https://ideone.com/NMaxiV
52 Кб, 513x285
#419 #629979
навернул boost.. Указатели,контейнеры, графы, графы, ГРАФЫ!!!!11
В гугле на русском ничего, кроме одной книжки. Что делать ?
#420 #629987
>>629979
Нахуя оно тебе надо?
#421 #629996
>>629979
Буст или графы ? Годная штука, много фич.
#422 #630014
>>629979

>кроме одной книжки


>boost


>книга на русском


Реквестирую срочно!
#423 #630032
Есть у кого-то нормальная, не наркоманская реализация обедающих философов на 11 стандарте без блядских mvc/posix семафоров?
#424 #630034
>>630032
Захват семафоров в алфавитном порядке.
#425 #630036
>>630034
А в стандарте есть семафоры? или ты имеешь ввиду condition_variable?
Сорцы есть?
#426 #630115
>>630032

>posix


Кстати что это? Вики прочитал, но нихуя не понял. А выглядит интересно. Если нуфаг, то можно для него какую-нибудь хуету написать? Реквестирую книгу.
#427 #630124
>>630115

>Кстати что это? Вики прочитал, но нихуя не понял.


Стандарт.

>А выглядит интересно


Выглядит как unix way c-only.
#428 #630130
>>630124

>c-only


Тогда не надо книг. А ты не врешь?
#429 #630162
>>630036
Для философов тебе мьютексов хватит же. Пока используешь любую вилку - блокируешь конкретно ее мьютексом. Дальше просто нумеруешь вилки и берешь всегда по возрастанию номеров.
#430 #630169
>>630130
Ричард Стивенс, "Программирование UNIX".
#431 #630183
>>630130

>А ты не врешь?


if ((sem_id = semget (ipc_key, 2, IPC_CREAT | IPC_EXCL |0600)) <0)
semctl (sem_id, 1, SETVAL, 1);
#432 #630188
>>629379
>>630169

>Ричард Стивенс


Это у вас новый мем?
#433 #630356
Qt к вижл студии прикрутить можно? Хочется кодить с интерфейсом, а всякие винапи и мфц дюже громоздкими выглядят для изучения.
#434 #630362
>>630356
Не туда смотришь. У Qt свой дух, весьма вонючий. Либо используешь Qt Creator, либо студию с нормальными библиотеками FLTK или wxWidgets там, если любишь помощнее и посложнее. Не надо мешать вино с пивом, блджад.
#435 #630490
>>630356
Да, можно, есть инсталляшка для интеграции, посмотри у qt на сайте.
#436 #630530
О, тут уже как раз за Qt пиздежь идет.
Хочу что-нибудь напердолить на кутешечке, но ума не приложу, что.
#437 #630542
>>630530

>Хочу что-нибудь напердолить на кутешечке, но ума не приложу, что


Визуализацию случайного блуждания с отражением.
#438 #630546
>>630542
Мм, как хуем в ротеш типо?
#439 #630605
>>630546
Как домой в пятницу вечером.
#440 #630624
>>630605
У меня любой день одинаков.
#441 #630747
>>630490
Я чет вот после таких >>630362 отзывов уже и не знаю, нужна ли мне эта кутя.
#442 #630759
>>630747
Тут индивиды любят пояснять что кутя нинужна, как и цпп - фве работает на гэтэкаплас и си.
#443 #630775
>>630759

>гэтэкаплас


инфернальное говнище, почти полное повторение цепепе аби без использования слов цепепе
на выходе тонны говномакросов, которые делают абсолютно тоже самое что и плюсы внутрях
#444 #630785
>>630775
зато без МАНГЛИНГА биндится через GObject Introspection даже к пердаку твоей мамки
#445 #630837
>>630747
Будешь каждого дауна слушать - так и будешь думать, что X не нужен, а на Y работы нет.
#446 #630840
>>630837
Давай, расскажи, как ты удачно впихнул string и QString в одно приложение.
#447 #630845
>>630840
Но зачем мне это делать? В Qt свои контейнеры, зачем мне там нужен stl?
#448 #630848
>>630845
Патамушта. Ты. Должин. !!!
Ведь ооп придумали не для разделения кода, видимо НИЛЬЗЯ разделять кодобазу на stl и qt.
#449 #630849
>>630848
Ты кто вообще такой и что мне от тебя надо? Свяжешься с моим секретарем.
#450 #630864
>>630845
А алгоритмы на контейнерами там есть?
#451 #630868
>>630864
А нахуя тебе алгоритмы в гуе? Или ты не умеешь отделять логику от представления? Это уже к тебе вопрос тогда, лолка.
#452 #630899
>>630840
Не понел, qstring можно сконструировать из потока байт в любой кодировке, не понимаю проблемы.
#453 #630958
>>630848
Еблан тупой, Qt-контейнеры stl-совместимые. Сложно в хелп слазить, посмотреть?
#454 #630974
При использовании идиомы пимпл как принято обзывать класс с имплементацией и где размещать его реализацию - в том же файле, где и основной класс, или же в другом?
#455 #630991
http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/
Cначала нихуя не понял
потом тоже
#456 #631017
>>630868

>А нахуя тебе алгоритмы в гуе?


Вот вся суть кутеблядков в одном предложении. Сначала пихают везде свои нестандартные велосипеды в духе QYourMomma, а потом проект оказывается склепан из stl, qt и Аллаха в каждом файле и адаптеров к адаптерам, как ебаный монстр Франкенштейна.
#457 #631019
>>630958

>stl-совместимые


>без аллокаторов


Ну это вообще пушка.
#458 #631022
>>631017
Хуйню спизданул и рад.
#459 #631062
>>631019
Даже обоссывать тебя лень, дегенерат тупой.
http://doc.qt.io/qt-4.8/containers.html#stl-style-iterators

>STL-style iterators have been available since the release of Qt 2.0. They are compatible with Qt's and STL's generic algorithms and are optimized for speed.

#460 #631108
>>631062

>Qt-контейнеры stl-совместимые


Глядите, маняманевры пошли. Ты разницу между совместимостью с STL и совместимостью с алгоритмами STL ощущаешь, чепуш? Охуеть просто, я напишу пустую заглушку с интерфейсом итератора, буду ее возвращать и кукарекать о совместимости с STL, а пацаны-то не знали.
#461 #631121
>>631108
Что ты вкладываешь в понятие "совместимость с STL" дауна ты кусок? Скажи, зачем вот это вот суетливое маняврирование про неработающие самописные итераторы? Конечно, если их написать чтобы они не работали, то они работать не будут, то же мне сюрприз. Вот только те которые сейчас в Qt есть - они работают, и можно при помощи std::sort сортировать QVector или там при помощи std::find_if что-то в нем искать. Какая тебе еще совместимость с STL нужна, дегенератина ты тупая?
#462 #631132
Объясните ньюфагу.
Пока не раскурил <atomic> и <future>. Понять не могу, везде кукарекают, что надо lock-free, lock-free; нахуй тогда вообще в таком случае нужны мутексы и локи и хуёки, если можно все ебашить ЛОК ФРИ?!
Я серьезно не понимаю, объясните, если кто осведомлён.
#463 #631133
>>631132
Ну как ньюфагу, ньюфагу в паралеллизме на стандарте.
#464 #631134
>>631132
потому что нельзя абсолютно всё заебашить локфри
зато там, где можно, есть ч0ткий рост скорости
#465 #631135
>>631134
Что именно нельзя, можешь немного конкретизировать? За пеленой абстракции не воспринимается разница.
#466 #631137
>>631135
одновременное действие с двумя и более общими объектами
#467 #631139
>>631137
А, ну охуеть тогда.
Примерно понятно. Спасибо.
#468 #631143
>>631121
Ты наркоман штоле, сука? stl-совместимый контейнер = контейнер с интерфейсом, идентичным контейнерам stl. Ты можешь использовать объекты QVector вместо объектов std::vector без перепила клиента? Нет. О какой тогда совместимости ты кукарекаешь, маня?
#469 #631148
>>630974
В другом, разумеется, в этом вся суть PIMPL. В книжках называют TvoyaMamkaImpl, но я обычно сразу делаю все классы имплементациями, используя родные имена. Если надо PIMPL, использую специальную шаблонную обертку с джвумя хэдерами. Если интересно, могу пояснить подробнее за принцип.
#470 #631152
>>631148
Но нахуя?
У мэйерса в том же, и http://c2.com/cgi/wiki?PimplIdiom здесь
в том же файле - имел ввиду .cpp а не .hpp, может ты неправильно меня понял
#471 #631154
Попробовал упороться дишкой - на кресты без слез и истерического смеха уже не получается.
#472 #631156
>>631154
Перепишешь всю С++ кодобазу на ди - потом приходи.
#473 #631157
>>631156
Но ведь их можно использовать совместно.
#474 #631158
>>631157
Все сказал?
#475 #631184
>>631154
съеби в дэ тред
#476 #631187
>>631143

>Ты можешь использовать объекты QVector вместо объектов std::vector без перепила клиента?


Да могу, большинство методов std::vector продублированы в QVector. Я ж советовал тебе хелп посмотреть, хули ты этого еще не сделал?
#477 #631190
О, напишу потокобезопасное BST, может надрочусь немного.
#478 #631194
>>631152
Лол, так у Мейерса это просто иллюстрация, а не реальное использование. Чтобы можно было скопипастить и скомпилировать. Это как с using namespace std - удобно писать примеры, но реально так не делают.

Первоочередная задача PIMPL - ускорение компиляции. Допустим, ты хочешь завести в классе YourBatya член-экземпляр класса Trukhany. Тогда компилятору нужен размер труханов, т.е. внутри файла с классом бати это должен быть т.н. complete type. Поэтому ты делаешь #include <Trukhany.h>

Хэдер с труханами большой, а у бати есть еще три экземпляра Grass и экземпляр FartFactory, а у их хэдеров есть свои зависимости и инклуды... Получается, что после вставки всех хэдеров батин файл становится неебического размера. И такое происходит почти с каждым классом, у которого есть зависимости, поэтому компилятор тратит очень много времени на многократный парсинг всего этого дерьма, как только какой-то из хэдеров изменяется.

Вот чтобы такого не было, используют PIMPL. Вместо инклуда пишут просто объявление, что есть такой class Trukhany, а что это за класс - батин хэдер не ебет, потому что при использовании PIMPL экземпляр хранится по указателю, а все методы, которым уже надо знать про внутренности труханов, вынесены в батин .cpp. Таким образом, при изменении Trukhany.h придется перекомпилировать только .cpp-шники, которых не так много, а не рекурсивно большую часть проекта.

Вообще, PIMPL используется не только для этого (например, в паттернах наподобие Bridge, по сути, тоже PIMPL, но там акцент на возможность заменить имплементацию в рантайме, поэтому часто "имплементацию по умолчанию" размещают рядом), но самый часто используемый и существенный эффект - именно с выносом в другой файл.
#479 #631199
>>631187
std::vector <int, std::allocator <int>> v {};

Вот тебе тело функции из одной строчки. Заменяешь vector на QVector, пробуешь скомпилировать, обретаешь просветление.
#480 #631202
>>631194
Ты щас описал то что у мэйерса.
Какой прикол выделять реализацию в другой файл ( НЕ БАТЯ.cpp ) - ты так и не написал.
#481 #631206
>>631199
Скомпилировал.
Что дальше кукарекаем?
#482 #631207
>>631206
Пруф на ideone давай.
#483 #631208
>>631207
На идеоне есть кьют?
#484 #631213
>>631208
тогда экзэшник. или в ассемблер конвертируй и показывай
#485 #631215
>>631213
Еще чего, я что, виндоманька какая?
#486 #631217
>>631215
Тогда линуксовый файл или ассемблер показывай.
21 Кб, 1565x789
#487 #631218
>>631202
Пикрелейтед два подхода. Вопрос скорости компиляции решают оба, но правый более гибкий и связанность меньше.
#488 #631219
>>631218
И профит только в том, что ты на два файла разбил? Ну озуеть.
#489 #631222
>>631219
Профит в том, что firewall_* пишутся один раз и потом их можно использовать с любыми классами. Когда ты пишешь батю, ты не думаешь про способ его использования, просто пишешь обычный класс. Захотел сделать для него PIMPL - правишь только клиент (мамку). Принцип единственной обязанности же.
#490 #631229
>>631222
Ну окей.
#491 #631244
>>631222
Бля, и decl, и def.
Понятно, я такое в сорцах Qt видел.
99 Кб, 1919x1061
#492 #631254
>>631222
Вот так примерно будет правильно?
#493 #631255
>>631254
Ну и мамку тоже, и типа логика пердежа будет независима от субъекта.
#494 #631257
>>631194

>Первоочередная задача PIMPL - ускорение компиляции


блядь, что ты несешь?? кто сейчас заморачивается скоростью компиляции??
PIMPL нужен для библиотек, чтобы можно было бы менять внутренности скрытого класса, не ломая ABI

>Вместо инклуда пишут просто объявление, что есть такой class Trukhany


бляяяяяядь, это всего лишь forward declaration, а не PIMPL
#496 #631260
>>631259
Кстати, я вот хотел ему сказать за эту статейку и за fragile binary interfaces, но разве одно отменяет другое? Быстрая компиляция действительно имеет место.
#497 #631261
Окончательно меня запутали, короче.
#498 #631262
Things to Remember
• The Pimpl Idiom decreases build times by reducing compilation dependencies
between class clients and class implementations.

У Мэйерса вот написано про время компиляции.
А он тоже не хуй с горы, как бы.
#499 #631269
Как передавать инфу из соседнего класса?
К примеру, хочу сделать так, чтобы у меня файл читался и выводился на экран, но чтобы при этом чтение файла было в соседнем классе.
Т.е.
Файл 1.cpp должен пользовать файл 2.cpp чтобы вызвать функцию открытия файла.
А файл 2.cpp должен заюзать 1.cpp чтобы вывести это дело на экран. Данных предполагается много, поэтому return (переменная с дохуя текста), не хотелось бы юзать.
Подключать "друг в друга" мечта /b компилятор, естестна не дает
#500 #631270
>>631269
Чем плох ретурн?
#501 #631272
>>631269
Hui::print(Pizda::read())?
#502 #631275
Короче, я понял, ты описал Firewall, а он лишь частный случай пимпла.
#503 #631276
>>631270
>>631272
Не хотел признаваться, но придется.
Не осилил QSettings, решил писать свой костыль (заодно научиться парсить файлы - тип оправдание).
А там надо прочитать файл, и потом на основе его раскидать параметры в файле, заправляющем гуями.
Можете обоссывать
#504 #631277
Так перепиши, там хуйни на 2 минуты с докой
#505 #631278
>>631276
Что пишешь, кстати?
#506 #631279
>>631276
А какие проблемы с QSettings?
#507 #631280
>>631276

> решил писать свой костыль


> надо прочитать файл, и потом на основе его раскидать параметры в файле


Я слышал из крестов можно консольные команды выполнять. А из консоли перл программки. А перл как раз сделан чтобы такие проблемы решать.
#508 #631281
>>631280
Я бы использовал хаскель.
#509 #631282
>>631269
Передавай частями. Тоесть 1.cpp хочет отобразить файл, он создает объект 2.cpp, передает уме себя как делегата (или кого-то специально обученого быть делегатом). 2.срр читает файл, и каждые n байт отдает делегату. Еще можно просто общий буфер использовать, но там по-моему больше нюансов всплывает.
#510 #631283
>>631279
Первое и основное - прочитал джва раза, понял что ничего не понял.
Второе - оно как-то странно раскидывает конфиги - в винде в реестр, в линухах - в ini. Хотя видел упоминание второго режима. Но тут вступает первый пункт в игру.

>>631278
Мокропиську для работы под себя, чтобы удобней было.

>>631280
Хотел бы рискнуть, но мне бы работающую версию поживее. Да и опять же, помимо qt нужно будет и перл тянуть сверху (предполагается помимо как на линухах и на винде пользовать еще)
#511 #631284
>>631282
Я только вкатился (не профессия, решил себе жизнь упростить прост, поебавшись много и заранее), поэтому для меня это пока... сложновато.
#512 #631285
>>631283
Ну на винде реесто, а на линупсе в конфиги.
А что не так то?
#513 #631286
Оп, ты учёл эти советы при составлении шапки? Там список кидал. Ещё есть время что-то исправить.
https://arhivach.org/thread/135285/#618203
#514 #631287
>>631285
Единый конфиг проще для бэкапа, тем более в случае с виндой и реестром, имхо.
#515 #631289
>>631287
Ок. Тогда чем плох JSON?
#516 #631290
>>631289
Тем что я о нем не знал.
Буду смотреть сейчас, спасибо.
#517 #631292
>>631290
>>631289
Тем, что QSettings предоставляет унифицированный доступ к конфигам настроек без ебли?
#518 #631293
Поясните за делегаты, я думал в плюсах такое не используют, слышал про них в джаве и шарпе.
#519 #631295
>>631292
Ну кусеттингс его не устроил же.
#520 #631296
>>631292
Честно - читал вчера документацию. Пробовал. Не пришло осознание. Сейчас почитаю по совету этого >>631289 анона. Наступит просветление - переведу. Или нет. Не знаю (один хрен не в продакшн же)
#521 #631297
>>631293
По идее делегат - это лямбда. Функция, которая видит свое окружение.
#522 #631298

> Тред в бамплимите


> Скорость постинга возрастает в 10 раз

#523 #631299
>>631298
Это нормально.
#524 #631300
>>631255
В целом да, unique_ptr позволяет. Есть такой нюанс, что для безопасности лучше не использовать голый unique_ptr, потому что там может быть nullptr, или, к примеру, кто-то может внезапно заменить объект. Удобнее всего сделать класс у меня это firewall, который содержит unique_ptr и самостоятельно инициализирует указатель, а после создания гарантирует, что его никто не изменит. Поэтому и надо разделение на decl и def - деструктору и конструктору нужна полная инфа о бате, поэтому def включается уже в .cpp, когда это известно.
#525 #631304
>>631297
Так лямбда она и есть лямбда
А делегат при чем?
#526 #631305
>>631296
Лол, те же яйца, только в профиль.
На выхлопе ты изобретешь кусеттингс, понимаешь, где ты себя наебал?
#527 #631308
>>631304
Делегат необязательно лямбда, блять.
Грубо говоря, делегат это каллбек. Насколько я понял.
#528 #631310
>>631308
В дишке есть function и есть delegate.
Разница в том, что function видит только свои параметры, а делегат может видеть то, что снаружи.

То есть, std::function, которая чего то снаружи захватывает - и есть делегат.
#529 #631311
>>631305
Я понимаю твой настрой.
Но прошу учитывать мою зеленость и твой укор - для меня тоже новая информация.
Также меня смутила эта статья: http://habrahabr.ru/post/149085/ хоть я и понимаю, что там для меня ничего полезного (на данном этапе)
#530 #631312
>>631310
[this] или [&] да?
#531 #631313
>>631312
Вроде того.
#532 #631317
>>631313
Спасибо.
#533 #631318
>>631257

>кто сейчас заморачивается скоростью компиляции?


Пару тредов назад была ссылка на презентацию команды яндекс-браузера. У них он компилировался "два часа на хорошем макбуке". Ты не с ними работаешь, часом?

>чтобы можно было бы менять внутренности скрытого класса


Это одно и то же, лол. В случае библиотек просто цена выше - придется перекомпилировать не половину проекта, а все проекты, юзающие библиотеку.

>это всего лишь forward declaration


Ну. В PIMPL-обертке же есть указатель на имплементацию, поэтому требуется forward declaration, иначе не скомпилируется.
#534 #631320
>>631318
Блин.
This technique is described in Design Patterns as the Bridge pattern. It is sometimes referred to as "handle classes",the "Pimpl idiom" (for "pointer to implementation idiom"),"Compiler firewall idiom", "d-pointer" or "Cheshire Cat", especially among the C++ community.

Почему чеширский кот и d-ptr? Особенно д, в Qt сырцах ввеееезде d, что он символизирует?
#535 #631322
>>631259
Вряд ли я оттуда это спиздил. ЕМНИП, я выработал такой подход на основе Мейерса, когда хотел повторно использовать эту хуйню.
#536 #631328
>>631322
Ну так это уже частный случай, лол.
В чистом пимпле это не нужно, нужна скорость компиляции и скрытие от пользователя.
А то что можно многоразово юзать - это уже фишечка. Отталкиваться нужно от ситуации, ящитаю. Если нету бати и мамки - то зачем плодить еще два файла :)
#537 #631333
>>631275
Да. Суть в том, что надо баланс между повторным использованием и специализированностью к твоей задаче. PIMPL можно сделать по-разному, и вообще граница между ним и другими подходами с внедрениям зависимости оче размыта. Можно каждый раз делать два класса, форвардить методы и получать PIMPL с идентичным интерфейсом. Или вынести только часть методов. А я зделал упор на повторное использование, но ценой некоторого фиксирования конкретной реализации.
#538 #631335
>>631333
Во-во, именно, баланс исходя из ситуации.
#539 #631342
>>631286
Ну, это вообще дело вкуса же. Мне кажется, не стоит в шапке перечислять все существующие иде, тем более, что на вкус и цвет... Я руководствовался тем, что надо предоставить наиболее дружелюбные ньюфагу варианты, а важнейшим фактором является автодополнение и ебля при установке. Автодополнение объективно лучшее у студии, а среди остальных - у codelite, ебля с обеими умеренная, вместе они покрывают все три оси. Поэтому не стоит менять их на что-то другое без причины, ящитаю.

Литературу как раз сейчас смотрю, возможно, успею что-то впилить уже в этом перекате.
#540 #631343
>>631297
Она не видит же, если не делать захват.
#541 #631346
Осталось только придрочиться и понять, где та грань между использовать пимпл / не использовать, при условии что не библиотеку пишешь.
#542 #631348
>>631343
Но может ведь, если делать.
Короче, я понимаю делегат как функцию, которую можно запихнуть в функцию высшего порядка.
#543 #631352
>>631320
Чеширский кот потому что типа видно только улыбку-обертку, как в сказке про Алису. Алсо, там много разных названий и много разных деталей. Я стараюсь как-то систематизировать это, а не мешать в кучу. Конкретно под мостом у банды подразумевался случай с немного другой мотивацией - разделением иерархий интерфейсов и реализаций, чтобы не плодить классы. А у Скотта pimpl решает именно проблему скорости компиляции, поэтому я обычно различаю эти понятия. Но вообще это просто вопрос терминологии, можно и не заморачиваться.
#544 #631356
>>631348
Вики вообще говорит, что делегат это "безопасный указатель на функцию". Зачем, кстати, тянуть в кресты лишнее понятие из шарпа? Есть лямбды, есть функторы, есть function wrappers, хуле еще надо?
#545 #631357
>>631356
Разве это не абстрактное, не зависящее от языка понятие?

Да и сабж в крестах появился недавно, лет 5 назад всего. Всякие бусты не смотрел.
#546 #631360
>>631356

>безопасный указатель


оксюморон
#547 #631379
Посоны, я, короче, отложу перекат до завтра, но зато успею впилить много новых книг при таком раскладе. Наберитесь терпения, пожалуйста. Всем добра.
#548 #631399
>>631352
Одно идет со вторым, лол. Компиляция и разделение. Велкам ту исходники Qt.
#549 #631404
А нахуя перекоты такие частые? 500 постов на микротематике всего-то
#550 #631405
Ребят, спасибо за помощь и за то что заставили осилить таки QSettings (вроде управился, получается)

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

Всем доброго времени суток.

>>631269-кун
#551 #631408
>>631405
Ну вот :3 Хули там, записать-прочитать, группу открыть-закрыть, сохранить, открыть.
#552 #631410
>>631404
Все любят кресты, бамплимит быстро наступает. Скоро джаву с пхп обгоним.
#553 #631413
>>631410
Еще работу по ним найти.
#554 #631421
>>631399
Зачастую да, но вообще это совершенно разные вещи, так что не обязательно. Например, может быть pimpl без разделения (если impl - конкретный класс без наследования от абстрактного интерфейса, то так и есть: сменить его в рантайме не получится, но зато работает немного быстрее без виртуальности), а может быть разделение без pimpl (когда в силу легкости абстрактный интерфейс отделенной части инклудят сразу, чтобы иметь возможность звать его методы прямо из хэдера).
#555 #631472
Напрягает кьют.
Огромнейший фреймворк, можно велосипед написать и не быть в курсе, что это говно уже запилено.
Куча макросов, хуякросов, куэмель, хуеэмель - как это все помнить?
Написание любой хуйни с нуля заканчивается переполнением стека мозга в поиске в глубину.
#556 #631499
>>631472
Элементарно. Когда тебе что то нужно - ищешь это в составе Qt и из хуень оттуда, как из кирпичиков, херачишь прогу.

А там есть практически все.
#557 #631502
>>631499
Ага.
А потом оказывается, что тебе нужно все перепиливать, потому что хуйнянейм работает по-другому.
#558 #631503
>>631502
Ну и что такого. Суть погромирования - постоянно что то перепиливать. В мире постоянно меняющихся хуйнянеймов.
#559 #631506

>we can ship only headers and binaries instead .cpp


Как это сделать?
#560 #631523
>>631506
.h и .lib/.a/.dll/.so Гугли статические и динамические библиотеки
#561 #631525
>>631523
Это я туплю уже. Сорян.
#562 #631601
Ребят, я тупой, не могу установить VS, а точнее - не хочет устанавливаться .net framework 4.6.1. Что делать? Окна версии 8.1. Отдельно пытался установить - тоже какая-то проблема у него.
лог ошибки для фреймвока:
OS Version = 6.3.9600, SP = 0.0, Platform 2
OS Description = Win81 - x64 Enterprise Edition
MSI = 5.0.9600.17905
Windows servicing = 6.3.9600.17709
CommandLine = D:\9b9e4e20fea3f3ccdd3319a1\\Setup.exe /x86 /x64 /redist
Using Simultaneous Download and Install mechanism
Operation: Installing
Package Name = Microsoft .NET Framework 4.6.1 Setup
Package Version = 4.6.01055
User Experience Data Collection Policy: AlwaysUploaded
Number of applicable items: 6
RmShutdown failed with error: 351
RmShutdown failed with error: 351
Exe (D:\9b9e4e20fea3f3ccdd3319a1\SetupUtility.exe) succeeded.
Exe Log File: dd_SetupUtility.txt
Exe (D:\9b9e4e20fea3f3ccdd3319a1\SetupUtility.exe) succeeded.
Exe Log File: dd_SetupUtility.txt
Exe (D:\9b9e4e20fea3f3ccdd3319a1\x64-Windows8.1-KB3102467-x64.cab) failed with 0x490 - Element not found. .
Final Result: Installation failed with error code: (0x00000490), "Element not found. " (Elapsed time: 0 00:04:12).
#563 #631664
>>631601

>x64-Windows8.1-KB3102467-x64.cab) failed with 0x490 - Element not found


Ну очевидно же, что надо поставить эту обнову вручную. Найди ее в центре обновления или скачай у мелкомягких с сайта.
#565 #632798
>>622611 (OP)

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


Котаны, насколько устарело? У меня издание 2006 года (4е издание). Легко читается. Есть ли смысл учить по этой книге а потом добрать знаний по новшествам либо лучше сразу брать новую кригу? эта в бумажном варианте, а читать с монитора ну совсем не круто
При этом паралельно смотрю разные видео на тытрубе, кстати.
#566 #632801
>>622611 (OP)
Вот вы мне поясните, почему, если С++ так охуенен, в перепись треде все нормальные зарплаты у тех кто пишет на php и JS а с плюсами там всего пара человек???
Тред утонул или удален.
Это копия, сохраненная 31 января 2016 года.

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

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