Сохранен 508
https://2ch.hk/pr/res/546742.html
Прошлые домены больше не функционируют, используйте адрес ARHIVACH.HK.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Оффициальный™ традиционный® C++ тред #7

 Аноним 21/09/15 Пнд 14:29:29 #1 №546742 
14428349696820.webm
"... Жалчайший род, чей жребий несчастливый
И молвить трудно. Ты на костыле
Вновь самокат приладил, нечестивый!"

Мы оказались в метафункций мгле.
Стонало эхо крестоблядков голосами,
Увязших в коде, как комар в смоле.

Взглянув окрест, я вмиг поник глазами:
Шаблоны, источая тяжкий смрад,
Лежали над несчастными пластами.

Внизу ж, суливших, что определят
В compile-time размер факториала,
Толпа, снося ошибок жутких град,

Сквозь стон Александреску проклинала.


Литература:

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

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

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

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

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

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

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

Блоги:

Годный блог, в котором все просто и понятно тян не нужны кококок борщ - http://alenacpp.blogspot.ru/
Краткие описания библиотечных функций и контейнеров - http://ru.cppreference.com/w/
Блог Герба Саттера (на ангельском) - http://herbsutter.com/
Блог Скотта Мейерса (на ангельском) - http://scottmeyers.blogspot.ru/

Куда писать код:

Под шиндошс удобно использовать IDE Microsoft™ Visual Studio®. Базовую версию (2015 Community) можно бесплатно скачать, следуя инструкциям с этой страницы: https://www.visualstudio.com/ru-ru/products/free-developer-offers-vs.aspx. Чтобы начать писать код, нужно запустить Visual Studio, кликнуть "Файл - Создать - Проект - Пустой проект", после создания кликнуть слева правой кнопкой мыши по пункту "Файлы исходного кода", выбрать "Добавить - Создать элемент - Файл C++". Свои хэллоуворлды писать в этот файл, в дальнейшем можно добавить другие файлы и хедеры. Чтобы скомпилировать и запустить проект, нужно нажать "Сборка - Собрать решение", а затем "Отладка - Запуск без отладки".

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

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

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

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

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

Йоба-набор библиотек, способный удовлетворить даже самые скотские фантазии - http://www.boost.org
Библиотека для удобной высокоуровневой работы с сетью - https://casablanca.codeplex.com
Простая в обращении библиотека для работы с графикой и аудио - http://www.sfml-dev.org

И многое другое - http://en.cppreference.com/w/cpp/links/libs

Памятка:

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

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

Старший брат: >>518562 (OP)
Предыдущий: >>537129 (OP)
Аноним 21/09/15 Пнд 14:30:56 #2 №546747 
Предыдущие треды на архиваче:
https://arhivach.org/thread/94971/
https://arhivach.org/thread/94972/
https://arhivach.org/thread/99414/
https://arhivach.org/thread/100995/
https://arhivach.org/thread/105148/
https://arhivach.org/thread/109335/

Страуструп для ньюфагов заменен на djvu с навигацией.
Добавлено последнее издание хардкорного Страуструпа на ангельском, Липпман для ньюфагов, книга про boost.
Структура шапки переработана.
Добавлен раздел про софт и библиотеки.
Аноним 21/09/15 Пнд 16:07:05 #3 №546822 
Хотел в крестотред на форче сходить, но не смог его найти. А когда спросил у местных выяснилось что я негр не могущий в инглиш. Где он у них?
Аноним 21/09/15 Пнд 16:16:36 #4 №546830 
>>546822
Спроси: " where i can find("Effective Modern C++")?"
Аноним 21/09/15 Пнд 16:21:23 #5 №546833 
>>546830
В их g или b? Спрашивал подобное послали на стэковерлоу.
Аноним 21/09/15 Пнд 16:27:13 #6 №546835 
Вот за книгу по бусту спасибо
Аноним 21/09/15 Пнд 16:56:56 #7 №546848 
Призывается анон, который поделился книгой про boost. Будет восхитительно, если ты хотя бы примерно сможешь вспомнить, где ее взял. Дело в том, что это одна из тех книг, которых нет в гугле и вообще в открытом доступе, и там, где ты ее нашел, может быть и другая уникальная годнота, которую следует включить в шапку.
Аноним 21/09/15 Пнд 16:59:27 #8 №546851 
>>546848
Скачал эту книгу в открытом доступе, правда, не помню откуда

Но весит она 52 МБ против трёх по ссылке анона.
Аноним 21/09/15 Пнд 17:02:44 #9 №546855 
>>546848
>>546851
http://www.allitebooks.com/learning-boost-c-libraries/ вот, нашёл 52MB-версию
Аноним 21/09/15 Пнд 17:03:54 #10 №546860 
>>546848
>>546855
Кстати, в книге анона этот сайт указан внизу каждой страницы.
Аноним 21/09/15 Пнд 17:06:39 #11 №546861 
>>546848
http://gen.lib.rus.ec/search.php?mode=last
Про генлибрусек еще не забывай, один из моих любимейших ресурсов.
Аноним 21/09/15 Пнд 17:07:33 #12 №546862 
>>546861
Ты бы хоть проверил сначала, есть ли там. Подсказка нету
Аноним 21/09/15 Пнд 17:18:42 #13 №546867 
>>546862
Ну я не говорил, что конкретно эта там есть, но я там находил достаточно много вещей, которые сложно или невозможно было достать в других местах. Извиняюсь, если зря в разговор влез.
вброшу Аноним 21/09/15 Пнд 17:48:23 #14 №546884 
https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md
Аноним 21/09/15 Пнд 17:50:27 #15 №546885 
>>546867
Да нет, что ты, речь как раз шла не про эту книжку, а про МОАР. Вообще, чем больше анон запилит ссылок на книги, тем лучше, потому что я пролистываю каждую новую встреченную библиотеку в поисках книг, которые могли бы хорошо для шапки подойти, и вообще.
Аноним 21/09/15 Пнд 18:12:14 #16 №546893 
14428483344810.png
Посмотрел про переполнение стэка. Как он заполняется? Есть например простой хэлоувод с выходом за границы массива. Как не запуская программу узнать какие данные будут перезаписаны?
Аноним 21/09/15 Пнд 18:27:03 #17 №546904 
>>546893
С точки зрения стандарта, это UB, и ничего определенного утверждать нельзя. По стандарту компилятор вообще может не использовать стек, например ну вдруг какой-то извращенец напишет что-то подобное только чтобы поднасрать тем, кто не читает стандарт. На практике переменные кладутся в стек в порядке определения, так что если у тебя твой массив определен самым первым в функции, то сразу за ним будет адрес возврата, плюс-минус выравнивание. Но опять же, надо учитывать, что функция может инлайниться, что используемое соглашение о вызовах может предполагать передачу адреса возврата через регистры, ну ты понел. Так что нужно смотреть конкретную платформу, компилятор и его параметры, чтобы сказать абсолютно точно.
Аноним 21/09/15 Пнд 18:32:25 #18 №546906 
>>546904
Это же всё делается на этапе компиляции. Может есть программки которые показывают как выглядит память?
Аноним 21/09/15 Пнд 18:39:26 #19 №546910 
>>546906
Есть. Отладчики называются, но только тсссс!
Аноним 21/09/15 Пнд 18:42:14 #20 №546911 
>>546910
Можно инструкцию как им пользоваться?
Аноним 21/09/15 Пнд 18:51:50 #21 №546915 
>>546911
Это сильно зависит от того, какой отладчик. Например, в gdb я до сих пор не могу и буду рад, если анон распишет за него или даст рилейтед ссылок. В Visual Studio просто включаешь режим отладки, и тебе показывается графически вся память ячейками, например.
Аноним 21/09/15 Пнд 18:55:10 #22 №546918 
>>546915
>gdb
У меня линукс, gcc, кодблокс и консоль на эту команду отзывается. Скорее всего он у меня и стоит. Что же тогда делать?
Аноним 21/09/15 Пнд 18:57:08 #23 №546919 
>>546918
man gdb, как вариант ну а хуле делать, раз такая безысходность? Еще вот такое есть, но я ниасилил: http://rus-linux.net/nlib.php?name=/MyLDP/algol/gdb/otladka-s-gdb.html
Аноним 21/09/15 Пнд 18:58:30 #24 №546920 
14428511103620.png
Анон, что ему не нравится?
Аноним 21/09/15 Пнд 19:00:45 #25 №546923 
>>546920
Кто ж вас так негибко учил makefile-ы писать?
Аноним 21/09/15 Пнд 19:01:47 #26 №546924 
>>546923
Никто, очевидно же!
Аноним 21/09/15 Пнд 19:04:07 #27 №546926 
>>546919
Бля. Язык учить проще чем этот отладчик. Там же не набор статей, а целая книга.
Аноним 21/09/15 Пнд 19:05:36 #28 №546927 
>>546918
http://stackoverflow.com/q/2770889

Обрати внимание не только на подтверждённый ответ, но и на следующий.
Аноним 21/09/15 Пнд 19:10:17 #29 №546934 
>>546927
Отлично спасибо. Теперь бы ещё короткий гайд где написано куда эти команды писать.
Аноним 21/09/15 Пнд 19:16:55 #30 №546936 
>>546934
сюда https://www.coursera.org/course/softwaresec подпишись, там первый проект — лаба по атакам на переполнение буфера: нужно правильно испортить стек, чтобы "взломать" программу.

В лабе использование gdb по шагам описывается.
Аноним 21/09/15 Пнд 19:22:54 #31 №546942 
>>546937
WHOAMI
Аноним 21/09/15 Пнд 20:10:48 #32 №546970 
Есть пара вопростов
1-
Я не могу читать книги по 500 странпиц. Я "тур по с++" в 190 страниц 2 месяца читал. Как с этим бороться?
2-
В какую интересную сферу я могу вкатиться зная с++ ?
Аноним 21/09/15 Пнд 20:17:33 #33 №546972 
>>546970
Учись быстро читать.
Аноним 21/09/15 Пнд 20:17:35 #34 №546973 
>>546970
>500
Где ты такие короткие книги видел-то? Во всех нормальных от тысячи страниц, и это еще либо не все аспекты языка, либо сжато.
Аноним 21/09/15 Пнд 20:20:02 #35 №546976 
>>546973
Я из головы цифру взял.

>>546972
Быстро читаешь - нихуя не понимаешь.
Аноним 21/09/15 Пнд 20:25:43 #36 №546981 
14428563441280.png
>>546970
Представь, что Гарри Поттера читаешь.
Аноним 21/09/15 Пнд 20:33:37 #37 №546985 
>>546976
Быстро читаешь - формируешь в голове карту знаний с белыми пятнами, которые потом заполняешь. Причем, в разных книжках одни и те же факты (самые важные и распространенные) повторяются. Читая одну книгу медленно, у тебя нет карты, поэтому мозгу тяжело строить ассоциации, ты не можешь отличить важные факты от второстепенных, и в итоге имеешь проблемы.
Аноним 21/09/15 Пнд 20:37:22 #38 №546992 
Т.е. 2 раза прочитать одну и ту же книгу быстро во много раз лучше, чем читать ее же, но в 2 раза медленнее. В реальности все намного хуже - книга на 500 страниц читается за 2 вечера, а ты ее растягиваешь на 2 месяца. Ты бы ее раз 10 прочитал бы за это время, если бы хотел, и понял бы намного больше.
Чтение - это процесс загрузки данных в мозг, который потом эти данные переваривает, обычно нужно поспать, а ты ждешь мгновенного ПОНИМАНИЯ здесь и сейчас.
Аноним 21/09/15 Пнд 20:37:23 #39 №546993 
>>546970
>Я "тур по с++" в 190 страниц 2 месяца читал.
Ну и ладно. Теперь можно взять Мейерса, например Defective modern C++.

А эти книги по 1000 страниц они же для вообще дебильчиков, которым объясняют, зачем циклы нужны и прочее такое.
Аноним 21/09/15 Пнд 20:44:23 #40 №546998 
>>546993
>для дебильчиков
А как же Джоссатис?
Аноним 21/09/15 Пнд 20:46:32 #41 №547001 
>>546998
А что Джоссатис?
Аноним 21/09/15 Пнд 20:49:56 #42 №547008 
>>547001
Там больше тысячи страниц, но это не очередной обзор языка для чайников. STL глубоко весьма расписывается, и аналогов у книжки вообще нет.
Аноним 21/09/15 Пнд 21:01:26 #43 №547017 
>>547008
Я уже спрашивал тут, но спрошу снова. Через пол года олимпиада и нужно задротить алгоритмы. Прочитал хуй знает зачем. ни с кем не советовался две книги страуструпа почти нихуя не понял но это отдельная тема там ещё задания ебанутые и заканчиваю лафоре. Нужно хорошо знать STL и алгоритмы. Теперь даже сортировку с помощью функции из стандартной библиотеки сделать не могу не залезая в гугл. И алгоритмы плохо знаю. Для STL и заодно 11ого стандарта советовали Джоссатиса второе издание. А алгоритмы Седжвик. Не могу решить с чего начать когда закончу лафоре.
C++ How to Program Аноним 21/09/15 Пнд 21:04:07 #44 №547019 
Аноны, что можете сказать о книге Дейтелов "Как программировать на C++"?
Аноним 21/09/15 Пнд 21:04:40 #45 №547021 
>>547017
О, анон, я тоже планирую учавствовать в олимпиадах. Кинь фейкомыльце, может чем поможем друг-другу. Алсо как на счет заданий прошлых лет?
Аноним 21/09/15 Пнд 21:11:36 #46 №547027 
>>546848
http://theboostcpplibraries.com/
Аноним 21/09/15 Пнд 21:15:12 #47 №547028 
>>547021
Язык и алгоритмы ещё не знаю поэтому вряд ли помогу и почта это неудобно. Но если хочешь лови. alkkoloto(собака)yandex.ru
Аноним 21/09/15 Пнд 21:46:48 #48 №547060 
Господа, нид асистанс! Объясните пазязя по-фасту, за область памяти под названием стек и свободное хранилище памяти. У С.Праты по местной книге в главе 9 об этом рассказано несколько путано - нихера не понял
Аноним 21/09/15 Пнд 22:22:18 #49 №547073 
>>547060
http://bfy.tw/1u69
Аноним 21/09/15 Пнд 22:29:26 #50 №547080 
>>547073
Во мудак-то
мимо
Аноним 21/09/15 Пнд 22:39:12 #51 №547089 
>>546993
Согласен, не люблю очевидные вещи по несколько раз читать.
Аноним 21/09/15 Пнд 22:53:32 #52 №547094 
>>546742 (OP)
подскажите как реализовать на С++ класс "Множество размерности n" с разными функциями, присущими множествам(пересечение, умножение, проверка, входит ли элемент в множество)?
Аноним 21/09/15 Пнд 23:04:16 #53 №547102 
>>547094
Для малых n - на отсортированном vector, для больших - на хэше (в стандартной библиотеке set::unordered_set) или красно-черном дереве (std::set). Правда, подозреваю, что ты хочешь, чтобы мы за тебя лабу сделали.
Аноним 22/09/15 Втр 01:08:26 #54 №547147 
Ребятки, давайте замутим конфач для С++ илиты в телеграме? Для вопросов/ответов, размешивания правды матки за компиляторы и бусты, как вам идея?
Аноним 22/09/15 Втр 01:17:42 #55 №547152 
>>547147
Этот тред и так мёртвый, зачем ещё и конфа в полуненужном телеграмме?
Аноним 22/09/15 Втр 01:25:56 #56 №547154 
>>547152
ЧТОБЫ ОЖИВИТЬ ТРЕД!
Аноним 22/09/15 Втр 01:41:50 #57 №547158 
>>547147
Я бы предпочёл борду в виде графа постов. Чтобы можно было отметить интересные ветки обсуждения и непринуждённо форкать треды, дабы не читать школовопросы и обкидывания говнами.
Аноним 22/09/15 Втр 02:32:17 #58 №547169 
>>547158
Блять.
Это же
ГЕНИАЛЬНО
Я бы этим занялся, но в конечном итоге будет интересно лишь нам с тобой. Без веб интерфейса же, а сейчас все в себе, все в вебе...
Аноним 22/09/15 Втр 02:33:26 #59 №547170 
>>547169
А, ну и сервера у меня тоже нет
Аноним 22/09/15 Втр 03:14:13 #60 №547179 
>>547102
И по какой размерности тогда его сортировать/хэшировать? Не, тут надо как-то хитрее придумать разумеется, если множества маленькие, то похуй вообще.
Аноним 22/09/15 Втр 03:15:41 #61 №547180 
>>547170
>>547169
В соседнем треде пилят распределенную борду, можно примазаться. Я бы занялся подобном, если найдется хотя бы 2-3 коллеги, которые не будут хуи пинать, сваливая друг на друга всю работу.
мимотретий анон
Аноним 22/09/15 Втр 03:23:10 #62 №547181 
Я с удовольствием, как раз хуи пинаю, не знаю, куда примкнуть.
Где можно скооперироваться, набросать диздок/видение цели/тз?
Аноним 22/09/15 Втр 03:32:44 #63 №547182 
>>547181
https://2ch.hk/pr/res/538172.html Они разогреваются пока что, а потом, наверное, будет конфа или что-то вроде того.
Аноним 22/09/15 Втр 03:41:09 #64 №547184 
>>547182
Я только оттуда, больше не вернусь, обычный скайп без конструктивизма.
Моё мнение - асинхронность и P2P - от лукавого, графы и система отбора -то, во что нужно бить.
И вообще, это должно быть /pr/ ориентированным.
Аноним 22/09/15 Втр 03:48:32 #65 №547186 
>>547184
Срач*
Запил мегаборды-убийцы Аноним 22/09/15 Втр 04:31:58 #66 №547191 
14428855183310.jpg
Отмечайтесь, хуле.
https://docs.google.com/forms/d/1edTMni3lh3Xh4MYE3sCRiv9bKqSpIix0Bh8ooTVWN3Q/viewform?usp=send_form
Аноним 22/09/15 Втр 05:17:29 #67 №547193 
>>547191
План действий такой:
1. Техлиды с сеньорами расписывают гуглодок с техзаданием. МАКСИМУМ разделяем всю работу на компоненты, выясняем способы взаимодействия этих компонент (CFFI, pipes, middleware, etc).
2. Каждому вручаем по компоненту с ясно озвученными минимальными требованиями, лишь бы хоть как-нибудь работало. Он выполняет этот компонент на своём любимом ЯП (желательно конечно ограничиться 2-3 на весь проект).
3. Организуем автоматическую сборку проекта. В итоге получаем суперсырой первый билд.
4. Заводим багтрекер и расписываем путь развития проекта. Каждый берёт себе какие хочет задачки и делает.
5. Каждый месяц релизим очередную версию.

Очень желательно запилить всё в переиспользуемой манере, так как срач p2p vs server неминуем.

Бабки на хостинг будем собирать когда запилится самая первая версия.
Аноним 22/09/15 Втр 05:30:01 #68 №547194 
>>547191
Все ссылки пока что в соседнем листе с результатами переписи, пописать в гуглодок можно уже сейчас. Туда же попадут гитхабы-битбакеты и прочие данные. Если наберётся достаточно народа, или у меня лично будет дохуя терпения, запилим отдельный координационно-агитирующий тред.
Аноним 22/09/15 Втр 06:15:38 #69 №547200 
>>547181
>ссылки в соседнем листе с результатами переписи, пописать в гуглодок можно уже сейчас
>>547184
Закатывайся, будем пилить универсальный код и отделять компоненты. Там процентов 70 будет одинаковое.
>>547169
>Без веб интерфейса
Можно без, а можно и с. Как вариант запускать локальный сервер и открывать браузером. Ну и декстопы-мобилки в опроснике стоят отдельно, опять же, интерфейс можно запилить один раз, а потом подключить его к п2п модулю или апи сервера.
Аноним 22/09/15 Втр 07:01:38 #70 №547202 
>>547193
Срач уже здесь. Ты ведь не будешь спорить, что для взлета у борды должна быть киллер-фича? Так вот, способ представления в виде графов и форканье на таковую явно не тянут, это как если бы ресторан позиционировал себя не имеющим аналогов потому что у них у ложек ручки длиннее. Надо, чтобы от сотен остальных борд отличалось резко, смекаешь? К тому же, есть дохуя анонов, которые хотят постить цп и всякие непотребства и вынуждены жрать говно на медленном хидденчане. С этих джвух позиций выбор p2p очевиден, оно станет той самой недостающей изюминкой. А графы будут приятным бонусом.
Аноним 22/09/15 Втр 07:07:19 #71 №547203 
>>547202
>ь дохуя анонов, которые хотят постить цп и всякие непотребства
Вот уж кто нахуй не нужен.
Аноним 22/09/15 Втр 07:11:57 #72 №547204 
>>547202
Ну а я и не против этого срача. Только я предлагаю уже начать напиливать хотя бы общее. Договориться с компонентами и апи. А потом как из конструктора каждый сам себе соберёт.
Аноним 22/09/15 Втр 07:21:02 #73 №547205 
>>547203
Возможность лучше отсутствия возможности. Аудиторию это привлечет, а законопослушные аноны всегда могут скрыть неугодный контент. Можно алсо сделать теги специально для этого, или типа того.
Аноним 22/09/15 Втр 07:23:04 #74 №547206 
А есть гуглодок? Я только форму нашел, ебаться с почтами неудобно жи. Лучше на начальном этапе сделать гуглодок, в который каждый насрет напишет свои идеи и вообще.
Аноним 22/09/15 Втр 07:25:04 #75 №547207 
>>547206
Есть. Форму заполняешь, выдаёт ссылку со списком гуглодоков. Только что настроил.
Аноним 22/09/15 Втр 08:28:54 #76 №547216 
Высрал приблизительную архитектуру под всё сразу. Далее надо детализировать каждый блок.
Аноним 22/09/15 Втр 09:14:01 #77 №547224 
Неужели двощ на что-то способен
Аноним 22/09/15 Втр 09:33:14 #78 №547227 
14429035945790.png
14429035945801.png
Аноним 22/09/15 Втр 11:45:02 #79 №547260 
Граждане, а накидайте пример использования буфера для потока std::istream is, а то на en.cppreference.com и cplusplus.com как-то не совсем то и непонятно. Ситуация следующая:

std::string line;
std::getline(is, line);

if (is.eof() && !is.fail())
{
is.clear();
line += '\n';
//here I want put line back in istream -- may be using a buffer
std::getline(is, line);
}

Объясняю, почему нельзя просто просто в обратном порядке побросать все символы строки, начиная с '\n' и заканчивая line[0]: потому что is передаётся в функцию по ссылке и открыт только на чтение (чтобы если это файл, то не менять его, иначе в конец файла '\n' добавится, а файл нужно не менять). Просто сдвинуть seekg() на line.size() назад тоже не вариант, т.к. нужно прочесть line += '\n'.

Зачем это нужно? Объяснять очень долго, MAGIC
Аноним 22/09/15 Втр 12:24:22 #80 №547267 
>>547260
Ну хорошо, давайте вместе попробуем разобраться. Здесь http://www.cplusplus.com/reference/streambuf/streambuf/streambuf/ вообще примера нет. Вот нашёл http://www.cplusplus.com/reference/ios/ios/rdbuf/

И там какого-то чёрта происходит следующее:
1) делается backup буфера std::cout;
2) затем в std::cout подменяется буфер с его на буфер файла psbuf;
3) в std::cout что-то пишется, и, видимо, это следует в файл;
4) в std::cout возвращается его прежний буфер.

Попробовал скомпилировать эту херню. std::cout ничего не выводит, а файл test.txt полностью переписывается на This is written to the file
Аноним 22/09/15 Втр 12:32:31 #81 №547268 
>>546742 (OP)
То есть SFINAE - это анальные трюки на шаблонах, чтобы получить типа hasattrib в бидоне?
Действительно пиздец! Нет чтобы завести нормальную рефлексию.
Аноним 22/09/15 Втр 12:36:08 #82 №547273 
>>547267
Я тут подумал. При этом cout может иметь размера буфера меньший, чем line.size() + 1. Тогда лучше просто новый отдельный буфер запилить и всё.

Он должен быть null-terminated?
Аноним 22/09/15 Втр 12:41:02 #83 №547276 
>>547268
Они замечательные, это же прям магия. Тот, кто понимает
[code lang="cpp"]
static void test ();
template <typename T>
static decltype (declval <T> ().tvoyaMamka (1488)) test ();
[/code]
, тот будет гуру, и все девки будут давать. А в пистон и дурак сможет.
Аноним 22/09/15 Втр 17:23:26 #84 №547439 
Поясните нубу, почему если а == b, то оно ничего не высчитывает, а если a <= b, то работает?

#include <iostream>
int main()
{
int a = 0;
int b = 10;
while (a == b)
{
std::cout << a;
a++;
}
}
Аноним 22/09/15 Втр 17:26:27 #85 №547440 
>>547439
Ты или вместо < написал <= , или у тебя еще какое противоречие в вопросе.
Аноним 22/09/15 Втр 17:28:38 #86 №547441 
>>547440
Почему противоречие?
Смотри, пишу while (true) {}
a == b, не выводит ничего
a <= b (или a < b) выводит
Почему?
Ведь по логике и a == b должно делать вывод пока а не станет равно б? Или я что-то не до понял?
Аноним 22/09/15 Втр 17:28:56 #87 №547442 
>>547439
Если ты тролль - съеби. Если ты реально не понимаешь, - тоже съеби, ибо такой зашкварный мозг иметь для программирования нельзя, тебе нужен новый.
%%while(a==b) выполняется, пока переменная a равна переменной b. Поскольку ноль не равен десяти, цикл не выполняется не разу.
Аноним 22/09/15 Втр 17:29:54 #88 №547444 
>>547442
>while(a==b) выполняется, пока переменная a равна переменной b. Поскольку ноль не равен десяти, цикл не выполняется не разу.
Я думал не так, но спасибо за разъяснения.
Аноним 22/09/15 Втр 18:14:38 #89 №547470 
>>547268
> завести нормальную рефлексию
с++ вообще то в машкод компилится, рефлексии в таком языке не сделать ни как
Аноним 22/09/15 Втр 18:27:01 #90 №547477 
>>547470
Про полноту по тьюрингу слышал что-то?
Аноним 22/09/15 Втр 18:57:49 #91 №547501 
14429374690870.png
Поясните ньюфагу за break, он 1 круг цикла for до линии, если сработал, или после брейка он тоже выполняет код, но цикл не продолжает?
Аноним 22/09/15 Втр 19:05:09 #92 №547509 
>>547501
Команда break выполняет мгновенный выход из текущего цикла. Программа продолжает своё выполнение с команд находящихся сразу за циклом, из которого ты вышел с помощью break.
Аноним 22/09/15 Втр 19:47:31 #93 №547543 
>>547470
Да, всё верно. И именно поэтому её возможно завезут в C++17.
Аноним 22/09/15 Втр 20:08:15 #94 №547555 
http://habrahabr.ru/post/267413/
Смотрите, посоны, что нам Бьерн покушать принес.
Аноним 22/09/15 Втр 20:10:35 #95 №547556 
14429418354230.png
Подскажите, никак не могу задачку с учебника решить. Решение расписал в тетради, всё должно работать, но, почему-то, в реальности ответ не совпадает с задуманным - непонятно почему число 9 (а если брать больше, то еще и делящиеся на 5), проходит проверку, хотя не должно - деление на 3 даёт 0. Проверку выделил красным.
Аноним 22/09/15 Втр 20:24:00 #96 №547569 
>>547556
Что за задание то? Если найти простые числа то удаляй все и пиши заново.
Аноним 22/09/15 Втр 20:26:13 #97 №547572 
14429427735460.png
>>547569
А, всё решил, я понял ошибку - там где был брейк, если на 2 сразу не делилось, то пропускало любые числа.
Вот верное решение - заместо брейка сделал чек и вынес добавление за цикл.
Аноним 22/09/15 Втр 22:18:00 #98 №547647 
>>547441
>a == b
значение false. цикл не выполняется.
>a <= b
Значение true. цикл выполняется пока а не станет больше бэ.
Аноним 22/09/15 Втр 23:43:43 #99 №547683 
>>547501 >>547556 >>547572
>simple_numbers
Проиграл. primes
Аноним 23/09/15 Срд 00:47:41 #100 №547708 
>>547572
Если уж так, то выучи для чего в языке есть continue и break. А ещё тебе numbers не нужен, а если и будет нужен, то ты любой элемент и так за константное время можешь вычислить.
Аноним 23/09/15 Срд 10:40:41 #101 №547819 
Анон. Послезавтра собеседование. С++ и STL знаю норм, а вот бустом никогда не пользовался, хоть и указал его в резюме. Где его можно быстро поднять. Какой-нибудь summary всех либ, либо самое важное?
Аноним 23/09/15 Срд 11:37:21 #102 №547831 
>>547819
Очевидный boost.org http://www.boost.org/doc/libs/?view=categorized
Аноним 23/09/15 Срд 14:16:57 #103 №547885 
>>546742 (OP)
двач, помоги пожалуйста
почему-то код при освобождении памяти выдаёт ошибку, не могу понять в чём дело, начинает не работать с 61 строки
http://pastebin.com/eZkYLEZe
Аноним 23/09/15 Срд 14:30:36 #104 №547891 
>>547885
>strcpy_s
говно для педиков. Используй strcpy();


p.s нахуя ты пишешь глупые комментарии?
>delete[] str4;//освободим память
блядь, и так ясно что delete освобождает память
>StringsWork story;//создаем объект
same shit
Аноним 23/09/15 Срд 14:31:46 #105 №547893 
>>547885
а вообще, не выебывайся и юзай string

>>547891 - кун
Аноним 23/09/15 Срд 16:50:02 #106 №547945 
Подскажите, как создать несколько объектов класса с именем из переменной типа string?

Другими словами:
Class man; //Объявили класс
string name;
string lastname;
...
string peremennaya;
cin >> peremennaya;

man peremennaya; // тут должно быть значение, записанное в переменной peremennaya. Я пробовал всякие кавычки-скобки - компилятор ругается. А если написать без всего - то созщадлется объект peremennaya.Ваш КЭП.

Чо делать то?
Аноним 23/09/15 Срд 16:51:04 #107 №547946 
>>547945
Всё что после многоточия - очевидно, что входит в main () {
Аноним 23/09/15 Срд 16:58:10 #108 №547947 
>>547945
>Class man; //Объявили класс
>string name;
>string lastname;

class man { //Объявили класс
string name;
string lastname;};

Class man; не скомпилируется, class man; - тоже не о том, это обещание, что класс ты определишь когда-нибудь позже.
Аноним 23/09/15 Срд 17:23:45 #109 №547956 
>>547947
Хорошо. Я понял.
Класс - это как средство нового типа данных + функции. Так?
Тогда как мне реализовать создание "чего либо" с типом "моего класса"?
Аноним 23/09/15 Срд 17:31:42 #110 №547962 
>>547956
Вопрос исчерпан, я это и так знаю, хуйню спорол.
Хорошо, а как тогда мне хранить некие данные? В переменных моего "нового типа". Но тогда классы != переменные. Хранить данные в них не получится. Я прав?

И как мне выкручиваться? Где хранить мои "смешанные" (int + string) типы данных"? В массивах? В отдельном файле?
Аноним 23/09/15 Срд 17:39:32 #111 №547966 
>>547956
С типом ты в С++ ничего не можешь сделать, можешь создать экземпляр (instance) своего типа и там уже хранить что тебе нужно. Ты уже это делал в "man peremennaya;", просто оно у тебя не компилировалось, потому что вместо class имя{поле1;поле2;}; ты сделал class имя;поле1;поле2;
Аноним 23/09/15 Срд 17:51:37 #112 №547970 
допустим, есть класс:
Class yoba
{
public
string text;
int number;
};

Есть объект этого класса kolobok:
yoba kolobok;

Хочу записать в мой тип данных набор с клавиатуры:
cin >> text;
cin >> number;

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

Создаю массив array с созданным мною типом данных "yoba" в количестве 10 элементов:
yoba array[10];

Допустим, что класс я инициализировал и хочу записать собранные данные моего типа yoba в первую(нулевую) ячейку массива:
array[0]=... Что? Чему равняется?

Я кажется начинаю туго понимать про классы. Моё мышление о классах как о неком выделенном "местечке" для хранения информации было ошибочным. Сейчас то я в том направлении? Не кидайтесь говном, пожалуйста, подскажите, как записать в нулевой элемент массива array данные типа yoba с уже некоторыми набранными величинами переменных text и number.

Или тупо: как сохранить в массив мой тип говна.
Аноним 23/09/15 Срд 17:53:50 #113 №547971 
>>547966
Я, возможно, не корректно выражаюсь, говоря "тип данных"
Аноним 23/09/15 Срд 17:57:16 #114 №547974 
>>547970
array[0].text = text;
array[0].number = number;
Аноним 23/09/15 Срд 18:02:56 #115 №547977 
>>547974
Но мой препод сказал мне реализовать мою задачу при помощи классов. Зачем мне тогда классы, если я могу напрямую всё записать в массив?

Поясни, пожалуйста:
array[0].text = text; //Что означает эта запись? Каждая "ячейка" массива имеет свои поля (которые я указал в классе yoba?), потому что я создал массив с таким типом?

Аноним 23/09/15 Срд 18:04:59 #116 №547979 
>>547971
Нет, вполне корректно.
>>547977
В массив чего? Массив экземпляров твоего класса.
Аноним 23/09/15 Срд 18:05:34 #117 №547980 
>>547974
Компилятор ругается:

>within this context
>array[0].name=name;
Аноним 23/09/15 Срд 18:13:42 #118 №547984 
>>547980
Алсо, я дурак и забыл вписать public для name-а
Аноним 23/09/15 Срд 18:19:49 #119 №547988 
>>547974
А как вывыести обратно на дисплей?
array[0].name=name; //Запись в массив
cout << array[0].name; //Вывод на экран

Чому не пашет? Нужно "вывод" писать в методах класса?
Аноним 23/09/15 Срд 18:22:38 #120 №547989 
>>547988
В методах тоже не работает.
>array was not declared in this scope
>cout << super[0].name;
Аноним 23/09/15 Срд 18:23:26 #121 №547990 
>>547989
array вместо super
Аноним 23/09/15 Срд 18:51:13 #122 №548002 
Антоны, нужно написать хук на функцию. В хуке нужно будет пошамать с функциями и вызвать оригинальную. Уровень знаний - hello world. Что нужно прочесть, для скорейшего написания сей приблуды?
Аноним 23/09/15 Срд 22:24:09 #123 №548100 
>>548002
Где все тыжпрограммисты?
Аноним 23/09/15 Срд 22:38:39 #124 №548110 
>>547147
А в джаббере сложно что ли?
Аноним 23/09/15 Срд 23:34:50 #125 №548137 
СИДЯТ МУЖИКИ
@
ПИВО ПЬЮ
@
МЯСОМ ЗАЕДАЮТ
Аноним 24/09/15 Чтв 04:16:42 #126 №548206 
>>547989
Няша, ты пишешь полную неведомую хуйню.
Объясняю как надо:
Добавляешь к своему коду комменты с ошибками компилятора у соответствующих строк. Заливаешь на пастбин или аналогичные сервисы. В посте лепишь ссылку на это дело и описываешь чего пытаешься добиться и что вместо этого получается.
На вопросы вида "вот строчка кода, почему не фурычит" ответ один - хуй его знает.
Аноним 24/09/15 Чтв 11:16:26 #127 №548249 
Страуструп для ньюфагов, в нём введение и 4 главы:
>Part I: The Basics 41-342
>Part II: Input and Output 343-580
>Part III: Data and Algorithms 581-802
>Part IV: Broadening the View 803-1070

Прошёл (i.e. сделал все упражнения) введение, Part I и первые 2 параграфа (10, 11 -- iostreams) Part II. После этого последующие 5 параграфов (12-16) второй главы посвящены графике, и текста там просто дочерта, 170 страниц и куча задач. Оно вообще нужно? Part III мне вообще кажется куда полезной, или книга построена так, что без второй главы третью не поймёшь?

Что делать?
1) прочесть графику и сделать упражнения;
2) прочесть графику;
3) сразу приступать к Part III.
Аноним 24/09/15 Чтв 14:04:41 #128 №548281 
>>548249
Я до сих пор не прочел IO, например за дохуя лет. Там вроде даже в начале написано, чтобы читали первую часть и дальше выборочно, что интересно и соответствует задачам. Так что пролистай ее быстренько и лезь в третью.
3има 24/09/15 Чтв 14:17:04 #129 №548284 
Господа, по вводу\выводу (fstream, все дела)
посоветуйте что-нибудь, плз.
Читаю Липпмана - было норм, пока не пришли к классам и к вводу выводу. Не знаю, может быть рассчитано на тех., кто уже в теме, но мне сложно идёт. в других книгах для ньюфагов тема разбита на разные части и туда-сюда мотаться сложно.
особенно учитывая, что в каких то книгах ++11, а в каких то нет. т.е на что смотреть
Аноним 24/09/15 Чтв 14:18:45 #130 №548286 
>>548284
С этого треда все самоучители без 11 помечены как устаревшие.
Аноним 24/09/15 Чтв 14:31:45 #131 №548287 
>>548286
перечитал шапку.
Ок.
Но на вопрос\просьбу всё равно ответа нет.

Аноним 24/09/15 Чтв 14:32:59 #132 №548288 
>>548284
и в догонку.
Как организовываете новый материал вокруг себя.
например не статья, а фрагмент книги пдф дежавю.
Аноним 24/09/15 Чтв 14:57:33 #133 №548292 
>>548284
Ну вот я >>548249 прочёл первые 2 параграфа (10, 11 -- iostreams) Part II Страуструпа для ньюфагов. Но без

http://en.cppreference.com/w/cpp/io/ios_base/iostate

не разберёшься, потому что Страуструп (зло?)-намеренно мешает в кучу std::basic_ios::good и std::basic_ios::operator bool , которые отличаются на значение std::basic_ios::eof
Аноним 24/09/15 Чтв 16:09:31 #134 №548315 
>>548292
ты вроде дал какую-то информацию, бро.
но она такая, что при любом к ней отношении особого выбора нет?
Аноним 24/09/15 Чтв 19:22:08 #135 №548402 
>>548315
Я всего лишь предложил один из возможных вариантов, поскольку все другие молчат. Других вариантов не знаю.
Аноним 24/09/15 Чтв 19:40:28 #136 №548409 
>>548402
всё понял.
не так как надо твоё сообщение прочитал.
А вообще как успехи?
Аноним 24/09/15 Чтв 19:41:13 #137 №548410 
>>548409
>>548402
всё понял. теперь понял.
просто в первый раз невнимательно твоё сообщение прочитал.

А вообще как успехи?
Аноним 24/09/15 Чтв 20:14:51 #138 №548430 
>>548410
>>548402
Мне кажется, вы страдаете хуйней, если честно. Серьезно, стандартную библиотеку изучают после ядра языка, а в ней потоки ввода-вывода по важности и интересности где-то на дне. Сосредоточьтесь на действительно полезных вещах лучше: STL, concurrency, аллокация. Вся ебля с io сложнее простых << и >> нужна крайне редко, для всех нетривиальных вещей энивей прикручивают библиотеки.
Аноним 24/09/15 Чтв 20:29:54 #139 №548437 
Shellsort or Comb sort?
http://ideone.com/PP0U9l
Аноним 24/09/15 Чтв 20:42:10 #140 №548446 
>>548409
>А вообще как успехи?
Какие успехи? Я теперь чуть-чуть знаю I/O в крестах. В целом мои нужды перекрывает с запасом.

>>548430
>Мне кажется, вы страдаете хуйней, если честно. Серьезно, стандартную библиотеку изучают после ядра языка
Мне собственно от языка кроме I/O ничего и не нужно-то по моим маленьким потребностям. Но вот данные/алгоритмы по-любому изучить бы.
Аноним 24/09/15 Чтв 20:49:18 #141 №548449 
>>548446
Iostream самая неудачная часть языка и много где в каеих проектах запрещен. Пользуйся printf
ССУ КРЕСТОБЛЯДЯМ НА ЛИТСА Аноним 24/09/15 Чтв 20:49:38 #142 №548450 
14431169784890.gif
Боже, крестобляди, какие же вы опущенцы, просто пиздец.
https://events.yandex.ru/lib/talks/2588/ - перемотать на 9:22:
>Сборка браузера занимает порядка полутора-двух часов на очень хорошем Макбуке. Вы, как разработчик, не можете позволить себе делать фичу, а потом ждать полтора часа. Мы это решили: мы берём несколько клонов одного и того же репозитория, и пока в одной директории собирается ваш браузер, в соседней вы работаете над другой фичей.
Вместо того, чтобы сделать нормальные модули, которые бы упростили сборку и позволили бы наконец не пересобирать весь проект, когда вы нажимаете энтер в файле zaloopa.h, используемого везде, продвинутые крестобляди предпочитают во время сборки, чтобы не скучать, делать ЧТО?.. Правильно - работать над другим таском! И похуй, что внимание, которого при пердолении C++ нужно дохуя, идёт по пизде - зато пацанам из Комитета Стандартизации Крестоговна будет бесплатный цирк из кресточушек (пацаны сами к крестоговну не прикасаются, конечно же).
Аноним 24/09/15 Чтв 21:05:51 #143 №548461 
>>548002
Бамп вопросу.
Аноним 24/09/15 Чтв 21:08:02 #144 №548463 
>>548437
Что это за хуйня?
Аноним 24/09/15 Чтв 21:10:10 #145 №548468 
Аноны, ну что за хуйня? Есть какие-нибудь нормальные IDE под Ubuntu? Хоть что-нибудь сравнимое с Visual Studio? Ах да, ещё я криворукий, поэтому не могу собрать проект в Code::Blocks (почему-то не линкуются .h-файлы), а в Eclipse вообще нет пункта для C/C++. Может кто-нибудь пояснить? Почему у меня в Eclipse, кроме Java и ещё каких-то пунктов, ничего нет, в том числе пункта с выбором C/C++? Уже устал от этой хрени.
Аноним 24/09/15 Чтв 21:10:19 #146 №548470 
>>548450
>Вы, как разработчик, не можете позволить себе делать фичу, а потом ждать полтора часа.
Чушь. Я ухожу гулять, гоняю чаи с коллегами, играю в плойку, скролю зк.
Аноним 24/09/15 Чтв 21:11:58 #147 №548472 
>>548468
QtCreator, KDevelop
Аноним 24/09/15 Чтв 21:12:03 #148 №548473 
>>548470
зк?
Аноним 24/09/15 Чтв 21:18:04 #149 №548481 
>>548450
Потому что долбоебы, которые проектировали браузер, не могут в pimpl, очевидно же.
Аноним 24/09/15 Чтв 21:25:02 #150 №548489 
>>548449
>template самая неудачная часть языка и много где в каких проектах запрещен. Пользуйся #define
>Наследование самая неудачная часть языка и много где в каких проектах запрещен. Пользуйся void *.
>printf самая неудачная часть языка и много где в каких проектах запрещен. Пользуйся MOV AH, 9; INT 21h.
Аноним 24/09/15 Чтв 21:26:34 #151 №548491 
>>548430
спасибо, бро.
кидаю в заметки.
Аноним 24/09/15 Чтв 21:33:51 #152 №548499 
>>548449
Чувак, я двачую этого :
>>548489
не хуйню сказал.
И ссылку добавлю :
http://www.programmersforum.ru/showthread.php?t=192502
Как ответиишь?
Аноним 24/09/15 Чтв 22:27:55 #153 №548557 
>>548472
А не подскажешь, как сделать, чтобы приложение запускалось в консольку в KDevelop? Ибо неудобно, когда оно в какое-то своё окошко выводит всё.
Аноним 24/09/15 Чтв 22:57:43 #154 №548596 
>>548499
Сам-то читал свою ссылку? По ней все рекомендуют пользоваться iostream.
Аноним 24/09/15 Чтв 23:11:11 #155 №548616 
>>548596

Бро, я обращался с вопросом к нему :
>>548449

Аноним 25/09/15 Птн 07:42:41 #156 №548785 
>>548468
Установи пакет eclipse-cdt, он добавит плюсы
Аноним 25/09/15 Птн 11:32:19 #157 №548818 
>>548449
io - типобезопасный ввод-вывод, в отличие от printf
по производительности - сравним
Аноним 25/09/15 Птн 12:44:01 #158 №548831 
>>548818
>по производительности - сравним
Не уступает, вообще-то, если соответствующим образом настроить.
Аноним 25/09/15 Птн 18:15:24 #159 №548985 
>>548557
В настройках запуска укажи xterm или что ты там юзаешь.
Аноним 25/09/15 Птн 18:17:42 #160 №548988 
http://llvm.org/docs/CodingStandards.html#include-iostream-is-forbidden
Аноним 25/09/15 Птн 18:25:45 #161 №548992 
http://yosefk.com/c++fqa/io.html#fqa-15.1
Аноним 25/09/15 Птн 19:19:56 #162 №549022 
>>548785
Спасибо, заработало. Но снова возник тупой вопрос: как сделать вывод в терминал? Неудобно смотреть вывод программы в окошечке IDE.

>>548985
Спасибо, получилось.
Аноним 25/09/15 Птн 19:51:45 #163 №549033 
>>548449
https://arhivach.org/thread/94972/#511941
https://arhivach.org/thread/94972/#513467
iostream нормально со всем справляются.
Аноним 25/09/15 Птн 20:46:57 #164 №549055 
>>548785
А какой пакет нужно установить чтобы добавить плюсы в спермерке?
Аноним 25/09/15 Птн 21:03:12 #165 №549064 
>>549055
g++
Аноним 26/09/15 Суб 00:54:30 #166 №549168 
>>549022
Юзай кдевелоп, 4.7 збс. И собирай cmake'ом.
Аноним 26/09/15 Суб 00:56:35 #167 №549169 
>>549055
Оптимально - мусорный, литров на 40, не меньше.
Юзай visual cpp, не выебуйся.
Боксёрский зал ( взрослый.) 3има2061 26/09/15 Суб 11:57:35 #168 №549248 
РЕБЯТА,
Как организовываете новый материал вокруг себя.
например не статья, а фрагмент книги пдф дежавю? и т.д
Аноним 26/09/15 Суб 16:43:01 #169 №549342 
https://github.com/isocpp/CppCoreGuidelines/
Аноним 26/09/15 Суб 16:43:28 #170 №549343 
>>549248
Evernote, OneNote, Nim...
Аноним 26/09/15 Суб 18:27:55 #171 №549387 
>>549248
никак
читаю, удаляю, может быть сохраняю или добавляю в закладки
Аноним 26/09/15 Суб 20:18:16 #172 №549453 
Где быстрее поиск, в векторе из 15 четырехбайтовых элементов или unordered_map такой же размерности?
Аноним 26/09/15 Суб 20:21:45 #173 №549458 
>>549453
Скорее всего в векторе, он в кэш-линию влезает.
Аноним 26/09/15 Суб 20:28:41 #174 №549461 
>>549458
Мне тоже чет так кажется. Ок, запилю векторы.
Аноним 27/09/15 Вск 06:23:25 #175 №549592 
Че Страуструп пишет, что если в классе определить функцию, то при её вызове идет подстановка тела этой же функции в то место, откуда была она вызвана, а если определять НЕ в классе, то идет простой вызов функции. Так что ли? Ну а в чем тогда разница?
Аноним 27/09/15 Вск 06:25:59 #176 №549593 
>>549592
Покажи где он это пишет.
Аноним 27/09/15 Вск 06:33:23 #177 №549594 
>>549593
Очевидное правило гласит: не помещайте тела функций-членов в объявление
класса, если вам не нужна повышенная эффективность программы за счет ис-
пользования небольших подставляемых функций. Большие функции, скажем, со-
стоящие из пяти и более строк, ничего не выиграют от подстановки. Не следует де-
лать подставляемыми функции, содержащие более одного-двух выражений.
Аноним 27/09/15 Вск 06:36:48 #178 №549595 
>>549594
Действительно https://isocpp.org/wiki/faq/Inline-Functions#inline-member-fns-more
Аноним 27/09/15 Вск 06:40:44 #179 №549596 
>>549594
>>549595
А тут [1] вот питухи с SO поясняют, что неявный inline зделан для того, чтобы можно было переопределять функцию несколько раз. И inline не обязательно означает реальную подстановку тела функции в место вызова.

[1] http://stackoverflow.com/a/9734378
Аноним 27/09/15 Вск 06:57:03 #180 №549600 
14433262239580.jpg
>>549594
Короче, из вышенаписанного вывод один. Страус — труп (пикрилейтед) обосрался. inline никогда не был ПРИКАЗОМ компилятору встраивать тело в место вызова; тем более неявный inline.
Аноним 27/09/15 Вск 08:06:26 #181 №549601 
Термин inline мне Страуструп будет только через полсотни страниц рассказывать (судя по Ctrl+F), но SO прочел я.
Не особо понимаю >>549600 пост, выше две ссылки говорят об обратном же вроде. (ну помимо ещё того, что он используется для того, чтобы ошибок не было, если определение функции расположено в другом файле)
Аноним 27/09/15 Вск 08:54:09 #182 №549603 
>>549594
>не помещайте тела функций-членов в объявление
класса
А как-же шаблоны?
Аноним 27/09/15 Вск 08:54:26 #183 №549604 
>>549594
Что за книга?
Аноним 27/09/15 Вск 09:07:16 #184 №549605 
>>549601
Страус-труп говорит что функции, определённые в объявлении класса, неявно помечаются как inline, а, значит, встраиваются в место вызова.

SO говорит что неявный inline это правда, но нужен в первую очередь для разрешения переопределения функции. И что компилятор волен встраивать и волен не встраивать тело функции в место вызова. Пост >>549600 это и говорит.
Аноним 27/09/15 Вск 09:07:46 #185 №549606 
>>549603
Страус-труп мудак и пишет хуйню.

Такой ответ сойдёт?
Аноним 27/09/15 Вск 09:41:25 #186 №549609 
>>549603
>>549606
Потому что до шаблонов я ещё не дошел, че за хейт, поцаны, ало.
Аноним 27/09/15 Вск 10:49:34 #187 №549618 
>>549342
>>547555
Аноним 27/09/15 Вск 10:51:11 #188 №549619 
>>549596
По стандарту неидентичные определения inline-функций это сразу UB.
Аноним 27/09/15 Вск 10:52:58 #189 №549622 
>>549603
Пиши тела сразу после класса, а в самом классе оставь только объявления со спецификатором inline. Очевидно же.
Аноним 27/09/15 Вск 18:29:50 #190 №549816 
14433677908300.jpg


Приветствую
Господа, катиться мимо вас толстая веб-пхп-макака, это я.
В веб пошёл от нужды быстро работу найти, но подобное программирование никогда не привлекало, сейчас хочу уйти от туда.
Думаю либо про андроид с жабой, либо про кресты.
За спиной паскаль, руби, два курса вуза, Кормен и т.п., и чувство что это моё.
Но вот в чем вопрос, чем сейчас занимаются программисты на C/C++ ? Меня интересуют конкретные задачи.
И какой уровень нужен для поиска работы?
Что в портфолио положить?

Вот с вебом всё ясно, с мобильными тоже.
А вот чем вы на работе заняты я не очень понимаю.
Помогите разобраться.
Аноним 27/09/15 Вск 19:44:45 #191 №549872 
>>549816
-тся
Аноним 27/09/15 Вск 20:06:32 #192 №549883 
>>549816
ирл знаю людей, пилящих:
- CAD'ы (нужно знать матан и линалг),
- софт для voip эндпоинтов (железяки и windows клиенты). если железяка на ведроиде, то там борщ из сей, плюсов и джабы, иначе си и плюсы.
- софт для кол-центров (дикая смесь из шарпов и крестов).
сам больше не видел продакшен применений крестовщины. может ананон ещё накидает примеров
Аноним 27/09/15 Вск 20:08:07 #193 №549886 
>>549872
Эт где?
Аноним 27/09/15 Вск 20:50:24 #194 №549903 
На хабре-то пишут, что этой осенью в студию уже завезут модули. А оп-вебм утверждает, что нет. Кому верить, и откуда вообще эта истерия на модули пошла? Раньше говно жрали большой ложкой, а теперь из ядра почти сделали конфетку, но неосиляторам все равно мало?
Аноним 27/09/15 Вск 21:14:28 #195 №549910 
>>549168
И снова тупой вопрос. Что нужно доставить, чтобы открылись настройки проекта? Не могу туда зайти, ибо кнопка просто неактивна (cmake поставил). Алсо, у меня почему-то автоматом не поддерживается C++11: не распознал nullptr. В общем, анон, если не сложно, расскажи, что да как, а то я уже устал маяться с этим, а венду нет пока ни желания, ни возможности поставить.
Аноним 27/09/15 Вск 21:18:55 #196 №549913 
>>549816
google-точка-ру "работа погромист си-плюс-плюс"
Если без кучи побочного груза, чистый c++ программист используется в проектах, требующих высокой производительности; в основном игры, различные 3d проекты и 3d игры.
Аноним 27/09/15 Вск 21:21:07 #197 №549914 
>>549886
>Эт где?
>>549816
>катиться
Аноним 27/09/15 Вск 21:23:26 #198 №549917 
>>549914
Фюрер, бросьте. Мир несовершенен, и тут бывают ошибки у всех. Вам не в этот тред.
не "толстая веб-пхп-макака"
Аноним 27/09/15 Вск 21:25:05 #199 №549919 
>>549914
Прощение
Аноним 27/09/15 Вск 21:28:00 #200 №549921 
>>549917
Все ошибаются, но хуже не будет, если корректно указать человеку на ошибку.
не_фюрер
Аноним 27/09/15 Вск 23:17:51 #201 №549954 
>>549910
пропиши для компилятора --std=c++11 опцию
Аноним 27/09/15 Вск 23:19:29 #202 №549955 
>>549954
Где прописать? В настройках проекта? Я не могу туда зайти.
Аноним 28/09/15 Пнд 01:00:43 #203 №550011 
>>549955
Почему бы тебе первое время не посидеть в консоле и не поюзать makefile-ы? Для твоих hello world-ов хватит выше крыши.

Или вообще build.sh с g++ -std=c++14 -o hello_world hello_wrold.cpp
Аноним 28/09/15 Пнд 01:13:02 #204 №550016 
>>550011
Я, разумеется, нуфаг, но такое положение дел мне не нравится, ибо я уже осваиваю классы, потихоньку подбираясь к шаблонам, поэтому в проекте получается много файлов и т. д. Хотелось бы больше внимания уделить написанию кода, нежели пердолингу с консолью, IDE и прочими радостями жизни. Мне сейчас просто нужна рабочая IDE, поддерживающая 11-й (желательно 14-й) стандарт, с подсветкой ошибок. Всё, больше я ничего не хочу. Постоянно возникают какие-то траблы с IDE под Linux. Вот сейчас не открываются настройки проекта, вернее сам пункт неактивен. Это значит, что я что-то не установил? или, может быть, проблема в чём-то другом? В общем, я не против поебаться с Linux'ом, но сейчас мне просто нужно писать свои Laba1.
Аноним 28/09/15 Пнд 01:52:18 #205 №550026 
>>550016
Тогда поставь сперму со студией и не еби нам мозги. Ну серьезно, разработка под никсами без охуительной настройки всего под себя всегда была болью.
Аноним 28/09/15 Пнд 06:41:05 #206 №550057 
>>550016
Просто поставь Qt Creator
Аноним 28/09/15 Пнд 08:23:55 #207 №550069 
>>550057
(просто мимопроходил)
Поставил этот Qt Creator недавно. Так и не смог создать C++ console application (без CMake и QBS).
Аноним 28/09/15 Пнд 09:06:40 #208 №550084 
Посоветуйте плагинов на субиме. Автодополнение нуюно очень, чтобы как в идее жавовой. На CLion денег нет.
Аноним 28/09/15 Пнд 09:10:05 #209 №550086 
>>550084
>нужно
Аноним 28/09/15 Пнд 09:20:57 #210 №550091 
>>550069
Ебать ты лох. А я могу.
Аноним 28/09/15 Пнд 11:51:14 #211 №550142 
Наверно немного глупая и наивная просьба, но дело в том, что никогда не имел дело с большими проектами. Но сейчас на работе подкатили именно такой и я решил все-таки писать его на плюсах. Раньше справлялся на обычном Си, но сейчас понимаю, что нужна более-менее нормальная архитектура с возможностями добавления разных фич.
Подскажите хороших проектов, в которых можно увидеть грамотный код.
В проекте будет обработка данных в потоке и различные виды отображения обработанных данных, если в общих чертах. Пишем под Шинду.
Аноним 28/09/15 Пнд 11:57:30 #212 №550144 
>>550142
>более-менее нормальная архитектура с возможностями добавления разных фич
llvm, clang. Рассмотри вариант скриптового языка с ядром на С++. LuaJIT быстрая и удобная штука.
Аноним 28/09/15 Пнд 16:18:35 #213 №550265 
Есть один компилятор. Реквестирую хэлоуворд который выведет мне что это за компилятор. С/C++/C++11
sageАноним 28/09/15 Пнд 16:24:43 #214 №550268 
>>550265
#ifdef _gnu/хуй/etc
Аноним 28/09/15 Пнд 16:31:48 #215 №550269 
>>550268
что это и как работает? что должно произойти?
sageАноним 28/09/15 Пнд 16:34:30 #216 №550271 
>>550269
Господи, наводку я тебе дал. Ищи сам дальше, что какой компилятор дефайнит.
Аноним 28/09/15 Пнд 16:39:56 #217 №550279 
>>550271
Не понимаю я. После него весь код комментируется. И не понятно си это или кресты и какой стандарт. Дай пожалуйста простой хулоуворд в 3 строчки. Неужели сложно?
Аноним 28/09/15 Пнд 16:46:32 #218 №550282 
Констэкспры в 2015 Студии поддерживаются весьма ограниченно, т.е. циклы не погоняешь.

А файл можно прочесть на этапе компиляции? Кроссплатформенно. Именно с помощью <iostream> , а не #include
sageАноним 28/09/15 Пнд 16:48:45 #219 №550283 
>>550279
#ifdef _MSC_VER
std::cout << "Мокрософт";
#endif
#ifdef __GNUC__
std::cout << "Гнутый";
#endif
Аноним 28/09/15 Пнд 16:52:03 #220 №550287 
>>550283
А как узнать 11 стандарт завезли или нет?
sageАноним 28/09/15 Пнд 17:03:09 #221 №550295 
>>550287
Я что, ебу? Ищи сам.
sageАноним 28/09/15 Пнд 17:05:51 #222 №550300 
>>550282
>iostream
>компильтайм
Ебанутый.
Аноним 28/09/15 Пнд 17:54:19 #223 №550331 
>>550300
>Ебанутый.
Я художник, я так вижу.
Аноним 28/09/15 Пнд 20:06:05 #224 №550402 
Есть один класс huj.cpp, часть функций/структур/etc которого вынесена в .h/.cpp файлы, например pizda.h и pizda.cpp.
Объявления для функций из pizda.cpp находятся в huj.h, в описании класса.
При попытке вызова функций jigoorda() из pizda.cpp в huj.cpp получаем
undefined reference to Huj::jigoorda()

Как корректно расставить инклуды, чтобы подключайть только *.h файлы?
Аноним 28/09/15 Пнд 20:34:44 #225 №550415 
>>550402
Объявления всех функций про которые нужно знать снаружи выносишь в хедер. Хедер подключаешь где нужно. Может ты с неймспейсами запутался?
Аноним 28/09/15 Пнд 20:56:28 #226 №550419 
Привет анон. Сейчас начали в инсте изучать WinApi, написали пару программ, мне понравилось, сейчас захотел для практики написать себе прогу. Суть: должна авторизовываться на сайте, парсить одну страницу, заходить по ссылкам и вводить там числа в форму для отправки. Собственно вопрос. Что погуглить по этой теме или мб. есть готовые библиотеки? сайт на html.
Аноним 28/09/15 Пнд 21:33:27 #227 №550435 
Сап аноны. Ударился тут в спортивное программирование. Когда сдаю задачку в проверяющую систему, то в зависимости от того, как выделил память, ловлю Runtime Error. Поясните за статическое выделение - неужели 118 килобайт пробивают стек? На VS задавал размер стека в 16 мегабайт - результат тот же. На моем компьютере все работает.

http://pastebin.com/yyWK796T

P.S. Вообще, код на pure C, но от того, компилирую я его как C или C++ код результат не меняется
Аноним 28/09/15 Пнд 21:39:14 #228 №550436 
>>550287
constexpr int f () {return 0;}
constexpr int g () {int a = 1; return a;}

Если работают обе, то C++14. Если только первая, то C++11. Если ни одной, то C++98.
Аноним 28/09/15 Пнд 22:08:12 #229 №550451 
>>550435
Зачем тебе на стеке столько? На стеке выделяй маленькие вещи, особеонно если их дохуища по одночке нужно создавать. Выделять мегабайтный массив на стеке один раз за программу практически бессмысленно, разве чтобы потом free() не проебать, но в main похуй, вся память все равно освободится после кила программы.
Аноним 28/09/15 Пнд 22:16:48 #230 №550459 
>>550415
Да нет, неймспейсами я не пользуюсь.
Суть в том, что я хочу разбить реализацию методов класса на разные *.cpp файлы.
Аноним 28/09/15 Пнд 22:21:08 #231 №550462 
>>550451
Ну просто все в олимп. прогр. выделяют статически, т.к. на куче выделить - потерять времени, поэтому я и попробовал тоже выделить на стеке. В реальных программах я так не делаю. Вопрос не в правильности, вопрос в том, почему 10001 * 12 байт кладут программу, ведь если верить FAQ проверяющей системы, размер стека на всех компиляторах, кроме VS, 64 мегабайта. Runtime Error появляется на любом компиляторе (там доступны VS, GCC, clang).
Аноним 29/09/15 Втр 00:05:40 #232 №550534 
>>550462
Бинарным поиском определи какой размер не ложит проверяющую систему.
Аноним 29/09/15 Втр 00:18:46 #233 №550538 
>>550459
Оно крашится вообще во время printf, стек здесь не при чем. Небось в куче-то защита не срабатывает, когда ты считать не свое пытаешься, а на стеке срабатывает.
Аноним 29/09/15 Втр 02:31:58 #234 №550572 
Cэджвика стоит читать?
Хочу хоть немного надрочить алгоритмы, на собеседованиях просто доебали уже ими.
Слышал, что Кормэн лучше, но там очень много не шибко нужной информации.
Какой выбор сделал бы ты, анон?
Аноним 29/09/15 Втр 02:43:59 #235 №550573 
>>550572
https://www.coursera.org/course/algs4partI вот тебе Седжвик. Правда он тут вроде на яве примеры показывает, ну да не суть.
Аноним 29/09/15 Втр 02:56:23 #236 №550574 
>>550573
Никогда курсеру не юзал.
там платная подписка, или в чем прикол? Чем это лучше наворачивания печатного издания?
Алсо, джаву не перевариваю, лучше уж на питоне.
Аноним 29/09/15 Втр 03:50:34 #237 №550580 
>>550573
Анон, ты охуенен.
Аноним 29/09/15 Втр 04:21:54 #238 №550582 
>>550265
std::cout << __cplusplus << std::endl;
Аноним 29/09/15 Втр 04:22:32 #239 №550583 
>>550287
>А как узнать 11 стандарт завезли или нет?
>>550582 <---
Аноним 29/09/15 Втр 04:25:39 #240 №550584 
>>550419
http://www.crummy.com/software/BeautifulSoup/bs4/doc/
Аноним 29/09/15 Втр 06:54:21 #241 №550603 
Анон, помоги долбоёбу. Нужно повернуть с помощью гиперкомплексных чисел фигуру так, чтобы у неё не изменился объем. У меня н в два раза режется при каждой попытке поворота.
Аноним 29/09/15 Втр 06:54:45 #242 №550604 
>>550603 вот мои каракули
http://rghost.ru/84sfDgnbr
Аноним 29/09/15 Втр 14:08:39 #243 №550700 
>>550582
Дебил, блядь, мать ебал твою. Сам ищи, чмо тупорылое, мы за тебя лабы делать не будем. Даун.
Аноним 29/09/15 Втр 14:09:11 #244 №550703 
>>550700
>>550583
Аноним 29/09/15 Втр 15:23:32 #245 №550749 
>>550574
Course Format
There will be two lectures (60-75 minutes each) each week. The lectures are divided into about 4-6 segments, separated by interactive quiz questions for you to to help you process and understand the material. In addition, there will be a problem set and a programming assignment each week and there will be a final exam.
Аноним 29/09/15 Втр 15:31:47 #246 №550751 
>>550435 >>550451 >>550462 >>550534
Ну и что молчим-то? Вопрос правда интересный. Каков минимальный размер стека среди всех компиляторов? Я тут тоже (почти-)спортивным программированием увлёкся, хочу небольшой массив в стэк передвинуть, а то на этапе компиляции всё известно для конкретной задачи, а считать долго и муторно, используя этот массив.

32768 байт имеются в моём распоряжении или нет? Если 16384, то мне уже не хватит.
Аноним 29/09/15 Втр 16:14:37 #247 №550770 
>>550751
Никто не знает. Стандарт размер стека не регламентирует. Он зависит от системы, от компилятора и от настроек компилятора. Также никто не гарантирует что твой массив действительно окажется на стеке. Гарантируется только автоматическое управление памятью - он удалится по выходе из скоупа. А компилятор спокойно может большие массивы кидать в кучу. Никто минимальным размером стека особо не заебывается - его размера достаточно для того для чего он предназначен (хранения адресов возврата). Хранение пользовательских данных на нем - грязный хак, если у тебя из-за него что-то падает то это твои проблемы. Стек для хранения маленьких переменных/структур. Если нужна скорость пишется аллокатор под нюансы конретной задачи. Все остальное суют прямо в кучу.
Аноним 29/09/15 Втр 16:50:36 #248 №550783 
>>550751
Не слушай теоретиков >>550770 - да, это зависит от ОС и компилятора, но 1 мегабайт в основном потоке у тебя чаще всего есть.
Аноним 29/09/15 Втр 17:04:38 #249 №550793 
>>550770
Старчѣ, прошлi тѣ врѣмѣна, когда размѣръ стѣка странiцѣй памѣти ограничѣнъ былъ, мы послѣднiю ѢСЪ ѢВМЪ на свалку списалѣ в 1999-м годѣ.
Ну, с разморозкѣй мѣня!
Аноним 29/09/15 Втр 17:58:30 #250 №550815 
>>550793
Прошли тѣ времена, когда размѣръ стека страницы памяти ограниченъ былъ, мы послѣднюю EC ЭВМ на свалку списали въ 1999-мъ году. Ну, съ разморозкой меня!
Аноним 29/09/15 Втр 19:31:35 #251 №550846 
>>550751
Возможно, проверяющая программа запускается ебанутым компилятором, который не делает alloca_probe? Попробуй сделай примерно так:
void my_alloca_probe(void object, size_t size) {
for (size_t i = 0; i < size; i += 4096) {
((uint8_t*)object+i)=0;
}
}
и вызови до первого доступа к твоему большому объекту.


Аноним 29/09/15 Втр 19:34:40 #252 №550848 
Какого хуя опять со звёздочками? *test
>>550846
Ну да похуй, я все равно наебался. В общем, суть в том, чтобы обращаться к каждой страницы стека в обратном порядке (а не как у меня), чтобы ОС поняла, что тебе нужно моар и выделила страницы памяти.
Аноним 29/09/15 Втр 19:43:01 #253 №550849 
>>550435
>Поясните за статическое выделение
Ты путаешь. Стек - это автоматическая память, а не статическая. Статическое выделение - это вот так:

static Node nodes[10001];

И это самый грамотный вариант, если нет рекурсии.

Размер стека определяется не компилятором, а линкером, который из объектных файлов собирает executable. Причем все сильно платформо-зависимо, в windows мире размер стэка задается в заголовке PE-файла (и есть соответствующие #pragma), в линуксе - свои заморочки, о которых я понятия не имею.
Аноним 29/09/15 Втр 20:17:16 #254 №550857 
А если хочешь йоба-крестовое решение, то хапни побольше в глобальную переменную (int yoba[100000000]) и перегрузи operator new так, чтобы память выделялясь в yoba методом bump ptr, а operator delete не делал ничего. Тогда, если памяти хватит, скорость будет максимальной без всяких стеков (не считая нелокальности кэша - но тут уж и не знаю, чем помочь): http://ideone.com/mQYppn
Аноним 29/09/15 Втр 20:26:55 #255 №550860 
>>550846
Я не он, я сочувствующий. И у меня объекты гораздо меньше (провёл оптимизацию по уменьшению объектов), краша в 15 студии не происходит. Интересно, как в других компиляторах дела обстоят и вообще, почему до сих пор знатоки стандарта не высказались?

>static Node nodes[10001];
>И это самый грамотный вариант, если нет рекурсии.

А вот здесь можно подробнее? Да, я обращаюсь к функции, где например char dohuja[10001]; несколько раз.

Почему статик лучше?
Аноним 29/09/15 Втр 20:37:50 #256 №550865 
Я снайпер, однако. Обращаюсь к >>550849 , тебе вот ответ: >>550860 (начиная с выделенного зелёным текста).
Аноним 29/09/15 Втр 22:16:08 #257 №550944 
>>550860
>почему до сих пор знатоки стандарта не высказались?
С точки зрения стандарта тебе уже пояснили все. В стандарте нет понятия "стек". И даже если забыть про это, ежу понятно, что размер стека не может не быть платформозависимым. У меня валяется ардуина, там памяти 16 килобайт, из которых дохуя уходит просто на хранение инструкций. И внезапно под него тоже пишут на крестах с небольшими оговорками. Как ты думаешь, там может на стек выделиться "1 МБ, на которые всегда можно рассчитывать", как тут выше кто-то спизданул?
Аноним 29/09/15 Втр 22:32:45 #258 №550951 
>>550944
Ну и чем это принципиально отличается от ситуации, когда в твоей ардуине new не сможет выделить столько же? Ах, ты это обработаешь? Лол, но как, если тебе НУЖНО 1 мб для работы?
Аноним 29/09/15 Втр 23:50:31 #259 №550986 
>>550462
>Ну просто все в олимп. прогр. выделяют статически, т.к. на куче выделить - потерять времени
Просто иди нахуй, олимп. долбоёб.
Аноним 29/09/15 Втр 23:53:59 #260 №550988 
Посоветуйте книжку по кодингу под винду. Надоело в консольке задачки решать.
Аноним 29/09/15 Втр 23:59:35 #261 №550991 
>>550084
http://rutracker.org/forum/viewtopic.php?t=4976066
Аноним 30/09/15 Срд 00:23:04 #262 №551003 
>>550944
Мне всего-то 64 килобайта надо на всё про всё, включая рекурсии и даже Аллаха. Кроме твоей ардуины есть ещё где стэк меньше 64 килобайт?
Аноним 30/09/15 Срд 03:09:42 #263 №551047 
Реквестирую сравнение SDL и SFML по пунктам:
1) удобство и интуитивность
2) производительность
3) количество сторонних либ (гуя, например)
4) функциональность изкоробки
Аноним 30/09/15 Срд 03:12:26 #264 №551048 
>>551003
CUDA сойдёт? Не то, чтобы там был настоящий стек, конечно.
Аноним 30/09/15 Срд 04:11:14 #265 №551053 
тест
Аноним 30/09/15 Срд 06:51:18 #266 №551067 
>>550860
>Интересно, как в других компиляторах дела обстоят и вообще, почему до сих пор знатоки стандарта не высказались?
Стандартный С++ - Тьюринг-полный язык, а любое ограничение по памяти делает его не Тьюринг-полным. Было бы странно, если бы в стандарте что-то об этом говорилось.
>А вот здесь можно подробнее?
Если ты пишешь под пека, то в static-переменную или глобальную влезет намного больше, чем в стек.
Аноним 30/09/15 Срд 07:06:20 #267 №551069 
>>551067
>Стандартный С++ - Тьюринг-полный язык

Пруфы?
Аноним 30/09/15 Срд 07:13:46 #268 №551070 
>>551069
На что? Если ты можешь реализовать на языке брейнфак, это будет Тьюринг-полный язык. Но только если под рукой у тебя бесконечная память. Иначе уже нет (и в таком случае - конечной памяти - проблема остановки принципиально разрешима).
Аноним 30/09/15 Срд 07:22:14 #269 №551071 
>>551070
Пруф, что по стандарту C++ - Тьюринг-полон, а в его реализациях - нет?

Насколько я знаю, по стандарту всякие там глубины стека и максимальная глубина рекурсии может быть ограничена как угодно.
Аноним 30/09/15 Срд 07:52:13 #270 №551073 
>>551071
>а в его реализациях - нет?
Машина Тьюринга в природе существовать не может, потому что ей требуется бесконечная память. Поэтому и реализаций нет. Не может быть.
>Пруф, что по стандарту C++ - Тьюринг-полон
Теоретически ты можешь себе представить size_t (и void*), реализованный через длинную арифметику. В стандарте на это нет запрета (The type size_t is an implementation-defined unsigned integer type that is large enough to contain the size in bytes of any object.). Значит и ограничений на размер памяти нет. Другой вопрос, что 64-битных указателей хватит всем.
Аноним 30/09/15 Срд 08:14:20 #271 №551075 
>>551073
>Машина Тьюринга в природе существовать не может, потому что ей требуется бесконечная память. Поэтому и реализаций нет. Не может быть.
Я это прекрасно знаю

>Теоретически ты можешь себе представить size_t (и void*), реализованный через длинную арифметику. В стандарте на это нет запрета (The type size_t is an implementation-defined unsigned integer type that is large enough to contain the size in bytes of any object.).

Подозреваю, что "unsigned integer type" это как раз и есть запрет на это.
>Значит и ограничений на размер памяти нет.
Ну так это как раз значит, что реальный компилятор C++ на реальном компьютере может соответствовать стандарту.
Аноним 30/09/15 Срд 09:55:40 #272 №551116 
>>551047
В SFML есть функции отрисовки простых фигур, в SDL - нет.
Аноним 30/09/15 Срд 12:13:46 #273 №551160 
>>551067
>Если ты пишешь под пека, то в static-переменную или глобальную влезет намного больше, чем в стек.
LOLWTO? static-переменная разве не на стэке лежит?
Аноним 30/09/15 Срд 12:28:08 #274 №551165 
>>551160
Нет. Школьные "лолшто" засунь себе в жопу.
Аноним 30/09/15 Срд 14:33:54 #275 №551197 
>>551165
Нет. Анус себе школьный, лолшто.
Аноним 30/09/15 Срд 14:49:35 #276 №551201 
>>546742 (OP)
><устарело> Роберт Лафоре - Объектно-ориентированное программирование в C++ (2004)
А что там конкретно устарело?
Аноним 30/09/15 Срд 15:01:37 #277 №551204 
>>551201
ООП kek
Аноним 30/09/15 Срд 15:23:29 #278 №551213 
>>551116
А кроме этого?
Аноним 30/09/15 Срд 15:28:15 #279 №551215 
>>551165 >>551197
А где она лежит тогда?
Аноним 30/09/15 Срд 15:33:14 #280 №551218 
>>551215
Там же, где и глобальные переменные. По сути это глобальная переменная с ограниченной областью видимости. Вообще смотри https://ru.wikipedia.org/wiki/Модель_памяти_в_языке_Си
Аноним 30/09/15 Срд 15:38:40 #281 №551219 
>>551218
3.7 Storage duration [basic.stc]
1 Storage duration is the property of an object that defines the minimum potential lifetime of the storage
containing the object. The storage duration is determined by the construct used to create the object and is
one of the following:
(1.1) — static storage duration
(1.2) — thread storage duration
(1.3) — automatic storage duration
(1.4) — dynamic storage duration
2 Static, thread, and automatic storage durations are associated with objects introduced by declarations (3.1)
and implicitly created by the implementation (12.2). The dynamic storage duration is associated with objects
created with operator new (5.3.4).
3 The storage duration categories apply to references as well. The lifetime of a reference is its storage duration

3.7.1 Static storage duration [basic.stc.static]
1 All variables which do not have dynamic storage duration, do not have thread storage duration, and are
not local have static storage duration. The storage for these entities shall last for the duration of the
program (3.6.2, 3.6.3).
2 If a variable with static storage duration has initialization or a destructor with side effects, it shall not be
eliminated even if it appears to be unused, except that a class object or its copy/move may be eliminated
as specified in 12.8.
3 The keyword static can be used to declare a local variable with static storage duration. [ Note: 6.7 describes
the initialization of local static variables; 3.6.3 describes the destruction of local static variables. — end
note ]
Аноним 30/09/15 Срд 15:41:01 #282 №551220 
>>550951
Ничем, я про то и толкую. Глупо надеяться, что стандарт даст какие-то гарантии по поводу производительности железа, объемов памяти и вот этого всего. Берешь конкретно свою платформу и смотришь уже в ее спецификациях, какие гарантии предоставляются а они даже на десктопе достаточно скудные.
Аноним 30/09/15 Срд 15:42:47 #283 №551223 
>>551071
Двачую этого. Стандарт не запрещает быть Тьюринг-полным, но и не требует этого, иначе бы никто не мог ему соответствовать.
Аноним 30/09/15 Срд 15:45:02 #284 №551224 
>>551201
Она 2004 года, описывается старый стандарт. Соответственно, в каждом втором примере оттуда будет говно наподобие NULL вместо nullptr, именованных функторов вместо лямбд, const вместо constexpr, ну ты понел.
Аноним 30/09/15 Срд 16:10:34 #285 №551228 
>>551224
Там книжка же для тех кто вчера решил научиться программировать и до сих пор пугается строчки x=x+1 то бишь самые базовые основы.
Аноним 30/09/15 Срд 17:54:47 #286 №551285 
>>551228
хватит выебываться, тебе уже пояснили почему книга устарела.
Аноним 30/09/15 Срд 18:40:48 #287 №551302 
>>546742 (OP)
Какая у вас шапка классная! Можно мне такую же? Кто стихи пишет?
Аноним 30/09/15 Срд 19:29:09 #288 №551327 
>>551302
Очевидный Данте Алигьери.
Аноним 30/09/15 Срд 19:48:39 #289 №551341 
>>551327
>Очевидный
Кому как. Я, например, его не читал. Вот что на самом деле значит быдлокодер
Аноним 30/09/15 Срд 20:03:51 #290 №551350 
Как из встроенного питона/луа получить доступ ко внутренним сиппшным переменным? Или так не делается и я могу только функции вызывать и забирать результат?
Аноним 30/09/15 Срд 21:22:01 #291 №551408 
>>551350
Ты бы погуглил хоть. http://lua-users.org/wiki/CppObjectBinding
Аноним 01/10/15 Чтв 00:09:15 #292 №551502 
>>546742 (OP)
помогите пожалуйста с программой
у меня не работает функция пересечения двух множеств, причём если размер первого множества меньше размера второго, то у меня не полностью выводится второе множество,
и если в двух мноествах встречается больше чем один одинаковый элемент, то выводится только первый элемент
http://pastebin.com/jFNdkDcg
Аноним 01/10/15 Чтв 03:29:52 #293 №551538 
>>551228
Они в плане неизменных вещей все примерно одинаковые. Но учиться лучше сразу хорошим практикам, чтобы потом не узнавать с удивлением, что так, как ты, никто уже давно не пишет.
Аноним 01/10/15 Чтв 03:32:56 #294 №551540 
>>551302
<смущенно улыбается>
мимооп
А в каком ты треде?
Аноним 01/10/15 Чтв 03:35:22 #295 №551541 
>>551502
tl;dr. Юзать std::set вместе с std::set_intersection не пробовал?
Аноним 01/10/15 Чтв 04:01:35 #296 №551542 
>>551540
Когда как, но чаще всего в питонотреде
Аноним 01/10/15 Чтв 07:21:23 #297 №551559 
std::array же на стеке создаёт, да? А то объектный пул на 1024 элемента в нём не работает, а в 256 работает как часы.
Аноним 01/10/15 Чтв 07:47:23 #298 №551563 
>>551559
Если правильно помню, создает так, как инстанцирован. Т.е. можно создать std::array динамически и не будет такого ограничения по размеру.
Аноним 01/10/15 Чтв 13:00:36 #299 №551631 
Решил в свободное от работы и пьянок время накодить какую-нибудь простенькую игрушку. Но вот встал вопрос, чтоб писать под DirectX надо сначала заботанить винапи или можно это пропустить?
Аноним 01/10/15 Чтв 13:31:31 #300 №551644 
Помогите пожалуйста нубу в домашнем изучении.
Короч допустим у нас есть массив символов.
char ARR = new char[SIZE];

Компилятор мне ругается на вот такую строчку
ARR[1] = "a";

Мол
invalid conversion from 'const char*' to 'char'

При этом, если я делаю ввод с клавиатуры, всё прекрасно работает и он записывает в элемент под номером 1 то, что я напишу.
cin>>ARR[1];
Не понимаю, как так получается, помогите плз.
Аноним 01/10/15 Чтв 13:32:24 #301 №551645 
>>551644
Бля, звёздочку съело где указатель на массив создаём.
Аноним 01/10/15 Чтв 13:40:32 #302 №551647 
>>551644
ARR[1] = 'a';
Аноним 01/10/15 Чтв 13:41:35 #303 №551648 
>>551631
Можно пропустить, но его или какой-нибудь гуй освоить по-минимуму придется, хотя бы чтоб окно создать и получить хэндл куда рисовать.
http://stackoverflow.com/questions/1633890/gui-api-for-directx
Аноним 01/10/15 Чтв 13:44:15 #304 №551650 
>>551648
Ну и вообще, чтобы накодить простенькую игру в свободное время, directx - очень оверкилл. Намного больше времени потратишь на его освоение и написание рендера, чем на саму игру.
Бери готовый движок лучше или либу вроде sfml.
Аноним 01/10/15 Чтв 14:08:51 #305 №551657 
>>551647
Спасибо!
Аноним 01/10/15 Чтв 14:12:46 #306 №551660 
>>551648
Отлично, попробую тогда освоить QT.
Аноним 01/10/15 Чтв 16:24:36 #307 №551731 
14437058769070.png
Господа, нужен ваш совет.
Практикую классы в С++.
Есть класс BankAccount, имеет три свойства. Этот класс имеет простой метод, это снятие денег со счета. Просто снять деньги получается, но я решил добавить проверку, что бы снимаемая сумма была не больше той, что есть на счету. И в случае, если сумма снимаемая больше имеющейся суммы, повторять ввод, пока не выполнится данное условие.
И вот не получается нормально, первый раз когда я ввожу снимаемую сумму, происходит проверка, сумма снимаемая оказывается больше той, что имеем, и меня просят ввести снимаемую сумму еще раз. Я целенаправленно ввожу снимаемую сумму больше той, что имеем, и мне выводится инфа, что у меня от имеющейся суммы отняли сумму, которая больше чем кол-во денег, что мы имеем.
Вот метод класса.
http://pastebin.com/f0cDH9pf
А вот весь проект, т.к. делал многофайловый проект.
https://madokami.com/96iemv.rar
IDE msvs2010


Аноним 01/10/15 Чтв 16:33:25 #308 №551740 
>>551731
Че такое свойства?
Аноним 01/10/15 Чтв 16:37:26 #309 №551743 
Учителка сказала, что не будет проверять мои Лабы на джаве, грит перекатываться на кресты. Подскажите необходимый максимум, чтобы программировать линейный, ветвящийся и циклический алгоритм в рамках laba3.cpp
Аноним 01/10/15 Чтв 16:51:06 #310 №551748 
>>551743
Точно также как на джаве, только синтакс объявления классов немного другой. Читай про классы, new и delete, и для лаб хватит.
Аноним 01/10/15 Чтв 16:52:50 #311 №551750 
>>551731
У тебя наверное символ '>' не в ту сторону.
Аноним 01/10/15 Чтв 17:01:21 #312 №551756 
>>551731
А зачем ты в while сравниваеме числа местами поменял, в условии выше же правильно.
Аноним 01/10/15 Чтв 18:10:15 #313 №551799 
Программаны, поясните про различие классов и структур.
Есть ли какие-то серьёзные отличия в работе? Например, если надо будет создать парочку свойств в виде public, будет ли разница в работе программы между классом и структурой?
Аноним 01/10/15 Чтв 18:14:50 #314 №551806 
>>551799
http://stackoverflow.com/questions/54585/when-should-you-use-a-class-vs-a-struct-in-c
Аноним 01/10/15 Чтв 20:19:40 #315 №551855 
>>551750
>>551756
1е условие проверяет, что если введено число, которое больше баланса, вводить числа до тех пор, пока число которое ввели не будет меньше баланса. Т.е. баланс будет больше вводимого числа, 2е условие.
Аноним 01/10/15 Чтв 20:27:00 #316 №551860 
>>551855
>пока число которое ввели не будет меньше баланса
Это repeat-until(condition) (которого в c++ нет, есть просто do-while(!condition)).
do-while(condition) же повторяет цикл, пока условие верно (а не пока оно не станет верно).
Аноним 01/10/15 Чтв 21:25:13 #317 №551881 
14437239135460.jpg
>>551860
Спасибо тебе милый человек.
Аноним 01/10/15 Чтв 22:15:39 #318 №551908 
Срочно прошу CLion-господ ответить мне на интересный вопрос — я должен каждый сорс файл вручную прописывать в cmakelists, или есть всё же более удобные альтернативы?
Аноним 01/10/15 Чтв 23:08:33 #319 №551933 
>>550986
Чому так грубо? Я задал вполне адекватный вопрос.
Аноним 01/10/15 Чтв 23:26:41 #320 №551939 
>>551631
SFML.
Я серьезно.
Аноним 01/10/15 Чтв 23:29:44 #321 №551942 
>>550849
Окей, спасибо за разъяснение. Если я пишу static, то где выделится память для массива/переменной? Алсо, попробовал сдать задачу, приписав static к объявлению массива - все тот же runtime error. Может я там в коде что-то делаю не так? Глянь, если не лень будет, пожалуйста.

http://acm.timus.ru/help.aspx?topic=cpp
P.S. Тут параметры компиляции, стек реально большой, в чем может быть проблема?
Аноним 02/10/15 Птн 00:05:42 #322 №551950 
Антоны, помогите написать хук с помощью Detours.
В общем есть две функции

/
?Fire@CEGun@@UAE?AW4FireResult@@ABVVector@@@Z
public: virtual enum FireResult __thiscall CEGun::Fire(class Vector const &)
/

/ public: bool __thiscall CEGun::ComputeTgtLeadPosition(class Vector &)const /

В общем суть: хук повесить на первую функцию, в хуке вызвать вторую функцию и её результат задать первой функции

Я уже совсем заебался, познаний совсем нету, кто поможет? Нужно написать все одну dll. Она не больше вроде 50 строк.
Аноним 02/10/15 Птн 00:09:59 #323 №551951 
>>551942
Не будь как маленький, поставь брейкпоинт сразу после аллокации массива. Если не доходит до него - проблема в массиве. Если доходит - где-то еще.
Аноним 02/10/15 Птн 00:24:22 #324 №551953 
>>551908
При добавлении файла можешь указать галочку, он сам добавит сорцы.
Но норм люди пишут симэйк обычно руками.
Структура проекта:
/
/Logger/сорцы
/Custom/Core
/Custom/Plugins
/writter/win/сорцы
/writter/mac/сорцы

Cmake:
...
aux_source_directory(./Logger LOGGER_SRC)
aux_source_directory(./Custom/Core CORE_SRC)

if (WIN32)
aux_source_directory(./writter/win WRITTER_SRC)
elif(APPLE)
aux_source_directory(./writter/mac WRITTER_SRC)
endif()

if (${PROJECT_PLUGINS_ENABLED})
aux_source_directory(./writter/Plugins PLUGINS_SRC)
endif()


add_executable(${PROJECT_NAME}
${CORE_SRC}
${LOGGER_SRC}
${WRITTER_SRC}
${PLUGINS_SRC}
)

И при запуске cmake, что на маке, что на винде можно юзать

cmake .
Тогда забилдится исполняемый файл/либа без плагинов для текущей оси.

Если нужны плагины, то
cmake . -DPROJECT_PLUGINS_ENABLED
Аноним 02/10/15 Птн 01:27:59 #325 №551969 
>>551950
Ладно, давайте тогда так.

public: bool __thiscal
Как это расшифровать? Гугл выдает ссылки на стаковерфлоу, а мне бы кратенько, смысл написанного.
Аноним 02/10/15 Птн 05:56:15 #326 №552001 
>>551969
Публичный член CEGun, возвращает bool, подчиняется соглашению о вызовах методов класса thiscall, когда указатель на объект, от имени которого вызывается метод, записывается в ECX.
Аноним 02/10/15 Птн 09:44:54 #327 №552075 
>>551951
Так в том то и дело, что у меня все прекрасно работает. Не могу я воспроизвести баг.
Аноним 02/10/15 Птн 10:08:53 #328 №552083 
>>551047
SDL не использовал, когда выбирал между ними больше понравился SFML, поэтому напишу только про него:
1) норм, проблем не было.
2) мне скорости хватало, рисовал все через VertexArray. Вообще странный вопрос, т.к. что SDL, что SFML просто обертки.
3) хз, вроде на форумах что-то было. НИНУЖНО/нормальному гую похую к чему прикручиватся.
4) вроде норм.
Что не понравилось: у SFML нету нормальной матлибы, есть потешные структурки "типа" векторы, но без каких-либо методов/конструкторов. Стороннюю либу взять можно, но приходилось конвертировать свои векторы/цвет в это потешное говно. НАХУЙ ТАК ЖИТЬ.
Был баг при потери фокуса окна, но его мгновенно пофиксили.
Но вообще, достаточно симпатично.
Аноним 02/10/15 Птн 13:49:26 #329 №552148 
>>552075
Ели это олимпиадная задачка, то на каком тесте валится? Если не на первом - проблема в коде.
Аноним 02/10/15 Птн 23:32:37 #330 №552392 
>>552075
Ну так наставь дебажных выводов в stdout и в stderr вида "line 15: array created" и смотри на то что тебе вернёт проверяющая система.
Аноним 03/10/15 Суб 00:17:48 #331 №552410 
>>552392
Если я правильно понимаю, в ACM вывод не виден решающему непосредственно. Приходит типа отчета по пройденных тестах и все.
Аноним 03/10/15 Суб 00:47:48 #332 №552431 
>>552410
Тогда лови ошибку в try-catch. Есть ошибка - не поймал, тест провален и без ошибки - поймал.
Аноним 03/10/15 Суб 02:13:42 #333 №552465 
Сап, ананасы.

Зазывают в достаточно крупную международную компанию POS/банковских сервисов. Прошел первый этап собеседования, выяснил для себя что кодить нужно на чистом Си.

Нет, я конечно писал на нем и много, но: может кто сталкивался - в чем специфика? Почему именно Си? Я как-то всегда наивно считал (до этого писал медийный хайлоад), что весь банковский софт пишется на плюсах и джаве. А вот оно как.

Заранее признателен.
Аноним 03/10/15 Суб 03:27:13 #334 №552480 
>>552431
У этих пидоров запрещены любые исключения, даже которые ты сам ловишь. Как только бросается - runtime error.
Аноним 03/10/15 Суб 08:30:56 #335 №552520 
>>552465
Цэ - потому что быстрый. Не кресты - потому что тяжкий крест груз стандарта и обратной совместимости с Си и ненужных обвесков-заплаток, которыми никто не пользуется. 0x14 сейчас вроде актуальный стандарт, они в последних стандартах толковой хуеты надобавляли(лямбды, замыкания, moving semantics, constexpr, STL smart pointers, threads, hashtables) - но нужно во всём этом разбираться. Копаться в чьих-то сколь-нибудь сложных templates - это адский ад. Хотя сама штука весьма полезная и нужная по задумке, реалии мира же суровы.
Квалификация нужна повыше, чем в Цэ соответственно. Иногда чистого Цэ хватает за глаза для определённых задач(где не надо ООП, полиморфизма). Например те же вычислительные/алгоритмические задачи, где надо пережевать огромный входной файл/базу во что-то полезное.
Аноним 03/10/15 Суб 08:36:34 #336 №552521 
>>550770
>Никто минимальным размером стека особо не заебывается - его размера достаточно для того для чего он предназначен (хранения адресов возврата).
Он также предназначен для локальных переменных(к примеру тех же временно живущих указателей, в которые распределяешь кучу, временных значений при вычислении) и передачи параметров(т.н. фреймов вызова функций) - и рекурсии соответственно.
‮минонА 03/10/15 Суб 11:30:10 #337 №552558 
>>552480
Тогда по старинке - комментируешь половину кода и посылаешь. Есть rt-error – ошибка в незакомментированном коде.
Только сам сначала проверяй, что полученная каша запускается.
Аноним 03/10/15 Суб 16:21:34 #338 №552678 
>>552520
А замыкания разве добавили уже? Это же вроде пока только экспериментальная фича, которую кроме мелкомягких ни один компилятор не внедрил.
Аноним 03/10/15 Суб 16:30:51 #339 №552684 
>>552678
Мелкомягкие внедряют фичи последними.
Аноним 03/10/15 Суб 16:58:28 #340 №552707 
>>552684
Они их внедряют избирательно. Большая часть весомых фич из 17 стандарта за ними, но зато не весь 14 держат.
Аноним 03/10/15 Суб 17:06:26 #341 №552716 
Пытаюсь освоить очереди, чет вообще пока грустно.
Есть задача: Заявки 1-го типа поступают в "хвост" очереди по случайному закону с интервалом времени Т1, равномерно распределенным от 0 до 5 единиц времени (е.в.). В ОА они поступают из "головы" очереди по одной и обслуживаются также равновероятно за время Т2 от 0 до 4 е.в., после чего покидают систему.
Найти, например, время прохождения 1000 заявок.
Как-то запрограммировать?
Очень желательно без stl
Аноним 03/10/15 Суб 17:09:39 #342 №552719 
>>552716
>без stl
От написания своего stl тебе станет понятнее?
Аноним 03/10/15 Суб 17:16:00 #343 №552722 
>>552719
Я думаю, что сначала лучше разобраться "как всё устроено", пописать свои pop-push/подобное руками, а потом уже stl использовать.
Но вообще, я буду рад любому решению, которое я смогу понять, ибо задачка выше-это кусок большой задачи, которую мне потом нужно сделать.
Аноним 03/10/15 Суб 17:24:51 #344 №552728 
>>552722
Ты случаем не пишешь диплом в одном из ДС2 вузов, в районе Адмиралтейской?
Аноним 03/10/15 Суб 17:31:14 #345 №552736 
>>552728
Не, это лаба 2 курса дс.
Аноним 03/10/15 Суб 17:44:49 #346 №552745 
>>552716
> без stl
В твоей постановки он не нужен. Тебе не надо хранить очередь, нужна только её текущая глубина.

http://www.r-bloggers.com/simulating-a-queue-in-r/
Вот так, только на cpp. Хотя нахуй cpp, на R это проще, только при генерации времени следующего прихода/ухода вместо rexp() заюзай runif().
Я, когда писал дипломную, обернул тот код в функцию, которая принимает на вход функцию распределения времени прибытия и обработки событий и листы с параметрами для первой и второй функции и гонял с разными параметрами.
Аноним 03/10/15 Суб 17:51:23 #347 №552750 
>>552745
Мм, ничего не понятно, но сейчас разберусь.
Спасибо.
Аноним 03/10/15 Суб 19:13:25 #348 №552792 
>>552707
Они и 11 пока не держат, лол. Нет, если мне не изменяет память, какой-то ебалы для SFINAE и еще чего-то.
Аноним 03/10/15 Суб 19:14:43 #349 №552795 
>>552736
Лол, у нас что-то подобное по имитационному моделированию задавали. По меркам МГУ халява лютая, все радовались.
Аноним 03/10/15 Суб 19:23:58 #350 №552802 
>>546742 (OP)
Позавчера попалась книга Хакинг. Искусство эксплоита. Открываю значит, ознакомился с содержанием. Там язык С. Про который я думал, что он мертв. Неужели, чтобы понять и применить на практике(с целью ознакомления) все хуитки из книги я должен пердолить С? Все эти работы с памятью, эти сдвиги, че несут вообще. Никакой альтернативы нет?
три курса хтмл+цсс и жбскрипта.
Аноним 03/10/15 Суб 19:27:03 #351 №552806 
>>552802
Лол. Ну на HTML пиши, хуле.
Аноним 03/10/15 Суб 19:27:06 #352 №552807 
>>552802
Нахуя? Делай сплоенты на цсс.
Аноним 03/10/15 Суб 19:29:41 #353 №552808 
>>552802
Да, здесь таки все в свое время отведали низкоуровневого говна, и ты так делай. Почему это нужно - есть статья Спольски: http://russian.joelonsoftware.com/Articles/LeakyAbstractions.html Так что читай Кернигана-Ритчи и пиздуй в си-тред, ссылка есть в шапке.
Аноним 03/10/15 Суб 19:53:47 #354 №552815 
>>552806
>>552807
А вы мемасные парнишки
>>552808
Ок, спасибо
Аноним 03/10/15 Суб 20:40:30 #355 №552841 
>>551047

sdl - это палка и верека, исключительно подменяет прослойку между окноопй подсистемой и opengl, ну и пле немножко обработки ввода, евентов, таймеров и звука, но плохо, если надо лучше, надо вкорчивать в программу платформозависмые костыли сразу

sfml полноценный фреймворк, к тому же на крестах, а сдл на чистом си, впрочем там настолько все просто о и тупо что на крестах это не сделать даже если бы и захотели бы
Аноним 03/10/15 Суб 20:41:09 #356 №552842 
>>550988

C++ GUI Programming with Qt4
Аноним 04/10/15 Вск 01:07:13 #357 №552947 
14439100337980.png
Поясните, почему такая хуйня не работает. Я же получаю указатель на переменную, т.е., если изменится её значение, я узнаю об этом.

И как мне тогда реализовать такую схемку - вначале у меня кучу раз добавляется всё в этот map, а потом одним вызовом всё инициализируется? И все указатели, которые были получены до этого через Submit, мгновенно становятся валидными?
Аноним 04/10/15 Вск 01:44:20 #358 №552956 
>>552947
> Я же получаю указатель на переменную, т.е., если изменится её значение, я узнаю об этом.
https://ideone.com/AzFlkj
Лучше юзай ссылку.
Аноним 04/10/15 Вск 01:47:01 #359 №552957 
>>552956
Спасибо.
Аноним 04/10/15 Вск 02:16:47 #360 №552963 
>>552947
Указатель указывает на какое-то место в памяти. В твоём случае он указывает в никуда. Возвращая его из метода ты копируешь его. А он всё так же указывает на пустоту. Как и с обычной переменной это твоя локальная копия.
Если бы этот указатель указывал на определённый адрес в системе, то ты бы по нему менял объект по этому адресу. При этом сам указатель бы не менялся. Повторюсь, т.к. это просто копия. И эта копия хранится совсем в другом месте, нежели то, что в мапе или то что создано в методе. При условии, что отсутствует оптимизация компиля.

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

На всякий случай приложу код.
https://ideone.com/B25kqS

И почитай много хорошей лит-ры. Этот код очень не хорош, за него даже не пизят по ебальнику, а просто закапывают :3 Сохранил твою структуру, чтобы тебе было проще понять как оно работает. На этапе обучения это важнее
Аноним 04/10/15 Вск 02:26:10 #361 №552965 
>>552947
>>552963

Ещё забыл добавить, что твой возврат из метода map[key] тоже не очень хорошо.
Если ты зайдёшь вот сюда http://en.cppreference.com/w/cpp/container/map , то увидишь
"Search, removal, and insertion operations have logarithmic complexity". Это, увы, обозначает что ты потратишь в худшем случае log(map_size) времени на повторный поиск. А ещё учти посимвольное странение строк. Короче, проебёшь кучу времени. И от таких ситуаций оптимизация компилятора не спасёт.
Поэтому теперь переводим свой взгляд на http://en.cppreference.com/w/cpp/container/map/insert и http://en.cppreference.com/w/cpp/container/map/emplace и видим что-то такое:

std::pair<iterator,bool> insert( const value_type& value );
...
Return value
1-2) Returns a pair consisting of an iterator to the inserted element (or to the element that prevented the insertion) and a bool denoting whether the insertion took place.
3-4) Returns an iterator to the inserted element, or to the element that prevented the insertion.
5-6) (none)

Вот. Отсюда, мы вернём указатель с гораздо меньшими затратами.
Надеюсь не зря простыню написал и что-то ты понял :3
Аноним 04/10/15 Вск 12:11:15 #362 №553044 
>>552963
Так у меня не этап обучения, а менеджер текстур. С условием, чтобы не было никакой подгрузки в рантайме. И с условием, чтобы одна и та же текстурка не грузилась дважды. А ещё с условием, что текстуры могут быть как ID3D11ShaderResourceView, так и ID3D12Resource, так и какой-нибудь OpenGL-овский unsigned int.

Ну ладно, с типами данных легко, можно создать map<string, void*>, возвращать этот же войд и делать reinterpret_cast в рендерере. Да, немного костыльно, но по-другому нельзя. Зато reinterpret_cast не ест тактов процессора.

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

А вот что делать с отложенной инициализацией... Созданные текстуры раскиданы довольно много где.

Я думал о том, чтобы ввести систему ID текстур и просто получать их по ID. Да, неплохо, но оверхед пугает, да и друг сказал, что не нужно и можно обойтись. Жёсткий рантайм всё-таки.

Возвращать двойной указатель? Тогда и хранить двойной указатель нужно во всех местах, где он используется. А это выглядит не очень хорошо.

>>552965
Я знаю про логарифмическую сложность. Поэтому и взял map - в нём поиск всегда занимает логарифмическую сложность, что означает, что это будет происходить довольно быстро.

Хотя всё равно спасибо.
Аноним 04/10/15 Вск 12:27:19 #363 №553052 
В чём разница между этой функцией:

char SomeAlgorithm(char S[35]) {

char
S1 = NULL, S2 = NULL;
S1 = (char
)malloc( 35 );
S2 = (char )malloc( 35 );
strcpy( S2, S );



strcpy( S1, S2 );
return S1;
}

и этой:

static char
SomeAlgorithm(char S[35]) {

char S1 = NULL, S2 = NULL;
S1 = (char )malloc( 35 );
S2 = (char
)malloc( 35 );
strcpy( S2, S );



strcpy( S1, S2 );
free( S2 );
return S1;
}

И вообще, когда применяется static к функциям?
Аноним 04/10/15 Вск 12:29:48 #364 №553054 
>>553052
Если static применён просто так, к глобальной функции - то это будет означать, что доступа к функции не будет из других файлов, она будет видна только в этом.
Если в классе - то это будет означать, что не нужно создавать объект класса, чтобы вызвать функцию.
Аноним 04/10/15 Вск 12:35:50 #365 №553058 
>>553054
А если не "просто так"? Получается, особой разницы между этими функциями нет, если они в пределах одного файла?

>>553052
И ещё забыл добавить, что на месте многоточий может происходить всё, что угодно, изменение строк в том числе.
Аноним 04/10/15 Вск 12:45:33 #366 №553066 
>>553058
Со static перед функцией ты не засираешь глобальное пространство имен, лучше писать везде, где возможно.
Аноним 04/10/15 Вск 12:47:52 #367 №553068 
>>553066
Понятно, спасибо.
Аноним 04/10/15 Вск 15:10:19 #368 №553136 
Посаны, поясните по хардкору, есть ли разница межу:
Type variable;
и
Type
variable;
???
Аноним 04/10/15 Вск 15:12:54 #369 №553140 
14439607747840.png
>>553136
Type variable;
и
Type
variable;
???
Аноним 04/10/15 Вск 15:27:56 #370 №553148 
>>553044
Почему не unordered_map, там поиск за константное время?
Аноним 04/10/15 Вск 15:30:01 #371 №553149 
>>553066
Хуйню написал. static для нелокальных сущностей deprecated, следует использовать анонимные пространства имен, если хочешь запретить доступ из других файлов.
Аноним 04/10/15 Вск 15:30:16 #372 №553151 
>>553136
Разницы нет.
Аноним 04/10/15 Вск 15:38:16 #373 №553156 
>>553149
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#174
Аноним 04/10/15 Вск 15:40:57 #374 №553160 
>>553148
Хех, а вот тут спасибо.
Аноним 04/10/15 Вск 15:41:13 #375 №553161 
Вообще даже эстетически сишный подход лучше.
Аноним 04/10/15 Вск 15:41:27 #376 №553162 
>>553156
Хм, ну да, формально все верно. Но энивей лучше не использовать, когда есть возможность в анонимные пространства имен, они же более наглядны у static вообще сильно многозначная семантика.
Аноним 04/10/15 Вск 15:41:33 #377 №553163 
>>553161 -> >>553149
Аноним 04/10/15 Вск 15:48:32 #378 №553168 
>>553162
>у static вообще сильно многозначная семантика
Вполне однозначная, непонятно только ньюфагам, но им и анонимные неймспейсы лучше не будут.
Аноним 04/10/15 Вск 16:10:51 #379 №553182 
>>552963
Смотрю на код и нихуя не понимаю. Похоже, мое призвание - завод.
мимоньюфаня
Аноним 04/10/15 Вск 17:16:04 #380 №553211 
>>552716
>Как-то запрограммировать?
Берёшь теорвер и считаешь.
Аноним 04/10/15 Вск 17:50:37 #381 №553253 
http://ideone.com/ErEnVM

нагло врываюсь
Аноним 04/10/15 Вск 17:54:33 #382 №553256 
2 Вопроса к знающим господам (спрошу у вас, потому что все вы наверняка знаете Си):
почему компилятор не выдает ошибку, когда я пытаюсь положить значение в область памяти, которая моей не является?
вот код:
int mas=(int)calloc(10,sizeof(int));
int mas2[10];
if (mas!=NULL)
{
mas2[10]=1;
mas[10]=1;
}
2) является ли эта ситуация undefined или unspecified behavior?
Аноним 04/10/15 Вск 18:04:23 #383 №553264 
>>553256
1. Потому что компилятор не занимается статическим анализом.
2. А system("rm -rf /") - это какой behavior?
Аноним 04/10/15 Вск 18:05:18 #384 №553265 
>>553256
> почему компилятор не выдает ошибк
Компилятор не следит за границами массивов. Это UB. UB даже просто установить указатель за границы выделеного именно для этого указателя массива памяти, за исключением одного элемента следущего прямо за выделеным блоком. Тоесть mas+=10; - норма, mas+=11; - UB, *(mas+10) - UB.
Аноним 04/10/15 Вск 18:07:18 #385 №553267 
>>553253
И что?
Аноним 04/10/15 Вск 18:19:35 #386 №553274 
Как можно в C/C++ открыть RTMP-стрим и выводить видео на экран? В гугле по запросу с rtmp ничего по теме не гуглится. Нашел, что можно вывести через directshow, но мне бы кроссплатформенное что-нибудь.
Аноним 04/10/15 Вск 18:23:17 #387 №553276 
>>553274
Нашел еще, что можно при помощи либы librtmp сделать клиента, но пока ищу примеры как с её помощью вывести изображение на экран.
Аноним 04/10/15 Вск 18:30:46 #388 №553282 
>>553168
Не, я в том смысле, что одно и то же ключевое слово, в зависимости от контекста, означает разное. Это вообще довольно больное место C++, потому что из-за static, или, например, virtual которое может обозначать как виртуальный метод, так и виртуальное наследование грамматика не является бесконтекстной, и разбирать ее сложнее. И компиляция замедляется.
Аноним 04/10/15 Вск 18:33:23 #389 №553284 
>>553256
Undefined это.
Аноним 04/10/15 Вск 18:34:12 #390 №553285 
>>553265
Неправда же. Установить указатель можно на что угодно, это допустимо. UB возникнет при попытке его разыменования.
sageАноним 04/10/15 Вск 18:37:42 #391 №553289 
>>553264
Щяс проверю))
Аноним 04/10/15 Вск 18:42:35 #392 №553294 
>>553274
Ладно, хуй с ним.
Возьму за основу ffplay и буду его пилить.
Аноним 04/10/15 Вск 19:04:59 #393 №553311 
>>553265
за исключением одного элемента следущего прямо за выделеным блоком - почему так?? там же уже мусор лежит и это не выделенная память?
получается, я могу положить любое значение в любой участок памяти, выделенной процессу (и на стеке и в куче), если он уже не используется мной же?
Аноним 04/10/15 Вск 19:23:13 #394 №553333 
>>553285
>Неправда же
А если я покажу место в стандарте?
Аноним 04/10/15 Вск 19:29:05 #395 №553338 
>>553311
> там же уже мусор лежит и это не выделенная память?
Ты не знаешь, что там лежит, т.к. не можешь разыменовывать указатель.
> за исключением одного элемента следущего прямо за выделеным блоком - почему так?
Потому что массивы принято описывать как полуоткрытые интервалы.
Аноним 04/10/15 Вск 19:30:38 #396 №553342 
>>553333
Покажи.
Аноним 04/10/15 Вск 19:32:02 #397 №553345 
>>553333
покажи, няша.
автор вопроса
Аноним 04/10/15 Вск 19:34:43 #398 №553349 
>>553338
как не могу, если я свободно туда значение кладу
и если он полуоткрытый [0;10), почему я могу ложить значение в [10]?
Аноним 04/10/15 Вск 19:37:00 #399 №553354 
>>553342
>>553345
> If both the pointer operand and the result point to elements of the same array object, or one past
the last element of the array object, the evaluation shall not produce an overflow; otherwise, the behavior is undefined.
5.7(5)
Аноним 04/10/15 Вск 19:37:25 #400 №553355 
>>553349
Потому что размер массива в общем случае известен только в рантайме. Ты можешь сказать, что в твоем конкретном случае это не так, но компилятор статическим анализом не занимается, и он понятия не имеет, заходишь ли ты за границы массива или нет.
Аноним 04/10/15 Вск 19:37:47 #401 №553356 
>>553349
По стандарту это UB.
Аноним 04/10/15 Вск 19:38:20 #402 №553357 
>>553311
> за исключением одного элемента следущего прямо за выделеным блоком - почему так
Чтобы в цикле можно было удобно пройти по выделеному блоку памяти, что-то типа for(i=0, i <size; i++), где i - указатель. На последней итерации указатель станет указывать на участок памяти сразу за выделеным, что доспукается, но разименовывать уже нельзя. И дальше передвигать нельзя.
Есть системы где сама ОС следит чтобы ты не вылез за выделеный буфер, я деталей не знаю, но там наверное указатель не просто переменная с адресом, а объект который выдается системой (типа мьютекса), и система следит как ты с ним работаешь. Если ты запросил указатель для работы с блоком памяти то при попытке передвинуть указатель вне блока система пошлет нахуй.
> я могу положить любое значение в любой участок памяти, выделенной процессу
Вообще да, но могут всплыть нюансы. Гугли "переполнение буфера".
Аноним 04/10/15 Вск 19:38:33 #403 №553358 
>>553355
Неправда, что компилятор вообще статическим анализом не занимается
>>553349
Тебе повезло. Так работает память в компьютере.
sageАноним 04/10/15 Вск 19:41:09 #404 №553360 
>>553357
>i=0
естественно что-то типа i=mas а не 0. Привычка-с.
Аноним 04/10/15 Вск 19:41:44 #405 №553361 
>>553354
Ты не понял, что это значит. Это значит, что если прибавить к адресу последнего элемента единицу, то переполнения не случится, то есть нельзя расположить массив в памяти по адресам N - последнее возможное число. А вот по адресам N - последнее возможное число минус один - можно.
Аноним 04/10/15 Вск 19:42:58 #406 №553363 
>>553354
Это не о том. Написать int x = (int)1234567 никто не запрещает.
Аноним 04/10/15 Вск 19:43:35 #407 №553364 
>>553354
это плюсовый стандарт?
Аноним 04/10/15 Вск 19:44:46 #408 №553367 
>>553364
Я загуглил этот отрывок и нашел это - говорят, C стандарт. http://c0x.coding-guidelines.com/6.5.6.html

мимо-рандом
Аноним 04/10/15 Вск 19:46:59 #409 №553372 
>>553364
>>553367
Специально дал конкретный пункт, но дебилы начали что-то спрашивать и что-то гуглить.
Аноним 04/10/15 Вск 19:47:27 #410 №553373 
>>553372
Ты сам дебил.
Аноним 04/10/15 Вск 19:48:05 #411 №553374 
>>553373
Лол, нет.
Аноним 04/10/15 Вск 19:49:56 #412 №553376 
>>553363
> никто не запрещает
Угу. Но и никто не гарантирует. Указатель, полученный из рандомного числа не является safely-derived и его поведение unspecified.
Аноним 04/10/15 Вск 19:53:29 #413 №553380 
>>553354
Если вкратце, что гарантирует стандарт: можно присвоить указателю что угодно, все будет WB. Можно разыменовать указатель на существующий объект, WB. Можно сравнивать указатели на любые корректные объекты при помощи == друг с другом и с nullptr, будет WB. Можно сравнивать при помощи <, >, <=, >=, но WB будет только если это элементы одного массива, либо точка сразу за концом массива (поэтому и гарантируется отсутствие переполнения по твоей цитате - чтобы можно было пройти по массиву, сравнивая с точкой за его концом, чтобы вовремя остановиться), либо члены одного объекта. Для всех прочих указателей сравнение будет unspecified behaviour, т.е. программа корректная, но конкретный результат неизвестен и зависит от реализации.
Аноним 04/10/15 Вск 19:55:51 #414 №553382 
>>553361
но если я положу значение в Nый элемент, мне никто не сообщит о том, что так делать нельзя?
Аноним 04/10/15 Вск 19:56:07 #415 №553383 
>>553357
Не совсем так. Дальше передвигать можно, без разыменования UB не будет в любом случае. Но отсутствие переполнения уже не гарантируется, т.е. в указателе может появиться теоретически рандомный адрес, ну как если бы ты без инициализации его определил, с мусором. Вроде все корректно, но использовать нельзя.
Аноним 04/10/15 Вск 19:56:14 #416 №553384 
>>553361
>Ты не понял, что это значит
Я прекрасно понимаю что это значит. Это пункт об арифметике указателей и о том, когда и что можно к ним прибавлять. Так вот, прибавлять к указателю можно когда он является указателем на элемент массива и так, что можно вылезти только на один элемент после конца массива. Всё остальное — UB.
Аноним 04/10/15 Вск 19:57:29 #417 №553385 
>>553358
Он может заниматься, но не обязан. Даже в случае ill-formed программы стандарт не всегда требует диагностики, а уж отслеживать предполагаемое UB в рантайме точно от компиляторов не требовалось и не будет.
Аноним 04/10/15 Вск 19:57:57 #418 №553386 
>>553380
как раскрывается аббревиатура WB?
Аноним 04/10/15 Вск 19:58:36 #419 №553387 
>>553384
Нет же. Переполнение возможно, но это нихуя не UB. Если ты сложил два MAX_INT, то UB не будет, ты просто данные свои же попортишь. Тут то же самое.
Аноним 04/10/15 Вск 19:59:03 #420 №553390 
>>553383
Тогда что считать переполнением?
Аноним 04/10/15 Вск 20:00:28 #421 №553391 
>>553387
Что ты несёшь?
Аноним 04/10/15 Вск 20:00:30 #422 №553392 
>>553382
Зауисит от компилятора. Если запустишь шланг с какими-нибудь опциями проверки нелегального доступа к памяти, то возможно он во время запуска сообщит. А может какой-нибудь компилятор и просто с -Wall -Wextra даст ворнинг, хз. А может ты попытаешься обратиться к памяти, которая принадлежит не твоей программе, и тебе операционка завершит твою прогу.
Аноним 04/10/15 Вск 20:00:47 #423 №553394 
>>553376
Unspecified это не критично же, программа не поломается, если ты знаешь, что делаешь. Если ты сделал двойной каст в исходный тип через тип большего размера, то ты пройдешь через unspecified и вереншься в нормальное поведение, гарантированно. А если ты попытаешься приойти так через undefined, то это некорректно, потому что все может нахуй сломаться.
Аноним 04/10/15 Вск 20:01:18 #424 №553395 
>>553386
Well behaviour.
Аноним 04/10/15 Вск 20:01:51 #425 №553399 
>>553387
Насколько я помню, и в C++ и в C любое переполнение - UB
Аноним 04/10/15 Вск 20:06:27 #426 №553401 
>>553399
Блджад, покурил стандарт и таки да. Мне всегда казалось, что это unspecified. Энивей, "most existing implementations of C++ ignore integer overflows".
Аноним 04/10/15 Вск 20:06:55 #427 №553402 
>>553384
Неа. Остальное UB - только если действительно случится переполнение. А если не случится, то никакого UB. Так что эта хуйня рандомно в реальном мире скорее всего никогда может превратиться в UB, типа такого

if (get_random_int() == 100500) {
invoke_undefined_behaviour();
}
Аноним 04/10/15 Вск 20:08:04 #428 №553404 
>>553399
я правильно понял, что за переполнением следит ОС?
Аноним 04/10/15 Вск 20:08:37 #429 №553405 
>>553402
Хм, но ты-то не знаешь, случится ли переполнение, так что по любому определенности нет у тебя.
Аноним 04/10/15 Вск 20:09:12 #430 №553406 
>>553402
>Неа
Ты не понимаешь, к чему относится "otherwise". Оно относится к "If both the pointer operand and the result...", а не к "shall not produce an overflow".
Аноним 04/10/15 Вск 20:09:15 #431 №553407 
>>553404
переполнением массивов я имел ввиду
Аноним 04/10/15 Вск 20:09:23 #432 №553408 
>>553404
По факту никто не следит, всем похуй, и просто портятся данные, с отбрасыванием старшей единицы. А в стандарте это типа как отказ от ответственности.
Аноним 04/10/15 Вск 20:09:41 #433 №553409 
>>553404
Нет.
Аноним 04/10/15 Вск 20:11:03 #434 №553410 
>>553401
>most existing implementations of C++ ignore integer overflows
Я уверен, что это не совсем так.
Как минимум выдача ворнингов, если статический анализ выявит, что переполнение гарантированно будет - что-то типа MAXINT + MAXINT прямо в коде.
А иногда еще какие-нибудь компиляторские оптимизации производятся на основании того, что если овервлоу, то это UB.
А еще я сейчас опять подумал и припомнил, что где-то читал, что UB это переполнение то ли только signed чисел, то ли только unsigned. Не помню, каких именно.

>>553404
Вообще процессор за этим следит и в случае переполнения ставит флаг, что случилось переполнение. C и C++ вроде как не предоставляют возможности работать с этим флагом. Так что в реальном ирл мире если у тебя в программе складываются два числа и случается переполнение, и язык у тебя используется не какая-нибудь Джава, а что-то типа C или C++, то вероятно оно переполнится, и язык на это не обратит внимания, и программа дальше будет работать.
Аноним 04/10/15 Вск 20:11:16 #435 №553411 
>>553407
Зависит от. Можно компилировать с флагом защиты от переполнения, плюс ос может вскукарекнуть, если ты, например, залезешь на адрес возврата. А может и не вскукарекнуть.
Аноним 04/10/15 Вск 20:12:24 #436 №553414 
>>553407
Че такое переполнение массивов?
Аноним 04/10/15 Вск 20:13:37 #437 №553415 
>>553410
Статический анализ это да, но в целом я не могу представить реализацию, когда случится что-то плохое от присваивания указателю рандомного значения, хоть даже запрещенного/с переполнением. Ну, только если это специально вставлять код, который будет это отслеживать и срать в кашу неаккуратным погроммистам.
Аноним 04/10/15 Вск 20:15:20 #438 №553416 
>>553414
видимо имелся ввиду выход за границы и разыменование
Аноним 04/10/15 Вск 20:15:26 #439 №553417 
>>553402
>>553406
Вот, сишная версия этого утверждения. Она-то точно однозначно трактуется.
Unless both the pointer operand and the result point to a member of the same array object, or one past the last member of the array object, the behavior is undefined
Аноним 04/10/15 Вск 20:15:59 #440 №553419 
>>553406
Ладно, ты прав, там так написано.
Но
1. Я не уверен, так ли это в C++, а еще я где-то что-то читал, что вроде противоречит этому, так что хуй знает
2. Я это вообще нашел в каком-то там The New C Standard, и я хуй знает, что это такое
3. Стоило привести весь абзац от начала, чтобы было понятно, что речь вообще про математические операции плюс и минус между указателем и числом.
Аноним 04/10/15 Вск 20:17:26 #441 №553420 
>>553419
>Стоило привести весь абзац от начала, чтобы было понятно, что речь вообще про математические операции плюс и минус между указателем и числом.
Ну а как ещё получить указатель на конец массива, кроме как прибавляя к указателю на начало длину массива?
Аноним 04/10/15 Вск 20:19:57 #442 №553421 
>>553420
получается в mas[mas.length] можно класть значение и это не будет UB?
Аноним 04/10/15 Вск 20:21:39 #443 №553424 
>>553421
Получать указатель можно, разыменовывать — нельзя.
Аноним 04/10/15 Вск 20:24:12 #444 №553425 
>>553424
нельзя потому что это запрещено стандартом, или потому что поведение в этом случае неопределено?
Аноним 04/10/15 Вск 20:24:47 #445 №553427 
14439794877990.png
>>553417
Ладно, оказывается действительно

если прибавить или отнять сколько-то от указателя на сишный массив, не на что-то другое, так вот - прибавить или отнять столько, что результат не вписывается в [начало массива; конец массива плюс 1], то это UB.

Это в C++ стандарте.

для >>553421
про разыменование там ничего не сказано

Но я на 100% уверен, что разыменование конца массива плюс один, если ты на эту ячейку получил указатель не каким-то другим способом, то если не через какую-то другую переменную, это UB
Аноним 04/10/15 Вск 20:25:28 #446 №553429 
>>553425
Потому что стандарт говорит я не знаю, где именно, но инфа сотка говорит, что в таком случае поведение не определено
Аноним 04/10/15 Вск 20:28:02 #447 №553430 
>>553256
всем спасибо за разъяснения
Аноним 04/10/15 Вск 20:30:40 #448 №553432 
>>553421
>>553425
>>553427
>>553429
Автор >>553424 here: видимо, стандарт не говорит, что разыменовывать нельзя. Как минимум не говорит это ЯВНО.
Аноним 04/10/15 Вск 20:33:04 #449 №553434 
>>553432
Чтоу? Стандарт определенно где-то говорит, что в случае такого разыменования поведение не определено. Просто не в том месте, которое приведено тут. Ведь это место - оно про операции сложения и вычитания.
Аноним 04/10/15 Вск 20:36:55 #450 №553436 
Вы тут такие интересные вещи обсуждаете, а я второй час смотрю на функцию, которая возвращает int и не могу вспомнить нахуя она его у меня возвращает.
Аноним 04/10/15 Вск 20:37:40 #451 №553437 
>>553436
замени на void и посмотри где ошибка, не?
Аноним 04/10/15 Вск 20:40:06 #452 №553438 
>>553436
Это потому что ты нарушаешь https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md P.1 и P.3 (у тебя наверное почти последний example из P.3)
Аноним 04/10/15 Вск 20:41:17 #453 №553439 
>>553434
Сишный стандарт говорит " If both the pointer operand and the result point to elements of the same array object, or one past the last element of the array object, the evaluation shall not produce an overflow; otherwise, the behavior is undefined. If the result points one past the last element of the array object, it shall not be used as the operand of a unary * operator that is evaluated."
В C++-стандарте последнего предложения нет.
Вот и думай тут.
Аноним 04/10/15 Вск 20:43:29 #454 №553441 
>>553439
Очевидно, C++-ный стандарт просто по-другому структурирован. А в C-стандарте получается это написано в двух местах - ведь в описании оператора * унарного наверняка написано, что если он не указывает на подходящий объект, то UB.
Аноним 04/10/15 Вск 20:49:30 #455 №553448 
>>553441
Ну вот есть такое:
If an object of type T is located at an address A, a pointer of type cv T<star> whose value is the
address A is said to point to that object, regardless of how the value was obtained. [ Note: For instance, the address one past the end of an array (5.7) would be considered to point to an unrelated object of the array’s element type that might be located at that address. There are further restrictions on pointers to objects with dynamic storage duration; see 3.7.4.3. — end note ]
Аноним 04/10/15 Вск 23:34:35 #456 №553604 
>>552083
>>552841
Спасибо.
Аноним 05/10/15 Пнд 10:56:35 #457 №553758 
Поясните нубу, почему русский текст в консоли отображается знаками вопроса?
Аноним 05/10/15 Пнд 11:25:29 #458 №553764 
>>553758
Потому что русский язык не нужен.
Аноним 05/10/15 Пнд 13:32:53 #459 №553806 
>>553758
Потому что в твоей консоли\проге хуйня с шрифтами\кодировкой.
Аноним 05/10/15 Пнд 13:35:44 #460 №553809 
>>553806
Как в консоли это поправить? Я гуглил, писал setlocale, но ничего не помогает.
Аноним 05/10/15 Пнд 16:22:56 #461 №553895 
>>546742 (OP)
http://pastebin.com/ameqBHY9
помогите плиз, не корректно работает программа, хотя код вроде бы правильный
мне нужно создать массив, в котором находятся элементы, которые содержатся в двух множествах
если общий элемент один, то всё верно, а если их несколько, то программа не работает, что не так?
Аноним 05/10/15 Пнд 16:26:44 #462 №553899 
>>553809
Если ты на cout пишешь юзай cout.imbue() передавая туда объект C++ локали. Попробуй разные локали - на винде win1251, dos866 пробуй, не помню какая уже.
Аноним 05/10/15 Пнд 16:35:35 #463 №553905 
>>553895
Слишком длинно. Вот как, блядь, нужно писать:

[code lang="cpp"]
std::vector <int> set1, set2, result;

// Здесь заполняем set1 и set2

std::sort (std::begin (set1), std::end (set1));
std::sort (std::begin (set2), std::end (set2));

std::set_intersection (std::begin (set1), std::end (set1),
std::begin (set2), std::end (set2),
std::back_inserter (result));

result.data (); // Здесь твой массив с общими элементами
[/code]
Аноним 05/10/15 Пнд 16:45:43 #464 №553913 
>>553895
Ну давай разберем по частям тобой написанное. Складывается впечатление, что ты вообще не имеешь представления о безопасности исключений. В конструкторе set ты память выделил? Выделил. А что будет, если T выбросит исключение в операции присваивания, ты подумал? Потечет твой массив из памяти, как твоя мамка при виде куска сала, ибо объект не будет считаться созданным, и деструктор не вызовется.
Аноним 06/10/15 Втр 16:31:17 #465 №554439 
14441382774940.jpg
>>546742 (OP)
Нормально ли использовать Spirit для написания парсера простого ЯП?
Аноним 06/10/15 Втр 16:40:18 #466 №554444 
>>554439
Нормально. Нынче и хуйлоад на питонах пытаются пейсать, а ты паришься о лексическом анализе с фреймворком.
Аноним 06/10/15 Втр 17:02:19 #467 №554458 
>>554439
Кроме Spirit есть еще несколько реализаций генераторов лексических парсеров (lexer один из них называется или что-то вроде этого). Задаешь грамматику в БНФ вроде. Погугли lexical parser generators У них свои плюсы/недостатки перед Spirit. Например, не надо ебаться с шаблонным метапрограммированием.
Аноним 06/10/15 Втр 19:31:38 #468 №554523 
Поясните, где прочитать (или тут) про цикл for.
Прям подбробно, как он выглядит изнутри.
Допустим, цикл принимает вот такое
for( действие; действие; действие, действие)
но ругается на такое
for( действие, действие; действие; действие)

Страуструпа в ОПпосте открывал, там подробностей нет, в гугле тоже инфа уровня for(тут можно задать перменную; тут условие; тут инкремент)
Аноним 06/10/15 Втр 19:36:34 #469 №554529 
>>554523
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf
142 страница.
Аноним 06/10/15 Втр 19:52:38 #470 №554548 
14441503586580.png
>>554529
?
На 10 страниц повыше есть описание for, но точно такое же как у Страуструпа (если это не та же книга)
Аноним 06/10/15 Втр 19:56:34 #471 №554553 
>>554523
потому что в for первым идет объявление переменных, а не действие. Нельзя вроде сделать (int a=1, float b=2); по стандарту. Уточняй.
Аноним 06/10/15 Втр 20:02:54 #472 №554559 
>>554553
Но почему тогда вот такая конструкция работает?
int i = 0;
for(cout<<"hui"; i<2 ; i++)
{

}
Аноним 06/10/15 Втр 20:05:25 #473 №554564 
А не, я ошибся там мальца, можно там 2 выражения писать, просто если идёт объявление переменной, ничего кроме этого уже не напишешь.
Аноним 06/10/15 Втр 20:17:50 #474 №554577 
>>554523
Потому что "," - это "оператор запятая", который действует так: вычислить выражение до запятой, вычислить выражение после запятой и вернуть его. Поэтому i=0,j=0 работает.
Но ты пишешь типа, это уже не "оператор запятая", а разделение имен переменных в объявлении. Поэтому "int i=0, int j =0" не работает. Точно так же, как не работает в отдельной строчке:

int main() {
yoba();
int i=0, int j=0;
yoba2();
}

Зато for(int i=0,j=0;...) работать будет по той же причине, что и работает

int main() {
yoba();
int i=0, j=0;
yoba2();
}
Аноним 06/10/15 Втр 20:26:03 #475 №554582 
>>554577
Да, спасибо, до меня наконец дошло, вся фишка была вот в этом операторе запятой. Я как-то сразу и не подумал.
Аноним 06/10/15 Втр 20:29:17 #476 №554587 
>>554582
Его еще перегружать можно.
Аноним 06/10/15 Втр 20:41:12 #477 №554601 
Погромисты, нужен ваш совет, как вытащить из dev/random число(>1) и записать в переменную?
мимоучуплюсы
Аноним 06/10/15 Втр 20:41:57 #478 №554602 
>>554587
Ааа сложна.

Аноним 06/10/15 Втр 21:25:53 #479 №554616 
>>554601
Открываешь его как ifstream и читаешь, это обычный файл же. Алсо, если тебе просто нужно рандомное число, используй встроенный генератор std::mersenne_twister_engine, например.
Аноним 06/10/15 Втр 21:30:21 #480 №554620 
14441562218670.png
>>554616
Спасиб.
Аноним 06/10/15 Втр 21:32:41 #481 №554622 
>>554602
Сложно, но на этом основано много магии типа boost::bind.
Аноним 06/10/15 Втр 21:32:52 #482 №554623 
О Боги кодинга, молю Вас о секрете замута библиотеки собственных функций. MVS видит хедер, но не более. Таки мне что делать, да куда кидать?
Аноним 06/10/15 Втр 21:37:03 #483 №554628 
>>554623
> Таки мне что делать
Таки кроме include path есть library path.
Аноним 06/10/15 Втр 21:41:18 #484 №554630 
>>554628
Так я чернь несведующая, мне примеры подавай, расписывай все
Аноним 07/10/15 Срд 01:22:34 #485 №554779 
Функторы отжили свое? Вместо них стоит всегда использовать лямбды?
Аноним 07/10/15 Срд 02:05:39 #486 №554792 
>>554779
Ну почему же. Если ты хочешь повторно использовать мономорфный код, то правильно будет просто сделать именованный функтор. Но вообще это дело вкуса, делай, как тебе удобно.
Аноним 07/10/15 Срд 04:53:56 #487 №554823 
>>554779
Нет, не отжили, но их сильно потеснили. Лямбды - для анонимного inline определения функтора, используемого на месте, это нужно для алгоритмов в основном. Еще у лямбд замыкание есть, а это экономит время - и может даже быстрее выполняться(если оно реализовано ссылкой на стек, вместо копирования переменных). Если же функтор не привязан к окружающему коду(используется вне контекста алгоритмов), и является обычной функцией с состоянием - то можно его объявить и классически.
Аноним 07/10/15 Срд 04:57:40 #488 №554824 
Функторы (что за тупое использование термина) еще наследоваться могут, например.
Аноним 07/10/15 Срд 05:56:05 #489 №554829 
>>554823
Поясни за замыкание?
>>554824
Где может это пригодиться?
Аноним 07/10/15 Срд 06:02:12 #490 №554830 
>>554829
Для йоба-ООП http://ideone.com/VlO0V7
Аноним 07/10/15 Срд 06:12:28 #491 №554831 
>>554830
Ты только что джаву
Аноним 07/10/15 Срд 06:19:44 #492 №554832 
>>554830
Где можно почитать про lvalue/rvalue/xvalue, чтобы понять это дерьмо? Сколько ни пытался понять - так и не выходит. Просто не у кого больше спросить.
Аноним 07/10/15 Срд 07:18:26 #493 №554838 
>>554829
Замыкание - это волшебная фича из функционального программирования. Позволяет использовать переменные из контекста объявления лямбды(переменные в зоне видимости).
https://ru.wikipedia.org/wiki/Замыкание_(программирование)
http://stackoverflow.com/questions/7627098/what-is-a-lambda-expression-in-c11
>>554832
http://stackoverflow.com/questions/3601602/what-are-rvalues-lvalues-xvalues-glvalues-and-prvalues
Тащемта, stackoverflow рулит. Там даже C++ FAQ есть в виде вопросов-ответов.
Аноним 07/10/15 Срд 07:25:03 #494 №554839 
>>554832
Ты должен понять мотивацию. Мотивация простая - тебе нужен механизм детектирования "временных" объектов - которые сдохнут в этой же строке от "постоянных", которые еще поживут. Зачем? Ради скорости. У временного объекта ты можешь забрать все ресурсы, все равно он труп, а вот из постоянного объекта все придется или копировать или еще как извращаться.
Например в выражении `y=f(g(x))` результат g(x) тут же сдохнет, не дожив до следующей строки. А вот `y` эту строку переживет.
И вот механизм детектирования заключается в том, что временные объекты являются rvalue references (обозначаются они не int&, а int&&). Это значит, что они могут существовать только справа от знака присваивания. Поэтому, сделав конструктор, принимающий rvalue-ссылку, ты можешь быть уверен, что ты принимаешь временный объект, который сдохнет и делать ты с ним можешь что хочешь. Например, забрать у него все unique_ptr и толстые векторы через std::move.
Это - мотивация, поэтому почитай о move-семантике и сделай класс, который может move'иться. А lvalue/rvalue/xvalue оставь разработчикам компиляторов С++.
Аноним 07/10/15 Срд 07:32:42 #495 №554840 
>>554839
>>554839
Еще поддвачну - rvalue/xvalue позволяет компилятору делать
https://en.wikipedia.org/wiki/Return_value_optimization
https://en.wikipedia.org/wiki/Copy_elision
Аноним 07/10/15 Срд 11:46:41 #496 №554930 
>>554832
Скотт Мейерс оче грамотно поясняет в своей последней книжке и вот в этой статье: http://habrahabr.ru/post/157961/
 Аноним 07/10/15 Срд 12:07:19 #497 №554941 
>>553809

SetConsoleCP(1251);
SetConsoleOutputCP(1251);

И люсинда шрифт в консоли (у меня на семёрке так)
Аноним 07/10/15 Срд 12:17:18 #498 №554946 
НОВЫЙ ТРЕД
https://2ch.hk/pr/res/554944.html
https://2ch.hk/pr/res/554944.html
https://2ch.hk/pr/res/554944.html
Аноним 07/10/15 Срд 16:04:41 #499 №555042 
>>554832
http://en.cppreference.com/w/cpp/language/value_category
Аноним 07/10/15 Срд 16:05:39 #500 №555043 
>>554840
Нет.
Аноним 07/10/15 Срд 16:12:38 #501 №555047 
Двачик, помоги с лабой пожалуйста.
Задание: Распечатать только простые числа в диапазоне от 1 до N.
Вот мой код:
#include <stdio.h>
#include <iostream.h>
#include <math.h>
#include <conio.h>
void main()
{
clrscr();
cout <<"Lab-02"<<endl;
cout<<"Zadacha-6"<<endl;
int N,k,count,d;
cout <<"N = "; cin>>N;
for (k=1;k<=N;k++);//Generator chisel ot 1 do N
{
count=0;//kol-vo delitelei priravnivaem k 0
for (d=2;d<=k;d++)//Generator delitelei ot 2 do k
if (k%d==0) count++;//yvelichivaem kol-vo delitelei na 1
printf("%4d ",count);
if (count==2) //ecli 2 delitelya - chislo prostoe
printf("%4d",k); //vivodim k
}
getch();
}
Аноним 07/10/15 Срд 17:19:49 #502 №555104 
>>555047
И что с ним не так, кроме того, что он тяжело читается?
Аноним 07/10/15 Срд 17:26:57 #503 №555108 
>>555047
Короче понял, где там ошибка.
последний if должен быть
if(count==0)
cout<<k;
Ты бы хоть алгоритм изучил перед применением.
Аноним 08/10/15 Чтв 09:39:54 #504 №555125 
>>555043
Что нет-то? Обоснуй. Суть rvalue - что не нужно временный объект создавать/копировать(он всё равно справа от присвоения будет), можно запихнуть сразу в левую часть присвоения(т.е. компилер может передать в функцию указатель, вместо возврата и копирования/переноса объекта). В чём я не прав?
Аноним 08/10/15 Чтв 09:44:45 #505 №555126 
>>555047
>cout вместе с printf
>i++ вместо ++i
>код не отформатирован
>стало лень разбираться
facepalm.jpg
Решето эратосфена возьми рабочее, скопипасти и заюзай.
Аноним 08/10/15 Чтв 16:07:25 #506 №555264 
>>553401
>Блджад, покурил стандарт и таки да. Мне всегда казалось, что это unspecified. Энивей, "most existing implementations of C++ ignore integer overflows".

СУРЬЁЗНО? Я может неправильно понял? У меня есть код, в котором (не один раз) встречаются (упрощённо) следующего вида циклы for:

>const std::size_t size_t_max = static_cast<std::size_t>(-1);

>for (std::size_t i = size_t_max; count < n; ++count)
>{
>array[++i] = count;
>array[++i] = count;
>array[++i] = count;
>array[++i] = count;
>}

Я хочу проходить по 4 значения array, присваивая им текущее значение счётчика. Array состоит из четырёх миллионов значений. За счёт ++i вместо i++ я хочу выиграть миллисекунду, я жадный.

В самую первую итерацию в первый инкремент у меня происходит переполнение i с size_t_max до предполагаемого нуля. И в MSVS Express 2013 это работает ровно так, как я и ожидал -- обращается к array[0] и т.д. Тем не менее, вопросы:

std::size_t i = static_cast<std::size_t>(-1);
++i;

1) Это UNDEFINED behaviour? да/нет
2) Это unspecified behaviour? да/нет
3) Можно привести прямую цитату из стандарта, разъясняющую этот момент?
Аноним 08/10/15 Чтв 21:17:14 #507 №555456 
Анон, который вызывался помочь с c++ во вконтактеке или телеграме, ты еще здесь?
Аноним 08/10/15 Чтв 21:26:05 #508 №555464 
>>555264
Итт тебя наебали. C signed типами - unspecified, с unsigned всё ок.
comments powered by Disqus

Отзывы и предложения