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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
cppman.jpg130 Кб, 314x400
C++ №78 /cpp/ 1295983 В конец треда | Веб
годные онлайн курсы для новичесов
на степике лучше пройти курс от cs center, чем аналогичный от mail.ru, это
https://stepik.org/course/7
и его продолжение
https://stepik.org/course/3206
этот курс бесплатный
второй курс от ребят из яндекса и физтеха на платформе cousera:
https://ru.coursera.org/specializations/c-plus-plus-modern-development
учтите, что он платный, но, в принципе, если вы готовы платить за обучение, лучше взять этот курс, а не другие которые есть на рынке, imho

базовые знания с которыми вы должны выйти на собес можно взять из
мейерс "эффективный и современный С++. 42 рекомендации по использованию C++11 и C++14"
джосаттис "шаблоны C++: справочник разработчика" второе издание
обе на русском, обе есть в цифре в сети

видео с конференций и митапов, надеюсь кого-то они развлекут:
cppcon russia
https://www.youtube.com/channel/UCJ9v015sPgEi0jJXe_zanjA/featured
corehard братишек-белорусов
https://www.youtube.com/channel/UCifgOu6ARWbZ_dV29gss8xw
cpp-party от ребят из яндекса
https://events.yandex.ru/events/cpp-party/
cppcon
https://www.youtube.com/user/CppCon
boostcon
https://www.youtube.com/user/BoostCon/featured
meeting c++ от дойчей
https://www.youtube.com/user/MeetingCPP/featured
старички accu
https://www.youtube.com/channel/UCJhay24LTpO1s4bIZxuIqKw/featured
питерский митап по с++
https://www.youtube.com/playlist?list=PLtDc3cNvuhAIU_LRYg6xFaJV_95Kkt79n
2 1296014
Как понять что нужно знать в современном ВАЙТИ мире?
Чуть ли не каждый день попадается что-то новое.
jackie-jackie-chan-fuck-logick.jpeg32 Кб, 750x410
3 1296051
Аноны, в общем недавно в одной книге прочитал, что НЕЛЬЗЯ возвращать из функции ссылку или указатель на локальную переменную и сразу затупил.

Допустим я хочу вернуть строку:
char GetStr() { char cStr[1024]; /initialization / return cStr; } — ТАК ДЕЛАТЬ НЕЛЬЗЯ
char GetStr() { char cStr = new char[1024]; /initialization / return cStr; } — И ПОЛУЧАЕТСЯ ТАК ТИПА ТОЖЕ НЕЛЬЗЯ (хз почему)
А как тогда правильно возвращать сишную строку?

А если хочу вернуть string:
string& GetStr() { string str; /initialization / return str; } — ТАК НЕЛЬЗЯ (ССЫЛКА ЖЕ)
string GetStr() { string str; /initialization */ return str; }
— А ДЕЛАТЬ НАДО ТАК
хотя в последнем случае по логике самого же языка я возвращаю строку по значению, но дохуя умный компилятор все равно возвращает ссылку. Дак в чем же тогда проблема если я буду сам писать string&. СЛОЖНО.
4 1296054
>>296051
char
char
Аноним 5 1296055
6 1296061
>>296014
конкретно к плюсам? в базе ты должен таки знать алгоритмы-структуры, сишку на уровне книги K&R, ну и кресты на уровне онлайн курсов из шапки
дальнейшие знания уже будут зависеть от специализации: современные кресты раскидываются по все более узкоспециализированным нишам со своей спецификой
7 1296063
Какого хуя это дерьмо не работает ? Объясните долбаебу.

https://codeshare.io/register?saveCodeshare=amDWx0

По идее в этом говнокоде сортировка RadixSort
9 1296065
>>296051

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

std::string можно возвращать из функции
чаще всего это еще и относительно быстро, так как делается rvo
10 1296068
>>296065

хотя можно и через возвращаемое значение функции отдавать строку
только, опять же, требуется соглашение о том как вызывающий код будет удалять эту строку
как минимум надо знать при помощи чего выделялась память под строку - new или malloc
потом еще нужно учитывать, что разные рантаймы могут быть, например, в вызываемой библиотеке свой рантайм будет, а у вызывающего кода - свой
тут вообще множество проблем возникают
которые решаются старыми сишными методиками
типа предоставления функции, которая будет освобождать ресурсы, выделенные в библиотеке
либо способом, когда вызывающий код сам выделяет память, в которую уже вызываемый код разместит эту строку
в общем, это не крестовый подход
11 1296078
>>296068

>требуется соглашение о том как вызывающий код будет удалять эту строку


>это не крестовый подход


да как-то вообще тупо, заебался с этими выделениями памяти.
Стоит заменить все char'ы на vector<char> как на оверфлове советуют, или есть лучше подход?
12 1296203
>>296051
Ты понимаешь что под ссылкой или указателем на локальную переменную имеется ввиду конкретно адресс переменной созданной в этой области видимости.

Ну к примеру:

int(звездочка) ReturnTmp() {
int a = 5;
int(звездочка) b = &a;
return b;
}

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

А вот что касаемо такого варианта:

char(звездочка) GetStr() {
char(звездочка) a = new char[10];
return a;
}

То адрес полученный через такую функцию будет действителен даже после выхода за область видимости функции, т.к все что выделено через "new" никак автоматически не освобождается, ибо находится в куче, а не в стеке.
13 1296211
>>296051

> Аноны, в общем недавно в одной книге прочитал, что НЕЛЬЗЯ возвращать из функции ссылку или указатель на локальную переменную и сразу затупил.


Хуевая и устаревшая книга, не читай ее. НЕЛЬЗЯ использовать new не в конструкторе и без соответствующего ему delete в деструкторе. Вот это нельзя. И из этого будет следовать все остальное. Если в книге используют голый new в коде - не читай ее.

>char GetStr() { char cStr = new char[1024]; /initialization / return cStr; } — И ПОЛУЧАЕТСЯ ТАК ТИПА ТОЖЕ НЕЛЬЗЯ (хз почему)


Потому что память будет течь как твоя мамка при виде большого черного хуя.

>Дак в чем же тогда проблема если я буду сам писать string&. СЛОЖНО.


Конечно сложно, если ты берешься за С++, не зная сишки. Возвращать указатель на временный объект очень хуевая идея.
14 1296229
>>296203
Теперь да, понимаю, но тогда другой вопрос. В какой момент переменная становится недействительной.

допустим:
int(звездочка) ReturnTemp(){
int a = 5;
int(звездочка) b = &a;
return b;
//уничтожение переменной тут или нет?
}

int value = ReturnTemp();

переменная гарантированно уничтожится сразу после 'return b', но до присваивания, и в value уже будет лежать мусор? или это неопределенное поведение? или так будет работать?
sage 15 1296232
>>296211

>Конечно сложно, если ты берешься за С++, не зная сишки.


Два чаю, тут даже не только в этом дело, у него нет понимания что такое стек и что такое куча, в чем разница между ними и что собственно делает оператор new, как работают указатели и ссылки и в чем между ними разница, области видимости мимо него тоже видимо прошли.
16 1296233
>>296232
Случайно саганул, звиняюсь.
17 1296239
>>296211
Не, книга норм Andrei Alexandrescu C++ Coding Standards, там как раз и советуют избегать выделения и освобождения памяти в разных местах.
Это тупой пример от меня, просто я знаю что он точно работает, но почему-то противоречит написанному “Не возвращайте указатель/ссылку на локальную переменную”
или может когда выделяешь память в куче переменная уже не считается локальной. короче СЛОЖНО.

>Возвращать указатель на временный объект очень хуевая идея.


Ну теперь понятно что хуевая. Просто я в тот момент думал что компилятор сам оптимизирует и возвращает ссылку на временный объект и у меня диссонанс возник от того что компилятор может, а я не могу, а там оказывается так http://alenacpp.blogspot.com/2008/02/rvo-nrvo.html

>компилятор может не создавать временный объект и сразу же создать строку в возвращаемом объекте



>>296232
Ну давай, объясни мне на пальцах разницу между кучей и стеком (а то я действительно не понимаю)
18 1296243
>>296229
допустим:
int(звездочка) ReturnTemp() {
int a = 5;
int(звездочка) b = &a;
return b;
} < Тут.

Если верить дебагеру, конечно, ради интереса создай класс с деструктором, создай переменную этого класса в main и пройдись дебагером по коду нажимая F11, деструктор будет вызываться именно на этом месте.
19 1296245
>>296239

>Ну давай, объясни мне на пальцах разницу между кучей и стеком (а то я действительно не понимаю)


За бесплатно? Хуй тебе, иди гугли, смотри видео на ютубе, или в книжке прочитай какой-нибудь, если и так не поймешь, то увы.
20 1296263
>>296239

>Это тупой пример от меня, просто я знаю что он точно работает


Он работает. Ровно по такому принципе работает функция fopen - она выделяет память под структуру типа FILE и возвращает указатель, и надеется, что ты вызовешь fclose, в котором память освободится. Эта книжка не про то, работает или нет, а про то, как надо делать.
Есть такой язык Си, и в нем нужно выделять буферы внутри функций. Так как сборки мусора нет никакой, то нужно соглашение о том, кто будет выделять, вызывающий (как работает например strcpy - выделяешь снаружи буферы под результирующую строку, вызываешь) или сама функция (так работает fopen). Первый способ считается получше для авторов библиотек, потому что считается, что выделевший память под буфер точно не забудет ее освободить, а вот если функция сама выделяет память, заставлять юзера ее освобождать - это он должен документацию читать, бе.

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

>когда выделяешь память в куче переменная уже не считается локальной


Конечно нет. Локальной переменной будет указатель на буфер, а не сам буфер.

> Просто я в тот момент думал что компилятор сам оптимизирует и возвращает ссылку на временный объект и у меня диссонанс возник от того что компилятор может, а я не могу,


Пиздец у тебя каша. Вот посмотри внимательно на код из статьи Алены

A MyMethod(A &_hiddenArg, B &var)
{
_hiddenArg.A::A();
_hiddenArg.member = var.value + bar(var);
Return
}

И скажи, где ты тут увидел, что компилятор возвращает ссылку на временный объект? Наоборот, он принимает ссылку на область памяти hiddenArg и создает объект сразу в ней, избегая лишнего копирования. А ссылку на временный не возвращает никто, потому что по выходу из функции стек чистится и что там будет никто не знает (самое мерзкое, что в 90% случаев все будет работать нормально, так как стек чистится просто смещением указателя, сами данные не трогаются и временный объект немного повисит незатертым новыми данными, поэтому такие ошибки ловятся тяжело).
20 1296263
>>296239

>Это тупой пример от меня, просто я знаю что он точно работает


Он работает. Ровно по такому принципе работает функция fopen - она выделяет память под структуру типа FILE и возвращает указатель, и надеется, что ты вызовешь fclose, в котором память освободится. Эта книжка не про то, работает или нет, а про то, как надо делать.
Есть такой язык Си, и в нем нужно выделять буферы внутри функций. Так как сборки мусора нет никакой, то нужно соглашение о том, кто будет выделять, вызывающий (как работает например strcpy - выделяешь снаружи буферы под результирующую строку, вызываешь) или сама функция (так работает fopen). Первый способ считается получше для авторов библиотек, потому что считается, что выделевший память под буфер точно не забудет ее освободить, а вот если функция сама выделяет память, заставлять юзера ее освобождать - это он должен документацию читать, бе.

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

>когда выделяешь память в куче переменная уже не считается локальной


Конечно нет. Локальной переменной будет указатель на буфер, а не сам буфер.

> Просто я в тот момент думал что компилятор сам оптимизирует и возвращает ссылку на временный объект и у меня диссонанс возник от того что компилятор может, а я не могу,


Пиздец у тебя каша. Вот посмотри внимательно на код из статьи Алены

A MyMethod(A &_hiddenArg, B &var)
{
_hiddenArg.A::A();
_hiddenArg.member = var.value + bar(var);
Return
}

И скажи, где ты тут увидел, что компилятор возвращает ссылку на временный объект? Наоборот, он принимает ссылку на область памяти hiddenArg и создает объект сразу в ней, избегая лишнего копирования. А ссылку на временный не возвращает никто, потому что по выходу из функции стек чистится и что там будет никто не знает (самое мерзкое, что в 90% случаев все будет работать нормально, так как стек чистится просто смещением указателя, сами данные не трогаются и временный объект немного повисит незатертым новыми данными, поэтому такие ошибки ловятся тяжело).
21 1296309
>>296263

>(самое мерзкое, что в 90% случаев все будет работать нормально, так как стек чистится просто смещением указателя, сами данные не трогаются и временный объект немного повисит незатертым новыми данными, поэтому такие ошибки ловятся тяжело).


Прога все равно вылетит при обращении к нему, один раз по глупости допустил такую ошибку и прога тупо вылетала.
22 1296311
>>296309
Блядь, иди нахуй просто
23 1296314
>>296311
Чего ты агришься? Таблетки забыл выпить? Я вообще другой анон.
24 1296325
>>296311
Проиграл всей вирусной сценой с неосилятора.
25 1296352
>>296263

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


то есть при таком вызове val = MyFunc(); в функцию неявно еще передается ссылка на val?

Но вообще я тебя понял, возможно я действительно кодил в стиле C и только сложности себе создавал. Ну значит теперь буду использовать обёртки вокруг new/delete.
Еще нагуглил make_unique, который видимо все и используют, чтобы не утруждаться с освобождением памяти.
26 1296460
Анон, если я пройду полностью специализацию от Яндекса на курсере, то смогу устроиться в какую-нибудь компанию в ДС? Нужны деньги, чтобы снять короткометражку, работать в it всю жизнь не планирую.
27 1296471
>>295983 (OP)
Так, посоны, поясните мне за эту хуйню.

struct S
{
std::forward_list<S> fl;
};

int main()
{
S s;
s.fl.push_front(s);
s.fl.front().fl.push_front(s);
s.fl.front().fl.front().fl.push_front(s);
}

Чё это за хуйня и почему это вообще работает. У меня мозг взрывается уже.
28 1296475
>>296471
Блять, ну почему ты такой тупой?
29 1296476
>>296475
Почему я такой тупой?
1542401811726.jpg38 Кб, 400x400
30 1296477
>>296476
Я уже не человек, я зверь нахуй
31 1296478
>>296477
Ну объясни же? Такая хуйня ведь не должна работать, но работает, я не могу представить себе эту структуру даже, она сама себя включает сук.а
32 1296480
>>296478
Блять, я вот просто не понимаю, ну объясни внятно что по твоему мнению не так? Почему это не должно работать?
33 1296483
>>296480
Ну там в объект c вкладывается объект с Причем не один, сколько угодно можно так делать. Это не нормально я считаю.
34 1296484
>>296460
эээ.. нет?
35 1296485
>>296460
c php/1C тредами спутал?
36 1296488
>>296483
>>296480
struct S
{
std::vector<S> vec;
};

int main()
{
S s;
for(auto i:{0,1,2,3,4,5,6,7,8,9,10})
{
s.vec.push_back(s);
}
std::cout<<s.vec.size()<<std::endl;
}
Вот, смотри! 11 раз в векторе, который часть объекта s содержится s!
37 1296492
>>296488

> содержится s


А в самом первом сверху s содержится сам этот вектор! Схуяли! Ну я правда не понимаю, бля. Правда размер 10.
std::cout<<s.vec.back().vec.size()<<std::endl;
38 1296494
>>296492
Ну а дальше 9, 8, 7. Как это работает бля. А?
std::cout<<s.vec.back().vec.back().vec.size()<<std::endl;
39 1296496
>>296494
Если ты, долбоебушка, думаешь что это один и тот же объект вложенный в себя же несколько раз, то ты ошибаешься, хотя бы проверил бы - https://ideone.com/xlpi2c

Но даже если и не так, то я вообще не вижу смысла в твоём негодовании. Ну что так? АЛЛО!!!?!?!!? Объясни внятно, блять.
40 1296497
>>296496

>Ну что так?


Ну что не так?
фикс
41 1296500
>>296496
Так бы сразу и сказал. Спасибо.
42 1296503
>>296484
Даже в какую-нибудь шаражкину контору за 50к не устроюсь?
1542404850746.jpg11 Кб, 200x200
43 1296504
>>296500
Блять, я тебе что-то должен? Хули я тебе должен что-то "сразу сказать"? Я за свое образование платил бабки, между прочим.
44 1296506
>>296504
Ну ты мог бы сразу сказать, а не выёбываться. Не должен, конечно, но мог бы. Выебоны не красят человека.
45 1296512
>>296506
Ну возможно, но у меня пригорело просто. Да и я сначала не понял что именно тебя смущает, на самом деле.

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

Даже если и объект может хранить ссылку на самого себя, то что с этого?

Даже если сделать так чтобы в этом примере это все был бы один объект, то что с того?
https://ideone.com/0RNfi0

Ну есть такая возможность в языке, что дальше?
46 1296514
>>296512

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


Я всё это знаю, я так-то уже полтора года как работаю, просто у меня случился смысловой глюк, вот эта очевидная мысль что там просто копирование происходит с каждым разом никак не хотела приходить в голову, я понимаю, что это какой-то бред, но не понимаю, почему так. Поэтому и скинул, чтобы кто-нибудь тыкнул. Спасибо ещё раз.
47 1296517
>>296514
Ну значит я тебя с другим аноном спутал.
48 1296521
>>296517
Аа, так вот откуда такой хейт. это>>296471 мой первый пост. Ладно, действительно всё очевидно тут, спасибо, что помог глаза разлепить. Добра.
49 1296522
>>296521
Ну неловко вышло, сорри за сломанный детектор, не за что.
50 1296832
>>296503
с твоими исходными данными и установками на жизнь лучше, наверное в веб податься
там и заработаешь денежку на свою самореализацию
кресты это не лучший способ по быстрому срубить бабла
51 1296840
>>296832
А как в крестах срубить бабла? Можно не по быстрому.
т. не он
52 1296890
>>295983 (OP)
Как вернуть ошибку из конструктора без throw catch?
53 1296904
>>296890
Есть способ, но для этого нужна ещё одна переменная.

В конструктор передаешь какую-либо локальную переменную по ссылке, например bool, внутри присваиваешь ей какое-либо значение нужное тебе, например true если ошибки нет или false если есть какая-то ошибка, в зависимости от того какое значение уже в main обрабатываешь ошибку, если она есть, если нет то просто продолжаешь работу. Это как пример, но я думаю это не самый лучший вариант, т.к это сферический костыльный-велосипед в вакууме и лучше кинуть исключение.

Алсо, насколько мне известно, так деды делали когда в плюсах ещё не было исключений.
54 1296975
>>296840

>как в крестах срубить бабла?



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

но большинство предпочитают просто устроится на работу в офис либо удаленно и работать за зарплату и премии
кто-то идет в стартапы в надежде получить опционы сверху
55 1296978
>>296890
ну, как раз это и был один из мотивирующих факторов, почему страуструп сделал в с++ исключения
в языке ведь еще есть и перегрузка операторов, из оператора тоже ведь ошибку можно вернуть только исключением

если же coding styles проекта предполагает полный отказ от использования исключений, используется методика двух этапной инициализации объекта, с функцией init() и остальными костылями в придачу
лучше в таких проектах не полностью отказываться от использования исключений в конструкторах, а использовать фабрики классов, либо более сложные порождающие паттерны, но отлавливаеть все исключения в самой фабрике
56 1297029
Вопрос от ньюфага. Прочитал Липпмана, и возник такой вопрос. Для средней сложности программ я пока не вижу необходимости явно динамически выделять память под объекты оператором new, ведь чуть не все нужные вещи можно сделать через контейнеры стандартной библиотеки. Соотвественно, не нужно ебаться с половиной самых сложных и заебистых фич языка.

Я что-то упускаю, и все эти конструкторы копий и перемещения, перегруженные операторы присваивания, умные указатели и виртуальные деструкторы всё же нужны, или и без них норм?
Вопрос 57 1297034
Можно где-нибудь найти книгу Страуструп Дизайн и Эволюция С++ в электронке, желательно pdf
58 1297040
>>297034
Вот здесь посмотри, в djvu:
https://vk.com/wall-54530371_146817

Вероятно тот же файл, но я не проверял:
https://rutracker.org/forum/viewtopic.php?t=3847786
№33819, выберешь только его в списке закачке.
59 1297043
Анон, помогай! Есть таблица системных вызовов шинды.
https://j00ru.vexillium.org/syscalls/nt/64/
Как обращаться к апи я знаю, но как мне использовать эти системные вызовы напрямую? Что мне делать то с этими байтоёбскими значениями, чтобы получить желаемый результат, без вызова native/win api. С меня тонны нефти.
60 1297087
>>297029
В контейнеры в STL это и так динамика, просто они изначально сделаны так, чтобы пользователь не волновался о памяти, она выделяется в методах/конструкторах и чистится в деструкторе, как это и должно быть в плюсах. Ты этого не видишь, но это есть.

Динамика нужна в любом случае, ибо стек содержит в себе места всего под 1 МБ памяти с оговоркой на то что можно увеличить до двух и если тебе нужно хранить какие-то большие объекты во время работы программы ты нигде как кроме в куче их не вместишь.
image.png287 Кб, 345x468
ох ну я и пидр 61 1297204
Подскажите прогу чтобы только начать пробовать писать. Нашел какое-то входное приложение на андроид(сололерн) и тип там предлагают Сode::Blocks. Нормальный он? или есть что-то по красивше, ибо на официальном сайте он обновился последний раз в 17 году.
все что знаю по програмированию это паскаль на школьном уровне(до двойных массивов) и сейчас вот до самостоятельного написания функций с процедурами в институте дошел.
62 1297210
>>297029
Нет, ты ничего не упускаешь. Явно используют new в своем коде только долбоебы-деды, которые уверены, что vector - это медленна, unique_ptr - это сложна, ну и те, кого эти деды научили говну.

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


Это нужно дизайнерам классов. А дизайнить рано или поздно придется. Но, опять же, если твои классы будут содержать готовые классы типа векторов, то пилить вручную все эти конструкторы тоже не придется. Но, тем не менее, нужно знать, как это работает.
63 1297452
>>296840
Иди в геймдев. Быстро бабла не срубишь, но если проект выстрелит - станешь миллионером.
300px-Пифагоровыштаны.jpg9 Кб, 300x300
64 1297493
Аноны, имеет смысл на современных процессорах ебаться с апроксимацией алгоритма вычисления расстояния между двумя точками?
Короче говоря, квадратный корень так и остался тормозной операцией от которой надо бежать как от ёбаного огня или эта такая же примитивщина стала теперь как перемножение даблов?
Область применения игоры, так что критично только время, ну и чтобы алгоритм не сильно (%15 максимум) пиздел.
65 1297518
>>297493
Не заморачивайся. У процов есть SIMD инструкции для вычисления корня, это теперь быстро
66 1297520
>>297518
угу
плюс всегда можно глянуть ассемблерный выхлоп компилятора, чтобы точно знать, что будут использоваться нужные инструкции
67 1297523
>>297520
Можно их просто взять и вызвать самому (если не сталкивался, то нужно искать SIMD intrisics).

Если делается много вычислений в цикле, можно очень большой прирост получить если самому все на интринсиках написать.
Kresty-sinie.png328 Кб, 676x451
68 1297585
69 1297740
>>297493
Вот сам посмотри:
https://godbolt.org/z/ZgTiWr
С ffast-math компилятор делает rsqrtss и один шаг Ньютоном. Без ffast-math делает дополнительную проверку на отрицательный операнд.
70 1297744
>>297493

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


Что у тебя там за игры такие
71 1297747
>>297029

>и все эти конструкторы копий и перемещения, перегруженные операторы присваивания, умные указатели и виртуальные деструкторы всё же нужны


Они нужны, если класс хранит данные в куче, а сам при этом ведет себя как value-тип (например строки или большинство коллекций из стандартной библиотеки). На практике в прикладных программах это редкость, а классы, которые управляют данными в куче в 99% случаев некопируемые, поэтому проще у класса удалить копирующий конструктор и оператор присваивания, и управлять указателями через unique_ptr или new/delete.
72 1297749
посоветуйте какие книги начать читать для начала, и что лучше сначала изучать C++ или C#? И вообще с чего начать(
73 1297763
>>297747

>Они нужны, если класс хранит данные в куче, а сам при этом ведет себя как value-тип


Смотри.
struct Yoba {
vector<Danniye> danniye;
};
Класс хранит данные в куче, а при этом сам ведет себя как value-тип. И никаких конструкторов копий и перемещения. Чудеса.
74 1297764
>>297749
Скажу по своему опыту, я начинал освоение с книги: "с++ за 21 день", спустя пару дней я начал писать пакмана и даже в 2д неплохо вышло на винбги.
З.ы. это было первое моё программирование в жизни, а с, с++ стал любимым языком)))
75 1297766
>>297764
просто я даже не знаю с чего начать, нигде не могу найти какие книги начать читать, ведь все с чего-то стартуют ибо не бывает такого чтобы кто-то взял, прочёл книгу и сразу всё понял. Так много вопросов и так мало ответов, спасибо за совет
76 1297767
>>297764
от какого ещё автора, можешь подсказать?
image.png81 Кб, 250x367
77 1297781
>>297766
Ну я вот вкатываюсь, тоже нуфаг, так что может подскажу. В предыдущих тредах в шапке давали ссылку, в этом вроде нет:
https://github.com/sosachbot/cppthreadhat/wiki

Для вкатывальщиков с нуля есть книга Страуструпа, там он всякие байки с историями и прибаутками на 2 тысячи страниц раскатывает. Я такое читать не смог, захотелось разъебать монитор, но может тебе зайдет. А вот книга Липпмана и Ко мне зашла прямо заебок. Но она предполагает, что ты уже немного шаришь в программировании. Третью книгу из рекомендованных для нафань (Прата) я не читал, не могу сказать что там.

Ну и в целом готовься, что вкат займет достаточно много времени. Концепции там после динамической скриптопараши могут показаться сложными, да и сам объем материала весьма большой. Даже вводные курсы больше тысячи страниц.
78 1297784
>>297781
спасибо большое
79 1297808
ля... а конпилятор-то какой качать?
80 1297810
>>297781
липпман вообще то на оппике :;
81 1297814
>>297808
g++, ясный павлик, он в линухе жи искаропки.
82 1297815
>>297766
ХЗ
Я начинал кодить с варика 3. Сначала писал простые триггеры: пик 1
Потом немного осваивал Jass: пик 2
Ну а дальше купил какую-то книжку по с++ обложка была жёлтая с нарисованным человечком сидящим за столом, помню меня она очень бесила т.к. там автор (насколько я помню) довольно специфично обучал кодингу т.е. книжка явно была не для новичков в программировании вообще.
83 1297825
>>297763
Хорошо, когда так просто можно сделать, но это возможно далеко не всегда. Типовой пример: pImpl с наследованием. То есть ты хочешь избавиться от лишних аллокаций, и сделать так, чтобы наследники и родитель использовали один приватный объект.
84 1297826
>>297029
Все правильно. Оставь все это дрочево байтоебам из асссембер треда.
85 1297835
>>297826
Да-да, убегай скорее из треда, пока тебя страшные байтики в жопу не выебали.
Нахуя вообще кресты изучать, если не хочешь знать, что там под капотом, и не умеешь этим пользоваться?
7f213bfdca0582cb1a76fe20022e0e6c.png406 Кб, 712x400
86 1297839
Зацените, какой охуенный у меня код скомпилировался.
Здоровый, сука:
https://godbolt.org/z/DqrfWa
87 1297840
>>297839
Воще молодец бротиш
88 1297858
>>297835
Поверь, я знаю о чем говорю.

реверс инженер итт
89 1297871
>>297825
Покажи пример, может соображу, как это сделать без конструкторов
90 1297884
>>296460
Не слушай ебланов.
Пройди курс и напиши сетевую игру на буст асию и кокос2D под андроид (тупо танчики 2мерные). Еще желательно знать базовые алгоритмы и структуры данных (первые 3 курса специализации от вшэ и какой то забугорной шараги на курсере).
60-70 к на руки твои. Через полтора года проси 150.
91 1297885
>>296460
А сори блять, я не дочитал про твою мотивацию про короткометражку.
С таким подходом рили нахуй иди, учи верстку и верстай на фрилансе странички с индусами.
>>297884
Вот этот совет мб кому то адекватному будет полезен.
Если переводить на 40ч/неделю думаю займет от полугода до 9 месяцев вся затея.
image.png3 Кб, 377x52
92 1297924
Шкварят мои кресты, суки.
93 1297938
Накидал себе говно чтобы не ебаться с расстановкой разметки в бугурт-тредах, а оно не видит пробелы и \n. Внимание, вопрос, где я долбоеб?

https://pastebin.com/zrZA9fBQ

Обходной костыль уже придумал, конечно, но все таки интересно
94 1297940
>>297938
А там точно одинарные кавычки должны быть, а не двойные?
95 1297947
>>297940
Дык ить как один символ читается же, вроде?
Absolutely haram.jpg46 Кб, 531x471
96 1297951
>>297938
Алсо, какого хуя эти ебучие 15 строчек кода в виде .exe занимают 2 мегабайта?
97 1297956

>> noskipws



Идите вы нахуй эксперты хуевы, короче. Как байтоебство обсуждать так все молодцы, а как рассказать что >> пробелы сжирает так все в молчанку играют блять
98 1297963
>>297951
Ну ты библиотек побольше наподключай и гавна прилинкуй. Будет все 5 весить.
99 1297964
>>297938

> while (file >> a)


Это форматированный ввод (исключает space symbols). Тебе нужно file.get(a).
100 1297967
>>297938
Вообще, ты хуйню какую-то написал.
1484573495123338313.jpg24 Кб, 468x520
101 1297978
Анон, что то я туплю.
Режу прогру на составляющие кладу в разные .срр файлы, выношу объявления в .h заголовки. Но большинство функицй и классов используют одну и ту же библеотеку.
Мне в каждый заголовочник кидать инклюды?
Алсо, компиляю используя утилиту make. Допустим сначала я компилю все файлы в объектные, мои объектники будут излишне жирными из-за инклюдов? Или всё станет похуй на этапе линковки?
102 1297980
>>297967
Да, теперь это так
https://pastebin.com/QF1qCcGG
A man of culture as well.jpg27 Кб, 680x383
103 1297981
>>297964
Спасибо, анон
104 1298004

>с++


>в 2018


>когда есть функциональные языки


>когда есть высокоуровневые языки аля С# или java


>когда даже жабаскриптер джуниор получает больше синиора крестовика


Ну вы и говноеды господа
105 1298018
JS vs PHP по скорости вката, зарплатам, востребованности и перспективам. Что лучше?
106 1298025
>>298018
Ой не туда, извините
107 1298030
>>297884

>Через полтора года проси 150


это со специализацией в игрострое на мобилках то?
о, да
проси
108 1298032
1440952558503.gif447 Кб, 756x1109
109 1298044
>>297839
В Е К Т О Р И З А Ц И Я
М Е М О И З А Ц И Я
Л У П А Н Р О Л Л И Н Г
К О Н С Т А Н Т П Р О П А Г Е Й Ш Н
110 1298045
>>297978
Самое главное, чтобы послепрепроцессинга в единице компиляции у тебя были нужные декларации функций. Почитай про модель компиляции Си.
111 1298047
>>298030
Тоже проиграл с манямирка.
Это в лучшем случае если повезет. И после 3х лет работы. И так и быть может дадут как жс-прогеру в москве
112 1298063
>>298032
С O2 такая же залупа вылезает.
113 1298189
>>298063 я глянул, с -O0 намана.
114 1298211
>>298189
Компилируй сам с -O0
115 1298212
Я и не видел что перекатили тред. Репостну вопрос сюда тогда
Аноны, как можно написать функцию, которая будет искать все возможные варианты сум какого-то числа? Как на пике. Пытался найти возможные суммы числа (пик 2),а после перетасовывать элементы в них, но выходила какая-то хуйня. Если менять элементы сравнивая с последним, то строки по типу 1 2 2 будут давать мало вариантов, а если с первым - то все остальные. Может кто подсказать примерный алгоритм? Инет обрыл, нашёл только варианты как для пик2. Уже 6 часов сижу думаю, и нихуя не придумал. Если кому нужно, функцию для поиска пик2 оставлю под спойлером cpp.sh/8554k
116 1298224
>>298212
Тебе нужно найти все уникальные пермутации каждого уравнения твоего второго пика. Так как элементы повторяются, то тебе нужны именно уникальные пермутации. Быстрое гугление дало https://www.geeksforgeeks.org/distinct-permutations-string-set-2/ что, возможно, даст тебе ответа.
117 1298227
>>298224
Пермутации ведь учитывают все элементы? То есть в строке 1 1 1 2 оно будет и еденицы с еденицами тасовать?
118 1298230
>>298212
1 + 1 + 1 + 1 + 1 - это 0000
2 + 1 + 2 = ( 1 + 1 ) + 1 + ( 1 + 1 ) - это 1001
3 + 1 + 1 = ( 1 + 1 + 1 ) + 1 + 1 - будет 1100
И так далее.
119 1298233
>>298230
Это ведь битмаски называется? Я с ними не работал еще просто, инфу бы какую-то почитать сначала.
120 1298234
>>298233
Это тупо двоичные числа. Только тебе нужны уникальные комбинации, соответственно надо будет сортировать по длине последовательностей нулей и единиц, чтобы 1110 и 0111 учитывались один раз.
121 1298235
>>298227
В ссылке это, как я бегло понял, специально учитывается.
122 1298239
>>298234
Как раз таки мне нужны не уникальные, если я тебя правильно понял. То есть 1 1 1 2 и 2 1 1 1 это разные строки.
>>298235
Ну я пробовал растосовать их обратно, методом свапа и потом возвращения. Если сравнивать все элементы с первым, то не выдаст всех комбинаций для строк типа 1 1 3, а если с последним - то для 1 2 2. Если же поставить два условия, то почему-то не меняются местами пары из 2 элементов. Остальные при этом работают. cpp.sh/4uwv7 - то, на чём остановился.
image.png99 Кб, 1023x305
123 1298240
Аноны, скорее всего не туда заполз, но больше некуда.

Решил я значит поучить мат. анализ, нашел учебник Фихтенгольца (вроде все хвалят) и чёт нихуя не могу понять, что за хуйня тут несется?

Допустим у меня есть число e=128, ведь оно может быть любым больше нуля. И есть два вещественных числа 1.7354 и 50.8458

Если я заключу из между 125 > 1.7354 > 1 и 125 > 50.8458 > 1, то они обязательно равны?

Как это вообще блять? Может быть кто-то тут сможет мне пояснить, ибо в тематике пусто
124 1298244
>>298239

>Как раз таки мне нужны не уникальные


Ну тогда просто по возрастания берешь все числа от 0 до N-1, представляешь в двоичном виде и суммируешь последовательности единиц, и вместо них выводишь сумму + 1. Если два нуля подряд, выводишь + 1 + , если ноль между единиц, выводишь +. Еще надо учитываешь лишние единицы в начале и конце.
125 1298246
>>298240
Эпсилон - это бесконечно малое число.
126 1298249
>>298246
Сбило с толку "какое бы ни взять рациональное число". Спасибо, анон, так все ясно
127 1298251
>>298246
А хотя нет, ты чёт хуйню какую-то пизданул
128 1298264
>>298240
Какое угодно e. Ты взял одно. А возьми e=1. Возьми e=0.23131. Возьми e=0.0000007. Если какое e ты бы не взял, неравенства действуют - значит, они равны.
129 1298267
>>298264
Спасибо за подробное объяснение, анон. Алсо, что посоветуешь по математической логике почитать?
mendelson.jpg26 Кб, 318x499
130 1298280
>>298267
Нам в универе читали по Введении в математическую логику Эллиота Мендельсона. Потом сам для себя дочитывал в оригинале. Как по мне, вполне хорошо объяснено всё про формальные логики, модели, теорию множеств, арифметику и тд. Больше не вникал в данный предмет.
131 1298410
Крестаны, не прогоните

Есть массив
int arr[2][3] {0};
Хочу вытащить из arr подмассив.
Почему это можно сделать только через пердолинг со сслыкой:
int (&sub)[3] = arr[1];
Почему нельзя пропустить ссылку и написать просто
int sub[3] = arr[1]; // ???

Тут дело только в том, что массивы нельзя присваивать, или есть что-то еще?
132 1298419
>>298410
Ну так же сработает
vector<int> sub(3) = arr[1]
Значит дело в этом
133 1298426
>>298419
Не, вектор "нечестно". Именно на массивах надо.

Вообще вопрос возник в связи с range-based for - хрен пойми, чего он от меня ждет. То ли я тип в принципе неверно задаю, когда пишу без ссылки, то ли он (for) тупо не может инициализировать, а тип я угадал dthyj.
134 1298436
>>298410
Ты бы Си подучил прежде чем в плюсы лезть. Почитай про массивы, про array decay и как вообще с массивами работать. Ты, по идее, хочешь скопировать arr в sub. Или чтобы sub указывал на подмассив. У массивов нет такой семантики, только лишь у указателей.
135 1298439
>>298030
>>298047
Дауны неосиляторы?
Я ровно так и сделал.
С вышкой физика кек.
136 1298663
>>298439
О, пошла стандартная мантра про неосиляторство. Как будто в устаревшем низкоуровневом говне есть что-то сложное, лол.
137 1298690
>>298439

>С вышкой физика


просто на твоей фирме кто-то тащит за тебя
возникают сложные проблемы, которые ты не видишь, но скиловые трудяги (с кодерской вышечкой, да, да) просто вовремя их решают и все
ты этого просто не замечаешь, делаешь текучку
но когда вот такой челик свалит на другую работку, эти проблемы придется решать тебе
и тут ты обосрешся
это касается всех вкатывальщиков - пока нужно выполнять текучку, они справляются
но как только случился факап - проблему они решить не могут
138 1298751
>>298690
ты прям как боженька пизданул!
респект.
139 1298807
>>298690
Хуйню пизданул. У меня у самого прогерская вышка, но там ничему такому о чем ты говоришь не учат. Умение решать такие задачи только на практике и нарабатывается. А в универе нам вообще лекции Кнута читали. И это еще не самый плохой вариант. Лучше уж Кнут чем книги фимозных преподов застрявших в эпоху Дельфи.
140 1298817
>>298807
лабы, курсачи сам писал? диплом сам делал? вот тебе и практика.
никто не запрещает это на современных технологиях делать

если ты ничему не научился в вузе, то это не "эпоха дельфи" виновата...
141 1298820
>>298817
Я то как раз всему и научился потому что поменьше доверял вузу и сам учился. И поэтому собственно и съебал с Рашки и теперь в Ирландии работаю. И да ирландские вузы ничем не лучше в этом плане. Алсо про лабы посмеялся спасибо. Учитывая уровень их полезности который стремится к нулю.
142 1298828
>>298820
Двачую. Вкатывальщик проштудировавший SICP + HDTP уже на голову выше студента среднего тех вуза.
143 1298831
>>298820

>всему и научился


>теперь в Ирландии работаю


>посмеялся спасибо


и сидишь такой в рабочее время на ресурсе для даунов, студентов и студентов-даунов. освещаешь нам путь к Знанию.
144 1298833
>>298831
Он у меня только 14 минут как начался. Но ты прав. Надо работу делать.
145 1299136
Я только недавно начал изучение с++.

Вопрос: Как в char-массиве выполнять арифметические преобразования?

К примеру: char-массив - 7 + 3.
Как преобразовывать 7 и 3 из char в int? Как мне это посчитать? Без использования стринг.
146 1299239
>>299136
Это тебе надо драконью книгу читать. Тут нужно пилить свой компилятор.
147 1299262
>>299136

>+ 3.


>Как преобразовывать 7 и 3 из char в int? Как мне это посчитать? Без использования стринг.


Прибавь к каждому символу '0' и домножь на базу, балбес
148 1299277
>>298212

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


Я как-то такую прогу писал, но она на другом компе. Гугли производящие функции, короче, может где-то найдёшь задачу про варианты размена суммы определёнными монетами, а потом обобщишь, я сам уже не вспомню, что там было конкретно.
149 1299280
>>299277

>Сколькими способами можно разменять доллар монетами в


1, 5, 10, 25, 50
центов?
https://www.mccme.ru/ium/postscript/s12/gasnikov-5.pdf Вот тут есть пример.
150 1299284
>>299277

> которая будет искать все возможные варианты сум какого-то числа


А, жопочтец, думал считает их количество. Гугли алгоритм генерации разбиений, беглый гуглинг вот такое выдаёт, вроде подходит.
http://old.tusur.ru/filearchive/reports-magazine/2008-1/113-119.pdf
151 1299302
>>299277
Да уже выше скинули пару ссылок. Я по одной из них решил. Сейчас над другой хуйнёй голову ломаю, но тут уже сам буду решать. За помощь кстати спасибо, всем ответившим.
152 1299392
>>298240

>нашел учебник Фихтенгольца


Бери Зорича.
153 1299394
>>298246

>Эпсилон - это бесконечно малое число.


Что такое "бесконечно малое число"?
154 1299404
>>297781
Предыдущее издание лучше с точки зрения нуба, правда оно написано еще до с++11.
В пятом издании он очень часто, иногда по нескольку раз на одну страницу, прибегает к формулировке "будет объяснено позже страниц эдак через 500-800", отчего остается слишком много открытых вопросов. В четвертом же издании весь материал изложен вполне последовательно, после прочтения, например, главы, остается минимум неясностей.

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

>Для вкатывальщиков с нуля


>книга Страуструпа


Это шутка, мем.
С первых же страниц идут классы, такие штуки как new и т. п. Короче чтоб это читать нужно уже знать язык в объеме той же книжки Липпмана, например.
155 1299423
>>297781
Нуфаг прочитавший Прату репортинг. Книга хорошая, дня полных нуфагов самое оно. Даст неплохую базу, но при этом читается вполне легко. В конце каждой главы есть задачи и вопросы по теории. Мне книга понравилась, когда начинал читать Липпмана не понял что он хочет уже на 80 странице и забил хуй. С Пратой таких проблем не возникало
156 1299433
>>299404
потому книга страуструпа для обучения возможностям конкретного языка, а не для обучения программированию
и это правильно
157 1299571
>>295983 (OP)
Сап,
Почему итератор используется по ссылке, например в тех же циклах for?
158 1299573
Вкатился из админства, писал скрипты до этого bash и на хуйне типа сирешетки
прочитал дейтела спп по диагонали , покопипастил примеры - вообще нихуя не понятно, в первый раз вижу столько воды, ебашит рекурсию в 4главе, новичкам с 0 наверное кайф вообще
посоветуйте книгу по составлению алгоритмов на примерах(не обязательно цпп, но желательно), может быть притянутое ближе к стм\ардуино, чтобы примеры были "а че так можно было?" , как можно больше примеров надо чтобы разбиралось
вообще не понимаю как обрабатывать большое количество исключений, начинаю пиздец путаться в алгоритмах, хочу понять как думают люди кто разрабатывает что то больше чем линейный скрипт с двумя исключениями и автозапуском лол
159 1299580
>>299571
*Указатель используется
быстрофикс
160 1299585
>>299573
Грокаем алгоритмы?
161 1299621
>>299571
Потому-что итератор это объект, который хранит в себе указатель на какой-либо объект в контейнере. Для него перегружена операция разыменования, чтобы можно было этот объект через итератор достать.
162 1299627
>>298663
С++ язык высокого уровня. На нем ты можешь писать как легкие, так и сложные программы. Все зависит от твоего уровня знаний.
163 1299638
>>299621
Cпасибо!
164 1299653
>>299573

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


Книги для обучения с нуля на С++ все говно. Я учил С++ когда за плечами был бейсик и делфи, было более-менее, хотя глаза у меня на все открылись после прочтения K&R и Дизайна и эволюции. А с нуля утопнешь в деталях, не видя сути.

>посоветуйте книгу по составлению алгоритмов на примерах(не обязательно цпп, но желательно)


Кормен. Но вряд ли тебе нужны алгоритмы.

>может быть притянутое ближе к стм\ардуино


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

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


Кратковременная память у всех людей это объектов 7, поэтому если у тебя в функции больше 20 строчек, дели ее на логические блоки и дальше мысли уже этим блоками.
На самом деле у меня без проблем мозг парсит функции и по 150 строчек, но я просто мысленно выхватываю эти блоки, обзываю их и "не вижу" внутреннее содержимое. Но книги научиться так делать не помогут, надо кодить. Попробуй задачки порешать а-ля олимпиадные, но не сильно сложные.
165 1299747
Двач, помогач? Как превратить файл в unsigned char array ? В C# есть File.Readallbytes. А на крестах как такое вытворить?
166 1299749
>>299747
Как-то так
std::ifstream in("file.txt");
std::vector<char> yoba;
std::copy(std::istream_iterator<char>(in), std::istream_iterator<char>(), std::back_inserter(yoba));
167 1300025
>>299627
Это несомненно так.Только вот для выосокуровневых задач проще использовать другие языки. Сишку в основном для низкоуровневого говна используют
168 1300060
Анонче, помоги старому.
Как проверить на вместимость два параллелепипеда?
Попытался сделать, но выходит какое-то говно (пикрил).
С меня три.чаю.
image.png255 Кб, 400x400
169 1300120
>>300060

>dlina


>shirina


>visota

170 1300130
>>300060
1. Не используй транслит
2. Инициаилизруй и объявляй переменные ближе к месту использования, greatSec тебе нужно объявить перед соответствующим if'ом, не раньше
3. Пиши по возможности чистые функции и отделяй обработку от ввода и вывода данных. Вообще странно что у тебя есть объект parallelepiped и вместо int yoba::vmestimost(yoba drugoy_object) ты используешь вот эту лапшу

4. int great = 0;
int (условие) great++;
if (great == 1) - можно переписать как
if (условие) {
int great = 1}
Вообще с таким количеством if'ов эта переменная лишняя, достаточно else

5. Алгоритм у тебя "первая сторона больше всех сторон, вторая больше всех сторон, третья больше всех сторон" - неправильный. Например кубик 5,4,3 и 4,3,2. Один друг в друга влезут, но 3<4, значит по твоему коду не влезут.

Насколько я понимаю, нужно отсортировать стороны по размеру и попарно сравнить. Можно отсортировать хардкоженными ифами типа как тут https://stackoverflow.com/questions/4793251/sorting-int-array-with-only-3-elements , но вообще

6. У тебя длина, ширина и высота - искусстенные понятия. Если бы ты задавал параллелепипед массивом из 3 чисел, пришел бы к более очевидному решению
vector<int> yoba1 = {p1.dlina, p1. shirina, p1.visota};
std::sort(yoba1...);
vector<int> yoba2 = {p2.dlina, p2. shirina, p2.visota};
std::sort(yoba2...);
int great = 0;
for (int i =0; i < 3; ++i) {
if (yoba1 <= yoba2) {great--;} else if (yoba1 >= yoba2) {great++};
}
if (great == 3) ...//если они равны он это не сдетектирует
if (great == -3) ...
170 1300130
>>300060
1. Не используй транслит
2. Инициаилизруй и объявляй переменные ближе к месту использования, greatSec тебе нужно объявить перед соответствующим if'ом, не раньше
3. Пиши по возможности чистые функции и отделяй обработку от ввода и вывода данных. Вообще странно что у тебя есть объект parallelepiped и вместо int yoba::vmestimost(yoba drugoy_object) ты используешь вот эту лапшу

4. int great = 0;
int (условие) great++;
if (great == 1) - можно переписать как
if (условие) {
int great = 1}
Вообще с таким количеством if'ов эта переменная лишняя, достаточно else

5. Алгоритм у тебя "первая сторона больше всех сторон, вторая больше всех сторон, третья больше всех сторон" - неправильный. Например кубик 5,4,3 и 4,3,2. Один друг в друга влезут, но 3<4, значит по твоему коду не влезут.

Насколько я понимаю, нужно отсортировать стороны по размеру и попарно сравнить. Можно отсортировать хардкоженными ифами типа как тут https://stackoverflow.com/questions/4793251/sorting-int-array-with-only-3-elements , но вообще

6. У тебя длина, ширина и высота - искусстенные понятия. Если бы ты задавал параллелепипед массивом из 3 чисел, пришел бы к более очевидному решению
vector<int> yoba1 = {p1.dlina, p1. shirina, p1.visota};
std::sort(yoba1...);
vector<int> yoba2 = {p2.dlina, p2. shirina, p2.visota};
std::sort(yoba2...);
int great = 0;
for (int i =0; i < 3; ++i) {
if (yoba1 <= yoba2) {great--;} else if (yoba1 >= yoba2) {great++};
}
if (great == 3) ...//если они равны он это не сдетектирует
if (great == -3) ...
171 1300162
Ананасы, плиз, хелп.
У gcc есть какой-нибудь ключ который проверяет пометил ли я в производном классе виртуальную функцию как override?
 .jpg246 Кб, 1080x1080
173 1300181
>>300174
Спасибо
174 1300196
>>300060
Кажется, не ошибся:
https://ideone.com/wXrrx7
175 1300204
>>295983 (OP)
вкатывальщик - кун итт.
Что лучше для вката в с++, читать книги/смотреть курсы или делать небольшой проект?
Проект по моим прикидкам довольно простой и там не сколько сами плюсы, а больше использование библиотеки и готовых методов.
sage 176 1300229
>>300204

> Что лучше для вката в с++


Пойти нахер отседова.
177 1300261
При передаче массива в функцию, передается только указатель на нее, получается что действия над массивом внутри функции изменяют именно его, как именно скопировать массив, чтобы такого не происходило?
178 1300264
>>300261
Используй vector или array
179 1300268
>>300229
Поешь говна.)
1297585329525.png80 Кб, 736x736
180 1300271

ОПРЕДЕЛЯЕШЬ ШАБЛОН ОПЕРАТОР ВЫЗОВА ДЛЯ УДОБСТВА
@
ЧТОБЫ ПОТОМ ПИСАТЬ huy.template operator<ebat>(rot_straustrupa);
181 1300273
>>300271

>huy.template operator()<ebat>(rot_straustrupa)


быстрофикс
182 1300274
>>300261
копируешь массив во временный массив
этот временный массив передаешь в функцию, она отрабатывает
дальше работаешь с измененными данными во временном массиве
удаляешь временный массив
все это можешь завернуть в собственную функцию-обертку
183 1300276
>>300204

>вкатывальщик - кун


уже знаешь на что потратишь заработанные кучи бабла?
поездки на море неск раз в год, небодяженый кокс и 18ти летние шлюшки? да?
184 1300277
>>300174
а если к тебе, положим, на улице подойдет незнакомый челик, и попросит метнуться ему в магаз за сигами? сделаешь?
185 1300284
>>300204
Читай книги и смотри курсы. Причем с уклоном в байтоебство. Проект писать не советую, тк ты просто напишешь его слабо. Хотя можешь проделать следующую вещь. Написать небольшой проект с текущем уровнем знаний, прочитать тройку другую книг, пересмотреть еще несколько курсачей, подрочить на стаковерфлоу месяцок другой и потом написать тот же самый проект уже с новым багажом знаний. Сравнить свои работы.
186 1300285
>>300264

>array vector


Я не особо хорошо пока что с ними знаком, пойду почитаю.
>>300274
Можно конечно, но кажется это как то костыльно, в стандартной библиотеке же что то должно быть для этого
187 1300288
>>300271
Я думал один всегда бурчу на Страуструпа во время написания кода, лол.
188 1300293
>>300285
В стандартной библиотеке, как раз все так и устроено, даже еще более кастыльней. На плюсах по-другому не сделать.
189 1300300
>>300261
Передавай его в структуре.
190 1300338
>>300276
Компик себе куплю, буду в игоря играт и есть ФЛОРЕНТИНУ.
>>300284
Спасибо, отличная идея!
191 1300340
Аноны, есть какой-то гайд для непосвященных для БПФ? Нужно написать умножение многочленов по этому способу, на хабре в статьях предполагают что я уже знаю что это. А мы это блять не проходили еще. Сейчас смотрю какой-то видос и возникают вопросы, а ответы хуй где получить можно. В тред математиков пиздовать чтоле.
192 1300363
>>300340
Аноны, разбирающиеся в матане, можете подсказать правильно ли я понял алгоритм?
Сначала мы имеем два многочлена какой-то степени. Далее мы расширяем их степень до 2n-1, и в первый мы записываем ну или принимаем как чётные части результируещего многочлена, а во второй - нечётные. Далее мы ищем узлы интерполяции которые равны корню из комплексной единицы в степени n, и после ищем значении A(x^2)+x*B(x^2)в этих точках, и поскольку поточечное умножение равно свёртке функций, то мы записываем его в результирующий массив. После интерполируем полученные значения и на выходе получаем многочлен-результат. Так, или где-то ошибки есть? Голова уже не варит пиздец
193 1300368
>>300338

>Компик себе куплю, буду в игоря играт


ммм
то есть 8м часов отъебашишь в офисе за компом
придешь домой и будешь еще 4+ часа сидеть за компом но уже "разлекаться"?
меня так на 3 года хватило, потом я кончился как программист и как человек
194 1300370
>>300025

>Сишку в основном для низкоуровневого говна используют


Ай да мудило, хуй тебе в стыек.
Все обстоит ровно наоборот. Сишку используют для души, для возвышенного. Сишка - это наивысший уровень блаженства.
А всякая ентерпрайз-хуита вроде джавы или ришотки - это бизнес-задачи, это приземленное, это низость.
195 1300371
>>300300


во т это инкапсуляция!
196 1300393
Анансы, дайте гайд для тупеньких по move semantic.
198 1300403
>>300371
Причём тут инкапсуляция, ебалай? В структуре будет передаваться по значению.
199 1300404
>>300370
Во первых если мы говорим о чистом Си без богомерзких плюсов то возможно. Во вторых, джава для высокоуровневых задач намного лучше. В третьих, твои возвышенные речи подошли бы лиспу. Вот он действительно возвышенный а богомерзкий си и его отроки для бизнеса и прочего говна
200 1300429
>>300403
понял
спс
201 1300567
Что лучше, Visual Studio Express или CLion?
202 1300570
>>300567
Блокнот
203 1300572
Стоит ли делать list<T>* list = new list(...);
204 1300574
>>298690
Ох ебать давай, чем твоя кодерская вышечка тебе так помогла прям?
Я если че и в ОС/алгоритмах[/сетях не хуже колег шарю, работаю в БОЛЬШОЙ ИЗВЕСТНОЙ КОМПАНИИ.
205 1300575
>>300574

>Я если че и в ОС/алгоритмах[/сетях не хуже колег шарю


Эффект Даннинга-Крюгера подоспел
206 1300579
>>296051

>или указатель на локальную переменную


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

>А как тогда правильно возвращать сишную строку?


1. В теле функции выделить память каким-нибудь malloc-ом, запихать туда строку и вернуть указатель на память.
2. Передать в эту функцию указатель на память.
207 1300586
Я могу расширить методы стандартного класса string? То есть добавить string.split и т.п.?
208 1300588
>>300567
бамп
209 1300590
>>300567
Я использую второе, так как студия слишком тяжелая.
210 1300595
>>300586
Сделай просто функцию.
В чём проблема?
211 1300601
>>300595
Быдловид.
212 1300714
>>300586
для расширения функциональности классы стандартной библиотеки рекомендуют агрегировать, а не наследоваться от них, тому есть причины, которые нет желания здесь объяснять
также поведение стандартных контейнеров расширяется введением собственных шаблонных функций, принимающих итераторы, либо делают более специализированную функцию, принимающую конкретный контейнер, их еще называют "функции помощники"
в случае если функция-помощник делается для твоего класса, ее можно объединить в одно пространство имен, но засорять пространство имен std не рекомендуется
213 1300715
>>300590
clion робит быстрее vs? да ладно
214 1300717
>>300572
нет
215 1300759
>>300404
Э, ты не путай уровень языка с уровнем задач.
Язык относят к высокому/низкому уровню исключительно по тому, насколько приходится иметь дело непосредственно с железом при написании программ, все остальное от лукавого.

А уровень задач, решаемых с помощью языков - это вообще в значительной мере субъективная штука. Софт для марсоходов, например, писался на С, и называть это задачей низкого уровня по меньшей мере странно. С другой стороны, задача запилить персональный хоум пейдж в интернетике, например. Решается задача при помощи языков высокого уровня. Однако, сама задача - плевое дело, высокой квалификации не требует, ну никак нельзя сказать, что это задача высокого уровня.
bNxpRYJSWB0.jpg70 Кб, 450x600
216 1300945
>>300196 >>300130
два2 чаю вам, аноны
217 1300971
сап, котаны.
удачно вкаттился в кресты.
теперь думаю набираться знаний и пробовать через 1,5-2года вкатиться в геймдев.
что осваивать? опенгл? фреймворки для 2д игрушек для начала?
с чего начать и куда рыть?
заранее спасибо.
218 1300978
>>300971

>удачно вкаттился в кресты


Вот тут ты и проебался.

>>300971

>1,5-2года вкатиться в геймдев


Unreal Engine.
219 1300980
>>300978
Почему проебался?
на крестах же пилится почти весь геймдев. разве нет?
z4guQ894x4Q.jpg42 Кб, 431x960
220 1300985
>>300980
платформеры лучше клепать на %языкнейм
ангельский ? + еще полтора года
заходи на сайты уехавших компаний и смотри требования, дизайнить локации у них есть местные индусы, чтобы вкатиться нужно быть сеньером помидором с 6+лет стажем за 5-8к бачей, когда все другие отрасли на с++ уехавшие имеют ощутимо больше, линейная алгебра и спп эксперт кноулейдж
все валят на мобилки потому что деточки подрастают новые, и им уже нахуй не нужно пк, а если не для бизнеса можно долбиться куда хочешь

>удачно вкатился в кресты.


за 21 день ?
221 1300987
>>300971
что значит удачно?
222 1300999
>>300987
Удачно значит зарабатываю этим деньги теперь. Очевидно же
223 1301000
>>300985
За 8 месяцев
224 1301004
>>301000

>на крестах


меинстрим это не >почти весь
как ты с такими формулировками своих вопросов докатился до работы на плюсах
определись с направлением и должностью, там видно будет
225 1301188
>>295983 (OP)
Sup
Вопрос по openmp
Если подрубаю распараллеливание, в X и Y часто оказываются одинаковые числа, если заполнять их нормальным распредлелением (пик 2, явно видна наклонная линия). Если заполнять их биномиальным, то проблема отсутствует (пик 3).
Если генератор случайных чисел не threadsafe, то почему нормально отрабатывает биномиальное распределение?
226 1301191
>>301188

>Если генератор случайных чисел не threadsafe, то почему нормально отрабатывает биномиальное распределение?



Какая нахуй разница, как проявляется UB?
227 1301202
>>301188

> 1


Братишка подскажи название темы.
228 1301203
>>301191
И где в коде неопределённость?
229 1301206
>>301202
Qt Creator - Flat Dark
image.png52 Кб, 1343x259
230 1301208
>>301203
Ты не знал, что data race — это UB? Лол.
231 1301209
>>301206
Спасибо!
232 1301210
>>301202

>Братишка подскажи название темы.


C++ №78 /cpp/
233 1301215
>>301208
Одновременное обращение к двум разным элементам одного массива это data race? Даже если оба потока, как в моём случае, пытают прибавить единицу?
234 1301219
>>301215
Ой-вей... ГПСЧ имеет состояние. Которое он меняет при запросе следующего числа.
Использование не-потокобезопасных методов у объектов из разных потоков без синхронизации ведёт к data race и UB.
скобки.png6 Кб, 783x154
235 1301274
Что-то не врублюсь что значат эти скобки внутри скобок? Это эти новые initializer list?
236 1301277
>>301274
Да, это инициализация элемента типа VkPushConstatntRange.
237 1301385
>>301274
Ебанутый синтаксис у этого вашего си++, вот и не понимаешь.
Это же надо додуматься, фигурными скобками обозначать кучу семантически разных вещей, таких как: операторные скобки/локальные скоупы, определение класса, определение структуры, тело функций/методов, определение перечислений и инициализация массива/структурытут вообще заебись: разделитель - запятая вместо точки с запятой. Но зато столько дрочева на cout << hui << endl и вырвиглазные лямбды, шо пиздец.
238 1301410
>>301385
у тебя 3 вида скобочек в распоряжении, все заняты
альтернатива скобочкам - ключевые слова
но си проектировался в первую очередь с соображением лаконичности, чем синтактической чистоты
239 1301420
>>301385
Это ты еще лисп не видел.
240 1301421
>>301410
Если бы действительно делали упор на лаконичность, то получился бы форт. А так взяли алгол и заменили begin/end на {}
241 1301422
>>301420
В лиспе скобочки только для одного - применение параметров к функции, или макросу.
242 1301425
>>301421
си - структурная парадигма программирования, практичный алгол, в общем, а форт - стековый яп, сравнивать их вообще нельзя
243 1301451
сап двач, что значит взаимное преобразование класса с классом? Что мне надо сделать?
244 1301459
>>301451
Наверное, чтобы они могли конвертиться друг в друга, через конструктор преобразования или конвертирующий оператор
245 1301512
А существует ли IDE, которая давала бы подсказки по порядку вычислений выражения? Или плугин на какую-нибудь IDE.
Ну то есть чтобы набил i++ + ++i, глянул подсказку как оно считаться собирается и сразу понел, что хуиту написал.
246 1301516
>>301512
бля, возьми да распечатай себе табличку с приоритетом операторов и не еби вола. двадцать раз в неё посмотришь, на двадцатьпервый уже смотреть не будешь
247 1301522
>>301512
Ахуеть, вот это ты ленивый. Не выебывайся и подрубай дебаг, если в уме просчитать не можешь.
248 1301535
>>301512
ммо фармил во время пар по комбинаторике?
249 1301537
>>301512
VS делает светлосерыми ненужные скобки когда видит что по порядку вычисления они не нужны.
250 1301547
>>301512
Компиляторы же (гцц как минимум) в таких случаях справедливо информируют тебя о том, что ты мудак.
251 1301580
>>301512
порядок вычисления выражений вообще то не определен :;
sage 252 1301669
>>301421

>Если бы действительно делали упор на лаконичность, то получился бы форт.


Ты бы ещё "брейнфак" вспомнил.
253 1301675
В чем фишка clang?
254 1301677
>>301675
тулинг
255 1301976
>>301425

>а форт - стековый яп


В форте спокойно делается хоть ООП при желании.
256 1302129
>>301512
Перестань стрелять себе в ногу. Сам потом нихуя не поймешь.
257 1302164
Можно ли написать функцию ввода? Например, что то вроде:
void vvod(double x)
{
cin>>x;
}


, но чтобы это работало?
258 1302166
>>302164
Разрешаю.
259 1302178
сап двач, допустим, есть класс хуй и в нём есть поле длина хуя. Есть 10 объектов хуя с разной длиной. Можно ли как-то посчитать сумму длин всех объектов?
260 1302184
>>302178
А в чём проблема то? Бери да складывай
261 1302186
Функцию написать, которая бы все объекты складывала
262 1302250
>>302186
Главное - придумать хорошее название.
263 1302251
>>302250
ну бля я же не могу как со структурами массив объектов сделать автоматически, чтобы потом эта функция всё брала оттуда
264 1302253
>>302251
всё я придумал как сделать спасибо
265 1302260
хотя не совсем, мне сказали надо придумать:
-функция-друг, позволяющая определить общую стоимость устройств, входящих в оборудование;
я придумал как реализовать это вне самого класса, а как так хз
266 1302263
>>302260
тут тоже всё понял, но тогда следующий вопрос:
Вот создаю я массив объектов, но ведь тогда у меня по сути объекты без переменной, а просто arr[0], arr[100]. Можно ли их как-то обзывать?
267 1302285
>>302184
И как задетектить все созданные объекты определённого класса (Если заранее не был предусмотрен массив)?
269 1302288
>>302285
Создаешь массив указателей на объекты.
Аргументом конструктра суешь массив, this бушбэчишь.
Например.
270 1302289
>>302285
А, или static член-массив.
271 1302290
>>295983 (OP)
Обоссыте но не бейте, алгоритм вроде бы правильно составил, но с массивами в с++ не получилось. Как сделать функцию которая принимает массив и возвращает тоже массив?
https://pastebin.com/QRKUjn60
272 1302294
>>302290

>Как сделать функцию которая принимает массив и возвращает тоже массив?


Прочитать Кернигана и Ричи. Также прочитай вот это http://acm.mipt.ru/twiki/bin/view/Cintro/CfaqPointer , ты соснул на пункте 2.6
Твой вуз - говно, если учит тебя алгоритмизации с помощью сишки, которую еще к тому же называет с++.

В сишке массив - это только статический массив с известно заданным размером. То есть int arr[5]; это массив. В крайнем случае int arr[] = {1,2,3,4,5};, так как тут размер известен из присваивания и все. Это будет массив, который компилятор выделит тут же в текущем скоупе на стеке.
Когда ты пишешь int yoba[] в параметре функции, это полный эквивалент int@ yoba (@ - это звездочка) - то есть указатель на какой-то буфер с интами неизвестной длины. Соответственно не работает у тебя, потому что sizeof(nums) равен вовсе не тому, что ты думаешь, он равен будет размеру указателя на твоей системе. набери std::cout << sizeof(nums) << std::endl; и проверь.

Сделай вот так
yoba(int@ arr, int arr_length), а лучше yoba(int@ arr, size_t arr_length)
Возвращать тебе ничего не нужно, потому что ты передаешь указатель, и функция будет менять данные по этому указателю.
Если ты не хочешь менять входной массив, а хочешь иметь два массива, то нужно написать такую сигнатуру:
void yoba(int@ input, int@ output, size_t arr_length).
А вызывать так:

int input = {1,2,3,4,5};
int output[5];
yoba(input, output, 5)

С динамическими массивами yoba тоже будет работать:
int len = 5;
int@ input = (int@) malloc(len @ sizeof(int))
int@ output = (int@) malloc(len @ sizeof(int))
yoba(input, output, len);

И на будущее запомни: не вздумай никогда вызывать malloc внутри подобной функции, выделяй память всегда снаружи и там же освобождай.
273 1302296
Ну и да, когда выпустишься из своей говношараги, пиши так:

vector<int> yoba(const vector<int>& yoba_input){}

А вызывай так:
vector<int> vec(5);
vec = yoba(vec);

Для экономии можно in-place обработку сделать:
void yoba(vector<int>@ yoba), но лучше не надо.
274 1302301
>>302294
>>302296
Cпасибо за подробное объяснение! Добра тебе!
275 1302430
>>302294
Тогда уж лучше сделать как-то так, чтобы не засорять логику маллоками и сайзофами:

typdef struct (
int@ items;
size_t len;
) moi_massiv;

moi_massiv@ create_moi_massiv(size_t len) ...
moi_massiv@ moi_massiv_from_array(int@ i, size_t len) ...
void delete_moi_massiv(moi_massiv@ m) ...
some yoba(moi_massiv@ massiv) ...

и использование:
int len = 5;
moi_massiv@ input = create_moi_massiv(size_t len);
moi_massiv@ output = create_moi_massiv(size_t len);
yoba(input, output);
delete_moi_massiv(moi_massiv@ input);
delete_moi_massiv(moi_massiv@ output);
276 1302437
>>302430
Лучший вариант я предложил - использовать vector. А ему надо лабу сдать, а не велосипеды пилить.
277 1302445
Что почитать про адреса указатели чтобы все стало сразу понятно?
278 1302447
>>302445
Само придет
sage 279 1302448
>>302437

>Как сделать функцию которая принимает массив и возвращает тоже массив?


>vector

280 1302514
Ебать тут терпеливые аноны, я охуеваю как они с такой трезвостью на такие вопросы отвечают
мимо-вкатился пол год назад
281 1302553
>>302514
Плюсы -- язык, способствующий к спокойствию, умиротворению и полному безразличию к жизни.
282 1302650
>>302553
Это все undefined behaviour.
284 1302756
>>302514
Старые просто
285 1302785
>>302445
Переполнения буффера попробуй. Разберешся как работает память, поймешь и указатели, и битовые операции, и заодно поймешь, что С строки не нужны.
1543104271220.png40 Кб, 430x241
286 1302867
287 1302882
>>302785

>Переполнения буффера попробуй.


о, да
с сегодняшними механизмами защиты что стоят в операционках по умолчанию, заебешся воспроизводить типовой пример из какого-нибудь учебника по безопасность 15ти летней давности
тот еще челлендж
288 1303259
Народ, подскажите, как сделать из Boost.Bimap два вектора?
Не могу найти, писец у буста документация говно.
289 1303346
Господа. подскажите, пожалуйста, какие условия необходимо соблюсти, чтобы класс был zero cost abstraction?
290 1303352
class A {
int a;
};

class B : public A {
int b;
};

int main() {
B b(8,9);
std::vector<A> v;
v.push_back(b); // crash
}

che delat
291 1303358
>>303352
a ne, sore vse norm rabotaet, eto ya dolboeb
292 1303362
>>303346
Что сказать-то хотел? Чтобы класс был без vtable, чтобы тривиально создавался/перемещался, чтобы был POD?
sage 293 1303370
>>303346
Блюди субботу.
image.png88 Кб, 1313x790
294 1303387

>Вопросы по синтаксису идут на хуй


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

Вот что-то типа такого. Можно не отвечать (хотя я бы не отказался от некоторого внесения ясности), просто для примера.
Простейший класс, у него перегружено присваивания для int. Четыре варианта. Что я тут написал и какой вообще смысл у каждого, лол?
1. Вызывается пустой конструктор, потом операция присваивания, деструктор. this - указатель на реальную переменную a, всё это аналогично обычному вызову метода. return this нужен, только если я хочу написать конструкцию вида b=a=17. Верно?
2. Тут уже не слишком понятно, вызывается конструктор, оператор присваивания, и уже после него на строчке с return вылезает конструктор копирования для временного объекта и тут же деструктор для него. Походу, это итоговое значение выражения "a=17", которое просто генерируется и тут же исчезает? Зачем это нужно, если есть вариант с ссылкой? Кормить функцию, которая необратимо повреждает экземпляр класса, и потому нужно подобную копию?
3. ... Если у меня два вектора и я хочу реализовать сложение, мне приходится подобным образом создавать временный объект b и в конце функции его возвращать.
Почему тут не вызывается оператор копирования/переноса, как это вообще работает? b внутри функции просто априори совпадает с y, то есть return и b вижу только я - для программы его как будто не существует. Если я правильно это понимаю, должна выделится на стеке память под a и y, и ещё во время вызова функции/перегруженного оператора должна на том же стеке выделится память под b, которая в конце функции перемещается в y, после чего стек освобождается. Тем не менее, этого не происходит, этой b как будто просто нет, заместо неё сразу стоит y, для которой используется обычный конструктор по умолчанию и после применяется перегруженный оператор как метод.
А если возвращать значение по ссылке, то ide выдаёт предупреждение, что тут возникает ссылка на объект на стеке, что вызовет (и вызывает) падение программы.
4. Тут всё ясно, кажется.
-44 и +4 — указатели на a и второй экземпляр.
image.png88 Кб, 1313x790
294 1303387

>Вопросы по синтаксису идут на хуй


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

Вот что-то типа такого. Можно не отвечать (хотя я бы не отказался от некоторого внесения ясности), просто для примера.
Простейший класс, у него перегружено присваивания для int. Четыре варианта. Что я тут написал и какой вообще смысл у каждого, лол?
1. Вызывается пустой конструктор, потом операция присваивания, деструктор. this - указатель на реальную переменную a, всё это аналогично обычному вызову метода. return this нужен, только если я хочу написать конструкцию вида b=a=17. Верно?
2. Тут уже не слишком понятно, вызывается конструктор, оператор присваивания, и уже после него на строчке с return вылезает конструктор копирования для временного объекта и тут же деструктор для него. Походу, это итоговое значение выражения "a=17", которое просто генерируется и тут же исчезает? Зачем это нужно, если есть вариант с ссылкой? Кормить функцию, которая необратимо повреждает экземпляр класса, и потому нужно подобную копию?
3. ... Если у меня два вектора и я хочу реализовать сложение, мне приходится подобным образом создавать временный объект b и в конце функции его возвращать.
Почему тут не вызывается оператор копирования/переноса, как это вообще работает? b внутри функции просто априори совпадает с y, то есть return и b вижу только я - для программы его как будто не существует. Если я правильно это понимаю, должна выделится на стеке память под a и y, и ещё во время вызова функции/перегруженного оператора должна на том же стеке выделится память под b, которая в конце функции перемещается в y, после чего стек освобождается. Тем не менее, этого не происходит, этой b как будто просто нет, заместо неё сразу стоит y, для которой используется обычный конструктор по умолчанию и после применяется перегруженный оператор как метод.
А если возвращать значение по ссылке, то ide выдаёт предупреждение, что тут возникает ссылка на объект на стеке, что вызовет (и вызывает) падение программы.
4. Тут всё ясно, кажется.
-44 и +4 — указатели на a и второй экземпляр.
295 1303422
>>302697
Нахуя графика нужна? Она все равно нормально нигде работать не будет, и не будет совместима ни с одним фреймворком.
296 1303425
>>303387

>1. Верно?


Да

>2. Зачем это нужно


Не нужно

>3.


Похоже тебя посетил RVO, это к удаче и богатству, попробуй скомпилировать без оптимизаций. Хотя наверно ты так и делаешь, а конпеляторы нынче дохуя умные.
297 1303453
>>303362
Например. Есть две группы методов, работающие с double, но в этих методах эти double означают разные вещи и хочется, чтобы это было понятно из типов, и компилятор не позволил бы смешать их в одном выражении.

Одно из решений - сделать класс-обёртку, но так, чтобы в рантайме не создавались никакие объекты, и везде были чистые double.
298 1303462
>>303453
Ты не boost units изобретаешь случайно?

Вообще это гуглится по "c++ strong typedef".

https://stackoverflow.com/questions/34287842/c-strongly-typed-using-and-typedef
https://www.fluentcpp.com/2017/05/05/news-strong-types-are-free/
299 1303487
>>303462

>Ты не boost units изобретаешь случайно?


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

>Вообще это гуглится по "c++ strong typedef".


Спасибо.
300 1303552
Блед, есть одна либа... И она кроссплатформенна.
Недавно к ней запилили х64 поддержку добавив х64 либы оракла. Но это чудо работает лишь под винду, х86 линукс и бсд.
В чем могут быть косяки? Я хуй знает. Ошибки имеются в плане char, как я понял, как эту хуйню пофиксить? Статический анализатор говорит мне лишь о data loss в интах. Но там и не подаются значения больше обычного инта.
301 1303589
>>303425

>попробуй скомпилировать без оптимизаций


Так и делал. Я нашёл - если компилировать return (b), заместо return b, то move-конструктор на месте. Что любопытно, даже -O3 не оптимизирует эту глупую скобочку, всё-равно вызывается дополнительный конструктор.
302 1303596
>>303589

>Я нашёл - если компилировать return (b), заместо return b, то move-конструктор на месте


Пиши багрепорт, лол. Это пиздец, коли так
303 1303702
>>303552
очевидно же что проблему могут решить люди более высокой квалификации чем ты, сладенький
304 1303797
Что делать после прочтения Шилда ?
305 1303803
>>303596
>>303589
Тут не баг скорее всего.
Помню в одной статье какой-то приводился пример уже не помню про что именно, что если написать return (a) и return a
то это будет как бы два разных действия.
306 1303805
>>303797
ничего
ты уже зашкварился прочтением самой хуевой книги о крестах и потерян для индустрии
307 1303816
>>303805
Почему она плохая ?
308 1303836
>>303425

>а конпеляторы нынче дохуя умные


Компиляторы теперь обязаны делать copy elision
309 1303840
Народ, в общем, есть задача, нужно создать класс, который принимает пакет данных блоками со скоростью 500 Mbit/s, средняя длина блока - 1024 байта. Нужно записать в файл весь присланный пакет. Не очень пока понимаю, как лучше сделать. Просто записывать в память каждый блок и в конце сумму этих блоков скинуть в файл, или не все так просто? Надо ли здесь где-то применять многопоточность?
310 1303848
>>303840
надеюсь ты студентик еще, ну учишься, в общем..
311 1303850
>>303848
так подскажи, бать, как сделать то?
312 1303852
>>303816
вопросы "почему" уже задавать поздно..
313 1303853
>>303850
ты студентик?
314 1303856
>>303853
нет, я Ленин
315 1303864
Аноны, пытаюсь разобраться с обратной польской записью везде пишут что это должны все знать с рождения, нашёл вот неплохой пример http://www.cplusplus.com/forum/beginner/119724/
Но поскольку мне важны именно приоритеты, я не могу понять где именно они назначаются. И почему в данном коде нет операций со скобками, хотя в теории пишут также что в итоговом выражении скобок быть не должно? Может кто выделить часть где там назначаются приоритеты операциям?
316 1303877
>>303840
Говорю наобум, как бы сам сделал.
Два треда. Первый принимает данные, записывает в буфер (размер - N страниц памяти, попрофилируй, как лучше). По заполнению ставит в очередь второму потоку (и дёргает кондвар какой-нибудь). Второй поток только и делает, что берёт буфер из очереди и записывает в файл (а если данных нет, крутится или спит на кондваре).
Оптимизации:
1) Пул буферов (то есть первый поток берёт оттуда свободные буферы, а второй отдаёт туда использованные).
2) Лок-фри очереди
3) Попробовать использовать OVERLAPPED/AIO вместо того, чтобы городить два треда. Но я с ними почти не работал и не знаю их оверхед.
Но ~65 мегабайт/с это приличная скорость, как бы у тебя писатель не был перегружен.
317 1303898
>>303877
Спасибо большое, попробую что-нить сделать. В какой сфере работаешь и сколько лет опыта, если не секрет?
318 1303902
>>303840
Задача про бассейн и две трубы из школы. Что мы имеем. Быстрый процессор, 500 мегабит в бассейн вливается, остается выяснить, с какой скоростью выливается. Если у тебя SSD, выливаться будет очень быстро. Поэтому просто берешь и делаешь и сохраняешь данные в файл стандартным ofstream'ом. Даже в память можешь не складывать. И асинхронности никакой не нужно.
Если же у тебя HDD и выливается не так быстро, то имеет смысл от mmap'ить файл и скидывать данные прямо туда. Получится многопоточное решение, где один поток это твоя прога, а второй - ядро ОС.
На крайняк буфер и два потока, один пишет, другой читает. Собственно, если у тебя данные с какого-то прибора, не сети, свой буфер понадрбится.

>>303877 - ебанутый оверинжинер и преждевремянный семяизвержитель оптимизатор. Всем KISS
319 1303909
>>303852
Ты сказал ? Шилдт известный автор книг по программированию
320 1303915
>>303797
Теперь читай SICP
321 1303920
Посоны, посоны, а как в структуру записать кучу всякого говна из файла?
А потом получить доступ?
322 1303926
>>303920
Тебе именно в структуру записать, или считать структуру? Впрочем метод всё равно один будет .read((char *) &(хуйню в которую читаешь),&(размер хуйни в байтах)). Таким же способом можно считать и целую структуру в заранее созданный обьект. Про доступ не понял, у структуры все члены открытые по умолчанию.
323 1303931
>>303926
Ой, блэд, хуйню написал. Тупой щито поделать.
Надо считать структуру, а потом как нибудь пользоваться данными из неё.
Чары отдельно, инты отдельно. И пользоваться данными их них
324 1303933
>>303902

>>>1303877 - ебанутый оверинжинер


Уж расписал по полной. Я думал, что он самый простой вариант уже проверил и не сработало. А про mmap я и не подумал как-то. Самый лучший вариант будет, возможно.
325 1303934
>>303931
Нихуя не понял опять. Берешь и считываешь целую структуру, в чём проблема? Скажем структура struct MyStruct. Создаешь обьект MyStruct first. Создаешь обьект офстрима и считываешь как я выше написал. Можно считать целую структуру, проблем нет
326 1303938
>>303934
Ладно, пойду перечитаю лекцию. Я первокур который хуйнёй страдал на лекциях.
А надо делать индивидуальное задание. И хоть его через месяц сдавать, но жопа то подгорает от непонятности.
327 1303940
>>303920
Реализуешь operator<< и operator>> примерно таким образом https://thispointer.com/c-how-to-read-or-write-objects-in-file-serializing-deserializing-objects/

friend std::ostream & operator << (std::ostream &out, const Student & obj)
{
out << obj.mId << "\n" <<obj.mName<<"\n"<<obj.mPhoneNumber<<std::endl;
return out;
}

Дальше просто открываешь файл через ifstream и читаешь ,через ofstream пишешь с помощью file << yoba;

Если нужно бинарно сохранять, то как-то так

std::ostream& operator<<(std::ostream& out, const MyClass& obj) {
out.write(reinterpret_cast<const char*>(&obj.field1),
sizeof(obj.field1)); // or something better defined
// ...
return out;
}

Самый кайф в таком подходе, что он может даже в рекурсию
328 1304063
>>303938
Тебе там анон выше неплохую вещь советует.

Бтв чего непонятного? Структура в памяти хранит свои поля последовательно, в файле байты лежат в таком же порядке.
Пример: в .jpeg-файле сначала идёт хедер байта определенной длины. Просто байты. Ты считываешь их в нужную структуру и получается, что эти байты кладутся на твою структуру и ты теперь можешь обращаться к полям структуры. Так же с хедером изображения и самими данными изображения. Я вообще считывал весь _двумерный_ массив пикселей в char[height*(width+offset)] и с ним работал.
Как раз потому что все просто лежит последовательно.

Или вот так: представь себе слепого. Он умеет держать в правой руке члены, а в левой - анальные пробки с хвостами и прекрасно знает, какие они на ощупь и потому ругается, если ему их дают наоборот.
А рядом два ящика - один с членами, а второй с пробками. Этот несчастный слепец опускает руки в ящики и достает оттуда предметы. И, так как в правой руке у него только члены, а в левой только пробки, то они идеально сидят у него в руке. И теперь ты можешь у него спросить, какой длины член в правой руке и насколько пушистый хвост в левой.
Вот руки его - структура, а ящики - файл. Так понятно?
Ну и, если предметы в ящиках перепутаются, то он по-прежнему будет их считать правильными, но отзыв о них тебе даст уже ложный. Это уже если ты не знаешь о том, в каком порядке у тебя лежат байты в файле.
329 1304068
>>304063
Хедер файла определенной длины*
быстрофикс

С jpeg сложнее должно быть, подробнее про .bmp:
То есть там сначала структура bitmapfileheader, структура bitmapinfoheader, а потом куча структур rbgtriple.
У каждой из них поля a, b, c, d и т.д.(чесслово, не помню наизусть) определенной длины в байтах - значит, в файле будут лежать длина_в_байтах(a) байт, длина_в_байтах(b) байт, длина_в_байтах(c) байт и т.д.
При объявлении переменной типа нужной тебе структуры, ты выделяешь память, равную сумме длине полей этой структуры с разделителями в порядке объявления. И просто байты из файла накладываются на неё.

Пускай более умный/шарящий анон меня поправит, если я где не совсем прав.
330 1304070
>>304068
Разделители - очень образно, их на самом деле в памяти нет.
Да и программа не знает, что там и в каком порядке.
Считала 20 байт из файла - положила их в структуру длиной 20 байт.
И пускай структура вроде
struct myStruct{
int i,
int j,
int k,
int l
}.
И тогда, если ты не проебался и читаешь с нужного места, подряд идущие 1234 в твоём файле считаются побайтово и запишутся последовательно в структуру - i == 1, j == 2, k == 3, l == 4.
331 1304071
>>304070
Да блядь, ну хули я такой невнимательный.
Там на одно интовое поле больше должно быть, чтобы все было правильно при 20 байтах.
332 1304091
Функция имеет один и тот же код для аргумента типа type& и type&& (просто транслирует в другую функцию с куда большим количеством аргументов, где для разных ссылок разный код) - как записать её один шаблон/конструкцию?
 .png547 Кб, 443x627
333 1304104
>>304091
В этой книжке смотри
334 1304106
>>304091
Гугли универсальные ссылки, либо из шапки возьми эффективное программирование Скотт Мейерс 2014г если не ошибся, глава 5 практически полностью про это.
1541463388947.jpg610 Кб, 2448x3264
335 1304107
>>299653
Да, я не смог в эмбед логику, минус проект минус жизнь(минус мотивация за неделю)
Как смочь в логику простую? особо тяжело даются ответвления(отработки исключений всякие логические) в коде, умл не осилил хотя думал что поможет разобраться
пикрандом
image.png58 Кб, 1400x693
336 1304119
>>304106>>304104
Благодарю, я почитаю, прям то что надо.

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

Там прям глава была:

>Избеrайте переrрузок дnя универсаnьных ссыnок


Теперь даже не знаю как лучше, лол. В реальном коде выглядит ещё хуже. Может быть я не привык просто, но нужен какой-то более вразумительный синтаксис для ограничения типов шаблонов, мне кажется.
И не совсем понятно зачем смешали синтаксис для универсальной и rvalue ссылки - не вижу никакой логики. Сделали бы что-то отдельное вроде T# или T@ - можно было бы применять в функциях без всяких угрёбищных шаблонов, смысл интуитивно понятен, да и компиляторам проще разбирать код.
337 1304187
>>304068

>более умный/шарящий анон меня поправит


выравнивание структур
паковать их надо в данном случае
338 1304208
>>304119
Там в конце 5 главы рассказывается как избежать этого. Тебе нужно перегрузить один шаблон чтобы он был универсальным, а внутри самой функции распределять нужные тебе операции с помощью std::forward. Диспетчеризация дескрипторов, вроде так называлось
339 1304222
>>304187
Не надо надеяться на язык в данном случае. Пишешь вручную сериализатор и десериализатор и горя не знаешь.
340 1304232
Внутри класса есть строка
std::getline(std::cin, title);
Но она срабатывает только для первого объекта, а для остальных пропускается. Почему?
341 1304233
>>304232
Полный код кинь, я ебу что такое тайтл и какие у тебя объекты
343 1304512
>>298240
Ты объебался с русским языком. "Необходимо равны" означает не "обязательно равны", а "настолько равны, что на разницу между ними можно забить".

По поводу примера: рабочий точит деталь с допуском +/-128 мм. На чертеже деталь имеет некий размер 1000 мм. Рабочий один раз выточил 951 мм, а второй раз 1050 мм. Ну и похуй, потому что в допуск он уложился. Результаты 951 мм и 1050 мм необходимо равны при заданном e = 128 мм.

Фихтенгольц конфетка, он объясняет для полных даунов, ты просто немного перемудрил, со всеми бывает. Сам сдавал по нему всякое дерьмо, готовясь за часы до экзамена.
344 1304521
>>304512

>Ты объебался с русским языком


Ты тоже

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


Нет. Это близко к выражению "необходимо и достаточно"
Если из A => B (и А следует B), то B необходимо, чтобы было A, а A достаточно, чтобы было B.

"то а и б необходимо равны" на современный русский язык переводится как "то следовательно, а и б равны". В твоем примере из

>Результаты 951 мм и 1050 мм необходимо равны при заданном e = 128 мм.


получается "мы задали e=128, следовательно 951=1050", что есть бред. 951 и 1050 не равны, потому что можно задать e=10
345 1304558
>>304521
Мимопроходил

> B необходимо, чтобы было A, а A достаточно, чтобы было B


Наоборот же. Для A необходимо, чтобы было B. Ведь без B нет A. Для B достаточно, чтобы было A. Но не необходимо, ведь кроме А могут быть другие предпосылки. Посуди.
C => B, C |= C,B,
но
С => B, C |\= A
Подумай ещё раз.

И вообще в таком контексте "необходимость" напоминает скорее "необходимость/случайность - necessity/contingency" из модальной логики, чем "необходимость/достаточность - necessity/sufficiency". То есть НЕОБХОДИМО, чтобы они были равны - не существует такого варианта событий, при котором они не равны.
346 1304566
>>304558

>Для A необходимо, чтобы было B


Я так и написал. Обрати внимание, что у меня нет "для", а просто "B необходимо, чтобы было A". Просто тебе падеж не очевиден. Если В - это Вася, то я сказал "Вася необходим, чтобы было А". А не "Васе необходимо, чтобы было A", как ты подумал.

>И вообще в таком контексте "необходимость" напоминает скорее "необходимость/случайность - necessity/contingency" из модальной логики, чем "необходимость/достаточность - necessity/sufficiency". То есть НЕОБХОДИМО, чтобы они были равны - не существует такого варианта событий, при котором они не равны.


Он-то написал '"Необходимо равны" означает не "обязательно равны", а "настолько равны, что на разницу между ними можно забить"', что прямо противоположно "не существует такого варианта событий, при котором они не равны".
347 1304578
>>304521

> получается "мы задали e=128, следовательно 951=1050", что есть бред. 951 и 1050 не равны, потому что можно задать e=10


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

Для е = 128 имеем условную равность 951 и 1050.
Для твоего е = 10 уже условно равны 951 и 960.
И именно в этом смысл того, что написано на пикче, которую ты приклеил к своему посту. только почему автор решил именно так это описать - хуй знает
Для любого студентика, который осилил хоть немного походить на пары матанализа, знакома такая хуйня: lim (an) = A - значит, что начиная с какого N для всех n > N выполняется условие |а - A| < e, где е - эпсилон - больше нуля.
И для нормального человека ясно, что "больше нуля" == невероятно мало, но не ноль.
А потом, когда узнаешь о вычислительных методах, поймёшь, что это е - это точность вычисления.
И для заданной точности е==128 и е==10 равными будут разные числа, сечешь?
348 1304584
>>304578
Хотя, видимо, вы настолько проблемные в своем пту колледже, что вас к понятию предела готовят такой леммой.
349 1304589
>>304578
Лол, ты ведь тот пидорок, у которого REST не REST
350 1304606
>>303915
То есть в Кнута вкатываться ?
351 1304612
>>304589
подотрись, ты обосрался
Нет, я не тот анон
352 1304649
>>304589
Лол я тоже сначала так подумол, но этот всё правильно расписал.
353 1304659
>>304612
Стиль жопочтения очень похож. Выдумал "условное равенство", которого в лемме нет, подумал, что эпсилон в матане - это машинный эпсилон, плюс подростковый уровень речи на оскорблениях, который ставит в ситуацию, когда не просто школьник чего-то в матане недопонял, а школьник общается типа на равных.
354 1304671
Двощ, нужно сделать кубический корень отрицательного параметра в С++ Билдере 2010. Проблема в том, что там нет функции cbrt, так как судя по гуглу ее запилили в 11 году, а pow не работает с отрицательными значениями. Что делать? Бочку?
Лаба.
355 1304681
>>304671
pow или exp не подвезли?
356 1304683
>>304681
А, блин, не дочитал.

>pow не работает с отрицательными значениями


И? Раз лаба, значит первый курс. Раз первый курс, значит матан. Вспоминай, какая симметрия у кубического корня.
357 1304688
>>304671
Вычисляй по абсолютному значению, к результату прилепляй знак исходного, очевидно же.
358 1304689
Долбаеб с обратной польской записью снова в треде я и не уходил впрочем. Прошу помощи в составление алгоритма, костыли я сам напишу. Я преобразовал выражение вида A&B&C в
AB&C& по алгоритму обратной польской записи. Как можно разбить это выражение на части согласно приоритету? Пытаюсь вывести поэтапное решение вида A&B и A&B&C ну или &C . В данном примере если разбивать с помощью стека, как если бы мы выполняли вычисления, всё работает. Но на более сложных как, например AB&C+D/* я не могу придумать алгоритм. Может кто помочь с этой хуйней? Уже второй день голову ломаю, и в итоге ничего не придумал.
359 1304693
>>304689
Ты имеешь ввиду преобразование в инфиксную запись? Или что?
360 1304695
>>304693
Да, в инете ее обратной польской называют в основном.
361 1304708
>>303940
>>304063
Долбоёб первокур снова на связи.

Братаны, спасиба :3
Правда я не так сделал, а как долбоёб в квадрате, но всё же заебись. (Препод требует чтобы в плюсах мы писали как в си)

file = freopen("rooms.txt", "r", stdin);
struct Komnata
{
int ID;
char ros[8];
int chel;
int cost;
};
int i = 1;
struct Komnata nomer[1000];
while (col>i)
{
scanf("%d %s %d %d", &nomer.ID, &nomer.ros, &nomer.chel, &nomer.cost);
i++;
}
А как прочитать файл так что-то можно было использовать команды?
Вот у меня файл и нужно использовать вот эти адд, гет, и их подкоманды, инком, клиент. Начальная цифирька — количество строк. Я её прочитаю без проблем, а остальное?

7
ADD CLIENT SERVICE = ECONOMY BEGIN_DATE = 11.07.2020 END_DATE = 28.09.2020
GET INCOME BEGIN_DATE = 15.07.2020 END_DATE = 28.07.2020
GET QUEUE ID = 170 DATE = 27.12.2020
ADD CLIENT SERVICE = COMFORT BEGIN_DATE = 03.04.2020 END_DATE = 05.06.2020
ADD CLIENT SERVICE = STANDART BEGIN_DATE = 22.09.2020 END_DATE = 17.11.2020
GET QUEUE ID = 246 DATE = 27.12.2020
GET ROOM ID = 567

Как считать их куда нибудь отдельно, чтобы потом брать и использовать? Команду адд клиент туда, тип комнаты эконом туда, даты туда?
Причём команды по количеству символов разные, хуй поймёшь, короче.
Вот про такое на лекциях вообще помоему не говорили даже как реализовывать потом эти команды. Типо на свитчах и ифах всё это строить? Или как-нибудь в подпрограммы кидать?
361 1304708
>>303940
>>304063
Долбоёб первокур снова на связи.

Братаны, спасиба :3
Правда я не так сделал, а как долбоёб в квадрате, но всё же заебись. (Препод требует чтобы в плюсах мы писали как в си)

file = freopen("rooms.txt", "r", stdin);
struct Komnata
{
int ID;
char ros[8];
int chel;
int cost;
};
int i = 1;
struct Komnata nomer[1000];
while (col>i)
{
scanf("%d %s %d %d", &nomer.ID, &nomer.ros, &nomer.chel, &nomer.cost);
i++;
}
А как прочитать файл так что-то можно было использовать команды?
Вот у меня файл и нужно использовать вот эти адд, гет, и их подкоманды, инком, клиент. Начальная цифирька — количество строк. Я её прочитаю без проблем, а остальное?

7
ADD CLIENT SERVICE = ECONOMY BEGIN_DATE = 11.07.2020 END_DATE = 28.09.2020
GET INCOME BEGIN_DATE = 15.07.2020 END_DATE = 28.07.2020
GET QUEUE ID = 170 DATE = 27.12.2020
ADD CLIENT SERVICE = COMFORT BEGIN_DATE = 03.04.2020 END_DATE = 05.06.2020
ADD CLIENT SERVICE = STANDART BEGIN_DATE = 22.09.2020 END_DATE = 17.11.2020
GET QUEUE ID = 246 DATE = 27.12.2020
GET ROOM ID = 567

Как считать их куда нибудь отдельно, чтобы потом брать и использовать? Команду адд клиент туда, тип комнаты эконом туда, даты туда?
Причём команды по количеству символов разные, хуй поймёшь, короче.
Вот про такое на лекциях вообще помоему не говорили даже как реализовывать потом эти команды. Типо на свитчах и ифах всё это строить? Или как-нибудь в подпрограммы кидать?
362 1304710
Ой, табы отобразились.
363 1304711
>>304710
Просили же не копировать код в посты. Залей на какой-нибудь онлайн компилятор и ссылку кидай
364 1304716
>>304711
Да в принципе я только похвастаться принёс.
И он работает только в визуалке.

https://ideone.com/VAO2Ld

Как прочитать файл с командами так чтобы возможно было понять где команды и потихонечку их выполнять?
365 1304717
>>304695

>инфиксную


>обратной польской


Сначала разберись в этом вопросе, а потом снова приходи, если что-то останется непонятным.
366 1304725
>>304689
Гугли алгоритм сортировочной станции
367 1304726
>>304708
Я примерно понял.
Другой вопрос? А можно ли сравнить строки?
368 1304729
>>304689
У обратной польской нотации нет приоритетов, в этом её суть. Но приоритеты есть у инфиксной, и суть алгоритма >>304725 в том, чтобы преобразовать инфиксную нотацию с приоритетами в RPN.
369 1304730
>>304063

>Структура в памяти хранит свои поля последовательно


В памяти компилятор может добавлять пэддинг для повышения эффективности. Структура типа {char; int; char;} на современном сферическом компиляторе в вакууме с большой вероятностью будет выдавать сайзоф 12. Так-то бинарный вид в стандарте на кресты вообще не оговаривается.
>>304708
Тебе надо написать парсер для твоего мини dsl. Читаешь построчно команды, далее по токенам, со свичами и подпрограммами.
370 1304732
>>304726
Если строки сишные, то strcmp. Если плюсовые, то ==. Почитай K&R на досуге
371 1304745
>>304732
Лучше почитаю. Я так охуею тыкаться в стены.
Если чо, выполню задание за 6 баллов вместо 12 баллов и похуй. Всё равно за кодинг стайл и структуру программы нашкребу что-нибудь.
372 1304746
>>304730
Да, там анон другой уже написал, что я не совсем точно описал.
Я потом вспомнил, что когда я пытался сам определить структуру для считывания хедера изображения(чтобы не подключать windows.h), то проебался именно в этом моменте с выравниванием и размером структуры, где-то это можно было отключить, естественно, где именно - не помню.
image.png18 Кб, 511x263
373 1304748
>>304725
>>304729

>Алгоритм сортировочной станции — способ разбора математических выражений, представленных в инфиксной нотации.


Это я уже написал. Всё работает корректно, но мне нужно вывести этапы которые производит алгоритм. Вот скажем пик. Далее программа вычисляет значение поэтапно, в приоритете который я задал. И мне бы хотелось вывести эти этапы. Скажем выполнило AB& - вывод A&B, далее ~D и в конце (A&B)|C&~D. Вот тут то, чего я хочу добиться https://math.semestr.ru/inf/table.php.
374 1304755
>>304683

> Вспоминай, какая симметрия у кубического корня


Степень 1/3. Функция pow, которая возводит в степень, не работает с отрицательными значениями.
Попробовал exp, но оно дает пикрил3, если вот это >>304688, то обрезает дробную часть.
image.png45 Кб, 988x859
375 1304759
>>304755
Предыдущие посты не читал, тебе это надо?
376 1304763
>>304759
Оно самое, спасибо.
377 1304764
А часть массива в си можно брать?
char str[10] = "Hui pizda"
char str [0-2] = ?
Hui?
378 1304765
>>304764
Часть строки точнее.
379 1304766
>>304764
Если тебе нужно разбить то char * k = strtok(str," ");
Иначе не понял посыла.
image.png167 Кб, 322x469
380 1304770
>>304766
Да хоцца разбить, но чтобы строка разбилась на все слова и слова улетели в массив или ещё куда нибудь.
381 1304774
>>304770
Ты хочешь разбить массив строк и записать его в другой массив? Ты ебанутый чтоль. Если твои слова разделены пробелами то strtok всё еще подходит, загугли как это правильно сделать и всё.
382 1304797
>>304774
А чо будет если использовать стрток? Строка разобьётся на массив строк?
383 1304799
>>304797
Ты должен будешь каждой строке присвоить часть твоей изначальной строки. Иначе результат уйдет в никуда. Если хочешь чтобы они ушли в массив строк - создавай массив строк, и каждому элементу присваивай часть изначальной
videoplayback.webm824 Кб, webm,
640x360, 0:09
384 1304803
>>304799
Так ладно. Пойду гуглить. Хотя гугл кормит говном...
385 1304811
>>304764
Что значит брать?
char str[] = "Hui pizda";
char str2[2];
strncpy (&str2[0], &str[0], 2 );
Как-то так. Слайсов в С нет.
386 1304847
>>304803
Фу ебать.
С виду няшечшка хуйняшечка, а стоит только звук включить - обычная руснявая пизда.
в первый раз вижу её стрим
387 1305051
>>304521
Хватит мешать матлогику с матанализом. Причем тут необходимо и достаточно?

Ну для e = 128 951 будет необходимо равно 1050-и. Для другого e не равно. Как на большинстве современных машин существует 1e-9 (или уже не современных, лол) в качестве такого эпсилона, так на машинах будущего машинный эпсилон для плавающей точки уменьшится, и бывшие необходимо равными величины уже не будут таковыми.
На мой взгляд ты не понимаешь, зачем нужно понятие необходимо равных величин и пытаешься подменить его понятием равных.
388 1305054
>>304521
Ну тебе в принципе уже всё расписали, так что вот этот псто >>305051 я наваял зря, забей. И всё же я охуел с того как ты из понятия необходимо равных перепрыгиваешь в "необходимо и достаточно" и начинаешь сыпать A => B => C => Sky => Allah, это просто пизда.
1428558658521718796.jpg24 Кб, 500x281
389 1305245
Аноний, подкинь литературу по многопоточному программированию. Что такое потоки с чем их едят. Мъютексы хуютексы...
390 1305251
>>305051

>Причем тут необходимо и достаточно?


При том, что Фихтенгольц написан языком 19 века и я попытался объяснить тупым школьникам, что значит слово "необходимо". Он ее использует всегда, когда что-то из чего-то следует. В современных формулировках ее не используют.
Попытка не удалась, потому что школьники оказались слишком тупыми и не способны осилить лемму.

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


Шизик, у Фихтенгольца нет никакого понятия необходимо равных величин. 128 не равно 951, потому что не для любого эпсилон больше 0 существует интервал размером меньше e, в который попадают оба числа. Прочитай лемму раз сто, может дойдет.
391 1305264
>>305245
можешь начать с Энтони Уильямс - Параллельное программирование на C++ в действии
хотел ее в шапку добавить
392 1305325
Как сделать указатель на метод класса ?
Есть пик:
void(List::add_e)(int) = &List::Add_element;
void(List::
show_e)(int) = &List::Show;
прототипы:
void Show(int A)
void Add_element(int new_element)

Что-то не то получается, add_e/show_e у меня не определяются как указатели.
393 1305341
>>305325
[code]
class Yoba {
public:
Distance fly(Perdole perdole);
};

using YobaFunc = Distance (Yoba::*) (Perdole);
[/code]
394 1305403
>>305325
auto add_e = &List::Add_element;
395 1305404
>>305264
Уильямса надо брать если задаёшься целью нихрена не понять.
396 1305407
>>304512

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


Шизик? https://ru.wikipedia.org/wiki/Необходимое_и_достаточное_условия
397 1305408
>>305251

>Фихтенгольц написан языком 19 века


В 21 веке логика стала немодна и "необхоидимо" не употребляется?
398 1305415
Страуструпы, что думаете по этим урокам?
https://ravesli.com/uroki-cpp/
399 1305434
>>305408
Как у него нет
image.png41 Кб, 1475x201
400 1305435
>>305434
А так?
Screenshot122.png6 Кб, 328x175
401 1305444
>>305403
>>305341
Как к нему обратиться ?

Пытаюсь как к обычному указателю на функцию, но пишет, что выражение перед скобками должно иметь тип поинтер-ту.
402 1305445
>>305444
a.*a_e(19)
403 1305446
>>305445
Та же ошибка. а - это имя объекта класса List
404 1305449
>>305051

>понятие необходимо равных величин


Враки, нет такого и не нужно оно.

Для того чтобы уместить джва числа a и b в сколь угодно малый промежуток, необходимо чтобы a и b были равны.
Вот о чем эта лемма, вот в каком смысле Ф. использует слово "необходимо".
405 1305453
>>305446
Забыл скобки
(a.*a_e)(19)
image.png26 Кб, 484x365
406 1305463
>>305444
Вот gcc такую дичь компилирует, только вчера тестил. Сверху возможные замены через using или typedef, чтоб каждый раз не таскать скобочки.
kra - класс, type - аргумент шаблона (или как оно там называется).

В функцию можно передавать и как "<имя класса>::<имя метода>", так и как "<экземпляр класса>.<имя метода>". Без всяких & и *
407 1305488
>>305463
В C++17 завезли std::invoke
image.png70 Кб, 600x274
408 1305490
>>295983 (OP)
помогите мне пожалуйста разобраться с OpenCV и CUDA. Я хочу прочитать видео с помощью класса cudacovec из opencv. я использую метод cv::cudacodec::createVideoReader(fname), но после этого вылетает вот эта ошибка.

>OpenCV(3.4.1-dev) Error: The function/feature is not implemented (The called functionality is disabled for current build or platform) in throw_no_cuda, file /home/nvidia/devel/opencv/opencv/modules/core/include/opencv2/core/private.cuda.hpp, line 111


terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(3.4.1-dev) /home/nvidia/devel/opencv/opencv/modules/core/include/opencv2/core/private.cuda.hpp:111: error: (-213) The called functionality is disabled for current build or platform in function throw_no_cuda
То есть, в моей версии CUDA, 9.2 вообще нет этой функции? Я пытался поискать другие способы прочитать видео, но не смог разобраться что именно делать. На форуме nvidia
https://devtalk.nvidia.com/default/topic/1043750/?comment=5295044
в теме с той же проблемой что и у меня пишут, что надо установить библиотеку nvcuvid, мне её отдельно нужно установить? И как мне её подключать в проект, с помощью заголовочного файла, или в .pro файле что-то прописать? И какой всё-таки метод использовать для создания video reader?
409 1305501
>>305490
Тебе нужно пересобрать opencv с поддержкой cuda по инструкции типа https://github.com/BVLC/caffe/wiki/OpenCV-3.3-Installation-Guide-on-Ubuntu-16.04
410 1305510
>>305501
я установил OpenCV с поддержкой CUDA, то есть класс например GpuMat у меня есть. Моя проблема в создании video reader с CUDA и отсутствующей функцией.
411 1305549
Есть у кого-то код односвязного списка со вставкой и удалением в итую позицию ?
412 1305560
>>303259
Бумп
413 1305595
>>305549
У тебя в stl лежит
414 1305596
>>305404
чё?
в той книжке даются минимальные знания о том как писать многопоточку, если то о чем там написано считают сложным, то лучше и не пытайся ее делать
415 1305613
>>305245

>Аноний, подкинь литературу по многопоточному программированию. Что такое потоки с чем их едят. Мъютексы хуютексы...



https://actor-framework.readthedocs.io/en/latest/Introduction.html
416 1305632
>>305245
Посмотри как в Эрланге сделано и сделай так же на си.
417 1305658
есть ли смысол ебатся с с++ если можно выучить node js, py, php и вкатится в веб и зарабатывать over 9000к/сек при тех же стараниях

мимо абитуриент кун
418 1305661
>>305658

>абитуриент


>зарабатывать



Айтишники капусту рубят, пойду учиться на погромиста!111

Какой же ты даун.
419 1305664
>>305658
Ну меня, например, тошнит от веба, а всякие числодробительные и компьютервижн проекты радуют.
А так у С++ стараний больше, а денег меньше, потому что рыночек. Но С++ гигантский плюс для поиска удаленной работы на западе. Неебический.
420 1305672
>>305661

>ряя в аЙти и так уже много, тупое школоло ряя


мне всегда было интересно как работает мой кампудахтор и в частности программная его чась.
если б я думал только о бабле я и не задумывался б изучать что то сложнее питона
421 1305674
>>305672
Ты уже обоссан, не старайся отмазываться.
422 1305676
>>305674

>пук


что сказать то хотел?
ты програмист вообще, что ты тут делаешь если не магешь в конкструктив
423 1305677
>>305676
Да с тобой нехуй говорить, всегда ему интересны были пека, только задается вопросом нахуй ему учить что-то кроме пыха и жса, ведь на них бабки можно рубить. Конченный.
424 1305688
>>305677
Ты бы попустился, че злой такой. Как вахтерша какая-то
425 1305691
>>305664

>Но С++ гигантский плюс для поиска удаленной работы на западе


надеюсь, ты говоришь на основании личного опыта
426 1305692
>>305658
в твоем вопросе и содержится ответ
раз ты абитуриент, то скорей всего у тебя есть мамка и папка, готовые кормить тебя еще 5 лет
но лучшее что ты сможешь сделать - это не теряя время подучить веб-разработку и уже на курсе втором устраиваться на удаленочку
если выберешь плюсы - твой путь окажется гораздо, гораздо сложнее, а как вариант и вообще закончится ничем
Jackie-Chan-WTF.jpg20 Кб, 500x375
427 1305702
INT / INT(0)
@
FLOATING POINT EXCEPTION
428 1305717
Помогите плз, с этим кодом, что нужно сделать, чтобы он заработал?
Я очень тупой, буду безмерно рад любой помощи. http://www.cyberforum.ru/cpp-beginners/thread167333.html
429 1305741
>>305444
stl::mem_fn?
430 1305758
Пиздос, тут каждый раз перед сессией стая студентов набегает и начинает спрашивать про сортировку пузырьком и подобную элементарную хуйню?
431 1305764
>>305490
Забей на эту кривую парашу. Вкатывайся через годик другой, когда допилят для людей.
432 1305782
>>305758
так и есть
еще вкатывальщики, спрашивающие почему их hello world не компилится
но в отличие от пхп-треда отвечают им такие же мало знающие студенты
состоявшиеся кодеры здесь есть, но они молчат или только отвечают на интересные сложные вопросы
вообще это специфика крестовой специализации - люди предпочитают молчать после нескольких лет работы "в поле"
433 1305783
>>305691
Да. Я начинал в 2012, несколько раз пытался в веб-вакансии с рейтом хотя бы $15, каждый раз выбирали не меня - очень большая конкуренция. А с крестами было просто - специалистов мало и все заняты.
434 1305799
>>305783
хм
а на чем специализируешься?
одним словом, без подробностей
435 1305816
>>305799
Это плохой вопрос, если тебя интересует вкат. Интереснее на чем я специализировался тогда. На переводе кода со скриптовых языков на С++, на анализ опенсорса. То есть такая типичная фрилансерская работа по чистке сортиров вилкой. Но, в отличие от веба, вечно таким заниматься не будешь, хороший крестовик редкость.
436 1305817
>>305595
Там у них много переопределений и 2000 строк.
Мне бы чистый список без перегруженных операторов.
struct element
{
int x;
element Next, P;
};

struct List
{
private:
element N ,Prev;
public:
List()
{
Prev = nullptr;
N = nullptr;
}
~List()
{
while (Prev)
{
element temp = Prev->Next;
delete Prev;
Prev = temp;
}
}
void Add_element(int new_element)
{
element
temp = new element;
temp->x = new_element;
temp->Next = Prev;
Prev = temp;
}

void Add_element(int i, int new_element)
{
int A = element_quantity();
element temp = Prev;
element
data = N;
while (temp)
{
N = Prev;
temp = temp->Next;
if (A - i == 0)
{
element *obj = new element;
Prev = obj;
obj->x = new_element;
obj->Next = temp;
temp = obj->Next;

}
i++;
}
}
Нужно чтобы Адд, который с 2 параметрами, вставлял в итую позицию, element_quantity() возвращает количество элементов на момент вызова. Так же нужно сделать для удаления с итой позиции.
Раньше добавление работало, но потом я начал делать удаление и крашнул студию, в итоге не сохранилось.
436 1305817
>>305595
Там у них много переопределений и 2000 строк.
Мне бы чистый список без перегруженных операторов.
struct element
{
int x;
element Next, P;
};

struct List
{
private:
element N ,Prev;
public:
List()
{
Prev = nullptr;
N = nullptr;
}
~List()
{
while (Prev)
{
element temp = Prev->Next;
delete Prev;
Prev = temp;
}
}
void Add_element(int new_element)
{
element
temp = new element;
temp->x = new_element;
temp->Next = Prev;
Prev = temp;
}

void Add_element(int i, int new_element)
{
int A = element_quantity();
element temp = Prev;
element
data = N;
while (temp)
{
N = Prev;
temp = temp->Next;
if (A - i == 0)
{
element *obj = new element;
Prev = obj;
obj->x = new_element;
obj->Next = temp;
temp = obj->Next;

}
i++;
}
}
Нужно чтобы Адд, который с 2 параметрами, вставлял в итую позицию, element_quantity() возвращает количество элементов на момент вызова. Так же нужно сделать для удаления с итой позиции.
Раньше добавление работало, но потом я начал делать удаление и крашнул студию, в итоге не сохранилось.
437 1305845
>>305816
не, не, вкат меня не интересует, лол
вопрос был какие задачи сейчас решаешь, на чем сидишь
438 1305901
Не инициализированные переменные приобретают разные ебанутые значения, так и должно быть?
439 1305916
>>305901
Это нормально.
При инициализации переменной компилятор выделяет под нее какую-нибудь мусорную ячейку в ОЗУ, где находиться всякая дичь.
(Некоторые компиляторы выводят ошибку)
440 1305917
>>305901
Да, для обычных переменных это нормально.
Но в stl контейнерах они по дефолту устанавливаются в нулевое значение типа, например.
441 1305929
>>305901
Обычные переменные при использовании без инициализации дадут мусор, то есть какое-то значение в памяти. У меня это какое-то ебанутое число примерно -2^31 или как-то так.
Глобальные переменные без инициализации устанавливаются в ноль даже массивы.
При инициализации одного элемента массива все остальные не инициализированные установятся в нули
442 1305939
>>305845
Сейчас в основном на питоне ML делаю, лол.
Сейчас кресты нужны только в продакшен на десктоп, а я слишком ценный специалист, чтобы заниматься подобным. Хотя если уволят то, скорее всего, опять вернусь на кресты.
443 1305950
Аноны, тут есть такие, которые шарят в параллеизме MPI?
Нужно подстроить одну прогу под многопоточность. Там буквально три строчки)
444 1305956
Хочу сделать такую же штуку https://pastebin.com/vNAErtMq , но на крестах. Возможно ли это?
Т.е. несколько классов со статическими функциями запихнуты в map так, чтобы потом я эти статические функции мог через этот map дёргать.
445 1305970
446 1305977
Вкатывался в C/С++ на протяжении месяца, пересмотрел пару курсов, прочитал Страуструпа и все вроде ничего, но вдруг я краешком глаза заглянул в сисярп и ахуел, ведь это же тот же самый C++ только на стеройдах, с ахуенной поддержкой, активным комьюнити и вообще все как у людей. Теперь думаю перекатиться туда. Какие подводные? Где я проебался? С++ бояре, отговорите меня!
447 1305981
>>305970
Не совсем. АК
448 1305982
>>305956

>https://pastebin.com/vNAErtMq


Статические вообще без проблем, если сигнатура у них одна и та же.
https://ideone.com/9WPkgP
С методами лучше заюзать std::function, который запомнит ссылку на this.

Хотя у тебя в мапе не функция, а метакласс. Метаклассов в С++ нет.
449 1305983
>>305977
Цель у тебя какая?
450 1306022
>>305977
Это вообще разные вещи. C# - джаваподобный мусорособираемый язык высокого уровня (хотя сам язык поприятнее джавы будет), ориентированный на исполнение на виртуальной машине CLR. То есть абстракциями оперировать легче, чем плюсами, но и (вменяемо) управлять памятью ты не сможешь. И просто сам язык медленнее сей/плюсов (чего, впрочем, хватает для 90% приложений). То есть для уровня "сделать веб/десктоп приложение" самое оно, но если у тебя один из следующих ворклоадов:

>БЛЯДЬ РАБОТАЕМ НАПРЯМУЮ С PCI/I2C/ЧТО ТАМ ЕСТЬ ЕЩЁ


>ВСЁ МЕДЛЕННО - ТАЩИ БОЛЬШЕ SIMD


>У НАС VTUNE ГОВОРИТ ЧТО LLC MISS COUNT ВЫСОКИЙ - А НУ


>640 КИЛОБАЙТ ПАМЯТИ (на программу и на данные) ХВАТИТ ВСЕМ


>У НАС ВЫЧИСЛЕНИЯ ИДУТ 60 ЧАСОВ - НАДО БЫ БЫСТРЕЕ


и просто если ты не можешь расходовать лишние ресурсы компьютера или должен уметь выжать его до конца, то да, плюсы в таком случае незаменимы. А так, если хочешь просто понять, каковы низкоуровневые языки, то лучше сделай упор на чистый Си. Всё-таки ящитаю в плюсы нужно вкатываться строго после хорошего понимания Си.
451 1306030
>>306022
Так джава си-подобный, выходит что С# - тоже. C/C++ тоже языки высокого уровня же. Почему не смогу? Просто добавляю ключевое слово unsafe и делаю все тоже самое что и на C++, делать асм вставки тоже можно насколько я понял. Выходит, что у плюсов пруфит только в производительности, ну и драйвера не попишешь?
452 1306040
>>305817
Чёрт, ты серьёзно за 18 часов не нашёл нужный код? По второй же ссылке нашёл нужный тебе с разбором и добавлением в произвольную позицию.

>element_quantity()


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

Почему в элементе хранится два указателя? Зачем указатели N и data? Нужна ли тебе ещё помощь? Если тебе в самом деле интересно, а не нужно просто унылую лабу сделать и забыть - то можно списаться, объясню всё-всё про списки и всякое другое, если потребуется.

>>305917

>в stl контейнерах они по дефолту устанавливаются в нулевое значение


А это можно как-то отключить, кстати? Практического применения никакого - проще явно вызвать зануление в 1 из 100 случаев, чем каждый раз мучать компьютер бесполезными действиями.
453 1306054
А вот этот курс на курсере с поясами неужели никто на торренты не залил? Платить что ли надо?
454 1306064
>>306054
Заплати. Чо ты как этот самый.
455 1306068
>>306040
С добавлением разобрался.

void Add_element(int i, int new_element)
{
int A = element_quantity();
element temp = Prev;
element
temp2 = Prev;
while (temp2)
{
temp2 = temp2->Next;
if (A - i == 0)
{
element obj = new element;
obj->x = new_element;
obj->Next = temp2;
temp->Next = obj;
}
i++;
temp = temp->Next;
}
}

А вот с удалением проблема, выкинуть указатель то могу на (i-1 элемент), но как не впихну delete, то ошибка доступа памяти в строке temp = temp->Next;

void Del_element(int i)
{
int A = element_quantity();
element
temp = Prev;
while (temp)
{
if (A - i == 0)
{
temp->Next = temp->Next->Next;

}

temp = temp->Next;

i++;
}
}
455 1306068
>>306040
С добавлением разобрался.

void Add_element(int i, int new_element)
{
int A = element_quantity();
element temp = Prev;
element
temp2 = Prev;
while (temp2)
{
temp2 = temp2->Next;
if (A - i == 0)
{
element obj = new element;
obj->x = new_element;
obj->Next = temp2;
temp->Next = obj;
}
i++;
temp = temp->Next;
}
}

А вот с удалением проблема, выкинуть указатель то могу на (i-1 элемент), но как не впихну delete, то ошибка доступа памяти в строке temp = temp->Next;

void Del_element(int i)
{
int A = element_quantity();
element
temp = Prev;
while (temp)
{
if (A - i == 0)
{
temp->Next = temp->Next->Next;

}

temp = temp->Next;

i++;
}
}
435354367.PNG18 Кб, 554x287
456 1306071
>>295983 (OP)
Анон, начал учить эти ваши плюсы (и программирование вообще). И я просто в ахуе от нелогичности этого дерьма. Допустим, делаю многомерный массив. 2 массива по 4 элемента. И чтобы вызвать из 2-го массива 4-ый элемент мне нужно писать 1 и 3, потому что плюсы воспринимают первый массив и первый элемент не как 1, а как 0, то есть начинают отсчет с ноля.
Как дальше жить с этим?
457 1306074
>>306071
Ну наверное в очень многих языках программирование индексация начинается с 0, а не с 1.
458 1306078
>>306071
Допустим int может принимать значения от 0...10, если массив начинается с нуля, то нам доступны значения от 0 до 10, если с 1 то с 1 до 10, то есть последний элемент доступен не будет. Все просто и логично, просто ты дурачек.
459 1306082
>>306078

>Допустим int может принимать значения от 0...10


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

Я все равно ничего не понял.
Почему тогда сразу нельзя было сделать создание массива с учетом ноля? Допустим ты хочешь сделать два массива с 4-мя элементами. Тогда писать надо 1 и 3. И для вызова последнего элемента второго массива логично было бы юзать все те же 1 и 3.
460 1306094
>>306068

>ошибка доступа памяти в строке


Очевидно, потому что ты удаляешь temp, а потом обращаешься temp->Next или ещё что-то такое.
Попробуй это:
[code]
void Del_element(int i)
{
int A = element_quantity();
if (A<i) return;// Такого элемента нет

element W,B = Prev; //Тут две звёздочки, если оно сломается.
if (i==0){ //Отдельный случай, когда нужно поменять Prev
W=Prev;
Prev=Prev->Next;
delete Prev;
}else{ //Случай, когда значение Prev менять не надо
W=Prev;
B=Prev;
for (int n=0;n<i;n++){//Перехожу на элемент i
B=B->Next;
W=B;
}
//В - элемент подлежащий удалению
//W - предыдущий
W->Next=B->Next;
delete W;
}

[/code]
460 1306094
>>306068

>ошибка доступа памяти в строке


Очевидно, потому что ты удаляешь temp, а потом обращаешься temp->Next или ещё что-то такое.
Попробуй это:
[code]
void Del_element(int i)
{
int A = element_quantity();
if (A<i) return;// Такого элемента нет

element W,B = Prev; //Тут две звёздочки, если оно сломается.
if (i==0){ //Отдельный случай, когда нужно поменять Prev
W=Prev;
Prev=Prev->Next;
delete Prev;
}else{ //Случай, когда значение Prev менять не надо
W=Prev;
B=Prev;
for (int n=0;n<i;n++){//Перехожу на элемент i
B=B->Next;
W=B;
}
//В - элемент подлежащий удалению
//W - предыдущий
W->Next=B->Next;
delete W;
}

[/code]
461 1306096
>>306054
ты можешь там смотреть видео с курса, это будет бесплатно
но смысла в этом немного, важны тестовые упражнения и задания, доступ к проверяющей системе
вообще важно то что тебя будут по сути заставлять кодить, набивать руку
462 1306098
>>306094>>306068
Точнее, вот так: https://ideone.com/LN7Ja
Писал вслепую, перепутал две строчки. Сейчас должно работать, по идее. И чёт глаза вытекают от кода без переносов, думал "code" блокирует стирание звёздочек и пробелов.
463 1306099
>>305939

> на питоне ML делаю


не хотелось тебя упрекать, но первым постом ты говорил, что легко найти удаленку на крестах и что работаешь на плюсах удаленно
а получается вот оно как
464 1306114
>>306082

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


У тебя какой то пиздец с пониманием, попробуй для начала ассемблер, хорошая вещь. А потом чистый С, и только потом уже плюсы.
465 1306119
>>306114
посоветуй по асму что нибудь чтобы побольше прикладных интересных задач простеньких
другой анон
466 1306133
>>306119
Непонел, что именно посоветовать? Для обучения советую FASM (он же flat assembler) посмотреть, только не fasmg, по нему материала еще мало. На офф сайте есть примерчики, тексты, да и много чего по нему гуглица.

Еще в папке EXAMPLES при скачивании есть исходники всяких блокнотов, графических демок, простых hello world'ов.
467 1306136
>>306114

> ассемблер


в контексте с++ треда нужен только затем, чтобы уметь читать и контролировать выхлоп компилятора
facepalm.webm142 Кб, webm,
1280x720, 0:04
468 1306196
>>306136

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

469 1306208
>>306099

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


>а получается вот оно как


Нет, это говорил гномик в твоей голове. Я писал следующее: "С++ гигантский плюс для поиска удаленной работы на западе".
То есть не плюс как в собеседованиях пишут плюс, который нихуя не плюс, а реальный такой плюс выполнить простенький проект, познакомиться с заказчиком и сказать ему "а я еще и вышивать умею". А работать на крестах в 2018...
Нет, не пойми меня неправильно, я работал несколько лет чисто на С++ и всегда моя работа заканчивается имплементацией на С++ для встраивания в продакшен (если речь о десктопных юзерах, в вебе можно обойтись крестовыми библиотеками), но при первой возможности я не работаю на С++, потому что надоедает постоянно пилить велосипеды, искать на гитхабе древние BSD библиотеки, дрючить cmake и заниматься прочей хуитой.
Поэтому молодым я С++ учить особо не советую. Effort'а много, а выхлоп будет - ну чуть больше везения при поиске работы.
470 1306230
>>306196
че не так? аргументируй или ты не очень собеседник
471 1306300
>>306071
Потому что массив по сути - это кусок памяти. Твоя переменная, которая обозначена как массив на самом деле есть указатель на адрес первого элемента. В квадратных скобочках ты указываешь не номер элемента, а смещение относительно этого адреса. Соответственно, первый элемент массива находится при нулевом смещении.

Во многих других языках без семантики си-подобных указателей ёбнутые создатели (сказалось тяжёлое наследие си) оставили 0 как индекс первого элемента массива, списка и других подобных коллекций. Но есть и правильные языки, где первый элемент нумеруется единичкой.
472 1306307
>>306300

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


Это хуевые языки для гуманитариев. Матлаб из таких языков и постоянно это бесит.
Например, мне нужно обработать массив кусками по 10 элементов (только не надо говорить про векторизацию в матлабе - это просто пример). На сишке я пишу так (@ как водится звездочка):
for(int i = 0; i < ...; ++i) for (int j = 0; j < ...; j++) a[i @ 10 +j] = ...
И тут прелесть в том, что 0 @ 10 = 0.
А вот когда у тебя нумерация с единицы, возникает проблема. 1 @ 10 = 10. В итоге надо писать
a[1 + (i - 1) @ 10 + j], чтобы превратить i в ноль, высчитать смещение по i, а потом еще не забыть прибавить единицу, чтобы опять вернуть нумерацию с единицы.
На пустом месте формула усложнилась. Так что указывать смещение вместо порядкового номера штука правильная и очень математичная в любых языках, не только в низкоуровневых. Не веришь мне, спроси у Саймона: http://hackage.haskell.org/package/base-4.12.0.0/docs/Prelude.html#v:-33--33-
473 1306316
>>306307
Хотя вру, единицу прибавлять не надо - j-то с единицы. Короче, даже в таком простом коде появляются баги на пустом месте
474 1306317
>>306307
Ты в своем примере какую-то хуйню написал.

Если индексы элементов начинаются с единички, то все становится ещё проще:

for(int i = 1; i <= ...; i += 10) for (int j = 0; j < 10; j++) a[i + j] = ...

И никаких проблем.

Но, таки да, становится неудобно, если по модулю деление брать.
1542250751020.jpg6 Кб, 251x201
475 1306324
>>306307

>Матлаб


>язык программирования

476 1306337
>>306324
Что не так? Там даже лямбды есть.
477 1306450
>>306098

>Точнее, вот так: https://ideone.com/LN7Ja


Сразу переадресовывает на главную.
478 1306511
cppstudio.com/
Что за хрень, у меня одного недоступно?
479 1306641
>>306450
Угу, виноват.
https://ideone.com/LN7Jar
481 1306691
>>306030

>Так джава си-подобный, выходит что С# - тоже. C/C++ тоже языки высокого уровня же


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

>Почему не смогу? Просто добавляю ключевое слово unsafe и делаю все тоже самое что и на C++,


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

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


Честно? Да.
482 1306692
483 1306699
>>306030
Тем, кто считает Си языком высокого уровня, пора очнуться из сорокалетней комы и обнаружить, что в современном компьютерном языкознании стандарты несколько поменялись.
484 1306772
>>306699
операционки теперь на js пишут?
485 1306804
>>306772
Наркоман?
486 1306807
>>306030

>Так джава си-подобный, выходит что С# - тоже. C/C++ тоже языки высокого уровня же. Почему не смогу? Просто добавляю ключевое слово unsafe и делаю все тоже самое что и на C++, делать асм вставки тоже можно насколько я понял. Выходит, что у плюсов пруфит только в производительности, ну и драйвера не попишешь?



Язык тащит за собой компилирующий и выполняющий его рантайм и соответствующие ограничения в плане переносимости (для переноса на неподдерживаемую платформу придется вскрывать исходы рантайма и перепиливать рантайм + раньше мог соснуть с платформами где динамическая генерация кода запрещена или невозможна (гарвардская архитектура), но недавно запилили AOT, который впрочем тоже для неподдерживаемых платформ придется перепиливать. Ну и в целом язык был анальной проприетарщиной от М$ и лишь недавно вылился в опенсорс).

Ну а что касается популярности - под самый популярный игродвижок пишут именно на шарпе игоры.
487 1306809
>>306807

>Ну и в целом язык был анальной проприетарщиной от М$ и лишь недавно вылился в опенсорс



И вот это вот - его главная проблема. За долгие годы анальной проприетарности за ним закрепилась ниша мидл-левел этнерпрайза, прибитого гвоздями к шиндошс-онли инфраструктуре. Ни моно, ни ксамарин эту ситуацию не переломили, разве что вот говноюнька хоть как-то открыла для языка новую нишу на рынке труда, до неё он вообще был загибающимся легаси-языком для вышеупомянутого мид-левел энтырпрайза.
488 1306811
>>306699

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



Любой язык представляющий переносимую абстракцию над железом суть высокоуровневый. Суть в том что на сишке можно написать переносимый код, при этом прилагая усилия для избегания граблей с типами и прочим, на ассемблере это ни при каких усилиях не получится - исход для x86 ты не заставишь скомпилиться под ARM.
1544086113555.png34 Кб, 1152x648
489 1306856
Отдельного треда по Qt нет, так что спрошу здесь. Суть такова, нужно запилить таблицу большого размера где-то 1.5к ячеек, пикрелейтед. В каждой ячейке нужно чтобы отображались данные из бд с возможностью редактирования, какие-нибудь чекбоксы, комбобоксы. Что лучше использовать для реализации такой хуйни? Сейчас думаю использовать QTableWidget, в который засовываю свой кастомный виджет со всей хуйней внутри.
490 1306891
>>306641
Спасибо, выручил.
491 1306924
int main()
{
int a;
std::cout << a << std::endl;
}

Почему a=0?
492 1306936
>>306924
в debug-конфигурации собирал проект?
493 1306937
>>306924
А ты запрети, лол
494 1306939
>>306936
В обычной.
495 1306950
>>306939
что значит "в обычной"
в студии? там debug-release,
496 1306954
>>306699
Си - это кросплатформенный ассемблер.
497 1306958
>>306954
c++ - надстройка над си, кучка синтаксического сахара
498 1306992
>>306950
Какая студия? У меня линукс, g++, всё.
499 1307001
>>306992
Флаги какие? -O1/2/3/g?
500 1307008
>>306924
Это неопределенное поведение, компилятор может делать что угодно. Если бы ты инициализировал переменную, ему бы пришлось сначала скопировать константу на стек, а потом загрузить её в регистр. Но ему не нужно делать ни того, ни другого, поэтому он этот регистр тупо занулил через XOR EAX EAX или типа того, потому что имеет полное право.
501 1307010
>>307008
Тут надо понимать, что это работает так только в конкретном случае. В этом примере ты, скорее всего, увидишь не ноль:

int a;
if (x == 0){
a = 2;
}
if (x == 2){
a = 6;
}
float b = sqrt(123);//Заставить компилятор сбросить штуки на стек

std::cout <<a << b;
502 1307011
>>307010
Блин, про x забыл:
int x;
std::cin >> x;

int a;
if (x == 0){
a = 2;
}
if (x == 2){
a = 6;
}
float b = sqrt(123);//Заставить компилятор сбросить штуки на стек

std::cout <<a << b;
503 1307116
Аноны, шёл гайду из старой шапки почему его убрали?. Там был блок с 4 книжками, 3 из которых были от Мейерса и рассказывали про современный на тот момент С++. В шапке написано желательно пролистать все 4. Но я вот одну закончил, и начал читать вторую. Тут советы повторяются, а некоторые и вовсе противоречат прошлому изданию.Наверное дело в том что я начал с 2015 года. Так вот какой смысл то их читать собственно? Это последнее и 3 издание, если не ошибаюсь. Во втором и вовсе 38 из 40 советов повторяются. Может кто прояснить, стоит ли их читать или это трата времени просто?
504 1307165
>>307116
Думаю во многих актуальных книжках (Липпман, Джосатисс) советы так или иначе повторяются либо даётся их модификация.
505 1307199
>>301215
да и не факт что к разным. думаешь рандому слабо два числа повторить в разных потоках7
506 1307212
>>306772
Операционки на низком уровне пишут, ваш кэп.
507 1307216
>>307165
Ну так там все книги по факту являются модификацией предыдущей, но при этом если в одной книге пишется что пока-что какой-то технологии нет в книге 2008 года например писалось что нет технологии для отключения функций в классе либо final а в следующей книге уже описывается эта технология. Отредачте шапку тогда, исправьте на читать последнюю. Хотя похуйдумаю, всё равно ее не добавляют уже
508 1307220
>>306811
«(Без)знаковое целое размером не менее X байт», «указатель на символ», «цикл с предусловием», «структура с таким-то выравниванием полей» и тэ дэ — это «абстракции»только если по меркам 70-х. Высокоуровневый язык в первую очередь должен предоставлять удобные средства для работы в терминах предметной области (причём произвольной, если это язык общего назначения), а не железяки. В сишке железяка будет водопадом протекать сквозь попытки хоть что-то абстрагировать, как ты ни ухищряйся.
509 1307223
>>307216

> например писалось что нет технологии для отключения функций в классе либо final



Ну, блин, в таком случае надо учитывать ведь и версию языка.
А то будешь читать что-нибудь из старого, а там про какой-нибудь Copy Elision и прочее ничего нет.
510 1307225
>>307223
Да я просто по гайду шёл, и наткнулся на такое чудо. Решил остальные 2 книжки не читать.
511 1307227
>>307225
Тогда лучше читать новое чтобы потом с учётом смотреть на старое.
513 1307333
>>306230
C++ это все же низкоуровневый язык, и нужно постоянно ебаться с кроссплатформенным ассемблером ака сишка епт. Поэтому ассемблер знать нужно, а то блять создашь мегабайтный VLA, и будешь охуевать когда программа пишет вместо result: x -- segement naebnulsa.
image.png4 Кб, 272x43
514 1308814
Моча совсем обезумела? Куда 79 тред делся?
515 1308886
>>306811
При желании код в fasm можно обмазать кучей макросов и условной конпеляцией как это делают в це и получить условно переносимый код.
516 1309952
Аноны, помогите разобраться с перегрузкой функции. Нужно реализовать класс Матриц на С++, я нашел в тырнете программу, но разобраться никак не могу.
Есть код (http://hardfire.ru/class_matrix) что бы весь листинг не кидать. В нем есть перегрузка матрицы, вывести обычную матрицу я понял как, а как вывести матрицу из массива чисел - не понял.
matrix(double array[], int N, bool horizontal=0)
Как использовать эту функцию?
Ппробую так,например
matrix q({ 2.3,5.2,4.3 }, 3, 1);
Пишет
E0289 отсутствуют экземпляры конструктора "matrix::matrix", соответствующие списку аргументов
517 1309955
>>309952
Вроде понял, создал в main массив
double arr[] = { 1,5,7 };
И закинул ево в ту функцию
matrix q(arr, 3, 1);
518 1309976
>>309952
Бля, некоторые команды я хуй знаю как вызывать. Помогите позязя
519 1310065
Что почитать по сетям и библиотеке winsock, чтобы с примерами и всё такое?
520 1310407
521 1311161
>>310407
Твой вопрос, что ли?
В expr.ref, видимо, дыра в wording-е.
522 1311519
>>295983 (OP)
Аноны, нужна помощь.
Вот в джаве или шарпе, после того момента , когда комфортно для себя начинаешь писать чисто на ЯП, ты переъодишь на фреймворки - Спринг или что то подобное в шарпе.
А что делать в крестах? Есть какая то готовая инфраструктура ? Что то такое, что можно задрочить и идти на собес?
523 1311570
>>311519
по stl там обычно гоняют, могут про boost спросить
524 1312165
Анон, спрашиваю твоего совета
Сижу на связке сишечка + кресты + Qt

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

наформошлепить могу на легком, был даже один проект с ЦОС, с него больше всего угорел

Какое-то время реверс интересовал, но почитал что придётся всё время сидеть и в ИДУ пялить, восторга не вызывает

матан давно забросил, но когда-то он мне доставлял

собсно вопрос: не ебу в какую сторону двигаться и что дальше учить, так что высрите мне вашу субъективщину, охота посмотреть чем люди живут, мб что-то зацепит
525 1312166
Анон, спрашиваю твоего совета
Сижу на связке сишечка + кресты + Qt

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

наформошлепить могу на легком, был даже один проект с ЦОС, с него больше всего угорел

Какое-то время реверс интересовал, но почитал что придётся всё время сидеть и в ИДУ пялить, восторга не вызывает

матан давно забросил, но когда-то он мне доставлял

собсно вопрос: не ебу в какую сторону двигаться и что дальше учить, так что высрите мне вашу субъективщину, охота посмотреть чем люди живут, мб что-то зацепит
526 1312167
>>312166
а ещё я даун с даблкликом
image.png31 Кб, 673x105
527 1312700
Двач, помогите, пожалуйста, с этой задачей. Вообще соображений никаких...
528 1312803
>>304730

>структура типа {char; int; char;} на современном сферическом компиляторе в вакууме с большой вероятностью будет выдавать сайзоф 12.



Привет двачерам из 2003 =)
24 же. У современных машин слово восемь байт, а не четыре.
529 1312886
>>312700
Если ты просишь помощи, то ты должен показать что ты что-то сделал сам, либо пытался. Тебя на любом сайте пошлют нахуй с просьбами сделать дз за себя, потому-что тебе лень
530 1313101
>>312803

>Привет двачерам из 2003 =)


Привет из 1488-го =)

> 24 же.


https://wandbox.org/permlink/g6Em3moNxZ0VxtZn

> У современных машин слово восемь байт, а не четыре.


У машин вообще слов нет, Слово было у Бога.
531 1313256
Привет, двачане. Я тут впервые, и так случилось, что за помощью. Ситуация такая. Есть template класс, надо обозначить для него template функцию как friend. Если написать так:

template<typename T>
class Zalupa {
public:
friend T func<T> (Zalupa<T>&);
};
template <typename T>
T func (Zalupa<T>& z) {}

то не распознает func<T> как template, а если объявление func кинуть перед объявлением класса, то ругается на неизвестный тип параметра функции.

Чувствую себя тупым...
532 1313259
ой, кажется уже нарыл инфу
533 1313377
Двощ, пилю лабу по самоучителю Шилдта. Проблема с некоторыми прогами по листам, например с этой: https://pastebin.com/aENqPSet 14.4, пример 5. Пикрил. Запускаю в VS2017. Как пофиксить?
534 1313705
>>313377
на всякий случай, вставлю свои три копейки о том, как где-то в англоязычных интернетах читал мнение, что джавист Шилдт зря взялся за C++ (как автор), и учиться по его книге - гавно вариант.
535 1313791
>>313256

Сомневаюсь, что такое объявление friend синтаксически корректно. Сделай так

template<typename U>
friend U func(Zalupa<U>&);
536 1313806
>>313377

Скорее всего, в первом for

for (i = 0; i < 10; i += 2)
lst2.push_back('A' + i);

должен быть lst1, а не lst2. А ассерт вылезает потому, что вызов merge требует, чтобы оба листа были отсортированными
анон 537 1313835
Пацанва, вопрос по QT
connect(socket, SIGNAL(connected()), this, SLOT(connectClient()));
этот коннект должен при удачном соединение перекинуть на слот и выполнить его. В слоте просто похуй что вывод строки допустим. Если коннект с 1 раза удачный, то все робит , строку выводи как надо. Если раз 100 тыкать на заведомо неконнектюющююся хуйню, а на 101 прикконектится к нормальному порту, он блять выведет 101 раз сообщение. Че за ебала? как фиксить, чет даж хз как гуглить
538 1313856
>>313835
Фикс, разобрался, Qt::UniqueConnection нужно юзать параметром.
539 1314066
Кто поможет студенту распиздяю не вылететь из универа. Кто хорошо разбирается в массивах? Помогите сделать лабу. Отпишите свой тг, я напишу сам.
540 1314215
>>314066

> хорошо разбирается в массивах


О, как раз ищу вакансию массивщика. Серьезная предметная область...
анон 541 1314284
Что значит запись if(somth....){ return; } что тут возвращается к чем?
542 1314291
>>314284
видимо, функция void, которая должна просто закончить работу при условии somth....
543 1314912
>>295983 (OP)
на торрентах vs2017 с большим набором доп хрени кроме c++, как правильно выбрать, чтобы можно было работать на python, c++, c#. Геймдев не интересует, есть какое-то описание нормальное для разделов и что стоит ставить , а что нет(всего 40gb) или только искать описание каждого набора?
544 1316055
какие есть годные книги , в которой нет воды на 1к старниц
545 1316134
Анон, поясни пожалуйста. Почему вызывается деструктор вызывается три раза, а не два? В книжке сказано, что из-за операторной функции. Подчеркнул красным.
546 1316202
>>316134
Что за говно ты читаешь?
В дефолтном конструкторе выделяют память с использованием new, в то время как везде удаляют используя delete []
Присваиваешь такой дефолтно сконструированному объекту что-то и привет UB
В sample::set предыдущую память не освобождают...
Пиздец.
548 1316204
>>316055
Стандарт.
549 1316296
>>316202
Ничего не понял. Можно проще. Зачем удалять в sample::set, если есть деструктор который удаляет. Вот здесь по ссылке у чувака все получилось и програ норм робит - как в книге.
>>316203
Там тоже нне дали ответа "почему".
551 1316369
Анон, что с rand() в xcode на маке? Постоянно возвращает одно и тоже значение.
552 1316384
>>316369
Нагуглил srand(time(NULL));
553 1316406
>>316369
а на маке, разве, нет /dev/random и /dev/urandom ?
554 1316444
Анон, выручай.
Где я вылезаю за пределы массива. Уже пол часа сижу и не вижу
void sloj(int a[], int b[], int &la, int lb)
{
int i = 0, j = 0, c, d;
for (i; i < la; i++)
{
for (j; j < lb; j++)
{
if (a > b[j])
{
la++;
d = i;
c = la;
for (c; d + 1 < c; c--)
{
if (c == (0))
break;
a[c] = a[c - 1];

}

}
}
}
}
555 1316446
>>316444
Менее ублюдски
void sloj(int a[], int b[], int &la, int lb)
{
int i = 0, j = 0, c, d;
for (i; i < la; i++)
{
for (j; j < lb; j++)
{
if (a > b[j])
{
la++;
d = i;
c = la;
for (c; d + 1 < c; c--)
{
if (c == (0))
break;
a[c] = a[c - 1];

}

}
}
}
}
556 1316498
>>316444

>Уже пол часа сижу и не вижу


valgrind установи
557 1317990
Привет. В книге попалось задание "напишите прогу для проверки целых чисел на четность/нечетность, используя оператор вычисления остатка". Ничего лучше кроме этого (неэффективного для отрицательных чисел) не придумал:
https://pastebin.com/eZvT83NY
Не могу допереть как написать через предложенный оператор, накиньте за щеку идей.
558 1318000
>>317990
Блять отбой, спасибо. Второй час ночи, котелок совсем ебобо.
559 1318242
Зачем инициализировать переменные, когда это необязательно? Какие подводные камни? На простейшем примере:
int main()
{
char a;
cin >> a;
cout << a;
}
аффтар предлагает char a = ' ';
560 1319143
>>318242
Защитное программирование
111.jpg24 Кб, 520x241
561 1319231
Установил Visual Studio, пытаюсь запустить и вылезает такая надпись. Что делать? Гугл ничем не помог.
562 1320074
>>316444

>for (i; i < la; i++)


поседний цикл i = la -1

>la++;


la принимает размер массива, т.е., a[la] уже segmentation fault

>c = la;


>for (c; d + 1 < c; c--)


>a[c] = a[c - 1];


т.е, в первой же итерации a[la]
563 1320082
>>318242
насколько я помню, стандарт не выдвигает требований по автоматической инициализации.
Т.е., при объявлении переменная может быть инициализирована чем угодно.
Char по дефолту байт занимает, т.е., при ошибке чтения с потока (флаги (bad|fail){1}(bit)?), у тебя будет символ ß, например.
С кайфом, так сказать.
564 1320083
>>316369
//генератор для C++11
#include <random>

int main()
{
std::mt19937 mersenne;
std::random_device rand(mersenne);
std::uniform_[int или real]_distribution<> dist(левая_граница, правая_граница);
auto a = dist(rand);
return 0;
}
565 1320510
Вопрос нуба ИТТ.
В народе постоянно говорят о том, что использовать goto - плохо и нужно искать любые способы его обхода.
Если goto так нежелателен, то поясните, как в подобном коде (пример ниже) можно избежать его использования. По задумке в консоли текст выводится каждый раз, когда человек нажимает на конкретную кнопку и прекращает выводиться, когда нажимается любая другая. Ифы, вайлы, форы и прочие элсы ведут к тому, что текст выводится один раз. Ну, или я не заюзал какие-то дополнительные неизвестные мне элементы синтаксиса.

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

#include "pch.h"
#include <iostream>

using namespace std;

void main()
{
link_1:
char char_1;
cout << "Hello world!\n";
cout << "Would you like to repeat?\n";
cout << "Press \"Y\" if you would.\n";
cout << "Press any key if you would not.\n";
cin >> char_1;
if (char_1 == 'y' || char_1 == 'Y')
{
goto link_1;
}

else
{
cout << "OK, bye then.\n";
system("pause");
}
}
565 1320510
Вопрос нуба ИТТ.
В народе постоянно говорят о том, что использовать goto - плохо и нужно искать любые способы его обхода.
Если goto так нежелателен, то поясните, как в подобном коде (пример ниже) можно избежать его использования. По задумке в консоли текст выводится каждый раз, когда человек нажимает на конкретную кнопку и прекращает выводиться, когда нажимается любая другая. Ифы, вайлы, форы и прочие элсы ведут к тому, что текст выводится один раз. Ну, или я не заюзал какие-то дополнительные неизвестные мне элементы синтаксиса.

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

#include "pch.h"
#include <iostream>

using namespace std;

void main()
{
link_1:
char char_1;
cout << "Hello world!\n";
cout << "Would you like to repeat?\n";
cout << "Press \"Y\" if you would.\n";
cout << "Press any key if you would not.\n";
cin >> char_1;
if (char_1 == 'y' || char_1 == 'Y')
{
goto link_1;
}

else
{
cout << "OK, bye then.\n";
system("pause");
}
}
566 1320511
>>320510
Уууу, Абу пидр. Не может сделать нормальное отображение спецсимволов.

#include "pch.h"
#include <iostream>

using namespace std;

void main()
{
link_1:
char char_1;
cout << "Hello world!\n";
cout << "Would you like to repeat?\n";
cout << "Press \"Y\" if you would.\n";
cout << "Press any key if you would not.\n";
cin >> char_1;
if (char_1 == 'y' || char_1 == 'Y')
{
goto link_1;
}

else
{
cout << "OK, bye then.\n";
system("pause");
}
}
566 1320511
>>320510
Уууу, Абу пидр. Не может сделать нормальное отображение спецсимволов.

#include "pch.h"
#include <iostream>

using namespace std;

void main()
{
link_1:
char char_1;
cout << "Hello world!\n";
cout << "Would you like to repeat?\n";
cout << "Press \"Y\" if you would.\n";
cout << "Press any key if you would not.\n";
cin >> char_1;
if (char_1 == 'y' || char_1 == 'Y')
{
goto link_1;
}

else
{
cout << "OK, bye then.\n";
system("pause");
}
}
567 1320791
>>320511
Легко

#include <iostream>

using namespace std;

void main()
{
char char_1;

do
{
cout << "Hello world!\n";
cout << "Would you like to repeat?\n";
cout << "Press \"Y\" if you would.\n";
cout << "Press any key if you would not.\n";
cin >> char_1;
}
while (char_1 == 'y' || char_1 == 'Y');

cout << "OK, bye then.\n";
system("pause");
}
568 1320792
>>320791
чет не очень табы со студии копируются
569 1320795
Вкатываюсь в кресты после шарпа, а до него французского делфи. Не вижу пока никаких трудностей. Так в чем же тогда сложность сего языка, что все так ноют, мол, сложная хуйня?
570 1320891
>>320795
как до строк доберёшься, расскажи, ок?
а то в шарпе реализация строк очень даже ничего и никаких сложностей с символами нет
сложности, в основном, в утечках и корявой работы с памятью, в шарпе этого тоже нет, там по аналогии джавы спизжен весь язык гарбэдж коллектор
1501108994774.jpg155 Кб, 1440x810
571 1321473
>>295983 (OP)
Как на счет того, чтобы сделать уже наконец перекат?
Пикрилейтед - в ОП-пик. Если еще не делали.
572 1321476
>>320791
Сам допетрил. Просто через while. Правда пришлось дублировать все cout-ы в функцию.

>>320891

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


Сейчас после пайтона синтаксис с-ей кажется ну совсем громоздким. В пайтоне можно было тупо любую строку помножить на интеджер и повторить н раз тем самым. А здесь целую функцию писать с циклом и так каждый раз. Хз как оно в жабе и шарпе, но что-то подсказывает, что намного проще.
Хотя казалось бы, давно уже могли бы накидать синтаксического сахара, чтобы прямо из коробки все работало. Кому не нужно и кто за каждую миллисекунду в отладчике борется - пусть просто не пользуется.
573 1321677
>>321476

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


Разумеется, пептон так и задумывался, к тому же, он динамический почти на 100%, там такие операции за хуйню делаются (но вылезают и другие сложности при этом).
Тред утонул или удален.
Это копия, сохраненная 8 января 2019 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски