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

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

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

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

2009 Кб, 1592x963

Оффициальный™ традиционный® C++ тред #4 03 Авг, 22:32 #525225 В конец треда | Веб

И я увидел, долгий взгляд вперяя,
В stderr погрязших мыслям вопреки:
Была свирепа их толпа дурная.

Визжа, на стол роняли кулаки,
То лоб клавиатурой разбивая,
То мыши норовя изгрызть в клочки.

Учитель молвил: "Сын мой, здесь страдают
Те жалкие, кто выбрал путь крестов.
На гуще из compile-errors гадают

Несчастные. О них довольно слов."

Литература:

Для нюфань:
Три классических учебника для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется.
Герберт Шилдт - C++. Базовый курс (2010) - http://goo.gl/qMLAFl
Роберт Лафоре - Объектно-ориентированное программирование в C++ (2004) - http://goo.gl/QvjR6x
Стивен Прата - Язык программирования C++ (2012) - https://goo.gl/z7kA8u
Для желающих сразу начинать с Откровений Создателя - классика (может показаться суховатым):
Бьерн Страуструп - Программирование. Принципы и практика использования C++ (2009) - https://goo.gl/87qXtW

Учимся не писать говнокод:
Книги про основные подводные камни для тех, кто осилил предыдущий пункт. Следует пролистать все.
Скотт Мейерс - Эффективное использование 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++ (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) - http://goo.gl/0M4NpG

Ссылки:

Годный блог, в котором все просто и понятно тян не нужны кококок борщ - 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.

Памятка:

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

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

Предыдущий: >>518004 (OP)

03 Авг, 22:36 #2 #525228

Предыдущие треды на архиваче:
https://arhivach.org/thread/94971/
https://arhivach.org/thread/94972/
https://arhivach.org/thread/99414/

В шапку добавлены новые драфты стандарта и информация об IDE.

Ответы: >>525241

03 Авг, 22:47 #3 #525241

>>525228
>драфты стандарта
Что это и где?

Ответы: >>525244

03 Авг, 22:56 #4 #525244

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

удел насикомых Ананос 03 Авг, 22:57 #5 #525245

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

Ответы: >>525256

03 Авг, 22:59 #6 #525248

Что значат строки типо:

#define kukareku

koko = a + kukareku b;

Я правильно понимаю что это способ вставить комментарий прямо посреди строки кода?

Ответы: >>525267, >>525581, >>525662

03 Авг, 23:05 #7 #525256

>>525245
Ничего, игра закончена. С каждой написанной программой жызненное просранство для каждого отдельно взятого программистишки сжималось, http://gans-spb.livejournal.com/14901.html

03 Авг, 23:16 #8 #525267

>>525248
Это говно какое-то, для комментария посреди строки можно юзать /комментарий/ же.

Ответы: >>525268

03 Авг, 23:17 #9 #525268

>>525267
[code lang="cpp"]
/комментарий/
[/code]

41 Кб, 477x862

04 Авг, 01:00 #10 #525307

Поясните за колбэк.
Да, я понял что это грубо говоря функция которая вызывается во время наступление некоторого события, это если объяснять словами.
Но вот как это все реализовано, у меня в голове не укладывается.
Всюду простые примеры кода типа такого(пикрелейтед)
Здесь просто вызывается функция ссылку на которую содержит указатель на функцию. Но в таком примере можно это можно заменить непосредственным вызовом функции, да и всё. Непонятно когда именно очень необходим этот самый колбэк.
И еще.
> которая вызывается во время наступление некоторого события

Неясно каким это магическим образом оно узнает что событие наступило.
Оно что запускает в потоке бесконечный цикл и все время проверят наступило ли событие(например нажатие мыши) или как? Как это физически происходит? Как оно узнает какую именно функцию ей нужно вызвать в том или ином случае?

Ответы: >>525315, >>525382, >>527350, >>529206

04 Авг, 01:15 #11 #525311

>>525225 (OP)
>Под шиндошс удобно использовать
А почему в IDE про Eclipse ничего нету? Он неудобный? Там вроде даже рефакторинг какой-то из коробки и Git.
/мимонафаня

Ответы: >>525383

04 Авг, 01:27 #12 #525315

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

Можно показать на примере куска кода регистрации обработчика событий окна шиндовс:
http://ideone.com/qzuf7T

Ответы: >>525316, >>525321

04 Авг, 01:30 #13 #525316

>>525315
>Передача ссылки на функцию
Сохранение указателя на функцию. & операция взятия адреса.
Мама,я все забыл

04 Авг, 01:37 #14 #525317

>>524533
репощу с ласт треда вопрос, надеюсь, что поцаны не проигнорят, спс.

Ответы: >>525319

37 Кб, 375x488

04 Авг, 01:51 #15 #525319

>>525317
http://beej.us/guide/bgnet/output/html/multipage/index.html

Ответы: >>525322

04 Авг, 01:55 #16 #525321

>>525315
> и там, имея этот указатель, и зная какие аргументы ей можно передавать, .
Что-то еще более не понятнее стало.
Почему бы просто не вызвать функцию и передать те же аргументы.
> ее могут вызывать когда пожелают передавая в аргументы что-нибудь полезное
Как вызов то происходит, как система узнает что вот сейчас пора вызывать, а когда не надо?

Ответы: >>525323, >>525336, >>525386

185 Кб, 1280x960

04 Авг, 01:57 #17 #525322

>>525319
спасибо анончик, пойду осилять

04 Авг, 01:58 #18 #525323

>>525321
> Как вызов то происходит, как система узнает что вот сейчас пора вызывать, а когда не надо?
на очереди тредик висит и выковыривает из неё сообшченьицца

04 Авг, 03:04 #19 #525336

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

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

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

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

Ответы: >>525499

04 Авг, 10:15 #20 #525382

>>525307
Ты не забывай еще, что хотя бывают указатели на методы, наподобие int (TvoyaMamka::*) (int), делать их коллбэками нельзя, тому що вызов методов не совместим ни с какими соглашениями о вызовах VC вон указатель на this передает вообще в регистре. И даже если метод статический, хотя по факту он везде будет нормально работать как коллбэк, если объявить его с _cdecl соглашением о вызовах, стандарт запрещает делать его коллбэком все равно, ибо нехуй. Используй глобальные функции, будь алтфаком.

Ответы: >>525499

04 Авг, 10:18 #21 #525383

>>525311
Потому что я убежденный спермораб, очевидно же. Ну я указал ту, которой сам пользуюсь. Если кто-нибудь напишет про Eclipse, добавлю, конечно.

04 Авг, 10:24 #22 #525386

>>525321
Самая банальная ситуация - у тебя есть какой-нибудь libcurl библиотека для работы с http, написана на pure c. Ты хочешь скачать этот тред при помощи своей программы. Поскольку pure c не может в std::string, он хочет писать код страницы в обычный char . Но буфер из ограниченного по размеру char передавать ему некошерно, ибо тред может быть большим и не влезть в него. Что делать? Ответ прост - ты передаешь в libcurl собственную функцию-обработчик потока символов, который генерится из кода страницы. Этот обработчик знает, куда пихать символы, он может юзать std::string, или уточнить размер буфера, или еще что-то придумать. Важно, что библиотека не может знать всего, поэтому она передает ответственность за схоронение твоему коллбэку, и дальше ее не ебет.

Если весь код твой, то, в принципе, можно обойтись без коллбэков. Если библиотека новая и на крестах, то тоже. Коллбэки же нужны именно для работы с чужим кодом на pure c, и вообще на других языках.

Ответы: >>525499

39 Кб, 951x740

04 Авг, 13:01 #23 #525418

Поясните пожалуйста, я внятного ответа в гугле не нашёл - когда я в стринг пишу русские символы, то вывод какой-то не такой, какой должен быть:

Ответы: >>525419, >>525719, >>527373

04 Авг, 13:04 #24 #525419

>>525418
Либо setlocal делай правильный, либо в консоли chcp.

Ответы: >>525420

04 Авг, 13:07 #25 #525420

>>525419
Я делал и такие:
setlocale(LC_ALL, "rus");\t
setlocale(LC_ALL, "russian");
Всё равно не работает как надо.
А что в консоли делать? Я в гугле читал про:
\tSetConsoleCP(1251);
\tSetConsoleOutputCP(1251);
Оно?
Но не совсем понял куда вставлять.

Ответы: >>525424

04 Авг, 13:16 #26 #525424

>>525420
> ++
std::locale::global(std::locale(""))

Ответы: >>525425

8 Кб, 456x163

04 Авг, 13:20 #27 #525425

>>525424
>std::locale::global(std::locale(""))
Такая же батва, делал пустой и russian.

04 Авг, 15:17 #28 #525453

Где найти все понятия по С++? Все эти инициализация, объекты, типа, литералы етц?
Я учебник страуструпа читаю, там есть далеко не все понятия, а некоторые немного размыты.

Ответы: >>525482

04 Авг, 17:21 #29 #525482

>>525453
конспектируй, другой учебник глянь если какая-то тема не лезет в голову

04 Авг, 17:31 #30 #525486

Поясните, я сделал программку с учебника, но она получилась очень громоздкой с кучей копипасты.
Я подумал - можно ли как-то было укоротить решение? Но так, чтобы использовать только простые, стандартные функции, типа if или while? А так же тип стринг.
https://ideone.com/s591kt
Сама задача: Напишите программу, предлагающую пользователю ввести определенное коли-
чество 1-, 5-, 10-, 25-, 50-центовых и долларовых монет. Пользователь должен
по отдельности ввести количество монет каждого достоинства, например
“Сколько у вас одноцентовых монет?” Результат должен выглядеть следующим
образом.
У вас 23 одноцентовые монеты.
У вас 17 пятицентовых монет.
У вас 14 десятицентовых монет.
У вас 7 25-центовых монет.
У вас 3 50-центовые монеты.
Общая стоимость ваших монет равна 573 центам.
Усовершенствуйте программу: если у пользователя только одна монета, выве-
дите ответ в грамматически правильной форме. Например, “14 десятицентовых
монет” и “1 одноцентовая монета” (а не “1 одноцентовых монет”). Кроме того,
выведите результат в долларах и центах, т.е. 5,73 доллара, а не 573 цента

Ответы: >>525489, >>525490, >>525503

42 Кб, 700x573

04 Авг, 17:37 #31 #525489

>>525486
>int one = 1;
>int two = 2;
>int three = 3;

Ответы: >>525493

04 Авг, 17:38 #32 #525490

>>525486
Вынеси поворяющийся код в функции

Ответы: >>525493, >>526098

04 Авг, 17:44 #33 #525493

>>525489
Что не так? Типа, one - один цент.
Да, может стоило добавить one_cent.

>>525490
Я функции еще не изучал.

Ответы: >>525502

04 Авг, 17:53 #34 #525499

>>525382
Я всё понял :3
>>525336
То есть система несет ответственность за то когда курсор дернется и когда это произойдет она передает ссылку на свою функцию как аргумент в мою функцию, которая выполняется в отдельном потоке?
>>525386
Это же другая ситуация, если нам просто нужно подставить свою реализацию в некоторую функцию.
Вот в вики написанно:

Об обратном вызове можно думать как о действии, передаваемом некоторой основной процедуре в качестве аргумента. И это действие может рассматриваться как:

1. подзадача и использоваться для обработки данных внутри этой процедуры;
2. «телефонная связь», используемая для того, чтобы «связываться» с тем, кто вызвал процедуру, при наступлении какого-то события (англ. callback дословно переводится как «звонок обратно»).

Меня же интересует второй случай.

Ответы: >>525507, >>525508

04 Авг, 17:55 #35 #525502

>>525493
>Я подумал - можно ли как-то было укоротить решение?
>Я функции еще не изучал.
>Вынеси поворяющийся код в функции
форман джипег.
Вот иди изучи и упростишь

Ответы: >>526098

04 Авг, 17:55 #36 #525503

>>525486
Вместо своих россыпей суффиксов юзай функции же.

[code lang="cpp"]
enum class Case { SINGLE_SUBJ, MULTI_SUBJ, MULTI_GEN };

Case getCase (int number)
{
\tint res = number & 10;
\t
\tif (res == 1)
\t\treturn Case::SINGLE_SUBJ;
\telse if ((res > 1) && (res < 5))
\t\treturn Case::MULTI_SUBJ;
\telse
\t\treturn Case::MULTI_GEN;
}

std::string getCoinSuffix (int number)
{
\tCase res = getCase (number);
\t
\tif (res == Case::SINGLE_SUBJ)
\t\treturn "а";
\telse if (res == Case::MULTI_SUBJ)
\t\treturn "ы";
\telse
\t\treturn "";
}

std::string getNominalSuffix (int number)
{
\tCase res = getCase (number);
\t
\tif (res == Case::SINGLE_SUBJ)
\t\treturn "ая";
\telse if (res == Case::MULTI_SUBJ)
\t\treturn "ые";
\telse
\t\treturn "ых";
}
[/code]

Ответы: >>525504

04 Авг, 17:56 #37 #525504

>>525503
>number % 10
Быстрофикс.

04 Авг, 18:00 #38 #525507

>>525499
На самом деле это концептуально одно и то же. Чужой код не знает как совершить действие и использует твой "обработчик". А что конкретно он делает - обрабатывает данные или обращается к тебе - это уже дело десятое.

04 Авг, 18:00 #39 #525508

>>525499
>То есть система несет ответственность за то когда курсор дернется и когда это произойдет она передает ссылку на свою функцию как аргумент в мою функцию, которая выполняется в отдельном потоке?

То есть система вызывает метод в библиотеке (которая отвечает за работу с UI), когда ты дернул мышь:
void mouseMoved(int x, int y);

А внутри метода примерно так:

{for (int i=0; i++; i < subscribes.lenght) {
subscribes.DO_IT(x, y);
}}

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

Ответы: >>525510, >>525626

04 Авг, 18:01 #40 #525510

>>525508
Вакаба сожрала скобки:
subscribes[\ i \].DO_IT(x, y);

04 Авг, 18:46 #41 #525531

анон, помогай, у меня трабл с файловым выводом. Вывожу в файл экземпляры класса second, производного от first, все идет норм, выводится, читается, до тех пор, пока я не делаю функции базового класса first виртуальными, после этого ни в какую не читает экземпляр из файла. какой там танец с бубном нужно станцевать?

Ответы: >>525659

04 Авг, 20:50 #42 #525581

>>525248
Это константа через дефайн. Нахуй не нужно имхо. Хотя некоторые любят.

Ответы: >>525584, >>525603, >>525621

04 Авг, 20:56 #43 #525584

>>525581
>некоторые любят
С принятием C++11 эти некоторые оффициально считаются говноедами. Если раньше альтернативой было только const TvoyaMamka kukareku, которую хуевый компилятор уносил в рантайм даже если она использовалась только как константа времени компиляции, то теперь есть православный constexpr, для которого не сгенерируется никакого кода, и при этом не будет проблем с областью видимости и статическими проверками типов, которые есть у #define.

04 Авг, 21:43 #44 #525603

>>525581
И где там константа?

04 Авг, 22:13 #45 #525621

>>525581
Да я знаю что такое #define. Тут же ничего не присваивается, и получается что этот define можно писать где хочешь без влияния на программу.

Ответы: >>525658

sage 04 Авг, 22:23 #46 #525626

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

04 Авг, 23:32 #47 #525658

>>525621
Можно в дальнейшем заменить пустоту на #define kukareku c + же. Если написать a + kukareku + b, то для пустоты не сработает, а так можно добавить любое количество слагаемых.

04 Авг, 23:34 #48 #525659

>>525531
Давай код. Телепаты в отпуске.

04 Авг, 23:39 #49 #525662

>>525248
Макросы. Заменяются препроцессором на настоящий код. С помощью них можно творить нечитаемое говно, например написать ОС http://www0.us.ioccc.org/2004/gavin.c

77 Кб, 768x1024

24 Кб, 400x400

05 Авг, 00:17 #50 #525675

https://twitter.com/EpicSammyJames/status/628551106520555521

Ответы: >>525708, >>525710, >>525725

05 Авг, 01:42 #51 #525708

>>525675
что это за мусорка с твиттера?

984 Кб, 448x397

58 Кб, 425x282

05 Авг, 01:47 #52 #525710

>>525675

14 Кб, 915x375

05 Авг, 02:47 #53 #525719

>>525418
А я нашел ответ в гугле по запросу setlocale getlocale (stackoverflow)

05 Авг, 03:52 #54 #525725

>>525675
похуй же. Говно какое нибудь делает. А программистом любой аутист с гуманитарным образованием сможет стать при должном усердии и наличии интернета.

05 Авг, 06:47 #55 #525747

Есть что почитать про правильное и неправильное использование инклудов, а то я заебался с этими "does not name a type", "has no member named", "expected primary-expression before 'int'" и остальными ошибками из-за неправильного использования инклудов. Вроде и везде гарды стоят, но все равно говно получается.

Ответы: >>525764

05 Авг, 10:20 #56 #525764

>>525747
В начале каждого .h ставишь #pragma once, либо весь файл целиком в include guard. Константы у include guard не должны, блджад, повторяться, поэтому в подавляющем большинстве случаев удобнее не следить за этим, а использовать прагму кококок нестандарт символические ссылки.

Итак, в каком-то .h описан твой класс. Если ты, хуила, вынес из класса определение метода, но оставил его в том же .h файле, а не перенес в соответствующий .cpp, то подставляй свою сраку - это говно иногда будет компилироваться, а иногда нет.

