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

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

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

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

776 Кб, 957x474

C++ тред 24 Июн, 20:41 #503274 В конец треда | Веб

Я увожу к ООП и исключениям,
Я увожу через шаблонов стон,
Я увожу к олдфажным наставлениям.

Был Симулой мой Зодчий вдохновлён:
Я высшей силой, полнотой всезнанья
И чистым байтоебством сотворён.

Древней меня лишь вечные созданья,
И с вечностью пребуду наравне.
Входящие, оставьте упованья.

Литература:

Для нюфань:
Три классических учебника для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется.
Герберт Шилдт - C++. Базовый курс - http://padabum.com/x.php?id=15127
Роберт Лафоре - Объектно-ориентированное программирование в C++ - http://padabum.net/x.php?id=16885
Стивен Прата - Язык программирования C++ - http://bukin.su/share/%D0%9A%D0%BD%D0%B8%D0%B3%D0%B8/cpp/Prata_C++.pdf

Учимся не писать говнокод:
Книги про основные подводные камни для тех, кто осилил предыдущий пункт. Следует пролистать все.
Скотт Мейерс - Эффективное использование C++ - http://www.e-reading.club/book.php?book=1002058
Скотт Мейерс - Наиболее эффективное использование C++ - http://www.proklondike.com/var/file/C/Scott_Meyers_-_More_Effective_CPP(RUS).rar
Герб Саттер и Андрей Александреску - Стандарты программирования на языке C++ - http://coollib.com/b/176648

Тонкости языка (для гурманов):
Ад и хардкор.
Бьерн Страуструп - Язык программирования C++ - http://www.proklondike.com/var/file/straustrup-yazyk-c-speciazdanie.zip
Андрей Александреску - Современное проектирование на C++ - http://www.proklondike.com/var/file/C/Andrei_Alexandrescu_-_Sovremennoe_Proectirovanier_CPP.rar
Герб Саттер - Решение сложных задач на C++ - http://www.studfiles.ru/dir/cat32/subj1104/file8061.html
Стандарт языка (на ангельском) - http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf

Отдельные аспекты:
Читать по необходимости.
Энтони Уильямс - Параллельное программирование на C++ в действии - http://www.proklondike.com/var/file/Paralelnie_programirovanie.zip
Николаи Джоссатис - C++. Стандартная библиотека - http://www.proklondike.com/var/file/C/Nicolai_Josuttis_-_STL(RUS).rar

Ссылки:

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

Памятка:

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

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

Предыдущий: >>489539

Ответы: >>503496, >>503497, >>507421, >>509310, >>509435

24 Июн, 20:43 #2 #503279

Памятку надо было в самый верх.

24 Июн, 20:45 #3 #503281

>>503278
Ага, особенно такие термины как добротность.

Ответы: >>503286, >>503288

24 Июн, 20:52 #4 #503286

>>503281
Ты программист, в тексте программерские термины, которые ты либо знаешь, либо легко вычленяешь глазами (потому что слышал) и резко гуглишь. Нет никаких проблем с терминами при чтении английского. Более того, проблема в терминах у меня исключительно и только в русскоязычных текстах. Русские тексты с переведённой терминологией меня скорее отвлекают, чем учат. Я просто не могу читать что-то по математике или программированию, если оно написано в рамках русской традиции наименования. Переведенные термины, как правило, по облику слов часто совершенно отличаются от того, что ты знаешь или хотя бы слышал. Легче, когда это простые кальки или транскрипции.

Ответы: >>503289

24 Июн, 20:56 #5 #503288

>>503281
Добротность по-английски - Q. Если ты с этим ни разу не встречался, то ты в принципе не в теме этой области знаний.

Ответы: >>503314

24 Июн, 20:56 #6 #503289

>>503286
> Переведенные термины, как правило, по облику слов часто совершенно отличаются от того, что ты знаешь или хотя бы слышал. Легче, когда это простые кальки или транскрипции.
Хуй знает что ты там читаешь.
Большинство современных текстов зачастую полны англицизмов, которые давно понятны.

Ответы: >>503292

24 Июн, 21:02 #7 #503292

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

24 Июн, 21:33 #8 #503314

>>503288
А ты не путаешь слово, с условным обозначением?

Ответы: >>503319

24 Июн, 21:38 #9 #503319

>>503314
Нет. Это сокращение от quality, но так никто не говорит. https://en.wikipedia.org/wiki/Q_factor

24 Июн, 21:39 #10 #503320

Programming
Principles and Practice Using C++

Бьярне написал. PDF полный есть у кого? В гуголе стастраничные обрезки.

Ответы: >>503359

24 Июн, 22:29 #11 #503359

>>503320
Про рутракер не слышал?

Ответы: >>503370

24 Июн, 22:32 #12 #503364

Пацаны, поясните за continue и break. Как я понял, на goto наложено табу структурным программированием. А что насчёт этих двух товарищей? Считается ли говнокодом их использование?

Ответы: >>503372, >>503373, >>503381

24 Июн, 22:39 #13 #503370

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

24 Июн, 22:47 #14 #503372

>>503364
У goto есть аналоги, у break/continue - нет.

24 Июн, 22:48 #15 #503373

>>503364
Структурным программированием наложено табу и на break, и на continue, и на множественные return и на большие вложенности и на небо с Аллахом.

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

24 Июн, 23:08 #16 #503381

>>503364
Хоть твой вопрос относится к pure С, отвчеу. goto использовать можно, если понимаешь что делаешь. break\continue мощнейшие операторы, использую вобще везде. А вот for как раз считаю злом, использую только в виде for(;;) - так норм.

Ответы: >>503384, >>503390, >>503395, >>503429

70 Кб, 658x836

24 Июн, 23:14 #17 #503384

>>503381
>А вот for как раз считаю злом
>while (it != vect.end ()) {foo (*it); ++it;}

Ответы: >>503390, >>503391

сажи Алёне sage сажи Алёне 24 Июн, 23:20 #18 #503387

>http://alenacpp.blogspot.ru/

Sooqa, я 500 сообщений ждал нового треда, посчитав зашкваром участвовать в предыдущем из-за ОП-пика. И вот опять, снова эта умелица с её void main() { exit(0); }

Убери это говно отсюда, блядь! Сейчас будешь это вылизывать, блядь!

Ответы: >>503388, >>503389, >>504045, >>504355

sage 24 Июн, 23:25 #19 #503388

>>503387
%Она ОП этого треда, кто еще будет кидать ссылку на это говно%

24 Июн, 23:26 #20 #503389

>>503387
Сегодня остаёмся без постов какого-то рандомного говнометателя?

24 Июн, 23:26 #21 #503390

>>503381
>>503384
ЧЕМ БОЛЬШЕ Я ПРОГРАММИРУЮ ТЕМ ЧАЩЕ ИСПОЛЬЗУЮ БЕСКОНЕЧНЫЕ ЦИКЛЫ
ОСТАЛЬНЫЕ ВИДЫ ЦИКЛОВ СИТУАТИВНЫЕ И НЕ НУЖНЫ

Ответы: >>503393

24 Июн, 23:28 #22 #503391

>>503384
Ты написал какой-то сокральный, код увидев который, я должен пасть ниц?
%Ну, а чем ты недоволен-то?%

Ответы: >>503393

24 Июн, 23:37 #23 #503393

>>503391
Блин, проебал спойлер и запятую.
>>503390
Лол, ну вообще да, как-то так.

24 Июн, 23:38 #24 #503395

>>503381
В PERL МОЖНО ПОМЕТИТЬ МЕТКОЙ БЛОК ИЛИ ЦИКЛ И ДЕЛАТЬ BREAK CONTINUE С ЕТОЙ МЕТКОЙ

Ответы: >>503427

25 Июн, 01:12 #25 #503427

>>503395
Слушай, крупнобуквенный, а это ты программистишку форсишь, или вы на пару сычуете.

25 Июн, 01:14 #26 #503429

>>503381
range-base for тоже нахуй?

Ответы: >>503434

25 Июн, 01:43 #27 #503434

>>503429
Как хочешь. Если у тебя типовая задача - бегать по массиву, то ок. У меня обычно количество итераций в цикле предскзать нельзя, поэтому - бесконечный цикл, в нем куча логики и условий, какждое из которых может выполнить break\continue\return. Ну или ексепшн выкинуть можно. Да и вобще я к всяким нововведениям скептически отношусь. Чем меньше синтаксических нагромождений в языке, тем больше программмист уделяет внимния алгоритму, вместо поиска наиболее подходящего синтсахара.

Ответы: >>503436, >>503442, >>504715

sage 25 Июн, 01:48 #28 #503436

>>503434
>У меня обычно количество итераций в цикле предскзать нельзя
while () {} / do {} while ();

>поэтому - бесконечный цикл, в нем куча логики и условий, какждое из которых может выполнить break\continue\return
Откуда ж вы блядь такие берётесь. Цикл фор чем хорош, что у него есть явно выраженное пост-условие. Никто не обязывает тебя выражать его в виде инкремента счётчика, можешь хоть вызов функции туда повесить. Равно как и первое условие цикла for это что угодно, необязательно определение переменной.

Ответы: >>503461, >>503476

25 Июн, 02:01 #29 #503442

>>503434
>У меня обычно количество итераций в цикле предскзать нельзя, поэтому - бесконечный цикл, в нем куча логики и условий, какждое из которых может выполнить break\continue\return. Ну или ексепшн выкинуть можно.
У кого-то проблемы с дизайном и декомпозицией кода?

25 Июн, 05:27 #30 #503461

>>503436
ВЫХОДНОЕ УСЛОВИЕ НЕУДОБНО РАСПОЛЖЕНА, ОБЫЧНО ТРЕБУЕТСЯ ВЫХОД ИЗ СЕРЕДИНЫ ЦИКЛА А НЕ ИЗ НАЧАЛА ИЛИ ИЗ КОНЦА
ПРИЧЕМ ПО МЕРЕ РАЗВИТЯ ПРОГРАММЫ ВСЕ МОЖЕТ ПОМЕНЯТСЯ И ПОТОМУ ЛУЧШЕ СРАЗУ НЕ ДУМАЯ НАЧАТЬ С БЕСКОНЕСНОГО ЦЫКЛА

25 Июн, 08:49 #31 #503476

>>503436
Ты читать-то умеешь? Тебе достаточно одно условия на выход из цикла и одного постусловия? Можешь повесить целый вызов функции? Охуеть просто.
>У кого-то проблемы с дизайном и декомпозицией кода?
Пока не замечал. А что?

Ответы: >>503522, >>504704

25 Июн, 10:40 #32 #503496

>>503274
Анон, поясни за такой конструктор. Для чего вообще нужен.

Ответы: >>503523, >>504049

25 Июн, 10:41 #33 #503497

>>503274
class ClassWithConstructor {
public:
ClassWithConstructor(float parameter): object(parameter) {}
private:
AnotherClass object;
};

sage 25 Июн, 13:06 #34 #503522

>>503476
Ты рефакторить код умеешь? Очевидно, у тебя возможны две ситуации:

1) единоразово исполняемое в скоупе действие, основное условие (из многих), чётко отделяемое постусловие цикла -- цикл for () {}

2) основное условие (из многих) -- циклы while () {} / do {} while ();

Кто-то, кажется, не умеет разбивать код на функции и вообще формулировать свои мысли в коде.

Ответы: >>503537

25 Июн, 13:07 #35 #503523

>>503496
> Для чего вообще нужен
Создавать/инициализировать объекты.

25 Июн, 13:38 #36 #503537

>>503522
>основное условие
Оперируешь абстрактынми терминами, при этом не привел определнения основного условия и ряда объективных критериев его выбора. У нас за такое сразу нахуй посылают.
>чётко отделяемое постусловие цикла
Обычно это изменение счетчика\индеркса\итератора. Отлично подходит для перебора массивов и направленных структур данных. И блять, я писал об этом выше. И для этого конструкция for как раз и была введена. Также как сейчас добавляют всякие foreach-и и range-base for-ы и прочее.

Ответы: >>504228

2449 Кб, 257x300

25 Июн, 20:08 #37 #503939

В тред призываются адепты ООП. Я хочу замутить такую функциональность:

class A
{
public:
A(const char& s);
A& operator+(A& b);
}

void f(A& x) { }

int main()
{
f("Hello" + "World");
}

проще говоря, как замутить автоматическое преобразование char& к A?

Ответы: >>503942, >>503943, >>503973, >>503978, >>503998, >>504043

25 Июн, 20:15 #38 #503942

>>503939
Причем тут ООП? Твоя крестопараша к нему никакого отношения не имеет.
мимо адепт ООП

Ответы: >>503958

25 Июн, 20:18 #39 #503943

>>503939
Так как у тебя разве не работает?

Ответы: >>503948

25 Июн, 20:23 #40 #503948

>>503943
NOUP

62 Кб, 800x600

25 Июн, 20:30 #41 #503958

>>503942
По делу сказать видимо нечего

Ответы: >>504044

25 Июн, 21:03 #42 #503973

>>503939
A() + "hello" + "world". Только так. Ну а далее или оператор приведения типа, или operator+ принимающий сишную строку. Вроде так. Но основное - это A() + "hello" + "world".

25 Июн, 21:05 #43 #503978

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

Ответы: >>503981

25 Июн, 21:12 #44 #503981

>>503978
В каком месте, там все на стеке.

sage 25 Июн, 22:14 #45 #503998

>>503939
[code lang="cpp"]A(const char* s)[/code]

25 Июн, 23:29 #46 #504043

>>503939
operator const char *()
http://en.cppreference.com/w/cpp/language/cast_operator

25 Июн, 23:31 #47 #504044

>>503958
Есть. Не страдай хуйней.

25 Июн, 23:35 #48 #504045

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

Ответы: >>504228

25 Июн, 23:43 #49 #504049

>>503496
Когда ты создаешь переменную примитивного типа (например, int), ты пишешь int a = 1. Здесь никакого конструктора не нужно, просто создаешь и инициализируешь. В случае сложного класса может быть необходимо выполнить какие-то дополнительные действия (например, зарегистрировать созданный объект в списке всех объектов программы или типа того). Конструктор гарантированно вызывается при создании объекта класса и подходит для обеих целей - в его теле ты можешь проинициализировать члены-данные и выполнить вообще любой код, в частности, вызвать другие методы (например, передать в перечень всех объектов указатель на только что созданного себя) этого и других классов.

Ответы: >>504068

26 Июн, 00:22 #50 #504068

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

Ответы: >>504078

26 Июн, 00:49 #51 #504078

>>504068
Чтобы не забыть его вызвать, например. Существует куча ситуаций, когда объект создается неявно (например, его возвращает функция), и ты легко можешь забыть, что после вызова такой функции нужно вызывать сразу и твой метод. Да и силы это экономит, вместо того, чтобы писать каждый раз, пишешь один раз. Ну а вообще твой вариант тоже используется, просто довольно редко. Например, некоторые контейнеры (типа std::future) требуют, чтобы объект, который они хранят, можно было создать без инициализации (т.е. чтобы у него был конструктор по умолчанию). И инициализируется все уже после конструирования, отдельным методом.

Ответы: >>504088

26 Июн, 00:55 #52 #504079

Раньше писал на java, которая все прощала. Начал писать на крестах. И собственно вопрос: как перестать быдлокодить?
Второй вопрос: я путаюсь в большом количестве h и cpp файлов. Можно это как-то распихать по папкам? Наподобие пакетов в java. Пишу в VC
И третий вопрос: я пишу небольшую игульку всегда при обучении новому языку так делаю, и память вроде не течет... Использую Visual Leak Detector. Может ли быть так, что он мне пиздит и все на самом деле плохо?

Ответы: >>504086, >>504089

31 Кб, 500x385

26 Июн, 01:10 #53 #504086

>>504079
>писать на крестах
>перестать быдлокодить

26 Июн, 01:12 #54 #504088

>>504078
>не забыть его вызвать
>силы это экономит
То есть, это не часть ООП идеологии\парадигмы, необходимая для каких-нибудь абстракций\инкапсуляций, а чтобы не забывать функцию дергать?

Ответы: >>504090

26 Июн, 01:12 #55 #504089

>>504079
1. См. оппост:
>Учимся не писать говнокод
2. Разумеется. Распихиваешь файлы по папкам. Дальше в свойствах проекта: Свойства конфигурации - C/C++ - Дополнительные каталоги включаемых файлов. Добавляешь туда все папки с .h, а сами файлы включаешь в проект (слева - Заголовочные файлы - Добавить - Существующий элемент). .cpp достаточно просто добавить в проект (как заголовочные, но тыкать в фильтр "Файлы исходного кода"). Все, после этого можно твои заголовки подключать в угловых скобках, типа #include <TvoyaMamka.h>. Исходники сами скомпилируются и скомпонуются.
3. Если ты не используешь голые malloc/free, то точно нет. Если используешь, то хуй знает, но скорее всего тоже нет. Вообще, vld это классная вещь, я бы не волновался, что он может напиздеть. Если таки играет очко, используй RAII вместо прямого выделения памяти и волноваться точно будет не о чем.

