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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
sage 2 1401360
>>01309 (OP)
на самом деле это тред №88
3 1401371
4 1401410
>>01360
Пиздишь, номера еще в 2016 за сотню перевалили.
5 1401411
Че там с концептами, крестухи? К 23 году завезут?
6 1401452
Ананасы, поясните.
Всегда ли нужно использовать указательный на базовый класс?
7 1401453
>>01411
Будет в 20 стандарте
8 1401456
>>01452
Нет
9 1401480
>>01456
Почему так стоит делать иногда?
10 1401510
Анончики, подскажите какой-то более-менее большой проект, который можно реализовать в соло за 2-3 месяца всё лето свободен на С++/Qt. До этого чего-то серьёзного не писал, какие-то калькуляторы, шахматы и обработчики данных еще пару ботов для телеграма. Сейчас чувствую что очень не хватает практики, особенно современных крестов. С матаном/линалом знаком, дискретка на базе первого курса. Было бы очень неплохо, если бы проект был связан с компьютерными сетями и протоколами передачи данных
11 1401558
>>01510
Напиши свою борду.
12 1401583
>>01510
Какую-нибудь мини-ide для языка программирования.
13 1401594
>>01480
чтобы роботала магия виртуальных функций, чтобы был динамический полиморфизм
14 1401734
>>01360
91, со всеми пропусками.
15 1401839
>>01452
Лучше мизинец, его не жалко.
16 1401984
>>01558
Бля, видел в треде идей анона, но чёт даже не подумал об этом. Спасибо анончик.
>>01583 - над этим подумаю, но сама задача какая-то не очень интересная по крайней мере для меня.
17 1402298
>>01984
писать борду на плюсах - это охуенная идея, ты в своём уме?
sage 18 1402342
>>02298
А в чём может быть проблема? В Qt достаточно удобные средства для работы с сетью, и клиент-серверная модель уже реализована.
19 1402363
>>01309 (OP)
Ребята я давно не спал и плохо говорить по-русски, но по другому я не могу. Я пишу some shitty code в IDE MS Visual Studio 2015, мне нужно чтобы когда я подгружаю в DataGridView свои данные из разных таблиц БД, этот элемент не менял свои размеры, нужно чтобы ширана столбцов растягивалась или сужалась но в совокупности всегда была одна ширина элемента. На текст в таблице не обращайте внимания это рыба.

Пример, пик1. Все заебись, таблица ровно такого размера как надо.

Пик 2. По ширине пиздец, таблица уменьшилась. На высоту похуй.

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

Надеюсь есть способ сделать то что нужно.
20 1402366
>>02363
Хули ты забыл в CPP треде?
https://stackoverflow.com/a/18666840
21 1402383
>>02366
Пишу я на C++ обычно в консоли с чистым CLI компилируя gcc, тут же доебались со своим интерфейсом и загнали в студию от мелкомягких. Писать интерфейс я привык в Delphi от еще борланда и это нечто от редмонда вызывает у меня растерянность и сонливость.

Спасибо. Все работает.
240F132015766lTMEkR8KvDFnYcRcvzJZDtlJ5JYvxtOY.jpg16 Кб, 328x240
Односвязный список 22 1402523
Я даун и прошу помощи. Такая задача.
Узел списка Комната с член-данными ширина (float), длина (double) и цвет стен (char *). Реализовать член-функцию «получение элемента с заданным порядковым номером»

Я бы хотел добротно заплатить тому, кто мне поможет, но так как я нищий и на 1к рублей мне жить еще месяц, могу лишь закинуть 50 рублей, только прикрепите сразу свой кошель в ответу, чтоб я левым людям не кинул.
пикрандом
23 1402543
>>02523
В односвязном списке по определению же у каждого элемента есть указатель на следующий элемент.
https://prog-cpp.ru/data-ols/
Тут описано, как инициализировать и выводить все элементы, если тебе нужен конкретный, просто сделай цикл for(в теле цикла переход через указатели от элемента к элементу), пока не дойдет до элемента с нужным номером, и потом выведешь значения, на которые указывает полученный указатель.
24 1402548
>>02523

> ширина (float), длина (double) и цвет стен (char *)


Ты долбоеб?
25 1402672
Аноны, можно где-то скачать старые build tools от визуал студии, скажем, 2005 или 2010 года? Не гуглится нихуя, жопа горит, щас пойду воровать, убивать, йебать гусей.
26 1402679
>>02672
rutracker
27 1402691
>>02679
Уже качаю полную студию, 5 гигабайт. Еле сдерживаюсь, чтоб не побежать в город обзывать каждого первого потребителя продукции МенструалсофтКорпорейшн говноедом и получать за это пизды. Это ж как, сука, надо смерти не бояться, чтоб не выпускать инструменты без IDE отдельным релизом.
28 1402706
>>02691
бля, я долбоеб, не там галочку в торренте постаивл.
1.3 гига студия 2005 весит
fix
071.jpg97 Кб, 660x413
29 1402714
>>02691
тебе нахуя?
30 1402724
Нахуя можно делать приватные виртуальные функции при наследовании?
31 1402735
Посоны, не гоните, просто не сталкивался с такими кейзами. Есть мой собственный класс, нужно по входным данным динамически создавать представителей этого класса, потом загонять их в массив и работать с ними. Как это реализуется?
32 1402737
>>02735
Приведи пример данных и что у тебя за класс?
34 1402767
>>02735
template<class T, class... Args>
void do_smth(std::size_t n, Args&&... args)
{
T^^ arr = new T^[n];
std::for_each(arr, arr + n, [&](auto& p){p = new T(std::forward<Args>(args)...);});
// do something
std::for_each(arr, arr + n, [&](auto& p){delete p;});
delete[] arr;
}
Домик замени на звёздочку.
35 1402769
>>02767
Пример применения

struct A
{
A(int a, float b, char c) : a_(a), b_(b), c_(c){}
int a_;
float b_;
char c_;
};

int main()
{
do_smth<A>(10, 1, 2, 'a');
}
sage 36 1402789
>>02724

>Нахуя можно


Постановка вопроса наивная, пиши прямо -- "нахуя нужно".

>приватные виртуальные функции при наследовании


Имеется в виду нечто с комплексной характеристикой, "грубо говоря" свойства перечисляются. Что же, начнем читать как компилятор "с лево на право" попутно выстраивая собственный комплексный ответ

>при наследовании


Очевидно речь идет о ООП, какое именно наследование не указано, тогда берем самый простой "публичный одиночный" вариант, таким образом что - то закладывается в описание класса, дабы иметь возможность унаследовать сие в потомках данного СК.

>виртуальные функции


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

>приватные


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

В общем - то, нужно это все, как и все остальное в языках, в т.ч объектно ориентированных, дабы ты мог описать решение конкретной, иногда достаточно специфичной , задачи на пальцах компьютеру. Задачи, в которых релевантно использование ООП в целом, как - правило, имеют те или иные нотации в отношении того что должно наследоваться, куда, как работать в связке/ссылке на объекты в т.ч иных и родственных классов, вот для того чтобы полно описать решение, язык предоставляет соответсвующие способности.
sage 37 1402791
>>02789

>"с лево на право"


наоборот

>преобладании ссылок


переопределения

быстрофикс
38 1402889
У меня в VS при объявлении шаблонного типа переменной (template<class T>) ошибка
1>MSVCRTD.lib(exe_main.obj) : error LNK2019: ссылка на неразрешенный внешний символ _main в функции "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
1>C:\Users\sudo\source\repos\Множества символов\Debug\Множества символов.exe : fatal error LNK1120: неразрешенных внешних элементов: 1
Как исправить?
39 1402891
А, всё, это говно, оказывается, обязательно в программе должно быть где-то использовано хоть как-то, тогда нету ошибки.
40 1402906
>>02724

>Нахуя можно делать приватные виртуальные функции при наследовании?


герб саттер "новые сложные задачи на с++", задача 18
детальный ответ на твой вопрос
если кратко - есть способы проектирования архитектуры приложения, когда вообще нет открытых виртуальных функций, такой подход сохраняет популярность
41 1402913
Анон, как ты считаешь количество чисел в файле пока не конец строка?
42 1402915
>>02913

>не конец строки


самофикс
43 1402921
>>02913

> Анон, как ты считаешь


Нахуй мне таким заниматься?
44 1402922
>>02921
А как ты получаешь длину строки для создания динамического массива, если ты не знаешь заранее сколько будет элементов в массиве?
45 1402924
>>02922
С запасом беру, очевидно же.
46 1402927
>>02924
Это очень сильно тупо.
47 1402931
>>02523
Это задача уровня 8 класса, решающаяся одним циклом.
48 1402934
>>02931
Так покажи же пример или ссылку на него!
49 1402938
>>02931
Да и с каких пор в школах учат программирование? Ещё и в восьмом классе. Да ещё и на крестах.
50 1402940
>>02922
Зачем мне знать сколько элементов будет в массиве если он динамический?
51 1402942
>>02940
Откуда динамический массив будет узнавать насколько ему расширяться, если ты ему не предоставляешь конкретное число, получаемое прямо во время работы программы?
52 1402944
>>02942
Зачем ему знать на сколько расширяться если он может просто увеличиться в джва раза?
53 1402946
>>02944
У тебя массивы прям как твоя мамка, а твой код наверняка может потягаться даже с поделиями индусов.
2.jpg70 Кб, 387x693
54 1402960
>>02938
>>02934
Ладно, держи.
55 1402967
>>02960
Хотя у меня там цвет стен не char, а string, но ты это поправишь.
56 1402971
>>02960
Что это за язык?
57 1402975
>>02971
Язык благодаря которому контент на интернет страницах стал динамичным.
58 1402987
>>02975
Java(script?)?
59 1402988
>>02971
язык 19ти летних полубогов, получающих на изичах 3к в месяц на удаленочке
крестоблядки же на такую зп годам к 35 выходят и то если вьябывать
60 1402991
*19-ти летних манябогов
61 1403001
Нет, ну так-то он прав. C++ это либо легаси, либо рокет саенс. Но рокет саенсом занимаются единицы из сотен тысяч, а остальные поддерживают какое-нибудь старье, написанное еще в то время, когда C# и Java не доминировали бэкенд и десктоп. Тем более когда джунам за JS или тот же Go платят больше, чем за C++ мидлу.
62 1403004
>>03001
Рокет саенс это просто C, так что круг сужается еще больше.
63 1403119
>>02714
Мне надо скомпилировать код, использующий библиотеку, которая в свою очередь скомпилировано майкрософтовским компилятором. Ставить для этого Шиндовз10 с .NET Framework 4.6 как-то неохото. Я вообще ни шага в разребании этой задачи не могу сделать, не пробубнев четырежды "виндоюзеры говноеды".
64 1403164
Возможно ли как-то при выполнении определённого условия просто в условии объявить переменную типа, который задаёт условие, и использовать эту переменную дальше в программе? А то они обозначаются как локальные и приходится код копипастом растягивать.
65 1403167
>>03164
C++17 if initializers
image.png46 Кб, 694x324
66 1403169
Как использовать сраный OpenGL? Везде в примерах пишут

> #include <GL/glut.h>


Но у меня тупо нет этого файла. Что делать-то?
67 1403171
>>03167
Это чё?
68 1403172
>>03169
Скачать библиотеку glut, очевидно
69 1403180
>>03172
Если она не установлена, почему здесь присутствует папка GL? Тут есть все, кроме glut.h.
70 1403181
>>03171
Это то, что твои пальцы должны набрать в гугле перед тем, как пойти нахуй, долбоёб.
пиздец, при поиске ответа на вопрос не использовать гугл как первую инстанцию. выпились
71 1403183
>>02922
Можно считывать данные посимвольно и каждый шаг расширять массив на 1 элементбудет выдяляться новыц массив нужной длины и туда будет уопироваться содержимое старого - такое себе.занятие
Можно выделять память блоками по 256 байт например. А потом еще можно обрезать. А можно не обрезать, если тебе памяти жалко.
72 1403190
>>03169
Если не ошибаюсь, glut это более старая версия. Сейчас используется glad. Вот тут гайд неплохой, я по нему поставил в итоге https://learnopengl.com/Getting-started/OpenGL
73 1403193
>>03180
Может потому что glut уже лет двадцать не поддерживается? Или потому что это ОТДЕЛЬНАЯ БЛЯДЬ БИБЛИОТЕКА? Где ты вообще откопал код, который юзает glut? Ты хочешь буквы рисовать?
74 1403195
>>03181
Нахуй иди, токсик.
75 1403197
>>03180
GL это хедеры для опенгла.
Но те клоуны туда закинули glut.h по фану.
76 1403211
>>03195
Он хоть и грубый, но я с ним согласен. Тебе прямо сказали что надо гуглить, и ты вместо гугла задал вопрос анону. Даже если не брать во внимание саму тупость этой ситуации, как думаешь, кто тебе быстрее ответит - гугл или анон?
77 1403217
>>03193

>Где ты вообще откопал код, который юзает glut?


Статья на хабре... 2011 года. Не обратил внимания на дату. Как я понял, сейчас вместо glut юзают freeglut, так? Мне нужно его самостоятельно собрать?
https://habr.com/ru/post/111175/
78 1403265
>>03217
Вроде там бинарники выкладывают, но лучше конечно самому собрать. А лучше, как анон выше писал, перейти на GLAD
79 1403272
>>03265
Спасибо. Вот только бинарников я не нашел, но зато смог с горем пополам собрать эту срань с помощью CMake. А чем GLAD лучше freeglut?
80 1403547
Здрасте, можете пояснить за tls1.3, публичный, приватный и CA сертификаты, откуда они берутся, и что надо иметь клиенту, чтобы взаимодействовать с сервером?
81 1403680
Из C++ в C# пжпжпж
void __fastcall TForm1::Button1Click(TObject Sender)
{
Memo1->Lines->Clear();
int A[4]; int B[5];
int m;
String One, Many;
for(int i = 5000; i < 10000; i++)
{
One = IntToStr(i);
for(int j = 0; j < 4; j++)
A[j] = StrToInt(One[j + 1]);
if(A[0] & 1) continue;
m = i 2;
Many = IntToStr(m);
for(int j = 0; j < 5; j++)
B[j] = StrToInt(Many[j + 1]);
if((B[1] == A[3]) && (B[2] == A[0]) && (B[4] == A[0]))
{
Memo1->Lines->Add("ОДИН - " + One);
Memo1->Lines->Add("МНОГО - " + Many);
Memo1->Lines->Add("");
}
}
}
82 1403687
БЛЯДЬ, ПОМОГИТЕ ДЕЛЬФИНИСТУ В СТУДИИ ОТ МЕЛКОМЯГКИХ.

Какого блядь хуя ей надо - то, а ? В Delphi я спокойно могу из одной формы, например, ебануть visible другой формы. Forname.visible ... траляля. Здесь же, сука, нихуя не получается, это говно ноет и срет ошибками. Как мне их одной формы убить другую, изменить что - то хотя бы
83 1403703
>>03687
Крудодебил такой крудо и такой дебил.
84 1403704
>>03703
Вот сука, банально блядь. Как же в этой ссаной студии все через депу сделано сука. Берем елемент нейм, хуяим ему метод- событие. Переименовываем элемент нейм. А событие так и останется с прошлым именем. Вот блядь, какой даун это придумол сука.
85 1403705
>>03704
С этими же формами. Какого хуя у меня в таком хуевом object basic это делается одной строчкой, а здесь я должен гуглить, объявлять их друг у друга, ебаться с сылками и статичностью.

Тьфу, блядь, ебля ради ебли as is
86 1403728
https://pastebin.com/hNBif4t1 пытаюсь умножить матрицы используя многопоточность,почему так медленно или так должно быть.При размерности 1к обычное умножение занимает примерно 0,1 миллисекунду,а многопоточное около 250мс(если я время правильно засекаю)
87 1403797
Поясните, есть такой код:
std::for_each(iter.begin(), iter.end(),
[] (auto element)
{
...element...
});
При этом в лямбде сам элемент, а как использовать не элемент, а его итератор?
88 1403802
>>03797
никак
89 1403803
>>03797
Захвати iter=vec.begin() в области захвата и делай в теле лямбды iter++
90 1403848
>>03803
Проще тогда уж написать обычный цикл с итератором
91 1403865
>>03803

>захвати в области захвата


пандорического, не иначе
92 1403878
Поясните, если мне нужен контейнер который на 99% совпадает со стандартным, только с заменой одной функции или алгоритма, то как лучше поступить? Скопировать из stl нужный кусок и назвать его my_contaeiner1(new container)?
93 1403886
>>03878

> то как лучше поступить



Использовать стандартный контейнер из STL
94 1403892
>>03878
зачастую оказывается достаточно написать обобщенную свободную функцию, которая принимает итераторы, что поддерживает этот контейнер и все
напишешь что за функционал тебе нужен, может напишу и требуемую функцию
а вообще от контейнеров не наследуются, а агрегируют их
а делать как ты предлагаешь - вообще нехорошо
95 1403903
96 1404006
>>03728
мда хех
timer = startExecution("single-thread");
stopExecution("single-thread", timer);
MatrixMult(A, B, C);
97 1404044
https://www.sql.ru/forum/1312623/nachinaushhiy-s-s-lua-programmist-20t-r-50t-r-moskva-vozmozhno-udalyonno
джун на крестах, 20 тр в москве
нужно выполнить тестовое задание, а именно: реализовать пул памяти, используя virtualalloc, срок выполнения - три дня
велком
98 1404110
>>04044

> джун


> реализовать пул памяти, используя virtualalloc


Ну хуй знает. Удачи им.
99 1404122
>>04044
>>04110
С другого лагеря тоже доставляют

>Для юниоров по Москве средняя в районе 100 тыс.


>В стартапах зп должна быть выше рынка

100 1404124
>>04044

>джун на крестах, 20 тр в москве


может лучше в яндекс еду?
101 1404178
Мамочка, спасибо тебе за то, что в сосничестве я учил скриптовые языки программирования.
102 1404229
Сап двач,

как можно получить символ юникода в std::wstring зная его код.
Пример:
Надо получить std::wstring res = "血";
Имеется:
std::wstring test = "8840" - юникод японского символа.
создать его из двух строк "\u" + "8840" нельзя, на стэк оверфлоу есть тема: https://stackoverflow.com/questions/47915811/c-adding-u-to-string

Есть ли способы создания символов динамически? Или как я могу еще преобразовать его в эту залупу 血?
103 1404231
>>04229
Уже сменил несколько бутылок
104 1404236
я дак бы не успел за 3 дня пул памяти написать, даже если делать в си-стиле, типа как в apr сделано или у сысоева в энжинх, а если еще и делать чтобы под кресты он ложился, типа как в boost::pool, там еще больше работы
105 1404271
>>04122
Зависит от языка и стека, конечно. В js все примерно так и есть.
106 1404289
>>04271
Покажи, где снулю, вчерашнему студенту, плотят 100к?

Может оно у них там и называется "джуниором", но ловить там нехрена без 2+ лет опыта и знания всякой херни, которая по объему в 10 раз превышает собственно сам js. Да и в этом случае нужно очень плотно к собеседованию готовиться.
108 1404340
>>04324
Это никак не доказывает, что снулем можно вкатиться и получать 100к.

Знакомый с моей мухосране работает жс-мидлом или около того, получает 80 начинал кстати с 25к. Хотет перекатиться в ДС. Только хотелка съеживается, как до поиска работы дело доходит.
109 1404467
>>04110
Сложно что-ли? Обычную обертку над винапи просят написать. Такое каждый джун должен уметь делать. Для 50к норм работа.
110 1404470
>>04467
за 3 дня сложно пул памяти написать, даже простейший
111 1404477
>>04470
Большой объем кода или там надо разбираться в api и тд?
sage 112 1404509
Обьясните, пожалуйста, как работает этот фактори паттерн?
Есть условный shape, есть circle и triangle.
Создаю я фактори для них c createShape и т.д. В коде создаю вектор shape и пушбэкаю в них через circle\triangle_factory. Вроде бы все работает и красиво, но если в конструкторах circle и triangle разное колво аргументов? Как заставить все работать с createShape с разным колвом аргументов?
Так же если у меня в circle условно дополнительные переменные и сеттер\геттер, как мне к ним получить доступ? После пушбека в массив v[0]. видит только функции с Shape но никак не с circle\triangle. Подскажите плз, всю голову сломал уже. (И да, использование фактори обязательно и принципиально)
113 1404516
>>04509

>вектор shape


А нужны указатели на Шейп. Про остальное перечитываю как работает фабрика.
sage 114 1404521
>>04516
vector<shape*> v;
v.pushback(circle_factory->createShape());
v[0]. и вот тут видны только функции с shape, как мне обнаружить еще и с класса circle?
115 1404522
>>04521
dynamic_cast<Circle звездочка>(v[0])
Но если ты знаешь, что там будет именно Circle звёздочка, почему бы не хранить именно его?
116 1404535
>>04521

>и вот тут видны только функции с shape


Это как бы подразумевается. Фабрика обычно делает объекты с одинаковым интерфейсом но разными имплементациями.
117 1404550
Сап. Помогите разобраться с "connect" ситуация такова, что у меня есть одно окно со схемой и входными данными, и нужно чтобы при нажатии кнопки данные с LineEdit передавались во вторую формочку, реализовал считывание данных на первом пикене флеймите сильно изза быдлокода, только начал изучать средства qt не знаю как иначе разместить кучу LineEditов на формочке, кроме как создавать 9 обьектов, вот эти 9 единиц данных нужно вкинуть на вторую формочку, где должно выводится решение, тоесть идёт формула XR1+YR2, и вместо R нужно поставить полученные числа, и дальше проводить с ними манипуляции, моя попытка коннекта, с которой я обосрался, показана на 2-4 пике, буду благодарен любой помощи.
118 1404580
>>04550
- итак, в коннект с использованием SIGNAL/SLOT макросов обычно пишут имя ф-и и типы всех параметров (тут 8 int), а у тебя один int. Обычно я использую версии коннекта с передачей адресов методов, так что честно хз можно ли так. Знаю что можно коннектиться к сигналу, если у сигнала количество параметров больше или равно каличеству параметров слота.
- НАХУЯ ты коннектишься к QHBoxLayout, если надо к объекту твоего Widget-а?
- я заебался считать количество аргументов, то ли их 9, то ли 8. Когда надо передать дохуя параметров не поленись сделать струкруру и емитить ее по ссылке;
- в основном окне, данные из LineEdit-ов используются только в слоте нажатия кнопки? Тогда делай их как локальные переменные, а не как члены класса.
- solutionWindow как-то удаляется после создания? Если нет, то или родителя передавай и ставь флаг, что это окно, или устанавливай аттрибут Qt::WA_DeleteOnClose. А то утечка памяти получается.
- в том виде как на пиках, я вообще не вижу смысла в этом сигнале. Так как solutionWindow создается каждый раз, и данные расчитываются в том же методе. Проще сделать solutionWindow-у публичный метод setData и вызывать его.
- лучше приконектится к сигналу QPushButton-а clicked чем к pressed. Имхо конечно, тут уже ты сам определяешь поведение.
- ну по стилю - старайся придерживаться однообразного названия классов, переменных и тд, а то у тебя то с большой буквы, то с маленькой.
119 1404612
>>04580
Спасибо, что то понял, а что то нет, я слабо понимаю к чему коннектиться, потому что QHBoxLayout из widget недоступен в solutionwindow, поэтому я хз что тут приконнектить, чтобы оно передавало данные, сейчас попытаюсь детальнее разъяснить что должно получиться, во втором окне, мне нужно
расписать вот такое же решение https://electroandi.ru/toe/metod/metod-konturnykh-tokov-reshenie-zadach.html только с использованием чисел из первого окна, я сделал в функции нажатия кнопки весь расчёт, тоесть хочу передать рассчитанные данные и исходные во второе окно, чтобы просто оформить, но оно просто не выполняется, значит в connect я прописал некорректно, получается осталось разобраться что нужно коннектить чтобы данные передавались именно во второе окно.
120 1404615
Поясните, почему во многих алгоритмах граф задается как
vector < vector<pair<int,int>>
а не
< vector<pair<int,int>>
121 1404619
>>04615
Из одной вершины несколько друг могут идти?
122 1404681
>>04619
понял. Правда все равно неясно, чем это лучше чем матрица смежности.
sage 123 1404707
>>04535
Так а что делать, если надо "не обычно" ?
124 1404711
>>04509
на твоем уровне понимания можно просто перегрузить createShape
а вообще это требует виртуального конструктора, прямой поддержки которого в с++ нет и обычно реализуется через паттерн фабричный метод
125 1404720
>>04681
Это и есть матрица смежности, просто ее разреженный вариант (sparse vs dense). Лучше экономией памяти, если у тебя граф большой и имеет мало связей, не нужно нули хранить.
126 1404733
>>04470
Да что там писать-то? Винапи если знаешь нужные и ООП основы, то за 1 вечер написать можно. Хуй знает что ты там аж 3 дня собрался писать.
127 1404875
Аноны, выручайте, делаю список студентов по имени и фамилии, не получается сортировка по первой букве имени. Без динамического выделения памяти.
Я точно знаю, что ошибка в инициализации массива указателей на имена, только где эта ошибка хуй его знает. Сразу говорю, что только только вкатился в ООП, поэтому не шарю практически нихуя, начал изучать наследование.
https://pastebin.com/AedmXB9d
128 1404883
>>04875
должно быть как минимум temp[j][0] < temp[min][0], потому что ты сравнивать должен первые символы, а не указатели на строки.
А так вам дали std::string, а вы ебетесь с указателями. Ну ебитесь
129 1404888
>>04883
Я просто недавно выкатился с си, братан
130 1404889
>>04883
По-моему там вообще указатели на объекты, не?
131 1404891
>>04883
Кстате в ифе делал через ★temp[j]<★temp[min] что эквивалентно тому что ты написал, но тож не получалось
132 1404892
★temp[j] это temp[0][j], а тебе нужно temp[j][0]
133 1404896
>>04875
Вкатывайся в стандартную библиотеку, сортировка будет в одну строчку.
134 1404897
>>04892
Все равно не работает, брат
135 1404902
>>04892
Пробовал ещё просто в цикле в отдельном методе выводить имена, в итоге выводилось куча букв М и в конце первое имя и так на каждой строчке
136 1404903
>>04902
Выводить массив указателей на имена
Быстро фикс
137 1404906
человеку слжно жить в городе
город высасывает энергию
около природы жить идеально
138 1404907
>>04470
Под "пулом" я понимаю fixed-size block allocator. Если пул не растущий и размер фиксирован, то за пару часов можно спокойно реализовать, если понимаешь принцип. Выделяешь память на N страниц, создаёшь где-то фри-лист (или в самих ячейках хранить, как емнип делает dlmalloc). new - снимаешь с листа, free - выдаёшь с листа. Всё, он даже уже почти thread-safe, раскидать атомиков только. Если растущий пул, то надо ещё логику управления выделенными страницами, не очень сложно.

Но вот если случайный размер (general purpose allocator), тогда дело сложное. В принципе можно просто добавить к предыдущей реализации слияние смежных блоков, чуть подкрутить того и сего, но если ты хочешь действительно хороший аллокатор, тебе предстоит веселиться с политикой нахождением блока (best fit, first fit, разделение на бины), фрагментацией и скоростью всего этого дела. Но его и не просят, так что не парься.

Быстрое гугление навело на Доббса, где приводится код growing fixed-size block allocator, где фри-лист хранится в самих ячейках. http://www.drdobbs.com/a-quick-and-simple-memory-allocator/184403440
139 1404966
>>04907
одна из главных фич пулов памяти - это то, что его легко снести когда станет ненужным
такая модель хорошо ложится на некоторые типы задач, когда проэкт на сях написан
но я не понимаю как сделать полезным эту фичу в крестах
видимо, поэтому пулы памяти в крестах и не прижились
но это все мои догадки, тк на практике я их не делал и не применял
вот ты пишешь что сделал бы за 2 часа, а я, хотя и понимаю что надо делать, делал бы месяца 3, не меньше
140 1404968
по сути, выгоду по скорости пул памяти дает не при выделении памяти, а при освобождении
плюс экономится размер памяти за счет того что внутренние обслуживающие структуры памяти меньше размера занимают (не надо размер блока помнить, он фиксированный)
141 1404985
>>04966

>такая модель хорошо ложится на некоторые типы задач, когда проэкт на сях написан


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


Какая разница, на чём написан проект? Пулы и аллокаторы используются всегда для одних и тех же целей: уменьшить число аллокаций, когда у тебя много мелких объектов одного типа постоянно приходит и уходит. Неважно, Си, Плюсы. Пулы объектов даже на джаве были (хотя с новыми JVM особо и не нужны они).

>вот ты пишешь что сделал бы за 2 часа, а я, хотя и понимаю что надо делать, делал бы месяца 3, не меньше


Ты три месяца будешь делать 1 (один) связный список?
142 1405007
>>04875
Напиши оператор < и не ебя голову сравнивай ОБЪЕКТЫ
143 1405024
Доброй ночи, аноны. У меня есть два вопроса к разработчикам на крестах:
1) Как обстоят дела с вакансиями в вашем городе (не беру в расчет ДС/ДС2) для новчиков без опыта работы. Например, в моем городе (Ростов-на-Дону) таких вообще нет. Все в основном от мидла и выше. Так вот вопрос - как начинают свой путь программисты на C++? Неужели переходят с других языков? Хотя мне казалось, что его многие учат первым. Я, например, в универе его учил первым по программе.
2) Для программирования в никсах вообще стоит рассматривать C++ сейчас? Или же до сих пор все модули - это чистый C, в большинстве своем?
144 1405026
>>05024
И вдогонку вопрос: какие целевые области применения для разработки на крестах вы видите на данный момент?
145 1405028
>>05024
наверное они начинали когда кресты были популярны, нэ
146 1405034
>>05028
Значит ли это, что сейчас в кресты вкатываться не имеет смысла даже уже имея какое-то минимальное представление о программировании на них
147 1405046
>>05024

>Так вот вопрос - как начинают свой путь программисты на C++


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

>Для программирования в никсах вообще стоит рассматривать C++ сейчас?


Ты про никсы или про ядро никсов? Потому что это две большие разницы

>>05034
Это примерно как пойти в макдак сейчас или поучиться и пойти в макдак стать специалистом. Кресты это высокий порог вхождения, со всеми достоинствами и недостатками. Работа будет.
148 1405099
>>05034
Не вижу особого смысла. Очень несовременный язык, который применяется либо в легаси десктопе, который писали ещё тогда, когда кресты не проиграли эту нишу шарпу, либо в рокет саенс, где надо нереально въебывать и очень хорошо разбираться в математике или архитектуре пк. В первом случае зп нищенские, во втором на уровне джавистов, ненапряжно пишущих круд.
149 1405108
>>05099

>джавистов, ненапряжно


Бабка на двое сказала.
Мне, например, общество математиков куда как более приятно.
150 1405113
>>05024
вкатываться в С++ смысла ровно 0, иди во фронтэнд.
151 1405135
>>05108
Просто не всем приятно заниматься тяжёлым интеллектуальным трудом, а получать на уровне крудошлепа. Кресты это призвание.
2019-05-23-12:29:08.png220 Кб, 1227x1006
152 1405136
Начал постягать ваш язык. Чет пиздец у вас тут магия.
153 1405166
Всем спасибо за ответы

>>05046

>Ты про никсы или про ядро никсов?


Да, я про ядро. Знаю, что в окружении, вроде как, и так часто qt и c++ используют

>>05113

>вкатываться в С++ смысла ровно 0, иди во фронтэнд


Мне уж ближе бэк тогда, я думаю. Правда вот PHP не особо близок. Но он вроде как и бэке и во фронте обязателен к изучению. Ну и еще сейчас есть вариант быстро перекатиться в iOS разработку, но вот как-то немного смущает узкая специализация свифта под продукты Apple (хотя и мак и айфон у меня для изучения есть).
154 1405185
Пацаны, решил делать сортировку по номерам зачеток, в интовый массив все кладу по итогу, но сортировка по ебанутому работает, точнее практически не работает, но вроде все правильно сделал
https://pastebin.com/fVmkDcKj
155 1405186
156 1405225
если на проэкте используется стандартная библиотека, то, по сути, функционал пула памяти перекрывает обычный вектор с предварительно выполненным reserve
157 1405282
>>05185
У тебя A это объект типа Student i-ый, а не значение поля numb этого объекта.
Тебе надо обращаться через оператор точку к полям или стрелку, если через указатель.
158 1405301
>>05282
Спасибо, бро
159 1405365
>>05136
Ну да, а в чем проблема? Хочешь всю строку - пиши cin.getline
160 1405436
>>05136
операторы >> и << лучше не трогать для начала. Когда про перегрузку операторов узнаешь, там понятно станет. Алсо, пока перегружать эмодзи нельзя, терпеть можно
161 1405482
>>05365

>Ну да, а в чем проблема? Хочешь всю строку - пиши cin.getline


О том и говорил. Какого-то такого поведения и ожидал от этого оператора.
>>05436

>операторы >> и << лучше не трогать для начала


Ясненько, спасибо. Страуструп просто именно с них начал пояснять как работать с инпутами, аутпутами.
162 1405548
>>04681
>>04619
>>04615
Теперь я не понял, мне объясните. Что означает вектор векторов пар?
.png15 Кб, 943x641
163 1405728
>>05548
Это значит что в каждом элементе вектора содержится вектор в котором содержится пара.
164 1405731
>>05728
Надо было нарисовать их разной длины для большей наглядности, это ж не массивы.
165 1405740
>>05731
Я в курсе. Это же просто пример.
Screenshot1.png4 Кб, 767x50
166 1405912
Правильно ли я сделал + в виндовс формах, или это небезопасное преобразование и говнокод?
167 1405932
>>05046

>Несколько лет сосал хуйцы на госзаводе


Анонче, нахожусь в такой ситуации - сосу хуйцы на госзаводе. По городу вакансий на плюсах нет, кроме как на мой завод. Дай советов мудрых как выкатится с этой безнадеги.
инб4 читать хорошие книжки.
168 1405935
Поясните, что хочет этот код? В каком формате ему кормить stdin?

while (scanf ("%d%d", &n, &m) == 2) {
for (int i = 1; i <= n; i++) {
int a;
assert (scanf ("%d", &a) == 1);
...
}
169 1405967
>>05932
заведи дачу, на ней огород, выращивай овощи, будешь экономить на них
170 1406098
>>05935
Причем тут кресты, это сишечка.
Первому сканфу кормишь два целых через пробел, второму просто целые.
Делает непонятно что.
image.png94 Кб, 247x250
171 1406126
>>05967
А если серьезно?
172 1406219
>>06098
Первому нужно одно двузначное.
173 1406233
>>06219
Нет
174 1406260
О Makefile'е вопрос.

Зачем в зависимостях таргета ставят "Makefile"? То есть,

>build/main.o: main.c Makefile


> $(CC) ....



Что тут делает "Makefile"? Всё работает и без него. Заггулить невозможно, все ответы просто о таргетах в makefile'ах, а не необорот.
175 1406269
176 1406272
>>05136
Перегрузку >> и << для I/O делали наркоманы, когда С++ был еще хипстерским андерграундом. Сейчас комитет такую хуйню никогда бы не пропустил. Сделали бы через функции get/set (in/out).
177 1406289
>>06272

>через функции get/set


Куча скобок и точек? Нахуй нахуй.
178 1406292
Есть годная литература по шаблонному метапрограммированию? Та, что в шапке, ещё не устарела?
179 1406334
>>06292
соответствующая глава во втором издании "шаблонов" вандервуда, если ты только начал разбираться
из классики - александреску
шалбонное метапрограммирование на крестах постоянно эволюционирует и видоизменяется, проще всего отслеживать это просматривая соответствующие доклады с конференций
https://www.youtube.com/watch?v=IF51Gsu3Cec
плюс смотришь как развиваются соответствующие библиотеки в boost:
https://www.boost.org/doc/libs/?view=category_metaprogramming

но дзен заключается в том, что шаблонное метапрограммирование ты изучаешь не более чем как для собственного развлечения, типа такое хобби, на практике ты его врят ли будешь применять
те нужно принять то что ты просто так развлекаешься и смириться
180 1406335
>>06334
cutting edge в метапрограммировании на крестах щас типа считается boost::hana
181 1406336
>>06335
и типа она универсальная - обеспечивает метавычисления как на значениях так и на типах
freeglut 182 1406471
Аноны, кто-нибудь вкурсе, почему ReshapeFunc реагирует не только на изменение размеров окна, но и на КЛИКИ?
183 1406473
>>06471

> freeglut


Не надо использовать это говно мамонта.
Юзай: glfw, sdl2
184 1406475
>>06471
Лучше приведу код:
https://pastebin.com/7qsNVbrj
185 1406476
>>06473
Разве glfw это не glut + прочие доп. библиотеки?
186 1406507
>>06476
glut\freeglut\flfw\sdl2 и тд и тп это библиотеки для создания контекста. То есть окошка и обработка сообщений от ОС: клавиатура\мышка\джойстик и тд.
Там, конечно, не только этот функционал. Разработчики добавляют что-то своё.
Glut\freeglut не рекомендуется использовать. Они устарели и давно не обновлялись.
187 1406508
>>06507
Почему эти библиотеки во всех примерах сочетают (glad+glfw3, glad+sdl2, glut+glew и т.п.)?
188 1406510
>>06508
glad и glew это библиотеки которые подгружают расширения для Opengl
Чтобы тебе каждую функцию писать вручную не пришлось.
Почитай основы: https://github.com/glcoder/gl33lessons
189 1406549
>>06334

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


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


Не проецируй=)
190 1406576
Как за неделю освоить кресты, чтобы сделать лабы в вузике и ргз? Препод сам программистом работает, и поймёт если я ничего не знаю.
191 1406582
Аноны, объясните за статическую память, что это за заверь? Есть стек, есть куча, а это че за хуйня?
[code]
for(;;) {
static int c=0;
c++;
}
[/code]
Где этот статик вообще бля??
192 1406588
Аноны, подскажите как изменить структуру проекта чтобы стало по человечески, а не laba1.cpp. Есть проект, в нем сущестует 3 класса - два из них являются составляющими шахматы пишу, клетка и фигура, а один - общий доска шахматная. Но в первых двух классах нужно вызывать методы родителя при перемещении фигуры нужно проверить что на клетке нет других фигур например, и пару слотов коннектить. Сейчас храню в каждом классе указатель на общий, но понял что это какое-то хуёвое проектирование, раз приходиться так делать. Подскажите как можно переделать, чтобы составные классы не смогли навредить общему, если что-то пойдет не так
1fl5yi6bbpzz.png153 Кб, 640x549
193 1406616
>>06576
Пикрелейтед
>>06582
Выделяется при старте программы, освобождается при выходе
>>06588
Класс фигур с енумом в качестве типа фигуры чтобы можно было повышать пешки. Хранят также был ли первый ход, опять же для пешек.
Двумерный массив с указателями на фигуры в качестве доски.
Класс контроллер определяющий возможные ходы, хранящий была ли рокировка и ТП
Наверное ещё класс ход для визуализации, записи партий и отката ходов.
194 1406643
>>06582
По идее это стек, но static используется, чтобы локальные переменные имели время жизни такое же, как глобальные переменные.
195 1406648
>>06616
ору
в ньюс недавно обложку этой книги постили
196 1406650
>>06588
Я правильно тебя понял, ты фигуру отнаследовал от шахматной доски?
197 1406657
>>06576
писать в структурном си стиле: только функции и базовые управляющие конструкции - циклы и ветвления
как то так
198 1406661
>>06549
если ты способен применить техники шаблонного метапрограммирования на продакшене, четко осознавая что есть в этом необходимость, то за твой скилл и твое место работы можно только порадоваться-позавидовать
199 1406719
>>06650
Нет, фигура отдельный абстрактный класс. А доска обьединяет в себе фигуры и клетки. Но изнутри фигуры мне нужно обьединить сигнал Qt-шный с слотом доски, и вызывать некоторые функции при построении вектора для хода/атаки фигуры. Вот недавно какой-то баг обнаружил, что фигура при инициализации делает какую-то хуйню с доской которую я передаю по указателю, в результате чего указатель не равен nullptr, но при этом данные его не валидны, и при попытке вызвать какой-то метод программа крашится с SEGFAULT. Потому и спрашиваю, как можно огранизовать иерархию классов, чтобы фигуры и клетки не могли навредить доске, но при этом имели доступ к ее методам. Книжку про паттерны я не читал
200 1406723
>>06719
Я пока сам только осиливаю ООП, но попробовал бы так: есть класс клетки, который может быть черный/белый, пуст/занят, такой-то фигурой, если занят. А ещё лучше - внутри указатель на объект класса "фигура", в котором записана своя логика ходов и всего остального, если он nullptr - то клетка свободна.
А доска - это класс, наследующий от контейнера, содержащего объекты класса "клетки", т.е. вектор векторов клеток и доопределенные методы, чтобы объекты класса "игрок" дёргали свои фигуры.

Но я только учусь быдлокодер, потому эта схема вряд ли хороша.
201 1406726
>>06723

> потому эта схема вряд ли хороша.


Да нормальна. Ни к чему все эти усложнения. Доска обычный массив структур. Структура (как ты и описал) имеет цвет, какой-нибудь внутренний индекс для расчёта ходов, указатель на фигуру.
202 1406729
>>06719
Иерархия классов против SEGFAULT не поможет. Ты просто хуйню какую-то делал. Ограничивай количество действий которые можно сделать через публичный интерфейс. К примеру если тебе нужно чекать может ли какая-то фигура перейти на какую-то клетку, то ты вызываешь метод доски который это чекает. А не вытаскиваешь (через указатель на доску) кучу инфы (например о других фигурах) в метод фигуры и там ковыряешся потенциально что-то ломая. Можешь ограничивать доступные методы. Например, если твоей фигуре от доски нужены только методы "проверить возможность хода" и "переместить меня", то ты можешь создать абстрактный класс BoardDelegate (например) с двумя этими методами, доску отнаследовать от нее, а указатель на доску в классе фигуры объявить не как указатель на доску, а как указатель на BoardDelegate. И тогда твоя фигура сможет вызывать только этих два метода доски.
203 1406731
Сап, анон. Возникла задача визуализировать дискретно отходящую графику условно с датчика на крестах. Проект без qt, только буст. Сейчас вывод был в .bmp в папку, но нужно все же в динамике, да и сохранять на диск пиздец как не хочется. Визуализация не для конечного потребления, больше как для изучения.
Какой путь лучше выбрать?
Использовать Vulkan (opengl, directx)?
Или же как-то сохранять в numpy массивы, а затем загружать в питон?
Или лучше сразу написать враппер моих классов для того же питона, и там уже сделать визуализацию?
204 1406732
205 1406733
>>06729
Да баг с сегфолтом я уже нашел и пофиксил, просто после него задумался об проектировании, чтобы таких ошибок изначально не возникало. Про делегат спасибо, сейчас что-то такое попробую сделать
206 1406736
>>06657
Увы, но вся суть лаб и ргз классы.
207 1406739
>>06576
https://ravesli.com/uroki-cpp/
Читать и пробовать. Но за неделю ты много не изучишь. Готовься к пересдаче лучше.
208 1406746
>>06729

> создать абстрактный класс BoardDelegate (например) с двумя этими методами, доску отнаследовать от нее


Где про подобное можно почитать по подробнее?
209 1406793
Есть лаба по компьютерной графике. Надо вывести пиксель в консоли. Но putpixel не работает. Что делать?
210 1406805
>>06793
надо перевести терминал в какой-то там видеорежим, но это типа древняя хуйня, короче, можешь курить borland C через DOSBox,а можешь левую графическую либу юзать, но это не точно, сосите хуй, честь имею
211 1406849
>>06732
А все же питон использовать есть резон? Данные потом хотел математически покрутить
212 1406856
Как вкатиться в функциональщину с констэкспрами, темплейтами и прочими фишками? Нихуя не понимаю. Хочу был компилтайм богом. Есть гайды какие на русике?
213 1406873
>>06856
На хаскеле попиши, темплейты то же самое, только вид в профиль.
215 1406880
>>06334
Эмм, списки типов это же примитивная хуйня, которую в любом вузике объясняют, не?
216 1406886
>>06856
дзен заключается в том что раньше (до новых стандартов) в метапрограммировании на шаблонах приходилось использовать техники функционального программирования, а конкретно:
метавычисления на типах вообще не могли изменять состояния своих сущьностей, которыми оперировали, тебе приходилось не изменять состояние, а производить новые состояния; метавычисления на значениях были оче ограничены и ты тоже мало мог че поделать, тоже приходилось не изменять, а порождать новые значения
вместо итерации приходилось использовать рекурсию
вместо условного оператора приходилось использовать по сути вариант патерн-матчинга в виде комбинации частичных специализаций и sfinae
в новых стандартах многие метавычисления (как на типах так и на значениях) уже можно делать императивным способом, так гораздо наглядней и понятней получается

это то что касается компайл-тайм
реал-тайм лень расписывать
217 1406888
>>06880
ебанись, ни в одном вузе такой обскур тебе не будут рассказывать, студентосы просто вообще не врубят че это такое, нах
218 1406891
>>06873
Я слышал что это язык для олдов с опытом программирования от 5 лет и ньюфаги его не осилят... Мне базовые понимания нужны, чтобы в ногу со временем идти так сказать.

>>06886
Вот это ты загрузил меня. Накидайте лучше материала какого, а я уже сам ковырять буду.
219 1406898
>>06878
Скажи это ебучей студии, у которой уже ГОД баг с временем жизни объектов
220 1406906
>>06643
Хуйню какую-то написал. Есть сегмент данных, размер которого фиксирован, есть сегмент кучи, который идет за ним в адресном пространстве, и есть сегмент стека, который растет с верхних адресов вниз.
221 1406907
>>06582
static там же, где глобальные переменные. Просто функция выполняет роль namespace
222 1406921
>>06891
берешь boost.hana, разбираешься, смотришь зачем, смотришь как внутри сделано
понимаешь что это нахуй не нужно, а только поиграться
все
223 1406922
>>06849
Можешь ещё в gnuplot перегонять данные
224 1406927
>>06906
Ну сорян, таких подробностей не знаю, я читал про постоянную память(она была может быть условно в книге стеком обозначена) и динамически выделяемую(кучу). И он тоже спросил - стек или куча?
>>06898
Что за баг, и на каких версиях присутствует?
225 1406937
>>06927
https://developercommunity.visualstudio.com/comments/583321/view.html
Ответы разрабов это вообще пиздец
226 1406948
>>06906
Ответ от домохозяек для домохозяек. Ты хоть про какой формат исполняемых файлов, ос и рантайм говоришь?
227 1406953
>>06937
Ну вон летом починят xd.
А ведь c++11 в студию запилили по-моему в '13 версии ведь.
228 1407058
>>06898

>баг в студии


Причём тут иде вообще к языку? Я вообще иде не пользуюсь, build.sh в сосноли запускаю и всё.
229 1407060
>>06731
окошко из opencv2, где-то на хабре его даже в дебаггер встраивали
230 1407061
231 1407065
>>07058
Молодец. Когда закончишь делать лабы, приходи.
232 1407071
>>06334
STL тоже подпадает под понятие мета-программирования?
233 1407089
>>07065
Причём тут лабы, лол, я про рабочий проект. Ты может охуеешь, но для конпеляции не нужно вообще ничего, кроме конпелятора.
234 1407093
>>07065
Вообще чего тебе такого даёт иде? Для редактирования есть тот же vs code, для отладки gdb. И смысл в иде?
235 1407094
>>07065
К тому же там инклюды какие-то вонючие подключаются ( stdafx.h) и есть отличия от стандарта и баги как выше писали. Одни минусы и ноль полезности при злоебучей тяжеловесности. Такое говно. А ты говноед.
236 1407096
>>07094

>отличия от стандарта


https://docs.microsoft.com/en-us/cpp/cpp/nonstandard-behavior?view=vs-2019
По сути пользуясь их иде ты пишешь на некотором диалекте плюсов, короче говно говно говно.
237 1407106
>>07089
Насколько большой у тебя проект? Хотя бы LOC метрику приведи.
>>07093

> Вообще чего тебе такого даёт иде?


Конкретно студия - почти ничего. Но вместе с решарпером становится гораздо удобнее и быстрее кодировать.

> для отладки gdb.


Не удобно дебажить без контекста.
>>07094

> К тому же там инклюды какие-то вонючие подключаются ( stdafx.h)


Без комментариев. Почитай про precompiled headers.
>>07096

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


Ну кто же виноват, что ты решил наговнокодить?
¯\_( ° ʖ °)_/¯
Может ещё gnu extensions вспомнить?
238 1407107
>>07094

> stdafx.h


Это предкомпилированный заголовок, ты можешь туда всякие инклюды добавлять часто используемые, чтобы сохранить время.
И это кстати отключается одной галочкой, если не нужно.
239 1407118
>>07071
нет конечно
stl в первую очередь поддерживает парадигму обобщенного программирования
240 1407120
>>07106

>Насколько большой у тебя проект? Хотя бы LOC метрику приведи.


Огромная либа, сравнимая с STL по размеру.

>решарпер


Всё есть в вскоде том же.

>прекомпилед хедерс, можно отключить


Да какая разница, зачем вообще иде что-то добавляет отсебятину какую-то, если можно без этого?

>наговнокодить


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

> не относится к static


Ну не относится к описанному в стандарте static. Мало ли чё они там заговнокодили у себя, их дело, всё равно нормальные люди их говно не юзают.
242 1407124
>>07107

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


Бля, а сам я создать такой хедер с инклюдами типа не могу, религия не позволит или че? Нахуя мне это говно пихать, меня вот лично это бесит.
243 1407131
>>07124

> Огромная либа, сравнимая с STL по размеру.


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

> vscode


Что есть? Зачем мне ещё один браузер на компьютере?

> Да какая разница, зачем вообще иде что-то добавляет отсебятину какую-то, если можно без этого?


Студия добавляет pch потому что ты забыл снять галочку при создании проекта.

> Одно дело экстеншн, который добавляет новое, но со стандартом не расходится, другое это именно расхождение.


Сколько раз из-за этого расхождения у тебя что-то не получалась / ломалось? Как думаешь, увеличится ли это число ближайшие десять лет?

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


Кончено не относится. На то он и баг, а не "расхождение со стандартом".
244 1407135
>>07131

>ты не знаешь, что такое pch


Где я такое говорил?

>Зачем мне ещё один браузер на компьютере?


Не понял, удобный текстовый редактор же.

> забыл снять галочку


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

>Сколько раз из-за этого расхождения у тебя что-то не получалась


Нисколько, я не юзаю микрософтовский компилер потому что.

>На то он и баг,


Не относится он потому что чувак спрашивал про С++, а С++ <=> стандарт, чем является ключевое слово статик в имплементации мелкомягких и где там у них баги дело десятое, понимаешь? А ты так написал(или не ты, тот анон в общем), будто плюсы равносильно визуал студии, на мой ответ с доходчивой табличкой со скоупами/временем жизни/линковкой ответ был мол скажи это студии, чего блядь, причём тут ИДЕ вообще? Я считаю, что у меня полыхнуло совершенно обоснованно.
245 1407136
Ладно, пожар утих.
А чем компилируешь ты, анон?
246 1407140
>>07136
Визуал студио пользуюсь и компилю там же. Не понимаю дебилов, которые сидят на clang'e на какой-нибудь пингвибунте и дрочат вим.
247 1407142
>>07136
Дома gcc, на работе один проприетарный компилятор.
248 1407143
>>07140
Ты бесплатную версию качал, community или как там она называется?
249 1407144
>>07142
Ты не устаёшь от кодинга на работе?
250 1407146
>>07144
Устаю, дома не часто что-то пилю, но бывает нахлынет вдохновение допилить недопиленное, ну ты понел.
251 1407151
>>01309 (OP)
Помогите все разумные способы написания "Вuжуал Сtyдия" придумать, не могу автоскрытие настроить, то и дело какой-то ребенок со своим WinAPI прорывается, и из треда сразу выйти хочется еще на 20 реинкарнаций.
252 1407171
>>07136
ВСтудия, КютКреатор с мингв и гцц, дома ничего не делаю.
253 1407180
>>06907
а я понял, что бы эту переменную не зашкварили снаружи, на хуй так надо делать? Что-то вроде замыкания?
254 1407185
>>07180
Это чтобы функция сохраняла значения каких то параметров от предыдущего вызова этой функции. Это еще в сишке сделали, например чтобы функция генерации псевдослучайных чисел использовала предыдущее значение для генерации следующего, и хранилось бы оно только в одном месте.
255 1407237
>>07180
статик переменная даёт статическое время жизни, она создаётся в начале программы и живёт до самого конца программы
256 1407239
>>07237
те везде, где тебе нужно такое поведение с долгоживущей переменной, юзаешь статик
257 1407260
>>07185
брат, вот за такое я очень благодарен, охуенно, теперь понял зачем это нужно, брат, где ты такое прочитал? А то в большинстве учебников написано "что", а не "зачем".
258 1407262
>>07237
"статическое время жизнь" - это блядь откуда такое? Я не выебываюсь, просто уточнить хочу.
260 1407318
>>07237

>создаётся в начале программы


там вроде гарантируется только то, что будет создана до первого использования. Точный момент создания не регламентирован.
261 1407436
>>04612
бамп
262 1407485
>>07318
ну да, имеел ввиду, что с момента создания до конца программы, да, хуёво выразился
263 1407672
Как правильно дебажить релизную версию программы?
264 1407674
>>07672
Хорошим логированием
265 1407675
>>07151
Так ты сразу выйди, и больше не заходи, в чем проблема то?
266 1407677
>>07136
MSVC 2019 и на работе, и дома.
267 1407680
>>07136
Компилирую MSVC под винду и gcc под юникс. Честно говоря, не вижу особой разницы, ибо весь проект симейком управляется. После генерации на любой ОС остается нажать одну кнопку для полного билда.
268 1407700
>>07672
Смотря как оптимизатор отработал. У тебя там дамп или что? Если нет, то качай гидру
269 1407702
>>07700
Свое приложение, а не чужое. Ты меня не правильно понял. Допустим, в дебаге весь жизненный цикл программы прокликал, все работает, а релиз версия крашится, где-то неопределенное поведение. Как дебажить?
270 1407746
У себя на компе програ нормально компилится и работает.
Отправил прогу другу. Нормально компилится, но работает неправильно. Там вместо нормального числа образовался nan.

Дело в компиляторе? У меня линукс и дефолтный code bloks. У друга мак. Есть какие-то флаги, которые надо поставить перед компиляцией, чтобы прога нормально работала на любом железе?

Сам использую просто
// g++ -std=c++11 name.cpp
271 1407752
>>07746
Дело в ДНК.
272 1407757
>>07672
А ты не очень умный
273 1407834
>>07702
Читать-прогонять полученный асм. Лично я такой баг однажды так и не нашёл после целого дня поиска. Отключил оптимизацию во всём файле, где была ошибка, и забил.
274 1407854
>>07702
мб где-то структура не обнуляется, или гонка если есть тхреды.
275 1407891
Начал изучение шаблонов, захотел реализовать шаблонный класс, который позволит обрабатывать одномерный массив любого типа, где я обосрался, и как правильно сделать?
276 1407905
>>07891
ахахах
кинь на пастбин) ну ты и говнарь
277 1407913
>>07905
соричи, забыл про эту хуйню, файлы комментом там разделяются?
279 1407934
>>07891
Шаблоны нельзя писать раздельно в хедере и файле реализации. Вся реализация должна быть в хедере.
280 1407935
>>07934
ну препод грит можна, спасибо.
282 1407951
В рот ебал ваш язык поганый. Животные.
283 1407952
Это очевидно >>07947 ему >>07934
.PNG25 Кб, 546x155
284 1408027
285 1408081
>>07934
в стандарте 98 были прописаны 2 способа - модель включения и экспорт шаблонов
но оказалось что экспорт шаблонов крайне сложно реализовать в компиляторе (пара реализаций все же была) и при этом их полезность оказывается сомнительной
об этом подробно писал саттер в "новых сложных задачах на c++"
286 1408083
>>07854
Тыкать пальцем в небо такое себе занятие. Мне нужен проверенный вариант.

>>07674
>>07834
Спасибо, анонам. Включил генерацию асм листинга и мапы.
Еще нагуглил прикрутить туда WinDbg, все супер.
287 1408102
>>08083

>Тыкать пальцем в небо


ни один дебаггер тебе не скажет, что ты забыл обнулить структуру перед использованием. Попробуй мозгами пошевелить чтоле
288 1408105
Аноны, есть прога с использованием функции qsort, которой там быть не должно. Можете подсказать как от нее избавиться?
Выглядит так:
qsort(&points[1], n - 1, sizeof(Point), compare);
sage 289 1408114
>>08105
Берёшь и сортируешь массив от &points[1] до &points[n-1] с помощью функции compare сам.
290 1408115
>>07672
Попробуй скормить статическому анализатору.
291 1408131
>>08105
Если я правильно понял значения её аргументов то:
using std;
sort(++begin(points), --end(points), compare);
292 1408156
>>07752
Что за ДНК?
293 1408163
>>08156
двухзондовый нейтронный каротаж
294 1408164
>>08163
Ясно.
295 1408264
>>08114
А как это будет выглядеть?
Я прост хуевый погромизд, помогаю просто.
296 1408266
>>08264
Нормально будет выглядеть.
297 1408273
>>08266
Покажи, братишка
298 1408290
>>08273
В глаза долбишься?
299 1408293
Драйверописатели тут? Поясните почему WDK не поддерживает STL? Там же по факту нужно просто реализовать несколько ключевых функций и все должно заебись работать. Типо в new malloc заменить на ExAllocatePool, и в delete free заменить на ExFreePool. Ну может ещё в нескольких функциях поменять методы создания потоков/объектов синхронизации. Почему мне при написании драйвера приходится жрать говно и не иметь ни динамического массива, ни строк, вообще нихуя и это в 2019, сука, году.
300 1408297
>>07060
Короче я не послушал всех и сериализовал в бинарник, и выцепил в великолепном питоне через numpy. Потом может прикручу враппер, больно уж годная связка выходит
301 1408300
>>07136
Визуальная студия, и qt с ней же. На шинде заметно шустрее мингв. Проект ща мсвцшный, но запараллелен с cmake, хоть в нем мне сложна.
302 1408304
Что не так с развитием цпп? Хочу использовать везде шаблоны, но прога собирается вместе с бустом просто пиздец долго, и это на i7 на всех ядрах.
303 1408305
>>08300
То есть у вас cmake И vcxproj? Нахуя второе?
304 1408309
>>08304
P C H
C
H
305 1408310
>>08290
Не ебу как это реализовать в "моей" программе
306 1408311
Аноны, а msvc с современным языком и всякими stl даёт какую-нибудь векторизацию и распараллеливание само? Я не хочу сам писать треды и обосанные мьютексы, а для асинка я пока слаб. Почему, если компилятор видит, что для каждого элемента вектора надо сделать +1, нельзя это как-то в параллель?
307 1408314
>>08305
vs хреново с ним дружит, не было в начале 17й студии неких вещей типа профайлера. Не знаю, как сейчас.
>>08309
Спасибо, включу, с института на автомате выключал
308 1408322
>>08311

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


>а для асинка я пока слаб


ну вот ты сам и ответил
309 1408324
>>08293
потому что шаблоны в ядре юзать совсем не комильфо
sage 310 1408329
>>08311

>распараллеливание


В 17х появилось ExecutionPolicy для многих алгоритмов, правда я нигде не видел, чтобы их кто-то использовал.

>векторизацию


Любой компилятор может только самую примитивную векторизацию сделать. Как говорится, _mm256_pishi_sam_pd();

>Я не хочу сам писать треды и обосанные мьютексы


Пиши CAS циклы и wait-free алгоритмы.
311 1408330
>>08293
Потому, что STL инклудит очень много всякой хуйни. Теоретически - ты можешь "вычленить" нужные тебе контейнеры, практически - очень тяжело.

Мы написали свою строку, вектор, лист, хэш таблицу и всякие мутексы\локгварды.
Зато трайп-трейты в кернел просто копипастятся без проблема.

>>08324

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


Кто тебе такую хуйню сказал?
312 1408331
Ну ананасы, помогите с исключением функции sort из кода, лабу надо сдавать, а я не ебу как ето сделать.
http://cpp.sh/6skm7
93 строка
313 1408332
>>08330

>Кто тебе такую хуйню сказал?


Хуйня - это когда говнокодеры тащат в ядро плюсы с stlями, эксепшенами и прочей ебалой, а адекватные будут писать на C.
314 1408338
>>08332
ясно, мы вам перезвоним
315 1408340
>>08338
много драйверов написал?
316 1408348
>>08340

>драйверов


это все нинужна
317 1408351
>>08348
клован? цирк уехал?
318 1408353
>>08351
нужно писать сайты на Vue/React и голосовать за Путина
319 1408355
>>08353
когда в руках молоток - всё вокруг кажется гвоздями
320 1408356
>>08355
в голову тебе гвоздей вбить либирашка русофобная
321 1408358
>>08356
потолще пжалста
322 1408359
>>08358
знал что тебе понравится, няша, а теперь прогнись :3
323 1408360
>>08359
пиздуй обратно в цирк
324 1408363
>>08360
мы уже здесь, сладкий, клоунируем с тобой на пару :3
325 1408365
Бля, пацаны, я вот выучил плюсы, писал тут недавно по этому поводу, ну и я не придумал короче, что дальше делать, ну и короче что вы думаете? Взял да и давай маерса читать. Бля! Я охуел! Я ж нихуя не знаю! Я ж говнокодер бля! Оказывается, на плюсах писать и собака может, а вот уметь писать ексепшн-сейф код с адекватной инкапсуляцией и к тому же производительный это голову иметь нужно! Пиздец!
326 1408366
>>08331
Бумп
327 1408369
>>08365

>Я ж говнокодер бля!


Таким и помрешь.
>>08366
Нахуй иди.
328 1408376
>>08363
не суди по себе, дружок. Мне клованов на работе хватает, которые свято верят в то, что 6-ая студия генерит самый быстрый код, а все что позже 8-й нахуй не надо. А тут еще ты со своими шаблонами в дровах.
329 1408379
>>08376

>студия


Оно еще и дебил с виндой.
Клоун as is, хаха.
330 1408381
>>08365

>выучил плюсы


Перестал читать. Выучить поюсы невозможно.
331 1408384
>>08365
Все хорошо, бро. Все крутые люди когда-то крутыми не были, погружайся в сабжекты, строй таски и улучшайся, не все же время uznay_ebal_li_ya_telku_s_takim_imenem.c компилить.
332 1408386
>>08379
Я же просил потолще, хули ты такой слабак
333 1408390
>>08386

>эта ОБИДА умственно и не только неполноценного виндузятника


As expected.
334 1408393
>>08365
ты даже не пытаешься
335 1408397
>>08393

>эта промахивающаяся мимо постов ущербная омежка


А ручонки-то дрожат, хаха.
336 1408398
>>08365
лучше кнута почитай или нейронку напиши
337 1408401
>>08397
ты же еще не знаешь, что ты собакен, да?
338 1408403
>>08401

>эти невнятные визги


Все, шизик вразнос пошел.
Помянем.
339 1408405
>>08403
О, да. Скажи, когда на тебя лает собака на улице, ты становишься на четвереньки и лаешь ей в ответ?
340 1408406
>>08405

>эти нелепые омежные оправдания


>эти риторические вопросы


Верный признак лоха по жизни, кстати.
341 1408409
>>08406
Гавкай, гавкай, собакен, хочешь косточку?
изображение.png1,1 Мб, 1280x720
342 1408410
>>08409

>эти риторические вопросы №2


>это нищее чмо на плюсах под виндой


Все сходится.
bonePNG47.png21 Кб, 1600x1600
343 1408412
>>08410
Голодный пёсик, держи. Хочешь мы тебе родословную напишем?
344 1408413
загружено.png74 Кб, 1200x630
345 1408414
347 1408465
>>08115
Нифига ты тролль.
348 1408502
>>08332
Но ведь как раз таки на си больше шансов допустить ошибку. Деструкторов нет и ты сам должен освобождать всю выделенную память -> большой шанс забыть про это и получить утечку.
349 1408527
>>08502
Ты отвечаешь человеку который на вопрос про шаблоны пишет про эксепшоны. Следовательно он или тролль, или дебил, а ты дебил, что его коментишь.
350 1408542
Объясните почему вот такая хуйня работает:
int some_number = 5;
auto func = [&]() ->int
{
return some_number +=2;
};
some_number = func();
А при передаче этой лямбды в другую функцию требуется обертка в виде std::function, т.е. вот это не работает:
using func_ptr = int(звездочка)();
void test(func_ptr func)
{
func();
}

test(func); //ошибка компиляции
Что такого магического делает std::function, что заставляет это работать?
351 1408575
>>08542
Внезапно, оборачивает лямбду.
Либо принимай std function, либо делай функтор шаблонным параметром
352 1408576
>>08542
Лямбда это не функция, а функциональный АБ ЪЕКТ, логично, что твой указатель на функцию это вообще другой тип.
353 1408584
>>08542
#include <iostream>

auto func = [](int& a)
{
return a +=2;
};
using func_ptr = int(*)(int&);

void test(func_ptr f, int& a)
{
f(a);
}

int main()
{
int a = 0;
test(func, a);
std::cout << a << std::endl;
}

Алсо если ты не капчуришь переменные извне, то у лямбды есть конверсия к функшн поинтеру, так что вот так сработает, например.
354 1408585
>>08542

>a ->int


Явное указание выходного типа теперь избыточно.

>using func_ptr = int(звездочка)();


>void test(func_ptr func)


>{


>func();


>}


И вообще типы лучше нигде явно не указываться если это точно не требуется:
auto test = [](auto func) { func(); };

И кстати лямбда - это выражение языка, описывающее замыкание, а не само замыкание.
355 1408587
>>08502
есть много способов выстрелить в ногу. Можно и в деструкторе что-то забыть
356 1408588
>>08527
а логическая цепочка шаблоны->плюсы->эксепшены разве не очевидна?
357 1408599
>>08576
А какой типо тогда у этого объекта? Как мне кастануть к нему, сделать указатель на такой объект? При наведении курсора на него, показывает что-типо lambda []... , но к такому типу нельзя привести.
358 1408600
>>08584
А почему то что я захватываю туда что-то вообще имеет значение? Оно туда при компиляции идёт как дополнительный аргумент или что?
359 1408603
>>08588
Нет, ты вполне можешь использовать шаблоны без эксепшенов, что за дикие ассоциации?
360 1408606
>>08585
Ну аргументы лямбды Я указываю т.к. если это объект то при попытке доступа к методам или полям этого объекта студия не показывает список со всеми этими свойствами и приходится их вручную самому писать, а не 2-3 первых буквы и дальше стрелочками.
361 1408628
>>08599

>А какой типо тогда у этого объекта?


У каждого компилятора свое внутреннее представление о типе лямбды если интересно узнать какой именно тип, то читай Маейрса "Эффективный и современный С++", поэтому при присвоении лямбды переменной нужно писать auto или std::function (но в этом случае будет просто неявный каст, поэтому так делать нужно, если очень надо). А для твоего случая лучшим вариантом будет сделать через шаблон:
template<typename Functor>
void test(Functor func)
{
func();
}
И компилятор сам разберется, что ему подставлять.
362 1408643
>>08588
Ну и что не так с экспепшенами? В ядре тоже обработка исключений. Даже несмотря на то, что их можно просто не использовать, разве нельзя приделать их поддержку?
363 1408660
>>08348
Один, в продакшене сейчас, мне ок.
364 1408662
>>08643
SEH - это слегка другое, и он не сочается с С++, т.к. не может разматывать стэк, если присутствуют обьекты с деструкторами
365 1408663
>>08340
>>08660
не туда ответил
366 1408665
>>08603
Да можно. И эксепшены можно, и все вместе можно,оборачивая в многоуровневые try catch'и. Вопрос в том, как сделать проще и понятнее, с минимумом кода.
367 1408679
>>08662
вроде в компиляторах крестов при реализации собственных исключений испльзуют seh (или его аналоги в юниксах), но не уверен, где то слышал или читал
368 1408682
>>08679
нет, исключения из стандарта и SEH - это абсолютно разные вещи. SEH не рекомендуется использовать микрософтом вообще нигде, кроме драйверов, т.к. в драйверах SEH ловит кое-какие проблемы, которые вообще никак не поймать по-другому.
369 1408687
>>08682
я в книжке рихтера читал что исключения с++ в компиляторе майкрософт используют seh
это было под винду и относительно давно
поэтому и спросил, вдруг кто лучше знает
image.png2 Кб, 451x23
370 1408694
>>08682
Если вот эту хуйню на пикриле включить то и SEH исключения тоже ловятся в обычном try catch ведь, значит там где-то всеравно реализуются обработчики сеха.
371 1408834
>>08599

>А какой типо тогда у этого объекта?


У каждой лямбды свой уникальный unnamed тип. Имени у него нет, поэтому никак ты его не напишешь, указатель не сделаешь и не кастанёшь.
>>08600
Потому что так гласит Стандарт.
372 1408836
>>04229
ну тип
wchar_t bite = {0x8840};
std::wstring buffer = L"";
buffer += bite;
373 1408838
>>08834

>так гласит Стандарт


>The closure type for a non-generic lambda-expression with no lambda-capture whose constraints (if any)


are satisfied has a conversion function to pointer to function with C++ language linkage (10.5) having the
same parameter and return types as the closure type’s function call operator.
C++17 International Standard 8.4.5.1:7
374 1408861
>>08834

>Имени у него нет, поэтому никак ты его не напишешь,


На сам деле можно, просто не нужно:
auto MyLambda = []{};
using MyLambdaType = decltype (MyLambda);
375 1408869
>>08861
Тсс, не называй его имя...
https://m.habr.com/ru/company/mailru/blog/341584/
376 1408877
Суп, зацикливается на 66 строке. ЧЯДНТ?
https://ideone.com/fork/ImVc2d
377 1408894
>>08877
Сравниваешь по одному индексу, меняешь другой
378 1408899
>>08861
Лол, а я чёт деклтайп сразу отмёл и не стал проверять.
379 1408900
>>08894
Подробнее, пожалуйста
Безымянный.png16 Кб, 869x319
380 1408905
>>08900
Сделал
while (i <= j) {
while (Comparator(a, v) == true)
++i;

while (Comparator(a, v) == false)
--i;

if (i >= j)
break;

swap(a[i++], a[j--]);
}
Теперь
381 1408906
>>08899
Вернее как, написал decltype(func(0)), вернуло инт и я такой, ну да, деклтайп не поможет. Пхах, бывает.
382 1409060
Как инициализировать си-строку в структуре?
Литералом норм получается, а переменной никак.

https://onlinegdb.com/HJe_DI-apN
383 1409064
>>09060
memcpy?
не жрать говно и использовать wstring?
384 1409067
>>09064

>не жрать говно и использовать wstring?


Не могу, у меня WinApi головного мозга, там иначе никак

>memcpy?


Это значит, что через фигурные скобочки никак не получится? Только руками в каждый член присваивать?
385 1409072
>>09067

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


Пишешь конструктор и не ебешь мозг. И лучше использовать std::copy вместо memcpy.
386 1409073
>>09060
Обычные массивы не присваиваются друг-другу. Используй конструктор присваивания, в котором вызывай спец. функцию для копирования.
387 1409074
>>09072
Я не могу запилить конструктор для структуры, определенной в винапи
388 1409104
>>09060
Тупо сделай конструирующую функцию, например
wchar_t t1[] {L"213123"};
wchar_t t2[] {L"2126783"};
auto makeSample = [](bool fl, gsl::span<wchar_t> s)
{
Sample sam;
sam.flag = fl;
using namespace std;
copy(begin(s), end(s), begin(sam.caption));
return sam;
};
auto s1 = makeSample(true, t1);
auto s2 = makeSample(false, t2);
389 1409119
>>09074
функцию напиши. В WinAPI жи есть CString, который под юникодом спокойно преобразуется в std::wstring в обе стороны
1500438082191.gif4 Мб, 400x200
390 1409276
>>1396436
Бамп
391 1409432
Допустим, есть какая то линия из пикселей, не обязательно прямолинейная. Как построить линии из каждого пикселя этой линии, перпендикулярные основной линии? Кажется это называется нормаль или как то так? Есть какие то готовые методы или формулы?
392 1409434
>>09432
Какой класс?
Ты няшная?
393 1409436
394 1409441
>>09432
Причем тут С++? А так нормаль к кривой в данной точке это перпендикуляр к касательной в данной точке. А касательную уже легко найти, найдя производную. Но матанализ был 9 лет назад, поэтому могу наврать.
395 1409443
>>09441

> А касательную уже легко найти, найдя производную.


Это я знаю. Но это работает, только если известна формула графика функции. А у рандомной нарисованной кривой формулы нет.
396 1409449
>>09443

>Но это работает, только если ты не дебил.


А ты дебил и школьник
Так ты няшный? :3
397 1409451
>>09449
По делу есть что сказать?
398 1409453
>>09451

>По делу


Деньги вперед.
399 1409454
>>09453
Это бесплатный тред вообще то.
400 1409455
Почему люди не пытаются сэмулировать(wine)/переписать win32 для линукса и запускать приложения, изначально которые для винды написаны?
401 1409461
>>09454

>Это бесплатный тред


Для школьников (тебя) - платный.
402 1409463
>>09432
У тебя есть три точки. Точка через которую нужно провести нормаль и две соседних. Проводишь одну касательную черех центральную точку и соседнюю, и вторую касательную через центральную точку и второю соседнюю. Находишь среднюю между ними - от нее строишь перпендикуляр. По формулам - у тебя есть формула прямой проходящей через заданую точку. Все будет упираться в нахождение коэффициентов (наклона прямой) k. Находишь коэффициент первой касательной (по двум точкам - вычитаешь соотвествующие координаты друг из друга и делишь), находишь коэффициент второй касательной. Потом тебе нужно продумать как именно высчитать средний коэффициент. Потом делаешь над ним очевидные преобразования (чтобы получить перпендикуляр) и всьо.
403 1409465
>>09455
Я чето не понял твоего поста. Так вайн - это и есть попытка сделать Win32 подсистему для гану-луникса
404 1409468
>>09443

>у рандомной нарисованной кривой формулы нет


Дык у нее и производная не во всех точках может существовать => в какой-то точке может не быть нормали / быть больше одной нормали.
С другой стороны, в кампухтере все равно это скорее всего будет ебошится численными методами.
405 1409470
>>09465
Но это эмулятор и не на уровне ядра.
406 1409472
>>08687
Все правильно. В винде есть 2 типа обработчиков SEH и VEH. Почти везде используется SEH.
407 1409473
>>09468
А вот этот вроде не совсем дебил.
Очень странно.
408 1409477
>>09463
Мне вообще изначально похожий метод пришел в голову, но я покумекал насчет него, порисовал в тетрадке, и там хуйня получится скорее всего. Постарался нарисовать. В масштабе пикселей эти нормали будут хаотичными. А должно быть у них у всех направление, как на второй пикче белыми линиями.
409 1409478
>>09477
Такая няша :3
Класс 8-9 максимум, очаровательный дурачок ребенок.
410 1409479
>>09478
Заткнись) От твоих постов все равно нет толку.
411 1409480
>>09479

>Заткнись)


Чмок тя :3

>нет толку.


Решение только после оплаты :3
412 1409481
>>09480
Оплату заберешь в кассе.
413 1409482
>>09481
Решение смотри в личке.
414 1409512
>>09477
Ну тогда тебе как-то сглаживать нужно. Можешь попробывать строить не по соседним точкам, а например через две. Или высчитывать несколько нормалей - одну по соседним точкам, вторую по удаленным и брать среднее. Если тебе именно плавность нужна, то тут наверное в сторону какой-то скользящей средней или чего-то подобного думать надо.
415 1409532
>>09512
Я уже склоняюсь к тому, что нахрен эти нормали. Все равно для моей основной задачи это плохо подходит. Надо какое-то другое решение.
Но за ответ спасибо.
416 1409540
>>09532

>Надо какое-то другое решение.


Например мозги
417 1409544
>>09540
Чувак, хули ты тут желчью плюешься?
418 1409548
>>09544
Потому что могу.
419 1409550
>>09548
Шитпостишь только.
420 1409554
>>09550

>2ch.mail.ru/зк


>Шитпостишь


Что еще делать в загоне для дебилов (тебя), хаха.
421 1409562
>>09554
Каждому свое. Дебилам - шитпост, а кто хочет, может и нормально общаться.
422 1409565
>>09562

>два дебила тупят над школьной задачкой коллективно


>так нихуя и не решили


>нормально общаться.


О да.
423 1409579
>>09565

>школьной задачкой


3-4 курс университета так—то
424 1409582
>>09579

>построить нормаль к линии на плоскости


>3-4 курс университета


Не знал что есть университеты для счастливых обладателей 47 хромосом (тебя)
425 1409603
>>09482
Обосрался.

мимо
426 1409628
>>09582
Опять погавкать вылез, собакен? Кости кончились?
427 1409629
428 1409631
>>09629
я уже понял, что тебе понравилось, косточка как раз для тебя, дружок
429 1409632
>>09631

>эти оправдания de huesosa


Лол.
430 1409634
>>09632
косточка для хуесоса, что не так?
431 1409676
Сап. Класс имеет геттер, возвращает очевидно конст реф.
Почему auto g = foo.getter() выдаёт мне значение? Авто же вроде как парсит эту хуйню. Конструктор копирования удален.
432 1409681
>>09676

> Авто же вроде как парсит эту хуйню


Авто выводит тип, а квалификаторы вроде так называются типа (указатель, ссылка, константа) не выводятся.
433 1409682
>>09676

>Почему


by design
если хочешь ссылку, то объявляй как ссылку: auto &g = foo.getter()
434 1409686
>>09676
У рефференса есть незначительное отличие от указателя в том что указатель это (семантически) отдельная сущность (которую, к примеру, можно скопировать), тогда как рефференс (семантически) считается синонимом объекта. На низком уровне это естественно тоже отдельная сущность но на высоком (в тексте программы) когда ты каким-либо образом используешь рефференс считается что ты работаешь именно с самим объектом (на который указывает рефференс). Поэтому, к примеру, нельзя создать именно копию рефференса (естественно не занимаясь какой-то хуйней с reinterpret кастами или чем-то подобным). При
Foo& aaa = foo;
Foo& bbb = aaa;
у тебя во второй строчке не создается копия рефференса аaa, а объявляется новый рефференс bbb на объект foo потому что семантически вторая строчка равноценна Foo& bbb = foo; - потому что aaa это синоним foo а не настоящая самостоятельная сущность. Поэтому и foo.getter() парситься так как будто вместо него указан именно объект (на который указывает рефференс). Почему const пропадает я не могу объяснить, там есть какая-то дрисня с выводом типов (и параметров шаблонов) что иногда отбрасывается самый внешний const, но я так и не смог понять какого хуя. Каким отбразом конструируется новый объект с удаленным коструктором копирования тоже итересный вопрос. У тебя там могут быть неявные касты - полбъявляй остальные конструкторы как implicit. Или может дебагом посмотри каким именно конструктором строится объект и оттуда разбирайся.
435 1409695
Посоветуйте как мне сделать правильнее\лучше.
Делаю игру. У игрока есть способности (реализованы просто калбеками). Например, создать какую-то сущность на карте или удалить её с карты.
Также имеются режимы игры (для каждого свой набор способностей).
Внутри каждого режима есть свои состояния: подготовка, игровой процесс, конец и тд.

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

Может через какой-то паттерн или какую-то йоба приём можно это сделать?
Типа, состояние переключается и посылает эвент, а обработчик на него реагирует в Вов сделано подобное, правда там не для игровой логики это сделано, а для интерфейса?
436 1409714
>>09695
Ты вроде уже все описал, не? Делаешь машину состояний, задаешь действия при переходе от состояния к состоянию.
https://ru.wikipedia.org/wiki/Автоматное_программирование
437 1409716
>>09714

> Делаешь машину состояний, задаешь действия при переходе от состояния к состоянию.


Так и сделал.
Там что-то вроде: actionManager.UseAction( "createMap" ); и тп.
Но посчитал что вместо прямого вызова можно сделать по другому.
438 1409726
Для плюсов есть какой-то пакетный менеджер?
439 1409728
>>09716
Это что-то не то, у тебя явно вызываются действия вместо запроса смены состояния.
440 1409744
>>09728
Всё так у меня.
Сначала меняется состояние, а затем происходят действия (если нужно).
А я хочу чтобы вместо прямого вызова какой-то функции было что-то вроде посылки событий, но кроме обсервера какого-нибудь я ничего не придумал (и кроме того что есть сейчас).
441 1409746
>>09726
Conan, Vcpkg
442 1409748
>>09746
Спасибо. А какой лучше юзать новичку? Чтоб поменьше ебаться и большой репозиторий.
443 1409755
С программированием знаком, но с ++ не очень. Захотел написать что-то с OpenGL, но нигде не написано как это делать from scratch. Ну или from scratch считают использование CMake/скачать готовый проект.

Дайте ссылку на ресурс (сайт/книгу/статью), где можно почитать нахуя этот CMake нужон и как писать на плюсах имея только g++, vim и клавиатуру?
Только не надо затирать о boilerplate. Я хочу понять как работают плюсы.
Желательно чтоб не было заточено под Linux, на работе, к сожалению, винда.
445 1409758
>>09756
Там просто уроки OpenGL. Мне не это нужно.

>нахуя этот CMake нужон и как писать на плюсах имея только g++, vim и клавиатуру?

446 1409760
>>09744
Ну так используй Qt с его сигналами-слотами, ну или Boost.Signal, если впадлу заморачиваться с Qt с его moc.
447 1409761
>>09758
Никак.
448 1409762
>>09761
Почему?
449 1409765
>>09762
Потому что нахуй иди вот почему.
450 1409768
>>09758
Создаёшь пустой проект, включаешь нужные заголовки opengl, компонуешь с библиотеками opengl и всё.
451 1409773
>>09768
Если бы всё было так просто и без ошибок, я бы не писал сюда. Я же сказал, ++ слабо знаю.
452 1409779
>>09760
Забей. Ты вообще о другом.
453 1409812
>>09773

> двач, как настроить проект на opengl


>> вот тебе инструкция


> нет, хочу сам всё сделать


>> ну тогда сделай то-то и то-то


> иди нахуй быдло у меня ошибки вылазят

454 1409816
>>09748
Они оба довольно простые, но лучше Конан изучить, он пока что единственный кроссплатформенный.
455 1409822
>>09812
Ты долбаеб? Я не просил настроить мне проект на OpenGL, глаза ванишем помой.
456 1409830
>>09822

>КУДАХ БАБАХ КУКАРЕКУ


Разрывом малолетнего долбоеба удовлетворен.
457 1409836
>>09822
Перечитай свои высеры ещё раз, плиз
458 1409844
>>09755

>нахуя этот CMake нужон


Когда у тебя проект состоит из более чем одного файла laba.cpp, то удобнее использовать утилиты автоматизации сборки. Одной из популярных является make, который жрет Makefile и собирает проект, но из-за того, что язык мейкфайла пиздец какой кривой, то начали создавать генераторы этих мейкфайлов. CMake один из таких генераторов, еще есть qmake например (от Qt).
https://ru.wikipedia.org/wiki/Автоматизация_сборки

>как писать на плюсах имея только g++, vim и клавиатур


Ручками ебана. Пишешь свою ебу, например, в yoba.cpp. Далее в консоли: g++ yoba.cpp -o yoba (флаги компиляции сам посмотришь, какие нужны). Если проект из нескольких файлов, например yoba1.cpp и yoba2.cpp, то каждый
файл сначала компилишь в объектный файл, а потом собираешь вместе:
g++ yoba1.cpp -c yoba1.o
g++ yoba2.cpp -c yoba2.o
g++ yoba1.o yoba2.o -o yoba
Согласись, что писать это заебывает, а если нужно еще и библиотеку какую-нибудь, то легче застрелиться. Для облегчения всей этой ебли и нужен CMake.
459 1409845
>>09744
Нихрена не понял. Запрос смены состояния это и есть посылка сообщения.
460 1409850
>>09830
>>09836
Хуёвый ты тролль, если для тебя оскорбление - признак разрыва. Скорее всего, просто малолетний.

>>09844
Спасибо. Вот я как раз о второй части хочу почитать. Что если мне нужно подключать хучу библиотек, и у меня хуча файлов? В каком порядке это всё компилировать? Хочу весь процесс компиляции понять.
Я пролистал Страуструпа The C++ Programming Language по диагонали, но там, как я понял, компиляция не рассматривается?
461 1409854
>>09844
когда в петух-ОС не завезли Вижуал студию
462 1409858
>>09755
Cmake ебаная параша. Учите meson.
463 1409867
>>09850
Вот лекции этого товарища посмотри. В первой лекции довольно подробно про твои вопросы отвечает.
https://www.youtube.com/playlist?list=PLlb7e2G7aSpTFea2FYxp7mFfbZW-xavhL
Ну и полирни вот этим: https://habr.com/ru/post/150327/
В принципе для начала достаточно. Дальше уже сам поймешь, что и куда.
image.png16,6 Мб, 3835x2558
464 1409868
>>09867
Спасибо! Схоронил.
465 1409901
>>09854
Я думал компоновщики в любой более-менее известной IDE есть?
466 1409903
>>09901

>IDE


Just EMACS.
467 1409904
>>09901

>vim


>IDE

468 1410078
>>01309 (OP)
Допустим есть у нас
template<class T>
struct A{
T value;
};
и есть у нас специализация
template<>
struct A<int>{
int value;
int another_value;
};

Как мне проверить, что у нас нет специализации для double, например?
Должно быть что-то вроде
static_assert(is_specialisation<A<double>>::value, "Not specialisation");
это должно падать а это
static_assert(is_specialisation<A<int>>::value, "Not specialisation");
должно проходить.
470 1410120
>>10112
Чувак, ну ты серьёзно думаешь, что я первым делом на двач полез? Вариант через sizeof не работает, если базовая версия шаблона определена. Если бы было
template<class T>
struct A;
template<>
struct A<int>{}
Тогда другое дело. А так хуй, тот код выдаст тру на A<double>
471 1410123
>>10120

> Чувак, ну ты серьёзно думаешь, что я первым делом на двач полез?


Ну, обычно так и происходит.

Онтоп - если метода с SO не сработала, то вообще хуй знает
472 1410147
>>10123

>Ну, обычно так и происходит.


А, ну ладно тогда.

> то вообще хуй знает


Вот и я тоже хуй знает. Похоже, что никак.
473 1410161
>>10078
А std::is_same тебе не подойдёт?
474 1410193
>>10078
SFINAE тебе в помощь. Я бы сделал так: https://onlinegdb.com/SJrprjJCE
Недостатком является то, что нужно писать в каждую специализацию typedef.
475 1410220
>>10161
И как его использовать здесь?
>>10193
Я не могу изменять класc. Я вообще про класс ничего не знаю, кроме его названия.
476 1410221
>>10220

> кроме его названия.


И количества шаблонных параметров.
477 1410223
>>10221
Хотя это тоже не обяхательно по идее, потом можно было бы class... Args написать или типа того, но для простоты пусть будет известно, что один параметр всего.
478 1410615
сап двач. нужна помощь в написании простых программ с нуля по заданиям. кто то может написать за соответствующую оплату? писать на мыло kooZ3st-196ANUSmaDwDilPUNCTUMrTjou
479 1410619
Посоветуйте иде на андроид.
480 1410701
Почему пишет

> Player не является именем класса или пространства имен

481 1410704
>>10701
Всё ок должно быть, мб ты опечатался где-то, например файл player.h, а ты инклюдишь Player.h
482 1410708
>>10701
Pch должен самым первым инклюдом идти, если че
483 1410711
>>10708
This, компилятор будет игнорировать все, что выше.
484 1410719
>>10708
Спасибо
image.png16 Кб, 537x129
485 1410741
Как constexpr передать в функцию?
Если сначала инициализировать переменную, то все работает, если пихать сразу в функцию, то хэш вычисляется в рантайме. Что за хуйня?
486 1410760
>>10220
Как блядь, действительно.
std::is_same<double>(A::value).
Ты можешь явно проверить, какого типа переменная у объекта класса, если value будет из int специализации, то is_same вернёт false. Хоть почитал бы.
487 1410766
>>10741
Чтобы ответить на вопрос, как передавать, нужно понять, как ты принимаешь
488 1410768
>>10766
const int
489 1410770
>>10768
Если ты хочешь считать хэши в компайл тайме, то смотри в сторону std::array вроде как в 17 сделали так чтобы он работал в constexprt функциях
490 1410801
>>10770
Зачем мне array? Просто хочу чтобы хэш вычислялся, когда его макросом в функцию пихаю.
491 1410803

> Hockeyteam.exe вызвал срабатывание точки останова.


В чем может быть проблема?
492 1410809
>>10803
delete[]
493 1410810
>>10803
Сам твой массив выделен с помощью new? Если нет, то к нему delete [] применять нельзя. Во вторых, ты применяешь оператор delete, предназначенный для удаления одиночных объектов, а не массивов (нужно delete []).
494 1410826
>>10803
Лол, 4 утечки в конструкторе допустить это надо умудриться.
495 1410833
>>10810

> Сам твой массив выделен с помощью new?


Да PlayerЗВ itsPlayers = new Player[DEFAULT_PLAYERS_COUNT];
>>10826
Можешь пояснить?
496 1410841
>>10809
Ну и еще вопрос, в чем принципиальная разница между 1 и 2 вариантами? Работает и тот и тот
497 1410844
>>10841
В первом варианте меньше течет.
498 1410847
>>10833

>Можешь пояснить?


Если вкратце, то ты просто скопировал объект Player, выделенный с помощью new, в массив. И далее просто переписал указатель, соответственно память выделилась, но не удалилась. Вообще в современных крестах использовать "сырые" владеющие указатели - моветон. Для это есть std::unique_ptr и std::shared_ptr. Чем они различаются гугли сам.
499 1410850
>>10841
Принципиальная разница в том, что в первом варианте 3 объекта создаются на стеке и автоматически уничтожаются, когда выходят из области видимости, а во втором все создается в куче и утекает. Но все равно в первом варианте 1 утечка есть, но еще есть также 3 вызова move конструктора и 3 вызова copy конструктора, что бестолково с т.з. расхода ресурсов.
500 1410854
>>10741
Бамп вопросу. Хочу красиво все в одну строку вместить, а то у меня жопа горит с задефайненых макросом аргументов.
501 1410893
>>10850
>>10847
>>10844
Спасибо.
Алсо, попробовал запустить программу в code blocks c gcc, но компилятор выдает ошибку.

> 'Position' is not a class or namespace

502 1410897
>>10833

>Можешь пояснить?


Правило буравчика - каждому new должен быть свой (обычно единственный) delete. Каждому вызову malloc должен быть свой вызов free.
503 1410978
>>10893
Шарпопидор наелся говна. Я угадал?
504 1410983
>>10978
Мимо, я студентик до этого только си и питон нюхавший.
505 1411106
Как закомментировать область?
506 1411145
>>10741
Бамп вопросу. Как совладать с злым компилятором?
507 1411148
>>11145
Буквально через 5 минут нашел решение, вот если кому интересно.

http://qaru.site/questions/451412/constexpr-function-parameters-as-template-arguments

Даже лучше, чем я хотел.
image.png38 Кб, 1205x149
508 1411196
ЧЯДНТ? Что там за хуйня? Почему не std::string?
509 1411198
>>11196
Ой, всё, идите нахуй. Поставил скобки и норм.
510 1411222
511 1411223
512 1411226
Переполнение целочисленного это UB или не UB?
В частности беззнаковый char везде одинаково будет реагировать на отрицательные значения ну т. е. там, где ожидался знаковый char?
513 1411228
Допустим, у нас есть шаблон. И в нем такое условие:
enable_if_t<is_same_v<_Tag, _Exact_args_t>, int> = 0>
что, конкретно, значит = 0 здесь? На SFINAE не похоже вроде.
514 1411229
>>11228
Немножко обосрался со скобочками, вот полный вариант:
template<class _Tag,
class _This2,
class... _Rest2,
enable_if_t<is_same_v<_Tag, _Exact_args_t>, int> = 0>
515 1411231
>>11226
Переполнение signed - UB, unsigned - не UB.

>>11228
>>11229

>что, конкретно, значит = 0 здесь


Значение шаблонного аргумента по умолчанию.
516 1411232
>>11229
SFINAE.
517 1411233
>>11231

>Переполнение signed - UB, unsigned - не UB


А в чем разница в сущности?
518 1411235
>>11231

>Значение шаблонного аргумента по умолчанию.


Да, оно, спасибо, уже разобрался.
>>11232
Нет, не SFINAE.
image.png30 Кб, 410x502
519 1411242
Как сделать итератор шаблонного класса со вложенным в него контейнером? Хуйня на пикриле не компилится, если убрать темплейт и заменить все Т на конкретный тип типо инт то оно работает.
520 1411246
>>11242
Добавь typename перед std::vector<T>::iterator. А лучше не жрать говно и написать auto, ну или просто сделать метод шаблонным, если хочется больше читаемости.
521 1411249
Поясните за ->
Читаю книгу. При обращении к членам объекта до этого использовалась "." точка. Теперь какого то хуя появляется ->
522 1411253
>>11246

>написать auto


Бля все время забываю, что так можно, спасибо.

Кстати поясните в чем разница между for (auto& i : array) и for (auto&& i : array)? И то и то по сути ведь по ссылке берется без копирования, просто некоторые почему то пишут там двойную ссылку.
524 1411257
>>11256
спасибо
525 1411332
Допустим, есть функция стороннего API, которое я не могу изменять, принимающая callback:

void foo(bool(*bar)(int, int)) {...}

Могу ли я передать в неё non-static member функцию? Например, эту:

class Hui {
...
bool pisos(int a, int b) { return true; }
...
}
526 1411336
>>11253
Оптимизированная версия вот этого: const T&.
527 1411365
Хочу контейнер с упорядоченностью, возможностью быстрой вставки и удаления в начало и конец и возможностью быстро узнать, есть ли какой-то элемент в этом контейнере. Такое бывает?
528 1411366
Законно ли в namespace std добавлять специализации существующих шаблонов классов/функций?
529 1411367
>>11365
Если не принципиально, куда вставляется, то std::map, std::set. Хранится уже в упорядоченном виде, вставка, удаление, поиск за логн.
530 1411370
>>11367
Под упорядоченностью я подразумевал сохранение порядка при добавлении.
Мне нужно что-то похожее на std::deque, но с возможностью проверить в нём наличие элемента, как в std::set.
531 1411373
>>11366
Если четко по стандарту, то в общем случае - UB. Есть несколько случаев, когда разрешено, читай здесь: https://en.cppreference.com/w/cpp/language/extending_std
532 1411374
>>11370
Хз, можно обернуть map и deque, при добавлении добавляешь и туда и туда, если нужно найти ищешь в мапе и получаешь индекс за логн и по индексу за константу достаёшь из дека. Бредово немного, но по идее подскажет.
533 1411375
>>11373

>It is undefined behavior to add declarations or definitions to namespace


>It is allowed to add template specializations for any standard library class (since C++20)template to the namespace std


>добавлять специализации существующих шаблонов классов/функций


Дык я про второе и спрашивал как раз. То, что новые функции и классы в стд добавлять нельзя я в курсе.
534 1411380
>>11332
Так проверь на каком-нибудь ideone, тем более, что код уже сам написал.
535 1411381
>>11336
Съеби с моих двачей
536 1411382
Аноны, поясните за pimpl, нихуя не понимаю? Зачем скрывать реализацию за другим классом.
537 1411383
>>11253
Первое lv ссылка, второе rv. Очень много почему так можно хотеть делать.
538 1411384
>>11382
Чтобы иметь стабильное abi, может ещё чтобы не компилировать вагон зависимостей.
540 1411386
>>11382
Минимизация зависимостей, ты можешь менять имплементацию, при этом апи не будет меняться и не нужно будет перекомпилять всё.
541 1411438
Учу qt
Есть такой фрагмент кода
Боже, не дай с разметкой проебаться


#include <QApplication>
#include <QPushButton>

int main(int argc, char argv)
{
QApplication app (argc, argv);

QPushButton button;
button.setText("My text");
button.setToolTip("A tooltip");
button.show();

return app.exec();
}

Вроде все просто если я правильно понял. Создается объект button класса QPushButton и вызываются его методы.

Потом используются указатели. Нахуя? Чем первый способ не подходит?


#include <QApplication>
#include <QPushButton>

int main(int argc, char
argv)
{
QApplication app (argc, argv);

QWidget window;
window.setFixedSize(100, 50);

QPushButton *button = new QPushButton("Hello World", &window);
button->setGeometry(10, 10, 80, 30);

window.show();
return app.exec();
}
541 1411438
Учу qt
Есть такой фрагмент кода
Боже, не дай с разметкой проебаться


#include <QApplication>
#include <QPushButton>

int main(int argc, char argv)
{
QApplication app (argc, argv);

QPushButton button;
button.setText("My text");
button.setToolTip("A tooltip");
button.show();

return app.exec();
}

Вроде все просто если я правильно понял. Создается объект button класса QPushButton и вызываются его методы.

Потом используются указатели. Нахуя? Чем первый способ не подходит?


#include <QApplication>
#include <QPushButton>

int main(int argc, char
argv)
{
QApplication app (argc, argv);

QWidget window;
window.setFixedSize(100, 50);

QPushButton *button = new QPushButton("Hello World", &window);
button->setGeometry(10, 10, 80, 30);

window.show();
return app.exec();
}
542 1411444
>>11438
Ты не знаешь различие между объектом на стеке и на куче? Или не читал, как работает система parent-child в Qt?
543 1411447
>>11444
И то и то. Спасибо. Пойду читать
sage 544 1411494
>>11381
Хули тебе не нравится? Зелень залетная.
545 1411504
Гайз, хочу поебать себе мозги плюсами.
начинал с плюсов своё вайтивайти. Уже 3 года макакоёбствую на Go.
Есть ли смысл учить плюсы и пишут ли какой- нибудь бекенд-хайлоад на плюсах ? Насколько долго затянется обучение ?
Есть ли смысл написать какой- нибудь пет со стеком C++/Mongo/какая- нибудь апишка ?
546 1411598
>>11380
Что проверить, блять? Я не знаю как передать ссылку на этого мембера.
547 1411611
>>11598
Без указателя/ссылки на класс никак ты свой non-static member function никак не вызовешь (если объект не в глобальной области видимости). Так что делай глобальной, либо static и передавай как &MyCls::MyFn, либо иди нахуй, токсик
548 1411613
>>11332
Нестатические функции члены всегда скрыто принимают первым аргументом указатель на объект, из которого вызвана функция (this). Передать куда-либо можно с помощью std::bind с указанием этого объекта - bind(Class::func, &Object, std::placeholders::_1...). Без указания объекта никак. Короче, почитай про bind.
549 1411620
Есть тут человек, которому можно задавать тупые нубовские вопросы по ++ время от времени?
tme/dovaogedot
550 1411651
>>11620
А этот тред чем не устраивает?
551 1411675
>>11651
Слишком тупые вопросы, стыдно на людях.
552 1411687
>>11651
Вот, например. Фунция возращает поломаные объекты шейдеров с пустыми source, но с правильными ID. На 146 строке шейдеры заполнены, на 147 source пропадает.
Указатели и ссылки я нигде не использую, разве функция не должна возвращать новую копию созданной на 146 строке ShaderProgram со своими копиями заполненых шейдеров, и удалить старую ShaderProgram по выходу? Почему эта функция возвращает ShaderProgram с шейдерами, у которых поля source превращаются в "", но ID остаётся?
553 1411693
>>11687
Ну, это конечно, ты зря полез в графику без знания основ. Потоки ввода-вывода не копируются! Никакие!
554 1411697
>>11693
Окей, как тогда правильно считать данные с файла, чтобы всё было как у других языков?
556 1411705
>>11700
Тот же результат.
557 1411712
>>11705
А ты не забываешь в конструкторах своих шейдеров вызывать конструктор базового шейдера типа vertexShader(string src):Shader(src){}. Если ты этого не делаешь, то часть базового класса сконструирована не будет.
559 1411719
>>11715
Напиши явно деструктор и поставь в него точку остановки, посмотри, откуда вызывается
560 1411747
>>11687
Не надо мудрить с какой-то иерархией классов.
Скомпилированный шейдер vertex + fragment это просто unsigned int
Его ты можешь просто копировать.

Хэдр https://pastebin.com/RiYGk1Gh
Срц https://pastebin.com/RNJFkMNU
image.png6 Кб, 438x59
561 1411754
>>11747
Если там будет Cat и Dog, наследующиеся от Animal, будет проще? Проблема в стирании std::string, а не в компиляции шейдеров.

>>11719
Первый раз, как я понял, удаляются локальные копии параметров в конструкторе ShaderProgram. Второй раз они вызываются на 150 строке уже после создания ShaderProgram, перед выходом из getDefault(), уничтожая строки только что созданных шейдеров. Почему так происходит? Как быть?

И ещё третий раз деструкторы вызываются уже после вызова getDefault() из другой функции. Это я вообще не знаю зачем.
562 1411761
>>11754
Собрал это, и никаких проблем не наблюдается. У тебя твои файлы с текстом не пустые? Лежат в папке рядом с проектом?
563 1411771
>>11761
Пиздец да почему у меня всегда всё через жёпу.
564 1411779
>>11771
Проверь как у меня на втором скрине. У тебя к 152 строке твоя выделенная на стеке строка уже уничтожена после выполнения return.
565 1411782
>>11761
Так, блять. Причину этой хуйни я нашёл. Я просто ShaderProgram* program = &ShaderProgram::getDefault() долбаёб.
Как в таком случае сделать красиво, по правилам? Я хочу чтобы у меня в классе Human был мембер ShaderProgram. Инициализировать его мне нужно после конструктора Human. Значит, этот мембер не может быть на стеке, так? Нужен указатель на него. Нормально ли будет, если getDefault() будет возвращать указатель на ShaderProgram? Как это с точки зрения управления памятью?
566 1411793
Есть какая-нибудь книга или статья на 999+ страниц, типа такой -> https://www.horstmann.com/cpp/pitfalls.html ? Чтоб я такой хуйни больше не делал.
.jpg66 Кб, 477x700
567 1411796
Source.png83 Кб, 1356x700
568 1411799
>>11782>>141178>>11782
Пусть твоя функция возвращает умный указатель на объект, выделенный в куче. Почитай про умные указатели -- сильно облегчают написание безопасного от утечек памяти кода.
image.png741 Кб, 770x577
569 1411802
>>11799
Ну я просто где-то читал, что типа объект, который создал указатель, должен сам за ним следить и удалять.
570 1411807
>>11802
Умный указатель считается создателем указателя на кучу и освободит память в своем деструкторе, например, при выходе управления из блока кода, где он был создан. Они и были придуманы для решения проблемы частого забывания программистами добавить delete, где это нужно.
571 1411820
>>11444
Прочитал. Не понял. Вот что произойдет если я буду объявлять объекты не через указатель?
572 1411822
Ананасы, поясните за указатели и наследование.
Вот есть, к примеру, класс https://github.com/SFML/SFML/blob/master/include/SFML/Graphics/RectangleShape.hpp (в конце файла есть небольшой пример использования)
Он наследуется от класса Shape который, в свою очередь, наследуется от других.
Вот я объявляю переменную RectangleShape на стеке, так как же тогда вся эта йоба магия с виртуальными функциями будет работать?
573 1411850
>>11793
На хабре от PVS Studio регулярно постят статьи на подобную тематику. Ну и на сайте самих PVS кой-чего есть.
574 1411856
>>11820
Ты конечно можешь все виджеты создавать на стеке, но зачем? Рано или поздно отстрелишь себе хвост по самое ебало.
https://doc.qt.io/qt-5/objecttrees.html
575 1411862
Хорошие книги по современному С++? Желательно 14 + 17 стандарты. На русике.
576 1411864
>>11822

> Вот я объявляю переменную RectangleShape на стеке, так как же тогда вся эта йоба магия с виртуальными функциями будет работать?


Такие вызовы разрешаются статически, никакой магии тут нет.
577 1411866
>>11802
Все так и есть. Поэтому специально были созданы юник/шаредптры, дабы облегчить жизнь нюфаням всем.
578 1411893
>>11856
Я пока ссылку не открывал, но что подразумевается под отстреливанием хвоста?
579 1411902
>>11893
Ссылку открыл. Если будут вопросы потом задам
580 1411908
>>11856
Последнюю фразу не понимаю. Какой ущерб нанесен? Типо после удаления объекта по его адресу запишутся другие данные, а он пытаясь удалить себя второй раз сотрет их?
581 1411914
>>11908
Я хуйню написал. Объясните мне пожалуйста
582 1411916
>>11914
Я понял что деструктор вызывается дважды, но что может страшного случиться?
583 1411919
>>11916
Удаление "удаленного" - undefined behavior. Если в деструкторе указателю бы присваивался nullptr после delete, то было бы все норм, но так никто делает, т.к. лишняя операция, которая замедляет производительность, ну и все-таки код на с++ должен писать не дебил.
584 1411925
>>11919
Спасибо большое, анон. Что бы я без тебя делал?
585 1411929
>>11864
То есть если я у производного класса и создам переменную этого типа напишу реализацию виртуальной функции, то вызывать будет именно она?

https://wandbox.org/permlink/HBzGnHgOXIGkroBA
Проверил. Так и есть.

Получается пользоваться указателями на базовый класс нужно когда есть чистые виртуальные функции или этот базовый класс используется как интерфейс?
1.png355 Кб, 606x881
586 1411935
>>11822
Пикрил.
587 1411938
>>11935
Эвон как.
А я всё время думал что для этого указатель нужен.
Screenshot from 2019-06-04 22-50-39.png96 Кб, 1280x1024
588 1411970
Объясните плз как работает этот аллокатор?
Почему там говорится, что они могут с помощью new выделить буферы и они после выхода из scope сами уничтожатся? Как это работает?
589 1411977
>>11970
RTTI.
590 1411978
>>11977
При чем тут Run-time type information?
591 1411979
>>11978
Обосрался, RAII, конечно же. Вон на скрине написано даже. Ты прочитать не можешь что-ли?
592 1411982
>>11929
Не знаю, какой ты смысл вкладывал в свои слова, но если бы работаешь только с наследником - принимай его по ссылке. Если хранишь - храни указатель (может даже unique_ptr). Если собираешься работать с объектами-наследниками базового класса через его интерфейс, то делай то же самое, но с указателем/ссылкой на базовый класс.
593 1411984
>>11979
Вижу, конечно, только опять же, при чем тут raii, если это просто про расположение в конструкторе и деструкторе инициализации\удаления объекта. Тут непонятна магия с оператором new. Каким образом буферы int и float самоуничтожатся после выхода из локальной области видимости?
594 1411986
>>11982
Спасибо.
Теперь по понятнее стало.
595 1412030
>>11970
Это же книжка про игровые движки?
Там видимо переопределены аллокаторы памяти для int и float. Прога на старте хапает большой кусок из кучи и уже сама потом им манипулирует. В приведенном коде просто пример как это должно работать.
596 1412053
>>05728
Не, ну, я не тупой, это-то я знаю. Я просто не понимаю, в чём профит от вектора векторов пар. Инт инт - это точка назначения и вес дуги?
597 1412071
Кто знает, можно ли в рисование на двумерную поверхность в Qt через opengl, а не через qpainter, и как оно по сравнению с gdi
598 1412114
вот сейчас будет тупой вопрос. Почему ui->label->setText("Yoba ") работает в projectname.cpp, но не работает в main.cpp?
599 1412118
>>11970
Там же написано, после выхода из скопа вызовется деструктор, в нём popallocator.
601 1412142
>>12030

>>Это же книжка про игровые движки?


Да, "Game Engine Architecture Third Edition Jason Gregory".
Вроде понял теперь. Т.е. работает это примерно так: переопределенный new сдвигает head стэкового аллокатора, а когда аллокатор уничтожается(когда выходим из scope), то head возвращается на старое значение?
602 1412144
>>12142
Почитай про RAII, смысл такой, что вместо того, чтобы явно выделять и освобождать память ты создаёшь объект, в конструктор которого передаёшь new(или в твоём случае аналог на стеке, раз стековый аллокатор у тебя), а в деструкторе delete(у тебя popallocator) и когда время жизни у объекта кончится вызовется его деструктор, в котором освободится память. Это безопаснее, чем ручками это делать, потому что во-первых можно забыть, во-вторых если между твоим new и delete где-то кинулось исключение, то пизда, будет утечка, а в RAII случае RAIIobj(new int(5)); ... throw 2; ... у тебя после выброса исключения пойдёт stack unwinding, программа будет как бы откатываться до try, то есть у всех созданных объектов будет вызван деструктор, в том числе и у RAIIobj и поэтому память освободится и утечки не будет. Это оче норм тема и поэтому такой подход используют повсеместно.
603 1412146
>>12071
>>12119
неправильно выразился, не рисование, а наложение готовых картинок как в видеостене
LKC.png13 Кб, 933x238
604 1412229
Сейчас приложение перемещает круг при нажатии на мышку (на её же позицию). Как сделать так, чтобы оно не просто меняло локацию одного PictureBox, а создавало новый, оставляя старую точку на месте?
605 1412231
>>11231

>Переполнение signed - UB, unsigned - не UB.


unsigned не переполняется.
606 1412399
>>12071
GDI лучше.
607 1412911
Вот как в qt выполнить действие без события?Допустим я хочу чтобы как только я открыл программу label начал заполняться буквами. Но ui->label не работаетв main.cpp
608 1412967
>>12911
Че? Проблему опиши нормально
609 1412982
>>12967
Я могу выполнить действие используя событие (допустим нажатие кнопки). Но как выполнить действие без события? Запустил программу и сразу какая-нибудь функция заработала, как в консольных приложения. Тупо с первой строчки код выполняется.
610 1412992
>>12982
Ну вызови вручную обработчик этого события, в чем проблема? Например, у QPushButton есть сигнал clicked(), если ты его подключил к своему OnClickMyButton(), то ничего тебе не мешает вызвать OnClickMyButton() самостоятельно.
Если ты не знаешь, где вызывать, то вызывай там, где создашёшь.
611 1412998
>>12982
Код и так с первой строчки выполняется. Только при вызове exec() приложение входит в бесконечный цикл ожидая события.
Если у тебя есть ui, то я могу предположить, что это оконное приложение, и ты используешь дизайнер форм. Если это так, то ui - это член класса созданного окна. Присвоить текст лейблу можно в конструкторе, например, или прямо в дизайнере.
612 1413001
>>12998
>>12992
Допустим я хочу сделать цикл for и в нем приписывать по одной букве лейблу. Нахуя? Не знаю. Но я также не знаю как сделать это, что важнее.
613 1413006
>>13001
Если ты напишешь обычный цикл, то не увидишь, как буковки появляются. Скорее всего тебе нужен таймер. Читай про QTimer, там скорее всего будет в примерах, как сделать то, что тебе нужно.
614 1413007
>>13001
бля. Я в каждом посте говорил "Допустим". мдаа
615 1413009
>>13006
Допустим спасибо
616 1413051
Странно, но эта хуйня работает. Вообще не понимаю. Говорят: main - главная функция, пиши в ней. Пишу в ней - не работает. Пишу в описании класса - работает.

#include "Test.h"

Test::Test(QWidget *parent)
: QMainWindow(parent)
{
int i;
ui->setupUi(this);
ui->label->setText("YZYKEN");
for(i=0;i<10;i++) ui->label->setText(ui->label->text() + QString::number(i));
}
617 1413054
>>01309 (OP)
возник вопрос, уже как бы не актуально но для общей эрудиции вот есть std::map, я его заполнил и хочу перебрать все ключи и объединить с похожими, это реально сделать? Ибо у меня после удаления элемента в цикле for (auto i: mapA){for (auto j: mapA){;}} что то шло не так и все ломалось я так понял это как то связано с итераторами которыея удалял, а через цикл for(int i=mapA.begin; i<mapA.end;i++) я так понял достучаться до значения по итератору шансов нет? и итераторы чет не поддерживают "="? Короче эту задачу можно было как то решить через map? или надо было использовать другой контейнер?
618 1413068
>>13051
Ты видимо совсем глупенький, раз вместо книжечек и мануальчиков слушаешь всяких дядек. Какой критерий "главности"?
>>13054
Не уверен что с std map это прокатит, но обычно так пишут
for (auto it = myMap.begin(),...)
{
....if (isSame(...))
........it = myMap.erase(it);
....else
........++it;
}
619 1413071
>>13068
В книге так написано (я про main). Другое дело, что та книга к qt отношения не имеет.
620 1413072
>>13071
Хочешь Qt читай Макса Шлии
621 1413074
>>13068
вот тут у меня непонятки, после erase() что происходит с итератором? если они последовательны(++it, myMap.begin <it< myMap.end) то после удаления он должен сместиться?
622 1413078
>>13074
>>13068
падажжи как ты из итератора it вызвал метод? и erase() вообще void
623 1413080
>>13078
http://www.cplusplus.com/reference/map/map/erase/

Объекты в std::map лежат в каком-то порядке, не важно в каком. При удалении положение объектов относительно друг друга не меняется.
624 1413082
>>13078
Вот кстати ответ на SO
https://stackoverflow.com/a/8234813
625 1413232
Почему QT взлетел? Дрисня же, которая тянет за собой несколько ДЕСЯТКОВ метров зависимостей. Сама среда разработки, говорят так себе. Нарушает концепции самого С++. Почему это говно юзают?
626 1413248
>>13232

>Почему QT взлетел?


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

>Нарушает концепции самого С++.


Какие?

>Почему это говно юзают?


Не хочешь - не юзай, никто не заставляет.
627 1413388
>>13232
Есть реализации основных протоколов под эмбедед + там говорят годный сейф рендер и красивые QML интерфейсы. Правда стоит это овердохуя.
628 1413496
>>13232
потому что удобно и всё
629 1413523
>>01309 (OP)
Анон, а как сейчас программируют на C++?
Когда я работал программистом-формошлёпом на C++, всё собирали с помощью qmake и гуя QtCreator'a.
А как делать правильно? То есть, как делают в Big-N компаниях и всем таком?
Пишут мейкфайлы, как в 80-х? Используют CMake? Не используют C++?
630 1413542
>>13523
где как. в крупных компаниях, где проекты большие, обычно пишут свой сборщик (ну или кастомизируют какую-нибудь систему автосборки под себя).
Понятия "как правильно" - нет, каждый собирает как хочет. У нас вот cmake был сначала, потом на него забили и написали свой билдер, так на нём и сидим до сих пор.
631 1413565
Перекат: >>1413564 (OP)
632 1413655
>>13565
А где 88?
633 1421962
>>12229
auto Pic = gcnew PictureBox(...);
...
litsPictureBoxes->Add(Pic);


litsPictureBoxes - заранее созданный контейнер в свойствах формы
634 1423009
Двач, объясни какого хуя. Почему если пытаюсь захватить что-либо в лямбду, оно ругается что арг лист не такой?
635 1423149
>>23009
лямбда неявно разворачивается грубо говоря в структуру с перегруженным оператором () и членами, который ты захватил. Без захвата - в указатель на функцию. Поэтому лучше юзать std::function<T>
636 1428768
Аноны, реквестирую способы перестать орать с Майкрософта. Где среди тонн документации по HTTP Server API найти имя сраного .lib файла, чтоб линковать с ним? Да да, я в консолечке погроммирую, и знаете, нравится, вкусно так, экзотично. Так вот, какого хуя никто все еще не ответил? А, я ведь пост не отправил, лол. Ща исправл
637 1428770
>>28768
упс, уже нашел
blob147 Кб, 480x360
638 1428794
БЛЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯЯДЬ!!!!!!!!
Почему WinHttpSendRequest шлет лишь ебучий глагол?
Вот реально, вместо сервера запустил голую слушалку на winsock-ах, и прилетает только 4 байта "POST". Это пиздос, чините мой пердак, аноны!!!
639 1428799
>>28768
>>28770
>>28794
Найс разговор с пастой самим собой. )))))))))
640 1428800
Я вот не понимаю нахуя создавать 90 тред, если есть 87 не потертый?
Тред утонул или удален.
Это копия, сохраненная 8 июля 2019 года.

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

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