Двач.hk не отвечает.
Вы видите копию треда, сохраненную 4 июня 2017 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
#2 #970841
Лул до сих пор мою шапку юзают
Пора бы туда ситхов запилить
172 Кб, 1631x2207
#3 #970859
Подписался.
#4 #970952
Как вернуть массив символов из функции без использования указателей и контейнеров? Например: char array[100] = function();
#5 #970959
>>970952
std::array<char, 100>
#6 #970974
>>970952
auto func() {char arr[100]; return arr;}
Компилировать с -std=c++14
970989971028971111
#7 #970989
>>970974
Все равно возвращает адрес локальной переменной.
"warning: address of local variable 'array' returned" "incompatible types in assignment of 'char*' to 'char[2]"
#8 #970997
>>970952
Никак, функция возвращает скалярное значение либо ничего. Она тебе должна 100 символов пихнуть в стек? Наркоман.
970998
#9 #970998
>>970997
Каждому лектору - в жопу по вектору.
#10 #971008
>>970816 (OP)
Куда делся ОП-стихописец?
973245
#11 #971017
>>970952
neekaque
#12 #971019
>>970952
Кек
char (&GetArr())[100]
{
static char arr[100] = "Use std::array";
return arr;
}
void main()
{
char (&arr)[100] = GetArr(); // or auto& arr = GetArr();
}
971022971023
#13 #971021
>>970952
char f(size_t n) {
string s=.......

return s[n];
}

int main() {
int N=...
string res;
for(auto i=0; i<N; i++) {
res += f(i);
}
return 0;
}
#14 #971022
>>971019
А там точно не надо && или &&& может быть?
#15 #971023
>>971019
Да, также забыл упомянуть, что не хочется использовать static и const хуету в функциях. Поэтому просто решил в качестве аргумента функции передавать массив, куда будет записана строка.
#16 #971028
>>970974
массив упрощается до указателя, и ты возвращаешь указатель на удаленную область. U N D E F I N E D B E H A V I O R
#17 #971103
>>970952
Возвращай char[900001] и используй только столько, склько нужно, очевидно же.
971107
#18 #971107
>>971103
Зеленый?
971108971111
#19 #971108
>>971107
Этот тот уёбок, которому надо вернуть массив без указателей, зелёный. А я всего лишь контраллирую.
#20 #971110
>>970952
Ссылка на память в таких массивах константная, её нельзя переопределить. если вдруг до сих пор не понятно было
#22 #971113
>>971111
А там нельзя эту вашу парашу с && заебенить чтобы не было копирования лишнего и память прям в стеке вызывающего выделилась?
971116
#23 #971116
>>971113
Можно. Там не надо её реализовывать для данной задачи. Компилятор протаскивает значение функции, дублировать не приходится.

http://ideone.com/jhnypk
971120
#24 #971120
>>971116
Вау круто оптимизации 2017 год!
А в каких случаях нужно ее явно указывать? Ведь зачем-то ее придумали.
971124
#25 #971124
>>971120
Ну да. Гугли конструктор перемещения.
#26 #971128
971134972750972804
#27 #971134
>>971128
Да что тут говорить. Пока модули и reflection не введут - нечего даже начинать пердуны старые, нашли что вводить в C++17, говноеды. "Си с классами" ковыряйте - и будет вам.
#28 #971140
Чем отличается gnu c++ от других?
971144
17 Кб, 386x251
1 Кб, 98x41
#29 #971144
>>971140
отлеилось
971147971148
#30 #971147
>>971144
Про язык C слышал?
971150
#31 #971148
#32 #971150
>>971147
Ну и? я просто начинающий аутист и мне нужно сделать задачку
971153
#33 #971153
>>971150
C и C++ - разные языки.
971158
#34 #971154
Как сделать codeblocks запускать откомпиленные исполняемые файлы не через cb_console_runner?
971155
#35 #971155
>>971154
Вас там заставляют этой мочой пользоваться?
971164
#36 #971158
>>971153
Ну я знаю. Но что обозначает приставка GNU?
971161971478
#37 #971161
>>971158
Гугли.
971172
#38 #971164
>>971155
А чем он плох?
971168
#39 #971168
>>971164
Плох тем, что есть альтернативы намного лучше.
971170
#40 #971170
>>971168
И под линуксом? Например? Чем лучше?
971176
#41 #971172
>>971161
Я даун. Буду учить.
#42 #971176
>>971170
Лучше объективно. Пользуйся кодблоком своим, если тебе норм.
Из альтернатив Eclipse, CLion, NetBeans.
971186
#43 #971186
>>971176

>Лучше объективно


Ну что значит "объективно"? Мне интересно узнать, что я упускаю не пользуясь вышеперечисленными IDE.
971190971224
#44 #971190
>>971186
Я не в силах объяснить, поскольку не помню, чем плох codeblocks.
971221
#45 #971221
>>971190
А примерно так можешь почувствовать вспомнить?
971227
#46 #971224
>>971186
Ими вообще никто не пользуется, и они никому нахуй не нужны. Под LOONIXом у тебя либо qtcreator, либо CLion, как меньше и зол джаваговна. А вообще, с божественной студией ничему не сравнится
971244
#47 #971227
>>971221
Нет. Повторю ещё раз - я не какой-то сектант, мне никто не платил, чтобы IDE двигать. Если тебе норм - пользуюся кодблоком.
971294
#48 #971244
>>971224
Школьник, уймись.
971247971264
#49 #971247
>>971244
Но я не школьник
971251
#50 #971251
>>971247

> не умеет в -тся -ться


> тащится от студии


...

> ДА Я НЕ ШКОЛЬНИК!11

971258
#51 #971258
>>971251
ты, поди, по ВИМУ угараешь? Есть такой подвид мудаков из каменного века, которые не любят студи.
971264971274
#52 #971264
#53 #971274
>>971258

>которые не любят студи.


школотрон не палицо
#54 #971276
С или С++?
971277971285
#55 #971277
>>971276
Яблоки или груши?
971279
#56 #971279
>>971277
Есть два стула, на одном тайпдефы точёные, на другом - кресты дрочёные.
#57 #971285
#58 #971288
Аноны, вопрос из интереса. Как сейчас с написанием зловредов? Действительно ли генераторы вирусов уже заменяют собой вирусомейкера? Слышал от сис админа одной крупной компании, что эпоха зловредов написанных человеком прошла, скоро ии с нейросетью будут сами писать зловреды, превосходящие любой написанный человеком
971291
#59 #971291
>>971288
Хуй знает.
971293
#60 #971293
>>971291
Не знает.
#61 #971294
>>971227
Ну ладно
#62 #971393
здаровча!
вопрос серьезный. вот объявили
class APA
{ тут всякие паблики, приваты
} APA;
что означает
APA?
#63 #971397
>>970816 (OP)
здаровча!
вопрос серьезный. вот объявили
class APA
{ тут всякие паблики, приваты
} (звездочка)APA;
что означает (звездочка)APA?
971413972287
#64 #971413
>>971397
Сразу объявляется переменная-указатель на этот класс.
#65 #971432
Аноны, поясните в чем разница между operator new и new как ключевое слово. Сам вопрос возник из-за этой статьи:
https://habrahabr.ru/post/185662/

Правильно ли я понял, что сначала вызывается оператор new, потом вызывается new как ключевое слово, который размещает объект в памяти, а уже потом вызывается конструктор. Алсо, как происходит это самое размещение объекта в памяти?
#66 #971435
>>971432
Вопрос туда же: зачем оператор new принимает параметр size, ведь мы же знаем размер объекта, для которого вызывается этот оператор
971439
#67 #971439
>>971435
тому что new Yoba() это шорткат для (Yoba*)::operator new(sizeof(Yoba))
971443971447
#68 #971443
>>971439
конструктор потелялся после оператора new
#69 #971447
>>971439
So? Мы то вызывает оператор new который внутри Yoba, а раз так, то мы можем просто внутри оператора использовать тот же самый sizeof:

class Yoba {

void operator new() {
return malloc(sizeof(Yoba));
//или вообще return malloc(sizeof(
this));
}
};

у меня просто Java головного мозга
971499
#70 #971478
>>971158
В зависимости от того, насколько автор программы идиот: либо компилятор GCC, либо -std=gnu++11.
#71 #971482

>To convert an std::istream into a boolean, the compiler calls a member function called std::istream::operator void(). This returns a void pointer, which is in turn converted to a boolean (NULL becomes false, any other pointer becomes true). So in this case the compiler generates a call to std::cin.operator void(), just as if you had casted it explicitly such as (void) std::cin.



Конверсия в буль через птр... КТО ЭТО ПРИДУМАЛ?
971501971547
#72 #971498
[code]class A{
};
#73 #971499
>>971447

>return malloc(sizeof(this))


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

Оператор нью это чисто выделение памяти. new T (ака new expression) это оператор new + конструктор T.

Аллоцировать можешь как тебе нравится - хочешь маллоком, хочешь на своём линейном буффере с блекджеком и шлюхами.
971560
#74 #971500
struct A : vector<int>
{
};
struct B
{
A a;
};

OK

struct A;
struct B
{
A a;
};
struct A : vector<int>
{
};
Иди нахуй

Поясните
971504
#75 #971501
>>971482
А конверсия ptr в буль это типо по человечески?
971519
#76 #971504
>>971500
В первом случае кнопилятор сумел вычислить размер структуры А и поэтому сумел запихнуть его в объект Б.

Во втором случае компилятор не ебет, какой размер у структуры А во время объявления структуры Б. Компилятор лишь знает, что ты мамкой поклялся объявить когда-нить структуру А. Если поменяешь на указатель во втором случае - сработает.
971507
#77 #971507
>>971504
Спасибо
#78 #971519
>>971501
Не очень, но к простоте выражения if(data) привыкаешь. Меня больше позабавило operator voidЗВЁЗДОЧКА.
#79 #971527
>>971432

>вызывается new как ключевое слово



>ключевое слово


>вызывается



Откуда вы лезете?

> https://habrahabr.ru/post/185662/


А, с хабрапараши. Вернись на парашу.
#80 #971535
Если есть две функции
void test(Int x)
void test(int x)
Компилятор ведь обосрётся если на его платформе sizeof(Int)==sizeof(int)? Нужно писать #if sizeof(Int)==sizeof(int) для второй функции?
#81 #971536
>>971535

>Компилятор ведь обосрётся если на его платформе sizeof(Int)==sizeof(int)?


Обязательно обосрётся.
#82 #971537
>>971535
Точнее != во втором случае
971538
#83 #971538
>>971535
>>971537
Про что несёт?
971539
#84 #971539
>>971538
Я хочу сделать так

#define INT long long

void test(INT)
#if sizeof(int) != sizeof(INT)
void test(int)
#endif
971540
#85 #971540
>>971539
А зачем?
971541
#86 #971541
>>971540
Чтобы не нужно было писать INT(x) при вызове функции, та функция что принимает int это как хелпер для автоматического каста в больший тип, но интересно что будет если окажется что это одинаковые типы для компилятора
971542
#87 #971542
>>971541
int и long long это всегда разные типы для компилятора.
#88 #971547
>>971482
Раньше по другому было нельзя. Гугли по safe bool idiom насчет того, почему просто operator bool не работает. Теперь-же есть explicit operator bool, и проблемы отпадают.
#89 #971548
>>971535
Скорее ты обосрёшься от полного отсутствия знаний.
#90 #971560
>>971499

>Оператор нью это чисто выделение памяти. new T (ака new expression) это оператор new + конструктор T.



Т.е. в любой записи по типу Foo *f = new Foo(); new является ключевым словом, которое уже вызывает оператор и конструктор по умолчанию?
971692
#91 #971692
>>971560
А ещё убеждается, что при исключении в конструкторе память освобождается.
#92 #971870
>>971432
В статье есть ссылки на стандарт, открой и почитай.
#93 #971885
>>971432
В частности читни 3.7.4
#94 #972016
Возможно в райнтайме создать С функцию чтобы передать адрес как колбек? Например создать std::function и конвертировать
972024972026
#95 #972024
>>972016
По-человечески опиши проблему
972255
#97 #972255
>>972024
atexit([](){}), что не понятно? atexit принимает указатель на функцию, которая должна быть прописана в бинарнике. А std::function можно создать динамически, но как конвертировать её в С-функцию - не понятно.
972261972297
#98 #972261
>>972255

> конвертировать её в С-функцию


std::function::target же
972278972297
#99 #972278
>>972261
http://ideone.com/ljYpUt
Сегфолтится. Проблема очевидно в разименовании указателя, который возвращает target(), но если убрать звёздочку - не компилится. Тип в <> неправильно написал?
972280972297
#100 #972280
>>972278
А, только что прочитал, что target() может вернуть nullptr и сразу же забыл об этом и не проверил результат. Вопрос почему target() не работает ещё открыт.
#101 #972287
>>971397
class Human {
int health;
std::string name;
} person1;

или тоже самое

class Human {
int health;
std::string name;
};
Human
person1;
972291
#102 #972291
>>972287
мог и указатель объявить. (звездочка)person1
#103 #972293
Ананасы, у меня вопрос по культе Qt
Имеется необходимость создавать message box`ы. Использую для этих целей QMessageBox::warning(...).
И интересно мне вот что - можно ли как-нибудь запретить создание message box`а, если другой message box уже показан?
972297
#104 #972297
>>972255

>А std::function можно создать динамически



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

Если ты хочешь скомпилировать исходный код - это уже другое: >>972026

>>972261
Нет. Target не может сделать функцию из функтора (коим является лямбда), это невозможно.

>>972278
Ты въебал себе в ногу. C++ не сверяет типы. Правильное использование: http://en.cppreference.com/w/cpp/utility/functional/function/target

>>972293

>И интересно мне вот что - можно ли как-нибудь запретить создание message box`а, если другой message box уже показан?


Сделай свой класс/функцию, только который ты используешь и который разрешает только один инстанс (либо не даёт сконструировать объект, либо спинится в конструкторе, пока не разрушится предыдущий кумесагбокс, либо, если это функция, функция спинится в ожидании завершения других функций).
972301
#105 #972299
И ещё идея: ты можешь сбацать простенький интерпретатор, и динамические функции твои - это интерпретатор+программа. И даже в этом случае ты не сможешь сделать С-функцию: интерпретатор у тебя один, а в указателе ссылку на программу не передашь.

И если вдруг ты пойдёшь по пути компилирования на лету, то тебе придётся платформозависимо что-то вызывать - LoadLibrary, например. Ни один другой язык программирования не может сбацать тебе экспортные C-функции без компилирования в dynamic library и подгрузки оной, на одна ОС не даст этого сделать.
#106 #972300
Вот объявление этого вашего target() в STL GCC:
template<typename _Functor> _Functor target() noexcept;
/// @overload
template<typename _Functor> const _Functor
target() const noexcept;

И никаких тебе С-функций. Почему плюсы дают тебе выстрелить себе в ногу - неизвестно. Можешь поизучать реализацию, она вся в файле functional твоего компилятора.
#107 #972301
>>972297
Нужно чтобы пользователь библиотеки мог передать лямбду вместо того чтобы каждый раз прописывать статическую функцию и передавать её адрес. А мне эту лямбду нужно завернуть в другую (то есть нужен захват [&]) и поставить конечную лямбду как колбек, atexit для примера.
#108 #972311
>>972301
Ну или хотя бы даже пускай прописывает статическую функцию в С-стиле, только я всё равно не могу обернуть её в другую функцию.

Например как хотелось бы
void yoba(std::function<void(int)> callback)
{
int x = 10;
std::atexit( [=] () { callback(x); } );
}

или хотя бы так
static void callback(int x) {} // всё как в С, никаких лямбд

int x = 10;
std::atexit( [=] () { callback(x); } );
#109 #972313
>>972301
Нахуя? Чем тебя указатель на функцию или std::function не устроил?

https://ideone.com/tPjaoY
972315
#110 #972315
>>972313
Нужно взаимодействовать с Си, очевидно же
972318
#112 #972324
>>972301

>поставить конечную лямбду как колбек



Лямбда - копируемый объект (код в образе + память в объекте), функция - это кусок кода по некоторому фиксированному адресу и кусок памяти по некоторому фиксированному адресу.

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

Функцию эту регистрируешь атекситом и наслаждаешься костылём.

https://ideone.com/lep9aV

Можешь завести стек и складывать в него все зарегенные колбеки.
#113 #972333
>>972301

>А мне эту лямбду нужно завернуть в другую (то есть нужен захват [&]) и поставить конечную лямбду как колбек, atexit для примера.


Забудь. atexit() принимает указатели на функции. Лямбда с нетривиальным захватом не превращается в указатель на функцию.
#114 #972334
Как этот вижуал студио установить-то, помогите пожалуйста!
Скачал 15 версию, запускаю - и программа ни на что не реагирует, просто нажимаю на любые кнопки - не реагирует, и звук такой противный виндосовский. как ошибка какая-то
972341972343
#115 #972341
>>972334
Тот самый момент, когда ты настолько профнепригоден, что даже студию поставить не можешь
972350
#116 #972343
>>972334
Пора отращивать прыщи.
972350
7 Кб, 415x424
#117 #972350
>>972343
>>972341
Установил, и теперь вот такая проблема, на пике.
Это пиздец. У меня задание - сделать простой текстовый квест на условиях. Я его сделал, пытаюсь компилировать - и такая хуйня.
При создании проекта выбирал консольное приложение, пустой проект. НИкаких библиотек не ставил.

http://stackoverflow.com/questions/1775865/preventing-console-window-from-closing-on-visual-studio-c-c-console-applicatio

Нагуглил это - не помогло. Гуглил что неправильно проект создал - не помогло.

Помогите пожалуйста, умоляю, может есть какая другая IDE с поддержкой кириллицы?
972366972393972427
#118 #972366
>>972350
QtCreator.

>и такая хуйня.


Саемшит, брув. Запускаю порграмму, возвращаюсь в студию, а там эта хуйня висит. По-моему так и не поправил.
https://forums.xamarin.com/discussion/89755/how-to-make-visual-studio-not-to-rebuild-project-on-re-run - одинокий гребец
http://stackoverflow.com/questions/2646858/visual-studio-2010-isnt-building-before-a-run-when-there-are-code-changes - а вот это может помочь. Вспоминаю это.
972402
17 Кб, 596x152
iosbase #119 #972386
Объясните мне, что значит "open for input"? А если я не укажи ни аут, ни ин, то что будет?

В реализации уже подглядел (там хитро), а где это в стандарте найти?
972387
14 Кб, 415x365
#120 #972387
>>972386
Нашёл.
#121 #972393
>>972350
Попробуй ангуляр там, или питон. Очевидно, что кресты это не твое.
972399972402
#122 #972399
>>972393
Конкретно эта ошибка - один из многочисленных багов в студии. Студия - это не кресты, это студия.
972402972403
#123 #972402
>>972399
>>972393
Так я знаю.
В общем в десятый раз все переустановил, ошибка не пропала - но код заработал.

>>972366
Благодарю, качаю.
#124 #972403
>>972399
в чем баг конкретно?
972424
206 Кб, 1280x1024
#125 #972407
Бенчмарк говорит что моя либа говно. Красивые лямбды function<Scalar(Scalar)> с захватом чего угодно и управлением стеком за экраном дают прирост производительности всего 30% (в сравнении с обычным скриптом), а если просто на Си сделать stack[0] = factorial( stack[0] ) - прирост производительности 970%
972424972430
#126 #972424
>>972403
В том, что в какой-то момент студия начинает предлагать пересобрать проект после каждого запуска, и при этом ничего не клмпилирует и не линкует, только один файлик какой-то обновляет. Читай ссылку на СО, там у людей в точности то же.
>>972407
Ты не смог, но ты пытался. Попробуй -O3. Команды матчишь мапом? Есть перфект хэш, вроде: даёшь набор ключей, и он минимизирует линейный поиск по вёдрам.

Оу, и ещё: http://en.cppreference.com/w/cpp/io/ios_base/sync_with_stdio . Если ты из входа читаешь, это важно.

И -funroll-loops попробуй.
972425972488
#127 #972425
>>972424

>сли ты из входа читаешь, это важно.


А, стоп, у тебя там цикл же. Не, неважно.
#128 #972427
>>972350
Это такая шутка? Ты не можешь просто нажать да?
#129 #972430
>>972407
std::function это типа shared_ptr: почти всегда (за исключением размера лямбды ≤ 1-2 sizeof(void*)) динамическое выделение памяти и подсчёт ссылок.
972488
#130 #972474
Здарова, куканы.
Подскажите, пожалуйста, хорошую (не обязательно популярную) библиотеку для работы с асинхронным IO (файловые операции и сетевые сокеты обязательно), можно даже на Цэ.
972649
71 Кб, 891x479
139 Кб, 1041x667
31 Кб, 877x133
#131 #972488
>>972424
Коллбеки лежат в четырёх unordered_map<string, function> и в зависимости от контекста вызова и количества аргументов выбирается одна из мап и вызываеется функция _callbacks.find(name).second(arg)

Такие названия функций из-за того что шаблоны и перегрузка функций не работают с function<void(...)> и function<...(void)>

На 3 создание функции, эквивалетное sub sub_name { ... }
Работает со скоростью света, но как оказалось обернуть function ни во что нельзя, и чтобы пользоваться этим нужно лезть в самые внутренности интерпретатора, которые никто кроме меня не понимает

>>972430
И как быть, может указатели на std::function хранить?
972490972510
#132 #972490
>>972488
Какая же ебанная лапша.
Прости Господи.
#133 #972510
>>972488

>И как быть, может указатели на std::function хранить?


Чтобы ещё из-за одного уровня indirection больше тормозило?
#134 #972528
Помогите найти ошибку http://ideone.com/Ez0l8f пожалуйста. Лаба до затра горит.
1689 Кб, 200x150
#136 #972543
#137 #972649
>>972474
Очевидный boost::asio (годные гайды ищи сам, их вроде не существует)
#138 #972656
>>972528
У тебя там delete[] в деструкторе вызывается для обычных указателей, не на динамическую память. Конечно же ошибка
972794972903972904
#139 #972706
почему в gcc 6.3.0 не завезли std::quick_exit ?
error: 'quick_exit' is not a member of 'std'
972710
#141 #972750
>>971128
ЧТО ЕТО ЗА НАХУЙ?!
У меня кровь из глаз полилась. Это бложик фемо-спортсменки-программистки на ютубе? WTF?!
#142 #972794
>>972656
либо nullptr пусть пишет
#143 #972804
>>971128
теребонькнул
#144 #972899
>>972528
Надеюсь на то, что уже сгорела.
#145 #972903
>>972656
Там не только в этом проблема. :3
#146 #972904
>>972656
Скажем так, delete[] и должен вызываться для обычных указателей - указатели, с которыми работает delete[], ничем не отличаются от указателей, с коротыми работает delete.
972905
#147 #972905
>>972904
Кроме......
#148 #972968
Кто-нибудь может сказать, если для работы требуется opengl версии 2, а у меня 4.5, работать не будет? Они не совместимы?
973110
#149 #973110
>>972968
Можете не отвечать, если кому пригодится

http://www.prog.org.ru/index.php?topic=27216.msg196943#msg196943
#150 #973245
>>971008
Бамп
#151 #973271
Помогите разобраться с gtkmm, хотелось бы книжек или гайдов где всё подробно расписано, гуглил, не нашёл.
#152 #973310
У меня программа крашится на выходе, причем иногда она крашится, а иногда, блеать, завершается с кодом 0. Я все деструкторы проверил, вроде память не течет. Что могло пойти не так? Если что, у меня Qt-объекты.
973315
#153 #973315
>>973310
Падает из-за Segmentation Fault. Как его найти-то теперь?
973317973355
sage #154 #973317
>>973315
valgrind
973318
#155 #973318
>>973317
Я на шиндошс пишу
sage #156 #973319
>>973318
Это же Qt, скомпилится где угодно.
sage #157 #973320
>>973318
Вот какая-то петушня есть http://www.drmemory.org/
#158 #973323
>>973318
Gflags
#159 #973339
Как грамотно запретить создание второго объекта класса при соответсвующем дефайне?

Yoba::Yoba()
{
_id = _lastid++;
#ifndef MULTIPLICITY
if(_id > 0)
throw ...
#endif
}

как-то не очень выглядит по-моему, но ничего другого в голову не приходит
#160 #973341
>>973339

> Как грамотно запретить создание второго объекта класса при соответсвующем дефайне?


Синглтон?
973359
#161 #973355
>>973315

>Как его найти-то теперь?


Дебуг билд и GDB.
>>973318
Можешь взгромоздить любую линукс-ОС и скомпилировать там.
#162 #973359
>>973341
Бочку?
#163 #973466
>>973339
Городить дефайны внутри конструкторов крайне грязно и выдаёт плохой вкус к коду.

Лучше напиши отдельный синглтон-класс и отдельный просто-класс. Дефайном определяй тип класса.

Как-то так:
//defines.hpp
#ifdef MULTIPLICITY
#define Yoba MultiYoba
#else
#define Yoba SingleYoba
#endif

//main.cpp
Yoba* yoba = new Yoba();

Т.е. в коде создание класса будет чистым, без мусора, а весь мусор будет скрыт в отдельный файл.
973482973500
#164 #973482
>>973466
Блядь, за полчаса даже никто не обосрал меня за то, что я использовал дефайны вместо тайпдефов? Цепепетред, ты меня разочаровал.
#165 #973500
>>973466
MultiYoba это неплохая идея кстати. Я через #ifndef просто прятал ряд методов которые не нужны в однопоточном приложении, а можно же просто наследовать в класс Multi и добавить эти методы туда.
973503973581
#166 #973503
>>973500
Только используй тайпдефы, а не дефайны, так надёжнее.
973512
#167 #973512
>>973503
Да тут препроцессор вообще не нужен. Можно просто сделать вроде

class MultiYoba : public Yoba
MultiYoba::test()
{
pthread_set_context();
Yoba::test();
}

а базовый класс вообще не трогать
#168 #973528
>>973339
const bool MULTIPLICITY=true;

Yoba::Yoba()
{
_id = _lastid++;
if(MULTIPLICITY && _id > 0)
throw ...
}

Чо сложного-то?
973532
#169 #973532
>>973528
Но компиляция, -DMULTIPLICITY там..
973536
#170 #973536
>>973532
Так бы и сказал. С какого фига то, что может навредить программе, управляется из компилятора, кстати?
973543
#171 #973543
>>973536
Так же все делают? Единственное, что мне не понравилось - это когда библиотека собирается с одними дефайнами, которые меняют код, а приложение, с котором линкуется библиотека, компилирует заголовки библиотеки с другими дефайнами - никаких ошибок компиляции нет, только сегфолты в рантайме.
973602
#172 #973581
>>973500
Не проще использовать подходящий паттерн?
стратегию, например?
973632
#173 #973602
>>973543

>Так же все делают?


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

Иногда пишут объфвления констант перед инклудом, чтобы в инклуде была нужная константа - эта практика лучше.
#174 #973632
>>973581
Все паттерны - это рантайм. Зачем ему лишний оверхед?
#175 #973738
>>973339
Ну используй фабрику или фабричный метод, например:

class Yoba {
public:
static std::unique_ptr<Yoba> create();

private:
Yoba();
};

std::unique_ptr<Yoba> Yoba::create() {
#ifndef MULTIPLE_INSTANCES
return std::unique_ptr<Yoba>(new Yoba());
#else
static std::atomic<bool> instanceExists(false);

bool expectedExists = false;
if (instanceExists.compare_exchange_strong(expectedExists, true, std::memory_order_acq_rel, std::memory_order_seq_cst)) {
return std::unique_ptr<Yoba>(new Yoba());
}
#endif
}
#176 #973896
Можете закидать меня ссаными тряпками. Как подключить spdlog к своему проекту? Я хочу, чтоб эта хуёвина лежала в исходниках моего проекта. Скопировал я её к себе, подключил header, пытаюсь собрать, а visual studio мне такая: "пошёл ка ты нахуй" говорит test\test\spdlog\spdlog.h(12): fatal error C1083: Не удается открыть файл включение: spdlog/tweakme.h: No such file or directory хотя этот файлик в скопированной папке лежит. Я явно что-то делаю не так. Ткните мордой, что именно
973900974053
#177 #973900
>>973896
Тебе нужно прописать пути включений файлов, смотри в настройках препроцессора, если я не ошибаюсь. Если это к тому же не header-only библиотека, тогда тебе нужно в путях поиска линковщика добавить путь к библиотеке (самому .lib файлу) и добавить в список линкуемых библиотек ее (соотвественно my_static_lib.lib)
973901
#178 #973901
>>973900
Это header-only library.
Как-то ебануто выглядит прописывать в путях включения путь к проекту
Если пути включения прописать всё заебись работает
974049
#179 #974049
>>973901
Хм, а относительные пути не поддерживаются? По идее должны, но тут точно ничего сказать не могу.
#180 #974053
>>973896
ООООООООО, слушай, я догадался.
https://github.com/gabime/spdlog/blob/master/include/spdlog/spdlog.h

Включение в угловых скобках. Это допустимо только тогда, когда хеадер в папках поиска. Когда ты добавляешь пути инклудов, ты расширяешь жтот список, и всё работает.

Если ты этого не сделал, то если инклуд находится в папке "проекта" в папке H и хочет включиьт инклуд из отй же папки, то в нём должно быть не
#include "H/fuck.h" - это означает "H/H/fuck.h", так как это путь относительно этого инклуда, а
#include "fuck.h".
974295
#181 #974127
Как сделать статический блок в const функции?

virtual string to_string() const
{
if(!_loaded) { // нельзя менять поля в const
_loaded = true;
load()
}
...
}
974128974276
#182 #974128
>>974127
mutable
77 Кб, 807x430
5 Кб, 252x270
#183 #974192
Сап сиплюсач.
Ты - последняя надежда.
Нигде не смог найти инфы как это сделать и вообще можно ли так.
Нужно в один датагрид визуалка 2010 засунуть 2 и более таблиц, чтобы они отображались как одна посредством связей как в ацессах, при нажатии на какую-то строку.
Пробовал через запросы, указывал несколько таблиц, заполнял коллекции - либо отображалась одна таблица, либо совсем ломалось.
Возможно ли такое и как это сделать?
974205975123
#184 #974205
>>974192
Попробуй загуглить "c++ forms datagridview несколько таблиц", там вроде достаточно ссылок с возможными решениями.
Сам я не помогу - не шарю.
974211
#185 #974211
>>974205
Дак в том-то и дело, что все уже прогуглено.
Из подобного выдает все онли для шарпа.
Пытался переписать код от шарпа - не смог, одни ошибки.
974219
#186 #974219
>>974211
Если ты всё же хочешь получить какую-то помощь, нужно дать больше информации. В формах ты шарящего вряд ли тут найдёшь. Если не боишься, можешь проект кинуть, наработки, что пытался делать.
#187 #974276
>>974127
Не понял, объясни.
974360
#188 #974295
>>974053
Я остановился на том, что прописал путь во включения.
#189 #974360
>>974276
Метод to_string должен один раз подгрузить ресурсы при том что он const.
Поле mutable bool _loaded вроде работает
974473
#190 #974473
>>974360
Не забудь про thread safety.
#191 #974496
Вкатился в кресты, полёт нормальный. До этого полтора года страдал хуйнёй на пистоне. Учу тут http://www.learncpp.com/
Стоит добавить в шапку этот сайт, как по мне.
#192 #974538
кто - нибудь реально на крестах работает из всего треда?
974548974564974599
#193 #974548
>>974538
Не думаю. Что бы на них работать нужно быть оче жестким спецом, а как для хобби кресты самое то, я щитаю.
#194 #974564
>>974538
работаю крестовым сеньором-помидором, но сижу, в основном, в ридонли.
#195 #974572
Тупой первак итт. Если у меня в вордовском доке таблица, и мне нужно считывание строки, при чем в некоторых ячейках много строк.
Если я сделаю так
string S;
while ( getline(in,S))
{
}
У меня будет считываться строка таблицы или строка ячейки?
974584974605974613
#196 #974584
>>974572
Ты бинарную кашу считаешь, а не строки и таблицы.
sage #197 #974599
>>974538
пишу под эмбедед на плюсах
тред чуть менее, чем полностью состоит из легко-прогугливаемых вопросов от школьников и вкатывальщиков. поэтому r-only
#198 #974605
>>974572
Открой текстовым редактором вроде Notepad++ и посмотри, что ты читаешь.
Тебе может помочь OLE Automation ебучий кошмар, нирикамендую или какая-нибудь либа примеров не знаю
#199 #974613
>>974572

> Если у меня в вордовском доке таблица, и мне нужно считывание строки,



Binary office formats specification.
XML office formats specification.
#200 #974642
Горения жепы тред
Вся суть плюсов:
std::string str = "Hello";
const char* str_c = str.c_str();
printf("%s\n", str_c);
str += "Dude";
printf("%s\n", str_c);

Такой Оохуенный const, что второй раз будет напечатано HelloDude. Ебучий язык
#201 #974643
>>974642
Вы морально не готовы к крестам.
http://stackoverflow.com/questions/2156305/double-const-declaration
974648
#202 #974648
>>974643
Я в курсах про константный указатель на не константные данные, и не константный указатель на константные данные. Просто нахуй у меня бомбит от этого ебанутого дизайна, ебучие байтоебы, лучше бы константные строки сделали с другим модификатором.
#203 #974657
>>974642
Соответственно, еще такой вопрос:
Если я хочу написать свой класс исключения, который наследуется от std::runtime_error, но содержит еще дополнительную информацию - номер строки, имя файла, имя функции и тд. Я определяю конструктор так:
BaseException(const char msg, int line, const char file, const char function) :
std::runtime_error(msg), m_line(line), m_file(file), m_function(function), m_exceptionType("BaseException") {}

Пока все ок, но я еще хочу написать свою функцию what(); которая вернет одну const char
которая является конкатенацией std::runtime_error::what() и моих полей(m_function, m_file и тд). Как это сделать? Если я просто создам строку внутри функции и верну s.c_srt() то у меня будет хуйня, т.к. объект на стеке и после выхода он наебнется. Получается, единственный варик - создавать еще одно дополнительное поле в классе моего исключения?
974663974668974886
#204 #974662
>>974642
Написал хуйню, ничерта не понимая - виноват язык. Следущий
#205 #974663
#206 #974664
Сап, анон.

Есть задача, которая подразумевает считывание чисел из файла. Если создавать буфер и ifstream'ом туда пихать, а затем засовывать в массив, то все работает хорошо. Если же использовать fgets, считывая по символу и формируя строку с числом, которая потом вновь оказывается в массиве – программа ломается на одном из тестов (содержание тестов неизвестно).

Есть предположения/мысли, что я мог не учесть, забыть и так далее? Считывание на известных тестах работает правильно.
974667974669974670
#207 #974667
>>974664
если есть вариант считать даблы из файла каким-нибудь еще более быстрым способом, то будет вообще здорово.
14 Кб, 542x81
#208 #974668
>>974657
А если захочешь соединять поля во what(), придётся делать ещё одно поле, потому что результат контатации строк тоже где-то надо хранить
974685974886
#209 #974669
>>974664
Щас я вселюсь в птичку, и узнаю, что там внутри этих тестов и твоего кода.

Ну серьезно, телепаты в отпуске.
974670
#211 #974685
>>974668

>А если захочешь соединять поля во what(), придётся делать ещё одно поле, потому что результат контатации строк тоже где-то надо хранить



Так на пике же не так?или это такой тонкий подъеб?
#212 #974686
Хочу создать аллокатор с 2 шаблонными параметрами, при этом второй параметр зависит от первого. Пишу:
template<typename T, void f(T)> myallocator: public std::allocator<T>

И вот, по ходу дела нарываюсь на rebind:
template<typename Tp1> struct rebind{
typedef myallocator<Tp1,(???)> other;
}

И что это, ебать? Затребовали создать то же самое, но с другим названием параметра шаблона, заебись! Ну так а мне что ставить на месте (???) ?

При создании объекта как 2 аргумент шаблона передаётся указатель на функцию void f(T). В rebind в typedef вроде как должна использоваться void f(Tp1). Но хуй там, мы уже передали в параметр шаблона void f(T).

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

Что за долбаебы писали STL?

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
974691974702
#213 #974688
>>974642
The pointer obtained from c_str() may be invalidated by:
- Passing a non-const reference to the string to any standard library function, or
- Calling non-const member functions on the string, excluding operator[], at(), front(), back(), begin(), rbegin(), end() and rend().

Что тебе непонятно?
#214 #974690
>>974670
Почему читается по два байта за раз из потока?
974694974699
#215 #974691
>>974686

>Что за долбаебы писали STL



Причем тут шаблоны и стл? Стл писал математик из мгу, поэтому они такие и хуевые. А по шаблонам есть книги Александреску и Вундервурда где на 1к+ страниц все подробно разъяснено почему так, а не иначе. После прочтения, сможешь запускать программы на этапе компиляции, ибо шаблоны полны по тьюрингу
974692974693974701
#216 #974692
>>974691

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


Брайнфук тоже полон. Только на нём не напишешь нихуя полезного. Как и на шаблонах.
Dmitry #217 #974693
>>974691

>по тьюрингу


По фрейду маня.
974696
Dmitry #218 #974694
>>974690
Буфферизация такая ;)
#219 #974696
>>974693
Нахуя что-то писать, если нечего сказать по делу. Лишь бы спиздануть хуйню какую-то.
974705
#220 #974699
>>974690
потому что вторым символом всегда кладется нулевой, или это не так работает?
974704
#221 #974701
>>974691
При том, что в STL посрать негде, везде напиханы ебучие шаблоны, и уж если они их использовали, то обязаны были сделать все юзер френдли. Эти уебки блять пишут СТАНДАРТНУЮ библиотеку, а не васянский высер (тогда я бы понял), при этом обоссываясь на каждом шагу и говнокодя гнилые костыли которые разваливаются к хуям при первом пуке
#223 #974704
>>974699
Ты о чем? У тебя в файле чего изначально записано то?
974709
Dmitry #224 #974705
>>974696
Оно не юзабельно, еще что сказать?
Зачем на этапе компиляции исполнять, ты поехавший? Вместо динамического бинарника 8кб тащить С++ тулчейн - охуеть
974710
#225 #974709
>>974704
в файле обычные даблы в формате 1.2342, судя по тем тестам, которые у меня есть. В каждой строке n штук, строк также n.

Мне нужно сделать NxN матрицу из них. Длину одного числа я не знаю заранее (может быть 1.0, а может 121.77).

Есть вариант с ifstream, но хотелось бы чего-нибудь побыстрее.
974711
#226 #974710
>>974705

>Зачем на этапе компиляции исполнять



Потому что можносовсем отупели со своими байтами, уже в сарказм не могут. То, что так можно делать, как бе намекает, что шаблоны - кривой высер
#227 #974711
>>974709
Чем числа в строке разделены, пробелами?
Если да, то читаешь строку из файла
std::string buf;
std::getline(stream, buf);
Инициализируешь этой строкой строковый поток
std::stringstream ss{buf}
Читаешь из строкового буфера числа
while (!ss.eof())
{
float i;
ss >> i;
}
974716
#228 #974716
>>974711
да, пробелами. Мне нужен максимально быстрый вариант, собственно поэтому пришел сюда.

Этот самый быстрый или есть еще круче?
974720
#229 #974720
>>974716

>или есть еще круче



обычный scanf же быстрее
http://stackoverflow.com/questions/1042110/using-scanf-in-c-programs-is-faster-than-using-cin
974722974766
#230 #974722
>>974720
с fscanf выполняется 12.953 секунд в лучшем случае, с stringstream слишком долго выходит.

Пока что лучший результат получается с ifstream с записью в буфер – 12.713, а потом преобразованием с помощью stod. Это граница или можно еще лучше?
#231 #974765
>>974642
твой c_str вообще может указывать на незанятую память, так как приконкатенации возможен реаллок.
#232 #974766
>>974720
Бабка надвое скказала. Изначально cin/cout/cerr не буферизуются вообще, так как авторы стандарта предполагали возможность использовать iostream вместе с stdio.h.

Но у поциента не cin, у него считывание из файла, и там такой инхронизации нет. Прочитай свой ответ до конца.
#233 #974786
Хочу разобраться с передачей объекта по стеку вызов и в каких случаях нужно писать return std::move().
http://cpp.sh/5ao2f - что за магия тут происходит? Получается делать return std::move() бесмысленно потому что это поведение по умолчанию?
974788974843974858
#234 #974788
>>974786
Точнее даже круче, потому что объект просто создаётся в main.
#235 #974840
Решил Branch Prediction протестировать. Сравнил производительность версии с богомерзкими if'ами и няшными указателями на функции. Получилось вот что:

https://pastebin.com/7iawqUSx

Unbranched-версия обычно быстрее на 5-10%, хотя в некоторых случаях Branched-версия вырывается вперёд. Кто может пояснить, почему так? В каких случаях лучше использовать какую версию?
974860
#236 #974843
>>974786
То что у тебя происходит называется RVO и оно более эффективно так как полностью исключается вызов move-конструктора. Стандарт напрямую разрешает компилятору такие оптимизации, даже если move-конструктор имеет сайдэффекты (и такая оптимизация поломает твою программу). В стандарте это упоминается как copy elision (более широкий случай который кроме move-конструктора покрывает еще и copy-конструктор). Если ты нормальный парень и твои move-конструкторы не имеют сайдэффектов, то писать return std::move() нет смысла - просто возвращаешь значение и компилятор или оптимизирует с помощью RVO или вызовет move-конструктор. Использование return std::move() может принудительно вызвать конструктор (если его вызов необходим ради сайдэффектов), но тут наверное от компилятора зависит. Я не думаю что есть что-то что запрещает хитрожопому компилятору просто проигнорировать вызов std::move() в таком случае, хотя хуй знает на самом деле.
974862
sage #237 #974858
>>974786
Заебали с платиновыми вопросами. На SO объяснили всё уже 100 раз.
#238 #974860
>>974840
Посмотрел ассемблерный листинг. Branched-версия генерирует cmp+jbe, Unbranched-версия - cmova и call по QWORD PTR. Кто может пояснить по хардкору за подобное? Говорят, cmov* многократно быстрее, но есть ли где-нибудь полное разжёвывание по полочкам?
975016
#239 #974862
>>974843
Я пока посмотрел на SO, там говорят что надо везде писать return value. Сделал так у себя и посмотрел что с конструкторами происходит. Обнаружилось что если сделать так

return create_object().modify();

то вызывается конструктор копирования, а если так

Object result = create_object();
result.modify();
return result;

то вызывается только стандартный конструктор и только один раз (внутри create_object). Вторая конструкция правильная.
modify() возвращает *this если не понятно
#240 #974886
>>974668
>>974657

Аноны, помогите. Если просто добавить в класс еще одно поле, то энивей его надо инициализировать в конструкторе, т.к. what() имеет модификатор const и модифицировать строку я уже не могу. Офк можно просто создать свой метод, а не юзать what(), но можно ли как-то канонически написать свое исключение?
974937
#241 #974937
>>974886
Например добавь const поле в класс, а в what() сделай не const ссылку на него (что-то типа std::string& s = const_cast<std::string&>(this->message);) и через эту ссылку измени.
#242 #974957
Ананасы, где можно почитать, как работает RTTI?
974975975023975031
321 Кб, 1280x1024
#243 #974969
И так, TODOшки подходят к нулю и 175 тестов стабильно проходятся параллельно в нескольких тредах, можно выкатывать версию 0.0.1.
https://github.com/theanonym/libyoba-perl

Всего ушло около 3 недель и 2500 строк, осталось ещё добавить интеграцию с некоторыми модулями вроде AnyEvent, добавить поддержку событий для лучшей связи с интерпретатором
974970975093
#244 #974970
>>974969
Заебись название
#245 #974975
>>974957
А что там читать-то?

Если какая-то абстракция предусматривает явное указание начала и конца работы с ней (выделение/освобождение памяти, открытие/закрытие файла или сокета, монопольный захват/освобождение устройства), то вызов начала работы с ней должен быть в конструкторе, а конца - в деструкторе класса-обёртки.
975019
#247 #975019
>>974975
Просили про RTTI, зачем ты рассказываешь про RAII?
975024
#248 #975023
>>974957
Оно зависит от ABI.
В Itanium C++ ABI RTTI устроен довольно просто, информация об иерархии классов "закодирована" в std::type_info (в наследниках от него). https://itanium-cxx-abi.github.io/cxx-abi/abi.html

В MSABI посложнее, но тоже давно отревершено, нагуглишь легко.
975031
#249 #975024
>>975019
А, чёрт. Зачем столько одинаковых аббревиатур? Я так годное место работы чуть не просрал, перепутав STL с SFML.
#250 #975031
#251 #975093
>>974969
Что-то у тебя с документацией скудновато, как я посмотрю. Хотя бы Doxygen для приличия влипил (@briedf @param @return и вся хуйня), потом это сложнее будет документировать, ИМХО.
975269975426
Аноним #252 #975123
>>974192
Как писать на С++ по windows( формы и т.д.)? что читать(какие средства разработки)?
975127975560
#253 #975127
#254 #975253
>>970816 (OP)
Анон, читаю книгу Страуструпа - Программирование. Принципы и практика использования C++, и чет как-то мне не понятно, это перевод наш косячный, или такая книга и есть.
Стандартную библиотеку предлагают в книге скачать, д.к. она не работает, что бы я не делал. Функция sort() вообще как-то по странному вызывается. В задачах текст написан так, что я не понимаю, что от меня хотят. И это только начало. Кто читал? Скажите, дальше в таком же духе будет? Может есть книги покачественней? Понимаю, что книга от создателя языка, но уже многовато косяков.
#255 #975267
>>975253
Читай это.
http://www.learncpp.com/
Автор все топики обновляет, объясняет доходчиво.
Правда на ангельском.
Мне, как новичку в крестах, заходит на заебись.
Потом уже сам буду какие-то книги искать.
#256 #975269
>>975093
У меня есть настроенный доксиген, генерирует index.html и прочие страницы, но как его на github.io залить кто-нибудь знает?
975276
#257 #975276
>>975269
Создать сает на Github pages и залить туды.
#258 #975301
>>975253

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


Шта?
#259 #975321
>>975253
Она платная если что.
Но даже так там столько говна, что я бы подумал
975326
#260 #975322
>>975253
Тоже учу кресты по нему. Косяков многовато, но я мазохист и мне нравится разбираться, почему не работает то или иное. По поводу sort() это косяк нового издания, он есть и в оригинале. Чтобы работало, нужно, во-первых, прописать #include <algorithm>, во-вторых, писать так: sort(v.begin(), v.end()), где v - вектор.
По поводу говно "библиотеки", которую Страуструп пихает в начале std_lib_facilities.h, скажу что у меня она тоже не работает. Если тебе нужны векторы, то пиши #include <vector>, правда не забудь включить поддержку стандарта c++11 в своем компиляторе.
975387
#261 #975326
>>975321
Кто платная? Книга? Ссылка на перевод есть в шапке.
#262 #975327
Я долбоёб. Как мне две функции под один шаблон запихать?
975372
#263 #975372
>>975327
Гхм, нахуя? Каков будет результат запихивания в один шаблон, по-твоему?
#264 #975385
>>975253
Вангую что ты скачал старую библиотеку, а тебе нудна новая .тоже с ней ебся, пока не погуглил на стаковерфлов. Вобщем, гугл в помощ
#265 #975387
>>975322
Да, я тоже смог разобраться с сортировкой. С одной стороны, нахуй такие издания книг. С другой стороны, пока найдешь, почему это говно не работает, узнаешь овердохуя.
#266 #975398
Товарищи, срочно нужна помощь, через час еду в универчик, а лабу переделать так и не успел.
Как проверить на равенство 2 действительных чилса
Вот кусок кода который нужно исправить
while( a>=x1 ) ;
printf("--------------------\n" );

printf("\n" ); printf("\n" );
} ;
Скину 50р на тел. ответившему, больше нет на карте
975408975411
#267 #975408
>>975398
a == b
Как оплатить удобнее?
#268 #975411
>>975398
if (epsilon > abs(a - b)) { ... }
где epsilon это необходимая точность, типа 0.00001
#269 #975426
>>975093
Так, получилось залить доксиген https://theanonym.github.io/libyoba-perl/annotated.html
Можете посмеяться над моим английским, серьёзные ошибки неплохо бы исправить пока
#270 #975560
>>975123
wxWidgets
#271 #975625
Не могу понять -
int f(int n, int a, int b) {
if (n > b) return 0;
if (a <= n && n <= b) return 1;
return f(2 n + 1, a, b) + f(2 n + 2, a, b);
}

1. Какие рекурсивные вызовы будут сделаны при запуске f(0, 7, 13)?

2.Что вернет вызов f(0, 1000000000, 123456789)?

3.Чему равно возвращаемое значение f(0, a, b) в общем случае?
975650975731
#272 #975635
struct MyStruct{
MyStruct(){}
~MyStruct(){}
int v;
};

MyStruct a[10000000];

На ассемблерном уровне - будет ли у нас вызван конструктор миллион раз, даже если он пустой, или нет?
975649975651976213
#273 #975649
>>975635
Нет, у тебя инициализация v не прописана, конструктор пустой.
975665
#274 #975650
>>975625
1) 1, 7, 13 ; 2, 7, 13; 3, 7, 13 .... 14, 7, 13
Вроде.
#275 #975651
>>975635
Зависит от опций компиляции. C -O2/3 скорее всего не будет.
#276 #975665
>>975649
Понятно, что конструктор пустой и ничего не будет инициализировано. Но будут ли вызовы конструктора вообще?
975731
sage #277 #975680
>>975677
Ты правда настолько туп, что не знаешь, как сгенерировать ассемблерный листинг?
976213
#278 #975718
Объясните реализацию графов на с++.
975729975731975739
#279 #975729
>>975718
Нахуй иди, вместе с этой гнидой - >>975677
#280 #975731
http://cpp.sh/9ks32
блядь блядь блядь блядь блядь блядь блядь блядь блядь блядь блядь блядь блядь
>>975625
1. Прочти свой код и выполни его без помощи компутера.
2. Не знаю.
3. Не знаю.
4. Иди нахуй со своей домашкой.
>>975665
Бабушка надвое сказала. Компилятор волен делать всё, что угодно, и конструкторы он может вызывать, а может и не вызывать, если видимое поведение не меняется (сторонние эффекты в конструкторе к видимому поведению не относятся). То есть, если у тебя в конструкторе только вызов какой-то функции, которая на состояние объектов (cin/cout и т.д. не в счёт) не влияет - компилятор может вобще не вызывать конструктор.
>>975718
struct node {
T payload;
vector<node*> edges;
} - если направленный. Если ненаправленный - чуть сложнее.
975737976213
#281 #975737
>>975731

>http://cpp.sh/9ks32


>bool c[2];


Хаха.
Ну вы и убогие все же.
975739975765
#282 #975739
>>975718

>http://cpp.sh/9ks32


Чёйта? Там инта в инициализации не хватает, если про это.
>>975737
Это ты в треде с базами срёшь?
975745975765
#283 #975745
>>975739
Я вездесущий и вездесрущий.
Проблемы?
975753
#284 #975753
>>975745
Да не, нормально всё.
975756
#285 #975756
>>975753
Вот и умничка.
шлепнул одобрительно по заднице
#286 #975765
>>975739

>Там инта в инициализации не хватает, если про это.


Вот именно. На кой ляд вообще нужны эти списки, в которых можно указывать не все члены? Пердолинг такого же рода, как и дефолтные аргументы - специально нужно ранжировать аргументы по вероятности их использования.
>>975737
Есть альтернатива? Инбифо bitset.
975767975769975773
sage #287 #975767
>>975765
Он просто взял рандомную строку из твоей программы и подписал

> Хаха.


> Ну вы и убогие все же.



Нахуй на такое вестись?
975770975797
#288 #975769
>>975765

>bitset.


Если место важно кеш там и тд - то да.
Но это всё смешно в любом случае :3
#289 #975770
>>975767

>Нахуй на такое вестись?


Потому что дебилы вроде тебя, например
Так-то.
#290 #975773
>>975765
То есть - можно? У меня не скомпилилось.
975777975797
1188 Кб, Webm
#291 #975777
>>975773

>У меня не скомпилилось.


Лучший тред.
#292 #975797
>>975767
Про bitset - это тоже шутка, знаешь ли. В высокоуровневом языке использовать bitset - это охуевшим быть.
Так что ты тоже повёлся.
>>975773
В этот раз без оскорблений, в следующий раз будьте внимательнее.
http://cpp.sh/2lcb
975800975801
306 Кб, Webm
#293 #975800
>>975797

>с++


>высокоуровневом языке

#294 #975801
>>975797
Понятно. Можешь сходить пожаловаться к C-богам. Мы тут только лабы первокурам решаем.
#295 #975807
У меня есть дерево, нужно реализовать поиск по имени вершин. Но так, чтобы потом по результатам поиска была возможность еще раз провести поиск. Не могу придумать, как так передать вершину в метод рекурсивного поиска, чтобы дерево-результат не было зачищено.
975810975812975813
#296 #975810
>>975807

>рекурсивного


Ясно.
975811
#297 #975811
>>975810
Это моя идея. Да и на итог она мало влияет.
975815
#298 #975812
>>975807
Братишка, спроси у своих сокурсников. Никому не интересно ваши лабы решать. Кроме того, тут кроме меня и пары троллей, никого нет.
975817
sage #299 #975813
>>975807
Ни хрена не понял из твоего описания.
975817
#300 #975815
>>975811

>моя идея


Соболезную.
#301 #975817
>>975812
Я прошу только помощь с алгоритмом.
>>975813
Имеется дерево, у каждой вершины есть имя. Хочется провести поиск по этим вершинам и отобрать только те, которые имеют определенное название. То есть получить новое дерево-результат. Но, возможно, из дерева результата придется еще раз выбрать подходящие уже под другой шаблон вершины.
975819975820
sage #302 #975819
>>975817
Так если результаты складываются в новое дерево, в чём проблема потом по нему искать?
975823
#303 #975820
>>975817
Поиск в глубину ищи (DFS).
975823975825
#304 #975823
>>975819
Есть у меня исходное дерево. Я закидываю его в дерево-ответ. В случае если ни одного запроса не пришло, выдано будет оно. Теперь я хочу искать по этому дереву. Но результаты будут складываться в него же. Причем хотелось бы удалить старые ссылки, но как разобрать, что результат нового поиска, а что старого?
>>975820
Это не принципиально, как по мне.
975829
#305 #975825
>>975820
Так, я чет задумался, что это вроде и есть это, пошел погуглил. Это и есть тот обход которым я пользуюсь.
#306 #975829
>>975823
Зачем скидывать в это же дерево, если можно скидывать в другое?
975834
#307 #975834
>>975829
И каждый раз создавать новое дерево? И как это реализовать то? У меня это все в классе выполняется, где дерево-ответ является свойством объекта. Хотя возможно если завести новое дерево-буфер, перед всем шоу его очистить, туда перекинуть ответы, а потом дереву-результату присвоить дерево-буфер, то все будет хорошо. Вот так видимо сделать можно.
975848
#308 #975848
>>975834

> а потом дереву-результату присвоить дерево-буфер


return дерево-буфер;
никак?
975855
#309 #975855
>>975848
Что-то типа этого я и говорил. Хотя идея создавать дерево-буфер внутри функции поиска несколько облегчит код, спасибо.
975860
sage #310 #975860
6 Кб, 830x187
#311 #975879
Спокойно себе отлаживал по шагам программу и тут вылезает пикрелейтед, что это значит и с чем связано, подскажите пожалуйста...
975887975895976055
sage #312 #975887
>>975879
Блядь, как вы все заебали сюда писать всякой хуйнёй.
Лаба не конпилируется, двач, памаги!!1
MSVS показал нипанятное акошко, двач, памаги!

Идите нахуй.
#313 #975895
>>975879
Зашёл в бинарник - там страна ассемблера, "source not available". Обычно хватает прожать несколько раз shift-f11, если будет реагировать вообще.
#314 #976055
>>975879
ты в глаза долбишься или куда?
тебе английским по чёрному написано, что сырцы на бинарник в дебаг метаинфе не залинкованы: открывай стек, смотри, где ты находишься (какая DLL или либа) и перекомпиливай её с PDB. либо же у тебя визуалка PDB не видит. откда такие дауны вылазят?
976097
#315 #976097
>>976055
Да эти макаки в студии не могут найти эти ключи.
А без студии хелло ворд не напишут.

Тру стори.
976115
#316 #976101
Анон, поскажи добротный бесплатный профайлер под MSVC но без использования студии (проект CMake-ом собирается).

Сейчас приходится под прыщами Valgrind-ом пользоватся, но проект требуют профилировать и в шинде (от чего я в тупике).
976102976128976135
#317 #976102
>>976101
CodeXL жи.
976103
#318 #976103
>>976102

>CodeXL


Херасе.
Завтра испробую. Спасибо.
#319 #976115
>>976097
Сейчас набежит местный школьник и начнёт боготворить MSVS и обвинять тебя в использовании vim.
976130976169
#320 #976128
>>976101
хуя, а как ты valgrind'ом умудряешься профилировать?
976129
#321 #976129
>>976128
callgrind, cachegrind
#322 #976130
>>976115
ещё один аутист: он говорит о том, что школьники не найдут нужный флаг в msvc, а ты vim впихиваешь зачем-то
#323 #976135
>>976101
в msvc 2017 встроена поддержка cmake. импортишь и профилируешь прямо из визуалки.
второй вариант для эстетов -- попердолится и запустить сборку с cmake, но с визуальным компилятором (включив нужные флаги чтобы метаинфа была). и уже потом аттачиться к приложению и профилировать его визуалкой.
#324 #976169
>>976115
ты меня запомнил!
#325 #976175
ананасы, есть проект на Qt Widgets. получится его задеплоить на андроид? специфичные либы, вроде бы, не использовал, только буст чуть-чуть.
976215976217
#326 #976213
>>975635
>>975731
Вообщем нашел ответ сам.

Если твой класс/структура - POD, то конструктор вызван не будет, более того - он даже не будет сгенерирован.
Если класс не является POD, в нём есть хотя бы один член с конструктором - то вместо пустого конструктора твоего класса, будет сгенерен конструктор, который вызывает конструкторы всех мемберов.

>>975680
Вон из треда, долбоеб, не хотел тебе отвечать, потому что ты даун, но всё же покормлю. Твои кукареки и "выебоны" про ассемблерный листинг - полная хуйня. Листинг никогда не ответит на вопрос о стандарте.
Студент, тебе что, на паре препод показал как смотреть сгенеренный код и теперь выебываешься на бордах, да?
976315
#327 #976215
>>976175
Да, только интерфейс пойдет по пизде, инфа 100%.
976216
#328 #976216
>>976215
А от буста либо избавляться, либо ебаться с компиляцией.
976235
#329 #976217
>>976175
мона, только он может уебанско выглядеть на маленьком экране
#330 #976235
>>976216

>либо ебаться с компиляцией.


Это в плюсовом проекте норма, а если используются хидер-онли библиотеки можно вообще взять и завендорить их себе в код, и забыть вообще.
#331 #976246
У меня есть необходимость в функции, которая будет обходить каждый элемент структуры, а потом выполнять с каждым элементом какое-то действие. Но это действие каждый раз разное. Как такое реализовать на плюсах? Мне нужно передавать функцию в функцию?
976252976264
#332 #976252
>>976246
перегрузи std::get для каждой функции и хуярь std::apply
976256
#333 #976256
>>976252
*для каждой структуры. Надо проснуться.
#334 #976264
>>976246
Нахуя, если ты можешь передать в функцию саму структуру?
976269
#335 #976269
>>976264
Я видимо непонятно выразился. Для обхода массива используют обычный цикл с итератором, у меня же, этот обход реализовать заметно сложнее, поэтому хочется отдельную функцию. Но как сделать так, чтобы то действие, которое при обходе массива указывается в фигурных скобках цикла, тоже передавалось в функцию обхода.
976769
#336 #976287
Как запилить ветвление в функции?
976298976302976771
#337 #976298
>>976287
Что?
#338 #976302
>>976287
jmp
j(ne|e|nz|z|c|nc|...)
b(ne|eq|cs|cc|...)
#339 #976315
>>976213

>Листинг никогда не ответит на вопрос о стандарте.


Цитирую твой вопрос, кусок дебила:

> На ассемблерном уровне - будет ли у нас вызван конструктор миллион раз



ни слова про стандарт.

Теперь иди на хуй.
#340 #976319
а ведь ребята в Qt стараются, интересные вещи делают. Только рекламируют совсем хуево :(
976323976419
#341 #976323
>>976319
Родили уже QML с кривыми компонентами. Особенно пиздатая фича вышла в 5.8 (которую в 5.8.1 поправили, вроде как) - кэкирование компонентов, грузишь такой правки - оп, а их нихуя и нету, оказывается.
976419
#342 #976336
>>970816 (OP)
Пишу свой сервис для винды, он должен использовать .dll для работы с камерой. Пока это консольное приложение - все отлично работает, но если переделать на WinService, то будет немедленно выкидывать с Error:1053, при попытке запустить сервис. Если закоментировать методы из .dll, то сервис регистрируется нормально, но если добавить хоть что-то из нее - неудача. Может надо как-то специфично подключать .dll при написания сервиса или что? Почему все работает в консольном варианте?
976383
13 Кб, 575x338
#343 #976359
>>970816 (OP)
Сап, почему при использовании свитча выполнение красной скобки игнорируется? Без свитча все работает
976401976772
#344 #976383
>>976336
Уже не актуально, проблема была в правах доступа.
#345 #976401
>>976359

>> cout


>> gets


Ты уж что-то одно выбери для начала
976412
#346 #976412
>>976401
Это настолько принципиально?
976416976704
#347 #976416
>>976412

> Это настолько принципиально?


нет, продолжай в том же духе. ты всё правильно делаешь
#348 #976419
>>976319
>>976323
а ещё в 5.8 запилили oauth2 (https://doc.qt.io/qt-5/qtnetworkauth-index.html), только с ним можно делать только get запросы. для post надо выковыривать из инстанса bearer, вставлять его в заголовки ручками в network manager и только потом делать запрос
Qt #349 #976652
Пасаны, мне нужно для лабы рисовать один график, а при нажатии кнопки и движении мышки перемещать некоторый элемент на графике. Для этого я наследовал класс от QGraphicsView, рисую в методе update(), а в методах mousePressEvent() и mouseMoveEvent() отслеживаю мышку. Проблема в том, что если вызывать update внутри мойкласс::mouseMoveEvent, то двигается вся сцена, весь QGraphicsView. Если не вызывать, то все хорошо, только иначе картинка не меняется. Как это обойти? Кнопки, сигналы и слоты обрабатываются корректно, проблема только в mouseMoveEvent, как будто он там изменяет параметры виджета.
976672
#350 #976672
>>976652

> Лабы идут на хуй

#351 #976704
>>976412
Ну ты для начала с языком программирования определись. Начал мешанину причем из стандартной библиотеки c и stl.
Вообще эта хуйня у тебя не должна компилироваться, потому что объявление переменных в switch-case недопустимо (если только они не ограничиваются областью видимости внутри конкретного case), например. такое можно:
switch (a) {
case 1: {
int x = 0;
printf("%d", x);

break;
}
case 2: ... ;
}

А вот так нельзя:
switch (a) {
case 1:
int x = 0;
printf("%d", x);
break;
case 2: ... ;
}
#352 #976713

>A: Ни один язык не идеален, но по совокупности киллер-фич C++ оставляет все остальные языки позади. Вот основные три:


>Мощь


Блядь, проиграл. Ладно если бы под этим словом понималась скорость, но она пунктом выше.
976796
#353 #976769
>>976269
То ли ты хочешь сделать своб функцию обхода массива, то ли ты хочешь структуру. Охуительная история.
Напиши минимальный код, по которому видно задачу и проблему.
976819
#354 #976771
>>976287
Родина дала нам if else switch case .
#355 #976772
>>976359
Похоже на UB выше в коде.
#356 #976796
>>976713

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

#357 #976801
>>976796
Тьюринг-полные у нас даже НАМы и Brainfuck-и.

Вместо мощи можно написать про метапрограммирование и SFINAE.
#358 #976802
>>976796
я про само слово. МОЩЬ. МОЩНЫЙ язык программирования.
#359 #976812
>>976796
Ну реализуй мне честный, не консервативный, GC. Интересно, как тебе тут "прямой доступ к памяти" поможет отличить указатели от данных.
978114
#360 #976815
>>976796
Чтоб тебе было не скучно: GC должен быть компактифицирующий.
978114
#361 #976819
>>976769
https://pastebin.com/0Z4siSd9
Что нужно сделать, чтобы каждый раз не писать этот for, а только конкретное действие?
976823976913
#362 #976823
>>976819
Нужно объявить Tree_node инстансом тайпкласса Traversable и реализовать для него какую-нибудь функцию из Traversable, например, foldr

Ну или сделай так https://pastebin.com/nvRYJf33 и используй foreach-loop
доопредели там begin/end для const Tree&

И у тебя в Worker принимается зачем-то по значению
976831976913
#363 #976831
>>976823

>функцию из Traversable, например, foldr


Бля, облажался. Ну ладно.
#364 #976839
>>970816 (OP)
Господа, помогите начинающему
Код
#include <iostream>
#include <cstring>
/ run this program using the console pauser or add your own getch, system("pause") or input loop /
int TestAr() {
char chararray[50];
printf("%s", chararray);
strcpy(chararray, "test test test");
printf("%s", chararray);
TestAr();
}
int main(int argc, char argv) {
TestAr();
return 0;
}
Среда Dev C++ Всё работает.
Как выделяется память для массива chararray[50]? Раньше я думал, что она статически выделена в функции и уже есть в экзешнике, экзешник загружается в память и память под этот массив уже выделена в функции, ещё до её вызова. Но, поебавшись с указателями пришел к выводу, что всё не так просто. Что происходит при последующем рекурсивном вызове этой функции?
Я раньше байтоебством не занимался.
976846976910976920
#366 #976869
>>976846
push rbp //заталкивает в стек "это указатель на адрес базового сегмента текущего стекового кадра"
mov rbp, rsp //копирует адрес базового сегмента текущего стекового кадра в "указатель на вершину текущего стекового кадра"
sub rsp, 64 //вычитает из "указатель на вершину текущего стекового кадра" 64, т.е. указатель начинает указывать на адрес, расположенный на 64 адресных единицы ранее.
lea rax, [rbp-64] //помещает в регистр rax адрес [rbp-64], как я понял равный rsp, потому что из rsp уже вычли, а в rbp находится значение rsp до вычитания
mov rsi, rax //перемещает полученный ранее адрес в регистр смещения
mov edi, OFFSET FLAT:.LC0 //хуйня какая-то не гуглится
mov eax, 0 //затирает регистр еах нулем
call printf
Из всего вышесказанного вытекает нижеследующее: память под массив выделяется из стека каждый раз при вызове функции? Именно поэтому через некоторое время работы программа завершается с сообщением segmentation fault - стек залетает на программный код. Я правильно всё понял?
Если Я сейчас это сделаю, прост сразу интересуюсь. я сделаю динамический массив через *chararray=new char[50]; то будет расходоваться память из кучи и программа просто начнет жрать память?
976875976910
#367 #976875
>>976846
>>976869
Точно так же съедает 3 мегабайта и выпадает в segmentation fault.
976892976910
#368 #976886
Подскажите дурачку, как реализовать метод GetString в таком классе, что б можно было через cout нормально выводить стороку
https://pastebin.com/ej31QGGz
976893976894
#369 #976892
>>976875
Скорее всего printf не находит терминирующего нуля.
976910
#370 #976893
>>976886
Нужно не GetString реализовывать, а << перегружать для ostream и твоего класса.
976897
#372 #976897
>>976893
>>976894
спасибо,

а других способов нет? просто мне нужно пока что как-то без этого реализовать
//Создайте метод GetString(), который обеспечит доступ к хранящейся строке.
//С помощью cout и метода GetString() распечатайте строку объекта str
976899
#373 #976899
>>976897
cout << gno.GetString()
976901
#374 #976901
>>976899

ОшибкаC3867"MyString::GetString": нестандартный синтаксис; используйте "&", чтобы создать указатель на член

я так пробовал вот что вышло, что это значит хз
976902
#375 #976902
>>976901
Покажи весь код.
976942
10237 Кб, Webm
#376 #976910
>>976892
>>976875
>>976869
>>976846
>>976839
Всё работает, выпадает потому что стек заканчивается. Когда объявляю массив через new, то завершается через 43000 рекурсивных вызовов независимо от размера массива, когда статическим массивом, то чем больше массив - тем меньше итераций, очевидно быстрее жрется стек. Исправьте, пожалуйста, если я не прав.
В микроконтроллерах использование памяти: программный код, стек и куча такое же или отличается?
976920
#377 #976913
>>976823
Что такое Traversable?
>>976819
Оооотлично.

void Tree_node::apply(void( ЗВЕЗДА f)(&Tree_node)){
for(auto &node: Down){
f(Down);
}
}
.........
huyacknut(&Tree_node node){
node.payload=0xFFF;
}
.........

int main() {
Tree_node ldkjf;
......
ldkjf.apply(&huyacknut);
}
976917
#378 #976917
>>976913

> Что такое Traversable?


http://hackage.haskell.org/package/base/docs/Data-Traversable.html#t:Traversable

>void Tree_node::apply


Для этого есть std::for_each. C++ не Java, тут поощряются freestanding-, а не member-функции
#379 #976920
>>976839

>int TestAr() {


>\tchar chararray[50];


>\tprintf("%s", chararray);


Использование неинициализированной памяти, undefined behaviour.
Компилятор вообще не обязан выделять место под chararray, так как заведомо известно, что в нём будет, и вместо этого может подставлять адрес строки из экзешника в каждый вызов printf.

>Раньше я думал, что она статически выделена в функции и уже есть в экзешнике


Выделяется на стеке на каждый вызов. Если напишешь static - будет выделяться на стеке один раз, перед вызовом main.

>Что происходит при последующем рекурсивном вызове этой функции?


Заканчивается место на стеке и хуяк.
>>976910

>когда статическим массивом, то чем больше массив - тем меньше итераций, очевидно быстрее жрется стек.


Ты путаешь static с локальной переменной (выделяется на стеке)
976925
#380 #976925
>>976920

>Ты путаешь static


Я понял про что ты, но до этого еще не дошел. Я не правильно употребил термин "статическим" - здесь это значит только то, что он выделен не из динамической памяти, а объявлен заранее.

>Использование неинициализированной памяти, undefined behaviour.


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

>Выделяется на стеке на каждый вызов. Если напишешь static - будет выделяться на стеке один раз, перед вызовом main.


И тогда все вызовы функции будут фактически оперировать с одним и тем же массивом, постоянно висящим в памяти, но видимым только из этой функции - я правильно понял?
976939
#381 #976939
>>976925

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


Как проверить, выделяет ли компилятор память или нет:
- в int main выводишь адрес любой глобальной переменной ( %p в printf, & перед соотв. аргументом)
- делаешь фиксированное число вызовов (статично хранишь число, чтобы контроллировать глубину рекурсии)
- после достижения предельной глубины выводишь адрес той же глобальной переменной.

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

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


Да.
#382 #976942
>>976902
да я уже разобрался...
идиотская была ошибка - забыл () перед вызовом функции
#383 #976953
Плюсач, помоги разобраться с наследованием. Я запилил себе класс, полностью его описал, все хорошо. Потом я создал еще один класс и наследовал его от первого public, чтобы несколько функций переопределить. Проблема в том, что я не могу даже конструктор вызвать, так как все попытки что-то изменить помечаются ошибкой, что это член первого класса и он приватный. Что пошло не так?
976979
#384 #976979
http://cpp.sh/3u7b6
Ну и как мне написать инициализацию массива-члена? Голову сломал.

>>976953
Если тебе нужен конструктор из базового класса, он должен быть либо протектед, либо публик. Если это не так, исправь это.
976997
#385 #976993
Я вот чет не могу смекнуть,
когда пишут:
Создайте глобальную функцию
Хуй Hui(Хуй, Хуй);
которая принимает два объекта класса Хуйпо значению и
возвращает объект класса Хуй,

как её в итоге в мейне вызывать?
так ?
Хуй h;
h.Hui(...); // но какой тгда тут смысл, надо было тогда через this писать

или так

h = Hui(...); // но тогда ошибка

Поясните кому не лень< плиз.
#386 #976997
>>976979
Проще взять std::array
977018
61 Кб, 791x623
#387 #977011
С помощью какого алгоритма можно это реализовать?
#388 #977012
segmentation fault
gdb говорит следующее
https://clbin.com/N3rzrw.png
Раньше все работало, но я в этом месте вроде как map, заменил на vector. Вот весь код
User.cpp https://pastebin.com/nyuwaQay
Tree.h https://pastebin.com/qR2bpW8s
Server.cpp https://pastebin.com/Cc2X6QUh в нем, в 37 строке и происходит что-то непонятное
Объявление структуры Tree_node происходит в ашнике, описание методов класса в файле класса, остальных функций в Server.cpp, там же лежит мейн.
977021977125
#389 #977018
>>976997
Канеш проще, только я хочу сделать наиболее простым путём. Какого ляда C++ считает, что список инициализаций - это список присваиваний? Бесит.
#390 #977021
>>977012
Прошу прощения. В проблемной строке не
Top_node->Down[Top_node -> Down.size()] = &Construction_tree(Simbol_, file);
А
Top_node->Down[Top_node -> Down.size()] = Construction_tree(Simbol_, file);
Нет амперсанда. Это я не ту версию показал, выхлоп ждб такой
https://clbin.com/p0fXIU.png
977125
#391 #977045
>>977011
Жадным можно.
#392 #977125
>>977021
>>977012
Нашел ошибку, оказывается растягивать вектор можно только так array1.insert(array1.end(), 4);
977176977332
#393 #977176
>>977125
resize еще
977490
#394 #977332
>>977125

>растягивать вектор можно только


Не только.
977490
#395 #977384
Ананасы, нужна какая-нибудь маленькая библиотечка, могущая вычистять интегралы. Не подскажите такую?
977496
#396 #977404
Короче, тут намедни прочитал книг 6 по паттернам, а мен все мало, блять. Есть какие-нибудь годные еще, кроме GoF, POSA и Software Architecture in Practise?
977435977439
#397 #977423
синтаксическая ошибка во встроенном коде на языке ассемблера в "код операции"; обнаружено "newline"

эта херня появилась после того, как я сделал виртуальным 1 из методов класса, что это вообще?
977424
#398 #977424
>>977423
хотя это между собой не связано..
#399 #977435
>>977404

>прочитал книг 6 по паттернам


> GoF


Как ты не заснул? Я засыпаю на второй странице чтения этого.
sage #400 #977439
>>977404

> книг 6 по паттернам


Ебать дебил.
#401 #977451
Сап!
Я программист уже 4 года профессионально.
Программирую на руби. На досуге увлекаюсь Erlang, Clojure, C/C++. На руби уже надело, в основном рутина, ничего интересного. Хочется думать и нести радость людям написав какой нибудь там автопилот например.
Подскажи, требуются ли в рашке программисты на C/C++ или это уже утопия и все дрочат на go/ruby/php ?
101 Кб, 798x931
#402 #977460
А какой/какие алгоритмы применить здесь?
977505
#403 #977490
>>977176
>>977332
Я имею в виду, что нельзя вектор длины 7 Vector1[7]
#404 #977496
>>977384
Аналитически или численно? Фгугл.
#405 #977505
>>977011
Точнее: перебором с O(n). Если дашь ссылку на судью, я тебе сбацаю.
>>977460
Симулируй работу парикмахера и прихода/ухода всех этих идиотов. Натурально: берёшь и релизовываешь конечный автомат (состояние содержит текущее время, очередь на это время с фасонами) по условию задачи, больше ничего не надо.
977708
#406 #977510
>>977011
Ещё точнее: можно решить квадратное уравнение двоичным поиском, будет O(log n).
977712
#407 #977530
Товарищи, как MinGW заставить понимать юникод в имени файла, а именно:
ifstream file(_name, ios::binary);
компилятор компиляет только когда _name - char, а мне нужно, чтобы WCHAR (wchar_t, как я понял это одно и тоже) неужели у красноглазых нет юникода в путях?
Нашел на стековерфлов как там кто-то что-то скачал и собрал и вообще руками всё конвертирует в чар и доволен. Но я не верю, что там нет готового.
977532977542
#408 #977532
>>977530
При чём тут красноглазые, если ты на сперме.
977537
#409 #977537
>>977532
MinGW разве начало свое берет не на линуксах?
977541
#410 #977541
>>977537
Это, как следует из названия, минимальный порт GNU-тулз на Windows. Оно не стремится имитировать POSIX-окружения. Для последнего есть Cygwin. И WSL.
977881
#411 #977542
>>977530
Короче, если ты так хочешь utf8 везде, посмотри в сторону nowide. http://cppcms.com/files/nowide/html/index.html
Оно есть в отдельной от boost форме.
977881
#412 #977568
Хочу написать свой REST API на С++. Смотрю на https://github.com/stefanocasazza/ULib
и нихуя не понимаю.

Анон, покажи как писать Web сервисы на крестах в продашоне
977569
#413 #977569
>>977568
Хипсторы в соседнем треде.
977571
#414 #977570
>>977011
Поступление в ШАД?
978087
#415 #977571
>>977569
В смысле? Зашквар писать веб на крестах?
977572
#416 #977572
>>977571
Хочу нагнуть golang-ёбов для этого мне нужна сила плюс и мудрость двоща
#417 #977578
Почему небольшой проектик (несколько .cpp и .hpp) в VS конпелируется и запускается, а g++ выдает по main.cpp: undefined reference to %функция_нейм% и отказывается конпелировать ?
977579
#418 #977579
>>977578
too fat
#419 #977597
Можно на плюсах и Qt собрать хелловорд весом 11кб или меньше?
#420 #977629
ErrorC2400inline assembler syntax error in 'opcode'; found 'newline'

С чем связана это сраная ошибка? Нигде нормальной инфы нет.
#421 #977662
>>977629
Это C++, а не inline assembler тред.
977693
#422 #977693
>>977662

>inline assembler


Ну а я и писал на c++, и вдруг мне в VS высветилась такая ошибка
#423 #977695
>>977629
Компилятор какой?
977717
#424 #977708
>>977505
Напиши свою почту gmail.
978060
#425 #977712
>>977510
А вот здесь поподробнее.
977722978065
#426 #977717
>>977695
VS 2015
6 Кб, 228x221
#427 #977718
>>977629

>syntax error

#428 #977722
>>977712
Хуйню он сморозил, вот тебе подробности.
#429 #977771
>>977011
Я придумал за O(m logn) решение, где m - количество выговоров. Просто эмуляция начальника на дереве поиска. Можно парой эвристик ускорить, но в общем случае без ограничений на ответ будет медленно работать.
ещё-один-анон
977966
#430 #977777
Почему нельзя определить массив так так:
Animal zoo[]={Animal(),Cat(),Dog()}
А надо так:
Animal* zoo[]={new Animal(),new Cat(),new Dog()}
977799977820
#431 #977799
>>977777
Это разные объекты, они занимают разное количество памяти.
У тебя, например, базовый объект 8 байт весит, а наследникам ещё int добавили, стало 12.
Выделение памяти под массивы происходит "под линейку" тебе надо 100 объектов Animal, она тебе и выделила эти 800 байт. Понятно, что запихнуть в i слот Dog или Cat не получится.
У указателей же постоянный размер 4-8 байт в зависимости от компилятора. Во втором случае ты выделяешь память на 3 указателя, те уже в свою очередь ссылаются на реальную память, а там уже объекты могут сколько хочешь весить.
#432 #977820
>>977777
Потому что это не Java
#433 #977826
https://pastebin.com/LuFW7QDe
Вот две функции. Считывание дерева из файла и его удаление. Почему-то команда delete Top_node, где Top_node это указатель созданный через new в другой функции, на вершину не хочет работать и падает с ошибкой памяти. Не знаю, в чем ошибка.
977827977836
sage #434 #977827
>>977826
valgrind
#435 #977836
>>977826
Без рабочего проекта тебе никто не поможет.
977837
#436 #977837
>>977836
В смысле хотите видеть весь код?
977838977839
#437 #977838
>>977837
Да, нужна какая-то программа, на которой это всё падает. И файлы с примерами, если есть.
Тут магов нет, никто с первого взгляда рандомный код не умеет по полочкам расставлять.
977863
sage #438 #977839
>>977837
И там должен быть файл с лицензией, точнее, с уведомлением, что ты передаёшь код в публичное достояние.
977863
#439 #977844
Вкатывается нюфаг, изучающий ооп.
Есть класс, допустим, classType. В нем, кроме всего прочего, есть конструктор копирования.
В maine есть объекты classType a,b. Где-то задаются параметры объекта a, после чего я пишу b=a. Почему в этом случае конструктор копирования не вызывается, а при classType c=a вызывается?
977854977857
sage #441 #977857
>>977844

>Вкатывается нюфаг, изучающий ооп.


Другого места не нашёл, куда вкатиться? Почему этот тред?
#442 #977861
Весь остальной код вроде как работает, проблема именно в функции очитстки.
https://pastebin.com/3jXs6fKc вот мейн, проблемная строчка там (Server.cpp)
https://pastebin.com/rW8Tswsi вот ашник, там и объявляется структура Tree_node (Tree.h)
чтобы все работало нужен еще этот файл, который стоить назвать User.cpp https://pastebin.com/9fMg1eKP
https://pastebin.com/6Ttddnb4 вот проблемный файл. Назвать нужно Base.txt
Вся беда в процедуре удаления дерева, которое создавалось конструкцией нью. В этой функции есть отладочный вывод, который показывает, что вроде как ни одного делита не выполняется, но функция завершается несколько раз, кроме самого последнего. Как такое возмжно я не понимаю
977863977879977891
#443 #977863
>>977838
>>977839
>>977861
Про лицензию забыл. Но вы можете пользоваться так, чтобы под GNU подходило, обязательно 3 версии.
438 Кб, 811x627
sage #444 #977879
>>977861
int main()
{
Tree_node Top;
Cleaner(&Top)
}

void Cleaner (Tree_node * Top_node)
{
delete Top_node;
}
977891977892
#445 #977881
>>977541

>Оно не стремится имитировать POSIX-окружения. Для последнего есть Cygwin. И WSL.


Ты ебанутый, блять? При чем тут имитация и прочая поебень, речь идет об обычном юникоде в имени файла.
>>977542
Большое спасибо, то, что доктор прописал.
#446 #977891
>>977879
>>977861
Бля, он прав. Ты пытаешься статическую память снести.
977893
#447 #977892
>>977879
О, вот и ответ. Спасибо тебе, анон, пускай ты и пидор.
Кстати вопрос. Я вот получил указатель на память. Почему я не могу удалить память по указателю?
438 Кб, 811x627
sage #448 #977893
>>977891

> статическую память

977894977899
#449 #977894
>>977893
Ну что не так?
977899
sage #450 #977896
Надо в шапку добавить что все пидоры с проблемами в new/delete пиздовали в ньюфаг-тред.
977899
#451 #977899
>>977893
А ну да. Мне из функции возвращается указатель, а я из него достаю объект и помещаю в статическую память. Все, понял, осознал.
>>977894
Это, кстати, не я.
>>977896
Но сегодня вы опоздали.
977905
sage #452 #977905
>>977899

>в статическую память


В хуическую.
977921
#453 #977921
>>977905
А как она называется?
977923977926
#454 #977923
>>977921
Хуическая.
sage #455 #977926
>>977921
Можно, наверное, называть автоматической. Не совсем корректно, но сойдёт.
#456 #977936
>>970816 (OP)
Вкину годный линк для всех. Обсоски ничего не могу ответить про продакшн программирование на крсетах
https://github.com/fffaraz/awesome-cpp

Бляди бля
#457 #977966
>>977771
Сможешь реализовать?
977979
#458 #977979
>>977966
Смогу, но не буду.
977982
#459 #977982
>>977979
Жаль.
#460 #978039
Немного оффтоп, но думаю тут есть люди, которые могут ответить. Вопрос в контексте windows, хотя за информацию по unix/линупс тоже буду благодарен.
Вот допустим, я написал .dll, функции из которого локальные и статические переменные точно свои для каждого процесса я хочу использовать в нескольких работающих одновременно процессах (допустим, их очень много). В таком случае, если несколько процессов, использующих эту .dll работают одновременно, то для каждого процесса в его виртуальную память (далее ВП) загружается своя копия .dll, и при создании каждого процесса из исполняемого файла загрузчик вписывает адреса вызова функций в секцию с таблицей импорта? Или загрузчик достаточно умён, чтобы использовать единожды загруженную .dll между несколькими процессами? Или такое верно только для системных .dll, а для пользовательских - только MMF в отдельном гигабайте ВП?
978053
#461 #978053
>>978039
Главный вопрос - зачем вам понадобилось это знание?
978058
#462 #978058
>>978053
Пишу курсовую. Один из второстепенных аспектов - цикл жизни процесса.
978068
#463 #978060
>>977708
yobberocS.wichANUSg\lGmailPUNCTUMcoXLvm
Аноним #464 #978065
>>977712
Там хитро. Решение основывается на поиске минимального значения, при котором программистов можно накачать. Накачку следует рассматривать отдельно - как косвенную и как прямую. Для каждого числа выговоров есть число программистов, которое будет накачано только косвенно. Необходимое число прямых накачек ненакачанных программистов вычисляется, и если оно больше числа пассивных накачек - перебор продолжается.

Перебор можно выполнять не линейно, а двоичным поиском, а если всё свести в одну формулу, можно упростить вычисление (но это непринципиально). Можно было бы решить уравнение, но нужно решать его либо в даблах (и тогда хрен знает, правильно или нет), либо округление вверх как-то учитывать. Так что двоичный перебор проще.
978083
#465 #978068
>>978058
Одна и та же, а потом механизм copy-on-write.
#466 #978083
>>978065
Всё бы ничего, но идея, которая стоит за решением, не понятна.
Например,

>и если оно больше числа пассивных накачек - перебор продолжается


откуда следует это?
И вот если я оценю минимальное и максимальное количество выговоров какой-то эвристикой, то как делать перебор между этими значениями? Выходит уравнение с 200к неизвестными, не совсем ложится под понятие перебора.
978085
Аноним #467 #978085
>>978083

>откуда следует это?


Могу доказать теорему о том, что если выполняется упомянутое условие (число необходимых прямых меньше= числа пассивных), то оно выполняется для всех больших чисел.

>И вот если я оценю минимальное и максимальное количество выговоров какой-то эвристикой


Минимальное - это 1. Максимальное - это тупо 200000, для двоичного поиска это не важно, число итераций - 18 (262144=2^18).

>как делать перебор между этими значениями?


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

Пиши на почту, если хочешь.
978096978111
#468 #978087
>>977570
Очень врядли.
https://yandexdataschool.ru/admission
Прошло сильно больше 5 часов.
#469 #978093
https://contest.yandex.ru/contest/4317/enter/ - и вообще интерфейс другой.
978105
#470 #978096
>>978085
Не понял. Я, кстати, другой анон. У меня жопа не горит задачу решить, просто хочу понять.

>Могу доказать теорему о том, что если выполняется упомянутое условие (число необходимых прямых меньше= числа пассивных), то оно выполняется для всех больших чисел.


Я воспринял эту строку как "Я могу доказать теорему, что если это условие выполняется, то оно выполняется"

>Минимальное - это 1. Максимальное - это тупо 200000, для двоичного поиска это не важно, число итераций - 18 (262144=2^18).


Ок. Это я понял.

>Двоичный поиск, блет. Значения отсортированы по критерию выполнимости искомого условия - для всех значений начиная с некоторого оно выполняется.


Вот это я не понял. Пусть я отсортирую всех программистов по убыванию производительности. Это ведь имелось в виду? Если нет, то прошу пояснить. И у меня на текущей итерации n выговоров. Что дальше происходит?
978105
#471 #978103
Пасаны, как по кашруту помечать функции как deprecated и obsolete? Я тут решил угореть по качественному коду, комментирую функции в хэдерах, пишу по гайдлайнам
#472 #978105
>>978096

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


Если условие выполняется для X, то оно выполняется для любого числа больше X.

> И у меня на текущей итерации n выговоров. Что дальше происходит?


n выговоров - это пассивные выговоры. Что ты делаешь дальше:
- число ненакачанных = число - n*y
- у ненакачанных одинаковый уровень накачки. Тебе нужно накачать оставшихся прямыми выговорами с эффектом y-x
- как накачать оставшихся только прямыми выговорами (т.е. без косвенной части, мы её исключили) - поймёшь сам, если нарисуешь лестницу.
- если ты не можешь накачать оставшихся с помощью n выговоров, поиск продолжается.

Поиск начинаешь со 100000. Если накачка взоможна, перемещаешься на половину диапазона влево (т.е. можно лучше). Если невозможна - на половину диапазона вправо. Это двоичный поиск.

>>978093
Чот я ипал.

>/temp/compiling/source.c:1:20: fatal error: iostream: No such file or directory


>#include <iostream>


> ^


>compilation terminated.


Что это за C++, если в нём iostream нету?
978111
#473 #978111
>>978085
Минимальное - это 1. Максимальное - это тупо 200000, для двоичного поиска это не важно, число итераций - 18 (262144=2^18).
Хотя, эту часть я тоже не понял. Я думал, что перебор по ответу, но это перебор по программистам, по которым кричали/не кричали, видимо.

>>978105
Ну вот тут основной вопрос, как перебирать. Потому что сам по себе перебор в лоб - это в худшем случае количество итераций в районе 10^9. То есть разгонять тех, кто больше всех нуждается по очереди. Например, берём программиста, которому нужно со скоростью а (максимальная среди всех) работать, накачиваем его на a - (x-y), возвращаем обратно в очередь с приоритетом, берём следующего с максимумом. И пока следующий прогер не будет пассивными разгонами уходить в минус.

>Что это за C++, если в нём iostream нету?


Видимо, это C.
978124
#474 #978114
>>976812
Братан, Аппель (или ещё кокой-то петушок) больше 30 лет назад придумал как это делоть. Зогугли.
>>976815
А это к проблемам самого языка и невозможности реализации чего-то как относится? Сделой если не лох?
#475 #978124
>>978111

> Я думал, что перебор по ответу,


Ты можешь накачать всех программистов за 200000 выговоров: y>1. Можно точнее, но не нужно.

>Ну вот тут основной вопрос, как перебирать.


Двоичный, мать его в сраку, поиск, по отсортированному, якорь им в ебало, значениям числа выговоров. Я уже всё разжевал, осталось только головой подумать.
978127
#476 #978127
>>978124
Ё, там не 200к выговоров. На каждого чувака может быть больше одного. Т.к. нам нужно накачивать на числа до 10^9, то и число выговоров может быть близко к этому числу. Ну запилить на 100кк выговоров пример можно не напрягаясь. А значит, что по способу выше я не смогу позволить себе даже одну итерацию сделать.
Всё таки это олимпиадная задача, а не энтерпрайз параша, которая нас всех ждёт. Можно было бы хотя бы попытаться объяснить.
978141
#477 #978141
>>978127

>На каждого чувака может быть больше одного.


Количество чуваков < 200000, y>=1. То, что x и y могут быть большими - не важно ВООБЩЕ.
Даже если бы оно было бы 10^9 - это 30 итераций вместо 18, в каждой из которых я делаю фиксированное число вычислений.

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


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

Ещё раз. Делишь влияние выговоров на косвенное влияние и на прямое. В каждом наборе выговоров есть некоторое число заведомо накачанных дебилов - они находятся в начале.

- Ты перебираешь число косвенных выговоров (т.е. выговаривают всех, кроме тех, кто в начале и сам будет въёбывать) - n.
- число тех, кого не накачали n косвенных выговоров = число дебилов - n*y (элементарно)
- у ненакачанных одинаковый уровень косвенной накачки, поэтому ты вычитаешь его и ищешь число необходимых прямых накачек эффектом y-x
- как накачать оставшихся только прямыми выговорами (т.е. без косвенной части, мы её исключили) - поймёшь сам, если нарисуешь лестницу от 1 до числа ненакачанных
- двоичный поиск продолжается с учётом того, можешь накачать оставшихся с помощью n выговоров (т.е. прямых накачек нужно больше, чем косвенных) или нет.

Разумеется, я могу разжевать ещё сильнее, но это уже неинтересно.
978143978238978239
#478 #978143
>>978141

> эффектом y-x


Наоборот: x-y.
#479 #978159
Вопрос.
Что есть за тип T[][] ?
Это T или T* ?
978160978164978172
#480 #978160
>>978159
Или вообще T?
#481 #978161
>>977011
Мне кажется, тут нужон симплекс метод.
978165
#482 #978164
>>978159

>Что есть за тип T[][] ?


Ничего не есть.
978171
#483 #978165
>>978161
А вообще, это вроде примитивный матан с системой линейных уравнений.
978168
#484 #978168
>>978165
В общем то это и есть симплекс метод. Главное правильно определиться с тем что есть что.
#485 #978171
>>978164
What is it?
Nothing is...
#486 #978172
>>978159

>Что есть за тип T[][] ?



Это ни хрена не тип. T[][6] - это тип. T[][6][5] - это тип. T[] - это тип. *T[] - это тип. А T[][] - это не тип.
978174
#487 #978173
Dear C++ programers..
What language are you use for comments in your programs?
978175978183
#488 #978174
>>978172
А что такое T[][] ?
Такое объявление недопутимо разве?
978182
#489 #978175
>>978173
do you use
в крайнем случае are you using
978176
#490 #978176
>>978175
Yes. You are right.
And you forgot to check the missed article "a" error before the "language" word.
At so, what a language.
978179978183
#491 #978178
Hey....
Where are you all?
#492 #978179
>>978176
нет, what language. артикль "a" лишний.
at so - это ващпе пушка. не стоит переводить комбинации частиц и местоимений с русского на английский дословно. с высокой вероятностью результат будет бессмысленный.
978181
#493 #978181
>>978179
В некоторых фильмах слышал, говорили At so... как аналог well, типа "И так.." в контексте продолжения мысли.
Может конечно и померещелось.
#494 #978182
>>978174
Дык а я о чём.
978184
#495 #978183
>>978173 >>978176
I am using fluent english to comment my code.
978185978186
#496 #978184
>>978182
Понятно.
У меня ебанутая задача из плюсового приложения вызывать сишные функции одной билиотеки, причем сишная библиотека дохуя сложная в плане своих типов... (Вложенные структуры, указатели на массивы и прочее.)
Заебался я уже этот врапер делать, но свою библиотеку писать - сроки проебать.
#497 #978185
>>978183
не самое уместное употребление fluent. при использовании fluent + %language% обычно речь идёт о том, что кто то говорит или пишет на чистом %имяязыка%, но не использует чистый %имяязыка% для %цель%.
978187
#498 #978186
>>978183
We don't.
I work in a Russian company..
Early we used broken English but now we decided to use pure Russian.
978188
#499 #978187
>>978185
Это прилогательное означает "свободно владеющий", "свбодный", и обычно сочетается только с понятием уровня владения чего либо в таком контексте.

Даже по русски криво говорить "Я использую беглый английский в своих комментах".
978190978192
#500 #978188
>>978186

>Early


at first/initially/originally
978189978191978194
#501 #978189
>>978188
Но я хотел сказать - ранее..
Не "Сначала", не "В начале", не "Изначально", а именно ранее..
978190
#502 #978190
>>978187
ну несмотря на некорректность его мысль бы поняли.
>>978189
back then/[long|some] time ago
978194
#503 #978191
>>978188
Но согласен.
Это причастие "Рано", а ранее - earlier.
978193
#504 #978192
>>978187
Таки да.
#505 #978193
>>978191

>причастие


наречие.
#506 #978194
>>978188
Какая часть "broken english" тебе непонятна? :3
>>978190

>ну несмотря на некорректность его мысль бы поняли.


Ну уж нет. Корректность - это хорошо, даже если всем похуй.
978196
#507 #978195
Нужно больше английской практики.
Где бы только ее взять.

И так, уже нашел человек пять англоговорящих из разных стран, но поговорить из-за часовых поясов и работы обычно нормально не выходит.
#508 #978196
>>978194
У меня еще норм.
Я хоть о спряжении глагола забочусь.

Некоторые у нас вообще писали.
I want look result in next week.
978197
#509 #978197
>>978196
Вроде и понятно самим рускоговорящим, но когда так пишешь иностанцем, зачастую они могут тебя реально не понять, и следует серия переспросов - когда, что именно и зачем.
#510 #978200
Скушно.
978221
#511 #978221
>>978200
Спать надо просто.
#512 #978238
>>978141
Я понял, как решать. Не понял только, как тот хитрый критерий применять, но остального достаточно для решения задачи.
#513 #978239
>>978141
А не, всио понял.
#514 #978270
есть два класса
один из них потомок другого и используя указатели каждого из них динамически выделяется массив элементов потомка
нужно вызвать метод, выводящий строку на экран,
но проблема в первом массиве, где указатель базового типа, а элементы потомка, там только для первого элемента создается объект типа потомка, немогу понять почему так и как это разрулить
https://pastebin.com/30g8Y1Pq
978284
#515 #978284
>>978270
http://ideone.com/NojQrn

Что тут не так? Вроде всё, как задумано.
В общем случае, так нельзя делать. Это всё работает только потому, что объекты одинакового размера.
978294
#516 #978294
>>978284
у меня на этой строчке
pShapes.WhereAmI();
после второй итерации цикла выходит такое:
почему то в массиве pShapes только в первом элементе создается объект типа Rect и я не могу понять почему

Exception thrown: read access violation.

pShapes-> was nullptr.

If there is a handler for this exception, the program may be safely continued.
978296
#517 #978296
>>978294
Там всё нормально создаётся. Выведи в консоль sizeof(Shape) и sizeof(Rect). После этого хорошенько подумой, что ты сделал не так. После этого спрашивай дальше.
978306
53 Кб, 1245x554
#518 #978306
>>978296
вот с твоим кодом, что получается,
а в pShapes[0] есть объек Rect
а в pShapes[1] уже нет (я хз почему)
и поскольку это вызов по объекту, то вызывается метод для объекта Rect и вылезает ошибка, потому что объекта нету

насчет sizeof, ну да, я понимаю, что дочерний класс занимает 24 байта, а не 8, как базовый, но это ж мне ничего не дает, я ведь просто вызываю метод, выводящий строку на экран, я не манипулирую никак с данными..
978310
#519 #978310
>>978306
А когда ты к элементам массива обращаешься, что ты делаешь?
978313
#520 #978313
>>978310
ну окей, это образщение к данным
но в данном конкретном случае мне не важно сколько памяти занимает объект массива
проблема-то не в этом
ведь у меня указатель базового класса на динамически выделенный массив элементов дочернего
я ж пишу
Shape* pShapes = new Rect[10]
дайте мне десять элементов типа рект и направьте на первый элемент указатель типа базового класса
978324978385
#521 #978319
Подскажите плиз
если у меня есть базовый класс A и дочерний B
как можно проинициализировать

B b();
A p = &b;//по идее так можно делать, если A базовый для B, но

знаю, что можно так,
A p = new B;

но мне нужно, чтобы именно для объекта b направить этот указатель, что бы потом через него вызывать виртуальный метод
когда я пишу так:
A p = &b;
мне пишут: a value of type B()()" cannot be used to initialize entity of type "A*"
почему, если это указатель на базовый для объекта b тип???
978324978483
#522 #978324
>>978313
Ну теперь уже совсем для нулёвых объясняю.
pShapes <=> (pShapes + 8 i)
pRects <=> (pRects + 24 i)

>>978319
Так нельзя делать. С чего ты взял, что так можно?
978326978331
#523 #978325
>>970816 (OP)
У меня есть класс clas_name, при объявлении которого нужно указывать аргументы.
clas_name object(4, 4, 1, 8);//например
И мне надо сделать массив таких объектов с одинаковыми аргументами, как?
978341
#524 #978326
>>978324
Суко, звёздочки.

pShapes <=> \(pShapes + 8\ i)
pRects <=> \(pRects + 24\ i)
978327
#525 #978327
>>978326
Бля, ну я пытался. Абу пидор.
#526 #978331
>>978324
x - это тип звёздочки
pShapes <=> x(pShapes + 8 x i)
pRects <=> x(pRects + 24 x i)
#527 #978341
>>978325
std::vector<Foo> thousand_foos(1000, Foo(42));
#528 #978344
Комрады, вопрос -
я вообще С# + JS мидл под АSP, вкатился вайти в 27, вот уже 3 года работаю, вышел на норм зп. и т.д., а ща перебрался на на еще более коровые задачи, и удаляюсь от веба.
Но все это время по ночам под одеялкой кодал на сях под STM-ки прошивочки для всякой хоббийной и не очень поеботы, даже заработать успел малех. Ща понимаю что Шарпы оче ограничивают вендой, а мои хоббийные проектики требуют реализации уже во всяких эмбедед вариантах под линупсами. Какие-то простые вещи делал на сях в консольке, но уже тесновато. В общем, ща взялся учить плюсы, но одолевает сомнение небольше -
по факту мне нужно как низкоуровневый контроль регистров/ножек железяки, так и некоторые ГУИйовины пилить. И понимаю что должно быть все кроссплатформененько. Исходя из этого в прикладном варианте вижу Qt решением своих проблем, но показалось что для нормального кодинга на Qt стоит довольно существенно освоится в плюсах.
Собственно вопрос - насколько С++ для моих задач лучший выбор инвестиций времени? Не будет ли достаточно Пайтона? Есть ли какие-то другие сильвер-буллеты для косплатформенной разработки низкосреде,
скорее
уровневых апликух для всякий этих IoT?
#529 #978363
>>978344
Я в состоянии только первокурам помочь лабы решать)))
Не совсем понятно, чем ты там занимаешься. Если для настолок нужно что-то кросплатформенное, то можно смело перекатываться в JVM-языки, тысячи их: Java, Groovy, Scala, Kotlin, JPython. В многие ARM чипы встроены интерпретаторы JVM-кода, должно достаточно быстро работать.
Если ты там что-то для слабых железяк пишешь, то скорее всего у тебя будет только C, если повезёт, то C++.
978377
#530 #978372
>>978344

>Комрады, вопрос -


>я вообще С# + JS мидл под АSP,


>ко ко ко


Так бы и сказал, что ты петушок.

>вкатился вайти в 27, вот уже 3 года работаю, вышел на норм зп.


Всегда удивляли такие. Можно поинтересоваться, а что ты делал до 27? Писюн малафил и смотрел аниме? А потом БАЦ такой "надо стать ойтешнеком))". А потом и получаются говнокодеры.
Начинать учить программирование надо с первого класса, а как только закончишь 9 классов, в 15 лет идти джуном.

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


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


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


МК только на С прогают(и немного на асме), ты че. Qt это ж на виндовс, а не мк.

>Собственно вопрос - насколько С++ для моих задач лучший выбор инвестиций времени? Не будет ли достаточно Пайтона? Есть ли какие-то другие сильвер-буллеты для косплатформенной разработки низкосреде,


А Пайтона под мк и нет, лол. Только С, только хардкор. Хотя с++ в любом случае тебе будет полезно, так как:
1)он подвид си и в си ты тоже повысишь скилл;
2)сможешь писать совместимое с мк по для компьютера, ведь с++ компилятор и си поддерживает

> скорееуровневых апликух для всякий этих IoT?


А вообще, этим в /ra/ занимаются, там есть треды посвящённые МК, ПЛИС, и arm.
978379978394978395
#531 #978377
>>978363
Писал под ARMы 4е, до этого под 8-бит контроллеры, ща под RPi пробую писать, т.е. под ARM и линь. Какого-то платформоспецифичного кода не планирую, по факту просто хочу универсальности. JVM смущает, хотя то это сейчас это вин не отрицаю. Но настолько радикально менять экосистему не хотел-бы. Все таки плюсы или пайтон скорее просто дополнят мой "портфель" навыков для винды и откроют двери в линь.
519 Кб, 640x480
#532 #978379
>>978372

>Qt это ж на виндовс

#533 #978385
>>978313

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


Лол.
#534 #978394
>>978372

>Так бы и сказал, что ты петушок.


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

>Можно поинтересоваться, а что ты делал до 27


Чего тебе горит-то? В том числе кодил, но на тех позициях где кодить было скорее просто полезно чем необходимо, а основными задачами были писать всякие xslt карты конвертации, cmd скприпты и прочее околоайти. А потом манагерил нескольких вонабидевелоперов. Проблемы начали тогда когда я понял что мне приятнее самому в коде колупаться чем манагерить, и тогда решил вкатиться по полной, подтянул забытое и пошел джунить за хлеб с ЗП с пары кусков баксов на пару сотен. А ща вернулся на х2 от того со скольки уходил. В общем, нехуй всех судить по одному посту, признак быдла.

>МК только на С прогают(и немного на асме), ты че. Qt это ж на виндовс.


Штобля? Под что компилятор в asm напишут, на том и прогают. Под те же STM-ки из коробки есть либы и под С и под Плюсы. Под другие мелкие железяки встраивают интерпретаторы Lua, порой Пайтон, а иногда даже JS. Но да, C как бы стандарт де-факто.
По поводу Кьюта под Винду это ты что-то в лужу перданул. Видна там только одна из 3ти (или более) целевых осей.

>А Пайтона под мк и нет, лол. Только С, только хардкор.


Я ж говорю - мне ща более в системное/эмбед программирование нужно влиться. Хуй на МК, там все понятно, и моих С там хватает.
978509
#535 #978395
>>978372

>в 15 лет идти джуном.


Анука скажи что ты джуном ебашишь с 15ти?
Ну и типа не влился до первой малафьи - не кодер?
Футаким снобом быть.
1 Кб, 563x48
#536 #978435
>>970816 (OP)
Платиновый нуфажий вопрос:
На вижуалке17 поставил Incrediбил (повелся, на рекламу), начал собирать через него и пизданулся стандартный сборщик.
Можно ли его быстренько выпилить и откатить это все или проще уже переустановить?
978436978444
#537 #978436
Бля, мне наверное надо было в оппост доске с этим пойти, да?
>>978435
sage #538 #978444
>>978435
Спермопроблемы.

> или проще уже переустановить


Да. Переустанови ШINDOWS.
#539 #978452
>>978344
Насколько низкоуровневый. Вообще, под микроконтроллеры, а частности ARM'овские имееются множество библиотек начиная с тех, которые просто предоставляют тебе доступ к регистрам, а дальше ты уже сам решаешь что как и когда выставить (то есть тут с даташитом придется очень плотно работать, потому что наебать самого себя шанс очень велик), емнип CMSIS назвается, есть и по-проще, например STM standard peripheral library, которая позволяет тебе с наименьшими усилиями конфигурировать все свое имущество. Для петухов, которые даже в это не смогли сделали отдельную штуку, называется mbed. Ну, и, естественно, к этому всему добру можно еще прихуячить какую-то RTOS, например FreeRTOS или eCos.
Конкретно по микроконтроллерам и крестам, все нормально будет, только вот не стоит увлекаться динамической аллокацией памяти, потому что можно ее охуительно фрагментировать и будет очень весело. Лучше использовать пулы или статику.
На микроконтроллерах, естественно, никакого Qt нет и быть не может, зато есть немного гуевских ПЛАТНЫХ библиотек, конечно же, на Цэ.

Касательно embed-а, то тут, мне кажется, что тебе бы для начала освоиться, как собрать дистриб Linux, не используя готовое решение, то есть ядро, дрова по необходимости, гуй и прочее говно, а потому уже в этот самый embed и влазить, потому что, очень много чего там делается на линуксе. Конечно, не стоит отметать WinCE, но тут проще на шарпах будет, я так думаю.
Однако, я, например, на работе пилил софтину для пульта управления, все говно вертелось на линуксе (не голом, конечно же, но софта там было минимум тайловый менеджер окон, базовы набор дров, необходимые либы и собственно софтина), с учетом того, что клаву туда подключить было нереально, то заморачиваться по поводу других каких-то штук я не видел смысла.
978471
#540 #978471
>>978452

> на работе пилил софтину для пульта управления, все говно вертелось на линуксе


Вот это как раз примерный пул моих задач.

По поводу МК, еще раз повторюсь - хуй с ними, там мне чистых С за глаза хватает. Ну как чистых - через HAL либы, конечно.

Хочу вкатится именно с недосистемное кроссплатформенное проганье. По факту - слушать порты, обрабатывать-валидировать ввод, преопразовывать данные, отправлять по сети/на другие поры, мигать лампочками, слушать кнопочки. Ну и GUI для мониторига статуса, вывода логов.
978484
#541 #978483
>>978319

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


Напиши по-русски без речевых ошибок, и я отвечу.
>>978344

>Собственно вопрос - насколько С++ для моих задач лучший выбор инвестиций времени?


Зависит от того, сколько ты готов ебаться с ними. В институте учил только C, в последние полгода пытаюсь с нуля запилить для себя что-то в Qt.
Если научишься быстро гуглить, проблем никаких. Но вот, например, вот это ты хрен нагуглишь, пока сам не столкнёшься: http://doc.qt.io/qt-5/implicit-sharing.html .
Когда инициализируешь POD-класс со вложенными классами, можно пользоваться aggregate initialization из C. Когда пишешь то же самое в аргументе для vector<T>::emplace_back() - это уже не катит, так как это уже не инициализация, и один в один скопированное выражение уже даёт ошибку: по правилам каждая пара фигурных скобок должна раскрываться во что-то одно, да и агрегатного конструктора вообще нет, он неявный.

Олсо, в QT есть QML, так что жабаскрип пригодится.
978485978621
#542 #978484
>>978471
Если ты хочешь, чтобы твой софт вертелся под управлением разных микроконтроллеров, например MSP, STM32, AVR, прочих ARM и т.д., то, если повезет, то адаптировать модули для работы с периферией ты будешь от серии микроконтроллеров к серии (не стоит думать, что если у тебя микроконтроллер на ядре ARM, то и периферия там одинаковая, производители стандарты периферийных устройств на хую вертели, поэтому у разных производителей встроенная периферия, как правило, разная), а в случае богомерзких AVR тебе придется менять модули от микроконтроллера к микроконтроллеру, потому что, возьмем те же ATmega8 и ATmega88 - вроде бы индексы похожие, а на деле в регистрах пиздос, поэтому конвертирование софта с одного ан другой приносит гемор, а в случае, когда настройки/ввод-вывод не были вынесены в отдельные процедуры, так полная жопа.
На микроконтроллерах переносимость связана с написанием полнейшей дичи. Подумай сто раз, нужно ли тебе это и для каких целей. Может гораздо проще все делать на готовом решении, например RPi или Odroid (кстати, вторым мое увожение, потому что, в отличие от первых, смогли-таки завезти нормальные дрова на видео-ускоритель)
978491
#543 #978485
>>978483

>Но вот, например, вот это ты хрен нагуглишь, пока сам не столкнёшься: http://doc.qt.io/qt-5/implicit-sharing.html .


>Когда инициализируешь POD-класс со вложенными классами, можно пользоваться aggregate initialization из C. Когда пишешь то же самое в аргументе для vector<T>::emplace_back() - это уже не катит, так как это уже не инициализация, и один в один скопированное выражение уже даёт ошибку: по правилам каждая пара фигурных скобок должна раскрываться во что-то одно, да и агрегатного конструктора вообще нет, он неявный.



Это я к тому, что есть множество незначительных проблем, которые ясным умом не понять, так как стандарт писал не ты.
978492
#544 #978491
>>978484

Да что ж такое:) Как бы еще подчеркнуть что МК для меня сейчас не на повестке дня?

>На микроконтроллерах переносимость связана с написанием полнейшей дичи.


Да, видел я код написанный для того чтобы компилится под разные версии AVR - это ебанный mess и #IFDEF-ов и тысячей вариаций одного и того же кода. И мне оно нахуй не надо -
Мне хватает семейства STM-ов, для который большинство перефирии +- причесали для однотипного использования. Так что часть МК для меня пока закрыта, и нужно закрыть часть по написанию эмбедового "бэкенда" который будет данные с этих контроллеров собирать и давать пользователю это все мониторить/менеджерить. ПОтому и Линукс, потому и Qt
978499
#545 #978492
>>978485
Да, на QML смотрю облизываясь, но боюсь браться не разобравшись в кишках C++, дабы не остаться на уровне формошлепа под линупс.
979378
#546 #978499
>>978491

>> на QML смотрю облизываясь


Уж сколько лет прошло с его появления, так и остается багованным говнищем. Хотя для мелокоподелок его за глаза, а вот полноценное приложение только лишь на QML я бы писать не стал, разве что фронт-енд.
978508
#547 #978508
>>978499
ну я его даже и не рассматриваю как основу для приложения, и удивлен что кто-то рассматривает.
По сути это удобная хуйня для написания вьюхи с вкраплениями бизнес логики. Конечно вся логика должна быть вынесена в плюсы.
#548 #978509
>>978394

>А Пайтона под мк и нет, лол. Только С, только хардкор.


>Я ж говорю - мне ща более в системное/эмбед программирование нужно влиться. Хуй на МК, там все понятно, и моих С там хватает.


Лол што? Микроконтроллеры это и есть Embedded, STM, AVR, PIC это мк, ну ARM ещё. Что в твоём понимании embedded, раз это не мк?
978520
#549 #978520
>>978509
Это тоже эмбед, да. Но в системное проганье то что ты описал не входит. Потому говоря "системное/эмбед" проганье я подразумеваю не или/или а некторый стык этих двух областей.
Но а по поводу того что сейчас понимается под embedded - посмею тебя удивить, но это прежде всего код под Linux в тех или иных его масштабах, под специфичное железо, влючая написание дров и конфигурирование этого железа под линь. И как самый мозговыносящий момент - в качестве сборки линя для всяких железяк типа баркод-сканера или POS терминала сейчас поразительно часто предпочитают Android, и разработка под Андроид тоже очень часто стала подразумеватся под embedded.

А голый кодинг под МК уже чуть ли не архаика и прерогатива аutomotive сегмента, куда набирают С-макак да, странно слышать на 500-1000 уе без шанса роста. Но то уже офтоп
978537
#550 #978537
>>978520

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


Т.е. андроид применяется не только в телефонах, но и в промышленности?

>А голый кодинг под МК уже чуть ли не архаика и прерогатива аutomotive сегмента, куда набирают С-макак да, странно слышать на 500-1000 уе без шанса роста. Но то уже офтоп


Я походу это. Учусь на автоматчика и мы писали на С на мк AVR. У преподавателя такая же работа.
978544978584
#551 #978544
>>978537

>Т.е. андроид применяется не только в телефонах, но и в промышленности?


Прикинь) Потому не теряй времени и копай в линукс, будешь ценным "кадром". На проганье МК слишком много дедов сидит, на копеечные ЗП.

> чусь на автоматчика


Если уж нравится носом в регистрах зарываться, то учи Пролог, ПЛИС, и т.д. Там хоть ЗП со среднепрограммистскими равняются. Но стартовать все равно сложно - порог вхождения не низкий.
#552 #978584
>>978537
Мне все время казалось, что ведроиду не место в индустрии. Там уже плотно сидят WinCE и Linux.
То, что в ведроиде зачастую могут валиться приложения в самый неподходящий момент, да и вообще создан он был не для этого. Цена ошибки высокая, особенно когда она проявляется в нарушении рабочего цикла уже у клиента, так что тут только WinCE и Linux, ИМХО.
Касательно C++ с Qt под андроидом - тут тоже своих косяков хватает. Кроме них придется в любом случае ебаться с JNI, чтобы получать права доступа и прочее, прочее... Не проще ли тогда сразу использовать Java, вместо плясок с бубном, и в итоге получив кучу говна идущего впридачу с Qt?!
978590
#553 #978590
>>978584
В критических местах "индустрии" и обычному линю не место, только всякие RTOS, только хардкор.

Но таких мест не так много, на самом деле. А в остальных удобство разработки, тайм-ту-маркет, нличие поддержки и экосистемы куда важнее стабильности оказывается. Да и той стабильности что есть - за глаза хватает.
#554 #978621
>>978483

>Напиши по-русски без речевых ошибок, и я отвечу.


Посредством объекта b и указателя p вызовите виртуальную функцию WhereAmI() класса A
978648
#555 #978648
>>978621
То есть, тебе нужно вызвать метод объекта А по отношению к Б вместо правильного метода, так?
Ты должен делать это изнутри.

class A {
virtual void huy();
}

class B : class A {
void oldHuy() {
A::huy();
}
}

Сделать это снаружи ты не можешь. Методы для того и делают виртуальными, чтобы вызывались самые близки пол дереву наследования версии, и делают это в том числе потому, что методы базы могут быть несовместимы с предком.
978649978654978687
#556 #978649
>>978648
Поправочка:

class A {
virtual void huy(){cin<<'fuck';}
}

class B : class A {
virtual void huy(){cin<<'beach';}
void oldHuy() {
A::huy();
}
}
sage #557 #978654
>>978648

>Сделать это снаружи ты не можешь.


Может.
978689
#558 #978687
>>978648
На то они виртуальные, что знают, к какому классу принадлежат.
#559 #978689
>>978654
Код в студию.
978706
sage #560 #978706
>>978689

>Код в студию.


Не пользуюсь студией.
http://ideone.com/VnrzJh
978745
#561 #978745
>>978706
Поняяяяяятно. Но: http://ideone.com/XgK4eV
978749978752
sage #562 #978749
978784
#563 #978752
>>978745
Дядя, идите лучше Джаву или Питон осиливайте. Вам кресты не по зубам.
978784
#564 #978779
Так, парни, это снова я с деревьями. Не могу найти в интернете ман по валгринду на русском. А то как-то неудобно со своими сегментайшен файлтами лезть.
978782
sage #565 #978782
>>978779

> Не могу найти в интернете ман по валгринду на русском.


Без мана не можешь написать
valgrind ./kokoko
(./kokoko - это твой бинарник) ?
978785
#566 #978784
http://stackoverflow.com/questions/8003233

Оооооооох... Уже скучаю по сишечке.

>>978749
Можешь не продолжать. Я получил ответ на свой вопрос и дополнил его.
>>978752
Тебя забыл спросить. А, нет, не забыл, просто иди нахуй.
#567 #978785
>>978782

>valgrind ./kokoko


А, нужно через ./
Спасибо
978786
sage #568 #978786
>>978785

> А, нужно через ./


А до этого ты как запускал свои поделки?
978791978793
#569 #978791
>>978786
Запускал так, просто ждб запускатся просто по имени файла.
#570 #978793
>>978786
Вот пишет мне волгринд, что я использую неициализированную перменную структуры, но при этом ее значение правильное. Как я могу посмотреть еще что-нибудь?
978794
sage #571 #978794
>>978793

>я использую неициализированную перменную структуры, но при этом ее значение правильное


В смысле?

> Как я могу посмотреть еще что-нибудь?


Что конкретно?
978798
#572 #978798
>>978794

>В смысле?


https://clbin.com/RCh7Uy.png

>Что конкретно?


Вообще что угодно. Любая информация, которая может помочь понять в чем дело.
978802978876
sage #573 #978802
>>978798

>Любая информация, которая может помочь понять в чем дело.


Посмотри в код.
978803
#574 #978803
>>978802
А ты хорош.
978863
#575 #978856
В общем я не знаю в чем причина.
Program received signal SIGSEGV, Segmentation fault.
0x0000000000401ef4 in Off_base (Top_node=0x0, file=...) at Server.cpp:62
62 int S = Top_node -> IsAHum_;
Вот, что пишет gdb.
https://clbin.com/IayfF0.png
А вот, что выдает валгринд. Память нигде выше не освобождается, выделяется только в одном месте через нью и после проблемной функции освобождается.
978864978865978879
sage #576 #978863
>>978803
Что не так? Номера строк тебе написали.
978866
sage #577 #978864
>>978856
Код ты нам, конечно, не покажешь.
#578 #978865
>>978856
Кусок проблемного кода https://pastebin.com/36GstaA8 Проблема в первом вызове IsAHum_
Вся функция целиком https://pastebin.com/c7K2XA6S
Вот ашник (Tree.h) https://pastebin.com/LYY2RZf4
Вот реализация класса, проблемная функция не оттуда, но возможно, что он при проходе как-то влияет на дерево (User.cpp) https://pastebin.com/2KV0sbVk
978866978867978870
#579 #978866
>>978863
Ну так я и не понимаю, что не так в этой безобидной строке.
>>978865
В добавок, вот пример файла, подаваемого на вход, назвать Base.txt https://pastebin.com/aw8wgYy2
sage #580 #978867
>>978865
Скинь архивом с именами файлов.
sage #581 #978870
>>978865
У меня valgrind ни на что не жалуется.
Но и выходной файл пустой.
978871
#582 #978871
>>978870
После каждого запуска программы, выходной файл нужно обновлять(он по совместительству является входным) до того, что я скинул в пастбине.
978872978873
sage #583 #978872
>>978871
Я просто сделал вывод в файл с другим именем, входной не портится.
978874
sage #584 #978873
>>978871
Да, понятно. past ebin превратил \n в \r\n
#585 #978874
>>978872
Интересная ситуация. А входной у тебя как у меня ?
https://clbin.com/559E3G.png
978875
sage #586 #978875
>>978874
Поэтому надо кидать архивом, чтобы ничего не портилось.
sage #587 #978876
>>978798

>Любая информация, которая может помочь понять в чем дело.


В предпоследней строке тебе valgrind говорит, что ещё можно сделать.
sage #588 #978879
>>978856

>В общем я не знаю в чем причина.


Смотри в 68-ю строку.
978880
#589 #978880
>>978879
У меня к вам предложение. Не бейте лучше обоссыте.
А не расскажешь, как нашел?
978881978882
sage #590 #978881
>>978880
valgrind --track-origins=yes ./Server
978883
#591 #978882
>>978880
Хотя я подумал, можно было догадаться по жалобе на строку в цикле.
#592 #978883
>>978881
Я кстати тоже это забил и ничего полезного почерпнуть не смог. https://clbin.com/ABIcuE.png
978885
sage #593 #978885
>>978883
Неинициализированную память выделил vector. Скорее всего, ты лезешь за границы инициализированного в ней.
#594 #979275
auto t1 = std::async(test);
auto t2 = std::async(test);
return t1.get() == 0 && t2.get() == 0;

Почему только один тред запускается? Нет времени по докам лазить
979302979402
#595 #979302
>>979275
std::async(std::launch::async, test)

Кстати, отличный сервис, можно установить зависимости, собрать проект и запустить тесты https://travis-ci.org/theanonym/libyoba-perl/builds/225310958
и будет собираться автоматически после каждого коммита
#596 #979378
>>978492
В кишках С++ ты хуй разберёшься.
http://stackoverflow.com/questions/98650/what-is-the-strict-aliasing-rule

Если вкратце, то это правило означает то, что от приведения типов указателей твой брат умрёт.
#597 #979402
>>979275
t1.get() != 0
#599 #992049
>>977629
С тем же самым говном пришел на двач сейчас и даже тут ответов нет
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 4 июня 2017 года.

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

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