Ответы: >>504092, >>504471

26 Июн, 01:19 #56 #504090

>>504088
Неет, это часть идеологии хотя бы потому, что у любого класса будет как минимум один конструктор если ты ничего не написал, то сгенерируется пустой конструктор по умолчанию. При создании объекта должен быть вызван какой-то конструктор, без исключений. Ты можешь написать TvoyaMamka::TvoyaMamka () = delete; и он не сгенерируется, но тогда ты не сможешь создать ни одного объекта класса. На самом деле только поехавший не стал бы использовать конструкторы, даже если бы они не были обязательными, потому что это адски удобно. Ты один раз объясняешь, что делать при создании объекта, и больше не забиваешь этим мозг, воспринимаешь его как обычный примитивный тип, если угодно. И пишешь в духе TvoyaMamka elena_mikhailovna = 90;, а что там у нее будет 90 - рост, вес или все сразу - тебя уже не должно ебать. Инкапсуляция свойств как она есть.

Ответы: >>504176

26 Июн, 01:34 #57 #504092

>>504089
Спасибо, добра тебе

38 Кб, 225x225

26 Июн, 10:01 #58 #504152

ИТТ.

26 Июн, 11:35 #59 #504176

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

Ответы: >>504194

26 Июн, 12:26 #60 #504194

>>504176
Из документации?

Ответы: >>504271

sage 26 Июн, 13:32 #61 #504228

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

>Обычно это изменение счетчика\индеркса\итератора. Отлично подходит для перебора массивов и направленных структур данных.
Обычно да, но не только, блядь, НО НЕ ТОЛЬКО! У меня, например, постусловием идёт вывод информации в одной из задач.

И, кстати, читаемость кода только повысилась, он ужался и стал компактным.

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

Ответы: >>504271, >>504394

26 Июн, 15:25 #62 #504271

>>504194
>рост, вес или все сразу - тебя уже не должно ебать. Инкапсуляция свойств как она есть.
>>504194
>Из документации?
То есть ООП, для того, чтобы из исходников было непонятно что по чем, и поэтому надо читать документацию?
>>504228
>НО НЕ ТОЛЬКО! У меня, например, постусловием идёт вывод информации в одной из задач.
Ну вообще только. Из семантики же следует: (начальное значение;условие прерывания;изменение состояния).

Ответы: >>504300, >>504313

sage 26 Июн, 16:27 #63 #504300

>>504271
Ты, вероятно, будешь удивлён, но даже при очень придирчивых настройках компилятора тебе даже предупреждения не выдаст. Всё компилируется и работает.

26 Июн, 16:43 #64 #504313

>>504271
>То есть ООП, для того, чтобы из исходников было непонятно что по чем, и поэтому надо читать документацию?
Че ты все к ООП цепляешься? Ты спросил "А с какими это мне параметрами надо функцию вызвать?" я ответил.
Не нравится документация? Читай заголовок, типа
class TvoyaMamka(int SkolkoRazEeEbali) {...}
Обычно стараются сущностям давать имена, отражающие их суть.

26 Июн, 18:13 #65 #504355

>>503387
>Местоположение\tРедмонд, Соединенные Штаты
А где ты находишься, мм?)) Может быть Silicon Valley?

Ответы: >>504399, >>504984

26 Июн, 19:28 #66 #504394

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

26 Июн, 19:30 #67 #504399

>>504355
А еще она занимается разработкой игор, имеет личинок и мужа с большим членом. Мечта местного контингента так жить просто, с учетом склонности к байтоебскому мазохизму.

Ответы: >>504426

26 Июн, 20:04 #68 #504426

>>504399
>мужа с большим членом
У неё муж негр чтоли?
По блогу особо не копался.
По делу, воспитанные интеллектуало-няши уёбывают отсюда в далёкие края, и там обустраиваются. Я не верю, что на должность кококодера при зарплате 10к$ возьмут пизду ради пизды. На этом тему стоит закрыть, пока опять срачь не начался.

Ответы: >>504984

26 Июн, 21:21 #69 #504467

Поясните, чем сишарп лучше крестов?
Я в замешательстве - начал читать Страуструпа про С++, а тут мне аноны подказывают что ++ говно и лучше учить шарп или яваскрипт...

Ответы: >>504473

26 Июн, 21:27 #70 #504471

>>504089
>Вообще, vld это классная вещь, я бы не волновался
Ну ахуеть. Поставил я этот vld, прописал пути, заинклудил, сделал каноническую утечку

int *pointer = NULL;
for( int i = 0; i < 10; i++ ) {pointer = new int;}
delete [] pointer;

И в окне вывода нихуя. Думаю чет не работает, наверно. Прописал в конфиге у vld вывод в файл. Он мне туда вывел
>Visual Leak Detector Version 2.3 installed.
>Outputting the report to the debugger and to (путь к проекту)\memory_leak_report.txt
>No memory leaks detected.
>Visual Leak Detector is now exiting.

И где что не так?

Ответы: >>504479, >>504722, >>504733, >>504782

26 Июн, 21:33 #71 #504473

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

Ответы: >>504474

26 Июн, 21:34 #72 #504474

>>504473
Ну, я не совсем хотел язык для работы, сколько хотел делать игры, у меня есть куча кириллоидей.
Какой язык выбрать?

Ответы: >>504480

26 Июн, 21:53 #73 #504479

>>504471
Ну хуй знает. Поставил я этот vld, прописал пути, заинклудил, сделал каноническую утечку
Visual Leak Detector detected 9 memory leaks (360 bytes).
Largest number used: 2160 bytes.
Total allocations: 2312 bytes.
Visual Leak Detector is now exiting.

Ответы: >>504722

26 Июн, 21:57 #74 #504480

>>504474
Для игор? Что именно ты хочешь ПИСАТЬ? Программировать графон? Тогда кресты адназначна.

Ответы: >>504481, >>504483

26 Июн, 21:58 #75 #504481

>>504480
Геймплей, для начала я бы хотел написать простенькие игры.

Ответы: >>504484

26 Июн, 22:00 #76 #504483

>>504480
Кресты для ГРАФОНА не нужны. То, для чего кресты применяются в игростроении, уже давно написано.

Ответы: >>504485

26 Июн, 22:01 #77 #504484

>>504481
Если не собираешся делать шутаны, то бери юнити (а там шарп). С ним куча людей к успеху пришли.

Ответы: >>504485

26 Июн, 22:02 #78 #504485

>>504484
Но я не хочу юзать чужие наработки, типа юнити, а хочу попробовать сам, что-нибудь типа ДФ сделать, но попроще.

>>504483
Какой язык лучше?

Ответы: >>504489, >>504493

26 Июн, 22:10 #79 #504489

>>504485
Ты не задумывался над тем что ЯП это тоже чужая наработка?

Ответы: >>504492

26 Июн, 22:12 #80 #504492

>>504489
Ну не на ассемблере же писать...?
Да, и если углублятся, тогда уже лучше сделать мод на уже готовую игру - что меня не устраивает.

Ответы: >>504495, >>504503

26 Июн, 22:14 #81 #504493

>>504485
>Какой язык лучше?
Общелисп, конечно!
Не с того конца ты начинаешь, анон

Ответы: >>504496

26 Июн, 22:15 #82 #504495

>>504492
>Ну не на ассемблере же писать...?
Тоже чужие наработки. Начни с проектирования собственного железа.

Ответы: >>504571

26 Июн, 22:15 #83 #504496

>>504493
А с какого начать?
Да, и я читаю что в разные конторы, которые делают игры, требуются специалисты по С++.

Ответы: >>504497, >>504498

26 Июн, 22:16 #84 #504497

>>504496
Специалисты требуются по предметной области, а не цпп.

Ответы: >>504499

26 Июн, 22:16 #85 #504498

>>504496
"Специалисты по c++" требуются только для поддержки легасиговна.

Ответы: >>504499

26 Июн, 22:17 #86 #504499

>>504497
>>504498
Так с чего начать? Да, и я читаю что все дварф фортрессы написаны на С++ с использованием ОпенГЛ, даже дум.

Ответы: >>504504, >>504508, >>504511

26 Июн, 22:21 #87 #504503

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

Ответы: >>504507

26 Июн, 22:23 #88 #504504

>>504499
Что ты писать собрался-то?

Ответы: >>504507

26 Июн, 22:25 #89 #504507

>>504503
Я в этом слабо разбираюсь и стою на перепутье, подскажи с чего начать?
Как я понял, OpenGL - это такая же библиотека, как и iostream, только более комплексная?

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

Ответы: >>504514

26 Июн, 22:26 #90 #504508

>>504499
Итак, ты можешь взять с++ и какую-нибудь библиотеку, например sfml, и начать велосипедить. Потому что ты не быдла, только школьники используют юнити!
А через некоторое время тебя это заебёт и ты станешь использовать юнити. сужу по своему опыту

Ответы: >>504509

26 Июн, 22:29 #91 #504509

>>504508
В чем суть юнити?
Я всегда думал что это как редактор к варкрафту, только с намного большими возможностями, но всё равно недостаточными?
К тому же, я слышал что там можно писать только на С#.

Ответы: >>504510, >>504517

26 Июн, 22:31 #92 #504510

>>504509
Игровой движок. Что хочешь, то и сделаешь.
И на C# очень приятно и легко писать в отличие от крестов

Ответы: >>504513

26 Июн, 22:31 #93 #504511

>>504499
1. Бери https://code.google.com/p/blackthorn-engine-3d/
2. разбирайся
3. допиливай
4. делай свою йобу
5. ???
6. ВЫГОДА

Ответы: >>504512, >>504513

26 Июн, 22:32 #94 #504512

>>504511
Как раз и проектировать научишься.

26 Июн, 22:32 #95 #504513

>>504510
Но ведь всё пишут что игры и С++...

>>504511
Что за кошмар?

Ответы: >>504518

26 Июн, 22:33 #96 #504514

>>504507
Я думаю тебе все равно что использовать. На простых вещах разницы нет. Хоть питон бери. Можешь плюсы попробывать, как анон выше писал ищи книгу "SFML Game Development.pdf" и ебашь по ней. Если обосрешся с подключением sfml ищи что-то проще. Но это уже наверное не плюсы, что-то не вспоминаю ниодной просто подключаемой библиотеки. Раньше тебе можно было бы graphics.h обойтись, но сейчас ее наверное хуй найдешь.

Ответы: >>504516

26 Июн, 22:35 #97 #504516

>>504514
>sfml
Как я понял это что-то типа опенгл или директикс?
Почему сразу их не использовать, например?

Ответы: >>504519

26 Июн, 22:36 #98 #504517

>>504509
>намного большими возможностями, но всё равно недостаточными
Сities: Skylines, Kerbal Space Program, Endless Legend, Infactory демиурги, лол, какой это год был-то? это недостаточные возможности?

Ответы: >>504520

26 Июн, 22:36 #99 #504518

>>504513
>Но ведь всё пишут что игры и С++...
Так говорят только в /gd/. Много ты там игр змейки не в счет на крестах видел? То-то же.
>>504513
>Что за кошмар?
Оче годный, но не допиленный движок на лиспе. С нуля ты свой всё равно не напишешь, а вот допилить полуготовый может и получится.

Ответы: >>504520

26 Июн, 22:39 #100 #504519

>>504516
> Почему сразу их не использовать, например?
По той же причине по которой не используют ассемблер. sfml обертка над opengl.

Ответы: >>504520

26 Июн, 22:40 #101 #504520

>>504517
>>504518
Ладно, так что лучше: sfml и С++ или Unity и шарп?
Мне, просто, кажется что если я уйду в юнити, то стану анальным рабом одной программы, а если в 1 вариант, то смогу решить сам что делать. В общем, поясните, программисты!

>>504519
Т.е. изучив sfml, я смогу перейти на опенгл?

Ответы: >>504521, >>504523, >>504532

26 Июн, 22:41 #102 #504521

>>504520
>Ладно, так что лучше
Лучше для чего, ёбанырот?

Ответы: >>504524

26 Июн, 22:43 #103 #504523

>>504520
Судя по твоим вопросам, лучше тебе сначала набить программистские скилы

Ответы: >>504641

26 Июн, 22:43 #104 #504524

>>504521
Чтобы сделать свой дум или chasm: rift?

Ответы: >>504530

26 Июн, 22:47 #105 #504530

>>504524
Что именно ты хочешь запилить? Физику, рендерер, логику, етц?

Ответы: >>504534

26 Июн, 22:48 #106 #504532

>>504520
Для шарпа есть еще monogame.
А для крестов не так уж и много игровых движков/библиотек с хорошей документацией. Так что выбор на самом деле невелик. А на OpenGL писать игры не самый лучший вариант, он тебе нужен, если только сам движкописательством хочешь заниматься или интересует программирование графики.

26 Июн, 22:49 #107 #504534

>>504530
А самому нереально сделать такое?
Вообще, я хотел сделать игру с крутым ИИ, что-то похожее на ДФ.

Ответы: >>504539, >>504543

26 Июн, 22:54 #108 #504539

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

26 Июн, 22:57 #109 #504543

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

Ответы: >>504544

26 Июн, 22:57 #110 #504544

>>504543
Почему так?

Ответы: >>504545

26 Июн, 22:59 #111 #504545

>>504544
Потому, блять. Без элементарных навыков единственное, что у тебя получится, - участвовать в срачах на /gd

Ответы: >>504547

26 Июн, 23:04 #112 #504547

>>504545
У меня есть навыки работы в пхп/скл (хтмл, цсс), немного яваскрипта (не особо в нём разбирался, но писал простенькие фишечки, типа открыть, закрыть комментарии етц.).
И вот уже где-то месяц я мечусь в поисках того что мне нужно - с чего начать.
Немного почитал про С++, потом мне сказали что это говно, все не любят этот язык и подвергают жесточайшей критике. Что число программистов и вакансий на этот язык сокращается.
Попробовал Питон, но пишут что он слишком простой, и сложные программы (типа игр) на нём не сделать.
В общем, сам не знаю что делать.

Ответы: >>504555, >>504568

26 Июн, 23:13 #113 #504555

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

Ответы: >>504559

26 Июн, 23:16 #114 #504559

>>504555
Но на питоне же никто не пилит игры сложнее змейки?
У меня от твоего поста появилось чувство:
>быстрее прийдешь к результату
Будто под результатом ты имеешь ввиду что я на всё забью и дропну.

Ответы: >>504572

26 Июн, 23:23 #115 #504566

Вообще, с C# и Юнити перекатиться на С++ будет легко?

Ответы: >>504726

26 Июн, 23:25 #116 #504568

>>504547
Проблема не в том, что питон прост, проблема в скорости его работы, поэтому круизис на нем никто не пилит.
Ты хочешь работать в геймдеве или хочешь сделать игру?
Если первое, тогда кресты.
С++ используется в разработке "серьезных" игр из-за скорости и производительности. Но разработка на нем более медленная и сложная из-а особенностей языка. Для проекта в одиночку это весьма важный момент. Я сомневаюсь, что при разработке твоих игр ты столкнешься с проблемами, которые и вынуждают использовать с++
Майнкрафт вон на тормозной джаве написан и норм же.
Следует выбирать то, что удобно.
Можешь еще в сторону haxe поглядеть я на нем от скуки, используя движок haxeflixel платформер за два дня написал. Самое то для начинающего инди. Правда haxe малопопулярен и никому особенно-то не нужен.

Ответы: >>504574, >>504584

26 Июн, 23:25 #117 #504571

>>504495
Пусть начнет с создания собственной вселенной для начала.

26 Июн, 23:26 #118 #504572

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

Ответы: >>504574

26 Июн, 23:31 #119 #504574

>>504568
>>504572
А что такого в плюсах, из-за чего:
>разработка на нем более медленная и сложная из-а особенностей языка
Просто, вроде ДФ написан на плюсах, а при крепости в 100+ бород тормозит на компе, который Крузис потянет.

Ответы: >>504727

26 Июн, 23:40 #120 #504584

>>504568
Стоп, т.е. на питоне я смогу написать тоже самое что и на С++, только это просто будет жрать больше ресурсов?

Ответы: >>504595

26 Июн, 23:54 #121 #504595

>>504584
И медленнее работать? Да. Но для простых игр это не сильно критично. Ну и сильно влияет вопрос кривости рук
>ДФ написан на плюсах, а при крепости в 100+ бород тормозит на компе, который Крузис потянет

Ответы: >>504603, >>504606

26 Июн, 23:58 #122 #504603

>>504595
А как же все эти библиотеки - опенглы и sfml? Они же, вроде, только для низкоуровневых языков программирования? Или как?

Ответы: >>504616

26 Июн, 23:58 #123 #504606

>>504595
Ладно, тогда начну с завтра учить Питон, наверно.
Или лучше С++?

Ответы: >>504634

27 Июн, 00:14 #124 #504616

>>504603
Не понял вопроса. Для питона есть свои библиотеки. Билдинги к сфмл есть к самым различным языкам, но либа эта крестовая и обычно на крестах под нее пишут.
>Или лучше С++
Не лучше и не хуже. Я как-то ради лулзов писал игру на go, хотя он нихуя для этого не предназначен.
Ты блять, какой-то неуверенный, но ладно, так и быть, я разрешаю тебе выбрать питон.
Выбери уже что-нибудь, главное не сиди и не теряй время.

Ответы: >>504696

27 Июн, 01:42 #125 #504634

>>504606
Ты заебал уже, начни уже что-нибудь делать.

Ответы: >>504682

27 Июн, 01:46 #126 #504635

есть кто на плюсах задачку за первый курс напишет?

Ответы: >>504637, >>504728

27 Июн, 01:52 #127 #504637

>>504635
ЗА ДЕНЬГИ

sage 27 Июн, 01:59 #128 #504641

>>504523
Зеленый ебальник ему набить надо, а не скиллы.

sage 27 Июн, 06:57 #129 #504682

>>504634
Да он с двача выйти не может.

27 Июн, 09:57 #130 #504696

>>504616
Всё, тогда учу С++

27 Июн, 10:40 #131 #504704

>>503476
пили сюда пример своего while-цикла, поржем

sage 27 Июн, 12:16 #132 #504715

>>503434
типиный байтодаун не осиливший даже СП

Ответы: >>504856

27 Июн, 12:43 #133 #504722

>>504471
Значит, утечки нет. Он же диагностирует их по факту, а не гипотетически возможные по стандарту. Видимо, в твоем случае new выделит им место последовательно, а потом delete [] простит косяк и удалит все. Вот он и не кукарекает.
>>504479
Так может у тебя еще утечки есть. Сделай main с утечкой и ничего больше. Ну и энивей для меня, например, его результат бинарный - либо есть утечки, либо нет, а на количество насрать, энивей исправлять же.

Ответы: >>504782

27 Июн, 12:47 #134 #504726

>>504566
Нет.

27 Июн, 12:49 #135 #504727

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

Ответы: >>504763

27 Июн, 12:50 #136 #504728

>>504635
Показывай давай.

27 Июн, 12:53 #137 #504732

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

Ответы: >>504735

27 Июн, 12:56 #138 #504733

>>504471
У меня vld 2.4RC2, в твоем случае 9 утечек показывает, так что хуй знает.

Ответы: >>507172

27 Июн, 12:59 #139 #504735

>>504732
Помимо книг из оппоста:
Р. Мартин нет, петушок, это другой Мартин - Идеальный программист.
Э. Хант, Д. Томас - Программист-прагматик.

Ответы: >>504739

1017 Кб, 1800x1013

27 Июн, 13:15 #140 #504739

>>504735
>Мартин
And who are you,
The junior said,
That you call my code slow?
Only a slave
With a different pay -
That's all the truth I know.

Ответы: >>504742

27 Июн, 13:20 #141 #504742

>>504739
Что за фильм? ГодныйЙ?

Ответы: >>504750

27 Июн, 13:28 #142 #504750

>>504742
2ch.hk/got/

Ответы: >>504764

27 Июн, 13:42 #143 #504763

Ну всё, еще почитал интернеты, и твёрдо решил учить С++.

>>504727
Так, Тоад далеко не школьник, он учёный и имеет какие-то там дипломы за знание математики.

Ответы: >>504800

27 Июн, 13:44 #144 #504764

>>504750
>2ch.hk/got/
Это Игра престолов? Годный сериал?

Ответы: >>504804

12 Кб, 525x339

27 Июн, 14:03 #145 #504782

>>504722
main с утечкой и был. Просто этот >>504471 что-то неправильно делает

Ответы: >>507172

27 Июн, 14:59 #146 #504800

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

27 Июн, 15:11 #147 #504804

>>504764
Ага.

27 Июн, 17:47 #148 #504856

>>504715
Ты вообще не используешь continue/break? Почему?

Ответы: >>504868

27 Июн, 18:00 #149 #504862

Аноны, есть такой пример:
[code]1. template<typename T> void ft(T);
2. template<> void ft<int>(int);
3. void ft(int);[/code]
1 — шаблон, 2 — явная специализация шаблона, 3 — просто функция.
К примеру, можно использовать 1 и 2 или 1 и 3, то есть выбор между явной специализацией шаблона и просто функцией. Какие преимущества есть у явной специализации перед простой функцией, помимо того, что шаблон создаётся только тогда, когда нужен, а функция — всегда?

Ответы: >>504880, >>504895, >>504942, >>504979

27 Июн, 18:10 #150 #504868

>>504856
В 90% случаев continue/break являются индикатором плохого дизайна. Понятное дело, что если ты там поддерживаешь легаси с функциями длинной по 500 строк, то уже похуй и можно использовать что угодно, как и в случае, если тебе надо быстро-быстро накидать чтобработало и больше никогда его не открывать. В остальных же случаях всякие goto/continue/break, множественные ретёрны, длинющие функции-листинги, глубокие уровни вложенности и т.д. - запах говнокода, который бездумно писали не проведя нормальную объектную/структурную декомпозицию. Есть конечно ебанутые алгоритмы, которые по-другому не запилишь но как правило такие места встречаются редко.

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

Ответы: >>504883, >>504925, >>504930

27 Июн, 18:39 #151 #504880

>>504862
При явной специализации шаблон всегда создается.

Ответы: >>504895

27 Июн, 18:43 #152 #504883

>>504868
Как тебе такой код?
http://pastebin.com/0y4x0yVA

Можно его переписать без continue?

Ответы: >>504900

27 Июн, 19:06 #153 #504895

>>504880
А ты не путаешь явную специализацию с явным созданием экземпляра шаблона? Иначе я вообще не понимаю смысла в явной специализации. Или это я попутал…
>>504862
>Какие преимущества есть у явной специализации перед простой функцией, помимо того, что шаблон создаётся только тогда, когда нужен, а функция — всегда?
>шаблон создаётся
Правильнее, конечно, экземпляр шаблона.

В любом случае какие профиты-то?

27 Июн, 19:11 #154 #504900

>>504883
На мой ньюфаньский взгляд читается очень легко. Хотя, наверно, можно вместо if (ProxyObject == null) return; и прочего писать что-то типа if (ProxyObject == null) {...}. То есть вкладывать всю остальную программу в них. Однако я не уверен, что это будет читабельнее.

Ответы: >>504919

25 Кб, 300x376

32 Кб, 341x500

17 Кб, 200x293

31 Кб, 341x500

27 Июн, 19:43 #155 #504918

Прочитал первых 2 пика и начал практиковаться на кодфорсе. Теперь планирую прочитать что-то по стандартной библиотеке. Нашёл 2 последних пика. Что на эту тему лучше прочитать? Например то где пояснят отличи sort и qsort. Что посоветуете?

Ответы: >>504920, >>504921

0 Кб, 383x167

27 Июн, 19:45 #156 #504919

>>504900
>Однако я не уверен, что это будет читабельнее.
Их надо вынести в отдельную функцию. Появились же вложенные функции в плюсах.

27 Июн, 19:46 #157 #504920

>>504918
>Например то где пояснят отличи sort и qsort. Что посоветуете?
"Многознанiе уму не научаетъ" (c)
Пиши код.

27 Июн, 19:47 #158 #504921

>>504918
>2 последних пика
>по стандартной библиотеке
>Прата
Читать Прата после Страуструпа — это мощно. У него же идёт введение в язык с нуля. Загляни в оп-пост же.

Ответы: >>504926

27 Июн, 19:51 #159 #504925

>>504868
Поясни тогда за случаи:
1. Метод получает параметр, который ему не нравится, и это видно сразу в начале метода например, nullptr. При этом ситуация недостаточно плоха, чтобы кинуть исключение, следует просто ничего не делать. Как по-твоему здесь сделать лучше, чем сразу return?
2.
[code = "cpp"]
Momma getYourMomma (size_t height, size_t weight)
{
\tstring request = "method=getMomma&height=" + std::to_string (height) + "&weight=" + std::to_string (weight);
\tfor (;;)
\t{
\t\tauto response = getResponse (request + "&nonce=" + std::to_string (getTime ()));
\t\tif (response.hui_sosi)
\t\t\tcontinue;
\t\treturn response;
\t}
}
[/code]

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

Ответы: >>504928, >>504976

27 Июн, 19:51 #160 #504926

>>504921
>Загляни в оп-пост же.
А что там интересного? Полторы книги и Прата неправильный наверно.

Ответы: >>504931

10 Кб, 184x200

27 Июн, 19:53 #161 #504928

>>504925
Вот это обосрамс с разметкой.

Ответы: >>504933

27 Июн, 19:55 #162 #504930

>>504868
>Нужно отдавать себе отчёт в том, что это грубый сontrol flow, который понижает читабельность кода и размывает его консистентность, и стараться пересмотреть написанное каждый раз когда возникает желание их использовать.
Очнитесь товарисч инженегр.
Двадцать лет мы двигаем «break» в конец цикла и «continue» в начало и у нас всё работает!
А если упоротые выскакивания из середины цикла понижают читабельность кода, то только у вас.

Ответы: >>504936

27 Июн, 19:56 #163 #504931

>>504926
>Николаи Джоссатис - C++. Стандартная библиотека
Случай, братюнь, ты охуел штоле не читать оппост, блядь? Я старался, выбирал самые годные книги, собирал ссылки, чтобы анону искать не нужно было. Читай. Читай оппост до конца, блядь. Не хочу. Хочу жрать говно.

Ответы: >>504938

27 Июн, 19:57 #164 #504933

>>504928
Очнитес и вы товарисч.
Зойчем ви смещиваити брейки с ретурнами? Тихийужос.

Ответы: >>504939

11 Кб, 251x251

27 Июн, 19:59 #165 #504936

>>504930
[code lang="cpp"]
while (true)
{
\tcontinue;
\t//body
\tbreak;
}
[/code]
>всё работает
Я бы даже сказал всегда работает, если вы понимаете, о чем я.

Ответы: >>506977

27 Июн, 20:00 #166 #504938

>>504931
Там написано для профессионалов.

Ответы: >>504941

27 Июн, 20:00 #167 #504939

>>504933
>Как в этой ситуации быть с твоей точки зрения?

Ответы: >>504945

27 Июн, 20:02 #168 #504941

>>504938
Я бы не назвал книгу Джоссатиса сложной. Она объемная просто, тому що STL большая. И в ней новейшие сведения вплоть до C++14, в отличие от.

Ответы: >>504943

27 Июн, 20:04 #169 #504942

>>504862
Бампану вопросик.

58 Кб, 444x626

27 Июн, 20:05 #170 #504943

>>504941
>И в ней новейшие сведения вплоть до C++14
Мы точно про одну книгу говорим? Она же 2004ого года.

Ответы: >>504944, >>504946

27 Июн, 20:06 #171 #504944

>>504943
Джоссатис, сука. Так и гугли. Не Джосьютис. Книга 2014 года, 40 МБ.

Ответы: >>504947

27 Июн, 20:07 #172 #504945

>>504939
>Если невозвращение сервером корректной мамки - это обычное дело, то исключения все замедлят.
И всё же исключения. Но не

throw new Excpetion(ERR_OBOSRATUSHKI_OBTEKATUSHKI_SHOPESDEATH);

А вот так

throw AbstractSingletonProxyObosramsException;

Константу бросить, короче. Тогда тормозить не будет.

Ответы: >>504950

27 Июн, 20:08 #173 #504946

>>504943
Потому что тебе надо второе издание.
http://rghost.ru/6LFrtnWVw

Ответы: >>504947

27 Июн, 20:10 #174 #504947

>>504944
В ОП-посте эта. Может надо что-то поправить?
>>504946
Спасибо.

Ответы: >>504953

27 Июн, 20:11 #175 #504950

>>504945
Будет существенно тормозить из-за невозможности объявить метод как noexcept и генерации лишнего кода обработчика.

Ответы: >>504954

27 Июн, 20:13 #176 #504953

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

Ответы: >>504959, >>504973

27 Июн, 20:14 #177 #504954

>>504950
Раз в полчаса будет существенно тормозить.
Байтоёб детектед.

Ответы: >>504960

27 Июн, 20:18 #178 #504959

>>504953
Либо здесь либо здесь: http://progbook.ru/ http://www.proklondike.com/ больше негде.

27 Июн, 20:18 #179 #504960

>>504954
Да ты охуел. Если у меня маленький метод, который в десять строчек скачивает мамку, я должен, блядь, генерить обработчик, который в три раза больше займет в VC, да еще и вызываться будет десять раз на один нормальный возврат мамки? Увольте-с, continue здесь меньшее зло.

15 Кб, 420x242

27 Июн, 20:48 #180 #504973

>>504953
Вот залил. Храниться вечно. Но можно настроить и по другому если надо.
http://my-files.ru/cdm4zk
my-files.ru/Download/cdm4zk/%d0%94%d0%b6%d0%be%d1%81%d0%b0%d1%82%d1%82%d0%b8%d1%81%20%d0%9d.%d0%9c.%20-%20%d0%a1%d1%82%d0%b0%d0%bd%d0%b4%d0%b0%d1%80%d1%82%d0%bd%d0%b0%d1%8f%20%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d0%be%d1%82%d0%b5%d0%ba%d0%b0%20C%20%20.%20%d0%a1%d0%bf%d1%80%d0%b0%d0%b2%d0%be%d1%87%d0%bd%d0%be%d0%b5%20%d1%80%d1%83%d0%ba%d0%be%d0%b2%d0%be%d0%b4%d1%81%d1%82%d0%b2%d0%be%20-%202014.djvu
http://my-files.ru/Download/cdm4zk/Джосаттис Н.М. - Стандартная библиотека C . Справочное руководство - 2014.djvu

Ответы: >>504974

27 Июн, 20:50 #181 #504974

>>504973
Как в ссылки русские буквы вписать?
http://my-files.ru/Download/cdm4zk%20Джосаттис%20Н.М.%20-%20Стандартная%20библиотека%20C%20.%20Справочное%20руководство%20-%202014.djvu

27 Июн, 20:58 #182 #504976

>>504925
Нечто вроде
[code = "rust"]
repeat(request).map(|req| get_responce(req + "&nonce=" + get_time().to_string())).find(|ref r| r.is_ok()).unwrap()
[/code]
у вас в плюсах не принято?

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

Ответы: >>505018

27 Июн, 21:03 #183 #504979

>>504862
>Какие преимущества есть у явной специализации перед простой функцией, помимо того, что шаблон создаётся только тогда, когда нужен, а функция — всегда?
Ещё одна попытка.

sage 27 Июн, 21:12 #184 #504984

>>504355
Какая нахуй разница, где я нахожусь, быдлан. Я void main() { exit(0); } не пишу.

>>504426
>возьмут пизду ради пизды
При чём тут её половая принадлежность?Я как-то акцентировал внимание на этом, быдло?

27 Июн, 21:35 #185 #504990

Я новенький новичок ньюфаг, начал поглощать Лафоре, нужен компилятор С++. Пытался искать на сайте мелкомягких - у них всё через жопу. На трекерах нашел Visual Studio 2013 - это оно?

Ответы: >>504992, >>504994, >>505024

27 Июн, 21:41 #186 #504992

>>504990
Нет. Тебе надо GCC, но лучше G++.

Ответы: >>504995

27 Июн, 21:42 #187 #504994

>>504990
Гугл -> visual studio 2013 (или даже 2015) -> первая ссылка -> ??? -> profit

27 Июн, 21:42 #188 #504995

>>504992
Спасибо.

Ответы: >>504997

27 Июн, 21:45 #189 #504997

>>504995
Вот ссылка. Он тебе не будет насильно пихать гуй и виндосовскую библиотеку.
http://sourceforge.net/projects/codeblocks/files/Binaries/13.12/Windows/codeblocks-13.12mingw-setup-TDM-GCC-481.exe/download

Ответы: >>505292

27 Июн, 22:18 #190 #505018

>>504976
У нас есть do {response=getResponse (request + "&nonce=" + std::to_string (getTime ()))} while (!response.hui_sosi), но это нечитаемо же. И масштабируется плохо.

27 Июн, 22:25 #191 #505024

>>504990
Ну короче идешь в comp.lang.c++ и спрашиваешь, файлы тоже где-то там лежат. Компилятор-то Бьерн периодически выкладывает туда. В интернете я как-то видел архив с компилятором, но чего-то не могу найти.

9 Кб, 402x294

28 Июн, 13:50 #192 #505292

>>504997
А что тут выбирать?

Ответы: >>505312

109 Кб, 1920x1162

28 Июн, 14:34 #193 #505312

>>505292
Кто юзает кодблокс - поясните, как тут компилировать программы?
ВОт, копировал простейший код, а как его исполнить?

Ответы: >>505353, >>505361

28 Июн, 15:59 #194 #505353

>>505312
F9

Ответы: >>505381, >>505386

28 Июн, 16:08 #195 #505361

>>505312
>build>build and run Или как-то так

Ответы: >>505381, >>505386

28 Июн, 16:10 #196 #505368

И кстати о C::B
>Code::Blocks 13.12 is here!
>Friday, 27 December 2013 20:00
Он таки умер?

sage 28 Июн, 16:36 #197 #505381

>>505353
>>505361
Хватит очевидную зелень кормить.
даже если не зелень, то пусть лучше нахуй пойдет, чем в нашу благородную профессию с такими вопросами

100 Кб, 1818x1029

97 Кб, 1805x1021

28 Июн, 16:50 #198 #505386

>>505361
>>505353
Поясните, если нажимаю F9, то выскакивает такая табличка, при чем если я нажимаю ДА, она всё равно выскакивает, а если нажимаю НЕТ, то выскакивает окно на 2, т.е. без "Хелло Ворлд!".

Ответы: >>505513, >>506979

28 Июн, 20:53 #199 #505513

>>505386
даун блядь, нахуя ты лезешь в программирование?
Скачай Visual Studio

Ответы: >>505578, >>505726

28 Июн, 21:49 #200 #505553

Для передачи в функцию что лучше использовать - указатель или ссылку?

Ответы: >>505558, >>505560, >>505746

28 Июн, 21:56 #201 #505558

>>505553
Значение.

28 Июн, 22:04 #202 #505560

>>505553
Если не меняешь изнутри - константную ссылку, значение. Если меняешь - указатель. Так будет заметнее, что меняешь.

Ответы: >>505665

sage 28 Июн, 22:30 #203 #505578

>>505513
Да заебал, это ЗЕЛЕНЬ.
[НЕ КОРМИТЬ]
Так понятно?

Ответы: >>505726

29 Июн, 01:48 #204 #505665

>>505560
Если не нужен null, то используй ссылки

29 Июн, 09:39 #205 #505726

>>505513
VS слишком нагруженный, а кодблокс простой и есть портативная версия.

>>505578
Я не зелёный.

29 Июн, 11:15 #206 #505746

>>505553
Если читаешь один раз -- точно константную ссылку.

Если меняешь один раз -- точно ссылку.

Ответы: >>505762

29 Июн, 11:57 #207 #505762

>>505746
Мутабельная ссылка - это бомба, нужно использовать указатели, там сразу видно, что что-то не то.

Ответы: >>506146

29 Июн, 23:03 #208 #506146

>>505762
Что сказать-то хотел? Вообще не использовать ссылки для изменения значений?

Ответы: >>506161, >>506206

29 Июн, 23:22 #209 #506161

>>506146
Он странный какой-то. Используй ссылки как можно чаще. А константные ещё чаще.

30 Июн, 01:26 #210 #506206

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

Ответы: >>506247, >>506821

30 Июн, 08:11 #211 #506247

>>506206
- На работу! Чисти функцию, блядь! На! Чисти функцию!
- Чем, указателями, что ли, я буду?
- Чисти функцию! Да садись уже! Садись. Чисти!
- Блядь...
- Чтобы побочных эффектов не было!
- Как я буду на крестах-то чистить?
- Чисти!
- Покажи мне.
- Чисти!
<тимлид уходит>
- Епты. Блядь... Говно, блядь... Как в нем чистить, еб твою мать... Все ебанулись. Бля... Епта...
<пытается передать параметры через константные указатели, в это время тимлид возвращается>
- Чисти, чисти, сука. <достает хаскель> Вот как, блядь, нужно чистить,вот,быстро. Быстро. Раз-раз! Чисти, чисти, чисти-чис-чис-чиж-чж-чижь! Чисти! Говно! Чисти!
- Бля, у тебя получается классно, давай!
- Давай! Работай!
- Не буду я в этом писать, блядь! Не буду я!
- Пошел нахуй тогда отсюда, пошел! Блядь, ничего не можешь сделать, пошел нахуй, говно!

sage 30 Июн, 16:24 #212 #506462

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

30 Июн, 18:31 #213 #506543

Братишки, а кто-нибудь знает, где можно спиздить относительно свежую PVS-Studio? Я нашел только оче старую версию, да и та криво крякнутая и не работает.

Ответы: >>506546

30 Июн, 18:37 #214 #506546

>>506543
Тебе зачем? Пощупать хватит и триала. На постоянной основе пользуюйся clang-toolkit и cppcheck

Ответы: >>506558

30 Июн, 18:49 #215 #506558

>>506546
Мне прельстива его заточенность под студию. Для cppcheck тоже вроде как есть плагин, но он, насколько я понял, нерабочий то ли он ничего не показывает, пока полностью не проверит весь проект, то ли багнутый, но когда тыкаешь запуск, то нихуя не выводится. А standalone-версия у него вроде нормальная, но ее же вечно забываешь запустить, а я хотет, чтобы сразу можно было чекать, при написании кода, а не переключаться хуй знает куда.

Ответы: >>506575

30 Июн, 19:03 #216 #506575

>>506558
Добавь external tool, для папки и текущего файла. 3 минуты и у тебя рабочие тулы

30 Июн, 23:19 #217 #506821

>>506206
А если у меня цель функции -- изменить значение по ссылке? Например, потому что я не хочу копировать параметр, чтобы потом изменить его один раз, чтобы потом вернуть его как результат функции, чтобы потом результат функции скопировался в ту переменную, которую я до этого передавал как входной параметр?

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

А ещё функция может быть предназначена для того, чтобы изменить например два инта и один чар, и что теперь, по каждому чиху Struct лепить?

Ответы: >>506822, >>506900, >>506964, >>506972

sage 30 Июн, 23:20 #218 #506822

>>506821
Блядь,отписался без сажи в Алёна-треде. Всё, я зашкварен.

01 Июл, 01:05 #219 #506900

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

408 Кб, 472x630

01 Июл, 07:00 #220 #506961

Почему в шапке нету Макконнела?

Ответы: >>506967, >>507476

01 Июл, 07:17 #221 #506964

>>506821
Изменяй по указателю. Тогда программист увидит foo(&x) и поймет, что x, скорее всего, меняется.
>А ещё функция может быть предназначена для того, чтобы изменить например два инта и один чар, и что теперь, по каждому чиху Struct лепить?
Для двух интов и чара ты можешь и std::tuple вернуть, тогда не придется заставлять пользователя создавать int tmp1 там, где ему не надо.

01 Июл, 07:40 #222 #506967

>>506961
Потому что Макконнелл писал не про кресты. А книга хорошая у него.

Ответы: >>507476

01 Июл, 07:55 #223 #506972

>>506821
1. Преимущественно следует делать через указатели, это верно.
2. Иногда использование ссылок предпочтительнее. В частности, когда в метод метод может не просто изменять аргумент, а портить его, перемещая. Если ты в любом случае готовишь временный prvalue-объект (напрямую или делаешь его с помощью std::move), то использование мутабельной rvalue reference в таком методе предпочтительнее использования указателя, ибо с указателями создание объекта для передачи придется отделять от взятия адреса для передачи в метод. Такой способ использования ссылок-параметров не даст выстрелить себе в ногу, потому что для вызова над ценным объектом энивей придется явно указать std::move для него.
3. Проблема преувеличена даже в случае обычной ссылки. Если метод возвращает void и имеет имя getTvoyaMamka, то вряд ли его используют в надежде, что он ничего не сделает с параметрами. Нужно думать головой, и все будет хорошо.

01 Июл, 08:26 #224 #506977

>>504936
Рассмешил, пес.

01 Июл, 08:30 #225 #506978

https://youtu.be/smqT9Io_bKo

01 Июл, 08:30 #226 #506979

>>505386
Заебал, скачай Dev-c++ и не еби мозги. А по факту посмотри видео и с помощью блокнота и конскольки собери хоть одну программу.

01 Июл, 11:45 #227 #507033

В массиве из 10 чисел найти минимальный элемент и поделить на него остальные элементы.
Ананасы, нид халп. Си++ или С

Ответы: >>507065

01 Июл, 12:50 #228 #507065

>>507033
for (auto & current : array) current /= *std::min_element (std::begin (array), std::end (array));

Ответы: >>507138

01 Июл, 14:43 #229 #507138

>>507065
Пасяб

01 Июл, 15:35 #230 #507172

>>504782
>>504733
Ну ахуеть. Неправильно оказывается было ставить стабильную версию. Поставил RC все заработало.

Ответы: >>507175

01 Июл, 15:41 #231 #507175

>>507172
Ну хуй знает. Я как раз сегодня попробовал в перенос проекта на RC, оказалось, что это предрелизное говно кишит багами, блядь. Не может распарсить инициализацию с шаблонами вне конструктора в духе члена TvoyaMamka mamka = Mamkogenerator <TvoyaMamka>::getObject ();. Какие-то охуительные утечки при создании std::thread, причем вообще на стеке. Обоих багов в 13 релизной не было, ну я и вернулся на нее, пока не поздно. Ждем RTM короче.

C++ боль. 01 Июл, 17:59 #232 #507302

cv::Mat AtWA(const cv::Mat& q, const cv::Mat& w) {
cv::Mat dst;
cv::dft(q, dst, cv::DFT_SCALE|cv::DFT_COMPLEX_OUTPUT);

Тип q - матрица (n,1) на. В dst лежат случайные цифры (23, миллион, -inf). Каждый раз разные. Явно в памяти какая-то лажа. Но как такое может быть?

Ответы: >>507320, >>507408, >>507952

01 Июл, 18:17 #233 #507320

>>507302
>w
>cv
>AtWA
Ты символы экономишь, сука? Давай переделывай интерфейс, имей уважение к анону.

Ответы: >>507348

01 Июл, 18:39 #234 #507348

>>507320
русские форумы.тхт
Это не я экономлю символы, а Chris Montgomery.

Ответы: >>507382

01 Июл, 19:02 #235 #507382

>>507348
Ну, дружочек, расшифровывай тогда. Мне-то откуда знать, что там у тебя за cv::Mat.

Ответы: >>507388

01 Июл, 19:06 #236 #507388

>>507382
Если ты не знаешь, что это, ты вряд ли ответишь на мой вопрос. Вообще это больше крик души.

Ответы: >>507391, >>507399

01 Июл, 19:08 #237 #507391

>>507388
Я с OpenCV знаком только на универском уровне, распознавание монеток и вот это все. Когда начинается байтоебство с возвратом говна через параметры и ФЛАГАМИ | НАСТРОЙКАМИ, мне сразу хочется взять и уебать.

01 Июл, 19:11 #238 #507399

>>507388
Да тут не важно в общем-то, OpenCV это или нет. Явно у входного параметра какой-то кривой форма. Может его транспонировать, лол.

01 Июл, 19:22 #239 #507408

>>507302
Там нет требования, чтобы q == dst?

Ответы: >>507412

01 Июл, 19:24 #240 #507412

>>507408
Нету, но попробовал dst(q,q - не помогло.

Ответы: >>507418

01 Июл, 19:27 #241 #507418

>>507412
Ты для начала тогда глянь, эта хуета в dst, она меняется после фурьеризации, или это просто мусор из-за того, что не инициализировано. Вообще, запусти отладку, залезь поглубже и смотри, что там происходит же.

01 Июл, 19:27 #242 #507421

>>503274
Драсте, выучил я тут, короче, похапе и застрял на том, что для дальнейшей практики нужно покупать ебучий хост. К тому же в вакансиях на фрилансе требуется целая хуева туча каких-то фреймворков и MVC. Решил выучить язык с более доступной средой разработки - кресты. Вроде он котируется, как сложный и вакансии на нем должны быть. Поясните за фриланс на крестах желательно на елансе и прочих зарубежных фирмах. Какое должно быть портфолио и все такое?

Ответы: >>507435, >>507442

01 Июл, 19:36 #243 #507435

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

Ответы: >>507441

01 Июл, 19:40 #244 #507441

>>507435
Я могу разобраться с проблемой бесплатного хостинга, но там нет табблицы ИННОБ дб, а платить штуку за три месяца на платном только чтобы ее выдрочить, я не собираюсь.
Расскажи подробнее про портфолио и хуйню, которую нужно наклепать, чтобы работать на крестах на фрилансе.

Ответы: >>507444, >>507477

01 Июл, 19:41 #245 #507442

>>507421
Вот тебе портфолио:
int i = 14;
i = ++i + ++i;
std::cout << i << std::endl;
Что выведется?

Ответы: >>507464, >>507551

01 Июл, 19:42 #246 #507444

>>507441
Ну я, например, пропатчил опенсорсный компилятор на гитхабе.

Ответы: >>507458

01 Июл, 19:48 #247 #507458

>>507444
и все? и потом кинул ссылку на гитхаб и получил жаботу на фрилансе?

Ответы: >>507488

900 Кб, 600x251

01 Июл, 19:51 #248 #507464

>>507442
числа от 0 до 23?

01 Июл, 20:21 #249 #507469

Вопрос по указателям можно задать тут? Небольшая проблема с Ошибкой сегментацией.

Ответы: >>507484

01 Июл, 20:29 #250 #507476

>>506967
>>506961
Что за книга?
Для нубов?
Читая Прата.

Ответы: >>507482

01 Июл, 20:29 #251 #507477

>>507441
В чем проблема нахуярить на виртуалке?

Ответы: >>507495

01 Июл, 20:38 #252 #507482

>>507476
Стив Макконнелл - Совершенный код. Там не про детали проектирования и тем более не про синтаксис крестов, а общие рекомендации, как улучшить качество кода, в применении к любому языку.

Ответы: >>507489

01 Июл, 20:40 #253 #507484

>>507469
Используй container.at () вместо container [] жи.

01 Июл, 20:44 #254 #507488

>>507458
Если для тебя это "и все", то да, и все. Но вообще это если у тебя вопрос стоит о "а фрилансе требуется целая хуева туча каких-то фреймворков и MVC", то это нихуя не и все. Ты документацию на llvm видел?

01 Июл, 20:48 #255 #507489

>>507482
Для нуба сойдет или слишком непонятно?

Ответы: >>507490

01 Июл, 20:52 #256 #507490

>>507489
Смысла нет. Тебе просто буду чужды те проблемы, что обсуждаются в книге.

Ответы: >>507491

01 Июл, 20:53 #257 #507491

>>507490
Это тоже может быть полезно, зависит от склада мышления.

01 Июл, 21:01 #258 #507493

можно спиздить компилятор с хабра и выдать за свой?

01 Июл, 21:02 #259 #507495

>>507477
в том, что я настолько туп, что не могу и не хочу настраивать денвер или сам пхп.

Ответы: >>507497

01 Июл, 21:05 #260 #507496

Господа, вопрос: если хочется делать именно игрушку, то что лучше выбрать -- привычный Qt или изучение sfml в процессе?

01 Июл, 21:06 #261 #507497

>>507495
Тогда ты не сможешь в фриланс на крестах. Попробуй во фриланс на экселе/vb (я не смеюсь, за это тоже платят).

Ответы: >>507508

01 Июл, 21:15 #262 #507505

invalid operands of types 'double' and 'double [(((size type)(((size type)N) + -1)) + 1)]' to binary 'operator*' может кто пояснить, в чём проблема?

Ответы: >>507606

01 Июл, 21:21 #263 #507508

>>507497
Нет, я постоянно слышу про кресты или шарп. Так что я выбираю между ними.

Ответы: >>507510, >>507513

01 Июл, 21:25 #264 #507510

>>507508
Но как ты тогда решишь проблему того, что ты слишком тупой?

Ответы: >>507511, >>507513

01 Июл, 21:26 #265 #507511

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

Ответы: >>507512, >>507515

01 Июл, 21:27 #266 #507512

>>507511
>бейсик
студио т.е.
а вообще даже вакансий для крестовика не нашел в своем мухосранске. лел.

01 Июл, 21:27 #267 #507513

>>507508
>>507510
Ну подскажите, в чём ошибка-то.

01 Июл, 21:28 #268 #507514

Анон, как ты смотришь на книгу "Программирование. Принципы и практика использования C++ Бьерн Страуструп" в качестве первой книги для ньюфага^10?

Ответы: >>507609, >>507956

01 Июл, 21:29 #269 #507515

>>507511
Так проблемы не со средой, а с тобой будут. Видишь: ты уже этого не понял. Иди форму в экселе хуярь.

Ответы: >>507521

01 Июл, 21:41 #270 #507521

>>507515
Он похож на зеленого.

01 Июл, 22:22 #271 #507551

>>507442
Да все уже давно знают, что UB

Ответы: >>507611

01 Июл, 23:45 #272 #507606

>>507505
Умножаешь дабл на массив, схуяле тут не должно быть проблемы?

Ответы: >>507696

01 Июл, 23:46 #273 #507609

>>507514
Читай, если уверен, что мотивация не пропадет от изложения без щюток, примеров и упражнений.

01 Июл, 23:47 #274 #507611

>>507551
Unspecified или undefined?

Ответы: >>507669

02 Июл, 01:15 #275 #507669

>>507611
Undefined?

02 Июл, 06:05 #276 #507696

>>507606
А у меня данные для расчёта этого числа, лежат в массиве. Что тогда делать?

Ответы: >>507697

02 Июл, 06:12 #277 #507697

>>507696
http://pastebin.com/QvPxW1fm
выглядит так.

Ответы: >>507819

02 Июл, 06:51 #278 #507702

Почему у меня ошибки сборки вылезают?
1>c:\users\администратор\desktop\visual studio 2013\projects\consoleapplication4\consoleapplication4\consoleapplication4.cpp(13): error C2065: cout: необъявленный идентификатор
1>c:\users\администратор\desktop\visual studio 2013\projects\consoleapplication4\consoleapplication4\consoleapplication4.cpp(14): error C2065: cout: необъявленный идентификатор
1>c:\users\администратор\desktop\visual studio 2013\projects\consoleapplication4\consoleapplication4\consoleapplication4.cpp(14): error C2065: endl: необъявленный идентификатор
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Ответы: >>507713, >>507719, >>507752

02 Июл, 07:44 #279 #507713

>>507702
Идентификатор объяви

02 Июл, 08:22 #280 #507719

>>507702
забыл или #include <iostream> или using namespace std;

204 Кб, 379x301

02 Июл, 10:24 #281 #507752

>>507702
>русек

Ответы: >>507828

02 Июл, 13:08 #282 #507819

>>507697
Ты заебал во все треды срать своим говнокодом. Серьезно, твоя прога вызывает почти физически ощутимое отвращение.

Что значит "данные лежат в массиве"? Ты хочешь умножить вектор на константу? Тогда сделай проход по массиву и умножь на каждый элемент

02 Июл, 13:22 #283 #507828

>>507752
https://www.reddit.com/r/programming/
Больше не приходи

02 Июл, 14:19 #284 #507871

Анон, можно ли встроенным sort'ом отсортировать многомерный массив по одной из размерностей? (Объяснение моего реквеста уровня /b: есть int m[n][2], m[0] - порядковый номер человека, m[1] - длина его хуя, хочется чтобы после сортировки у человека номером m[n-1][0] был самый большой m[n-1][1](=пинус, кто совсем ДЦП)).

Ответы: >>507876, >>507920

02 Июл, 14:21 #285 #507876

>>507871
>m[0] - номер
>m[1] - палка
фикс

Ответы: >>507877

02 Июл, 14:22 #286 #507877

>>507876
ДА ЕБАНЫЙ В РОТ ЭТОЙ РАЗМЕТКИ

02 Июл, 14:35 #287 #507885

Скажи мне, двач. Есть у нас игровое поле в клеточку. Многослойное. Например, как в цивилизации: первый слой -- вода, второй -- травка и прочая территория, третий -- холмы и горы, четвертый -- дороги и реки, пятый -- леса, города и шахты. Собственно, вопрос: как лучше это все хранить в памяти?

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

Самая банальная идея -- хранить просто матрицу X на Y. Но это, мягко говоря, растратно во многих случаях. Например, если у нас 70% воды, то 70% матрицы будут занимать пустые указатели. Таким образом, мы проебываемся и по скорости работы, и по памяти.

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

В общем, расскажите, как это делают умные ребята?

Ответы: >>507891, >>507929

02 Июл, 14:47 #288 #507891

>>507885
В цивилизации разве многослойное поле? Там просто матрица с объектами.
Бесконечная карта - чанки (то есть те же матрицы), процеурная генерация и хранение диффов между сгенерированным и фактически. Майнкрафт, в общем.

02 Июл, 15:23 #289 #507920

>>507871
Конечно. Сейчас набросаю, как примерно это выглядит.

Ответы: >>507970

02 Июл, 15:35 #290 #507929

>>507885
Гугли способы представления разреженных массивов. Вкратце: при любом способе хранения, отличном от обычного, скорость доступа будет ухудшена, твоя задача - найти компромисс между скоростью и размером. Например, все ненулевые элементы хранятся в виде красно-черного дерева. Так как оно сбалансированное (оптимальное по глубине), ты будешь быстро (за O (h)) доставать и изменять элементы, удалять медленнее). С матрицей абсолютно то же самое будет, хранишь дерево для каждой строки, например.

02 Июл, 16:00 #291 #507952

>>507302
В общем, это был баг в opencv.

sage 02 Июл, 16:13 #292 #507956

>>507514
На Страуструпа я вообще плохо смотрю.

Ответы: >>507988

02 Июл, 16:43 #293 #507970

>>507920
[code lang="cpp"]
const size_t n = 100;
\tconst size_t k = 2;
\tconst size_t p = 1; //По какой размерности сортируем
\tint m [n][k];

\tint begin = reinterpret_cast <int > (m);
\tstd::stable_sort (begin, begin + n k, [begin, k, p] (const int & first, const int & second)
\t{
\t\treturn ((0 == (&second - &first) % k) && ((&first - (&first - begin) % k + p) < *(&second - (&second - begin) % k + p)));
\t});
[/code]

02 Июл, 17:25 #294 #507988

>>507956
Почему?

02 Июл, 17:33 #295 #507990

В code::blocks можно поменять название переменной сразу везде, по всей программе?

Ответы: >>507994

02 Июл, 17:38 #296 #507994

>>507990
Контекстное меню - code refactoring - rename symbols не работает?

03 Июл, 17:07 #297 #508523

А можете пояснить за вектора?
Где-то видел, что у них быстрая вставка только в конец массива. Это так? Насколько будут медленнее, например, .insert(a.begin(), 1234) или .insert(a.begin() + 10, 1234) по сравнению с простым .insert(a.end(), 1234)?

Ответы: >>508545

03 Июл, 17:30 #298 #508545

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

69 Кб, 450x524

03 Июл, 18:28 #299 #508579

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

template <typename T>
class List
{
public:
\tList()
\t{
\t\tT (List<T>::push)() = &List<T>::push_first;
\t}

\tT (push)();
\tT push_first() {}
\tT push_other() {}
};

Ответы: >>508580, >>508584, >>508586, >>508601

03 Июл, 18:30 #300 #508580

>>508579
Прошу прощения за \t

03 Июл, 18:34 #301 #508584

>>508579
> T (List<T>::push)() = &List<T>::push_first;
И что ты этим пытался добиться?

Ответы: >>508592

03 Июл, 18:36 #302 #508586

>>508579
Патамушто методы должны быть статическими

Ответы: >>508591

03 Июл, 18:41 #303 #508591

>>508586
То есть это нельзя сделать в принципе?

Ответы: >>508593

03 Июл, 18:41 #304 #508592

>>508584
Ты вопрос читал?

03 Июл, 18:42 #305 #508593

>>508591
Именно.

03 Июл, 18:46 #306 #508601

>>508579
Если по-простому, то объявляешь указатель как T (List <T>::*ptr) () = &push_first;
Но нормальные посоны давно юзают std::function, в твоем случае это будет выглядеть как std::function <T ()> push { std::bind (&push_first, this) }; Тогда решается проблема с тем, от имени какого объекта ее вызывать.

03 Июл, 19:17 #307 #508616

Программисты, как сделать десктопное приложение в стиле metro, например как visual studio, плеер мередиан, офис и т.д. Все что нашел в интернете это как создать metro приложения, а интересует имеено десктоп. Неужели без C# никак

Ответы: >>508619, >>508622

03 Июл, 19:20 #308 #508619

>>508616
> metro
> без C#
А как ты себе представляешь шарпоговно без собственно шарпа?
Можешь попробовать Qt, виджеты умеют в нативные элементы на всех 3-х основных платформах. А на Qml можешь вообще что угодно нарисовать.

Ответы: >>508620

03 Июл, 19:22 #309 #508620

>>508619
Ну хуй знает как, может уже библиотеки какие-нибудь завезли. Самому winapi дрочить не хочется, похоже придется на qt все делать

03 Июл, 19:22 #310 #508622

>>508616
В VS2015 вроде какую-то библиотеку для крестов завезли.

Ответы: >>508624

03 Июл, 19:26 #311 #508624

>>508622
Узнать бы какую и доки к ней

Ответы: >>508634

03 Июл, 19:44 #312 #508634

>>508624
https://dev.windows.com/en-us/develop

Ответы: >>508652, >>509139

03 Июл, 20:22 #313 #508652

>>508634
Кажется это то что нужно, спасибо

03 Июл, 21:50 #314 #508692

Анон, ответь на нубский вопрос, я пытаюсь разбираться с стл, но не понимаю некоторых вещей, вот к примеру начало файла list.h:

template<class _Mylist,
class _Base = _Iterator_base0>
class _List_unchecked_const_iterator
: public _Iterator012<bidirectional_iterator_tag,
typename _Mylist::value_type,
typename _Mylist::difference_type,
typename _Mylist::const_pointer,
typename _Mylist::const_reference,
_Base>

Что такое _Mylist::value_type, что передается в этот шаблон?

Ответы: >>508862

03 Июл, 23:41 #315 #508749

Поясните, а Прата из шапки нормальный автор и его книга?
Я, вот, читаю, но там используется
cin.get();
cin.get();
return 0;
Заместо getch_
Это правильно или книга уже устарела?

Ответы: >>508792, >>508865

04 Июл, 01:10 #316 #508792

>>508749
оба два варианта устарели

Ответы: >>508877

04 Июл, 01:39 #317 #508804

У меня выдает ошибку при вызове функции с двумерным массивом. Что с этим делать?

Ответы: >>508805, >>508806, >>508809

04 Июл, 01:42 #318 #508805

>>508804
Игнорировать.

04 Июл, 01:43 #319 #508806

>>508804
Осваивать метлу, программирование тебе не дано

Ответы: >>508808

04 Июл, 01:47 #320 #508808

>>508806
Спасибо.

04 Июл, 01:47 #321 #508809

>>508804
Какая ошибка? Как вызываешь? В общем код в студию, что ж вы такие непонятливые

Ответы: >>508811

04 Июл, 01:52 #322 #508811

>>508809
К сожалению сейчас не могу доставить код. Да похуй уже. Лучше метлу буду осваивать.

3161 Кб, 3888x2592

7 Кб, 134x238

04 Июл, 02:36 #323 #508833

То самое чувство когда ты без работы а ты крестопидор.

Ответы: >>508837

04 Июл, 02:43 #324 #508837

>>508833
Ты это я, дрочил 5 лет в универе C/C++, в то время когда одногрупники занимались вебом. Теперь у меня нет постоянной работы, а не постоянная это курсачи и лабы

04 Июл, 09:04 #325 #508862

>>508692
Имя типа же. Там в описании шаблонного класса list что-то вроде typedef T value_type. Это сделано, чтобы ты мог узнать тип значения после инстанцирования шаблона, написав list <TvoyaMamka>::value_type. Широко использовалось, когда auto не было, и по-другому тип значения, которое ты хочешь создать, часто было не узнать. Еще применяется в метапрограммировании, например, есть куча служебных структур-шаблонов, в которых ничего нет кроме такого typedef. И ты можешь писать std::is_same <MoyaMamka, TvoyaMamka>::value, и типы сравнятся еще на этапе компиляции, а не с лишними тормозами как при использовании typeid.

04 Июл, 09:20 #326 #508865

>>508749
Поясняю. Автор нормальный, нужно читать самое последнее издание (оно емнип второй половины нулевых). Книги старые, в первых изданиях и не такое встретишь. Далее. Имена с "_" в библиотеках обычно служебные, code style предписывают обычно именовать так приватные члены (с "_" на конце). То, что они доступны - ничего не значит, часто в стандартах ничего про них нет, т.е. интерфейс не гарантируется, и в любой момент разработчик компилятора может что-то поменять внутри так, чтобы не отвалились только нормальные имена. Таким образом, getch_ использовать нежелательно, он просто не предназначен для использования тобой. istream::get () - это ОФФИЦИАЛЬНЫЙ ТМ метод, его использовать можно, но уместность его ограничена. Видишь ли, считывание по одному символу считается дурным тоном из-за того, что тогда резко усложняется возможность автоматической оптимизации ввода автором библиотеки. Ввод работает далеко не последовательно, по факту символы считываются пачками, а ты использованием get() для считывания из файла вставляешь им палки в колеса. Считывание больших кусков по cin >> TvoyaMamka поэтому гораздо предпочтительнее циклов с istream::get (). Но если ты считываешь с экрана именно по одному символу например, у тебя ебанутый текстовый интерфейс (Y/N)?, то можешь делать get (). Хотя все привыкли к ">>" и это все же считается лучшим способом даже для считывания символов по одному, ибо работа не замедляется, писать меньше, а именование универсальное для всех классов operator>> () обычно занимается вводом, а метод можно назвать get (), или getChar (), или zabirayuSimvol (), такое разнообразие отвлекает. И последнее. Использование get () для того, чтобы программа не закрывалась после завершения - это худшее, что ты только вообще мог сделать. Одновременно показывается и то, что ты запускаешь ее мышкой при запуске из консоли весь вывод сохранится и без get (), разумеется, и то, что ты необучаемый и не можешь нагуглить, как узнать о нажатии клавиши без считывания самого символа.

Ответы: >>508877

04 Июл, 10:34 #327 #508877

>>508865
>>508792
Книга из шапки 2003 года, вроде.
Т.е. лучше читнуть другую книгу? Тогда какую? В шапке для нюфань все примерно такого года.

Ответы: >>508956

04 Июл, 13:40 #328 #508956

>>508877
https://vk.com/doc10903696_280548529?hash=13aad83fa0a163fa65&dl=a86618dc508b835a47

Ответы: >>508961

114 Кб, 688x366

04 Июл, 14:01 #329 #508961

>>508956
В ней тоже используется эта конструкция. Но ладно, раз 2012 год, вроде еще актуально.
Спасибо.

Ответы: >>508964, >>508981

04 Июл, 14:04 #330 #508964

>>508961
Я в сперме system("pause") использовал, пока shift-f5 не открыл

Ответы: >>509017

04 Июл, 14:37 #331 #508981

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

Ответы: >>508994

63 Кб, 1914x1135

04 Июл, 15:00 #332 #508994

>>508981
>Visual Studio
А кодблокс нормальный? Мне понравилось что он не такой громоздкий и не устанавливает гиг дополнительной хуйни.
Даже можно портативным сделать.

Ответы: >>509003, >>509028

04 Июл, 15:08 #333 #509003

>>508994
Нормальный. Студия для С++ имеет смысл только в связке с visual assist x.

Ответы: >>509022

sage 04 Июл, 15:34 #334 #509017

>>508964
ctrl+F5 , ты хотел сказать? Но это запуск без дебага.

Ответы: >>509020

04 Июл, 15:35 #335 #509020

>>509017
Сажу сними, заебал.

Ответы: >>509798

04 Июл, 15:37 #336 #509022

>>509003
В пятнадцатой студии уже из коробки есть все для рефакторинга.

Ответы: >>509027

04 Июл, 15:40 #337 #509027

>>509022
Видишь, какой я немодный теперь. emacs+cmake+qtcreator для gui-дебага - идеальная связка для меня.

Ответы: >>509048

04 Июл, 15:41 #338 #509028

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

04 Июл, 16:13 #339 #509048

>>509027
> emacs+cmake+qtcreator
Эталонный говноед.

Ответы: >>509051

04 Июл, 16:15 #340 #509051

>>509048
Что тебе не нравится?

Ответы: >>509091

04 Июл, 16:59 #341 #509091

>>509051
Например, текстовый редактор для программирования и кутэ?

Ответы: >>509094

04 Июл, 17:06 #342 #509094

>>509091
Я вообще кьютом не пользуюсь. QtCreator я использую только как фронтэнд к gdb - он хорошо работает с cmake-проектами, нативный, а не на java писан.
А "текстовый редактор для программирования" - а что еще можно использовать, не IDE же.

04 Июл, 21:04 #343 #509139

>>508634
Что-то не работает, или у меня руки из жопы, или надо ждать win 10

65 Кб, 451x758

04 Июл, 23:19 #344 #509174

Учу кресты. Не до конца понимаю что такое динамическая, стековая, и статическая память. И путаю ссылки и указатели. Что почитать? Может есть хорошие книги в которых этому глава посвящена чтобы не читать целиком? Или статьи? Гугл показал этот http://www.intuit.ru/studies/courses/2193/67/info курс. Вроде не большой, но делали его люди занимающееся рашкообразованием. Может стоит пройти? Там в литературе к курсу смотреть пик вроде ничего конкретно по этой теме нет, но может узнаете хорошие книги в которых затрагивается эта тема и что-то посоветуете.

Ответы: >>509319

05 Июл, 00:15 #345 #509192

Есть ли улучшения в скорости если использовать работу с файлами в стиле С, а не С++? Можно ли это сочетать с cin и cout?

Ответы: >>509197, >>509205, >>509324

05 Июл, 00:26 #346 #509197

>>509192
Если и есть то совсем не существенные, используй современные методы

Ответы: >>509201

05 Июл, 00:33 #347 #509201

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

Ответы: >>509206, >>509208

05 Июл, 00:48 #348 #509205

>>509192
В llvm он вообще запрещен:
#include <iostream> is Forbidden

The use of #include <iostream> in library files is hereby forbidden, because many common implementations transparently inject a static constructor into every translation unit that includes it.

Note that using the other stream headers (<sstream> for example) is not problematic in this regard — just <iostream>. However, raw_ostream provides various APIs that are better performing for almost every use than std::ostream style APIs.

Note
New code should always use raw_ostream for writing, or the llvm::MemoryBuffer API for reading files.

Ответы: >>509210

05 Июл, 00:59 #349 #509206

>>509201
Просто найди исходники реализации и посмотри, возможно внутри все сделано на старых сишных методах

Ответы: >>509210

05 Июл, 01:08 #350 #509208

>>509201
> Видел статью на хабре
Ты про эту http://habrahabr.ru/post/246257/

Ответы: >>509210

05 Июл, 01:20 #351 #509210

>>509208
Да. Только они там с файлами работают средствами системы, а нужно средствами программы.
>>509206
Не достаточно хорошо в этом разбираюсь.
>>509205
Нужен GCC без оптимизации и дополнительных библиотек, а там это можно.

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

Ответы: >>509213

05 Июл, 01:30 #352 #509213

>>509210
Ну смотри потоки в C++ типобезопасны, все проверяют за тебя. Быстрее конечно будут работать си методы, т.к. они всю проверку скинули на плечи разработчика. И вот если ты сам будешь делать сложные проверки, то можешь навелосипедить и будет даже хуже.

Ответы: >>509214

05 Июл, 01:37 #353 #509214

>>509213
>типобезопасны
Стоп. Какой с этого профит? В задачах все входные данные корректны. Это значит что он лишний раз проверку делает? Что-то такое подозревал, но разве это единственное отличие? И что можно навелосипедить? Прочитать string как int?

Ответы: >>509221

05 Июл, 01:51 #354 #509221

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

Ответы: >>509223

05 Июл, 02:03 #355 #509223

>>509221
Всё понял. Спасибо.

05 Июл, 02:23 #356 #509234

Хз где спросить, спрошу тут. Есть кто на Qt под виндой прогает? Есть ли способы автоматического обновления Qt? А то надоело все ручками делать. Только не говорите иди на линукс

Ответы: >>509259

05 Июл, 03:12 #357 #509244

Привет, программач!

Скажи, как можно реализовать для QGraphicsView (или QGraphicsScene) затемнение по маске? Хочется сделать смену дня и ночи в игруле -- думаю, как бы это реализовать.

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

Ответы: >>509555

05 Июл, 06:38 #358 #509259

>>509234
Qt maintaining tool?

712 Кб, 1205x1200

05 Июл, 12:16 #359 #509310

>>503274
Как именно работает ввод с потоков? Скажем, программа получает на вход мегабайт текста. Где этот текст храниться? Могу ли я два раза прочитать одни и те же данные с какого нибудь cin?
Простите если нескладно.

Ответы: >>509316

05 Июл, 12:43 #360 #509316

>>509310
Если сделать функцию int main (int argc, char * argv[]) то бегать по аргументам можно сколько угодно.

Ответы: >>509325

05 Июл, 12:48 #361 #509319

>>509174
Тебе нужен какой-то курс по архитектуре ЭВМ в отрыве от крестов. Обычно же учебная программа в вузах строится так: сначала изучают алгоритмы при помощи высокоуровневого языка у нас паскаль, у них питон, в котором не обязательно вообще знать что-то про память и указатели, не говоря уже про статическую/динамическую/автоматическую память. Потом изучают голую архитектуру ЭВМ и разбирают по частям простейшие программы на ассемблере. И именно в этот момент ты узнаешь про адреса, сегменты данных/команд/кучи, как работает стек, как работает вызов функции и вот это все. Затем изучают, как работает ОС и как она взаимодействует с программами. Здесь про процессы, распределение динамической памяти, разделение процессорного времени между программами, обычно на примере чистого си, потому что он достаточно низкоуровневый, но в отличие от ассемблера можно написать большую программу, не надорвавшись. И вот после того, когда ты все это узнал, ты начинаешь учить кресты. Если приступить к крестам сразу как многие пытаются, то ты будешь все время пытаться использовать его как паскаль/питон, стремясь убежать от непонятных низкоуровневых возможностей. И тогда вся суть крестов теряется, а побочные эффекты в виде множества возможностей выстрелить себе в ногу остаются. Так что либо хотя бы пробегись по всему четырехсеместровому курсу, либо учи питон и не дури. Книги: архитектура и ассемблер Пильщикова (короче) или Юрова (длиннее), операционные системы Таненбаума.

Ответы: >>509397

05 Июл, 12:51 #362 #509324

>>509192
Наоборот, библиотека ввода-вывода си это говняное медленное легаси. Поэтому при работе с большими данными рекомендуется опускать флаг совместимости iostream с ней, ускорение до 10000 раз. Такие дела.

05 Июл, 12:53 #363 #509325

>>509316
А если ввод уже в программе?

Ответы: >>509328

05 Июл, 12:59 #364 #509328

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

Твой второй вопрос: ну, например, ты считал их в переменную-строку, теперь символы скопировались в нее и лежат в оперативной памяти. Старые символы в потоке, возможно, удалились. Если ты считал и не схоронил в переменную, то они потеряны.

Ответы: >>509358

05 Июл, 13:56 #365 #509358

>>509328
То есть ничего определенного сказать нельзя?
Если на входе я получу X байт, и сохраню их в какой нибудь переменной, то нельзя точно сказать, сколько памяти будет есть программа, X или 2X байт, так?

Ответы: >>509359

05 Июл, 13:59 #366 #509359

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

Ответы: >>509371

05 Июл, 14:26 #367 #509371

>>509359
Спасибо, это и хотел узнать.

05 Июл, 14:35 #368 #509374

У меня есть очень классная идея, которую, возможно, придумали до меня, но она мне кажется мегаклассной. Хочу поделиться.
Элегантное решение для синхронизации критическими секциями.

Есть класс КритикалСекшн. У него есть коллекция туплов примерно таких<std::string, size_t count, HANDLE>. Конструктор класса принимает строку. Если нет в коллекции записи с такой строкой, создаёт критическую секцию соответсвтующую, добавляет в коллекцию, на сайз_т делает 1, входит в секцию. Если есть элемент уже, то просто входит в секцию, инкрементируя счётчик. На деструкторе выходит из секции, декрементирует счётчик. Если счётчик == 0, удаляет секцию.
Как это охуенно используется? А вот так:

[code]
void WINAPI yobaWriter(PVOID args) {
//...
{
auto s = Section("VAJNYY_FAYL");
//...
}
//...
}

void WINAPI yobaReader(PVOID args) {
//...
{
auto s = Section("VAJNII_FAIL");
//...
}
//...
}
[/code]

Можно ещё сделать какой-нибудь макрос
#define CrSection(x) auto _currentCriticalSection = Section(x);
Тогда можно использовать как

{
CrSection("VAJNII_FAYL");
}

Ответы: >>509377, >>509387, >>509404

05 Июл, 14:37 #369 #509377

>>509374
Можно вместо строк использовать какие-нибудь указатели, и будет аналог синхронайзд блоков в Джаве.

05 Июл, 15:07 #370 #509387

>>509374
1. Работа с туплами медленная.
2. Сравнение строк очень медленное.
3. Кому принадлежит коллекция? Классу как статическая? А как же расширяемость? Если понадобится две коллекции для разных задач, придется все перепиливать. очень. очень плохая идея.
4. Доступ к чему ты синхронизируешь? У тебя я вижу только регистрацию количества обработчиков файла, никакой синхронизации нет. Ни обработчик, ни код снаружи твоего класса вообще не узнают, был увеличен счетчик, или создана новая секция. Так что либо я тебя неправильно понял, либо ты сделал какой-то ебаный регистратор, который непонятно зачем считает обработчики и больше ничего не делает.
5. В любом случае синхронизация не обеспечивается. Без атомарных операций, очевидно, методы могут вызваться одновременно, увеличить счетчик один раз вместо двух и вообще хуй знает что натворить.
6. Раз уж ты вынужден использовать примитивы синхронизации, вместо вновь придуманного странного медленного велосипеда не лучше ли использовать возможности языка? Критические секции легко моделируются мьютексами, более того, в большинстве случаев они не нужны, потому что можно разбить задачу на независимые и использовать async/future.
7. Макросы.
8. WinAPI.
???????
FAIL

Ответы: >>509400

05 Июл, 15:47 #371 #509397

>>509319
Спрашивал же нужно ли перед изучением крестов асм подучить. http://arhivach.org/thread/78455/#465309 И что делать? Таненбаума читать долго, а те 2 точно помогут? Они вроде больше по асм чем архитектуре ЭВМ. Но освоив одну из них смогу дальше учить С++? Это же они? http://arch.cs.msu.su/semestr2/%CF%E8%EB%FC%F9%E8%EA%EE%E2%20%C2.%CD.%20%CF%F0%EE%E3%F0%E0%EC%EC%E8%F0%EE%E2%E0%ED%E8%E5%20%ED%E0%20%FF%E7%FB%EA%E5%20%E0%F1%F1%E5%EC%E1%EB%E5%F0%E0%20IBM%20PC,%C4%E8%E0%EB%EE%E3-%CC%C8%D4%C8,1999.pdf ftp://92.200-224-87.telenet.ru/%D3%F7%E8%EC%F1%FF/Assembler/%DE%F0%EE%E2.%20%C0%F1%F1%E5%EC%E1%EB%E5%F0.pdf

Ответы: >>509402

05 Июл, 16:05 #372 #509400

>>509387
> 1. Работа с туплами медленная.
Вместо него можно класс с тремя полями, всё равно.
> 2. Сравнение строк очень медленное.
Я об этом писал. Можно как-нибудь хешировать, а можно вместо строк делать с указателями, чтобы как в джавке синхронайзд(и тут объект синхронизации).
> 3. Кому принадлежит коллекция? Классу как статическая? А как же расширяемость? Если понадобится две коллекции для разных задач, придется все перепиливать. очень. очень плохая идея.
Зачем разные? Все секции в одной коллекции.
> 4. Доступ к чему ты синхронизируешь? У тебя я вижу только регистрацию количества обработчиков файла, никакой синхронизации нет. Ни обработчик, ни код снаружи твоего класса вообще не узнают, был увеличен счетчик, или создана новая секция. Так что либо я тебя неправильно понял, либо ты сделал какой-то ебаный регистратор, который непонятно зачем считает обработчики и больше ничего не делает.
На конструкторе есть же EnterCriticalSection(), на деструкторе - LeaveCriticalSection()
> 5. В любом случае синхронизация не обеспечивается. Без атомарных операций, очевидно, методы могут вызваться одновременно, увеличить счетчик один раз вместо двух и вообще хуй знает что натворить.
Перед увеличением будет EnterCriticalSection(), а LeaveCriticalSection() после декремента. Таким образом, нельзя будет Поменять значение, не находясь в критической секции, а в ней только 1 поток. Всё норм обеспечивается.
> Критические секции легко моделируются мьютексами,
Ну да, в POSIXе как раз мутексы вместо секций. Но выразительнее намного будет
[code]
{
Section("COM1");
//....
}
[/code]

[code]
EnterCriticalSection(p);
//...
LeaveCriticalSection(p);
[/code]
С виду разница не большая. Однако будет очень неприятно передавать указатель на секцию в поток через void* и всё такое. А потом ещё как-то отслеживать неиспользуемые секции и удалять их. То же самое с pthread_mutex_lock/unlock, а ведь для них реализация такая же.
> 8. WinAPI.
И в том и суть, что решение оборачивает WinAPI.

Ответы: >>509410

05 Июл, 16:09 #373 #509402

>>509397
Если тебе не нужен асм, то читай Пильщикова да, это та книга, пропуская моменты, где рассказывается про команды и само программирование. Юрова в таком случае не надо в основном асм и многабукаф. Еще наверни вот http://arch.cs.msu.su/ это, там курс лекций уже чисто по архитектуре, который читают у нас параллельно с практикумом по Пильщикову во втором семестре. Вместо Таненбаума можешь взять http://ftp.vtyulb.ru/%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B%20%28%D0%BC%D0%B0%D1%88%D0%B1%D1%83%D0%BA%29.pdf это, там курс по операционным системам, который читают в третьем семестре. По сути тот же Таненбаум, но гораздо более сжатый многие фишки не рассказаны, но для ознакомления самое то. Главы 4 и 6 можешь пропустить, остальное читай.

Ответы: >>509413

05 Июл, 16:09 #374 #509404

>>509374
Про lock(obj) {} ты не слышал?

Ответы: >>509406

05 Июл, 16:17 #375 #509406

>>509404
У него ещё путаница с терминологией.

Критическая секция — это режим выполнения, когда программа становится однопоточной и её приоритет повышают на то время, пока она находится в критической секции (гуглить VxWorks и другие ОСРВ).

lock (obj) {} и «новейшая очень классная идея» — это не критическая секция, а семафоры, причём со способностью впадать во взаимную блокировку, догадайтесь как.

Ответы: >>509411, >>509415

05 Июл, 16:23 #376 #509410

>>509400
А, ну тогда за работоспособность этого я не могу сказать тебе, но энивей, на мой взгляд, прикручивать какие-то платформозависимые методы это не особо хорошо. Тем более, что POSIX мьютексы сам не перевариваю это говно с одним методом и кучей флагов на все действия - это уровень 80-х, а у нас тут новый стандарт, знаешь ли. Получается очень выразительно, наподобие std::lock_guard <mutex> guard (lock_) пишешь в конструкторе/начале блока, и пока guard в видимости, ты владеешь секцией. Алсо, такой подход с RAII будет exception-safe из коробки, в отличие от. Не получится забыть выйти из секции в деструкторе и вот это все.

По поводу неиспользуемых секций - ну так это опять велосипед жи. Допустим, ты, возможно, будешь использовать функтор-секцию. Тогда ты делаешь фабрику, когда кто-то дергает получение еще не существующей секции, она генерит функтор, отдает std::shared_ptr на него, а себе схороняет std::weak_ptr. Если у нее дергают получение уже существующей, она пытается отдать shared, сконструированный из weak. Когда пользователи сделают свои дела и счетчик shared станет 0, он удалит секцию автоматически. И все это реализовано наиболее быстрыми путями и thread-safe. Попробуй пересесть со своего велосипеда на мотоцикл короче, лол.

Ответы: >>509412

41 Кб, 1048x600

05 Июл, 16:23 #377 #509411

>>509406
> У него ещё путаница с терминологией.
Это у тебя путаница.

05 Июл, 16:25 #378 #509412

>>509410
Спасибо. Я зря полез в эту тему не изучая новый стандарт по этому поводу. Почитаю сегодня.

05 Июл, 16:26 #379 #509413

>>509402
Спасибо. Так и сделаю. От сюда http://arch.cs.msu.su/ можно всё одним пдэфом скачать?

Ответы: >>509418

05 Июл, 16:27 #380 #509415

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

05 Июл, 16:30 #381 #509418

>>509413
Хуй знает. Посмотрел у себя, вот то, что схоронено http://rghost.ru/6mynBL4hQ.

Ответы: >>509423

05 Июл, 16:34 #382 #509423

>>509418
Спасибо. Оно.

1045 Кб, 703x648

60 Кб, 585x370

05 Июл, 17:03 #383 #509435

>>503274
Как перейти с знания языка уровня laba7 на уровень нормального разработчика?

Ответы: >>509437, >>509460

05 Июл, 17:06 #384 #509437

>>509435
Придумай задачу достаточно сложную для тебя и реши ее

Ответы: >>509465

05 Июл, 17:51 #385 #509460

>>509435
Читай книжки.

05 Июл, 18:00 #386 #509465

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

Ответы: >>509470, >>509474

05 Июл, 18:05 #387 #509470

>>509465
http://www.ideamachine.io/
http://theinternetwishlist.com/
закрепите это уже где-нибудь в шапке

Ответы: >>509500

05 Июл, 18:14 #388 #509474

>>509465
Бот для шахмат. Начал учить программирование чтобы его сделать.

05 Июл, 18:49 #389 #509500

>>509470
Тоже хуйня по большей части.

Ответы: >>509502

05 Июл, 18:53 #390 #509502

>>509500
Тогда ждем от тебя идею на миллион

Ответы: >>509505

05 Июл, 18:59 #391 #509505

>>509502
Написать генератор идей на миллион.

Ответы: >>509509

sage 05 Июл, 19:24 #392 #509509

>>509505
Вот его и пиши. /discussion

sage 05 Июл, 21:01 #393 #509555

>>509244
добавляешь кастомный QGraphicsItem, в котором рисуешь прозрачный прямоугольник.

06 Июл, 12:24 #394 #509794

Господа, начал учить C++, никак не пойму, зачем объявлять метод класса вне класса? Проебывается читаемость же, не?

Ответы: >>509806, >>509808, >>509814

sage 06 Июл, 12:34 #395 #509798

>>509020
В Алёна-треде ни за что.

06 Июл, 13:06 #396 #509806

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

Ответы: >>509812

06 Июл, 13:09 #397 #509808

>>509794
Методы снаружи - читаемый интерфейс. Методы внутри - читаемей реализация (что спорно). Интерфейс класса читают намного чаще чем релизацию.

Ответы: >>509812

06 Июл, 13:25 #398 #509812

>>509806
Не, не френдли в привате, я пока до них не дошел. Просто объявляем прототип в в классе потом в ебенях Класс::имяФункции () {описываем}.

>>509808
Кроме читаемости никаких преимуществ не дает?

Ответы: >>509820

06 Июл, 13:27 #399 #509814

>>509794
Если ты про друзей, то такое часто бывает при определении операторов над классами. Например, ты хочешь сделать TvoyaMamka & opearator+ (const TvoyaMamka &), где первое слагаемое передается неявно как this. Если у тебя определен еще implicit конструктор, например, из int, то будут проблемы, когда ты пытаешься складывать мамок с числами, потому что неявно передаваемый параметр никогда не приводится автоматически. И тогда ты выносишь operator+ за пределы класса, он теперь принимает параметрами обеих мамок и все работает.

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

06 Июл, 13:37 #400 #509820

>>509812
Ну так ты определяешь класс в заголовочном файле обычно. Если у него большие методы, то это неудобно читать становится, а так можно вынести каждый метод хоть в отдельный .cpp и все будет заебись. Но главное даже не в этом, а в том, что если ты меняешь реализацию метода без изменения интерфейса (те же параметры, то же возвращаемое значение), то тебе придется перекомпилировать только один файл. А если реализация в заголовочном файле, то перекомпилируются все .cpp, которые его используют. В больших проектах это настолько существенно, что делают дополнительные сущности, чтобы клиент как можно меньше знал о реализации, в.т.ч. и данных, называется pimpl. Делают маленький хедер, в котором объявлен прокси-класс. В нем указатель на настоящий объект и больше нихуя. Пока ты не используешь объект, тебе не нужно ничего знать о реализации, размере и всем таком, если ты хранишь в другом объекте не его самого, а указатель. Это позволяет избежать порчи половины проекты, когда ты добавляешь член в один хедер, который оказывается подключен к куче других.

Ответы: >>509828

06 Июл, 13:50 #401 #509828

>>509820
Спасибо, ты крутой.

23 Кб, 500x307

06 Июл, 18:05 #402 #509972

Товарищи, подскажите, пожалуйста. Что происходит при открытии файла (fstream, например)? Весь объем файла пихается в оперативную память или нет?

Собственно, почему спрашиваю. Поставлена задача: есть N файлов, общим размером ~100мб. В файлах отсортированные номера. Нужно создать один файл со всеми номерами. Разумеется, тоже отсортированный. При этом, нужно уложиться в 50мб оперативки.
Я планировал решить это следующим образом: так как номера в файлах отсортированы, просто выдергивать из каждого файла по одному номеру и образовавшуюся коллекцию сравнивать между собой. Ну и выдернутые номера удалять, например. Это хороший подход или я не прав?

Ответы: >>509975, >>509983, >>509992, >>510067

06 Июл, 18:09 #403 #509975

>>509972
Файлы не пихаются целиком в память. Читай по одному, сравнивай, записывай. Удалять их из файлов не обязательно, файл будет читаться дальше сам по себе.

Ответы: >>509979

06 Июл, 18:23 #404 #509979

>>509975
>Читай по одному
Держать открытыми сразу все файлы - не очень?
Каждый раз открывать/закрывать?

Ответы: >>510031

06 Июл, 18:47 #405 #509983

>>509972

Тут несколько вариантов:

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

2) Т.к. у тебя 50 метров, а все файлы - 100 метров, то выгоднее сразу все считать 50 метров из файлов в память, отсортировать любым нормальным алгоритмом сортировки, записать в файл и не париться (т.к. работа с диском очень-очень медленная, а работа с памятью невероятно быстрая). Потом повторить тоже самое для оставшейся части файлов (остальные 50 метров). А потом два файла слить через алгоритм из первого пункта.

Ответы: >>509989

06 Июл, 19:32 #406 #509989

>>509983
А вот в первом случае на N-(N / 2) итерациях разве не будет такого, что в буфер придется записать данных большем, чем на 50мб?

Черт. Уже час не могу написать - двачестан возвращает Gateway timeout

Ответы: >>509993

06 Июл, 19:37 #407 #509992

>>509972
>Весь объем файла пихается в оперативную память или нет?
Пихается буфер, зависящий от libc и системы. По-моему в районе 64 кб. Поэтому даже побайтовое чтение не вызывает проблем с производительностью, но и файлы, конечно, целиком не грузятся.
>При этом, нужно уложиться в 50мб оперативки.
Домашка? Вообще так делается merge sort, именно как ты описал.

Ответы: >>509994

06 Июл, 19:38 #408 #509993

>>509989
В первом случае ты считываешь в память, считай, 1 число из одного файла и 1 число из другого файла. Выбираешь наименьшее из чисел, записываешь в выходной файл. Считываешь из соответствующего файла еще одно число. В итоге в памяти у тебя всегда не больше 2х чисел. А файл целиком в память можно не считывать. Вроде так.

Ответы: >>509994, >>510006

06 Июл, 19:50 #409 #509994

>>509992
Если честно, тестовое задание на стажировку. Про файлы рассказывали на первом курсе и я что-то позабыл, как это дело происходит. Да и не требовалось что-то.

>>509993
Да, ты прав, торможу. Почему-то подумал, что буду весь файл совать в буфер. Бывает.

Спасибо, товарищи!

Ответы: >>510002

06 Июл, 20:04 #410 #510002

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

Ответы: >>510012

06 Июл, 20:09 #411 #510006

>>509993
В памяти будет размер соответствующих буферов чтения. Поэтому лучше не выебываться и доверить буферизацию ("использование памяти по полной") системе.

06 Июл, 20:20 #412 #510012

>>510002
Амм. Сколько занимает символ конца строки в юникоде? Два байта?

Ответы: >>510034

sage 06 Июл, 20:57 #413 #510031

>>509979
Лол. Что-то от тебя зеленью запахло, но отвечу. Читать числа по одному, файлы закрывать не нужно.

Ответы: >>510033

06 Июл, 21:05 #414 #510033

>>510031
Пардон. Я на полном серьезе задаю эти глупые вопросы. Конечно стараюсь читать самостоятельно, но иногда проще спросить.

06 Июл, 21:07 #415 #510034

>>510012
Каком юникоде? Если ты про UTF-8, то как в ASCII — один байт.

Ответы: >>510040

06 Июл, 21:16 #416 #510040

>>510034
Хмм. А почему, если сделать вот так:

\tint k = 12345678;
\tofstream out ("out.txt", ios::out);
\tout << k << endl;
\tout.close();

то размер файла будет 10 байт?

Ответы: >>510041, >>510043

06 Июл, 21:16 #417 #510041

>>510040
Черт. Табы вылезли.

06 Июл, 21:20 #418 #510043

>>510040
> endl
Конец строки в Шиндоусе -- два байта: \r\n, они же <CR><LF>.

Ответы: >>510045

06 Июл, 21:23 #419 #510045

>>510043
То есть, в винде всегда железно два байта? Вне зависимости от компилятора, библиотек и так далее?

Ответы: >>510052

06 Июл, 21:27 #420 #510052

>>510045
Нет.

Ответы: >>510054

06 Июл, 21:30 #421 #510054

>>510052
Хорошо. Остановимся на этом. Не буду злоупотреблять твоей помощью. Просто почитаю об этом где-нибудь на досуге.
Большое спасибо.

06 Июл, 21:49 #422 #510067

>>509972
Это не регламентировано стандартом жи. Библиотека предоставляет тебе некоторую абстракцию файла, который может находиться где угодно. Например, ты открываешь последовательный порт как файл, или удаленный файл на чужой пекарне. В *nix вообще все считается файлами даже небо, даже Аллах. Понятно, что последовательный порт или поток ввода который ВНЕЗАПНО тоже файл нельзя схоронить в оперативную память, потому что неизвестно, что в них будет потом. Но даже если ты оперируешь с "хорошим" файлом с диска, он банально не может влезть в память. Пораскинь мозгами, анон, когда ты открываешь йоба-фильм в .mkv на 30 гигабайт, он целиком не влезает в твою память, но видеоплеер, несомненно, открывает его как файл. А разгадка одна - интерфейс fstream ничего не говорит о том, где находится файл. Он передает строку с именем операционной системе, та достает нечто, что в ее понимании отвечает твоему запросу, и тебе предоставляется к этой сущности доступ. Она физически может быть где угодно, и ты не можешь "заметить" этого, потому что время доступа к файлу тоже не регламентировано. Более того, получится ли открыть файл - тоже не регламентировано, эта ответственность возлагается на ОС, как и способ хранения кусков открытого файла. Скорее всего, нормальная ОС будет загружать файл по кускам и кэшировать. Но теоретически она может попытаться загрузить весь файл в память, памяти не хватит, и конструктор fstream кинет исключение емнип. И такое поведение абсолютно нормально и не выходит за рамки стандарта. такие дела.

Ответы: >>510076

06 Июл, 22:13 #423 #510076

>>510067
Логично. Спасибо.

32 Кб, 320x435

06 Июл, 22:54 #424 #510103

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

Ответы: >>510143, >>510210

07 Июл, 00:32 #425 #510143

>>510103
emplace-методы в контейнерах, каррирование

Ответы: >>510271

07 Июл, 08:34 #426 #510210

>>510103
Метапрограммирование жи.
Поиск максимума из n чисел во время компиляции:
[code lang="cpp"]
template <int head, int ... tail>
struct Max
{
\tconst static int value = (head > Max <tail ...>::value) ? head : Max <tail ...>::value;
};

template <int ... tail>
struct Max
{
\tconst static int value = std::INT_MIN;
};
[/code]

Ответы: >>510271, >>510305

68 Кб, 602x377

07 Июл, 12:43 #427 #510271

>>510143
emplace-методы, это и есть функции с переменным числом параметров, а каррирование проще делать лямбда-функциями, разве нет?

>>510210
и нахуя это нужно?

Ответы: >>510306

07 Июл, 14:13 #428 #510305

>>510210
>Поиск максимума из n чисел во время компиляции:
поясни что тут происходит. И как делать что-то похожее.
мимо

Ответы: >>510308

07 Июл, 14:14 #429 #510306

>>510271
>emplace-методы, это и есть функции с переменным числом параметров
Не путай, тебе же станет известно количество параметров еще при компиляции, поэтому переменное количество параметров, значит, делать variadic function не требуется. Например, у тебя есть класс ChlenSemyi, в котором unique_ptr <T> chlen_, где T может быть TvoyaMamka, у которой конструктор принимает 10 параметров-кусков мяса, либо TvoyBatya, который дохуя спортсмен и принимает только один параметр-салат. Тебе нужно инициализировать этот указатель в конструкторе класса ChlenSemyi. И ты можешь создать один variadic template конструктор, который принимает любое количество любых параметров и пытается пихнуть их в конструктор T. Без них тебе бы пришлось описывать для каждого набора параметров отдельный конструктор.
>каррирование проще делать лямбда-функциями
Не всегда. До C++14 нельзя было переименовывать параметры и захватывать члены класса как переменные из зоны видимости, например, а вариадики подбавляют гибкости.
>и нахуя это нужно?
Потому что это позволяет перенести часть вычислений на этап компиляции, потом тормозить будет меньше я могу, иди на хуй.

Ответы: >>510509

07 Июл, 14:18 #430 #510308

>>510305
Хвостовая рекурсия же. Он на каждом этапе сравнивает первый параметр и уже вычисленное value в структуре, где параметров на один меньше. Когда остается ноль параметров, он вернет наименьший возможный int. Да, я знаю, что это немного костыльно, просто первое, что пришло в голову. Вообще, гугли метапрограммирование или Александреску из шапки читай.

07 Июл, 19:16 #431 #510509

>>510306
>значит, делать variadic function не требуется
При чем тут вообще variadic function, если изначально речь идет о шаблонах?
>До C++14 нельзя было переименовывать параметры и захватывать члены класса как переменные из зоны видимости
если речь идет о [&,=], то это прекрасно работало и в 11.
Скинь какой-нибудь пример каррирования шаблонами

Ответы: >>510550

07 Июл, 19:53 #432 #510550

>>510509
>При чем тут вообще variadic function
>emplace-методы, это и есть функции с переменным числом параметров
Ты походу не отличаешь template <typename ... Args> func () от func (TvoyaMamka arg1, ...).
>если речь идет о [&,=], то это прекрасно работало и в 11
Нет, речь о [var = expression] {}.
>Скинь какой-нибудь пример каррирования шаблонами
[code lang="cpp"]
template <typename Function, typename ... OldArgs>
class Bind
{
\tconst Function function_;
\tconst std::tuple <OldArgs ...> old_args_;
\t
public:

\tBind (Function input_function, std::tuple <OldArgs ...> args) :
\t\tfunction_ {input_function},
\t\told_args_ {args}
\t{}
\t
\ttemplate <typename NewArg>
\tauto operator() (NewArg arg)
\t{
\t\treturn curryItMotherfucker (arg, 0);
\t}
\t
\ttemplate <typename Arg>
\tstd::result_of_t <Function (OldArgs ..., Arg)> curryItMotherfucker (const Arg & arg, int) const
\t{
\t\treturn function_ (args ..., arg);
\t}
\t
\ttemplate <typename Arg>
\tauto curryItMotherfucker (const Arg & arg, ...) const
\t{
\t\treturn Bind <Function, Args ..., Arg> { function_, std::tuple_cat (args, std::tuple <Arg> (arg))};
\t}
};
[/code]

Ответы: >>510699

5 Кб, 484x37

07 Июл, 21:38 #433 #510631

Ответы: >>510635, >>510638

9 Кб, 184x174

07 Июл, 21:42 #434 #510635

>>510631
Друг

07 Июл, 21:43 #435 #510638

>>510631
Недавно дочитал эту книгу. Твоя первая? До неё что читал?

Ответы: >>510642

07 Июл, 21:46 #436 #510642

>>510638
Первая, только начинаю осваивать.
До неё чуть Прата чинул с вашей шапки, но он, вроде, хуже.

Ответы: >>510647

07 Июл, 21:50 #437 #510647

>>510642
Осваивать С++ или программирование?

Ответы: >>510648

07 Июл, 21:51 #438 #510648

>>510647
С++, программирование я знаю на уровне пхп-макаки.

Ответы: >>510651

07 Июл, 21:53 #439 #510651

>>510648
Сам учил или в шараге поясняли?

Ответы: >>510653

07 Июл, 21:55 #440 #510653

>>510651
Сам учил. В пхп треде.

Ответы: >>510658

07 Июл, 21:57 #441 #510658

>>510653
Долго учил? Работал? Фрилансом занимался?

Ответы: >>510667

07 Июл, 22:01 #442 #510667

>>510658
Учил месяца 3, потом поработал 2 месяца, не фрилансил.

07 Июл, 23:50 #443 #510699

>>510550
>Ты походу не отличаешь

я писал
>где можно красиво использовать variadic templates, кроме функций с переменным числом параметров?

Если ты знаешь еще какой-то способ, использования variadic templates для реализации переменного кол-ва пераметров кроме emplace-методов, то напиши.

Ответы: >>510746

21 Кб, 1112x85

46 Кб, 1131x203

07 Июл, 23:58 #444 #510702

О чём речь?

Ответы: >>510715, >>510716

366 Кб, 1920x1161

322 Кб, 1920x1161

08 Июл, 00:01 #445 #510705

Поясните, почему тут возникает ошибка?
Даже если код напрямую копирую с книги - такая же ошибка.
Как я понял что-то с std_lib_facilities.h не так?

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

Ответы: >>510709, >>510711, >>510913

08 Июл, 00:06 #446 #510709

>>510705
Чтобы запускать примеры эта библиотека не обязательны. Всё как написано в приложении Г делал?

Ответы: >>510843

08 Июл, 00:08 #447 #510711

>>510705
Может после имени библиотеки на втором скрине .h написать?

Ответы: >>510843

08 Июл, 00:11 #448 #510715

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

Ответы: >>510719, >>510723, >>510725

3 Кб, 733x320

08 Июл, 00:11 #449 #510716

>>510702
Нечто ассемблерное. Выбрось из головы.

08 Июл, 00:18 #450 #510719

>>510715
Пока писал второй вопрос понял ответ. Спасибо. %%На всяки случай уточню. В ассемблере это делается вручную с помощью push и pop?%

Ответы: >>510750

08 Июл, 00:22 #451 #510723

>>510715
Это называется "соглашение о вызове" и в разных языках и системах оно разное. https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D0%B3%D0%BB%D0%B0%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BE_%D0%B2%D1%8B%D0%B7%D0%BE%D0%B2%D0%B5
Делается это не с помощью push/pop, а спомощью манипуляций с ebp и esp. См. http://stackoverflow.com/questions/15020621/what-is-between-esp-and-ebp

Ответы: >>510740

08 Июл, 00:26 #452 #510725

>>510715
А, это был ответ на вопрос, а не вопрос, лол.

08 Июл, 00:55 #453 #510740

>>510723
Прости, но я не могу в английский. Можешь пояснить что он тут имел ввиду?
>all local variables and function parameters are a known constant offset from this register for the duration of the function call.
>At the start of the function, ESP is decremented by the appropriate value.

SP указывает на вершину стека и с помощью его можно ложить/брать верхний элимент, а для чего BP?

И в википедии писалось что когда Си ложит переменную меньше 4 байт в стек, то она расширяться до 4 байт. Имеется виде переменная из объявления функции, а не локальная? А если я буду передавать как параметр массив char, то его размер в 4 раза увеличивается? В С++ так же?

Ответы: >>510747

08 Июл, 01:09 #454 #510746

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

08 Июл, 01:10 #455 #510747

>>510740
>all local variables and function parameters are a known constant offset from this register for the duration of the function call.
Когда ты пишешь внутри функции int i; int j; int k компилятор превращает это в [ebp - 4], [ebp - 8], [ebp - 12]. То есть переменные превращаются в смещение относительно регистра ebp.
>At the start of the function, ESP is decremented by the appropriate value.
В начале функции на стеке выделяется память путем вычитания из ESP. Тогда в промеждутке между EBP-ESP находятся твои локальные переменные. Далее push/pop модифицируют ESP, а вот EBP используется для адресации локальных переменных.

>А если я буду передавать как параметр массив char, то его размер в 4 раза увеличивается?
Нет. Массивы обычно передаются по ссылке, но если даже передашь по значению, то размер округлится до кратного 4-х.

Ответы: >>510751

08 Июл, 01:12 #456 #510749

Посоветуйте что почитать если уже знаю с++ на уровне ньюфага и хочу разобраться в них побольше

Ответы: >>510757

08 Июл, 01:15 #457 #510750

>>510719
Да. Если посмотришь книжку Пильщикова, которая была выше в треде, там наглядно это показано. Идиома такая, что один из регистров (BP для 8086 архитектуры, EBP для 32bit, RBP для 64bit) схороняется в стек, дальше в него записывается вместо старого значения адрес текущей верхушки стека, и все локальные переменные отсчитываются как BP - смещение, а все параметры (и адрес возврата) как BP + смещение.

Ответы: >>510755

08 Июл, 01:15 #458 #510751

>>510747
Всё. Спасибо. Теперь точно понял.
На всякий случай уточню. Если в функцию передавать 100 параметров типа char, а не 1 массив из 100 элементов, то тогда каждая переменная будет занимать 4 байта?

Ответы: >>510752, >>510753, >>510754

08 Июл, 01:21 #459 #510752

>>510751
Это емнип зависит от архитектуры. Грубо говоря, ты не должен делать предположений об этом, стандарт не регламентирует. На некоторых архитектурах выравнивание строго обязательно, на других его можно вырубить, но тогда увеличивается время доступа. Изнутри крестов ты это не сможешь контролировать, по крайней мере платформонезависимо.

08 Июл, 01:21 #460 #510753

>>510751
Не забивай себе голову этим. Байты считать - себя не уважать.

08 Июл, 01:21 #461 #510754

>>510751
Массивы вообще передаются по ссылке, а сколько будет занимать переменная типа char зависит от архитектуры и компилятора и в с++ тебя это волновать не должно.

08 Июл, 01:21 #462 #510755

>>510750
>книжку Пильщикова
Она слишком сложная. Не осилил и 10 страниц. Если осилю лекции что выше в треде рядом с этой книгой, то пойму что в ней написано? Если нет, то реквестирую что попроще Пильщикова.

Ответы: >>510758

08 Июл, 01:22 #463 #510757

>>510749
Для начала почитай шапку.

08 Июл, 01:24 #464 #510758

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

Ответы: >>510787, >>510799

08 Июл, 01:34 #465 #510761

Наткнуля на такой readme

1. BACKGROUND
http://en.wikipedia.org/wiki/Adobe_Flash_Player

Congrats! You are reading about the most beautiful Flash bug for the last four
years since CVE-2010-2161.

2. DESCRIPTION

The use-after-free vulnerability exists inside the built-in ByteArray class
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/ByteArray.html

Let's create a simple ByteArray object:

var ba:ByteArray = new ByteArray();
ba.length = 8;
ba[1] = 1;

Now we can access ba[] items and write numeric byte values into ba[].
Also we are allowed to write objects into ByteArray. For example:

var obj = new MyClass();
ba[0] = obj;

AS3 will try to implicitly convert the MyClass object into numeric value by
calling the MyClass.valueOf() method. This method can be easily redefined
within the user's code:

class MyClass
{
prototype.valueOf = function()
{
ba.length = 88; // reallocate ba[] storage
return 0; // return byte for ba[offset]
}
}

Let's see how that implicit conversion occurs inside the native code:

push esi
mov eax, [esp+8] // the offset value from "ba[offset] = obj"
push eax
add ecx, 0x18 // ecx = this = "ba" object pointer
call ByteArray.getStorage() // gets ba[offset] storage pointer and
mov esi, eax // saves it in esi

mov ecx, [esp+0xC] // "obj" pointer
push ecx
call AvmCore.toInteger() // call MyClass.valueOf()
add esp,4
mov [esi], al // writes returned byte into array

pop esi
ret 8

On high-level language this will look like:

void ByteArray.setObjInternal(int offset, obj)
{
byte dest = this.getStorage(offset);
dest = toInteger(obj);
}

So the array storage pointer is saved in local variable, then AS3 valueOf() is
invoked from the native code and returned byte is written into destination
pointer at the end. If valueOf() changes the length of byte array (see above)
and reallocates its internal storage, then local destination pointer becomes
obsolete and further usage of that pointer can lead to UaF memory corruption.

Using this vulnerability, it's very easy to control what byte will be written
and at which offset this corruption will occur.

3. AFFECTED SOFTWARE
Adobe Flash Player 9 and higher

...

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

Ответы: >>510763

08 Июл, 01:39 #466 #510763

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

Ответы: >>510765

08 Июл, 01:49 #467 #510765

>>510763
Но для этого надо, чтобы
А) эту память не перезаписали перед использованием
Б) чтобы она была в исполняемом сегменте.
Не?
не очень понимаю в байтоебстве и асме, не ругайся

Ответы: >>510766

08 Июл, 01:56 #468 #510766

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

Ответы: >>510768, >>510769, >>510770

08 Июл, 01:58 #469 #510768

>>510766
Та не, я другой анон вообще. Асм очень поверхностно понимаю и мне норм.

08 Июл, 01:59 #470 #510769

>>510766
А я бы посмотрел.

Ответы: >>510771

08 Июл, 01:59 #471 #510770

>>510766
Это из архива hacking team readme, у них сэмплы есть которые хорошо работают (под винду и макось). Можешь их исходники посмотреть если разбираешься
http://t.co/nfqck54YhT

Не забудь тут рассказать :3

Ответы: >>510772

08 Июл, 02:00 #472 #510771

>>510769
https://www.youtube.com/playlist?list=PL2AE27C02108EDDF4
Вот тут с 7 по 10 про программные уязвимости и вот это все.

08 Июл, 02:01 #473 #510772

>>510770
Спасибо. Завтра гляну и отпишусь.

08 Июл, 02:28 #474 #510776

Хм? В С++ треде последнее время ассемблера больше чем С++. Может кто-то осмелиться создать ассемблер тред и возьмёт на себя не лёгкую задачу по составлению шапки?

Ответы: >>510802, >>510909

08 Июл, 02:49 #475 #510787

>>510758
> Подробно работа отладчика студенты факультета вычислительной математики и кибернетики МГУ изу-
чают в курсе третьего семестра "Системное программное обеспечение".
Что это за курс? Он у тебя есть? Можешь показать?

Ответы: >>510799, >>510909

46 Кб, 1102x187

08 Июл, 03:21 #476 #510799

>>510787
>>510758
Ну вот. Снова на самом интересном месте. Чем ты в этом МГУ занимаешься? Аспирант? Где эти курсы искать? В гугле только краткое описание на 2 страницы.

Ответы: >>510805, >>510909

08 Июл, 03:36 #477 #510802

>>510776
а нахуй он нужен?

Ответы: >>510804

08 Июл, 03:39 #478 #510804

>>510802
И так много тредов уже. Ещё 1 не навредит.

14 Кб, 1105x62

08 Июл, 03:45 #479 #510805

>>510799
Срочно реквестирую этот курс.

Ответы: >>510909, >>510915

10 Кб, 484x368

08 Июл, 08:28 #480 #510825

Ньюважескмй вопрос.
Почему тяфкает на последнюю фигурную скобку?

Ответы: >>510827, >>510828, >>510853

08 Июл, 08:33 #481 #510827

>>510825
Потому_что_блока_do{}_не_бывает

08 Июл, 08:40 #482 #510828

>>510825
Спасибо тебе.

08 Июл, 09:53 #483 #510843

>>510709
Да, делал как в приложении, только у меня это приложение В.

>>510711
На 2 скрине я, вроде, не использую библиотеки, в которые нужно добавлять .h?
Там же рядом учебник написан, вроде оттуда всё скатал, а не работает...

Ответы: >>510861

08 Июл, 10:44 #484 #510853

>>510825
Поле if тоже нужны скобки, кстати.

08 Июл, 11:13 #485 #510861

>>510843
>Там же рядом учебник написан, вроде оттуда всё скатал, а не работает...
Другой компилятор или другая версия. В MS не работал, но возможно там надо .h и для стандартных библиотек. Ещё попробуй на первом скрине удалить из скаченого файла #include <hash_map>

08 Июл, 12:58 #486 #510909

>>510776
Няш, ну я бы мог, конечно, но с асмом не такая движуха, как с крестами же. Вангую, что тред будет мертворожденным просто, иногда кто-то будет заходить из-за шапки и все. Да и я, если честно, в асме шарю только на уровне, чтобы понимать, что вообще происходит, и иногда ломать что-то. Асм-погроммистом меня никак нельзя назвать.
>>510787 >>510805
У нас изменилась программа, учебник же старый. Сейчас в третьем семестре вместо этого операционные системы , а СПО читают только на кафедре СП емнип. Про отладчик было примерно поллекции, я выше давал ссылку на книжку Машечкина по операционным системам, она в точности по лекциям, так что можешь обмазаться. Там про трассировку, точки останова и вот это все.
>>510799
Не, пока еще студент. Ну, во-первых, пошарь по сайтам погроммистских кафедр, это cs.msu.su с префиксами al. , sp. , asvk. Еще есть http://esyr.nizm.ru/ и http://tka4.org/materials/, там много материалов.
мимооп

08 Июл, 13:11 #487 #510913

>>510705
замени hash_map на unordered_map, заинклудь <unordered_map>, измени подсистему в настройках проекта на /SUBSYSTEM:CONSOLE (Project->Properties->Linker->System->SubSystem)

08 Июл, 13:18 #488 #510915

>>510805
По поводу обработчиков сигналов - это довольно просто, лол. В nix процессы могут посылать друг другу сигналы это просто числа, которые обозначаются как константы через #define, например, SIGKILL, эти сигналы передаются и обрабатываются отдельно от потоков ввода-вывода, файлов и других инструментов взаимодействия. Когда процесс получает сигнал например, нажатие Ctrl+C в консоли посылает SIGINT работающей программе, ищется обработчик сигнала с таким номером и вызывается. Обработчик это просто функция вида void func (int), в параметр ей суется номер сигнала. Процесс имеет изначально обработчики по умолчанию которые при получении сигнала вырубают процесс нахуй, но если тебе не нравится, то ты можешь переопределить обработчик на кастомный. Для этого есть функция signal, она выглядит как void (signal(int sig, void (*func)(int)))(int), то бишь принимает номер сигнала и указатель на новый обработчик, заменяет его, и возвращает указатель на старый обработчик. Вот и все. Но это такие дебри Pure C, лол, в крестах обходятся без такой хуйни обычно.

Ответы: >>510920

08 Июл, 13:22 #489 #510920

>>510915
Еще один долбоеб со спойлерами вместо скобок.

08 Июл, 15:26 #490 #511015

Ну посоветуйте что-нибудь по алгоритмам. А то вот все пиздят, мол главное чтоб знал АЛГОРИТМЫ. А я вообще не знаю, что это значит. Я что, должен запомнить какие-то алгоритмы как паттерны и уметь ебашить их по памяти? Например на листочке написать кучу разных методов сортировке? Выглядит это все так, как будто нахуй не нужно. Что почитать вообщем, чтоб на работе сказали маладца, как устраиваться буду.

Ответы: >>511027, >>511028

08 Июл, 15:55 #491 #511027

>>511015
Кормен, Лейзерсон - Алгоритмы: Построение и анализ.
Бентли - Жемчужины программирования.
Уоррен мл. - Алгоритмические трюки для программистов.

Ответы: >>511038

08 Июл, 15:56 #492 #511028

>>511015
>А то вот все пиздят, мол главное чтоб знал АЛГОРИТМЫ.
Вообщем-то правильно пиздят, но не совсем. АЛГОРИТМЫ - это не знание, это навык\способность\умение - приходит с опытом. Чем больше ты реализуешь алгоритмов, тем больше опыта ты набираешься. Так что гоу в сортировку. Научисть в блок-схему алгоритма. Пойми рекурсию. Потом всякие стеки очереди реализуй. Потом деревья, кольцевые буферы и всякие там скип-листы. Потом разберись с потокбезопасностью - критические секции, мутексы, семафоры, спин-локи и пр. Потом всякие потокобезопасные lock-free, wait-free алгоритмы на interlocked-операциях ебашь, узнай что-такое ordering, cache-line и false sharing. Как-то так.
>Выглядит это все так, как будто нахуй не нужно.
Только это и нужно. ЯП - это вторичное, тебе к тому времени уже должно быть похуй на каком языке\парадигме и под какую ОС что писать.

Ответы: >>511038

QT QML 08 Июл, 16:08 #493 #511032

Может тут есть знатоки QT QML и при этом еще и альтруисты. Очень нужно проконсультироваться по некоторым нубским вопросам. Много времени не отниму. Если кто готов помочь - добавляйтесь в скайп icy_ua. Спасибо.

08 Июл, 16:18 #494 #511038

>>511028
>приходит с опытом
Ну ко мне то что нужно пришло, так как программирую для себя уже хуй знает сколько лет. Просто хочу надрочиться в этом, чтоб сказать: "Да, алгоритмы знаю". Советы схоронил, книжки >>511027 тоже. Спасибо.

31 Кб, 600x500

08 Июл, 18:48 #495 #511097

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

Ответы: >>511099

08 Июл, 18:59 #496 #511099

>>511097
http://sourceforge.net/projects/xlslib/

08 Июл, 19:15 #497 #511109

Анон, я в замешательстве. Есть след. программа (заметь, функция hello_anon не шаблонная):

void hello_anon(int&& i)
{
cout<<"i = "<<i<<endl;
i=100500;
}

int main()
{
hello_anon(10); //ok
int tmp=20;
//hello_anon(tmp); //error lvalue to rvalue
hello_anon((int&&)(tmp)); //ok
cout<<"tmp = "<<tmp<<endl; //tmp=100500

int tmp2=30;
hello_anon((int)(tmp2)); //ok
cout<<"tmp2 = "<<tmp2<<endl; //tmp2=30
return 0;
}

Так вот, в чем вопрос: мне всегда казалось, что приведение типов никак не влияет на передаваемые данные, это просто способ обойти ограничения компилятора, однако tmp и tmp2 ведут себя по разному, получается приведение типов генерит какой-то код?

Ответы: >>511112

08 Июл, 19:24 #498 #511112

>>511109
Передаешь 10 - rvalue передается, печатается, устанавливается в 100500 и исчезает.
Передаешь tmp - компилятор не дает передать и испортить lvalue.
Передаешь (int &&) (tmp) - аналогично std::move ты показываешь, что tmp можно портить как rvalue. Сгенерится ссылка и передастся в функцию, как и в случае 10. Код будет такой же как для 10, ибо приведение указателей не генерит нового кода если нет приведения между наследующими классами, у которых смещения разные.
Передаешь (int)(tmp2) - здесь ты приводишь не указатели, а значения. Поэтому вызовется "конструктор" int на самом деле у int нет конструктора, но упрощенно можно считать, что произойдет то же, что при конструировании нового объекта класса, ведь даже синтаксис тут фактически соответствует: ты пишешь int (tmp2), вот тебе и конструктор. В итоге tmp2 скопируется во временный rvalue int, и уже ссылка на него будет передана в функцию. Этот временный int изменится на 100500, а старый, разумеется, нет. А разгадка одна - приведение не для указателей, а для самих объектов очень даже может генерировать код и не только явное, например, int в double приводится не бесплатно, хранятся они совершенно по-разному.

08 Июл, 19:33 #499 #511120

что лучше начинать читать? советуют прата и страуструпа, не знаю что выбрать

08 Июл, 19:35 #500 #511122

НОВЫЙ ТРЕД
https://2ch.hk/pr/res/511121.html
https://2ch.hk/pr/res/511121.html
https://2ch.hk/pr/res/511121.html

Ответы: >>518870

22 Июл, 00:00 #501 #518870

>>511122
Бамп.

Тред утонул или удален.
Это копия, сохраненная 4 августа 2015 года.

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

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

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion