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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
624 Кб, 884x1024
Оффициальный™ традиционный® C++ тред #31 #726671 В конец треда | Веб
Должна в тот вечер вдохновенья пушка
Была извергнуть крестоблядский стих,
Но распугала робких муз подружка,
Мой рифмы храм внезапно навестив.

О горе мне! Желанием объятый,
Дать бой не в силах женскому теплу,
В надежде, что успею к перекату,
Оставил лиру ржаветь в углу.

Мы предавались ласкам до рассвета,
И я в обьятьях юных сладко спал,
Когда ворвался в сумрак кабинета
Владыка духов, мой отец Баал.

Швыряя за проклятием проклятье,
С шелков атласных он меня стащил,
И прокричал, слюной забрызгав платье:
"ЗАЧЕМ ТЫ ЛГАЛ, ЧТО ТРЕД ПЕРЕКАТИЛ?!!"

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

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


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

TL;DR

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

Памятка ньюфагу

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

Небольшие фрагменты кода размещай в треде при помощи тега [code] и жабаскрипт-костыля. Для больших фрагментов используй внешние сервисы.


FAQ

Мотивация

Q: Почему стоит использовать именно C++?
A: Ни один язык не идеален, но по совокупности киллер-фич C++ оставляет все остальные языки позади. Вот основные три:

  • Скорость
    C++ действительно быстрый язык — вместе с C, его прародителем, они с большим отрывом уделывают по скорости все остальные языки высокого уровня. Код на C++, как правило, медленнее аналогичного кода на C приблизительно на 0-20% а в ряде случаев C++ оказывается даже быстрее, причем замедление появляется только при использовании высокоуровневых конструкций (в C++ ты никогда не платишь за то, чего не используешь). Таким образом, если тебе требуется высокопроизводительный код, C++ станет отличным выбором.
  • Мощь
    C++, являясь одним из наиболее выразительных и мощных языков, позволяет использовать большинство существующих парадигм. Его философия построена на минимальном ограничении программиста в выборе методов и инструментов простреливания ноги решения задачи. Как следствие, используя C++, ты можешь не думать о том, как обойти искуственные ограничения языка, а беспрепятственно выбрать наиболее подходящие к ситуации средства.
  • Популярность
    C++ по-настоящему популярен. На нем написаны десятки тысяч приложений и миллиарды строк кода, о нем написаны сотни книг, он до мельчайших подробностей документирован и стандартизован. Используя C++, ты никогда не останешься без работы или поддержки комьюнити.

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

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

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


Литература

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

  • Для нюфань

    Учебники для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется:


    Автор(ы) Название Год Ссылка
    Бьерн Страуструп Программирование. Принципы и практика использования C++ 2016 https://yadi.sk/i/Yd6KKpLBqJSUr
    Стэнли Липпман, Жози Лажойе и Барбара Му Язык программирования C++ 2014 https://goo.gl/kVaela
    Стивен Прата Язык программирования C++ 2012 https://goo.gl/z7kA8u

  • Кроме того, есть еще пара старых добрых учебников для ньюфагов. Часть информации в них устарела, но многие считают, что это компенсируется их большей, по сравнению с современными учебниками, понятностью:


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

  • Best practices

    Книги про основные подводные камни для тех, кто осилил предыдущий пункт. Следует пролистать все:


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

  • Проектирование

    Следует пролистать все перед переходом от лаб к написанию настоящего софта.
    Последний пункт есть квинтэссенция ГИБКОСТИ, поэтому стоит прочитать его в любом случае, чтобы охуеть от того, как можно делать:


    Автор(ы) Название Год Ссылка
    Ален Голуб Веревка достаточной длины, чтобы выстрелить себе в ногу 2001 https://goo.gl/fBmuxp
    Джеймс Коплиен Программирование на C++ 2005 https://goo.gl/Y1WGdU
    Андрей Александреску Современное проектирование на C++ 2002 https://goo.gl/e1V5BC

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

  • Справочники

    Наиболее детальные описания языка. Удобно использовать как референс, читать от корки до корки не обязательно:


    Автор(ы) Название Год Ссылка
    Бьерн Страуструп Язык программирования C++ 2013 https://goo.gl/XkAiOX (на ангельском)
    Бьерн Страуструп Язык программирования C++ 2010 https://goo.gl/iZBDiV <устарело>

    Кроме того, на ангельском доступны стандарты C++11, C++14, а также последняя версия черновика стандарта C++17.

  • Тонкости языка

    Книги для тех, кто возлюбил кресты всей душой и желает углубиться в детали:


    Автор(ы) Название Год Ссылка
    Герб Саттер Решение сложных задач на C++ 2002 https://goo.gl/iWaa6S
    Герб Саттер Новые сложные задачи на C++ 2004 https://goo.gl/4nn512
    Бьерн Страуструп Дизайн и эволюция C++ 1994 https://goo.gl/FqbPwo (для легкого чтения)

  • Отдельные аспекты

    Читать по необходимости:


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


Другие обучающие материалы

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

Q: Не люблю, когда льют воду. Хочу коротких материалов по существу.
A: Вот тебе блоги, факи, референсы и всякое такое:

  • Годный блог, в котором все просто и понятно тян не нужны кококок борщ
  • Блог с хорошо расписанными фичами новых стандартов
  • Краткие описания библиотечных функций и контейнеров - на русском или более подробно на ангельском
  • Блог Герба Саттера (на ангельском)
  • Блог Скотта Мейерса (на ангельском)
  • Блог еще одной тянки, много о Qt и оптимизации (на ангельском)
  • Куча других блогов (на ангельском)
  • Большой FAQ по C++ (на ангельском)
  • Видео с CppCon (на ангельском)


Софт и библиотеки

Q: Я готов начать погроммировать! Куда мне писать код?
A: На этапе написания хэллоуворлдов можно не ебаться с установкой софта, а использовать онлайн-компиляторы: раз, два, три, четыре. Для работы над более серьезными вещами удобнее всего установить какую-нибудь IDE. Ниже приведены несколько хороших вариантов:


Платформа Название Описание Ссылка
Windows Microsoft™ Visual Studio® Общепризнанно самая продвинутая и удобная IDE, не имеющая равных по части автодополнения и возможностей отладчика. По ссылкам справа можно скачать бесплатную редакцию последнего выпуска (2015 Community Edition). Кроме того, существуют редакции с расширенными возможностями (Professional и Enterprise). Они стоят сотни денег, но если ты студент вуза, подписанного на Dreamspark Premium, то ты можешь получить их безвоздмездно (то есть даром). Многим новичкам интерфейс студии кажется чересчур сложным, так что обязательно прочти этот гайд, если у тебя возникают проблемы с компиляцией хэллоуворда https://goo.gl/qgAAc6 (русская версия) или
https://goo.gl/WIPW9L (ангельская версия)
Все CodeLite Простая, легковесная, кроссплатформенная, швабодная IDE. Менее навороченная, чем студия, но среди бесплатных вне конкуренции. Вероятно, это наилучший вариант для новичка с *nix. Под Windows же требует чуть больше ебли с установкой компилятора MinGW/LLVM http://codelite.org/,
"sudo aptitude install codelite codelite-plugins"
для установки под *nix
Все CLion IDE, призванная похоронить Visual Studio пока не особо получается. Она стоит денег, но можно украсть почти не протухшую версию на торрентах или получить бесплатную лицензию на год по скану студбилета, если ты студент. Удобные свистелки и перделки присутствуют. Тормоза и баги присутствуют. Кросплатформенность присутствует https://www.jetbrains.com/clion

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

Разумеется, установка IDE вовсе не обязательна. Ты можешь использовать текстовый редактор в связке с каким-нибудь компилятором, выбросить мышку, отрастить бороду и примкнуть к Церкви Святого Столлмана. Но лучше тогда сразу отправляйся в тред сишников, если не хочешь быть обоссанным другими сектантами за использование б-гомерзкого C++.

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

  • Статический анализатор, который умеет находить в коде ошибки и неоптимальные места. Швабодный. Есть плагин для Visual Studio
  • Более навороченный, но коммерческий аналог
  • Встроенный в clang статический анализатор
  • Детектор утечек для Visual Studio. Предельно прост в прикручивании
  • На порядок более мощная и сложная утилита для *nix, служащая тем же целям
  • Гугловские утилиты для контроля корректности кода
  • Гугловский фреймворк для автоматизации тестирования

Также не стоит забывать о том, что правильные посоны экономят свое время и нервы, используя мегагодные git и cmake во всех проектах.

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

  • boost

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

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

    Литература:


    Автор(ы) Название Год Ссылка
    Ариндам Мукерджи 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.х, полной обратной совместимости между ними нет как в пистоне, ага.

    Литература:


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

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

    Несколько специализированных библиотек для часто встречающихся задач. Все — маленькие, быстрые и простые в освоении:

    • libcurl - сишная библиотека для работы с сетью (существует также curlpp - крестовая обертка для нее, но использовать ее не стоит, ибо разработка заброшена еще в 2009 году)
    • SFML - работа с графикой и аудио
    • FLTK - графические интерфейсы

    И еще куча библиотек на любой вкус.


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


#2 #726674
Где шапка-то?
#3 #726679
посоветуйте годную ide для c/c++ под окна, а то visual studio ставит столько говна, что при переходе на новую версию приходится форматировать диск и ставить заново ос, что сильно заебывает
#4 #726682
>>726679

>visual studio


При установке тебе дается выбор, что нужно ставить, а что нет. Разве ты там покликать стрелочкой мышки не можешь, братишка?
>>726692>>726693
#5 #726692
>>726682
Двачую.

Но вообще да, она не дает выбрать, на какой диск ее ставить, например. Поэтому становится не очень комфортно, когда нужно поставить с Clang'ом и Android NDK в сумме овер 10 гигабайт на пекарню с SSD.
#6 #726693
>>726682
я не о том, что ставится столько ненужных sdk, я о том, что даже если ставить только C++ без всякого говна, то все равно при удалении останется столько говна вроде фреймворков, sql, и.т.д даже если я их не ставил, поэтому ищу годную иде без мусора
#7 #726778
>>726679
для десктопных приложений - qt creator
для embedded - eclipse
>>726875>>727450
#8 #726792
ОП не листва! Как он смел создавать треды? Нелиства, вкусившая женского тепла, не имеет права называться плюсовиком в частности и программистом в целом. Все треды нелегитимны.
>>726819>>727025
#9 #726819
>>726792
А как же Скотт? Женатый же человек. Хотя он Персефону больше любил, чем жену, судя по количеству их упоминаний в книгах, лол.
#10 #726838
>>726671 (OP)
А Алиса кодит на жабе?
>>726864
822 Кб, 961x539
#11 #726864
>>726838
Еще бы.
#12 #726875
>>726778
а как же clion?
>>726879>>726880
#13 #726879
>>726875
по-моему, не взлетело. хотя другие ide у них охуенные
#14 #726880
>>726875
Платно же
#15 #726881
>>726671 (OP)

>Но бате впредь не жалуйтесь, прошу...


Что было?
>>727009
#16 #726883
Should that evening inspiration gun
It was regurgitate krestoblyadsky verse,
But it scared away the timid musical friend,
My rhymes suddenly having visited the temple.

Oh woe is me! Desire enveloped,
Post a battle can not feminine warmth,
Hoping that have time to re-rolling,
He left to rust in the corner of a lyre.

We indulge in caresses before dawn,
And I'm in the open arms of the young fast asleep,
When I burst into the twilight office
Lord of spirits, my father Baal.

Tossing a curse for curse,
With silk satin, he pulled me,
And he cried, splashing saliva Dress:
"WHY ARE YOU LIED THAT thread rolling stone? !!"

From the eerie cries sleepy stupor,
Fleeing father's blows,
Pulverize and naked, his hand covering her nakedness,
I jumped out the window and was gone.

Bratishki! Please! Have mercy!
for hundreds of caps write poems,
And no - I have all the trade obossyte,
But do not complain Bata continue, please ...
#16 #726883
Should that evening inspiration gun
It was regurgitate krestoblyadsky verse,
But it scared away the timid musical friend,
My rhymes suddenly having visited the temple.

Oh woe is me! Desire enveloped,
Post a battle can not feminine warmth,
Hoping that have time to re-rolling,
He left to rust in the corner of a lyre.

We indulge in caresses before dawn,
And I'm in the open arms of the young fast asleep,
When I burst into the twilight office
Lord of spirits, my father Baal.

Tossing a curse for curse,
With silk satin, he pulled me,
And he cried, splashing saliva Dress:
"WHY ARE YOU LIED THAT thread rolling stone? !!"

From the eerie cries sleepy stupor,
Fleeing father's blows,
Pulverize and naked, his hand covering her nakedness,
I jumped out the window and was gone.

Bratishki! Please! Have mercy!
for hundreds of caps write poems,
And no - I have all the trade obossyte,
But do not complain Bata continue, please ...
>>726884
#17 #726884
>>726883
Kohl Korutin?
>>726886
#18 #726886
>>726884
krestoblyadsky verse
#19 #726949

> шапки нет


Ну что за идиот
>>726978
#20 #726978
>>726949
Ещё и не листва. Что такие забыли в программаче?
>>726987>>727025
#21 #726987
>>726978
А если меня только куны жахали в жопу и в рот, как и я их, могу я еще претендовать на право быть программистом или тоже уже нет?
>>727078
#22 #727009
#23 #727013
std::cout vs printf
>>727015>>727038
113 Кб, 902x637
#24 #727015
>>727017>>727019
#25 #727017
>>727015
Я тебя не понял
#26 #727019
>>727015
А есть тот тред сохраненный?
#27 #727025
>>726792
>>726978
"Если в стихотворении Твардовского сказано: „Я убит подо Ржевом“, — едва ли стоит предполагать, что я и поэт Александр Трифонович Твардовский — одно лицо. Часто соотношение между автором и субъектом не столь очевидно. Так, известно, что ранние стихи Анны Ахматовой, в которых героиня жалуется на жестокое обращение мужа, подпортили репутацию ее настоящему мужу — поэту Николаю Гумилеву".
#28 #727037
Посоны, а есть возможность как-нибудь заставить C4Droid работать с мэйкфайлами? Очень хотет иметь возможность собирать проекты под андроидом, но голым gcc из C4Droid это только с хэллоувордами реально.
>>727274
#29 #727038
>>727013
Если пишешь программу на C++, то юзаешь std::cout. Если пишешь на C, то printf.
#30 #727040
>>727038
Почему бы на плюсах не использовать printf?
#31 #727042
>>727040
Бьерн не велит.
>>727055
#32 #727055
>>727042
А если аргументировать нормально, а не потому, что так сказал старый бомж?
>>727058>>727123
#33 #727058
>>727055
Тебе надо вывести int a, string s и объект xxx класса YourMomma. Код на C++:

std::cout << a;
std::cout << s;
std::cout << xxx;

Код на C:

printf ("%d", a);
printf ("%s", s.c_str ());
velosipedMommaPrint (xxx);
#34 #727078
>>726987
С кунами можно. Это не считается. Главное, чтобы не тян.
#35 #727079
>>727040
Ты сам-то юзал этот printf? Если допустишь ошибку в формате, узнаешь об этом только в рантайме
#36 #727122
>>727058
Ты поехавший?
printf("%d %s", a, s.c_str());
#38 #727126
>>727123
И зачем ты это скинул? Я говорю только о cout и printf
#40 #727177
>>727038
Догматизм такой догматизм.
#41 #727182
>>727175
Только зачем putc, лутше уж printf("%x")
#42 #727183
>>727079
Нормальные компиляторы уже много лет как умеют предупреждать о несоответствии аргументов форматной строке.
>>727186
#43 #727186
>>727183
Это все ненадежно. Вам дали систему типов - пользуйся. Не хочу. Хочу язык си.
>>727206
#44 #727192
>>727079
Я его постоянно юзаю
#45 #727206
>>727186
Вообще, ostream плох тем, что он очень многословен. Сама по себе идея плейсхолдеров в строке для параметров очень классная и было бы охуенно, если бы была нативная поддержка такого средства в языке. Но пока этого нет. По сути, статический анализ в этом плане делает то же, что делал бы компилятор. Но это не отменяет того, что лучше бы это было реализовано в языке.
>>727289
#46 #727274
>>727037
AIDE, terminal IDE - у них внутре встроенные gcc и javac, есть возможность собирать apk. Только terminal IDE давно не обновлялся, но его исходники доступны, конпелятор там обновить несложно (выдрать из того же AIDE, например).
#47 #727276
>>726679
Code::blocks
>>727615
#48 #727289
>>727206
Как я понимаю, ты имеешь в виду, что ostream это часть STL, и это хуже, чем если бы ostream был реализован прямо в языке. А чем лучше то?
>>727366
#49 #727293
>>727122
Ну а объект xxx ты все равно не выведешь через printf. Только если отдельно поля.
>>727448
#50 #727366
>>727289
Было бы лучше, если бы была интерполяция строк прямо в языке. С предупреждениями и ошибками. Т.е. то, что делают статические анализаторы
#51 #727448
>>727293
Как и в варианте из STL собственно.
>>727564
#52 #727450
>>726778
удвою этого. но eclipse на шину встает только с молитвами и ритуалами
#53 #727454
Знаю что вопрос крайне тупой, но спрошу.
Я пересел на линукс 1 раз, сделал простенький файл, допустим, test.cpp и тут встал вопрос, а какое расширение делать у скомпилированного файла?
>>727456
#54 #727456
>>727454
в линуксе не критичны расширения.. делай без расширения
>>727457>>727465
#55 #727457
>>727456
А стандарта никакого нет?
>>727470
#56 #727465
>>727456
clang тебя обоссыт за такое.
>>727498
#57 #727470
>>727457
Стандарт – есть, текстового названия у бинарного расширения нету.
>>727498
#58 #727498
>>727465
кланг не имеет отношения к линуксу никакого
>>727470
удвояю
#59 #727564
>>727448
Ну ведь можно создать дружественную функцию для данного класса, чтобы помещать его прямо в поток std::cout.
>>727575>>727834
#60 #727575
>>727564
Вот именно – без доп. усилий ты ни там ни там нихуя не сделаешь.
159 Кб, 869x1776
#61 #727608
Зачем тут нужно приведение к указателю и сразу же разыменовывание? Почему нельзя просто типы привести? Или это какой то трюк со скоростью вычислений?
#62 #727613
>>727608
Где тут? На твоем пике? Там два куска говнокода, один другого хуже.
>>727619
#63 #727615
>>727276
фу блять нахуй, лучше тогда в саблайме кодить
>>727620
#64 #727619
>>727613
Слева. Там быстрый обратный корень же.
>>727621
#65 #727620
>>727615
Чем не угодил?
#66 #727621
>>727619
И правда. То то мне это магическое число знакомым показалось.
75 Кб, 686x346
#67 #727625
Аноны, подскажите что(и почему) у меня происходит на 132 итерации и далее)? В чем ошибка?

http://pastebin.com/WEHEF0GF
#68 #727631
>>727608
При приведении типов будет отброшена целая часть. А здесь просто память интерпретируется по-другому. http://ideone.com/II6CI7
>>731310
#69 #727680
>>727608
Это, между прочим, мутная довольно тема, гугли strict aliasing срач
>>727683
#70 #727683
>>727680
Ебаный стыд.
stl allocator #71 #727716
Програмач! Помогите понять суть методов аллокатора! Задание состоит в написании аллокатора (stl) который аллоцирует в фиксированный блок памяти. Препод сказал можно блок взять как статический вектор.

Вот я не пойму, что должен делать deallocate. Он не должен деструктить объекты, но должен освобождать память. Должны ли до этого эти объекты деструктированы?
Если да, то я просто удаляю потом объекты из вектора? Если нет, то я должен эту память как-то разметить как свободную, но я хз как это сделать кроме как написать в них nullptr. Но тогда к ним доступа уже не будет.

Чет хз. Помогите, пожалуйста!
>>727765
359 Кб, 690x317
#72 #727722
А vim+YMC настраивал кто-нибудь? Есть короткий и гарантированно работающий для с++14/stl .ycm_conf.py? В основном плагин для крестов, а настраивается для этого языка сложнее всего.
#73 #727765
>>727716

> Должны ли до этого эти объекты деструктированы


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

> эту память как-то разметить как свободную


Ты должен разметить как свободную и таким образом чтобы ее можно было потом использовать для создания других объектов.
Можешь почитать александреску, там в самом начале третья или четвертая глава, он пишет аллокатор. Тебе такую хуйню как у него городить не нужно, так как я понимаю у тебя особых требований к аллокатору нет (он пишет эффективный аллокатор для небольших объектов), но общие идеи у александреску почерпнуть можно, конкретно в той главе, тему пердолинга с шаблонами не стоит вскрывать.
>>727799
#74 #727799
>>727765
Спасибо.
Ща попробую почитать. Но суть в том что если я эту память освобожу, я даже хз как сделать так, чтобы у меня именно туда можно было записывать потом. Это видимо надо в allocate сделать какой то поиск( но я до сих пор хз как ее тогда обозначить, что она свободная), либо тупо в конец вставлять, но тогда будет фрагментация.
#75 #727834
>>727564
Ну, с этим я согласен.
#76 #727856
можно ли lower_bound использовать с time_t?
>>727966
#77 #727878
>>727608
Правильно делать через memcpy (на крайний случай через union), а не как на пике.
>>728386>>731310
#78 #727895
Если я освоил "Принципы..." Страуструпа, выполнил все задания оттуда, я могу проситься куда-нибудь работать хотя бы за еду?
>>727972>>728384
#79 #727909
за сколько долбоеб может выучить с++ на достаточном для работы уровне?
>>727971>>728381
29 Кб, 300x300
#80 #727950

>PCH


КТО БЛЯДЬ ПРИДУМАЛ ЭТУ ХУЙНЮ, Я ЦЕЛЫЙ ЧАС ГУГЛ БОРОЗДИЛ, ФОРУМЫ БЛЯДЬ, ЧТОБЫ ПЕРЕКЛЮЧИТЬ ОДНУ ХУИТКУ, ПОЧЕМУ ОНО ВООБЩЕ ВКЛЮЧЕНО ПО УМОЛЧАНИЮ
>>727968
#81 #727966
>>727856
Емнип, time_t не предоставляет легальных итераторов, так что нет, наверное. Фактически lower_bound будет работать с любой парой ForwardIterator, между которыми находится отсортированный диапазон, так что можешь написать свой костылик без особых проблем.
#82 #727968
>>727950
может тебе ещё библиотеку vk_api в С++ 21 впилить? вали с моего лампового
#83 #727971
>>727909
Примерно за год с уровня среднестатистического CS-студента, сдавшего первый курс, до джуна на должность, не связанную с жестким rocket science. Но вообще все очень зависит от твоего энтузиазма, наличия свободного времени, условий конкретной вакансии etc.
>>727980>>727984
#84 #727972
>>727895
На младшего тестировщика энивей подойдешь, а дальше можно разбираться постепенно.
#85 #727979
Нужно добавить в шапку информацию о NuGet, господа фанаты студии. Эта ебала, оказывается, позволяет в джва клика подключить практически любую известную либу, я аж кончил.
#86 #727980
>>727971
А что вообще на джуна нужно знать, есть какой-то усредненный список требований?
>>727992>>728005
#87 #727981
>>726671 (OP)
а что значит вопросы по синтаксису? ниахота нахуй быть сходу посланым
>>727983
#88 #727983
>>727981

>ниахота нахуй быть сходу посланым


и ты пришел на 2ч.. гений
>>727985
#89 #727984
>>727971
Так у каждой конторы свои же требования, всем хуй угодишь.
Там MFC надо, а там на 03 стандарте писать; тут на бусте хуярить - а тут POSIX знай.
И чсх такой разброс по требованиям именно у крестов наблюдаю.
Или же не обязательно чтобы все 100% совпадало с требованиями? Все-таки, освоить быстро можно что требуется.
>>727992
#90 #727985
>>727983
ну и хуй в вами
>>727986
#91 #727986
>>727985
нет, я в предвкушении уже.. давай выливай чё там у тя?
хотя с /dev/video0 меня треда 4 просто дропали а потом отхуесосили и вот я каюсь
>>727993
#92 #727992
>>727980
Чисто для крестового джуна я не видел универсального списка, правильно анон грит, все очень индивидуально. А вообще - https://www.google.com/about/careers/students/guide-to-technical-development.html . Соответственно, если у тебя говноконтора в мухосрани делай поправку в сторону уменьшения, но не надейся, что будет прямо в разы лайтовей.
>>727984
Ну смари, всем похуй на самом деле, что ты знаешь, важно, чтобы ты обязанности выполнять начал как можно скорее. Если сумеешь понравиться и убедить, что вот прям через месяц все будешь знать, то почему бы и нет, в любом случае никто не вкатывается в первые же дни.
>>727995>>727997
#93 #727993
>>727986
упражнение из кинги Бьерна.Код для поиска повторяющихся слов и написания предложения The cat cat jump.Как работает код с одним словом я понял,но порвался на написании предложении.правильно ли мое утверждение ,что в случае с The cat cat jump тип string прогоняет каждое слово после пробела по очереди?
>>728002
#94 #727995
>>727992

>если у тебя говноконтора в мухосрани


В моей мухосрани кресты никому не нужны, максимум быдлокодеры на пхп.
#95 #727997
>>727992
А вообще, как оно, блядь? Берут джуна, и сразу же ему говорят - вот это чтобы через неделю было нахуй
А как же изучить ту кодобазу, которая есть, дать время на "акклиматизацию", так сказать?
>>728003>>728007
#96 #728000
Алсо, даже на джуновакансии требуют опыт коммерческой разработки, это как вообще понимать? Откуда он у джуна? Как обыграть это нормально для себя?
#97 #728002
>>727993
вот string это киллеробвес массива char.
пробел от другого символа в нем ничем не отличается.
можешь код в ideone залить я поскролю т.к. пока ты сказал что парсинг стринг идет, а как и что не видя код я не могу сказать
>>728011
#98 #728003
>>727997

>А как же изучить ту кодобазу, которая есть, дать время на "акклиматизацию", так сказать


А как ты собираешься ее изучать, распечатать и читать что ли?

>Алсо, даже на джуновакансии требуют опыт коммерческой разработки, это как вообще понимать?


Это значит, что хотят мидла на деньги джуна.
>>728006
#99 #728005
>>727980
Примерно то, что тебе дадут за 5 лет профильного образования.
#100 #728006
>>728003
Понятно, я так и думал.
Одни ебаные евреи вокруг.
>>728003

>читать что ли


Нет, сразу сделать заебись.
#101 #728007
>>727997
В олдовых конторах обычно приставляют джуна к злому и опытному дядьке, который такому повороту не очень рад. Дальше примерно как в армии - зависит от дядьки и уровня тупости джуна. Будешь бегать за пивом, выполнять грязную работу типа написания тестов или гуя, дядька будет смотреть твой код и говорить, почему он говно, и как надо было сделать. Постепенно градус нарастает, тебе начинают давать несложные независимые задачи, и ты вкатываешься.

В более современных местах, как правило, ты просто включаешься в команду из 3-7 человек, которые работают над какой-то фичей. На первом же МИТИНГЕ вы обсуждаете, какую задачу было бы лучше всего тебе поручить для начала, чего ты умеешь делать, ну и все такое. Дядьку тоже могут назначить, но скорее в форме обращения к нему, если что-то непонятно.
#103 #728018
>>728011
разделение на проблы делает cin
строки тут не причем
>>728027
#104 #728027
>>728018
>>728018
ага.понял.так а какая логика действий этого кода в случае с предложением The cat cat jump?каком месте кода первое слово cat уже присваивает имя previous ,а второе слово cat еще current?
>>728031
1 Кб, 207x22
1 Кб, 169x27
#105 #728031
>>728027

1пик присвоение карент (самое начало цикла)
2 пик присваивает превьюшку(самый конец цикла)
>>728040
#106 #728040
>>728031
то есть cin при написании первого слова cat и нажатии пробела пускает его вниз по коду,оно становится previous пока мы отжимали пробел и писали второй cat,который после нажатия пробела становится curent -идет по коду и сталкивается с совпадением первого слова cat?
>>728042
#107 #728042
>>728040
вполне для первого часа в C++ норм обьяснение я так думаю, наверное, потому-что
>>728047
#108 #728047
>>728042
да,я пишу как аутист, занимаюсь не первый час а 2-ой день.
Спасибо за пояснения.
21 Кб, 686x356
Лучше поздно, чем никогда. #109 #728155
#110 #728167
Аноны, допустим я освоил книгу липпмаана, есть смысл изучать глубже, или можно 5ачать изучать например java?
#111 #728191
Липпман или Страпструп? Начал второго, как-то сложновато идет, хотя это я отбитый немного, 3 главу потихоньку пытаюсь пропихнуть в себя. Попробовал Липпмана - там вообще всё навыворот, ебать, я вообще не понимаю код, что это такое? Там вообще все по-другому!
#112 #728193
>>728191
Иди в путягу. И за станок. Стране нужны слесаря.
>>728194
#113 #728194
>>728193
Я для себя пока что.
>>728196
#114 #728196
>>728194
А для себя поставь танки или дотан. Ну или можешь с корешами пивандос глушить и ссать по подьездам.
>>728199
#115 #728199
>>728196
За кого ты меня держишь. Бака. Это уже моё дело, что мне делать в моё свободное время.
#116 #728214
>>728191
Все у липмана понятно, это ты просто от рождения работник завода
>>728221
#117 #728221
>>728214
У него код по-другому написан вообще, у меня когнитивный диссонанс случился с этого. Еще и хедер другой. Вот эти его std::cout вместо просто cout это издержки хедера?
>>728225
#118 #728225
>>728221
Нет, это как раз нормальный код. А ты привык стрелять себе в ногу, добавляя глобальную using-директиву в хэдеры.
>>728227
#119 #728227
>>728225
Но я не добавляю, кстати. Можешь объяснить че почем? У Страупструпа просто #include "std_lib_facilities.h" и сразу int main() идет. Я видел, как используют using после инклюда, когда гуглил проблему с PCH, но так и не понял, к чему это, а мои поделки работают и без него.
>>728278
#120 #728244
Почему ругается на память?
http://pastebin.com/F1JAcuUJ
>>728251
#121 #728251
>>728244
Например read() не вставляет '0' в конце прочитаного.
>>728252
sage #122 #728252
>>728251

> '0'


'\0' конечно же
>>728257
98 Кб, 678x220
#123 #728254
Помогите, пожалуйста, с этими двумя. Никак не въеду, как определить одновременно с тремя числами, что из них больше, а что еще больше. Остальные хорошо пошли, а над 6 уже реально часа полтора сижу. Я пробовал описать все возможные ситуации, но столкнулся с тем, что допустим могу определить, что из них наименьшее, а что идет следом - никак.
#124 #728256
>>728254
Гугли "сортировка пузырьком".
>>728263
#125 #728257
>>728252
угу, спасибо.
#126 #728262
>>728254
Тут даже сортировки не надо, значения всего три.
>>728263
#127 #728263
>>728256
Я не уверен, что я должен всё это знать на третьей главе, по крайней мере про массивы точно еще не писали.
>>728262
Я тоже так думаю, только конкретное решение никак не выдам. Пойду спать, что ли, вдруг лучше станет.
>>728266>>728271
#128 #728266
>>728263
Есть а, б и с. Если а > б, меняешь их значения местами. Если б > с, меняешь их значения местами. Если новое значение б < нового значения а, меняешь их местами.
>>728269>>728736
#129 #728267
А, еще будь готов к тому, что массивы тут называются векторами. Ну, в оригинале так, по крайней мере.
#130 #728269
>>728266
а std::vector не проще?
>>728270
#131 #728270
>>728269
Он хочет использовать только то, что известно после третьей главы. Так-то он, конечно, мог sort(etot_vector).
>>728272
#132 #728271
>>728263

>Я не уверен, что я должен всё это знать на третьей главе


Тернарные операции проходили? Если да, то используй их
#133 #728272
>>728270
в глаза ебусь не увидел про лабы
#134 #728278
>>728227
Глобальный using в хэдере потенциально может повлиять на код других частей программы. Например, если у тебя в одном хэдере using std::vector, а в другом using folly::vector, то при подключении второго хэдера в одном cpp-файле с первым, его директива перекроет первую, получишь трудноуловимые баги. Поэтому в хэдере надо либо явно все квалифицировать через ::, либо писать локальный using внутри класса/функции.
#135 #728280
Поцаны-пацанчики, хочу прокачать скилы по плюсам, с упором на знание особенностей языка и STL, что-бы когда я освобожусь, ниодин синьор меня не смогу завалить. С большего все задачки у Страуструпа поделал, где еще можно всякого найти.
131 Кб, 1136x655
#136 #728287
Подскажите, почему вектор так себя ведет (только до 4 знаков) и что за ошибка?
>>728294
#137 #728294
>>728287
код если надо
char buf[] = "a\nAB\nabc\nABCD\nabcde\nABCDEF";

const char leksem = "\n";
char
token1 = NULL;
char next_token1 = NULL;

token1 = strtok_s(buf, leksem, &next_token1);
while (token1 != NULL)
{
token1 = strtok_s(NULL, leksem, &next_token1);
vector<char>p(token1, token1 + sizeof(token1) / sizeof(
token1));
cout << " token 1 = " << token1 <<endl;
cout << " p == ";
for (vector<char>::const_iterator cit = p.cbegin(); cit != p.cend(); ++cit)
{
cout << *cit;
}
cout << endl;
>>728296
#138 #728296
>>728294
фикс

[code]
char buf[] = "a\nAB\nabc\nABCD\nabcde\nABCDEF";
const char leksem = "\n";
char
token1 = NULL;
char next_token1 = NULL;
token1 = strtok_s(buf, leksem, &next_token1);
while (token1 != NULL)
{
token1 = strtok_s(NULL, leksem, &next_token1);
vector<char>p(token1, token1 + sizeof(token1) / sizeof(
token1));
cout << " token 1 = " << token1 <<endl;
cout << " p == ";
for (vector<char>::const_iterator cit = p.cbegin(); cit != p.cend(); ++cit)
{
cout << *cit;
}
cout << endl;
[/code]
>>728303
#139 #728302
>>728280
Александреску читай
#140 #728303
>>728296
ideone же.
>>728307
#141 #728307
>>728321
#142 #728321
>>728307
и хули ты функцию не обьявил? где табуляция?
перезаливай по нормальному.. в питон треде убили бы за табуляцию тя нахер
>>728323
#143 #728323
>>728321

>и хули ты функцию не обьявил?


Стрток? Она должна быть в стрингах, не знаю почему компилятор на сайте ее не обрабатывает. На моей vs2013 все ок.
https://msdn.microsoft.com/ru-ru/library/ftsafwz3.aspx

>где табуляция?


Что за табуляция?
31 Кб, 700x235
#144 #728327
>>728323

>Что за табуляция?


\t или кнопка tab
на скрине она сть а в ideone не принёс..
____________________________________________________________
а теперь наводящий вопрос..
что там делает

>return 0;


значение знаешь?
>>728333
10 Кб, 687x62
#145 #728328
>>728323
а скобки зачем тут?
112 Кб, 842x667
#146 #728329
>>728323
и вопрос функции не раскрыт..
2 Кб, 196x29
#147 #728331
>>728323
это блядь что?
крч.. ну тебя нахуй
158 Кб, 1149x790
#148 #728333
>>728327
на скрине она сть а в ideone не принёс..
Держи
http://ideone.com/9UP4sP

>значение знаешь?


Завершение работы функции и возврат нулевого значения.
Суть не в том что ретурн залез в цикл (я его убрал оттуда бтв), а в поведении вектора. Я его неправильно обьявляю, чтоли?
Ошибка, кстати, пропала почему-то.
4 Кб, 277x25
#149 #728337

@
ПРИХОДИШЬ НА 2Ч, ВКАТЫВАЕШЬСЯ В /pr
@
НА /pr ХУЕСОСЯТ МОЛ /dev/videoХ ДЛЯ ДАУНОВ
@
КАЕШЬСЯ
@
ВЫЛАЗИИТ ЭТОТ ВОТ! >>728323 И БЛЯ! ОН ПРОСТО ВЫБЯДНУЛСЯ И БЛЯ! И СЬЕБЁТ!
@
ПИШЕТ ДЕЙСТВИЕ А ПОТОМ ТО-ЖЕ ДЕЙСТВИЕ ПИХАЕТ В ЦИКЛ БЛЯ!
@
НАХЕР ОН РАБОТАЕТ СО СТРОКОЙ В ВЕКТОРЕ!
@
ВОТ НАХЕР ТАК ЖИТЬ?

скажи просто что ты хочешь.. от векторов. а то бляди пиклерейтед это просто пиздец, зачем тебе размер указателя?
>>728343
#150 #728343
>>728337

>скажи просто что ты хочешь от векторов


Должны принимать кусок строки из buf, который находится в token1.

>ПИШЕТ ДЕЙСТВИЕ А ПОТОМ ТО-ЖЕ ДЕЙСТВИЕ ПИХАЕТ В ЦИКЛ БЛЯ!


Надо сделать по-другому? Так сразу и сказал бы.
Чего придираться-то к библиотекам и выделением циклов из одной строчки фигурными скобками, если не в них дело.

>НАХЕР ОН РАБОТАЕТ СО СТРОКОЙ В ВЕКТОРЕ!


Потому что по условию в программе надо использовать вектор, а я не ебу куда его еще можно впихнуть в моей реализации.
>>728347>>728353
#151 #728347
>>728343
я пока о кодстайле тебе говорю.. я не вижу твой код т.к. кровь из глаз заливает их
5 Кб, 380x24
#152 #728353
>>728343
зачем ты из ничего нарезаешь по лексеме?
>>728368>>728372
#153 #728368
>>728353
Потому что в примере на мсдн так указано жи.
Другой вариант:
По историческим причинам (см. время создания Си) у неё там внутри статическая переменная с локальной областью видимости используется для хранения промежуточной позиции в строке (именно поэтому передаётся NULL в качестве индикатора, что продолжать надо с прошлого места)(с)
>>728371>>728372
#154 #728371
>>728368
http://ideone.com/EOh1Ms
надеюсь я тебе помог
>>728380
#155 #728372
>>728368
>>728353
это мой рак, ссоре
#156 #728377
>>728280
ебанись, че правда все упражнения из книги сделал? нах тебе еще что-то тогда нужно, там же дохуя их
#157 #728380
>>728371
Спасибо большое
#158 #728381
>>727909
можно освоить только какое-то подмножество с++, это займет несколько лет
лучше зубри plain c, года за три можно норм научится
#159 #728384
>>727895
дык епт, работки то нету на крестах
>>728385
#160 #728385
>>728384
есть ткт но нужен стаж
#161 #728386
>>727878
нахуя, лол
>>728514
#162 #728473
Eсть метод класса:

YobaPacket MomsQueue::front()
{
ScopedLock lock(mutex_);
return *root_->next; //definitely return copy
}

В коде:
YobaPacket packet = queue_.front();

Вопрос: сначала вернётся копия пакета и потом разлочится мютекс или наоборот?
>>728474>>728559
#163 #728474
>>728473
по логике да
но в локе можно создать тред и тогда нет.
>>728517
#164 #728514
>>728386
Потому что это официальная рекомендация, и компиляторы такую конвертацию понимают.
#165 #728517
>>728474
фикс в конструкторе
#166 #728520
Посоны, подскажите, как сделали такую защиту: стоит чит-программе появиться в панели задач или взять на себя фокус, она закрывается. Даже Hide Toolz, полностью скрывающий процесс, не помогает. При этом если программа скрыта и находится в трее, она не закрывается.
>>728523
#168 #728559
>>728473
1. Вход в front ()
2. Вызов конструктора ScopedLock
2.1 Захват mutex_ внутри конструктора
2.2 Возврат в front ()
3. Копирование *next в регистр/стек, где должно находиться возвращаемое значение
4. Вызов деструктора ScopedLock
4.1 Освобождение mutex_ в деструкторе
4.2 Возврат в front ()
5. RET в объемлющую функцию
>>728672>>729402
#169 #728561
Как в C++ правильно копировать информацию по адресу, возвращенному MapViewOfFile, в структуру? Memcpy не очень хорошая, потому что не позволяет отслеживать ошибку, когда данных для копирования было меньше, чем размер структуры.
>>728575
#170 #728575
>>728561
Ну так проверяй сам.
#171 #728576
Хотя в бусте вроде какое-то говнище было для memory mapped files.
5 Кб, 429x90
#172 #728577
В Qt Creator все нормально с отладкой?
Например, прервавшись подвожу курсор к переменной, он показывал значение.
Когда-то давно. Потом перестал.
Либо ничего не показывал, либо какие-то адреса вместо стоки в QString. Подумал, что что-то поломалось, всякое бывает.
Но сейчас поставил чистенькие Win10, VS2015, CDB x64 из Windows 10 SDK - пикрелейтед курсор не заскринился, но он там.
Даже в Watch не добавляет в этом конкретном случае, а 1 раз добавил строку.
>>728582
#173 #728582
>>728577
Зачем спрашиваешь если сам видишь что и как там?
У них в последнее время вообще какие-то сплошные проблемы возникают – то регрессия в парсинге кода, то это, то ещё что.
>>728590
1 Кб, 308x121
14 Кб, 480x360
#174 #728590
>>728582
Ну может я что-то не то сделал/поставил. Возможно, раньше я юзал MinGW, а с VS он никогда так не умел. Уже не помню, давно это у меня в первый раз поломалось еще на семерке, а потом я забросил Qt. Удивительно, что до сих пор не починили.
А кроме VS, как я понимаю, ничего не смогу использовать, т.к. мне нужен WebEngine.
Еще в watch он добавил через какое-то время, но нельзя регулировать ширину столбцов, так что не понятно какую переменную наблюдаешь.
>>728596
8 Кб, 530x272
#175 #728596
>>728590

> нельзя регулировать ширину столбцов


Разобрался, мож кому пригодится.
На первый взгляд нижние верхние столбцы не связаны, но если порегулировать ширину верхних, то нижние с ними синхронизируются, на какое-то время.
#176 #728614
Для чего пихают unsigned там где и без него можно обойтись?
>>728620
#177 #728620
>>728614
ну вот смотри.. у тебя переполнение char
unsigned
127 + 1 = 128
signed
127 + 1 = -128
#178 #728622
О, поясните за unsigned и signet. Что они делают? Я не понимаю(
>>728629
#179 #728629
>>728622
почитай Страструпа
signed это с отрицательной частью
char -128 ~ 127
unsigned это без неё
char 0 ~ 256
также работает с short int
#180 #728631
>>727608
а мне обьясните за левую функцию
мимо автор правой
>>728935
#181 #728652
Что за ебанутая обнова в студии?
Пишу char(указатель) data = new char[100];
delete data;
И оно сука нормально очищает память. Это законно?
#182 #728656
>>728652
Почему нет? Это UB, оно может и правильно работать, просто никто не гарантирует. Если у тебя CLI то там естественно менеджер памяти сам знает сколько нужно правильно удалить.
>>728661>>728678
#183 #728657
>>728652
Смотри чо умею: char*
Алсо, пройдись дебаггером, ты уверен что прям корректно?
>>728661
#184 #728661
>>728656
>>728657
vld утечек не находит. Они переопределили new и delete.
>>728716
1 Кб, 134x48
#185 #728663
Ну и цвет заебись теперь.
#186 #728672
>>728559
Это сообщение сподвигло меня на гугление того, что такое RET
#187 #728677
Я правильно понимаю, что atoi преобразует string в int, складывая числовое значение каждого символа? Если да, то как этим пользоваться, а если нет, то что мне нужно?
>>728680>>728682
#188 #728678
>>728656
Всегда проигрывал с "delete [] memory". А ведь в malloc и free такой хуйни нет.
#189 #728679
>>728280
Тебе лучше сделать какой нибудь проект, попутно изучая что нибудь еще. Например SQL или многопоточность. Можешь взять примеры отсюда: http://eax.me/programming-language-learning/
6 Кб, 259x222
#190 #728680
>>728677
Я пытаюсь сделать вот это, надеюсь смысл операции понятен.
#191 #728681
>>728680
str1.c_str()
>>728700
#192 #728682
>>728677
Вообще то atoi просто строку преобразует в число напрямую. То есть если у тебя строка str = "123", то atoi(str) вернет число 123 типа int
>>728684
#193 #728683
кто нибудь здесь шарит за то, как сортировать TableView в qml, если модель на с++ ? с помощью QSortFilterProxyModel получилось только отфильтровать вывод в TableView.
#194 #728684
>>728682
Лучше сказать str = "123qwe123" вернет 123.
А "qwe123" - 0
>>728689
#195 #728685
>>728680
Ну если ты вводишь конкретно числа, сделай просто cin >> a >> b >> c. Если тебе принципиально нужна строка, то a = atoi(str1.c_str())
>>728700
#196 #728688
>>728680
Ты питонист?
Очень напомнило num=int(input())
>>728701
#197 #728689
>>728684
Ну да, так более удачно показана работа atoi
11 Кб, 426x329
#198 #728700
>>728681
>>728685
Спасибо. Попробовал a = atoi(str1.c_str()), но у меня все распидорасило.
Суть в том, что вводятся три string'а, нужно выразить их в числовом значении, переставить местами по возрастанию и вернуть в исходное состояние. Ну, по крайней мере это у меня такой подход к 7 задаче отсюда >>728254, потому что напрямую со стрингами работать не хочет.
#199 #728701
>>728688
Нет, лол. Немного хтмл и жс пробовал и паскаль.
#200 #728703
>>728652
Чтобы ответить на этот вопрос стоит знать, почему вообще появилась форма "delete [] pointer".
Ведь раньше использовали только malloc и free и менеджер памяти определяет границы выделенного блока по начальному адресу.

В C++ так сделать нельзя, потому что помимо обычного освобождения памяти, нужно также вызвать деструкторы всех объектов. И проблема в том, что не всегда можно на этапе компиляции сказать сколько объектов в этом массиве. Например объект массива может быть приведен к объекту обычного указателя. Или, например, операндом delete-expression может выступать указатель на базовый класс объекта из массива. В первом случае можно было бы выкрутиться, спросив размер блока у менеджера памяти, во втором случае можно было бы сохранять в менеджере памяти еще и размер истинного объекта(или их кол-во). Но тогда нужно было бы писать кастомный менеджер памяти и терялась бы совместимость с C. В итоге решили, мол нахуй нужно лучше через 20 лет запилим std::array и на том и порешали.
>>728708
#201 #728705
>>728700
Ну хуй знает.
http://ideone.com/fcFrh4
>>728710>>728713
#202 #728707
>>728700
а ты #include<string> сделал? Просто на скрине не увидел
#203 #728708
>>728703
И поэтому new [] генерит не просто массив объектов, а массив с -1 элементом, в котором хранится его размер. А затем delete[] лезет в этот -1 элемент и вызывает деструкторы.

Кстати, угадаете, что будет, если вызвать delete [] на указателе на базовый класс?
>>728728
#204 #728710
>>728705
Как у тебя компилится, если нет #include<cstdlib>?
#205 #728711
Лабодауны, свалите нахуй отсюдова.
#206 #728713
>>728705
Не, не, это не то. Вон там задача же >>728254. Мне нужно перевести string в int, поменять их местами по возрастанию, после чего вернуть из int обратно в string и вывести.
#207 #728714
>>728713
ПОШЕЛ НАХУЙ МРАЗЬ
>>728718
#208 #728715
>>728713
Ну так тут сортировка в лексикографическом порядке.
>>728717>>728718
#209 #728716
>>728661
Пруфы? Да ну не может такого быть, пусть они перепилили new, но vld-то похуй вообще, он переопределяет его все равно .
>>728721>>728724
#210 #728717
>>728715
нехуй ему помогать, пускай доки читает.
#211 #728718
>>728714
Можно подумать ты чем-то важным занимаешься тут.
>>728715
В книге про сортировки еще ничего не было.
>>728722
#212 #728721
>>728716
Там выделяется тривиальный тип, поэтому компилятор не вставляет дополнительный элемент с размером массива.
>>728729
#213 #728722
>>728718
Ну уж поважнее, чем тем, что ты делаешь.
12 Кб, 299x464
#214 #728724
>>728716
Placement new нахерачили.
Библиотека vcruntime_new.
>>728731>>728740
#215 #728725
>>728254
Генйи врывается в тред. Короче складываешь числа, находишь максимальный, минимальный, средний находишь как разность суммы и маха и мина.
>>728736
#216 #728728
>>728708
Кусок памяти останется не освобожденной?
#217 #728729
>>728721
По идее vld же отдельно делает проброс new и new []. Откуда ему знать, что там по факту компилятор сгенерил? Он должен увидеть несоответствие своих оберток new [] и скалярного delete и вскукарекнуть. Надо разобраться с этой ситуацией, в общем, а то будет потом, скажем, gcc другой код генерить, и пиздарики всем надеждам на отсутствие утечек.
>>728732
#218 #728730
>>728700
Зачем тебе переводить в int? std::string можно сравнивать между собой.
>>728736
#219 #728731
>>728724
щито?
#220 #728732
>>728729
Ты не отличаешь new expression от operator new. Первое вызывает оператор и в случае массива генерит дополнительный элемент.
>>728744
#221 #728733
Как учить С++ если цель только олимпиадки?
#222 #728736
>>728730
Можно сравнивать, но имея три элемента, нужно еще и переставлять их местами. Я по аналогии с шестой задачей пытаюсь сделать.
>>728725
Да 6 я уже сделал, лол. Спасибо, кстати, >>728266
>>728747
#223 #728737
>>728733
Зачем тебе C++, если ты занимаешься олимпиадками. Лучше какой нибудь процедурный язык, например C
>>728759
#224 #728739
>>728733
А зачем кресты для олимпиадок? Учи гольный С.
>>728742>>728759
#225 #728740
>>728724
Я, возможно, туплю сегодня вечером, но не понимаю проблемы. Что поменялось, и как это повлияло на vld? Размещающие операции там и раньше были, не?
>>728755
#226 #728742
>>728739
А лучше джаву.
#227 #728744
>>728732
Блядь, вот это я тупанул. Срамота-то какая, пиздец. Чаю тебе, братишка.
#228 #728746
>>728713
Не придумывай велосипед. Там в тексте главы есть пример, где наглядно видно, что строки точно так же сравниваются в лексикографическом порядке, как числа, то есть там, где я тебе писал а > b, b > c, a > b эти самые a, b и c меняются с целых чисел на строки и всё. Просто в решении той задачи поменяй int на string и всё.
>>728753
#229 #728747
>>728736

> Я по аналогии с шестой задачей пытаюсь сделать


Так там абсолютно все тоже самое, тебе только тип в объявлении переменных нужно сменить с int на std::string и все. Если ты все правильно написал в 6 задании то ничего больше вообще менять не надо. Божественная перегрузка функций и операторов все сделает за тебя.
>>728753
#230 #728753
>>728746
>>728747
Я, похоже, велосипедным способом переставлял.
http://ideone.com/fcFrh4
>>728754
#231 #728754
#232 #728755
>>728740

>Что поменялось


Цвет и возможность удалить new[] обычным delete.

>и как это повлияло на vld


теперь я не могу в debug найти где у меня утечка. Студия выбрасывает исключение и стопает работу vld.

>Размещающие операции там и раньше были, не?


хз. Но насильно их использовать до второго обновления никто не заставлял.
#233 #728756
>>728754
Что это за говно?
#234 #728757
>>728754

> Я, похоже, велосипедным способом переставлял.


Сука, как же я проиграл.
#235 #728758
>>728754
Блядь, сука, ебануться, пиздец, блядь, нахуй, ебать. Ты, блядь не мог просто ввести ещё одну переменную "хуй" и делать так: хуй = а, а = б, б = хуй? Что это за пиздец? Ну молодца, додумался до такого, я бы в жизни такое не придумал, ебануться просто нахуй, блядь, я животное от тебя, пиздец, блядь, нахуй.
>>728764
#236 #728759
>>728737
>>728739
На сайтах с задачками видел, что основная часть участников решает на С++
#237 #728761
Олимпиадники, свалите в свой тред.
#238 #728764
>>728758
Можно и так, только с суммой и разностью.
>>728769>>728770
#239 #728769
>>728764
Да, точно, немного остыл, теперь вижу, что это банально и я сам как-то так сделал для эксперимента. Только с целыми его вариант не сработает, кстати.
#240 #728770
>>728764
Вообще такое с xor делают, с суммой и разностью переполнение, а с делением вообще хуйня должна получатся на большинстве входных данных из-за целочисельного деления.
>>728799
#241 #728799
>>728770
Чот не могу сходу с ксором написать.
>>728812
#242 #728812
>>728799
Классика же, иногда на собеседованиях спрашивают, непонятно только нахуя нормальному человеку такое знать. http://ideone.com/FGrBhF
#243 #728827
>>728812
Я додумался, круги эйлера спасли.
#244 #728877
>>728812
Хуле так длинно? a ^= b ^= a ^= b;
25 Кб, 958x392
#246 #728910
>>728900
Блять, проебалась первая ссылка.
Вставлю пикчей.
>>728920
#247 #728920
>>728910
мамкины оптимизаторы SOSNOOLEY
#248 #728935
>>728631
Быстрый обратный квадратный корень.
Использовался в квейке 3 для расчёта освещения.
>>728950
#249 #728950
>>728935
А в чем профит, кстати? Из того, что я выяснил, выходит, что это одна итерация Ньютона. Кармак велосипед изобрел штоле, или там есть какие-то другие идеи?
>>728957
#250 #728957
>>728950

> А в чем профит, кстати


В скорости. В то время не было ещё йоба-шейдеров как сейчас. Приходилось считать на ЦПУ.

> Кармак велосипед изобрел штоле


Алгоритм был придумал ещё до него, но он видимо тоже смог реализовать его.
#251 #729041
Здравствуйте, меня зовут Кирилл…
Плюсов и навыков рисования хватит, чтобы сделать своих эльфов и чтоб пол экрана не было видно, если в глаз попадут?
>>729056
#252 #729056
>>729041
Возьми что попроще, но вообще тебе в /gd
>>729074>>729166
#253 #729074
>>729056
Ну нормальные игры же на плюсах и подобном пишут?
>>729111
#254 #729111
>>729074
Игры пишут на движках, которые, в свою очередь, могут быть написаны на крестах, но писать движок с нуля - это значить в 90% случаев движком и ограничиться.
>>729354
#255 #729166
>>729056
>>729056
Гоните ссаными тряпками зелёного.
#256 #729191
Всем привет. Необходима ваша помощь. Не знаю, где найти алгоритмы rand и srand. То есть принцип из работы, формулы, по которым они находят число. Как добыть такую информацию?
>>729215>>729218
#257 #729215
>>729191
Полностью зависит от реализации компилятора. Общие идеи:
https://en.wikipedia.org/wiki/Linear_congruential_generator
https://en.wikipedia.org/wiki/Linear_feedback_shift_register
https://en.wikipedia.org/wiki/Mersenne_Twister

В С судя по всему два варианта (из glibc), не знаю какой именно когда используется - возможно по вызова rand() только первый (простой) используется, а второй нужно как-то подругому вызывать:
https://sourceware.org/git/?p=glibc.git;a=blob;f=stdlib/rand_r.c;h=0611bac0f367c67b565e3e8e13f00b76ddde112f;hb=HEAD
https://sourceware.org/git/?p=glibc.git;a=blob;f=stdlib/random_r.c;h=3a4a77901b4e005830685524873d2c2c85ac354e;hb=HEAD

В плюсах все немного сложнее, так как с 11 версии добавили <random> с кучей разных генераторов и rand() должен их использовать. Лень рыться в плюсовом коде - можешь сам посмотреть в gcc если нужна именно плюсовая реализация.
#258 #729218
>>729191
Смотри в stdlib.h
#259 #729222
понечки
#260 #729354
>>729111
Да ну, те же каклы свой x-ray писали с нуля, и сталкер збс получился, особенно для своего времени.
#261 #729386
>>729354
Банально потому что:
а) что в ААА проектах это дешевле, а так же нужна длительная поддержка, запил и выпил фич и багов по любому пуку;
б) в то время как вышел первый сталкер нормальных альтернатив и не было.
#262 #729393
>>729354
А теперь найди первые релизные билды (особенно чистого неба) и поиграй в них. Кол-во багов что по тем, что по текущим временам там было неебическое.
#263 #729402
>>728559
то есть с очередью будет всё ок, можно спокойно в несколько стволов мамашку долбить?
#264 #729405
>>729354
В AAA практически под каждую игру движок перерабатывается так сильно, что от старого ничего не остается, часто с нуля и пишут. Тем более, что писать логику/рендер сразу под конкретную игру гораздо проще, чем универсальный "движок", и для команды профи за полгода написать базу игры с нуля - задача не слишком сложная. А вот внеигровой код: редакторы, скрипты, утилиты всякие - это бывает не меняется годами.
20 Кб, 698x318
#265 #729459
>>726671 (OP)
Сасачь, помоги:

Натолкните на мысль, как это решить? С обычными, прямыми линиями, разделяющими четверти, я понимаю как вычислить, а вот, если координатная плоскость повёрнута на 45*, то что делать?
#266 #729468
>>729459
поверни обратно
#267 #729469
>>729472
#268 #729472
>>729469
А можешь поподробнее, пожвлуйста? Я не гуру всё-таки.
>>729515
#269 #729475
>>729459
Проверяй выше или ниже точка чем некоторая прямая с помощью уравнения прямой.
Или поверни систему координат и решай также как знаешь уже.
>>729479
#270 #729479
>>729475

> Или поверни систему координат и решай также как знаешь уже.


В том-то и дело, что надо именно так. Если поверну, то это уже другая задача будет.

А как такую прямую задать?
>>729485>>729491
#271 #729485
>>729479
Ты анекдот про то как кипятить воду в чайнике не знаешь что ли?
>>729487
#272 #729487
>>729485
Ну что ты тралишь? Я бы не спрашивал совета, если бы знал, как сделать...
#273 #729491
>>729479
Ищи что такое atan2(дает угол твоей точки).
Прямые будут y = x, y = -x

Лабы в другой тред.
#274 #729492
>>728733
Для олимпиадок тебе нужно знать только основные моменты, стандартный ввод/вывод, вектор/массив, циклы, условия. ООП там особо не нужен.
Основные задачи, это типа "есть массив строк, преобразуй их так, чтобы вывести другой массив строк".
Еще сортировки из stl пригодятся.
Кури там где собираешься участвовать, кресты быстрее всех если рассматривать скорость программы и скорость написания этой быстрой программы.
http://acm.timus.ru/help.aspx?topic=cpp
http://codeforces.com/blog/entry/7614
Ввод вывод можно потестить на этом примере:
http://pastebin.com/DpmjHF7C
>>729505
#275 #729505
>>729492
Это не совсем так. Сортировки, поиск, графы, комбинаторика, вычгем, динамическое программирование и тп.

И еще, если этим заниматься, то только по хардкору и желательно с наставником, иначе ощутимого выхлопа не будет.
#277 #729517
>>729505
Имел ввиду, что из с++. Ты абсолютно прав, на счет теории. Без математики там делать нечего.
#278 #729521
>>729459
Например, для положительных х и у, если x>y, то точка принадлежит А, если нет, то В. Для отрицательных, соответственно С и В. Логика понятна?
#279 #729542
Котишки, порекомендуйте книгу по концепции ооп без привязки к языку. То есть как должно было быть.
И по базам данных подобную, если не сложно. Спасибо.
#280 #729543
Из соседнего треда пришел.
Нужно таки набить чем-то резюме, чтобы можно было сказать, что я работал с бд вот здеся, с Qt вот здеся, а вот тут еще и апи какой-то хуйни прикрутил.
Если написать какой-то очередной note editor с маркдовном и синхронизацией с гуглдрайвом/дропбоксом (все из перечисленного как раз) - на меня же посмотрят как на ебанутого? Мол, нахуя ты велосипед написал ? Уже есть Evernote гыгы
#281 #729545
>>729542
Для ООП ботай жабу лучше. Там ООП очень любят.
>>729549>>729554
#282 #729549
>>729545
Двачую. Тоже не мог понять ООП и пилил всё в одном файле. Мне посоветовали покодить на джаве. Написал простенькую игру на libgdx и разобрался.
>>729554
#283 #729552
>>729542
uncle bob
по базам подробно не бывает, подробно бывает ток по какой-то одной.
#284 #729554
>>729545
Ты не поверишь, но я жабоеб.

>>729549
Что там непонятного то? Там же весьма простая и естественная структура, но везде требуют понимания ООП, как будто это что-то невероятно сложное, отсюда у меня возникает подозрение что я чего-то не понимаю.
>>729557
#285 #729555
>>729542
Буч. Объектно-ориентированный анализ.
Дейт. Введение в базы данных.
#286 #729557
>>729554

>но везде требуют понимания ООП


а ну тогда забей. git тоже требуют.
#288 #729620
Нужно сгенерировать последовательность случайных неповторяющихся чисел. Как это сделать оптимальнее, чем каждый раз проверять все уже имеющиеся элементы на совпадение, генерировать новое число в случае совпадения, проверять его снова и т. д.?
#289 #729622
>>729620
В сет забивай пока его размер не будет нужным :)
#290 #729628
>>729669
#291 #729643
>>729620
Добавляй к последнему числу случайную положительную величину, сохраняй в массив. Перемешивай массив.
>>729647
#292 #729647
>>729643
А если получится уже существующее число? м?!
Хуевая затея, да еще и не рандом нихуя.
>>729649
#293 #729649
>>729647
Заполняешь массив возрастающими числами, возрастание для каждого следующего числа случайное, потом массив перемешиваешь (меняешь местами случайные пары элементов достаточное число раз). Так понятнее?
>>729662
#294 #729652
>>729620
У меня есть реализация, но довольно глупая. Массив булек можно заюзать.
#295 #729662
>>729649

> возрастание для каждого следующего числа случайное


Таким образом тяжело получить равномерное респределение, если не на кольце делать. А если на кольце - то проебывается неповторимость чисел. >>729622 Наверное оптимальный вариант, если нужный массив значительно меньше от общего количества чисел. Если нужное количество в 2 - 3 раза меньше то лучше наверное просто сделать массив из всех чисел, перемешать его и отобрать нужное количество.
#296 #729669
>>729622
>>729628
Спасибо, попробую. А как получить как можно более рандомное зерно для последовательности? Может, системное время как-то можно использовать?
>>729680
#297 #729680
>>729669
Я тебе кинул код.
>>729701
#298 #729701
>>729680
Но я получаю каждый раз одну и ту же последовательность.
>>729716
#299 #729712
Читаю Страутструпа, дошёл до грамматик, термов и прочего. Нихуя непонятно. Дайте ссыль где про это все почитать можно?
>>729751
#300 #729715
Почему моя последовательность псевдослучайных чисел вообще не зависит от того, что я кинул в srand(blya)?
#301 #729716
>>729701
>>729701
http://pastebin.com/pPqey2LC

Вот тебе код, моя дорогая. srand() не используй, моветон уже шесть лет как.
>>729722
#302 #729722
>>729716
ErrorC2338invalid template argument for uniform_real_distribution
>>729726
#303 #729725
Смотрите, есть у меня функция в структуре, она проверяет одну из переменных, и если она ей не нравится, то возвращает посчитанное выражение, а вот если не понравится возвращает false и это всё имея тип float у этой самой функции.
За такое не обоссут? Не нарушает ли это каких-нибудь постулатов или ещё какой хуйни?
>>729755
114 Кб, 1920x1080
#304 #729726
>>729722
Ну на инт замени, что ты как маленький.
>>729732>>729754
#305 #729732
>>729726
О, отлично, спасибо. А то уже забыл, что real - это тоже числа с плавающей точкой, привык к float и double уже.
#306 #729751
>>729712
Хопкрофт или Ахо. Можешь лекции какого-нибудь универа по теории алгоритмов читануть.
6 Кб, 66x554
#307 #729754
>>729726
Эй, парень, там числа повторяются.
>>729776
#308 #729755
>>729725

> возвращает false и это всё имея тип float


Она не может возвращать false имея тип float. Возвращается 0.0. Если результатом твоего выражения ноль быть не может то это нормальный подход. Если может то хуита. В любом случае, раз у тебя флоат то лучше возвращать std::nanf("");
>>729772
#309 #729763
Очень нужна помощь. Гугла нет.
Есть dat файл. На 4 позиции стоит 31('1') символ по ASCII. Надо поставить на эту же самую позициию(4) 32('2') символ.
Сам код не работает:
std::ofstream outfile;
outfile.open("file.dat");
outfile.seekp(4);
outfile.write("3",1);
outfile.close();
>>729766
#310 #729766
>>729763
То есть если файл выглядит так:
1111111111111111
То после работы кода он должен выглядеть так:
1112111111111111
#311 #729772
>>729755

>Если результатом твоего выражения ноль быть не может то это нормальный подход.


В этом то и суть, что может. Хотел этого избежать, но так и не придумал, что вернуть.

>std::nanf("")


Спасибо.
#312 #729776
>>729754
ЯЧет не заметил
>>729781
#313 #729781
>>729776

> 0 0 5 0


> 8 5 4 4


> 9 3 5 5


и т. д. В итоге сделал проверку каждого числа как изначально задумывал, а хотел что-то оптимальнее. Но спасибо за генерацию случайной последовательности, сам бы этого точно не сделал.
>>729792
#314 #729792
>>729781
Нихуя не должно повторялся, ты проебался на каком-то этапе.
Сет в ПРИНЦИПЕ не может допустить повторение чисел
>>729856
#315 #729856
>>729792
Да, точно, проебался, использовал вектор вместо сета. А что это, этот сет? Я могу его использовать как массив?
Dmitriy #316 #729914
Добрый вечер всем C++-господам, у меня есть некоторый интерес к плюсам, нравится вообще концепция С\С++ низко-высокоуровневый быстрый и гибкий язык, оптимизации, это все очень круто, но Я скриптоблядок который даже толком в скрипты не может (Джаваскрипт и пихапи планирую учить. На данный момент что дрочу инглиш и нофап).
Суть в том что учусь Я в шараге, надо сделать курсач (очень примитивный), а в шараге учили билдер 6 (Вместо него планирую использовать GCC/GTK+ 3) базовые примитивы языка я знаю, но думаю инфа не актуальна, благо уже могу в инглиш что поможет быстро обновить знания моего C++. С языком проблем быть не должно а вот с библиотекой - не уверен, под Wayland сильно сложно код писать?
Курсач мой ебаное неюзабельное говно, сделаю как можно быстрее на отъебись, преподша (кек) там нихуя не разберет и уш точно ничего не запустит. По курсачу у меня три вопроса:
1. Какую книжечку\быстрогайд посмотреть для базовых гтк-вейланд примитивов (И отличается ли кодинг под вейланд?)
2. Мне нужно будет вставить математические формулы в интерфейс и хотелось бы сделать это по людски, есть ли в гтк+ что-то вроде MathML или это как-то иначе можно сделать?
3. Какую математическую либу юзать? Я знаю только <cmath> она хоть и сишная и старая но ее более чем достаточно, современный С++ аналогичной библиотеки не имеет чтобы не дублировать вышеупомянутую или имеет?

Раз мне суждено хоть немного программировать на плюсах то Я хотел бы попытатся форкнуть на вейланд божественный оконный менеджер DWM - ничего лучшего с графическими интерфейсами не случалось, он состоит менее чем из 2000 строк, вот только стоет ли пытатся сделать GTK реализацию или к тому времени его уже и так форкнут?
Сможет ли такое быдло как Я номально его написать? Пусть месяц-два времени заберет, если будет юзабелен то выложу на гитхаб может допилят по людски (многопоточность или еще что там нужно). У меня просто такое впечатление что команда разработчиков не собирается в ближайшем будующем его переделывать - что весьма грусно по-моему. Братся за это или по быстрее начинать дрочить жаваскрипт чтобы работать хотябы за еду? У меня такое чувство что время течет сквозь пальци а Я нихуя не делаю.
Dmitriy #316 #729914
Добрый вечер всем C++-господам, у меня есть некоторый интерес к плюсам, нравится вообще концепция С\С++ низко-высокоуровневый быстрый и гибкий язык, оптимизации, это все очень круто, но Я скриптоблядок который даже толком в скрипты не может (Джаваскрипт и пихапи планирую учить. На данный момент что дрочу инглиш и нофап).
Суть в том что учусь Я в шараге, надо сделать курсач (очень примитивный), а в шараге учили билдер 6 (Вместо него планирую использовать GCC/GTK+ 3) базовые примитивы языка я знаю, но думаю инфа не актуальна, благо уже могу в инглиш что поможет быстро обновить знания моего C++. С языком проблем быть не должно а вот с библиотекой - не уверен, под Wayland сильно сложно код писать?
Курсач мой ебаное неюзабельное говно, сделаю как можно быстрее на отъебись, преподша (кек) там нихуя не разберет и уш точно ничего не запустит. По курсачу у меня три вопроса:
1. Какую книжечку\быстрогайд посмотреть для базовых гтк-вейланд примитивов (И отличается ли кодинг под вейланд?)
2. Мне нужно будет вставить математические формулы в интерфейс и хотелось бы сделать это по людски, есть ли в гтк+ что-то вроде MathML или это как-то иначе можно сделать?
3. Какую математическую либу юзать? Я знаю только <cmath> она хоть и сишная и старая но ее более чем достаточно, современный С++ аналогичной библиотеки не имеет чтобы не дублировать вышеупомянутую или имеет?

Раз мне суждено хоть немного программировать на плюсах то Я хотел бы попытатся форкнуть на вейланд божественный оконный менеджер DWM - ничего лучшего с графическими интерфейсами не случалось, он состоит менее чем из 2000 строк, вот только стоет ли пытатся сделать GTK реализацию или к тому времени его уже и так форкнут?
Сможет ли такое быдло как Я номально его написать? Пусть месяц-два времени заберет, если будет юзабелен то выложу на гитхаб может допилят по людски (многопоточность или еще что там нужно). У меня просто такое впечатление что команда разработчиков не собирается в ближайшем будующем его переделывать - что весьма грусно по-моему. Братся за это или по быстрее начинать дрочить жаваскрипт чтобы работать хотябы за еду? У меня такое чувство что время течет сквозь пальци а Я нихуя не делаю.
#317 #729977
Какую книга по крестам лучше всего выполняет функцию настольного справочника? "Язык С++" Страуструпа?
#318 #729984
>>729977
С. Брин и Л. Пейдж – "Гугл". Всегда есть инфа по всем стандартам, фичам, обсосана каждая деталь.
Dmitriy #319 #729986
>>729977
Думаю спецификация языка вполне подойдет, она довольно подробная.
>>730050
#320 #729987
>>729977
stackoverflow
Dmitriy #321 #729998
Еще хотел спросить что программируют на плюсах сейчас кроме больших проэктов и библиотек?
#322 #730005
>>729998
игори
>>730034>>730097
#323 #730034
>>730005

>кроме больших проектов


2D говно не проблема и на питоне написать. Плюсы в современных играх только в рендере используются.
>>730097
#324 #730050
>>729986
Спецификации у корпоративных испражнений, а у нас стандарт, знаете ли.
>>730097
Dmitriy #325 #730097
>>730050
В глаза ебусь.
>>730034
Ну так тормозить может, оно простое же, легко и на плюсах написать будет.
>>730005
Какие игори то? Игори это сценаристы художники озвучка спецефекты, много чего и даже немного кода. Движки же есть чтобы игры делать, не с нуля же все пишется.
Я вот хуй знает чем может сейчас программист на плюсах заниматся, энтрерпрайзные средней сложности приложения? Микроконтроллеры и автоматизация (это вроде уже си)?
>>730115
#327 #730127
>>729998

>проэктов


Ебаный стыд.
С какой целью интересуешься, проэктант?
>>730141
Dmitriy #329 #730141
>>730127
К русской клавиатуре не привык, месяц без нее и 10 дней без интернета.
Думаю надо дальше инглиш дрочить.
Разработка под виндовс тоже ебаный стыд, но ничего, живут же люди как-то.
Dmitriy #330 #730144
>>730115
>>730138
Тоесть каждый с++ кодер постоянно делает прикладной софт? Просто ходят байки кокок все в веб перекатывается и т.д. Я так понял энтерпрайз это не очень задело, так как производительность критически важный параметр.
>>730147>>730154
#331 #730147
>>730144
Да все зависит от задачи. Если ты пишешь софт для истребителя или для МКС, естественно ты будешь юзать C++.
>>730148
#332 #730148
>>730147
Я буду юзать си.
>>730152
Dmitriy #333 #730152
>>730148
Адекват в треде
#334 #730154
>>730144
В веб перекатывается всякий софт, который на С++ писали году в 1998-м, а в нулевые произошел перекат на Java и C#, а на С++ остался только по разным недоразумениям. Разного рода бухгалтерия, документооборот и прочие не очень критичные к производительности штуки. Сейчас .NET программисты теряют работу в пользу PHP-макак, а С++ на это все смотрят со стороны.

Остался, никуда не делся, и ближайшие лет 10 не денется, десктопный софт для творчества - аудиоредакторы, видеоредакторы, фотошопы, CADы, и, что важнее, расширения ко всему этому рынку (сколько на рынке аудиоредакторов? Ну штук 10. А плагинов к ним? Сотни). Здесь понятно в чем дело - чтобы обойти конкурентов, софт должен быть быстрым у юзера, ты не можешь сказать "мой софт стоит не $50, а $10, зато ты можешь купить более быстрый комп".

Второй момент - нежесткий реалтайм. Компьютерное зрение, игры, различного рода библиотеки для бэкенда и т. д. и т. п.
>>730172
Dmitriy #335 #730172
>>730154
С++ когда-нибудь заменит сишечку? Мне кажется странным что не заменил, вроде есть все те-же возможности, даже больше, и обратная совместимость с С, но С никуда не девается уже более 30 лет...
#336 #730176
>>730172
Иди нахуй.
#337 #730207
>>730172
Никуда не девается откуда? Из ардуино?
#338 #730259
В QT создаю TextBrowser следующим образом:
https://ideone.com/B42lyW

Как мне теперь к этим TextBrowser-ам обращаться? Хочу вывести текст из них в файл.
>>730273>>731096
#339 #730273
>>730259
Где ты выкопал это ископаемое говно? В Qt5 есго нет.

Если глянуть доку - QTextBrowser наследует QTextEdit, а у того есть метод toPlainText().
Это не то, что ты ищешь?
>>730288
#340 #730288
>>730273
А обращаться к нему то как? В файл я знаю как выводить.
#341 #730359
Наткнулся полгода назад на русскоязычные статьи на сайте ibm, как вы считаете годная вещь?
>>730464
#342 #730447
>>730172

>но С никуда не девается уже более 30 лет


Единственная причина использования Си - это одинаковый лейаут у структур, не зависимо от производителя и опций конпелятора, годно для операционок. В остальном это нищий язык.

Особенно умиляют фанатики, которые в насмотревшись Сишных костылей, уверовали в то, что goto/free и void в высокоуровнем коде это путь к просветлению.
Блеать их даже наистандартнеемшим юник_поентером не переубедить, токуда только берутся такие ослы...
#344 #730463
>>730172
"Почему не лишено смысла писать код на C, а не на C++": http://eax.me/c-vs-cpp/
Прочти эту статью и ты все поймешь, если тебе реально интересно и ты не очередной уебан который хочет просто нести хуйню.
#345 #730464
>>730359
Ну я читал статьи по Python и Boost.Test на русском с сайта ibm. Для начального старта очень неплохо помогли.
#346 #730471
>>730447

>Фанатики си


>goto


Чтоблять? Ты с ассемблером путаешь.
>>730485
#347 #730475
>>730447

>Единственная причина использования Си


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

>что goto/free и void в высокоуровнем коде это путь к просветлению


"Высокоуровневый" часто означает намажем абстракций на абстракции, и еще дополнительный слой абстракций в середине не забудем.
>>730484>>730553
#348 #730484
>>730475
Нет ничего предосудительного в низкоуровневых возможностях. Многие ими пользуются, но не все признаются.
>>730553
#349 #730485
>>730471
goto cleanup - такой себе сишечный паттерн по освобождению ресурсов
>>730513
#350 #730487
>>730448
Ты забыл п. 5 памятки ньюфагу.
#351 #730513
>>730485
обычно это в макрос еще заворачивают
#352 #730553
>>730475
Неосилятор - человек, отрицающий полезность абстракций в результате сознательного или бессознательного стремления к упрощению и конкретизации собственной интеллектуальной деятельности.
>>730484
Байтоеб - человек, преувеличивающий ценность высокой скорости работы ПО и низкого потребления им ресурсов относительно прочих аспектов разработки (скорость и стоимость разработки, изменяющиеся требования и др.)
>>730555>>730562
#353 #730555
>>730553
Борщехлеб - человек, постоянно пытающийся расставить все точки над и.
#354 #730562
>>730553
Возвращайся к себе в жаботред.
>>731048
#355 #730564
Ребята, а давайте до переката попробуем друг-друга на вы называть.
>>730760
#356 #730591
Запускаю одно приложеньице числодробильное и оно жрет всего 25% ресурсов проца, можно как нибудь убрать рамки?
>>730594
#357 #730594
>>730591
Одно ядро жрет. Хочешь больше - распаралелливай.
>>730596>>730609
#358 #730596
>>730594

>распараллеливай

#359 #730604
Как распаралеливать?
>>730608
#360 #730608
>>730604
А что у тебя за прога?
А вообще std::thread.
>>730638
#361 #730609
>>730594
Я лучше на жабе перепишу. Там хоть я знаю как это делать. Спасибо.
#362 #730627
>>729505
теорию чисел забыл
#363 #730635
>>729505
Кстати, для олимпиадок java является вполне себе варантом: есть стандартне классы длинной арифметики; и меньше шансов вылезти за пределы массива/обратиться к тухлому указателю, а потом мучительно искать, где же что-то не так.
>>730637
#364 #730637
>>730635

>к тухлому указателю


У меня знакомые олимпиадники ими пользоваться не умеют. Тухлый они наверно ни разу не видели.
>>730645>>731055
#365 #730638
>>730608
Забавно то, что еще в прошлом году можно было наткнуться на то, что vs2013 не умеет move-ать что-то в std::thread:

http://stackoverflow.com/questions/29820135/mixing-stdmove-and-stdthread-wont-compile
#366 #730645
>>730637
У меня знакомые олимпиадники пишут на паскале и делают структуры бинарных деревьев по значениям (в стиле struct hui { int left, right };).
Так что у тебя ещё не всё так плохо лол.
>>730848>>731055
#367 #730760
#368 #730846
Сап /pr
#369 #730847
как скопировать класс? именно скопировать.
#370 #730848
>>730645

>делают структуры бинарных деревьев по значениям (в стиле struct hui { int left, right };).


Нихуя не понял, объясни.
>>730893>>731055
#371 #730853
>>730847
Конструктор копирования??????
>>730854
#372 #730854
>>730853
бывают такие?
>>730856
#373 #730855
>>730847
Выделяешь класс мышкой, тыц. Нажимаешь по нему правой кнопочкой, тыц. Помещяешь указатель в нужное место. Опяь правенькой, тыц. Вставляешь, тыц. И дальше по клавиатуре тук-тук-тук))0)

брысь с программача, бидло. класс скопировать нельзя. а вот инстанс класса можно. откуда вы только блядь берётесь такие?
>>730858>>730869
#374 #730856
>>730854
Бывают даже конструкторы перемещения.
#375 #730858
>>730855
да да да.. накосякил. у меня есть указатель на обьект класса, и мне надо вектор таких наштамповать. сорян за ракование, но ты рак то побольше моего
>>730859
#376 #730859
>>730858
А зачем тебе вектор одинаковых копий?
>>730860>>730862
#377 #730860
>>730859
ну они не совсем одинаковые..
>>730863
#378 #730862
>>730859
я меняю в каждом обьекте половину параметров
#379 #730863
>>730860
Как ты их создаешь? Конструктор - и сразу в вектор?
>>730865>>730866
#380 #730865
>>730863
я пока создал 1 из 100 и там конструктор 2-3 функции на парсинг и в вектор, но сутьв чем.. из 100 обьектов половина вектора не меняется и т.к. обьект класса пустой -- было бы круто его просто скопировать.
#381 #730866
>>730863
пока кроме return this ниче не придумал
>>730868
#382 #730868
>>730866
Но он скопирует указатель, а не объект, не?
>>730869
#383 #730869
>>730868
черт, логика.
но как мне скопировать сам обьект? вариантов нет?>>730855

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

>>730872>>730873
#384 #730872
>>730847
>>730869

>>730847 кун репортс ин
http://ideone.com/KSCgBg читай и сьеби уже
>>730875>>730877
#385 #730873
>>730869

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


"Класс" скопировать нельзя, дурья башка.
А чтобы объект скопировать - ебашь в классе конструктор копирования.

Иначе конструктор копирования будет сгенерен по умолчанию (и работать будет неправильно, если класс владеет чем-то типо указателей)
>>730875>>730878
#386 #730875
>>730872
>>730873

чаю вам вроде поскролил пару томиков Бьорна но не видел это.. блядские переводчики
>>730886
#387 #730877
>>730872
В данном случае ХуйСайз - обычный сраный инт, так что тут и дефолтного конструктора копирования хватило бы.
>>730881
#388 #730878
>>730873
Ну попизди мне тут, для копирования класса есть масса вариантов, начиная от публичного наследования и заканчивая банальными макросами.
>>730879
#389 #730879
>>730878
Это уже не "копирование класса", а наследование.

Так что "скопировать класс" можно только копипастом.
>>730883
#390 #730881
>>730877
Так то да. Пример синтетический. Он же потом может напороться, если у него объект сложный.
>>730885
#391 #730883
>>730879
да бля. я раканул со "скопировать класс", школьник и ссаных тряпок мне дали -- забили.
#392 #730885
>>730881
что ты подразумеваешь под сложностью? у обьекта 3 папы без конструкторов и дальше тупо пикчи и циферки имена в чаре* всё
>>730887
#393 #730886
>>730875
Кстати, я сегодня проводил ревизию книжек из шапки да-да, ОП тоже не все читал целиком и обнаружил, что русское издание большого Страуструпа которое "специальное" это отвратительное, дурно пахнущее, перепиленное чсвшным отечественным спермохлебом чудовище Франкенштейна, имеющее весьма отдаленное отношение к оригиналу. Поэтому, братцы, НАСТОЯТЕЛЬНО рекомендую при чтении большого Страуса читать либо только ангельскую книжку, либо держать перед глазами обе, иначе потом будете плеваться. ЧСХ, это не относится к Страусу для ньюфагов, он вполне так добротно переведен, отличия минимальны.
>>730888
#394 #730887
>>730885
я не ебу какие у него там объекты))0)
>>730889
#395 #730888
>>730886

>читать либо только ангельскую книжку


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

Книжки пережиток ранних нулевых, когда интернетов не было, и единственный способ учить погромирование - книжки (html/chm/txt) с диска "погромирование по-русски 7в1"
>>730889>>730890
#396 #730889
>>730887
я тебе описал.
на чем конструктор копирования классов может мне насолить??
>>730888
не скажи.. просто проскролив книжку со всем, я бы знал куда мне копать, а не писал на 2ч
>>730891
#397 #730890
>>730888
Не совсем так, книжка заостряет внимание на более существенных деталях в ущерб менее существенным. Плюс последовательное изложение и наглядность. К примеру, в книжке тебе скажут, что "const слева от звездочки относится к объекту, а const справа - к указателю", а в стандарте или cppreference разведут бодягу на пять страниц про деклараторы и описание всех крайних случаев. Так что лучше читать скучные доки уже после книги или точечно, а не все подряд. Но это мое имхо, конечно, вполне возможно, что кому-то удобнее сразу.
>>730892
#398 #730891
>>730889

> конструктор копирования классов


> всё ради классов


гоните его, насмехайтесь над ним
>>730898
#399 #730892
>>730890

>или cppreference разведут бодягу на пять страниц про деклараторы и описание всех крайних случаев.


Самое ценное оттуда - это примеры.
Нехуй вообще бодягу читать, просто смотришь в пример и вникаешь.
>>730894
#400 #730893
>>730848
Мне объяснят, нахуя тот даун использует int для указателей на левое и правое поддерево? Или это такие хэккерские указатели, которые автор почему-то не захотел сделать unsigned?
#401 #730894
>>730892
Не всегда из того, что выводится примером, понятно, что вообще происходит внутри компилятора. Особенно это шаблонов касается.
>>730896
#402 #730895
>>730893
Я какбе намекаю, что в паскале нету struct, так что тот код буквально понимать не стоит.
>>730897>>731055
#403 #730896
>>730894
С шаблонами все просто - нужно по возможности избегать этого говна.
>>730900
#404 #730897
>>730895
Но мы всё равно будем!
>>731055
#405 #730898
>>730891
да пошел ты. хоть это и 2ч но это единственная норм доска на всей борде. а вы не гоните раков с лабами а гоните меня бля! а я просто учу язык для себя т.к. это интересно. И этот тред создавался для таких вопросов как у меня. бля пиздец ты охуел анон.
54 Кб, 1280x720
#406 #730899
>>730893

>хранить адрес в unsigned int

>>730922>>731055
#407 #730900
>>730896
Ты уверен, что ты пишешь не на C с классами?
#408 #730922
>>730899
А точно адрес, а не индекс в массиве?
#409 #730957
>>730893
Индекс массива узлов, например.
#410 #731048
>>730562
Это ты тот ебанутый параноик, которому везде, где есть намёк на ООП мерещится жаба?
#411 #731055
>>730893
>>730848
>>730895
>>730897
>>730899
Ахуеть сколько тупых даунов на моём уютном сосаче. Вам конкретно написано:
>>730645

> У меня знакомые олимпиадники пишут на паскале и делают структуры бинарных деревьев по значениям (в стиле struct hui { int left, right };).


> Так что у тебя ещё не всё так плохо лол.


А изначально это был ответ на:
>>730637

>У меня знакомые олимпиадники ими пользоваться не умеют. Тухлый они наверно ни разу не видели.


Пищи для размышлений, надеюсь, вам хватит, дауны.
#412 #731096
>>730259
Ну что же вы, ребята! На стаковерфлоу идти что ли...
#413 #731099
Народ, поясните по хардкору за LLVM?
Я знаю, что это, но не совсем осознаю практическое применение и привязку к реальной жизни.
Где это можно встретить? И что на эту тему можно почитать (можно ангельский)?
>>731100
#414 #731100
>>731099
Это бэкэнд для компилятора. Всё, что нужно знать, чтобы понимать нахуй он нужен ирл.
для самых одарённых – для компилятора с LLVM нужно написать просто фронтэнд (транслятор языкнейм -> llvm ir) своего языка, и во уже готов ахуенно оптимизирующий компилятор

Почтать можно гугл, можешь погуглить про Kaleidoscope если хочешь сам писать компиляторы.
#415 #731310
>>727631

>память интерпретируется по-другому


Т.е. это платформо-специфичный код?
>>727878
А копирование не будет лишних операций добавлять? Или это не особо влияет на скорость?
>>731597>>731632
#416 #731358
Аноны, допустим изучил спп по книге липпмана, если это важно, как проверить знания? Написать компилятор для паскаля?
>>731603
#417 #731465
>>730448
90% всей мировой экономики это распил бюджета и боязнь остаться без работы.
Неужели goto/free и ебля с void* интереснее чем абстрактные фабрики конкретных синглтонов?
#418 #731475
Не компилируется прога. Скачал её отсюда. https://sourceforge.net/projects/lmule/?source=typ_redirect
./configure выполняется нормально. В инструкцие говорят кучу параметров передать, но без них работает так-же как и с ними. Похоже дэфолтные. Поэтому пишу сразу ./configure && make. Конфиг работает хорошо. Мэйк вроде тоже по началу справляется. Вот что пишет http://pastebin.com/tHLERJ43 Потом компиляция прерывается. Жалуется на исходники. http://pastebin.com/JsCsW2bN Пишет не узнал какую-то переменую в конструкторе. Можете посмотреть что там не так? Может с параметром каким-то особым компилировать надо?
>>731861
#419 #731597
>>731310

>А копирование не будет лишних операций добавлять?


Нет, компиляторы такую конструкцию понимают.
#420 #731603
>>731358

>как проверить знания?


Напиши свои вектор и хэшмеп, не используя стандартной библиотеки. То есть велосипедишь move, remove_reference и т.д. Еще для практики можно запилить свою реализацию std::function.
>>731846
2442 Кб, 2064x1161
#421 #731631
Возрадуемся, крестобратья!
#422 #731632
>>731310
Это код, специфичный для 32-х битных ieee 754 чисел. Впрочем, его можно модифицировать и для других чисел с плавающей точкой, но особого смысла этом нет - ответ-то все равно приближенный.
9 Кб, 804x221
#423 #731707
Пасаны, я щас ебанусь. Почему res2 возвращает неправильный результат?
>>731711
#424 #731711
>>731707
a и b приведены к unsigned char, а чистые данные - char
>>731722
10 Кб, 549x202
#425 #731722
>>731711
Оказалось что чистые данные компиль приводит даже не к char а к signed int инструкцией movzx, в результате чего складываются совсем не те числа, что я ожидал.
#426 #731777
аноны где взять libc++ для clang/llvm
>>731779>>731999
#427 #731779
>>731777
для windows
>>731999
#428 #731846
>>731603

>Напиши свои вектор и хэшмеп, не используя стандартной библиотеки. Еще для практики можно запилить свою реализацию std::function.



Допустим запилил свой вектор, мэп, хэш-мэп, фанкшен, не используя стандартной библиотеки и не используя вообще со стороны. Это повысит мою зарплату?
>>731847>>731849
#429 #731847
>>731846

>не используя вообще со стороны


не используя вообще ничего со стороны

мимофикс
#430 #731849
>>731846

> зарплату


Вопрос был про проверку знаний для ньюфага прочитавшего одну книгу. Какое отношение имеют знания к зарплате? К чему твой вопрос вообще?
>>731875>>731876
#431 #731860
Помогите с лабой плиз.
Вводим строку с клавиатуры. Надо написать программу которая будет считать кол-во слов которое начинаются и заканчиваются на одну и туже букву.

Натолкните на мысль пожалуйста как это можно осуществить.
#432 #731861
>>731475
бамп
#433 #731862
>>731860
Примеры? Ограничения?
>>731863
#434 #731863
>>731862
Ограничений нет.
>>731865
#435 #731865
>>731863
Как ты узнаешь что ответ правильный? Тесты есть?
#436 #731866
>>731860
На каком моменте возникли проблемы?
#437 #731868
>>731860
Рэгекспом, вся логика в 3 строки поместится.
#438 #731875
>>731849
вопрос в том, что нахуй изобретать свой вектор, если он _уже_ есть, вернее _-хХх-_уже_-хХх-_ есть!
>>731877
#439 #731876
>>731849
то есть какой толк заниматься тем, что не принесёт прибыли?
>>731877
#440 #731877
>>731875
Чтобы понимать как это говно работает.
>>731876
Ты не ту профессию выбрал, если хочешь просто денег – перегоришь через пол года работы, а так по карьерной лестнице не поднятся.
114 Кб, 1211x1045
#441 #731984
что не так?
>>731988>>732000
#442 #731988
>>731984
Двумерный массив указатель 2 звуздочки наверно надо.
#443 #731999
>>731777
>>731779
нам что, палить тебе ссылки из даркнета? за нами же пативены и кровавая гэбня выедет.
>>732007
#444 #732000
>>731984

> что не так?


у тебя коде блокс стоит
>>732007
#445 #732007
>>731999
>>732000
иди нахуй шутник
#446 #732023
std::vector::pop_back не приводит к реалокации памяти?
Если я в цикле два раза pop_back, а затем один раз push_back и так пока размер не станет 1 будет ли перераспределяться память?
>>732032>>732069
#447 #732032
>>732023
Не должна. Даже если полностью опустошишь вектор память не освободится, пока не будет вызван shrink_to_fit(). Возможно от реализации зависит.
#448 #732069
>>732023
Стандарт явно описывает все случаи, когда портятся указатели/итераторы вектора. pop_back () среди них нет, поэтому указатели обязаны остаться валидными. Это фактически означает, что переаллокации не будет, хотя формально никто не запрещает реализации stl, например, остановить все прочие треды и полчаса дрочить вектор, аллоцируя и удаляя память впустую, лол.
>>732094
#449 #732094
>>732069
http://www.cplusplus.com/reference/vector/vector/pop_back/
The end iterator and any iterator, pointer and reference referring to the removed element are invalidated.
Iterators, pointers and references referring to other elements that have not been removed are guaranteed to keep referring to the same elements they were referring to before the call.
>>732206
#450 #732127
http://hastebin.com/uyovizewek.coffee

Тут наверное Qt не в почете, но всё же.
Кто-нибудь поможет мне разобраться, почему деструктор Application'а не вызывается, хоть он и в QScopedPointer? В то же время, если создавать прсто объект на стеке, то все удаляется прекрасно.

Буду весьма благодарен за помощь.
>>732131
#451 #732131
>>732127
Ломаешь голову час
@
Пишешь на двач
@
Сразу же понимаешь где наебался
>>732132>>732275
#452 #732132
>>732131
Люблю двач, он и поможет, и образует, на путь верный выведет. Храни Господь анонов.
>>732135
#453 #732135
>>732132
Просто всегда так, только слабину дашь и спросишь совета у анонов - сразу разум проясняется.
>>732175
#454 #732175
>>732135
или как с /dev/videoX
долько когда отхристососят
#455 #732206
>>732094
Ну, все верно. Я, понятное дело, говорю о всех итераторах/указателях, про это отдельный пункт есть в "опасных" методах типа push_back. Последний итератор очевидно портится, ибо именно этот элемент удаляется.
#456 #732275
>>732131
Rubber duck debugging
#457 #732823
А чего gcc выдает еррор на строку
asm("movl %cs, storage")?
Неподдерживаемая инструкция mov
#458 #732898
Потсаны,
В книге написано "Нельзя создать ссылку на ссылку" и "Нельзя создать указатель на ссылку".
Пробую:
int a=0;
int &b=&a;
int *c=&b;

Всё скомпилировалось.
Где наеб? Связано ли это как-то с lvalue- rvalue-ссылками?
>>732929
#459 #732899
int &d=&b; отвалилось
>>732929
#460 #732929
>>732898

> int *c


Тип переменной с - указатель переменную типа int (а не указатель на ссылку)
>>732899

> int &d=&b


Тип переменной d - ссылка на переменную типа int (а не ссылка на ссылку)
А разгадка проста - &b возвращает адрес переменной a, так как b (раз это ссылка на а) это синоним a, то и записи &b и &a должны означать одно и тоже. http://ideone.com/QzBzEW
3306 Кб, 2448x3264
#461 #733028
Аноны, мне кажется или в книге пропущены 4 пункта? Если да, то какие?
>>733041>>733457
#462 #733041
>>733028
Никакие, уёбывай. Охуеть, он даже книгу не читает.
#463 #733457
>>733028
П
О
Ш
Е
Л
Н
А
Х
У
Й
Л
А
Б
О
Д
А
У
Н
))*
#464 #733458
>>733457
Я не лабодаун, я школьник
#465 #733459
>>733457

> ))*


)))))))00
#466 #733650
Как же я заебся. Три года уже учу. Снова застрял. Теперь на указателях на массивы указателей на функции
>>733669>>733690
#467 #733669
>>733650
[code lang="cpp"]T(()[])();[/code], проблемы?
#468 #733690
>>733650

>Теперь на указателях на массивы указателей на функции


Такую хуйню никто не использует
>>734622
#469 #733716
Посоны, больше не у кого спросить.
Скажем, есть две таблицы в SQlite.
На примерах офк, у меня другого сорта данные, но связь такая же.
1 таблица - шкальники
id | имя | id_класс | id_школа
2 таблица - школы
id | адрес | etc

И вот нужно эти данные забить в QTreeView в виде
|
|---шкала 1
| |--шкальник 1
| |--шкальник 2
| |--шкальник 3
|---шкала 45
| |--шкальник 9000
| |--школьник 9228
...

При чем, если вздумается на ходу что-то поменять - изменения в модели должны загоняться в бд.
Я думал сначала тупо взять QSqlQuery прогнать с джойном и кое-как заполнить, но потом их же хуй получится редактировать.
Анон, что мне гуглить? Уже все перерыл, нихуя не выходит. В MVC не посылай, знаком с ним, но ситуация какая-то сложная
>>733760>>733775
#470 #733760
>>733761>>733762
#471 #733761
>>733760
Какой нахуй лабодаун? Для своего проекта нужно, пруфануть могу.
#472 #733762
>>733760
А, я забыл, ты из тех безликих долбоебов, которые сюда поизливать желчь заходят. Пошел нахуй, действительно.
#473 #733775
>>733716

> В MVC не посылай


А если пошлю? Делаешь эту хуйню сначала без персистентности. Тоесть полностью реализуешь модель и все нужные операции над ней. Потом в код операций начинаешь добавлять операции над БД. Добавляется/удаляется школьник - добавляешь его в бд, школьник перемещается из одной школы в другую - меняешь ему значение поля со школой и т.д. Оптимальный вариант сразу ORM какую-то накатить.
#474 #733780
>>733775

>ORM


>C++


Чёта говном и испорченным значением термина запахло.
#475 #733790
>>733775
Я так сначала и думал, но мне сказали, что можно вообще в обход этого всего пойти и натянуть QSqlRelationalTableModel с помощью QAbstractProxyModel, только у меня там не оче получается пока.
>>733803
#476 #733791
>>733775
А почему пошлёшь-то? Все что в доке по MVC я понял и разобрался со всеми примерами. А на QAbstractProxyModel и примеров-то нету! Вот оно как.
Ну ничего, разберемся
#477 #733803
>>733790

> QSqlRelationalTableModel


Просто дополнительный слой абстракций чтобы с SQL не пердолиться хотябы в простых случаях, суть от этого не меняется.
>>733805>>733807
#478 #733805
>>733803
Только все равно непонятно, мне все равно придется по ходу что-то вручную в SQL пердолить.
#479 #733807
>>733803
Тогда уж блядь оставлю наверное просто QSqlTableModel, Relational мне там вообще не помощник, одно поле с именем все равно нужно ручками тащить как я пони
#480 #733848
Начинаешь разбираться в этом говне и начинается, internal pointers, QPersistentаааааааааааааааааааааааааааааааа сукааааа я просто хотел заполнить ебаный QTREEVIEW
17 Кб, 787x237
#481 #734311
Кекнул трижды
>>734315>>734316
#482 #734315
>>734311
Это для безопасной конкурентности небось.
>>734317
#483 #734316
>>734311
Почему кекнул? С того, что индексация трижды?
>>734317
#484 #734317
>>734315
Нету там ее
>>734316
Ну таки да, чтобы i-й элемент вычислить, надо перебрать i-1.
>>734362
#485 #734362
>>734317
А вот и нет. Пруф: http://doc.qt.io/qt-4.8/qlist.html#at Вот только хуй знает, зачем они контейнер с константным временем доступа назвали list, лол.
#486 #734372
>>734362
Вот это нихуя себе оказывается. Вот это имена ебать, у меня джава с них.
#487 #734383
>>734362

> контейнер с константным временем доступа назвали list


Вектор уже занят был. А у этого быстрая (в среднем) вставка в начало, небольшие нюансы с выделением памяти, array тоже не сильно подходящее название.
#488 #734388
>>734383
Я про вектор читанул, может что и не понял, но там пишется, что он хранит копии элементов, а list указатели?
Или это кутешный дек?
>>734411
#489 #734407
>>734362
В питоне тоже листом обозвали.
#490 #734411
>>734388
Да, если только размер не равен или меньше указателя. Получается что в векторе данные расположены рядом (как в обычном массиве), а в листе могут быть разбросаны по всей куче (как в связных листах и подобных структурах) - в некоторых случаях может влиять на производительность (из-за кеша).
#491 #734429
Раза 3-4 начинал учить С++, но доходил до векторов и дропал. Как пересилить свою лень и начать жить?
>>734431>>734435
#492 #734431
>>734429

>доходил до векторов и дропал


проще забить.
>>734438
sage #493 #734435
>>734429
На векторах он дропал. Вектора не нужны. Мапы решают.
>>734438>>734479
#494 #734438
>>734435
>>734431
Как не забивать на жто дело?
Всё время хочу перестать читать всякое говно, и занятся чем-нибудь дельным. Но как начинаю - постоянно отвлекаюсь и смотрю говно. А потом и вообще забиваю.
#495 #734479
>>734435
Вам в жабоскрипт надо, батенька.
>>734492
#496 #734489
Посоны, хочу этот код с пыха

$server_seed = "39b7d32fcb743c244c569a56d6de4dc27577d6277d6cf155bdcba6d05befcb34";
$lotto = "0422262831";
$round_id = "1";
$hash = hash("sha256",$server_seed."-".$lotto."-".$round_id);
$roll = hexdec(substr($hash,0,8)) % 15;
echo "Round $round_id = $roll";

переписать на си++ cuda чтобы $server_seed перебирать и найти нужный.
Я поверхностно знаю си++ и php. Основная проблема это cuda.
Подскажите годных книг/мануалов как там сделать цикл в несколько потоков, который будет перебирать
$server_seed хешировать, сравнивать с ответом и т.д.
Я понимаю, что перебор займет вечность времени, но просто хочу попробовать.
>>734929
#497 #734492
>>734479
Сегодня в хабрагруппе в вк какое-то тело поясняло, что жаваскрипт самый перспективный язык, а на цпп можно написать очень ограниченный спекрт приложений.
#498 #734548
>>734492
Спектр, ограниченный всеми существующими платформами.
>>734553>>734592
#499 #734553
>>734492
>>734548
Хочу научится писатьпрограммки и простенькие игры (для начала) С++ для этого подойдёт отлично или что-то другое лучше?
#500 #734573
>>734383
в бидоне вектор тоже list-ом назван
#501 #734574
>>734553
Ну же!
#502 #734579
>>734553
Информация к размышлению: весенний апдейт черновика стандарта увеличил его с 1300 до 1500 страниц. Тебе придется как минимум прочитать его, а местами еще и запомнить.
>>734588
#503 #734580
>>734492
Ну без слез, действительно ограниченный
#504 #734584
>>734553
Простые игры можно писать на чем угодно. Я бы посоветовал для обучения программированию что-нибудь интерпретируемое, вроде питона, а потом уж выбрать язык по душе.
#505 #734586
>>734383
Это называется дек, между прочим. Все равно тупо.
#506 #734588
>>734579
Ты-то сам его открывал хоть раз?
>>734598
#507 #734592
>>734548
Не всеми. На каждое embedded говно компилятора cpp не найдется. Только C, только хардкор.
#508 #734598
>>734588
Самый последний драфт только по-быстрому глянул. А четырнадцатый обычно и не закрываю, он в фоне висит открытой пдфкой.
>>734601>>734603
#509 #734601
>>734598
А зачем он нужен?
Альсо,ты про в С++?
Поясни за язык, он сложный для человека, который не очень разбирается в компьютерах?
>>734612>>734614
#510 #734603
>>734598
Ты че ебанутый? Для кого cppreference пилят? Это же долго! Нахуя читать формальное описание языка, если ты не пилишь компилятор? Или ты пилишь?
>>734614
#511 #734612
>>734601

> Поясни за язык, он сложный для человека, который не очень разбирается в компьютерах?


Конечно.
Всё застопорится на указателях, ссылка, выделении памяти и тд.
#512 #734614
>>734601
Затем, что ты, например, хочешь понять, можно ли делать в крестах %хуйнянейм. Ты, понятно, первым делом тестишь ее в студии/шланге, и она вроде работает, но чем более необычная фича, тем более ты хочешь быть уверен, что она разрешена стандартом, и ты не словишь баг из-за UB спустя полгода, когда уже хер проссышь, что ты там написал. Ты, допустим, открываешь Страуструпа в нужном разделе, а там про это вообще нет, или есть, но говорится очень туманно например, часто он пишет undefined, имея в виду implementation defined, типа "char size is undefined". Поэтому проще всего не ебать себе мозги с трактовками, а открыть стандарт и убить неоднозначность в зародыше. Еще есть cppreference, но там имхо ядерные фичи хуже структурированы и разбросаны хуй пойми как.
>>734603
Я пилю stl-совместимую либу, почти такие же требования к деталям нужны.
#513 #734615
Со Страуструпом есть порно?
>>734617>>734641
#514 #734617
>>734615
Каждые полгода в Университете Техаса.
#515 #734622
>>733690
Прата пытается в книге меня научить
>>734635>>734637
#516 #734635
>>734622
нехуй читать всякое днище
#517 #734637
>>734622
Я тебе больше скажу, даже сишные массивы в C++ мало кто использует. А с появлением std::array это вообще нонсенс. Так что указатель на массив указателей - это то еще днище. Даже в C такой хуйней никто не страдает и все пишут через typedef'ы. Если увидишь такое на собеседовании, можешь смело плевать в лицо уникуму, который это спрашивает.
>>735304
4079 Кб, 231x264
#518 #734641
>>734615
Вот какой-то безумец похожий на него.
>>734651
#519 #734651
>>734641
Во-первых этот шакал на него не похож, а во-вторых это не порно.
127 Кб, 600x600
#520 #734874
Ну добавьте уже ссылку на слак в шапку, чего вы.
Нам уже год, на столько вопросов было отвечено всем ньюфаням, что впору платную подписку организовывать, куча специалистов из разных областей и все на передовой разработки! Так что не стесняйтесь, присоединяйтесь!
https://invite-me-to-2chpr.herokuapp.com/
>>734972
#521 #734929
>>734489
рулеточку взломать решил? дарю, может пригодится.
http://pastebin.com/Nbh1t9TR
#522 #734972
>>734874
Not Found
#523 #735047
Вопрос по Qt:
Почему перед названиями слотов ставят on (on_pb_clicked())? Как это расшифровывается?
>>735073
#524 #735073
>>735047
На.
По нажатию pushbutton, что тут непонятного
#525 #735148
Грамматики действительно используются в программировании? Какая-то довольно странная и бесполезная штука, мне кажется.
#526 #735149
>>735148
Я сейчас делаю лабу по ним в универе.
Как я понял, полезная, только если конпеляторы пишешь
>>735154
#527 #735154
>>735149
Понятно. Как-то Страуструп вообще очень мутно калькулятор этот делает.
>>735160
#528 #735160
>>735154
А, Ты за эээто...
Да то вообще наркоманский пример.
#529 #735180
>>735148
Изучение теории языков программирования, конструирования компиляторов, преобразований над естественными языками, искусственного интеллекта, матлогики и автоматизации доказательств, функционального программирования, компьютерной алгебры требует знания грамматик. В более технических или коммерческих областях наподобие компьютерной графики, эмбеддеда крудошлепства, веб-макакинга они вряд ли понадобятся, хотя иногда могут. Например, сможешь хуярить сложные регулярки как Г-сподь.
#530 #735221
>>735148
В некоторых областях иногда запиливают свои недоязыки, ориентированные на эти области, либо на решение каких-то узких задач. DSL - domain-specific languages. Никогда не обмазывался, но, думаю, грамматики там используются. И еще это довольно узкая ниша, так что платить там тоже могут весьма щедро.
#531 #735237
Анон! Думаю всё заметили, что Абу заделал новый раздел, куда пускает только по пасскодам. И я знаю, что довольно много здесь человек пускает слюну на этот раздел, воображая себе "тот самый ламповый двач", но раскошеливаться на пасскод не хочет. Поэтому, сугубо из благих побуждений, я написал эту инструкцию, этакий секрет борды, о том, как получить пасскод абсолютно бесплатно. И так, тебе нужно:
1. Закрыть глаза и мысленно представить вожделенный пасскод.
2. Сказать в слух "Спасибо Абу!".
3. Досчитать до десяти.
4. Отправить этот пост в любой тред пяти других разделов.
5. Лечь спать. Утром проверьте свой электронный ящик - пасскод уже там!
>>735246>>735247
#532 #735246
Зачем может понадобиться написать свой собственный компилятор помимо образовательных целей?

>>735237
Спасибо, попробую.
#533 #735247
>>735237
Абу, пошел нахуй с пиаром своего днище-раздела. Годный контент на бордах всегда создавался только за счет энтузиазма, а не доната.
#534 #735304
>>734637
А как же легаси? А как же старые библиотеки, которые требуют указатели на функции?
Конечно, в своем коде, который ты пишешь под с++11/14/17 использовать их не стоит, но знать о них как минимум нужно, чтобы не пугаться увидев такие вещи в чужом коде.
>>735395
#535 #735309
Дано:
Консольное приложение которое считает сумму двух чисел (вводим с клавы).

Необходимо:
Из ГУЙ-ного прилоежния передавать-получать строку в это консольное приложение, при этом не показывая консоль.

Это возможно?
>>735316
#536 #735316
>>735309
Возможно.
popen
#537 #735326
я написал свою консольную программу.
Поместил ее в C:/folder/myprog

После запуска-закрытия - exe файл меняет свой размер и перестает работать. С чем это может быть связано?

Ради интереса накопировал 100 экземпляров своей программы и они ВСЕ увеличили свой размер (на ~200Кб), хотя запускал только один экземпляр. Что за НЁХ?

Винда-8.
#538 #735395
>>735304
я не говорил, что указатели на функции не используют. Я говорил о обычных массивах. Да и никакой вменяемый человек, даже используя С-массив, не писал бы его определение без вложенного typedef'а.
1810 Кб, 1304x863
#539 #735435
Сап, выручай Антоша. В игре нужен контейнер для хлама, валяющегося на земле. Предела по количеству нет, обращаться нужно будет часто, пускай будет вектор.

В заголовочный файл:
extern vector<resourse> Resourses;

Теперь в мейне Resourses[0].Drop() вызывается без проблем, автокомплит подхватывает поля класса для любого элемента, все компилится и работает.

Но если вынести вызов в одноименный заголовочному файл, компилятор несет какую-то дичь:
http://puu.sh/oHqTu/81baca6b32.png

Ну и пошел тупняк, ЧЯДНТ?
>>735446>>735456
#540 #735441
Qt.
Есть листвиджет и SQLite таблица. Нужно забить из таблицы данные в виджет, комбинируя инфу с разных столбцов ричтекстом в листвидгет (т.е. напрямую QSqlTableModel юзАть не выйдет)
Я пока вот что придумал: сабклассить листмодель, в ней содержать внутри QSqlTableModel и из нее черпать инфу и возвращать в data().
Так будет ок или нет? Хз просто, моветон ли модель в модель аггрегировать.
#541 #735446
>>735435
Блядь, ну он же тебе человеческим языком выдал, что интерпретировал твою чегототам Resources [0] как объявление массива и охуел от нулевого размера. Просто пиздец, если уж ты пишешь код, то изволь читать сообщения компилятора, а не МАМ У МЕНЯ ТУТ ОШИБКА НА АГЛИЦКОМ ВЫЗЫВАИ ПОГРОММИСТОВ НУ МАМ(((((((. Вообще, телепаты в отпуске, но я сегодня задержался в астральном офисе, так что ГЛЯДИ СЮДА, ЧЕПУШ, вангую причину ошибки даже без твоих исходников: ты, хуиная голова, не подключил из второго заголовочного файла в котором твой псевдовызов Drop() первый файл в котором extern vector.... Компилятор не обладает в отличие от крестоблядков ИТТ навыком телепатии, поэтому он в пределах данного файла не слышал ни о какой переменной Resources. Следовательно, он считает, что это заново объявляемое имя, а [...] после наводит на мысль, что это массив. Массив нулевого размера недопустим, поэтому компилятор испражняется первой ошибкой в твое окошко вывода. Но надежда умирает последней, поэтому он героически продолжает парсинг, но видит дальше точку вместо ожидаемого семиколона, а еще дальше - объявление функции Drop да-да, она тоже не подключилась, в котором ты нагло забыл указать тип возврата. Такую подставу он простить уже не может, ссыт тебе на лицо и прекращает попытки разбора твоего высера.

И да, прочитай какой-нибудь style guide, а то на эти имена просто больно смотреть. Ах, тебе же лень открыть гугол? Ну тогда гляди сюда: AbstractMamka - имя класса, tvoya_mamka - имя переменной, ebalMamku () - имя функции.
>>735451>>735494
#542 #735451
>>735446
Создал объект абстрактной мамки? Вот это умишко у тебя.
>>735453
#543 #735453
>>735451
Нихуя я не создал, а перечислил сущности как независимые. И вообще никто не мешает инстанцировать абстрактный класс, если у него все виртуальные методы реализованы по дефолту, это не обязательно интерфейс же.
#544 #735456
>>735435

>extern vector<resourse> Resourses;


>extern


у меня за такое на районе убивают.
ты объявил глобальный Resourses, но не определил его, ты его точно определил его и инициализировал в мейне?
а если по сути можно обойтись без extern в проектах. почитай книжек, хотя нет, через годик другой сам поймешь.
>>735461>>735494
#545 #735458
Билдероблядь врывается в тред.
Есть форма с компонентом TRichEdit

Как реализовать нумерацию всех строк? как в каком нибудь DE Ставить таймер и вечно обновлять содержимое, ставя перед каждой строкой Номер строки?
>>735460
#546 #735460
>>735458
DE= IDE
fix
#547 #735461
>>735456
Он не сказал, что не определил. Раз у него работало, значит небось в другом .cpp было определение. Совсем без определения могло бы прокатить со встроенным типом, но не с вектором.
#548 #735479
Господа, помогите прояснить пожалуйста.
Опять пишу не в ту ветку, но вы все же ближе к этой теме.
Правильно ли я понял, что при использовании QXmlStreamWriter нельзя просто так взять тег и перезаписать значения в нем, а нужно переписывать весь файл с нуля?
1062 Кб, Webm
#549 #735494
>>735446

>не подключил хедер


http://puu.sh/oHuxi/4ee56e7822.png никакого второго хедера нету.

В попытках разобраться, таки неудачно убирал определение вектора из .cpp файла, запутав не только себя. Но, в данный момент первой ошибки нет, а остальные остались неизменны:
http://puu.sh/oHwtB/161bc5d07e.png

>>735456
Пример вызова в мейне:
http://puu.sh/oHw6k/2e078e9c71.png

Как в многофайловом проекте обойтись без extern? Сам не в восторге от этой хуйни, но альтернатив просто не знаю.

>style guide


По мере вкатывания постараюсь исправиться в оформлении кода, просто пока, при оформлении и распределении по файлам, уходит в разы больше времени в поисковиках и попытках разгадать шарады компилятора, нежели при написании кода. Порой спрашиваю себя, а нужно ли оно мне, и не заебенить ли все в одном файле.
>>735539>>735823
#550 #735539
>>735494
Блять, да ты же в глобальном пространстве имен пытаешься делать присваивание. Конечно тебя компилятор нахуй с такими запросами посылает.
Вне функций можно только объявлять и определять переменные, но нельзя писать императивный код, что-то присваивать или вызывать функции.

Если ты хочешь проинициализировать вектор, то делай это в самом начале main'а.
>>735674
2437 Кб, Webm
#551 #735674
>>735539
ААа сложна.. дануна.. все работает. Походу жизнь продолжается.

Все же поправь если не прав: extern у объявления вектора в .h говорит искать объявление в одноименном cpp файле(в данном случае). Итого область видимости данного вектора - файлы с объявлением + те файлы, где будет подключен .h с отсылкой на него.

Предположим я инициализирую по твоему настоянию вектор в мейне. Как мне теперь работать с этим вектором в других модулях, без использования extern?
>>735723>>735893
#552 #735723
>>735674
Любая переменная которую ты объявил вне какого либо блока и которая не имеет const модификатора (и его друзей - volatile и mutable) является видимой по всей программе. Но вследствие нюансов архитектуры языка - компилятор обрабатывает по одному юниту (трансляции) за раз (вообще не имея инфы про остальные) и статического контроля - ты должен предоставить ему информацию про эту переменную. В случае функций используется простая декларация - она предоставляет компилятору всю нужную информацию о функции. Переменную нельзя задекларировать подобным образом - так как синтаксис не отличен от объявления переменной. Поэтому используется ключевое слово extern. Указав в объявлении переменной extern - то показываешь компилятору что это на самом деле не объявление а декларация переменной, то-есть ничего создавать не нужно (как при обычном объявлении переменной). А так как компилятор уже имеет всю нужную ему инфу про переменную он может нормально откомпилировать юнит.

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


Ты судя по всему не различаешь (или путаешь) объявление и инициализацию. Если тебе так нужна глобальная переменная ты можешь объявить ее снаружи, а уже инициализировать в main().
>>735893>>736291
#553 #735801
Мутите перекат, братишки
>>735804
#554 #735804
>>735801
Опа ждём.
#555 #735823
>>735494

>extern, как избавится.


ну смотри, если по существу, ты сейчас пишешь в стиле си. можно получать твой вектор в многофайловых проектах другими путями, один из которых передавать по ссылке или указателю в функцию\метод вызываемую в другом файле проекта.
тебе нужно понять, что корень проекта у тебя функция main. все остальные фукнции где бы они не были, вызываются из main или же из других функций которые в свою очередь вызываются... ну ты понел.
разберись с классами, не пиши в процедурном стиле используя кресты, для тебя специально придумали классы. если же что-то передать таким образом невозможно, в крайнем случае используй синглтон.
>>736291
#556 #735893
>>735674
Давай я тебе открою одну маленькую тайну. Компилятор вообще никакие объявления не ищет. Он берет .cpp файл и компилирует абсолютно ничего не зная о других .cpp файлах. Потом, после того, как все .cpp файлы были откомпилированы, включается линковщик, это уже другая программа, которая берет скомпилированные компилятором файлы, пакует их все вместе и делает из них .exe или исполняемый на другой платформе файл.
Теперь разберемся с объявлением и определением переменных.
Определение -- это когда ты пишешь, например, int x; или vector<resource> Resources; Эта строчка скажет компилятору "выдели память под вектор ресурсов и теперь я буду обращаться к этой памяти по ключевому слову Resources". Теперь в этом .cpp файле ты можешь использовать Resources просто обращаясь к нему по имени.
Как я уже говорил, компилятор компилирует каждый .cpp файл отдельно и он совершенно ничего не знает про то, что творится в других .cpp файлах и какие там переменные определены, поэтому в другом .cpp-шнике ты не сможешь использовать переменную Resources. Если ты в другом файле еще раз определишь ту же переменную, то это уже будет другая переменная с тем же именем и линковщик, когда будет склеивать файлы обругает тебя сказав, что переменная Resources определена и там и там, и что он не знает какую из них использовать. Чтобы решить эту проблему существует механизм, который называется объявление.

Объявление -- это когда ты пишешь extern int x; или extern vector<resource> Resources;. Эта строчка говорит компилятору "Память выделять не надо, просто знай, что где-то в другом файле будет определена переменная Resources, под неё будет выделена память, а пока просто знай, что она существует и обращайся к ней по имени Resources".
И все, теперь компилятор уже в другом .cpp файле будет знать о переменной Resources определенной в другом месте и использовать её, а не создавать новую переменную.

С функциями та же фигня. Есть определение функций -- это когда ты пишешь функцию с её телом, т.е.
void foo()
{
...
}
И объявление функции -- это когда ты пишешь функцию без тела:
void foo();
Все что я писал выше, справедливо и для функций в том числе.

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

Теперь что касается директивы #include. Снова маленький срыв покровов, #include -- это просто copy-paste. Никакой магии. Когда, например, в файле main.cpp ты пишешь #include "myfile.h", препроцессор (такая программулина, которая запускается еще до работы компилятора) тупо возьмет и скопирует содержимое файла myfile.h в файл main.cpp. Вот именно так и сделает, без шуток. Ему наплевать на имена файлов или что-то подобное, он тупо берет и копирует текст из инклюда целиком, а потом уже компилирует.
Вообще инклюды нужны для того, чтобы упростить вот этот процесс объявления и определения переменных. Можно обойтись и без них. Если ты в разных файлах используешь переменную Resources, ты можешь просто в каждом файле написать объявление extern vector<resource> Resources; и использовать его. А в каком-то одном файле (например, main.cpp) его определить, написав vector<resource> Resources; Это будет прекрасно работать.
Но когда у тебя таких общих переменных или функций будет слишком много, ты заебешься повсюду копировать эти объявления. Поэтому люди придумали инклюды. Ты пишешь все объявление в одном файле, называешь его, скажем, myresources.h, и теперь везде, где ты хочешь использовать Resources или какие-то другие общие переменные которые ты туда прописал, ты пишешь #include "myresources.h" и препроцессор просто скопирует все твои объявления в этот файл. Вот так.

>>735723
Декларация и объявление -- это одно и то же.
В русском языке есть слова "Объявление переменной" и "Определение переменной", в английском языке для этого есть слова "Declaration" и "Definition" соответственно.
#556 #735893
>>735674
Давай я тебе открою одну маленькую тайну. Компилятор вообще никакие объявления не ищет. Он берет .cpp файл и компилирует абсолютно ничего не зная о других .cpp файлах. Потом, после того, как все .cpp файлы были откомпилированы, включается линковщик, это уже другая программа, которая берет скомпилированные компилятором файлы, пакует их все вместе и делает из них .exe или исполняемый на другой платформе файл.
Теперь разберемся с объявлением и определением переменных.
Определение -- это когда ты пишешь, например, int x; или vector<resource> Resources; Эта строчка скажет компилятору "выдели память под вектор ресурсов и теперь я буду обращаться к этой памяти по ключевому слову Resources". Теперь в этом .cpp файле ты можешь использовать Resources просто обращаясь к нему по имени.
Как я уже говорил, компилятор компилирует каждый .cpp файл отдельно и он совершенно ничего не знает про то, что творится в других .cpp файлах и какие там переменные определены, поэтому в другом .cpp-шнике ты не сможешь использовать переменную Resources. Если ты в другом файле еще раз определишь ту же переменную, то это уже будет другая переменная с тем же именем и линковщик, когда будет склеивать файлы обругает тебя сказав, что переменная Resources определена и там и там, и что он не знает какую из них использовать. Чтобы решить эту проблему существует механизм, который называется объявление.

Объявление -- это когда ты пишешь extern int x; или extern vector<resource> Resources;. Эта строчка говорит компилятору "Память выделять не надо, просто знай, что где-то в другом файле будет определена переменная Resources, под неё будет выделена память, а пока просто знай, что она существует и обращайся к ней по имени Resources".
И все, теперь компилятор уже в другом .cpp файле будет знать о переменной Resources определенной в другом месте и использовать её, а не создавать новую переменную.

С функциями та же фигня. Есть определение функций -- это когда ты пишешь функцию с её телом, т.е.
void foo()
{
...
}
И объявление функции -- это когда ты пишешь функцию без тела:
void foo();
Все что я писал выше, справедливо и для функций в том числе.

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

Теперь что касается директивы #include. Снова маленький срыв покровов, #include -- это просто copy-paste. Никакой магии. Когда, например, в файле main.cpp ты пишешь #include "myfile.h", препроцессор (такая программулина, которая запускается еще до работы компилятора) тупо возьмет и скопирует содержимое файла myfile.h в файл main.cpp. Вот именно так и сделает, без шуток. Ему наплевать на имена файлов или что-то подобное, он тупо берет и копирует текст из инклюда целиком, а потом уже компилирует.
Вообще инклюды нужны для того, чтобы упростить вот этот процесс объявления и определения переменных. Можно обойтись и без них. Если ты в разных файлах используешь переменную Resources, ты можешь просто в каждом файле написать объявление extern vector<resource> Resources; и использовать его. А в каком-то одном файле (например, main.cpp) его определить, написав vector<resource> Resources; Это будет прекрасно работать.
Но когда у тебя таких общих переменных или функций будет слишком много, ты заебешься повсюду копировать эти объявления. Поэтому люди придумали инклюды. Ты пишешь все объявление в одном файле, называешь его, скажем, myresources.h, и теперь везде, где ты хочешь использовать Resources или какие-то другие общие переменные которые ты туда прописал, ты пишешь #include "myresources.h" и препроцессор просто скопирует все твои объявления в этот файл. Вот так.

>>735723
Декларация и объявление -- это одно и то же.
В русском языке есть слова "Объявление переменной" и "Определение переменной", в английском языке для этого есть слова "Declaration" и "Definition" соответственно.
>>736291
#557 #736036
Ну напишу в тонущем
Сап /pr это моё любимое место в интернетах. И я хотел бы познакомится с годным адекватом-крестоносцем с целью напилить годноты.
Проблема какая : Хочу зелёных клеток на github много много
я собрал конфу из пары анонов чтобы напилить годноты
есть пару человек которые успешно справляются с контентом в годный проект
с кодерами полная жепа. и ищю чувака который будет 1-200 строк в день сможет коминтить и нести свои идеи в проект
____________________________________________________
контакты -- tox 35BA0C3B869A3D30072B553AC278E0AFC65BD8F27294FDAB231C1C7EE7C79568E7DAEA482324 или оставь мыло итт всё расскажу..
P.S.: настоящие люди только в интернете. очень хочу ещё раз убедится в предыдущем предложении
#558 #736039
>>736036
Что за проект?
>>736040
28 Кб, 379x209
117 Кб, 1366x768
#559 #736040
>>736039
пока накапчевано 3500+ строк
как обычно -- игра
пики -- рендер
>>736043
#560 #736043
>>736040
Какой GI?
#561 #736044
>>736043

>GI


2 - 3.3
#562 #736047
>>736043
у меня другие не идут
ссоре
>>736049
#563 #736049
>>736047
GI - global illumination
боюсь не сработаемся.
401 Кб, 557x396
#564 #736051
>>736043
Не GI, а ҐЇЇЇЇЇЇЇЇ.
#565 #736053
>>736036
Делать больше занятым людям нечего, как хуячить по 200 строк в день в твой yet another game engine.
>>736059
#566 #736054
>>736049
Ну и пиздуй отсюда, клоун. Двести строк ему в день за просто так вынь да положь, вообще охуеть. PM мамкин, тоже мне.
>>736055
#567 #736055
>>736054
а я тут причем
>>736049 - кун
>>736057
#568 #736057
>>736055
А, я жопой читал. Показалось, что он про "не сработаемся" сказал.
#569 #736059
>>736049

>global illumination


планирую не юзать это и обойтись только картой точечными источниками + отраженный свет на рельефе.
>>736053
я тоже не имею с этого ничего, это просто развлечение.
>>736063
#570 #736063
>>736059

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


Ночь, улица, фонарь, аптека,
Бессмысленный и тусклый свет.
Живи еще хоть четверть века -
Все будет так. Исхода нет.

Умрешь - начнешь опять сначала
И повторится все, как встарь:
Ночь, ледяная рябь канала,
Аптека, улица, фонарь.
>>736066
#571 #736066
>>736063
ну не фонарь, а n фонарей..
да и блики тоже придадут чего-то.
ну я просто хочу гдноты напилить а не кукарекать на 2ч что я капчюю и занят и в случае монетизации игори она пойдет всем разрабам тебе решать пробовать или нет.
#572 #736082
хотя вы правы. зачем мне команда кодеров? можно же одному лампово!
>>736085
#573 #736085
>>736082
Запилил бы 2d. Хороший 2d лучше плохого 3d
>>736086
#574 #736086
>>736085
стилистика 3д будет не реалистичная и в 2D слишком простой матан чтобы я брался за него
>>736088
#575 #736088
>>736086
Ой да один и тот же там матан. Хочешь матан - пили физический двиг.
>>736089
#576 #736089
>>736088
игру с нуля пишу. как велик челенж опыт
>>736092
#577 #736092
>>736089
Да это понятно.
Матан кстати скинь на SSE регистры. На собеседовании это будет плюсом.
>>736095
#578 #736095
>>736092
А за это спасибо! чайку тебе анон
в планах небыло смотреть в инструкции.
брал всё в лоб в целях портируемости на мипсы и армелы, но стоит поигратся с бранчами на этой фигне
468 Кб, 2560x2048
#579 #736239
Не дождался переката. Надеюсь 1.5 анона, оставшихся в тонущем, достаточно компетентные.

Вопрос: Какую посоветуете книгу по специфике крестов для человека с большим опытом C, Java, Scala (и знанием еще шести языков). На крестах, вроде, неплохо читаю чужой код (не уверен насколько идиоматичный был код, что мне в разное время попадался).
Мне нужно максимально быстро пройти фазу вкатывания и начать лепить продакшн код так, чтобы никто не заподозрил, что я последний раз (кажется безуспешно) пытался изучать кресты лет так 1Х (не будем уточнять) назад.

P.S.: Тред со среды висит неперекатанный, это вообще типично для ОПа? Сколько часов/дней/месяцев это у него обычно длится?
#580 #736243
>>736239
Страуструп "The C++ Programming Language".
#581 #736247
Наверно, достаточно отдаленный от самого языка вопрос, но все же задам тут. Вот получается, читаю я тут книги, поглощаю информацию (бесполезную в том числе), но а потом-то что. Сначала мидл-не мидл, хуй поймИ, потом еще что-то, а в конце у погромистов что? Сеньор?
Что этот снеьор должен уметь? Я так посмотрел, что область применения многих языков очень обширная и быть шарящим типом во всех этих областях не просто нереально. Так куда теперь идти более перспективно. Вот посмотрел ы кьют - ну это путь просто в гуй, а гуй - на губе хуй, какие там могут быть сеньоры?! Не видел ни одного объявления, чтобы требовался сеньор в области разработки гуев, наверно, это ближе к дизайнерам. Значит от кьюта надо отходить и брать его как дополнительный инструмент.
Даться в сети, бд -а там что, ну написал я обертки для tcp/udp стеков, и что дальше-то? Опять какой-то тупик и дорога не сказать, что бы длинная была. Бд - тут уже пошире область, все же очень много баз данных со своими реляционными подъебками и внутренними особенностями (крипты и прочая хуйня, в которую я особо не вникал).
Графика, вычисления на видеокартах - вроде неплохо, но идти долго, и стоит ли оно того?
Подскажите, посоны, вообще не могу разобраться в себе сейчас. Все это осиливаемо, конечно, при приложении некоторых усилий, но будут ли они стоить разультата?! Что вообще нужно знать и уметь, чтобы ебу дать в начале, а потом в ус не дуть и жить припеваючи, не хочется работать обычным погромистом всю жизнь, ведь я вот смотрел, как в некоторой конторе работали главные инженеры - они были как саппорт для тех, кто по-ниже и делились своим опытом, вот в чем их работа состояла, принимали на оценку результаты и давали добро/браковали результаты - потому что они могут, скилловички, так сказать и это небезосновательно, что в них нуждается та контора.
#582 #736259
>>736239

> Надеюсь 1.5 анона, оставшихся в тонущем, достаточно компетентные.


> Только после бамплимита стали появляться полотна текстов

#583 #736282
>>736239
Вообще не понимаю вопросов. Ты - типок, у которого большой опыт на С, Java, Scala, спрашиваешь как выучить C++? Типа такой опытный, но не шаришь, как новую технологию нужно изучать? Значит не такой уж ты и опытный.
>>736367
520 Кб, 2007x1474
#584 #736291
>>735893
>>735823
>>735723
Доброджвач.. :3

>можешь просто в каждом файле написать объявление extern vector<resource> Resources; и использовать его. А в каком-то одном файле (например, main.cpp) его определить, написав vector<resource> Resources; Это будет прекрасно работать.


И таки работает. За счет понимания дело пойдет легче.
tnx o/

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


С непривычки путаюсь в них, пока стараюсь избегать.

С главным мейн понятно. Печально, что из-за локальных методов всяких window, event, не удается вынести развесистые ветки кода из главное функции, хотя среда и поиск частично решают проблему навигации на "главном поле".

>для тебя специально придумали классы


Там, где классы уменьшают количество кода и упрощают дальнейшее редактирование, по возможности использую их. Вроде как могильные кресты это СВОБОДА ВЫБОРА.

>не пиши в процедурном стиле


>в крайнем случае используй синглтон


Пока, на 2к строках, не понимаю, зачем мне ради небольшого порядка, переписывать и раздувать код. Может позднее придет понимание.
#585 #736367
>>736282
Я не спрашивал "как учить?" (идиотский вопрос).

Я спрашиваю конкретно об отличиях крестов от перечисленных языков и о том какая из книг (перечисленных в ОП-посте или других) лучше всего раскрывает конкретно эту тему, не отвлекаясь на повторение всего, что есть в С и общие рассуждения о ООП и паттернах проектирования. Спрашиваю у тех, кто прочел не одни книгу, понимает их различия и может что-то порекомендовать конкретно для моего случая.
>>736409
35 Кб, 600x596
#586 #736384
Как же хочется перекатика.
>>736418
#587 #736409
>>736367
Ой, ну какой случай-то, блядь?! Ты освоил столько технологий и не можешь самостоятельно определиться с литературой? Или для тебя являются загадкой, что нужно найти список фич языка и понять, какие фундаментальные подходы представлены этими фичами? cppreference и в путь.

P.S. Не думай, пожалуйста, что я просто так к тебе тут доебываюсь. Просто выглядит это так, будто ты сильно себя переоцениваешь в профессиональном плане. А когда не осознаешь, что ты нуб, то трудно профессионально развиваться.
>>736461
#588 #736418
>>736384

>Как же хочется перекатика.


Либо пили сам, либо не ной
#589 #736461
>>736409

>cppreference


Годная вещь. Уже читаю. Но там все вперемешку (как и, наверное, должно быть в справочнике). Где-то половина или третья часть из С. А некоторые базовые вещи слишком сухо описаны. Например, чем template отличается от дженерика в Java. В принципе, наверное, возможно по ней изучить язык (кое-как), но хотелось бы последовательного изложения всех базовых концепций, начиная с того места, где заканчивается C.

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


Норм. Был бы реально нуб, тогда бы напрягся от этого. Согласен на счет опасности собственной переоценки.
Переоценка у меня случилась в том плане, что я возомнил о себе, что с таким опытом, кресты у меня уже "в кармане". Я не заложил в сроки проекта время на изучение ЯП, чувствую, скоро начну выбиваться из графика из-за этого.
>>736463>>736471
#590 #736463
>>736461
Наверни Мейерса "Effective c++" там упор делается на высокоуровневые вещи, шаблоны и прочее метопрограммирование, как раз то, что тебе нужно.
>>736492
#591 #736471
>>736461
Читай страуструпа, если нужно последовательное описание языка. Везде описывает мотивацию для каждой фичи
#592 #736474
что можно прочитать за шаблоны углубленно? не могу в английский.
>>736492
#593 #736492
#594 #736494
>>736513
#595 #736513
>>736494
ты точно оп? шапка то говно
91 Кб, 600x399
#596 #736580
Антуан, гугл не помог. Всеми горячо любимый SFML не хочет рисовать спрайт из вектора.

Есть класс для всяких игровых объектов.
Его конструктор: хуевина(имя, координаты, путь к текстуре).

Класс содержит метод для текстурирования спрайта без конструктора:
http://pastebin.com/TYA8GvTr

Есть вектор объектов:
extern vector<Obj> objects;

Далее проще с кодом и подсветкой:
http://pastebin.com/2Zuhjc0n

Собственно, строка window.draw(objects[0].sprite); крашит приложение, без нее все запускается и рисуется.

При наведении в иде на sprite в
Portal.sprite
и
objects[0].sprite

показывается одно и тоже. В чем может быть причина краша?
>>736582>>736590
#597 #736582
>>736580
Это не я >>736036
>>736583
238 Кб, 550x367
#598 #736583
>>736582
это ты
>>736585
#599 #736585
>>736583
зачем пририсовал велик? я ещё не написал его, дурашка!
#600 #736590
>>736580
как вектор инициализируешь? держи указатели на Obj в векторе, а лучше shared_ptr.
#601 #736591
так мы ждем опа или в не официальный перекат?!
>>736592
#602 #736592
>>736591
Тебе тут плохо без лабодрочеров?
>>736593
#603 #736593
>>736592
да нет, лампово
29 Кб, 800x451
#604 #736598
>>736590
Определение
vector<Obj> objects;

Сейчас сменил декларацию и определение на:
extern vector<Obj> objects;
vector<Obj
> objects;

Начало выдавать error C2228, поправил, вызываю
window.draw(objects[0]->sprite);

тоже самое, ошибок нет, но приложение крашится.
#605 #736599
>>736598
макаба зачем-то скукожила пост %- - - - - - - - - - - -- - - - - - - -- - - -- - - - - - -- - - -%%
#606 #736600
>>736598
Этот же пост, пизданутая макаба
http://pastebin.com/WhZyPVHD
#607 #736602
>>736598
Нихера не понял. Создавай так:
// header
Game()
{
Game();
std::vector<Obj> _gameObj;
}

// cpp
Game::Game()
{
_gameObj.emplace_back(Name, X, Y, Z, Path);
}
>>736603>>736901
#608 #736603
>>736602

>крашится без ошибок


и что это вообще значит?
>>736901
#609 #736604
>>736598
Понял. Ты память под вектор не выделил.
std::vector<Obj> _gameObj(10); // 10 игровых объекта

Почитай книги из шапки.
#610 #736605
>>736604
ну только в конструктор там передавай.
Ну ты понял. Надеюсь.
#611 #736741
>>736604
>>736590
Дебил, лучше сам эти книги почитай. Советуешь хуету какую-то.
#612 #736743
Пиздец, проигрываю с таких аутистов. Еще сами нихера не шарят, зато уже бегут на двачик советовать парашу таким же школьникам.
#613 #736895
Напомните всякую невесёлую хуйня которая не противоречит стандарту и может новичкам в понимании работы кода. Типа 3[a] или параметр компиляция для двух стеков — один для коллбеков, другой для промежуточных данных.
#614 #736901
>>736602

>Game()


>{


>Game();


>std::vector<Obj> _gameObj;


>}


Что это?

>>736603
Исполняемый собирается без ошибок, при запуске закрывается без объяснений.

>>736604

>Ты память под вектор не выделил


выделял:
objects.reserve(9000);

На всякий, с указателями попробовал и так:

vector<Obj*> objects(9000);

Ничего не меняется.

>>736590
Только сейчас заметил, теперь исполняемый крашится даже от присваивания через
objects[0]->x = 64;
т.е. раньше с objects[0].x = 64; программа не закрывалась.

Нафига сейчас эта запись через указатели?

Если убрать всякие objects[0]-> и рисовать через конструктор, то
window.draw(Portal.sprite);
По прежнему рисуется без проблем.

Пока гляну книгу, может пояснит за указатели(от которых пока больше проблем, да и синтаксис через -> как-то не радует)
#614 #736901
>>736602

>Game()


>{


>Game();


>std::vector<Obj> _gameObj;


>}


Что это?

>>736603
Исполняемый собирается без ошибок, при запуске закрывается без объяснений.

>>736604

>Ты память под вектор не выделил


выделял:
objects.reserve(9000);

На всякий, с указателями попробовал и так:

vector<Obj*> objects(9000);

Ничего не меняется.

>>736590
Только сейчас заметил, теперь исполняемый крашится даже от присваивания через
objects[0]->x = 64;
т.е. раньше с objects[0].x = 64; программа не закрывалась.

Нафига сейчас эта запись через указатели?

Если убрать всякие objects[0]-> и рисовать через конструктор, то
window.draw(Portal.sprite);
По прежнему рисуется без проблем.

Пока гляну книгу, может пояснит за указатели(от которых пока больше проблем, да и синтаксис через -> как-то не радует)
>>736923
#616 #736959
Нахуя ты заставляешь его РЕЗЕРВИРОВАТЬ ПАМЯТЬ ДЛЯ ВЕКТОРА, ты ебанутый?
>>736973>>736994
#617 #736971
Дебильный вопрос
есть вложения инклудов:
lib3 -> lib2 -> lib1;
в lib3 находится class3, lib2 - class2;
мне нужно сделать методы class2 доступными class3 через френдли, но при компиляции происходит ошибка, мол, lib3 ничего не знает про lib2;
как это грамотно реализовать?
>>736976>>737054
#618 #736973
>>736959
Я никого ничего не заставляю.
А что плохого в >РЕЗЕРВИРОВАТЬ ПАМЯТЬ ДЛЯ ВЕКТОРА
Почему бы за один раз не аллоцировать столько памяти, сколько нужно? Тем более он точно знает сколько у него объектов.
>>737013
#619 #736976
>>736971
Каждая либа должна делать свое дело независимо от другой.
Тут, априори, не очень хорошая архитектура.
Переделывай.
>>736980
#620 #736980
>>736976
Окей, тогда поставлю вопрос так:
У меня есть ебучий сервак, на котором я запиливаю мультитрединг, естесственно, описание класса треда должно быть в отдельной либе.
Я запихиваю в статические поинтеры либы треда нужные контейнеры и прочее.
Теперь нужно допилить еще и вызов методов самого сервака, во время выполнения треда.
http://www.bogotobogo.com/Qt/Qt5_QTcpServer_QThreadPool_Multithreaded_Client_Server.php
Да, я пишу это говно на кьюте, можете обоссать. Да, кьютоблядь - не человек, не могущий в основы.
>>736981>>737135
#621 #736981
>>736980
Я нихуя не понял.

Объясни подробно и по человечески.
>>736984
18 Кб, 728x90
#622 #736984
>>736981
Статю просмотри, мне нужен мультитрединг на сервере.
После обработки сигнала incomingConnection(qintptr SHandle)
По статейке должен запускаться отдельный тред в пуле.
Пишу реализацию треда - тред должен обрабатывать входящие данные сокета, окей - добавил статическийй поинтер на структуру изеров. Теперь мне нужно вызывать методы самого сервера, как это сделать грамотно.
Спасибо, Абу!
>>736988
#623 #736988
>>736984

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


Берешь и вызываешь метод, в чем проблема то, я не понимаю?

Экземпляры обработчиков, которые в тредах - не знают как найти сервер? Ты не можешь им передать указатель на сервер?
>>737008
#624 #736994
>>736959
Чтобы не было реаллокации, это дорохо.
#625 #737008
>>736988

>Ты не можешь им передать указатель на сервер?


ДАА
ПОТОМУ ЧТО Я НЕ МОГУ ОБЪЯСНИТЬ КЛАССУ ТРЕДА О ТОМ, ЧТО СУЩЕСТВУЕТ КЛАСС СЕРВЕРА, ПОТОМУ ЧТО ОНИ НАХОДЯТСЯ

>lib3 -> lib2 -> lib1;


>в lib3 находится class3, lib2 - class2;

>>737011
#626 #737011
>>737008
Я ваще не понял, нахуй тебе класс треда?
Ты че, от QThread наследовался? Коль так - то нахуя?

Что мешает тебе сделать

class MyServer;

class MyClient: QObject {
.....
};
>>737016
#627 #737013
>>736973
>>736973
Потому что для этого есть array, ебанат.
>>737029
#628 #737016
>>737011

>нахуй тебе класс треда?


Эмм.. делал по примеру, я же говорю делал по статейке
сервер наследован от QTcpServer, в классе сервера есть указатель QthreadPool; при срабатывании incomingConnection() - происходит примерно следущее (ПО СТАТЬЕ, Я НЕ ЗНАЮ ПРАВИЛЬНО ЛИ ЭТО ДЕЛАТЬ В СЕРЬЕЗНЫХ ПРОЕКТАХ)
void SERVER::incomingConnection(qintptr SHandle) {
Runnable *task = new Runnable();
task->setAutoDelete(true);

task->socketDescriptor = handle;

pool->start(task);
qDebug() << "Pool started";
}
Получается, что сам тред должен быть классом. Вот и пилю. Я бы с радостью просто передал классу треда указатель на инстанс сервера и все. Только я не знаю, как объяснить ему что такой класс существует
>>737020
#629 #737020
>>737016

>Только я не знаю, как объяснить ему что такой класс существует



Но я же выше написал, блять!

В хедере клиента - выше пишешь class MyServer;
В его цпп - делаешь инклуд.
И передай классу указатель. Или заебень сервер синглтоном - в Qt даже средства для этого есть, правда сходу не вспомню - какой-то макрос и класс.

Блять, да ты своему классу можешь даже скормить указатель на QObject своего сервера - чтобы дернуть его методы даже кастовать к нужному классу необязательно - были бы они слотами.
#630 #737029
>>737013

>Хранить кучу игровых объектов на стеке


Ты откуда в этом треде взялся?
>>737100
#631 #737054
>>736971
Для того чтобы сделать класс другом достаточно его декларации. В хедере третьего класса делаешь forward declaration второго. В файле реализации третьего класса инклюдишь хедер второго класса. Если у тебя в хедерах реализация, то ты скорее всего соснул.
#632 #737100
>>737029
>>737029
Ебанат, как структура данных диктует тебе, где хранить данные? Тебе религия запрещает array указателей пилить? ТЫ откуда взялся здесь, даунько? Пиздуй стандарт читать.
>>737103>>737110
#633 #737102
>>737020

>заебен синглтоном


Все, дальше с этим хуесосом вести беседу вообще не стоит.
>>737104
#634 #737103
>>737100

> array указателей пилить


Проблемы с фрагментацией и кэшированием.
>>737104
#635 #737104
#636 #737110
>>737100
Чего ты несешь? Где в стандарте написано про array указателей? Что это за бред?
Тредик скатился в говно.
>>737118
367 Кб, 781x373
#637 #737112
>>736923

> : _x(x), _y(y)


Как называется эта хуйня у конструктора?
>>737113
#638 #737113
>>737112
список инициализации
#639 #737118
>>737110
Идиот? Идиот.
#640 #737121
>>737020
Окей, я сделал как ты говорил, добавил
class Connection;
class SERVER;
в runnable.h

Ошибка.
error: invalid use of incomplete type 'class SERVER'
^
>>737124
90 Кб, 1597x844
#641 #737124
>>737121
update
>>737128
#642 #737128
>>737124
Я не знаю в чем постановка вопроса НО
Зачем ты добавляешь лишний уровень абстракции? Не логичнее просто class Server: QRunnable?
К чему этот класс пустышка с агрегацией сервера, которая вызовет ряд проблем ?
>>737131
#643 #737131
>>737128
Можно
Но я хочу так
Как мне объяснить классу Runnable, что существует класс сервер? Я думал это тривиальная детская задачка, а тут, оказалось, есть проблемы с этим
>>737148
#644 #737135
>>736980

>кьютоблядь - не человек


Я что-то прослоупочил, а на чем бояре рекомендуют писать кроссплатформенные GUI, которые бы выглядели не как школьная говноподелка и не как творчество бородатого аутиста, которым могут пользоваться только только такие же аутисты?
>>737138>>737139
#645 #737138
>>737135
Очевидное гуиблядь - не человек
#646 #737139
>>737135
Потому что плюсовик, пишущий на кьюте не проходит ту боль, которую ощущает любой другой. В кьюте все до охуения просто
#647 #737148
>>737131
Разобрался. Там свои тонкости. Пришлось писать реализацию метода Runnable в самом server.cpp.
Но зато все работает.
#648 #737152
Вот такой код:

const string s = "Sap /pr";
for (auto &c : s){ /... / }

Написано, что для c выводится тип const char&. Почему? Разве auto не отбрасывает const? Или при амперсанде в деклараторе это будет low-level const?

И еще: тут s типа const string. В объектах типа string символы наверное хранятся как char массив или что-то типа того, а если это const string объект, то по идее как const char.
Вопрос: каким образом при создании const string объекта внутри него char преобразуется в const char?
>>737164
#649 #737164
>>737152
Лол, а как ты себе представляешь константную строку, не с константными чарами?
>>737176
#650 #737176
>>737164
Вот поэтому и спрашиваю с помощью какой магии char преобразуется в const char.
>>737177>>737182
#651 #737177
>>737176
char и const char естественно
>>737179
#652 #737179
>>737177
char(звездочка) и const char(звездочка)
#653 #737182
>>737176
ничего никуда не преобразуется
когда ты пишешь класс string, ты внутри заводишь поле char *.
Когда ты создаешь константный объект типа string, то все поля внутри этого объекта становятся константными, а все функции, которые меняют состояние объекта, т.е. не помеченные как const (за исключением конструктора) не допускаются к вызову
3040 Кб, 250x250
#654 #737325
>>736923
Решил попробовать разобраться с отладчиком в mvs, часок подключал зависимые библиотеки, по итогу графическую хуевину с хулоувордом отдебажить удалось. Но на другой код в 40к символов всплывает:

Необработанное исключение по адресу 0x779C016E (ntdll.dll)

Первый этап обработки исключения по адресу 0x779D22B2 (ntdll.dll) в Debug1.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0x00000004.

гугл ведет на всякие "найдите ошибку в лабе", но у меня то релиз нормально компилируется и заводится. Как понять в чем вообще дело?
238 Кб, 811x521
#655 #737349
>>736923
Спасибо, рисуется. Можешь объяснить, почему не работает другой вариант?

Для наглядности http://ideone.com/51R2v5
#656 #737462
Есть listview в одну колонку... Есть таблица в три колонки.
Пытаюсь удалять через removeRow(int row) - почти все строки удаляются, кроме одной двух. Например, если поставить во-вторую колонку 4 - строка не удаляется, а поставишь 1 - удаляется. КАк это работает - в толк не возьму, primaryKey возвращает первую колонку, как и надо. Пиздос, в общем.
http://pastebin.com/mdvHVqrP

Кто-то может пояснить, че тут не так-то?
#657 #737640
Доброго здравия.
Я тут за структуры хотел бы поинтересоваться.
Есть такая хуйня:
http://pastebin.com/5VVA65ic

33 и 34ая строка - уже сделал отдельную переменную, один хуй не понимаю в чем проблема.

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

Выделяю под них место, получая инфу с базы.
Для первого - все проходит нормально - приходит значение "4", на "4" и расширяется.

Со вторым все идет через хуй пойми как. Он выбирает даты. Даты выбираются как обычно для qDate (daysTo) - значение "1" - все ок, capacity == 1
Но если значение больше 2 - начинается пиздец.

В функции и в конструкторе выводится "2" - он генерит "4"
В функции и в конструкторе выводится "32" - он генерит "41"

В чем беда - вообще хуй знает. Объявлены глобально в хедере, без указателей и переобъявлений - проверил.

Куда еще можно копнуть? Кроме ассистанта
34 Кб, 431x323
#658 #737748
тред перекатился
>>737769
#659 #737769
>>737748
Будешь из принципа сидеть в тонущем один?
>>737901
анон помоги, я наложал #660 #737873
В общем-то пресловутый рюкзак
вводим кол-во предметов, вместимоть рюкзака, ценность предмета, вес предмета

И код вроде бы работает, но хреново. То есть при вводе кол-во предметов - 3, вместимость - 50, дальше ценность и веса предметов 60-20, 100-50, 120-30 код пашет, но если вбить например 1 предмет, вместимость 1000, и ценность с весом 500-30, то выдает нечто рюкзак превышающее, а если вбить так же 1 предмет, вместимость 10, стоимость-вес 500-30 выдает нуль, понять не могу где налажал

#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
using namespace std;

using std::vector;

double get_optimal_value(int capacity, vector<int> weights, vector<int> values, int n) {
double value = 0.0;

int* array = new int[capacity+1];
array[0] = 0;
for(int i=1; i<=capacity; ++i) {
array = array[i-1];
for(int j=0; j<n; ++j)
if (weights[j]<=i)
array = max(array, array[i-weights[j]] + values[j]);
}
int maxCost = array[capacity];
delete[] array;
return maxCost;

return value;

}

int main() {
int n;
int capacity;
std::cin >> n >> capacity;
vector<int> values(n);
vector<int> weights(n);
for (int i = 0; i < n; i++) {
std::cin >> values >> weights;
}

double optimal_value = get_optimal_value(capacity, weights, values, n);

std::cout.precision(10);
std::cout << optimal_value << std::endl;
return 0;
}
анон помоги, я наложал #660 #737873
В общем-то пресловутый рюкзак
вводим кол-во предметов, вместимоть рюкзака, ценность предмета, вес предмета

И код вроде бы работает, но хреново. То есть при вводе кол-во предметов - 3, вместимость - 50, дальше ценность и веса предметов 60-20, 100-50, 120-30 код пашет, но если вбить например 1 предмет, вместимость 1000, и ценность с весом 500-30, то выдает нечто рюкзак превышающее, а если вбить так же 1 предмет, вместимость 10, стоимость-вес 500-30 выдает нуль, понять не могу где налажал

#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <string>
#include <iostream>
using namespace std;

using std::vector;

double get_optimal_value(int capacity, vector<int> weights, vector<int> values, int n) {
double value = 0.0;

int* array = new int[capacity+1];
array[0] = 0;
for(int i=1; i<=capacity; ++i) {
array = array[i-1];
for(int j=0; j<n; ++j)
if (weights[j]<=i)
array = max(array, array[i-weights[j]] + values[j]);
}
int maxCost = array[capacity];
delete[] array;
return maxCost;

return value;

}

int main() {
int n;
int capacity;
std::cin >> n >> capacity;
vector<int> values(n);
vector<int> weights(n);
for (int i = 0; i < n; i++) {
std::cin >> values >> weights;
}

double optimal_value = get_optimal_value(capacity, weights, values, n);

std::cout.precision(10);
std::cout << optimal_value << std::endl;
return 0;
}
>>737899>>739629
#661 #737899
>>737873
зачем вообще эта функция? В чем логика одновременно отправлять и вес и емкость?
1061 Кб, 500x281
#662 #737901
>>737769
смотри, нас как минимум трое
>>738898
#663 #738898
>>737901
я 4ый
#664 #739629
ответил бы кто-нибудь на вопросы выше.

>>737873

>double get_optimal_value


>return maxCost;


>return value;

рюкзак #665 #739983
http://pastebin.com/GunTA2wA

вот тут вроде норм код для рюкзака, но не всюду может компильнутся. Чет лажу найти найти не могу
>>740008
33 Кб, 400x400
#666 #740008
>>739983
Что значит "не всюду может компильнутся", конкретно что за ошибка/что не так?

Сформируй нормальный вопрос в не утонувшем треде ( https://2ch.hk/pr/res/736493.html (М) ), в одном том треде вероятность найти ответ будет намного выше нежели в двух тонущих.
>>740088
#667 #740088
>>740008
и пикчу ашел под 666.. ай
Вопрос от нуба #668 #742024
Почему наследник приводится к базовому классу неявно, а базовый класс к наследнику - явно? Ведь наследник как бы содержит в себе базовый класс и по идее приведение базового класса к наследнику должно быть неявным. И вообще дайте подробности про приведения. Спасибо.
#669 #747930
>>728191
А у Страпструпа прикольно, 84 страницы просто идет вступление.
Тред утонул или удален.
Это копия, сохраненная 23 мая 2016 года.

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

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