Где-то в другом файле ты хочешь использовать свой класс TvoyaMamka. Если он используется только в сигнатуре функции, или ты используешь ссылку/указатель на него, но не обращаешься к его членам, то достаточно в начале файла написать class TvoyaMamka, то есть, просто объявить его. Никаких инклудов делать не надо, понял епту?

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

Если у тебя возникла ситуация, когда файлы инклудят друг друга, то у меня для тебя плохие новости - ты долбоеб. Чтобы избавиться от циклического включения, необходимо выбрать из этих двух файлов "главный". В "главном" файле ты оставляешь инклуд "неглавного", а в "неглавном" приводишь код к такому виду, чтобы, блядь, инклуд "главного" не требовался - переходишь к указателям, выносишь все говно в .cpp и так далее. И потом вместо инклуда "главного" просто объявляешь его с помощью class.

Это далеко не все, но достаточно, чтобы ты не срал в штаны слишком уж часто.

Ответы: >>525776, >>525777, >>526224

05 Авг, 11:04 #57 #525776

>>525764
А если у меня есть три файла A.h, B.h и C.h, причем А и B используют говно из С stdlib, например, а у класса в А есть член-экземпляр класса из В, то только А должен иметь инклуды оставшихся двух?

Ответы: >>525783, >>525838

05 Авг, 11:09 #58 #525777

>>525764
Чему в новом стандарте не откажутся от .h и всей сопутствующей ебли зависимостей? Почему не позаимствуют опыт других языков, например того же шарпа, в котором компиль справляется с генераций без всяких дополнительных заголовков?

Ответы: >>525783

05 Авг, 11:21 #59 #525783

>>525777
Обратная совместимость потому что. А в плане опциональной поддержки вроде что-то замышлялось, но вряд ли это будет до C++20.
>>525776
Тогда в A включен B, а A и B могут при необходимости включать C, но по возможности следует этого избежать. Например, подключать stdlib транзитом это плохой тон. Нужны тебе куски stdlib в A - подключай их непосредственно в A. Это уменьшает зависимости же, вдруг ты потом решишь переделать C, чтобы он не использовал stdlib.

05 Авг, 15:05 #60 #525838

>>525776
Google://include guards

Ответы: >>525842

05 Авг, 15:22 #61 #525842

>>525838
Ниочем вообще, на одних гардах далеко не уедешь, там даже порядок включения роль играет.

Ответы: >>525891

05 Авг, 16:29 #62 #525891

>>525842
Если играет, то ты делаешь что-то не так. Используешь using в заголовочных файлах, циклические зависимости или еще какое говно.

Ответы: >>525904

05 Авг, 16:35 #63 #525904

>>525891
>Используешь еще какое говно
C++

Ответы: >>525926

05 Авг, 16:59 #64 #525926

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

Ответы: >>525935

05 Авг, 17:19 #65 #525935

>>525926
Чиво блять?

Ответы: >>527129

05 Авг, 22:35 #66 #526098

>>525490 >>525502
Ребята, это Страуструп для ньюфагов, будьте снисходительны. Страуструп сначала заставляет перекусить ржавую трубу собственным анусом, и только потом рассказывает про ножовку где-то страниц через сто.

Ответы: >>526134

05 Авг, 23:37 #67 #526134

>>526098
А Лафоре/Прата рассказывают только про ножовку, информация про ржавые трубы стыдливо спрятана в конце книги, а о том, что у человека есть анус, не упоминается вообще.

Ответы: >>526210, >>526409

06 Авг, 03:52 #68 #526210

>>526134
ну тем не менее это нужнее, и после них Стратоуструпа можно просто пролистать просмотреть листинги. У меня первой книгой был как раз Стратоуструп, и я наверное целый месяц осмысливал первую программку где калькулятор предлагает сделать.

Ответы: >>526217, >>526409

9 Кб, 250x256

06 Авг, 04:24 #69 #526217

>>526210
>осмысливал первую программку где калькулятор предлагает сделать
не понял как на это реагировать, ты ебанутый(да)?
в основном тебе нужно было понять как работать с классами(начально) и разбивать программу на функции. ВСЕ, там даже задания не нужно делать, если ты все понял, потому что они настолько ебанутые, что иди нахуй просто.

Ответы: >>526417

06 Авг, 04:56 #70 #526224

>>525764
А что на счёт precompiled headers?
Как с ними правильно работать?

Ответы: >>526279

06 Авг, 10:33 #71 #526279

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

06 Авг, 11:10 #72 #526286

Платиновый вопрос, как перекатиться с шарпа на кресты?

Ответы: >>526302

324 Кб, 380x380

06 Авг, 12:17 #73 #526302

>>526286
Каков вопрос..

06 Авг, 13:26 #74 #526350

Поясните, что в ++ значит << или >> ?
Как я понял - это символ перемещения переменной в? Или как?

Ответы: >>526363

06 Авг, 13:28 #75 #526353

Как лучше всего создать гуи?

Ответы: >>526365

06 Авг, 13:50 #76 #526363

>>526350
Побитовый сдвиг числа влево и вправо. Например, у тебя есть char tvoya_mamka = 3, это 00000011 в двоичной системе. Ты пишешь char tvoya_babka = tvoya_mamka << 1, и бабка инициализируется значением 6, которое равно 00000110 в двоичной системе и получено сдвигом влево на один бит. Это можно использовать для умножения на степени двойки, ибо сдвиг иногда работает быстрее настоящего умножения.

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

Ответы: >>526367

06 Авг, 13:51 #77 #526365

>>526353
WinAPI - единственный легитимный выбор.

Ответы: >>526376

06 Авг, 13:53 #78 #526367

>>526363
Т.е. это операторы ввода и вывода? А как они точно описываются?
Я их использую для cin или cout, например:
cin >> var;
Т.е. ввожу что-то в вар.
cout << "test";
Ввожу что-то в команду вывода.
Так?

Ответы: >>526371

06 Авг, 14:00 #79 #526371

>>526367
[code lang="cpp"]
std::ostream & operator<< (const TvoyaMamka & mamka)
{
//...
}
[/code]

Вот стандартная сигнатура перегруженного для класса TvoyaMamka оператора. Внутри оператора может быть что угодно, стандарт не обязывает делать именно ввод и вывод. Но обычно ты внутри каким-то образом форматируешь члены класса и вызываешь операторы вывода для них. Они, в свою очередь, выводят свои члены... Когда доходит до примитивных типов, например, double или int, вызываются стандартные функции <<, которые используют низкоуровневые функции вывода, зависящие от операционной системы.

Ответы: >>526372

06 Авг, 14:01 #80 #526372

>>526371
Obosralsya, конечно же
[code lang="cpp"]
std::ostream & operator<< (std::ostream & stream, const TvoyaMamka & mamka)
{
//...
}
[/code]

Ответы: >>526953

06 Авг, 14:08 #81 #526376

>>526365
Перетолстил.

Ответы: >>526446

06 Авг, 14:52 #82 #526409

>>526134
>А Лафоре/Прата рассказывают только про ножовку
... для ньюфагов это очень плохо. Я это говорю фактически как ньюфаг. Надо наступить на максимальное количество граблей, чтобы потом действительно оценить разбиение на функции и прочие ножовки сто страниц спустя.

>>526210
>ну тем не менее это нужнее, и после них Стратоуструпа можно просто пролистать просмотреть листинги
... и совершенно не понять эволюцию его кода в том же калькуляторе. Т.е. ты сможешь его править, а переписать целиком вряд ли. А я переписывал, вот. Но самое главное, я понимаю, как он работает. Потому что перекусил анусом много ржавых труб.

>>526210
>и я наверное целый месяц осмысливал первую программку где калькулятор предлагает сделать
Если ты и про шестую, и про седьмую главу вместе, то ты просто гений. Я над шестой главой месяц ебался, кажется.

Ответы: >>526417

06 Авг, 15:15 #83 #526416

Скажите мне, это STL такое говнище, или я как-то неправильно ей пользуюсь?
Возникала тут задачка на работе, которую численными методами решить надо было, с хуйлиардом входных данных. Я прикинул - а оно всё на мапы и векторы идеально ложилось. Ну я и набросал за пару дней няшную компактную програмку, отдебажил, запустил на реальных данных, и сел ждать результаты первой порции. И что-то как то МЕДЛЕННО. Запускаю профайлер - а оно 99% времени проводит в вызовах map.
В общем, я охуел и выкорчевал нахуй весь stl-код из проекта, после чего всё стало работать в стопицот раз быстрее. Ну вот как так? Или STL вообще не предназначена для высоконагруженных приложений?

Ответы: >>526434, >>526439, >>526441

06 Авг, 15:18 #84 #526417

>>526217
>>526409
да про нее. Я тогда был школодроном с максимализмом и не пониманием как можно что то учить самому, и только после бейсик. Зашел в магазин и увидел этот монолит Стратоуструпа на полке, купил. Вроде бы все было легко до ебучего калькулятора, там я месяц сидел в отладчике и пошагово выполнял каждую команду, и где то спустя чуть более месяца на меня наконец то снизошло озарение, как же там блять все работает. Потом где то до середины досчитал и бросил, вернулся к ней только на втором курсе.

06 Авг, 15:20 #85 #526419

Как сделать, чтоб указатель указывал на переменную-защищенный член класса? Метод clss::a(int* pointer) { pointer = &clssVar; } сработает? Или надо адрес переменной возвращать? Как вообще все эти функции и методы с переменными работают? Копируют значения или читают по реальным адресам?

Ответы: >>526444

06 Авг, 15:46 #86 #526434

>>526416
Ну что за задача-то? Вроде умный человек, решаешь какие-то задачи, а никакой конкретики нет. STL писали для быстрой работы с памятью в 90% стандартных ситуаций. Может, ты просто не умеешь её готовить -- я имею в виду выбрать правильный контейнер для твоих задач.

06 Авг, 15:51 #87 #526439

>>526416
> выкорчевал нахуй весь stl-код из проекта, после чего всё стало работать в стопицот раз быстрее
На что заменил-то?

06 Авг, 15:52 #88 #526441

>>526416
Предназначена. Но надо понимать, а не просто бездумно укладывать все на контейнеры. Если у тебя там были, блядь, поэлементные присваивания этих векторов, а вместо unordered_map с грамотной хэш-функцией обычная map с ключами из string, когда при каждом обращении к элементу идет O(log(n)) сравнений строк, то удивительно бы было, если бы оно быстро работало.

06 Авг, 16:00 #89 #526444

>>526419
Сам указатель-параметр копируется, а то, на что он указывает - нет. Если присвоить что-то разыменованному pointer, то оно запишется по реальному адресу, навсегда. Если присвоить что-то самому pointer, то изменится только копия параметра внутри функции, после выполнения никакого эффекта не будет. Чтобы был эффект, нужно сделать
[code lang="cpp"]
int clss::a () { return &clssVar; }
//либо
void clss::a (int pointer) { pointer = &clssVar; }
[/code]
Второй вариант удобен, когда таких указателей несколько, чтобы не пихать их все в возвращаемое значение. Делать изменение по ссылке типа int & pointer некошерно, ибо можно выстрелить себе в ногу.

Ответы: >>526481

06 Авг, 16:02 #90 #526446

>>526376
Но ведь так и есть.

06 Авг, 17:07 #91 #526481

>>526444
Во втором случае будет ошибка "int* to int", pointer - указатель на int, а не просто Int.

Ответы: >>526500, >>528956

06 Авг, 17:44 #92 #526500

>>526481
&classVar это указатель на int
pointer это указатель на указатель на int, разыменованный pointer это указатель на int.
Как что все там нормально будет, присваиваются указатели на int.

06 Авг, 19:53 #93 #526549

[code lang=c++]
//raw - указатель на QDataStream
raw->readRawData(temp, 4);
[/code]
Выдает ошибку
[code]
invalid type argument of unary '' (have 'int')
*raw->readRawData(temp, 4);
^
[/code]
Что я делаю не так?

Ответы: >>526550

06 Авг, 19:58 #94 #526550

>>526549
Либо ты делаешь *raw.readRawData, либо raw->readRawData.

872 Кб, 949x1453

06 Авг, 21:15 #95 #526572

Такой вопрос.

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

Поясните позязя.

Ответы: >>526575, >>526646, >>528640

06 Авг, 21:27 #96 #526575

>>526572
Учи Си, лентяй. Всё верно тебе советуют.

Ответы: >>526606

06 Авг, 22:43 #97 #526601

>>525225 (OP)
Плюсобоги, помогите, гугл ничего не дал, да и скорее всего не даст, так как это что-то странное.
В чем суть:

Есть конструктор класса. Туда агрументом я передаю указатель на рендерер и хочу чтобы он сохранился в ren(private SDL_Renderer N_Texture::ren)

когда я создаю класс в main.cpp и даю в конструктор рендерер, то с ren НИЧЕГО НЕ ПРОИСХОДИТ
N_Texture::N_Texture(SDL_Renderer renderer)
{
\tTexture = NULL;
\twidth = 0;
\theight = 0;
\tren = renderer;
}

Но если я сначала создам экземпляр, а потом в коде программы вызову вот это:
void N_Texture::setRenderer(SDL_Renderer* renderer)
{
\tren = renderer;
}

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

Ответы: >>526605, >>526613

06 Авг, 22:48 #98 #526605

>>526601
SDL_Renderer N_Texture::ren

и еще

N_Texture::N_Texture(SDL_Renderer renderer)

самофикс

06 Авг, 22:48 #99 #526606

>>526575
Что ему правильно советуют?

06 Авг, 22:57 #100 #526613

>>526601
помогите, почему в конструкторе присваивание не происходит, а в функции происходит?

У меня конечно есть подозрение, что это из-за того что я объявляю экземпляр ВНЕ блоков(т.е. не в main или любой функции). Но как тогда вызывать конструкторы глобальных переменных?

А то у меня будет этих N_Texture просто гора и для каждой вызывать setRenderer...это просто стена кода будет. А если нету иного пути, можно это сделать как-то красиво?

Ответы: >>526626

06 Авг, 23:23 #101 #526626

>>526613
Глобальные переменные определяются не всегда по порядку. Можешь создать вспомогательный класс, установить в нем renderer один раз, а потом просто вызывать метод N_Texture Factory::N_Texture() { return N_Texture(renderer); }, можешь запилить статичную переменную-член и установить её значение в main(), можешь запилить отдельный глобальный класс, а потом просто читать из него renderer каждый раз, когда понадобится.

06 Авг, 23:58 #102 #526646

>>526572
Я бы не сказал что это разные языки. И в проекте написанном на C++ можно ебаться в сраку с битами и указателями. Просто если не хочешь быть тупой макакой которая просто складывает программу из непонятных ему кусков, лучше изучить более низкоуровневый язык, для того чтобы знать что стоит за всей этой хуйней.

Ответы: >>526654

81 Кб, 775x415

07 Авг, 00:04 #103 #526652

почему не работает?

07 Авг, 00:09 #104 #526654

>>526646
>Я бы не сказал что это разные языки.
Там даже фигурные скобочки разные.

Ответы: >>526656

07 Авг, 00:15 #105 #526656

>>526654
Какие скобочки блять?

Ответы: >>526668

07 Авг, 00:33 #106 #526668

>>526656
На той же строке справа вверху, не видел штолле?

Ответы: >>526721

07 Авг, 03:58 #107 #526721

>>526668
Нихуя не разные. Ты можешь всю программу в одну строку написать, что в Си, что в C++. Это вопрос только стиля, куда ставить скобочку.

07 Авг, 08:19 #108 #526738

Не могу нагуглить сам. Накидайте код дискретного преобразования Фурье (ДПФ) для одномерного массива значений произвольной длины. ДПФ, подчёркиваю, т.е. мне не нужно гнаться за n X log(n). Хочу просто увидеть несколько строчек преобразования Фурье, скажем, для int_array размера array_size. Будем считать, что значения int_array отстоят друг от друга на единичку.

Что мне нужно на выходе? Массив амплитуд или мощностей (энергий) частот. Ради такой мелочи не хотелось бы возиться с подключением fftw.

Ответы: >>526742

07 Авг, 09:22 #109 #526742

>>526738
А почему такое не подходит, например?
http://www.nayuki.io/page/how-to-implement-the-discrete-fourier-transform

Ответы: >>526745

07 Авг, 10:06 #110 #526745

>>526742
>А почему такое не подходит, например?
Потому что я не умею гуглить? Вообще,

>We will use the Java programming language to illustrate.
Но я думаю, разберусь. Спасибо.

А по каким ключевым словам искал, что нашёл именно то, что нужно?

Ответы: >>526749

sage 07 Авг, 10:27 #111 #526749

>>526745
Блядь, там на Си есть. Сажи мне и говна.

07 Авг, 18:35 #112 #526903

Есть массив байтов, в нем лежат по порядку:
1. тип элементов в виде строки
2. количество элементов
3. сами элементы подряд

Нужно засунуть элементы в вектор. Как это лучше сделать?

Ответы: >>527000

07 Авг, 19:18 #113 #526921

Реквестирую книгу по алгоритмам и структурам данных с нуля и примерами на С++ уровня выучил за 21 день. Также реквестирую гайд по оптимизации не улучшения читаемости и красоты программ на С++ не изменяя алгоритм их работы.

Ответы: >>526939

07 Авг, 19:45 #114 #526939

>>526921
Algorithms in C++, Third Edition
Есть на рюском, но как обычно с переводом уровня гуглтранслейта.

Ответы: >>526941, >>526988

07 Авг, 19:49 #115 #526941

>>526939
Я похож на знатока английского? Есть то что хорошо на русский переведено?

Ответы: >>526944

07 Авг, 19:54 #116 #526944

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

Ответы: >>526945

07 Авг, 19:56 #117 #526945

>>526944
Спасибо. Тогда её и почитаю. Но на русском. Там 2 книги вроде. Они же на разные темы и читать обе? Или это я не третье издание нашёл?

Ответы: >>526947

07 Авг, 19:59 #118 #526947

>>526945
Там 5 частей разбили на две книги просто.

07 Авг, 20:26 #119 #526953

>>526372
Забыл упомянуть, что оператор надо сделать friend к TvoyaMamka.

Ответы: >>527015

35 Кб, 437x556

07 Авг, 21:37 #120 #526981

Поясните за программу на пике. Почему начало вызывается int foo::count = 0; а только потом конструкторы?

Ответы: >>526996, >>526997

07 Авг, 21:47 #121 #526988

>>526939
Погоди. Там про оптимизацию не написано.

07 Авг, 22:09 #122 #526996

>>526981
Ну он же «static» всё-таки...

Ответы: >>526998

07 Авг, 22:13 #123 #526997

>>526981
int foo::count находится в глобал скоупе. В глобал скоупе нельзя создавать экземпляры класса.

Ответы: >>526999, >>527018

07 Авг, 22:16 #124 #526998

>>526996
>>526996
Понял. А что было бы если бы foo f1,f2,f3; Было в глобальном пространстве имён? Имело ли значение до или после int foo::count = 0; они объявлены?

Ответы: >>526999, >>527018

07 Авг, 22:16 #125 #526999

>>526998
>>526997
Тебе тоже вопрос.

07 Авг, 22:17 #126 #527000

>>526903
Вектор union'ов, читаешь количество элементов, потом создаешь вектор с помощью указателей на первый и последний элемент.

Ответы: >>527001

07 Авг, 22:19 #127 #527001

>>527000
Не, в цикле заполняешь вектор

07 Авг, 23:32 #128 #527015

>>526953
Наоборот, это вредно, как правило. Потому что сериализовываться, по идее, должно только видимое извне состояние мамки. Внутри могут быть служебные данные, которые негоже использовать при выводе. Лучше сделать публичный метод у мамки, который вернет все,что необходимо напечатать.

Ответы: >>527187

07 Авг, 23:35 #129 #527018

>>526997
Схуяли нельзя? Можно, просто порядок вызова конструкторов статических членов не определен. Гарантируется, что это произойдет до первого обращения емнип. Это и сюда >>526998 ответ, поведение будет unspecified а может даже и undefined, хуй знает, вот это было бы здорово прояснить, потому что неизвестно, в каком порядке они инициализируются.

Ответы: >>527021

07 Авг, 23:42 #130 #527021

>>527018
Чтобы таких проблем не было надо пиать static int count=0 и не заморачиваться с отдельным объявлением и определением? Когда полезно писать так как на том пике?

Ответы: >>527023

07 Авг, 23:52 #131 #527023

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

08 Авг, 13:36 #132 #527129

>>525935
Нахуй пошел, говорю.

08 Авг, 16:26 #133 #527185

Котоны, решил тут подтянуть немного скилл и поиграться с dll-inj и написать какого-нибудь бота.
С инжектом и хелловорлд-длл всё получилось, но вот как из этой длл мне читать нужные значения и дёргать нужные ф-ии - я нихуя не понимаю.
Может кто-нибудь тут уже занимался подобным долбоебизмом?

08 Авг, 16:28 #134 #527187

>>527015
> сериализовываться, по идее, должно только видимое извне состояние мамки
Схуяли? Если сериализовать только видимое до десериализовать нельзя будет, объект не полный же.

Ответы: >>527212

08 Авг, 17:37 #135 #527212

>>527187
Речь не идет о том, чтобы сериализовать только публичные члены-данные. Просто за установку приватных данных должны отвечать методы самого класса, если это возможно.

[code lang="cpp"]
class TvoyaMamka
{
\tstd::size_t height_;
\tstd::size_t weight_;
\t
\tstd::short weight_in_tons_; //Чтобы избежать переполнения в ряде случаев
\t
\tvoid recalculateTons ()
\t{
\t\tweight_in_tons_ = weight / 1000;
\t}
\t
public:

\tstd::size_t getWeight () const
\t{
\t\treturn weight_;
\t}
\t
\tshort getWeightInTons () const
\t{
\t\treturn weight_in_tons_; //Используем кэшированное значение
\t}
\t
\tvoid setWeight (std::size_t input_weight)
\t{
\t\tweight_ = input_weight;
\t\trecalculateTons ();
\t}
\t
\t//...
};
[/code]

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

08 Авг, 19:24 #136 #527250

Всем сап
Вот у меня как у новичка вопрос:
Прочитав эти книг из оп поста, есть шанс реально стать программистом, и нормально зарабатывать?

Ответы: >>527289, >>527304

08 Авг, 20:56 #137 #527289

>>527250
Нет.

Ответы: >>527293

08 Авг, 20:58 #138 #527293

>>527289
Не траль, плз.

Ответы: >>527296

08 Авг, 21:01 #139 #527296

>>527293
Ну если будешь ебошить - будешь зарабатывать.

08 Авг, 21:09 #140 #527304

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

Ответы: >>527336

08 Авг, 22:29 #141 #527336

>>527304
Ну вот я новичок, тот самый кто поднял этот вопрос. Прочитал книгу "С++ за 21" купил Прата. Читается и вроде понимается. Прочту. А что дальше?

Ответы: >>527347

08 Авг, 22:44 #142 #527347

>>527336
> А что дальше?
Джосаттиса можно, как раз 2ое издание пару лет назад вышло.
У Майерса есть советы по С++ аж 3 книжки.

Ответы: >>527352

39 Кб, 240x320

09 Авг, 00:21 #143 #527350

>>525307
Подрастешь - узнаешь

540 Кб, 1920x1080

09 Авг, 00:22 #144 #527351

Плюсаны, киньте пожалуйста ссылку на док или книгу, где показано, как расположены объекты в памяти со всякими vtable'ами, выравниваниями, наследованием и проч. Чтобы с картинками и пояснениями.

Ответы: >>527353, >>527355, >>528969, >>529077

09 Авг, 00:24 #145 #527352

>>527347
Не три, а четыре. Последняя очень годная, которая на английском в оппосте. Ее кстати обещали выпустить на русском в ближайшем месяце уже.

1 Кб, 812x194

09 Авг, 00:26 #146 #527353

>>527351
В общей куче они расположены.
Куча, она же heap — двусвязный список.
Эндрю Таненбаум, «Операционные системы» и «Архитектура компьютера».

Ответы: >>527356

09 Авг, 00:28 #147 #527355

>>527351
http://goo.gl/MdZnUp

09 Авг, 00:29 #148 #527356

>>527353
Он не про кучу спрашивал, а про взаимное расположение частей объекта. На стеке то же самое будет.

09 Авг, 01:13 #149 #527363

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

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

Как вы думаете, откуда возникла такая поебота?

Ответы: >>527368

09 Авг, 01:43 #150 #527368

>>527363
Си тред есть, вот он: http://2ch.pm/pr/res/518562.html

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

09 Авг, 02:21 #151 #527373

>>525418
using namespace std делают только школьники

Ответы: >>527412

09 Авг, 05:25 #152 #527379

И я такой к вам с милашковопросами.

Расскажите, господа, как грамотно работать со сценой и айтемами в Qt. У меня есть поле из квадратиков, по квадратикам ходят разные ребята. Кто должен думать, как ребятам ходить? Вроде по абстракции сам айтем должен решать, как ему выбирать путь. С другой стороны, он не знает о других айтемах ничего, а сцена знает. Получается, она должна давать ему маршрут?

Еще вопрос с обработкой столкновений. Вот два айтема столкнулись. Как они должны взаимодействовать? Нужно просто проходить по collidingItems и дергать у каждого функцию "обработать столкновение", передавая туда все нужные параметры типа, не знаю, шкварит ли айтем при соприкосновении? Или этим тоже должна заниматься сцена, самостоятельно дергая айтемы за нужные веревочки?

В общем, интересно понять, как с этой системой работать нормально, не делая тонны костылей.

09 Авг, 05:33 #153 #527380

Вдогонку: чтобы осуществлять взаимодействие по шагам, мне нужно каждый такт игры дергать какую-то функцию у QGraphicsItem, которая будет запускать дальнейшее поведение объекта. Корректно ли использовать для этого advance(), про которую в справке написано, что она для анимации? Или лучше сделать свою функцию?

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

sage 09 Авг, 07:39 #154 #527386

ПАСАНЫ ПАЯСНИТИ ЕСЛЕ Я ПРОЧИТАЮ 100500 ГОВНОКНИЖЕК И НЕ БУДУ ПИСАТЬ КОД Я БУДУ ЗАРАБАТЫВАТЬ $9000 В ЧАС??77111!!

Ответы: >>527435, >>527439

09 Авг, 11:55 #155 #527407

Освобождать память при помощи delete надо только там, где ты выделял её динамически через new?

Ответы: >>527415

09 Авг, 12:27 #156 #527412

>>527373
только школьники пишут что с именами как в std
вот свои костыли то можно занеймспейсить

09 Авг, 12:39 #157 #527414

Какие есть годные способы создания гуевых программ на C++ под винды?

Ответы: >>527432

09 Авг, 12:43 #158 #527415

>>527407
Нет, можешь в одном месте выделить, передать указатель куда-то и там удалить. А ещё лучше не удалять память вручную, а использовать умные указатели и/или всякие принципы владения.

09 Авг, 13:46 #159 #527432

>>527414
кути

09 Авг, 13:51 #160 #527435

>>527386
нет))0)))0)00

09 Авг, 14:05 #161 #527439

>>527386
Играй в доту. Шанс получать такие деньги там выше, чем программировать.

09 Авг, 17:30 #162 #527512

Накидайте сайтов с задачами на крестах.

Ответы: >>527539

18 Кб, 200x278

90 Кб, 300x426

09 Авг, 18:21 #163 #527539

>>527512
Правда, думаю, некоторые моменты могут быть уже устаревшими.

10 Авг, 09:55 #164 #527748

Реквестирую Шилдта "Шаг за шагом", в гугле ниосилил найти.

Ответы: >>527843

10 Авг, 12:09 #165 #527770

[code lang="cpp"]
//CLASS.H
namespace heh {
Class example {
//stuff
enum class dir_t {s_e, s_w, n_e, n_w};
void genStart();
//stuff
};
}

//CLASS.CPP
void example::genStart()
{
using s_e = dir_t::s_e; //ошибка
using s_e = typename dir_t::s_e //ошибка
}
[/code]

Хули не пашет?

Ответы: >>527771

10 Авг, 12:09 #166 #527771

>>527770
а, ну еще и using namespace heh; в CLASS.CPP

10 Авг, 15:19 #167 #527843

>>527748
У меня есть только бумажная, но сканера нет. Если нужно что-то конкретное из нее, то могу сфоткать, в принципе.

10 Авг, 15:48 #168 #527855

Подскажите как искать директивы для функций?
Допустим я хочу найти какая директива подключает функцию square.

Ответы: >>527860

10 Авг, 16:04 #169 #527860

>>527855
В шапке треда есть ссылка на cppreference. Там ищешь по имени функции, и сверху будет название хедера, в котором она объявлена.

Ответы: >>527861

10 Авг, 16:09 #170 #527861

>>527860
Странно, функцию square не находит.

Ответы: >>527876, >>527877

10 Авг, 16:26 #171 #527876

>>527861
Значит нет такой функции в стандартных.

10 Авг, 16:29 #172 #527877

>>527861
Если ты это у Страуструпа нашёл, то эту функцию тебе самому надо писать вообще-то, такой нет в стандартной библиотеке.

10 Авг, 16:40 #173 #527890

>>525225 (OP)
У них есть не только виртуальный деструктор но ещё и чисто виртуальный деструктор, они там размножаются делением, в общем.

Недавно анон задавал вопрос в 87-м ньюфаг-треде:
>10 минут в крестах - почему деструктор авторы одного SDK всегда выносят из хедера в сорсы, если он обычно совершенно пуст? То есть просто две фигурные скобки. Это просто для порядка или какая-то особенность крестов?

Короче, я гуглил, гуглил... и нашёл следующее:
1) Виртуальный деструктор, объяснение на русском: http://valera.asf.ru/cpp/scpp/cppd_constructor.htm (в конце главы: «Чтобы не допускать таких ситуаций необходимо использовать виртуальный деструктор...»)
2) Чисто виртуальный деструктор: http://alenacpp.blogspot.ru/2005/03/blog-post.html и http://rsdn.ru/forum/cpp/2532634.1 и http://stackoverflow.com/questions/1219607/why-do-we-need-a-pure-virtual-destructor-in-c — похоже, это самый подробный ответ на вопрос.

Чиста конкретный виртуальный деструктор заявлен в стандарте C++65536 и скоро будет уже!!!!

Ответы: >>527943, >>527946

10 Авг, 17:12 #174 #527897

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

Ответы: >>527927

10 Авг, 18:16 #175 #527927

>>527897
https://msdn.microsoft.com/ru-ru/library/windows/desktop/dd162869(v=vs.85).aspx

10 Авг, 19:06 #176 #527943

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

10 Авг, 19:15 #177 #527946

>>527890
Нееет, тут виртуальный деструктор может быть не замешан вообще. Суть такова: когда ты делаешь класс с pimpl-членами то есть в классе вместо членов указатели на них, это позволяет работать в хедере с неполными классами и уменьшить время компиляции, хэдеру не нужны полные типы для этих указателей и объявлений функций. А конструктору и деструктору - нужны, потому что они должны уметь создавать и удалять их например, когда через unique_ptr хранится это все, и конструктор инициализирует через make_unique. Конструктор обычно с телом и, понятное дело, выносится в .cpp. Но деструктор тоже выносится, несмотря на пустое тело, потому что он должен неявно вызывать deleter у unique_ptr'ов, а этот deleter, естественно, требует, чтобы объект, на который указывает unique_ptr, был полного типа. Поэтому пустой деструктор тоже выносится в .cpp, только потому что в .cpp подключаются все нужные хэдеры и тип становится полным, а не предварительно объявленным. Такие дела. Перепости это туда, где спрашивали, интересный вопрос же.

736 Кб, 2000x1086

11 Авг, 06:37 #178 #528162

Скажите, а вы на С++ только игры программируете ?

Ответы: >>528163, >>528576

sage 11 Авг, 06:47 #179 #528163

>>528162
Сайты пишем, сынок.

Ответы: >>528282

11 Авг, 09:02 #180 #528173

Так что, даже когда класс-интерфейс пишешь тоже надо к нему .срр приделывать и туда деструктор выносить?

Ответы: >>528410

6 Кб, 455x369

11 Авг, 14:25 #181 #528281

Поясните за интересную вещь, почему при запуске этйо программки проигрывается какой-то звук?
Конкретно я заметил что на 137 звука нет, на 138 есть. Такой как ПИК!

Ответы: >>528304

11 Авг, 14:25 #182 #528282

>>528163
Но ведь сайты пишут на хтмл + цсс + пхп?

Ответы: >>528420

11 Авг, 14:54 #183 #528304

>>528281
Очевидно, что символ с кодом 137 используется для проигрывания звука (предупреждения) в терминале.

Алсо, ты занимаешься хуйней. Сразу выкинь using namespace, "\n" замени на std::endl, а еще установи ОПЕРАЦИОННУЮ СИСТЕМУ, чтобы не было setlocale и _getch.

мимопроходил

Ответы: >>528306, >>528418, >>530475

11 Авг, 14:56 #184 #528306

>>528304
>Сразу выкинь using namespace
Без него не работает.
>"\n" замени на std::endl
Поясни где про это узнать?
>а еще установи ОПЕРАЦИОННУЮ СИСТЕМУ, чтобы не было setlocale и _getch.
На какую? У меня 7. Есть еще ноут с линуксом, но как я понял - лучшая де для с++ это вижуал, а его на линуксе нет?

Поясни пожалуйста, я, просто, недавно начал читать учебник...

Ответы: >>528417

11 Авг, 16:41 #185 #528410

>>528173
Б-же упаси. Я же говорю, это специфические случаи. Когда у тебя настоящий интерфейс без хуев и нестатических членов, то, как правило, кроме деструктора есть еще чисто виртуальные методы иначе пустой интерфейс нахуй не нужен, лол. И тогда тебе не надо делать деструктор чисто виртуальным, достаточно просто сделать виртуальным, с пустым телом и без выноса в .cpp.

11 Авг, 16:45 #186 #528417

>>528306
>не работает
Либо пишешь using std::cout и т.п. для всего, что используешь из стандартной библиотеки, либо ничего не пишешь, а в местах использования пишешь std::cout вместо cout. Это классика, блядь.
>где узнать
В шапке есть ссылка на cppreference, там можно в поиске вбить любую сущность и посмотреть.
>на какую
Если у тебя спермерка + VS, то никаких setlocale быть не должно, окстись. Все итак работает если ты не ломал настройки, хуиная голова. getch тоже не нужен, IDE автоматически добавляет "нажмите любую клавишу", только запускать надо из самой IDE, а не кликом по бинарнику, блядь.

Ответы: >>528441

11 Авг, 16:48 #187 #528418

>>528304
Не надо заменять '\n' на std::endl просто так. endl сбрасывает кеш вывода. В цикле может здорово просадить производительность.

Ответы: >>528433

11 Авг, 16:49 #188 #528420

>>528282
Еще js забыл. Вместо него мы тоже можем. http://www.cocos2d-x.org/wiki/How_to_bind_C++_to_Javascript

11 Авг, 16:59 #189 #528433

>>528418
Добра тебе, я не знал.

11 Авг, 17:18 #190 #528441

>>528417
>Либо пишешь using std::cout и т.п. для всего, что используешь из стандартной библиотеки, либо ничего не пишешь, а в местах использования пишешь std::cout вместо cout. Это классика, блядь.
Где про это почитать? Я учусь по книге Страуструпа, там нет такого, сейчас удалил namespace std; Заметил что теперь пишет на vector без std:: что он не идентифицирован.
Поясните смысл этого, в книге не написано.
>Если у тебя спермерка + VS, то никаких setlocale быть не должно, окстись.
У меня русские буквы в терминале без локала отображались как крякозябры, сетлокал исправил всё.
>getch тоже не нужен, IDE автоматически добавляет "нажмите любую клавишу", только запускать надо из самой IDE, а не кликом по бинарнику, блядь.
У меня такой код без getch запускается и сразу закрывается:
int main()
{
std::vector<int> v;
v.push_back(2.7);
v.push_back(5.6);
v.push_back(7.9);
std::cout << v[1];
return 0;
}

Ответы: >>528443, >>528458, >>530481

24 Кб, 835x563

25 Кб, 848x583

11 Авг, 17:22 #191 #528443

>>528441
Вот сетлокал.

11 Авг, 17:35 #192 #528458

>>528441
>где почитать
В книге это есть в разделе про пространства имен.
>кракозябры
Когда кракозябры, нужно исправлять консоль, а не программу. Иначе гроб гроб кладбище непереносимость.
>закрывается
Ты что-то сломал. Там сверху в панели инструментов есть кнопка переключения режимов завершения, найди ее и нажми. Или Ctrl-Alt-Пробел.

Ответы: >>528478

11 Авг, 17:49 #193 #528478

>>528458
>В книге это есть в разделе про пространства имен.
Пока не дошёл до туда, а в чём смысл выносить using namespace std; или сразу писать с ним? 1 вариант же проще.
>Когда кракозябры, нужно исправлять консоль, а не программу. Иначе гроб гроб кладбище непереносимость.
А что исправлять? Просто, я установил чистый ВС, в общем всё.
Хотя, я не уверен. Но в книге, в начале говорили создавать win32 приложение, а я создаю empty project. Может из-за этого?
>Ты что-то сломал. Там сверху в панели инструментов есть кнопка переключения режимов завершения, найди ее и нажми.
>Просто, я установил чистый ВС, в общем всё.

>Или Ctrl-Alt-Пробел.
Ничего не даёт.

Ответы: >>528497

11 Авг, 18:14 #194 #528497

>>528478
>в чем смысл
Не захламляется глобальное пространство имен. Когда получишь первый конфликт имен из-за подключения двух библиотек, поймешь.
>что исправлять
chcp 1251 в консольке перед запуском, например. Это все гуглится легко, попробуй.
>чистый вс
У меня пару раз была такая хуйня, из-за неправильных настроек проекта. Создай новый проект в точности как описано в оппосте и скопируй код туда. Должно помочь.

Ответы: >>528503

25 Кб, 694x368

21 Кб, 968x439

11 Авг, 18:28 #195 #528503

>>528497
>chcp 1251 в консольке перед запуском, например. Это все гуглится легко, попробуй.
1 пик - что выдёт.
>У меня пару раз была такая хуйня, из-за неправильных настроек проекта. Создай новый проект в точности как описано в оппосте и скопируй код туда. Должно помочь.
Сделал как в оппике, всё равно сразу пропадает.
Но у меня немного не так как там, я создаю файл *.срр как на 2 пике.
Всё правильно?

Ответы: >>528521

11 Авг, 19:03 #196 #528521

>>528503
project ->Properties ->Configuration Properties -> Linker -> System, select Console (/SUBSYSTEM:CONSOLE) in “SubSystem” option

Ответы: >>528527, >>528581

59 Кб, 849x603

11 Авг, 19:12 #197 #528527

>>528521
Сделал, ничего не изменилось.
Там была пустая строка до этого.
Кстати, я юзаю vs pre-release 2015 candidate, может баги?
Хотя, я как-то делал тоже самое на комьюнити 2012 года, было всё тоже самое.

Ответы: >>528537

11 Авг, 19:32 #198 #528537

>>528527
Такого быть не может, что не изменилось. Я только что проверил. Попробуй еще раз, и сверху выбери не Active (debug), а all configurations. Потом перекомпилируй и запускай по ctrl-f5.

Ответы: >>528540

26 Кб, 743x542

11 Авг, 19:35 #199 #528540

>>528537
Да, теперь работает без getch, но русский не пашет.

Ответы: >>528542

11 Авг, 19:37 #200 #528542

>>528540
А ты попробуй сохранить сам .cpp файл в 866 кодировке.

Ответы: >>528545

11 Кб, 618x283

11 Авг, 19:40 #201 #528545

>>528542
Как внутри вижуала поменять кодировку?
Я саблаймом поменял на 866, вот что получилось.

Ответы: >>528547

11 Авг, 19:42 #202 #528547

>>528545
Нет, это не то. Просто открываешь файл блокнотом и сохраняешь туда же, выбрав кодировку.

Ответы: >>528549

50 Кб, 1145x348

92 Кб, 1035x736

11 Авг, 19:46 #203 #528549

>>528547
У меня какой-то инвалидный блокнот - 1 пик.
В саблайме я так сделал - 2 пик.

Ответы: >>528552

11 Авг, 19:56 #204 #528552

>>528549
Ну тогда используй наиболее универсальное решение. Внутри все текстовые строки делаешь юникодовскими, двухбайтовыми. wchar вместо char, wstring вместо string. Работа с ними абсолютно такая же как с обычными. И для потоков ввода-вывода таки делаешь setlocale с пустыми кавычками во втором параметре. Тогда под любой системой будет установлена ее дефолтная локаль и не будет проблем, если у китайского юзера не окажется русского языка, но при этом твои сообщения останутся корректными, потому что юникод.

Ответы: >>528559

31 Кб, 677x932

11 Авг, 20:06 #205 #528559

>>528552
Ставить так: setlocale(LC_ALL, "");
Такой вопрос, а если у меня вывод идёт не в переменной, а в ковычках?

Фигня какая-то с wstring, пишет такую ошибку, что не может перевести в char*.
Если удалить w, то нормально переводит, но с крякозябрами.

Ответы: >>528561

11 Авг, 20:11 #206 #528561

>>528559
Надо писать L"тест", чтобы был широкий литерал сразу.

Ответы: >>528562

11 Кб, 548x348

11 Авг, 20:13 #207 #528562

>>528561
Вообще, не понял зачем это, ну и ошибки:

Ответы: >>528564

11 Авг, 20:16 #208 #528564

>>528562
У всех мест с кавычками так сделать надо, ну очевидно же, анон! Когда ты пишешь "твоя мамка", компилятор воспринимает это как строковый литерал const char []. Отсюда ошибки. Пиши L"...", и все будет ништяк.

Ответы: >>528566

13 Кб, 691x520

26 Кб, 558x494

11 Авг, 20:25 #209 #528566

>>528564
Т.е. L ставить даже в определении?
Например, std::string test = L"тест"; ? Даже в случае когда я на русском не пишу?

У меня с wstring одни ошибки, ставил даже L перед ним, всё равно.

Ответы: >>528571

11 Авг, 20:36 #210 #528571

>>528566
>ошибки
Ты опять не перед всеми поставил L, лол. Еще раз: перед ВСЕМИ строками в кавычках поставь L. L"\t", L"Median temperature: ", всеми, блядь. Хватит добавлять по одному L каждый раз и жаловаться на ошибки.
>даже в определении
Везде. Видишь открывающую кавычку - ставишь L.
>одни ошибки
Это из-за смешивания char и wchar. Если кратко, то в обычной вычислительной консольной программе не должно быть русского языка вообще. char это обычно байт, следовательно, поддержка русского языка для char строк оборачивается еблей с кодировками и ужасной хрупкостью с невозможностью ничего запустить на другой пекарне. Поэтому я советую в хэллоуворлдах, которые не предназначены специально для изучения локалей, использовать латиницу и не париться.

В серьезных программах, где требуется именно ввод-вывод на пользовательском языке, выделяют обычно отдельный модуль для этого. В нем используются только wstring, wchar и L"...", без смешивания с обычными строками. Это дает требуемую переносимость и надежность, но довольно громоздко, поэтому по возможности ничего просто не локализуют, опять же.

Ответы: >>528575

185 Кб, 1000x755

11 Авг, 20:44 #211 #528573

ИТТ.

Ответы: >>528581

17 Кб, 711x883

11 Авг, 20:46 #212 #528575

>>528571
Я уже не знаю.
Вот, простейший код, везде L" поставил, всё равно выдаёт ошибку.

Ответы: >>528577

11 Авг, 20:47 #213 #528576

>>528162
Лол. Тоже зашёл чтобы спросить. Так что вы на нём делаете?

Ответы: >>528579

11 Авг, 20:50 #214 #528577

>>528575
wcout вместо cout же. Я в тебя верю, анон, еще немного и ты скомпилируешь его. Как же я проигрываю.

Ответы: >>528581

11 Авг, 20:53 #215 #528579

>>528576
Вот такое, например. Твой змей одноглазый может так?
http://nz2wy3dsn52xizi.mv2s433sm4.cmle.ru/mirrors/analogliterals/analogliterals.xhtml

Ответы: >>528583, >>528586

26 Кб, 891x602

11 Авг, 20:59 #216 #528581

>>528577
Хм... Вроде, получилось. Спасибо.
Но я не тролль, как тут написал кто-то:>>528573
Просто, я недавно начал учить язык, сейчас изучаю векторы по Страуструпу.

Ты тоже программируешь на С++, так?

Кстати, подскажи еще 2 вопроса:
1. Как сделать так, чтобы >>528521 это ставилось во все проекты автоматически? Я сейчас создал новый, там была эта строка пустая.
2. Можно ли как-то в ВС переключаться между проектами? А то я пока делаю так: закрываю текущий, открываю новый.

Ответы: >>528584

11 Авг, 21:01 #217 #528583

>>528579
>nz2wy3dsn52xizi.mv2s433sm4.cmle.ru
Что за странное название у сайта.

Ответы: >>528585

11 Авг, 21:02 #218 #528584

>>528581
Да не за что. Обращайся, тред для того и висит.
>автоматически
Оно и должно автоматически, по идее. Возможно, это из-за того, что не релизная версия. На релизных 2010, 2013, 2015 ставится всегда.
>переключаться
Неа, вроде никак. Но можно открыть вторую копию студии, будет два окна с разными проектами.

11 Авг, 21:03 #219 #528585

>>528583
Это анонимайзер, оно залочено в рассеюшке. Власти скрывают существование пользовательских литералов!!!111

11 Авг, 21:03 #220 #528586

>>528579
Что это?

Ответы: >>528588

11 Авг, 21:05 #221 #528588

>>528586
Многомерные литералы, можно делать программу с картинками, которые сами компилируются в код.

Ответы: >>528592

11 Авг, 21:09 #222 #528592

>>528588
Это как? https://ru.wikipedia.org/wiki/Piet Поясни по русски.

Ответы: >>528594

11 Авг, 21:13 #223 #528594

>>528592
Ты вместо Rectangle <int> {5, 4}; пишешь
[code lang="cpp"]
o-----------o
! !
! !
! !
! !
o-----------o
[/code]

Ответы: >>528595, >>528605, >>528613

11 Авг, 21:14 #224 #528595

>>528594
Разметка проебалась, ну и похуй.

11 Авг, 21:48 #225 #528605

>>528594
Есть описание на русском для аутистов?

Ответы: >>528654

11 Авг, 22:03 #226 #528613

>>528594
Ебать, почти visual autolayout, может даже круче. Хотет.

Ответы: >>528654

11 Авг, 22:40 #227 #528640

>>526572
Учи сразу C++, а то будешь писать на C++ в стиле C.

11 Авг, 23:28 #228 #528654

>>528605
Нет, но там все просто же. Гуглом переведи, делов-то.
>>528613
Там есть ссылка на файлы, подключай и вперед.

Огромные талмуды 12 Авг, 02:58 #229 #528714

Аноны, у меня тут лежит Прата размером с войну и мир, и почти такая же здоровая по Qt4 Шлее. Инглиша не знаю, поэтому приходится ебаться с таким пиздецом. Сил нет, лень, сука. Хочется взять и что-то как-то начать осваивать быстро, интенсивно, без повторения материала и тысяч страниц. Что-то вроде learnxinytimes только более подробно и по всему языку от и до. Чуть-чуть программировать умею, поэтому утомляет в десятый раз читать объяснения про то, что такое if-else, а среди этих объяснений умудрились затесаться важные вещи. Как быть? Может Специалиста по крестам скачать? Повторюсь, инглиша не знаю.

Ответы: >>528715, >>528915

12 Авг, 03:05 #230 #528715

>>528714
http://cmcmsu.no-ip.info/2course/
Читаешь все за 4 семестр, что относится к C++. Делаешь практические задания оттуда же. В качестве справки используешь талмуд и книги из оппоста. Когда сделаешь - считай, что начало пройдено, и можно уже читать Мейерса и остальное в оппосте.

Ответы: >>528716

12 Авг, 03:23 #231 #528716

>>528715
Нихуя они ебашат.
Ты не понял вопрос, по-моему. Я спросил, как поменьше читать, а не как побольше читать.

Ответы: >>528741

12 Авг, 06:32 #232 #528741

>>528716
Там получается около десяти презентаций, они совсем маленькие. И вот эта книжка, чуть больше ста страниц: http://cmcmsu.no-ip.info/download/cpp.base.oop.pdf Если ты это не можешь осилить, то я даже не знаю.

Ответы: >>528778

12 Авг, 06:51 #233 #528744

Здарова, чуваки, добрался я до главы с передачей аргумента функции ссылкой. (читаю Страуструпа для зеленых)
Там он расписывает, мол так и так, когда нужно использовать, когда необязательно.
И появился вопрос, а есть ли разница в скорости передачи аргумента в функцию между:
- Ссылкой и обычным копированием значения в функцию (при условии, что передается обычное число, а не какой-то массив или вектор etc.)
- Ссылкой и константной ссылкой.

Надеюсь, что не слишком тупые вопросы написал.

Ответы: >>528752

12 Авг, 07:21 #234 #528752

>>528744
1. Ссылка преобразуется в указатель, указатель по размеру обычно как int. Если что-то меньше int, по значению быстрее все равно не факт что будет, выравнивание, все дела.
2. Одинаково, константность ни во что не компилируется.

Ответы: >>528762

12 Авг, 08:48 #235 #528762

>>528752
> 2. Одинаково, константность ни во что не компилируется.

Не всегда. Компилятор может положить константу в read-only memory для ускорения доступа.
Вообще, хороший тон - использовать константные ссылки как можно чаще. Неконстантная ссылка = выходной параметр.

Ответы: >>528784

12 Авг, 10:05 #236 #528778

>>528741
Всё, извини, не разобрался. Про Qt что-нибудь скажешь? Может что-то подобное есть?
Ты как это на такой сайт набрел? Много в рашке такого, лол? Ну, выложенных материалов с годных вузовских семинаров, лекций...? Кроме очевидного интуита?

Ответы: >>528786

12 Авг, 10:53 #237 #528784

>>528762
Ты путаешь константы и константные ссылки. Константность ссылки не значит ничего абсолютно в ассемблерном коде, объект уже создан в другом месте, константный или нет - все равно.

Ответы: >>528917

12 Авг, 10:56 #238 #528786

>>528778
Я набрел на этот сайт главным образом потому что я учусь на там и в свое сдавал экзамен по этому курсу точнее, получил автомат, но энивей.
За куте не скажу, мне он не очень нравится, и я не особо интересовался. У них вроде неплохая документация, но она на ангельском, конечно же.

Ответы: >>528790

12 Авг, 11:04 #239 #528790

>>528786
А чем qt плох?
Лол, не лень было поступать на такой дроч?

Ответы: >>528792

12 Авг, 11:06 #240 #528792

>>528790
Слишком громоздкий, можно то же самое делать без ебли на специализированных библиотеках.
Тяжело в дрочении, легко в бою.

Ответы: >>528807

12 Авг, 11:26 #241 #528807

>>528792
Это как? Разве он не наоборот объединяет тонну говн - звук, регэкспы, многопоточность, гуй в одно?

Ответы: >>528815

12 Авг, 11:35 #242 #528815

>>528807
Именно из-за этого там обязательно окажется что-то, что тебе не понравится, как реализовано. Гораздо приятнее искать библиотеки по мере необходимости, не понравилась - заменил на аналогичную, и устанавливать кучу говна не надо.

Ответы: >>528832

sage 12 Авг, 12:02 #243 #528832

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

12 Авг, 14:42 #244 #528915

>>528714
Если еще дадите каких-нибудь советов, кроме лекций и книжки выше, буду благодарен. Ну, интенсивы типа. Скажите таки что-нибудь насчет бауманского Специалиста. Говно?

Ответы: >>529094

12 Авг, 14:49 #245 #528917

>>528784
Да, ты прав, перепутал

12 Авг, 16:04 #246 #528956

>>526481
У меня тоже "[code lang="cpp"]" видно
Просто они каким-то сторонним скриптом пользуются, когда это пишут. Я так понял что Абу не будет допиливать. А тот скрипт обновляется каким-то антоном, подгружает иконки с его сайта, и прочими странными вещами занимается.

Ответы: >>529098

12 Авг, 16:06 #247 #528958

Антуаны, а учебник Дейтелов уже не котируется?

12 Авг, 16:12 #248 #528969

>>527351
В стандарте это не описано. Каждый компилятор будет их располагать по-своему. А для отладочной версии он вообще все подряд будет обрамлять опкодами прерывания, чтоб при случае выхода за пределы сразу в отладчик IDE вылетать.

как учиться 12 Авг, 16:47 #249 #528990

Посоветуйте способ фиксирования знаний? Исходники с комментариями писать, тетрадку вести, файл текстовый или вордовский? Как конспектировать информацию, короче? Чтоб вот если забыл все после перерыва, прочитать и все вспомнить? Учу кресты, разумеется.

Ответы: >>529099

12 Авг, 17:00 #250 #529004

Скажи, программач, не натыкался ли ты на реализацию A(звездочка) + Jump Pont Search на плюсах?

12 Авг, 18:49 #251 #529068

Реквестиую книгу по оптимизации кода без изменения алгоритма работы и не важно на его красоту и читаемость. Мейерс не подходит. Т.к. ам ещё советы про читаемость и переносимость.

Ответы: >>529108

12 Авг, 19:02 #252 #529077

>>527351
Ищи статью в RSDN magazine про vtable и прочие страшные штуки.
За много лет общая идея не изменилась, разве что компиляторы стали лучше оптимизировать все это и избавляться от лишних промежуточных сущностей.

12 Авг, 19:20 #253 #529094

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

12 Авг, 19:22 #254 #529098

>>528956
Есть же ссылка в шапке на него, ставишь Greasemonkey/Tampermonkey, качаешь скрипт и вуаля.

12 Авг, 19:25 #255 #529099

>>528990
У меня обычный тхтшник, в который пишу хитрые детали, good practices, вопросы, на которые сам пытаюсь ответить, ну ты понел. И периодически перечитываю его. Но самое главное это писать код, только во время написания живого кода такой тхтшник быстро наполняется. Переписывать из книжки - это совсем не то.

Ответы: >>529113

12 Авг, 19:32 #256 #529108

>>529068
Про макрооптимизации алгоритмов асимптотика и вот это все читай Кормена "Алгоритмы", отличная классическая книга. Она не про кресты, а вообще.
Про микрооптимизации сэкономить на сложении и всякая хуйня читай "Effective STL" Мейерса, ибо детали на крестах обычно реализуются STL, а у Мейерса там больше половины про оптимизации. Еще наверни Джоссатиса про STL, там тоже много про ее оптимальное использование, но уровень выше, чем Мейерс.
Наконец, есть неплохие книжки - "Жемчужины программирования" Бентли и "Алгоритмические трюки для программистов" Уоррена мл. Там тоже не только про кресты, но описаны всякие мелкие оптимизации.

Ответы: >>529115, >>529121

12 Авг, 19:44 #257 #529113

>>529099
Есть проблема: мне по роду деятельности приходится вебмакакить и там все паттерны проектирования, гуд практисес и подобное нахуй не нужны, там это только время отнимает и непонимание вызывает, ну и вообще там плюсами даже не пахнет. Плюсы для меня - хобби, хочу когда-нибудь игрушки писать. Соответственно, я могу забросить написание кода резко и хоть на полгода из-за какого-нибудь аврала, потом захотеть вернуться и быстро "вспомнить всё".

Ответы: >>529119

12 Авг, 19:46 #258 #529115

>>529108
Джоссатиса про STL это второе издание?

Ответы: >>529119

12 Авг, 19:59 #259 #529119

>>529115
Ага.
>>529113
А ты пили мелкие проекты, на 1-2 вечера.

Ответы: >>529123

12 Авг, 20:01 #260 #529121

>>529108
Спасибо.

12 Авг, 20:02 #261 #529123

>>529119
Лол, это какие, к примеру?

Ответы: >>529240

12 Авг, 22:59 #262 #529206

>>525307
Забей на сраные коллбэки, они мало того что не интуитивны, так и еще нетипобезопасны. Посмотри в сторону Qt с сигналами-слотами, они интуитивно понятны и типобезопасны.

Ответы: >>529212, >>529241

12 Авг, 23:09 #263 #529209

Поясните нюфане за лямбды. В чем профит?

Ответы: >>529243

12 Авг, 23:21 #264 #529212

>>529206
> нетипобезопасны.
чобля

13 Авг, 01:01 #265 #529240

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

13 Авг, 01:04 #266 #529241

>>529206
Ты заебал, как ты, блядь, прикрутишь куте/буст/tvoa_mamka_anal_interface_lib_3000, если речь идет про работу с сишным легаси-кодом? Он не понимает ничего, кроме коллбэков, поэтому классику надо знать и точка. Куте он захотел прикрутить, вообще пушка.

13 Авг, 01:13 #267 #529243

>>529209
В том, что
[code lang="cpp"]
for (auto it = std::begin (mamkas); it != std::end (mamkas); ++it)
{
if (it->isGoodMamka ())
good_mamkas.push_back (*it);
}

//превращается в

std::copy_if (std::begin (mamkas), std::end (mamkas), std::back_inserter (good_mamkas), [] (const TvoyaMamka & momma) { return momma.isGoodMamka ();});

13 Авг, 01:24 #268 #529247

Призываю в тред знатоков WINAPI в целом и COM в частности.
Впервые столкнулся с COM, VARIANT, BSTR и тд. Выручай анон.

Есть примерно такой код (не совсем такой конечно, оставил суть вопроса).

[code]
void f1(IDispatch object, VARIANT value) {
IDispatchEx dispEx;

object->QueryInterface(IID_IDispatchEx, (void)&dispEx);
dispEx->GetDispID(L"name", fdexNameEnsure, &dispId);

DISPID namedArgs[] = { DISPID_PROPERTYPUT };
DISPPARAMS params = { value, namedArgs, 1, 1 };
dispEx->InvokeEx(dispId, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUT, &params, NULL, NULL, NULL); // Что тут происходит? Как оно копируется?
}

void f2(IDispatch object) {
// Создаем VARIANT с BSTR
_bstr_t nameBstr("helloworld");
VARIANT value;
VariantInit(&value);
value.vt = VT_BSTR;
value.bstrVal = nameBstr.GetBSTR();

f1(object, &value); // добавляем наш VARIANT в object

// вот тут _bstr_t освободит память, выделенную для BSTR, насколько я понимаю
}

// Итак, у нас есть IDispatch *object;
// Вызываем функцию f2()
f2(object);

// ...

// А вот тут мы что-то делаем с object, в частности используем то, что добавили с DISPATCH_PROPERTYPUT
[/code]

Внимание, вопрос. Что происходит с VARIANT value в строчке, которую я отметил соответствующим вопросом? Если оно куда-то копируется, то копируется ли BSTR вместе с ним? В общем, не будет ли проблем в использовании объекта object после того, как функция f2() завершится? Не будет ли у него невалидный BSTR, который уже свободился?

Ответы: >>529249

13 Авг, 01:29 #269 #529249

>>529247
[code]DISPID dispId;[/code] в начале f1() случайно удалил

13 Авг, 05:10 #270 #529280

>>525225 (OP)
Парни у меня возник вопрос. Может ли изменить значение приватной переменной класса функция которая передана по указателю методу класса как аргумент?

Ответы: >>529283, >>529285, >>529492

13 Авг, 05:16 #271 #529283

>>529280
Сука. Как же проиграл с твоего вопроса. Ещё пол часа вникать буду.

Ответы: >>529286

13 Авг, 05:18 #272 #529285

>>529280
Хотя вроде вник. Она же не в области видимости класса. Нет скорее всего. Сейчас проверю.

13 Авг, 05:29 #273 #529286

>>529283
ну я вот читаю Прату. И там было задание нужно сделать что бы в классе можно было изменять переменную с помощью функции(ну либо уменьшать либо вычитать).
У меня возникло в голове несколько решений.
1) Хуярим две функции одна увеличивает другая уменьшает значение.
2) Создаем перечисление в Enume если функции значение перечисления где она внутри функции с помощью if'ов определяет что надо сделать.
3) Создаем две функции одна увеличивает, а другая уменьшает. Внутри класса один метод который принимает ссылку на одну из этих функции, и передает этой функции указатель на закрытую переменную.
Само собой вроде как второй метод оптимальный во всяком случае с моей нубо колакольник, но третий вызвал любопытство пытаюсь реализовать и не получается. Хотя возможно потому что я криворукий.

Ответы: >>529287, >>529290, >>529299

13 Авг, 05:31 #274 #529287

>>529286
>фикс
(ну либо уменьшать либо увеличивать).

13 Авг, 05:38 #275 #529290

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

30 Кб, 542x394

13 Авг, 06:33 #276 #529299

>>529286
Тупонул. Если метод имеет доступ к значению приватного члена класса, то он может дать его как аргумент другой функции.
Почему в 13ой строке нельзя написать cout<<g(p)<<'\n'<<p<<'\n';?
Почему в 20ой строке нельзя написать A a.h(k);?

Ответы: >>529324, >>529435, >>529498

С++ без красноглазия 13 Авг, 09:59 #277 #529324

Программач, успокой меня. Я захотел поучиться С++, потому что мне нравится лаконичный синтаксис, производительность. я хотел бы пилить игрушки, а в современных движках используются кресты, хотел бы писать производительные корпоративные приложения или может быть даже какие-нибудь числодробильни на тему нейронных сетей. При этом при всем использовать современное ООП-api, красивые библиотеки вроде Qt и наслаждаться жизнью. Но меня тошнит от всех этих указателей на указатель, нечитаемого кода, мамотноподобного тайп-каста и подобного пиздеца. Хочу просто писать красивые, производительные программы без байтоебли, указателеебли, типоебли и п подобных развлечений. Возможен ли С++ без всего этого или мне нужно что-то другое?
>>529299
И без подобной вот блевотины "h(int(*g)(int&))" в реальных задачах?

Ответы: >>529327, >>529328, >>529331, >>529419, >>529548, >>530032

13 Авг, 10:03 #278 #529327

>>529324
Нет конечно, иди в шарп.

Ответы: >>529341

13 Авг, 10:03 #279 #529328

>>529324
Тебе наверно шарп и юнити надо.

Ответы: >>529341

13 Авг, 10:16 #280 #529331

>>529324
просто ты неосилятор. В этом нет ничего плохого, просто иди присаживайся у параши к тем ребятам с в футболочках Java и C#.

Ответы: >>529334, >>529341

sage 13 Авг, 10:22 #281 #529334

>>529331
>к тем ребятам с в футболочках

13 Авг, 10:41 #282 #529341

>>529327
Не нрав синтаксис, привязка к майкрософту и вообще подход.
>>529328
Думал об этом, но ну его нахер, не доставляет ни то, ни другое
>>529331
Ну да, в отсутствии контроля длины массива и введении регулярных выражений спустя 30 лет развития языка - это тоже ничего плохого, но это колхоз, а я бы не хотел быть колхозником с красными глазами, я хотел бы взять достоинства языка и забыть про недостатки.

Чего вы злые какие?

Ответы: >>529342, >>529437, >>529502

13 Авг, 10:46 #283 #529342

>>529341
> не нрав привязка к майкрософту
> хотел бы пилить игрушки

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

Ответы: >>529348

13 Авг, 10:53 #284 #529348

>>529342
Игры можно пилить и мультиплатформенные, и на консоли, и на носимые устройства.
Это не привязка к инструментарию, разработанному майкрософтом, меняемому по желанию левой пятки майкрософта и в соответствии с представлениями этой компании о прекрасном. Нахер такое. Нахер шарп, нахер .Net, нахер Visual Studio, нахер их понимание красоты в отношении библиотеки классов. Даже ява приятнее.
Мне нравится С++, он красивый, лаконичный в целом, а особенно красив Qt. Но вот type_cast, указатели, все эти сочетания круглых скобок с угловыми, вот это вот все уже ни разу не красиво и не доставляет. Зачем оно мне? Могу я обойтись без этого? Если хочу производительно, лаконично, читабельно, удобно для написания. Стилистически мне вполне нравится lua, php, python, больше, чем ява или шарп. В первой смущает комбайновость, перегруженность, зависимость от виртуальной машины, во втором сама суть и привязка к майкрософту. Но в любом случае, python или php я к UE4 не подключу и нужно привыкать к крестам, потому что они везде и все библиотеки под кресты. Вопрос - можно ли это сделать, не одев свитер и не испортив зрение.

Ответы: >>529350

50 Кб, 699x629

13 Авг, 10:59 #285 #529350

>>529348
>Вопрос - можно ли это сделать, не одев свитер и не испортив зрение.
Скорее всего нет. Указатели точно нужны.

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

Ответы: >>529454

13 Авг, 13:40 #286 #529419

>>529324
Придется заниматься и вот этим всем, если понадобится писать аллокаторы, контейнеры и прочее своё под задачу. Другое дело, что можно таки писать читаемый код с помощью typedef, alias и auto, маленькими функциями. Поверь бро, это не сложно и есть даже проги которые парсят все эти многозвездочные объявления в человеком читаемый вид лол

Ответы: >>529454

13 Авг, 14:11 #287 #529432

Поясните за external linkage. Как понять то, что какая-та переменная доступна в других translation unit-ах? Есть int i в глобал скоупе в одном .cpp файле. Как к нему получить доступ в другом .cpp файле?

13 Авг, 14:16 #288 #529435

>>529299
спасибо большое, так это считается что функция из вне может изменить приватный член класса? или типа норм?

Ответы: >>529442, >>529481

13 Авг, 14:19 #289 #529437

>>529341
совсем поехавший там есть куча других структур которые заменяют массивы и позволяют контролировать длину строки. Просто ты неосилятор.

13 Авг, 14:27 #290 #529442

>>529435
Она сама не может, это метод класса может вызвать эту функцию чтобы изменить свой член. Создатель класса в данном случае представляет такое API.

13 Авг, 15:05 #291 #529454

>>529350
Ну вот смотри, все эти языки, которые я указал, им нахер не нужны указатели, к примеру. Вопрос, почему я не могу обойтись без указателей в крестах? Синтаксис нравится, не нравятся вот эти отдельные элементы.
>>529419
Вот тут можно подробнее? Про парсеры

Ответы: >>529486, >>529508

13 Авг, 16:13 #292 #529481

>>529435
f может изменять т.к. медот класса передают её ссылку на приватный член, а v не может изменять, а только читать т.к. медот передаёт ей только значение приватного члена класса. И никакие указатели на функцию не нужны.

13 Авг, 16:19 #293 #529486

>>529454
Richard Bornat, «Understanding and Writing Compilers»
Terence Parr, «Language Implementation Patterns»

Ответы: >>529489

13 Авг, 16:21 #294 #529489

>>529486
Про что они? Есть на русском?
мимопроходил

13 Авг, 16:25 #295 #529492

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

Ответы: >>529504

13 Авг, 16:28 #296 #529498

>>529299
1. Можно.
2. Нельзя, но если бы у тебя был только h(k) или только g(), короче, только один метод надо вызвать, то можно A ().h(k);

Ответы: >>529504

13 Авг, 16:31 #297 #529502

>>529341
Просто ты начал читать какой-то хуевый учебник с начала, посмотри там в конце, про STL и C++11 должно быть. Никакого байтоебства, все на высшем уровне.

30 Кб, 505x401

13 Авг, 16:34 #298 #529504

>>529492
Функция получает приватный член от метода как аргумент. Вроде разобрались уже.

>>529498
>1. Можно.
Когда так пишу он почему-то не обновляет значение. p уже стало 1, а он всё равно пишет 0. Так надо? Зачем? Как исправить?

Ответы: >>529515

13 Авг, 16:38 #299 #529508

>>529454
Вот онлайн парсер для C http://cdecl.org/

На linux есть c++decl и cdecl, под винду не видел

13 Авг, 16:41 #300 #529511

Программисты, поясните, я тут видел где-то картиночку, типа язык С быстрее языка С++. Но, насколько я знаю, С++ - это как надстройка над С? Или мои знания не верны?
Просто, я читал что С и С++ одинаковы в плане кода, просто, у ++ есть доп. фичи.
И, теоретически, зная С++ я знаю С - так ли это?
Правда ли что С быстрее С++?

Ответы: >>529513

13 Авг, 16:42 #301 #529512

Вы реально это используете, считаете удобным и не имеете альтернатив?
>Try these examples:
>int ((foo)(void ))[3]
>declare bar as volatile pointer to array 64 of const int cast foo into block(int, long long) returning double
Зачем? Как так получилось, что все остальные языки обходятся без этого поноса, а С++ - нет?

Ответы: >>529517, >>529518, >>529563, >>529564, >>529565

13 Авг, 16:43 #302 #529513

>>529511
>И, теоретически, зная С++ я знаю С - так ли это?
За неделю переучишься.
>Правда ли что С быстрее С++?
Да.

Ответы: >>529514

13 Авг, 16:43 #303 #529514

>>529513
>Да.
Но почему? Ведь можно на С++ написать прогу, идеентичную С по коду, так?

Ответы: >>529516

13 Авг, 16:45 #304 #529515

>>529504
cout << a << b << c эквивалентно
operator<< (operator<< (operator<< (cout, a), b), c). Порядок вычисления аргументов не определен, поэтому у тебя компилятор считывает p до выполнения g(p).

Ответы: >>529523

13 Авг, 16:46 #305 #529516

>>529514
Если написать такую, то будет так же быстро, как в C. Но так никто не делает, потому что если ты хочешь писать как на C, то ты можешь написать на C, лол.

Ответы: >>529522

13 Авг, 16:47 #306 #529517

>>529512
>все остальные языки обходятся без этого поноса
Без функции без аргументов, возвращающей массив из трех целых?

Ответы: >>529537

13 Авг, 16:48 #307 #529518

>>529512
Такое только в дремучем posix-совместимом коде ты найдешь. Почему вы так любите обвинять крестогоспод в грехах, которые сами же выдумали?

Ответы: >>529538

13 Авг, 16:51 #308 #529522

>>529516
А в целом примерно насколько С быстре ++?

Ответы: >>529526, >>529527

13 Авг, 16:52 #309 #529523

>>529515
В cout порядок выполнения не определён? Когда придётся использовать несколько cout чтобы такого не было? Можно как-то компилятору сказать делать всё по порядку?

Ответы: >>529530

13 Авг, 16:53 #310 #529526

>>529522
Очень зависит от того, какие возможности C++ ты используешь. Если учитывать оптимизации компилятора, то, думаю, 0-20%.

13 Авг, 16:54 #311 #529527

>>529522
Если программы одинаковые, то и работают одинаково быстро.

13 Авг, 16:55 #312 #529530

>>529523
Не порядок не определен. Порядок вывода определен, но он может сначала, например, вычислить и запомнить самый правый аргумент, потом вывести остальные, а затем уже его. Можно добавить точек следования, самое простое - разбить на несколько операторов, как у тебя сделано, или с помощью запятой.

Ответы: >>529533

13 Авг, 16:59 #313 #529533

>>529530
Покажи пример с запятыми.

Ответы: >>529535

13 Авг, 17:03 #314 #529535

>>529533
cout << g(p) << "/n", cout << p << "/n";
Или cout << (g(p), p) << "/n"; если тебе достаточно вывести только само p.

Ответы: >>529542, >>529543

13 Авг, 17:05 #315 #529537

>>529517
Без >int ((foo)(void ))[3]
блеовотины, там это будет как угодно, "int foo[3]", к примеру, не не вот эта чертовщина тип((имя(тип))[размер]. Что за пиздарики под двойными скобками, зачем этот пиздец? И зачем выносить квадратные скобки наружу, раз уж решили всю хуйню внутрь запихать?

Ответы: >>529544

13 Авг, 17:05 #316 #529538

>>529518
Извини, я тупой и не понял нихуя.

13 Авг, 17:08 #317 #529542

>>529535
>cout << g(p) << "/n", cout << p << "/n";
Тоже самое только вместо ; стоит ,
>cout << (g(p), p) << "/n";
Это не то выводит.

Ладно. Спасибо. На нескольких cout остановлюсь.

Ответы: >>529546

13 Авг, 17:08 #318 #529543

>>529535
У тебя кстати слэш не в ту сторону.

13 Авг, 17:09 #319 #529544

>>529537
Затем, что ты видишь int (...) [3] и понимаешь, что после применения такой функции у тебя будет массив интов. Это удобно, потому что по объявлению функции можно понять, во что она превратит аргументы при вызове, а разбираться в ее работе не всегда хочется. Читать такие объявления тоже весьма легко и без всяких typedef, есть четкий алогритм, как читать изнутри наружу. "Найти имя сущности, читать вправо до скобки, читать влево до скобки, повторять, пока не кончится выражение".

Ответы: >>529548

13 Авг, 17:11 #320 #529546

>>529542
То же самое, лол, но формально это одно выражение, а не два. Это критично, если ты пихаешь в какую-нибудь функцию это.

13 Авг, 17:13 #321 #529548

>>529544
>есть четкий алогритм, как читать изнутри наружу. "Найти имя сущности, читать вправо до скобки, читать влево до скобки, повторять, пока не кончится выражение".
Точно вспомнил. Это тебе.

>>529324
http://habrahabr.ru/post/116255/

Ответы: >>529551, >>529569

13 Авг, 17:16 #322 #529551

>>529548
http://ieng9.ucsd.edu/~cs30x/rt_lt.rule.html

13 Авг, 17:31 #323 #529557

Может кто помочь решить задачку?
Я, вроде, написал правильно, но результат не такой, какой я ожидал.

Ответы: >>529590

13 Авг, 17:41 #324 #529563

>>529512
> Зачем? Как так получилось, что все остальные языки обходятся без этого поноса
До 8 джавы джависты, когда им требовалось передать функцию, передавали объект анонимного класса, реализующего определённый интерфейс.
Теперь они могут передавать лямбды и функции.

13 Авг, 17:42 #325 #529564

>>529512
>((

13 Авг, 17:43 #326 #529565

>>529512
Поясните, мне 1 кажется что первые скобки во 2 цитате какие-то кривые? В частности 2 скобка.

13 Авг, 17:52 #327 #529569

>>529548
Спасибо, но что насчет внутренностей-то скажешь? (void ) - вот это и вообще двойные скобки нахуя? Почему не int foo [3]?
Что будет, если я захочу объявить массив массивов каких-нибудь объектов некоторого класса? Вообще же нечитаемый пиздец.

Ответы: >>529570

13 Авг, 17:53 #328 #529570

>>529569
>Почему не int foo [3]?
Потому что там не массив, а функция, возвращающая массив. Что, кстати, нельзя.

Ответы: >>529571

13 Авг, 18:02 #329 #529571

>>529570
Ааааа, вон оно как получается...блядь, ну реально как-то не слишком понятно. Почему тогда не написать было int [3] function foo (void)
или просто int [3] foo ()?
Зачем опять эти скобки, разделения...ебанись.

Ответы: >>529574

13 Авг, 18:06 #330 #529574

>>529571
Если бы функция могла вернуть массив, то было бы int foo()[3], да. А так приходится скобками звездочку отделять, чтоб компилятор не решил, что возвращается массив указателей.

Ответы: >>529595

13 Авг, 18:10 #331 #529576

Поясните, я точно не знаю как это называется - как нагуглить операторы, с которыми работает тип дабл?

Ответы: >>529617

13 Авг, 18:37 #332 #529590

>>529557
Don't ask to ask, just ask.

Ответы: >>529592

27 Кб, 841x636

13 Авг, 18:41 #333 #529592

>>529590
Вот код: https://bpaste.net/show/be3d38894653
Собственно, я не знаю в чём дело, проверил 2 раза. Суть в том, что если я введу слово из спамлиста - у меня qwe и test, то они должны заменится на BLEEP, но они заменяются не корректно.
Суть кода проверки на пике.

Ответы: >>529594, >>529596, >>529602

69 Кб, 1680x1018

13 Авг, 18:47 #334 #529594

>>529592
Ты понимаешь, что у тебя выделенный кусок кода перезаписывает check во время каждой итерации цикла? В итоге имеет значение только чекнулось ли оно при последней j или нет.

Ответы: >>529598

13 Авг, 18:48 #335 #529595

>>529574
УДОБНО.
Почему нельзя int& 3 foo () тогда?

13 Авг, 18:48 #336 #529596

>>529592
А еще рекомендую использовать ключи компилятора -Wall -Wextra -pedantic и когда компилятор тебя ткнет в то, что ты используешь int'ы вместо size_t как индекс у векторов, исправить это.

Ответы: >>529598

13 Авг, 18:51 #337 #529598

>>529594
Так я так и хотел.
У меня так: ЧЕК=0, берётся 1 элемент 1 массива и сравнивается со всеми элементами 2 массива.
Если во 2 массиве есть слова из 1 массива, то ЧЕК=1.
Если ЧЕК=1, то вывод такой.
ЧЕК=0.
Потом берётся 2 элемент 1 массива...

>>529596
Не понял, это одна из начальных задач по страуструпу, если что. Я пока не очень в крестах разбираюсь.

Ответы: >>529600

13 Авг, 18:56 #338 #529600

>>529598
>>529598
Выделенный желтым отрывок кода по сути эквивалентен следующему:
http://pastebin.com/ZHF5LBd2

Потому что в твоем внутреннем цикле все итерации кроме последней ни на что не влияют, потому что в последней check все равно затрется новым значением.

Ответы: >>529601

13 Авг, 18:58 #339 #529601

>>529600
Хм... Точно. Спасибо.

95 Кб, 784x605

13 Авг, 19:01 #340 #529602

>>529592
Смысл закомментированного ифа до меня так и не дошел.

Ответы: >>529603, >>529747

13 Авг, 19:03 #341 #529603

>>529602
1 - сортирует.
2 - удаляет одинаковые слова.

Ответы: >>529604, >>530675

13 Авг, 19:04 #342 #529604

>>529603
>2 - удаляет одинаковые слова.
Что он делает я вижу, я смысла в нем не вижу. Впрочем это скорее всего просто я дебил.

Ответы: >>529605

13 Авг, 19:07 #343 #529605

>>529604
Судя по тому что я не решил, а ты решил, ты - не дебил.

13 Авг, 19:39 #344 #529617

>>529576
Хуй знает, но он работает со всеми, для которых это будет осмысленно. С %, возможно, не будет, с логическими тоже. С побитовыми и сдвигами должен.

13 Авг, 23:18 #345 #529700

Вы работаете программистами или сами по себе пишете?
Как вы не отвлекаетесь от программирования? А то мне тяжело сосредоточится на програмировании.

Ответы: >>529707, >>529755

13 Авг, 23:35 #346 #529707

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

14 Авг, 02:10 #347 #529747

>>529602
1.
// for (...
{
}
2.
// for (...
// for (...
for (...
{
}
3. ???
9. PRVFEET

14 Авг, 02:49 #348 #529755

>>529700
Работаю, senior c++ engineer. Дома для себя постоянно пишу что-нибудь.
Отношусь к программированию как к искусству, творчеству. Язык - инструмент, кисти и краски, например.
Быстро вхожу "в поток", могу всю ночь, например, решать какую-нибудь задачу, а утром пойти на работу.
Пару лет назад на хабре была статья про химеру программистов - создание и поддержка целой вселенной в голове в процессе работы.
Меняй отношение к делу. Если процесс нравится, то он затягивает.

Ответы: >>530240

14 Авг, 11:42 #349 #529831

Нужен хелп, чуваки, делаю задание Страуструпа, запилил, все как требовалось и вылезает ошибка при компиляции:
Ошибка\t1\terror LNK2001: неразрешенный внешний символ
my.h
[code lang="c++"]
extern int foo;
void print_foo();
void print(int);
[/code]
my.cpp
[code lang="c++"]
#include <std_lib_facilities.h>
#include "my.h"

void print_foo()
{
\tcout << "FOO: " << foo;
}

void print(int i)
{
\tcout << "I: " << i;
}
[/code]
use.cpp
[code lang="c++"]
#include "my.h"

int main()
{
\tfoo = 7;
\tprint_foo();
\tprint(99);
}
[/code]

Ответы: >>529843

14 Авг, 12:16 #350 #529841

"#include"-ы должны быть в хэдере или в .cpp файле?

Ответы: >>529960, >>530003

14 Авг, 12:20 #351 #529843

>>529831
int foo не определена же. Та, что в main, будет локальной и никак не связанной с объявленной через extern.

Ответы: >>530436

14 Авг, 18:19 #352 #529960

>>529841
В срр. В хедере должны быть только инклюды родительского класса (если есть) и библиотек. Это в идеале, естественно. Реальная жизнь может вносить свои коррективы, но нужно стараться как можно меньше инклюдить в хедеры - в основном чтобы было меньше перекомпилировать после изменений, и чтобы не пердолится с цикличными инклюдами.

14 Авг, 19:42 #353 #530003

>>529841
И там и там могут быть.

14 Авг, 20:23 #354 #530032

>>529324
Антоны тебя немного троллят. Одна из основных идей, заключенных в плюсах, это как раз демонтаж красноглазия.

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

Если же ты не хочешь с этим ебаться, то для тебя в C++ есть стандартные контейнеры и умные указатели. И их вполне хватает чтобы делать все, что угодно. Я более чем одинарные указатели, например, использую крайне редко, и то только для того, чтобы запихнуть их в контейнер.

14 Авг, 20:38 #355 #530039

Подскажите, есть дабл, нужно в него ввести число с буквами - как это сделать?
Пример - 1m.

Ответы: >>530040

14 Авг, 20:39 #356 #530040

>>530039
Никак. Используй string.

Ответы: >>530042, >>530052

14 Авг, 20:41 #357 #530042

>>530040
Просто, так в задаче написано, я думал, но не придумал как это сделать:
Там, просто, надо будет потом операции с числами делать. У меня, в целом, есть идея через пробел писать текст. Вот текст задачи:
>Добавьте к каждому введенному числу типа double единицу измерения; иначе
говоря, введите значения, такие как 10cm , 2.5in , 5ft или 3.33m .

Ответы: >>530044, >>530052

14 Авг, 20:44 #358 #530044

>>530042
Переводи всё в одну единицу измерения. Время в секунды,расстояние в метры и т.д. Храни значение в дабле.

14 Авг, 20:52 #359 #530052

>>530040
Попизди мне тут.
>>530042
Например, пишешь:
[code lang="cpp"]
//double нельзя, можно long double
//суффикс m переводит сантиметры в метры
constexpr double operator "" m (long double num) { return num * 100.0; }
[/code]

Ответы: >>530054, >>530062

14 Авг, 20:53 #360 #530054

>>530052
Обосрался, возвращает тоже long double, конечно же.

14 Авг, 21:00 #361 #530062

>>530052
Не знаю, я пока изучил простейшие функции: if, for, while.
Long double 1 раз слышу.
Ладно, сейчас подумаю как сделать...

Ответы: >>530075, >>530087

14 Авг, 21:14 #362 #530075

>>530062
не слушай того анона. это костыль. юзай string.

Ответы: >>530077, >>530087, >>530091

14 Авг, 21:16 #363 #530077

>>530075
А как им в этом случае пользоваться?
Кину я значения в стринг, но они же складываться не будут.
Я бы мог сделать что-то, если бы умел определять текстовую часть и цифровую отдельно.
Ладно, я уже сделаю так, что буду писать число и стринг через пробел.

Ответы: >>530079

14 Авг, 21:17 #364 #530079

>>530077
Тогда структурой попробуй.

Ответы: >>530080

14 Авг, 21:18 #365 #530080

>>530079
Это как?

Ответы: >>530086

14 Авг, 21:24 #366 #530086

>>530080
Стринг в одном поле хранишь, а дабл в другом. Пишешь функции для их сумирования или можешь оператор + переопределить.

Ответы: >>530091

14 Авг, 21:25 #367 #530087

>>530075
Наркоманы в треде. Этот "костыль" -- мощное нововведение 11-го стандарта, созданное как раз для подобных случаев. >>530062-кун, сделай через суффиксы, как делают нормальные современные пацаны.

Ответы: >>530094

14 Авг, 21:38 #368 #530091

>>530075
Костыль? Костыль? А лямбды тоже костыль? Правильно, нахуя эти непонятные квадратные скобки, лучше еще один функтор именованный написать. unique_ptr тоже костыль? Деды raw-pointers с дерьмом вместе ели, и мы будем. Чего там, variadic templates тоже костыль. Нахуя нам эллипсисы непонятные, пачки какие-то, лучше через void * сделать! Стандартизация не нужна! Даешь C с классами!
>>530086
Пиздос. Я даже это комментировать не буду.

30 Кб, 913x567

14 Авг, 21:39 #369 #530094

>>530087
Я, вообще, так сделал, по простому.
https://bpaste.net/show/4c4f17c7f50f
Можешь подсказать, а как с твоего лонг дабла сделать? Я не совсем понял.

Только понял - если вводить так как я сделал, всё верно же получается, пикрелейтед. Я думал выдавать ошибку будет, ведь разрыв по пробелу происходит?
Почему если я пишу 4ft, то разрыв всё равно идёт, а не пишет ошибку?

Ответы: >>530102, >>530103, >>530111

14 Авг, 21:43 #370 #530102

>>530094
[code lang="cpp"]
//Пусть оператор с long double из предыдущего уже описан где-то раньше
long double distance1 = 10.0; //10 сантиметров
long double distance2 = 10.0m; //10 метров = 1000 сантиметров
[/code]

14 Авг, 21:44 #371 #530103

>>530094
Немного не в тему вопрос, но я только задумался: если надо не считать наибольшее и наименьшее значения, а у меня всего 1 или 2 значения вбито - их надо будет считать или нет?
Вроде, 1 значение является и наибольшим и наименьшим, но я не уверен.

14 Авг, 21:54 #372 #530111

>>530094
Если кому интересно, вроде написал программку, это конечная задача по учебнику Страуструпа в главе 4.7: https://ideone.com/lAsE78
Если что неправильно написал - пишите, я открыт для критики.

Ответы: >>530234, >>530313

14 Авг, 23:25 #373 #530175

не понимаю, почему в гцц не сделано sso для строк.
шёл 2015 год, а мы до сих пор имеем тормозмозные аллокейшены в каждом присваивании и в каждой подстроке
в обоссаном выжеэл студии 2003 года уже был сделан sso для строк!
вы тут про высокие материи, мол лямбды и вариадики - это прорыв, при этом для юник_птр в ++11 нет мейк_юник, при том что маке_шаред всё таки есть, надо писать километровые строки в коде и скроллить это говно по горизонтале, каждую версию ожидаешь, что избыточного кода станет меньше, а в итоге почти та же ссанина что и 10 лет назад,
ссука для сетки ни одной отдельной либы, только монстры типа буста и кьюте или нужно использовать сишное говно от системы, где кода проверки ошибок на порядок больше, чем реальной работы

Ответы: >>530208

14 Авг, 23:43 #374 #530208

>>530175
>не сделано sso для строк
Ну поставь SGI реализацию, если тебе так критично.
>нет мейк_юник
>2015
Пора бы уже про 14 подумать, в нем все есть. И основные фичи реализованы в компиляторах.
>для сетки ни одной отдельной либы
Casablanca же, маленькая, шустрая, все фичи из новых стандартов поддерживает.

14 Авг, 23:57 #375 #530234

>>530111
В сантиметре сто метров, замечательно.

Ответы: >>530263

14 Авг, 23:59 #376 #530240

>>529755
Если не секрет, спали зарплату.

15 Авг, 00:14 #377 #530263

>>530234
Почему?
>if (value == "cm")
>array.push_back(number);
>else if (value == "m")
>array.push_back(number / 100);
Если см, то добавляем так, если метры, то делим на 100.

Ответы: >>530269

15 Авг, 00:20 #378 #530269

>>530263
Давай проведем анализ размерностей.
Что известно: 100 см/м.
На входе:
1. number :: см => array.push_back :: см -> ()
2. number :: м => array.push_back :: (м / (см / м)) -> ()
Раскрываем скобки: м / (см / м) = м^2 / см
Получаем несоответствие - с одной стороны push_back принимает сантиметры, а с другой - квадратные метры на сантиметр.

Ответы: >>530663

15 Авг, 00:39 #379 #530293

>>525225 (OP)
Короче спрошу здесь, не хочу отдельный тред создавать.

Есть предположим ВЕКТОРЫ и МАТРИЦЫ и это все надо перемножать. На CPU это ОЧЕ долго, поэтому я хочу воспользоваться возможностями GPU. Но при этом не хочу покупать этот самый GPU, потому что он стоит денег, даже самый днищенский.

Сейчас есть процессоры с типа встроенной видюхой. Есть материнские платы со встроенной видюхой. Потенциала этого барахла хватает, чтобы показывало десктоп, делаю вывод, что должно хватит и на матрицы.

Вопросы такие.
1) Есть ли библиотеки для прямого доступа к возможностям встроенного в мать/проц GPU и если так, то на каких машинах это будет работать. Без анальных привязок и кросс-платформ.

2) Можно ли использовать opengl в таком случае и перемножать матрицы на вертекс шейдере? Какая версия opengl будет доступна? Насколько кросс-платформенно?

Ответы: >>530304

15 Авг, 00:48 #380 #530304

>>530293
>1) Есть ли библиотеки для прямого доступа к возможностям встроенного в мать/проц GPU и если так, то на каких машинах это будет работать. Без анальных привязок и кросс-платформ.
Касательно Intel - только DirectCompute или C++AMP а он внутри все равно использует DC. Вроде AMP пытались прикрутить и к clang.

Ответы: >>530306

15 Авг, 00:50 #381 #530306

>>530304
>DC
Это что такое?

>Intel
Хотелось бы одно решение для всех процов.

Ответы: >>530309, >>530314

15 Авг, 00:51 #382 #530309

>>530306
>Это что такое?
>DirectCompute
Приношу свои извинения, в глаза ебусь к вечеру.

15 Авг, 00:52 #383 #530313

>>530111
Куда ж столько ифов, свитч же есть.

Ответы: >>530663

15 Авг, 00:53 #384 #530314

>>530306
>Хотелось бы одно решение для всех процов.
ну вот попробуй это: http://www.hsafoundation.com/bringing-camp-beyond-windows-via-clang-llvm/
Там через OpenCL, поди и на AMD заведется.

Ответы: >>530317, >>530318

15 Авг, 00:58 #385 #530317

>>530314
Хотя там ссылки теперь ведут на Kalmar, а он, суда по всему, не будет работать с Intel. Но если тот же код скомпилить Visual C++, то запустистя на Intel. Но только под винду.
Короче хз.

15 Авг, 00:58 #386 #530318

>>530314
А зачем здесь компилятор и что им компилировать? Если весь проект на нем пересобирать, то лучше сразу шейдер написать.

> OpenCL
Я вот о нем как раз и думал. Поясни за него. Насколько он мне подходит?

Ответы: >>530320

15 Авг, 01:00 #387 #530320

>>530318
ох ты, судя по https://software.intel.com/en-us/articles/opencl-drivers#iris
они добавили поддержку OpenCL для интеловских GPU.
Значит OpenCL тебе подходит.

Ответы: >>530322

15 Авг, 01:03 #388 #530322

>>530320
Я правильно понимаю, что оно не будет работать на нонейм GPU в материнке асуса?

Ответы: >>530325

15 Авг, 01:06 #389 #530325

>>530322
что еще за материнка?

Ответы: >>530328

15 Авг, 01:12 #390 #530328

>>530325
Конкретная модель значения не имеет.

Обычная материнка со встроенной видюхой, года так 2011 выпуска.

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

Ответы: >>530330

15 Авг, 01:16 #391 #530330

>>530328
>Конкретная модель значения не имеет.

И как мы тебе подскажем нужный софт не зная железа? Совсем аутист или тут битва экстрасенсов?
И вообще, 2015 год, купи б/у видяху за 50 баксов, даже в круизис на средних поиграешь.

Ответы: >>530331

15 Авг, 01:18 #392 #530331

>>530330
Вспомнил, там nForce 630a чипсет.

Ответы: >>530332, >>530334

15 Авг, 01:19 #393 #530332

>>530331
Короче это древнее говно мамонта, но зато дешевое.

>50 баксов
Это удорожает конечное изделие. Или ты думаешь, я такой нищеброд, который хочет поиграть в ПАРАЛЛЕЛИЗМ и копейки считает?

Ответы: >>530334

15 Авг, 01:21 #394 #530333

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

15 Авг, 01:21 #395 #530334

>>530331
>>530332
OpenCL работает на nForce 630, так что можешь набигать.

Ответы: >>530338, >>530343

15 Авг, 01:26 #396 #530338

>>530334
Меня не конкретно этот хлам интересует, а в целом подобный хлам как класс. Чтобы грубо говоря запустилось на любом говне, где есть хоть какое-то gpu - процессорное, чипсет в материнке, неважно.

Там чего с этим opencl делать? Фреймворк нужно ставить для конкретного типа gpu?

Ответы: >>530341, >>530351

15 Авг, 01:29 #397 #530341

>>530338
Вот кстати двачую вопрос. Будет ли OpenCL полностью кроссплатформенным решением? Условно говоря, везде, где есть C++ компилятор, компилируешь его исходники и используешь пусть даже и с различным быстродействием на разных архитектурах. Если нет, то есть ли в природе что-то подобное?

Ответы: >>530345

15 Авг, 01:30 #398 #530343

>>530334
>OpenCL работает на nForce 630
Ну-ка пруфы!
Судя по http://www.gpu-tech.org/content.php/162-Nvidia-supports-OpenCL-1.1-with-Geforce-280.19-Beta-performance-suffers
nForce 630a относится к GeForce 7000. А GPGPU появился только в 8000.

15 Авг, 01:31 #399 #530345

>>530341
>Будет ли OpenCL полностью кроссплатформенным решением
Да. нужен только OpenCL драйвер для интересующего устройства на клиентской машине.

Ответы: >>530348, >>530349

15 Авг, 01:33 #400 #530348

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

15 Авг, 01:33 #401 #530349

>>530345
>нужен только OpenCL драйвер для интересующего устройства на клиентской машине

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

Еще вопрос.
Современные процы все с GPU на борту идут? Самые дешевые днищенские модели у интела и амд тоже с ним?

Ответы: >>530352, >>530353

15 Авг, 01:35 #402 #530351

>>530338
>Меня не конкретно этот хлам интересует, а в целом подобный хлам как класс. Чтобы грубо говоря запустилось на любом говне, где есть хоть какое-то gpu - процессорное, чипсет в материнке, неважно.
Главное, чтобы железка была с GPGPU, причем с достаточной для твоего кода Compute Capability. Можно, конечно, и шейдерами на OpenGL вычислять, но это уже прошлый век, и вряд ли ты найдешь сейчас для этого нормальную библиотеку.

Ответы: >>530354

15 Авг, 01:35 #403 #530352

>>530349
Ноуп, далеко не все процессоры идут с GPU.

15 Авг, 01:36 #404 #530353

>>530349
>Вот это не особо радует, тупой пользователь может не сообразить.
У nVidia и Intel они ставятся с обычными графическими дровами, судя по всему.

15 Авг, 01:38 #405 #530354

>>530351
>и вряд ли ты найдешь сейчас для этого нормальную библиотеку

Руками напишу в крайнем случае. Я правильно понимаю, что в этом случае будет работать почти на любой хуйне?

Ответы: >>530356

15 Авг, 01:40 #406 #530356

>>530354
ну вобщем-то да. Главное чтобы не fixed pipeline был.

Ответы: >>530358

41 Кб, 542x542

103 Кб, 768x963

15 Авг, 01:43 #407 #530358

>>530356
>fixed pipeline

Ну это уж совсем днище, лол.

Кстати есть очень бюджетные процы всего за пару тысяч с интел HD. Это приемлемо. Походу все-таки самый нормальный вариант на такие ориентироваться.

На тебе няшек короче, спасибо.

15 Авг, 02:13 #408 #530364

Реквестирую мануал по инклудам, чтоб прям расписано все было и побольше примеров, а то устал перед каждой компиляцией скрещивать пальцы, в надежде, что не вылезут сообщения, типа "already declared in:"

Ответы: >>530366, >>530369

15 Авг, 02:18 #409 #530366

>>530364
Я так понимаю, что у тебя проблема с инклюдингом собственного кода. Просто разделяй все на хедеры и cpp файлы (если не шаблоны). инклюдить надо только хэдеры. Инклюдить можно и из хедеров, и из цпп. Во всех хедерах используй header guard, загугли что это.

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

Ответы: >>530379

15 Авг, 02:36 #410 #530369

>>530364
Google << include guard << pragma once.

Ответы: >>530379

15 Авг, 05:08 #411 #530379

>>530366
>>530369
Я использую гарды, просто иногда получаются дабл и циркулярные включения. Например есть a.h с классом clА, у которого методы и члены статичные - 3 члена-класса clB, clC, clD и одна int переменная varE. То есть уже идут включения b.h, c.h, d.h. У clD есть метод, который должен менять статическую переменную-член clA. Вот и получается, что a.h включает b.h, c.h, d.h, а d.h включает a.h, который включает в себя b.h, c.h, d.h, а d.h...

Ответы: >>530383, >>530387, >>530737, >>530757

15 Авг, 05:28 #412 #530383

>>530379
>У clD есть метод, который должен менять статическую переменную-член clA.

То есть он получает clA либо по ссылке, либо по указателю? Используй forward declaration.

Ответы: >>530384

15 Авг, 05:59 #413 #530384

>>530383
Нет. Он прям берет и clA::varE = 0; Ну или на крайний случай можно сделать clA::setE(0);

Ответы: >>530387

15 Авг, 06:14 #414 #530387

>>530384
>>530379
Подозреваю, что у тебя ошибка в чем-то другом, либо ты что-то совсем не так делаешь.

Вот так надо, все работает. Что-то непонятно - спрашивай.
http://pastebin.com/gNBziyPy

Ключевые знания - declaration - в хедерах. Имплементейшн - в cpp файлах. Cpp файлы инклюдить никогда не надо.

Ответы: >>530389, >>530392

15 Авг, 06:18 #415 #530389

>>530387
>Ключевые знания - declaration - в хедерах. Имплементейшн - в cpp файлах.

Поправка - это если не темплейты. В темплейтах все через жопу, и там нет .cpp и .hpp - там все в хедерах.

15 Авг, 06:48 #416 #530392

>>530387
А поч ты инклудишь classB.hpp и в classA.hpp, и в classA.cpp?

Ответы: >>530393

15 Авг, 06:52 #417 #530393

>>530392
Потому что в таком порядке писал код. Сначала этот инклюд мне понадобился в ClassB.cpp, а потом - в ClassB.hpp. От того, что он и там и там, ничего плохого не будет.

15 Авг, 07:25 #418 #530396

Он не понимает отличие объявления от определения. Сколько же я с этим ебался в свое время.
Объявление "чего-то" можно хоть куда напихать, главное чтоб определение этого "чего-то" было одно на весь проект. Поэтому его обычно и засовывают в .сpp

Ответы: >>530398, >>530399

15 Авг, 07:30 #419 #530398

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

15 Авг, 07:30 #420 #530399

>>530396
Это наверн если объявление с гвардами, можно понапихать. А то вспоминаются всякие already defined ошибки

Ответы: >>530400

15 Авг, 07:31 #421 #530400

>>530399
Да не. Как раз таки "defined" значит определение, а forward declaration можно делать спокойно, типа

[code lang="CPP"]
class A;

class A {
private:
A* a;
};
[/code]

15 Авг, 11:15 #422 #530436

>>529843
А как тогда правильно сделать, чтобы в обоих .cpp была видна одна и та же переменная foo?

Ответы: >>530447

9 Кб, 314x92

15 Авг, 11:50 #423 #530447

>>530436
Ох уж этот Страуструп.

15 Авг, 12:02 #424 #530454

Считается ли нормальной практикой раскидать определения классов из одного хидера в несколько .cpp файлов? Я хотел сделать разные хидеры, но оба класса используют один и тот же struct в типах аргументов методов.

Ответы: >>530458, >>530462

15 Авг, 12:15 #425 #530458

>>530454
Обычно так не делают. Обычно 1 хедер - 1 файл реализации.

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

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

Ответы: >>530467

15 Авг, 12:23 #426 #530462

>>530454
Хотя не, откомпилилось http://pastebin.com/9wtmdfCg
Но вот тут непонятно: если убрать из a.h, в самом конце, #include "b.h", компилятор ругается про форвард деклар и "error: invalid use of incomplete type class B"

Ответы: >>530463, >>530467

15 Авг, 12:25 #427 #530463

>>530462
Пиздец. Зачем какие-то инклюды в конце хедера? Где хедер гарды?

Ответы: >>530467

15 Авг, 12:31 #428 #530467

>>530462
>>530458
И я попытался посмотреть код дума3, и так понял, что там все файлы инклудят один хидер с форвард декларами и прочим, а тот инклудит все остальные хидеры. Но не понял, откуда https://github.com/id-Software/DOOM-3-BFG/blob/master/neo/renderer/GuiModel.h знает про vertCacheHandle_t

>>530463
Это не весь код, гарды есть. Но про инклуд в конце я сам не понимаю: компилятор без #include "b.h" ругается.

Ответы: >>530468, >>530469

15 Авг, 12:33 #429 #530468

>>530467
Очевидно, это значит, что ты где-то инклюдишь a.h и пытаешься использовать B, а b.h не инклюдишь

Ответы: >>530477

15 Авг, 12:33 #430 #530469

>>530467
>компилятор без #include "b.h" ругается.
Дай угадаю, у тебя в cpp инклюдится a.h?

15 Авг, 12:44 #431 #530475

>>528304
>"\n" замени на std::endl
Платина. Не надо так делать. Самое лучшее -- глобальная константа:

const char newline = '\n';

Ответы: >>530566, >>530969

54 Кб, 500x589

15 Авг, 12:45 #432 #530476

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

15 Авг, 12:47 #433 #530477

>>530468
В a.cpp есть метод:

bool A::aaa(structA var1) {
a_b->bbb(var1);
return false;
}

вот тут и ругается.

Ответы: >>530478, >>530483

15 Авг, 12:48 #434 #530478

>>530477
Не понял, A и structA - разные вещи?

Ответы: >>530482

15 Авг, 12:49 #435 #530481

>>528441
>пишет на vector без std:: что он не идентифицирован
Он же не знает, что ты хочешь вектор именно из стандартной библиотеки языка. Ему нужно сообщить об этом, а то вдруг у тебя самопальный вектор из говна и палок.

Алсо, не слушай его. Локаль надо выставлять (как ты и делаешь), а вместо гетча пиши православный кроссплатформенный std::cin.get(ch):

include <iostream> //std::cin / std::cout
char ch;
std::cin.get(ch);

Ответы: >>530484

15 Авг, 12:50 #436 #530482

>>530478
A - класс, structA - struct StructA в a.h

15 Авг, 12:52 #437 #530483

>>530477
Ну так ты пытаешься у B использовать метод. Чтобы его использовать, нужно знать, какие методы у него есть. А чтобы это знать, нужно заинклюдить хедер b.h

Ответы: >>530486

15 Авг, 12:53 #438 #530484

>>530481
>а вместо гетча пиши православный кроссплатформенный std::cin.get(ch):
Проще Dev-C++ юзать, он окошко консоли сам не закрывает.

Ответы: >>530485

15 Авг, 12:54 #439 #530485

>>530484
В Visual Studio если запускать не в режиме отладки, то тоже не закрывает

15 Авг, 12:54 #440 #530486

>>530483
Теперь в a.cpp два инклуда: "a.h" и "b.h"
Но компилятор ругается: undefined reference to `B::bbb(structA)'

Ответы: >>530487

15 Авг, 12:56 #441 #530487

>>530486
В том пастбине, который ты выложил, ничего нет про определение B::bbb

Ответы: >>530488

15 Авг, 12:58 #442 #530488

>>530487
Да, все, спасибо. Это просто предупреждение от компилятора. Но теперь другой вопрос: как сделать пиздато? Чтоб как в думе - один файл заинклудил и все.

Ответы: >>530489, >>530491

15 Авг, 12:59 #443 #530489

>>530488
Не предупреждение, а ошибка. Предупрежедения это рекомендательные штуки, которые компилятор обычно выдает, когда подозревает, что где-то может получиться undefined behaviour.

>Но теперь другой вопрос: как сделать пиздато? Чтоб как в думе - один файл заинклудил и все.

Не ебу.

15 Авг, 13:00 #444 #530491

>>530488
Так а что мешает сделать точно так же?

Ответы: >>530527

15 Авг, 14:30 #445 #530527

>>530491
Там все запутанно.

15 Авг, 15:28 #446 #530566

>>530475
Перетолстил, братюнь.

Ответы: >>530967

15 Авг, 18:48 #447 #530663

>>530313
Я тоже сначала хотел сделать свич, но там показало что он не поддерживает этот тип переменной.

>>530269
Что-то я не совсем понял, у меня же сделано так (брал сантиметры за образец вычислений):
>if (value == "cm")
>array.push_back(number);
Если см - просто заполняем массив.
>else if (value == "m")
>array.push_back(number / 100);
Если м - делим число на 100, т.е. получим сантиметры?

>2. number :: м => array.push_back :: (м / (см / м)) -> ()
Вот тут не понял - откуда ты взял: (м / (см / м)), если у меня там м / 100 = см.

Ответы: >>530667, >>530676, >>530693

15 Авг, 18:59 #448 #530667

>>530663
switch std::hash (str) же.

15 Авг, 19:26 #449 #530675

>>529603
set же есть, зачем вектор? Или Страуструп из всего STL только про него рассказал?

Ответы: >>530719

15 Авг, 19:28 #450 #530676

>>530663
>Если м - делим число на 100, т.е. получим сантиметры?
Вводим 2м, потом чтоб получить см делим на 100, получаем 0,02см. Косяк, правда?

Ответы: >>530683

15 Авг, 19:41 #451 #530683

>>530676
Действительно, там надо было умножить, а не разделить.
Просто, странно.

15 Авг, 20:07 #452 #530693

>>530663
>откуда ты взял: (м / (см / м)), если у меня там м / 100 = см.
В метре 100 сантиметров. 100 сантиметров приходятся на каждый метр. 100 см/м. Подставляем: м / 100 = м / (см/м).

15 Авг, 20:43 #453 #530719

>>530675
http://lafstern.org/matt/col1.pdf

Ответы: >>530726

15 Авг, 20:50 #454 #530726

>>530719
Ну если словей мало, то да, вектор будет предпочтительней. Но один фиг книжка написана через жопу.

15 Авг, 21:07 #455 #530737

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

Ответы: >>530743, >>530746

15 Авг, 21:18 #456 #530743

>>530737
Я ебу твою мамку, твоя мамка варит борщ тебе, ты пишешь сообщение мне.

Ответы: >>530750

15 Авг, 21:21 #457 #530746

>>530737
Односвязный список, в котором в каждой ноде хранится указатель на следующую ноду.

Ответы: >>530750

15 Авг, 21:24 #458 #530750

>>530743
>>530746
И где там циклические включения? Я же не о циклических ссылках говорю, еба.

Ответы: >>530757

15 Авг, 21:30 #459 #530757

>>530750
Цилкические включения это что вообще? И о них то ничего не говорилось в >>530379

15 Авг, 21:49 #460 #530766

Windows-скриптинг. Вопросы к гуру.

Аноны, сабж о локальном скриптинге и автоматизации в Windows.
BATch, VBSсript, JScript, WMI и что с этим связанно.
Да, PowerShell сюда же.

Ответы: >>530767

15 Авг, 21:50 #461 #530767

>>530766
Туда ли ты зашел?

15 Авг, 22:12 #462 #530775

unsigned int ui_one = 1 ;
signed short s_minus_one = -1 ;
if( s_minus_one > ui_one)
\t\tprintf("-1 > 1 \n");

Внимание, вопрос! Какого хуя?

Ответы: >>530777, >>530780, >>530968, >>530973

15 Авг, 22:15 #463 #530777

>>530775
Знаковый тип приводится к беззнаковому. Получается uint_max > 1

sage 15 Авг, 22:25 #464 #530780

>>530775
Собирать всегда надо с -Wall чтобы таких вопросов не было.

Ответы: >>530785, >>531078

15 Авг, 22:30 #465 #530785

>>530780
Рекомендую -Wall -Wextra -pedantic

16 Авг, 12:37 #466 #530967

>>530566
Не понял, что не так. У тебя код '\n' пестрит, что ли?

Ответы: >>531073

16 Авг, 12:46 #467 #530968

>>530775
Классика. При сравнении знакового и беззнакого целочисленного типа более высокий приоритет имеет беззнаковый, поэтому знаковый кастуется в него. Далее минус единица превращается в UINT_MAX и победа при строгом сравнении обеспечена всегда, кроме когда беззнаковое тоже равно UINT_MAX.

Чтобы сравнивать значения, они должны быть одинакового типа. Если они разного типа, компилятор (наверно при помощи статик_каста) приводит их к одному типу. Если бы всё приводилось к знаковым, тогда значения беззнакового, превышающие INT_MAX, кастовались бы в отрицательные, и тоже были бы "меньше" любых маленьких положительных.

Ответы: >>531078

16 Авг, 12:50 #468 #530969

>>530475
Лучше через дефайны в зависимости от ос выбор сделать.

Ответы: >>530972

16 Авг, 12:53 #469 #530972

>>530969
Опять начинаешь, ебучий шакал.

16 Авг, 12:56 #470 #530973

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

16 Авг, 16:24 #471 #531073

>>530967
В константных строках не хранят \n на конце. Хранят саму строку, которую можно вывести, добавив << std::endl. Это позволяет конкатенировать строки без ебли, потому что не все строки предназначены для вывода отдельно от других и дальнейшего возврата каретки. Когда ты выводишь литерал что само по себе уже пахнет магическими константами, но в хэллоуворлдах или для отладки можно, конечно, тем более удобнее пользоваться std::endl, это лучше читается.

16 Авг, 16:30 #472 #531078

>>530968
Знаковое к беззнаковому не приводится без сужения, поэтому компилятор кукарекнет, как сказал вот этот >>530780 благородный дон. Причем это критичное предупреждение, должно вылезти даже на W2 стандартном уровне.

16 Авг, 16:36 #473 #531082

Пацаны, а можно ли как-то хранить в enum char-ы? Я хочу, чтобы можно было писать вот так:
[code]enum{ A1 = 'q', A2 = 'w', A3 = 'e' };
std::cout << A1;[/code]
Можно и дефайнами это сделать, но мне интересно именно через enum. Кто что думает?

Ответы: >>531083, >>531084

16 Авг, 16:39 #474 #531083

>>531082
Это и так можно делать - в чар кастуй их.
http://en.cppreference.com/w/cpp/language/enum

Ответы: >>531090

16 Авг, 16:43 #475 #531084

>>531082
[code lang=cpp]
enum class : char { A1 = 'q', A2 = 'w', A3 = 'e' };
[/code]

Ответы: >>531085, >>531086, >>531090

16 Авг, 16:43 #476 #531085

>>531084
Ну и имя после class, конечно же.

16 Авг, 16:49 #477 #531086

>>531084
Опередил, содомит. Добавлю, что глобальный enum сейчас фактически deprecated из-за того что не обеспечивает отдельную область видимости.

Ответы: >>531090

16 Авг, 17:04 #478 #531090

>>531083
Не, кастовать неинтересно.
>>531084
Но тогда нужно перегружать оператор<<, чтобы вывести A1?
>>531086
Какая альтернатива тогда? Чем вообще лучше пользоваться для констант? #define, enum, const, constexpr? Что для чего?

Ответы: >>531091

16 Авг, 17:06 #479 #531091

>>531090
Нет.
[code lang=cpp]
enum class imya : char { A1 = 'q', A2 = 'w', A3 = 'e' };
std::cout << imya::A1;
[/code]

Ответы: >>531094

16 Авг, 17:09 #480 #531093

Компилятор пишет, что отсутствует оператор<< для std::ostream << imya.

Ответы: >>531094, >>531096, >>531099

16 Авг, 17:10 #481 #531094

>>531091
>>531093

16 Авг, 17:12 #482 #531096

>>531093
Ну так сделай ostream & operator<< (ostream & stream, imya output), хуле.

Ответы: >>531105

16 Авг, 17:15 #483 #531099

>>531093
Это как если бы ты написал
[code lang="cpp"]
class TvoyaMamka { using width_type = int; };
std::cout << TvoyaMamka::width_type;
[/code]
И тут и там пытаешься вывести тип вместо переменной, так не пойдет. Пиши нормально, типа imya foo {imya::A1}; std::cout << foo;

Ответы: >>531105, >>531107

16 Авг, 17:28 #484 #531105

>>531096
Ну так я и спросил, нужно ли будет перегружать оператор<< или нет.
Может быть, тогда лучше будет использовать #define A1 'q' и т. д.? Дефайны слишком плохо использовать?

>>531099
Если честно, не совсем понял, что именно ты предлагаешь писать.

16 Авг, 17:36 #485 #531107

>>531099
Кажется, понял. Создать объект и инициализировать A1. Сделал так, но всё равно ему нужен оператор<<.

Ответы: >>531111

16 Авг, 17:44 #486 #531111

>>531107
Да не, я обосрался на самом деле. Без создания объекта тоже должно бы было работать. Посмотрел сейчас встроенные перегрузки для operator<<, там enum'ов нет, разумеется. И неявно к своему базовому типу они не приводятся, так что придется тебе либо делать static_cast в char, а еще лучше засунуть это приведение в самописный operator<<.

Ответы: >>531114

16 Авг, 17:54 #487 #531114

>>531111
Да, видимо, без этого никак. А что с дефайнами? В крестовом коде их использование не является моветоном?

Ответы: >>531117, >>531151, >>531245

16 Авг, 18:05 #488 #531117

>>531114
Является, лучше даже и не начинай.

16 Авг, 19:28 #489 #531151

>>531114
Первое же правило у Мейерса, кстати.

16 Авг, 20:50 #490 #531200

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

16 Авг, 21:25 #491 #531215

Есть класс, метод которого получает значение констант в качестве аргумента. Эти значения нужно присвоить при инициализации константы, но константа так же, как и метод должна быть членом класса. Как это реализовать? Можно как-нибудь переменную преобразовать в константу?

Ответы: >>531229, >>531231

16 Авг, 21:49 #492 #531229

>>531215
Сделать дружественный класс и в нем уже нужную константу?

16 Авг, 21:50 #493 #531231

>>531215
Если константа и так член класса, то метод и так имеет к ней доступ, зачем её передавать в качестве аргумента?

Ответы: >>531232

16 Авг, 21:52 #494 #531232

>>531231
Хотя я возможно не так понял. Константа и метод в одном классе?

Ответы: >>531234

16 Авг, 21:55 #495 #531234

>>531232
Да, в одном. Но я уже нашел решение - инициализировать константу в initializer list.

Ответы: >>531242

16 Авг, 22:06 #496 #531242

>>531234
Ок, новая проблема.
[code lang=cpp]
//EXAMPLE.h
Class Example {
public:
Example(const int&);
private:
const CONSTANTA;
void method();
};

//EXAMPLE.cpp
Example::Example(const int& value) : CONSTANTA{value}
{
//......
}

Example::method()
{
const int WIDTH = CONSTANTA / 9;
static_assert(WIDTH >= DRUGAYA_CONST, "error");
}

/error: the value of ‘WIDTH’ is not usable in a constant expression
note: ‘WIDTH’ was not initialized with a constant expression
const int WIDTH = D_WIDTH / 9; /
[/code]

Почему так?

Ответы: >>531243, >>531246, >>531257

16 Авг, 22:07 #497 #531243

>>531242
const int CONSTANTA*

105 Кб, 1106x473

16 Авг, 22:08 #498 #531245

>>531114
Используй по минимуму. Всегда есть typedef, constexpr, константы, экстерн и т.д.

16 Авг, 22:09 #499 #531246

>>531242
void Example::method()*

16 Авг, 22:11 #500 #531247

Пилите перекат, но без Алёны в шапке треда.

16 Авг, 22:26 #501 #531256

https://2ch.hk/pr/res/531254.html
https://2ch.hk/pr/res/531254.html
https://2ch.hk/pr/res/531254.html

16 Авг, 22:26 #502 #531257

>>531242
Потому что значение CONSTANTA на момент компиляции неизвестно.

17 Авг, 01:53 #503 #531323

Кто-нибудь, пожалуйста разжуйте мне метод пузырьковой сортировки массива. Спасибо.

17 Авг, 04:19 #504 #531345

Обязательно ли знать дискретную математику и понимать алгоритмы программисту си плюс плюс?

Ответы: >>531373, >>531475

17 Авг, 08:42 #505 #531373

>>531345
Нет. Будешь окна собирать.

17 Авг, 08:44 #506 #531377

https://www.youtube.com/watch?v=h3PY7VSFuUU

Ответы: >>531475

17 Авг, 13:21 #507 #531475

>>531377
Всё правильно сказал.

>>531345
Уровня школы. И да, алгоритмы != математика. Откуда вообще эта хуйня пошла? Большинство алгоритмов в говноразработке выстраиваются обычной логикой, а всякое серьезное дерьмо с математикой делается бородатыми дедами при университетах, называется "научной деятельностью". Когда программистишка с 4 курсами говноматана с говнопараши типа МГУ начинает считать себя математиком, где умирает один Мишаня.
http://imperium.lenin.ru/~verbit/MATH/programma.html

Ответы: >>531476

sage 17 Авг, 13:22 #508 #531476

>>531475
>где-то*
fix

20 Авг, 21:15 #509 #533261

Ubuntu 12.04 g++ 4.6.3 и выше.
выполняя код на стареньком eeepc 701 я обнаружил что время выполнения задачи всё время одинаковое-47сек(выводится самой программой), хотя секундомером мерил оно доходит до 1минуты 5 сек. И доходило до 1минуты 50 сек при двойном запуске той же самой проги, программа всё равно выводит 47секунд.Пробовал запускать на настольном пк там составило 7 сек, но не стал морочиться с загрузкой ядер-там их несколько. Может ошибка какая-то в коде?
float seconds;
clock_t sstart = clock();
unsigned long wait=0;
while(wait<4000000000)
wait++;
cout<<wait<<endl;
seconds=(clock()-sstart)/CLOCKS_PER_SEC;
cout<<"Время затраченное на складывание "<<wait<<"раз=";
cout<< seconds<<endl;

Ответы: >>533263

20 Авг, 21:17 #510 #533263

>>533261
оппа перекатился

28 Авг, 22:11 #511 #536186

Посаны, что можно прочитать/посмотреть, для того чтоб научиться программировать под шиндус?
Чтоб например можно было получать данные из другого приложения, или использовать хардверу компутера, например получить данные с компорта.

Я просто разобрался в базисе (указатели-стринги наследование, классы и прочее, дефолтные принципы и основы). И теперь уже 2 года никак не продвигаюсь. Кучи литературы для вступления, а что дальше - совершенно не ясно, не ясно с какой стороны подойти.
Я вот понемногу осваиваю программирование под мкк, очень много литературы, во всем можно разобраться. И никто не может ответить.
А как подойти к программированию под ось, так и не пойму.

Ответы: >>540585

29 Авг, 12:41 #512 #536333

Ребят, такое вот дело.
VS 2015 не компилирует парочку кодов, но ошибок не выдает. Вместо этого компилирует прошлый успешный код. Проверил каждую строку, запускал другие коды, всё ок. Снес его, переустановил, проблема осталась. Попробовал на другом компиляторе, а там коды успешно компилируются. Что за говно?

01 Сен, 21:14 #513 #538065

Аноны, что почитать по поводу работы с железом (а именно с usb устройствами)? Интересует всё по данной тематике: написание драйверов, разработка программ для обработки/отправки/получения информации с устройства и т.п.

Ответы: >>538630

02 Сен, 22:21 #514 #538630

>>538065
Это тебе в /РА
Микроконтроллеры.

09 Сен, 02:53 #515 #540585

>>536186

mfc, winapi, формочки
а лучше сразу все в помойку и ебашь на QT

10 Сен, 18:59 #516 #541348

Ей, плюсаны! Можно ли вычислять аргументы функции по умолчанию из дургого аргумента ?
foo(vector<int> &v, auto b = v.begin())

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

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

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

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion