Программирование


Ответить в тред Ответить в тред

Check this out!
<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
911 61 227

C++ тред #101 /cpp/ Аноним 21/12/19 Суб 15:02:36 15527781
image.png (89Кб, 1200x1349)
1200x1349
image.png (27Кб, 862x433)
862x433
image.png (291Кб, 500x808)
500x808
Аноним 21/12/19 Суб 15:17:37 15528082

Вопрос по qt. Есть класс Mainwindow, в нем я создаю указатель на кнопку и в конструкторе класса делаю так
> button1 = new QPushButton("Button", this);
Но проблема в том, что кнопка не активна. Хотя если создать кнопку отдельно
> QPushButton sd("df",&w);
Где w экземпляр класса, всё будет работать. Почему?
Аноним 21/12/19 Суб 15:40:04 15528513
Как унаследовать все конструкторы базового класса, если в производном только добавляются новые методы?
Аноним 21/12/19 Суб 17:46:15 15530174
Аноним 21/12/19 Суб 18:04:49 15530595
>>1552851
>унаследовать
>конструкторы
Ты ебанутый?
Аноним 21/12/19 Суб 18:17:28 15530686
>>1553017
То есть мне писать десяток конструкторов со всем списком параметров, а потом через двоеточие еще раз делать это?
Аноним 21/12/19 Суб 18:40:24 15530827
Безымянный.png (47Кб, 543x821)
543x821
Аноним 21/12/19 Суб 18:56:56 15530998
>>1553082
Где там наследование то? Явная инициализация базового класса с аргументами из конструктора класса-наследника
Аноним 21/12/19 Суб 18:58:04 15531009
>>1553082
Охуеть, до чего дошёл прогресс, я и не знал о такой возможности

мимо
Аноним 21/12/19 Суб 19:20:29 155311610
>>1553099
Ай блять я долбоеб слепошарый
Аноним 21/12/19 Суб 19:26:44 155312311
Threads только в 2011 году появились? Ахах
Аноним 21/12/19 Суб 19:26:58 155312412
Qt меня уже доканал. Почему вот первое работает отлично, а во втором ничего не происходит?
> QObject::connect(&w, SIGNAL(changepos(int, int)), w.lble, SLOT(setNum(int)));
> QObject::connect(&w, SIGNAL(changepos(int, int)), w.lble, SLOT(resize(int, int)));
Аноним 21/12/19 Суб 19:44:54 155313613
>>1553123
А вот Sockets не появились до сих пор.
Аноним 21/12/19 Суб 20:26:48 155316614
>>1553123
String.split/join нет даже в 2020
Аноним 21/12/19 Суб 20:43:45 155318315
Аноним 21/12/19 Суб 20:51:35 155319416
я же говорил тред сам перекатится
Аноним 21/12/19 Суб 21:30:03 155326917
>>1553124
Если слот к сигналу не подключился, сообщение об этом выводится куда-то во время выполнения. Смотри вкладку Output внизу в Qt Creator или запускай в консоли (в настройках проекта, Settings слева, можно выбрать галочку запуск в терминале).
Аноним 21/12/19 Суб 21:34:10 155328018
Аноним 21/12/19 Суб 21:44:37 155330819
Аноним 21/12/19 Суб 21:55:00 155332520
>>1553308
Огромный комбайн, который хуй пойми как ставить. Пока разберёшься, успеешь 10 раз написать свои строки.
Аноним 21/12/19 Суб 23:15:22 155341121
>>1553325
boost::tokenizer, к примеру, header-only библиотечка из 3х файликов..

Аноним 22/12/19 Вск 00:27:51 155345022
configure.png (188Кб, 1331x1039)
1331x1039
image.png (11Кб, 1034x81)
1034x81
>>1552778 (OP)
Помогите мне разобраться пожалуйста.Я устанавливал qt 5.14.0 для андроид на ubuntu 16.04 и использовал ndk r20. Я следовал инструкциям в этой статье
>https://wiki.qt.io/Android
После того как я запустил ./configure вот какой мне вывел результат. Объясните пожалуйста, как обойти предупреждения насчет кросс-компиляции и насчет LLVM_INSTALL_DIR
Аноним 22/12/19 Вск 00:33:40 155345423
>>1553450
Есть какая-то причина, по которой ты не используешь установщик, а собираешь из исходников? В установщике можно выбрать андроид платформы. https://www.qt.io/download внизу open source.
Аноним 22/12/19 Вск 00:34:36 155345624
Аноним 22/12/19 Вск 00:41:31 155346025
image.png (76Кб, 1224x398)
1224x398
>>1553456
вроде как из-за того что в ndk 20 убрали поддержку gcc toolchain, надо компилить исходники с помощью кланга, насколько я понял из этой темы https://forum.qt.io/topic/95104/qt-creator-android-clang. Поэтому я думаю, лучше я скомпилю qt из исходников.
Аноним 22/12/19 Вск 00:53:11 155347326
>>1553460
Я это понял так: надо использовать clang для сборки исходников, потому что больше нельзя собрать из исходников с помощью gcc. Но зачем тебе вообще собирать из исходников? Попробуй, в общем. Я собирал проект с ndk-20 без ручной сборки qt.
Аноним 22/12/19 Вск 00:58:25 155347627
>>1553473>>1553473
>Я это понял так: надо использовать clang для сборки исходников
то есть в ./configure нужно прописать -platform linux-clang? И ты собирал проект на qt 5.14?
Аноним 22/12/19 Вск 01:11:39 155348528
>>1553476
> то есть в ./configure нужно прописать -platform linux-clang?
Нет (не знаю), я к другому веду. На скрине обсуждается вопрос выбора компилятора для сборки qt, но если ставить qt через установщик, то такого вопроса даже не возникнет. А ты возможно подумал, что если gcc на clang сменился, то надо собирать из исходников. Проект последний раз пробовал собирать на qt 5.13.2, поставленный через установщик. Даже с ndk-r20b. https://github.com/th3or14/opencv-with-ffmpeg-on-qt-for-android
Аноним 22/12/19 Вск 01:23:41 155348829
>>1553166
Таки split же подвезут в 20 стандарте.
Источник: лекции от PVS Studio, лекция про 20 стандарт.
Аноним 22/12/19 Вск 01:24:19 155348930
>>1553488
Да и stringstream легко справится с этой задачей.
Аноним 22/12/19 Вск 01:44:50 155349431
>>1553489
Насколько легко?
vector<string> s = stringstream("abc def ghi").split(" ");
Справится хотя бы на таком уровне? Или нужно будет писать 20 строк и инклудить какие-то странные классы?
Аноним 22/12/19 Вск 01:59:39 155349632
>>1553494
std::string text = "Let me split this into words";

std::istringstream iss(text);
std::vector<std::string> results(std::istream_iterator<std::string>{iss},
std::istream_iterator<std::string>());
Аноним 22/12/19 Вск 02:03:00 155350033
Аноним 22/12/19 Вск 04:37:25 155352234
воняю как боров

Аноним 22/12/19 Вск 04:47:08 155352635
photo2019-10-22[...].jpg (28Кб, 646x468)
646x468
Поясните за эту хуйню. Как это работает? https://wandbox.org/permlink/bdVTZHXMQ3vf5f0e

Почему раскрытие идёт корректно только внутри таких вот скобок, но не внутри std::invoke? Например, std::invoke(&f, std::forward<V>(v)..., cap) не сработает, потому что не сможет найти подходящий overload. Это потому, что не существует прототипа, который бы раскрывал variadic pack?
Аноним 22/12/19 Вск 07:04:17 155354236
Аноним 22/12/19 Вск 07:22:31 155354437
>>1553522
Пытался выучить кресты за 21 день?
Аноним 22/12/19 Вск 07:50:09 155354538
>>1553124
Проблема оказалась в том, что move не слот как я понял, при выпадении листа методов слоты имеют значек с зазубринами а просто методы прямоугольник
Аноним 22/12/19 Вск 08:04:12 155354839
Аноним 22/12/19 Вск 14:05:59 155367740
>>1553526
Знаешь как эта хуйня (...) работает? Она в данном случае указывает, какое именно выражение копипастится, т.е. раскрывается.

Вот смотри, если написать внутри инвока оно раскроется так.
(invoke(&vector::reserve, forward<V>(v)..., cap)) -> (invoke(&vector::reserve, a, b, c, cap))
, попытается вызвать vector::reserve(a, b, c, cap) и справедливо заметит, что такой перегрузки нет.

А если после инвока, то копипастится весь вызов и всё ок.
(invoke(&vector::reserve, forward<V>(v), cap), ...) -> (invoke(&vector::reserve, a, cap), invoke(&vector::reserve, b, cap), invoke(&vector::reserve, c, cap))
Аноним 22/12/19 Вск 14:10:27 155368341
>>1553677
Оно то да, но это разные вещи
Аноним 22/12/19 Вск 14:12:17 155368642
>>1553683
>>1553542
Хм, либо я ебусь в глаза, но причем здесь туплы?
Аноним 22/12/19 Вск 15:55:53 155377443
Что используется для вывода сообщений у c++? На шарпе я всегда messagebox использовал, а тут не знаю даже.
Аноним 22/12/19 Вск 16:20:45 155379844
>>1553774
Можешь и здесь использовать MessageBox если ты упоротый. Ещё можешь посмотреть в сторону Qt.
Аноним 22/12/19 Вск 16:24:15 155379945
>>1553774
В С++ CLI доступно всё то же, что и в шарпе.
Аноним 22/12/19 Вск 16:41:57 155381446
>>1553798
Почему упоротый сразу?
Аноним 22/12/19 Вск 17:07:21 155384147
>>1553799
C++/CLI это альтернативный синтаксис для шарпа, несовместимый с экосистемой крестов.
Аноним 22/12/19 Вск 17:31:07 155386448
>>1553814
Потому что WinAPI упорот.
Аноним 22/12/19 Вск 18:39:38 155392249
Qt еще и ошибки детектить не способно. Программа неожиданно завершилась и иди гуляй. Заебись.
Аноним 22/12/19 Вск 18:43:09 155392550
Аноним 22/12/19 Вск 18:45:06 155392651
>>1553922
Как говорит луркморье, на говне сметану не сделаешь.
Аноним 22/12/19 Вск 18:50:37 155392952
>>1553922
Вероятно, это значит, что исключение выбрасывается внутри слота.
Казантип Сосет 22/12/19 Вск 20:45:31 155400153
Помогите, пожалуйста, составить программу или переделать мою, на кону стоит зачет по программированию и анальная девственность.
Условие: Записать элементы массива X[N] в массив Y[N], сдвинув элементы массива Х влево на 3 позиции. При этом 3 элемента из начала массива Х перемещаются в конец. В массиве Y[N] перед первым четным элементом добавить элемент со значением -1. Использовать операторы ввода-вывода printf-scanf.

#include <stdio.h>
#include <cstdlib>
#include <iostream>
int main(int argc, char argv)
{ unsigned int X[100], Y[100];
int i,N,i1;
printf ("\n N=");
scanf ("%d",&N);
for(i=0;i<N;i++)
{printf("X[%d]=",i);
scanf("%d",&X);
}
printf("\n");
for (i=0; i<N; i++)
{if (i<N-3) Y=X[i+3];
else Y=X[i-N+3];
}
i1=-1;
for (i=0;i<N;i++)
{printf("Y[%d]=%d\t",i,Y);
if(Y%2==0) i1=i;}
if(i1!=0)
{
printf("\n");
printf("Y[%d]=%d\n",i1,Y[i1]);
for(i=N;i>i1-1;i--)
Y=Y[i+1];
Y[i1]=-1;
N++;
for(i=0;i<N;i++)
printf("Y[%d]=%d\t",i,Y);
printf("\n");
}
else {printf("\n");
printf("There are not even elements \n");}
return 0;
}
Аноним 22/12/19 Вск 21:28:49 155406054
>>1554001
-> С тред, причем тут кресты
Аноним 22/12/19 Вск 21:34:46 155406655
>>1554060
Как же, он ведь аж iostream заинклудил.
Аноним 22/12/19 Вск 22:34:52 155413756
Как сделать свой класс атомарным? У меня есть класс, которые может суммировать строки, но при этом он должен быть однозначным в многопоточности. Реализовать внутри очередь?
Аноним 22/12/19 Вск 22:47:58 155415857
>>1553841
Message Box можно и с ассемблера вызывать.
Аноним 22/12/19 Вск 22:49:41 155416258
Аноним 22/12/19 Вск 23:19:13 155418459
Посоветуйте, плес, задачек с ответами, чтобы ООП надрочить.
Аноним 22/12/19 Вск 23:23:17 155418560
>>1554001
ну кстати чел у тебя почти все правильно, надо только "if(i1!=0)" заменить на "if(i1!=-1)", "for(i=N;i>i1-1;i--)" на "for(i=N - 1;i>i1-1;i--)", а "Y[i_]=Y[i+1];" на "Y[i + 1]=Y[i_];"
Аноним 22/12/19 Вск 23:43:32 155419661
>>1554184
Наследование квадратов от прямоугольников.
Аноним 23/12/19 Пнд 00:07:44 155421262
>>1554137
Что значит "атомарный класс"? Атомарными могут быть только операции. Добавь мютексы в свои методы
Аноним 23/12/19 Пнд 00:28:43 155422263
>>1554212
ну да, операция сложения строк. С мютексами насколько я понимаю будет долгая задержка, если операция длится долго.
Аноним 23/12/19 Пнд 01:14:50 155425164
Вопрос по qt. Возможно ли QTreeView сделать чтобы итем верхнего уровня имел 1 столбец, а его дети 2?
Аноним 23/12/19 Пнд 01:57:15 155427565
Ананасы, поясните за аллокатор (кастомный).
Вот, к примеру, он выделяет память кусками.
А как быть есть подо "что-то" не хватит выделенного куска памяти. Например, текстура.
Как быть тогда? Выделять несколько чанков под неё?
Аноним 23/12/19 Пнд 02:25:41 155428566
>>1554222
Так эта твоя операция навряд ли будет длиться долго, но суть не в этом.
Покажи сигнатуру метода, потому что не совсем понятно, как класс должен строки складывать.
Аноним 23/12/19 Пнд 02:55:09 155429467
>>1554184
Сделай своё api для гуи. С кнопками, ползунками и надписями, чтобы все элементы интерфейса взаимодействовали друг с другом через виртуальные методы или ещё как и могли в нажатия мышкой, клавиш, колёсико.
Аноним 23/12/19 Пнд 03:42:34 155430668
image.png (6Кб, 245x125)
245x125
У меня есть луп выполняющий действие каждые 2 сек.
У меня есть кнопка Х для выхода из лупа.

Можно ли как то выйти из лупа быстрее, чем происходит одна итерация (2 сек)?
Аноним 23/12/19 Пнд 03:49:53 155430869
>>1554306
Например, во вложенном цикле 20 раз спать по 100 мс и затем проверять нажатие.
Аноним 23/12/19 Пнд 04:25:44 155431470
>>1554308
Типа проверять 20 раз между каждым 100мс сном?
Аноним 23/12/19 Пнд 04:28:12 155431571
>>1554306
Ну будьте же людьми, напишите нормальный цикл обработки сообщений и ловите WM_KEYDOWN
Аноним 23/12/19 Пнд 05:35:45 155432272
image.png (30Кб, 769x409)
769x409
>>1554184
ооп это парадигма для фабричного программирования, то есть бля берется проект в вакууме, описывается задание для старшего технаря, тот рисует облачки со стрелочками(ну вы знаете), отдает эти облачки со стрелочками младшим обезьянкам и следит за ними как они кодят.

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

например тут писали про квадраты из прямоугольников. ну да это очень простой и наглядный пример. но бля задать прямоугольник можно несколькими способами https://gamedev.ru/terms/AABB .

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

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

я работал с таким идиотом, ну фанатом uml облачек и архитектуро бреда. я просто брал его классы, переписывал и они получались короче либо вообще исчезали, так как мне нужна была причина это делать, я еще сверху дописывал фичи или находил баги. даже ебаное ооп я понимал лучше него. но он отплясывал перед менеджерами и руководителями, которые в свою очередь с большой вероятностью идиоты тоже, так что учиться надо отплясывать в первую очередь, а код писать не сложно.
Аноним 23/12/19 Пнд 06:17:50 155433073
>>1554294
>Сделай своё api для гуи.
Плохой вариант. Гуй на ООП не очень хорошо ложится. Компонентный подход гораздо удобнее.
Аноним 23/12/19 Пнд 06:20:34 155433174
>>1554330
>Все GUI фреймворки построены с использованием ООП
>Шкальник с двача
Аноним 23/12/19 Пнд 06:20:38 155433275
RXv8b.png (44Кб, 300x406)
300x406
>>1554251
>Возможно ли QTreeView сделать чтобы итем верхнего уровня имел 1 столбец, а его дети 2?
Можно сделать, чтобы он отрисовывался на два столбца. Но надо писать свою модель. Посмотри, как у них Property Browser сделан.
Аноним 23/12/19 Пнд 06:23:35 155433476
>>1554331
>Все GUI фреймворки построены с использованием ООП
Далеко не все, ImGui, например. А те, что написаны, начинали писаться в 90-е, когда ООП было модно. Например swing на джаве - образцовый пример, когда ООП только мешает. Там заебешься какую-нибудь кастомизацию делать, хотя ООП тут вроде должно помогать.
Аноним 23/12/19 Пнд 06:27:00 155433577
>>1554315
>напишите нормальный цикл.
>ловите WM_KEYDOWN.
И как это тебе поможет выйти из цикла, который с задержкой в 2 сек, быстрее ?

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

Вот это решение >>1554308
скорее всего, оптимально.
Аноним 23/12/19 Пнд 06:53:05 155434478
Аноним 23/12/19 Пнд 06:57:24 155434779
>>1553922
Оказалось, что после того как я удалил присвоение указателя, действие с ним осталось. Странно что это даже не подсветилось.
Аноним 23/12/19 Пнд 07:08:34 155434880
>>1554334
Immediate Mode Gui (включая ImGui) фреймворки сделаны специально для игр и подобных им вещей, которые работают в непрерывном цикле "обновление состояния-отрисовка" (а не по типичной для десктопных приложений событийной модели). Они очень примитивные и ничего серьезного ты на них не сделаешь.

>Там заебешься какую-нибудь кастомизацию делать, хотя ООП тут вроде должно помогать.
Без ООП ты еще больше заебешься при попытке написать что-то мало-мальски сложное.
Аноним 23/12/19 Пнд 07:36:16 155434981
>>1554348
> Они очень примитивные и ничего серьезного ты на них не сделаешь.
Редактор Unity3d написан на immediate mode фреймворке. Это достаточно серьезно?
>Без ООП ты еще больше заебешься при попытке написать что-то мало-мальски сложное
Emacs, например, можно считать "мало-мальски сложным"? ООП там нет.

Я вообще не против ООП, тем более, если оно встроено в язык. Мне не нравятся практики из 90-х, когда в том же гуи все наследуется от супержирного базового виджета, а весь функционал приколочен гвоздями и инкапсулирован так, что поменять что-то можно только через систему костылей.
Аноним 23/12/19 Пнд 07:41:37 155435182
>>1554349
>Редактор Unity3d написан на immediate mode фреймворке. Это достаточно серьезно?
Я уверен, что они поверх него навертели ООП врапперов

>Emacs
У емакса считай что гуи вообще нет

>Мне не нравятся практики из 90-х, когда в том же гуи все наследуется от супержирного базового виджета, а весь функционал приколочен гвоздями и инкапсулирован так, что поменять что-то можно только через систему костылей.
Оно так неспроста и лучшего способа делать гуй пока не придумали
Аноним 23/12/19 Пнд 08:12:08 155435583
>>1554322
>я просто брал его классы, переписывал и они получались короче либо вообще исчезали.
В классе десять методов, а нужен только один - ну как не выкинуть девять не нужных, написав класс из одного метода ? - понимаю.
Или, так и хочется выкинуть весь класс, а нужный метод оформить в виде функции, да ?

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

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

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

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

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

В остальном, как тут не отпинывайся от ООП, оно неизбежно : так же протестовали и против высокоуровневых языков - сейчас даже микроконтроллеры программируются на них, добрались, со всеми тяжкими, классами, скрытыми внутренними функциями языка и прочее.
Аноним 23/12/19 Пнд 08:25:49 155435884
>>1554344
И как это применить ? - первое генерирует таймер, второе закрывает программу.
"Sleep(2000)" заморозила программу, может ты как-то хочешь дать ей отбой.
Аноним 23/12/19 Пнд 08:31:56 155435985
>>1554351
>Я уверен, что они поверх него навертели ООП врапперов
Не навертели.
>У емакса считай что гуи вообще нет
Наоборот, емакс - это одно сплошное гуи, пусть и текстовое (хотя графика там тоже есть). Еще как пример - чисто сишный блендер.
>Оно так неспроста и лучшего способа делать гуй пока не придумали
Давно придумали, просто вынуждены использовать легаси родом из 90-х вроде Qt.
Аноним 23/12/19 Пнд 09:44:46 155438186
>>1554355
>>ну как не выкинуть девять не нужных
когда там в С++ уже завезут =delete для своих методов а не только операторов и конструкторов/деструктора?
Чтобы я писал так:

class Foo
{
virtual void pina() {cout << "пора бухать";}
};

class Bar : public Foo
{
void pina() = delete;
};

Bar bar;
bar.pina(); <===== ERRROOOORRRR, НИЗЯ
Аноним 23/12/19 Пнд 09:51:33 155438687
>>1554381
Тогда всё ООП с полиморфизмом идёт нахуй. Класс должен расширять поведение базового, а не заменять его.В теории
Аноним 23/12/19 Пнд 09:56:17 155438888
Аноним 23/12/19 Пнд 10:02:09 155439289
image.png (21Кб, 491x316)
491x316
>>1554386
не идет, так можно делать. Можно удалять делать недоступным базовый функционал

И если в гламурных С#/Java это пофиг, то уж в С++ который весь такой под оптимизации - уже давно пора сделать какой-то механизм для гарантированного удаления говна на уровне компилятора.
Аноним 23/12/19 Пнд 10:25:48 155440590
>>1554331
> Все жрут говно
> И ты жри
Классика же ну.
Аноним 23/12/19 Пнд 10:28:26 155440791
>>1554386
> Тогда всё ООП с полиморфизмом идёт нахуй
Ого, а я вижу ты начал догадываться.
Аноним 23/12/19 Пнд 14:30:15 155461092
>>1554381
>когда там в С++ уже завезут =delete для своих методов а не только операторов и конструкторов/деструктора?
Retarded? Ещё в C++11 завезли. Даже для free functions можно, не только методов.https://wandbox.org/permlink/ooDbZbcgXdKwD8sD
Аноним 23/12/19 Пнд 14:36:12 155462093
>>1554610
Охуеть плюсы продвинулись. Может, ещё и рефлексию и lisp-стайл макросы добавили давно, просто никто не заметил?
Аноним 23/12/19 Пнд 14:41:35 155462694
>>1554381
>class Foo
>{
>virtual void pina() {cout << "пора бухать";}
>};
>
>class Bar : public Foo
>{
>void pina() = delete;
>};
>
>Bar bar;
>bar.pina(); <===== ERRROOOORRRR, НИЗЯ
И без `void pina() = delete;` будет ERRROOOORRRR, НИЗЯ
Аноним 23/12/19 Пнд 14:50:42 155463195
>>1554355
а еще я вносил серьезные правки в проект, и типа после моих правок одни баги исчезали и вероятно появлялись другие для меня не очевидные.

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

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

а на счет лишнего мертвого кода - а нахуй он нужен, он же все равно будет в системе контроля версий, так что можно удалить и восстановить по желанию. я думаю так, удалять такой код можно, что бы глаза лишний раз не мозолил. но я говорил не про неиспользуемый код, а про используемый раздутый говнокод.
Аноним 23/12/19 Пнд 15:16:06 155465996
Аноним 23/12/19 Пнд 15:16:48 155466197
image.png (4Кб, 272x101)
272x101
>>1554631
Пытаюсь разобраться с реализацией очереди массивом..
Сап, плюсики, подскажите пожалуйста что на пикрил происходит. Она же всегда 0 дает. Тогда зачем ? Более полная часть кода тут https://rentry.co/sourcecode/raw
Аноним 23/12/19 Пнд 15:32:09 155467098
>>1554661
лабы идут на хуй, извини
Аноним 23/12/19 Пнд 15:32:33 155467199
>>1554661
там какой-то код, который к С++ отношения не имеет. Или там пробелы пропущены в аргументах функций
Аноним 23/12/19 Пнд 15:45:17 1554689100
>>1554671
>Или там пробелы пропущены в аргументах функций
Кодировка, чтобы ее, похерелись пробелы между типом возвращаемого значения и неймингом функций.

>>1554670
У тебя конкретный вопрос спрашивют, а не просят зделоть, в прочем ты все равно нихуя не понимаешь
Аноним 23/12/19 Пнд 15:51:57 1554701101
>>1554661
там сыроватый код но логика определенная есть. под очередь выделяется память, допустим int[100]. изначально очередь пустая, по этому начало и конец очереди 0 0. добавляется элемент в очередь, конец становится 1. берется элемент из очереди и начало становится 1, как и конец.

после нескольких таких операций начало и/или конец могут выйти за границы куска памяти. код на пикриле как раз для защиты от этого.
допустим начало очереди на 98 элементе массива, я добавляю элемент и конец становится 99, я добавляю еще элемент и конец выходит за пределы массива, но память уже есть выделенная и можно просто начать залазить в начало массива. финт с остатком от деления общеизвестен, к n + 1 ты дописываешь (n + 1) % data.length и ты уже не выйдешь за пределы массива.

перепиши псевдокод for(i = 0, i < 100) { print(i % 10)} и посмотри что будет.
Аноним 23/12/19 Пнд 15:52:27 1554702102
>>1554689
а то, 6 лет плюсов, но нихрена не понимаю, конкретны ответ таков: ты тупой, не лезь в кресты
Аноним 23/12/19 Пнд 15:55:08 1554709103
image.png (120Кб, 981x783)
981x783
>>1554702
>6 лет плюсов
пошли авторитетные аргументы

а у меня жопа толще, соси быдло.

Видел я вас таких, пиздят тудя сюда языком, а по-факту сами нихуя не понимают.

Алсо, я вообще мимиокрокодил.
Аноним 23/12/19 Пнд 15:55:46 1554710104
>>1554610
> Retarded?
Словил БАГРАТИОН почему-то.
Аноним 23/12/19 Пнд 15:58:41 1554718105
>>1554709
проходи, не задерживайся, если ты нормально код запостить не можешь, что с тебя взять? ты задаешь вопросы, но задаешь из без уважения
Аноним 23/12/19 Пнд 16:01:58 1554723106
>>1554709
я 10 лет кодю на разных языках и каждый раз трудно вчитываться в говнокод студентов, я >>1554701-антон

на счет уважения сыглы, студенты должны страдать и пусть они вообще нахуй идут, я ответил только потому что мне скучно было
Аноним 23/12/19 Пнд 16:02:05 1554724107
>>1554718
>если ты нормально код запостить не можешь
Какой код, поехавший. Я мимошел и увидео твои охуенно ценные ответы уровня, "идите нахуй", надменность всегда отличает находящихся под эффектом Даннинга — Крюгера.

>ты задаешь вопросы
Пиздец, и вот это pr сегодня, не понимает даже как wakaba работает. Ебушка воробушка.
Аноним 23/12/19 Пнд 16:19:23 1554745108
>>1554724
хуя, а юродивых на руси все еще любят
Аноним 23/12/19 Пнд 16:21:49 1554748109
>>1554723
Вот, братишка понимает, что посты отсталых снижают общий уровень интересности тредов. Когда уже кресты (си с классами) перестанут преподавать в вузах? Дожить бы!
Аноним 23/12/19 Пнд 19:26:28 1554917110
Как пилить рандом в нескольких потоках, чтобы числа не совпадали в соседних тредах?
Аноним 23/12/19 Пнд 19:30:58 1554920111
>>1554917
Запили один метод с мутексом.
Аноним 23/12/19 Пнд 19:35:24 1554923112
>>1554917
Возьми любой готовый генератор и сделай ему thread_local стейт
Аноним 23/12/19 Пнд 19:52:39 1554932113
>>1554610
>>1554381
раньше просто в классе-наследнике меняли модификатор доступа с public на private для метода-члена который нужно было "скрыть"

Аноним 23/12/19 Пнд 20:02:56 1554936114
>>1554917
Тебе нужен генератор случайных чисел, где семя изменяется на 1 каждый шаг. Ты его перепиливаешь так, чтобы в для примерах трёх потоках семена были 0, 1, 2, и каждый шаг семя изменялись на 3, а не на 1.
Если на быстродействие более-менее плевать, ты делаешь 3 одинаковых генератора в одинаковом состоянии, второму и третьему проводишь 1 и 2 итерации. Потом при извлечении числа выполняешь итерацию 3 раза, и берёшь только последнее значение. Из плюсов - это сработает с любым генератором, даже где семя меняется непредсказуемым образом.
Не уверен что все генераторы сохранят свои свойства рандомности, равномерности распределений и всё в таком роде - нужно проверять.

>>1554920
Угу, и это утонет, тому что он вместо 10 мс будет генерировать 10к значений в течении нескольких секунд.

Лучше тогда единый циклический массив создавать, и оттуда с помощью атомарного счётчика извлекать значения. Например, буфер на 256 значений. Метод атомарно увеличивает значение, забирает число, и потом генерирует новое (в массиве помимо числа хранятся состояния генератора и номер). Можно и стек какой-нибудь неблокирующий прикрутить, но что-то я больше в циклический массив вижу.
Аноним 23/12/19 Пнд 22:09:24 1555053115
>>1554748
Ещё лайфхак: не читать посты, в которых есть буква Q. Моя жизнь действительно стала намного легче, когда я начал игнорировать qt-детей в этом итт треде.
Аноним 23/12/19 Пнд 22:13:46 1555057116
>>1555053
То ли дело посты с буквой "w" от winapi-олдов.
Аноним 23/12/19 Пнд 23:45:37 1555164117
Аноним 23/12/19 Пнд 23:51:26 1555171118
>>1555164
Он говорит, что третий аргумента find'а должен быть типа std:;vector<int>, а не int.
Аноним 23/12/19 Пнд 23:59:13 1555179119
>>1555164
у тебя вектор из векторов, только вместо вектора ты почему-то ищещь число.

Это как бы в ящике ящиков ты бы искал содержимое ящиков
Аноним 24/12/19 Втр 00:20:13 1555188120
chandler-carrut[...].png (221Кб, 600x440)
600x440
Два вопроса по теме «C++ Type Loophole» и «Stateful TMP»:
1. Цитата: «В C++ неймспейс-скоуп — это такое глобальное состояние, которое можно менять (через инстанциирование шаблонных структур с функциями-друзьями), и которое можно считывать (через SFINAE, detector idiom и тому подобные трюки). Интересно, можно ли это считать ещё одним тьюринг-полным языком внутри C++?» [1]
Вопрос: Поясните, где там именно это «глобальное состояние»? Как оно меняется? Как его записывать? Как его считывать? Пока непонятно. По статье с Хабра: причем вообще здесь if constexpr(false) и template<typename> void foo() против void foo()?

2. Цитата: «This type loophole basically allows us to store some type into a "variable" and later read it back! It's very powerful» [2].
Вопрос: Так а type_list а-ля Александреску ведь то же самое делает. Разве нет?

Источники:
1. https://habr.com/ru/post/472780/
2. https://alexpolt.github.io/type-loophole.html

Аноним 24/12/19 Втр 00:53:25 1555201121
>>1555188
Ещё такая цитата есть: «Defining a friend function in a template, then referencing that function later provides a means of capturing and retrieving metaprogramming state».
Аноним 24/12/19 Втр 00:55:06 1555205122

>>1555188
> Поясните, где там именно это «глобальное состояние?
Очевидно, в компиляторе.
>Как оно меняется? Как его записывать? Как его считывать?
Так это же сабж статьи, состояние неожиданно поменялось. Записываешь определением функции, читаешь попыткой её вызова.
> По статье с Хабра: причем вообще здесь if constexpr(false) и template<typename> void foo() против void foo()?
В стандарте содержимое if constexpr (false) отбрасывается только в шаблонных функциях, поэтому в обычной функции ничего не отбросилось.
Аноним 24/12/19 Втр 01:01:01 1555207123
>>1555188
ебать там комментов насрано
но я, несмотря на то что и целиком книжку александреску читал (еще в нулевых) и "шаблоны с++" вандервурда тоже читал, те, в принципе, могу понять че там делают, НО нахуя?
зачем

Аноним 24/12/19 Втр 01:07:31 1555210124
Аноним 24/12/19 Втр 01:32:19 1555220125
image.png (37Кб, 502x581)
502x581
Помогите.

У меня есть луп1, он ожидает нажатия одной из двух клавиш (Х, SPACE) и выполняет действия, которые в конечном итоге ведут в луп2

Луп2 выполняется бесконечно до тех пор, пока не будет нажат Z, после чего будет осуществлен переход обратно в луп1.

Проблема в том, что если кнопка выхода из луп2 будет нажата еще до входа в сам луп - после входа луп2 выполнится один раз и тут же выйдет в луп1.

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


Аноним 24/12/19 Втр 01:57:22 1555230126
>>1555220
Это побочный эффект этой функции. Тоже сталкивался с ним во время дельфиёбства. Я тогда каждый раз считывал все 255 клавиш, и уже потом проверял значение на равенство 0, залезть в описание мозгов не хватило.
Если с момента прошлого вызова клавиша была нажата, то функция выдаст не ноль, и уже только на второе считывание выдаст 0. Она же какие-то номера выдаёт - попробуй посмотри что эти номера означают, там должна быть эта информация.

Собственно, вот описание с первой же ссылке: "Если функция завершается успешно, возвращаемое значение устанавливает, была ли клавиша нажата начиная с последнего вызова функции GetAsyncKeyState, и является ли клавиша в настоящий момент отпущенной или нажатой. Если старший значащий бит установлен, клавиша находится в нажатом состоянии, а если самый младший значащий бит установлен, клавиша была нажата после предыдущего вызова GetAsyncKeyState. Однако, вам не следует полагаются на это последний характер изменения; для получения дополнительной информации, см. раздел Замечания."

А вообще используй хуки лучше. Зачем гонять цикл непонятный, если можно каллбек засунуть.
Аноним 24/12/19 Втр 02:20:38 1555233127
PRGM.jpg (63Кб, 640x427)
640x427
>>1555205
> содержимое if constexpr (false) отбрасывается только в шаблонных функциях
В Шланге и ГЦЦ сейчас баг.
Сейчас, если get пределён как get(type<tag>), то они НЕ отбрасывают (НЕкорректное поведение).
Пример: https://wandbox.org/permlink/oLLKYqbl4QFxIddO

Если заменить определение get:
- было: get(T)
- стало: get(type<tag>)
то:
- Шланг: отбрасывает (корректное поведение)
- ГЦЦ: НЕ отбрасывает (НЕкорректное поведение)
Пример: https://wandbox.org/permlink/DysX56FrbZ899H6F

МСВЦ отбрасывает (корректное поведение) и при get(T), и при get(type<tag>).





Аноним 24/12/19 Втр 02:39:45 1555235128
>>1555207
>НО нахуя?
Тоже не понимаю. Если уж оч. нужно работать в компайл-тайме (вычисления/рефлексия), то «вбилдили» бы в С++ норм. язык для компайл-тайма (например, CCL -- С++ Compile-Time Language), кот. исп. привычный синтаксис С++, и код на кот. помещается внутри конструкции __ccl { code }.
А сейчас порнография а-ля «в 2 часа ночи случайно нашёл новый сайд эффект в шаблонном С++ коде, сразу же пролил (от радости и от ужаса) чай и уже утром (пока соображал) вместо того, чтобы тихо зарепортить на http://www.open-std.org/jtc1/sc22/wg21, написал сокрушительный пост в бложек «The New Great С++ Type Loophole», выступил на конференции -- код растащили в продакшн (несмотря на "Верещагин, уходи с баркаса!!!")».


Аноним 24/12/19 Втр 03:35:29 1555246129
>>1555235
ну лично я поклонник умеренного использования фич языка, без фанатизма
вот, к примеру, в chrono ты можешь время записать в удобной для тебя форме, а оно при компиляции уже посчитается в удобную для машины форму, окей, это удобно
вроде как и компай-тайм, но, такой, лайтовый
Аноним 24/12/19 Втр 03:39:18 1555247130
>>1555235
ну а вообще вот то что ты сказал, комитет именно это и делает в новых стандартах
раньше для вычислений компайл-тайм приходилось использовать некий набор трюков связанных с шаблонами (лень перечислять, кто незнает, может тупо открыть древнюю книжку александреску и почитать)
а щас у тебя все то же самое можно делать итеративненько (и до неприятного понятно, ибо магия пропадает) в constexpr функциях
Аноним 24/12/19 Втр 03:52:30 1555249131
>>1555233
Причём тут get? Отбрасывание ожидалось в foo
Аноним 24/12/19 Втр 06:04:05 1555256132
>>1552778 (OP)
>automtic smart pointers
Это что за зверь?
Аноним 24/12/19 Втр 06:46:25 1555260133
>>1555188
Stateful TMP через friend injection это же рваный бойан.
Аноним 24/12/19 Втр 18:14:42 1555664134
>>1555249
Да, отбрасывание происходит в foo.

get тут притом, что по факту в разных компиляторах отбрасывание (в foo) происходит / не происходит в зав-ти от определения ф-ции get:
- если тип её аргумента НЕ явл. аргументом шаблона класса, то компиляторы ведут себя одним образом (в основном НЕверным), - если тип её аргумента явл. аргументом шаблона класса, то другим (в основном верным).
Аноним 24/12/19 Втр 18:36:11 1555672135
>>1555179
как боженька пояснил!
Аноним 24/12/19 Втр 18:38:16 1555673136
>>1555220
иди на хуй со свое лабой и ГОТУ прихвати
Аноним 24/12/19 Втр 18:43:22 1555674137
>>1555673
>ГОТУ прихвати
Ты ещё не постиг Дао.
Аноним 24/12/19 Втр 18:52:09 1555681138
>>1555188
Вот, наверное, ставший уже классическим, тривиальный пример stateful template metaprogramming для 2-х состояний (false / true) [1].

Операции с состояниями:
- Запись состояния: 1-й вызов int f () => 1-й вызов оператора noexcept (flag (0)) => так как на данный момент friend-ф-ция int flag (int) еще не определена, то noexcept (flag (0)) вернет false => 1-й вызов int f () вернет false.
- Изменение состояния: 1-й вызов ф-ции int f () => инстанцирование шаблонной структуры struct writer => определение friend-ф-ции int flag (int).
- Чтение состояния: 2-й вызов int f () => 2-й вызов оператора noexcept (flag (0)) => так как на данный момент friend-ф-ция int flag (int) уже определена, то noexcept (flag (0)) вернет true => 2-й вызов int f () вернет true.

В русскояз. пространстве есть два названия такого приёма:
1. (офиц.) «программирование на шаблонах с сохранением состояния»
2. (народн.) «протаскивание» состояния через повторные вызовы constexpr-функций» [2].

Основной принцип таких приёмов заключается в том, что инстанцирование шаблонных структур/классов в разных частях кода ведёт к определениям friend-ф-ций (доступных через ADL в глоб. простр. имен), что приводит к изменению состояния, читаемого в данном примере через вызов оператора noexcept (flag (0)).

В заключение стоит отметить, что С++ в его нынешнем виде -- это ветеран, который весь «латаный-перелатаный», весь «чиненый-перечиненый», весь «заплата на заплате», который медленно (но уверенно), через годы, через труд, пот, боль и кровь приближал (как мог) победу в ожесточённой битве за (среди прочих) производительность и zero-cost abstractions, при этом неся на себе тяжелый груз обратной совместимости с пред. С++ стандартами.

Ссылки:
1. http://b.atch.se/posts/non-constant-constant-expressions
2. https://2ch.hk/pr/arch/2018-08-16/res/1196791.html#1196926
Аноним 24/12/19 Втр 19:18:02 1555687139
>>1555220
все у тебя нормально? мать не сдохла? скажи кто тебя гото научил, я его пиздану
Аноним 24/12/19 Втр 20:26:07 1555753140
>>1555673
Это не лаба, я вообще пытаюсь учить плюсы только пять дней по вечерам после работы.
>>1555687
>скажи кто тебя гото научил
Вот тут пример посмотрел. Единственная отговорка почему его "нельзя" использовать заключалась в том, что это якобы усложняет чтение программы и можно запутаться в порядке выполнения кода. Хотя, мне показалось, что это наоборот облегчает переход из одного участка кода в другой, так как не нужно создавать 99999 булианов и проверять их значения. И как выпрыгивать из многоуровневых циклов без готу я вообще не представляю.
https://ravesli.com/urok-66-operator-goto/
Аноним 24/12/19 Втр 20:32:05 1555767141
>>1555753
>почему его "нельзя" использовать

На практике goto используют только новички, или деды с седыми яйцами. Если у деда ещё не начался маразм, то ему можно, потому что он наверняка знает что делает и в конкретном случае этот goto имеет смысл.
Аноним 24/12/19 Втр 20:32:32 1555768142
>>1555753
Goto затрудняет понимание кода, рекомендуют избегать это. Из цикла всегда один выход, можно еще через break дополнительно делать, если требуется.
Кстати почему такой бугурт с ЛАБ? Вы думаете дохуя в универах объясняют и типа если возникают трудности/вопросы, то человек не учится?
Аноним 24/12/19 Втр 20:38:06 1555777143
>>1555768
Лично я ещё с начальным уровнем знаний научился гуглить и думать, а не ныть, что "это мы не проходили". А по постам большинства тех, кто идёт сюда с лабами, сразу видно, что думать они не хотят.
Аноним 24/12/19 Втр 20:38:08 1555778144
>>1555753
без гото инструкции выполняются последовательно и даже циклы и операторы ветвления работают в определенных рамках. в этом вся суть, глаза знают куда прыгать при чтении кода. гото же позволяет делать неведомую хуйню

давай чуть попозже мне станет скучно и я тебе распишу че ты хочешь там с кнопками сделать, если успею
Аноним 24/12/19 Втр 21:09:21 1555797145
Ваши все высеры про goto похожи на результат того эксперимента над обезьянами, где их водой обливали. Никто из школьников-хейтеров goto итт его никогда не использовал и не встречал где-то кроме статей "топ 10 ебанутых фич c++", но считает важным упомянуть, что это плохо
Аноним 24/12/19 Втр 21:14:11 1555803146
>>1555767
>На практике goto используют только новички
Я новичок и просто не могу представить как можно делать эту логику перепрыгивания в нужные мне участки кода по другому, у меня не хватает знаний. Узнал об операторе, нашел пример его использования, он мне показался подходящим.
>>1555777
Это не лаба, я закончил университет год назад (могу пруфануть). Хотя лучше бы это была лаба, в таком случае у меня был бы преподаватель объясняющий хоть что-то. Но я совсем один, у меня нет ни знакомых ни друзей программистов. Все что я могу - это гуглить и собирать информацию по крупицам. Вот я насобирал и написал этот говнокод, я же не знал, что так нельзя. Теперь знаю. Спасибо.
Аноним 24/12/19 Втр 21:19:13 1555807147
>>1555687
>скажи кто тебя гото научил, я его пиздану
Макконел описывал одну ситуацию кстати, когда гото может облегчать код.
Аноним 24/12/19 Втр 21:26:00 1555820148
zd0aroau9sc31.png (155Кб, 640x640)
640x640
>>1555687
Я научил, но как ты узнал?
Аноним 24/12/19 Втр 21:28:26 1555825149
>>1555768
>Кстати почему такой бугурт с ЛАБ?
Я самоучка, и потратив смешное время ещё в школе на кодинг своего платформера на gdi+ просто по фану без какой-либо цели, все эти лабы стали очень простыми. Если человек спрашивает что-то уровня лаб, то это выглядит так, как будто он просто не удосужился 30 минут посидеть и разобраться. Потому и некоторое презрение иногда проскакивает - как будто человеку этот код не интересен, а он хочет сделать конкретное задание и забить. Даже если я сознательно понимаю что это не так, отделаться от общего негативного впечатления не всегда получается.


Те ребята которые гонят на гото мне тоже не нравятся. Концепция очень хорошая и отражает то что действительно происходит на процессоре. Если поймёшь гото - то поймёшь всё остальную логику с условными переходами в любых рекурсиях и циклах.
Использовать его не стоит в чём-то сложнее кода в один файл или выхода из двойного цикла (где goto полностью эквивалентро return-у в функциях, который никого особенно не смущает почему-то), но разобраться он как работает и какие побочные эффекты вызывает - очень хорошая идея.
Аноним 24/12/19 Втр 21:31:29 1555831150
image.png (209Кб, 1370x769)
1370x769
Аноним 24/12/19 Втр 21:35:55 1555839151
>>1555831
Странно ненавидеть Goto. Но хуёво использовать его не к месту.
Аноним 24/12/19 Втр 21:45:10 1555849152
>>1555831
Это си, гений. И там это используется а-ля try\finally очистка ресурсов.

И вообще, goto очень серьезно ломает всю систему жизни обьектов в С++, там ехал UB через UB, если не знать точно, что ты делаешь, что не является случаем студентиков.

Короче - goto нахуй и впизду.
Аноним 24/12/19 Втр 21:58:17 1555861153
image.png (28Кб, 387x588)
387x588
Переделал без готу, так правильно, или я опять долбоеб?
Аноним 24/12/19 Втр 21:59:34 1555863154
>>1555849
И что что Си? На крестах без ООП ты как будешь ресурсы очищать? try\finally платформозависимый код и не везде может применяться, да и вообще эта конструкция еще опаснее и сложнее, чем goto. Goto позволяет улучшить качество кода и сократить его.
Аноним 24/12/19 Втр 22:09:54 1555866155
>>1555861
Замени (GetAsyncKeyState('Z')) на (GetAsyncKeyState('Z')&(1<<16)) же.
Что ты хочешь сделать?
Аноним 24/12/19 Втр 22:29:03 1555890156
>>1555863
Задетектен идиот, не знающий про RAII. Попробуй снова.
Аноним 24/12/19 Втр 22:33:20 1555896157
>>1555890
Он про него и говорит, дебил.
Аноним 24/12/19 Втр 22:33:56 1555897158
Аноним 24/12/19 Втр 22:34:33 1555898159
cpp.png (68Кб, 1200x1349)
1200x1349
Привет, двачеры.

Подскажите какие-то книги или другие ресурсы по изучению плюсов.

Я не нуб, знаю JS на высоком уровне и основы плюсов (йобаное ООП, перегрузку функций, указатели и т.д.).

Хотелось бы освоить тонкости самого языка, все эти инлайновые операторы, библиотеку Windows.h, её аналог под nix'ы, tcp/http на плюсах.

Пробовал msdn, но это пиздец, по сравнению с mdn - кусок дерьма, но если ничего другого не найду, придеться сидеть на нём =(
Аноним 24/12/19 Втр 22:35:33 1555899160
>>1555861
Не обязательно писать while(variable == true), эта запись эквивалентна while(variable)
Аноним 24/12/19 Втр 22:36:09 1555900161
>>1555898
Tour of C++ страуструпа. А дальше уже нужные тебе области отдельно.
Аноним 24/12/19 Втр 22:36:54 1555902162
>>1555861
>>1555899

Т.е. ты просто сравниваешь variable == true (true == true), что на выходе выдаст тебе true, а можно писать просто variable, которая на выходе тоже даст true.
Аноним 24/12/19 Втр 22:41:04 1555906163
>>1555890
А теперь перечитай мой мост и иди реализуй RAII без ООП. Кретин.
Аноним 24/12/19 Втр 22:42:15 1555908164
>>1555898
По самому язык бери любую книгу из шапки.

По "Windows.h" копай в сторону WinAPI. На эту тему есть отдельная литература. Однозначного аналога для Unix нет, он не такой монолитный, как винда. Тут и POSIX API, и вещи, типа dbus/xcb/etc. В общем, много всего.
Хипстерский сайтик, где всё это было бы в удобном формате в одном месте, ты вряд ли найдёшь. Придётся копать кучу литературы.
Аноним 24/12/19 Втр 22:42:39 1555909165
>>1555890
> Задетектен идиот, не знающий про RAII
Значение знаешь? Походу идиот здесь ты.
Аноним 24/12/19 Втр 22:43:06 1555911166
>>1555906
А нахуя мне это делать, ебаклак? Мы в С++ треде. Может мне еще гитару без струн сделать? Телевизор без экрана? Что еще придумаешь охуенного?
Аноним 24/12/19 Втр 22:45:58 1555916167
>>1555911
Так пиздуй в С# тред, ООП-шизло, С++ не про это.
Аноним 24/12/19 Втр 22:50:57 1555927168
>>1555916
Все топовые крестовики мира пишут про RAII, но сегодня мы узнали от эксперта с двача, который знает, про что С++, что все эти эксперты ошибались. Что же делать. Как быть.

Хотя если у тебя есть желание продолжить меня смешить - можешь рассказать нам, про что С++ по твоему авторитетному мнению.
Аноним 24/12/19 Втр 22:57:24 1555935169
>>1555898
>библиотеку Windows.h
Освой создание простых (без кастомных контролов и GDI) GUI на чистом WinAPI. Освой многопоточность через processthreadsapi.h. Освой получение данных о железе через WMI.

>tcp
Winsocks

>http
WinHTTP. Есть ещё WinINet, но я не юзал его.
Аноним 24/12/19 Втр 22:58:04 1555936170
>>1555927
Это >>1554331 случаем не твой пост? Я вижу ты любишь жрать говно. Иди вики хоть открой и посмотри, что такое мультипарадигменный язык программирования и какие парадигмы доступны С++. Топовые крестовики похоронили ООП еще в 2015-2017.
Аноним 24/12/19 Втр 23:00:55 1555939171
>>1555927
так то raii щас нужен когда нужно управлять другими ресурсами, а не памятью
для памяти есть умные указатели (и в стандарте тоже), которые и реализуют из коробки идеому raii
также семантика перемещения вообще позволяет реализовать интересный подход, когда отказываются от выделения чего-то на куче, а делают все на стеке
Аноним 24/12/19 Втр 23:01:36 1555941172
>>1555935
>Winsocks
>WinHTTP
А под nix'ы есть что-то подобное?
Аноним 24/12/19 Втр 23:01:37 1555942173
>>1555936
Спасибо за то, что решил таки продолжить меня смешить, тебе это удается. На всякий случай - ООП это парадигма, а не использование слова class в нужных местах.

И да, ты прав в том, что язык действительно мультипарадигменный, и за счет этого он позволяет в нужных местах использовать наиболее подходящие инструменты, а не тупо забивать гвозди ломом, при этом вопя что ООП ПРОШЛЫЙ ВЕК ДЖАВА ГАВНО НАСЛЕДОВАНИЕ АХАХА ДЕДУЛЬ

Аноним 24/12/19 Втр 23:02:42 1555944174
>>1555941
В линуксе вместо винсока дефолтные BSD сокета. Собстно, винсок - это калька с них. Вместо WinHTTP там дефолтный libcurl, кстати, настоятельно и под виндой рекомендую его использовать. А еще лучше - обертки, типа curlpp были, которые сишный ад превращают в читаемое C++ API.
Аноним 24/12/19 Втр 23:03:12 1555945175
Аноним 24/12/19 Втр 23:03:59 1555947176
>>1555942
Смешишь тут только ты, обосравшись несколько раз в терминологии и наглядно показав свою некомпетентность.
Аноним 24/12/19 Втр 23:08:17 1555952177
>>1555947
Где вас, таких конченых идиотов берут, и что вы забыли в С++ треде? Вот вопрос, который меня очень интересует. С GOTO, с тем, что RAII это ООП, а ООП уже никто не использует, и с прочим кретинизмом человека, который не написал ни одной строки в прод, но почему-то считает, что знает С++.
Аноним 24/12/19 Втр 23:09:02 1555953178
Посоветуйте библиотеку/фреймворк для создания графического интерфейса на плюсах
Аноним 24/12/19 Втр 23:09:15 1555954179
Аноним 24/12/19 Втр 23:09:49 1555957180
>>1555953
qt для серьезного UI, для самодельной херни и простоты - imgui или nanogui
Аноним 24/12/19 Втр 23:10:12 1555958181
>>1555953
Под какую OS? Windows, Linux, кроссплатформа?
Аноним 24/12/19 Втр 23:12:31 1555963182
Аноним 24/12/19 Втр 23:13:05 1555965183
>>1555952
Мань, я вижу ты любишь высасывать аргументы из своего ануса и придумывать на ходу. Чем тебе Goto не угодил? Ты на сях судя по всему и хеллоу ворлда не писал и что-то кукарекаешь за прод еще.

> что RAII это ООП
Где я это писал? Еще какую-то хуйню в предыдущем посте про классы придумал. Совсем сказать нечего по делу.
Аноним 24/12/19 Втр 23:15:34 1555968184
>>1555936
>Топовые крестовики похоронили ООП еще в 2015-2017.
что это за чушь?
с++ остается ооп языком
мы все также пишем классы, определяем члены-функции в них, задаем кострукторы-деструкторы, задаем операторы преобразования и конструкторы преобразования (те мы конструируем пользовательские типы данных, определяем операции, доступные над этими типами данных и операции регулирующие жизненный цикл переменной этого типа данных, так же мы задаем и отношения между типами данных)
все так же мы используем наследование между классами, проектируем гомоморфные иерархии классов (те мы задаем отношения между типами данных), другое дело что сейчас есть альтернативный подход через шаблоны - а именно классы считаются объединенными в семейство классов если удовлетворяют параметру шаблона (плюс в языке есть уже развитая экосистема для этого - а именно type traits и другие средства, в с++20 будут концепты)
мы все также используем полиморфизм (базовую концепцию опп, вообще то), другое дело что там где возможно, динамический полиморфизм посредством виртуальных функций заменяется на статический полиморфизм, реализуемый через шаблоны, либо на ad-hoc полиморфизм перегруженных функций

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



Аноним 24/12/19 Втр 23:15:35 1555969185
>>1555954
SFML - это про 2D-графику, а не гуй.
Аноним 24/12/19 Втр 23:17:47 1555972186
>>1555958
Видна, но лучше кроссплатформа
Аноним 24/12/19 Втр 23:19:14 1555973187
Аноним 24/12/19 Втр 23:19:29 1555974188
>>1555952
> Resource acquisition is initialization (RAII)[1] is a programming idiom[2] used in several object-oriented languages to describe a particular language behavior. In RAII, holding a resource is a class invariant, and is tied to object lifetime: resource allocation (or acquisition) is done during object creation (specifically initialization), by the constructor, while resource deallocation (release) is done during object destruction (specifically finalization), by the destructor. In other words, resource acquisition must succeed for initialization to succeed.
Аноним 24/12/19 Втр 23:21:20 1555975189
>>1555965
>Мань, я вижу ты любишь высасывать аргументы из своего ануса и придумывать на ходу. Чем тебе Goto не угодил? Ты на сях судя по всему и хеллоу ворлда не писал и что-то кукарекаешь за прод еще.
Ох, эти проекции сбрендившего студентика.

>>1555916 - вот тут ты эту хуйню высрал. Но продолжай маневрировать.

Аноним 24/12/19 Втр 23:24:45 1555980190
>>1555973
Свой гуй можно поверх хоть голого опенгл сделать, Но это не делает опенгл библиотекой для гуя.
Аноним 24/12/19 Втр 23:31:07 1555986191
>>1555972
Тогда qt или GTK+ (gtkmm). Под винду WinAPI, но он может быть сложноват, да и в Linux работать только через WINE будет.
Аноним 24/12/19 Втр 23:35:18 1555987192
>>1555986
забавно то, что когда ты пишешь гуй на qt внезапно обнаруживаешь что ты пишешь гуй на js, лол
точно так же и гуй на gtk удобней писать на vala..

Аноним 24/12/19 Втр 23:37:13 1555988193
>>1555987
QML не существует. Существуют только виджеты.
Аноним 24/12/19 Втр 23:37:42 1555989194
>>1555972
MFC, без шуток
Коряво, но работает, не требует сторонних библиотек и твой проект прекрасно соберется даже через 20 лет.
Аноним 24/12/19 Втр 23:38:55 1555990195
go-to кстати, быстрее switch процентов на 10-15%..
одна из забавных оптимизаций, работающих и в настоящее время.. из-за лучшего предсказания переходов..
положим, если в каком нибудь интерпретаторе можно переписать основной луп со свитчей на goto то можно получить нихуевый буст к скорости..

Аноним 24/12/19 Втр 23:40:03 1555991196
Аноним 24/12/19 Втр 23:40:53 1555992197
>>1555990
В студию пример с goto, который работает на 10-15% аналогичного свитча, и методику тестирования, по которой это было замерено.
Аноним 24/12/19 Втр 23:41:11 1555993198
>>1555990
из-за чего кстати, первые проги на си проигрывали фортрану в производительности..
Аноним 24/12/19 Втр 23:42:03 1555995199
>>1555992
пфф
щас, штаны только подтяну и начну


Аноним 24/12/19 Втр 23:56:17 1556001200
>>1555968
Объектно-ориентированных подходов много, конкретно тот самый ООП мертв.

>>1555975
Что-то я не вижу там этого. И да, вон выше вырезка из вики для тебя. В ООП владение ресурсом реализуются через RAII идиому. С чем ты не согласен то? И так давай подведем итоги:
1. Ты не умеешь пользоваться оператором goto, как следствие яро утверждаешь что он не нужен, что говорит о низком скиле
2. Обосрался в терминологии RAII, не до конца осознаешь что такое объектно-ориентированный подход в программировании, как он может быть реализован
3. Додумываешь какую-то хуйню у себя в голове из-за низкого уровня знаний и некомпетентности, каши в голове и выдаешь это за мои слова или свою истину.
4. Список маневров:
> Ох, эти проекции сбрендившего студентика.
> Но продолжай маневрировать. О да это же самый базовый метод маняврирования - уличить оппонента в маняврировании
> Где вас, таких конченых идиотов берут, и что вы забыли в С++ треде?
> Спасибо за то, что решил таки продолжить меня смешить, тебе это удается.
> Все топовые крестовики мира пишут про RAII, но сегодня мы узнали от эксперта с двача, который знает, про что С++, что все эти эксперты ошибались. Что же делать. Как быть.

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

В принципе все твои посты это флуд и маневры, по делу нуль полный.
Аноним 25/12/19 Срд 00:03:55 1556012201
>>1556001
> 1. Ты не умеешь пользоваться оператором goto, как следствие яро утверждаешь что он не нужен, что говорит о низком скил

Тут я закончил читать, сорри.
Аноним 25/12/19 Срд 00:09:32 1556017202
>>1556012
Правильно, обосрался - обтекай.
Аноним 25/12/19 Срд 00:12:00 1556020203
>>1556017
Сказал долбоеб с полными штанами говна, который отправил за упоминание RAII в С# тред, потому-что ООП мертво.
Аноним 25/12/19 Срд 00:16:37 1556027204
>>1556001
немогу понять ты за красных или за белых
ты какой то мутный чел, если честно

Аноним 25/12/19 Срд 00:26:10 1556042205
>>1556020
У тебя проблемы с мышлением, логикой, да и с бошкой скорее всего в целом. Подлечись что ли, таких в люди страшно выпускать.
Аноним 25/12/19 Срд 00:28:49 1556044206
>>1556042
Опять проецируешь, да сколько можно же.

Насрал в штаны - признай это. Нет, опять какую-то хуйню несет. ООП у него в C#, навыки пользования оператором goto у него показатель скилла, и прочая хуйня.
Аноним 25/12/19 Срд 00:54:07 1556074207
>>1556044
> ООП у него в C#
Скажешь нет? Штирлиц никогда не был так близко к провалу. Спасибо за эти кривляния, забавно выглядит.
Аноним 25/12/19 Срд 01:02:09 1556084208
>>1556074
Я ничего тебе больше не буду говорить, тут понятно, что между нашими скиллами разницы миры, и ты даже понять не можешь, что я тебе пишу.

Когда устроишься на первую работу - попробуй нахуярить GOTO в проде, расскажи всем, что классы устарели, ведь это ООП, и доставь кулстори о результатах.
Аноним 25/12/19 Срд 01:18:43 1556102209
Царь, это ты?
Аноним 25/12/19 Срд 01:22:46 1556105210
>>1556084
Вытекаешь уже из треда.
Аноним 25/12/19 Срд 01:53:02 1556110211
не знаю что вы тут спорите, ведь все очевидно:
- гото действительно можно использовать для лаконичности кода долбоебы в общем то и без гото нахуярят говна

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

- студенты хуесосы и идут нахуй. раньше я на них тоже бугуртил "иди погугли даун первая ссылка", а за это модераторы хуесосили на форумах. потом я понял, что если все таки решать их глупые задачи, то они так и останутся долбоебами, а это хорошо. зачем продолжать плодить вкатывальщиков?
Аноним 25/12/19 Срд 02:46:04 1556122212
>>1555988
> QML
Почему это говно провалилось?
Аноним 25/12/19 Срд 02:47:18 1556124213
>>1556122
а оно провалилось?
Я не в теме вообще, на QT не пишу, но мне казалось, что кутишники очень много сил и ресурсов вложили в QML
Аноним 25/12/19 Срд 02:54:25 1556128214
>>1555989
Открываешь в 17 студии MFC проект, созданный в 10 студии
@
Страдаешь
Аноним 25/12/19 Срд 02:56:38 1556130215
>>1556128
открываешь проект, созданный в 10ой студии
@
страдаешь
Аноним 25/12/19 Срд 02:58:56 1556132216
>>1556130
Чего не так со студией-то?
Аноним 25/12/19 Срд 03:03:23 1556134217
>>1556132
Со студией все отлично, с проектом, который никто не обновлял с 2010 все очень плохо обычно.
Аноним 25/12/19 Срд 04:19:15 1556151218
>>1556124
>очень много сил и ресурсов вложили в QML
Провели большую работу, изобретя колесо. Квадратное.
Аноним 25/12/19 Срд 04:59:34 1556156219
>>1555849
>И вообще, goto очень серьезно ломает всю систему жизни обьектов в С++, там ехал UB через UB
Ты с setjmp/longjmp не путаешь?
Аноним 25/12/19 Срд 05:00:25 1556157220
Аноним 25/12/19 Срд 06:04:32 1556170221
Аноним 25/12/19 Срд 06:29:06 1556178222
>>1556110
ООП это грамотная организация кода, которая позволит тебе в будущем и настоящем его улучшать, либо использовать в других программах. Не следовать его принципам можно только если ты любишь поковырятся в собственном дерьме/не планируешь использовать исходный код, в том числе изменять его/любишь изобретать велосипеды.
Аноним 25/12/19 Срд 08:50:10 1556229223
>>1552778 (OP)
Сап, хочу несколько тупых вопросов задать.
1. Что мне мешает на любую околоматематическую функцию вешать constexpr, вдруг где-то внутри сконстантится?
2. Что мне мешает на любую работу с фиксированными векторами, типа элементы вектора A возвести в квадрат и передать в B вешать (если работаем в цикле) #omp parallel for и радоваться ez параллелльности?
3. Если для случая выше применить std::transform, может ли оно когда-то где-то само соптимизироваться в параллельность?
Аноним 25/12/19 Срд 09:07:29 1556236224
>>1556229
>1. Что мне мешает на любую околоматематическую функцию вешать constexpr
То, что околоматематические функции лезут в глобальное состояние.
Аноним 25/12/19 Срд 09:20:46 1556239225
>>1556229
2,3) c++17 и std::execution_policy тебе в помощь.
Аноним 25/12/19 Срд 09:38:29 1556242226
>>1556239
А как было раньше? Я пока не хочу включать c++17, так как очень опасаюсь ситуации, что проект придется пересобрать на редком компиляторе под специфическое железо.
Или раньше деды прям ассемблер вставки делали?

>>1556236
что это такое
Аноним 25/12/19 Срд 15:48:05 1556703227
имхо, мне не нравится когда дают определение ооп как методологии программирования
подход, когда к ооп относятся как к одному из вариантов реализации пользовательских типов данных и задания отношений между ними, мне ближе, тк позволяют дать более формальное (близкое к математическому) определение
в с++ класс - это пользовательский тип; доступные операции над типом задаются через определение членов-функций; переменная типа - это объект; способ создания объекта задается парой конструктор-деструктор; отношения между типами задается посредством наследования классов, посредством членов-функций преобразования и конструктора преобразования; динамический полиморфизм взаимосвязанных типов реализауется через механизм виртуальных функций; и далее по списку..
в других языках существуют другие способы реализовывать пользовательские типы, вообще работать с типами
но в с++ все же основной подход остается через ооп

Аноним 25/12/19 Срд 20:31:29 1556900228
image.png (131Кб, 527x300)
527x300
>>1552778 (OP)
помогите мне пожалуйста. Я пытаюсь собрать проект на qt 5.13.0 с использованием grpc под андроид с abi armeabi-v7a , ndk r18b. На десктопе все работает. Но когда я пытаюсь собрать проект под андроид, проект компилится но во время линковки у меня выводится ошибка, что-то вроде
>grpc++: incompatible target
то есть мои либы grpc для архитектуры мобильника не подходят как я погуглил. Я пытался компилить grpc с помощью ndk вот по этому скрипту https://github.com/grpc/grpc/issues/19794#issuecomment-516588669
но когда я проверил скомпиленные таким образом статические либы с помощью команд ar и потом file, то оказалось что они скомпилены под архитектуру x86_64 а не под arm.
Но я еще я нашел скрипт для protobuf под андроид и по этому скрипту https://developers.google.com/cardboard/develop/c/protobuf когда я скомпилил либу и посмотрел для какой архитектуры она сделана, то было написано что для арм.
Может кто-нибудь собирал проект на qt с grpc под андроид и собирал grpc с ndk? Подскажите пожалуйста скрипт.
Аноним 25/12/19 Срд 20:47:17 1556912229
При сжатии текста Хаффманом на выходе получается определённое число бит, которое нужно дополнить до целого числа байт, ведь побитно писать нельзя.
И вот надо что-то дописать, а как при декодировании это пропустить?
Аноним 25/12/19 Срд 21:03:51 1556933230
>>1556912
Вся идея хаффмана, что ты пишешь кашу из битов. Не надо ничего дополнять куда-либо.
Аноним 25/12/19 Срд 21:04:02 1556934231
>>1556900
ути-пути какой расторопный студентик
еще даже новый год не прошел а он уже дипломчик делает!
Аноним 25/12/19 Срд 21:22:29 1556956232
>>1556178
грамотно организовать код можно и без ооп. повторно использовать код можно и без ооп. ковыряться в дерьме и клепать велосипеды можно и с ооп.

давай подробно разберем повторное использование кода, для примера. как ооп помогает в этом? то есть ты предлагаешь просто взять и скопировать нужные классы в другой проект? допустим даже код без багов, а если в другом проекте не будут нужны все поля из первого проекта, или некоторых будет нехватать? а в третьем тебе одна функция нужна, ты серьезно это пишешь дебил бля ебаный? пошел нахуй школьник
Аноним 25/12/19 Срд 21:26:48 1556960233
>>1556934
Но ведь он не говорил ни про какой диплом?
Аноним 25/12/19 Срд 21:28:23 1556963234
>>1556242
> Или раньше деды прям ассемблер вставки делали?
Только если совсем упоротые. Для людей есть интринсики.
Аноним 25/12/19 Срд 22:00:47 1556999235
>>1556956
Когда вообще не понимаешь сути ООП.
Аноним 25/12/19 Срд 22:11:27 1557023236
>>1556900
> то оказалось что они скомпилены под архитектуру x86_64 а не под arm.
Я вижу, что там проверяется ANDROID_TARGET_ARCH в скрипте и согласно ему qt подключает нужную сборку. Во-первых, посмотри, есть ли $$PWD/android/lib/libgrpc++.a вообще после запуска скрипта. Во-вторых, qt под какую архитектуру собирает у тебя? В qt creator в открытом проекте в левом нижнем углу кнопка типа build, там должна отображаться архитектура.
Аноним 25/12/19 Срд 22:17:33 1557038237
>>1556999
сука гото сектант ебаный, говори адрес я тебе очко раздеру

>>1555220
чел чел чел я тебе обещал расписать что там. в общем я понял что ты хочешь, и это все хуйня что ты написал.

решается это все одним флагом. если флаг true, то ты проверяешь кнопку z, если флаг false, то ты проверяешь кнопки z и space. все в одном цикле. все очень просто.

вот псевдокод
bool flag = false;
while(1) {
if (!flag && (getkeystate(x) || getkeystate(space))) {
flag = true;
// ... действите которое ты хочешь совершить при нажатии на x или space
}
if (flag && getkeystate(z)) {
flag = false;
// ... действите которое ты хочешь совершить при нажатии на z
}
sleep(10);
}
Аноним 25/12/19 Срд 22:29:58 1557052238
>>1556933
Нельзя записать 43 бита. Можно 5 байт, можно 6, но 5.375 байта нельзя, и поэтому приходится округлять
Аноним 25/12/19 Срд 22:32:36 1557055239
Кто-нибудь здесь проходил задания на exercism.io?
Аноним 25/12/19 Срд 22:34:00 1557057240
>>1557038
Так действия на 'Х' и действие на Space разные, но оба действия в конечном итоге ведут в один и тот же луп, выход из которого по кнопке Z.

А ты объединил их в одно.

Аноним 25/12/19 Срд 22:59:39 1557080241
>>1557023
>Я вижу, что там проверяется ANDROID_TARGET_ARCH в скрипте
я не понимаю, в каком скрипте?
>Во-первых, посмотри, есть ли $$PWD/android/lib/libgrpc++.a вообще после запуска скрипт
я вручную скопировал все либы из grpc/cmake/build в android/lib/ моего проекта, но когда я проверял, скомпилены ли они под armeabi-v7a командой file x libgrpc++.a и потом file *.o, то все файлики то вывод был что все скомпилено под архитектуру ubuntu x_64, то есть как мне кажется, я как-то не так компилю grpc, поскольку когда я попробовал использовать скрипт https://developers.google.com/cardboard/develop/c/protobuf для протобафа и потом проверил скомпиленную либу ar и file, то показало что скомпилено под arm.
> Во-вторых, qt под какую архитектуру собирает у тебя
под armeabi-v7a. Мой проект без grpc нормально собирается под андроид
Аноним 25/12/19 Срд 23:03:12 1557084242
>>1557057
у тебя проблемы с этим?
bool flag = false;
while(1) {
auto xstate = getkeystate(x);
auto spacestate = getkeystate(space);
if (!flag && (xstate || spacestate )) {
flag = true;
if (xstate) {
// действие на x
} else if (spacestate) {
действие на space
}
}
if (flag && getkeystate(z)) {
flag = false;
// ... действите которое ты хочешь совершить при нажатии на z
}
sleep(10);
}
Аноним 25/12/19 Срд 23:15:54 1557099243
>>1557038
goto сектант - это другой обоссаный челик
Аноним 25/12/19 Срд 23:15:55 1557100244
>>1557080
> я не понимаю, в каком скрипте?
В этом. https://github.com/grpc/grpc/issues/19794#issuecomment-516588669 тот коммент, ссылку на который дал
Там сборка под каждую архитектуру в свою подпапку, потом инструкции для qmake, для .pro файла, видимо.
Аноним 25/12/19 Срд 23:19:44 1557104245
>>1557080
> cmake --build .
Или в том и проблема, что не в подпапку, а в текущую папку перезаписывает каждый раз для каждой архитектуры, а последняя архитектура там как раз x86_64.
Аноним 25/12/19 Срд 23:54:26 1557141246
>>1557104
поскольку мне надо проект собрать под armeabi-v7a, то я юзаю только первые 4 команды cmake, но после первых 2 команд создается 9 либ, которые я копирую в свой проект, но когда я их проверяю командами ar и file, они все равно для x86_64. И после еще 2 команд создаются все библиотеки, grpc++_unsecure и прочие и тоже для x86_64.
Аноним 26/12/19 Чтв 00:12:28 1557155247
>>1557141
Понял, тогда у меня больше нет вариантов, где ошибка.
Аноним 26/12/19 Чтв 00:27:53 1557160248
image.png (76Кб, 933x629)
933x629
>>1557038
Чего? Это не я писал. Не забывай, что ты на борде. А тот студентик да, пусть нахуй идет. С его слов си дайз не ООП язык. Мне даже интересно, что этот обезумевший первокур в треде забыл, лабу бы пилил шел.
Аноним 26/12/19 Чтв 01:22:33 1557189249
Я слышал, что есть возможность складывать две функции, но на первых двух страничках поиска в гугле, да и в справочниках такой инфы не нашел. Так это возможно? Если да, то как?
Аноним 26/12/19 Чтв 01:50:27 1557223250
>>1557189
В каком смысле складывать? Что это означает и какой результат должно выдавать?
Если это математические функции, ты можешь написать новую являющуюся суммой двух предыдущих, если у них типы и всё остальное такое же.
А если у тебя одна функция копирует массив байт, а вторая сортирует записи в файле, то суммой этих функций будет являться что?
Аноним 26/12/19 Чтв 01:59:30 1557239251
>>1557189
Переформулируй вопрос.
Может, ты имел в виду композицию функций?
Аноним 26/12/19 Чтв 02:25:30 1557251252
>>1557223
Я точно не уверен, но результатом будет, что-то вроде
функция В = функция А + функция Б. И когда я вызываю функцию В, то первой будет вызвана функция А, а потом функция Б. Обе функции принимают параметры, которые передаются функции В

Аноним 26/12/19 Чтв 02:41:45 1557260253
>>1557251
Короче.
Если тебе надо F(u) = f(x) + g(y), где u = x + y, то ничего путного ты не нагуглишь, так как это интуитивно понятная вещь, сложение результатов функции. Как если ты результат вызова каждой сохранишь в переменную и потом сложишь.

А если тебе надо F(x) = f(g(x)) или, что вернее, F(x) = f(x) g(x) - то это композиция и просто результат функции g передается в функцию f. Что тоже интуитивно понимается и можно так же через дополнительную переменную сделать.
Аноним 26/12/19 Чтв 02:42:48 1557262254
>>1557189
ага
в стандартной библиотеке есть набор стандартных функциональных объектов, адапторов, привязок, при помощи которых ты можешь комбинировать функторы, свободные функции, функции-члены классов, лямбда-функции между собой, порождая новые функторы, ну а дальше передавая их в стандартные алгоритмы, например



Аноним 26/12/19 Чтв 02:43:29 1557264255
1577317382227.jpg (20Кб, 834x139)
834x139
>>1557260
Вакаба съела кружочек, да и полностью верная формула выглядит по-другому немного.
Аноним 26/12/19 Чтв 02:49:22 1557265256
>>1557260
Мне нужно немного другое. F(u) = f1(u) + f2(u). И для этого мне нужно гуглить то, что порекомендовал вот это анон >>1557262 ?
Аноним 26/12/19 Чтв 02:54:54 1557266257
>>1557265
Можно, если ты хочешь обращаться функциональщиной.
А можно сделать функцию F, которая внутри себя складывает результат вызова f1 и f2.
И передавать в нее x и указатели на эти две функции. Либо std::function вместо указателей, если плюсовым способом, а не сишным.
Или захардкодить вызов этих функций внутри F.
Аноним 26/12/19 Чтв 02:55:36 1557267258
>>1557266
Обмазаться функциональщиной.
Самофикс
Аноним 26/12/19 Чтв 03:04:29 1557269259
Аноним 26/12/19 Чтв 03:18:31 1557272260
image.png (10Кб, 278x168)
278x168
Идея может странная, но я могу к оператору вывода в поток добавить функцию? Например я пишу функцию test и комбинирую её с выводом в поток. В итоге получаю измененный поток вывода, который сначала выводит в поток строку, а затем вызывает функцию test
Аноним 26/12/19 Чтв 03:19:17 1557273261
>>1557251
Надумал проблему. Просто берешь и вызываешь по-очереди А и Б внутри В. Можешь заинлайнить их если очень хочется.
Аноним 26/12/19 Чтв 03:29:37 1557275262
Аноним 26/12/19 Чтв 03:31:58 1557276263
>>1557273
ему нужна была функциональная композиция вообще то

Аноним 26/12/19 Чтв 03:36:41 1557277264
Захожу раз в 2-3 дня. Слабо как-то пока, неинтересно. Хоть бы the darkest corners языка пообсуждали бы или там приёмы интересные из опыта. Или статьи по С++ с arxiv. А так, лабы-хуябы, goto, ооп. Сколько можно-то? Скучно же.
Аноним 26/12/19 Чтв 04:06:02 1557281265
>>1554001
Ну что мальчик, прийдётся тебе с анальной девственностью расстаться.
Аноним 26/12/19 Чтв 04:15:03 1557285266
>>1557277
Постите смешное сами.
Аноним 26/12/19 Чтв 04:19:21 1557286267
>>1557276
В таких простых случаях ее не используют.
Аноним 26/12/19 Чтв 04:25:20 1557287268
>>1557286
это нужно, к примеру, чтобы сконструировать функциональный объект из существующих по месту и сразу же передать в использование (в стандартный алгоритм, в частности)
щас правда удобней стало лямбдами пользоваться

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



Аноним 26/12/19 Чтв 04:26:26 1557290269
>>1555210

Уже не работает в clang 9.
Аноним 26/12/19 Чтв 04:31:33 1557293270
>>1557277
тебя тут развлекать что ли должны? тред на дваче блять не соответствует его ожиданиям пхахвахахах.. еб твою мать какой же ты тупой дебил

>>1557281
я же ему отвечал >>1554162 >>1554185
Аноним 26/12/19 Чтв 10:29:25 1557369271
>>1557272
Гугли манипуляторы потока
Аноним 26/12/19 Чтв 11:59:15 1557410272
>>1557369
Если меня не обманули в инета, то все пользовательские манипуляторы работают только когда их вызвали, а вот мне нужно подобие работы манипулятора hex. Один раз вызвал и потом все целые числа отображаются в шестнадцатеричном виде. Только в моём случае вызов манипулятора запускает подсчет выводов в поток
Аноним 26/12/19 Чтв 12:48:21 1557439273
>>1557410
А ты попробуй. Стандартные, например, работают пока их не выключишь.
Аноним 26/12/19 Чтв 12:50:19 1557444274
>>1557439
Можешь, пожалуйста, привести пример. Я не догоняю как это сделать
Аноним 26/12/19 Чтв 14:27:43 1557586275
>>1555797
>Никто из школьников-хейтеров goto итт его никогда не использовал
Использовал в дипломной работе для выхода из вложенного цикла. Брат жив, зависимость есть.

Где-то у Страуструпа есть телега, где он пишет, что в этом случае goto самый простой, а потому самый лучший способ.

В качестве альтернативы некоторые предлагают использовать исключения. Уёбки.
Аноним 26/12/19 Чтв 14:39:15 1557598276
>>1557586
> исключения
А ещё их можно использовать для возврата из функции значений разных типов.
Аноним 26/12/19 Чтв 15:58:33 1557675277
image.png (13Кб, 391x219)
391x219
Как правильно освобождать память в динамической матрице (динамический массив указателей на динамические массивы чисел)? Делал это как на пикрил — программа через раз крашится. Не смог выявить, в каких именно случаях, но это прекратилось, когда я убрал этот кусок кода. Не понимаю, что не так, мне казалось, что все логично. Памагити!
Аноним 26/12/19 Чтв 16:00:34 1557677278
>>1557675
Используй вектор, Люк.
Аноним 26/12/19 Чтв 16:03:30 1557682279
>>1557675
Быстрофикс: вылеты происходят, когда я пытаюсь выделить память на новую матрицу (адрес сохраняю в тот же указатель), и только в том случае, когда новая матрица больше по размеру.
Аноним 26/12/19 Чтв 16:05:26 1557683280
>>1557677
А это не будет лишним?
Аноним 26/12/19 Чтв 16:07:50 1557685281
>>1557682
То есть ты спрашиваешь, почему у тебя падает код, который ты не запостил. Умно, умно
Аноним 26/12/19 Чтв 16:10:22 1557686282
>>1557685
На пикриле эквивалентный код. Может я неясно выразился, но я спрашиваю, правильно ли освобождать память так.
Аноним 26/12/19 Чтв 16:23:02 1557692283
>>1557675
Все, проблема выявлена и решена.
Аноним 26/12/19 Чтв 16:31:44 1557697284
>>1557683
Минимально медленнее будет, зато дебажить это говно не будешь
Аноним 26/12/19 Чтв 16:59:42 1557718285
>>1557692
какой хороший студентик
возможно ты еще и устроишься дальше по жизни в темлом офисе, а не здохнешь под забором

Аноним 26/12/19 Чтв 17:23:06 1557741286
Аноним 26/12/19 Чтв 17:30:01 1557749287
>>1557741
Да, тоже интересно.
мимо студень
Аноним 26/12/19 Чтв 18:07:02 1557775288
>>1557741
>>1557749
Вкратце: я рукожоп. У меня было написано что-то вроде

obj.size.x = m;
obj.size.y = n;
obj.resize({m, n});


то есть, первые две строки были лишними. А вообще, глупо было оставлять size доступным для изменения значения извне, вдвойне проебался.
Аноним 26/12/19 Чтв 19:04:47 1557821289
Аноним 26/12/19 Чтв 19:29:55 1557845290
Какими операторами лучше реализовать программу по типу ребиндера. Что бы менять кнопки клавиатуры местами, и всякий доп функционал, например одна и та же кнопка F становилась цифрой то нампад1, то нампад2, то нампад3, в зависимости от кол-ва нажатий? В какую сторону копать?
Аноним 26/12/19 Чтв 19:50:05 1557860291
>>1557682
У меня тоже такая проблема была, я просто делал проверку на изменение матрицы и запрещал удаление, если она менялась.
Аноним 26/12/19 Чтв 20:20:45 1557935292
>>1557845
В сторону api твоей операционной системы.
Аноним 26/12/19 Чтв 22:08:45 1558186293
Сколько просить денег при устройстве плюсовиком? Город милионник в окрестностях москвы. Опыт какой-то есть. Сколько просить в москве если надумаю понаехать? Сколько платят например в мэйлру? Есть какая нибудь статистика по зарплатам? Накидайте советов в общем как себя вести при трудоустройстве.
Аноним 26/12/19 Чтв 22:29:08 1558221294
>>1553123
Все использовали системные API и не жаловались.
Аноним 26/12/19 Чтв 22:39:46 1558235295
>>1558221
Конечно не жаловались, потому что те, кто бы жаловался, не будь у них выбора, перешли на нормальные языки.
Аноним 26/12/19 Чтв 22:47:07 1558244296
>>1558186
Какой опыт?
Хотя судя по твоим вопросам ты ниасилил даже гугл. Работай бесплатно
Аноним 26/12/19 Чтв 23:01:21 1558266297
>>1558186
Зависит от конторы и твоего скилла. Какой вопрос, такой ответ.
Аноним 26/12/19 Чтв 23:13:54 1558274298
>>1558186
не сколько, а как
проси на коленях

Аноним 27/12/19 Птн 01:02:46 1558410299
Сап
Я новичек в теме, могу глупостей написать, так что соре
Есть вопрос: Совместима ли библиотека json-c и c++, и если да, где найти гайды по работе с ней ?
Аноним 27/12/19 Птн 01:17:16 1558418300
>>1557697
Чо вдруг медленее?? Наоборот это гавно на указателях медленное
Аноним 27/12/19 Птн 01:34:44 1558423301
>>1558410
Почти все сишные библиотеки могут работать с С++. Конкретно json-c у нас где-то есть в проде, работает норм.

Но я бы строжайше не рекомендовал использовать сишное говно в крестокоде - посмотри на самую правильную JSON либу существующую - https://github.com/nlohmann/json
Аноним 27/12/19 Птн 13:08:04 1558644302
>>1558423
Она не работает с широкими символами. Какое-то говно при вызове json::dump.
Аноним 27/12/19 Птн 13:08:11 1558645303
>>1558274
Мамой клянусь, усё сделаю.

>>1558244
10 лет бд, формошлёпства и петов, всякая низкоуровневая поебота уровня ардуин. В общем не блидинг едж, всякую вычурную плюсовую пургу не вкуриваю, но задачи выполняю. Не задрот, проще говоря.

>>1558266
Это понятно что зависит. А как сориентироваться то?

>>1558235
Вообще я так понял нужно что-то более адекватное чем плюсы искать? Что посоветуешь для беспроблемного трудоустройства?
Аноним 27/12/19 Птн 14:15:53 1558732304
>>1558645
>нужно что-то более адекватное чем плюсы искать?
Если есть опыт разработки бэкендов высоконагруженных, обработки видео-аудио, блокчейны, компьютерного зрения и машинного обучения (тут хорошо бы еще питон знать), и т.п., то прекрасно устроишься и тебя всячески ублажать будут.
А просто так С++ кому особо нужен? Это же не джава, на хороших плюсовых вакансиях он обычно идет плюсом к серьёзным задачам.

Ну можно еще на какое-нить формошлептство на Qt и прошивку микросхем устроиться, но там зп микроскопическая обычно, сам же знаешь.
Аноним 27/12/19 Птн 17:54:11 1558951305
Как сделать код на qt приятным глазу? Вот например конструктор главного окна, по мне так выглядит просто отвратно
https://ideone.com/1C87pk
Аноним 27/12/19 Птн 18:08:47 1558964306
>>1558951
Нормальные люди запихивают свои формочки в *.ui и добавляют uic в pre-build step. В конструкторе у них остаётся
m_ui = std::make_unique<Ui::MoyaForma1>();
m_ui->setupUI(this);
Аноним 27/12/19 Птн 18:28:18 1558971307
>>1558964
И как работать с кнопочками которые размещены на форме?
Аноним 27/12/19 Птн 19:10:46 1559017308
fail.mp4 (3199Кб, 640x360, 00:00:53)
640x360
>>1552778 (OP)
>2 пик

В 2023 году С++ станет Го, и прекратит существовать.
Аноним 27/12/19 Птн 19:16:23 1559025309
>>1558964
Нормальные люди не пишут на кутях.
Аноним 27/12/19 Птн 19:36:51 1559047310
>>1559017
Ого, стоило одному шизику подавиться мацой - сразу же подъехал второй.
Аноним 27/12/19 Птн 20:43:40 1559106311
>>1559025
Да, нормальные накидывают формочки в визуалке на шарпе
Аноним 27/12/19 Птн 21:08:32 1559120312
>>1559106
> шарпе
Пидора ответ.
Аноним 27/12/19 Птн 21:17:57 1559125313
>>1558732
В том то и дело что не знаю, какой расклад. Ну теперь понятнее стало. До этого фрилансил на другом языке и вообще трудоустроен был чисто формально. Вот думаю вкатиться в С++ или другой язык уже искать, посмотрел стату по зарплатам, вроде примерно одинаково все получают, а в случае с С++ предположу это будет поддержка говна мамонта. Высоконагруженный бек осилю, но опыта мало.
Аноним 27/12/19 Птн 21:18:19 1559126314
Аноны, буду очень благодарен, если вы подскажите, что и где надо статически слинковать, чтобы приложение qt не требовало дллок. До этого работал только в clion, там всего одну команду надо было прописать в cmake, а тут муть какая то.
Аноним 27/12/19 Птн 21:32:00 1559133315
>>1559126
Статическая линковка qt предполагает покупки лицензии на qt. Увы
Аноним 27/12/19 Птн 21:36:21 1559135316
>>1559133
Но ведь qt под гпл, а значит не надо ничего покупать
Аноним 27/12/19 Птн 21:43:07 1559138317
>>1559135
под GPL только бесплатный qt
Аноним 27/12/19 Птн 22:12:46 1559157318
>>1558971
m_ui->moyaKnop_ochka
Всё как обычно, имена кнопочек задаёшь прямо в designer

>>1559138
Ну и что? Слинковал статически, открыл исходники
Аноним 27/12/19 Птн 22:56:41 1559183319
>>1559138
Любой кьют бесплатен, всё равно никто не узнает.
Вопрос про Visual Studio Аноним 28/12/19 Суб 12:27:16 1559467320
Прои создании программ на вижл меня достает то, что постоянно нужно создавать для каждой программы новый проект. Можно ли это как-то обойти?
Вопрос про Visual Studio Аноним 28/12/19 Суб 12:28:00 1559468321
Прои создании программ на вижл меня достает то, что постоянно нужно создавать для каждой программы новый проект. Можно ли это как-то обойти?
Аноним 28/12/19 Суб 12:35:26 1559471322
>>1559468
Пиздец, а как по-твоему работать без проекта?
Если ты очень ебанутый, можешь всё в одном проекте писать, но с разными конфигурациями, исключая при этом ненужные файлы из сборки
Аноним 28/12/19 Суб 12:42:41 1559477323
>>1559468
Можно. Использовать gcc в консоли.
Аноним 28/12/19 Суб 13:35:31 1559510324
>>1559468
Можно объединить несколько проектов .vcproj в одно решение .sln.
28/12/19 Суб 14:24:54 1559546325
>>1558418
Внутри вектора такое же говно на указателях, но вектор нихуя не зеро кост. Как минимум пуш бек каждый раз выполняет лишнюю проверку. Вот я зарезервил 1 млн элементов, пушбекаю, и у меня 999999 раз пройдет бесполезная проверка на сайз != капасити.
Аноним 28/12/19 Суб 15:36:40 1559592326
>>1559546
Хуя ты экономист.
Ты на IBM 5100 пишешь?

Бтв проблема push_back не в проверке size != capacity.
Аноним 28/12/19 Суб 15:48:12 1559598327
Как объявить общую статическую переменную/метод для класса с шаблоном? То есть чтоб для MyClass<int>, MyClass<long> итд они были общими?
Аноним 28/12/19 Суб 15:48:39 1559601328
>>1559592
Судя по большинству постов здесь, плюсовики вообще пишут исключительно уберхайлоад и исключительно для уберслабого железа. Поэтому язык и уходит из прикладухи, что вся эта перформансопетушня отпугивает новичков.
Аноним 28/12/19 Суб 16:00:55 1559623329
>>1559598
Сделать нешаблонный класс-член со статическими переменными/методами.
28/12/19 Суб 16:19:56 1559638330
>>1559592
Я про то, что плюсы пропагандируют "не платишь то что не используешь", и при этом у нас до сих пор нет метода unsafe_push_back
Аноним 28/12/19 Суб 16:26:20 1559645331
>>1559638
Так-то благодаря предсказанию переходов и какому-нибудь if [[__builtin_unlikely]] (size_ == capacity_), эта хуйня почти не будет влиять на скорость. Да и не так страшен пушбэк, как сортировка пузырьком после него..
Аноним 28/12/19 Суб 16:43:34 1559658332
>>1559601
Крестослесаря прост, шараги где учат крестослесарей. Специфика пахомии. Так-то видел вакансии в самых разных сферах, буквально вчера кресты шли в дополнение к аналитике с биг датами с окладом 400k в месяц на руки.
Аноним 28/12/19 Суб 16:54:50 1559671333
>>1559623
Разве этот класс-член не будет уникальным для каждого типа шаблона? В гугле пишут, что нужно наследоваться от класса со статическим членом.
Аноним 28/12/19 Суб 16:56:01 1559674334
>>1559658
Чето я не видел такого, скинь вакансии.
Аноним 28/12/19 Суб 17:02:51 1559678335
Аноним 28/12/19 Суб 17:13:31 1559692336
>>1559598
Ну и говнище эти кресты, пиздец. Попытался повторить описанное, и при компиляции ругнулся даже не компилятор, а линкер нахуй.

https://ideone.com/cINLKC
Аноним 28/12/19 Суб 17:55:29 1559727337
>>1559692
Нешаблонный базовый класс, например

>линкер нахуй.
Дык очевидно: статическая переменная должна где-то жить. То, что в классе - это объявление, но она также должна быть определена в какой-нибудь единице трансляции. Также не забываем, что каждое инстанцирование шаблона - это отдельный тип.
Аноним 28/12/19 Суб 18:14:19 1559744338
>>1559678
А теперь попробуй не внутри класса определить класс со статической переменной, а снаружи, внутри инициализировав его экземпляр.
Теперь любой инстанс твоего шаблонного класса будут обращаться к классу снаружи с - о, чудо! - статическим членом.
Ты не просто не понял, как работает генерация кода в этой ситуации.

>>1559671
Как вариант. Родитель - обычный класс, наследник - шаблонный.
Ещё можно внутрь класса положить указатель на глобальную переменную, но это пахнет плохо совсем.
Аноним 28/12/19 Суб 19:02:15 1559813339
>>1559744
Нихуя не понял, тащи код. Так как это правильно делается по итогу? Проблема то реальная.
Аноним 28/12/19 Суб 19:07:41 1559820340
>>1559813
Вот это истории. Если ты не понял, то
>Лабы идут нахуй
А если ты где-то работаешь - надеюсь, тебя нахуй уволят.
Аноним 28/12/19 Суб 19:13:40 1559831341
>>1559820
Понятно все с тобой, хуйни насоветовал которая не работает, глобальные переменные блять, так еще и выебывается.
Аноним 28/12/19 Суб 19:19:40 1559837342
>>1559831
Да кто ж тебе виноват, что ты слеп, глуп и не можешь погуглить и подумать? Конечно, анон с двача.
Аноним 28/12/19 Суб 19:49:55 1559867343
>>1559692
static inline в твоем кейсе
Аноним 28/12/19 Суб 22:27:19 1559948344
>>1559546
тогда вместо reserve и push_back ты можешь использовать resize и [], но тут надо смотреть какой вариант по итогу будет быстрее
в любом случае современный способ поднять производительность в новых плюсах - это использовать механику перемещения, а еще лучше в комбинации с in-place размещением (move-конструктор и emplace_back)



Аноним 28/12/19 Суб 23:05:46 1559963345
28/12/19 Суб 23:20:19 1559981346
>>1559948
И как я по operator[] на месте сконструирую объект?
Аноним 28/12/19 Суб 23:33:35 1559991347
Вкатываюсь на с++ джуна и заметил немалое количество вакансий с QT. Сам же я только погроммирувал под М$. Перед собесом иди изучать или забить, не сольют сразу?
Аноним 29/12/19 Вск 00:31:20 1560042348
>>1559991
Плюсы и кьюти это два разных языка. Не соглашайся на формошлепство, анон.
Аноним 29/12/19 Вск 00:43:56 1560048349
>>1559981
не, ну "по месту" ты его и так не сконструируешь, тк resize заполняет контейнер с использованием конструктора по умолчанию
но, если у тебя в классе элемента контейнера написан move оператор присвоения, то присвоение rvalue временного объекта через [] произойдет при помощи механики перемещения
p.s. тебе не кажется что использовать сажу с твоими текущими знаниями выглядит несколько высокомерно?
Аноним 29/12/19 Вск 00:46:49 1560049350
>>1559991
да, есть вариант конкретно задротить qt (посредством прочтения пары книг по qt и запиливанием пет-проекта)
ну и аплаится конкретно на вакансии связанные с qt, в этом случае почти наверняка устроишься, даже будучи без коммерческого опыта за спиной
но стоит учитывать что зп будет одной из самых низких в отрасли - тысяч 80 в дс, тысяч 60 в дс2

29/12/19 Вск 00:51:48 1560052351
>>1560048
>resize
Кто сказал что я ресайз использую? Речь по моему шла о reserve. В принципе нормальный ответ мне уже выше дали, к чему тут костыли с рвалью? Да и мув без исключений сейчас пишут редко, разве что дефолтный поставить и надеятся что компилятор разберется.
к чему вообще был доеб до сажи я тоже не понял, она тред не топит и автоматом стоит
Аноним 29/12/19 Вск 00:59:46 1560054352
Зачем нужный модификаторы доступа? Почему нельзя обойтись просто структурами? Когда это вообще может быть необходимо?
29/12/19 Вск 01:01:16 1560055353
>>1560052
Главное забыл добавить, при резерве operator[] к обьекту, у которого не начался лайфтайм - уб, ты либо теряешь в производительности в любом случае
Аноним 29/12/19 Вск 01:02:02 1560057354
>>1560052
ладно, давай, студентик
пили дальше свою матрицу на голых указателях
уже неплохо что ты начал пилить диплом до нового года, прямо подвиг
Аноним 29/12/19 Вск 01:04:27 1560059355
>>1560055
повторюсь, вместо того чтобы делать reserve и push_back, делают resize и [], это и позволяет не делать bound checking (о чем ты слезно и ныл, что мол это "медленно" и поэтому стандартный вектор - говно)



Аноним 29/12/19 Вск 01:05:34 1560062356
>>1560057
А я ещё в техникуме свой диплом сделал за неделю на основе диплома из интернета по аналогичной теме, который мне дал куратор моего диплома.
29/12/19 Вск 01:06:43 1560063357
>>1560059
То есть вызывать дефолт конструктор на весь ренж не медленно, да?
Аноним 29/12/19 Вск 01:16:47 1560067358
>>1560063
такое имеет смысл делать если хранятся в контейнере не объекты а указатели (умные указатели) на объекты
ну либо если хранятся примитивные типы в контейнере
но, да, скорей всего и в этом варианте будет не быстрей

в любом случае ты зря доебался до того что выполняется bound checking при push_back, там же эта проверка быстрая, по сути там идет не проверка больше/меньше, а проверка на неравенство указателей, те программиский прием guard-значения

bool _Has_unused_capacity() const noexcept
{ // micro-optimization for capacity() != size()
return (this->_Myend() != this->_Mylast());
}
Аноним 29/12/19 Вск 01:20:23 1560069359
>>1560067
Перечитай мой первый пост. Я жалуюсь на то, что плюсы пропагандируют зеро кост, и при этом в одном из самых популярных контейнеров стандартной либы нет возможности сделать пуш_бек без проверок, что как-бы с зеро-кост слабо сочетается. А как там внутри реализовано это от компиля к компилю варьируется
Аноним 29/12/19 Вск 01:26:08 1560073360
>>1560069
я тебе показал как делать вставку без bound checking в стандартный контейнер
обычными средствами контейнера, между прочим
никаких трюков



Аноним 29/12/19 Вск 01:37:59 1560077361
Как сделать стэк состандартными функциями стэка имея только иостреам и классы?
Аноним 29/12/19 Вск 02:02:59 1560082362
>>1559638
vec.data() и делай что хочешь
Аноним 29/12/19 Вск 05:22:21 1560101363
>>1559126
>Аноны, буду очень благодарен, если вы подскажите, что и где надо статически слинковать, чтобы приложение qt не требовало дллок.
В арчике для mingw есть qt5-base-static, в msys2 тоже готовый пакет идет. Под студию сам пердолься, собирай (но будь готов к тому, что какой-нибудь плагин неправильно скомпилируется, и придется вилкой чистить). В 5.13 статически слинкованое окошко с формочкой около 17 мегабайт, 8 после upx.
Аноним 29/12/19 Вск 11:38:36 1560163364
>>1560052
А зачем они тебе? Используй просто пуш_бэк.
Аноним 29/12/19 Вск 11:47:25 1560169365
Я очень жёстко туплю, помогите кто-нибудь. У месть есть 2 текстбокса, в один я записываю цифры через пробел, жмякаю на кнопку и числа из первого выводятся во второй. Для этого нужно использовать стек обязательно. Я написал код, но числа выводятся В ОБРАТНОМ ПОРЯДКЕ. То есть, записываю я 1234, а он выводит 4321. Что мне переделать?

System::Collections::Generic::Stack<int> stk;
System::String^ str = System::Convert::ToString(this->txtIn->Text);
str+= " ";
int X, at, pos = 0;
at = str->IndexOf(" ");
while(at != -1){
System::String^ str1 = str->Substring(pos, at-pos);
pos = at+1;
bool res = Int32::TryParse(str1, X);
stk.Push(X);
at = str->IndexOf(" ", pos);
}
System::Collections::Generic::Stack<int> buf;
System::String^ str2 = "";
while(stk.Count){
buf.Push(stk.Peek());
str2+=System::Convert::ToString(stk.Peek()) + " ";
stk.Pop();
}
while (buf.Count){
stk.Push(buf.Peek());
buf.Pop();
}
this->txtOut->Text=str2;
}
Аноним 29/12/19 Вск 12:08:42 1560174366
>>1560169
>но числа выводятся В ОБРАТНОМ ПОРЯДКЕ
Ты представляешь что такое стек, да? Это яма. Ты засунул 1, засунул 2, засунул 3. Пока не достанешь 3, извлечь 2 или тем более 1 тебе не получится.
Тебе нужна очередь, а не стек.
Аноним 29/12/19 Вск 12:12:49 1560178367
>>1560174
Я понимаю, что в данном случае очередь больше подходит, но в задании написано стек использовать.
Аноним 29/12/19 Вск 12:17:05 1560180368
>>1560169
А, да, тебе достаточно заменить [str2=str2+System::Convert::ToString(stk.Peek()) + " "] на [str2=System::Convert::ToString(stk.Peek()) + " "+str2]. Или сделать то же самое на стадии считывания.
Просто конструировать строчку таким образом очень неэффективно, а использование очереди во много раз разумнее и это мне показалось более важной проблемой, чем твоё нарисованное ограничение.
Аноним 29/12/19 Вск 12:17:18 1560181369
>>1560169
Через указатели на первый элемент и на вершину и с помощью них уже выводи. Ну а так, правильно написали для этого очередь используют.
Аноним 29/12/19 Вск 12:20:58 1560182370
Собственно если у тебя прям строчка есть, то можно вовсе без стека - размер изначальной строчки известен, размер конечной строчки такой же, можно без стека напрямую переписывать первую строчку во вторую. Зачем тут нужен стек или очередь - не понятно. Просто так для галочки, записать в него, а потом считать из него.
Аноним 29/12/19 Вск 12:25:45 1560185371
Аноним 29/12/19 Вск 12:27:37 1560187372
>>1560180
>[str2=System::Convert::ToString(stk.Peek()) + " "+str2]
Спасибо, теперь всё как надо.
>ачем тут нужен стек или очередь - не понятно. Просто так для галочки, записать в него, а потом считать из него
Для этого и нужен, для галочки.
Аноним 29/12/19 Вск 13:05:10 1560224373
>>1560169
да вы заебали, добавьте в шапку гайд постить код на pastebin, в посте кидать ссылку на код и прикреплять скриншот кода

петухи бля
Аноним 29/12/19 Вск 13:32:03 1560255374
>>1560082
Ммм обожаю запах свежего убца по утрам
Аноним 29/12/19 Вск 15:23:03 1560375375
>>1558644
>Она не работает с широкими символами.
Это плюс, а не минус.
Аноним 30/12/19 Пнд 00:23:47 1560726376
кстати, теперь ведь есть еще один стандартизированный способ разбиения строки на токены, а именно в библиотеке регулярных выражений есть regex_token_iterator

Аноним 30/12/19 Пнд 00:27:59 1560727377
>>1560726
Несколько быстро работают регулярки в плюсах?
Аноним 30/12/19 Пнд 01:04:44 1560744378
Аноним 30/12/19 Пнд 01:24:12 1560752379
Аноним 30/12/19 Пнд 02:03:03 1560766380
>>1560727
>Несколько быстро работают регулярки в плюсах?
скорее всего с производительностью, сравнимой с реализациями тех же самых регулярок в других языках программирования.. потому что регулярки ведь старая технология уже, как их оптимально реализовывать уже известно..

Аноним 30/12/19 Пнд 02:09:35 1560769381
с регулярками в новом стандарте, кстати, щас стало можно по быстрому распарсить, к примеру, хмлку или json файлик..
те не полноценно распарсить а выдрать данные..
не надо подключать тяжелые библиотеки, тащить их в проэкт и все такое..

Аноним 30/12/19 Пнд 04:43:29 1560803382
>>1560769
You can't parse [X]HTML with regex. Because HTML can't be parsed by regex. Regex is not a tool that can be used to correctly parse HTML. As I have answered in HTML-and-regex questions here so many times before, the use of regex will not allow you to consume HTML. Regular expressions are a tool that is insufficiently sophisticated to understand the constructs employed by HTML. HTML is not a regular language and hence cannot be parsed by regular expressions. Regex queries are not equipped to break down HTML into its meaningful parts. so many times but it is not getting to me. Even enhanced irregular regular expressions as used by Perl are not up to the task of parsing HTML. You will never make me crack. HTML is a language of sufficient complexity that it cannot be parsed by regular expressions. Even Jon Skeet cannot parse HTML using regular expressions. Every time you attempt to parse HTML with regular expressions, the unholy child weeps the blood of virgins, and Russian hackers pwn your webapp. Parsing HTML with regex summons tainted souls into the realm of the living. HTML and regex go together like love, marriage, and ritual infanticide. The <center> cannot hold it is too late. The force of regex and HTML together in the same conceptual space will destroy your mind like so much watery putty. If you parse HTML with regex you are giving in to Them and their blasphemous ways which doom us all to inhuman toil for the One whose Name cannot be expressed in the Basic Multilingual Plane, he comes. HTML-plus-regexp will liquify the n​erves of the sentient whilst you observe, your psyche withering in the onslaught of horror. Regex-based HTML parsers are the cancer that is killing StackOverflow it is too late it is too late we cannot be saved the trangession of a child ensures regex will consume all living tissue (except for HTML which it cannot, as previously prophesied) dear lord help us how can anyone survive this scourge using regex to parse HTML has doomed humanity to an eternity of dread torture and security holes using regex as a tool to process HTML establishes a breach between this world and the dread realm of corrupt entities (like SGML entities, but more corrupt) a mere glimpse of the world of reg​ex parsers for HTML will ins​tantly transport a programmer's consciousness into a world of ceaseless screaming, he comes, the pestilent slithy regex-infection wil​l devour your HT​ML parser, application and existence for all time like Visual Basic only worse he comes he comes do not fi​ght he comes, hi​s unholy radiance destro҉ying all enlightenment, HTML tags leaking from yo​ur eyes like liq​uid pain, the song of regular exp​ression parsing will exti​nguish the voices of mor​tal man from the sp​here I can see it can you see it it is beautiful t​he final snuffing of the lie​s of Man ALL IS LOST ALL I​S LOST the pony he comes he comes he comes the ich​or permeates all MY FACE MY FACE ᵒh god no NO NOOO​O NΘ stop the an​*​gles are n​ot real ZALGΌ IS҉ TOƝȳ THE PO​NY HE COMES

Аноним 30/12/19 Пнд 04:52:39 1560807383
>>1560803
дык выдрать то данные можно
грязно, быстро
Аноним 30/12/19 Пнд 19:44:54 1561322384
Ананасы, задумал тута сделать такую штуку.
Реализовать паттерн наблюдатель для событий в программе, но чтобы у каждого коллбека была своя сигнатура.
Как такое провернуть? Gизъёбываться с шаблонами и тюплами?
Аноним 30/12/19 Пнд 19:55:08 1561331385
>>1561322
Не изобретать велосипед и брать кют. Там уже рефлексия во все поля, можешь узнавать имя метода или объекта который тебя вызывает например.
Аноним 30/12/19 Пнд 21:43:18 1561481386
>>1561331
Мне Qt не нужен, я не просил об этом.
Аноним 30/12/19 Пнд 21:47:11 1561488387
>>1561322
Зачем такое может быть нужно? Разве ты не явно контролируешь, где и чем эти калбеки будут вызваны? Багор какой-то.
Аноним 30/12/19 Пнд 22:22:48 1561507388
>>1561322
а как ты эти коллбэки будешь вызывать то из observable?
Аноним 31/12/19 Втр 00:01:43 1561598389
>>1561488
Разные события и с ними идут свои параметры (или их может не быть вообще) поэтому сигнатура не всегда одинаковая.
Короче, пока решил сделать так: класс Event, в нём массив\вектор из строк, затем они будут преобразовываться в нужный тип (вроде int, float и тп).

>>1561507
А хер их знает. Думал может быть как-то можно хранить и передавать тюплы.
Аноним 31/12/19 Втр 00:59:42 1561616390
>>1561598
Что за бред? Сделай объект, который будет состоять из маркера и каллбека и оперируй им.
Аноним 31/12/19 Втр 03:37:27 1561679391
>>1561616
> Сделай объект, который будет состоять из маркера и каллбека и оперируй им.
Разверни свою мысль
Аноним 31/12/19 Втр 05:28:39 1561687392
Аноним 01/01/20 Срд 01:57:15 1562220393
Возможно ли реализовать список неопределённой размерности без помощи массивов?
Аноним 01/01/20 Срд 02:11:10 1562223394
>>1562220
википедия / связный список
std::list
Аноним 01/01/20 Срд 02:12:40 1562224395
Аноним 01/01/20 Срд 02:19:09 1562228396
>>1562224
Ну ебись с указателями как в Си
Аноним 01/01/20 Срд 02:19:41 1562230397
15778296758270.jpg (74Кб, 459x492)
459x492
Нужен автокликер для одной игры. Юзать готовые - не вариант, ибо там вся реализация через апи ос, которые игра детектит. Надо как-то на аппаратном уровне имитировать нажатие клавишь. Нашел что-то про HID протокол, потом нашел libusb упрощенную обертку для управления этим протоколом. Пока особо документацию не читал. Перед этим хочу узнать, туда ли я вообще копаю? И насколько это реально сделать программно, не понимая и не зная как вся эта микроконтроллерная хуйня устроена и как она погромируется?
Аноним 01/01/20 Срд 02:28:57 1562237398
>>1562228
Мне нужно это сделать с классами, а не как в Си.
Аноним 01/01/20 Срд 02:31:35 1562238399
>>1562230
Драйвер свой напиши. Примеры драйверов мыши и клавы есть были в ресурс ките. Драйверы работают с другим API, займёт время разобраться. Х.з. какие у тебя задачи. Я вкорячивал в свой драйвер скрипт-энджин, которому подсавывал свои скриптики в рантайме.
Аноним 01/01/20 Срд 02:38:46 1562242400
>>1562238
А драйвер этот, он же должен быть вшит в микроконтроллер? Т.е. мне надо еще покупать саму деталь, паять схемы какие-то? Свою клавиатуру я вряд ли рискну портить своими "драйверами". Мог сейчас хуйню написать, просто я вообще не имел с этим дела и имею 0 представления об этом всем. Но с классическим программированием я знаком и с/с++ владею.
Аноним 01/01/20 Срд 02:49:05 1562245401
>>1562238
И еще, что за ресурс кит? Ничего не могу нагуглить, кроме каких-то утилит, которые входили в какой-то пакет мелкософта в 2003 году.
Аноним 01/01/20 Срд 04:35:43 1562257402
>>1562230
Что за игра? Возможно сработает метод с очисткой флага эмуляции. Для этого потребуется зарегистрировать свой глобальный хук. В ином случае придется писать драйвер, а это задача не для ньюфага. Еще можно взять готовый драйвер, который предоставляет подобный функционал, такие тоже существуют.
Аноним 01/01/20 Срд 04:42:21 1562258403
>>1562230
Vjoy не работает? У меня он во всех играх работал без подводных.
Можешь взять и перелопатить драйвер для планшетов ещё: https://github.com/hawku/TabletDriver - наверное там есть все нужные тебе куски кода.
Аноним 01/01/20 Срд 06:23:55 1562270404
>>1561598
Хуйню изобрел. Джаваскрипт какой-то. Если у тебя несколько событий, о которых нужно уведомлять наблюдателей, сделай несколько сигнатур колбэков - по одной на каждый тип событий.
Аноним 01/01/20 Срд 09:15:46 1562287405
Аноним 01/01/20 Срд 09:16:15 1562288406
Аноним 01/01/20 Срд 12:23:46 1562327407
>>1562257
Аллоды онлайн. С хуками дела тоже не имел. Это что-то на уровне демонов? Насчет драйверов я вообще сомневаюсь, я не знаю как это все устроено и работает, соответственно и нагуглить вряд ли смогу. Я вчера пробовал искать туториалы по написанию драйверов и даже понять не смог, то ли я вообще нашел.

>>1562258
Не пробовал, но пробовал около десятка других, ни один не работал. Только AutoHotKey кое как брыкался. Пару раз кнопка сработает и все. Пробовал обманывать, менять частоту случайным образом между нажатием - не помогло. Заметил только, если самому нажимать любую клавишу вручную, то тот скрипт снова пару раз отрабатывал и глушился. Явно защита какая-то в самой игре. Сейчас попробую с vjoy.
Аноним 01/01/20 Срд 12:53:52 1562355408
>>1562258
Что это за vjoy вообще? Это какой-то эмулятор клавиатуры для геймпадов/джойтиков типа xpadder? Мне-то автокликер нужен был.
Аноним 01/01/20 Срд 14:05:53 1562364409
>>1562355
Эмулятор джостика-мышки-клавы. Грубо говоря, если ты собрал на условной ардуине свой кастомный джостик для вертолёта и не хочешь писать к нему сложный драйвер с вниканием в winapi, то ты можешь за несколько строчек написать всё что тебе нужно через vjoy, и игра сможет понимать твой джостик.
Никто не мешает тебе использовать его без джостика для автокликера и вряд ли много какая игра специально блочит vjoy.

>Явно защита какая-то в самой игре.
Я бы смотрел одинаковая ли задержка между нажатиями, и чтобы между событием нажатия и отпускания было адекватное время, если бы делал защиту.
Аноним 01/01/20 Срд 14:46:18 1562374410
>>1562364
Вот мой простой скрипт для нажатия клавиши z для autohotkey.
Loop
{
Random, sleepHold, 153, 257
Random, sleepWait, 1153, 5059

Send, {z down}
Sleep, sleepHold
Send, {z up}
Sleep, sleepWait
}

Значения, вроде, адекватные, но работать стабильно не хотят. А насчет vjoy, я мало что понимаю. Открыл конфигуратор, ничего полезного не нашел для себя. Потом еще погуглил, я правильно понимаю, что мне нужно написать некий "feeder", который надо будет каким-то образом скомпилировать и запустить средствами vjoy? Насчет документации, нашел только какой-то мануал в sdk, который не уверен, что вообще нужен мне. Речь, ведь, шла о просто vjoy, как о самостоятельной утилите, а сейчас выясняется, что, похоже, еще и какие-то пакеты/библиотеки надо докачивать. Я не жалуюсь, просто я не понимаю: в том ли я вообще направлении двигаюсь.
Аноним 01/01/20 Срд 15:16:46 1562387411
>>1562374
пчел, в некоторых играх скрипты запрещены, так что ты либо пишешь свой драйвер, либо идешь нахуй из треда
мимокрок
Аноним 01/01/20 Срд 15:19:14 1562388412
Как вариант можно попробовать купить геймерскую мышку и туда напихать макросов
Аноним 01/01/20 Срд 15:21:04 1562389413
>>1562387
>мимокрок
>идешь нахуй из треда
это еще че такое
если ты не заметил, то рандомные вейты там это как раз способ обойти некоторые "запреты на скрепты", работающие на детектировании одинаковых задержек, так что ты либо вникаешь в цепочку постов, либо идешь нахуй из треда
мимокрок
Аноним 01/01/20 Срд 15:21:45 1562391414
>>1562387
Так я и не против. Вы мне импульс хотя бы дайте какой-то. Я никогда не писал драйверов и слету вот так понять не получается. Я даже не понимаю то ли я гуглю... Вот, мне про vjoy написали, это не скрипт, насколько я понял. Но на мои вопросы, касаемо него, пока еще не ответили.

>>1562388
У меня она геймерская, но макросы не поддерживает. Хотя... Мб где-то в закромах древнюю х7 можно поискать...
Аноним 01/01/20 Срд 15:26:41 1562397415
>>1562389
обезьяна, ты не понял. он либо обдрачивается сями и пишет свой драйвер по хардкору, если уж он хочет нечестно играть против обычных игроков, либо идет нахуй со своими шизофреническими проблемами с автохоткеем, потому что это оффтоп и щитпостинг.

>>1562391
>Я никогда не писал драйверов и слету вот так понять не получается
в программерс тредах такой обсурд писать да ты совсем охуел
Аноним 01/01/20 Срд 15:29:42 1562399416
>>1562397
>если уж он хочет нечестно играть против обычных игроков
Ой, блядь, началось... Я никак не связан с игроками и на их процесс игры вообще никак не влияю этими действиями. Ты какой-то обиженный, я смотрю. Не хочу с тобой общаться.
Аноним 01/01/20 Срд 15:39:12 1562410417
>>1562230
>Нужен автокликер для одной игры
>>1562399
>Я никак не связан с игроками

панимаешь, чмоха, просто так в игры не добавляют защиту от скриптов, ее вообще почти никогда не добавляют, значит скорее всего ты играешь в какую то онлайн дрочильню, где макросы создают такое преимущество, с которым разрабам приходится бороться. следовательно я делаю вывод, что ты пиздабол ебаный и идешь нахуй, даже не сказал какая игра, такая ты гнилая паскуда
Аноним 01/01/20 Срд 15:45:22 1562412418
Вообще, касаемо драйверов. Мне же нужен драйвер на стороне устройства, а не пк. Хотя, возможно, и там и там они потребуются. Драйвер на устройстве бы посылал сигнал нажатия клавиши, а драйвер на пк получал бы его и передавал ос. Я это понимаю пока что только так. Могу ошибаться. Но если все же я прав, то мне понадобится каким-то образом перезаписать драйвер микроконтроллера клавиатуры своим. А это может повлечь за собой не работающее устройство, которое я своими силами уже вряд ли смогу восстановить. Да и вообще, насколько я знаю, для установки прошивки на микроконтроллеры нужно доп оборудование, которого у меня нет. Короче, пока не особо все ясно.

>>1562410
Ну и мерзкий же ты, а еще ты слепой.
Аноним 01/01/20 Срд 15:54:41 1562415419
>>1562412
>перезаписать драйвер микроконтроллера клавиатуры
ты либо пишешь драйвер для своего кумпуктера и пользуешься им и не трогаешь устройство, либо делаешь эмулятор на хуярдуине и не трограешь драйвер. у тебя два выбора потому что свою клавиатуру за сотку ты перепрошить в этой вселенной точно не сможешь.
Аноним 01/01/20 Срд 16:00:53 1562418420
Как вкатиться в котрибученье в буст или в другие суперлибы? Я чувствую, что готов, но не знаю с чего начать.
Аноним 01/01/20 Срд 16:32:17 1562432421
>>1562418
Посмотреть Антона Полухина или другие лекции по словам "контрибученье в буст". Но наверняка ты это уже делал, раз "готов".
Аноним 01/01/20 Срд 17:01:53 1562477422
>>1562418
Открываешь гитхаб, выбираешь проект, чё-то пишешь, делаешь пулл-реквест и засовываешь его себе в задницу
Аноним 01/01/20 Срд 17:47:49 1562510423
>>1562415
Я конечно не эксперт по драйверам, но..
на фоне этого треда ещё какой - написал аж целый один, хоть это и был курсач на втором курсе

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

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

Почитать про всё можно например здесь
https://docs.microsoft.com/en-us/windows-hardware/drivers/gettingstarted/device-nodes-and-device-stacks
https://github.com/microsoft/Windows-driver-samples

В любом случае, это развлечение как минимум на неделю, так что лучше поищи человеческое решение.
Аноним 01/01/20 Срд 17:50:04 1562512424
>>1562510
ах да, и ты
>идешь нахуй из треда
в любом случае, т.к. тебе в С-тред.
Аноним 01/01/20 Срд 18:01:49 1562523425
Обосрался с советов итт, пчел с аутохоткеем разобраться не может, а вы ему драйвера предлагаете писать. Это аутист даже не изучил доки ахк, а там ведь черным по белому написано, что по дефолту ахк использует жиденький метод инпута, который игра тупо не обрабатывает. Пусть выкидывает нахуй свое скриптоговно и пишет код на нормальном языке, напрямую обращаясь к винапи. SendInput, скорее всего в этой поделке мейлсру будет работать.
Аноним 01/01/20 Срд 18:11:03 1562527426
>>1562510
Какой еще жиденький метод инпута? Все эти программы как раз и используют винапи. Только что в макс пейне проверил, там все работает, ибо защиты там никакой нет. А в том дерьме от мейлсру оно есть, внезапно. Не будет винапи работать, я в этом уверен.
Аноним 01/01/20 Срд 18:14:51 1562528427
>>1562523
>>1562527

>>1562510
Я знаю. Я и сам особо не хочу сейчас ебаться с этими драйверами, ибо мне нужно побыстрее получить результат. Потом уже, для себя, можно было бы попробовать, в принципе, давно уже хотел попробовать, но руки не доходят. Про vjoy мне выше писали. Попробую пока его покурить. Хз что выйдет из этого. Если ничего не выйдет за несколько дней, то пойду спаяю какой-нибудь простенький генератор импульсов, который будет дрочить реле, лол. Надо было его, наверное, сразу собрать.
Аноним 01/01/20 Срд 18:18:21 1562530428
Какие свойства есть у xor? Нужно решить уравнение с ним в целых числах или установить что корней нет. Как понять что корней нет?
Аноним 01/01/20 Срд 18:33:49 1562533429
>>1562527
Такой еще жиденький метод инпута, открой доки ахк и посмотри. Не те апи он использует, вместо эмуляции нажатия кнопки, посылает сообщение игре, которое игра не обрабатывает. SendInput будет работать, ставлю жопу. Если нет, то как я уже писал выше, игра скорее всего регистрирует свой глобальный обработчик, который обходится регистрацией своего обработчика поверх этого.
Аноним 01/01/20 Срд 18:37:10 1562535430
image.png (22Кб, 463x231)
463x231
>>1562530
покажешь уровнение?
Аноним 01/01/20 Срд 18:46:27 1562542431
>>1562535
(x+a1) xor (x+a2) xor (x+a3) ... xor (x+an)= b
a, b дано
Аноним 01/01/20 Срд 19:14:58 1562552432
image.png (6Кб, 348x121)
348x121
>>1562542
в обратную сторону ксеришь.
(x+a1) xor (x+a2) xor (x+a3) ... xor (x+an)= b
x = (((((b xor (x+an)) ...) xor (x+a3)) xor (x+a2)) xor (x+a1)) - a1
Аноним 01/01/20 Срд 19:18:00 1562553433
>>1562552
опечатался
x = ((((b xor (x+an)) ...) xor (x+a3)) xor (x+a2)) - a1
Аноним 01/01/20 Срд 19:36:43 1562560434
изображение.png (131Кб, 1366x768)
1366x768
ЧТо такое?
Аноним 01/01/20 Срд 19:38:03 1562561435
>>1562560
Если стереть copy то все работает
Аноним 01/01/20 Срд 19:43:25 1562563436
>>1562561
copy работает с итераторами
Аноним 01/01/20 Срд 19:46:53 1562565437
Аноним 01/01/20 Срд 20:15:55 1562577438
Как оптимизировать программу и находить возможные ошибки? Вот у меня код по времени не проходит, хотя алгоритм как по мне оптимальный. Может быть у меня вобще ошибка не связанная с алгоритмом. Например перепелнение переменной
Аноним 01/01/20 Срд 20:30:04 1562580439
Быстро ли работает sort в c++?
Аноним 01/01/20 Срд 20:35:14 1562581440
>>1562580
std::sort быстрее чем qsort из си
Аноним 01/01/20 Срд 20:36:15 1562585441
>>1562580
N*log(N), всё остальное тебя ебать не должно
Аноним 01/01/20 Срд 20:54:06 1562587442
Аноним 01/01/20 Срд 20:56:20 1562589443
>>1562587
В смысле как? Дебагер в руки и искать, думать, тесты писать на простые и сложные случаи. Профайлеры, асаны, детектеры утечек, тысячи их.
Аноним 01/01/20 Срд 20:59:10 1562590444
>>1562587
>алгоритм как по мне оптимальный
Ну а как оно по оценке О(...) по времени и по памяти, можешь примерно почувствовать? Или хотя бы подрочи тесты разного размера, чтобы узнать с какого начинает таймаутить.
Аноним 01/01/20 Срд 21:02:01 1562592445
>>1562587
Ищи ботлнеки, что еще сказать, мы будто твой код можем прочитать
Аноним 01/01/20 Срд 21:11:19 1562594446
>>1562589
>>1562590
>>1562592
Мне кажется проблема не алгоритмическая, а реализации. Прогнал макимально сложные входные данные из первой группы. Все ок. Может у меня из цикла например программа не выходит в том месте где должна. Как мне искать ботлнеки? Есть программы, которые помогут?
Аноним 01/01/20 Срд 21:21:02 1562597447
>>1562594
берёш дебаггер
@
ставиш брейкпоитны в интересных местах
@
запускаеш
@
смотриш значения переменных


Судя по вопросу, это какое-то олимпиадное дрочево. Странно что вас там не учат отладчиком пользоваться. Полезно еще ассертов насовать везде.
Аноним 01/01/20 Срд 21:25:25 1562599448
>>1562597
> Судя по вопросу, это какое-то олимпиадное дрочево.
В точку
> Странно что вас там не учат отладчиком пользоваться. Полезно еще ассертов насовать везде.
У меня с компом последнее время проблемы и кучу времени приходиться тратить просто на компиляцию и приходится испольщовать онлайн компилятор. Видимо придется. Спасибо.
Аноним 01/01/20 Срд 21:35:44 1562602449
>>1562599
Если не хочешь ебаться с 20-гиговой M$V$, накати по-быстрому code::blocks. Лучшее в чем можно строчить однофайловые задачки.
Дебаггер там тоже хорош хотя уже 10 лет не могут сделать нормальное отображение stl
Аноним 01/01/20 Срд 21:36:36 1562603450
>>1562602
> Дебаггер там тоже хорош хотя уже 10 лет не могут сделать нормальное отображение stl
Проиграл
Аноним 01/01/20 Срд 21:52:02 1562609451
>>1562603
Я тоже. При помощи нечеловеческой ебли с питоном и подстановкой левого компилятора мне однажды удалось это починить. Но затем там ещё что-то поломалось.
Хуле делать - добавляем в watches v.data() как массив.

Про 10 лет, кстати, не шутка. Проигрывал еще с бугуртов на ихнем форуме
>Sigh ... do you need any more explanation why M$'s comm. ed. is so popular?
>Do you want my opinion about a development chain where nothing fits together, and debugging vector[1] is impossible?...
Аноним 01/01/20 Срд 21:56:40 1562612452
>>1562609
но вообще в своё время я пилил олимпиады на чистом С, как деды воевали, и на эти крестопроблемы мне было поебать.
Аноним 01/01/20 Срд 22:20:19 1562619453
>>1562597
Меня тоже не учили им пользоваться, но я сам придумал везде вставлять printf, а потом и cout. Оказывается, смекалочка уже и тогда работала. Надо было вместо вузика сразу ентерпрайз свой запускать...
Аноним 01/01/20 Срд 22:22:45 1562622454
>>1562602
И нахуя ты посоветовал ему какое-то дерьмо динозавров? Почему сразу devcpp какой-нибудь не посоветовал? Или вполне себе годный vscode?
Аноним 01/01/20 Срд 22:31:33 1562629455
>>1562622
Борланд С++ надо было советовать
Аноним 01/01/20 Срд 23:29:39 1562636456
Ребят, у меня куча объектов, связанных между собой указателями. Какие готовые решения, чтобы сохранить это все на диск, а потом загрузить с него? Может, в Boost что-то есть?
Аноним 02/01/20 Чтв 00:05:51 1562639457
>>1562636
Пиши руками сериализацию какую-то. Ничто тебе не поможет.
Аноним 02/01/20 Чтв 00:21:25 1562641458
>>1562636
Вообще нихуя не понял. Шизло какое-то. Нахуя тебе их сохранять, блядь? Запускай бинарник заново.
Аноним 02/01/20 Чтв 00:41:41 1562646459
>>1562641
Ты ебанулся? Вообще никогда нигде не нажимал на дискету?
Аноним 02/01/20 Чтв 00:56:44 1562652460
>>1562646
Подожди, я тебе щас своей дискетой на лоб твой нажму, только вытащу
Аноним 02/01/20 Чтв 02:17:11 1562678461
>>1562636
Делай мапку указатель-объект, при сохранении так и записывай указатель, при чтении достаешь реальный объект из мапки и обновляешь значение указателя
Аноним 02/01/20 Чтв 02:29:25 1562683462
>>1562636
тебе нужно сделать сериализацию
как минимум нужно сначала будет выбрать формат хранения - бинарный, текстовый, в базе данных, десятки вариантов
потом надо еще учесть ты будешь писать свой велосипед или использовать готовые библиотеки.. выбор всего этого зависит от того что за софт ты пишешь..
в бусте есть библиотека для этого, она так и называетсы boost serialization, но за ее удобство ничего сказать не могу

Аноним 02/01/20 Чтв 03:09:08 1562694463
>>1562594
Показал бы код, чтобы понять какого рода ошибки там могут быть и в какую сторону думать - вдруг ты там вовсе расстояния вместо квадратов расстояния сравниваешь, а при проходе по двумерному циклу используешь / и %, вместо двойного цикла. Без кода никто кроме тебя не скажет в чём проблема и что фиксить.
Аноним 02/01/20 Чтв 03:35:05 1562701464
>>1562533
Не работает sendinput, только что проверил. Код https://pastebin.com/rCcWQqgh

>который обходится регистрацией своего обработчика поверх этого.
Можно поподробней? Что значит регистрирует обработчик? И что значит обойти обработчик? Если это как-то связано с дизассемблированием, то я не думаю, что справлюсь. Я могу только ипконфиг прописать для взлома... Похоже, на реле собирать ключ для замыкания кнопки куда проще...
Аноним 02/01/20 Чтв 12:03:07 1562800465
посоветуйте среду разработки C++ для линукс убунту
Аноним 02/01/20 Чтв 12:18:17 1562810466
Аноним 02/01/20 Чтв 12:42:02 1562842467
>>1562810
Ящитаю, надо просто вначале отсортировать а, и выкинуть b к хуям.
Аноним 02/01/20 Чтв 12:42:45 1562845468
>>1562842
а не, порядок важен..
Аноним 02/01/20 Чтв 12:43:19 1562846469
Аноним 02/01/20 Чтв 12:50:51 1562858470
>>1562810
Есть мнение, что outp должен быть 0 (:15), и b[j] = a[j + l] (:19)
Аноним 02/01/20 Чтв 12:58:50 1562866471
>>1562701
Какой там античит? Твое не работает очень информативно. Отладь программу и посмотри почему не работает, для начала получи статус возврата и загугли его значение.

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowshookexw WH_KEYBOARD_LL, WH_MOUSE_LL, очистить поле flags в соответствующих структурах.
Аноним 02/01/20 Чтв 13:00:06 1562868472
>>1562701
Тот код периодически нажимает z. Ты так и хотел или просто забыл установить wVk?
Аноним 02/01/20 Чтв 13:00:35 1562869473
>>1562800
QtCreator или CLion если студент
Аноним 02/01/20 Чтв 13:13:47 1562873474
>>1562858
Не. Вывод верный во всех тестах. Только превышение времени исполнения
Аноним 02/01/20 Чтв 13:19:11 1562877475
>>1562873
Если чо, у тебя индекс будет a[-1] при l=0.
Аноним 02/01/20 Чтв 13:24:16 1562878476
>>1562877
1<=l<=r по условию. R и l считаются с 1
Аноним 02/01/20 Чтв 13:30:58 1562886477
>>1562878
Попробуй тогда вынести b в начало. Сделай там reserve(n), а в цикле resize(). Чтоб не дрочил память туда-сюда.
Аноним 02/01/20 Чтв 13:34:38 1562890478
>>1562886
Хорошо. Это действительно даст ощутимый прирост? Я конечно сделаю так, поскольку выбора нет, но спрашиваю ради интереса
Аноним 02/01/20 Чтв 13:37:42 1562896479
>>1562890
И почему resize тем более несколько. У меня же размер b меняется быстрее выделения. Мне казалось ресайз просто создает еще один вектор на n элементов и переносит n элементов из массива с k элементами, а потом удаляет массив с k элементами
Аноним 02/01/20 Чтв 13:42:52 1562911480
Аноним 02/01/20 Чтв 14:17:01 1562949481
>>1562866
Блядь, не работает. Ты понимаешь это слово? В этой игре, блядь, не работает! Везде работает, в играх/блокнотах/хуетах, но в этой игре НЕ РАБОТАЕТ. А знаешь почему? Потому что там ебучая защита, сука, и винапишное говно там детектится! Я тебе еще сразу об этом сказал.

>>1562868
Да, так и хотел, wVk установлен на z.
Аноним 02/01/20 Чтв 14:26:55 1562955482
>>1562866
И что это за ссылка? Это и есть "регистрация обработчика"? На первый взгляд показалось, что это просто способ для общения с определенным окном без фокуса на нем.
Аноним 02/01/20 Чтв 14:52:03 1562983483
>>1562949
Я ебу что там в игре у тебя? Выясни для начала какая там защита, а потом уже думай, как ее обходить. Нет, блядь, буду пальцем в небо тыкать.

>>1562955
> Installs an application-defined hook procedure into a hook chain. You would install a hook procedure to monitor the system for certain types of events
Ты вообще читал или это тролинг тупостью?

Я ведь тебе сразу сказал, что нужно делать >>1562257 , а ты тут срешь уже второй день и копротивляешься.
Аноним 02/01/20 Чтв 15:08:42 1562993484
>>1562983
Я читал, но нахуя отвечать не в свою цепочку постов? Я еще вчера тебе написал, ты ничего не сказал/не ответил. Потом ты пишешь от лица анона, который советовал регистрировать какие-то обработчики. Вопрос с дровами уже закрыт, я не стану их писать и тратить на них сейчас свое время. Я вообще пока ничем особо не занимался эти дни. Нет возможности пока сесть и дрочить доки да и вряд ли будет. Уже реально скорее соберу на ne555 какой-нибудь таймер и подпаяюсь к кнопке. Я не ебу какой в игре античит, я вообще сомневаюсь, что можно где-то найти эту инфу на это говно в которое играет 500 человек. А даже если и можно, то что это даст? Один хуй исходников нет и что там происходит на самом деле в коде не известно.

Насчет хуков эти хз, не особо пока понятно зачем это и как работает/что дает. Немного позже почитаю про них, попробую. Вон, вчера один тоже доказывал, что sendinput будет работать, с чем я был не согласен. И что в итоге? Тоже самое и хуков касается, если я вообще смогу разобраться и что-то внятное с ними написать.
Аноним 02/01/20 Чтв 15:59:02 1563068485
>>1562993
Это я тебе и писал, просто ты тупой как пробка. Если не хочешь ни в чем разбираться, то берешь вот этот готовый драйвер и внимательно читаешь его документацию. https://github.com/oblitum/Interception
одно и то же constexpr в разных файлах Аноним 02/01/20 Чтв 16:44:34 1563130486
есть main.cpp, в нём определено
constexpr char null_char = '\0';

есть token.h и token.cpp, в которых используется null_char. Если я пишу в token.h
extern char null_char;

main.cpp(8,16): error C2373: 'null_char': redefinition; different type modifiers

если ничего не пишу в token.h

token.h(22,16): error C2065: 'null_char': undeclared identifier
token.h(22,16): error C2065: 'null_char': undeclared identifier
token.cpp(11,12): error C2065: 'null_char': undeclared identifier

Как сделать, чтобы одно и то же constexpr использовать в разных файлах?

MS Visual Studio 2019 Community
Аноним 02/01/20 Чтв 17:04:52 1563170487
Аноним 02/01/20 Чтв 17:34:10 1563203488
>>1562846
Откуда вы, ебланы, лезете
Аноним 02/01/20 Чтв 17:52:06 1563216489
>>1563170
>Во-первых, extern const.
Не пашет. Вернее, работает, но как константа. Т.е. внутри switch нельзя запихнуть в case:

>Add /Zc:externConstexpr or /Zc:externConstexpr- to the Additional options: pane.
Не помогло.

>В третьих, inline constexpr прямо в заголовке, компилятор сам позаботится, чтобы ты odr не нарушил
Не понял. Что куда? Что писать в main.cpp, что писать в token.cpp, что писать в token.h? Могу сделать main.h, если надо, и его включать всюду.
Аноним 02/01/20 Чтв 17:55:42 1563221490
>>1563216
> Не понял. Что куда
В хедер, в cpp'шник ничего писать не надо, только использовать. Только не забудь С++17 включить.
Аноним 02/01/20 Чтв 18:04:44 1563225491
>>1563216
> token.h
This.
Вообще, непонятно, что ты пытаешься сделать
Аноним 02/01/20 Чтв 18:26:42 1563241492
>>1563221 >>1563225
Давай на простом примере. main.cpp:

#include "token.h"
int main() { char ch; std::cin.get(ch); switch(ch) { case '0': std::cout << "zero\n"; break; case null_char: std::cout << "no\n"; break; default: std::cout << "yes\n"; } return 0; }

token.h:
#include <iostream>

token.cpp:
#include "token.h"
void f() { char ch; std::cin.get(ch); switch(ch) { case '0': std::cout << "ZERO\n"; break; case null_char: std::cout << "NO\n"; break; default: std::cout << "YES\n"; } }

куда писать constexpr char null_char = '\0';
или inline constexpr char null_char = '\0';
что ещё куда писать
Аноним 02/01/20 Чтв 18:37:22 1563246493
frog.jpg (127Кб, 697x993)
697x993
02/01/20 Чтв 19:09:39 1563257494
>>1563203
Найс подрыв емакс-хрюшки.
Аноним 02/01/20 Чтв 19:18:09 1563260495
>>1563241
Хуйню какую-то написал. По-нормальному напиши, в чем задача заключается
Аноним 02/01/20 Чтв 19:23:41 1563261496
>>1563257
Какой блять вим, какой емакс в 2020 году, еблан
Аноним 02/01/20 Чтв 19:30:56 1563263497
>>1563261
Ты чего ругаешься? Кроме емакса с вимом разных вкусов толком то и нет ничего. Электронопомойки же фуфуфу
Аноним 02/01/20 Чтв 19:49:03 1563273498
Аноним 02/01/20 Чтв 19:54:48 1563277499
>>1563273
А если собирать на каком-нибудь всратом тостере надо, мм?
Аноним 02/01/20 Чтв 20:01:47 1563282500
>>1563277
Тогда надо менять работу на ту, где не надо собирать на всратом тостере.
Аноним 02/01/20 Чтв 20:23:33 1563311501
>>1562228
Ладно. Как это сделать? Компилятор ругается, если я пытаюсь присвоить значение какой-то области памяти, на который указывает указатель, если в этой ячейке памяти не объявлена переменная. Как ещё можно сделать лист без библиотеки list, если не так?
Аноним 02/01/20 Чтв 20:24:22 1563313502
>>1563311
>Как ещё можно сделать список без библиотеки list
Поправил себя.
Аноним 02/01/20 Чтв 20:28:53 1563322503
>>1563311

Берешь и без задней мысли делаешь:

template<typename T>
struct ListElement
{
T data;
ListElement element;
};

template<typename T>
class List
{
private:
ListElement<T>
head;
};

Аноним 02/01/20 Чтв 20:33:25 1563328504
>>1563261
>Какой блять вим
Соснольный или гуёвый.
>какой емакс
Соснольный, обычный ванильный саморучно напердоленный, spacemacs, doom emacs.

Выбирай.
Аноним 02/01/20 Чтв 20:34:35 1563330505
>>1563322
С такой записью можно создать список из неопределённого заранее количества элементов? Как это работает? Уже встречал такой такое без шаблонов, но самого разбора работы такого кода так и не увидел.
Аноним 02/01/20 Чтв 20:38:05 1563335506
>>1563322
И да, у тебя звёздочки вакаба сожрала.
Аноним 02/01/20 Чтв 21:00:16 1563362507
image.png (7Кб, 254x212)
254x212
>>1563330
Погугли же епт. Туториалы, тысячи их
тут вот на смартпойнтерах к примеру https://solarianprogrammer.com/2019/02/22/cpp-17-implementing-singly-linked-list-smart-pointers/

тут попроще https://towardsdatascience.com/linked-list-implementation-guide-16ed67be18e4 но с малоками ебучими. хоть new бы

Хранишь указатели на предыдущий и следующий, или только следующий элемент. При вставке алоцируешь память и прицепляешь куда надо (в хвост, в голову).

Кстати std::forward_list так и сделан https://github.com/microsoft/STL/blob/master/stl/inc/forward_list
Аноним 02/01/20 Чтв 21:01:30 1563364508
>>1563362
Я не знаю английского языка. У тебя есть на Русском что-нибудь?
Аноним 02/01/20 Чтв 21:01:34 1563365509
Аноним 02/01/20 Чтв 21:05:14 1563377510
>>1563260
Есть

constexpr char null_char = '\0’;

Его надо использовать в разных файлах: main.cpp, token.h, token.cpp. Причём его надо использовать именно как известное на этапе компиляции выражение, чтобы его можно было использовать как case в switch, причём во всех файлах.

Как это сделать?
Аноним 02/01/20 Чтв 21:45:16 1563412511
>>1563277
Мне сложно придумать ситуацию, когда придется собирать на всратом тостере, кроме разве что совсем экстремальных ситуаций, когда рабочий комп сгорел нахуй, а времени позаимствовать у кого-нибудь лишний ствол ноутбук нет, нужно собрать здесь и сейчас. Правда встает вопрос, откуда у вас тогда взялся всратый тостер.
Олсо, вимом и имаксом удобно пользоваться, когда нужно отредачить пару-тройку строк где-то на удаленной машине, но если строк много, то проще перекинуть файл на рабочий комп, отредачить и перекинуть обратно.
Аноним 02/01/20 Чтв 22:55:09 1563461512
>>1563377
Разобрался. Я включал хэдер, в котором constexpr, в другой хэдер.

Переформулирую вопрос более глобально: хэдеры в хэдеры включать плохая практика? Я совсем начинающий.

На работе легаси-говно, там хэдеры включаются и в сорсы, и внутрь других хэдеров.
Аноним 02/01/20 Чтв 22:58:32 1563465513
>>1563461
>хэдеры в хэдеры включать плохая практика?
Нет, почему?
Аноним 02/01/20 Чтв 23:03:19 1563469514
>>1563465
Потому что вылезла вот эта проблема с constexpr, что их инклюдить можно только в .cpp . Иначе не компилируется.
Аноним 03/01/20 Птн 00:02:37 1563497515


>>1563461
> На работе легаси-говно, там хэдеры включаются и в сорсы, и внутрь других хэдеров.
Блядь, а как ты хотел? Пиздец, мой ор наверное весь офис через океан услышал
Аноним 03/01/20 Птн 01:41:57 1563540516
Какие есть библиотеки которые могут делать за меня часть работы? Например в питоне легко переводить число в строку и обратно. Есть срезы строк. Очень удобно, но медленно
Аноним 03/01/20 Птн 02:15:52 1563550517
Как сделать перебор сочетаний?
Аноним 03/01/20 Птн 02:38:11 1563556518
>>1563540
Наверняка в бусте/Qt есть.
Аноним 03/01/20 Птн 10:19:52 1563612519
1578035965339.jpg (686Кб, 810x2576)
810x2576
>>1563364
Блядь, я удивляюсь терпению анона, который тебе все эти ссылки дал.
Неужели так сложно написать в ебучий гугл "реализация односвязного списка c++" и нужно ебать мозги другим анонам своей тупостью?
Аноним 03/01/20 Птн 11:53:40 1563639520
quattro with mug.jpg (18Кб, 450x338)
450x338
>>1563364
Как раз повод выучить.
Аноним 03/01/20 Птн 12:47:12 1563670521
Аноним 03/01/20 Птн 12:55:36 1563673522
>>1563540
> Например в питоне легко переводить число в строку и обратно.
Ты думаешь это так просто? Если не нужно учитывать локаль - тогда да, просто. std::to_chars, std::from_chars.
> Есть срезы строк
Посмотри, что там c++20 предлагает
Аноним 03/01/20 Птн 13:45:20 1563703523
Аноним 03/01/20 Птн 13:56:20 1563708524
>>1563550
Не совсем тебя понял, но мб std::next_permutation - это то, что ты ищешь.
Аноним 03/01/20 Птн 13:57:48 1563709525
Аноним 03/01/20 Птн 14:02:12 1563713526
>>1563708
Это немного не то. Для него 1, 2, 3 и 2, 3, 1 разные последовательности. Но это одно и то же сочетание. Мне нужно именно сочетания. K из n вот это вот все. Например сочетания из 4 по 2 это
1, 2
1,3
1,4
2, 3
2,4
3,4
. А next permutation вернет и 1, 2 и 2,1 как разные последовательности
Аноним 03/01/20 Птн 14:08:35 1563716527
>>1563713
Тебе быстро ннада?
Если нет - то применяй next_permutation к вектору и копируй его содержимое в мапу с ключом-сетом.
То есть у тебя сначала вставится сет (1, 2), потом ты скопируешь вектор (2, 1) в сет, там он отсортируется и станет сетом (1, 2) и при вставке в мапу дубля не будет.

Говно, но быстро и на коленке.


Бтв, господа, вы щупали уже модули от майкрософта?
Я смог скомпилить со стандартными, но свои даже по туториалу не робють. И интеллисенс умирает после первого же #import.
Или пока нет смысла это трогать?
Аноним 03/01/20 Птн 14:09:27 1563717528
Аноним 03/01/20 Птн 14:10:09 1563719529
>>1563673
to charts и from chars выглядят очень удобно, жаль половина компиляторов не поддерживает это. Вот чем меня раздражает c++, то это раздутость. Куча функций и хз что использовать. Берешь одну, потом оказывается что она параметр string не принимает и приходится переводить в c_string(). Пиздец какой то
Аноним 03/01/20 Птн 14:11:07 1563720530
Аноним 03/01/20 Птн 14:21:44 1563729531
>>1563716
Хотя сет сетов лучше будет.
Единственный момент - я не помню, может ли быть map<set<int>, smt_other> или set<set<int>>, там же отношение порядка требуется, вроде как.
Аноним 03/01/20 Птн 14:31:37 1563746532
Аноним 03/01/20 Птн 14:31:58 1563747533
JYcsdpiGq3o.jpg (255Кб, 1366x768)
1366x768
Каа исправить?
Аноним 03/01/20 Птн 14:36:01 1563753534
>>1563747
sum += static_cast<int>(b[j] - '0');
Аноним 03/01/20 Птн 14:37:00 1563756535
>>1563753
Аааайй бля че за хуйня. Почему так сложно нахуй?
Аноним 03/01/20 Птн 14:41:47 1563763536
15681431506340.gif (564Кб, 800x430)
800x430
>>1563747
Ради таких мометнов и стоит читать тред..

Хоспади, блять, помоги. Ору так, что мать скорую вызвала. А на strlen(b.c_str()), да еще в цикле, вообще чуть от ифаркта не откинуся.
Штош ты делаешь, содомит. скорей бы тебя отчислили
Аноним 03/01/20 Птн 14:42:19 1563764537
>>1563756
Это же ещё сишный прикол.
Чтобы из символа цифры получить инт - нужно код нуля вычесть из нее и привести к инту.
Можно статик каст опустить, будет неявное приведение все равно.

А вообще atoi просто принимает не символ, а строку, поэтому у тебя ошибка. Да и лучше тогда std::stoi использовать, он прям с std::string работает и с разными базами, хоть из троичной переводи в инт.
Разве что она бросает исключение и во второй аргумент записывает позицию, в которой случился косяк.
Аноним 03/01/20 Птн 14:43:14 1563766538
>>1563763
Бля, а я даже не заметил, это же охуенно.
Аноним 03/01/20 Птн 15:01:44 1563780539
>>1563763
Можно объяснить прикол?
Аноним 03/01/20 Птн 15:05:06 1563785540
>>1563780
Ну насчет strlen понял. Где еще смешно?
Аноним 03/01/20 Птн 15:22:30 1563797541
Что аноны могут сказать по поводу JUCE? В моей конторе, на нескольких проектах кроме juce ничего не разрешают использовать.
Аноним 03/01/20 Птн 15:22:31 1563798542
>>1563785
Напиши хоть, что сделать-то просят в задании на лабу.
По скрину непонятно нихуя, кроме любви к постоянным вызовам to_string от одного значения.
цикл по i не в том направлении
Аноним 03/01/20 Птн 15:30:53 1563800543
>>1563753
sum +=(int)(*(b.c_str()+j) - '0');
Аноним 03/01/20 Птн 16:23:19 1563840544
003.jpg (320Кб, 1737x1038)
1737x1038

Ананасы, нужна ваша помощь.

Благодаря быстрому интернету я не имею возможности поставить VS 2017 или 2019 для компилирования swift shader. Раздобыл четвёртую версию, она работает, но вот беда, мамин прогер почему-то поставил потолок для ядер всего шестнадцать, хотя для приличия надо 65536 минимум.

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

Ссылка на исходник
https://github.com/google/swiftshader

На картинке то, что нужно изменить, возможно, где-то ещё, но я не нашёл, для начал этого достаточно будет.
Аноним 03/01/20 Птн 16:24:14 1563843545
>>1563840
Блядь, там ещё в сравнении забыл 16 на 65536 поменять. Вобщем на картинке то, что должно быть после замены
Аноним 03/01/20 Птн 16:29:36 1563848546
>>1563840
а build tools не вариант скачать? они ж немножко весят
Аноним 03/01/20 Птн 16:34:34 1563855547
>>1563848

Возможно, я cmake на вынь 10 попробвовал поставить и тут меня ждало поражение, ведь даже ему нужны какие-то куски от 2017 и 2019 ВС.
Аноним 03/01/20 Птн 17:06:27 1563888548
>>1563763
А чего не так? У класса string по-моему нет аналогичного метода.
Аноним 03/01/20 Птн 17:14:43 1563893549
>>1563888
std::string a = "hello";
auto l = a.size(); // или a.length

Аноним 03/01/20 Птн 17:20:47 1563895550
>>1563893
Блин, точно. Странно было бы не реализовать такую базовую вещь. Пойду почитаю побольше.
Аноним 03/01/20 Птн 17:47:19 1563911551
.mak makefile в vs проект никак не конвертируется что-ли?
Аноним 03/01/20 Птн 19:49:54 1564010552
>>1563716
> Бтв, господа, вы щупали уже модули от майкрософта?
Вообще, там странно всё. Cppreference говорит, что в msvc нет модулей, хотя они там очевидно есть.
В тред призывается нвидия-кун
Аноним 03/01/20 Птн 19:57:13 1564020553
>>1564010
Официально нет, это экспериментальная фича, как asan.
Но на msdn тутор есть, хотя у меня не удалось. Но это и я могу быть дебил, а не у них что-то не так.
Аноним 03/01/20 Птн 20:18:42 1564042554
>>1564020
Да вроде по тутору они роблять вполне, с /experimental:modules. Мило выглядит. А чо у тебя не так?
Аноним 03/01/20 Птн 20:43:56 1564080555
Я верно понимаю, что при каждом вызове строки Node *nd = new Node; в nd записывается НОВЫЙ адрес? Если да, может ли он случайно повториться?
Аноним 03/01/20 Птн 21:03:27 1564119556
Screenshot20200[...].jpg (39Кб, 934x401)
934x401
>>1564042
Вот я это сделал все, если импортил std.core - то тоже мило выглядело и компилилось, но сразу ломался интеллисенс.
А свои модули делать вообще не получалось, хотя все по тутору организовал и с расширением .ixx(вроде такое, не помню точно).

моча, ты совсем охуел? Где я спамлю или вайплю?
Аноним 03/01/20 Птн 21:09:42 1564129557
>>1564080
Может быть просто "nd = new Node"? Ты не можешь два раза написать "Node *nd".
>в nd записывается НОВЫЙ адрес?
Да.
>может ли он случайно повториться?
Только если предварительно освободишь старый.
Аноним 03/01/20 Птн 21:20:25 1564147558
>>1564129
>Может быть просто "nd = new Node"? Ты не можешь два раза написать "Node *nd".
Эта строка в классе, класс циклически вызывается в маин.
Аноним 03/01/20 Птн 22:09:15 1564212559
>>1564119
Они где-то в блоге писали, что intellisence не работает с модулями
Аноним 03/01/20 Птн 22:12:48 1564218560
>>1564212
Жаль, подсветка кода и подсказки - хорошая и удобная вещь.
Аноним 03/01/20 Птн 22:15:47 1564226561
>>1564119
Модули официально не поддерживаются. Все остальное нерелевантно
Аноним 03/01/20 Птн 23:34:12 1564284562
>>1564147
всмысле так?
for (...)
{
    MyClass();
    ...
}

или так
for (...)
{
    MyClass с;
    ...
}

Тогда если ты не делаешь delete nd в деструкторе а я на 80% уверен что не делаешь, то у тебя течет память.
Аноним 04/01/20 Суб 10:01:04 1564408563
>>1564284
По ляжкам у тебя течет
Аноним 04/01/20 Суб 10:06:12 1564411564
Unsigned char arr[100] ;
Unsigned Int x = (unsigned int) & (arr[50]);

Кто нибудь может подсказать что происходит во второй строке кода?
Аноним 04/01/20 Суб 10:28:06 1564418565
>>1564411
Тебе зачем это знать?

Аноним 04/01/20 Суб 10:56:24 1564426566
image.png (6Кб, 610x120)
610x120
>>1564411
Проверить не быстрее, чем спрашивать?
Интерпретируешь указатель на 50 ячейку, как на unsigned (50-53 ячейки) (почему они у тебя с большой буквы?).
Аноним 04/01/20 Суб 11:01:35 1564429567
>>1564426
вообще-то ничего там не интерпретируют, а просто небезопасно усекают адрес в формате ptr64 в uint
Аноним 04/01/20 Суб 11:22:47 1564436568
>>1564429
Там же две звёздочки затёрлись из-за того что борда уже пять лет не может позаимствовать обособление через `` из дискорда.
Аноним 04/01/20 Суб 11:26:02 1564439569
>>1564426
>>1564429
Спасибо за информацию.
Unsigned с большой буквы потому что пишу сейчас со смартфона.
04/01/20 Суб 12:27:46 1564486570
>>1564436
Сейчас бы думать, будто это в дискорде придумали.
Аноним 04/01/20 Суб 12:27:50 1564487571
Как проверить является ли один вектор подмножестврм другого без учета порядка?
Аноним 04/01/20 Суб 12:31:16 1564491572
>>1564487
Если на коленке, то отсортируй и найди set_difference
Аноним 04/01/20 Суб 12:32:22 1564494573
>>1564486
Да блять на форумах с PhpBB в 2003 году нормальное форматирование уже было.
Аноним 04/01/20 Суб 12:40:17 1564504574
>>1564486
Да не важно где придумали, как будто это как-то меняет что-то.
Аноним 04/01/20 Суб 12:49:54 1564514575
>>1564494
KOGDA уже двач переедет на пхпбб???
Аноним 04/01/20 Суб 14:25:13 1564604576
Я создаю динамически сотню кнопок. Как мне работать с их слотами?
Аноним 04/01/20 Суб 14:33:34 1564620577
>>1564604
Речь о qt если что. Вообще, при нажатии на кнопку, мне нужно чтобы она вызывала сигнал передавая в него свои координаты.
Аноним 04/01/20 Суб 15:06:24 1564683578
Хорошая ли идея сделать вектор из варианта?
Аноним 04/01/20 Суб 16:11:16 1564746579
>>1564683
Где-то в недрах osquery видел такое. В принципе норм.
Аноним 04/01/20 Суб 16:13:15 1564750580
>>1564746
А нет, там был list<map<string, variant>>
Аноним 04/01/20 Суб 16:48:01 1564785581
>>1564750
Устроили блять джаваскрипт.
Аноним 04/01/20 Суб 16:52:10 1564793582
>>1564683
Тогда уж сразу вектор из void* делай, чтобы наверняка выстрелить себе в ногу.
Аноним 04/01/20 Суб 18:24:45 1564889583
Является ли хорошим тоном написать в начале класса private:, если у меня в начале класса идут приватные объекты? Или можно с этим не замораживаться? Если действительно нужно так писать в классах, то почему в структурах обычно не пишут в начале public:?
Аноним 04/01/20 Суб 18:35:49 1564905584
>>1564604
Без задней мысли подключаешься, qt сам всё сделает. Сигналы посылай как обычно
emit somethingChanged(newPt);
Аноним 04/01/20 Суб 18:51:14 1564913585
>>1564905
В смысле блять? Вот есть класс mainwindow, он у меня содержит вектор векторов содержащих указатели на кнопки. При нажатии другой кнопки этот веутор векторов заполняется динамически созданными кнопками. И где мне взять сигналы и слоты этих кнопок?
Аноним 04/01/20 Суб 19:00:05 1564923586
>>1564913
Если ты их как-то создаёшь, значит можешь там же подключить к ним слоты
Аноним 04/01/20 Суб 19:55:12 1564954587
>>1564889
я пишу классы

class cls {
public: ...
private: ...
}

чего и тебе желаю.
Аноним 04/01/20 Суб 20:08:17 1564962588
>>1564954
# define public public:
# define private private:

class MyAwesomeClass {
public int a;
public int b;
private int x;
private int y;
};
Аноним 04/01/20 Суб 20:09:13 1564964589
>>1564962
Сишарп тред два блока вниз
Аноним 04/01/20 Суб 22:03:27 1565040590
image.png (15Кб, 471x251)
471x251
image.png (8Кб, 400x260)
400x260
Почему два абсолютно одинаковых проекта запускают программу по разному? Нахуя?
Аноним 05/01/20 Вск 00:31:19 1565151591
>>1563068
Короче, время появилось, решил попробовать с хуками ебаться. Первое с чем столкнулся. SetWindowsHookExW возвращает 0, погуглил и понял, что надо получить дескриптор к пути dll, где эта функция описана, как-то так
>HINSTANCE dDLL = LoadLibrary(TEXT("c:\\path\\something.dll"));
Но в msdn сказано, что LowLevelKeyboardProc находится в windows.h
Вот текущий код регистрации хука
>HHOOK dProc = SetWindowsHookExW(WH_KEYBOARD_LL, LowLevelKeyboardProc, NULL(тут dDLL нужен, по идее), processId);

Какую dll загружать тогда?
Аноним 05/01/20 Вск 01:29:32 1565209592
>>1565151
Убрал конкретный PID, путь к адресу функции указал в текущем модуле, теперь SetWindowsHookExW возвращает отличное от нуля значение. Код https://pastebin.com/npprysU8

Не понимаю. Разве не должна колбек функция вызываться при нажатии кнопки в любом процессе и выводить на экран консоли процесса, который этот хук запустил "!!"?
Аноним 05/01/20 Вск 01:46:28 1565230593
>>1565040
Потому что ты долбоёб. Проекты у него запускают программы, блядь.
Аноним 05/01/20 Вск 01:51:32 1565236594
>>1565230
Пошел нахуй токсик тупорылый.

Спрашиваю у нормальных анонов. Один и тот же хелло-ворлд, но msvc каждый проект компилит по разному. В настройках все одинаковое, вообще ВСЕ одинаковое. Почему так?

Аноним 05/01/20 Вск 02:02:37 1565242595
>>1565236
Ну скинь тогда файлики своих проектов
Аноним 05/01/20 Вск 03:28:27 1565262596
>>1564411
>Кто нибудь может подсказать что происходит во второй строке кода?
Нарушение т.н. strict aliasing rules.
Аноним 05/01/20 Вск 09:17:42 1565302597
>>1564923
Не работает
df.push_back(new QPushButton("f",this));
df[j]->setGeometry(50i,50j,50,50);
df[j]->show();
connect(df[j], &QPushButton::click, [=](){QLabel lbl; lbl.setNum(i*j); lbl.show();});

Пишет QObject::connect: signal not found in QPushButton
Аноним 05/01/20 Вск 11:01:14 1565320598
>>1565302
> Пишет QObject::connect: signal not found in QPushButton
А ты не очень умный, раз не понял, что click - это не сигнал
Аноним 05/01/20 Вск 14:14:57 1565460599
>>1565320
Один хуй не работает
Аноним 05/01/20 Вск 14:37:42 1565481600
>>1565460
Проблема оказалась в этом
> QObject *senderObj = sender();
> lbl = new QLabel("f");
> lbl->setText(senderObj->objectName());
> lbl->show();
Если убрать предпоследнюю строку, все работает и лейбл выводится. Почему не ясно.
Аноним 05/01/20 Вск 14:57:42 1565513601
>>1565481
Ты parent лейблу установил?
вообще, не еби мозг, создай сразу всё, а в рантайме меняй видимость
Аноним 05/01/20 Вск 15:38:35 1565548602
Что можно почитать по криптографии/криптоанализу с привязкой к плюсам?
Аноним 05/01/20 Вск 15:39:20 1565550603
>>1565513
Нет, не установил, да и думаю не в этом проблема. Сейчас интереса ради сделал такое
> QObject *senderObj = sender();
> senderObj->setObjectName("ef");
И тоже не работает.
> вообще, не еби мозг, создай сразу всё, а в рантайме меняй видимость
Не особо понимаю как мне это поможет на самом деле, создавать то все равно придется в цикле.
Аноним 05/01/20 Вск 16:04:36 1565555604
>>1565550
Что ты вообще сделать хочешь?
Аноним 05/01/20 Вск 16:17:02 1565558605
.jpg (57Кб, 864x480)
864x480
Аноним 05/01/20 Вск 16:25:21 1565561606
>>1565558
Вот тут ещё более непонятно, тебе ведь размеры поля известны. Закинь на ideone свой код
Аноним 05/01/20 Вск 16:33:30 1565564607
>>1565561
Было бы что кидать, я ведь только начал делать
https://ideone.com/187xKb

А размер поля может ведь задаваться пользовательский
Аноним 05/01/20 Вск 16:42:26 1565566608
>>1565564
Лучше создай в своём окошке qgridlayout, ему установи размеры и в него запихивай кнопки, тогда можно избавиться от setGeometry и show
Аноним 05/01/20 Вск 16:44:26 1565567609
>>1565566
Это в планах. Сейчас все же хотелось бы разобраться с сигналами.
Аноним 06/01/20 Пнд 15:37:12 1566268610
15780017549220.jpg (98Кб, 1080x1045)
1080x1045
Анон, который советовал хуки писать для перехвата глобальных обработчиков, ты тут? Нужна помощь.

На текущий момент написал глобальный хук, который обрабатывает нажатие клавиши в любой программе, просто информируя об этом в консоль.
Вот код (1 вариант): https://pastebin.com/47cPEVHy

В чем была твоя основная идея? Я пробовал использовать SendInput в этом обработчике, чтобы зациклить нажатие, но игра все равно не воспринимает его. Я мог не правильно понять тебя, поэтому уточняю.
Вот (2 вариант): https://pastebin.com/YGnQYCHx
Аноним 06/01/20 Пнд 15:42:57 1566274611
>>1566268
Или мне надо было переопределить эту функцию LowLevelKeyboardProc из какой-то системной библиотеки, указав третий параметр функции SetWindowsHookEx?
Аноним 06/01/20 Пнд 17:19:20 1566324612
>>1566274
Короче, сейчас переписал без хука (хотя, и с ним тоже работало), используя только цикл с sendinput, но отправляю не виртуальные коды клавиш, а скан-коды. Игра обрабатывает только пару таких sendinput'ов и перестает обрабатывать остальные, пока я сам не нажму любые клавиши на клавиатуре, после чего все повторяется снова. Текущий код: https://pastebin.com/MzzFXeZm
Аноним 06/01/20 Пнд 18:50:52 1566372613
Почему я не могу найти разность между двума указателями на разные типы? Почему компилятор вообще ебет какие там типы? Пусть молча берет чертовы адреса и вычитает.
Аноним 06/01/20 Пнд 19:52:57 1566400614
>>1566268
Для начала пронумеруй все глобальные обработчики и посмотри устанавливает ли игра свой. Может они вообще драйвером блокируют инпут, я не знаю. Скажи какой там античит. Я тебе уже сказал про железобетонный способ с использованием готового драйвера. Качаешь, устанавливаешь и шлешь запросы этому драйверу, он их обрабатывает и нажимает кнопки.
Аноним 06/01/20 Пнд 20:02:22 1566405615
>>1566372
Потому что у языка такие правила, блеать. Не нравится - пили обёртку над указателями со своей собственной арифметикой, раз так хочется выстрелить себе в ногу.
Аноним 06/01/20 Пнд 20:19:52 1566413616
>>1566400
Я не знаю какой там античит. Гугл не блещет точной информацией. Могу только предположить, что там какой-то lifeguard. Но и могу предположить, что он был когда-то в игре, а сейчас его нет, ибо их сайт куда-то там переехал и, вроде как, не занимается защитой игр, судя по этой инфе https://liveguard-security.com/allods-online/?_vlg=1 Короче, хз.

>Для начала пронумеруй все глобальные обработчики и посмотри устанавливает ли игра свой.
Т.е.? Как их пронумеровать и определить что там игра регистрирует/не регистрирует?

Насчет драйвера, этот? https://github.com/oblitum/Interception Я бегло проглядел, мне не понравились картинки и я решил начать с хуков. Не хочу мешать все в кучу, ибо и с тем-и тем я дел не имел. Но попробую...
Аноним 06/01/20 Пнд 20:36:34 1566418617
Аноним 06/01/20 Пнд 20:58:58 1566429618
>>1566400
Ну, вроде, поставил драйвер. Как с ним теперь связаться? Документации никакой не нашел, а та что на гитхабе, там просто какое-то лицензионное соглашение. Никаких других "геттинг стартед" не могу найти в гугле.
Аноним 06/01/20 Пнд 20:59:17 1566431619
Сап, как распределить работу сокета в Qt, а именно слот readyread?
У меня сначала в программу отсылается имя файла, а затем сам файл, но слот не понимает, как их обрабатывать
Файл передаётся частями, т.е несколько раз срабатывает readyread
Как разграничить загрузку файла и получение имени файла?
Помогите, пожалуйста
Аноним 06/01/20 Пнд 21:04:43 1566432620
Аноним 06/01/20 Пнд 21:35:26 1566439621
>>1566429
А, т.е. мне надо interception.h подключить и используя его функционал, методом тыка написать свое, скомпилировать и запустить?
Аноним 06/01/20 Пнд 23:44:53 1566512622
.png (7Кб, 440x190)
440x190
Блядь, сейчас бы ебаться с подключением библиотеки... В чем проблема может быть?

Вот мой код: https://pastebin.com/2zQtLemp

Вот сам хидер interception.h: https://pastebin.com/NN4Bdefj

Папка с проектом:
>пик

Компиляция с порта mingw:
>g++ main.cpp -LC:\\Users\\Vladislav\\Desktop\\driver\\interception.lib -o d

Результат компиляции:
>C:\Users\VLADIS~1\AppData\Local\Temp\cc8oTiHO.o:main.cpp:(.text+0xe): undefined reference to `interception_create_context'
>C:\Users\VLADIS~1\AppData\Local\Temp\cc8oTiHO.o:main.cpp:(.text+0x1e): undefined reference to `interception_destroy_context'
>collect2.exe: error: ld returned 1 exit status
Аноним 07/01/20 Втр 00:11:35 1566518623
.png (7Кб, 411x152)
411x152
>>1566512
Засунул .lib и .dll сюда:
>C:\Program Files\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\lib

Скомпилировал:
>g++ main.cpp -o d -linterception

Вроде, скомпилировалось все, но при попытке запуска d.exe появляется пик. Хз, либо я пишу хуйню (хотя, я и не писал особо ничего да и хз что писать, ибо документации никакой не могу найти), либо драйвер не может интерпретировать этот код. Хотя, когда качал драйвер, в папке samples все примеры работали. Правда, до сих пор мой капс сломан и я не могу его вернуть после запуска caps2esc.exe
Аноним 07/01/20 Втр 00:29:00 1566534624
>>1566518
Все, разобрался. Забыл нужный dll (x64) в папку с проектом засунуть, вместо x86.
Аноним 07/01/20 Втр 00:58:19 1566547625
Такой вопрос. Если мне нужно проверить указатель pX на то, что он указывает на какое-то значение, т.е. pX != nullptr, я обычно пишу так: if (!pX) {}
Сейчас наткнулся на то, что опытные программисты используют вместо этого if (!!pX). Прочитал, что это тоже самое, что и pX != nullptr. Т.е. вроде как и !pX и !!pX означают одно и то же. Зачем два восклицательных знака?
Аноним 07/01/20 Втр 01:03:02 1566550626
Аноним 07/01/20 Втр 01:05:28 1566556627
>>1566400
>>1566534
Написал что смог понять, возможно, там вообще бред, но я хз как можно вслепую писать, не имея базы знаний в этой области/опыта. Документации найти не смог.

Код с монологом о размышлениях: https://pastebin.com/yjs61ES4

Требуется помощь.
Аноним 07/01/20 Втр 02:57:18 1566605628
>>1566556
Бля, я слепой. Нашел документацию http://www.oblita.com/interception Но один хер, нахуя так прятать? В readme было сложно добавить ссылку? Завтра уже почитаю.
Аноним 07/01/20 Втр 05:14:38 1566621629
>>1566605
Что-то проще совсем не стало... Документация крайне нулевая, инфы мало. Вообще не понимаю как зациклить нажатие клавиши... Вот, как я понимаю, в цикле while мы блочим проверку условия строчкой
>device = interception_wait(context)
, пока по заданным фильтрам не придет нужное состояние
>INTERCEPTION_FILTER_KEY_DOWN | INTERCEPTION_FILTER_KEY_UP
Допустим, я нажимаю кнопку, срабатывает KEY_DOWN, функция interception_receive что-то там возвращает > 0, после чего оказываемся в теле цикла, где устанавливаем нужную клавишу и посылаем ее драйверу. Перед отправкой у клавиши всегда состояниеDOWN или UP, что по идее должно триггерить функцию interception_receive автоматически, зацикливая, но этого не происходит. А так же не понятно, что делают остальные фильтры
INTERCEPTION_FILTER_KEY_NONE,
INTERCEPTION_FILTER_KEY_ALL,
INTERCEPTION_FILTER_KEY_E0,
INTERCEPTION_FILTER_KEY_E1,
INTERCEPTION_FILTER_KEY_TERMSRV_SET_LED,
INTERCEPTION_FILTER_KEY_TERMSRV_SHADOW,
INTERCEPTION_FILTER_KEY_TERMSRV_VKPACKET

Но я и с ними пробовал, не работает. Работал с кодом из примера https://pastebin.com/WjjhERiS
Аноним 07/01/20 Втр 15:46:17 1566879630
По MSVS C++CLI вопрос.
Я правильно понимаю, что Application::StartupPath появляется генерируется уже на этапе выполнения и мне в строку подключения к бд соответственно надо задавать в обработчике Form1Load?
Программа находит бд и работает, а конструктор ругается на исключение, когда я пытаюсь исправить строку подключения oledb внутри метода InitializeComponent формы.
В книжке нет полного кода, но как я понял, он задает статический путь в свойствах компонента на форме, а в коде уже в обработчике меняет строку подключения.
Аноним 07/01/20 Втр 19:43:18 1567047631
изображение.png (25Кб, 787x749)
787x749
Вот хочу решить. Есть у меня интерфейс MySubsystem.
Пользователь наследуется от него (класс Fu)
При этом мне неизвестно количество и тип аргументов в конструкторе пользовательского класса Fu. То есть я не могу написать базовый констуктор в MySubsystem на все случаи жизни.


Теперь что я хочу. Я хочу запретить прямой вызов констуктора Fu f(10), потому что оно ведет к ошибкам.

Как сделать?

Чтобы можно было производный от MySubsystem класс вызывать только так Fu::Create(10), независимо от того как описан констуктор в производном классе

Да, можно в классе Fu - Fu(int ni) сделать приватным, но это плохое решение, потому что этот Fu будет писать другой человек, а значит он конечно же забудет об этом нюансе и сделает его публичным
Аноним 07/01/20 Втр 19:47:48 1567052632
>>1567047
p.s. констуктор Fu(int ni) нельзя сделать приватным - быстрофикс
Аноним 07/01/20 Втр 19:51:16 1567060633
Может есть сайты которые в "идеальных условиях" прогонят мою программу с нужными мне входными данными раз 100 и выдадут среднее время исполнения?
Аноним 07/01/20 Втр 19:52:15 1567062634
>>1567047
Попробуй добавить базовый класс с protected конструктором в MySubsystem
Аноним 07/01/20 Втр 20:05:12 1567073635
>>1567062
если написать так:
protected: MySubsystem() = default;
то это ничего не даст, потому что у Fu свой констуктор (Fu(int)).

И нельзя написать protected: MySubsystem(int) = default;
потому что MySubsystem не должен знать какие аргументы будут у пользовательского класса. Там может быть int/string или стопятсот классов - вся фишка тут именно в том что у Fu может быть любые аргументы
Аноним 07/01/20 Втр 20:09:09 1567076636
>>1567047
Добавь проверку в конструкторе, если один аргумент и он равен 10, то возвращай пустой класс.

мимо диванный
Аноним 07/01/20 Втр 20:28:17 1567092637
>>1567073
> И нельзя написать protected: MySubsystem(int) = default;
На самом деле ты можешь написать шаблонный конструктор, по аналогии с методом Create.

А вообще, подумай хорошенько, потому что выглядит как очередной велосипед. Что сделать-то хочешь?
Аноним 07/01/20 Втр 21:06:49 1567130638
>>1567092
>>На самом деле ты можешь написать шаблонный конструктор
нет. потому что повторю - MySubsystem не должен знать о количестве аргументов его наследников. И у каждого наследника своя логика в конструкторе

>>что выглядит как очередной велосипед
Велосипед чего?

>>Что сделать-то хочешь?
Вот больше кода https://ideone.com/dTXvd9


В чем фишка? В коде есть основные системы которые за что-то отвечают - менеджеры(Foo1, Foo2, Foo3). В этом примере эти системы создаются в одном экземпляре - похоже на синглтон (но в реальном проекте Subsystem подключается к Context, и этих контекстов может быть также много, так что ни синглтон, ни тем более глобальные переменные тут не подойдут)

Далее я хочу получать доступ к этим системам через GetSubsystem(). (GetSubsystem<Foo1>())
GetSubsystem() должен выдавать мне объект класса из текущего контекста.

Subsystem - это просто базовый интерфейс который задает базовое поведение системы и ее привязку к контексту. Чтобы не копипасить кучу кода инициализации.

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


Код уже работает, но есть архитектурные проблемы:
- пользователь этого кода может не читать документацию и вызвать коструктор вручную (а не через Create()) - это ошибка.
- (хотелось бы что-то сделать чтобы не писать вручную все эти Destroy() - но идей пока нет)


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




Аноним 07/01/20 Втр 21:18:12 1567139639
>>1567130
ну или так постараюсь объяснить:

- есть контексты (context). в любой момент времени активен только один контекст (но он может передать активность другому)
- к этим контекстам привязаны подсистемы (subsystem)
- подсистемы должны быть правильно инициализованы. Отложенная инициализация по вызову не пойдет - подсистемы должны инициализироваться при старте, а не при первом вызове (потому что там тяжелый код чтобы его во время основной работы вызывать)
- и да, подсистемы могут не проинициализоваться - но это не является ошибкой (и тем более не исключение) - то есть даже при неиницилизированной одной системе всё остальное должно работать (кроме доступа к этой системе)
- в любом месте кода должен быть доступ к нужной подсистеме активного контекста (GetSubsystem())... При этом я должен получить доступ только к самой подсистеме, а не всем системам что есть (это уже будет узел в лапше - не надо такого)
- должна быть возможность добавлять произвольное количество подсистем. Интерфейс подсистемы по всем законам ООП не должен знать ничего о том кем будут его наследники.


Аноним 07/01/20 Втр 21:20:51 1567144640
вообщем все это ради вот этой строки:
GetSubsystem<Foo1>().Bar();
Аноним 07/01/20 Втр 23:55:56 1567236641
>>1567130
Сложно запретить пользователю создавать объект, если он конструктор объявил public.
Можно попробовать передавать первым параметром в конструктор Subsystem какой-нибудь объект-пустышку, которую пользователь не может создать, но тогда ему нужно будет прописывать в конструктор какой-то левый параметр, иначе сам не сможешь создать.
Проще писать в доках, чтобы руками не создавали или делали конструктор protected
Аноним 08/01/20 Срд 00:58:12 1567264642
>>1567139
Используй динамический полиморфизм, зачем тебе весь этот шаблонный пердолинг?
Аноним 08/01/20 Срд 03:29:56 1567306643
Бомжур, бандиты

Кто тут объяснит, по какой такой причине методы, определённые внутри тела класса автоматически становятся inline?

Моя версия: чтобы не было их потенциальных переопределений в разных транслейт-юнитах. Насколько я прав по 10-ибальной шкале?
Аноним 08/01/20 Срд 06:43:57 1567334644
>>1566547
>pX != nullptr, я обычно пишу так: if (!pX) {}
Ты проверяешь как раз обратное
Аноним 08/01/20 Срд 09:49:11 1567359645
>>1567306
Тут есть нюанс: не обязательно эти методы будут встраиваться. Это будет зависеть от настроек компилятора. На этапе линковки уже может либо произойти встраивание, либо просто линкер выкинет все определения этого метода из единиц трансляции, оставив только одно.


Аноним 08/01/20 Срд 09:52:07 1567360646
>>1567359
Если обобщать то для членов-функций действуют те же правила, что и для свободных функций. Ты можешь в .h файле разместить определение свободной функции, пометив его inline. В зависимости от настроек компилятора будет сделано либо встраивание этой функции, либо на этапе линковки выкинутся все определения за исключением одного единственного.

Аноним 08/01/20 Срд 10:24:03 1567372647
>>1563540
"срезы" строк -
std::string имеет доступ по индексу и функцию-член substr
но вообще то std::string - контейнер, предполагается работа с ним через итераторы и алгоритмы стандартной библиотеки шаблонов

Аноним 08/01/20 Срд 10:50:50 1567376648
>>1567372
>число в строку и обратно
std::stringstream и to_string ?
Аноним 08/01/20 Срд 14:18:32 1567468649
Аноним 08/01/20 Срд 17:56:07 1567621650
Аноны, как будем добиваться больших зарплат для байтоёбства? Почему шарписты получают в среднем больше?
Аноним 08/01/20 Срд 18:21:31 1567644651
>>1567621
учи английский, только так
Аноним 08/01/20 Срд 18:24:53 1567648652
>>1567621
> как будем добиваться больших зарплат
Очевидно, что перекатом та шарп.
Аноним 08/01/20 Срд 19:06:12 1567698653
Где бы найти стажировку второкуру в новосибирске..
Аноним 08/01/20 Срд 19:08:21 1567699654
>>1567698
У вас же там полно в академгородке
Аноним 08/01/20 Срд 19:11:22 1567704655
>>1567699
До него 2 часа езды из города.
Аноним 08/01/20 Срд 22:14:55 1567789656
>>1567621
Надо везде писать какое кресты сложное говно и продвигать для обучения в вузах питон. Меньше крестовиков - больше спрос - больше зп.
Аноним 08/01/20 Срд 22:34:49 1567806657
>>1567789
> Надо везде писать какое кресты сложное говно и продвигать для обучения в вузах питон. Меньше крестовиков - больше спрос - больше зп.
Больше вкатывальщиков в говноязыки - меньше ЗП в говноязыках - больше специалистов с опытом перекатываются в плюсы - меньше ЗП у существующих специалистов
Аноним 09/01/20 Чтв 00:44:36 1567860658
Сложно ли написать мультиплеер для старой стратегии?
Аноним 09/01/20 Чтв 00:52:42 1567868659
Аноним 09/01/20 Чтв 00:54:50 1567870660
>>1567868
А так хотелось. Спасибо
Аноним 09/01/20 Чтв 00:55:40 1567871661
>>1567860
Да попробуй чо сложного то, заодно какой-нибудь boost.asio покачаешь
Аноним 09/01/20 Чтв 00:57:38 1567872662
>>1567871
Я просто в инете почти не нашел инфы по этому поводу. Меня главным образом волнует как получать информацию о модельках и как их отрисовывать
Аноним 09/01/20 Чтв 04:28:04 1567938663
>>1566372
Разность между указателями это не разность "адресов".
Аноним 09/01/20 Чтв 04:33:03 1567941664
>>1566372
Наверное тебе в ПТУ сказали, что сложение указателя с числом это прибавление к адресу числа*(размер указываемого типа), поэтому ты думаешь что разность между указателями должна быть определена как разность между адресами.
Но в ПТУ тебе напиздели про то, что такое сложение указателя с числом.
Аноним 09/01/20 Чтв 05:04:22 1567945665
Аноним 09/01/20 Чтв 05:17:24 1567947666
Аноним 09/01/20 Чтв 07:20:44 1567952667
Аноним 09/01/20 Чтв 08:38:59 1567968668
>>1567952
Он сработает если в игре есть игра по локальной сети. В моем случае в игре мультмплеера нет ни в каком виде.
Аноним 09/01/20 Чтв 09:52:16 1567983669
Лол, думал щас libpng прикручу быстренько, чтобы картиночку сохранить, а у там них обработка ошибок при помощи setjmp блядь! Наркоманы ебучие. Так и представил, как я щас посреди всей хипстоты с эксепшенами и смартпоинтерами ебашу setjmp.
Аноним 09/01/20 Чтв 09:53:52 1567984670
>>1567860
Сложно и трудоёмко. Проблема в том, что надо как-то портировать логику сингловой игры на сервак. Обычно юзают один из трех подходов:
1. тупая трансляция, либо вообще p2p - клиенты договариваются между собой, вся логика работает на них самих. Открывает путь читерству, но работы намного меньше.
2. (частично) эмулировать логику клиентов на серваке - трудоемко, надо много реверсить и отлаживать. Будет много багов и несоответствий.
3. Гонять несколько клиентов на серваке/серваках, по одному на одного игрока в матче. Работы меньше, эмулировать ничего не надо, читерить сложней, но мощностей надо дохуя.

Общий принцип такой
1. реверсишь игру, находишь что надо хукать и дёргать, чтоб ей управлять
2. пишешь клиентскую часть, которая берет под полный контроль процесс игры и коммуницирует с сервером
3. пишешь серверную часть, одним из трех подходов выше.
Аноним 09/01/20 Чтв 09:58:59 1567986671
>>1567984
еще p2p это привет рассинхроны. Нирикамендую в общем. В целом и 3 вариант от них не спасет.
Аноним 09/01/20 Чтв 10:17:31 1567998672
>>1567968
Можешь считать, что это невозможно. Настолько, что будет проще ремейк игры написать, мне кажется, если это старая стратегия.
Аноним 09/01/20 Чтв 10:48:26 1568001673
>>1567983
Двачую блядь. Ещё если png битый, boost Gil до 1.72 крашит программу нахуй
Аноним 09/01/20 Чтв 11:19:44 1568010674
>>1567984
Спасибо за ответ. Мне кажется напиание сервера не самая сложная задача. Для меня сейчас выглядит непонятным как, например отрисовать человека. Вот я получил от клиента сообщение о том, что он хочет заспавнить на таком месте такого юнита. Как мне это сделать? Потом же эти юниты должны взаимодействовать с моими. По сути клиент берет на себя задачи, которые обычно делает бот. Похоже на модоелсто. Где взять инфу по этому поводу? Хотелось бы на примере увидеть работу
Аноним 09/01/20 Чтв 11:34:41 1568012675
>>1568010
>Мне кажется напиание сервера не самая сложная задача.
Как раз написание сервера и реверсинг игры это самая трудоёмкая задача. Хукать игру много ума не надо.
>Вот я получил от клиента сообщение о том, что он хочет заспавнить на таком месте такого юнита. Как мне это сделать?
Надо пользоваться логикой самой игры и дёргать её когда тебе надо. Отреверсить игру (читэнжином, отладчиком, дизассемблером и т.п., туториалов миллион, в основном на читерских сайтах, как правило динамический анализ и проход по структурам будет быстрей дизассемблинга), и найти внутри неё стабильный адрес (или сигнатуру) функции спавна юнита. Это делается сложнее чем кажется, ибо надо 100% убедиться что это именно функция спавна юнита, это может быть совсем не очевидно. Затем внедрить код клиента внутрь процесса игры (техник миллион), и вызывать эту функцию когда тебе надо. Это уже дело техники. На самом деле всё зависит от устройства конкретной игры, там может быть не функция спавна, а надо произвести кучу действий, или еще что-то сделать. Также можешь зайти в asm-тред.
Аноним 09/01/20 Чтв 11:37:23 1568013676
>>1568010
В дополнение к написанному
>Хотелось бы на примере увидеть работу
Посмотри код MTA:SA, например.
Аноним 09/01/20 Чтв 11:43:36 1568015677
Аноним 09/01/20 Чтв 19:20:12 1568464678
Наконец закончил делать сапер. На все про все ушло меньше 300 строк. Хотя вышел лютый говнокод, вся программа разместилась в классе mainwindow. Буду теперь приводить к удобоваримому виду.
по началу хотел сделать, чтобы мины генерировались так, чтобы не было возможности зайти в тупик, но это слишком сложно
Аноним 09/01/20 Чтв 21:45:50 1568635679
Анон, у меня к тебе сейчас три очень серьёзных вопроса:
Когда я пишу
cout << "huj";
, компилятор автоматически создаёт массив, в котором последовательно содержатся коды символов h, u и j? Или нет?
Когда я пишут cout << this << "huj";
, компилятор выводит адрес самого первого символа строки?
Адрес чего выводится, когда я пишу
cout << this;
?
Аноним 09/01/20 Чтв 21:56:35 1568653680
>>1568635
Читать любую книгу для ньюфагов, срочно. This он выводит в cout блять,
Аноним 09/01/20 Чтв 22:00:09 1568657681
>>1568653
Ты можешь нормально ответить, а не как пидор?
Аноним 09/01/20 Чтв 22:03:37 1568663682
>>1568657
а что тебе ответить, когда ты вообще полную абсолютную хуйню несешь? Тебе надо не вопросы задавать, а книги читать.
Аноним 09/01/20 Чтв 22:05:10 1568667683
изображение.png (23Кб, 649x558)
649x558
>>1568663
Сам и читай, а потом расскажешь, как там случай на картинке объясняется, у тебя же дохуя свободного времени. А я чисто поинтересоваться зашёл, а не книги твои дурацкие читать.
Аноним 09/01/20 Чтв 22:06:03 1568669684
изображение.png (26Кб, 640x645)
640x645
Аноним 09/01/20 Чтв 22:06:31 1568670685
>>1568635
Фигня в кавычках - строковый литерал. Это область памяти только для чтения, считай, что это тип const char*.
>cout << this << "huj";
Оно выведет адрес объекта, в методе которого написано такое (в виде 0x1234) и после него допишет huj.
>cout << this;
>адрес объекта, в методе которого написано такое

Совет про книгу хороший. Проблема не в том, что ты не понимаешь конкретно этого, а в отсутствии общего понимания что тут происходит - по крайне мере так оно выглядит судя по вопросу. С сотворением общей картины поможет только книга, а ответы на вырванные из контекста вопросы тут лишь навредят.
Аноним 09/01/20 Чтв 22:07:20 1568674686
>>1568635
Начни с Кернигана и Ритчи (или C Programming: A modern approach, говорят годно)
Аноним 09/01/20 Чтв 22:10:49 1568678687
>>1568674
Ты не понял, мне вообще эти твои книжки не нужны. Когда каникулы закончатся и пройдёт сессия, я просто спрошу у препода, который мне всё это разжуёт и в рот положит. Если, конечно, мне тут то же самое не сделают раньше того времени. Вопрос этот для меня не столь критичный, так что отвечать или нет — твоя воля.
Аноним 09/01/20 Чтв 22:24:34 1568698688
>>1568678
> в рот положит
В это скорее.
Аноним 09/01/20 Чтв 22:26:56 1568703689
>>1568678
>Анон, у меня к тебе сейчас три очень серьёзных вопроса:
>Вопрос этот для меня не столь критичный
Аноним 09/01/20 Чтв 22:35:59 1568715690
>>1568703
Мне это просто внезапно стало интересно, но незнание всего этого мне прямо сейчас никак не помешает. Хотя хотелось бы, чтобы анон просто по-человечески по каждому пункту ответил хотя бы парой слов по теме, а не ссылался на какие-то там книги. Это же тред для обсуждения языка, а не тред ссылания на литературу по каждому вопросу. Ну неужели там так долго надо объяснять?
Аноним 09/01/20 Чтв 22:57:06 1568745691
>>1568464
>слишком сложно
А хули ты хотел, NP-полная задача!
Аноним 10/01/20 Птн 02:18:35 1568870692
>>1568715
Да, блядь, это фундаментальные особенности языка.
Если ты не хочешь это понимать и читать книгу - то съёбывай из своей шараги в поварское училище и пеки кексы.
Хотя там тоже желательно книги с рецептами читать.
Аноним 10/01/20 Птн 02:38:39 1568878693
>>1568870
У меня душа лежит к выпеканию аж пиздец, только после нового года дважды выпекал охуенные овсяные печеньки, которые похвалила вся моя родня и какой-то знакомый моей мамки. Но в наше городское поварское училище был конкурс из дохуя двоечников на одно место, так что чтобы дома как сыч не сидеть и не сойти с ума от одиночества, пришлось поступить в универ учиться печь говнокод. Ты прям пиздец угадал мои основные интересы.
Аноним 10/01/20 Птн 03:20:23 1568886694
>>1568870
Зато смотри какой я умненький пекарь оказался, всего за один вечер вникнув в суть только лишь односвязных списков, забил на чтение кода двусвязного списка тут
https://pro-prof.com/forums/topic/реализация-связных-списков-на-с
и запилил свой собственный двусвязный список. И это работает!
https://ideone.com/xGYgo4

Оценишь? Мне не помешает мнение более опытного проградриста.
Аноним 10/01/20 Птн 03:34:05 1568890695
>>1568886
И да, конечно же я попросил сравнить мой код с кодом с сайта, чтобы увидеть здесь в мой адрес что-то вроде "малаца, хорошо сделал" и потешить своё ЧСВ.
Аноним 10/01/20 Птн 07:48:22 1568926696
>>1568890
Теперь поменяй int на какой-нибудь char[8192], сделай функцию, которая внутри себя создаёт список из миллиона-двух элементов и вызови ее несколько раз.
А потом расскажешь, что нагуглил, чтобы исправить.
Ебать как я люблю названия переменных.
Аноним 10/01/20 Птн 08:12:38 1568930697
>>1568926
Не, я не настолько ебанутый. Не.
Аноним 10/01/20 Птн 11:52:52 1568987698
>>1568926
Да ладно нормальные названия. Даже с префиксами по кодстайлу, кек.
Нормальная лаба, я бы сказал. Ни к чему не приебаться, кроме того что память течет.
нахуй ты в ideone джаву выбрал-то? Main.java:1: error: illegal character: '#' #include <iostream>
Аноним 10/01/20 Птн 12:25:01 1568999699
>>1561322
Сигнатура одна - передавать базовый Event. Потом двойным диспачингом находишь правильный обработчик своего эвента.
Аноним 10/01/20 Птн 13:36:24 1569022700
>>1567983
>libpng
а какой-нибудь libpng с++ wrapper не гуглил?
может есть

Аноним 10/01/20 Птн 14:05:21 1569035701
Почему у меня qt все время при сборке проекта ругается что moc был изменен? Забелся уже
Аноним 10/01/20 Птн 14:27:07 1569052702
Аноним 10/01/20 Птн 15:38:53 1569094703
Сап, где можно потренироваться с STL? Ну типо задачи под него заточенные. А то так получается что могу реализовать свой стек/очередь, но про встроенные вечно забываю.
Аноним 10/01/20 Птн 16:31:03 1569111704
>>1569094
Самое простое: в тот момент, когда тебе нужно что-то сделать хитрое, подумай: "а нет ли этого в STL?" и иди курить cppreference.com или cplusplus.com.
Скорее всего ты найдешь там ответ на свой вопрос.

А так - можешь cookbook от Яна Галовица прочесть. Там не всё разобрано, конечно же, но примеры полезные есть.
Например, что мне доставило, перенаправление cout в файл в нужной области видимости.
Аноним 10/01/20 Птн 16:52:55 1569118705
Есть ещё книга пиздатая, Professional C++ 4th edition
Аноним 11/01/20 Суб 01:58:50 1569387706
>>1568926
А как сделать так, чтобы не текло?
Аноним 11/01/20 Суб 11:37:42 1569523707
>>1569052
хуяси. Я думал win32 изкоробки только bmp умеет.
Аноним 11/01/20 Суб 12:53:22 1569558708
>>1569387
Почитай за деструкторы, там найдешь объяснение, почему может течь память и как это исправить.
Аноним 11/01/20 Суб 16:10:30 1569909709
Подскажите, чому я не вижу проперти checked у QPushButton-а? Не могу на него сослаться, ругается, что нет такого свойства. Хотя оно должно быть, т.к. QPushButton наследует у QAbstractButton-а.
Аноним 11/01/20 Суб 16:16:50 1569925710
>>1569909
Как ты на него ссылаешься?
Попробуй QToolButton
Аноним 11/01/20 Суб 16:26:19 1569942711
>>1569925
Хочу сделать массив с состояниями кнопок.
Пишу что то типа
buttonsState->append(&button->checked)
а он мне говорит, что у button нет свойства checked.
Аноним 11/01/20 Суб 17:19:12 1570029712
>>1569942
Ты хочешь хранить у себя указатели/ссылки на свойство, чтобы потом его можно было читать/менять?
Они же для того и придумывались, чтобы ты этого сделать не мог.
Если уж так хочется, храни коллбеки на метод isChecked...
Аноним 11/01/20 Суб 17:20:13 1570030713
>>1570029
То есть свойства вообще трогать нельзя? Ок.
Аноним 11/01/20 Суб 17:22:42 1570036714
>>1570030
Можно конечно, но не так, как ты это хочешь делать.
Есть методы is и set, вот их и дёргай, иначе всё сломается к хуям
Аноним 11/01/20 Суб 17:41:27 1570053715
>>1570036
Спасибо за инфу. Я нашел способ получше. Оказывается в Qt есть специальный класс QButtonsGroup, сунул кнопки туда, все работает.
Аноним 12/01/20 Вск 13:10:30 1570694716
недавно понял что каким-то образом Qt и др идэ как-то понимают как собрать проект из нескольких cpp файлов, и как-то так у них получается не нарушать поля видимости.
Аноним 12/01/20 Вск 13:11:38 1570697717
Аноним 12/01/20 Вск 13:23:22 1570713718
>>1570694
Что по-твоему сложного в вызове компилятора для каждого из файлов?
> как-то так у них получается не нарушать поля видимости.
За этим должен следить ты, а не компилятор
Аноним 12/01/20 Вск 17:19:43 1570902719
Как делать тесты в Visual Studio 2017? Кое-как разобрался с Google Test, но обозреватель тестов даже не видит мой тест.
Аноним 12/01/20 Вск 18:29:48 1570940720
>>1560375
Это всего навсего ваше личное мнение.
Аноним 12/01/20 Вск 19:38:01 1570977721
Анон, мне надо, чтобы кто-то проверил мою лабу на предмет утечки/неутечки памяти.
https://ideone.com/FoO2OY
Проверишь? Это линейный двусвязный список.
Аноним 12/01/20 Вск 20:12:04 1571009722
>>1570977
>>>>>>>>>>>>>>>>>>>>>>Лабы идут нахуй
Аноним 12/01/20 Вск 20:12:50 1571010723
>>1571009
Ты скозал? Если ты скозал, то ты идёшь нахуй.
Аноним 12/01/20 Вск 20:14:03 1571013724
image.png (16Кб, 730x277)
730x277
>>1571010
Девочки, читаем шапочку <3<3<3<3
Аноним 12/01/20 Вск 20:14:55 1571014725
>>1570977
Таки при завершении времени жизни самого списка его узлы не удаляются. Надо в деструктор запилить цикл для очистки.

~spisok()
{
    while (u_golova)
    {
        uzel* u = u_golova;
        u_golova = u_golova->u_sled;
        delete u;
    }
}
Аноним 12/01/20 Вск 20:15:18 1571016726
>>1570977
Ух еб твою мать.
Ладно, уже лучше, но потенциально утечки все равно есть.
Аноним 12/01/20 Вск 20:16:20 1571019727
>>1571014
Ну и нахуя ты ему не просто спалил проблему, да ещё и код написал?
Аноним 12/01/20 Вск 20:17:44 1571020728
>>1571019
Потому что это тред про C++ и вопросы/ответы по нему, а ты тут только про хуи пишешь.
Аноним 12/01/20 Вск 20:18:17 1571021729
Аноним 12/01/20 Вск 20:21:49 1571025730
>>1571014
Я читал где-то, что если деструктор пустой, то компилятор сам разберётся, что там удалять/освобождать. Это не так?
Аноним 12/01/20 Вск 20:45:09 1571042731
>>1571020
Ты о чем вообще? Или таблетки опять забыл выпить?

>>1571021
Тогда сорян, с деструктором верно.
>>1571025
Детектор нужен, простыми словами, если где-то есть динамически выделенная память, иначе все ок.
Или если необходима какая-то особенная логика, чекни std::shared_ptr.
Аноним 12/01/20 Вск 22:19:41 1571119732
Есть ли разница между
Complex operator + (Complex const &obj);
и
Complex operator + (const Complex &obj);?
Если есть, то какая
Аноним 12/01/20 Вск 22:29:20 1571132733
1578857329955.jpg (746Кб, 1079x700)
1079x700
>>1571119
Йосуттис поясняет.
Аноним 12/01/20 Вск 22:36:42 1571146734
>>1571042
Что служит детектором?
другой студень
Аноним 12/01/20 Вск 22:38:29 1571149735
Аноним 12/01/20 Вск 22:43:18 1571159736
>>1571146
Детектор моего скудоумия, так как я и не понял анона, который на меня наехал, и набрать нужное слово не смог.

Деструктор, конечно же.

>>1571020
>а ты тут только про хуи пишешь.
Так сказано же
>Лабы идут нахуй
Потому я тебе хочу не сразу все рассказать и помочь, а направить на нужную мысль.
Аноним 12/01/20 Вск 22:57:24 1571175737
>>1571159
Т.е. деструктор это просто функция по сути, реализовывать тебе ее самому чтобы очистить память, если сам выделял, так?
Аноним 12/01/20 Вск 23:31:08 1571203738
>>1571175
Да, это функция, которая будет вызываться при выходе из области видимости(можно и руками, но я не знаю, когда это в самом деле может потребоваться).
То есть для
class C
{
C() = default;
~C()
{
std::cout << "\ndtor";
}
};
int main()
{
{
C c;
//Тут будет вызван деструктор
}
std::cout << "\nend";
return 0;
}
Вывод будет
dtor
end
Хотя деструктор ты руками не звал.

И да, если ты для переменной внутри класса выделил память через new - то ее нужно освободить через delete.
Аноним 12/01/20 Вск 23:44:01 1571219739
>>1571203
Все, я понял, спасибо. Так-то я читал о деструкторах, но не помню, чтобы именно эту особенность упоминали, а она ведь ключевая.
Аноним 12/01/20 Вск 23:55:53 1571242740
>>1571219
На cppquiz много вопросов, каким-либо образом связанных с деструкторами.
Да и вообще полезная штука, мне помогло в какой-то момент.
Аноним 13/01/20 Пнд 00:04:15 1571251741
>>1571242
Мне тоже нравится этот сайт, но мои знания пока хромают, если говорить откровенно.
Аноним 13/01/20 Пнд 00:38:47 1571296742
>>1552778 (OP)
Есть одна йоба, с большим количеством пф алгоритмов и им подобных. И в определенных ситуациях она подлагивает пк, а точнее инпут - мышь подвисает, что сразу чувствуется. Как это работает? Почему? Общая нагрузка на цпу низкая, сторонние процессы вроде браузера, звука не виснут, лагает именно мышь.
Аноним 13/01/20 Пнд 00:51:24 1571304743
>>1571251
А это как с билетами ГИБДД.
Сначала отвечаешь неправильно на 80%, читаешь верные ответы и через некоторое время уже проходишь на 100% все тесты.
Аноним 13/01/20 Пнд 01:25:36 1571321744
В чем смысл итераторов? Зачем методы векторов принимают в качестве аргумента итераторы, а не номера элементов?
Аноним 13/01/20 Пнд 02:46:51 1571332745
Научите пользоваться перегрузками.
https://ideone.com/0lsJfF
Вот есть условный класс, я описал там какие-то конструкторы и операторы присваивания и хочу перегрузить операцию сложения.
Но вместо того, чтобы работать эквивалентно функции add, перегрузка создаёт временный A по адресу +28 (и соответственно память выделяется под 4 объекта вместо трёх) и вызывает оператор присваивания.
Рука тянется написать, A& operator+(...), но я не могу написать в теле функции A temp, а потом прописать return temp для такого случая. И я не могу писать this->arr=... ; return *this; - потому что такое изменит одно из слагаемых.
Работает как функция add, только если написать сразу A a=b+c, но такое не подходит, если у меня уже есть три объекта с выделенной памятью.

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


>>1571321
Чтобы был одинаковый интерфейс для векторов, списков и деревьев, которые не умеют в обход через номера элементов, ежжи?
Аноним 13/01/20 Пнд 03:17:36 1571338746
Чем инкапсуляция не сокрытие? Ну, хотя бы отчасти. Это мемас какой-то?
Ньюфаг
Аноним 13/01/20 Пнд 03:18:49 1571339747
>>1571332
Тащемта operator+ надо делать через временный объект и operator+=, внутри которого ты будешь изменять объект класса, от которого вызываешь метод.
А operator+ и должен возвращать временный объект.

Об этом есть глава целая в "Объектно-ориентированное программирование на C++".
Аноним 13/01/20 Пнд 03:33:20 1571340748
Аноним 13/01/20 Пнд 03:35:09 1571342749
>>1571296
А с ОЗУ что? Обычно если памяти не хватает, мышка начинает люто лагать.
Аноним 13/01/20 Пнд 03:36:52 1571344750
>>1571332
> move семантика без noexcept
Пиздец.
Аноним 13/01/20 Пнд 03:42:58 1571346751
Аноним 13/01/20 Пнд 03:57:27 1571351752
>>1571339
>и должен возвращать временный объект
Зачем такое нужно тогда, если оно просто ради красивого внешнего вида создаёт временные объекты, когда мне нужно всего лишь a=b+c поменять на add(a,b,c).
Я более-менее понимаю почему так сделано, но это тупо что ли как-то, хотелось бы немного другого. Угу, можно написать a=b;a+=c; - в таком случае временный объект не создаётся, но зато вызывается оператор присваивания и это выглядит намного паршивее, чем a=b+c и даже чем add(a,b,c).

И ещё при a=b;a+=с; Ячейки по два раза перезаписываются - add(a,b,c) выполняется за 103.2, a=b+c с четвёртым объектом за 164.0, а a=b;a+=c; за 153.9, лишь немного лучше временного объекта. Числа плавают лишь на +-5 при множественных проходах. Красивая запись явно не стоит увеличения времени выполнения на 50% с -O3 на первом попавшемся примере.

Угу, прочитаю твою главу, но пока что пролистал и нужного мне синтаксического сахара там не обнаружено.


>>1571344
Зачем там noexcept, если я не использую нигде исключения, и не использую стандартную библиотеку или ещё что-то?
https://ideone.com/71jojy - так лучше, теперь доволен? Я даже мейну поставил noexcept.

Пиздец это исключения и то что мне ко всем функциям надо noexcept прописывать, хотя должно было быть наоборот, то что к функциям с исключением нужно прописывать except, а все остальные по умолчанию считаются noexcept. Больные ублюдки.
Аноним 13/01/20 Пнд 06:52:04 1571382753
Зачем нужны геттеры и сеттеры, если переменные в поле видимости всего класса можно сделать приватными, а в публичной части просто вызывать их из функций? Тогда ведь в маин через точку будут видны только функции в паблике.
Аноним 13/01/20 Пнд 06:53:05 1571383754
Ну, то есть не вызывать переменные, а манипулировать ими в публичных функциях.
Аноним 13/01/20 Пнд 06:56:45 1571384755
изображение.png (53Кб, 325x342)
325x342
Вот здесь, например, по идее вообще можно без GetName обойтись, строка name и так будет видна для SetName.
Аноним 13/01/20 Пнд 08:24:55 1571395756
>>1571351
У тебя оператор присваивания вызывается и в случае a = b + c, и в случае a = b; a+=c.
>Зачем временный объект
А как ты себе представляешь колбасу из a = b + c + d + e + f?
Ты уверен, что во всех абсолютно случаях разница во времени будет такая же? Это у тебя такой класс, в случае другого класса значения могут совсем по-другому отличаться.
Ты в дебаге проверяешь время работы? Если да - то молодец, ага.

>noexcept
Затем. Компилятор для реализации перемещения должен быть уверен, что конструктор не выкинет исключение. А если ты не указываешь это явно, проверять он не обязан.
>Наоборот
Ты оптимистичен, компилятор и комитет - пессимистичен. Тебя потом набутылят за ущерб компании в случае багованного кода, а им спасибо скажут: "ух как предусмотрели, мы это ещё на стадии компила/тестирования отловили!"
Да и слово except в C++20 вроде как deprecated будет.
Аноним 13/01/20 Пнд 08:51:02 1571403757
>>1571383
Ну если тебе не надо читать переменные-члены класса - то пожалуйста, не делай для них геттеры.
Аноним 13/01/20 Пнд 10:23:03 1571456758
>>1571395
>как ты себе представляешь колбасу
И то верно. Сказать как особый случай, особую оптимизацию для случая из двух слагаемых язык не поворачивается. Ну и ладно, не очень то и хотелось.
Написал же, что с -O3.

Лучше бы слово try deprecated стало - бесполезная концепция и вроде как не только я её избегаю.
Аноним 13/01/20 Пнд 12:49:26 1571561759
>>1571456
Да, ты прав. Я проебал момент, что либы не используются, тогда -O3 в дебаге будут те же, что в релизе, сорян.

>try
Ну хуй знает, кто-то активно обрабатывает так исключения, кто-то нет.
Аноним 13/01/20 Пнд 13:04:14 1571569760
>>1571382
Но ведь ты только что и описал геттер.
>>1571384
Тебе где-то в программе например нужно просто получить значение из поля класса, ты же не каждый раз его задаешь.
Аноним 13/01/20 Пнд 15:34:21 1571756761
>>1571456
>я её избегаю
Ну и напрасно. Если эксепшенами не пользоваться, то можно сразу половину языка депрекейтить. C++ без них вообще слабо раскрывается.
Аноним 13/01/20 Пнд 17:03:58 1571841762
>>1571321
В том, что это гораздо более мощная концепция, чем какой то номер элемента. На какой номер элемента по твоему указывает итератор создаваемый back_inserter ом?
Аноним 13/01/20 Пнд 17:08:38 1571846763
>>1571841
this.

>>1571321
Посмотри вообще на шаблонный класс итератора, на type_traits. В отличие от указателя ты куда больше инфы из итератора можешь вытянуть.
Аноним 13/01/20 Пнд 19:20:54 1571930764
>>1571841
back_inserter наряду с хуевой тучей других inserter-ов - просто костыли для обхода соглашения, что алгоритмы из стандартной либы не могут изменять размер контейнера. Соглашения, которое сделал сам комитет, а потом такой "бля а как нормально коллекции тогда юзать? На нах вам инсертеры", и это все при том, что в ассоциативных контейнерах число элементов уже может изменяться.
Весело пиздец, хочу чтобы стратусрус стал моим дилером
Аноним 13/01/20 Пнд 19:53:07 1571959765
>>1571930
У тебя очень поверхностное мышление. Итераторы вообще не обязаны быть связаны с контейнерами.
Аноним 13/01/20 Пнд 20:32:52 1572014766
>>1571959
Зато я в мамашу твою глубоко проник))))) Приводи примеры, аут, а не губошлепь понапрасну
Аноним 13/01/20 Пнд 21:06:17 1572050767
>>1572014
Вот теперь точно не буду, папа.
Аноним 13/01/20 Пнд 22:03:08 1572117768
0207a0ecdda7dc8[...].jpg (185Кб, 786x305)
786x305
>>1568667
>>1568669
>spisok
>golova
>etot
>uzel
>stek
>...
>А я чисто поинтересоваться зашёл, а не книги твои дурацкие читать.
Тред 1С-параши дальше по коридору, уебок.
Аноним 13/01/20 Пнд 22:05:11 1572120769
>>1570053
Расскажи подробнее.
Аноним 13/01/20 Пнд 23:48:25 1572221770
>>1572195
Так PascalABC.NET вроде как активно развивается, не?
Аноним 13/01/20 Пнд 23:49:27 1572224771
Аноним 13/01/20 Пнд 23:50:28 1572226772
Аноним 14/01/20 Втр 03:41:36 1572314773
Умоляю. Как оптимально получить все сочетания? Время 4 утра нахуй. У меня tl на задаче. Нагуглить не могу решение. Дайте где почитать прошу
Аноним 14/01/20 Втр 04:00:14 1572316774
Аноним 14/01/20 Втр 13:42:00 1572507775
>>1571959
>Итераторы вообще не обязаны быть связаны с контейнерами.
итераторы ввода-вывода
итераторы регулярок и итераторы токенов регуляров
еще что-то?

Аноним 14/01/20 Втр 13:49:44 1572518776
Как в дереве найти путь от одной вершины к другой?
Аноним 14/01/20 Втр 13:52:17 1572521777
>>1572507
>итераторы ввода-вывода
вернее итераторы потока и итераторы буфера потока
поправка

Аноним 14/01/20 Втр 13:59:59 1572526778
>>1572518
Короче придумал. Не надо уже
Аноним 14/01/20 Втр 14:02:32 1572532779
У меня есть переменная int a = new int* [];
Я хочу передать в функцию не весь массив, а только указатель на него. В аргументе я должен указать тот же тип, что и a, ведь a не сам массив, а только указатель на него и в любом случае передается указатель. Верно?
Аноним 14/01/20 Втр 14:08:45 1572539780
>>1572532
Не будь быдлом, используй std::array или gsl::span
Аноним 14/01/20 Втр 14:14:47 1572547781
>>1572539
array вроде нельзя динамически менять. А второе я воббще хуй знает че это
Аноним 14/01/20 Втр 14:34:37 1572566782
изображение.png (115Кб, 1366x768)
1366x768
Я его не понимаю
Аноним 14/01/20 Втр 14:54:46 1572573783
изображение.png (114Кб, 1366x768)
1366x768
Думал звездочку не там поставил, но нет
Аноним 14/01/20 Втр 14:57:25 1572574784
>>1572573
Почему ты пишешь way->, если way не указатель?
И почему твоя среда не исправляет это? У меня сама (по нажатию какой-то клавиши) исправляет точки на -> и наоборот, если я опечатался.
Аноним 14/01/20 Втр 14:58:51 1572576785
>>1572574
Но в первом же случае way указатель. Ошибки те же
Аноним 14/01/20 Втр 14:58:52 1572577786
image.png (9Кб, 973x206)
973x206
Вот. И Ctrl+Space исправляют это.
Аноним 14/01/20 Втр 15:00:37 1572579787
>>1572577
Почему это не работает в первом случае, когда way указатель?
Аноним 14/01/20 Втр 15:05:01 1572583788
image.png (16Кб, 579x418)
579x418
image.png (10Кб, 472x410)
472x410
>>1572579
Я не знаю, наверное потому что у тебя мусор вместо ide.
У меня работают оба варианта, если указать корректную ./-> и корректный тип в push_back.
Аноним 14/01/20 Втр 15:07:50 1572587789
Аноним 14/01/20 Втр 15:11:33 1572589790
>>1572587
Но это не ответ же.
Код бы весь показал, вдруг у тебя на первой строчке что-то не то написано. Он у тебя жалуется на ошибку в пятой строчке, но это же дичь какая-то? Если бы там не было using namespace, то он всё-равно должен был бы другую ошибку указать. И даже если бы ты переопределил тип vector - даже тогда он жалуется на то что это не шаблонный тип, а не на < и >.
Аноним 14/01/20 Втр 15:21:55 1572594791
Аноним 14/01/20 Втр 15:24:46 1572598792
>>1572594
Бля. Перенес using namespace std вверх и все ок.одна ошиьбка понятная осталась
Аноним 14/01/20 Втр 15:29:06 1572600793
>>1572598
Угу, ну ты и тип, лол. До переноса оно писало: no template named 'vector'
После переноса остаётся только предупреждение, что FindInTree не возвращает return.
Аноним 14/01/20 Втр 15:50:13 1572611794
>>1572600
Еще вопрос. Не могу передать graph в функцию. Говорит чтение из недоступной памяти. Заранее большое спасибо
Аноним 14/01/20 Втр 15:52:55 1572613795
>>1572611
Прости. Поспешил. Не в этом проблема
Аноним 14/01/20 Втр 15:54:06 1572614796
>>1572613
Сука какой же я еблан. Забыл выделить память.
Аноним 14/01/20 Втр 16:43:44 1572657797
Аноны, как вкатиться? Хочу выучить основы и поюзать на практике. Что можно начать делать чтобы постепенно поднять лвл до джуна, например? Стоит ли пилить какой-то проект или лучше задрочить книжки и решать тамошние задачки?
Аноним 14/01/20 Втр 17:10:35 1572675798
У меня рекурсивная функция поиска пути в дереве. В какой то момент путь найден. Как завершить все рекурсии что бы они не выполнялись?
Аноним 14/01/20 Втр 17:13:49 1572679799
>>1572547
А массив твой типа можно? Используй вектор тогда.
span - это обёртка над указателем, почитай cpp core guidelines
Аноним 14/01/20 Втр 17:24:39 1572689800
>>1572679
> А массив твой типа можно?
Почему нет?
> Используй вектор тогда.
Использую почти всегда, но тут мне кажетсч будет быстрее массив, тк очень много обращений к его элементам
> span - это обёртка над указателем, почитай cpp core guidelines
Прочту
Аноним 14/01/20 Втр 17:34:51 1572700801
>>1572689
>будет быстрее массив, тк очень много обращений к его элементам
А есть разница какая-то с вектором? В обоих случаях ты прибавляешь смещение и обращаешься по указателю.
У тебя там int✲✲ ? Лучшее что можно сделать, это заменить его на int✲, и обращаться как a[y✲dx+x], чтобы было только одно разыменование (и чтобы все данные лежали в одном месте и хорошо умещались в кеш), но это работает только в случае прямоугольных массивов, естественно.
>>1572532
>В аргументе я должен указать тот же тип, что и a
Конечно, int✲✲.
Аноним 14/01/20 Втр 19:00:24 1572765802
>>1572689
> Использую почти всегда, но тут мне кажетсч будет быстрее массив, тк очень много обращений к его элементам
Твоё "кажется" ничего не стоит, пока сам не проверишь. От результатов можно охуеть, даже если написать так, как анон выше (через одномерный массив). Советую посмотреть доклад Александреску, вроде называется "speed is found in minds of people"
Аноним 14/01/20 Втр 19:02:55 1572770803
>>1572679
>span - это обёртка над указателе
На массивом же, чтобы знать его размер и например делать рейндж фор
Аноним 14/01/20 Втр 19:21:46 1572776804
анончики, помогите, молю
Решить задачу для динамического массива, не используя
индексацию. Найти сумму нечетных элементов, стоящих на
нечетных местах (то есть имеющих нечетные номера). Вывести
адрес максимального элемента исходного массива.

Максимально не понял это задание. На вас вся надежда
Аноним 14/01/20 Втр 19:38:41 1572787805
>>1572776
>не используя индексацию
Я тоже не понял что это значит. Использовать *(a+i) вместо a, лол? Но это же смешно просто. Я бы написал с индексацией, так бы принёс и потом спросил бы что тут подразумевалось.
14/01/20 Втр 19:40:42 1572790806
>>1572787
Вместо a{i} - квадратные скобочки съело.
14/01/20 Втр 20:00:21 1572803807
>>1572776
Если это глупое задание от консервативного дядьки, то я бы вот такую дичь нахуевертил бы, пусть подавится: https://ideone.com/PySw0c
Аноним 14/01/20 Втр 20:13:16 1572813808
Аноним 14/01/20 Втр 22:13:55 1572932809
>>1572803
спащу себе, спасибо анон
это из лабы, там вроде все адекватно, кроме этого задания
Аноним 15/01/20 Срд 04:50:13 1572987810
Аноним 15/01/20 Срд 13:14:15 1573147811
Помогите с qt. Надо расположить кнопки вплотную, но layout даже при указании spacing 0 делает видимое расстояние
Аноним 15/01/20 Срд 13:16:42 1573150812
Аноним 15/01/20 Срд 13:19:47 1573156813
Аноним 15/01/20 Срд 14:24:57 1573221814
>>1573147
Пружинку вставить чтобы сжимала их?
>>1572987
Какие то азы судя по оглавлению, можно в любой книжке для начинающих прочесть имхо.
Аноним 15/01/20 Срд 15:29:04 1573276815
.png (0Кб, 352x82)
352x82
>>1573221
> Пружинку вставить чтобы сжимала их?
Бестолку
Аноним 15/01/20 Срд 16:09:49 1573359816
Аноним 15/01/20 Срд 16:10:36 1573360817
Аноним 15/01/20 Срд 18:55:40 1573545818
В статье на хабре (https://habr.com/ru/post/64280/) про виртуальные деструкторы было написано, что если у меня есть виртуальный метод, но деструктор при этом не виртуальный, то происходит утечка памяти.
Можно прояснить вот этот момент?
То есть вот в этом коде(https://ideone.com/4GTp1H) будет утечка памяти? За счёт чего? Какое неявное действие должен был сделать виртуальный деструктор, который его не сделает? Я просто вызываю два пустых конструктора и потом один пустой деструктор для одного и того же адреса.
Я понимаю зачем нужен виртуальный деструктор когда в каком-то из наследников если я дополнительно динамически выделяю память или ещё чем-то подобным, но если я просто переопределяю методы - ничего не произойдёт же?
Аноним 15/01/20 Срд 19:23:26 1573564819
Screenshot20200[...].jpg (325Кб, 1077x646)
1077x646
Аноним 15/01/20 Срд 19:26:16 1573574820
>>1573545
> Какое неявное действие должен был сделать виртуальный деструктор, который его не сделает?
Вызвать деструктор наследника вместо деструктора родителя
Аноним 15/01/20 Срд 19:29:40 1573578821
>>1573545
Да даже без динамического выделения памяти.
В родительском классе у тебя одно поле, в дочернем - два.
Без виртуального деструктора при
*parent x = new child;
x.~parent();
будет вызван деструктор родительского класса. Память под сколько полей он освободит?
Аноним 15/01/20 Срд 19:53:47 1573607822
>>1573574
Что поменяется, если он не вызовет деструктор?

>>1573578
Ничего не понял по правда говоря. Деструктор не освобождает память, деструктор это лишь дополнительный код, который выполняется перед освобождением памяти, разве не так?
Каких полей? У меня две структуры на 8 байт, где есть только один неявный указатель размером в 8 байт на таблицу виртуальных методов. Если интерпретировать эти 8 байт как указатель - то в нём одинаковое значение даже.

А если перегрузить new и delete, то можно увидеть, что операция выделения и очищения памяти вызывается для одного и того же адреса, неважно указывает ли указатель на A, B или void. Только что в первом случае вызывается 1 деструктор, а в третьем ни одного (и вызывается другой delete, который без указания размера). При этом память была освобождена во всех случаях, даже когда нет возможности вызвать деструктор, потому что тип - void*.
https://ideone.com/jlU7b0

Аноним 15/01/20 Срд 20:12:29 1573625823
>>1573607
> Деструктор не освобождает память, деструктор это лишь дополнительный код, который выполняется перед освобождением памяти
Это ты сам придумал или подсказал кто?
Аноним 15/01/20 Срд 20:40:18 1573658824
>>1573625
Интуиция подтверждаемая выводом программы со второго идеона.
Если бы он освобождал память, то ручной вызов деструкторов приводил бы время от времени к ошибкам, но вроде бы не приводит.
Конструкторы и деструкторы - всего лишь синтаксический сахар же.

https://godbolt.org/z/SPwxg3
Если ты утверждаешь что это не так, то я предлагаю тебе вот тут показать что такого необходимого делает деструктор B, что его нельзя пропускать. Я не увидел ничего подозрительного, например, никаких дополнительных освобождений или выделений памяти.

То есть в памяти есть две таблицы виртуальных методов для A и B, и одного указателя на одну из этих таблиц в экземпляре структуры более чем достаточно для полиморфной работы этих методов. Не вижу в каком месте деструктор или конструктор могут неявно выделять какую-либо ещё память.
Аноним 15/01/20 Срд 21:46:05 1573712825
>>1573578
Че несет. Деструктор у него память освобождает, вообще охуеть.
Аноним 15/01/20 Срд 23:01:39 1573773826
>>1573658
Но если ты не вызовешь деструктор унаследованного класса, то у тебя вытечет его состояние. Вдруг там был какой-нибудь unique_ptr?
Аноним 15/01/20 Срд 23:03:27 1573778827
>>1573773
А, ну ты это и так понял. Вообще, ничего не произойдёт, потому что деструктор не работает с аллокацией/деаллокацией.
Аноним 15/01/20 Срд 23:15:48 1573793828
Может, так чуть понятнее станет.
T ^ const ptr = new T(jopa);
раскрывается примерно так:
T ^const ptr = std::allocator<T>{}.allocate(1);
new (ptr) T(jopa);

delete ptr;
превратится примерно в следующее:
ptr->~T();
std::allocator<T>{}.deallocate(ptr, 1);
Аноним 16/01/20 Чтв 00:38:32 1573873829
>>1573712
Деструктор уничтожает объект, так? Что это, если не освобождение памяти?
Аноним 16/01/20 Чтв 01:01:23 1573887830
>>1573773
Очевидно, его нет, я только переопределяю код методов. Я же сразу сказал, что мне понятны ситуации когда виртуальный деструктор нужен, но не понятно почему пишут, что он нужен всегда если есть виртуальная функция.

>>1573873
Нет, с чего бы? Деструктор всего лишь неявно вызывается в конце области видимости или при вызове delete (и вызывает деструкторы для всех внутренних классов). Используется ли он для уничтожения объекта и освобождения памяти или нет - про это нет никаких гарантий, это всего лишь его предполагаемое использование. Вот (
https://ideone.com/7vMN60) я использую деструктор как метод для печати всех элементов и почему-то объект не слишком уничтожается при вызове деструтора. А вот после delete, после этого он всё-таки перестаёт работать при первом же вызове add(0), потому что удаляет объект именно delete.
Аноним 16/01/20 Чтв 08:02:13 1573955831
>>1573873
Очистка ресурсов, в том числе освобождение стековой памяти.
Аноним 16/01/20 Чтв 12:24:21 1574082832
>>1573955
Ещё один..
Вот анон выше пояснил же, что деструктор это простой метод но со странным названием, и иногда вызывается автоматически. Всё.
Он делает ровно то, что ты в нём напишешь. Нихуя не напишешь - нихуя не сделает.

Алсо, вызовы деструкторов полей и "освобождение стековой памяти" (лол) происходят только один раз при завершении жизни объекта, и уже после того как его десктруктор выполнился.
Аноним 16/01/20 Чтв 16:14:23 1574280833
>>1574082
>деструктор это простой метод но со странным названием
все же у него есть специфика..
виртуальные функции-члены внутри деструкторов не рекомендуется вызывать..
исключения не должны выходить из деструкторов, деструктор всегда должен успешно отработать..

Аноним 16/01/20 Чтв 16:56:08 1574338834
>>1574082
Я кажется начинаю понимать. И стек по-моему не освобождается пока ты программу не закроешь.
Аноним 16/01/20 Чтв 17:26:22 1574366835
Как вставить строку в файл между другими строками не считывая и не перезаписывая файл целиком?
Аноним 16/01/20 Чтв 17:31:29 1574374836
>>1574366
Никак?
У тебя последовательность байт на диске. Записаны байты с 1 по 9000. Ты хочешь вставить строку между 4000 и 4001 байтом, чтобы она занимала байты с 4000 по 4100. Какое устройство должно быть у диска или файловой системы, чтобы такая операция была допустима?
Первую половину тебе перезаписывать не обязательно, но вот хвост в любом случае придётся. Никаких аппаратно поддерживаемых операций "всовывания" байтов между другими на нынешних дисках пока нету.
Аноним 16/01/20 Чтв 19:29:49 1574518837
Как с помощью стритстрим считать из строки сначала строку до пробела, а потом число после пробела? Делал так, но соснул
std::istringstream df(string);
df >> str;
df >> numb;
Аноним 16/01/20 Чтв 20:50:31 1574563838
>>1574280
Из деструктора можно бросать и даже ловить. Если знаешь, что делаешь. А виртуальные функции и из конструктора не очень удобно вызывать, но это в силу особенностей реализации этих самых виртуальных функций.
Аноним 16/01/20 Чтв 21:04:52 1574577839
>>1574563
> виртуальные функции и из конструктора не очень удобно вызывать
Что значит "неудобно"? Виртуальный вызов из конструктора ты не осуществишь
Аноним 16/01/20 Чтв 21:23:01 1574605840
>>1574518
Не должен был соснуть. Ищи где проебался.
Аноним 16/01/20 Чтв 21:40:40 1574623841
image.png (354Кб, 533x400)
533x400
Аноны, сап, есть такой вопрос. Как объявить переменную?

Нет, я знаю, что надо написать "int a;", и.. че? Где-то там выделилась память. Я понимаю, что я могу манипулировать с этим участком памяти через "a", но зачем мне это делать, когда я не знаю для чего мне эта переменная нужна? Я собираюсь записывать в эту переменную какие-то биты, ок, но для чего?

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

Но тогда надо начинать с чего-то другого, верно? Но нельзя начать с чего-то другого, так как чего-то другое требует для манипуляции чего-то того, чего нет (переменной). Такой замкнутый круг. Как решать задачу в итоге?
Аноним 16/01/20 Чтв 22:02:27 1574649842
>>1574623
Поешь говна, сделай бочку.
Аноним 16/01/20 Чтв 22:30:22 1574687843
>>1574577
Чисто формально, вызов сделать можно. Результат, правда, не совсем тот, что нужен.
Аноним 16/01/20 Чтв 22:34:24 1574696844
>>1574623
Если ты переменную объявил, это ещё не значит, что где-то там память выделилась. Твой поток сознания вообще непонятен.
Аноним 16/01/20 Чтв 22:37:59 1574699845
>>1574696
Ок, определил
надо же доебаться
Аноним 16/01/20 Чтв 22:46:23 1574711846
>>1574696
>Если ты переменную объявил, это ещё не значит, что где-то там память выделилась
Что?
Аноним 16/01/20 Чтв 22:47:33 1574714847
>>1574623
Охуеть философ.

> Я себе это представляю так, что для начала мне нужно что-то сделать, а потом, когда мне нужно будет использовать память, я ее использую.
Код обрабатывает данные. Нет переменных - нет данных. Нет данных - нет смысла писать код. "Что-то сделать", впрочем, можно: объявить пустую функцию ничего не принимающую и ничего не возвращающую, а затем её вызывать, сколько хочешь.
Аноним 16/01/20 Чтв 23:28:50 1574779848
f.png (28Кб, 692x200)
692x200
>>1574714
>объявить пустую функцию ничего не принимающую и ничего не возвращающую, а затем её вызывать, сколько хочешь.
Хм, интересное решение. Буду пока придерживаться этого варианта, если что пойдет не так или появится лучший - сообщу
Аноним 16/01/20 Чтв 23:53:20 1574844849
>>1574779
Если бы. У тебя там неявный int, так что данные уже есть, хоть и мусор. Перепиши хотя бы с void.
О, ещё кое-что можно:
- пустой оператор ';'
- goto метка;
Аноним 17/01/20 Птн 00:13:05 1574892850
>>1574699
Нет, дело даже не в этом. Если ты написал int a и больше ничего, то память не выделилась. Вообще нихуя не произошло! Это же объявление, блять, оно не генерирует никаких инструкций. Вообще, если ты о такой хуйне задумываешься, осваивай ассемблер. Там сразу станет ясно, кто такой стек, кто такая переменная, функция и прочие не очень понятные вещи.
Аноним 17/01/20 Птн 00:34:14 1574953851
>>1574892
Вот кстати да. Те, кто первым языком учит какой-нибудь питухон, обычно остаются без полного понимания стека.
Аноним 17/01/20 Птн 00:44:26 1574982852
>>1574687
Так вызов будет не виртуальный
Аноним 17/01/20 Птн 03:12:32 1575062853
>>1574082
Хуйню не неси, мальчик. Открой ассемблерный листинг и посмотри что делает деструктор.
Аноним 17/01/20 Птн 03:14:03 1575064854
Анон, есть ли у тебя ширмавыстрел или ссылка с кодом программы на ассемблере, который на самом деле C или C++ с кучей define?
Аноним 17/01/20 Птн 08:46:11 1575128855
>>1574982
Ну, если это именно так обозвать, то да. Просто смысла нет в такой постановке вопроса.
Аноним 17/01/20 Птн 09:35:26 1575145856
>>1575128
Ну напиши тогда виртуальный вызов из конструктора, интересно посмотреть как ты вызываешь метод объекта, который еще не создан
Аноним 17/01/20 Птн 11:31:15 1575214857
>>1575145
https://gcc.godbolt.org/z/9xx6Hn
Не берусь за чистоту эксперимента, может, там выоптимизировалось чего, но взять и вызвать получилось.

> интересно посмотреть как ты вызываешь метод объекта, который еще не создан
Что значит создан? Память аллоцирована, просто вызывается конструктор, то есть this вполне себе живой указатель. В каком состоянии таблица виртуальных функций мне неизвестно, не знаю, что там в стандарте пишут. GCC, как видно, успевает с ней поработать до входа в тело конструктора.
Аноним 17/01/20 Птн 12:39:29 1575258858
Ку девсы, пишу сервак на плюсах. Он принимает от клиента сообщения и выполняет соответственный код. Принимаются сообщения в роде "ABC_CMD_0", "ABC_CMD_1" и тп. Как лучше парсить сообщения от клиента? Есть ли паттерны, чтоб решить эту задачу более разумно, а то не охота чекать руками if-ми, лмао.
Thx.
Аноним 17/01/20 Птн 12:50:09 1575267859
>>1575214
Блядь, так это и есть _не_ виртуальный вызов. Вот если бы у тебя конструктор базового класса вызвал метод наследника, тогда бы был виртуальный вызов.
Аноним 17/01/20 Птн 12:51:01 1575270860
>>1575258
Пиши свой ll0 парсер
Аноним 17/01/20 Птн 13:03:00 1575282861
.png (3Кб, 221x86)
221x86
Что гуглить, чтобы сделать подобное меню на Qt?
Аноним 17/01/20 Птн 13:35:51 1575310862
>>1575267
Что такое по твоим понятиям вообще "виртуальный вызов"? Это когда умный компилятор угадывает, что ты там захотел вызвать?
Аноним 17/01/20 Птн 14:36:19 1575377863
Привет, анон. Я студент, учусь на проградриста, второй курс. Мне кажется, я начинающий байтоёб. С этим нужно что-то делать?
Аноним 17/01/20 Птн 16:09:14 1575504864
>>1575310
Позднее связывание?
Аноним 17/01/20 Птн 16:18:39 1575522865
Аноним 17/01/20 Птн 16:35:12 1575548866
Сап, подскажите пожалуйста как создать массив на 210^9 элементов?
пробую так - вылетает, по другому тоже не получается
bool
b = new bool[2000000002];
delete[] b;
Аноним 17/01/20 Птн 16:37:56 1575554867
>>1575548
>2 умножить на 10 в девятой
фикс
Аноним 17/01/20 Птн 16:52:15 1575586868
>>1575504
Заменил неизвестное на непонятное.
Аноним 17/01/20 Птн 16:56:25 1575596869
>>1575548
Памяти-то хватает? У тебя так каждый bool занимает 1 байт. Вроде бы std::vector<bool> ужимает 8 штук в один байт, попробуй.
Аноним 17/01/20 Птн 16:58:34 1575599870
Аноним 17/01/20 Птн 17:07:21 1575608871
>>1575599
А когда его это, того? Всё равно, поиграться с ним можно. Можно ещё и свой велосипед сделать, если это всё в учебных целях (очень вероятно).
Аноним 17/01/20 Птн 17:21:18 1575621872
изображение.png (1Кб, 172x199)
172x199
>>1575548
У меня твой код работает, кушает положенных 2 гб памяти без каких-либо подводных камней.
Вектор действительно ещё в 8 раз ужимает.
Аноним 17/01/20 Птн 17:38:55 1575625873
>>1575621
>>1575596
попробую, спасибо
Да, вузовское. Надо у отрезка закрашивать части, но больно границы поставили у него широкие, блин. я решил через false true в массиве закрашивать
Аноним 17/01/20 Птн 17:50:42 1575632874
>>1575625
>закрашивать
Если потом это нужно отрисовывать, то проверка каждого из 2 миллиардов кусков или, упаси боже, отрисовка миллиардов отдельных кусочков - очень плохие идеи.
Храни отсортированые границы частей, по ним в любой момент можно собрать части разных цветов, так что если у тебя получится 30 сегментов, то 30 и нужно будет нарисовать, без цикла на 2 миллиарда.
Аноним 17/01/20 Птн 18:09:37 1575639875
Нужно написать класс, который бы содержал в себе таблицу рекордов игры. И записывал в файл ясен хуй. Я наговнокодил вот это
https://ideone.com/hcnwKW для каждого уровня сложности должно храниться не более 10 результатов
Можно как то сделать по человечески?
Аноним 17/01/20 Птн 18:20:04 1575645876
>>1575639
Переусложнил и велосипедишь. Используй сериализацию в json, qt умеет искаропки.
Аноним 17/01/20 Птн 18:27:11 1575648877
>>1575632
Понял, спасибо
Не, там надо потом вывести длину закрашенного, думал пройтись где true счетчиком, хотя все равно бы сложности были, даже не учитывая миллиарды значений -_-
Аноним 17/01/20 Птн 18:42:04 1575660878
>>1575310
Ну ты ведь понимаешь, что запись
this->VirtualMethod() в конструкторе базового класса эквивалентна записи this->MyBase::VirtualMethod ().
Анон тебе верно про позднее связывание написал.
Аноним 17/01/20 Птн 18:45:28 1575664879
>>1575648
Имей ввиду, что твоя программа будет в десятки тысяч ресурсозатратнее, чем того необходимо для алгоритма, и что она не заработает, если у тебя границы интервалов указываются как double и там какое-нибудь сложное дробное число будет.
Аноним 17/01/20 Птн 18:52:18 1575666880
Как сделать передачу звука по интернету? Как проигрывать частично переданный звук? Скорее всего передать просто фаул как звук не сложно. Как воспроизводить во время передачи?
Аноним 17/01/20 Птн 19:01:11 1575670881
>>1575666
std::peredat_zvuk_po_internetu же
Аноним 17/01/20 Птн 19:09:48 1575684882
>>1575666
Ты разберись, что именно тебе нужно передавать. Ноты, волны или обрезанные чести песен в mp3/flac/ogg/etc
По последнему - режь какой-нибудь libmp3/libflac/etc и передавай целые файлики
Аноним 17/01/20 Птн 19:43:12 1575710883
>>1575645
Что то сложно, анон.
Аноним 17/01/20 Птн 19:57:01 1575721884
>>1575710
Не очень. Один раз научишься делать, потом будешь использовать где удобно.
Аноним 17/01/20 Птн 21:05:56 1575786885
>>1575660
Конечно понимаю. Я не понимаю, какой смысл у слов "сделать виртуальный вызов из конструктора". Если это вызов метода, помеченного словом virtual (мы уже поняли, что нет), то всё уже разобрано. Тогда что это? Судя по словам "позднее связывание", я могу лишь догадываться, что это значит "вызвать метод, адрес которого станет известен после отработки всех конструкторов" в конструкторе, что, очевидно, само себе противоречит.
Я говорю, что вызывать виртуальные функции в конструкторе может быть "неудобно", потому что человеку, не очень разбирающемуся в работе виртуальных методов, легко себя наебать -- он может подумать, что вызовется метод, определяемый в самом конце конструирования (как это обычно бывает), а не в процессе. На это анон мне отвечает, что "виртуальный вызов из конструктора сделать нельзя". Какой смысл в этом предложении?
Аноним 18/01/20 Суб 00:34:48 1576090886
>>1575666
Почитай про PCM и как звук вообще воспроизводится и кодируется.
Аноним 18/01/20 Суб 09:08:15 1576199887
>>1575786
Что вы сретесь, вам Страуструп с Саттером в ccg русским английским языком написали что не надо юзать виртуальные методы в конструкторе, используйте фабричные функции.
мимо
Аноним 18/01/20 Суб 11:01:02 1576220888
>>1574623
>для начала мне нужно что-то сделать, а потом, когда мне нужно будет использовать память, я ее использую
Любая программа - трансформация одних данных в другие. Нельзя просто "что-то сделать", тебе нужен direct object. Без данных нет и программы. Да и вообще >>>/ph/
Аноним 18/01/20 Суб 12:05:06 1576249889
>>1576199
Охуеть, дядя сказал, значит, так и буду делать.
Аноним 18/01/20 Суб 12:18:14 1576266890
>>1575599
>Он же deprecated
Пиздёж
Аноним 18/01/20 Суб 13:48:27 1576364891
Плохой ли тон использовать goto в диалоге ввода?
Аноним 18/01/20 Суб 13:56:45 1576376892
Еще такой вопрос. Есть несколько классов, стоит ли создать один заголовочный файл и скинуть в него все инклюды, а в классах заинклюдить его?
Аноним 18/01/20 Суб 14:02:36 1576381893
>>1575670
Обосрал свой трон с этого
Аноним 18/01/20 Суб 14:14:46 1576392894
Почему вот так все работает
vec[x][0]->...
А так нет?
vec[x].begin()->...
Аноним 18/01/20 Суб 14:23:54 1576405895
Почему без указателя this-> элементы формы работают в обработчике события(Visual studio winforms)? В одной книжке было с this, в другой без, оба примера работают одинаково вроде.
Аноним 18/01/20 Суб 14:30:05 1576410896
>>1576405
Потому что язык позволяет. А в жабке и питоне так нельзя.
Аноним 18/01/20 Суб 14:36:43 1576416897
>>1576410
Нужный объект в метод передается? Как это работает?
Аноним 18/01/20 Суб 14:57:58 1576432898
>>1576416
>Нужный объект в метод передается?
Не очень-то и нужный.
Аноним 18/01/20 Суб 15:50:01 1576471899
>>1576416
>Как это работает?
Как земля.
Аноним 18/01/20 Суб 15:55:54 1576476900
Аноним 18/01/20 Суб 15:58:12 1576479901
>>1576392
(*vec[x].begin())->...
Begin возвращает итератор, через стрелку ты получаешь указатель.
Равносильно твоему же
> vec[x][0].SomeMethod()
Аноним 18/01/20 Суб 15:59:06 1576482902
>>1576405
this-> сейчас по сути нужен только в шаблонах
Аноним 18/01/20 Суб 16:34:06 1576523903
скрин.png (138Кб, 1920x1080)
1920x1080
Привет, анон. Подскажи мануал по Eclipse IDE 2019-12. Пытался написать в нем "Привет, мир!" на яве, но он выдаёт ошибки приклейтед (symbol "символнейм" could not be resolved). В онлайн компиляторе всё работает нормально, как заставить эклипс стакаться с явой 13.0.2?
Аноним 18/01/20 Суб 16:43:01 1576537904
>>1576523
> на яве
Что? На яве? У тебя же крестовый код. На яве, если не ошибаюсь, тебе нужно создать класс и в нем сделать метод - и это будет минимальным ява-кодом.
Аноним 18/01/20 Суб 17:32:14 1576590905
image.png (19Кб, 486x238)
486x238
image.png (3Кб, 128x148)
128x148
Умоляю подскажите, можно ли как то реализовать через хук что бы нажатие кнопки Z нажимало Z один раз(!) как обычную кнопку и делало что то дополнительно на, например переменную меняло.

В моем случае, когда я на хук Z делаю кейборд эвент Z - оно проспамливает в милисекунду несколько раз. Как мне отделить виртуальное нажатие кейбордэвента от реального физического?
Аноним 18/01/20 Суб 17:47:48 1576606906
Аноним 18/01/20 Суб 20:04:40 1576722907
>>1576523
Хуже эклипса только виндовый блокнот. Используй Вижуал студию
Аноним 18/01/20 Суб 20:15:58 1576741908
Аноним 18/01/20 Суб 20:16:21 1576743909
Аноним 18/01/20 Суб 20:16:49 1576744910
Аноним 20/01/20 Пнд 20:56:00 1578962911
>>1554355
>Однако "оптимизацией" подобные выкидывания, переписывания и упрощения - не являются.
Однако являются рефакторингом. Если оптимизация нужна для того, чтобы компьютер быстрее справлялся с кодом, то рефакторинг нужен, чтобы с кодом быстрее справлялся человек.
Мне кажется ты и близко не понял на что ответил.

мимонуб, читавший листавший этот ваш рефакторинг и прочие чистые коды
Аноним 20/01/20 Пнд 21:03:36 1578966912
>>1554724
Упоминание эффекта Даннинга-Крюгера выявляет находящихся под ним ещё надёжнее.
А всё потому, что впоследствии оказалось, что сами учёные подошли к исследованиям спустя рукава и впоследствии их исследование было пересмотрено и подвергнуто критике.
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов