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

C++ тред

 Аноним 24/06/15 Срд 20:41:24 #1 №503274 
14351676846520.png
Я увожу к ООП и исключениям,
Я увожу через шаблонов стон,
Я увожу к олдфажным наставлениям.

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

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


Литература:

Для нюфань:
Три классических учебника для начинающих. Все примерно одинаковой годноты, читать имеет смысл только какой-нибудь один, который больше приглянется.
Герберт Шилдт - 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
Аноним 24/06/15 Срд 20:43:20 #2 №503279 
Памятку надо было в самый верх.
Аноним 24/06/15 Срд 20:45:50 #3 №503281 
>>503278
Ага, особенно такие термины как добротность.
Аноним 24/06/15 Срд 20:52:40 #4 №503286 
>>503281
Ты программист, в тексте программерские термины, которые ты либо знаешь, либо легко вычленяешь глазами (потому что слышал) и резко гуглишь. Нет никаких проблем с терминами при чтении английского. Более того, проблема в терминах у меня исключительно и только в русскоязычных текстах. Русские тексты с переведённой терминологией меня скорее отвлекают, чем учат. Я просто не могу читать что-то по математике или программированию, если оно написано в рамках русской традиции наименования. Переведенные термины, как правило, по облику слов часто совершенно отличаются от того, что ты знаешь или хотя бы слышал. Легче, когда это простые кальки или транскрипции.
Аноним 24/06/15 Срд 20:56:01 #5 №503288 
>>503281
Добротность по-английски - Q. Если ты с этим ни разу не встречался, то ты в принципе не в теме этой области знаний.
Аноним 24/06/15 Срд 20:56:29 #6 №503289 
>>503286
> Переведенные термины, как правило, по облику слов часто совершенно отличаются от того, что ты знаешь или хотя бы слышал. Легче, когда это простые кальки или транскрипции.
Хуй знает что ты там читаешь.
Большинство современных текстов зачастую полны англицизмов, которые давно понятны.
Аноним 24/06/15 Срд 21:02:47 #7 №503292 
>>503289
На русском ничего не читаю практически. Ну открыл линк первый из шапки - именно то, о чем я говорил. Открыл незнакомый раздел, куча переводных терминов, которые я даже могу не узнать, когда начну читать английский референс - подумаю, что учу что-то другое. Наоборот тоже справедливо - читаешь такой, и понимаешь, что речь-то идёт о том, что ты уже знал, просто слова странные какие-то.
Аноним 24/06/15 Срд 21:33:42 #8 №503314 
>>503288
А ты не путаешь слово, с условным обозначением?
Аноним 24/06/15 Срд 21:38:47 #9 №503319 
>>503314
Нет. Это сокращение от quality, но так никто не говорит. https://en.wikipedia.org/wiki/Q_factor
Аноним 24/06/15 Срд 21:39:13 #10 №503320 
Programming
Principles and Practice Using C++

Бьярне написал. PDF полный есть у кого? В гуголе стастраничные обрезки.
Аноним 24/06/15 Срд 22:29:12 #11 №503359 
>>503320
Про рутракер не слышал?
Аноним 24/06/15 Срд 22:32:54 #12 №503364 
Пацаны, поясните за continue и break. Как я понял, на goto наложено табу структурным программированием. А что насчёт этих двух товарищей? Считается ли говнокодом их использование?
Аноним 24/06/15 Срд 22:39:36 #13 №503370 
>>503359
Почему-то не подумал о трекерах. На рутрекере второе издание только на русском, но зато с сорсами. На кикэссе же есть английская книга без сорцев. Скрафчу из этого одно целое.
Аноним 24/06/15 Срд 22:47:27 #14 №503372 
>>503364
У goto есть аналоги, у break/continue - нет.
Аноним 24/06/15 Срд 22:48:23 #15 №503373 
>>503364
Структурным программированием наложено табу и на break, и на continue, и на множественные return и на большие вложенности и на небо с Аллахом.

Но так как уже 2015 и те проблемы с которыми боролся дiйкстра более не актуальны, то можно иногда и юзать, когда действительно нельзя адекватно избежать. Но лучше конечно подумать.
Аноним 24/06/15 Срд 23:08:09 #16 №503381 
>>503364
Хоть твой вопрос относится к pure С, отвчеу. goto использовать можно, если понимаешь что делаешь. break\continue мощнейшие операторы, использую вобще везде. А вот for как раз считаю злом, использую только в виде for(;;) - так норм.
Аноним 24/06/15 Срд 23:14:53 #17 №503384 
14351768939560.jpg
>>503381
>А вот for как раз считаю злом
>while (it != vect.end ()) {foo (*it); ++it;}
sageсажи Алёне сажи Алёне 24/06/15 Срд 23:20:42 #18 №503387 
>http://alenacpp.blogspot.ru/

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

Убери это говно отсюда, блядь! Сейчас будешь это вылизывать, блядь!
sageАноним 24/06/15 Срд 23:25:07 #19 №503388 
>>503387
%Она ОП этого треда, кто еще будет кидать ссылку на это говно%
Аноним 24/06/15 Срд 23:26:04 #20 №503389 
>>503387
Сегодня остаёмся без постов какого-то рандомного говнометателя?
Аноним 24/06/15 Срд 23:26:51 #21 №503390 
>>503381
>>503384
ЧЕМ БОЛЬШЕ Я ПРОГРАММИРУЮ ТЕМ ЧАЩЕ ИСПОЛЬЗУЮ БЕСКОНЕЧНЫЕ ЦИКЛЫ
ОСТАЛЬНЫЕ ВИДЫ ЦИКЛОВ СИТУАТИВНЫЕ И НЕ НУЖНЫ
Аноним 24/06/15 Срд 23:28:08 #22 №503391 
>>503384
Ты написал какой-то сокральный, код увидев который, я должен пасть ниц?
%Ну, а чем ты недоволен-то?%
Аноним 24/06/15 Срд 23:37:04 #23 №503393 
>>503391
Блин, проебал спойлер и запятую.
>>503390
Лол, ну вообще да, как-то так.
Аноним 24/06/15 Срд 23:38:36 #24 №503395 
>>503381
В PERL МОЖНО ПОМЕТИТЬ МЕТКОЙ БЛОК ИЛИ ЦИКЛ И ДЕЛАТЬ BREAK CONTINUE С ЕТОЙ МЕТКОЙ
Аноним 25/06/15 Чтв 01:12:52 #25 №503427 
>>503395
Слушай, крупнобуквенный, а это ты программистишку форсишь, или вы на пару сычуете.
Аноним 25/06/15 Чтв 01:14:17 #26 №503429 
>>503381
range-base for тоже нахуй?
Аноним 25/06/15 Чтв 01:43:20 #27 №503434 
>>503429
Как хочешь. Если у тебя типовая задача - бегать по массиву, то ок. У меня обычно количество итераций в цикле предскзать нельзя, поэтому - бесконечный цикл, в нем куча логики и условий, какждое из которых может выполнить break\continue\return. Ну или ексепшн выкинуть можно. Да и вобще я к всяким нововведениям скептически отношусь. Чем меньше синтаксических нагромождений в языке, тем больше программмист уделяет внимния алгоритму, вместо поиска наиболее подходящего синтсахара.
sageАноним 25/06/15 Чтв 01:48:44 #28 №503436 
>>503434
>У меня обычно количество итераций в цикле предскзать нельзя
while () {} / do {} while ();

>поэтому - бесконечный цикл, в нем куча логики и условий, какждое из которых может выполнить break\continue\return
Откуда ж вы блядь такие берётесь. Цикл фор чем хорош, что у него есть явно выраженное пост-условие. Никто не обязывает тебя выражать его в виде инкремента счётчика, можешь хоть вызов функции туда повесить. Равно как и первое условие цикла for это что угодно, необязательно определение переменной.
Аноним 25/06/15 Чтв 02:01:56 #29 №503442 
>>503434
>У меня обычно количество итераций в цикле предскзать нельзя, поэтому - бесконечный цикл, в нем куча логики и условий, какждое из которых может выполнить break\continue\return. Ну или ексепшн выкинуть можно.
У кого-то проблемы с дизайном и декомпозицией кода?
Аноним 25/06/15 Чтв 05:27:55 #30 №503461 
>>503436
ВЫХОДНОЕ УСЛОВИЕ НЕУДОБНО РАСПОЛЖЕНА, ОБЫЧНО ТРЕБУЕТСЯ ВЫХОД ИЗ СЕРЕДИНЫ ЦИКЛА А НЕ ИЗ НАЧАЛА ИЛИ ИЗ КОНЦА
ПРИЧЕМ ПО МЕРЕ РАЗВИТЯ ПРОГРАММЫ ВСЕ МОЖЕТ ПОМЕНЯТСЯ И ПОТОМУ ЛУЧШЕ СРАЗУ НЕ ДУМАЯ НАЧАТЬ С БЕСКОНЕСНОГО ЦЫКЛА
Аноним 25/06/15 Чтв 08:49:04 #31 №503476 
>>503436
Ты читать-то умеешь? Тебе достаточно одно условия на выход из цикла и одного постусловия? Можешь повесить целый вызов функции? Охуеть просто.
>У кого-то проблемы с дизайном и декомпозицией кода?
Пока не замечал. А что?
Аноним 25/06/15 Чтв 10:40:22 #32 №503496 
>>503274
Анон, поясни за такой конструктор. Для чего вообще нужен.
Аноним 25/06/15 Чтв 10:41:12 #33 №503497 
>>503274
class ClassWithConstructor {
public:
ClassWithConstructor(float parameter): object(parameter) {}
private:
AnotherClass object;
};
sageАноним 25/06/15 Чтв 13:06:58 #34 №503522 
>>503476
Ты рефакторить код умеешь? Очевидно, у тебя возможны две ситуации:

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

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

Кто-то, кажется, не умеет разбивать код на функции и вообще формулировать свои мысли в коде.
Аноним 25/06/15 Чтв 13:07:58 #35 №503523 
>>503496
> Для чего вообще нужен
Создавать/инициализировать объекты.
Аноним 25/06/15 Чтв 13:38:33 #36 №503537 
>>503522
>основное условие
Оперируешь абстрактынми терминами, при этом не привел определнения основного условия и ряда объективных критериев его выбора. У нас за такое сразу нахуй посылают.
>чётко отделяемое постусловие цикла
Обычно это изменение счетчика\индеркса\итератора. Отлично подходит для перебора массивов и направленных структур данных. И блять, я писал об этом выше. И для этого конструкция for как раз и была введена. Также как сейчас добавляют всякие foreach-и и range-base for-ы и прочее.
Аноним 25/06/15 Чтв 20:08:29 #37 №503939 
14352521096880.gif
В тред призываются адепты ООП. Я хочу замутить такую функциональность:

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

void f(A& x) { }

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

проще говоря, как замутить автоматическое преобразование char& к A?
Аноним 25/06/15 Чтв 20:15:48 #38 №503942 
>>503939
Причем тут ООП? Твоя крестопараша к нему никакого отношения не имеет.
мимо адепт ООП
Аноним 25/06/15 Чтв 20:18:11 #39 №503943 
>>503939
Так как у тебя разве не работает?
Аноним 25/06/15 Чтв 20:23:01 #40 №503948 
>>503943
NOUP
Аноним 25/06/15 Чтв 20:30:56 #41 №503958 
14352534563200.jpg
>>503942
По делу сказать видимо нечего
Аноним 25/06/15 Чтв 21:03:13 #42 №503973 
>>503939
A() + "hello" + "world". Только так. Ну а далее или оператор приведения типа, или operator+ принимающий сишную строку. Вроде так. Но основное - это A() + "hello" + "world".
Аноним 25/06/15 Чтв 21:05:51 #43 №503978 
>>503939
Нельзя так, если к классу А прибавлять строку то он автоматически преобразует строку в А, но сразу два слагаемых он не преjбразует. Алсо будет же память утекать.
Аноним 25/06/15 Чтв 21:12:50 #44 №503981 
>>503978
В каком месте, там все на стеке.
sageАноним 25/06/15 Чтв 22:14:51 #45 №503998 
>>503939
[code lang="cpp"]A(const char* s)[/code]
Аноним 25/06/15 Чтв 23:29:58 #46 №504043 
>>503939
operator const char *()
http://en.cppreference.com/w/cpp/language/cast_operator
Аноним 25/06/15 Чтв 23:31:41 #47 №504044 
>>503958
Есть. Не страдай хуйней.
Аноним 25/06/15 Чтв 23:35:30 #48 №504045 
>>503387
Лена хороша как материал для ньюфагов, потому что у нее дохуя маленьких статей, посвященных какой-то одной теме и запиленных на основе прочитанных ею же книг. Да, статьи, где она выражает свое имхо - говно. Да, не стоит воспринимать написанный ею код как что-то хорошее. Да, прочитать литературу из оппоста гораздо лучше и полезнее. Но в качестве сборника кратких выжимок по отдельным темам для чайников я ничего лучше Лены не видел. Такие дела.
слоуответ от опа
Аноним 25/06/15 Чтв 23:43:58 #49 №504049 
>>503496
Когда ты создаешь переменную примитивного типа (например, int), ты пишешь int a = 1. Здесь никакого конструктора не нужно, просто создаешь и инициализируешь. В случае сложного класса может быть необходимо выполнить какие-то дополнительные действия (например, зарегистрировать созданный объект в списке всех объектов программы или типа того). Конструктор гарантированно вызывается при создании объекта класса и подходит для обеих целей - в его теле ты можешь проинициализировать члены-данные и выполнить вообще любой код, в частности, вызвать другие методы (например, передать в перечень всех объектов указатель на только что созданного себя) этого и других классов.
Аноним 26/06/15 Птн 00:22:30 #50 №504068 
>>504049
>ты можешь проинициализировать члены-данные и выполнить вообще любой код
А почему нельзя просто реализовать метод, который будет это все делать и вызвать его явным образом.
Аноним 26/06/15 Птн 00:49:25 #51 №504078 
>>504068
Чтобы не забыть его вызвать, например. Существует куча ситуаций, когда объект создается неявно (например, его возвращает функция), и ты легко можешь забыть, что после вызова такой функции нужно вызывать сразу и твой метод. Да и силы это экономит, вместо того, чтобы писать каждый раз, пишешь один раз. Ну а вообще твой вариант тоже используется, просто довольно редко. Например, некоторые контейнеры (типа std::future) требуют, чтобы объект, который они хранят, можно было создать без инициализации (т.е. чтобы у него был конструктор по умолчанию). И инициализируется все уже после конструирования, отдельным методом.
Аноним 26/06/15 Птн 00:55:27 #52 №504079 
Раньше писал на java, которая все прощала. Начал писать на крестах. И собственно вопрос: как перестать быдлокодить?
Второй вопрос: я путаюсь в большом количестве h и cpp файлов. Можно это как-то распихать по папкам? Наподобие пакетов в java. Пишу в VC
И третий вопрос: я пишу небольшую игульку всегда при обучении новому языку так делаю, и память вроде не течет... Использую Visual Leak Detector. Может ли быть так, что он мне пиздит и все на самом деле плохо?
Аноним 26/06/15 Птн 01:10:54 #53 №504086 
14352702540870.jpg
>>504079
>писать на крестах
>перестать быдлокодить
Аноним 26/06/15 Птн 01:12:13 #54 №504088 
>>504078
>не забыть его вызвать
>силы это экономит
То есть, это не часть ООП идеологии\парадигмы, необходимая для каких-нибудь абстракций\инкапсуляций, а чтобы не забывать функцию дергать?
Аноним 26/06/15 Птн 01:12:13 #55 №504089 
>>504079
1. См. оппост:
>Учимся не писать говнокод
2. Разумеется. Распихиваешь файлы по папкам. Дальше в свойствах проекта: Свойства конфигурации - C/C++ - Дополнительные каталоги включаемых файлов. Добавляешь туда все папки с .h, а сами файлы включаешь в проект (слева - Заголовочные файлы - Добавить - Существующий элемент). .cpp достаточно просто добавить в проект (как заголовочные, но тыкать в фильтр "Файлы исходного кода"). Все, после этого можно твои заголовки подключать в угловых скобках, типа #include <TvoyaMamka.h>. Исходники сами скомпилируются и скомпонуются.
3. Если ты не используешь голые malloc/free, то точно нет. Если используешь, то хуй знает, но скорее всего тоже нет. Вообще, vld это классная вещь, я бы не волновался, что он может напиздеть. Если таки играет очко, используй RAII вместо прямого выделения памяти и волноваться точно будет не о чем.
Аноним 26/06/15 Птн 01:19:44 #56 №504090 
>>504088
Неет, это часть идеологии хотя бы потому, что у любого класса будет как минимум один конструктор если ты ничего не написал, то сгенерируется пустой конструктор по умолчанию. При создании объекта должен быть вызван какой-то конструктор, без исключений. Ты можешь написать TvoyaMamka::TvoyaMamka () = delete; и он не сгенерируется, но тогда ты не сможешь создать ни одного объекта класса. На самом деле только поехавший не стал бы использовать конструкторы, даже если бы они не были обязательными, потому что это адски удобно. Ты один раз объясняешь, что делать при создании объекта, и больше не забиваешь этим мозг, воспринимаешь его как обычный примитивный тип, если угодно. И пишешь в духе TvoyaMamka elena_mikhailovna = 90;, а что там у нее будет 90 - рост, вес или все сразу - тебя уже не должно ебать. Инкапсуляция свойств как она есть.
Аноним 26/06/15 Птн 01:34:37 #57 №504092 
>>504089
Спасибо, добра тебе
Аноним 26/06/15 Птн 10:01:14 #58 №504152 
14353020749180.png
ИТТ.
Аноним 26/06/15 Птн 11:35:23 #59 №504176 
>>504090
>а что там у нее будет 90 - рост, вес или все сразу - тебя уже не должно ебать.
Но подожди, если я не буду знать, что означают параметры конструктора, откуда я пойму какими значениями их надо заполнять?
Аноним 26/06/15 Птн 12:26:09 #60 №504194 
>>504176
Из документации?
sageАноним 26/06/15 Птн 13:32:46 #61 №504228 
>>503537
>Оперируешь абстрактынми терминами, при этом не привел определнения основного условия и ряда объективных критериев его выбора. У нас за такое сразу нахуй посылают.
Зависит от задачи, очевидно.

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

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

>>504045
Да её даже в комментах собственные друзья хуесосят. На мой взгляд, стоит начинать с учебников. Не можешь осилить учебники и упражнения из них - сразу иди нахуй. А то начитаются Алёны и потом говнокод вопреки стандарту пишут.
Аноним 26/06/15 Птн 15:25:09 #62 №504271 
>>504194
>рост, вес или все сразу - тебя уже не должно ебать. Инкапсуляция свойств как она есть.
>>504194
>Из документации?
То есть ООП, для того, чтобы из исходников было непонятно что по чем, и поэтому надо читать документацию?
>>504228
>НО НЕ ТОЛЬКО! У меня, например, постусловием идёт вывод информации в одной из задач.
Ну вообще только. Из семантики же следует: (начальное значение;условие прерывания;изменение состояния).
sageАноним 26/06/15 Птн 16:27:20 #63 №504300 
>>504271
Ты, вероятно, будешь удивлён, но даже при очень придирчивых настройках компилятора тебе даже предупреждения не выдаст. Всё компилируется и работает.
Аноним 26/06/15 Птн 16:43:09 #64 №504313 
>>504271
>То есть ООП, для того, чтобы из исходников было непонятно что по чем, и поэтому надо читать документацию?
Че ты все к ООП цепляешься? Ты спросил "А с какими это мне параметрами надо функцию вызвать?" я ответил.
Не нравится документация? Читай заголовок, типа
class TvoyaMamka(int SkolkoRazEeEbali) {...}
Обычно стараются сущностям давать имена, отражающие их суть.
Аноним 26/06/15 Птн 18:13:44 #65 №504355 
>>503387
>Местоположение Редмонд, Соединенные Штаты
А где ты находишься, мм?)) Может быть Silicon Valley?
Аноним 26/06/15 Птн 19:28:19 #66 №504394 
>>504228
>На мой взгляд, стоит начинать с учебников
Полностью согласен. Но давным давно, когда я учился на втором курсе ВМК и часто проебывал восхитительные семинары по крестам, а из книжек времени хватало только на Шилдта - вот тогда пару раз мне ее статьи сильно пригодились тому що экономили время. А потом уже я прочитал много умных книжек и ужаснулся, вновь наткнувшись на них. А ньюфагам должно быть полезно, если только они не будут как макаки все копировать.
Аноним 26/06/15 Птн 19:30:29 #67 №504399 
>>504355
А еще она занимается разработкой игор, имеет личинок и мужа с большим членом. Мечта местного контингента так жить просто, с учетом склонности к байтоебскому мазохизму.
Аноним 26/06/15 Птн 20:04:48 #68 №504426 
>>504399
>мужа с большим членом
У неё муж негр чтоли?
По блогу особо не копался.
По делу, воспитанные интеллектуало-няши уёбывают отсюда в далёкие края, и там обустраиваются. Я не верю, что на должность кококодера при зарплате 10к$ возьмут пизду ради пизды. На этом тему стоит закрыть, пока опять срачь не начался.
Аноним 26/06/15 Птн 21:21:06 #69 №504467 
Поясните, чем сишарп лучше крестов?
Я в замешательстве - начал читать Страуструпа про С++, а тут мне аноны подказывают что ++ говно и лучше учить шарп или яваскрипт...
Аноним 26/06/15 Птн 21:27:53 #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.

И где что не так?
Аноним 26/06/15 Птн 21:33:07 #71 №504473 
>>504467
Выбирай технологию блять исходя из того, какая тебе больше нравится, сколько вакансий в твоём городе по ней. Аноны тут тебе такого нарасказывают, окажется, что вообще нихуя учить не надо
Аноним 26/06/15 Птн 21:34:34 #72 №504474 
>>504473
Ну, я не совсем хотел язык для работы, сколько хотел делать игры, у меня есть куча кириллоидей.
Какой язык выбрать?
Аноним 26/06/15 Птн 21:53:15 #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.
Аноним 26/06/15 Птн 21:57:19 #74 №504480 
>>504474
Для игор? Что именно ты хочешь ПИСАТЬ? Программировать графон? Тогда кресты адназначна.
Аноним 26/06/15 Птн 21:58:55 #75 №504481 
>>504480
Геймплей, для начала я бы хотел написать простенькие игры.
Аноним 26/06/15 Птн 22:00:11 #76 №504483 
>>504480
Кресты для ГРАФОНА не нужны. То, для чего кресты применяются в игростроении, уже давно написано.
Аноним 26/06/15 Птн 22:01:48 #77 №504484 
>>504481
Если не собираешся делать шутаны, то бери юнити (а там шарп). С ним куча людей к успеху пришли.
Аноним 26/06/15 Птн 22:02:45 #78 №504485 
>>504484
Но я не хочу юзать чужие наработки, типа юнити, а хочу попробовать сам, что-нибудь типа ДФ сделать, но попроще.

>>504483
Какой язык лучше?
Аноним 26/06/15 Птн 22:10:14 #79 №504489 
>>504485
Ты не задумывался над тем что ЯП это тоже чужая наработка?
Аноним 26/06/15 Птн 22:12:32 #80 №504492 
>>504489
Ну не на ассемблере же писать...?
Да, и если углублятся, тогда уже лучше сделать мод на уже готовую игру - что меня не устраивает.
Аноним 26/06/15 Птн 22:14:03 #81 №504493 
>>504485
>Какой язык лучше?
Общелисп, конечно!
Не с того конца ты начинаешь, анон
Аноним 26/06/15 Птн 22:15:01 #82 №504495 
>>504492
>Ну не на ассемблере же писать...?
Тоже чужие наработки. Начни с проектирования собственного железа.
Аноним 26/06/15 Птн 22:15:11 #83 №504496 
>>504493
А с какого начать?
Да, и я читаю что в разные конторы, которые делают игры, требуются специалисты по С++.
Аноним 26/06/15 Птн 22:16:12 #84 №504497 
>>504496
Специалисты требуются по предметной области, а не цпп.
Аноним 26/06/15 Птн 22:16:56 #85 №504498 
>>504496
"Специалисты по c++" требуются только для поддержки легасиговна.
Аноним 26/06/15 Птн 22:17:44 #86 №504499 
>>504497
>>504498
Так с чего начать? Да, и я читаю что все дварф фортрессы написаны на С++ с использованием ОпенГЛ, даже дум.
Аноним 26/06/15 Птн 22:21:50 #87 №504503 
>>504492
Ну без использования сторонних библиотек/фреймворков ты нихуя не напишешь, даже для дварффортреса нужно подключать ncurses или как Тоади пердолится с опенгл. Проще всего начать с подбора фрейморка и использовать его язык. А у тебя какие-то странные предубеждения.
Аноним 26/06/15 Птн 22:23:30 #88 №504504 
>>504499
Что ты писать собрался-то?
Аноним 26/06/15 Птн 22:25:38 #89 №504507 
>>504503
Я в этом слабо разбираюсь и стою на перепутье, подскажи с чего начать?
Как я понял, OpenGL - это такая же библиотека, как и iostream, только более комплексная?

>>504504
Я думал сначала какую-нибудь змейку, тетрис, аркаду, а потом шутан уровня дума или стратегию.
Аноним 26/06/15 Птн 22:26:59 #90 №504508 
>>504499
Итак, ты можешь взять с++ и какую-нибудь библиотеку, например sfml, и начать велосипедить. Потому что ты не быдла, только школьники используют юнити!
А через некоторое время тебя это заебёт и ты станешь использовать юнити. сужу по своему опыту
Аноним 26/06/15 Птн 22:29:06 #91 №504509 
>>504508
В чем суть юнити?
Я всегда думал что это как редактор к варкрафту, только с намного большими возможностями, но всё равно недостаточными?
К тому же, я слышал что там можно писать только на С#.
Аноним 26/06/15 Птн 22:31:26 #92 №504510 
>>504509
Игровой движок. Что хочешь, то и сделаешь.
И на C# очень приятно и легко писать в отличие от крестов
Аноним 26/06/15 Птн 22:31:43 #93 №504511 
>>504499
1. Бери https://code.google.com/p/blackthorn-engine-3d/
2. разбирайся
3. допиливай
4. делай свою йобу
5. ???
6. ВЫГОДА
Аноним 26/06/15 Птн 22:32:07 #94 №504512 
>>504511
Как раз и проектировать научишься.
Аноним 26/06/15 Птн 22:32:58 #95 №504513 
>>504510
Но ведь всё пишут что игры и С++...

>>504511
Что за кошмар?
Аноним 26/06/15 Птн 22:33:20 #96 №504514 
>>504507
Я думаю тебе все равно что использовать. На простых вещах разницы нет. Хоть питон бери. Можешь плюсы попробывать, как анон выше писал ищи книгу "SFML Game Development.pdf" и ебашь по ней. Если обосрешся с подключением sfml ищи что-то проще. Но это уже наверное не плюсы, что-то не вспоминаю ниодной просто подключаемой библиотеки. Раньше тебе можно было бы graphics.h обойтись, но сейчас ее наверное хуй найдешь.
Аноним 26/06/15 Птн 22:35:53 #97 №504516 
>>504514
>sfml
Как я понял это что-то типа опенгл или директикс?
Почему сразу их не использовать, например?
Аноним 26/06/15 Птн 22:36:51 #98 №504517 
>>504509
>намного большими возможностями, но всё равно недостаточными
Сities: Skylines, Kerbal Space Program, Endless Legend, Infactory демиурги, лол, какой это год был-то? это недостаточные возможности?
Аноним 26/06/15 Птн 22:36:58 #99 №504518 
>>504513
>Но ведь всё пишут что игры и С++...
Так говорят только в /gd/. Много ты там игр змейки не в счет на крестах видел? То-то же.
>>504513
>Что за кошмар?
Оче годный, но не допиленный движок на лиспе. С нуля ты свой всё равно не напишешь, а вот допилить полуготовый может и получится.
Аноним 26/06/15 Птн 22:39:32 #100 №504519 
>>504516
> Почему сразу их не использовать, например?
По той же причине по которой не используют ассемблер. sfml обертка над opengl.
Аноним 26/06/15 Птн 22:40:18 #101 №504520 
>>504517
>>504518
Ладно, так что лучше: sfml и С++ или Unity и шарп?
Мне, просто, кажется что если я уйду в юнити, то стану анальным рабом одной программы, а если в 1 вариант, то смогу решить сам что делать. В общем, поясните, программисты!

>>504519
Т.е. изучив sfml, я смогу перейти на опенгл?
Аноним 26/06/15 Птн 22:41:43 #102 №504521 
>>504520
>Ладно, так что лучше
Лучше для чего, ёбанырот?
Аноним 26/06/15 Птн 22:43:45 #103 №504523 
>>504520
Судя по твоим вопросам, лучше тебе сначала набить программистские скилы
Аноним 26/06/15 Птн 22:43:54 #104 №504524 
>>504521
Чтобы сделать свой дум или chasm: rift?
Аноним 26/06/15 Птн 22:47:43 #105 №504530 
>>504524
Что именно ты хочешь запилить? Физику, рендерер, логику, етц?
Аноним 26/06/15 Птн 22:48:29 #106 №504532 
>>504520
Для шарпа есть еще monogame.
А для крестов не так уж и много игровых движков/библиотек с хорошей документацией. Так что выбор на самом деле невелик. А на OpenGL писать игры не самый лучший вариант, он тебе нужен, если только сам движкописательством хочешь заниматься или интересует программирование графики.
Аноним 26/06/15 Птн 22:49:11 #107 №504534 
>>504530
А самому нереально сделать такое?
Вообще, я хотел сделать игру с крутым ИИ, что-то похожее на ДФ.
Аноним 26/06/15 Птн 22:54:14 #108 №504539 
>>504534
И еще, я видел как-то скриншот - какие-то танки в псевдографике, там всё было выделено зелёными линиями, и полигонов было очень мало. Я думаю такую игру просто написать, вот это я бы еще хотел попробовать написать.
Аноним 26/06/15 Птн 22:57:08 #109 №504543 
>>504534
Понятно. Закатывай губу, бери любой язык высокоуровневый, не кресты. питон пойдет, бери любую библиотечку для работы с графикой и пили змейку, тетрис-хуетрис. Потом что-нибудь посложнее, ещё можешь поковырять готовые 2д-движки.
Аноним 26/06/15 Птн 22:57:53 #110 №504544 
>>504543
Почему так?
Аноним 26/06/15 Птн 22:59:59 #111 №504545 
>>504544
Потому, блять. Без элементарных навыков единственное, что у тебя получится, - участвовать в срачах на /gd
Аноним 26/06/15 Птн 23:04:39 #112 №504547 
>>504545
У меня есть навыки работы в пхп/скл (хтмл, цсс), немного яваскрипта (не особо в нём разбирался, но писал простенькие фишечки, типа открыть, закрыть комментарии етц.).
И вот уже где-то месяц я мечусь в поисках того что мне нужно - с чего начать.
Немного почитал про С++, потом мне сказали что это говно, все не любят этот язык и подвергают жесточайшей критике. Что число программистов и вакансий на этот язык сокращается.
Попробовал Питон, но пишут что он слишком простой, и сложные программы (типа игр) на нём не сделать.
В общем, сам не знаю что делать.
Аноним 26/06/15 Птн 23:13:44 #113 №504555 
>>504547
>В общем, сам не знаю что делать.
Что-что... вкатываться постепенно.
Питон отлично подойдет: быстрее освоишь, не будешь тратить время на малозначимые нюансы, коих в крестах слишком много, => быстрее прийдешь к результату.
Аноним 26/06/15 Птн 23:16:42 #114 №504559 
>>504555
Но на питоне же никто не пилит игры сложнее змейки?
У меня от твоего поста появилось чувство:
>быстрее прийдешь к результату
Будто под результатом ты имеешь ввиду что я на всё забью и дропну.
Аноним 26/06/15 Птн 23:23:21 #115 №504566 
Вообще, с C# и Юнити перекатиться на С++ будет легко?
Аноним 26/06/15 Птн 23:25:22 #116 №504568 
>>504547
Проблема не в том, что питон прост, проблема в скорости его работы, поэтому круизис на нем никто не пилит.
Ты хочешь работать в геймдеве или хочешь сделать игру?
Если первое, тогда кресты.
С++ используется в разработке "серьезных" игр из-за скорости и производительности. Но разработка на нем более медленная и сложная из-а особенностей языка. Для проекта в одиночку это весьма важный момент. Я сомневаюсь, что при разработке твоих игр ты столкнешься с проблемами, которые и вынуждают использовать с++
Майнкрафт вон на тормозной джаве написан и норм же.
Следует выбирать то, что удобно.
Можешь еще в сторону haxe поглядеть я на нем от скуки, используя движок haxeflixel платформер за два дня написал. Самое то для начинающего инди. Правда haxe малопопулярен и никому особенно-то не нужен.
Аноним 26/06/15 Птн 23:25:58 #117 №504571 
>>504495
Пусть начнет с создания собственной вселенной для начала.
Аноним 26/06/15 Птн 23:26:58 #118 №504572 
>>504559
Разберешься - сменишь инструмент на более подходящий, если в том будет необходимость.
А пока больше вероятность, что ты дропнешь где-то между хелловорлдом на плюсах и змейкой на них же.
Аноним 26/06/15 Птн 23:31:47 #119 №504574 
>>504568
>>504572
А что такого в плюсах, из-за чего:
>разработка на нем более медленная и сложная из-а особенностей языка
Просто, вроде ДФ написан на плюсах, а при крепости в 100+ бород тормозит на компе, который Крузис потянет.
Аноним 26/06/15 Птн 23:40:44 #120 №504584 
>>504568
Стоп, т.е. на питоне я смогу написать тоже самое что и на С++, только это просто будет жрать больше ресурсов?
Аноним 26/06/15 Птн 23:54:10 #121 №504595 
>>504584
И медленнее работать? Да. Но для простых игр это не сильно критично. Ну и сильно влияет вопрос кривости рук
>ДФ написан на плюсах, а при крепости в 100+ бород тормозит на компе, который Крузис потянет
Аноним 26/06/15 Птн 23:58:08 #122 №504603 
>>504595
А как же все эти библиотеки - опенглы и sfml? Они же, вроде, только для низкоуровневых языков программирования? Или как?
Аноним 26/06/15 Птн 23:58:41 #123 №504606 
>>504595
Ладно, тогда начну с завтра учить Питон, наверно.
Или лучше С++?
Аноним 27/06/15 Суб 00:14:33 #124 №504616 
>>504603
Не понял вопроса. Для питона есть свои библиотеки. Билдинги к сфмл есть к самым различным языкам, но либа эта крестовая и обычно на крестах под нее пишут.
>Или лучше С++
Не лучше и не хуже. Я как-то ради лулзов писал игру на go, хотя он нихуя для этого не предназначен.
Ты блять, какой-то неуверенный, но ладно, так и быть, я разрешаю тебе выбрать питон.
Выбери уже что-нибудь, главное не сиди и не теряй время.
Аноним 27/06/15 Суб 01:42:18 #125 №504634 
>>504606
Ты заебал уже, начни уже что-нибудь делать.
Аноним 27/06/15 Суб 01:46:15 #126 №504635 
есть кто на плюсах задачку за первый курс напишет?
Аноним 27/06/15 Суб 01:52:16 #127 №504637 
>>504635
ЗА ДЕНЬГИ
sageАноним 27/06/15 Суб 01:59:40 #128 №504641 
>>504523
Зеленый ебальник ему набить надо, а не скиллы.
sageАноним 27/06/15 Суб 06:57:35 #129 №504682 
>>504634
Да он с двача выйти не может.
Аноним 27/06/15 Суб 09:57:01 #130 №504696 
>>504616
Всё, тогда учу С++
Аноним 27/06/15 Суб 10:40:04 #131 №504704 
>>503476
пили сюда пример своего while-цикла, поржем
sageАноним 27/06/15 Суб 12:16:58 #132 №504715 
>>503434
типиный байтодаун не осиливший даже СП
Аноним 27/06/15 Суб 12:43:35 #133 №504722 
>>504471
Значит, утечки нет. Он же диагностирует их по факту, а не гипотетически возможные по стандарту. Видимо, в твоем случае new выделит им место последовательно, а потом delete [] простит косяк и удалит все. Вот он и не кукарекает.
>>504479
Так может у тебя еще утечки есть. Сделай main с утечкой и ничего больше. Ну и энивей для меня, например, его результат бинарный - либо есть утечки, либо нет, а на количество насрать, энивей исправлять же.
Аноним 27/06/15 Суб 12:47:48 #134 №504726 
>>504566
Нет.
Аноним 27/06/15 Суб 12:49:02 #135 №504727 
>>504574
Потому что писал еблан. Дай школьнику кресты, он там тебе такого понапишет с параллельными массивами и утечками на каждом шаге. Язык это не панацея же, а необходимое условие.
Аноним 27/06/15 Суб 12:50:23 #136 №504728 
>>504635
Показывай давай.
Аноним 27/06/15 Суб 12:53:47 #137 №504732 
Посоветуйте что почитать если знаю кресты на уровне ньюфага, но устроился на работу на них быдлокодером.
Аноним 27/06/15 Суб 12:56:44 #138 №504733 
>>504471
У меня vld 2.4RC2, в твоем случае 9 утечек показывает, так что хуй знает.
Аноним 27/06/15 Суб 12:59:28 #139 №504735 
>>504732
Помимо книг из оппоста:
Р. Мартин нет, петушок, это другой Мартин - Идеальный программист.
Э. Хант, Д. Томас - Программист-прагматик.
Аноним 27/06/15 Суб 13:15:33 #140 №504739 
14354001340000.jpg
>>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.
Аноним 27/06/15 Суб 13:20:26 #141 №504742 
>>504739
Что за фильм? ГодныйЙ?
Аноним 27/06/15 Суб 13:28:50 #142 №504750 
>>504742
2ch.hk/got/
Аноним 27/06/15 Суб 13:42:21 #143 №504763 
Ну всё, еще почитал интернеты, и твёрдо решил учить С++.

>>504727
Так, Тоад далеко не школьник, он учёный и имеет какие-то там дипломы за знание математики.
Аноним 27/06/15 Суб 13:44:30 #144 №504764 
>>504750
>2ch.hk/got/
Это Игра престолов? Годный сериал?
Аноним 27/06/15 Суб 14:03:47 #145 №504782 
14354030279340.png
>>504722
main с утечкой и был. Просто этот >>504471 что-то неправильно делает
Аноним 27/06/15 Суб 14:59:22 #146 №504800 
>>504763
>Так, Тоад далеко не школьник, он учёный и имеет какие-то там дипломы за знание математики.
Дык, учёный - не крестозадрот. Ему, как и любому другому нормальному человеку, ценящему своё время, легче написать простой и понятный код, чем ебаться с корявостью языка, переусложняя код на каждый чих. А то, что результат получился малоэффективный, - следствие низкоуровневости языка. На ассемблере получилось бы ещё более тормозное говно.
Аноним 27/06/15 Суб 15:11:12 #147 №504804 
>>504764
Ага.
Аноним 27/06/15 Суб 17:47:51 #148 №504856 
>>504715
Ты вообще не используешь continue/break? Почему?
Аноним 27/06/15 Суб 18:00:55 #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, то есть выбор между явной специализацией шаблона и просто функцией. Какие преимущества есть у явной специализации перед простой функцией, помимо того, что шаблон создаётся только тогда, когда нужен, а функция — всегда?
Аноним 27/06/15 Суб 18:10:50 #150 №504868 
>>504856
В 90% случаев continue/break являются индикатором плохого дизайна. Понятное дело, что если ты там поддерживаешь легаси с функциями длинной по 500 строк, то уже похуй и можно использовать что угодно, как и в случае, если тебе надо быстро-быстро накидать чтобработало и больше никогда его не открывать. В остальных же случаях всякие goto/continue/break, множественные ретёрны, длинющие функции-листинги, глубокие уровни вложенности и т.д. - запах говнокода, который бездумно писали не проведя нормальную объектную/структурную декомпозицию. Есть конечно ебанутые алгоритмы, которые по-другому не запилишь но как правило такие места встречаются редко.

Нужно отдавать себе отчёт в том, что это грубый сontrol flow, который понижает читабельность кода и размывает его консистентность, и стараться пересмотреть написанное каждый раз когда возникает желание их использовать.
Аноним 27/06/15 Суб 18:39:56 #151 №504880 
>>504862
При явной специализации шаблон всегда создается.
Аноним 27/06/15 Суб 18:43:05 #152 №504883 
>>504868
Как тебе такой код?
http://pastebin.com/0y4x0yVA

Можно его переписать без continue?
Аноним 27/06/15 Суб 19:06:53 #153 №504895 
>>504880
А ты не путаешь явную специализацию с явным созданием экземпляра шаблона? Иначе я вообще не понимаю смысла в явной специализации. Или это я попутал…
>>504862
>Какие преимущества есть у явной специализации перед простой функцией, помимо того, что шаблон создаётся только тогда, когда нужен, а функция — всегда?
>шаблон создаётся
Правильнее, конечно, экземпляр шаблона.

В любом случае какие профиты-то?
Аноним 27/06/15 Суб 19:11:32 #154 №504900 
>>504883
На мой ньюфаньский взгляд читается очень легко. Хотя, наверно, можно вместо if (ProxyObject == null) return; и прочего писать что-то типа if (ProxyObject == null) {...}. То есть вкладывать всю остальную программу в них. Однако я не уверен, что это будет читабельнее.
Аноним 27/06/15 Суб 19:43:32 #155 №504918 
14354234123830.jpg
14354234123841.jpg
14354234123852.jpg
14354234123853.jpg
Прочитал первых 2 пика и начал практиковаться на кодфорсе. Теперь планирую прочитать что-то по стандартной библиотеке. Нашёл 2 последних пика. Что на эту тему лучше прочитать? Например то где пояснят отличи sort и qsort. Что посоветуете?
Аноним 27/06/15 Суб 19:45:06 #156 №504919 
14354235068390.png
>>504900
>Однако я не уверен, что это будет читабельнее.
Их надо вынести в отдельную функцию. Появились же вложенные функции в плюсах.
Аноним 27/06/15 Суб 19:46:39 #157 №504920 
>>504918
>Например то где пояснят отличи sort и qsort. Что посоветуете?
"Многознанiе уму не научаетъ" (c)
Пиши код.
Аноним 27/06/15 Суб 19:47:30 #158 №504921 
>>504918
>2 последних пика
>по стандартной библиотеке
>Прата
Читать Прата после Страуструпа — это мощно. У него же идёт введение в язык с нуля. Загляни в оп-пост же.
Аноним 27/06/15 Суб 19:51:32 #159 №504925 
>>504868
Поясни тогда за случаи:
1. Метод получает параметр, который ему не нравится, и это видно сразу в начале метода например, nullptr. При этом ситуация недостаточно плоха, чтобы кинуть исключение, следует просто ничего не делать. Как по-твоему здесь сделать лучше, чем сразу return?
2.
[code = "cpp"]
Momma getYourMomma (size_t height, size_t weight)
{
string request = "method=getMomma&height=" + std::to_string (height) + "&weight=" + std::to_string (weight);
for (;;)
{
auto response = getResponse (request + "&nonce=" + std::to_string (getTime ()));
if (response.hui_sosi)
continue;
return response;
}
}
[/code]

Как в этой ситуации быть с твоей точки зрения? Если невозвращение сервером корректной мамки - это обычное дело, то исключения все замедлят. Вычислить один раз строку запроса и крутить в цикле только сам запрос нельзя из-за параметра nonce. Использовать do-while плохо из-за тот, что while легко спутать с началом нового цикла. Возвращать некорректную мамку наружу и вызывать метод, пока он не отдаст нормальную - плохо, клиент метода не хочет ничего проверять, он хочет получить корректную мамашу. Делать для этого второй метод-прослойку - чрезмерное запутывание кода.
Аноним 27/06/15 Суб 19:51:55 #160 №504926 
>>504921
>Загляни в оп-пост же.
А что там интересного? Полторы книги и Прата неправильный наверно.
Аноним 27/06/15 Суб 19:53:09 #161 №504928 
14354239892230.jpg
>>504925
Вот это обосрамс с разметкой.
Аноним 27/06/15 Суб 19:55:55 #162 №504930 
>>504868
>Нужно отдавать себе отчёт в том, что это грубый сontrol flow, который понижает читабельность кода и размывает его консистентность, и стараться пересмотреть написанное каждый раз когда возникает желание их использовать.
Очнитесь товарисч инженегр.
Двадцать лет мы двигаем «break» в конец цикла и «continue» в начало и у нас всё работает!
А если упоротые выскакивания из середины цикла понижают читабельность кода, то только у вас.
Аноним 27/06/15 Суб 19:56:08 #163 №504931 
>>504926
>Николаи Джоссатис - C++. Стандартная библиотека
Случай, братюнь, ты охуел штоле не читать оппост, блядь? Я старался, выбирал самые годные книги, собирал ссылки, чтобы анону искать не нужно было. Читай. Читай оппост до конца, блядь. Не хочу. Хочу жрать говно.
Аноним 27/06/15 Суб 19:57:44 #164 №504933 
>>504928
Очнитес и вы товарисч.
Зойчем ви смещиваити брейки с ретурнами? Тихийужос.
Аноним 27/06/15 Суб 19:59:35 #165 №504936 
14354243753720.jpg
>>504930
[code lang="cpp"]
while (true)
{
continue;
//body
break;
}
[/code]
>всё работает
Я бы даже сказал всегда работает, если вы понимаете, о чем я.
Аноним 27/06/15 Суб 20:00:28 #166 №504938 
>>504931
Там написано для профессионалов.
Аноним 27/06/15 Суб 20:00:45 #167 №504939 
>>504933
>Как в этой ситуации быть с твоей точки зрения?
Аноним 27/06/15 Суб 20:02:38 #168 №504941 
>>504938
Я бы не назвал книгу Джоссатиса сложной. Она объемная просто, тому що STL большая. И в ней новейшие сведения вплоть до C++14, в отличие от.
Аноним 27/06/15 Суб 20:04:34 #169 №504942 
>>504862
Бампану вопросик.
Аноним 27/06/15 Суб 20:05:04 #170 №504943 
14354247043190.png
>>504941
>И в ней новейшие сведения вплоть до C++14
Мы точно про одну книгу говорим? Она же 2004ого года.
Аноним 27/06/15 Суб 20:06:41 #171 №504944 
>>504943
Джоссатис, сука. Так и гугли. Не Джосьютис. Книга 2014 года, 40 МБ.
Аноним 27/06/15 Суб 20:07:34 #172 №504945 
>>504939
>Если невозвращение сервером корректной мамки - это обычное дело, то исключения все замедлят.
И всё же исключения. Но не

throw new Excpetion(ERR_OBOSRATUSHKI_OBTEKATUSHKI_SHOPESDEATH);

А вот так

throw AbstractSingletonProxyObosramsException;

Константу бросить, короче. Тогда тормозить не будет.
Аноним 27/06/15 Суб 20:08:02 #173 №504946 
>>504943
Потому что тебе надо второе издание.
http://rghost.ru/6LFrtnWVw
Аноним 27/06/15 Суб 20:10:09 #174 №504947 
>>504944
В ОП-посте эта. Может надо что-то поправить?
>>504946
Спасибо.
Аноним 27/06/15 Суб 20:11:38 #175 №504950 
>>504945
Будет существенно тормозить из-за невозможности объявить метод как noexcept и генерации лишнего кода обработчика.
Аноним 27/06/15 Суб 20:13:07 #176 №504953 
>>504947
На самом деле я хотел воткнуть новое издание в оппост, но не смог найти, где я его взял. А ргхост в шапке быстро протухнет.
Аноним 27/06/15 Суб 20:14:18 #177 №504954 
>>504950
Раз в полчаса будет существенно тормозить.
Байтоёб детектед.
Аноним 27/06/15 Суб 20:18:26 #178 №504959 
>>504953
Либо здесь либо здесь: http://progbook.ru/ http://www.proklondike.com/ больше негде.
Аноним 27/06/15 Суб 20:18:48 #179 №504960 
>>504954
Да ты охуел. Если у меня маленький метод, который в десять строчек скачивает мамку, я должен, блядь, генерить обработчик, который в три раза больше займет в VC, да еще и вызываться будет десять раз на один нормальный возврат мамки? Увольте-с, continue здесь меньшее зло.
Аноним 27/06/15 Суб 20:48:17 #180 №504973 
14354272979630.png
>>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
Аноним 27/06/15 Суб 20:50:28 #181 №504974 
>>504973
Как в ссылки русские буквы вписать?
http://my-files.ru/Download/cdm4zk%20Джосаттис%20Н.М.%20-%20Стандартная%20библиотека%20C%20.%20Справочное%20руководство%20-%202014.djvu
Аноним 27/06/15 Суб 20:58:31 #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]
у вас в плюсах не принято?

мимопроходил
Аноним 27/06/15 Суб 21:03:22 #183 №504979 
>>504862
>Какие преимущества есть у явной специализации перед простой функцией, помимо того, что шаблон создаётся только тогда, когда нужен, а функция — всегда?
Ещё одна попытка.
sageАноним 27/06/15 Суб 21:12:39 #184 №504984 
>>504355
Какая нахуй разница, где я нахожусь, быдлан. Я void main() { exit(0); } не пишу.

>>504426
>возьмут пизду ради пизды
При чём тут её половая принадлежность?Я как-то акцентировал внимание на этом, быдло?
Аноним 27/06/15 Суб 21:35:44 #185 №504990 
Я новенький новичок ньюфаг, начал поглощать Лафоре, нужен компилятор С++. Пытался искать на сайте мелкомягких - у них всё через жопу. На трекерах нашел Visual Studio 2013 - это оно?
Аноним 27/06/15 Суб 21:41:03 #186 №504992 
>>504990
Нет. Тебе надо GCC, но лучше G++.
Аноним 27/06/15 Суб 21:42:36 #187 №504994 
>>504990
Гугл -> visual studio 2013 (или даже 2015) -> первая ссылка -> ??? -> profit
Аноним 27/06/15 Суб 21:42:43 #188 №504995 
>>504992
Спасибо.
Аноним 27/06/15 Суб 21:45:04 #189 №504997 
>>504995
Вот ссылка. Он тебе не будет насильно пихать гуй и виндосовскую библиотеку.
http://sourceforge.net/projects/codeblocks/files/Binaries/13.12/Windows/codeblocks-13.12mingw-setup-TDM-GCC-481.exe/download
Аноним 27/06/15 Суб 22:18:49 #190 №505018 
>>504976
У нас есть do {response=getResponse (request + "&nonce=" + std::to_string (getTime ()))} while (!response.hui_sosi), но это нечитаемо же. И масштабируется плохо.
Аноним 27/06/15 Суб 22:25:05 #191 №505024 
>>504990
Ну короче идешь в comp.lang.c++ и спрашиваешь, файлы тоже где-то там лежат. Компилятор-то Бьерн периодически выкладывает туда. В интернете я как-то видел архив с компилятором, но чего-то не могу найти.
Аноним 28/06/15 Вск 13:50:44 #192 №505292 
14354886440240.png
>>504997
А что тут выбирать?
Аноним 28/06/15 Вск 14:34:16 #193 №505312 
14354912562640.png
>>505292
Кто юзает кодблокс - поясните, как тут компилировать программы?
ВОт, копировал простейший код, а как его исполнить?
Аноним 28/06/15 Вск 15:59:55 #194 №505353 
>>505312
F9
Аноним 28/06/15 Вск 16:08:33 #195 №505361 
>>505312
>build>build and run Или как-то так
Аноним 28/06/15 Вск 16:10:58 #196 №505368 
И кстати о C::B
>Code::Blocks 13.12 is here!
>Friday, 27 December 2013 20:00
Он таки умер?
sageАноним 28/06/15 Вск 16:36:03 #197 №505381 
>>505353
>>505361
Хватит очевидную зелень кормить.
даже если не зелень, то пусть лучше нахуй пойдет, чем в нашу благородную профессию с такими вопросами
Аноним 28/06/15 Вск 16:50:36 #198 №505386 
14354994362160.png
14354994362191.png
>>505361
>>505353
Поясните, если нажимаю F9, то выскакивает такая табличка, при чем если я нажимаю ДА, она всё равно выскакивает, а если нажимаю НЕТ, то выскакивает окно на 2, т.е. без "Хелло Ворлд!".
Аноним 28/06/15 Вск 20:53:33 #199 №505513 
>>505386
даун блядь, нахуя ты лезешь в программирование?
Скачай Visual Studio
Аноним 28/06/15 Вск 21:49:16 #200 №505553 
Для передачи в функцию что лучше использовать - указатель или ссылку?
Аноним 28/06/15 Вск 21:56:25 #201 №505558 
>>505553
Значение.
Аноним 28/06/15 Вск 22:04:11 #202 №505560 
>>505553
Если не меняешь изнутри - константную ссылку, значение. Если меняешь - указатель. Так будет заметнее, что меняешь.
sageАноним 28/06/15 Вск 22:30:57 #203 №505578 
>>505513
Да заебал, это ЗЕЛЕНЬ.
[НЕ КОРМИТЬ]
Так понятно?
Аноним 29/06/15 Пнд 01:48:05 #204 №505665 
>>505560
Если не нужен null, то используй ссылки
Аноним 29/06/15 Пнд 09:39:07 #205 №505726 
>>505513
VS слишком нагруженный, а кодблокс простой и есть портативная версия.

>>505578
Я не зелёный.
Аноним 29/06/15 Пнд 11:15:38 #206 №505746 
>>505553
Если читаешь один раз -- точно константную ссылку.

Если меняешь один раз -- точно ссылку.
Аноним 29/06/15 Пнд 11:57:41 #207 №505762 
>>505746
Мутабельная ссылка - это бомба, нужно использовать указатели, там сразу видно, что что-то не то.
Аноним 29/06/15 Пнд 23:03:24 #208 №506146 
>>505762
Что сказать-то хотел? Вообще не использовать ссылки для изменения значений?
Аноним 29/06/15 Пнд 23:22:02 #209 №506161 
>>506146
Он странный какой-то. Используй ссылки как можно чаще. А константные ещё чаще.
Аноним 30/06/15 Втр 01:26:07 #210 №506206 
>>506146
По возможности вообще не менять значения входных параметров, старайся делать функции как можно более чистыми.
Аноним 30/06/15 Втр 08:11:09 #211 №506247 
>>506206
- На работу! Чисти функцию, блядь! На! Чисти функцию!
- Чем, указателями, что ли, я буду?
- Чисти функцию! Да садись уже! Садись. Чисти!
- Блядь...
- Чтобы побочных эффектов не было!
- Как я буду на крестах-то чистить?
- Чисти!
- Покажи мне.
- Чисти!
<тимлид уходит>
- Епты. Блядь... Говно, блядь... Как в нем чистить, еб твою мать... Все ебанулись. Бля... Епта...
<пытается передать параметры через константные указатели, в это время тимлид возвращается>
- Чисти, чисти, сука. <достает хаскель> Вот как, блядь, нужно чистить,вот,быстро. Быстро. Раз-раз! Чисти, чисти, чисти-чис-чис-чиж-чж-чижь! Чисти! Говно! Чисти!
- Бля, у тебя получается классно, давай!
- Давай! Работай!
- Не буду я в этом писать, блядь! Не буду я!
- Пошел нахуй тогда отсюда, пошел! Блядь, ничего не можешь сделать, пошел нахуй, говно!
sageАноним 30/06/15 Втр 16:24:47 #212 №506462 
Форс мондад и прочего говна уже давно протух, но всегда вылезет восторженный школоебок, только что прочитавший про хачкель на лурке, и начинает по-новой делать вбросы про чистоту, еще более жирные, чем его мать-проститутка. За это я и люблю /pr/, здесь никогда ничего не меняется.
Аноним 30/06/15 Втр 18:31:06 #213 №506543 
Братишки, а кто-нибудь знает, где можно спиздить относительно свежую PVS-Studio? Я нашел только оче старую версию, да и та криво крякнутая и не работает.
Аноним 30/06/15 Втр 18:37:45 #214 №506546 
>>506543
Тебе зачем? Пощупать хватит и триала. На постоянной основе пользуюйся clang-toolkit и cppcheck
Аноним 30/06/15 Втр 18:49:21 #215 №506558 
>>506546
Мне прельстива его заточенность под студию. Для cppcheck тоже вроде как есть плагин, но он, насколько я понял, нерабочий то ли он ничего не показывает, пока полностью не проверит весь проект, то ли багнутый, но когда тыкаешь запуск, то нихуя не выводится. А standalone-версия у него вроде нормальная, но ее же вечно забываешь запустить, а я хотет, чтобы сразу можно было чекать, при написании кода, а не переключаться хуй знает куда.
Аноним 30/06/15 Втр 19:03:51 #216 №506575 
>>506558
Добавь external tool, для папки и текущего файла. 3 минуты и у тебя рабочие тулы
Аноним 30/06/15 Втр 23:19:25 #217 №506821 
>>506206
А если у меня цель функции -- изменить значение по ссылке? Например, потому что я не хочу копировать параметр, чтобы потом изменить его один раз, чтобы потом вернуть его как результат функции, чтобы потом результат функции скопировался в ту переменную, которую я до этого передавал как входной параметр?

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

А ещё функция может быть предназначена для того, чтобы изменить например два инта и один чар, и что теперь, по каждому чиху Struct лепить?
sageАноним 30/06/15 Втр 23:20:32 #218 №506822 
>>506821
Блядь,отписался без сажи в Алёна-треде. Всё, я зашкварен.
Аноним 01/07/15 Срд 01:05:46 #219 №506900 
>>506821
>изменить например два инта и один чар, и что теперь, по каждому чиху Struct лепить?
Нет конечно, это же С++ тред. Ты должен спроектировать интерфейс, создать дочерний класс, с кучей конструкторов на все случаи жизни, перегруженными операторами, ну и конечно обернуть все в шаблоны. Только идиот будет от всего этого отказываться - упрощает кодирование, сокращает время разработки и пр. преимущества.
Аноним 01/07/15 Срд 07:00:55 #220 №506961 
14357232550530.png
Почему в шапке нету Макконнела?
Аноним 01/07/15 Срд 07:17:05 #221 №506964 
>>506821
Изменяй по указателю. Тогда программист увидит foo(&x) и поймет, что x, скорее всего, меняется.
>А ещё функция может быть предназначена для того, чтобы изменить например два инта и один чар, и что теперь, по каждому чиху Struct лепить?
Для двух интов и чара ты можешь и std::tuple вернуть, тогда не придется заставлять пользователя создавать int tmp1 там, где ему не надо.
Аноним 01/07/15 Срд 07:40:12 #222 №506967 
>>506961
Потому что Макконнелл писал не про кресты. А книга хорошая у него.
Аноним 01/07/15 Срд 07:55:47 #223 №506972 
>>506821
1. Преимущественно следует делать через указатели, это верно.
2. Иногда использование ссылок предпочтительнее. В частности, когда в метод метод может не просто изменять аргумент, а портить его, перемещая. Если ты в любом случае готовишь временный prvalue-объект (напрямую или делаешь его с помощью std::move), то использование мутабельной rvalue reference в таком методе предпочтительнее использования указателя, ибо с указателями создание объекта для передачи придется отделять от взятия адреса для передачи в метод. Такой способ использования ссылок-параметров не даст выстрелить себе в ногу, потому что для вызова над ценным объектом энивей придется явно указать std::move для него.
3. Проблема преувеличена даже в случае обычной ссылки. Если метод возвращает void и имеет имя getTvoyaMamka, то вряд ли его используют в надежде, что он ничего не сделает с параметрами. Нужно думать головой, и все будет хорошо.
Аноним 01/07/15 Срд 08:26:42 #224 №506977 
>>504936
Рассмешил, пес.
Аноним 01/07/15 Срд 08:30:45 #225 №506978 
https://youtu.be/smqT9Io_bKo
Аноним 01/07/15 Срд 08:30:49 #226 №506979 
>>505386
Заебал, скачай Dev-c++ и не еби мозги. А по факту посмотри видео и с помощью блокнота и конскольки собери хоть одну программу.
Аноним 01/07/15 Срд 11:45:39 #227 №507033 
В массиве из 10 чисел найти минимальный элемент и поделить на него остальные элементы.
Ананасы, нид халп. Си++ или С
Аноним 01/07/15 Срд 12:50:33 #228 №507065 
>>507033
for (auto & current : array) current /= *std::min_element (std::begin (array), std::end (array));
Аноним 01/07/15 Срд 14:43:53 #229 №507138 
>>507065
Пасяб
Аноним 01/07/15 Срд 15:35:21 #230 №507172 
>>504782
>>504733
Ну ахуеть. Неправильно оказывается было ставить стабильную версию. Поставил RC все заработало.
Аноним 01/07/15 Срд 15:41:48 #231 №507175 
>>507172
Ну хуй знает. Я как раз сегодня попробовал в перенос проекта на RC, оказалось, что это предрелизное говно кишит багами, блядь. Не может распарсить инициализацию с шаблонами вне конструктора в духе члена TvoyaMamka mamka = Mamkogenerator <TvoyaMamka>::getObject ();. Какие-то охуительные утечки при создании std::thread, причем вообще на стеке. Обоих багов в 13 релизной не было, ну я и вернулся на нее, пока не поздно. Ждем RTM короче.
C++ боль. Аноним 01/07/15 Срд 17:59:15 #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). Каждый раз разные. Явно в памяти какая-то лажа. Но как такое может быть?
Аноним 01/07/15 Срд 18:17:00 #233 №507320 
>>507302
>w
>cv
>AtWA
Ты символы экономишь, сука? Давай переделывай интерфейс, имей уважение к анону.
Аноним 01/07/15 Срд 18:39:22 #234 №507348 
>>507320
русские форумы.тхт
Это не я экономлю символы, а Chris Montgomery.
Аноним 01/07/15 Срд 19:02:42 #235 №507382 
>>507348
Ну, дружочек, расшифровывай тогда. Мне-то откуда знать, что там у тебя за cv::Mat.
Аноним 01/07/15 Срд 19:06:09 #236 №507388 
>>507382
Если ты не знаешь, что это, ты вряд ли ответишь на мой вопрос. Вообще это больше крик души.
Аноним 01/07/15 Срд 19:08:19 #237 №507391 
>>507388
Я с OpenCV знаком только на универском уровне, распознавание монеток и вот это все. Когда начинается байтоебство с возвратом говна через параметры и ФЛАГАМИ | НАСТРОЙКАМИ, мне сразу хочется взять и уебать.
Аноним 01/07/15 Срд 19:11:46 #238 №507399 
>>507388
Да тут не важно в общем-то, OpenCV это или нет. Явно у входного параметра какой-то кривой форма. Может его транспонировать, лол.
Аноним 01/07/15 Срд 19:22:06 #239 №507408 
>>507302
Там нет требования, чтобы q == dst?
Аноним 01/07/15 Срд 19:24:14 #240 №507412 
>>507408
Нету, но попробовал dst(q,q - не помогло.
Аноним 01/07/15 Срд 19:27:21 #241 №507418 
>>507412
Ты для начала тогда глянь, эта хуета в dst, она меняется после фурьеризации, или это просто мусор из-за того, что не инициализировано. Вообще, запусти отладку, залезь поглубже и смотри, что там происходит же.
Аноним 01/07/15 Срд 19:27:53 #242 №507421 
>>503274
Драсте, выучил я тут, короче, похапе и застрял на том, что для дальнейшей практики нужно покупать ебучий хост. К тому же в вакансиях на фрилансе требуется целая хуева туча каких-то фреймворков и MVC. Решил выучить язык с более доступной средой разработки - кресты. Вроде он котируется, как сложный и вакансии на нем должны быть. Поясните за фриланс на крестах желательно на елансе и прочих зарубежных фирмах. Какое должно быть портфолио и все такое?
Аноним 01/07/15 Срд 19:36:27 #243 №507435 
>>507421
Фриланс на крестах возможен, но порог вхождения очень высокий. Если ты не способен разобраться в проблемой бесплатного хостинга, то это явно не для тебя.
Аноним 01/07/15 Срд 19:40:34 #244 №507441 
>>507435
Я могу разобраться с проблемой бесплатного хостинга, но там нет табблицы ИННОБ дб, а платить штуку за три месяца на платном только чтобы ее выдрочить, я не собираюсь.
Расскажи подробнее про портфолио и хуйню, которую нужно наклепать, чтобы работать на крестах на фрилансе.
Аноним 01/07/15 Срд 19:41:02 #245 №507442 
>>507421
Вот тебе портфолио:
int i = 14;
i = ++i + ++i;
std::cout << i << std::endl;
Что выведется?
Аноним 01/07/15 Срд 19:42:45 #246 №507444 
>>507441
Ну я, например, пропатчил опенсорсный компилятор на гитхабе.
Аноним 01/07/15 Срд 19:48:34 #247 №507458 
>>507444
и все? и потом кинул ссылку на гитхаб и получил жаботу на фрилансе?
Аноним 01/07/15 Срд 19:51:45 #248 №507464 
14357695050400.gif
>>507442
числа от 0 до 23?
Аноним 01/07/15 Срд 20:21:41 #249 №507469 
Вопрос по указателям можно задать тут? Небольшая проблема с Ошибкой сегментацией.
Аноним 01/07/15 Срд 20:29:30 #250 №507476 
>>506967
>>506961
Что за книга?
Для нубов?
Читая Прата.
Аноним 01/07/15 Срд 20:29:46 #251 №507477 
>>507441
В чем проблема нахуярить на виртуалке?
Аноним 01/07/15 Срд 20:38:09 #252 №507482 
>>507476
Стив Макконнелл - Совершенный код. Там не про детали проектирования и тем более не про синтаксис крестов, а общие рекомендации, как улучшить качество кода, в применении к любому языку.
Аноним 01/07/15 Срд 20:40:04 #253 №507484 
>>507469
Используй container.at () вместо container [] жи.
Аноним 01/07/15 Срд 20:44:40 #254 №507488 
>>507458
Если для тебя это "и все", то да, и все. Но вообще это если у тебя вопрос стоит о "а фрилансе требуется целая хуева туча каких-то фреймворков и MVC", то это нихуя не и все. Ты документацию на llvm видел?
Аноним 01/07/15 Срд 20:48:07 #255 №507489 
>>507482
Для нуба сойдет или слишком непонятно?
Аноним 01/07/15 Срд 20:52:11 #256 №507490 
>>507489
Смысла нет. Тебе просто буду чужды те проблемы, что обсуждаются в книге.
Аноним 01/07/15 Срд 20:53:28 #257 №507491 
>>507490
Это тоже может быть полезно, зависит от склада мышления.
Аноним 01/07/15 Срд 21:01:25 #258 №507493 
можно спиздить компилятор с хабра и выдать за свой?
Аноним 01/07/15 Срд 21:02:15 #259 №507495 
>>507477
в том, что я настолько туп, что не могу и не хочу настраивать денвер или сам пхп.
Аноним 01/07/15 Срд 21:05:31 #260 №507496 
Господа, вопрос: если хочется делать именно игрушку, то что лучше выбрать -- привычный Qt или изучение sfml в процессе?
Аноним 01/07/15 Срд 21:06:01 #261 №507497 
>>507495
Тогда ты не сможешь в фриланс на крестах. Попробуй во фриланс на экселе/vb (я не смеюсь, за это тоже платят).
Аноним 01/07/15 Срд 21:15:42 #262 №507505 
invalid operands of types 'double' and 'double [(((size type)(((size type)N) + -1)) + 1)]' to binary 'operator*' может кто пояснить, в чём проблема?
Аноним 01/07/15 Срд 21:21:53 #263 №507508 
>>507497
Нет, я постоянно слышу про кресты или шарп. Так что я выбираю между ними.
Аноним 01/07/15 Срд 21:25:31 #264 №507510 
>>507508
Но как ты тогда решишь проблему того, что ты слишком тупой?
Аноним 01/07/15 Срд 21:26:49 #265 №507511 
>>507510
Но вижуал бейсик я себе уже установил, какие могут тут возникнуть заморочки со средой йопта?
Аноним 01/07/15 Срд 21:27:14 #266 №507512 
>>507511
>бейсик
студио т.е.
а вообще даже вакансий для крестовика не нашел в своем мухосранске. лел.
Аноним 01/07/15 Срд 21:27:55 #267 №507513 
>>507508
>>507510
Ну подскажите, в чём ошибка-то.
Аноним 01/07/15 Срд 21:28:38 #268 №507514 
Анон, как ты смотришь на книгу "Программирование. Принципы и практика использования C++ Бьерн Страуструп" в качестве первой книги для ньюфага^10?
Аноним 01/07/15 Срд 21:29:38 #269 №507515 
>>507511
Так проблемы не со средой, а с тобой будут. Видишь: ты уже этого не понял. Иди форму в экселе хуярь.
Аноним 01/07/15 Срд 21:41:06 #270 №507521 
>>507515
Он похож на зеленого.
Аноним 01/07/15 Срд 22:22:15 #271 №507551 
>>507442
Да все уже давно знают, что UB
Аноним 01/07/15 Срд 23:45:27 #272 №507606 
>>507505
Умножаешь дабл на массив, схуяле тут не должно быть проблемы?
Аноним 01/07/15 Срд 23:46:34 #273 №507609 
>>507514
Читай, если уверен, что мотивация не пропадет от изложения без щюток, примеров и упражнений.
Аноним 01/07/15 Срд 23:47:46 #274 №507611 
>>507551
Unspecified или undefined?
Аноним 02/07/15 Чтв 01:15:50 #275 №507669 
>>507611
Undefined?
Аноним 02/07/15 Чтв 06:05:39 #276 №507696 
>>507606
А у меня данные для расчёта этого числа, лежат в массиве. Что тогда делать?
Аноним 02/07/15 Чтв 06:12:35 #277 №507697 
>>507696
http://pastebin.com/QvPxW1fm
выглядит так.
Аноним 02/07/15 Чтв 06:51:15 #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 ==========

Аноним 02/07/15 Чтв 07:44:03 #279 №507713 
>>507702
Идентификатор объяви
Аноним 02/07/15 Чтв 08:22:21 #280 №507719 
>>507702
забыл или #include <iostream> или using namespace std;
Аноним 02/07/15 Чтв 10:24:26 #281 №507752 
14358218669030.png
>>507702
>русек
Аноним 02/07/15 Чтв 13:08:05 #282 №507819 
>>507697
Ты заебал во все треды срать своим говнокодом. Серьезно, твоя прога вызывает почти физически ощутимое отвращение.

Что значит "данные лежат в массиве"? Ты хочешь умножить вектор на константу? Тогда сделай проход по массиву и умножь на каждый элемент
Аноним 02/07/15 Чтв 13:22:19 #283 №507828 
>>507752
https://www.reddit.com/r/programming/
Больше не приходи
Аноним 02/07/15 Чтв 14:19:35 #284 №507871 
Анон, можно ли встроенным sort'ом отсортировать многомерный массив по одной из размерностей? (Объяснение моего реквеста уровня /b: есть int m[n][2], m[0] - порядковый номер человека, m[1] - длина его хуя, хочется чтобы после сортировки у человека номером m[n-1][0] был самый большой m[n-1][1](=пинус, кто совсем ДЦП)).

Аноним 02/07/15 Чтв 14:21:37 #285 №507876 
>>507871
>m[0] - номер
>m[1] - палка
фикс
Аноним 02/07/15 Чтв 14:22:27 #286 №507877 
>>507876
ДА ЕБАНЫЙ В РОТ ЭТОЙ РАЗМЕТКИ
Аноним 02/07/15 Чтв 14:35:52 #287 №507885 
Скажи мне, двач. Есть у нас игровое поле в клеточку. Многослойное. Например, как в цивилизации: первый слой -- вода, второй -- травка и прочая территория, третий -- холмы и горы, четвертый -- дороги и реки, пятый -- леса, города и шахты. Собственно, вопрос: как лучше это все хранить в памяти?

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

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

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

В общем, расскажите, как это делают умные ребята?
Аноним 02/07/15 Чтв 14:47:52 #288 №507891 
>>507885
В цивилизации разве многослойное поле? Там просто матрица с объектами.
Бесконечная карта - чанки (то есть те же матрицы), процеурная генерация и хранение диффов между сгенерированным и фактически. Майнкрафт, в общем.
Аноним 02/07/15 Чтв 15:23:51 #289 №507920 
>>507871
Конечно. Сейчас набросаю, как примерно это выглядит.
Аноним 02/07/15 Чтв 15:35:50 #290 №507929 
>>507885
Гугли способы представления разреженных массивов. Вкратце: при любом способе хранения, отличном от обычного, скорость доступа будет ухудшена, твоя задача - найти компромисс между скоростью и размером. Например, все ненулевые элементы хранятся в виде красно-черного дерева. Так как оно сбалансированное (оптимальное по глубине), ты будешь быстро (за O (h)) доставать и изменять элементы, удалять медленнее). С матрицей абсолютно то же самое будет, хранишь дерево для каждой строки, например.
Аноним 02/07/15 Чтв 16:00:03 #291 №507952 
>>507302
В общем, это был баг в opencv.
sageАноним 02/07/15 Чтв 16:13:13 #292 №507956 
>>507514
На Страуструпа я вообще плохо смотрю.
Аноним 02/07/15 Чтв 16:43:21 #293 №507970 
>>507920
[code lang="cpp"]
const size_t n = 100;
const size_t k = 2;
const size_t p = 1; //По какой размерности сортируем
int m [n][k];

int begin = reinterpret_cast <int > (m);
std::stable_sort (begin, begin + n k, [begin, k, p] (const int & first, const int & second)
{
return ((0 == (&second - &first) % k) && (
(&first - (&first - begin) % k + p) < *(&second - (&second - begin) % k + p)));
});
[/code]
Аноним 02/07/15 Чтв 17:25:48 #294 №507988 
>>507956
Почему?
Аноним 02/07/15 Чтв 17:33:25 #295 №507990 
В code::blocks можно поменять название переменной сразу везде, по всей программе?
Аноним 02/07/15 Чтв 17:38:18 #296 №507994 
>>507990
Контекстное меню - code refactoring - rename symbols не работает?
Аноним 03/07/15 Птн 17:07:46 #297 №508523 
А можете пояснить за вектора?
Где-то видел, что у них быстрая вставка только в конец массива. Это так? Насколько будут медленнее, например, .insert(a.begin(), 1234) или .insert(a.begin() + 10, 1234) по сравнению с простым .insert(a.end(), 1234)?
Аноним 03/07/15 Птн 17:30:06 #298 №508545 
>>508523
От размера вектора зависит. Относительно того что всатвка вначало медленее вставки в конец это тестить надо. Вставка в середину однозначно медленее, остальное от реализации зависит. К примеру у яблочного NSArray вродебы хитрожопая реализация с быстрой вставкой и в конец и в начало. В середину естественно медленно - масив же сдвигать надо, от этого никуда не денешся. Быстрая вставка в связные списки - но у них свои недостатки.
Аноним 03/07/15 Птн 18:28:38 #299 №508579 
14359373187200.jpg
Антуан, я хочу в определении класса создать указатель на функцию, который в процессе работы может указывать на разные функции из этого-же класса. Код ниже компилируется но не работает. Что я делаю не так, и реально ли это сделать?

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

T (push)();
T push_first() {}
T
push_other() {}
};
Аноним 03/07/15 Птн 18:30:26 #300 №508580 
>>508579
Прошу прощения за \t
Аноним 03/07/15 Птн 18:34:57 #301 №508584 
>>508579
> T (List<T>::push)() = &List<T>::push_first;
И что ты этим пытался добиться?
Аноним 03/07/15 Птн 18:36:11 #302 №508586 
>>508579
Патамушто методы должны быть статическими
Аноним 03/07/15 Птн 18:41:11 #303 №508591 
>>508586
То есть это нельзя сделать в принципе?
Аноним 03/07/15 Птн 18:41:35 #304 №508592 
>>508584
Ты вопрос читал?
Аноним 03/07/15 Птн 18:42:01 #305 №508593 
>>508591
Именно.
Аноним 03/07/15 Птн 18:46:35 #306 №508601 
>>508579
Если по-простому, то объявляешь указатель как T (List <T>::*ptr) () = &push_first;
Но нормальные посоны давно юзают std::function, в твоем случае это будет выглядеть как std::function <T ()> push { std::bind (&push_first, this) }; Тогда решается проблема с тем, от имени какого объекта ее вызывать.
Аноним 03/07/15 Птн 19:17:03 #307 №508616 
Программисты, как сделать десктопное приложение в стиле metro, например как visual studio, плеер мередиан, офис и т.д. Все что нашел в интернете это как создать metro приложения, а интересует имеено десктоп. Неужели без C# никак
Аноним 03/07/15 Птн 19:20:24 #308 №508619 
>>508616
> metro
> без C#
А как ты себе представляешь шарпоговно без собственно шарпа?
Можешь попробовать Qt, виджеты умеют в нативные элементы на всех 3-х основных платформах. А на Qml можешь вообще что угодно нарисовать.
Аноним 03/07/15 Птн 19:22:08 #309 №508620 
>>508619
Ну хуй знает как, может уже библиотеки какие-нибудь завезли. Самому winapi дрочить не хочется, похоже придется на qt все делать
Аноним 03/07/15 Птн 19:22:58 #310 №508622 
>>508616
В VS2015 вроде какую-то библиотеку для крестов завезли.
Аноним 03/07/15 Птн 19:26:41 #311 №508624 
>>508622
Узнать бы какую и доки к ней
Аноним 03/07/15 Птн 19:44:38 #312 №508634 
>>508624
https://dev.windows.com/en-us/develop
Аноним 03/07/15 Птн 20:22:09 #313 №508652 
>>508634
Кажется это то что нужно, спасибо
Аноним 03/07/15 Птн 21:50:26 #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, что передается в этот шаблон?
Аноним 03/07/15 Птн 23:41:18 #315 №508749 
Поясните, а Прата из шапки нормальный автор и его книга?
Я, вот, читаю, но там используется
cin.get();
cin.get();
return 0;
Заместо getch_
Это правильно или книга уже устарела?
Аноним 04/07/15 Суб 01:10:59 #316 №508792 
>>508749
оба два варианта устарели
Аноним 04/07/15 Суб 01:39:38 #317 №508804 
У меня выдает ошибку при вызове функции с двумерным массивом. Что с этим делать?
Аноним 04/07/15 Суб 01:42:18 #318 №508805 
>>508804
Игнорировать.
Аноним 04/07/15 Суб 01:43:19 #319 №508806 
>>508804
Осваивать метлу, программирование тебе не дано
Аноним 04/07/15 Суб 01:47:28 #320 №508808 
>>508806
Спасибо.
Аноним 04/07/15 Суб 01:47:35 #321 №508809 
>>508804
Какая ошибка? Как вызываешь? В общем код в студию, что ж вы такие непонятливые
Аноним 04/07/15 Суб 01:52:33 #322 №508811 
>>508809
К сожалению сейчас не могу доставить код. Да похуй уже. Лучше метлу буду осваивать.
Аноним 04/07/15 Суб 02:36:57 #323 №508833 
14359666171850.jpg
14359666172581.jpg
То самое чувство когда ты без работы а ты крестопидор.
Аноним 04/07/15 Суб 02:43:37 #324 №508837 
>>508833
Ты это я, дрочил 5 лет в универе C/C++, в то время когда одногрупники занимались вебом. Теперь у меня нет постоянной работы, а не постоянная это курсачи и лабы
Аноним 04/07/15 Суб 09:04:53 #325 №508862 
>>508692
Имя типа же. Там в описании шаблонного класса list что-то вроде typedef T value_type. Это сделано, чтобы ты мог узнать тип значения после инстанцирования шаблона, написав list <TvoyaMamka>::value_type. Широко использовалось, когда auto не было, и по-другому тип значения, которое ты хочешь создать, часто было не узнать. Еще применяется в метапрограммировании, например, есть куча служебных структур-шаблонов, в которых ничего нет кроме такого typedef. И ты можешь писать std::is_same <MoyaMamka, TvoyaMamka>::value, и типы сравнятся еще на этапе компиляции, а не с лишними тормозами как при использовании typeid.
Аноним 04/07/15 Суб 09:20:51 #326 №508865 
>>508749
Поясняю. Автор нормальный, нужно читать самое последнее издание (оно емнип второй половины нулевых). Книги старые, в первых изданиях и не такое встретишь. Далее. Имена с "_" в библиотеках обычно служебные, code style предписывают обычно именовать так приватные члены (с "_" на конце). То, что они доступны - ничего не значит, часто в стандартах ничего про них нет, т.е. интерфейс не гарантируется, и в любой момент разработчик компилятора может что-то поменять внутри так, чтобы не отвалились только нормальные имена. Таким образом, getch_ использовать нежелательно, он просто не предназначен для использования тобой. istream::get () - это ОФФИЦИАЛЬНЫЙ ТМ метод, его использовать можно, но уместность его ограничена. Видишь ли, считывание по одному символу считается дурным тоном из-за того, что тогда резко усложняется возможность автоматической оптимизации ввода автором библиотеки. Ввод работает далеко не последовательно, по факту символы считываются пачками, а ты использованием get() для считывания из файла вставляешь им палки в колеса. Считывание больших кусков по cin >> TvoyaMamka поэтому гораздо предпочтительнее циклов с istream::get (). Но если ты считываешь с экрана именно по одному символу например, у тебя ебанутый текстовый интерфейс (Y/N)?, то можешь делать get (). Хотя все привыкли к ">>" и это все же считается лучшим способом даже для считывания символов по одному, ибо работа не замедляется, писать меньше, а именование универсальное для всех классов operator>> () обычно занимается вводом, а метод можно назвать get (), или getChar (), или zabirayuSimvol (), такое разнообразие отвлекает. И последнее. Использование get () для того, чтобы программа не закрывалась после завершения - это худшее, что ты только вообще мог сделать. Одновременно показывается и то, что ты запускаешь ее мышкой при запуске из консоли весь вывод сохранится и без get (), разумеется, и то, что ты необучаемый и не можешь нагуглить, как узнать о нажатии клавиши без считывания самого символа.
Аноним 04/07/15 Суб 10:34:47 #327 №508877 
>>508865
>>508792
Книга из шапки 2003 года, вроде.
Т.е. лучше читнуть другую книгу? Тогда какую? В шапке для нюфань все примерно такого года.
Аноним 04/07/15 Суб 13:40:31 #328 №508956 
>>508877
https://vk.com/doc10903696_280548529?hash=13aad83fa0a163fa65&dl=a86618dc508b835a47
Аноним 04/07/15 Суб 14:01:09 #329 №508961 
14360076690240.png
>>508956
В ней тоже используется эта конструкция. Но ладно, раз 2012 год, вроде еще актуально.
Спасибо.
Аноним 04/07/15 Суб 14:04:42 #330 №508964 
>>508961
Я в сперме system("pause") использовал, пока shift-f5 не открыл
Аноним 04/07/15 Суб 14:37:01 #331 №508981 
>>508961
Ну так это костыль для самых маленьких же. Тут либо ты используешь нормальную IDE Visual Studio, либо для своих программ делаешь ожидание нажатия клавиши как полагается, без костылей. Но проблема в том, что Прата пишет книгу для нубов, и оба решения неуместны - попросишь нюфага качать IDE или начнешь объяснять на две страницы, как сделать нормально, а он возьмет и ливнет. Поэтому дается быстрое решение для тех, кто не хочет ничего решать. Ты еще не видел мой учебник по ассемблеру, там вообще давалась распечатка библиотеки ввода-вывода, потому что про это объясняется только в конце книги, а работать с примерами как-то надо, лол.
Аноним 04/07/15 Суб 15:00:42 #332 №508994 
14360112427640.png
>>508981
>Visual Studio
А кодблокс нормальный? Мне понравилось что он не такой громоздкий и не устанавливает гиг дополнительной хуйни.
Даже можно портативным сделать.
Аноним 04/07/15 Суб 15:08:11 #333 №509003 
>>508994
Нормальный. Студия для С++ имеет смысл только в связке с visual assist x.
sageАноним 04/07/15 Суб 15:34:17 #334 №509017 
>>508964
ctrl+F5 , ты хотел сказать? Но это запуск без дебага.
Аноним 04/07/15 Суб 15:35:56 #335 №509020 
>>509017
Сажу сними, заебал.
Аноним 04/07/15 Суб 15:37:19 #336 №509022 
>>509003
В пятнадцатой студии уже из коробки есть все для рефакторинга.
Аноним 04/07/15 Суб 15:40:27 #337 №509027 
>>509022
Видишь, какой я немодный теперь. emacs+cmake+qtcreator для gui-дебага - идеальная связка для меня.
Аноним 04/07/15 Суб 15:41:07 #338 №509028 
>>508994
Ну он годен под стандартные задачи, но если честно, студия настолько оставляет позади по удобству все остальные среды, что я готов ей прощать косяки и посерьезнее гига дополнительной хуйни. Визуальный отладчик с деревом потоков и IntelliSense просто божественны, базарю еще захочешь.
Аноним 04/07/15 Суб 16:13:12 #339 №509048 
>>509027
> emacs+cmake+qtcreator
Эталонный говноед.
Аноним 04/07/15 Суб 16:15:34 #340 №509051 
>>509048
Что тебе не нравится?
Аноним 04/07/15 Суб 16:59:19 #341 №509091 
>>509051
Например, текстовый редактор для программирования и кутэ?
Аноним 04/07/15 Суб 17:06:14 #342 №509094 
>>509091
Я вообще кьютом не пользуюсь. QtCreator я использую только как фронтэнд к gdb - он хорошо работает с cmake-проектами, нативный, а не на java писан.
А "текстовый редактор для программирования" - а что еще можно использовать, не IDE же.
Аноним 04/07/15 Суб 21:04:51 #343 №509139 
>>508634
Что-то не работает, или у меня руки из жопы, или надо ждать win 10
Аноним 04/07/15 Суб 23:19:22 #344 №509174 
14360411621390.png
Учу кресты. Не до конца понимаю что такое динамическая, стековая, и статическая память. И путаю ссылки и указатели. Что почитать? Может есть хорошие книги в которых этому глава посвящена чтобы не читать целиком? Или статьи? Гугл показал этот http://www.intuit.ru/studies/courses/2193/67/info курс. Вроде не большой, но делали его люди занимающееся рашкообразованием. Может стоит пройти? Там в литературе к курсу смотреть пик вроде ничего конкретно по этой теме нет, но может узнаете хорошие книги в которых затрагивается эта тема и что-то посоветуете.
Аноним 05/07/15 Вск 00:15:31 #345 №509192 
Есть ли улучшения в скорости если использовать работу с файлами в стиле С, а не С++? Можно ли это сочетать с cin и cout?
Аноним 05/07/15 Вск 00:26:31 #346 №509197 
>>509192
Если и есть то совсем не существенные, используй современные методы
Аноним 05/07/15 Вск 00:33:07 #347 №509201 
>>509197
Есть что по этому поводу почитать? Видел статью на хабре, но там только про ввод/вывод на экран. Если не средствами программ, а средствами системы перенаправить вывод в файл, то результат не измениться?
Аноним 05/07/15 Вск 00:48:58 #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.
Аноним 05/07/15 Вск 00:59:23 #349 №509206 
>>509201
Просто найди исходники реализации и посмотри, возможно внутри все сделано на старых сишных методах
Аноним 05/07/15 Вск 01:08:51 #350 №509208 
>>509201
> Видел статью на хабре
Ты про эту http://habrahabr.ru/post/246257/
Аноним 05/07/15 Вск 01:20:52 #351 №509210 
>>509208
Да. Только они там с файлами работают средствами системы, а нужно средствами программы.
>>509206
Не достаточно хорошо в этом разбираюсь.
>>509205
Нужен GCC без оптимизации и дополнительных библиотек, а там это можно.

Судя по советам скорее всего буду использовать стандартные потоки.
Аноним 05/07/15 Вск 01:30:51 #352 №509213 
>>509210
Ну смотри потоки в C++ типобезопасны, все проверяют за тебя. Быстрее конечно будут работать си методы, т.к. они всю проверку скинули на плечи разработчика. И вот если ты сам будешь делать сложные проверки, то можешь навелосипедить и будет даже хуже.
Аноним 05/07/15 Вск 01:37:29 #353 №509214 
>>509213
>типобезопасны
Стоп. Какой с этого профит? В задачах все входные данные корректны. Это значит что он лишний раз проверку делает? Что-то такое подозревал, но разве это единственное отличие? И что можно навелосипедить? Прочитать string как int?
Аноним 05/07/15 Вск 01:51:51 #354 №509221 
>>509214
Профит такой, что если ты записываешь сложные структуры, то создаются виртуальные функции, и тебе не надо самому проверять формат ввода + следит за утечкой памяти. Если у тебя все однородно используй из си
Аноним 05/07/15 Вск 02:03:37 #355 №509223 
>>509221
Всё понял. Спасибо.
Аноним 05/07/15 Вск 02:23:09 #356 №509234 
Хз где спросить, спрошу тут. Есть кто на Qt под виндой прогает? Есть ли способы автоматического обновления Qt? А то надоело все ручками делать. Только не говорите иди на линукс
Аноним 05/07/15 Вск 03:12:49 #357 №509244 
Привет, программач!

Скажи, как можно реализовать для QGraphicsView (или QGraphicsScene) затемнение по маске? Хочется сделать смену дня и ночи в игруле -- думаю, как бы это реализовать.

Естественно, нужно учитывать и источники освещения, поэтому нужна именно маска, общий способ менять яркость сразу у всей сцены тоже пригодится.
Аноним 05/07/15 Вск 06:38:43 #358 №509259 
>>509234
Qt maintaining tool?
Аноним 05/07/15 Вск 12:16:31 #359 №509310 
14360877910640.jpg
>>503274
Как именно работает ввод с потоков? Скажем, программа получает на вход мегабайт текста. Где этот текст храниться? Могу ли я два раза прочитать одни и те же данные с какого нибудь cin?
Простите если нескладно.
Аноним 05/07/15 Вск 12:43:13 #360 №509316 
>>509310
Если сделать функцию int main (int argc, char * argv[]) то бегать по аргументам можно сколько угодно.
Аноним 05/07/15 Вск 12:48:49 #361 №509319 
>>509174
Тебе нужен какой-то курс по архитектуре ЭВМ в отрыве от крестов. Обычно же учебная программа в вузах строится так: сначала изучают алгоритмы при помощи высокоуровневого языка у нас паскаль, у них питон, в котором не обязательно вообще знать что-то про память и указатели, не говоря уже про статическую/динамическую/автоматическую память. Потом изучают голую архитектуру ЭВМ и разбирают по частям простейшие программы на ассемблере. И именно в этот момент ты узнаешь про адреса, сегменты данных/команд/кучи, как работает стек, как работает вызов функции и вот это все. Затем изучают, как работает ОС и как она взаимодействует с программами. Здесь про процессы, распределение динамической памяти, разделение процессорного времени между программами, обычно на примере чистого си, потому что он достаточно низкоуровневый, но в отличие от ассемблера можно написать большую программу, не надорвавшись. И вот после того, когда ты все это узнал, ты начинаешь учить кресты. Если приступить к крестам сразу как многие пытаются, то ты будешь все время пытаться использовать его как паскаль/питон, стремясь убежать от непонятных низкоуровневых возможностей. И тогда вся суть крестов теряется, а побочные эффекты в виде множества возможностей выстрелить себе в ногу остаются. Так что либо хотя бы пробегись по всему четырехсеместровому курсу, либо учи питон и не дури. Книги: архитектура и ассемблер Пильщикова (короче) или Юрова (длиннее), операционные системы Таненбаума.
Аноним 05/07/15 Вск 12:51:18 #362 №509324 
>>509192
Наоборот, библиотека ввода-вывода си это говняное медленное легаси. Поэтому при работе с большими данными рекомендуется опускать флаг совместимости iostream с ней, ускорение до 10000 раз. Такие дела.
Аноним 05/07/15 Вск 12:53:19 #363 №509325 
>>509316
А если ввод уже в программе?
Аноним 05/07/15 Вск 12:59:02 #364 №509328 
>>509325
Поток это с точки зрения программы просто файл, который открыт на чтение без произвольного доступа. Соответственно, система имеет право удалить прочитанные символы. Но может и не удалить. Энивей попытки их прочитать второй раз, сдвинув каретку назад это UB.

Твой второй вопрос: ну, например, ты считал их в переменную-строку, теперь символы скопировались в нее и лежат в оперативной памяти. Старые символы в потоке, возможно, удалились. Если ты считал и не схоронил в переменную, то они потеряны.
Аноним 05/07/15 Вск 13:56:41 #365 №509358 
>>509328
То есть ничего определенного сказать нельзя?
Если на входе я получу X байт, и сохраню их в какой нибудь переменной, то нельзя точно сказать, сколько памяти будет есть программа, X или 2X байт, так?
Аноним 05/07/15 Вск 13:59:25 #366 №509359 
>>509358
Та память, которая, возможно, освободится, не принадлежит программе. Ты не можешь ей управлять, ОС сама очистит ее, если ей понадобится больше места. Так что считай только свои переменные.
Аноним 05/07/15 Вск 14:26:23 #367 №509371 
>>509359
Спасибо, это и хотел узнать.
Аноним 05/07/15 Вск 14:35:17 #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");
}
Аноним 05/07/15 Вск 14:37:15 #369 №509377 
>>509374
Можно вместо строк использовать какие-нибудь указатели, и будет аналог синхронайзд блоков в Джаве.
Аноним 05/07/15 Вск 15:07:34 #370 №509387 
>>509374
1. Работа с туплами медленная.
2. Сравнение строк очень медленное.
3. Кому принадлежит коллекция? Классу как статическая? А как же расширяемость? Если понадобится две коллекции для разных задач, придется все перепиливать. очень. очень плохая идея.
4. Доступ к чему ты синхронизируешь? У тебя я вижу только регистрацию количества обработчиков файла, никакой синхронизации нет. Ни обработчик, ни код снаружи твоего класса вообще не узнают, был увеличен счетчик, или создана новая секция. Так что либо я тебя неправильно понял, либо ты сделал какой-то ебаный регистратор, который непонятно зачем считает обработчики и больше ничего не делает.
5. В любом случае синхронизация не обеспечивается. Без атомарных операций, очевидно, методы могут вызваться одновременно, увеличить счетчик один раз вместо двух и вообще хуй знает что натворить.
6. Раз уж ты вынужден использовать примитивы синхронизации, вместо вновь придуманного странного медленного велосипеда не лучше ли использовать возможности языка? Критические секции легко моделируются мьютексами, более того, в большинстве случаев они не нужны, потому что можно разбить задачу на независимые и использовать async/future.
7. Макросы.
8. WinAPI.
???????
FAIL
Аноним 05/07/15 Вск 15:47:13 #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
Аноним 05/07/15 Вск 16:05:43 #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.
Аноним 05/07/15 Вск 16:09:22 #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 можешь пропустить, остальное читай.
Аноним 05/07/15 Вск 16:09:49 #374 №509404 
>>509374
Про lock(obj) {} ты не слышал?
Аноним 05/07/15 Вск 16:17:37 #375 №509406 
>>509404
У него ещё путаница с терминологией.

Критическая секция — это режим выполнения, когда программа становится однопоточной и её приоритет повышают на то время, пока она находится в критической секции (гуглить VxWorks и другие ОСРВ).

lock (obj) {} и «новейшая очень классная идея» — это не критическая секция, а семафоры, причём со способностью впадать во взаимную блокировку, догадайтесь как.
Аноним 05/07/15 Вск 16:23:22 #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. Попробуй пересесть со своего велосипеда на мотоцикл короче, лол.
Аноним 05/07/15 Вск 16:23:23 #377 №509411 
14361026030280.png
>>509406
> У него ещё путаница с терминологией.
Это у тебя путаница.
Аноним 05/07/15 Вск 16:25:13 #378 №509412 
>>509410
Спасибо. Я зря полез в эту тему не изучая новый стандарт по этому поводу. Почитаю сегодня.
Аноним 05/07/15 Вск 16:26:16 #379 №509413 
>>509402
Спасибо. Так и сделаю. От сюда http://arch.cs.msu.su/ можно всё одним пдэфом скачать?
Аноним 05/07/15 Вск 16:27:42 #380 №509415 
>>509406
Ну не, критические секции тоже являются одним из примитивов синхронизации, наряду с семафорами. В некоторых языках это базовая вещь вместо мьютекса, ты как-то описываешь, что в участок кода может войти только один поток одновременно. Но, понятное дело, критические секции и мьютексы реализуются элементарно друг через друга, поэтому по факту это одни и те же способы что-либо сделать, и проблемы у них одинаковые.
Аноним 05/07/15 Вск 16:30:28 #381 №509418 
>>509413
Хуй знает. Посмотрел у себя, вот то, что схоронено http://rghost.ru/6mynBL4hQ.
Аноним 05/07/15 Вск 16:34:06 #382 №509423 
>>509418
Спасибо. Оно.
Аноним 05/07/15 Вск 17:03:27 #383 №509435 
14361050078970.png
14361050079231.jpg
>>503274
Как перейти с знания языка уровня laba7 на уровень нормального разработчика?
Аноним 05/07/15 Вск 17:06:43 #384 №509437 
>>509435
Придумай задачу достаточно сложную для тебя и реши ее
Аноним 05/07/15 Вск 17:51:01 #385 №509460 
>>509435
Читай книжки.
Аноним 05/07/15 Вск 18:00:12 #386 №509465 
>>509437
Я не хочу писать очередной блокнот или клиент-сервер ибо это тупо, я хочу что-нибудь пооригинальнее (но не знаю что, и даже не могу придумать). Поэтому нихуя не пишу, кроме простеньких, нужных по учебе, программок. Как быть, что написать?
Аноним 05/07/15 Вск 18:05:04 #387 №509470 
>>509465
http://www.ideamachine.io/
http://theinternetwishlist.com/
закрепите это уже где-нибудь в шапке
Аноним 05/07/15 Вск 18:14:54 #388 №509474 
>>509465
Бот для шахмат. Начал учить программирование чтобы его сделать.
Аноним 05/07/15 Вск 18:49:45 #389 №509500 
>>509470
Тоже хуйня по большей части.
Аноним 05/07/15 Вск 18:53:52 #390 №509502 
>>509500
Тогда ждем от тебя идею на миллион
Аноним 05/07/15 Вск 18:59:12 #391 №509505 
>>509502
Написать генератор идей на миллион.
sageАноним 05/07/15 Вск 19:24:53 #392 №509509 
>>509505
Вот его и пиши. /discussion
sageАноним 05/07/15 Вск 21:01:20 #393 №509555 
>>509244
добавляешь кастомный QGraphicsItem, в котором рисуешь прозрачный прямоугольник.
Аноним 06/07/15 Пнд 12:24:12 #394 №509794 
Господа, начал учить C++, никак не пойму, зачем объявлять метод класса вне класса? Проебывается читаемость же, не?
sageАноним 06/07/15 Пнд 12:34:28 #395 №509798 
>>509020
В Алёна-треде ни за что.
Аноним 06/07/15 Пнд 13:06:28 #396 №509806 
>>509794
Ты сейчас про дружественные методы? Так что бы они были видны всем твоим друзьям
Аноним 06/07/15 Пнд 13:09:13 #397 №509808 
>>509794
Методы снаружи - читаемый интерфейс. Методы внутри - читаемей реализация (что спорно). Интерфейс класса читают намного чаще чем релизацию.
Аноним 06/07/15 Пнд 13:25:02 #398 №509812 
>>509806
Не, не френдли в привате, я пока до них не дошел. Просто объявляем прототип в в классе потом в ебенях Класс::имяФункции () {описываем}.

>>509808
Кроме читаемости никаких преимуществ не дает?
Аноним 06/07/15 Пнд 13:27:29 #399 №509814 
>>509794
Если ты про друзей, то такое часто бывает при определении операторов над классами. Например, ты хочешь сделать TvoyaMamka & opearator+ (const TvoyaMamka &), где первое слагаемое передается неявно как this. Если у тебя определен еще implicit конструктор, например, из int, то будут проблемы, когда ты пытаешься складывать мамок с числами, потому что неявно передаваемый параметр никогда не приводится автоматически. И тогда ты выносишь operator+ за пределы класса, он теперь принимает параметрами обеих мамок и все работает.

Еще часто обработку объектов выносят за пределы самих классов, потому что метод-член видит приватную реализацию, а внешняя функция видит только интерфейс, и инкапсуляция повышается. Другое дело, что обычно для таких целей можно создать класс-обработчик, в котором будут эти методы.
Аноним 06/07/15 Пнд 13:37:45 #400 №509820 
>>509812
Ну так ты определяешь класс в заголовочном файле обычно. Если у него большие методы, то это неудобно читать становится, а так можно вынести каждый метод хоть в отдельный .cpp и все будет заебись. Но главное даже не в этом, а в том, что если ты меняешь реализацию метода без изменения интерфейса (те же параметры, то же возвращаемое значение), то тебе придется перекомпилировать только один файл. А если реализация в заголовочном файле, то перекомпилируются все .cpp, которые его используют. В больших проектах это настолько существенно, что делают дополнительные сущности, чтобы клиент как можно меньше знал о реализации, в.т.ч. и данных, называется pimpl. Делают маленький хедер, в котором объявлен прокси-класс. В нем указатель на настоящий объект и больше нихуя. Пока ты не используешь объект, тебе не нужно ничего знать о реализации, размере и всем таком, если ты хранишь в другом объекте не его самого, а указатель. Это позволяет избежать порчи половины проекты, когда ты добавляешь член в один хедер, который оказывается подключен к куче других.
Аноним 06/07/15 Пнд 13:50:31 #401 №509828 
>>509820
Спасибо, ты крутой.
Аноним 06/07/15 Пнд 18:05:09 #402 №509972 
14361951096710.jpg
Товарищи, подскажите, пожалуйста. Что происходит при открытии файла (fstream, например)? Весь объем файла пихается в оперативную память или нет?

Собственно, почему спрашиваю. Поставлена задача: есть N файлов, общим размером ~100мб. В файлах отсортированные номера. Нужно создать один файл со всеми номерами. Разумеется, тоже отсортированный. При этом, нужно уложиться в 50мб оперативки.
Я планировал решить это следующим образом: так как номера в файлах отсортированы, просто выдергивать из каждого файла по одному номеру и образовавшуюся коллекцию сравнивать между собой. Ну и выдернутые номера удалять, например. Это хороший подход или я не прав?
Аноним 06/07/15 Пнд 18:09:11 #403 №509975 
>>509972
Файлы не пихаются целиком в память. Читай по одному, сравнивай, записывай. Удалять их из файлов не обязательно, файл будет читаться дальше сам по себе.
Аноним 06/07/15 Пнд 18:23:46 #404 №509979 
>>509975
>Читай по одному
Держать открытыми сразу все файлы - не очень?
Каждый раз открывать/закрывать?
Аноним 06/07/15 Пнд 18:47:38 #405 №509983 
>>509972

Тут несколько вариантов:

1) Допустим, у тебя оперативной памяти было бы не 50мб, а 1 мб. Тогда можно было бы, например, считывать из одного файла порцию данных в буфер и из другого файла порцию данных (в жизни из файла не читаются побитово, а читаются целыми блоками по X килобайт). Далее сливать эти два буфера и записывать их в третий новый файл (данные идут на диск). В итоге у тебя получится отсортированный файл, содержащий данные двух исходных файлов. Повторять так N - 1 раз, в конце получишь один отсортированный файл.

2) Т.к. у тебя 50 метров, а все файлы - 100 метров, то выгоднее сразу все считать 50 метров из файлов в память, отсортировать любым нормальным алгоритмом сортировки, записать в файл и не париться (т.к. работа с диском очень-очень медленная, а работа с памятью невероятно быстрая). Потом повторить тоже самое для оставшейся части файлов (остальные 50 метров). А потом два файла слить через алгоритм из первого пункта.
Аноним 06/07/15 Пнд 19:32:38 #406 №509989 
>>509983
А вот в первом случае на N-(N / 2) итерациях разве не будет такого, что в буфер придется записать данных большем, чем на 50мб?

Черт. Уже час не могу написать - двачестан возвращает Gateway timeout
Аноним 06/07/15 Пнд 19:37:07 #407 №509992 
>>509972
>Весь объем файла пихается в оперативную память или нет?
Пихается буфер, зависящий от libc и системы. По-моему в районе 64 кб. Поэтому даже побайтовое чтение не вызывает проблем с производительностью, но и файлы, конечно, целиком не грузятся.
>При этом, нужно уложиться в 50мб оперативки.
Домашка? Вообще так делается merge sort, именно как ты описал.
Аноним 06/07/15 Пнд 19:38:33 #408 №509993 
>>509989
В первом случае ты считываешь в память, считай, 1 число из одного файла и 1 число из другого файла. Выбираешь наименьшее из чисел, записываешь в выходной файл. Считываешь из соответствующего файла еще одно число. В итоге в памяти у тебя всегда не больше 2х чисел. А файл целиком в память можно не считывать. Вроде так.
Аноним 06/07/15 Пнд 19:50:29 #409 №509994 
>>509992
Если честно, тестовое задание на стажировку. Про файлы рассказывали на первом курсе и я что-то позабыл, как это дело происходит. Да и не требовалось что-то.

>>509993
Да, ты прав, торможу. Почему-то подумал, что буду весь файл совать в буфер. Бывает.

Спасибо, товарищи!
Аноним 06/07/15 Пнд 20:04:05 #410 №510002 
>>509994
Обращайся. Второй предложенный способ, имхо, круче - память нужно использовать по полной, т.к. это очень быстро.
Аноним 06/07/15 Пнд 20:09:40 #411 №510006 
>>509993
В памяти будет размер соответствующих буферов чтения. Поэтому лучше не выебываться и доверить буферизацию ("использование памяти по полной") системе.
Аноним 06/07/15 Пнд 20:20:15 #412 №510012 
>>510002
Амм. Сколько занимает символ конца строки в юникоде? Два байта?
sageАноним 06/07/15 Пнд 20:57:35 #413 №510031 
>>509979
Лол. Что-то от тебя зеленью запахло, но отвечу. Читать числа по одному, файлы закрывать не нужно.
Аноним 06/07/15 Пнд 21:05:11 #414 №510033 
>>510031
Пардон. Я на полном серьезе задаю эти глупые вопросы. Конечно стараюсь читать самостоятельно, но иногда проще спросить.
Аноним 06/07/15 Пнд 21:07:30 #415 №510034 
>>510012
Каком юникоде? Если ты про UTF-8, то как в ASCII — один байт.
Аноним 06/07/15 Пнд 21:16:14 #416 №510040 
>>510034
Хмм. А почему, если сделать вот так:

int k = 12345678;
ofstream out ("out.txt", ios::out);
out << k << endl;
out.close();

то размер файла будет 10 байт?
Аноним 06/07/15 Пнд 21:16:34 #417 №510041 
>>510040
Черт. Табы вылезли.
Аноним 06/07/15 Пнд 21:20:22 #418 №510043 
>>510040
> endl
Конец строки в Шиндоусе -- два байта: \r\n, они же <CR><LF>.
Аноним 06/07/15 Пнд 21:23:34 #419 №510045 
>>510043
То есть, в винде всегда железно два байта? Вне зависимости от компилятора, библиотек и так далее?
Аноним 06/07/15 Пнд 21:27:07 #420 №510052 
>>510045
Нет.
Аноним 06/07/15 Пнд 21:30:32 #421 №510054 
>>510052
Хорошо. Остановимся на этом. Не буду злоупотреблять твоей помощью. Просто почитаю об этом где-нибудь на досуге.
Большое спасибо.
Аноним 06/07/15 Пнд 21:49:53 #422 №510067 
>>509972
Это не регламентировано стандартом жи. Библиотека предоставляет тебе некоторую абстракцию файла, который может находиться где угодно. Например, ты открываешь последовательный порт как файл, или удаленный файл на чужой пекарне. В *nix вообще все считается файлами даже небо, даже Аллах. Понятно, что последовательный порт или поток ввода который ВНЕЗАПНО тоже файл нельзя схоронить в оперативную память, потому что неизвестно, что в них будет потом. Но даже если ты оперируешь с "хорошим" файлом с диска, он банально не может влезть в память. Пораскинь мозгами, анон, когда ты открываешь йоба-фильм в .mkv на 30 гигабайт, он целиком не влезает в твою память, но видеоплеер, несомненно, открывает его как файл. А разгадка одна - интерфейс fstream ничего не говорит о том, где находится файл. Он передает строку с именем операционной системе, та достает нечто, что в ее понимании отвечает твоему запросу, и тебе предоставляется к этой сущности доступ. Она физически может быть где угодно, и ты не можешь "заметить" этого, потому что время доступа к файлу тоже не регламентировано. Более того, получится ли открыть файл - тоже не регламентировано, эта ответственность возлагается на ОС, как и способ хранения кусков открытого файла. Скорее всего, нормальная ОС будет загружать файл по кускам и кэшировать. Но теоретически она может попытаться загрузить весь файл в память, памяти не хватит, и конструктор fstream кинет исключение емнип. И такое поведение абсолютно нормально и не выходит за рамки стандарта. такие дела.
Аноним 06/07/15 Пнд 22:13:18 #423 №510076 
>>510067
Логично. Спасибо.
Аноним 06/07/15 Пнд 22:54:39 #424 №510103 
14362124792470.jpg
Анон, подскажи мне, где можно красиво использовать variadic templates, кроме функций с переменным числом параметров? Я посмотрел примеры, но все остальное или непонятно зачем нужно, или представляет из себя какую-то вырвиглазную хуету.
Аноним 07/07/15 Втр 00:32:09 #425 №510143 
>>510103
emplace-методы в контейнерах, каррирование
Аноним 07/07/15 Втр 08:34:38 #426 №510210 
>>510103
Метапрограммирование жи.
Поиск максимума из n чисел во время компиляции:
[code lang="cpp"]
template <int head, int ... tail>
struct Max
{
const static int value = (head > Max <tail ...>::value) ? head : Max <tail ...>::value;
};

template <int ... tail>
struct Max
{
const static int value = std::INT_MIN;
};
[/code]
Аноним 07/07/15 Втр 12:43:16 #427 №510271 
14362621965930.jpg
>>510143
emplace-методы, это и есть функции с переменным числом параметров, а каррирование проще делать лямбда-функциями, разве нет?

>>510210
и нахуя это нужно?
Аноним 07/07/15 Втр 14:13:53 #428 №510305 
>>510210
>Поиск максимума из n чисел во время компиляции:
поясни что тут происходит. И как делать что-то похожее.
мимо
Аноним 07/07/15 Втр 14:14:21 #429 №510306 
>>510271
>emplace-методы, это и есть функции с переменным числом параметров
Не путай, тебе же станет известно количество параметров еще при компиляции, поэтому переменное количество параметров, значит, делать variadic function не требуется. Например, у тебя есть класс ChlenSemyi, в котором unique_ptr <T> chlen_, где T может быть TvoyaMamka, у которой конструктор принимает 10 параметров-кусков мяса, либо TvoyBatya, который дохуя спортсмен и принимает только один параметр-салат. Тебе нужно инициализировать этот указатель в конструкторе класса ChlenSemyi. И ты можешь создать один variadic template конструктор, который принимает любое количество любых параметров и пытается пихнуть их в конструктор T. Без них тебе бы пришлось описывать для каждого набора параметров отдельный конструктор.
>каррирование проще делать лямбда-функциями
Не всегда. До C++14 нельзя было переименовывать параметры и захватывать члены класса как переменные из зоны видимости, например, а вариадики подбавляют гибкости.
>и нахуя это нужно?
Потому что это позволяет перенести часть вычислений на этап компиляции, потом тормозить будет меньше я могу, иди на хуй.
Аноним 07/07/15 Втр 14:18:01 #430 №510308 
>>510305
Хвостовая рекурсия же. Он на каждом этапе сравнивает первый параметр и уже вычисленное value в структуре, где параметров на один меньше. Когда остается ноль параметров, он вернет наименьший возможный int. Да, я знаю, что это немного костыльно, просто первое, что пришло в голову. Вообще, гугли метапрограммирование или Александреску из шапки читай.
Аноним 07/07/15 Втр 19:16:09 #431 №510509 
>>510306
>значит, делать variadic function не требуется
При чем тут вообще variadic function, если изначально речь идет о шаблонах?
>До C++14 нельзя было переименовывать параметры и захватывать члены класса как переменные из зоны видимости
если речь идет о [&,=], то это прекрасно работало и в 11.
Скинь какой-нибудь пример каррирования шаблонами
Аноним 07/07/15 Втр 19:53:35 #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
{
const Function function_;
const std::tuple <OldArgs ...> old_args_;

public:

Bind (Function input_function, std::tuple <OldArgs ...> args) :
function_ {input_function},
old_args_ {args}
{}

template <typename NewArg>
auto operator() (NewArg arg)
{
return curryItMotherfucker (arg, 0);
}

template <typename Arg>
std::result_of_t <Function (OldArgs ..., Arg)> curryItMotherfucker (const Arg & arg, int) const
{
return function_ (args ..., arg);
}

template <typename Arg>
auto curryItMotherfucker (const Arg & arg, ...) const
{
return Bind <Function, Args ..., Arg> { function_, std::tuple_cat (args, std::tuple <Arg> (arg))};
}
};
[/code]
Аноним 07/07/15 Втр 21:38:11 #433 №510631 
14362942916170.png
Аноним 07/07/15 Втр 21:42:02 #434 №510635 
14362945224640.jpg
>>510631
Друг
Аноним 07/07/15 Втр 21:43:28 #435 №510638 
>>510631
Недавно дочитал эту книгу. Твоя первая? До неё что читал?
Аноним 07/07/15 Втр 21:46:39 #436 №510642 
>>510638
Первая, только начинаю осваивать.
До неё чуть Прата чинул с вашей шапки, но он, вроде, хуже.
Аноним 07/07/15 Втр 21:50:15 #437 №510647 
>>510642
Осваивать С++ или программирование?
Аноним 07/07/15 Втр 21:51:02 #438 №510648 
>>510647
С++, программирование я знаю на уровне пхп-макаки.
Аноним 07/07/15 Втр 21:53:55 #439 №510651 
>>510648
Сам учил или в шараге поясняли?
Аноним 07/07/15 Втр 21:55:35 #440 №510653 
>>510651
Сам учил. В пхп треде.
Аноним 07/07/15 Втр 21:57:27 #441 №510658 
>>510653
Долго учил? Работал? Фрилансом занимался?
Аноним 07/07/15 Втр 22:01:06 #442 №510667 
>>510658
Учил месяца 3, потом поработал 2 месяца, не фрилансил.
Аноним 07/07/15 Втр 23:50:17 #443 №510699 
>>510550
>Ты походу не отличаешь

я писал
>где можно красиво использовать variadic templates, кроме функций с переменным числом параметров?

Если ты знаешь еще какой-то способ, использования variadic templates для реализации переменного кол-ва пераметров кроме emplace-методов, то напиши.
Аноним 07/07/15 Втр 23:58:04 #444 №510702 
14363026844980.png
14363026844981.png
О чём речь?
Аноним 08/07/15 Срд 00:01:52 #445 №510705 
14363029121990.png
14363029122081.png
Поясните, почему тут возникает ошибка?
Даже если код напрямую копирую с книги - такая же ошибка.
Как я понял что-то с std_lib_facilities.h не так?

Пока двач висел попробовал ручной метод на 2 скрине, опять странные ошибки.
Аноним 08/07/15 Срд 00:06:20 #446 №510709 
>>510705
Чтобы запускать примеры эта библиотека не обязательны. Всё как написано в приложении Г делал?
Аноним 08/07/15 Срд 00:08:49 #447 №510711 
>>510705
Может после имени библиотеки на втором скрине .h написать?
Аноним 08/07/15 Срд 00:11:10 #448 №510715 
>>510702
В оперативной памяти есть специальный стек, когда ты вызываешь функцию, в него помещаются передаваемые ей параметры, а функция при обращении к параметрам считывает их из этого стека. Речь идет о том, кто должен удалять эти данные из стека при выходе из функции: сама функция или вызывающая программа.
Аноним 08/07/15 Срд 00:11:44 #449 №510716 
14363035045270.png
>>510702
Нечто ассемблерное. Выбрось из головы.
Аноним 08/07/15 Срд 00:18:06 #450 №510719 
>>510715
Пока писал второй вопрос понял ответ. Спасибо. %%На всяки случай уточню. В ассемблере это делается вручную с помощью push и pop?%
Аноним 08/07/15 Срд 00:22:24 #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
Аноним 08/07/15 Срд 00:26:26 #452 №510725 
>>510715
А, это был ответ на вопрос, а не вопрос, лол.
Аноним 08/07/15 Срд 00:55:01 #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 раза увеличивается? В С++ так же?
Аноним 08/07/15 Срд 01:09:24 #454 №510746 
>>510699
Ты заебал, я тебе аж джва примера привел. Максимум чисел на этапе компиляции для адептов метапрограммирования, каррирование без костылей с обертками вокруг лямбды как более практическая вещь.
Аноним 08/07/15 Срд 01:10:13 #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-х.
Аноним 08/07/15 Срд 01:12:17 #456 №510749 
Посоветуйте что почитать если уже знаю с++ на уровне ньюфага и хочу разобраться в них побольше
Аноним 08/07/15 Срд 01:15:46 #457 №510750 
>>510719
Да. Если посмотришь книжку Пильщикова, которая была выше в треде, там наглядно это показано. Идиома такая, что один из регистров (BP для 8086 архитектуры, EBP для 32bit, RBP для 64bit) схороняется в стек, дальше в него записывается вместо старого значения адрес текущей верхушки стека, и все локальные переменные отсчитываются как BP - смещение, а все параметры (и адрес возврата) как BP + смещение.
Аноним 08/07/15 Срд 01:15:54 #458 №510751 
>>510747
Всё. Спасибо. Теперь точно понял.
На всякий случай уточню. Если в функцию передавать 100 параметров типа char, а не 1 массив из 100 элементов, то тогда каждая переменная будет занимать 4 байта?
Аноним 08/07/15 Срд 01:21:19 #459 №510752 
>>510751
Это емнип зависит от архитектуры. Грубо говоря, ты не должен делать предположений об этом, стандарт не регламентирует. На некоторых архитектурах выравнивание строго обязательно, на других его можно вырубить, но тогда увеличивается время доступа. Изнутри крестов ты это не сможешь контролировать, по крайней мере платформонезависимо.
Аноним 08/07/15 Срд 01:21:24 #460 №510753 
>>510751
Не забивай себе голову этим. Байты считать - себя не уважать.
Аноним 08/07/15 Срд 01:21:30 #461 №510754 
>>510751
Массивы вообще передаются по ссылке, а сколько будет занимать переменная типа char зависит от архитектуры и компилятора и в с++ тебя это волновать не должно.
Аноним 08/07/15 Срд 01:21:38 #462 №510755 
>>510750
>книжку Пильщикова
Она слишком сложная. Не осилил и 10 страниц. Если осилю лекции что выше в треде рядом с этой книгой, то пойму что в ней написано? Если нет, то реквестирую что попроще Пильщикова.
Аноним 08/07/15 Срд 01:22:10 #463 №510757 
>>510749
Для начала почитай шапку.
Аноним 08/07/15 Срд 01:24:01 #464 №510758 
>>510755
>Пильщикова
>сложная
Эээ, шта? Она же очень поверхностная, я помню, как мне на первом курсе вечно не хватало детализации из нее и приходилось гуглить, лол. Попробуй тогда навернуть лекций по архитектуре для начала, там выше я кидал ссылку на ргхост.
Аноним 08/07/15 Срд 01:34:16 #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

...

Стало интересно пусть они могут записать в освобожденную область памяти, но откуда они знают что эта память уже снова выделена (причем это должно произойти после освобождения но до записи значения) и как она используется?
Аноним 08/07/15 Срд 01:39:51 #466 №510763 
>>510761
Ну это классическое переполнение жи. Обычно тактика такая - засрать всю доступную тебе для записи память пустыми командами, а в конце цепочки поставить RET туда, куда тебе надо. После этого с нехилой вероятностью управление попадет на одну из этих команд и уплывает по ним до твоего RETа.
Аноним 08/07/15 Срд 01:49:10 #467 №510765 
>>510763
Но для этого надо, чтобы
А) эту память не перезаписали перед использованием
Б) чтобы она была в исполняемом сегменте.
Не?
не очень понимаю в байтоебстве и асме, не ругайся
Аноним 08/07/15 Срд 01:56:21 #468 №510766 
>>510765
Ну вообще да, и энивей сейчас делают всякие защиты запрет исполнения из сегмента данных, автоматическую проверку границ массива с генерацией исключения при выходе, или вообще запускают все недоверенное в песочницах. Переполнение это классика взлома как бы. Но по факту иногда пусть и с изъебствами это работает. Там дохуя разновидностей каждый день придумывают, их быстро патчат, но потом придумывают снова, ну ты понел. Например, лет десять назад нашли фишку с переполнением кучи куча и стек обычно в одном сегменте делались и росли навстречу друг другу, было довольно популярно ее юзать. Но вообще, если тебе это интересно, то ты должен серьезно обмазаться байтоебством. Уровень семестрового асма точно будет необходим. Если хочешь, могу кинуть видео с лекций, которые нам в лабе читали, там одна или две как раз про это, довольно популярно разжевывалось вроде.
Аноним 08/07/15 Срд 01:58:00 #469 №510768 
>>510766
Та не, я другой анон вообще. Асм очень поверхностно понимаю и мне норм.
Аноним 08/07/15 Срд 01:59:19 #470 №510769 
>>510766
А я бы посмотрел.
Аноним 08/07/15 Срд 01:59:28 #471 №510770 
>>510766
Это из архива hacking team readme, у них сэмплы есть которые хорошо работают (под винду и макось). Можешь их исходники посмотреть если разбираешься
http://t.co/nfqck54YhT

Не забудь тут рассказать :3
Аноним 08/07/15 Срд 02:00:25 #472 №510771 
>>510769
https://www.youtube.com/playlist?list=PL2AE27C02108EDDF4
Вот тут с 7 по 10 про программные уязвимости и вот это все.
Аноним 08/07/15 Срд 02:01:56 #473 №510772 
>>510770
Спасибо. Завтра гляну и отпишусь.
Аноним 08/07/15 Срд 02:28:16 #474 №510776 
Хм? В С++ треде последнее время ассемблера больше чем С++. Может кто-то осмелиться создать ассемблер тред и возьмёт на себя не лёгкую задачу по составлению шапки?
Аноним 08/07/15 Срд 02:49:14 #475 №510787 
>>510758
> Подробно работа отладчика студенты факультета вычислительной математики и кибернетики МГУ изу-
чают в курсе третьего семестра "Системное программное обеспечение".
Что это за курс? Он у тебя есть? Можешь показать?
Аноним 08/07/15 Срд 03:21:30 #476 №510799 
14363148908590.png
>>510787
>>510758
Ну вот. Снова на самом интересном месте. Чем ты в этом МГУ занимаешься? Аспирант? Где эти курсы искать? В гугле только краткое описание на 2 страницы.
Аноним 08/07/15 Срд 03:36:30 #477 №510802 
>>510776
а нахуй он нужен?
Аноним 08/07/15 Срд 03:39:04 #478 №510804 
>>510802
И так много тредов уже. Ещё 1 не навредит.
Аноним 08/07/15 Срд 03:45:57 #479 №510805 
14363163577160.png
>>510799
Срочно реквестирую этот курс.
Аноним 08/07/15 Срд 08:28:20 #480 №510825 
14363333000360.png
Ньюважескмй вопрос.
Почему тяфкает на последнюю фигурную скобку?
Аноним 08/07/15 Срд 08:33:59 #481 №510827 
>>510825
Потому_что_блока_do{}_не_бывает
Аноним 08/07/15 Срд 08:40:45 #482 №510828 
>>510825
Спасибо тебе.
Аноним 08/07/15 Срд 09:53:53 #483 №510843 
>>510709
Да, делал как в приложении, только у меня это приложение В.

>>510711
На 2 скрине я, вроде, не использую библиотеки, в которые нужно добавлять .h?
Там же рядом учебник написан, вроде оттуда всё скатал, а не работает...
Аноним 08/07/15 Срд 10:44:54 #484 №510853 
>>510825
Поле if тоже нужны скобки, кстати.
Аноним 08/07/15 Срд 11:13:10 #485 №510861 
>>510843
>Там же рядом учебник написан, вроде оттуда всё скатал, а не работает...
Другой компилятор или другая версия. В MS не работал, но возможно там надо .h и для стандартных библиотек. Ещё попробуй на первом скрине удалить из скаченого файла #include <hash_map>
Аноним 08/07/15 Срд 12:58:09 #486 №510909 
>>510776
Няш, ну я бы мог, конечно, но с асмом не такая движуха, как с крестами же. Вангую, что тред будет мертворожденным просто, иногда кто-то будет заходить из-за шапки и все. Да и я, если честно, в асме шарю только на уровне, чтобы понимать, что вообще происходит, и иногда ломать что-то. Асм-погроммистом меня никак нельзя назвать.
>>510787 >>510805
У нас изменилась программа, учебник же старый. Сейчас в третьем семестре вместо этого операционные системы , а СПО читают только на кафедре СП емнип. Про отладчик было примерно поллекции, я выше давал ссылку на книжку Машечкина по операционным системам, она в точности по лекциям, так что можешь обмазаться. Там про трассировку, точки останова и вот это все.
>>510799
Не, пока еще студент. Ну, во-первых, пошарь по сайтам погроммистских кафедр, это cs.msu.su с префиксами al. , sp. , asvk. Еще есть http://esyr.nizm.ru/ и http://tka4.org/materials/, там много материалов.
мимооп
Аноним 08/07/15 Срд 13:11:09 #487 №510913 
>>510705
замени hash_map на unordered_map, заинклудь <unordered_map>, измени подсистему в настройках проекта на /SUBSYSTEM:CONSOLE (Project->Properties->Linker->System->SubSystem)
Аноним 08/07/15 Срд 13:18:11 #488 №510915 
>>510805
По поводу обработчиков сигналов - это довольно просто, лол. В nix процессы могут посылать друг другу сигналы это просто числа, которые обозначаются как константы через #define, например, SIGKILL, эти сигналы передаются и обрабатываются отдельно от потоков ввода-вывода, файлов и других инструментов взаимодействия. Когда процесс получает сигнал например, нажатие Ctrl+C в консоли посылает SIGINT работающей программе, ищется обработчик сигнала с таким номером и вызывается. Обработчик это просто функция вида void func (int), в параметр ей суется номер сигнала. Процесс имеет изначально обработчики по умолчанию которые при получении сигнала вырубают процесс нахуй, но если тебе не нравится, то ты можешь переопределить обработчик на кастомный. Для этого есть функция signal, она выглядит как void (signal(int sig, void (*func)(int)))(int), то бишь принимает номер сигнала и указатель на новый обработчик, заменяет его, и возвращает указатель на старый обработчик. Вот и все. Но это такие дебри Pure C, лол, в крестах обходятся без такой хуйни обычно.
Аноним 08/07/15 Срд 13:22:33 #489 №510920 
>>510915
Еще один долбоеб со спойлерами вместо скобок.
Аноним 08/07/15 Срд 15:26:34 #490 №511015 
Ну посоветуйте что-нибудь по алгоритмам. А то вот все пиздят, мол главное чтоб знал АЛГОРИТМЫ. А я вообще не знаю, что это значит. Я что, должен запомнить какие-то алгоритмы как паттерны и уметь ебашить их по памяти? Например на листочке написать кучу разных методов сортировке? Выглядит это все так, как будто нахуй не нужно. Что почитать вообщем, чтоб на работе сказали маладца, как устраиваться буду.
Аноним 08/07/15 Срд 15:55:01 #491 №511027 
>>511015
Кормен, Лейзерсон - Алгоритмы: Построение и анализ.
Бентли - Жемчужины программирования.
Уоррен мл. - Алгоритмические трюки для программистов.
Аноним 08/07/15 Срд 15:56:00 #492 №511028 
>>511015
>А то вот все пиздят, мол главное чтоб знал АЛГОРИТМЫ.
Вообщем-то правильно пиздят, но не совсем. АЛГОРИТМЫ - это не знание, это навык\способность\умение - приходит с опытом. Чем больше ты реализуешь алгоритмов, тем больше опыта ты набираешься. Так что гоу в сортировку. Научисть в блок-схему алгоритма. Пойми рекурсию. Потом всякие стеки очереди реализуй. Потом деревья, кольцевые буферы и всякие там скип-листы. Потом разберись с потокбезопасностью - критические секции, мутексы, семафоры, спин-локи и пр. Потом всякие потокобезопасные lock-free, wait-free алгоритмы на interlocked-операциях ебашь, узнай что-такое ordering, cache-line и false sharing. Как-то так.
>Выглядит это все так, как будто нахуй не нужно.
Только это и нужно. ЯП - это вторичное, тебе к тому времени уже должно быть похуй на каком языке\парадигме и под какую ОС что писать.
QT QML Аноним 08/07/15 Срд 16:08:45 #493 №511032 
Может тут есть знатоки QT QML и при этом еще и альтруисты. Очень нужно проконсультироваться по некоторым нубским вопросам. Много времени не отниму. Если кто готов помочь - добавляйтесь в скайп icy_ua. Спасибо.
Аноним 08/07/15 Срд 16:18:40 #494 №511038 
>>511028
>приходит с опытом
Ну ко мне то что нужно пришло, так как программирую для себя уже хуй знает сколько лет. Просто хочу надрочиться в этом, чтоб сказать: "Да, алгоритмы знаю". Советы схоронил, книжки >>511027 тоже. Спасибо.
Аноним 08/07/15 Срд 18:48:21 #495 №511097 
14363705013650.gif
Сап, программач. Подкиньте пожалуйста годных статей и мануалов по работе с .xlsx файлами (чтение из, запись в), молю!
Аноним 08/07/15 Срд 18:59:33 #496 №511099 
>>511097
http://sourceforge.net/projects/xlslib/
Аноним 08/07/15 Срд 19:15:05 #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 ведут себя по разному, получается приведение типов генерит какой-то код?
Аноним 08/07/15 Срд 19:24:29 #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/07/15 Срд 19:33:33 #499 №511120 
что лучше начинать читать? советуют прата и страуструпа, не знаю что выбрать
Аноним 08/07/15 Срд 19:35:06 #500 №511122 
НОВЫЙ ТРЕД
https://2ch.hk/pr/res/511121.html
https://2ch.hk/pr/res/511121.html
https://2ch.hk/pr/res/511121.html
Аноним 22/07/15 Срд 00:00:54 #501 №518870 
>>511122
Бамп.
comments powered by Disqus

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