М.Двач / Программирование

Этого треда уже нет.
Это копия, сохраненная 30 октября 2015 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

6078 Кб, Webm

Оффициальный™ традиционный® C++ тред #7 21 Сен, 14:29 #546742 В конец треда | Веб

"... Жалчайший род, чей жребий несчастливый
И молвить трудно. Ты на костыле
Вновь самокат приладил, нечестивый!"

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

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

Внизу ж, суливших, что определят
В 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 Сен, 14:30 #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 Сен, 16:07 #3 #546822

Хотел в крестотред на форче сходить, но не смог его найти. А когда спросил у местных выяснилось что я негр не могущий в инглиш. Где он у них?

Ответы: >>546830

21 Сен, 16:16 #4 #546830

>>546822
Спроси: " where i can find("Effective Modern C++")?"

Ответы: >>546833

21 Сен, 16:21 #5 #546833

>>546830
В их g или b? Спрашивал подобное послали на стэковерлоу.

21 Сен, 16:27 #6 #546835

Вот за книгу по бусту спасибо

21 Сен, 16:56 #7 #546848

Призывается анон, который поделился книгой про boost. Будет восхитительно, если ты хотя бы примерно сможешь вспомнить, где ее взял. Дело в том, что это одна из тех книг, которых нет в гугле и вообще в открытом доступе, и там, где ты ее нашел, может быть и другая уникальная годнота, которую следует включить в шапку.

Ответы: >>546851, >>546855, >>546860, >>546861, >>547027

21 Сен, 16:59 #8 #546851

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

Но весит она 52 МБ против трёх по ссылке анона.

Ответы: >>546855

21 Сен, 17:02 #9 #546855

>>546848
>>546851
http://www.allitebooks.com/learning-boost-c-libraries/ вот, нашёл 52MB-версию

Ответы: >>546860

21 Сен, 17:03 #10 #546860

>>546848
>>546855
Кстати, в книге анона этот сайт указан внизу каждой страницы.

21 Сен, 17:06 #11 #546861

>>546848
http://gen.lib.rus.ec/search.php?mode=last
Про генлибрусек еще не забывай, один из моих любимейших ресурсов.

Ответы: >>546862

21 Сен, 17:07 #12 #546862

>>546861
Ты бы хоть проверил сначала, есть ли там. Подсказка нету

Ответы: >>546867

21 Сен, 17:18 #13 #546867

>>546862
Ну я не говорил, что конкретно эта там есть, но я там находил достаточно много вещей, которые сложно или невозможно было достать в других местах. Извиняюсь, если зря в разговор влез.

Ответы: >>546885

вброшу 21 Сен, 17:48 #14 #546884

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md

21 Сен, 17:50 #15 #546885

>>546867
Да нет, что ты, речь как раз шла не про эту книжку, а про МОАР. Вообще, чем больше анон запилит ссылок на книги, тем лучше, потому что я пролистываю каждую новую встреченную библиотеку в поисках книг, которые могли бы хорошо для шапки подойти, и вообще.

55 Кб, 1008x432

21 Сен, 18:12 #16 #546893

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

Ответы: >>546904

21 Сен, 18:27 #17 #546904

>>546893
С точки зрения стандарта, это UB, и ничего определенного утверждать нельзя. По стандарту компилятор вообще может не использовать стек, например ну вдруг какой-то извращенец напишет что-то подобное только чтобы поднасрать тем, кто не читает стандарт. На практике переменные кладутся в стек в порядке определения, так что если у тебя твой массив определен самым первым в функции, то сразу за ним будет адрес возврата, плюс-минус выравнивание. Но опять же, надо учитывать, что функция может инлайниться, что используемое соглашение о вызовах может предполагать передачу адреса возврата через регистры, ну ты понел. Так что нужно смотреть конкретную платформу, компилятор и его параметры, чтобы сказать абсолютно точно.

Ответы: >>546906

21 Сен, 18:32 #18 #546906

>>546904
Это же всё делается на этапе компиляции. Может есть программки которые показывают как выглядит память?

Ответы: >>546910

21 Сен, 18:39 #19 #546910

>>546906
Есть. Отладчики называются, но только тсссс!

Ответы: >>546911

21 Сен, 18:42 #20 #546911

>>546910
Можно инструкцию как им пользоваться?

Ответы: >>546915

21 Сен, 18:51 #21 #546915

>>546911
Это сильно зависит от того, какой отладчик. Например, в gdb я до сих пор не могу и буду рад, если анон распишет за него или даст рилейтед ссылок. В Visual Studio просто включаешь режим отладки, и тебе показывается графически вся память ячейками, например.

Ответы: >>546918

21 Сен, 18:55 #22 #546918

>>546915
>gdb
У меня линукс, gcc, кодблокс и консоль на эту команду отзывается. Скорее всего он у меня и стоит. Что же тогда делать?

Ответы: >>546919, >>546927

21 Сен, 18:57 #23 #546919

>>546918
man gdb, как вариант ну а хуле делать, раз такая безысходность? Еще вот такое есть, но я ниасилил: http://rus-linux.net/nlib.php?name=/MyLDP/algol/gdb/otladka-s-gdb.html

Ответы: >>546926

18 Кб, 750x542

21 Сен, 18:58 #24 #546920

Анон, что ему не нравится?

Ответы: >>546923

21 Сен, 19:00 #25 #546923

>>546920
Кто ж вас так негибко учил makefile-ы писать?

Ответы: >>546924

21 Сен, 19:01 #26 #546924

>>546923
Никто, очевидно же!

21 Сен, 19:04 #27 #546926

>>546919
Бля. Язык учить проще чем этот отладчик. Там же не набор статей, а целая книга.

21 Сен, 19:05 #28 #546927

>>546918
http://stackoverflow.com/q/2770889

Обрати внимание не только на подтверждённый ответ, но и на следующий.

Ответы: >>546934

21 Сен, 19:10 #29 #546934

>>546927
Отлично спасибо. Теперь бы ещё короткий гайд где написано куда эти команды писать.

Ответы: >>546936

21 Сен, 19:16 #30 #546936

>>546934
сюда https://www.coursera.org/course/softwaresec подпишись, там первый проект — лаба по атакам на переполнение буфера: нужно правильно испортить стек, чтобы "взломать" программу.

В лабе использование gdb по шагам описывается.

21 Сен, 19:22 #31 #546942

>>546937
WHOAMI

21 Сен, 20:10 #32 #546970

Есть пара вопростов
1-
Я не могу читать книги по 500 странпиц. Я "тур по с++" в 190 страниц 2 месяца читал. Как с этим бороться?
2-
В какую интересную сферу я могу вкатиться зная с++ ?

Ответы: >>546972, >>546973, >>546981, >>546993

21 Сен, 20:17 #33 #546972

>>546970
Учись быстро читать.

Ответы: >>546976

21 Сен, 20:17 #34 #546973

>>546970
>500
Где ты такие короткие книги видел-то? Во всех нормальных от тысячи страниц, и это еще либо не все аспекты языка, либо сжато.

Ответы: >>546976

21 Сен, 20:20 #35 #546976

>>546973
Я из головы цифру взял.

>>546972
Быстро читаешь - нихуя не понимаешь.

Ответы: >>546985

187 Кб, 672x400

21 Сен, 20:25 #36 #546981

>>546970
Представь, что Гарри Поттера читаешь.

21 Сен, 20:33 #37 #546985

>>546976
Быстро читаешь - формируешь в голове карту знаний с белыми пятнами, которые потом заполняешь. Причем, в разных книжках одни и те же факты (самые важные и распространенные) повторяются. Читая одну книгу медленно, у тебя нет карты, поэтому мозгу тяжело строить ассоциации, ты не можешь отличить важные факты от второстепенных, и в итоге имеешь проблемы.

21 Сен, 20:37 #38 #546992

Т.е. 2 раза прочитать одну и ту же книгу быстро во много раз лучше, чем читать ее же, но в 2 раза медленнее. В реальности все намного хуже - книга на 500 страниц читается за 2 вечера, а ты ее растягиваешь на 2 месяца. Ты бы ее раз 10 прочитал бы за это время, если бы хотел, и понял бы намного больше.
Чтение - это процесс загрузки данных в мозг, который потом эти данные переваривает, обычно нужно поспать, а ты ждешь мгновенного ПОНИМАНИЯ здесь и сейчас.

21 Сен, 20:37 #39 #546993

>>546970
>Я "тур по с++" в 190 страниц 2 месяца читал.
Ну и ладно. Теперь можно взять Мейерса, например Defective modern C++.

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

Ответы: >>546998, >>547089

21 Сен, 20:44 #40 #546998

>>546993
>для дебильчиков
А как же Джоссатис?

Ответы: >>547001

21 Сен, 20:46 #41 #547001

>>546998
А что Джоссатис?

Ответы: >>547008

21 Сен, 20:49 #42 #547008

>>547001
Там больше тысячи страниц, но это не очередной обзор языка для чайников. STL глубоко весьма расписывается, и аналогов у книжки вообще нет.

Ответы: >>547017

21 Сен, 21:01 #43 #547017

>>547008
Я уже спрашивал тут, но спрошу снова. Через пол года олимпиада и нужно задротить алгоритмы. Прочитал хуй знает зачем. ни с кем не советовался две книги страуструпа почти нихуя не понял но это отдельная тема там ещё задания ебанутые и заканчиваю лафоре. Нужно хорошо знать STL и алгоритмы. Теперь даже сортировку с помощью функции из стандартной библиотеки сделать не могу не залезая в гугл. И алгоритмы плохо знаю. Для STL и заодно 11ого стандарта советовали Джоссатиса второе издание. А алгоритмы Седжвик. Не могу решить с чего начать когда закончу лафоре.

Ответы: >>547021

C++ How to Program 21 Сен, 21:04 #44 #547019

Аноны, что можете сказать о книге Дейтелов "Как программировать на C++"?

21 Сен, 21:04 #45 #547021

>>547017
О, анон, я тоже планирую учавствовать в олимпиадах. Кинь фейкомыльце, может чем поможем друг-другу. Алсо как на счет заданий прошлых лет?

Ответы: >>547028

21 Сен, 21:11 #46 #547027

>>546848
http://theboostcpplibraries.com/

21 Сен, 21:15 #47 #547028

>>547021
Язык и алгоритмы ещё не знаю поэтому вряд ли помогу и почта это неудобно. Но если хочешь лови. alkkoloto(собака)yandex.ru

21 Сен, 21:46 #48 #547060

Господа, нид асистанс! Объясните пазязя по-фасту, за область памяти под названием стек и свободное хранилище памяти. У С.Праты по местной книге в главе 9 об этом рассказано несколько путано - нихера не понял

Ответы: >>547073

21 Сен, 22:22 #49 #547073

>>547060
http://bfy.tw/1u69

Ответы: >>547080

21 Сен, 22:29 #50 #547080

>>547073
Во мудак-то
мимо

21 Сен, 22:39 #51 #547089

>>546993
Согласен, не люблю очевидные вещи по несколько раз читать.

21 Сен, 22:53 #52 #547094

>>546742 (OP)
подскажите как реализовать на С++ класс "Множество размерности n" с разными функциями, присущими множествам(пересечение, умножение, проверка, входит ли элемент в множество)?

Ответы: >>547102

21 Сен, 23:04 #53 #547102

>>547094
Для малых n - на отсортированном vector, для больших - на хэше (в стандартной библиотеке set::unordered_set) или красно-черном дереве (std::set). Правда, подозреваю, что ты хочешь, чтобы мы за тебя лабу сделали.

Ответы: >>547179

22 Сен, 01:08 #54 #547147

Ребятки, давайте замутим конфач для С++ илиты в телеграме? Для вопросов/ответов, размешивания правды матки за компиляторы и бусты, как вам идея?

Ответы: >>547152, >>547158, >>548110

22 Сен, 01:17 #55 #547152

>>547147
Этот тред и так мёртвый, зачем ещё и конфа в полуненужном телеграмме?

Ответы: >>547154

22 Сен, 01:25 #56 #547154

>>547152
ЧТОБЫ ОЖИВИТЬ ТРЕД!

22 Сен, 01:41 #57 #547158

>>547147
Я бы предпочёл борду в виде графа постов. Чтобы можно было отметить интересные ветки обсуждения и непринуждённо форкать треды, дабы не читать школовопросы и обкидывания говнами.

Ответы: >>547169

22 Сен, 02:32 #58 #547169

>>547158
Блять.
Это же
ГЕНИАЛЬНО
Я бы этим занялся, но в конечном итоге будет интересно лишь нам с тобой. Без веб интерфейса же, а сейчас все в себе, все в вебе...

Ответы: >>547170, >>547180, >>547200

22 Сен, 02:33 #59 #547170

>>547169
А, ну и сервера у меня тоже нет

Ответы: >>547180

22 Сен, 03:14 #60 #547179

>>547102
И по какой размерности тогда его сортировать/хэшировать? Не, тут надо как-то хитрее придумать разумеется, если множества маленькие, то похуй вообще.

22 Сен, 03:15 #61 #547180

>>547170
>>547169
В соседнем треде пилят распределенную борду, можно примазаться. Я бы занялся подобном, если найдется хотя бы 2-3 коллеги, которые не будут хуи пинать, сваливая друг на друга всю работу.
мимотретий анон

22 Сен, 03:23 #62 #547181

Я с удовольствием, как раз хуи пинаю, не знаю, куда примкнуть.
Где можно скооперироваться, набросать диздок/видение цели/тз?

Ответы: >>547182, >>547200

22 Сен, 03:32 #63 #547182

>>547181
https://2ch.hk/pr/res/538172.html Они разогреваются пока что, а потом, наверное, будет конфа или что-то вроде того.

Ответы: >>547184

22 Сен, 03:41 #64 #547184

>>547182
Я только оттуда, больше не вернусь, обычный скайп без конструктивизма.
Моё мнение - асинхронность и P2P - от лукавого, графы и система отбора -то, во что нужно бить.
И вообще, это должно быть /pr/ ориентированным.

Ответы: >>547186, >>547200

22 Сен, 03:48 #65 #547186

>>547184
Срач*

1180 Кб, 1688x2535

Запил мегаборды-убийцы 22 Сен, 04:31 #66 #547191

Отмечайтесь, хуле.
https://docs.google.com/forms/d/1edTMni3lh3Xh4MYE3sCRiv9bKqSpIix0Bh8ooTVWN3Q/viewform?usp=send_form

Ответы: >>547193, >>547194

22 Сен, 05:17 #67 #547193

>>547191
План действий такой:
1. Техлиды с сеньорами расписывают гуглодок с техзаданием. МАКСИМУМ разделяем всю работу на компоненты, выясняем способы взаимодействия этих компонент (CFFI, pipes, middleware, etc).
2. Каждому вручаем по компоненту с ясно озвученными минимальными требованиями, лишь бы хоть как-нибудь работало. Он выполняет этот компонент на своём любимом ЯП (желательно конечно ограничиться 2-3 на весь проект).
3. Организуем автоматическую сборку проекта. В итоге получаем суперсырой первый билд.
4. Заводим багтрекер и расписываем путь развития проекта. Каждый берёт себе какие хочет задачки и делает.
5. Каждый месяц релизим очередную версию.

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

Бабки на хостинг будем собирать когда запилится самая первая версия.

Ответы: >>547202

22 Сен, 05:30 #68 #547194

>>547191
Все ссылки пока что в соседнем листе с результатами переписи, пописать в гуглодок можно уже сейчас. Туда же попадут гитхабы-битбакеты и прочие данные. Если наберётся достаточно народа, или у меня лично будет дохуя терпения, запилим отдельный координационно-агитирующий тред.

22 Сен, 06:15 #69 #547200

>>547181
>ссылки в соседнем листе с результатами переписи, пописать в гуглодок можно уже сейчас
>>547184
Закатывайся, будем пилить универсальный код и отделять компоненты. Там процентов 70 будет одинаковое.
>>547169
>Без веб интерфейса
Можно без, а можно и с. Как вариант запускать локальный сервер и открывать браузером. Ну и декстопы-мобилки в опроснике стоят отдельно, опять же, интерфейс можно запилить один раз, а потом подключить его к п2п модулю или апи сервера.

22 Сен, 07:01 #70 #547202

>>547193
Срач уже здесь. Ты ведь не будешь спорить, что для взлета у борды должна быть киллер-фича? Так вот, способ представления в виде графов и форканье на таковую явно не тянут, это как если бы ресторан позиционировал себя не имеющим аналогов потому что у них у ложек ручки длиннее. Надо, чтобы от сотен остальных борд отличалось резко, смекаешь? К тому же, есть дохуя анонов, которые хотят постить цп и всякие непотребства и вынуждены жрать говно на медленном хидденчане. С этих джвух позиций выбор p2p очевиден, оно станет той самой недостающей изюминкой. А графы будут приятным бонусом.

Ответы: >>547203, >>547204

22 Сен, 07:07 #71 #547203

>>547202
>ь дохуя анонов, которые хотят постить цп и всякие непотребства
Вот уж кто нахуй не нужен.

Ответы: >>547205

22 Сен, 07:11 #72 #547204

>>547202
Ну а я и не против этого срача. Только я предлагаю уже начать напиливать хотя бы общее. Договориться с компонентами и апи. А потом как из конструктора каждый сам себе соберёт.

22 Сен, 07:21 #73 #547205

>>547203
Возможность лучше отсутствия возможности. Аудиторию это привлечет, а законопослушные аноны всегда могут скрыть неугодный контент. Можно алсо сделать теги специально для этого, или типа того.

22 Сен, 07:23 #74 #547206

А есть гуглодок? Я только форму нашел, ебаться с почтами неудобно жи. Лучше на начальном этапе сделать гуглодок, в который каждый насрет напишет свои идеи и вообще.

Ответы: >>547207

22 Сен, 07:25 #75 #547207

>>547206
Есть. Форму заполняешь, выдаёт ссылку со списком гуглодоков. Только что настроил.

22 Сен, 08:28 #76 #547216

Высрал приблизительную архитектуру под всё сразу. Далее надо детализировать каждый блок.

22 Сен, 09:14 #77 #547224

Неужели двощ на что-то способен

26 Кб, 1024x768

39 Кб, 1024x768

22 Сен, 09:33 #78 #547227

22 Сен, 11:45 #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

Ответы: >>547267

22 Сен, 12:24 #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

Ответы: >>547273

22 Сен, 12:32 #81 #547268

>>546742 (OP)
То есть SFINAE - это анальные трюки на шаблонах, чтобы получить типа hasattrib в бидоне?
Действительно пиздец! Нет чтобы завести нормальную рефлексию.

Ответы: >>547276, >>547470

22 Сен, 12:36 #82 #547273

>>547267
Я тут подумал. При этом cout может иметь размера буфера меньший, чем line.size() + 1. Тогда лучше просто новый отдельный буфер запилить и всё.

Он должен быть null-terminated?

22 Сен, 12:41 #83 #547276

>>547268
Они замечательные, это же прям магия. Тот, кто понимает
[code lang="cpp"]
static void test ();
template <typename T>
static decltype (declval <T> ().tvoyaMamka (1488)) test ();
[/code]
, тот будет гуру, и все девки будут давать. А в пистон и дурак сможет.

22 Сен, 17:23 #84 #547439

Поясните нубу, почему если а == b, то оно ничего не высчитывает, а если a <= b, то работает?

#include <iostream>
int main()
{
int a = 0;
int b = 10;
while (a == b)
{
std::cout << a;
a++;
}
}

Ответы: >>547440, >>547442

22 Сен, 17:26 #85 #547440

>>547439
Ты или вместо < написал <= , или у тебя еще какое противоречие в вопросе.

Ответы: >>547441

22 Сен, 17:28 #86 #547441

>>547440
Почему противоречие?
Смотри, пишу while (true) {}
a == b, не выводит ничего
a <= b (или a < b) выводит
Почему?
Ведь по логике и a == b должно делать вывод пока а не станет равно б? Или я что-то не до понял?

Ответы: >>547647

22 Сен, 17:28 #87 #547442

>>547439
Если ты тролль - съеби. Если ты реально не понимаешь, - тоже съеби, ибо такой зашкварный мозг иметь для программирования нельзя, тебе нужен новый.
%%while(a==b) выполняется, пока переменная a равна переменной b. Поскольку ноль не равен десяти, цикл не выполняется не разу.

Ответы: >>547444

22 Сен, 17:29 #88 #547444

>>547442
>while(a==b) выполняется, пока переменная a равна переменной b. Поскольку ноль не равен десяти, цикл не выполняется не разу.
Я думал не так, но спасибо за разъяснения.

22 Сен, 18:14 #89 #547470

>>547268
> завести нормальную рефлексию
с++ вообще то в машкод компилится, рефлексии в таком языке не сделать ни как

Ответы: >>547477, >>547543

22 Сен, 18:27 #90 #547477

>>547470
Про полноту по тьюрингу слышал что-то?

8 Кб, 804x230

22 Сен, 18:57 #91 #547501

Поясните ньюфагу за break, он 1 круг цикла for до линии, если сработал, или после брейка он тоже выполняет код, но цикл не продолжает?

Ответы: >>547509, >>547683

22 Сен, 19:05 #92 #547509

>>547501
Команда break выполняет мгновенный выход из текущего цикла. Программа продолжает своё выполнение с команд находящихся сразу за циклом, из которого ты вышел с помощью break.

22 Сен, 19:47 #93 #547543

>>547470
Да, всё верно. И именно поэтому её возможно завезут в C++17.

22 Сен, 20:08 #94 #547555

http://habrahabr.ru/post/267413/
Смотрите, посоны, что нам Бьерн покушать принес.

Ответы: >>549618

43 Кб, 1563x976

22 Сен, 20:10 #95 #547556

Подскажите, никак не могу задачку с учебника решить. Решение расписал в тетради, всё должно работать, но, почему-то, в реальности ответ не совпадает с задуманным - непонятно почему число 9 (а если брать больше, то еще и делящиеся на 5), проходит проверку, хотя не должно - деление на 3 даёт 0. Проверку выделил красным.

Ответы: >>547569, >>547683

22 Сен, 20:24 #96 #547569

>>547556
Что за задание то? Если найти простые числа то удаляй все и пиши заново.

Ответы: >>547572

19 Кб, 738x729

22 Сен, 20:26 #97 #547572

>>547569
А, всё решил, я понял ошибку - там где был брейк, если на 2 сразу не делилось, то пропускало любые числа.
Вот верное решение - заместо брейка сделал чек и вынес добавление за цикл.

Ответы: >>547683, >>547708

22 Сен, 22:18 #98 #547647

>>547441
>a == b
значение false. цикл не выполняется.
>a <= b
Значение true. цикл выполняется пока а не станет больше бэ.

22 Сен, 23:43 #99 #547683

>>547501 >>547556 >>547572
>simple_numbers
Проиграл. primes

23 Сен, 00:47 #100 #547708

>>547572
Если уж так, то выучи для чего в языке есть continue и break. А ещё тебе numbers не нужен, а если и будет нужен, то ты любой элемент и так за константное время можешь вычислить.

23 Сен, 10:40 #101 #547819

Анон. Послезавтра собеседование. С++ и STL знаю норм, а вот бустом никогда не пользовался, хоть и указал его в резюме. Где его можно быстро поднять. Какой-нибудь summary всех либ, либо самое важное?

Ответы: >>547831

23 Сен, 11:37 #102 #547831

>>547819
Очевидный boost.org http://www.boost.org/doc/libs/?view=categorized

23 Сен, 14:16 #103 #547885

>>546742 (OP)
двач, помоги пожалуйста
почему-то код при освобождении памяти выдаёт ошибку, не могу понять в чём дело, начинает не работать с 61 строки
http://pastebin.com/eZkYLEZe

Ответы: >>547891, >>547893

23 Сен, 14:30 #104 #547891

>>547885
>strcpy_s
говно для педиков. Используй strcpy();

p.s нахуя ты пишешь глупые комментарии?
>delete[] str4;//освободим память
блядь, и так ясно что delete освобождает память
>StringsWork story;//создаем объект
same shit

Ответы: >>547893

23 Сен, 14:31 #105 #547893

>>547885
а вообще, не выебывайся и юзай string

>>547891 - кун

23 Сен, 16:50 #106 #547945

Подскажите, как создать несколько объектов класса с именем из переменной типа string?

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

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

Чо делать то?

Ответы: >>547946, >>547947

23 Сен, 16:51 #107 #547946

>>547945
Всё что после многоточия - очевидно, что входит в main () {

23 Сен, 16:58 #108 #547947

>>547945
>Class man; //Объявили класс
>string name;
>string lastname;

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

Class man; не скомпилируется, class man; - тоже не о том, это обещание, что класс ты определишь когда-нибудь позже.

Ответы: >>547956

23 Сен, 17:23 #109 #547956

>>547947
Хорошо. Я понял.
Класс - это как средство нового типа данных + функции. Так?
Тогда как мне реализовать создание "чего либо" с типом "моего класса"?

Ответы: >>547962, >>547966

23 Сен, 17:31 #110 #547962

>>547956
Вопрос исчерпан, я это и так знаю, хуйню спорол.
Хорошо, а как тогда мне хранить некие данные? В переменных моего "нового типа". Но тогда классы != переменные. Хранить данные в них не получится. Я прав?

И как мне выкручиваться? Где хранить мои "смешанные" (int + string) типы данных"? В массивах? В отдельном файле?

23 Сен, 17:39 #111 #547966

>>547956
С типом ты в С++ ничего не можешь сделать, можешь создать экземпляр (instance) своего типа и там уже хранить что тебе нужно. Ты уже это делал в "man peremennaya;", просто оно у тебя не компилировалось, потому что вместо class имя{поле1;поле2;}; ты сделал class имя;поле1;поле2;

Ответы: >>547971

23 Сен, 17:51 #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.

Или тупо: как сохранить в массив мой тип говна.

Ответы: >>547974

23 Сен, 17:53 #113 #547971

>>547966
Я, возможно, не корректно выражаюсь, говоря "тип данных"

Ответы: >>547979

23 Сен, 17:57 #114 #547974

>>547970
array[0].text = text;
array[0].number = number;

Ответы: >>547977, >>547980, >>547988

23 Сен, 18:02 #115 #547977

>>547974
Но мой препод сказал мне реализовать мою задачу при помощи классов. Зачем мне тогда классы, если я могу напрямую всё записать в массив?

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

Ответы: >>547979

23 Сен, 18:04 #116 #547979

>>547971
Нет, вполне корректно.
>>547977
В массив чего? Массив экземпляров твоего класса.

23 Сен, 18:05 #117 #547980

>>547974
Компилятор ругается:

>within this context
>array[0].name=name;

Ответы: >>547984

23 Сен, 18:13 #118 #547984

>>547980
Алсо, я дурак и забыл вписать public для name-а

23 Сен, 18:19 #119 #547988

>>547974
А как вывыести обратно на дисплей?
array[0].name=name; //Запись в массив
cout << array[0].name; //Вывод на экран

Чому не пашет? Нужно "вывод" писать в методах класса?

Ответы: >>547989

23 Сен, 18:22 #120 #547989

>>547988
В методах тоже не работает.
>array was not declared in this scope
>cout << super[0].name;

Ответы: >>547990, >>548206

23 Сен, 18:23 #121 #547990

>>547989
array вместо super

23 Сен, 18:51 #122 #548002

Антоны, нужно написать хук на функцию. В хуке нужно будет пошамать с функциями и вызвать оригинальную. Уровень знаний - hello world. Что нужно прочесть, для скорейшего написания сей приблуды?

Ответы: >>548100, >>548461

23 Сен, 22:24 #123 #548100

>>548002
Где все тыжпрограммисты?

23 Сен, 22:38 #124 #548110

>>547147
А в джаббере сложно что ли?

23 Сен, 23:34 #125 #548137

СИДЯТ МУЖИКИ
@
ПИВО ПЬЮ
@
МЯСОМ ЗАЕДАЮТ

24 Сен, 04:16 #126 #548206

>>547989
Няша, ты пишешь полную неведомую хуйню.
Объясняю как надо:
Добавляешь к своему коду комменты с ошибками компилятора у соответствующих строк. Заливаешь на пастбин или аналогичные сервисы. В посте лепишь ссылку на это дело и описываешь чего пытаешься добиться и что вместо этого получается.
На вопросы вида "вот строчка кода, почему не фурычит" ответ один - хуй его знает.

24 Сен, 11:16 #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.

Ответы: >>548281, >>548292

24 Сен, 14:04 #128 #548281

>>548249
Я до сих пор не прочел IO, например за дохуя лет. Там вроде даже в начале написано, чтобы читали первую часть и дальше выборочно, что интересно и соответствует задачам. Так что пролистай ее быстренько и лезь в третью.

3има 24 Сен, 14:17 #129 #548284

Господа, по вводу\выводу (fstream, все дела)
посоветуйте что-нибудь, плз.
Читаю Липпмана - было норм, пока не пришли к классам и к вводу выводу. Не знаю, может быть рассчитано на тех., кто уже в теме, но мне сложно идёт. в других книгах для ньюфагов тема разбита на разные части и туда-сюда мотаться сложно.
особенно учитывая, что в каких то книгах ++11, а в каких то нет. т.е на что смотреть

Ответы: >>548286, >>548288, >>548292

24 Сен, 14:18 #130 #548286

>>548284
С этого треда все самоучители без 11 помечены как устаревшие.

Ответы: >>548287

24 Сен, 14:31 #131 #548287

>>548286
перечитал шапку.
Ок.
Но на вопрос\просьбу всё равно ответа нет.

24 Сен, 14:32 #132 #548288

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

24 Сен, 14:57 #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

Ответы: >>548315

24 Сен, 16:09 #134 #548315

>>548292
ты вроде дал какую-то информацию, бро.
но она такая, что при любом к ней отношении особого выбора нет?

Ответы: >>548402

24 Сен, 19:22 #135 #548402

>>548315
Я всего лишь предложил один из возможных вариантов, поскольку все другие молчат. Других вариантов не знаю.

Ответы: >>548409, >>548410, >>548430

24 Сен, 19:40 #136 #548409

>>548402
всё понял.
не так как надо твоё сообщение прочитал.
А вообще как успехи?

Ответы: >>548410, >>548446

24 Сен, 19:41 #137 #548410

>>548409
>>548402
всё понял. теперь понял.
просто в первый раз невнимательно твоё сообщение прочитал.

А вообще как успехи?

Ответы: >>548430

24 Сен, 20:14 #138 #548430

>>548410
>>548402
Мне кажется, вы страдаете хуйней, если честно. Серьезно, стандартную библиотеку изучают после ядра языка, а в ней потоки ввода-вывода по важности и интересности где-то на дне. Сосредоточьтесь на действительно полезных вещах лучше: STL, concurrency, аллокация. Вся ебля с io сложнее простых << и >> нужна крайне редко, для всех нетривиальных вещей энивей прикручивают библиотеки.

Ответы: >>548446, >>548491

24 Сен, 20:29 #139 #548437

Shellsort or Comb sort?
http://ideone.com/PP0U9l

Ответы: >>548463

24 Сен, 20:42 #140 #548446

>>548409
>А вообще как успехи?
Какие успехи? Я теперь чуть-чуть знаю I/O в крестах. В целом мои нужды перекрывает с запасом.

>>548430
>Мне кажется, вы страдаете хуйней, если честно. Серьезно, стандартную библиотеку изучают после ядра языка
Мне собственно от языка кроме I/O ничего и не нужно-то по моим маленьким потребностям. Но вот данные/алгоритмы по-любому изучить бы.

Ответы: >>548449

24 Сен, 20:49 #141 #548449

>>548446
Iostream самая неудачная часть языка и много где в каеих проектах запрещен. Пользуйся printf

Ответы: >>548489, >>548499, >>548616, >>548818, >>549033

1312 Кб, 250x198

ССУ КРЕСТОБЛЯДЯМ НА ЛИТСА 24 Сен, 20:49 #142 #548450

Боже, крестобляди, какие же вы опущенцы, просто пиздец.
https://events.yandex.ru/lib/talks/2588/ - перемотать на 9:22:
>Сборка браузера занимает порядка полутора-двух часов на очень хорошем Макбуке. Вы, как разработчик, не можете позволить себе делать фичу, а потом ждать полтора часа. Мы это решили: мы берём несколько клонов одного и того же репозитория, и пока в одной директории собирается ваш браузер, в соседней вы работаете над другой фичей.
Вместо того, чтобы сделать нормальные модули, которые бы упростили сборку и позволили бы наконец не пересобирать весь проект, когда вы нажимаете энтер в файле zaloopa.h, используемого везде, продвинутые крестобляди предпочитают во время сборки, чтобы не скучать, делать ЧТО?.. Правильно - работать над другим таском! И похуй, что внимание, которого при пердолении C++ нужно дохуя, идёт по пизде - зато пацанам из Комитета Стандартизации Крестоговна будет бесплатный цирк из кресточушек (пацаны сами к крестоговну не прикасаются, конечно же).

Ответы: >>548470, >>548481

24 Сен, 21:05 #143 #548461

>>548002
Бамп вопросу.

24 Сен, 21:08 #144 #548463

>>548437
Что это за хуйня?

24 Сен, 21:10 #145 #548468

Аноны, ну что за хуйня? Есть какие-нибудь нормальные IDE под Ubuntu? Хоть что-нибудь сравнимое с Visual Studio? Ах да, ещё я криворукий, поэтому не могу собрать проект в Code::Blocks (почему-то не линкуются .h-файлы), а в Eclipse вообще нет пункта для C/C++. Может кто-нибудь пояснить? Почему у меня в Eclipse, кроме Java и ещё каких-то пунктов, ничего нет, в том числе пункта с выбором C/C++? Уже устал от этой хрени.

Ответы: >>548472, >>548785

24 Сен, 21:10 #146 #548470

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

Ответы: >>548473

24 Сен, 21:11 #147 #548472

>>548468
QtCreator, KDevelop

Ответы: >>548557

24 Сен, 21:12 #148 #548473

>>548470
зк?

24 Сен, 21:18 #149 #548481

>>548450
Потому что долбоебы, которые проектировали браузер, не могут в pimpl, очевидно же.

24 Сен, 21:25 #150 #548489

>>548449
>template самая неудачная часть языка и много где в каких проектах запрещен. Пользуйся #define
>Наследование самая неудачная часть языка и много где в каких проектах запрещен. Пользуйся void *.
>printf самая неудачная часть языка и много где в каких проектах запрещен. Пользуйся MOV AH, 9; INT 21h.

Ответы: >>548499

24 Сен, 21:26 #151 #548491

>>548430
спасибо, бро.
кидаю в заметки.

24 Сен, 21:33 #152 #548499

>>548449
Чувак, я двачую этого :
>>548489
не хуйню сказал.
И ссылку добавлю :
http://www.programmersforum.ru/showthread.php?t=192502
Как ответиишь?

Ответы: >>548596

24 Сен, 22:27 #153 #548557

>>548472
А не подскажешь, как сделать, чтобы приложение запускалось в консольку в KDevelop? Ибо неудобно, когда оно в какое-то своё окошко выводит всё.

Ответы: >>548985

24 Сен, 22:57 #154 #548596

>>548499
Сам-то читал свою ссылку? По ней все рекомендуют пользоваться iostream.

Ответы: >>548616

24 Сен, 23:11 #155 #548616

>>548596

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

25 Сен, 07:42 #156 #548785

>>548468
Установи пакет eclipse-cdt, он добавит плюсы

Ответы: >>549022, >>549055

25 Сен, 11:32 #157 #548818

>>548449
io - типобезопасный ввод-вывод, в отличие от printf
по производительности - сравним

Ответы: >>548831

25 Сен, 12:44 #158 #548831

>>548818
>по производительности - сравним
Не уступает, вообще-то, если соответствующим образом настроить.

25 Сен, 18:15 #159 #548985

>>548557
В настройках запуска укажи xterm или что ты там юзаешь.

Ответы: >>549022

25 Сен, 18:17 #160 #548988

http://llvm.org/docs/CodingStandards.html#include-iostream-is-forbidden

25 Сен, 18:25 #161 #548992

http://yosefk.com/c++fqa/io.html#fqa-15.1

25 Сен, 19:19 #162 #549022

>>548785
Спасибо, заработало. Но снова возник тупой вопрос: как сделать вывод в терминал? Неудобно смотреть вывод программы в окошечке IDE.

>>548985
Спасибо, получилось.

Ответы: >>549168

25 Сен, 19:51 #163 #549033

>>548449
https://arhivach.org/thread/94972/#511941
https://arhivach.org/thread/94972/#513467
iostream нормально со всем справляются.

25 Сен, 20:46 #164 #549055

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

Ответы: >>549064, >>549169

25 Сен, 21:03 #165 #549064

>>549055
g++

26 Сен, 00:54 #166 #549168

>>549022
Юзай кдевелоп, 4.7 збс. И собирай cmake'ом.

Ответы: >>549910

26 Сен, 00:56 #167 #549169

>>549055
Оптимально - мусорный, литров на 40, не меньше.
Юзай visual cpp, не выебуйся.

Боксёрский зал ( взрослый.) 3има2061 26 Сен, 11:57 #168 #549248

РЕБЯТА,
Как организовываете новый материал вокруг себя.
например не статья, а фрагмент книги пдф дежавю? и т.д

Ответы: >>549343, >>549387

26 Сен, 16:43 #169 #549342

https://github.com/isocpp/CppCoreGuidelines/

Ответы: >>549618

26 Сен, 16:43 #170 #549343

>>549248
Evernote, OneNote, Nim...

26 Сен, 18:27 #171 #549387

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

26 Сен, 20:18 #172 #549453

Где быстрее поиск, в векторе из 15 четырехбайтовых элементов или unordered_map такой же размерности?

Ответы: >>549458

26 Сен, 20:21 #173 #549458

>>549453
Скорее всего в векторе, он в кэш-линию влезает.

Ответы: >>549461

26 Сен, 20:28 #174 #549461

>>549458
Мне тоже чет так кажется. Ок, запилю векторы.

27 Сен, 06:23 #175 #549592

Че Страуструп пишет, что если в классе определить функцию, то при её вызове идет подстановка тела этой же функции в то место, откуда была она вызвана, а если определять НЕ в классе, то идет простой вызов функции. Так что ли? Ну а в чем тогда разница?

Ответы: >>549593

27 Сен, 06:25 #176 #549593

>>549592
Покажи где он это пишет.

Ответы: >>549594

27 Сен, 06:33 #177 #549594

>>549593
Очевидное правило гласит: не помещайте тела функций-членов в объявление
класса, если вам не нужна повышенная эффективность программы за счет ис-
пользования небольших подставляемых функций. Большие функции, скажем, со-
стоящие из пяти и более строк, ничего не выиграют от подстановки. Не следует де-
лать подставляемыми функции, содержащие более одного-двух выражений.

Ответы: >>549595, >>549596, >>549600, >>549603, >>549604

27 Сен, 06:36 #178 #549595

>>549594
Действительно https://isocpp.org/wiki/faq/Inline-Functions#inline-member-fns-more

Ответы: >>549596

27 Сен, 06:40 #179 #549596

>>549594
>>549595
А тут [1] вот питухи с SO поясняют, что неявный inline зделан для того, чтобы можно было переопределять функцию несколько раз. И inline не обязательно означает реальную подстановку тела функции в место вызова.

[1] http://stackoverflow.com/a/9734378

Ответы: >>549619

13 Кб, 228x228

27 Сен, 06:57 #180 #549600

>>549594
Короче, из вышенаписанного вывод один. Страус — труп (пикрилейтед) обосрался. inline никогда не был ПРИКАЗОМ компилятору встраивать тело в место вызова; тем более неявный inline.

Ответы: >>549601, >>549605

27 Сен, 08:06 #181 #549601

Термин inline мне Страуструп будет только через полсотни страниц рассказывать (судя по Ctrl+F), но SO прочел я.
Не особо понимаю >>549600 пост, выше две ссылки говорят об обратном же вроде. (ну помимо ещё того, что он используется для того, чтобы ошибок не было, если определение функции расположено в другом файле)

Ответы: >>549605

27 Сен, 08:54 #182 #549603

>>549594
>не помещайте тела функций-членов в объявление
класса
А как-же шаблоны?

Ответы: >>549606, >>549609, >>549622

27 Сен, 08:54 #183 #549604

>>549594
Что за книга?

27 Сен, 09:07 #184 #549605

>>549601
Страус-труп говорит что функции, определённые в объявлении класса, неявно помечаются как inline, а, значит, встраиваются в место вызова.

SO говорит что неявный inline это правда, но нужен в первую очередь для разрешения переопределения функции. И что компилятор волен встраивать и волен не встраивать тело функции в место вызова. Пост >>549600 это и говорит.

27 Сен, 09:07 #185 #549606

>>549603
Страус-труп мудак и пишет хуйню.

Такой ответ сойдёт?

Ответы: >>549609

27 Сен, 09:41 #186 #549609

>>549603
>>549606
Потому что до шаблонов я ещё не дошел, че за хейт, поцаны, ало.

27 Сен, 10:49 #187 #549618

>>549342
>>547555

27 Сен, 10:51 #188 #549619

>>549596
По стандарту неидентичные определения inline-функций это сразу UB.

27 Сен, 10:52 #189 #549622

>>549603
Пиши тела сразу после класса, а в самом классе оставь только объявления со спецификатором inline. Очевидно же.

37 Кб, 402x604

27 Сен, 18:29 #190 #549816

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

Вот с вебом всё ясно, с мобильными тоже.
А вот чем вы на работе заняты я не очень понимаю.
Помогите разобраться.

Ответы: >>549872, >>549883, >>549913, >>549914

27 Сен, 19:44 #191 #549872

>>549816
-тся

Ответы: >>549886

27 Сен, 20:06 #192 #549883

>>549816
ирл знаю людей, пилящих:
- CAD'ы (нужно знать матан и линалг),
- софт для voip эндпоинтов (железяки и windows клиенты). если железяка на ведроиде, то там борщ из сей, плюсов и джабы, иначе си и плюсы.
- софт для кол-центров (дикая смесь из шарпов и крестов).
сам больше не видел продакшен применений крестовщины. может ананон ещё накидает примеров

27 Сен, 20:08 #193 #549886

>>549872
Эт где?

Ответы: >>549914

27 Сен, 20:50 #194 #549903

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

27 Сен, 21:14 #195 #549910

>>549168
И снова тупой вопрос. Что нужно доставить, чтобы открылись настройки проекта? Не могу туда зайти, ибо кнопка просто неактивна (cmake поставил). Алсо, у меня почему-то автоматом не поддерживается C++11: не распознал nullptr. В общем, анон, если не сложно, расскажи, что да как, а то я уже устал маяться с этим, а венду нет пока ни желания, ни возможности поставить.

Ответы: >>549954

27 Сен, 21:18 #196 #549913

>>549816
google-точка-ру "работа погромист си-плюс-плюс"
Если без кучи побочного груза, чистый c++ программист используется в проектах, требующих высокой производительности; в основном игры, различные 3d проекты и 3d игры.

27 Сен, 21:21 #197 #549914

>>549886
>Эт где?
>>549816
>катиться

Ответы: >>549917, >>549919

27 Сен, 21:23 #198 #549917

>>549914
Фюрер, бросьте. Мир несовершенен, и тут бывают ошибки у всех. Вам не в этот тред.
не "толстая веб-пхп-макака"

Ответы: >>549921

27 Сен, 21:25 #199 #549919

>>549914
Прощение

27 Сен, 21:28 #200 #549921

>>549917
Все ошибаются, но хуже не будет, если корректно указать человеку на ошибку.
не_фюрер

27 Сен, 23:17 #201 #549954

>>549910
пропиши для компилятора --std=c++11 опцию

Ответы: >>549955

27 Сен, 23:19 #202 #549955

>>549954
Где прописать? В настройках проекта? Я не могу туда зайти.

Ответы: >>550011

28 Сен, 01:00 #203 #550011

>>549955
Почему бы тебе первое время не посидеть в консоле и не поюзать makefile-ы? Для твоих hello world-ов хватит выше крыши.

Или вообще build.sh с g++ -std=c++14 -o hello_world hello_wrold.cpp

Ответы: >>550016

28 Сен, 01:13 #204 #550016

>>550011
Я, разумеется, нуфаг, но такое положение дел мне не нравится, ибо я уже осваиваю классы, потихоньку подбираясь к шаблонам, поэтому в проекте получается много файлов и т. д. Хотелось бы больше внимания уделить написанию кода, нежели пердолингу с консолью, IDE и прочими радостями жизни. Мне сейчас просто нужна рабочая IDE, поддерживающая 11-й (желательно 14-й) стандарт, с подсветкой ошибок. Всё, больше я ничего не хочу. Постоянно возникают какие-то траблы с IDE под Linux. Вот сейчас не открываются настройки проекта, вернее сам пункт неактивен. Это значит, что я что-то не установил? или, может быть, проблема в чём-то другом? В общем, я не против поебаться с Linux'ом, но сейчас мне просто нужно писать свои Laba1.

Ответы: >>550026, >>550057

28 Сен, 01:52 #205 #550026

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

28 Сен, 06:41 #206 #550057

>>550016
Просто поставь Qt Creator

Ответы: >>550069

28 Сен, 08:23 #207 #550069

>>550057
(просто мимопроходил)
Поставил этот Qt Creator недавно. Так и не смог создать C++ console application (без CMake и QBS).

Ответы: >>550091

28 Сен, 09:06 #208 #550084

Посоветуйте плагинов на субиме. Автодополнение нуюно очень, чтобы как в идее жавовой. На CLion денег нет.

Ответы: >>550086, >>550991

28 Сен, 09:10 #209 #550086

>>550084
>нужно

28 Сен, 09:20 #210 #550091

>>550069
Ебать ты лох. А я могу.

28 Сен, 11:51 #211 #550142

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

Ответы: >>550144

28 Сен, 11:57 #212 #550144

>>550142
>более-менее нормальная архитектура с возможностями добавления разных фич
llvm, clang. Рассмотри вариант скриптового языка с ядром на С++. LuaJIT быстрая и удобная штука.

28 Сен, 16:18 #213 #550265

Есть один компилятор. Реквестирую хэлоуворд который выведет мне что это за компилятор. С/C++/C++11

Ответы: >>550268, >>550582

sage 28 Сен, 16:24 #214 #550268

>>550265
#ifdef _gnu/хуй/etc

Ответы: >>550269

28 Сен, 16:31 #215 #550269

>>550268
что это и как работает? что должно произойти?

Ответы: >>550271

sage 28 Сен, 16:34 #216 #550271

>>550269
Господи, наводку я тебе дал. Ищи сам дальше, что какой компилятор дефайнит.

Ответы: >>550279

28 Сен, 16:39 #217 #550279

>>550271
Не понимаю я. После него весь код комментируется. И не понятно си это или кресты и какой стандарт. Дай пожалуйста простой хулоуворд в 3 строчки. Неужели сложно?

Ответы: >>550283

28 Сен, 16:46 #218 #550282

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

А файл можно прочесть на этапе компиляции? Кроссплатформенно. Именно с помощью <iostream> , а не #include

Ответы: >>550300

sage 28 Сен, 16:48 #219 #550283

>>550279
#ifdef _MSC_VER
std::cout << "Мокрософт";
#endif
#ifdef __GNUC__
std::cout << "Гнутый";
#endif

Ответы: >>550287

28 Сен, 16:52 #220 #550287

>>550283
А как узнать 11 стандарт завезли или нет?

Ответы: >>550295, >>550436, >>550583

sage 28 Сен, 17:03 #221 #550295

>>550287
Я что, ебу? Ищи сам.

sage 28 Сен, 17:05 #222 #550300

>>550282
>iostream
>компильтайм
Ебанутый.

Ответы: >>550331

28 Сен, 17:54 #223 #550331

>>550300
>Ебанутый.
Я художник, я так вижу.

28 Сен, 20:06 #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 файлы?

Ответы: >>550415

28 Сен, 20:34 #225 #550415

>>550402
Объявления всех функций про которые нужно знать снаружи выносишь в хедер. Хедер подключаешь где нужно. Может ты с неймспейсами запутался?

Ответы: >>550459

28 Сен, 20:56 #226 #550419

Привет анон. Сейчас начали в инсте изучать WinApi, написали пару программ, мне понравилось, сейчас захотел для практики написать себе прогу. Суть: должна авторизовываться на сайте, парсить одну страницу, заходить по ссылкам и вводить там числа в форму для отправки. Собственно вопрос. Что погуглить по этой теме или мб. есть готовые библиотеки? сайт на html.

Ответы: >>550584

28 Сен, 21:33 #227 #550435

Сап аноны. Ударился тут в спортивное программирование. Когда сдаю задачку в проверяющую систему, то в зависимости от того, как выделил память, ловлю Runtime Error. Поясните за статическое выделение - неужели 118 килобайт пробивают стек? На VS задавал размер стека в 16 мегабайт - результат тот же. На моем компьютере все работает.

http://pastebin.com/yyWK796T

P.S. Вообще, код на pure C, но от того, компилирую я его как C или C++ код результат не меняется

Ответы: >>550451, >>550751, >>550849

28 Сен, 21:39 #228 #550436

>>550287
constexpr int f () {return 0;}
constexpr int g () {int a = 1; return a;}

Если работают обе, то C++14. Если только первая, то C++11. Если ни одной, то C++98.

28 Сен, 22:08 #229 #550451

>>550435
Зачем тебе на стеке столько? На стеке выделяй маленькие вещи, особеонно если их дохуища по одночке нужно создавать. Выделять мегабайтный массив на стеке один раз за программу практически бессмысленно, разве чтобы потом free() не проебать, но в main похуй, вся память все равно освободится после кила программы.

Ответы: >>550462, >>550751

28 Сен, 22:16 #230 #550459

>>550415
Да нет, неймспейсами я не пользуюсь.
Суть в том, что я хочу разбить реализацию методов класса на разные *.cpp файлы.

Ответы: >>550538

28 Сен, 22:21 #231 #550462

>>550451
Ну просто все в олимп. прогр. выделяют статически, т.к. на куче выделить - потерять времени, поэтому я и попробовал тоже выделить на стеке. В реальных программах я так не делаю. Вопрос не в правильности, вопрос в том, почему 10001 * 12 байт кладут программу, ведь если верить FAQ проверяющей системы, размер стека на всех компиляторах, кроме VS, 64 мегабайта. Runtime Error появляется на любом компиляторе (там доступны VS, GCC, clang).

Ответы: >>550534, >>550751, >>550986

29 Сен, 00:05 #232 #550534

>>550462
Бинарным поиском определи какой размер не ложит проверяющую систему.

Ответы: >>550751

29 Сен, 00:18 #233 #550538

>>550459
Оно крашится вообще во время printf, стек здесь не при чем. Небось в куче-то защита не срабатывает, когда ты считать не свое пытаешься, а на стеке срабатывает.

29 Сен, 02:31 #234 #550572

Cэджвика стоит читать?
Хочу хоть немного надрочить алгоритмы, на собеседованиях просто доебали уже ими.
Слышал, что Кормэн лучше, но там очень много не шибко нужной информации.
Какой выбор сделал бы ты, анон?

Ответы: >>550573

29 Сен, 02:43 #235 #550573

>>550572
https://www.coursera.org/course/algs4partI вот тебе Седжвик. Правда он тут вроде на яве примеры показывает, ну да не суть.

Ответы: >>550574, >>550580

29 Сен, 02:56 #236 #550574

>>550573
Никогда курсеру не юзал.
там платная подписка, или в чем прикол? Чем это лучше наворачивания печатного издания?
Алсо, джаву не перевариваю, лучше уж на питоне.

Ответы: >>550749

29 Сен, 03:50 #237 #550580

>>550573
Анон, ты охуенен.

29 Сен, 04:21 #238 #550582

>>550265
std::cout << __cplusplus << std::endl;

Ответы: >>550583, >>550700

29 Сен, 04:22 #239 #550583

>>550287
>А как узнать 11 стандарт завезли или нет?
>>550582 <---

Ответы: >>550703

29 Сен, 04:25 #240 #550584

>>550419
http://www.crummy.com/software/BeautifulSoup/bs4/doc/

29 Сен, 06:54 #241 #550603

Анон, помоги долбоёбу. Нужно повернуть с помощью гиперкомплексных чисел фигуру так, чтобы у неё не изменился объем. У меня н в два раза режется при каждой попытке поворота.

Ответы: >>550604

29 Сен, 06:54 #242 #550604

>>550603 вот мои каракули
http://rghost.ru/84sfDgnbr

29 Сен, 14:08 #243 #550700

>>550582
Дебил, блядь, мать ебал твою. Сам ищи, чмо тупорылое, мы за тебя лабы делать не будем. Даун.

Ответы: >>550703

29 Сен, 14:09 #244 #550703

>>550700
>>550583

29 Сен, 15:23 #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 Сен, 15:31 #246 #550751

>>550435 >>550451 >>550462 >>550534
Ну и что молчим-то? Вопрос правда интересный. Каков минимальный размер стека среди всех компиляторов? Я тут тоже (почти-)спортивным программированием увлёкся, хочу небольшой массив в стэк передвинуть, а то на этапе компиляции всё известно для конкретной задачи, а считать долго и муторно, используя этот массив.

32768 байт имеются в моём распоряжении или нет? Если 16384, то мне уже не хватит.

Ответы: >>550770, >>550783, >>550846

29 Сен, 16:14 #247 #550770

>>550751
Никто не знает. Стандарт размер стека не регламентирует. Он зависит от системы, от компилятора и от настроек компилятора. Также никто не гарантирует что твой массив действительно окажется на стеке. Гарантируется только автоматическое управление памятью - он удалится по выходе из скоупа. А компилятор спокойно может большие массивы кидать в кучу. Никто минимальным размером стека особо не заебывается - его размера достаточно для того для чего он предназначен (хранения адресов возврата). Хранение пользовательских данных на нем - грязный хак, если у тебя из-за него что-то падает то это твои проблемы. Стек для хранения маленьких переменных/структур. Если нужна скорость пишется аллокатор под нюансы конретной задачи. Все остальное суют прямо в кучу.

Ответы: >>550783, >>550793, >>552521

29 Сен, 16:50 #248 #550783

>>550751
Не слушай теоретиков >>550770 - да, это зависит от ОС и компилятора, но 1 мегабайт в основном потоке у тебя чаще всего есть.

29 Сен, 17:04 #249 #550793

>>550770
Старчѣ, прошлi тѣ врѣмѣна, когда размѣръ стѣка странiцѣй памѣти ограничѣнъ былъ, мы послѣднiю ѢСЪ ѢВМЪ на свалку списалѣ в 1999-м годѣ.
Ну, с разморозкѣй мѣня!

Ответы: >>550815

29 Сен, 17:58 #250 #550815

>>550793
Прошли тѣ времена, когда размѣръ стека страницы памяти ограниченъ былъ, мы послѣднюю EC ЭВМ на свалку списали въ 1999-мъ году. Ну, съ разморозкой меня!

29 Сен, 19:31 #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;
}
}
и вызови до первого доступа к твоему большому объекту.

Ответы: >>550848, >>550860

29 Сен, 19:34 #252 #550848

Какого хуя опять со звёздочками? *test
>>550846
Ну да похуй, я все равно наебался. В общем, суть в том, чтобы обращаться к каждой страницы стека в обратном порядке (а не как у меня), чтобы ОС поняла, что тебе нужно моар и выделила страницы памяти.

29 Сен, 19:43 #253 #550849

>>550435
>Поясните за статическое выделение
Ты путаешь. Стек - это автоматическая память, а не статическая. Статическое выделение - это вот так:

static Node nodes[10001];

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

Размер стека определяется не компилятором, а линкером, который из объектных файлов собирает executable. Причем все сильно платформо-зависимо, в windows мире размер стэка задается в заголовке PE-файла (и есть соответствующие #pragma), в линуксе - свои заморочки, о которых я понятия не имею.

Ответы: >>550865, >>551942

29 Сен, 20:17 #254 #550857

А если хочешь йоба-крестовое решение, то хапни побольше в глобальную переменную (int yoba[100000000]) и перегрузи operator new так, чтобы память выделялясь в yoba методом bump ptr, а operator delete не делал ничего. Тогда, если памяти хватит, скорость будет максимальной без всяких стеков (не считая нелокальности кэша - но тут уж и не знаю, чем помочь): http://ideone.com/mQYppn

29 Сен, 20:26 #255 #550860

>>550846
Я не он, я сочувствующий. И у меня объекты гораздо меньше (провёл оптимизацию по уменьшению объектов), краша в 15 студии не происходит. Интересно, как в других компиляторах дела обстоят и вообще, почему до сих пор знатоки стандарта не высказались?

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

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

Почему статик лучше?

Ответы: >>550865, >>550944, >>551067

29 Сен, 20:37 #256 #550865

Я снайпер, однако. Обращаюсь к >>550849 , тебе вот ответ: >>550860 (начиная с выделенного зелёным текста).

29 Сен, 22:16 #257 #550944

>>550860
>почему до сих пор знатоки стандарта не высказались?
С точки зрения стандарта тебе уже пояснили все. В стандарте нет понятия "стек". И даже если забыть про это, ежу понятно, что размер стека не может не быть платформозависимым. У меня валяется ардуина, там памяти 16 килобайт, из которых дохуя уходит просто на хранение инструкций. И внезапно под него тоже пишут на крестах с небольшими оговорками. Как ты думаешь, там может на стек выделиться "1 МБ, на которые всегда можно рассчитывать", как тут выше кто-то спизданул?

Ответы: >>550951, >>551003

29 Сен, 22:32 #258 #550951

>>550944
Ну и чем это принципиально отличается от ситуации, когда в твоей ардуине new не сможет выделить столько же? Ах, ты это обработаешь? Лол, но как, если тебе НУЖНО 1 мб для работы?

Ответы: >>551220

29 Сен, 23:50 #259 #550986

>>550462
>Ну просто все в олимп. прогр. выделяют статически, т.к. на куче выделить - потерять времени
Просто иди нахуй, олимп. долбоёб.

Ответы: >>551933

29 Сен, 23:53 #260 #550988

Посоветуйте книжку по кодингу под винду. Надоело в консольке задачки решать.

Ответы: >>552842

29 Сен, 23:59 #261 #550991

>>550084
http://rutracker.org/forum/viewtopic.php?t=4976066

30 Сен, 00:23 #262 #551003

>>550944
Мне всего-то 64 килобайта надо на всё про всё, включая рекурсии и даже Аллаха. Кроме твоей ардуины есть ещё где стэк меньше 64 килобайт?

Ответы: >>551048

30 Сен, 03:09 #263 #551047

Реквестирую сравнение SDL и SFML по пунктам:
1) удобство и интуитивность
2) производительность
3) количество сторонних либ (гуя, например)
4) функциональность изкоробки

Ответы: >>551116, >>552083, >>552841

30 Сен, 03:12 #264 #551048

>>551003
CUDA сойдёт? Не то, чтобы там был настоящий стек, конечно.

30 Сен, 04:11 #265 #551053

тест

30 Сен, 06:51 #266 #551067

>>550860
>Интересно, как в других компиляторах дела обстоят и вообще, почему до сих пор знатоки стандарта не высказались?
Стандартный С++ - Тьюринг-полный язык, а любое ограничение по памяти делает его не Тьюринг-полным. Было бы странно, если бы в стандарте что-то об этом говорилось.
>А вот здесь можно подробнее?
Если ты пишешь под пека, то в static-переменную или глобальную влезет намного больше, чем в стек.

Ответы: >>551069, >>551160

30 Сен, 07:06 #267 #551069

>>551067
>Стандартный С++ - Тьюринг-полный язык

Пруфы?

Ответы: >>551070

30 Сен, 07:13 #268 #551070

>>551069
На что? Если ты можешь реализовать на языке брейнфак, это будет Тьюринг-полный язык. Но только если под рукой у тебя бесконечная память. Иначе уже нет (и в таком случае - конечной памяти - проблема остановки принципиально разрешима).

Ответы: >>551071

30 Сен, 07:22 #269 #551071

>>551070
Пруф, что по стандарту C++ - Тьюринг-полон, а в его реализациях - нет?

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

Ответы: >>551073, >>551223

30 Сен, 07:52 #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-битных указателей хватит всем.

Ответы: >>551075

30 Сен, 08:14 #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:55 #272 #551116

>>551047
В SFML есть функции отрисовки простых фигур, в SDL - нет.

Ответы: >>551213

30 Сен, 12:13 #273 #551160

>>551067
>Если ты пишешь под пека, то в static-переменную или глобальную влезет намного больше, чем в стек.
LOLWTO? static-переменная разве не на стэке лежит?

Ответы: >>551165

30 Сен, 12:28 #274 #551165

>>551160
Нет. Школьные "лолшто" засунь себе в жопу.

Ответы: >>551197, >>551215

30 Сен, 14:33 #275 #551197

>>551165
Нет. Анус себе школьный, лолшто.

Ответы: >>551215

30 Сен, 14:49 #276 #551201

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

Ответы: >>551204, >>551224

30 Сен, 15:01 #277 #551204

>>551201
ООП kek

30 Сен, 15:23 #278 #551213

>>551116
А кроме этого?

30 Сен, 15:28 #279 #551215

>>551165 >>551197
А где она лежит тогда?

Ответы: >>551218

30 Сен, 15:33 #280 #551218

>>551215
Там же, где и глобальные переменные. По сути это глобальная переменная с ограниченной областью видимости. Вообще смотри https://ru.wikipedia.org/wiki/Модель_памяти_в_языке_Си

Ответы: >>551219

30 Сен, 15:38 #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 Сен, 15:41 #282 #551220

>>550951
Ничем, я про то и толкую. Глупо надеяться, что стандарт даст какие-то гарантии по поводу производительности железа, объемов памяти и вот этого всего. Берешь конкретно свою платформу и смотришь уже в ее спецификациях, какие гарантии предоставляются а они даже на десктопе достаточно скудные.

30 Сен, 15:42 #283 #551223

>>551071
Двачую этого. Стандарт не запрещает быть Тьюринг-полным, но и не требует этого, иначе бы никто не мог ему соответствовать.

30 Сен, 15:45 #284 #551224

>>551201
Она 2004 года, описывается старый стандарт. Соответственно, в каждом втором примере оттуда будет говно наподобие NULL вместо nullptr, именованных функторов вместо лямбд, const вместо constexpr, ну ты понел.

Ответы: >>551228

30 Сен, 16:10 #285 #551228

>>551224
Там книжка же для тех кто вчера решил научиться программировать и до сих пор пугается строчки x=x+1 то бишь самые базовые основы.

Ответы: >>551285, >>551538

30 Сен, 17:54 #286 #551285

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

30 Сен, 18:40 #287 #551302

>>546742 (OP)
Какая у вас шапка классная! Можно мне такую же? Кто стихи пишет?

Ответы: >>551327, >>551540

30 Сен, 19:29 #288 #551327

>>551302
Очевидный Данте Алигьери.

Ответы: >>551341

30 Сен, 19:48 #289 #551341

>>551327
>Очевидный
Кому как. Я, например, его не читал. Вот что на самом деле значит быдлокодер

30 Сен, 20:03 #290 #551350

Как из встроенного питона/луа получить доступ ко внутренним сиппшным переменным? Или так не делается и я могу только функции вызывать и забирать результат?

Ответы: >>551408

30 Сен, 21:22 #291 #551408

>>551350
Ты бы погуглил хоть. http://lua-users.org/wiki/CppObjectBinding

01 Окт, 00:09 #292 #551502

>>546742 (OP)
помогите пожалуйста с программой
у меня не работает функция пересечения двух множеств, причём если размер первого множества меньше размера второго, то у меня не полностью выводится второе множество,
и если в двух мноествах встречается больше чем один одинаковый элемент, то выводится только первый элемент
http://pastebin.com/jFNdkDcg

Ответы: >>551541

01 Окт, 03:29 #293 #551538

>>551228
Они в плане неизменных вещей все примерно одинаковые. Но учиться лучше сразу хорошим практикам, чтобы потом не узнавать с удивлением, что так, как ты, никто уже давно не пишет.

01 Окт, 03:32 #294 #551540

>>551302
<смущенно улыбается>
мимооп
А в каком ты треде?

Ответы: >>551542

01 Окт, 03:35 #295 #551541

>>551502
tl;dr. Юзать std::set вместе с std::set_intersection не пробовал?

01 Окт, 04:01 #296 #551542

>>551540
Когда как, но чаще всего в питонотреде

01 Окт, 07:21 #297 #551559

std::array же на стеке создаёт, да? А то объектный пул на 1024 элемента в нём не работает, а в 256 работает как часы.

Ответы: >>551563

01 Окт, 07:47 #298 #551563

>>551559
Если правильно помню, создает так, как инстанцирован. Т.е. можно создать std::array динамически и не будет такого ограничения по размеру.

01 Окт, 13:00 #299 #551631

Решил в свободное от работы и пьянок время накодить какую-нибудь простенькую игрушку. Но вот встал вопрос, чтоб писать под DirectX надо сначала заботанить винапи или можно это пропустить?

Ответы: >>551648, >>551939

01 Окт, 13:31 #300 #551644

Помогите пожалуйста нубу в домашнем изучении.
Короч допустим у нас есть массив символов.
char ARR = new char[SIZE];

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

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

При этом, если я делаю ввод с клавиатуры, всё прекрасно работает и он записывает в элемент под номером 1 то, что я напишу.
cin>>ARR[1];
Не понимаю, как так получается, помогите плз.

Ответы: >>551645, >>551647

01 Окт, 13:32 #301 #551645

>>551644
Бля, звёздочку съело где указатель на массив создаём.

01 Окт, 13:40 #302 #551647

>>551644
ARR[1] = 'a';

Ответы: >>551657

01 Окт, 13:41 #303 #551648

>>551631
Можно пропустить, но его или какой-нибудь гуй освоить по-минимуму придется, хотя бы чтоб окно создать и получить хэндл куда рисовать.
http://stackoverflow.com/questions/1633890/gui-api-for-directx

Ответы: >>551650, >>551660

01 Окт, 13:44 #304 #551650

>>551648
Ну и вообще, чтобы накодить простенькую игру в свободное время, directx - очень оверкилл. Намного больше времени потратишь на его освоение и написание рендера, чем на саму игру.
Бери готовый движок лучше или либу вроде sfml.

01 Окт, 14:08 #305 #551657

>>551647
Спасибо!

01 Окт, 14:12 #306 #551660

>>551648
Отлично, попробую тогда освоить QT.

604 Кб, 900x900

01 Окт, 16:24 #307 #551731

Господа, нужен ваш совет.
Практикую классы в С++.
Есть класс BankAccount, имеет три свойства. Этот класс имеет простой метод, это снятие денег со счета. Просто снять деньги получается, но я решил добавить проверку, что бы снимаемая сумма была не больше той, что есть на счету. И в случае, если сумма снимаемая больше имеющейся суммы, повторять ввод, пока не выполнится данное условие.
И вот не получается нормально, первый раз когда я ввожу снимаемую сумму, происходит проверка, сумма снимаемая оказывается больше той, что имеем, и меня просят ввести снимаемую сумму еще раз. Я целенаправленно ввожу снимаемую сумму больше той, что имеем, и мне выводится инфа, что у меня от имеющейся суммы отняли сумму, которая больше чем кол-во денег, что мы имеем.
Вот метод класса.
http://pastebin.com/f0cDH9pf
А вот весь проект, т.к. делал многофайловый проект.
https://madokami.com/96iemv.rar
IDE msvs2010

Ответы: >>551740, >>551750, >>551756

01 Окт, 16:33 #308 #551740

>>551731
Че такое свойства?

01 Окт, 16:37 #309 #551743

Учителка сказала, что не будет проверять мои Лабы на джаве, грит перекатываться на кресты. Подскажите необходимый максимум, чтобы программировать линейный, ветвящийся и циклический алгоритм в рамках laba3.cpp

Ответы: >>551748

01 Окт, 16:51 #310 #551748

>>551743
Точно также как на джаве, только синтакс объявления классов немного другой. Читай про классы, new и delete, и для лаб хватит.

01 Окт, 16:52 #311 #551750

>>551731
У тебя наверное символ '>' не в ту сторону.

Ответы: >>551855

01 Окт, 17:01 #312 #551756

>>551731
А зачем ты в while сравниваеме числа местами поменял, в условии выше же правильно.

Ответы: >>551855

01 Окт, 18:10 #313 #551799

Программаны, поясните про различие классов и структур.
Есть ли какие-то серьёзные отличия в работе? Например, если надо будет создать парочку свойств в виде public, будет ли разница в работе программы между классом и структурой?

Ответы: >>551806

01 Окт, 18:14 #314 #551806

>>551799
http://stackoverflow.com/questions/54585/when-should-you-use-a-class-vs-a-struct-in-c

01 Окт, 20:19 #315 #551855

>>551750
>>551756
1е условие проверяет, что если введено число, которое больше баланса, вводить числа до тех пор, пока число которое ввели не будет меньше баланса. Т.е. баланс будет больше вводимого числа, 2е условие.

Ответы: >>551860

01 Окт, 20:27 #316 #551860

>>551855
>пока число которое ввели не будет меньше баланса
Это repeat-until(condition) (которого в c++ нет, есть просто do-while(!condition)).
do-while(condition) же повторяет цикл, пока условие верно (а не пока оно не станет верно).

Ответы: >>551881

72 Кб, 499x333

01 Окт, 21:25 #317 #551881

>>551860
Спасибо тебе милый человек.

01 Окт, 22:15 #318 #551908

Срочно прошу CLion-господ ответить мне на интересный вопрос — я должен каждый сорс файл вручную прописывать в cmakelists, или есть всё же более удобные альтернативы?

Ответы: >>551953

01 Окт, 23:08 #319 #551933

>>550986
Чому так грубо? Я задал вполне адекватный вопрос.

01 Окт, 23:26 #320 #551939

>>551631
SFML.
Я серьезно.

01 Окт, 23:29 #321 #551942

>>550849
Окей, спасибо за разъяснение. Если я пишу static, то где выделится память для массива/переменной? Алсо, попробовал сдать задачу, приписав static к объявлению массива - все тот же runtime error. Может я там в коде что-то делаю не так? Глянь, если не лень будет, пожалуйста.

http://acm.timus.ru/help.aspx?topic=cpp
P.S. Тут параметры компиляции, стек реально большой, в чем может быть проблема?

Ответы: >>551951

02 Окт, 00:05 #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 строк.

Ответы: >>551969

02 Окт, 00:09 #323 #551951

>>551942
Не будь как маленький, поставь брейкпоинт сразу после аллокации массива. Если не доходит до него - проблема в массиве. Если доходит - где-то еще.

Ответы: >>552075

02 Окт, 00:24 #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 Окт, 01:27 #325 #551969

>>551950
Ладно, давайте тогда так.

public: bool __thiscal
Как это расшифровать? Гугл выдает ссылки на стаковерфлоу, а мне бы кратенько, смысл написанного.

Ответы: >>552001

02 Окт, 05:56 #326 #552001

>>551969
Публичный член CEGun, возвращает bool, подчиняется соглашению о вызовах методов класса thiscall, когда указатель на объект, от имени которого вызывается метод, записывается в ECX.

02 Окт, 09:44 #327 #552075

>>551951
Так в том то и дело, что у меня все прекрасно работает. Не могу я воспроизвести баг.

Ответы: >>552148, >>552392

02 Окт, 10:08 #328 #552083

>>551047
SDL не использовал, когда выбирал между ними больше понравился SFML, поэтому напишу только про него:
1) норм, проблем не было.
2) мне скорости хватало, рисовал все через VertexArray. Вообще странный вопрос, т.к. что SDL, что SFML просто обертки.
3) хз, вроде на форумах что-то было. НИНУЖНО/нормальному гую похую к чему прикручиватся.
4) вроде норм.
Что не понравилось: у SFML нету нормальной матлибы, есть потешные структурки "типа" векторы, но без каких-либо методов/конструкторов. Стороннюю либу взять можно, но приходилось конвертировать свои векторы/цвет в это потешное говно. НАХУЙ ТАК ЖИТЬ.
Был баг при потери фокуса окна, но его мгновенно пофиксили.
Но вообще, достаточно симпатично.

Ответы: >>553604

02 Окт, 13:49 #329 #552148

>>552075
Ели это олимпиадная задачка, то на каком тесте валится? Если не на первом - проблема в коде.

02 Окт, 23:32 #330 #552392

>>552075
Ну так наставь дебажных выводов в stdout и в stderr вида "line 15: array created" и смотри на то что тебе вернёт проверяющая система.

Ответы: >>552410

03 Окт, 00:17 #331 #552410

>>552392
Если я правильно понимаю, в ACM вывод не виден решающему непосредственно. Приходит типа отчета по пройденных тестах и все.

Ответы: >>552431

03 Окт, 00:47 #332 #552431

>>552410
Тогда лови ошибку в try-catch. Есть ошибка - не поймал, тест провален и без ошибки - поймал.

Ответы: >>552480

03 Окт, 02:13 #333 #552465

Сап, ананасы.

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

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

Заранее признателен.

Ответы: >>552520

03 Окт, 03:27 #334 #552480

>>552431
У этих пидоров запрещены любые исключения, даже которые ты сам ловишь. Как только бросается - runtime error.

Ответы: >>552558

03 Окт, 08:30 #335 #552520

>>552465
Цэ - потому что быстрый. Не кресты - потому что тяжкий крест груз стандарта и обратной совместимости с Си и ненужных обвесков-заплаток, которыми никто не пользуется. 0x14 сейчас вроде актуальный стандарт, они в последних стандартах толковой хуеты надобавляли(лямбды, замыкания, moving semantics, constexpr, STL smart pointers, threads, hashtables) - но нужно во всём этом разбираться. Копаться в чьих-то сколь-нибудь сложных templates - это адский ад. Хотя сама штука весьма полезная и нужная по задумке, реалии мира же суровы.
Квалификация нужна повыше, чем в Цэ соответственно. Иногда чистого Цэ хватает за глаза для определённых задач(где не надо ООП, полиморфизма). Например те же вычислительные/алгоритмические задачи, где надо пережевать огромный входной файл/базу во что-то полезное.

Ответы: >>552678

03 Окт, 08:36 #336 #552521

>>550770
>Никто минимальным размером стека особо не заебывается - его размера достаточно для того для чего он предназначен (хранения адресов возврата).
Он также предназначен для локальных переменных(к примеру тех же временно живущих указателей, в которые распределяешь кучу, временных значений при вычислении) и передачи параметров(т.н. фреймов вызова функций) - и рекурсии соответственно.

‮минонА 03 Окт, 11:30 #337 #552558

>>552480
Тогда по старинке - комментируешь половину кода и посылаешь. Есть rt-error – ошибка в незакомментированном коде.
Только сам сначала проверяй, что полученная каша запускается.

03 Окт, 16:21 #338 #552678

>>552520
А замыкания разве добавили уже? Это же вроде пока только экспериментальная фича, которую кроме мелкомягких ни один компилятор не внедрил.

Ответы: >>552684

03 Окт, 16:30 #339 #552684

>>552678
Мелкомягкие внедряют фичи последними.

Ответы: >>552707

03 Окт, 16:58 #340 #552707

>>552684
Они их внедряют избирательно. Большая часть весомых фич из 17 стандарта за ними, но зато не весь 14 держат.

Ответы: >>552792

03 Окт, 17:06 #341 #552716

Пытаюсь освоить очереди, чет вообще пока грустно.
Есть задача: Заявки 1-го типа поступают в "хвост" очереди по случайному закону с интервалом времени Т1, равномерно распределенным от 0 до 5 единиц времени (е.в.). В ОА они поступают из "головы" очереди по одной и обслуживаются также равновероятно за время Т2 от 0 до 4 е.в., после чего покидают систему.
Найти, например, время прохождения 1000 заявок.
Как-то запрограммировать?
Очень желательно без stl

Ответы: >>552719, >>552745, >>553211

03 Окт, 17:09 #342 #552719

>>552716
>без stl
От написания своего stl тебе станет понятнее?

Ответы: >>552722

03 Окт, 17:16 #343 #552722

>>552719
Я думаю, что сначала лучше разобраться "как всё устроено", пописать свои pop-push/подобное руками, а потом уже stl использовать.
Но вообще, я буду рад любому решению, которое я смогу понять, ибо задачка выше-это кусок большой задачи, которую мне потом нужно сделать.

Ответы: >>552728

03 Окт, 17:24 #344 #552728

>>552722
Ты случаем не пишешь диплом в одном из ДС2 вузов, в районе Адмиралтейской?

Ответы: >>552736

03 Окт, 17:31 #345 #552736

>>552728
Не, это лаба 2 курса дс.

Ответы: >>552795

03 Окт, 17:44 #346 #552745

>>552716
> без stl
В твоей постановки он не нужен. Тебе не надо хранить очередь, нужна только её текущая глубина.

http://www.r-bloggers.com/simulating-a-queue-in-r/
Вот так, только на cpp. Хотя нахуй cpp, на R это проще, только при генерации времени следующего прихода/ухода вместо rexp() заюзай runif().
Я, когда писал дипломную, обернул тот код в функцию, которая принимает на вход функцию распределения времени прибытия и обработки событий и листы с параметрами для первой и второй функции и гонял с разными параметрами.

Ответы: >>552750

03 Окт, 17:51 #347 #552750

>>552745
Мм, ничего не понятно, но сейчас разберусь.
Спасибо.

03 Окт, 19:13 #348 #552792

>>552707
Они и 11 пока не держат, лол. Нет, если мне не изменяет память, какой-то ебалы для SFINAE и еще чего-то.

03 Окт, 19:14 #349 #552795

>>552736
Лол, у нас что-то подобное по имитационному моделированию задавали. По меркам МГУ халява лютая, все радовались.

03 Окт, 19:23 #350 #552802

>>546742 (OP)
Позавчера попалась книга Хакинг. Искусство эксплоита. Открываю значит, ознакомился с содержанием. Там язык С. Про который я думал, что он мертв. Неужели, чтобы понять и применить на практике(с целью ознакомления) все хуитки из книги я должен пердолить С? Все эти работы с памятью, эти сдвиги, че несут вообще. Никакой альтернативы нет?
три курса хтмл+цсс и жбскрипта.

Ответы: >>552806, >>552807, >>552808

03 Окт, 19:27 #351 #552806

>>552802
Лол. Ну на HTML пиши, хуле.

Ответы: >>552815

03 Окт, 19:27 #352 #552807

>>552802
Нахуя? Делай сплоенты на цсс.

Ответы: >>552815

03 Окт, 19:29 #353 #552808

>>552802
Да, здесь таки все в свое время отведали низкоуровневого говна, и ты так делай. Почему это нужно - есть статья Спольски: http://russian.joelonsoftware.com/Articles/LeakyAbstractions.html Так что читай Кернигана-Ритчи и пиздуй в си-тред, ссылка есть в шапке.

Ответы: >>552815

03 Окт, 19:53 #354 #552815

>>552806
>>552807
А вы мемасные парнишки
>>552808
Ок, спасибо

03 Окт, 20:40 #355 #552841

>>551047

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

sfml полноценный фреймворк, к тому же на крестах, а сдл на чистом си, впрочем там настолько все просто о и тупо что на крестах это не сделать даже если бы и захотели бы

Ответы: >>553604

03 Окт, 20:41 #356 #552842

>>550988

C++ GUI Programming with Qt4

28 Кб, 463x634

04 Окт, 01:07 #357 #552947

Поясните, почему такая хуйня не работает. Я же получаю указатель на переменную, т.е., если изменится её значение, я узнаю об этом.

И как мне тогда реализовать такую схемку - вначале у меня кучу раз добавляется всё в этот map, а потом одним вызовом всё инициализируется? И все указатели, которые были получены до этого через Submit, мгновенно становятся валидными?

Ответы: >>552956, >>552963, >>552965

04 Окт, 01:44 #358 #552956

>>552947
> Я же получаю указатель на переменную, т.е., если изменится её значение, я узнаю об этом.
https://ideone.com/AzFlkj
Лучше юзай ссылку.

Ответы: >>552957

04 Окт, 01:47 #359 #552957

>>552956
Спасибо.

04 Окт, 02:16 #360 #552963

>>552947
Указатель указывает на какое-то место в памяти. В твоём случае он указывает в никуда. Возвращая его из метода ты копируешь его. А он всё так же указывает на пустоту. Как и с обычной переменной это твоя локальная копия.
Если бы этот указатель указывал на определённый адрес в системе, то ты бы по нему менял объект по этому адресу. При этом сам указатель бы не менялся. Повторюсь, т.к. это просто копия. И эта копия хранится совсем в другом месте, нежели то, что в мапе или то что создано в методе. При условии, что отсутствует оптимизация компиля.

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

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

И почитай много хорошей лит-ры. Этот код очень не хорош, за него даже не пизят по ебальнику, а просто закапывают :3 Сохранил твою структуру, чтобы тебе было проще понять как оно работает. На этапе обучения это важнее

Ответы: >>552965, >>553044, >>553182

04 Окт, 02:26 #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

Ответы: >>553044

04 Окт, 12:11 #362 #553044

>>552963
Так у меня не этап обучения, а менеджер текстур. С условием, чтобы не было никакой подгрузки в рантайме. И с условием, чтобы одна и та же текстурка не грузилась дважды. А ещё с условием, что текстуры могут быть как ID3D11ShaderResourceView, так и ID3D12Resource, так и какой-нибудь OpenGL-овский unsigned int.

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

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

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

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

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

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

Хотя всё равно спасибо.

Ответы: >>553148

04 Окт, 12:27 #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 к функциям?

Ответы: >>553054, >>553058

04 Окт, 12:29 #364 #553054

>>553052
Если static применён просто так, к глобальной функции - то это будет означать, что доступа к функции не будет из других файлов, она будет видна только в этом.
Если в классе - то это будет означать, что не нужно создавать объект класса, чтобы вызвать функцию.

Ответы: >>553058

04 Окт, 12:35 #365 #553058

>>553054
А если не "просто так"? Получается, особой разницы между этими функциями нет, если они в пределах одного файла?

>>553052
И ещё забыл добавить, что на месте многоточий может происходить всё, что угодно, изменение строк в том числе.

Ответы: >>553066

04 Окт, 12:45 #366 #553066

>>553058
Со static перед функцией ты не засираешь глобальное пространство имен, лучше писать везде, где возможно.

Ответы: >>553068, >>553149

04 Окт, 12:47 #367 #553068

>>553066
Понятно, спасибо.

04 Окт, 15:10 #368 #553136

Посаны, поясните по хардкору, есть ли разница межу:
Type variable;
и
Type variable;
???

Ответы: >>553140, >>553151

0 Кб, 178x77

04 Окт, 15:12 #369 #553140

>>553136
Type variable;
и
Type variable;
???

04 Окт, 15:27 #370 #553148

>>553044
Почему не unordered_map, там поиск за константное время?

Ответы: >>553160

04 Окт, 15:30 #371 #553149

>>553066
Хуйню написал. static для нелокальных сущностей deprecated, следует использовать анонимные пространства имен, если хочешь запретить доступ из других файлов.

Ответы: >>553156, >>553163

04 Окт, 15:30 #372 #553151

>>553136
Разницы нет.

04 Окт, 15:38 #373 #553156

>>553149
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#174

Ответы: >>553162

04 Окт, 15:40 #374 #553160

>>553148
Хех, а вот тут спасибо.

04 Окт, 15:41 #375 #553161

Вообще даже эстетически сишный подход лучше.

Ответы: >>553163

04 Окт, 15:41 #376 #553162

>>553156
Хм, ну да, формально все верно. Но энивей лучше не использовать, когда есть возможность в анонимные пространства имен, они же более наглядны у static вообще сильно многозначная семантика.

Ответы: >>553168

04 Окт, 15:41 #377 #553163

>>553161 -> >>553149

04 Окт, 15:48 #378 #553168

>>553162
>у static вообще сильно многозначная семантика
Вполне однозначная, непонятно только ньюфагам, но им и анонимные неймспейсы лучше не будут.

Ответы: >>553282

04 Окт, 16:10 #379 #553182

>>552963
Смотрю на код и нихуя не понимаю. Похоже, мое призвание - завод.
мимоньюфаня

04 Окт, 17:16 #380 #553211

>>552716
>Как-то запрограммировать?
Берёшь теорвер и считаешь.

04 Окт, 17:50 #381 #553253

http://ideone.com/ErEnVM

нагло врываюсь

Ответы: >>553267

04 Окт, 17:54 #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?

Ответы: >>553264, >>553265, >>553284, >>553430

04 Окт, 18:04 #383 #553264

>>553256
1. Потому что компилятор не занимается статическим анализом.
2. А system("rm -rf /") - это какой behavior?

Ответы: >>553289

04 Окт, 18:05 #384 #553265

>>553256
> почему компилятор не выдает ошибк
Компилятор не следит за границами массивов. Это UB. UB даже просто установить указатель за границы выделеного именно для этого указателя массива памяти, за исключением одного элемента следущего прямо за выделеным блоком. Тоесть mas+=10; - норма, mas+=11; - UB, *(mas+10) - UB.

Ответы: >>553285, >>553311

04 Окт, 18:07 #385 #553267

>>553253
И что?

04 Окт, 18:19 #386 #553274

Как можно в C/C++ открыть RTMP-стрим и выводить видео на экран? В гугле по запросу с rtmp ничего по теме не гуглится. Нашел, что можно вывести через directshow, но мне бы кроссплатформенное что-нибудь.

Ответы: >>553276, >>553294

04 Окт, 18:23 #387 #553276

>>553274
Нашел еще, что можно при помощи либы librtmp сделать клиента, но пока ищу примеры как с её помощью вывести изображение на экран.

04 Окт, 18:30 #388 #553282

>>553168
Не, я в том смысле, что одно и то же ключевое слово, в зависимости от контекста, означает разное. Это вообще довольно больное место C++, потому что из-за static, или, например, virtual которое может обозначать как виртуальный метод, так и виртуальное наследование грамматика не является бесконтекстной, и разбирать ее сложнее. И компиляция замедляется.

04 Окт, 18:33 #389 #553284

>>553256
Undefined это.

04 Окт, 18:34 #390 #553285

>>553265
Неправда же. Установить указатель можно на что угодно, это допустимо. UB возникнет при попытке его разыменования.

Ответы: >>553333

sage 04 Окт, 18:37 #391 #553289

>>553264
Щяс проверю))

04 Окт, 18:42 #392 #553294

>>553274
Ладно, хуй с ним.
Возьму за основу ffplay и буду его пилить.

04 Окт, 19:04 #393 #553311

>>553265
за исключением одного элемента следущего прямо за выделеным блоком - почему так?? там же уже мусор лежит и это не выделенная память?
получается, я могу положить любое значение в любой участок памяти, выделенной процессу (и на стеке и в куче), если он уже не используется мной же?

Ответы: >>553338, >>553357

04 Окт, 19:23 #394 #553333

>>553285
>Неправда же
А если я покажу место в стандарте?

Ответы: >>553342, >>553345

04 Окт, 19:29 #395 #553338

>>553311
> там же уже мусор лежит и это не выделенная память?
Ты не знаешь, что там лежит, т.к. не можешь разыменовывать указатель.
> за исключением одного элемента следущего прямо за выделеным блоком - почему так?
Потому что массивы принято описывать как полуоткрытые интервалы.

Ответы: >>553349

04 Окт, 19:30 #396 #553342

>>553333
Покажи.

Ответы: >>553354

04 Окт, 19:32 #397 #553345

>>553333
покажи, няша.
автор вопроса

Ответы: >>553354

04 Окт, 19:34 #398 #553349

>>553338
как не могу, если я свободно туда значение кладу
и если он полуоткрытый [0;10), почему я могу ложить значение в [10]?

Ответы: >>553355, >>553356, >>553358

04 Окт, 19:37 #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)

Ответы: >>553361, >>553363, >>553364, >>553380

04 Окт, 19:37 #400 #553355

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

Ответы: >>553358

04 Окт, 19:37 #401 #553356

>>553349
По стандарту это UB.

04 Окт, 19:38 #402 #553357

>>553311
> за исключением одного элемента следущего прямо за выделеным блоком - почему так
Чтобы в цикле можно было удобно пройти по выделеному блоку памяти, что-то типа for(i=0, i <size; i++), где i - указатель. На последней итерации указатель станет указывать на участок памяти сразу за выделеным, что доспукается, но разименовывать уже нельзя. И дальше передвигать нельзя.
Есть системы где сама ОС следит чтобы ты не вылез за выделеный буфер, я деталей не знаю, но там наверное указатель не просто переменная с адресом, а объект который выдается системой (типа мьютекса), и система следит как ты с ним работаешь. Если ты запросил указатель для работы с блоком памяти то при попытке передвинуть указатель вне блока система пошлет нахуй.
> я могу положить любое значение в любой участок памяти, выделенной процессу
Вообще да, но могут всплыть нюансы. Гугли "переполнение буфера".

Ответы: >>553360, >>553383

04 Окт, 19:38 #403 #553358

>>553355
Неправда, что компилятор вообще статическим анализом не занимается
>>553349
Тебе повезло. Так работает память в компьютере.

Ответы: >>553385

sage 04 Окт, 19:41 #404 #553360

>>553357
>i=0
естественно что-то типа i=mas а не 0. Привычка-с.

04 Окт, 19:41 #405 #553361

>>553354
Ты не понял, что это значит. Это значит, что если прибавить к адресу последнего элемента единицу, то переполнения не случится, то есть нельзя расположить массив в памяти по адресам N - последнее возможное число. А вот по адресам N - последнее возможное число минус один - можно.

Ответы: >>553382, >>553384

04 Окт, 19:42 #406 #553363

>>553354
Это не о том. Написать int x = (int)1234567 никто не запрещает.

Ответы: >>553376

04 Окт, 19:43 #407 #553364

>>553354
это плюсовый стандарт?

Ответы: >>553367, >>553372

04 Окт, 19:44 #408 #553367

>>553364
Я загуглил этот отрывок и нашел это - говорят, C стандарт. http://c0x.coding-guidelines.com/6.5.6.html

мимо-рандом

Ответы: >>553372

04 Окт, 19:46 #409 #553372

>>553364
>>553367
Специально дал конкретный пункт, но дебилы начали что-то спрашивать и что-то гуглить.

Ответы: >>553373

04 Окт, 19:47 #410 #553373

>>553372
Ты сам дебил.

Ответы: >>553374

04 Окт, 19:48 #411 #553374

>>553373
Лол, нет.

04 Окт, 19:49 #412 #553376

>>553363
> никто не запрещает
Угу. Но и никто не гарантирует. Указатель, полученный из рандомного числа не является safely-derived и его поведение unspecified.

Ответы: >>553394

04 Окт, 19:53 #413 #553380

>>553354
Если вкратце, что гарантирует стандарт: можно присвоить указателю что угодно, все будет WB. Можно разыменовать указатель на существующий объект, WB. Можно сравнивать указатели на любые корректные объекты при помощи == друг с другом и с nullptr, будет WB. Можно сравнивать при помощи <, >, <=, >=, но WB будет только если это элементы одного массива, либо точка сразу за концом массива (поэтому и гарантируется отсутствие переполнения по твоей цитате - чтобы можно было пройти по массиву, сравнивая с точкой за его концом, чтобы вовремя остановиться), либо члены одного объекта. Для всех прочих указателей сравнение будет unspecified behaviour, т.е. программа корректная, но конкретный результат неизвестен и зависит от реализации.

Ответы: >>553386

04 Окт, 19:55 #414 #553382

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

Ответы: >>553392

04 Окт, 19:56 #415 #553383

>>553357
Не совсем так. Дальше передвигать можно, без разыменования UB не будет в любом случае. Но отсутствие переполнения уже не гарантируется, т.е. в указателе может появиться теоретически рандомный адрес, ну как если бы ты без инициализации его определил, с мусором. Вроде все корректно, но использовать нельзя.

Ответы: >>553390

04 Окт, 19:56 #416 #553384

>>553361
>Ты не понял, что это значит
Я прекрасно понимаю что это значит. Это пункт об арифметике указателей и о том, когда и что можно к ним прибавлять. Так вот, прибавлять к указателю можно когда он является указателем на элемент массива и так, что можно вылезти только на один элемент после конца массива. Всё остальное — UB.

Ответы: >>553387, >>553402

04 Окт, 19:57 #417 #553385

>>553358
Он может заниматься, но не обязан. Даже в случае ill-formed программы стандарт не всегда требует диагностики, а уж отслеживать предполагаемое UB в рантайме точно от компиляторов не требовалось и не будет.

04 Окт, 19:57 #418 #553386

>>553380
как раскрывается аббревиатура WB?

Ответы: >>553395

04 Окт, 19:58 #419 #553387

>>553384
Нет же. Переполнение возможно, но это нихуя не UB. Если ты сложил два MAX_INT, то UB не будет, ты просто данные свои же попортишь. Тут то же самое.

Ответы: >>553391, >>553399

04 Окт, 19:59 #420 #553390

>>553383
Тогда что считать переполнением?

04 Окт, 20:00 #421 #553391

>>553387
Что ты несёшь?

04 Окт, 20:00 #422 #553392

>>553382
Зауисит от компилятора. Если запустишь шланг с какими-нибудь опциями проверки нелегального доступа к памяти, то возможно он во время запуска сообщит. А может какой-нибудь компилятор и просто с -Wall -Wextra даст ворнинг, хз. А может ты попытаешься обратиться к памяти, которая принадлежит не твоей программе, и тебе операционка завершит твою прогу.

04 Окт, 20:00 #423 #553394

>>553376
Unspecified это не критично же, программа не поломается, если ты знаешь, что делаешь. Если ты сделал двойной каст в исходный тип через тип большего размера, то ты пройдешь через unspecified и вереншься в нормальное поведение, гарантированно. А если ты попытаешься приойти так через undefined, то это некорректно, потому что все может нахуй сломаться.

04 Окт, 20:01 #424 #553395

>>553386
Well behaviour.

04 Окт, 20:01 #425 #553399

>>553387
Насколько я помню, и в C++ и в C любое переполнение - UB

Ответы: >>553401, >>553404

04 Окт, 20:06 #426 #553401

>>553399
Блджад, покурил стандарт и таки да. Мне всегда казалось, что это unspecified. Энивей, "most existing implementations of C++ ignore integer overflows".

Ответы: >>553410, >>555264

04 Окт, 20:06 #427 #553402

>>553384
Неа. Остальное UB - только если действительно случится переполнение. А если не случится, то никакого UB. Так что эта хуйня рандомно в реальном мире скорее всего никогда может превратиться в UB, типа такого

if (get_random_int() == 100500) {
invoke_undefined_behaviour();
}

Ответы: >>553405, >>553406, >>553417

04 Окт, 20:08 #428 #553404

>>553399
я правильно понял, что за переполнением следит ОС?

Ответы: >>553407, >>553408, >>553409, >>553410

04 Окт, 20:08 #429 #553405

>>553402
Хм, но ты-то не знаешь, случится ли переполнение, так что по любому определенности нет у тебя.

04 Окт, 20:09 #430 #553406

>>553402
>Неа
Ты не понимаешь, к чему относится "otherwise". Оно относится к "If both the pointer operand and the result...", а не к "shall not produce an overflow".

Ответы: >>553417, >>553419

04 Окт, 20:09 #431 #553407

>>553404
переполнением массивов я имел ввиду

Ответы: >>553411, >>553414

04 Окт, 20:09 #432 #553408

>>553404
По факту никто не следит, всем похуй, и просто портятся данные, с отбрасыванием старшей единицы. А в стандарте это типа как отказ от ответственности.

04 Окт, 20:09 #433 #553409

>>553404
Нет.

04 Окт, 20:11 #434 #553410

>>553401
>most existing implementations of C++ ignore integer overflows
Я уверен, что это не совсем так.
Как минимум выдача ворнингов, если статический анализ выявит, что переполнение гарантированно будет - что-то типа MAXINT + MAXINT прямо в коде.
А иногда еще какие-нибудь компиляторские оптимизации производятся на основании того, что если овервлоу, то это UB.
А еще я сейчас опять подумал и припомнил, что где-то читал, что UB это переполнение то ли только signed чисел, то ли только unsigned. Не помню, каких именно.

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

Ответы: >>553415

04 Окт, 20:11 #435 #553411

>>553407
Зависит от. Можно компилировать с флагом защиты от переполнения, плюс ос может вскукарекнуть, если ты, например, залезешь на адрес возврата. А может и не вскукарекнуть.

04 Окт, 20:12 #436 #553414

>>553407
Че такое переполнение массивов?

Ответы: >>553416

04 Окт, 20:13 #437 #553415

>>553410
Статический анализ это да, но в целом я не могу представить реализацию, когда случится что-то плохое от присваивания указателю рандомного значения, хоть даже запрещенного/с переполнением. Ну, только если это специально вставлять код, который будет это отслеживать и срать в кашу неаккуратным погроммистам.

04 Окт, 20:15 #438 #553416

>>553414
видимо имелся ввиду выход за границы и разыменование

04 Окт, 20:15 #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

Ответы: >>553427

04 Окт, 20:15 #440 #553419

>>553406
Ладно, ты прав, там так написано.
Но
1. Я не уверен, так ли это в C++, а еще я где-то что-то читал, что вроде противоречит этому, так что хуй знает
2. Я это вообще нашел в каком-то там The New C Standard, и я хуй знает, что это такое
3. Стоило привести весь абзац от начала, чтобы было понятно, что речь вообще про математические операции плюс и минус между указателем и числом.

Ответы: >>553420

04 Окт, 20:17 #441 #553420

>>553419
>Стоило привести весь абзац от начала, чтобы было понятно, что речь вообще про математические операции плюс и минус между указателем и числом.
Ну а как ещё получить указатель на конец массива, кроме как прибавляя к указателю на начало длину массива?

Ответы: >>553421

04 Окт, 20:19 #442 #553421

>>553420
получается в mas[mas.length] можно класть значение и это не будет UB?

Ответы: >>553424, >>553427, >>553432

04 Окт, 20:21 #443 #553424

>>553421
Получать указатель можно, разыменовывать — нельзя.

Ответы: >>553425, >>553432

04 Окт, 20:24 #444 #553425

>>553424
нельзя потому что это запрещено стандартом, или потому что поведение в этом случае неопределено?

Ответы: >>553429, >>553432

283 Кб, 1326x1005

04 Окт, 20:24 #445 #553427

>>553417
Ладно, оказывается действительно

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

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

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

Но я на 100% уверен, что разыменование конца массива плюс один, если ты на эту ячейку получил указатель не каким-то другим способом, то если не через какую-то другую переменную, это UB

Ответы: >>553432

04 Окт, 20:25 #446 #553429

>>553425
Потому что стандарт говорит я не знаю, где именно, но инфа сотка говорит, что в таком случае поведение не определено

Ответы: >>553432

04 Окт, 20:28 #447 #553430

>>553256
всем спасибо за разъяснения

04 Окт, 20:30 #448 #553432

>>553421
>>553425
>>553427
>>553429
Автор >>553424 here: видимо, стандарт не говорит, что разыменовывать нельзя. Как минимум не говорит это ЯВНО.

Ответы: >>553434

04 Окт, 20:33 #449 #553434

>>553432
Чтоу? Стандарт определенно где-то говорит, что в случае такого разыменования поведение не определено. Просто не в том месте, которое приведено тут. Ведь это место - оно про операции сложения и вычитания.

Ответы: >>553439

04 Окт, 20:36 #450 #553436

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

Ответы: >>553437, >>553438

04 Окт, 20:37 #451 #553437

>>553436
замени на void и посмотри где ошибка, не?

04 Окт, 20:40 #452 #553438

>>553436
Это потому что ты нарушаешь https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md P.1 и P.3 (у тебя наверное почти последний example из P.3)

04 Окт, 20:41 #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++-стандарте последнего предложения нет.
Вот и думай тут.

Ответы: >>553441

04 Окт, 20:43 #454 #553441

>>553439
Очевидно, C++-ный стандарт просто по-другому структурирован. А в C-стандарте получается это написано в двух местах - ведь в описании оператора * унарного наверняка написано, что если он не указывает на подходящий объект, то UB.

Ответы: >>553448

04 Окт, 20:49 #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 Окт, 23:34 #456 #553604

>>552083
>>552841
Спасибо.

05 Окт, 10:56 #457 #553758

Поясните нубу, почему русский текст в консоли отображается знаками вопроса?

Ответы: >>553764, >>553806

05 Окт, 11:25 #458 #553764

>>553758
Потому что русский язык не нужен.

05 Окт, 13:32 #459 #553806

>>553758
Потому что в твоей консоли\проге хуйня с шрифтами\кодировкой.

Ответы: >>553809

05 Окт, 13:35 #460 #553809

>>553806
Как в консоли это поправить? Я гуглил, писал setlocale, но ничего не помогает.

Ответы: >>553899, >>554941

05 Окт, 16:22 #461 #553895

>>546742 (OP)
http://pastebin.com/ameqBHY9
помогите плиз, не корректно работает программа, хотя код вроде бы правильный
мне нужно создать массив, в котором находятся элементы, которые содержатся в двух множествах
если общий элемент один, то всё верно, а если их несколько, то программа не работает, что не так?

Ответы: >>553905, >>553913

05 Окт, 16:26 #462 #553899

>>553809
Если ты на cout пишешь юзай cout.imbue() передавая туда объект C++ локали. Попробуй разные локали - на винде win1251, dos866 пробуй, не помню какая уже.

05 Окт, 16: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),
\t\t\t\t\t\tstd::begin (set2), std::end (set2),
\t\t\t\t\t\tstd::back_inserter (result));
\t\t\t\t\t\t
result.data (); // Здесь твой массив с общими элементами
[/code]

05 Окт, 16:45 #464 #553913

>>553895
Ну давай разберем по частям тобой написанное. Складывается впечатление, что ты вообще не имеешь представления о безопасности исключений. В конструкторе set ты память выделил? Выделил. А что будет, если T выбросит исключение в операции присваивания, ты подумал? Потечет твой массив из памяти, как твоя мамка при виде куска сала, ибо объект не будет считаться созданным, и деструктор не вызовется.

471 Кб, 1080x1080

06 Окт, 16:31 #465 #554439

>>546742 (OP)
Нормально ли использовать Spirit для написания парсера простого ЯП?

Ответы: >>554444, >>554458

06 Окт, 16:40 #466 #554444

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

06 Окт, 17:02 #467 #554458

>>554439
Кроме Spirit есть еще несколько реализаций генераторов лексических парсеров (lexer один из них называется или что-то вроде этого). Задаешь грамматику в БНФ вроде. Погугли lexical parser generators У них свои плюсы/недостатки перед Spirit. Например, не надо ебаться с шаблонным метапрограммированием.

06 Окт, 19:31 #468 #554523

Поясните, где прочитать (или тут) про цикл for.
Прям подбробно, как он выглядит изнутри.
Допустим, цикл принимает вот такое
for( действие; действие; действие, действие)
но ругается на такое
for( действие, действие; действие; действие)

Страуструпа в ОПпосте открывал, там подробностей нет, в гугле тоже инфа уровня for(тут можно задать перменную; тут условие; тут инкремент)

Ответы: >>554529, >>554553, >>554577

06 Окт, 19:36 #469 #554529

>>554523
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf
142 страница.

Ответы: >>554548

145 Кб, 857x951

06 Окт, 19:52 #470 #554548

>>554529
?
На 10 страниц повыше есть описание for, но точно такое же как у Страуструпа (если это не та же книга)

06 Окт, 19:56 #471 #554553

>>554523
потому что в for первым идет объявление переменных, а не действие. Нельзя вроде сделать (int a=1, float b=2); по стандарту. Уточняй.

Ответы: >>554559

06 Окт, 20:02 #472 #554559

>>554553
Но почему тогда вот такая конструкция работает?
int i = 0;
for(cout<<"hui"; i<2 ; i++)
{

}

06 Окт, 20:05 #473 #554564

А не, я ошибся там мальца, можно там 2 выражения писать, просто если идёт объявление переменной, ничего кроме этого уже не напишешь.

06 Окт, 20:17 #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();
}

Ответы: >>554582

06 Окт, 20:26 #475 #554582

>>554577
Да, спасибо, до меня наконец дошло, вся фишка была вот в этом операторе запятой. Я как-то сразу и не подумал.

Ответы: >>554587

06 Окт, 20:29 #476 #554587

>>554582
Его еще перегружать можно.

Ответы: >>554602

06 Окт, 20:41 #477 #554601

Погромисты, нужен ваш совет, как вытащить из dev/random число(>1) и записать в переменную?
мимоучуплюсы

Ответы: >>554616

06 Окт, 20:41 #478 #554602

>>554587
Ааа сложна.

Ответы: >>554622

06 Окт, 21:25 #479 #554616

>>554601
Открываешь его как ifstream и читаешь, это обычный файл же. Алсо, если тебе просто нужно рандомное число, используй встроенный генератор std::mersenne_twister_engine, например.

Ответы: >>554620

1415 Кб, 1366x768

06 Окт, 21:30 #480 #554620

>>554616
Спасиб.

06 Окт, 21:32 #481 #554622

>>554602
Сложно, но на этом основано много магии типа boost::bind.

06 Окт, 21:32 #482 #554623

О Боги кодинга, молю Вас о секрете замута библиотеки собственных функций. MVS видит хедер, но не более. Таки мне что делать, да куда кидать?

Ответы: >>554628

06 Окт, 21:37 #483 #554628

>>554623
> Таки мне что делать
Таки кроме include path есть library path.

Ответы: >>554630

06 Окт, 21:41 #484 #554630

>>554628
Так я чернь несведующая, мне примеры подавай, расписывай все

07 Окт, 01:22 #485 #554779

Функторы отжили свое? Вместо них стоит всегда использовать лямбды?

Ответы: >>554792, >>554823

07 Окт, 02:05 #486 #554792

>>554779
Ну почему же. Если ты хочешь повторно использовать мономорфный код, то правильно будет просто сделать именованный функтор. Но вообще это дело вкуса, делай, как тебе удобно.

07 Окт, 04:53 #487 #554823

>>554779
Нет, не отжили, но их сильно потеснили. Лямбды - для анонимного inline определения функтора, используемого на месте, это нужно для алгоритмов в основном. Еще у лямбд замыкание есть, а это экономит время - и может даже быстрее выполняться(если оно реализовано ссылкой на стек, вместо копирования переменных). Если же функтор не привязан к окружающему коду(используется вне контекста алгоритмов), и является обычной функцией с состоянием - то можно его объявить и классически.

Ответы: >>554829

07 Окт, 04:57 #488 #554824

Функторы (что за тупое использование термина) еще наследоваться могут, например.

Ответы: >>554829

07 Окт, 05:56 #489 #554829

>>554823
Поясни за замыкание?
>>554824
Где может это пригодиться?

Ответы: >>554830, >>554838

07 Окт, 06:02 #490 #554830

>>554829
Для йоба-ООП http://ideone.com/VlO0V7

Ответы: >>554831, >>554832

07 Окт, 06:12 #491 #554831

>>554830
Ты только что джаву

07 Окт, 06:19 #492 #554832

>>554830
Где можно почитать про lvalue/rvalue/xvalue, чтобы понять это дерьмо? Сколько ни пытался понять - так и не выходит. Просто не у кого больше спросить.

Ответы: >>554838, >>554839, >>554930, >>555042

07 Окт, 07:18 #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 Окт, 07:25 #494 #554839

>>554832
Ты должен понять мотивацию. Мотивация простая - тебе нужен механизм детектирования "временных" объектов - которые сдохнут в этой же строке от "постоянных", которые еще поживут. Зачем? Ради скорости. У временного объекта ты можешь забрать все ресурсы, все равно он труп, а вот из постоянного объекта все придется или копировать или еще как извращаться.
Например в выражении `y=f(g(x))` результат g(x) тут же сдохнет, не дожив до следующей строки. А вот `y` эту строку переживет.
И вот механизм детектирования заключается в том, что временные объекты являются rvalue references (обозначаются они не int&, а int&&). Это значит, что они могут существовать только справа от знака присваивания. Поэтому, сделав конструктор, принимающий rvalue-ссылку, ты можешь быть уверен, что ты принимаешь временный объект, который сдохнет и делать ты с ним можешь что хочешь. Например, забрать у него все unique_ptr и толстые векторы через std::move.
Это - мотивация, поэтому почитай о move-семантике и сделай класс, который может move'иться. А lvalue/rvalue/xvalue оставь разработчикам компиляторов С++.

Ответы: >>554840

07 Окт, 07:32 #495 #554840

>>554839
>>554839
Еще поддвачну - rvalue/xvalue позволяет компилятору делать
https://en.wikipedia.org/wiki/Return_value_optimization
https://en.wikipedia.org/wiki/Copy_elision

Ответы: >>555043

07 Окт, 11:46 #496 #554930

>>554832
Скотт Мейерс оче грамотно поясняет в своей последней книжке и вот в этой статье: http://habrahabr.ru/post/157961/

Аноним 07 Окт, 12:07 #497 #554941

>>553809

SetConsoleCP(1251);
SetConsoleOutputCP(1251);

И люсинда шрифт в консоли (у меня на семёрке так)

07 Окт, 12:17 #498 #554946

НОВЫЙ ТРЕД
https://2ch.hk/pr/res/554944.html
https://2ch.hk/pr/res/554944.html
https://2ch.hk/pr/res/554944.html

07 Окт, 16:04 #499 #555042

>>554832
http://en.cppreference.com/w/cpp/language/value_category

07 Окт, 16:05 #500 #555043

>>554840
Нет.

Ответы: >>555125

07 Окт, 16:12 #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();
}

Ответы: >>555104, >>555108, >>555126

07 Окт, 17:19 #502 #555104

>>555047
И что с ним не так, кроме того, что он тяжело читается?

07 Окт, 17:26 #503 #555108

>>555047
Короче понял, где там ошибка.
последний if должен быть
if(count==0)
cout<<k;
Ты бы хоть алгоритм изучил перед применением.

08 Окт, 09:39 #504 #555125

>>555043
Что нет-то? Обоснуй. Суть rvalue - что не нужно временный объект создавать/копировать(он всё равно справа от присвоения будет), можно запихнуть сразу в левую часть присвоения(т.е. компилер может передать в функцию указатель, вместо возврата и копирования/переноса объекта). В чём я не прав?

08 Окт, 09:44 #505 #555126

>>555047
>cout вместе с printf
>i++ вместо ++i
>код не отформатирован
>стало лень разбираться
facepalm.jpg
Решето эратосфена возьми рабочее, скопипасти и заюзай.

08 Окт, 16:07 #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) Можно привести прямую цитату из стандарта, разъясняющую этот момент?

Ответы: >>555464

08 Окт, 21:17 #507 #555456

Анон, который вызывался помочь с c++ во вконтактеке или телеграме, ты еще здесь?

08 Окт, 21:26 #508 #555464

>>555264
Итт тебя наебали. C signed типами - unspecified, с unsigned всё ок.

Тред утонул или удален.
Это копия, сохраненная 30 октября 2015 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion