Этого треда уже нет.
Это копия, сохраненная 27 октября 2017 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
#2 #1063113
Спс оп-хуеглот
# OP #3 #1063117
>>1063113
Незачто
#4 #1063146
Парень из прошлого треда, что сделал вот это: https://ideone.com/mW8F0g
Объясняй почему int a = ({5;}); работает, и как?
И почему clang и gcc это понимают, а vc не особо?
#5 #1063147
>>1063146
Нагуглил что это расхождение со стандартом, и называется GNU statement expression
так-что не подходит :(
sage #6 #1063148
>>1063147
А нафига тебе VC?
63 Кб, 540x739
#7 #1063153
>>1063147

>statement expression

sage #8 #1063154
>>1063153
Да, я тоже не понимаю, зачем в языке вводить какие-то statements, когда всё может быть expression.
#9 #1063155
>>1063153

>statement expression


GNU statement expressions
https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html
>>1063148
прост))
#10 #1063156
>>1063154
Т.е. выражение с точкой-запятой в конце это statement expression? Вопрос, нахуя ставить там точку с запятой?
А statement block это тоже statement expression, какое значение он принимает?
#11 #1063259
Сап крестач, нюфаг итт вкатился с вопросом - какой профит от scheduling в openmp ? По сути вся параллельность теряется ибо потоки тупо простаивают ожидая своей очереди + тратиться время на переключение между потоками, по сути тоже самое можно и в одном потоке провернуть, не?
#12 #1063261
Что такое C+? Уже не раз слышал от старшекурсников что они изучали c++(ну такой "ага") , c+ ("ЩОО?" )
#13 #1063265
>>1063154
Вон из треда, лиспер поганый.
#14 #1063270
>>1063261
Это явно не относится к C++. Может кто-то так называет C#?
#15 #1063296
Мне тут внезапно понравилось ide Clion, можно ли им как-то пользоваться на халяву?
sage #16 #1063297
>>1063296
Да, если ты стьюдент.
sage #17 #1063299
>>1063259

>какой профит от scheduling в openmp ?


Разные стратегии разделения задачи на подзадачи.
#18 #1063336
#19 #1063382
Посоветуйте что-нибудь фундаментальное о шаблонах, чтобы я мог читать Александреску и не ломать голову тем, как компилируются шаблоны, из каких этапов состоит их разбор, на каком этапе сборки работают шаблоны, что вообще с ними можно делать и т.д. Читал Липпмана.
#20 #1063386
>>1063382

Александреску уже устарел.
#21 #1063387
>>1063386
Да, старость - не радость... Все когда-нибудь там будем.
#22 #1063401
>>1063382
почитай хабр ))))
А вообще чтобы понять как это всё работает - попробуй навелосипедить <type_traits>
можно иногда даже сюда вопросы поконкретнее писать наверное
sage #23 #1063409
>>1063382

>Посоветуйте что-нибудь фундаментальное о шаблонах


Стандарт

> из каких этапов состоит их разбор, на каком этапе сборки работают шаблоны


http://en.cppreference.com/w/cpp/language/translation_phases
#24 #1063440
Что происходит в этом коде?

template <template <typename Created> class CreationPolicy>
class WidgetManager2 : public CreationPolicy<int>
{

};

1. template <typename Created> class CreationPolicy - объявляется шалонный класс CreationPolicy с параметром типа Created
2. Этот класс используется как параметр типа по умолчанию во внешнем шаблоне

Я прав? Нихуя не понял.
#25 #1063446
Пиздец, оно даже компилируется с typename CreationPolicy, а не class CreationPolicy.

template <template <typename Created> typename CreationPolicy>
class WidgetManager2 : public CreationPolicy<int>
{

};

Почему?
#26 #1063448
>>1063446
typename и class в темплейтах - ровно одно и то же.
#27 #1063449
>>1063440
Да, WidgetManager параметризуется шаблонным типом
#28 #1063451
>>1063448
Одно и то же при объявлении типа, но там ведь объявляется шаблонный класс, значит, должно использоваться только слово class.
#29 #1063452
>>1063449

>параметризуется шаблонным типом


Как это происходит?
#30 #1063457
>>1063452
нууу, ты говоришь компилятору
"класс виджетМэнэджер2 - шаблонный, параметр шаблона - шаблонный класс, который в скоупе класса будет называться КриейшнПолиси"
Как ещё ответить на этот вопрос? Если ты вообще понятия не имеешь что такое шаблоны в с++, попробуй пописать простой умный указатель, или аналог std::array, это будет попроще чем "параметризация шаблона шаблонным классом"
#31 #1063463
>>1063457

>Если ты вообще понятия не имеешь что такое шаблоны в с++, попробуй пописать простой умный указатель


Уже писал, но от шаблонных параметров шаблона у меня вывих мозга. Не могу даже распарсить объявление.
98 Кб, 700x663
#32 #1063466
Аноны а есть смысл в 2017 писать Crawler на C++ или лучше посмотреть на Go и не делать новый велосипед?
#33 #1063468
https://habrahabr.ru/post/260899/

template <int i> int func() {
return func<i-1>()+i;
};
template <> int func<0>() {
return 0;
};

Какой-то уебищный pattern matching.
#34 #1063471
#36 #1063530
>>1063107 (OP)
Пишу на плюсах лет 20. Сегодня узнал о синтаксисе
int main try {
//code...
return 0;
} catch ( e ) { ... }
Убейте меня кто нибудь.
sage #37 #1063538
>>1063530
Это да. function try block не самая известная штука.
#38 #1063543
OpenCL. В обычном С для того, чтобы функция могла изменить значение переменной достаточно передать её по адресу. Как это организовать это в функции, вызываемой из kernel'а? От использования & ловлю ошибки. Не использовать функции и всё делать в kernel - нежелательный вариант. Халп, двачик!
#39 #1063572
Предлагаю делиться годными либами. Без очевидного буста, КьюТи и прочих мамонтов.
PCG (http://www.pcg-random.org/download.html) - лучший рандом.
STB (https://github.com/nothings/stb) - коллекция header-only либ на разные случаи жизни (загрузка картинок, редактор текста, генерация карт)
POCO, RakNet, libyojimbo - довольно тяжелые, но мощные либы для обмена по сетке в реалтайме
Catch (https://github.com/philsquared/Catch/blob/master/docs/tutorial.md) - компактный юнит тест фреймворк
range v3, arrayview - современный синтаксический сахар
Boost SML (https://github.com/boost-experimental/sml) - либа для построения конечных автоматов.
Scientist (https://github.com/tomiaijo/scientist) - либа для тестирования разных веток исполнения кода (зарефакторил код, а она рандомно гоняет обе ветки, ты потом сравниваешь корректность и скорость)
REACT-CPP-MYSQL, cpp.react, flowcpp, https://github.com/tower120/reactive - разные либы для событий, реактивное программирование
emscripten - компилируешь c++ в html+js и твой шедевр работает в браузере
libRocket (https://github.com/libRocket/libRocket) - старая либа для встройки интерфейса подмножества псевдо-html, для тех кто не хочет тащить хромиум.
Gumbo (https://github.com/cschanaj/gumbo-parser-cpp + https://github.com/lazytiger/gumbo-query) парсинг html сайтов.
#40 #1063596
>>1063504
Это не о том совсем. ОП спрашивает про параметер лист.
#41 #1063598
>>1063543
Ты передаёшь адрес из юзерспейса в кернель? Не может быть такого, что именно в ядре не работает передача по адресу, это пиздец, там же адресное пространство линейное (инбифо PAE).
#42 #1063601
>>1063598
Kernel в OpenCL это не Kernel в линуксе )
#43 #1063602
>>1063446
template typename и template class это ж синонимы, практически.
#44 #1063607
>>1063602
Не практически, а полностью
#45 #1063609
>>1063607
Вроде только с C++17 полностью, до этого как раз во вложенных нужно было class юзать.
#46 #1063612
>>1063601
Тьфу ты.
#47 #1063621
>>1063451
http://en.cppreference.com/w/cpp/keyword/typename
Внутри шаблонной декларации они являются полными синонимами.
sage #48 #1063656
>>1063596

>Это не о том совсем.


>>1063446

>оно даже компилируется с typename CreationPolicy, а не class CreationPolicy

#49 #1063700
Продолжаю погружаться в мир современного сиплюсплюса. Итак, я прослышал, что можно использовать строготипизированный enum class для битовых флагов посредством шаблонной магии std::enable_if и прочего, и писать удобненько в стиле C#:
key_input |= InputState::Left;
Конечно, такое я в жизни не напишу, поэтому скачал первую попавшуюся либу с гитхаба, всего то 400 строк кода, разве это цена для того, чтобы писать свой код коротко, красиво, молодежно? К тому же я надеюсь, что под капотом он раскрывается в зеро-оверхед.
Единственное неровное место, что либо надо помечать свой enum class макросом ALLOW_FLAGS_FOR_ENUM(MyEnum), от чего коробит, у нас же современные плюсы. Либо писать полную конструкцию
namespace flags { template <> struct is_flags<InputState> : std::true_type {}; }
От чего коробит еще больше. Скрипя сердцем, выбираю первое.
Впрочем, замечаю, что компилятору не нравится сама конструкция
key_input |= InputState::Right
Потому что, видите ли, у меня key_input типа InputState (enum), а результат операции |= какой-то другой. Очевидно там какой-то шаблон в неймспейсе, типа flags::flag<MyEnum>, который мне конечно же лень писать. Вспоминаю замечательное слово auto и обламываюсь, так как типы нестатических членов класса нельзя выводить, потому что какие то старперы мудаки не хотят приводить говнокод в порядок и такой вывод типа им все сломает. Но чу, вспоминаю, что где то читал про decltype, и действительно. Поприветствуйте самый отстойный говнокод, который я когда-либо писал в жизни, барабанная дробь:

class MyClass {
...
decltype(InputState::None | InputState::None) key_input;
}
#50 #1063714
>>1063656
Понял.
#51 #1063788
>>1063700

>decltype


Что мешает сделать так:
enum struct MyEnum: int32_t {None=1;}
???
#52 #1063808
>>1063788
И что дальше?
#include <cstdint>
enum class Flags: int32_t { None=0, One=1, Two=2 };
int main() {
Flags f1 = Flags::None | Flags::One;
if (f1 & Flags::Two)
return 1;
return 0;
}

binary '|': 'Flags' does not define this operator or a conversion to a type acceptable to the predefined operator
binary '&': 'Flags' does not define this operator or a conversion to a type acceptable to the predefined operator
#53 #1063809
>>1063788
Кстати да, унаследуй енум от литерального типа
#54 #1063847
Двач, какой язык посоветуете учить после С++?
#55 #1063848
>>1063847
Haskell
#56 #1063851
Есть строка s, в которой наверняка будет 3 слова. Как разбить эту строку на слова и записать каждое слово в отельную, новую строку? (слова разделены одним пробелом)
#57 #1063855
#58 #1063857
Двач, по каким материалам можно быстро понять классы и научиться писать с помощью них простенькие проги, например, для расчета площади.
#59 #1063862
>>1063851
boost::split
в сорокалетнем языке всё ещё нет токенизатора строк ¯ \ _ (ツ) _ / ¯
#60 #1063871
#61 #1063876
>>1063851
Держи браток, но я же все же на хаскеле ебнул.
[CODE]
char str = "VOLODIN DOLBIT NORMALNO";
char
strs[3];

size_t lenght = 0, i = 0;
do{
if (str == ' ' || !str) {
strs = (char)malloc(sizeof(char)(lenght+1));
memcpy(strs, str-lenght, lenght);
strs[i++][lenght] = '\n';
lenght ^= lenght;
} else
++lenght;
} while(*str++);
[/CODE]
#62 #1063878
>>1063876
читабельно - пиздец прям
107 Кб, 1406x530
#63 #1063882
>>1063876
>>1063878
Ну извини макаба съела указатели, вот тебе скрин
#64 #1063888
>>1063851
Ну например так
#include <string>
#include <vector>
#include <iostream>

int main() {
std::string str = "Bitard zhret govno";
std::string delimiters = " ";

std::vector<std::string> strings;
std::string::size_type lastPos = str.find_first_not_of(delimiters, 0);
std::string::size_type pos = str.find_first_of(delimiters, lastPos);

while (std::string::npos != pos || std::string::npos != lastPos)
{
strings.push_back(str.substr(lastPos, pos - lastPos));
lastPos = str.find_first_not_of(delimiters, pos);
pos = str.find_first_of(delimiters, lastPos);
}

for (auto &s : strings)
std::cout << s << std::endl;
}

Или взять boost. Или взять regex.
#65 #1063890
>>1063878
С бустом нормально, но хуй знает сколько это будет весить.

#include <boost/algorithm/string.hpp>
std::vector<std::string> strings;
boost::split(strings, "chitabelno pizdec pryamo", boost::is_any_of("\t "));
#66 #1063891
>>1063888
Блять и сколько эта херь памяти сожрет? Зачем динамический массив, если сказано что 3 строки? Биты в кудахдаре ограничены, зачем на такую простую задачу столько памяти?
#67 #1063899
>>1063891
Прости, в условии ничего не было про биты, если ты под МК пишешь на плюсах об этом надо заранее сообщать. Плюс, откуда мне знать, три там или не три. Анон написал "наверняка". И что у него за слова, 80 буков хватит всем? Кодировка? Так то можно и на C наебошить чтение по char.
Более того, в условиях ограниченной памяти, вообще не надо делить на слова. Надо хранить три пары указателей (начало/конец). Но опять же. Динамический массив, ебануться! Сколько он занимает, 16-32 байта оверхеда? Если там задача типа распарсить аргументы кокомандной строки или найти слова на сайте, зачем лишняя ебля?
#68 #1063900
>>1063891
3 СЛОВА
#70 #1063917
Значение неинициализированного указателя может быть быть адресом в странице памяти, у которой разрешения не подразумевают read/write? Или он априори в секции данных образа?
#71 #1063925
>>1063917
может лежать вообще всё что угодно
#72 #1063928
>>1063917
Что было в стеке - такое значение и будет.
#73 #1063934
>>1063925
Меня интересует не то, что там лежит. Забыл я инициализировать указатель и при memcpy словил "Вызвано исключение по адресу 0x013A13E9 в SchnorrTestingEnvironment.exe: 0xC0000005: нарушение прав доступа при записи по адресу 0xCDCDCDCD", и чё-т я задумался, проблема именно в том, что неинициализированный указатель может ссылаться на какой нибудь PAGE_EXECUTE_READ, в этот проблема?
>>1063928
Пока думал над твоим ответом, задумался, а во что компилируется this в функциях класса? при каждом вызове функций происходит неявный push адреса объекта класса? А по теме - мой неинициализированный указатель - не переменная, созданная в скоупе функции, а поле в структуре, которая в свою очередь поле в классе. Разве под него в стеке будет выделяться память?
#74 #1063949
>>1063934

>во что компилируется this в функциях класса


this - просто неявная переменная в всех функциях класса. При некоторых ошибках линковки, кажется, это явно можно увидеть.

>а поле в структуре, которая в свою очередь поле в классе.


Класс сам где располагается? В стеке? Значит, что было в стеке на месте, которое занял указатель, то в нём и будет лежать. В куче? То же самое, но в куче. Представь, как твой класс располагается в памяти, и ты всё поймёшь.

>0xCDCDCDCD


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

>в этот проблема?


Шанс того, что ты попадёшь на что-то осмысленное - почти нулевой. Хотя у меня был случай, когда указатель появлялся на месте ранее выделенного указателя, что затирало данные в другом конце проги. Поэтому используй умные указатели, где можно.
#75 #1063994
>>1063949

>this - просто неявная переменная в всех функциях класса. При некоторых ошибках линковки, кажется, это явно можно увидеть


Чтобы эта переменная указывала на класс, адрес должен быть передан. Метод - это такая же функция, как и все остальные, никаким магическим образом this он получить не может.
>>1063934

> в этот проблема


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

Название ошибки и то, как себя ведёт программа после ошибки,не имеет никакого отношения к C++ и называется undefined behaviour.
#76 #1064106
>>1063107 (OP)
clusters = vector<unique_ptr<Point>>(clust_num);
clusters - член класса

Прокатит, нет?
#77 #1064108
Поясните про разницу между с и с++. Почему последний хейтят, но всё равно продолжают использовать вместо переката на с?
#78 #1064115
>>1063851
std::string s1, s2, s3, common("biba i boba");
std::stringstream ss(common);
ss >> s1 >> s2 >> s3;
std::cout << s1 << ' ' << s2 << ' ' << s3;
#79 #1064135
>>1064115
лол, и правда работает)
#80 #1064152
>>1064106
У вектора есть требования к классу, сравни их со свойствами уникъюптр.
#81 #1064154
>>1064108
Попробуй написать что-то сложнее калькулятора.
#82 #1064196
>>1063572
Libtins - работа с сетью на разных уровнях, кроссплатформенная.
21 Кб, 693x337
#83 #1064236
Что не так с формулами? Запускается, но если корни есть, но считает их неверно.
#84 #1064249
>>1064152

>Разберись во всём сам


))
Ладно, пойду и разберусь.
#85 #1064252
>>1064236
На хаскеле пиши, хули ты не модный такой? Кресты – это удел старперов и аутистов, который нахуй никому не сдастся через 3-5 лет
#86 #1064256
>>1064236
-b/2 умножить на а - это не то, что ты думаешь. Олсо D=0 - это тоже не то, о чём ты думаешь.
#87 #1064260
>>1063994

>Метод - это такая же функция, как и все остальные


Зависит от ABI.
#88 #1064273
>>1064260
Не понимаю тебя. Вся суть плюсов в статической типизации и производительности. Тебе никогда не нужно иметь несколько функций вместо одной, тебе лучше иметь одну функцию пи передавать в неё this, иначе будет больше кеш миссов и бтб чаще не будет содержать инфу о нужном месте. Ты говоришь про эзотерические архитектуры ЦП, в которых есть абстракции?
#89 #1064275
>>1064260
Хотя, про "такая же" я зря сказал, я просто не в курсе того, какие могут быть отличия.
#90 #1064382
>>1064252
Что за форс Хаскеля? Это не модно совсем, ты бы еще Немерле форсил. Ладно бы Котлин, Свифт, Го, Раст в конце концов.
#91 #1064505
Такая тема короче, есть .so библиотека, которая используется приложением написанным на С. Но библиотека собирается компилятором плюсовым, в библиотеке для совместимости с С приложением есть такая конструкция:

#ifdef EXTERNAL_ENGINE
extern "C" {
static struct ioengine_ops ioengine;
void get_ioengine(struct ioengine_ops ioengine_ptr){
*ioengine_ptr = &ioengine;
ioengine.name = "myaio";
ioengine.queue = myaio_queue;
ioengine.commit = myaio_commit;
...
};
#endif

Но при попытке использовать в какой-нибудь из этих функций метод класса из подключаемой к .so библиоетеке hpp либы всё обсирается.
Компилирую я всё это дерьмо с такими флагами
g++ -O2 -g -shared -fpermissive -rdynamic -fPIC -o suck_my_cock.o main.cpp -DEXTERNAL_ENGINE

Если не подключать hpp либу и не пытаться использовать методы из неё - всё нормально.
Причём компилятор жалуется на С-шные хедеры, мол:

../../fio/fio/minmax.h:5:19: error: expected unqualified-id before ‘{’ token
#define min(x,y) ({ \
^
../../fio/fio/minmax.h:5:19: error: expected ‘)’ before ‘{’ token
../../fio/fio/minmax.h:6:2: error: expected primary-expression before ‘typeof’
typeof(x) _x = (x); \

...
ну и всё в таком же стиле.

Как разрулить эту проблему, подскажите кто знает?
#91 #1064505
Такая тема короче, есть .so библиотека, которая используется приложением написанным на С. Но библиотека собирается компилятором плюсовым, в библиотеке для совместимости с С приложением есть такая конструкция:

#ifdef EXTERNAL_ENGINE
extern "C" {
static struct ioengine_ops ioengine;
void get_ioengine(struct ioengine_ops ioengine_ptr){
*ioengine_ptr = &ioengine;
ioengine.name = "myaio";
ioengine.queue = myaio_queue;
ioengine.commit = myaio_commit;
...
};
#endif

Но при попытке использовать в какой-нибудь из этих функций метод класса из подключаемой к .so библиоетеке hpp либы всё обсирается.
Компилирую я всё это дерьмо с такими флагами
g++ -O2 -g -shared -fpermissive -rdynamic -fPIC -o suck_my_cock.o main.cpp -DEXTERNAL_ENGINE

Если не подключать hpp либу и не пытаться использовать методы из неё - всё нормально.
Причём компилятор жалуется на С-шные хедеры, мол:

../../fio/fio/minmax.h:5:19: error: expected unqualified-id before ‘{’ token
#define min(x,y) ({ \
^
../../fio/fio/minmax.h:5:19: error: expected ‘)’ before ‘{’ token
../../fio/fio/minmax.h:6:2: error: expected primary-expression before ‘typeof’
typeof(x) _x = (x); \

...
ну и всё в таком же стиле.

Как разрулить эту проблему, подскажите кто знает?
#92 #1064526
>>1064505
вот ты выкинул кусок кода и несвязанные с ним ошибки компилятора, просто очередной охуеть мамкин незнайка
#93 #1064533
>>1064505
Посмотри на вывод с флагом -E . Очень похоже на то, что препроцессор не отработал.
#94 #1064543
>>1064236
int/int = int
1/2 = 0
#95 #1064614
>>1064505
Скорее всего вызываешь что то C из C++ или наоборот. А если сам писал, то где то обращаешься к классу вместо переменной (Point.draw() вместо Point p; p.draw())
#96 #1064627
>>1064505
>>1064614

>ся к классу вместо переменной (Point.draw() вмест


оказалось, что нужно сперва инклюдить с++ библиотеки и лишь после этого с-шные
#97 #1064652
>>1063107 (OP)
Как в gdb сделать шаг пока программа не работает?
#98 #1064716
Кто нибудь в Qt Editor'е с CryptoPP работал в плане просто использовать исходники? Какого хуя эта сука на компиляторе msvc++ сыпется с ошибками LINK типа символ не найден (все файлы есть), а на MinGW с ошибками типа ваш w_char* не LPCWSTR? Как заставить эту падаль работать?
#99 #1064822
Есть какая-нибудь библиотека, чтобы описывать логику интерфейса? Ну то есть интерфейс я рисую сам, а логику переходов, типа если пользователь нажал кнопку - показать следующий экран, писать лень.
#100 #1064863
#101 #1064870

>ПАЦАНЫ ВЫРУЧАЙТЕ


Вообще не понимаю как собирать Си библиотеки из исходников, объясните плиз.

Вот допустим, я скачал из интернета сходники библиотек ffmpeg и cURL.

Есть ОС Ubuntu и компилятор gcc, также установил cmake
раскупорил архив с ffmpeg и там много папок и файлов и как это все собирать ???
#102 #1064944
Репост из нуфаг треда:

> Есть желающие написать на плюсах сетевые шашки за деньги? Телега @dudaevsky

#103 #1064985
>>1064870
Видишь файл configure в корне, как правило он используется для конфигурации перед сборкой. У него должны быть разрешения на выполнения (если их нет, добавь chmod-ом), потом запускаешь его с ключом --help и смотришь, что тебе предлагает configure. Многие проекты, как правило, ничего не требуют за исключением указания префикса установки (опция --prefix, указываешь ее на свое усмотрение, например --prefix=/ (самый хуевый вариант), --prefix=/usr/ (вариант по-лучше), будет указывать на место, куда будешь ставить либу со всем говном), после того, как ты сконфигурировал это дерьмо (если у тебя нет каких-то devel-пакетов, лучше бы тебе установить их, configure явно будет намекать на их отсутствие), запускаешь make лучше с аргументом -jx, где х - количество твоих ядер у пинцессора + 1, то есть для моего core i5 - make -j5.
Ждешь и наблюдаешь за процессом... И потом хуяк, все готово, вах вах. Но осталось только установить либу. Тебе поможет make install (если ты указал префикс, на запись которого ты прав не имеешь, то тебе придется запустить скрипт от рута, но тут уже ничего не поделать, маня)
Такие дела, если вкратце. Конечно, можешь прихуячить туда cflags, cxxflags, ldflags и прочее дерьмо, но тут ведь тебе только для себя же.
#104 #1064993
@
СИ ПЛЮСЫ
@
СИ ПЛАС ПЛАС
#105 #1065001
>>1064993
@
КРЕСТЫ
#106 #1065031
Аноны, помогите пожалуйста. Я пока плохо понимаю ООП и не могу сделать того, что мог бы на простом С. Вопрос такой, как мне в int main вызвать cin/cout перегруженных операторов << и >>? Я уже реально голову сломал, блять! При попытке как-то перенести istream и ostream что внутри класса, и того что вне класса (вместе с функцией) в main - матерится в мэйне, при попытке убрать один из этих двух операторов - не работает cin или cout (судя по всему из-за перегрузки). Так как или через что мне вызвать cin/cout, чтобы main не ебал мозг? Покажите на примере моего кода, кому не сложно.

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

https://pastebin.com/pWUqnDyA
#107 #1065048
>>1065031
Всё работает, ты конструктор по умолчанию не правильно написал
https://ideone.com/LRalo8
#108 #1065050
>>1065048
Сука, я уебище криворукое даже спустя 3 часа не заметил этого. Всех благ.
#109 #1065055
#110 #1065056
>>1065048
Слушай, анон, ещё такой вопрос: ты не знаешь, в моём коде реализация перегрузок везде правильная или где-то косяк в return? Спасибо.
#111 #1065131
>>1065056
Косяки с операторами, но не ввода
+-/* должны возвращать объект, а не ссылку
#112 #1065132
>>1065056
если вызовешь оператор < или >, то бесконечной рекурсии не избежать ты там .value забыл
#113 #1065233
>>1063107 (OP)
Итак ньюфаг в треде.
Разумеется не так давно начал изучать С++, возник вопрос, собственно на счёт программирования на Linux, многих функций попросту нет, у некотороых есть аналоги но не у всех, как например реализовать ньюфане функцию _kbhit ? (из conio.h если что) И вообще как живется красноглазикам которые пишут на С++?
#114 #1065236
>>1065233

>conio.h


Для TUI в линупсе используется curses. Конио - чисто досовая вещь.
#115 #1065238
>>1065236
Но там всё равно нет _kbhit , должен же быть аналог
#116 #1065241
Хочу научиться использовать masm32 в Visual Studio 2017. Есть такие файлы:

hello.s
https://ideone.com/hG5BP0

main.cpp
В main просто вызывается функция, определенная в hello.s

При сборке получаю ошибку: 1>hello.s(9): error A2006: undefined symbol : printf

Видимо, проблема в порядке обработки исходных файлов и генерации объектников, но я не уверен. Как указать в hello.s, откуда брать информацию о функции printf?
#117 #1065359
>>1065233

>conio.h


Как оно, в 1990?
#118 #1065391
>>1064985
Спасибо за ответ. А как потом это все дерьмо линковать со своей прожкой. Например я сконфигурировал исходники и установил в --prefix=/usr/ там же вроде должны появиться готовые библиотеки формата lib_name.a , с которыми и нужно линковать свою программу, нет?
#119 #1065402
>>1064652
http://lmgtfy.com/?q=gdb+шаг
>>1064716
Ты на один шаг отдалил себя от получения проблемы, задав откровенно ненужный вопрос в начале поста и не написав ни одного сообщения об ошибке.
>>1065238
http://lmgtfy.com/?q=curses+kbhit+equivalent
>>1065391

>там же вроде должны появиться готовые библиотеки формата lib_name.a , с которыми и нужно линковать свою программу, нет?


После make install появятся.
#120 #1065418
>>1065233

>И вообще как живется красноглазикам которые пишут на С++?


Куда лучше чем сперворам.
#121 #1065419
>>1065418

>сперворам


спермоворам*
#122 #1065421
>>1065233

>unix


>conio.h


ты даун?
#123 #1065422
Народ, знаю C (стандарт 99), но нужен C++, что посоветуете?
#124 #1065426
>>1065422
LISP))))))))
#125 #1065435
#126 #1065441
>>1065421
Читай блять внимательно
#127 #1065443
>>1065426
книгу
#128 #1065445
>>1065441
ncurses
14 Кб, 748x213
#129 #1065448
>>1065422
Как то так
72 Кб, 1000x563
#130 #1065460
Посоны, я пишу планировщик потоков. Есть такая функция переключения контекста: https://ideone.com/B2kaUW
Проект собираю под архитектуру x86_64, поэтому первые четыре аргумента в вызове функций передаются через регистры. Я настроил в свойствах asm-файла использование 64-битного masm, но после этого возникли ошибки:

1>switch.asm(1): error A2008: syntax error : .
1>switch.asm(2): error A2008: syntax error : .
1>switch.asm(9): error A2008: syntax error : pushad
1>switch.asm(10): error A2008: syntax error : pushfd
1>switch.asm(15): error A2008: syntax error : popfd

При использовании 32-битного masm их нет. Как исправить проблему? Юзаю VS2017.
#131 #1065471
>>1065448
спс, есть что-нибудь в виде файла?
#132 #1065481
>>1065460
Что ты в этом треде забыл, болезненный?

>>1065471
Шапку открой, мудила.
#133 #1065529
>>1065391
Должны сами установиться по пути, который ты указал в --prefix, если не указывал, то наверно корень установки будет /usr или что-то такое. Так что в процессе линковки gcc, скорее всего, либу найдет.
Если ты собираешься дальше использовать CMake, тогда можешь воспользоваться pkg_config для поиска необходимых либ, например:

>> find_package(PkgConfig REQUIRED)


>> pkg_search_module(FFMPEG REQUIRED ffmpeg)


>> set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FFMPEG_C_FLAGS}")


>> set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FFMPEG_CXX_FLAGS}")


>> add_executable(sosach main.cxx)


>> target_link_libraries(sosach ${FFMPEG_LIBRARIES})


>> target_include_directories(sosach PRIVATE ${_INCLUDE_DIRS})



Еще есть такая штука, которая тоже много чего сделает для тебя, называется automake, но я не ебу, как ее использовать, лол. Да, впрочем, дохуя этих систем сборки, что уж.
#134 #1065539
Ананасы, если ли какая-нибудь либа, желательно для qt, которая умела бы отрисовывать графы?
#135 #1065551
В С++ добавили свойства как в C для уркаганов?
#136 #1065564
#138 #1065573
Может кто нибудь по русски объяснить - почему в Python я могу в две команды установить и заюзать любую более менее известную публичную либу, а в C++ вынужден ебать себя в рот в поисках как эту всю хуйню собрать?
#139 #1065575
>>1065573
Могу объяснить чисто по-русски: потому что иди нахуй, вот почему.
#140 #1065577
>>1065575
Найс, плюсан порвался.
#141 #1065578
>>1065577
Отказ кормить зелёного == порвался? Пиздец дебил.
#142 #1065579
>>1065578
Найс, у плюсона порвало пердак. это не кормлене зеленого - я искренне поинтересовался, а ты меня нахуй послал - ну не пидор ли ты после этого?
#143 #1065580
>>1065579

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


Сам догадаться не можешь?

>ты меня нахуй послал - ну не пидор ли ты после этого?


Нет.
#144 #1065581
>>1065580

>Сам догадаться не можешь?


Не могу

>Нет.


Пидора ответ.
#145 #1065583
>>1065581

>>Сам догадаться не можешь?


>Не могу


А ты пробовал?
#146 #1065584
>>1065573
Потому что пайтон - скриптовый язык, и ты даже не будешь знать, что где то наебался, пока оно не упадет в рантайме.
#147 #1065586
>>1065583
Пробовал. Гуглить пытался.

>>1065584
Ну окей. В Java например тоже самое. В Go почти тоже самое.
#148 #1065587
>>1065573
Два смузи этому хакеру
#149 #1065588
>>1065584
а причем тут библиотеки и простота их подключения?
#150 #1065590
>>1065588
То, что ты скачал библиотеку на пайтоне, вовсе не гарантирует, что она у тебя правильно скачалась и будет работать. А в плюсах если у тебя не собралась либа, ты знаешь что она не собралась.
#151 #1065592
>>1065590

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


скачать либу на пайтоне и проверить её работаспособность всё проще, чем скачать либу C++ и дождаться пока всё там скомпилируется.
так что такой себе аргумент.
#152 #1065595
>>1065587
Не траль плес
#153 #1065596
>>1065592
Цель всего этого какая?
Ты пришёл сообщить, что тебе тяжко ждать пока скомпрометируется?
#154 #1065597
>>1065596
Да и ещё мне тяжко всю эту парашу воедино сводить. Солюшн, в нем проект, внутри проект, установить зависимости, компиляция по полчаса. И вот я спрашиваю - зачем это? В чем соль? Почему так, а не иначе? Но видимо разумисты-плюсаны только хейтить способны.
#155 #1065598
2ch, возможно ли как-то динамически проверять следует ли перегруженный оператор за другим перегруженным оператором?
#156 #1065601
>>1065597
Ну это компилируемый язык который работает на процессоре
#157 #1065602
>>1065592
А, тебя никто разубеждать и не собирается.
Я как раз последние полгода плюсовые библиотеки разные пробую собирать. Обычно процесс выглядит так: скачал, кинул .h в папку с проектом, все работает. Чуть посложнее - скачал, кинул .h в папку с проектом, посмотрел в getting started какие #define нужны. Случай посложнее - скачал соответствующий Visual Studio project, поменял настройки в свойствах (static, MTd, вот это все). Самые сложные случаи - скачал либу, запустил cmake-gui, поставил галочки в тех опциях что заинтересовали, вписал пути к зависимостям которые не нашлись сами.
#158 #1065605
>>1065602
А сурсы ты куда кидаешь?
#159 #1065606
>>1065602
Вот это было неожиданно увидеть в конце самый лёгкий вариант в качестве самого сложного.
#160 #1065607
>>1065605
Никуда. Если либа header-only, то только .h. Если она билдится, то кидать я буду, естественно, .lib.
#161 #1065611
>>1065606
Мое субъективное мнение. В проектах для VS все опции стандартизированы и там сложнее перепутать. В cmake там скриптовый язык, который я еще не изучал, склонность автодетектить пути к зависимостям неправильно, потому что у меня например разные версии SDL под разные платформы имеются, опции на усмотрение автора либы.
#162 #1065613
>>1065607

>header-only


пример можно? может я попрактикуюсь и не буду машнить без повода
#163 #1065614
>>1065613
Ты скажи, какая либа нужна то.
Вот например юнит-тесты
https://github.com/philsquared/Catch
#164 #1065615
>>1065606
Самое сложное это что-нибудь типа хромиума собрать, но у меня тупо места на диске нет (там 200 гигов вроде советуют иметь)
390 Кб, 500x498
#165 #1065616
>>1065615

>(там 200 гигов вроде советуют иметь)

#166 #1065617
Вы ебанутые? пару минут не посещал двач, и тут 30 постов нахуярили, пиздец вы
#167 #1065618
>>1065616
System requirements

A 64-bit Intel machine with at least 8GB of RAM. More than 16GB is highly recommended.
At least 100GB of free disk space.
https://chromium.googlesource.com/chromium/src/+/lkcr/docs/linux_build_instructions.md

В 2012 писали про 20GB на диске.
#168 #1065622
>>1065597

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


А, спермоблядь. Так бы и сказал. Впрочем, и так понятно, что у тебя нет пакетного менеджера.
302 Кб, 240x187
#169 #1065624
>>1065622

>пакетный менеджер


>C++

#170 #1065629
>>1065624
А этот спермохлёб сегодня в ударе.
#171 #1065633
>>1065622
О, ты удачно напомнил. Ведь под винду и студию как раз есть пакетный менеджер, и не один. Nuget в студии и OneGet в дриснятке. пользоваться ими я, конечно, не буду
>>1065624
С разморозкой. В VS2017 и clang уже есть модули из следующего стандарта.
https://schneide.wordpress.com/2017/07/09/c-modules-example/
1,7 Мб, 400x206
#172 #1065639
>>1065633

>Nuget


>Пакетный менеджер


Вою.

>В VS2017 и clang уже есть модули из следующего стандарта.


Никому неизвестно что там будет и как они будут выглядеть, а у VS они уже есть? Класека.

Да и какой будущий стандарт? С++17 до сих пор разрабатывается.

>>1065629
Мамка твоя спермохлеб.
#173 #1065640
>>1065639
С++17 уже давно вышел спермохлёб.
#174 #1065642
>>1065639

>какой будущий стандарт?


С++20

>у VS они уже есть?


Как и у Clang. (gcc нинужно)

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


Только тебе неизвестно, всем уже известно, по ссылке код.
#175 #1065643
>>1065642
Зачем что-то объяснять умственно умственно отсталому школьнику?
#176 #1065644
>>1065639
Ты наверное считаешь, что такой труп страуса сидит и придумывает, рисует в тетрадку, чтобы такого внести в стандарт. И тебе невдомек, что туда попадают уже готовые вещи, с прототипами, написанные майкрософтом и эпплом.
846 Кб, 480x228
#177 #1065645
>>1065640
Ты спермой то ещё не захлебнулся там? Мамка отнимает?

>and the final standard is expected to be published before the end of the year.



>>1065642

>С++20


Это лишь догадки.

>Как и у Clang. (gcc нинужно)


Который отличается от VS, потому что стандарта, внимание, НЕТУ.

Бля, проигрываю с этих идиотов. Хотя бы нагуглили что-ли. И ещё копротивляются.
#178 #1065646
>>1065643
Хочу еще с него попроигрывать.
#179 #1065647
>>1065645

>Это лишь догадки.


Это уже факт, озвученный авторами языка. Нагуглишь сам, там дословно с++17 мы уже зафиксировали, теперь мы работаем над c++20.

>Который отличается


Это неважно. Одним словом отличается.
#180 #1065648
>>1065644
Ими не имеет смысла пользоваться сейчас. Ибо они ещё 100 раз поменяют свой вид.
#181 #1065649
Какой стек нужен, чтобы взяли джуном на c++?
#182 #1065650
>>1065649
Непереполненный.
#183 #1065652
>>1065648
Имеет смысл изучить все передовое, чтобы потом не выглядеть как ты неандертальцем.
#184 #1065653
>>1065647

>Нагуглишь сам, там дословно с++17 мы уже зафиксировали, теперь мы работаем над c++20.


Я про то, что не факт, что модули будут в 20ой. В 17ом тоже говорили сделаем, но хуй там.
#185 #1065654
>>1065650
Ждал твой ответ.
#186 #1065657
>>1065652
А знаки препинания не стоит изучать, всратопитек?
#187 #1065658
>>1065657
Это авторский эмпфазис.
#188 #1065659
>>1065658
Хоть бы написал правильно.
#189 #1065660
>>1065654
Я сам хочу вкотится, так что правильного ответа не знаю. Вангую что язык (ну тут понятно), плюс предметная область - если высоконагруженные, то всякие многопоточности, базы данных, работа с памятью, если геймдев - 3d и движки, если микросхемы - оптимизации, тулчейны.
#190 #1065706
>>1065573

>в C++ вынужден ебать себя в рот в поисках как эту всю хуйню собрать?


В 99% случаев для собирания либы нужно просто сказать make. Ну, иногда конфиг поправить под себя.
#191 #1065717
Скатили тред в срач, найс.
#192 #1065742
>>1065573
Потому что легаси, потому что нативный код, потому что в комитете тормоза сидят.
>>1065597

>И вот я спрашиваю - зачем это?


Для перформанса (которого всё равно может не быть, если постараться и накорябать кучу копирований и коротких циклов).
>>1065598
1) Нахуй тебе динамически?
2) Нужно будет попердолить свои перегруженные операторы так, чтобы одна перегрузка принимала какой-нибудь THISTYPEISRETURNEDBYANOTHEROVERLOAD.
>>1065639

>С++17 до сих пор разрабатывается.


Финал драфт уже есть, его принимают сейчас.
#193 #1065751
>>1065573
Модули хотят в 20 припереть, вроде как, но это неточно. Даже не ебу, как они собрались это делать.
#194 #1065766
>>1065751
Джва пропосала есть.
#195 #1065769
Есть на гитхабе какие-нибудь проекты, в которых, я хз как объяснить, контрибьюторам прям задания кидают? Хочу в крестах скилл поднять на опенсорсе и закрасить плиточки на гитхабе
#196 #1065898
>>1065769
Идёшь в любую репу с активным автором (чтобы не ждать у моря погоды), открываешь список issues, находишь там то, что тебе интересно, и пишешь автору, что хочешь сделать (желательно - после того, как знаешь, что сможешь и сделаешь), во время этого поддерживаешь контакт.
#197 #1065910
>>1065766

>> Джва пропосала есть.


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

#198 #1065932
>>1065742

>Финал драфт уже есть, его принимают сейчас.


>его принимают сейчас


https://herbsutter.com/2017/09/06/c17-is-formally-approved/

> 2017/09/06


> его принимают сейчас


> 2017/09/06

#199 #1065950
>>1065932

>and since then we have been in the final procedural endgame of formal ISO approval and publication.

#200 #1066060
>>1065950
Это про митинг с 27 февраля по 4 марта. Since 4 марта и до 6 сентября они были in the final procedural endgame of formal ISO approval and publication.
#201 #1066109
Почему я не могу создать объект класса CoCarClassFactory? Пишет object of abstract class "CoCarClassFactory" is not allowed.
https://pastebin.com/iFMT3Tyi
#202 #1066128
>>1066109
Отмена реквеста, в LockServer надо было параметр BOOL, а не bool ставить.
#203 #1066189
>>1066060
А, точно, жопой читал.
#204 #1066372
Как "витянуть" системные характеристики из компьютера?
Компилятор gcc.
#205 #1066431
>>1066372
С помощью компилятора - никак. С помощью плюсов: находишь системные вызовы для этого или либы или используешь CLI-программы, встроенные в ОС.
#206 #1066485
Есть тут специалисты по CUDA?
#207 #1066490
#208 #1066494
>>1066485
Пиши вопрос – завтра отвечу. Алсо, если есть работа, оставляй мыльце
#209 #1066495
>>1066494
Пошел нахуй.
#210 #1066499
>>1066495
Ссу тебе в рот, хамло.
#211 #1066600
>>1066499
Тебя другой анончик посылает.
#212 #1066603
>>1066600
Ну я ему и ссу в рот. Человеку с вопросом до сих пор готов ответить.
#213 #1066657
>>1066603
Сейчас я на РАБотку подъеду и спрошу, у меня там код. Что конкретно ты делал на CUDA? Насколько знаком с cusolver и cublas, нужно будет быстро хуярить, если что.
#214 #1066673
#215 #1066693
>>1066657

> Что конкретно ты делал на CUDA?


Решатели для конечных элементов. С библиотеками, без библиотек... Делал свой MPI-CUDA решатель для кластера, например.

> Насколько знаком с cusolver и cublas


С первым не работал (работал с cusparse), со вторым – работал. Вообще опыт гомоебли с математическими библиотеками немаленький, если задача нормально поставлена будет, заведу быстро почти что угодно.
#216 #1066779
Аноны, а в c++ можно как-то обратиться напрямую к регистру процессора? Пишу программу под определенный проц.
#218 #1066806
Пытался применить оператор "меньше" в виде функции:
bool b=std::operator<(x,y);
Где x и y - числового типа.
Но конпелятор отказывается конпелировать, говорит, что можно сравнивать только две std::pair, либо два std::errorcode либо ещё что-то, но про числа ничего нет. ЧЯДНТ?
#219 #1066814
>>1066806
Числа не являются классами, это примитивные типы для них такой оператор нигде не определён.
#220 #1066875
Тупой вопрос.
std::string с reserve(100) не копирует же данные в другое место, пока изменения в строке не приводя тк увеличению ее длинны на более 100 символов?
#221 #1066944
Господа, гоняю под mac OS X, понять не могу:
fatal error: 'evhttp.h' file not found

ШО ДЕЛАТИ? ГДЕ ЕЁ ИСКАТИ? ВСЕ ОБЫСКАЛ – НЕТ НИГДЕ
#222 #1066993
>>1066875
не копирует во время reserve, или после?
#223 #1067018
>>1066875
http://eel.is/c++draft/basic.string#string.require-4
Никаких гарантий относительно reserve в стандарте нет.
>>1066779
Только через компиляторозависимые расширения языка.
>>1066806
operator< - это конкретно для вызова и определения перегрузок. Для всего остального есть std::less (используется в качестве сравнителя по умолчанию во многих шаблонах).
147 Кб, 1189x896
Говно #225 #1067094
Нагородить нелепой хуйни, которой невозможно воспользоватся, пообещать сделать юзабельным в следующих версиях и так ни хуя и не сделать. Именно так разрабатывается С++.

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


> Такое упущение, конечно же, не могло остаться не замеченным, и на этапе согласования стандарта C++14 было предложено решение для строковых аргументов


> Однако в финальную редакцию стандарта C++14 так и не попало. Впрочем, не будем отчаиваться, есть надежда, что нас обрадует C++17.



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

Но нет до последнего будут обмазыватся несвежим говном которое наложили еще два полудебила керниган-ричи.
#226 #1067448
Поясните, нахуя в браузерах используют такой ЯП как C++? Он же до пизды медленный и однопоточный, все жалуются.
#227 #1067450
>>1067448

>ЯП как C++


стильно, модно, молодежно (20 лет назад было)
#228 #1067451
>>1067450
Ну вот на JS можно написать очень быстрый веб-сервер. На C++ такое можно?
#229 #1067484
>>1067448

> C++?


> до пизды медленный


> однопоточный


>все жалуются.


Пукпук.
#230 #1067600
>>1067451
У JS под капотом C++.
#231 #1067608
>>1067600
Ну вот, поэтому и медленный.

>>1067484
Смотри выше, грамотей.
83 Кб, 280x280
#232 #1067679
Есть для Ц-шки онлайн-учебник для ньюфагов типа питонтьютора, где бы после главы сразу были задачки, которые можно сразу скомпилить и проверить?
114 Кб, 806x939
#233 #1067700
Можно ли сделать класс с переменным размером темплейта вектора, при этом все завернуто примерно как на пике.

https://pastebin.com/Tr71CB2U
#234 #1067702
>>1067679
Я вот такой курс проходил, там правда иногда ебанутые задания на матешу попадаются.
https://stepik.org/course/363/
#235 #1067704
>>1067700
Сделать класс шаблонным и передавать в него нужный тип?
#236 #1067707
>>1067704
Всмысле, чтобы враппать эти шаблоны, и их в интерфейсе вообще не было.
Ну, блин, без дополнительного класса-враппера, используя только один класс?
#237 #1067716
>>1067707
Всмысле, мне нужно, чтобы был шаблонный мембер-вектор с компайл-тайм содержимым, не делая при этом сам класс шаблонным. Я даже не знаю как правильно такой враппер написать.
#238 #1067762
>>1067716
Итак, ты хочешь, чтобы один и тот же тип имел разное внутреннее представление. Ты здоров?
#239 #1067763
>>1067700
что за IDE?
#240 #1067765
>>1067762
Да, в питоне обзмеился совсем.
Сделал эту штуку через наследование.

>>1067763
Qt Creator
512x512
#241 #1067768
>>1067700
union YobaFace {
uint32_t i32;
uint16_t i16;
uint8_t i8;
};
#242 #1067778
>>1067700
Без наследования никак
512x512
#243 #1067783
>>1067768
А, еще же есть std::variant / boost::variant
#244 #1067835
>>1067783
Вектор с вариантом, чисто чтобы архитектура по красоте была?
#245 #1067839
>>1064870
для таких даунов, как ты, все либы уже собраны и аккуратно положены в репу. тебе всего лишь надо сделать:
apt install libname-dev
apt install libcurl4-gnutls-dev или же libcurl4-openssl-dev (разница лишь в либе для шифрования, как видишь)
apt install ffmpeg
#246 #1067848
>>1067839
Иногда мне кажется, что сбор либ, конфигурация и настройка на винде требует куда большего скилла чем на никсе.
#247 #1067849
>>1067848
ещё в 15-ю визуалку подвезли пакетный менеджер специально для плюсов (не нюгет, а другой -- соснольный). и курл там точно есть
#248 #1067850
>>1067849
быстрофикс: это и есть нюгет, токмо соснольный интерфейс https://www.nuget.org/packages/curl/
#249 #1067866
>>1067835
Вектор с вариантом - это пиздец, хачем так делать? Вариант векторов.
#250 #1067904
>>1067702
Да ничего, заодно матешу поупражняю. Спасибо.
#251 #1067929
>>1067848
Именно так. А все потому открытые библиотеки на юниксах и разрабатывают.
>>1067850
Nuget это конечно мило, но гвоздями прибито к Visual Studio и Windows. В одном проекте сейчас переходим на Conan. Вполне юзабельно. Разве что на текущий момент оперативно не переключишь вариант сборки (Debug\Release, x64\x86).
#252 #1067942
Двач, как называются нижестоящие объявления? Может быть термин есть какой?
#253 #1067969
>>1067942

>нижестоящие объявления


Это чоза зверь такой? пример хоть кинь, чтоле
#254 #1068020
Как сейчас пишут оконные приложения на С++ под Windows? Я посмотрел, что есть MFC, Qt, WinAPI, но что-то не один из этих подходов мне не нравится.
#255 #1068021
>>1068020

>что-то не один из этих подходов мне не нравится


важное мнение школотрона
#256 #1068024
>>1068021
Эти библиотеки навязывают свой стиль программирования и не учитывают то, что программист привык писать по-другому.
#257 #1068035
>>1067942
Только такие знаю
[CODE]//decl.h
class SomeClass; //forward declaration (1)

class UsingClass { //declaration (2)
int do(SomeClass); //declaration, using (1)
};

class SomeClass { //declaration
public: float f;
}

//decl.cpp
#include "decl.h"
int UsingClass::do(SomeClass sc) { //definition (3)
return (int)(sc+0.1f) ;
}[/CODE]
#258 #1068120
>>1068024
Пиши свою обёртку к GTK под свои утиные запросы.
#259 #1068122
>>1068020
Тебе вряд ли это понравится.
1. Встраивают хром или другой рендер HTML (Sciter)
2. .NET и WPF
3. Берут что то из этого списка https://github.com/fffaraz/awesome-cpp#gui
(CEGUI, Dear IMGUI, nana) или вообще какую то еболу типа Ultimate++.
#260 #1068161
>>1068024

>Эти библиотеки навязывают свой стиль программирования


Лол кек. Фреймворк — это практически по определению наличие инверсии зависимостей. Так что да, ты будешь писать в стиле, нужном этим библиотекам. В этом смысл инверсии зависимостей.
#261 #1068163
>>1068161
Сейчас бы в 2к17 путать библиотеки, которые дергаешь ты, с фреймворками, которые app.run() и дергают тебя.
135 Кб, 1280x1040
#262 #1068268
Есть ли тут те, кто пишет на QT? Как можно организовать специфическую сортировку элементов в таблице (QTableView)? Существует дефолтная функция, которая сортирует все, кроме заголовков, но мне нужно сортировать только некоторые (например, выделенные) элементы.
В интернетах вроде советуют использовать QSortFilterProxyModel, но я нубоват и не могу понять, что оно делает. Оно позволит мне наложить фильтр на имеющуюся модель так, чтобы в нее не вошла часть строк, и потом отсортировать стандартным образом? Но тогда не скроются ли непрошедшие фильтр строки из таблицы? Мне нужно их оставить на местах.

пик анрилейтед, найден по запросу qt-chan
#263 #1068312
У меня есть динамически выделенный кусок памяти на N байт.
Можно ли аккуратно std::move'нуть ( или скопировать ) его в вектор, если N кратно размеру темплейта?

>>1068268
Если не ошибаюсь, ничего специфического в этом нет.
Пусть тебе нужно сортировать выделенные элементы по нажатию ctrl+t.
Пишешь обработчик ивента, по нажатию ctrl+t идешь смотреть какие строчки в таблице выделены и сортируешь их любым известным методом.
#264 #1068382
>>1068312
1) Делаешь resize старого.
2) Копируешь в .data().

1) http://en.cppreference.com/w/cpp/container/vector/assign вторая перегрузка принимает в том числе указатели.

Нет никаких причин для того, чтобы не заменить динамически выделенный кусок на вектор, так как есть data(). инбифо древние плюсы
#265 #1068611
Присел на Qt quick controls 2 после пары счастливых лет на WPF. Как в нем у многокомпонентых контролов например, DelayButton обращаться к свойствам компонентов, из которых он состоит например, к радиусу Rectangle'а, который как бе Background? Если шуршать в самих свойствах контрола, когда инстанцируешь его в Item'е/Page'е, то там невозможно что нибудь изменить из этих свойств. Сама документация Qt в параграфе с многообещающим названием "Styling delay button" об этом говорит только "ну бротан делау буттон состоит из контент и васкдроунь ))00)0 дальше сам делой))00". Это типа чё, мне нужно писать велосипед типа MyDelayButton, и там уже делать как мне надо?
#266 #1068622
>>1068611
Я думаю быстрей свою библиотеку написать на чистом WinAPI, чем годами наворачивать чьё-то говно, которое в конце концов ещё окажется ещё и не работоспособным.

изобретатель велосипедов
#267 #1068624
допустим, у меня в классе есть структура, которая может быть задана, а может и не быть задана.
Как сделать, чтобы можно было легкор проверять, задана она или нет?

struct data_s {
int i;
double d;
}

class Jopa {
public:
struct data_s s1 = {0};
struct data_s s2 = {0};
}

....
if ( jopa_inst.s1 != {0} ) {
jopa_inst.s1 = { 126, 2.0 };
}

Так?
#268 #1068626
>>1068268
Если тебе нужно сортировать данные модели то тебе нужно унаследоваться от QSortFilterProxyModel и перекрыть там методы filterAcceptsRow и filterAcceptsColumn которые будут пропускать строки и столбцы по заданному условию. Для изменения порядка элементов нужно перекрывать соответсвующий метод. Это нужно потому что элементы модели прикреплены к ней намертво и в другую модель их нельзя передать даже по указателю, поэтому нужна прокси модель, которая будет пропускать и сортировать элементы уже имеющуюся модели для конкретного представления.
#269 #1068628
>>1068624
Создай константный глобальный нул элемент этой структуры и присваивай его по-умолчанию, а потом сравнивай с ней же.

const data_s null_data_s = new data_s{0, 0.f};

class Jopa {
public:
struct data_s s1 =
null_data_s;
struct data_s s2 = null_data_s;
}

if ( jopa_inst.s1 !=
null_data_s ) {

}
#270 #1068629
>>1068628
Звездочки - это классно.

А если у меня структура на 20 значений, проще нельзя сделать? Все uint16-32
#271 #1068631
>>1068629
Тогда в структуре сделай булево поле которое будет показывать проинициализована структура или нет.
#272 #1068637
>>1068622

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


Напиши и покажи, как она работает. Предчувствую, что на ВинАПИ ты не писал, если ты так говоришь.
103 Кб, 876x581
#273 #1069085
>>1068637
Я раньше писал на WinAPI, даже лабы в универе делал на нём, когда все писали их на Borland C++ под MS-DOS. Поэтому у меня по ЯТП были всегда пятёрки.
Буду потихоньку писать свою библиотеку. Может её сделать платной? Некоторые скажут, что я наживаюсь на их несчастье. Но что я ещё могу делать!? Я умею только программировать.
#274 #1069111
>>1069085
Искренне не понимаю чем вас qt/wx не устравивет. Есть чтро предложить для запила/ исправить - ебаш коммит
#275 #1069131
>>1069111
Не устраивает, что хочу использовать Qt как молоток, а он ведет себя как большой резиновый член, который так и норовит залезть мне в жопу. Это касается и Qt как библиотеки, так и Qt creator'а как IDE. Особенно в QML, это просто пиздец. IDE крашится блять не успеваешь даже строчку дописать.
#276 #1069133
>>1069131
Да не, ты придираешься, с ним все в порядке.
wx попробуй, она более свободная
#277 #1069153
>>1069111
Qt многих не устраивает тем, что это уже не c++, а своя экосистема, сигналы, слоты, строки, вот это все придется тоже тащить.
#278 #1069154
>>1069153
Это c++, ты в 2003м застрял
#279 #1069158
>>1069154
Так как раз не я, а Qt застрял, это в 2003 писали всякие самопальные обертки на строки, потоки, вот это все.
19 Кб, 749x110
#280 #1069179
чому крешит
#281 #1069182
>>1069179
char[] -_-
#282 #1069194
>>1063107 (OP)
Сап, плюсач.

Пытаюсь в плюсы.
Не получается сделать запрос с помощью boost:asio.
https://gist.github.com/spudro228/6732af3d261000643ed15c6733fcf2c2

Как сделоть HTTPS запрос?
#283 #1069198
>>1069194
Для https нужен ssl-сокет. В Boost::ASIO он есть. И да, подключаться нужно на порт 443, а не 80.
#284 #1069199
зачем ставить std:: перед каждой функцией, если можно написать using namespace std?
#287 #1069202
>>1069199
Что бы не тащить все символы из std в текущее пространство имен. Это точно не стоит делать в заголовочных файлах, ибо не ясно куда они потом будут подключатся и когда возникнет конфликт имен.
#289 #1069216
>>1067094

>


>По хорошему С++ уже давно пора хоронить и порядочные люди так бы и сделали. Будь страус человеком встал бы и сказал: нагородили говна и запутались в нем. закрываем нахуй.


>


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



Поддвачну.

Нельзя пофиксить кресты сохраняя обратную совместимость.
А если не сохранять, то это уже и не кресты.

Тол-же касается джавы кстати, и прости господи, JS.

Самое время на раст перекатываться.
271 Кб, 1394x830
#290 #1069241
Как сконфигурировать boost?
#291 #1069242
>>1069241

target_link_libraries(project ${Boost_LIBRARIES} boost_system boost_filesystem boost_thread )
61 Кб, 1348x305
#292 #1069246
>>1069242
Куда это вставить?
#293 #1069247
>>1069246
В очко себе вставь и клеем залей, блядь.
#294 #1069248
>>1069247
Он блядь либы линковать не умеет, но пилит отдельный конфиг под эпл, ебнуться
#295 #1069249
>>1069248
Это не мои исходники. Я вообще не C++ программист. Мне просто надо собрать эту хуйню, потому что собранной нет.
#296 #1069250
>>1069249
А тебе нахуй оно тогда, если ты не программист, или в комплекте программ скупе, аваст, Paint.NET еще и Boost идет?!
#297 #1069252
>>1069250
Мне нужны бинарники
#298 #1069255
>>1069252
Ок, ладно. Все равно нихуя не пойму. Короче, не знаю, прокатит ли:
тыкаешь `Add entry` указываешь в название поля BOOST_ROOT, а в качестве значения путь к папке, куда ты распаковал Boost, у тебя вроде как `c:/local/boost_1_65_1/`.
После этого `configure`, затем `generate` и вроде как все. Но это не точно. Я с буста только препроцессор использовал, а он header-only.
#299 #1069259
>>1069255
Не работает BOOST_ROOT, BOOST_LIBRARYDIR.
#300 #1069261
Сап, пытаюсь сделать отправку мыла с содержимым двух тексбоксов через Windows Forms.
Записываю данные в две переменные:

String ^text = textBox1->Text;
String ^text2 = textBox2->Text;

но не могу понять, как в Message->Body засунуть обе из них, а в идеале еще и на разных строках с подписями.

Я полный ньюфаг и первый раз делаю что-нибудь вне консоли, так что не обоссывайте сильно
#301 #1069268
>>1069261
Эй дружок-пирожок, тобой выбран не правильный тред – С#-тред двумя страницами ниже.
#302 #1069303
>>1069199
В хелло ворлд, это конечно неочевидно.
А когда у тебя большой легаси проект в котором есть 100500 самописных string - станет понятно.
#303 #1069347
В универе заставляют учить С и его пересдавать
Но я так понял, что он нахуй не нужен и с++ перспективнее
Если я буду учить с++ сам, я осилю просто с?
#304 #1069362
>>1069347
Осилишь.
Но у С есть ниша - микроконтроллеры. И это не только хипстерские ардуино, но и контроллеры котлов на заводиках, например. Космические аппараты вроде тоже только на С можно программировать (MISRA C)
#305 #1069365
>>1069362
Ну я первц семестр по С сдал, а второй нет.
Я думал он мертвый вообще. А какой сложнее считается?
#306 #1069366
>>1069362
А чего котлы и космоаппараты на с++ не пилят?
#307 #1069370
>>1069366
Мало памяти - нельзя выделять динамически, низкая скорость проца, реалтайм - нельзя исключения, сами алгоритмы простые - от системы классов и наследования нет плюшек. Проще написать на "высокоуровневом ассемблере", чем гадать, во что раскроется очередной шаблон, если поменять какой то параметр.
#309 #1069410
>>1069408
О, не знал, полистаю.
Правда, сейчас уже есть CoreCppGuidelines
#310 #1069412
>>1069268
Нет, формально, он пишет по теме. c++ winforms на CLI действительно существовали до 2013 года.
#311 #1069417
>>1069268
Значок ^ у переменной не заметил?
#313 #1069525
Какая книга здесь аналог K&R минималистичная,
но охватывающая большую часть множества языка
? "Язык программирования С++" Страуструпа? Книги он пишет лучше, чем языки?
#314 #1069547
>>1069417
В плюсах такой хуйни нет. Это дотнетовая залупа.
#315 #1069613
>>1069525
Хуже
#318 #1069655
>>1069365
Плюсы, как язык, сложнее, чем С, так как база терминов разбухла в разы. Просто на С ты будешь писать ручками многое из того, что в С++ сделано авторами STL и авторами компилятора. Если ты вместо С будешь практиковать С++, некоторый пробел в твоей практике будет.

Олсо, с некоторых пор С не совместим с С++. У С тоже есть новые стандарты (но я почти уверен в том, что у тебя про них ни слова не спросят).
#319 #1069657
>>1069655

>Олсо, с некоторых пор С не совместим с С++.


Ну, то есть, компилятор тебе на почти все проблемы укажет.
#320 #1069675
>>1069625
Спасибо.

>>1069613
Жаль.
#321 #1069690
>>1069624
Плюсы — это плюсы.
Дотнет — это дотнет со своими языками. И этот маркетинговый кастран — не плюсы.
#322 #1069704
>>1069690
C++/CLI - это расширения стандартного языка C++. Не веришь мне - сам Страуструп так пишет. http://www.stroustrup.com/bs_faq.html#CppCLI
Тебя же не смущают расширения c++, скажем, используемые в gcc?
#323 #1069709
>>1069704
Ага, пишет, и вежливо поливает говном с конца первого абзаца.
Я тебе повторюсь — это такое же ответвление от плюсов, как плюсы от си (и труп страуса об этом там же пишет, почитай).
#324 #1069719
>>1069704

>C++/CLI - это расширения стандартного языка C++.


Я всегда использовал лишь как прослойку между managed и native частями приложения. Это и не полноценные плюсы, и не полноценные шарпы. 11 и далее стандарты там в принципе не завезены. Чем меньше C++/CLI, тем лучше.
мимопроходил
#325 #1069731
>>1069704

>Тебя же не смущают расширения c++, скажем, используемые в gcc?


Меня смущают.
#326 #1069732
А вот каким образом компилятлр так правильно все в машинный код переводит?
Магия какая то
105 Кб, 1126x1280
#327 #1069733
Сап, как такое реализовать через вложенные циклы?
#328 #1069741
>>1069733
Какое?
#329 #1069748
>>1069733
Ну у тебя тип внешний цикл это каждая нечетная строчка.
Внутренний это символы на каждой строчке.
#330 #1069750
>>1069732
Никакой магии. сначала по коду проходится транслятор, который расхуяривает весь твой ООП, лямбды и прочее на элементарные единицы, а потом уже им ставит взаимное соответствие со всякими B8 00 00 00.
#331 #1069761
Кто нибудь под андроид на Qt ебашит/ебашил? Есть пара ньюфажных вопросов.
#332 #1069771
>>1069733
int arr[] = {1, 6, 2, 2, 7, 7, 3, 3, 3, 8, 8, 8, 4, 4, 4, 4, 9, 9, 9, 9};
for (size_t i(0), k(1); i < sizeof(arr)/sizeof(int); ++i) {
std::cout << arr << ' ';
if (i+1 == static_cast<size_t>((1.f/8.f)(2kk + 4k + pow(-1, 2*k) + pow(-1, k+1)))) {
++k;
std::cout << std::endl;
}
while(false) ; //вложенные циклы
while(false) ; //вложенные циклы
while(false) ; //вложенные циклы
}
#333 #1069774
>>1069771
Ебучая макаба съела зведочки http://cpp.sh/4qlqr
#334 #1069786
>>1069761

>Qt ебашит/ебашил


да
#335 #1069791
>>1069786
Стоит ли вкатываться на андроид через Qt, или лучше смотреть в сторону android studio и java? Определяющим критерием для меня является: предоставляет ли Qt возможности вертеть ОС мобилы как мне нужно, ну или хотя бы настолько же, как мне это позволяет java framework'и в том же AS?
#336 #1069792
>>1069774
Лутший ответ.
#337 #1069793
>>1069791
Лучше выучи Objective-C и ебаш под гейос, если кресты и qt знаешь то на это уйдет неделя.
#338 #1069796
>>1069793
Кресты знаю так себе, в свободное от работы время пытаюсь въехать в Qt, а тут еще и параллельно лабы в универе с мобильными приложениями точнее, именно android, а тут как раз Qt предлагает свой фреймворк для этого. Не хочу просто еще на java и AS садиться, но если Qt не позволит, например, взаимодействовать с ФС телефона/другими приложениями/функциями ОС, а AS позволяет, то придется присесть на джаву.
#339 #1069802
>>1069791

>java


жаба под андроид это самое ужасное уебище которое я встречал, кьют без вариантов.
#340 #1069820
>>1069750

>В8 00 00 00


Що это?
#341 #1069821
>>1069820
машинный код
#342 #1069823
>>1069732
Без багов на каждом уровне никуда, багтрекер своего компилятора сам найди.
#343 #1069826
Серьезно подумываю перекатиться в жс, чувствую, что душа лежит, как думаете сложно будет после 4 лет на крестах?
#344 #1069837
>>1069826

> плюсы -> жс


Что же ты делаешь.
Если душа лежит - конечно попробуй. Сложно будет разве что с тем, чтобы разобраться во всем js-зоопарке, и писать красиво на языке, который всеми силами поощряет говнокод.
#345 #1069853
>>1069826

>душа лежит


Вот именно, что лежит и не пытает отжаться.
#346 #1069863
>>1069821
А откуда в машинном коде символы?
#347 #1069866
#348 #1069913
>>1069863
Давай в макдак работать пиздуй.
#349 #1069921
>>1063847
Ты ещё C++ не выучил
#350 #1069925
>>1064236
Классическая пулемётная очередь в ногу из верёвки. Мир тебе прахом, братишка.
#351 #1069929
>>1069863
Ниоткуда. Это перевод на мясной язык для человеков.
#352 #1069939
Знаю C, немного знаю С++. Что лучше взять для вката, Липпмана или Страуструпа "ЯП С++"?
#353 #1069985
>>1069939
Я вкатывался на скотте мейерсе "Эффективный и современный С++". Прихуел, конечно, знатно... Забавно то, что потом пришлось читать cppreference, чтобы восполнять знания. Лучше бы книгу по крестам прочел )
#354 #1070090
Сап, плюсач. Вопрос, возможно глупый, но я не смог быстро найти ответ.
Как считать из файла в дабл, если числа в файле отделены пробелами
5 4,124 -1000
Причем хотелось бы выполнение двух пунктов.
Не использовать библиотеки из плюсов, типа stdio.h
Возможно, что файл закончился или написано не число.
Раньше я для этого через фстрим делал гетлайн, а потом преобразовывал в инт, но теперь у меня дабл и возможное отсутствие атои аналога в библиотеке. Самому писать функцию для перевода лень, программа то мизерная.
#355 #1070101
>>1069985
По такой логике тебе после прохождения, например, курса грамматики английского языка словарь должен быть не нужен, ну ахуеть теперь.

Цель учебников — дать тебе основу, с которой ты сам уже сможешь развиваться дальше, вот и всё.
#356 #1070119
>>1070090
Я к примеру вот так написал программу
https://pastebin.com/NQrXtFcG
На внутреннюю логику не смотрите, я в функции считываю из файла, как из потока. Однако это все не компилируется, хотя я вроде подключил все библиотеки. Мне кажется дело в команде
using namespace std;
Но если ее разнести из ашника, то не видит стринг в ашнике, а если вместо стринга написать std::string, то не компилируется как обычно с непонятными ошибками.
#357 #1070121
>>1070090

> stdio.h


> atoi()


> кресты

#358 #1070123
>>1070121
Не понял. Мне просто не хочется использовать эти либы, потому что не комильфо. Что не так?
#359 #1070125
>>1070123
Это сишная либа, а не плюсовая.
#360 #1070127
>>1070125
Ну она вроде как работает и на плюсах. В любом случае я говорю, что не хочу ее использовать.
#361 #1070139
>>1070090
Я бы как то так делал.

#include <string>
#include <filesystem>
#include <fstream>
#include <sstream>
#include <iostream>
#include <clocale>
namespace fs {
using path = std::experimental::filesystem::path; //или уже без experimental?
}

int main() {
std::locale::global(std::locale("Russian")); //чтобы не превращать вещественные запятые в точки
std::cout.imbue(std::locale("Russian"));

std::stringstream s_stream;
{
std::ifstream in_stream{ fs::path{ "C:/Work/test.txt" } };
s_stream << in_stream.rdbuf();
}

float a, b, c;
s_stream >> a >> b >> c;

std::cout << a << std::endl;
std::cout << b << std::endl;
std::cout << c << std::endl;

return 0;
}
#361 #1070139
>>1070090
Я бы как то так делал.

#include <string>
#include <filesystem>
#include <fstream>
#include <sstream>
#include <iostream>
#include <clocale>
namespace fs {
using path = std::experimental::filesystem::path; //или уже без experimental?
}

int main() {
std::locale::global(std::locale("Russian")); //чтобы не превращать вещественные запятые в точки
std::cout.imbue(std::locale("Russian"));

std::stringstream s_stream;
{
std::ifstream in_stream{ fs::path{ "C:/Work/test.txt" } };
s_stream << in_stream.rdbuf();
}

float a, b, c;
s_stream >> a >> b >> c;

std::cout << a << std::endl;
std::cout << b << std::endl;
std::cout << c << std::endl;

return 0;
}
#362 #1070140
>>1070119
Шо там у тебя за непонятные ашипки?
Все компилируется, что с using namespace std, что без (только без еще надо std::cout писать)
85 Кб, 1920x1080
#363 #1070143
>>1070140
Вот и я удивляюсь.
#364 #1070146
>>1070143

>ld


Так это ошибка линкера. У тебя пути не настроены.
#365 #1070147
>>1070143
А, во. gcc это для c. Надо собирать командой g++
sage #366 #1070148
>>1070146
Раньше все работало жи, я с компилятором ниче не делал. Что-то похерило мне либы? Как чинить на линупсе?
sage #367 #1070150
>>1070147
Ня, ровно год назад я наступал на те же грабли и меня ткнули в мое же говно. Мне кажется я необучаемый. Спасибо.
#368 #1070153
>>1070139
Спасибо анон, хоть у меня и линупс, да и сложно как-то все.
#369 #1070230
Шарит тут кто в Qt? Я в нем всего-то первые два часа и надо заделать лейаут по типу простого paint. То есть в MainWindow я помещаю виджет в дизайн редакторе, например openGLWidget, но как я дальше вообще связываюсь с ним в коде? Для него не создается никаких классов, всё где я пока могу писать код - mainwindow.cpp. Мне надо самому писать класс для каждого виджета и вручную связывать класс и виджет? Мне бы хотя бы нарисовать пару линий на этом gl-виджете из кода.
#370 #1070276
>>1070230

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


ето, я пеинт делал через QGraphicsScene
118 Кб, 701x911
#371 #1070298
Может кто работал с QAudioOutput, крэшит каждый раз как пытаюсь его остановить

Суть в чем - вывод аудио не через файл, а через прямое байтоебство (в примере синусоида).
Для этого наследуются от QIODevice и оверрайдят read() ( и write() пустой функцией). После этого передают унаследованное в QAudioOutput (QAO).
В примере так: Берется здоровый буффер, туда синусодидой вычисляется хуева куча сэмплов, после этого по нажатию ВКЛ буффер начинается считывать данные, к примеру QAO просит 16к байт, функция read() записывает эти 16к байт по переданному поинтеру, делают сдвиг 16к (тобишь в следующий раз скопируют следующие и так далее до ахуения, бесконечный луп выходит). Контроль этим цирком присходит через start() и stop(). Все работает.

Я сделал одно отличие - я хочу, чтобы после того, как проигрались все сэмплы QAD останавливался сам (без лупа). Отпрвляю сигнал в отдельный класс для врапа всего этого, он делает QAudioOutput::stop(), все стопается после этого крэш. Также я пробовал делать стоп не тогда, когда буффер кончится, а после 10 итераций - все равно крэшит. Самое интересное, что если делать аналогичный стоп через ГУИшку все работает нормально.

https://doc.qt.io/qt-5/qtmultimedia-multimedia-audiooutput-example.html
#372 #1070310
>>1070298
зачем ты весь тред кьютом засрал, школотрон?
#373 #1070315
>>1070310
Запили отдельный, как раньше, хули
#374 #1070423
>>1070230

>как я дальше вообще связываюсь с ним в коде?


в контексте своего окна:
this->ui->myQGraphicScene->...

указатели на все виджеты (их компоновка вроде тоже) лежат в объекте ui.
#375 #1070584
>>1070101
Ну я о том же и говорю.
#376 #1070605
>>1070276

>я пеинт делал через QGraphicsScene


Лошара, я через QPainter виджеты рисую это не шутка, кстати.
шутёха #377 #1070610
InteLib is a library of C++ classes which lets you do Lisp programming within your C++ program even without any additional preprocessing, without all those calling conventions etc. You can write a C++ code (that is, a code which is accepted by your C++ compiler) thinking in a "Lisp mode" and the code you write will look much like Lisp code altough it will be pure C++.

To give you the essential feeling, the following example is provided.

(defun isomorphic (tree1 tree2)
(cond ((atom tree1) (atom tree2))
((atom tree2) NIL)
(t (and (isomorphic (car tree1)
(car tree2))
(isomorphic (cdr tree1)
(cdr tree2))
))))

Just a Lisp function, isn't it? Now look at the following code:

(L|DEFUN, ISOMORPHIC, (L|TREE1, TREE2),
(L|COND,
(L|(L|ATOM, TREE1), (L|ATOM, TREE2)),
(L|(L|ATOM, TREE2), NIL),
(L|T, (L|AND,
(L|ISOMORPHIC, (L|CAR, TREE1),
(L|CAR, TREE2)),
(L|ISOMORPHIC, (L|CDR, TREE1),
(L|CDR, TREE2))
))))

Obviously the code is just the same, the syntax changed a bit, but it's still the same. Well, do I surprise you if I say it is C++ code? If you don't believe, look at the following:
шутёха #377 #1070610
InteLib is a library of C++ classes which lets you do Lisp programming within your C++ program even without any additional preprocessing, without all those calling conventions etc. You can write a C++ code (that is, a code which is accepted by your C++ compiler) thinking in a "Lisp mode" and the code you write will look much like Lisp code altough it will be pure C++.

To give you the essential feeling, the following example is provided.

(defun isomorphic (tree1 tree2)
(cond ((atom tree1) (atom tree2))
((atom tree2) NIL)
(t (and (isomorphic (car tree1)
(car tree2))
(isomorphic (cdr tree1)
(cdr tree2))
))))

Just a Lisp function, isn't it? Now look at the following code:

(L|DEFUN, ISOMORPHIC, (L|TREE1, TREE2),
(L|COND,
(L|(L|ATOM, TREE1), (L|ATOM, TREE2)),
(L|(L|ATOM, TREE2), NIL),
(L|T, (L|AND,
(L|ISOMORPHIC, (L|CAR, TREE1),
(L|CAR, TREE2)),
(L|ISOMORPHIC, (L|CDR, TREE1),
(L|CDR, TREE2))
))))

Obviously the code is just the same, the syntax changed a bit, but it's still the same. Well, do I surprise you if I say it is C++ code? If you don't believe, look at the following:
#378 #1070611
мне приснился LISP-C где вместо препроцессора lisp...
#379 #1070619
>>1070605
Мне было бы очень влом реализовывать сцену с нуля. Алсо, какой тогда смысл использовать Qt
#380 #1070645
>>1070619
Я просто отрисовку с OpenGL переносил, написал обертку небольшую вокруг QPainter. В результате получилось проще и удобнее, чем обычно с кьютовой сценой бывает - почему то никогда задача ровно на их граф не ложится, приходится костылить. Теперь так всегда и делаю для простого интерактива.
#381 #1070715
Насколько уебищным является решение делать GUI на каком нибудь C#, а потом через P/Invoke в .dll или запуск .exe, написанный на крестах, передавать входные параметры и забирать их?
#382 #1070777
что насчет фреймворков и библиотек для gui?
#384 #1070782
>>1070715
Так напиши сразу на Qt
#385 #1070795
>>1070782
Говно ебаное этот Qt в плане GUI.
#386 #1070804
>>1070795
Зато ебсти себя в жепу связывая очень хуево связываемые вещи ни в каком плане не говно план, да? Ещё и вендорлок на продукты компании, убивающей свои проекты ежегодно.
#387 #1070806
Друзья, поясните кратко на примере либы cURL

Собираю из исходников .so библиотеку ./configure with ssl, в итоге получается 3 .so файла libcurl.so, libcurl.so.4, libcurl.so.4.4.0

Итак:
1) если мне нужно использовать в проекте эту шаред библиотеку курла, то необходимо рядом со своей программой ложить все 3 .so библиотеки или нужна только одна? (Какая?)

2) на двух .so файлах нарисована стрелочка(такая типо ярлыка), зачем?

3) каждый из этих .so файлов весит примерно по 500kb, так и должно и столько всего весит вся cURL?
#388 #1070808
>>1070804
После того, как я осмотрелся в виджетах и quick controls 2, я просто охуел от того, как глубоко нужно засунуть себе хуй в сраку, чтобы добиться того, что на WPF делается за пару минут, и потерял все надежды на нормальный GUI где либо, кроме как на WPF. Это выбор между пиками и хуями, я согласен, но оба стула прикручены к полу, так что я выбираю пики.
#389 #1070920
>>1070806

>2) на двух .so файлах нарисована стрелочка(такая типо ярлыка), зачем?


Это линки. Это один файл и две ссылки на него. На вопрос "зачем" тбе ответят в каком-нибудь юниксотреде.
>>1070808
В конце концов если плотность пик достаточна, они не проткнут жопу.
#390 #1071042
>>1070920

>зачем


Вероятно, для версионирования, если какой-то проге надо вот именно до зарезу версия 4.0, а не 3.9
#391 #1071141
Аноны не поздно вкатываться в 23 годика? осилю ли 1 этот язык? сколько займет время и смогу ли найти работу? Какие направления есть в дс?
#392 #1071154
>>1070806
1. Можешь положить к себе, но, на самом деле, лучше make install въебать. Если не хочется, чтобы было конфликтов и смеющимися библиотеками, то во время того, как выполнял ./configure нужно указать --prefix куда все девать. Если префикс нестандартный (то есть не / или /usr), тогда добавляешь в переменную окружения LD_LIBRARY_PATH путь к либам (например /usr/devel/lib), либо настраиваешь ld.so.conf
2. Это символические ссылки, скорее всего.
3. Некоторые либы и мегабайтами весят (Qt не в счет), там, наверно, большое количества строк. Можешь очистить директорию сборки и перед выполнением configure задать переменную окружения CFLAGS="-g0 -O2", тогда их вполне может пожать

Вообще, нахуй ты взялся собирать CURL, если любой нормальный реп уже содержит его devel-версию?!
#393 #1071161
>>1071154
Любой нормальный прод фиксирует версии своих зависимостей и приходится руками собирать нужные версии

другой анон
#394 #1071163
>>1071161
Ну это тоже верно. Я имею в виду, что он делает для себя, так что вот такая еботня избыточна.
#395 #1071168
>>1071141

>осилю ли 1 этот язык?


На уровне "сделаю с гуглом и стаковерфлоу" осилишь точно, а вот дальше могут быть проблемы. В языке огромное количество премудростей, отнюдь не улучшающих читаемость. C++ - это река с дном, выложенным скалами. Бери книгу из шапки и читай.
#396 #1071184
>>1071154
Спасибо за ответ
#397 #1071207
>>1071141
Учи джаву лучше. Язык проще, вакансий больше, карьера быстрее двигается.
#398 #1071319
Даунский вопрос. Если я создам в какой-то функции переменную в куче, которая никуда не передаётся и нигде не используется, то после вызова функции она останется висеть в памяти или исчезнет?
#399 #1071334
>>1071319
Это и есть утечка памяти вульгарис
#400 #1071347
>>1063107 (OP)
помогите анОнасы, как задать (k^2)!, т.е факториал квадрата.
sage #401 #1071363
>>1071347
Считаешь квадрат, а потом от него факториал?
#402 #1071369
>>1071319
Если ты создаешь переменную в куче и не высвобождаешь память, то память висит до конца работы программы.
Причем, если ты локально выделил память, то после завершения работы функции/блока, ты еще и потеряешь указатель, так как последний будешь высвобожден из памяти как автоматическая переменная с локальной областью видимости.
Варианты решения:
1. Использовать такие объекты как умные указатели, деструктор зашит уже внутри.
2. Более народный вариант и экономный по памяти, передаешь в функцию ссылку на указатель, которому через new выделяешь память память
#403 #1071370
>>1071363
я это понимаю, не могу придумать как в программе это написать
#404 #1071374
>>1071347
n!
for(int i = 1;i<=n;i++)
result = resulti;

(n^2)!
for(int i = 1;i<=n^2;i++)
result = result
i;
#405 #1071375
>>1071374
result = result * i;

// Самофикс
#406 #1071380
Посоветуйте хорошую либу для gui для с++
#407 #1071383
>>1071374
Спасибо Анонче.
#408 #1071388
#409 #1071396
>>1071388
Удаваиваю
#410 #1071477
>>1071370
Совсем охуел?
>>1071369

>Варианты решения:


3. Делать free/delete.
#411 #1071509
>>1071477

>2к17


>C++


>free/delete


/0

Страуструп как толкал 40 лет RAII, так даже ебучий unique_ptr протолкнуть не может.
#412 #1071530
#413 #1071531
>>1071509
Валгринд все равно все утечки находит.
#414 #1071555
>>1071374

>i <= n ^ 2


>n ^ 2


Это не совсем то, о чём ты думаешь
#415 #1071573
>>1071531
Есть аналог мемчека под винду?
#417 #1071580
>>1071577
Читаю, спасибо.
На работе видел как то .h файл, который занимается примерно тем же, переопределяет new/delete и записывает в вектор выделения памяти, но я не понял насколько он кроссплатформенный.
#418 #1071581
>>1071580

>На работе видел как то .h файл, который занимается примерно тем же


Свой велосипедный анализатор памяти наверное в каждой второй конторе есть.
#419 #1071713
>>1071555
А что же это?
#420 #1071720
>>1071713
Битовая операция XOR (исключающее или). Операции возведения в степень в c-подобных языках нет, это реализуется библиотечной функцией pow() из math.h
#421 #1071723
>>1071720
А это, ну конечно, ты прав,естественно я имел в виду под n^2 = n*n.
#422 #1071734
>>1071580
Если там есть только C++-код, то он с большой вероятностью кроссплатформенный.
#423 #1071735
>>1071734
А в валгринде дофига не С++? Все же тут дело видимо в том, что всюду дергаются какие то системные вызовы, используется какое то знание о том, как система выделяет память.
#424 #1071751
>>1071735

>А в валгринде дофига не С++?


Я про определённые в языке функции говорю, блядь.
#426 #1071855
>>1071845

>MCHECK(3) Linux Programmer's Manual MCHECK(3)



Какбе намекаэ.
#427 #1071857
>>1069792
Пердачую.
#428 #1071939
Эй обезьяны крестовы, зацените мой пост про С++ в треде про СИ.
>>1071874
#429 #1071950
>>1071939
Иди макросы проверь, у тебя где то тип проебался.
#430 #1071986
>>1071380
Opengl.
#431 #1072031
>>1071939
Заценил, живенько вбросил.
#432 #1072036
>>1071855
Сорри неправильно распарсил аналог чего чему нужен. Под виндой https://msdn.microsoft.com/en-us/library/e73x0s4b(v=vs.90).aspx
#433 #1072045
>>1071939
Уныло, убого, нечитабельно. Какой код писать, ты даже мысли свои компактно и вменяемо изложить не можешь.
#434 #1072058
>>1072045
В качестве троллеркостера пост идеален.
#435 #1072059
>>1072058
Да не, к середине уже заебался читать.
#436 #1072085
>>1072058
Слишком графоманский стиль.
#437 #1072315
Сколько нужно учить C++ чтобы начать зарабатывать на нем? И какая примерно будет сумма?
#438 #1072320
>>1072315
Долго. Маленькая.
#439 #1072339
#440 #1072360
>>1072058
У Торвальдса лучше получается. А у Эктона еще круче:
https://macton.smugmug.com/Other/2008-07-15-by-Eye-Fi/n-xmKDH/gallery/8936708_T6zQX/i-BrHWXdJ
#441 #1072367
>>1072360
ЯННП, что он предлагает то, выкинуть все ООП и писать циклами по массивам? Хотя это 2008, думаю если сейчас выкинуть виртуал, все остальное компилятор соптимизирует лучше, чем писать ручками.
#442 #1072373
>>1072367

>выкинуть все ООП и писать циклами по массивам?


Во многих случаях так получается более быстрый и читаемый код.
#443 #1072378
>>1072367
Нахрена лепить virtual, если у тебя всего 3 вида коллайдеров, они известны заранее, и больше их точно не добавится?
#444 #1072379
>>1072373

>более быстрый


Это миф.

>читаемый код.


Это попросту неправда.
#445 #1072395
>>1072379

>Это миф.


Ты правда считаешь, что виртуальный вызов бесплатный?

>Это попросту неправда


Правда. Более читаемо, чем is_sphere_in_frustum( sphere, frustum ) ты вряд ли напишешь. Код без абстракций проще для понимания, чем код с абстракциями хотя бы потому, что тебе абстракции в голове не надо держать.
#446 #1072408
>>1072360

>А у Эктона еще круче


Тащем та, краткая суть его слайдов - "При специфических условиях, стандартная реализация ООП сосет по скорости"
Конкретно условия:
- Объектов много, если бы было мало отставание стандартной реализации было бы незаметно
- Операции над объектом легкие/простые. Были бы сложные ( ну там выделение памяти и т.п.) - было бы незаметно по сравнению с virtual
- Критично по производительности
Всем нормальным разработчикам, это давно было очевидно, ни откровением, ни критикой ООП оно не является.
А то, что на одно такое место в типичной прогремма будет 100 и более некритичных мест, где можно использовать virtual ты скромно не фокусируешь акцент. Интересно почему?
#447 #1072411
>>1072367
Все картинки про узкие места в коде, который будет часто исполняться. Если читаемость кода приведёт к его замедлению, можно и пожертвовать частью ООПа.
#448 #1072428
>>1072408

>Интересно почему?


Потому что в типичном ООП-коде никто не смотрит на узкие места, а сразу хуячат какой-нибудь универсальный AnimalBase, который дальше через виртуальные методы хрюкает, мяукает, выделяет память, рисует виджеты и управляет атомным реактором.
#449 #1072435
>>1072428
В том то и дело, что на каждой конференции по С++ твердят - проверяйте профайлерами, то что вы считали узким местом дало 0,001% производительности, ради этого не имеет смысла писать С-функции на 1000 строк и отказываться от архитектуры.
#450 #1072436
>>1072395
frustrum.contains(sphere)
Видишь, написал.
#451 #1072453
>>1072428
И? В 99 случаях из ста оно будет работать удовлетворительно. А то что в одном специальном случае оно не работает - ну так никто ничего не обещал, головой надо было думать.
#452 #1072462
>>1072436

>Видишь, написал


Только на практике это будет что-то вроде current_camera.contains( spaceship ). И чтобы понять, что "contains" в данном случае означает пересечение фрустума со сферой, тебе придется попрыгать по файлам.
113 Кб, 1907x921
#453 #1072464
>>1072378
Серьезно, сейчас не 2008 год.
#454 #1072465
>>1072462
Ну все, пошли маневры. А у тебя, в таком случае, будет
is_sphere_in_frustum(cube, cloud)
#455 #1072466
>>1072453

>В 99 случаях из ста оно будет работать удовлетворительно.


Проблема в том, что когда тебе понадобится скорость, узким местом окажется вся программа целиком, и чтобы оптимизировать придется переписывать все целиком. Плюс в классическом ООП очень сложно изменить программу, и добавить функционал, не предусмотренный на старте.
#456 #1072468
>>1072465

>А у тебя, в таком случае, будет is_sphere_in_frustum(cube, cloud)


Ну это понятнее, чем contains. Тут проблема только в том, чтобы выяснить где фрустум, а где сфера.
#457 #1072469
>>1072468
А поскольку объедков у нас нет, то это все int handle и прыганье по файлам превращается в боль.
#458 #1072470
>>1072464
На таком примере виртального вызова по стандарту не должно быть, хоть в 2007, хоть 1998.
#459 #1072471
>>1072466
Вытекаешь из треда.
На случай, если ты не зеленый:
Наоборот, профайлером смотришь в какой функции программа проводить 90%+ времени. Ее и оптимизируешь. Повторить пока не надоест.
И нет, в классическом ООП намного проще добавить функционал, просто описав новые свойства объектов и связи между несколькими объектами, чем пытаться разобраться в мешанине оптимизированного кода на Си, манглирующего битами.
#460 #1072472
>>1072469

>то это все int handle


Ну если ты типизацию выкинул, то ты сам себе дурак, не важно с ООП или без.
#461 #1072474
>>1072471

>Наоборот, профайлером смотришь в какой функции программа проводить 90%+ времени.


Это ты на свинге в джаве не писал приложений. Он тормозной необратимо. Весь целиком, без узких мест. И новый функционал в большинстве случаев там можно добавить, только переписав виджет с нуля.
#462 #1072475
>>1072474
Конечно, не писал, т.к. тогда когда он появился, про него сразу везде писали, что он тормозной, а в джаве не было JIT.
#463 #1072479
>>1072475

>про него сразу везде писали, что он тормозной


Он и сейчас с JIT тормозной, и с AOT будет тормозной, потому что там неизлечимое ООП головного мозга. В Qt чуть получше со скоростью, но и там штаны через голову приходится надевать регулярно, когда от базового функционала хочешь на шаг отойти.
#464 #1072490
>>1072468
Спешите видеть! Битва "X is in Y" против "Y contains X" в цпптреде!
#465 #1072515
>>1072468
NAMED ARGUMENTS!!!
#466 #1072520
>>1072472
#define SPHERE int
#define FRUSTRUM int
Все правильно сделол?
#467 #1072522
>>1072470
Да, признаю, тут обосрался, если ввести указатель то уже не оптимизирует.
Впрочем виртуальный вызов скорее всего не сильно дороже if по типу окажется.
#468 #1072550
>>1072522
define не сильно дороже. Компилятору приходится впиливать общий для всех классов в код в каждый виртуальный вызов, он не может использовать более простой код специально для этого дерева наследования.

Сейчас у меня godbolt не грузится, завтра проверю.
26 Кб, 594x480
#469 #1072569
Приветствую всех в треде. Такая ситуация:
есть функция, которая читает строку (до табуляции) из файла, заносит её в поле структуры и выводит на экран

void read_File()
{
ifstream fin("networkinfo.txt");
netInfo C;
fin.getline(C.Name,'\t');
fin.close();
cout << C.Name << endl;
}

Собственно, почему считывается только первые 8 символов? Ведь должно же читаться до первого "\t"
#470 #1072571
>>1072569
как-то код странно приклеился

void read_File()
{
ifstream fin("networkinfo.txt");
netInfo C;
fin.getline(C.Name,'\t');
fin.close();
cout << C.Name << endl;
}
#471 #1072576
>>1072571
Ты ведь явно задаёшь 8 символов. Что как не байтоёб прям?
Читай документацию, хуле.
#472 #1072581
>>1072576
Т. е. по умолчанию считывается 1 байт?
Я ещё писал
fin.getline(C.Name, 20, '\t');

в этом случае всё считывается, но выдаётся такая ошибка:

Additional Information: В среде выполнения обнаружена критическая ошибка. Ошибка произошла по адресу 0x63cee100 в потоке 0xe3c. Код ошибки 0xc0000005. Она может быть вызвана ошибкой в CLR или в небезопасных либо не поддающихся проверке фрагментах пользовательского кода. Обычно источниками таких ошибок бывают ошибки упаковки, допускаемые пользователями при COM-взаимодействии, либо PInvoke, повредивший стек.

If there is a handler for this exception, the program may be safely continued.
#473 #1072586
>>1072581
Под спойлер ты, значит, не заглянул. Стыдно, анон. Лови, чо.
http://ru.cppreference.com/w/cpp/io/getline
#474 #1072587
>>1072569
Попробуй так: getline(fin, C.Name, '\t');
#475 #1072590
>>1072587
Нельзя так, ибо это не static функция
#476 #1072591
>>1072586
Обижаешь. Не нашёл я там ответа. Все перегрузки перепробовал
#477 #1072592
Вдогонку: когда я сделал все буквы в строке маленькими, всё прошло хорошо. Но у меня там строка с буквами разных регистров и точками. В этом случае происходит ошибка.

Этот кун >>1072569
#478 #1072600
>>1072569
Наверное \t попал в интовый аргумент, у этого символа код как раз около 8.
#479 #1072604
>>1072600

>basic_istream& getline( char_type* s, std::streamsize count, char_type delim );



там вообще нет интовых аргументов
#481 #1072626
>>1072591

>Все перегрузки перепробовал


Надо не все, а только правильную.
#482 #1072628
>>1072604

>там вообще нет интовых аргументов


http://en.cppreference.com/w/cpp/io/streamsize

> The type std::streamsize is a signed integral type used to represent the number of characters transferred in an I/O operation or the size of an I/O buffer.

#483 #1072629
>>1072600
У \t код 9. Так что в буффер читается 8 символов + добавляется нуль-терминатор.
#484 #1072633
>>1063107 (OP)
https://youtu.be/DDbahhVuG9c
Почему вам, плюсомразям, все тян достаются? Это несправедливо.
#485 #1072639
>>1072550

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


Перепутал с динамик_кастом. Теперь я тоже не понимаю, почему виртуальный вызов хуже ифа.
#486 #1072691
>>1072639

>почему виртуальный вызов хуже ифа


Потому что промах кэша инструкций гораздо дороже бранч миспредикта.
52 Кб, 720x720
#487 #1072696
Проблема решилась:

C.Name = new char[17];
std::streamsize L = 20;
fin.getline(C.Name, L, '\t');

Спасибо всем, кто помогал

тот кун>>1072569
#488 #1072697
>>1072691
Кстати, вот этот прав.
Современные процессоры очень сильно выигрывают от OUT OF ORDER EXECUTION и BRANCH PREDICTION. А виртуальная хуйня не попадает ни в одну категорию оптимизаций. Ибо процессор заранее не может знать куда будет вести следующий jump, там может оказаться вообще не загруженный в кеш адресс, а еще хуже не загруженная в TLB страница, а еще хуже эта страница будет свапнута на диск, а еще хуже если это будет магнитный диск, а еще хуже если этот диск будет в suspend состоянии, а еще хуже если этот диск будет в NUMA кластере на другом юните, а еще хуже если э\тот юнит вообще будет в другом дата центре, а еще хуже если этот датацентр вообще будет в другой стране... Ну ничего пользователь подождет...
#489 #1072698
>>1072633
Бля как же я проиграл с этой хуйни прям с самого начала.
Как же смешно и нелепо когда тян лезут в области, в которых им не место.
Хотя это же С++ и детский алгоритм, который освоит даже 5 летний ребенок.
#490 #1072705
>>1072698
Посмотрел ее другой видос про девушек программистов. цитата из видео:
Мы девушки в программирование, как новое открытие в физике

АХаххахаах, как можно быть такой ебанутой.
А потом появляются всякие electron'ы, node.js и т.п И из-за толерантности люди начинают на этом делать приложения и все понимают что это тормозное говнище, но терпят ибо 21 век же! равноправие полов!
#491 #1072708
>>1072705
Посмотрите этот видос, я просто ору с некоторых ее кукареков и кукареков ее подруг "программисток".

https://www.youtube.com/watch?v=Bt4yf0khSBI
#492 #1072756
Как отлавливать рантайм ошибки в сишных либах?
Пишу хеллоуворлд на вулкане, все вроде нормально, начинаю передавать команды на отрисовку, и все падает.
И фиг поймешь что не так и где искать.
#493 #1072758
>>1072698
Тян - не тян, какая разница?
Если человек пишет кривой падающий говнокод, то проблема ни в том что он парень или девушка, проблема в том что он криворукий идиот.
#494 #1072759
>>1072691
Нихуя не понял. Если ветка ифа выполнялась, она будет в кэше инструкций. Если виртуальный метод вызывался, он будет в кэше инструкций, а джамп из втабла будет в БТБ-кэше.
>>1072697

> А виртуальная хуйня не попадает ни в одну категорию оптимизаций. Ибо процессор заранее не может знать куда будет вести следующий jump


Нихуя не понял. Оба варианта - это джамп, причём, если ифов много (вложенных или последовательных) - то это много джампов с кучей фейлов (или процессор не станет применять БТБ там, где нет статистической выгоды?), а в виртуальном вызове фейл БТБ может быть только один.
>>1072756
Если ты отказываешься от дебугера, то try-catch.
#495 #1072769
>>1072758
Разница в устройстве психики и мозга тян.
Уже доказано многочисленными исследованиями, что тян плохо справляются с логическими и техническими задачами.
Я сам работал в одной тиме с тян, сказать что она говнокодила - ничего не сказать, более того она не понимала вообще что делает, она просто хуячила как ей там обьяснили в вузе или где она там училась не проверял. А еще там был конченый омега тимлид, который постоянно хвалил ее и относился к ней предвзято в лучшую сторону, так что за косяки ей не влетало, но зато другие получали пиздюли в 2х кратном размере если что-то не так ( конечно не от него самого ибо он даже в глаза боялся смотреть, он просто как настоящий чмоха-омега жаловался тех диру и продакт менеджеру, а они были не омеганами и высказывали нам что вот какие мы ебланы, премии не будет, а вот Машенька со слов тимлида молодец и вообще спасла нашу компанию от краха поэтому ей вот премия, хотя сука буквально пару часов назад я обьяснял этой машеньке в что нужно проверять condition_variable в цикле ибо он может ложно сработать, поэтому у нас падает весь сервер ) и вот такой хуйни было дохуище.
Теперь я работаю в другой конторе с норм мужиками, и если в команде появится тян, то я сразу уволюсь, хотя такого не будет ибо они понимают, что тян и программирование это как мартышка с гранатой.
#496 #1072771
>>1072769

> Разница в устройстве психики и мозга тян.


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


Сильное заявление. Пожалуй, его стоит проверить.

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

>читать 20 байт в 17 байтовый массив


Надеюсь, у тебя когда нибудь хакнут и отформатируют комп через переполнение буфера.
#498 #1072773
>>1072697
Да там весь код всех этих миниклассов в один кэш попадет.
#499 #1072775
>>1072769

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


Вообщет доказано обратное, что у них усидчивость лучше.

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


То есть как и 99% кунов. Просто из за разницы в количестве при одинаковом проценте в абсолютных числах грамотных кунов больше.
#500 #1072776
>>1072771
Проверь.
Далеко ходить не нужно, погугли недавний скандал в гугл на эту тему, где чел написал охуительный вайтпейпер доказывающий это со всеми ссылками на авторитетные исследования. После чего его уволили ИБО СЕКСИЗМ!! А ОМЕРИКА ЛИБЕРАЛЬНАЯ СТРАНА И ПОХУЙ ЧТО ТАМ ДОКАЗАЛИ УЧЕНЫЕ.
#501 #1072779
>>1072772
Да знаю, поправил уже
#502 #1072780
>>1072773

>Да там весь код всех этих миниклассов в один кэш попадет.


В современных крестах, где шаблоны в мегабайты инлайн кода разворачиваются - далеко не факт. Кроме того, проц в любом случае простаивает: сначала пока адрес виртуальной функции не подгрузит, потом пока по этому адресу код не получит.
#503 #1072781
>>1072776
Ну чел идиот конечно, любая обезьяна могла предсказать подобный исход, так что публиковать стоило под вымышленным именем.

>>1072775

> Вообщет доказано обратное, что у них усидчивость лучше.


И это никак не связано со способностями к аналитическому мышлению и логике.
Усидчивость важна когда ты крестиком вышиваешь.
106 Кб, 757x767
#504 #1072783
Йо, анон.
Как включить localStorage в WebView на андроиде в Qt/qml? Кто-нибудь тестил? Гугл молчит.
#505 #1072786
>>1072781

> любая обезьяна могла предсказать подобный исход


В этом случае, навеное, подвело аналитическое мышление, которым так славится мужской род
#506 #1072787
>>1072781

>И это никак не связано со способностями к аналитическому мышлению и логике.


Именно. Логическое мышление у М и Ж одинаковое, а усидчивость у Ж выше, значит она будет сидеть и писать более продуманный и качественный код.
#507 #1072788
>>1072786
Nyet, он наивный идиот потому что наивный идиот, а не потому что он мужчина/женщина/трап/боевой вертолет.
#508 #1072790
>>1072787
А вот чувак выше утверждает что не одинаковое, и некий сотрудник гугла привел множество пруфов.

Предлагаю всем заинтересованным рассмотреть мою позицию по данному вопросу:
Человек, утверждающий что кто-то решает некую задачу лучше по причине его половой принадлежности, а не интеллекта, нарекается идиотом.
Если конкретная женшина пишет хреновый код, это не значит что все остальные женщины пишут хреновый код.
Если конкретный мужчина пишет хреновый код, это не значит что все остальные мужчины пишут хреновый код.
#509 #1072793
>>1072790

>А вот чувак выше утверждает


Только без пруфов

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


Не привел.

Позицию плюсую.
#510 #1072794
>>1072790
У тебя очень толерантное понимание, я тебя хвалю за политкорректность, но выводы у тебя очень неправильные.
Если взять случайно N мужчин и N женщин и посадить заниматься каким-нибудь интеллектуальным трудом, придумать внятную метрику для производительности, то получится так:
1) В среднем (по матожиданию) женщины и мужчины ничем не отличаются. Складываем метрики в обеих группах, делим на размер группы, получаем два одинаковых числа (главное, чтобы N было достаточно большое).
2) Когда мы попробуем проверить дисперсию выяснится, то откровенно глупых женщин гораздо меньше, чем откровенно глупых мужчин. Они все очень близки к середине, сказочных долбоёбок там немного, но и действительно умных искать днём с огнём. Среди мужчин окажется целая куча полных дебичей, но их скомпенсируют коллеги-задроты, которые будут решать задачу ощутимо лучше среднего сотрудника.
3) Из этого делаем вывод: женщины подходят для работы относительно небольшой квалификации. Бери любую тётку с высшим образованием, месяц обучай, и она будет нормально решать несложные задачи. Тестировать там, копировать код на стековерфлоу, или ещё что -- пожалуйста. Если тебе нужно решать сложную задачу, то надо искать кого-то, у кого есть способность решать такую задачу. А они находятся во второй, реже третей сигме у мужчин. У женщин третья сигма начинается до второй мужской.

Пруфы сам ищи в журналах.

А, да, это не значит, что мужчины умнее или лучше женщин, или наоборот. Просто это работает так. Если тебе нужен действительно хороший работник, ищи умного мужчину.
#511 #1072799
Тот кто тут топит за девчонок-программисток - просто с ними не работал.

Я работал с тремя в разных компаниях. Два сеньера и мидл. Количество конечно небольшое, но могу сказать вот что по своему опыту:
1. Нихуя не умеют думать бошкой, чтобы решать архитектурные задачи. Им нельзя доверить проектирование проекта, который будет по сложности чуть больше недели. Начинаются вопросы А КАК А ЧЕ А ВОТ КАК БЫ ТЫ СДЕЛАЛ. Ну епта у тебя 4 года опыта подумай бошкой, а я проверю.

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

3. Любят подзабить на работу. Если работяга-холостяк может задержаться, когда это надо - то бырышни ровно в 00 покидают офис, им ваще на всё поебать, на сроки, на баги, на бизнес процессы. Тупо похуй. Ну это еще одно. Второе - пиздец какие НЕЖНЫЕ - все три девки любили ПОБОЛЕТЬ. То жопа болит, то пизда, то нога, то сопли. Три недели работали, одну отдыхали. Конечно, приходили со справками, но типо нахуя такие работники вообще нужны?

4. Очень любят выносить всё на уровень руководства, вплоть до генеральных директоров. Например когда есть баг, девочка не соображает как его решить, а вася не хочет помочь (у Васи таски горят). Че делаем? ИДЕМ К ДИРЕКТОРУ И ЖАЛУЕМСЯ НА ВАСЮ.

5. Не сдав таски одна из девочек ЗАБЕРЕМЕНЕЛА. Ну здарова бандиты - у нас теперь карапузик и я больше не работаю у вас. А ниче что заказчику надо сдавать её недоделанную хуйню и сроки никуда не исчезают? Похуй, теперь она мама. Нахуй такие риски?
#512 #1072800
>>1072799
Вот етого двачирую, и программирование можно на что угодно заменить. Женщин на ответственные должности брать нельзя, и никто обучаемый их и не берёт.
#513 #1072806
>>1072800
Ну я хотел дополнить, что исключения есть. Есть тянки, которые именно ЕБАШУТ покруче любого хуеносца. Но ни а каком равенстве в данной области нет, большинство - треш и боль.
Поэтому, например, у работников гугла вызвал БАГЕТ указ о стремлении к отметке 50-50% женщин и мужчин в компании. Всех недовольных конечно пидорнули, но это уже другая история.
#514 #1072808
>>1072806

> указ о стремлении к отметке 50-50% женщин и мужчин в компании.


А вот это уже sjw-бредятина.
Набирать работников нужно сугубо по их способностям, и если так получится что женщин будет три с половиной человека, то так тому и быть.
#515 #1072809
>>1072806
Ну я и говорю с точки зрения статистики. Пожалуйста, конкретный случай высокой метрики в женской группе может быть, просто он гораздо менее вероятен. Нет ничего невозможного в появлении тянки, которая пиздец гениальный программист и круче всех кунчиков вместе взятых, но шансы на это мизерные. В среднем лучшие люди из мужской группы хуже лучших людей из женской. Зато худшие женщины гораздо лучше худших мужчин, а средних женщин гораздо больше, и с точки зрения HR это очень сладкий вывод. Но в гугл кандидаток среди женщин немного.
#516 #1072810
>>1072800

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


Да не пизди. Бухи везде - 100% бабское царство, юротдел - тоже большинство бабы. А там ответственность очень даже нужна.
#517 #1072811
>>1072809

> В среднем лучшие люди из мужской группы лучше лучших людей из женской


Пиздец, я уже сам путаюсь во всём этом словоблудии.
#518 #1072813
>>1072810
Бухи рядовые взаимозаменяемые и там бабское царство, но крутой бух -- почти обязательно с хуем. Не забывай, что бухгалтерия в понимании отдела небольшой организации это несложное занятие, я не понимаю, почему бухам вышку дают. А вот если надо налогообложение ОПТИМИЗИРОВАТЬ, а не 1ску заполнять, то там бух-хуемразь сразу.

С юристами там всё немного сложнее, конкретно юристов я не понимаю. Но это редкое исключение.
#519 #1072814
>>1072809

> В среднем лучшие люди из мужской группы хуже лучших людей из женской. Зато худшие женщины гораздо лучше худших мужчин


Но пруфов своему интуитивному ощущению ты, увы, не приведешь.
#520 #1072815
>>1072813

>но крутой бух -- почти обязательно с хуем


Теток главбухов как бы не больше чем мужиков, а главбух - второй человек в фирме обычно. Та же Набиуллина - плохой бух по-твоему?
#521 #1072816
>>1072813

>Бухи рядовые взаимозаменяемые


Как и кодеры.
63 Кб, 767x697
#522 #1072823
>>1072814
Ну, допустим, приведу. Я же не пиздабол какой-нибудь, чтобы тебя в гугл посылать просто так, да? Я вначале проверил, что там не пусто (много лет назад), а потом тебя туда послал. На, просвещайся, босота.
https://doi.org/10.1016/j.intell.2010.04.006
https://doi.org/10.1111/j.1745-6916.2006.00019.x
>>1072815
Я оче уважаю Эльвиру Набиуллину в частности и женщин вообще, и уже писал свою позицию по поводу конкретных примеров. Reasoning на основе конкретных примеров это удел обывателей, а мы тут учёные и инженеры типа. Мы оперируем статистикой.
#523 #1072824
>>1072823

>IQ


>одинадцатилетние


>шотландцы


>1932


Ну такое.
#524 #1072825
>>1072824

> Вырывает одну картинку из двух научных статей, которые даже не открывал


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


> Статьи свежайшие


Ну такое. Ты вот на этой картинке левее был бы ;)
#525 #1072881
>>1072769
То есть, это не в уёбке-тимлиде мужского пола проблема.

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


Эти исследования выяснили, что это относится ко всем без исключения тян? У меня есть дохрена знакомых мужского пола, не справляющихся с логическими и техническими задачами.
>>1072776

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


Доказывающий то, что все до одного тян плохо справляются с техническими задачами?
https://gizmodo.com/exclusive-heres-the-full-10-page-anti-diversity-screed-1797564320
Где это там написано?
>>1072790

>А вот чувак выше утверждает что не одинаково


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

>Предлагаю всем заинтересованным рассмотреть мою позицию по данному вопросу:


>Человек, утверждающий что кто-то решает некую задачу лучше по причине его половой принадлежности, а не интеллекта, нарекается идиотом.


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


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


Рациональная позиция.
>>1072794
Да, действительно, когда мне нужно будет нанять программиста и лучшим кандидатом будет женщина, я пошлю её нахуй потому, что статистически идеальных женщин-программистов меньше, чем мужчин. Так нужно тебя понимать? Ведь шовинистический высер, который мы обсуждаем, именно об этом и говорит. Я ещё могу понять закладывание в бюджет декретных рисков, но, блядь, если наниматель не может объективно оценить кандидатов на собеседовании, то не в поле кандидата проблема, верно ведь?
>>1072799
Хочешь ли ты сказать, что упомянутые проблемы принципиально не могут быть решены тимлидами и кадровиками?
#525 #1072881
>>1072769
То есть, это не в уёбке-тимлиде мужского пола проблема.

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


Эти исследования выяснили, что это относится ко всем без исключения тян? У меня есть дохрена знакомых мужского пола, не справляющихся с логическими и техническими задачами.
>>1072776

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


Доказывающий то, что все до одного тян плохо справляются с техническими задачами?
https://gizmodo.com/exclusive-heres-the-full-10-page-anti-diversity-screed-1797564320
Где это там написано?
>>1072790

>А вот чувак выше утверждает что не одинаково


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

>Предлагаю всем заинтересованным рассмотреть мою позицию по данному вопросу:


>Человек, утверждающий что кто-то решает некую задачу лучше по причине его половой принадлежности, а не интеллекта, нарекается идиотом.


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


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


Рациональная позиция.
>>1072794
Да, действительно, когда мне нужно будет нанять программиста и лучшим кандидатом будет женщина, я пошлю её нахуй потому, что статистически идеальных женщин-программистов меньше, чем мужчин. Так нужно тебя понимать? Ведь шовинистический высер, который мы обсуждаем, именно об этом и говорит. Я ещё могу понять закладывание в бюджет декретных рисков, но, блядь, если наниматель не может объективно оценить кандидатов на собеседовании, то не в поле кандидата проблема, верно ведь?
>>1072799
Хочешь ли ты сказать, что упомянутые проблемы принципиально не могут быть решены тимлидами и кадровиками?
#526 #1072888
>>1072881

>это относится ко всем без исключения тян?


Бля олень, когда люди говорят так, это означает что в среднем.
Пиздец тут умственно отсталые сидят, которые даже не могут понять смысл простой фразы, а еще спорить пытаются.
512x512
#527 #1072896
>>1072881

>Так нужно тебя понимать?


Нет, не так. Ты вообще умеешь обобщать? Так нужно понимать вот этого господина >>1072799
Я, кстати, с ним согласен, но уже как менеджер. Как менеджер я утверждаю, что брать на серьёзную работу в юрисдикции РФ женщин -- безумие в 9 из 10 случаев.
Как учёный я просто заявляю, что среди женщин меньше умных людей (и меньше глупых) и поэтому тратить время на поиски надо в основном среди мужчин. Our words are backed with nuclear weapons! academic research.
Пока не началось: у меня есть тян, до этого было несколько, мне дают, и.т.п.
#528 #1072897
>>1072888

>Бля олень, когда люди говорят так, это означает что в среднем.


На ебало срал.

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

#529 #1072899
>>1072896
Добра.
#530 #1072906
>>1072897
Кобол написала тян.
Программу для расчета посадки лунного модуля тоже тян.
Хуеву тучу прог в 60 писали тни.
#531 #1072910
>>1072825
Ок убедил. Правда по твоим ссылкам в основном исследования детей из каких то спец классов. Но программисты тоже узкая выборка, и их можно сравнить со спец классом.
#532 #1072915
>>1072910
Хорошо:3
Я полагаю, что результаты можно обобщать. Сходу не вижу причин, почему нет но меня всегда можно переубедить
Просто для взрослой выборки очень тяжело выбить данные, и сравнивать очень тяжело, компетенции уже сильно отличаются.
512x512
#533 #1072917
>>1072906

>Кобол написала тян.


Оно и видно
#534 #1072925
>>1072881

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


Могут, надо детектить и посылать нахуй таких. И в итоге на 20 нормальных кандидатов-мужчин будет 1 женщина. Что как бы и говорит о том, что в целом женщины менее приспособлены к этой работе.
#535 #1072987
>>1072925
При этом автоматически отправлять в утиль любого кандидата, не имеющего между ног колбаски все равно тупо.
Можно провести сколько угодно исследований и сто раз неопровержимо доказать что в среднем женщины тупее обезьяны, но это не сделает хорошего программиста плохим.
#536 #1072988
>>1072987
Собственно, об этом речь и шла.
#537 #1072996
>>1072987
Да но женщины все равно хуже в программирование чем мужчины, как и во всем другом, кроме уборки дома, выращивания цветов и съемок в порнухе.
#538 #1072999
>>1072996

> кроме уборки дома


У тян в домах пиздец свинарник, ты видимо просто не был ещё.
#539 #1073008
>>1072999
Ты видимо просто с чуханками общаешься.
Мои тян всегда были чистоплотными и убирались дома.
15 Кб, 300x246
#540 #1073011
>>1072996
Зато мужчины грязные, вонючие, волосатые и разбрасывают носки.
#541 #1073017
>>1073008

>Мои тян


Левая рука и правая рука? Так то ты конечно мастер объективной статистики.
#542 #1073043
>>1073017
Обе.
Конечно объективно, кто захочет вообще тян-чуханку, которая не следит за собой и за своим домом?
Очевидно, что жизнь тян это как можно выгодней себе продать за муж и сделать семью, поэтому для тян чистоплотность это очень важный критерий и пренебрегать им будут только ебанутые чуханки, которым похуй вообще на все. А кто захочет такую себе в жены? Никто.
Вот и вся арифметика.
#543 #1073046
>>1073043
Твоя "объективность" выражается в том, что ты свои частные случаи с чистоплотностью проецируешь на всех женщин, так же как и знакомых неудачных программист_ок на интеллект всех женщин.
#544 #1073056
>>1073043
В сосничестве я считал что человек познавая искусство программирования становится джедаем рациональности.
Ибо как писать хороший код, если ты мыслишь как гопожлоб?
Либо ты траль, либо я и впрямь был наивным дурачком.
#545 #1073065
>>1072772
А по факту, что в этом плохого? В школке объясняли, что динам. массивы для того и нужны
46 Кб, 200x200
#546 #1073067
>>1073046
>>1073056
Феменистки не палятся.
#547 #1073069
>>1073067
Все, затраллировал, сдаюсь, у меня бамбит, батрудинаф, пукан подгорел.
#548 #1073082
>>1073065
Динамически выделенные КУСКИ ПАМЯТИ сами не раздвинутся.
#549 #1073089
>>1073082
Как раз таки раздвинутся. В С/С++ эл-ты массива идут последовательно в памяти и, если надо, массив расширяется
#550 #1073099
>>1073089
И становится таким толстым, что начинает вытекать.
#551 #1073100
>>1073089

> эл-ты массива идут последовательно в памяти


Во-первых не только в с(++), это непосредственно определение массива в программировании.
Во-вторых раздвинуть динамически выделенную память ты не сможешь, только выделить заново, скопировать и освободить старую.
#552 #1073104
>>1073100

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


Ебанутые крестовики, даже не знаю о сишной функции realloc.
Конечно она не гарантирует расширения памяти без реалокации на новом адресе, но по возможности просто выделит слудующую за последним элементом память.
#553 #1073108
>>1073104
Прально! Нечего на этих крестах писать! В святой сишке все сами раздвинутся! Освободят место для новых! Не жадные же эти элементы массива! Раздвинутся!
Как ноги твоей мамаши, хуесос, пшёл в свой загон
#554 #1073114
>>1073100
Тащемта в JS элементы идут непоследовательно
#555 #1073115
>>1073104
Не знали.
Теперь знаем, но не понимаем какой в этом смысл.
#556 #1073121
>>1073114
...
Значит в js нет "классических" массивов?
Это уже список какой-то, как ты организуешь произвольный доступ к элементам если они идут как попало?
#557 #1073123
>>1072809
Сосач познавательный.
#558 #1073125
>>1073056
Слишком романтическое видение мира для программиста. Ты и вправду был наивным дурачком, и прелесть твоего профессионального пути в том что ты перестанешь (или уже перестал) им быть. Есть люди которые так и живут.
#559 #1073128
>>1073104
Realloc не гарантирует что массив останется на своем месте в физической памяти, и писать код следует из расчета что этого не случится. Плохой аргумент.
>>1073089
Этот тоже продвинутый. В сишке (вообще вот это институтское "си - си плюс плюс" это пиздец) ничего само по себе не расширяется, да и в плюсах тоже. В ко-ко-контейнерах под капотом как раз и происходит тот самый malloc / realloc.
#560 #1073129
>>1073121
Я не прогаю на JS, просто читал о нём
#561 #1073130
>>1073125
Этак можно с возрастом в конченого ценника-мизантрала превратиться.
Перестал, но у меня все равно есть какаое-то мутное чувство что технари в среднем должны быть хоть немного менее тупыми чем все остальные.
#562 #1073132
>>1072633
Перемотал в пару случайных мест - советует использовать сырые указатели, пиздит на shared_ptr и unique_ptr. Вы, не-плюсоводы, немного потеряли в её лице. Она же июнь, а туда же - видосики снимает, типа программированию учит. Вкатывающиеся в программирование люди в принципе все такие.
#563 #1073133
>>1073132
Слушаю дальше. Ох уж эти кухонные сравнения и произношение, мерзко слушать все эти "пэ тэ эр".
Интересно, у неё работа есть?
#564 #1073134
>>1073128

>вообще вот это институтское "си - си плюс плюс" это пиздец



чому?
#565 #1073135
>>1073130
Хуй знает, у меня оно тоже есть.
15 Кб, 330x373
#566 #1073138
>>1073128
Вот только ответа на вопрос я не получил. Задал я
type_name var* = new type_name[100];
А тут хуяк, а varov-то 102. И что такого страшного будет? Или как тогда правильно дин. массивы выделять?
#567 #1073139
>>1073128

>в физической памяти


Слышал про виртуальную память? Большинство современных ОС работают с виртуальной памятью, и не дают тебе адреса на физическую. Твой массив выглядящий линейным в твоей программе может быть раскидан вообще по разным слотам оперативной памяти, стоящей в твоем компьютере.
#568 #1073142
>>1073138

> И что такого страшного будет?


Утечки памяти, дыры в безопасности, гроб, кладбище, пидор.

> Или как тогда правильно дин. массивы выделять?


Хочешь запихать в массив 102 элемента, выдели память под 102 элемента.
#569 #1073145
>>1073139
Ясен хуй! В программировании (по крайней мере в с++) о физической памяти речи не идёт. Все эти ячейки 0хХХХХХХХХХ - это ЛОГИЧЕСКИЙ адрес, а не физический.
#570 #1073149
>>1073142
Какие именно дыры?
А если я не знаю заранее, сколько будет элементов?
#571 #1073151
>>1073138
И вообще, мы же в крестотреде.
std::vector<typename> var, и пихай в него насколько оперативы хватит.
http://ru.cppreference.com/w/cpp/container/vector
#572 #1073153
>>1073151
Контейнеры-то я знаю. В вузике писал свой Вектор. И там выделял память с помощью new. Разве в std он не так же реализован?
#573 #1073154
>>1073139
Если уж на то пошло, то массив может быть отображен хоть на том подкачки, но мне-то всё равно, к вопросу это не относится.
Спасибо за важное уточнение, что массив в текущий момент времени необязательно будет лежать именно в физической памяти.
#574 #1073156
>>1073138
Используй библиотечный контейнер. В боевых условиях люди пишут свои саморасширяющиеся контейнеры, которые при добавлении / удалении реаллоцируются из каких-то эвристических предположений (мол в меня уже запендюривали один раз тысячу объектов, потом убрали их, а потом запендюрили десять, так что в этот раз я опять расширюсь до тысячи).
Страшно будет то, что программа перезапишет код или данные другой программы. Скорее всего система не даст ей этого сделать, но хз что у тебя за система. Так или иначе правильная работа как минимум твоей программы с того момента как она записала данные хуй знает куда не гарантирована.
#575 #1073157
>>1073153
Ни небо, ни даже аллах не в состоянии написать на си динамический массив без перевыделения памяти.
Чувак выше написал про realloc, но в общем случае он ничего не растягивает.
В чем вообще твоя проблема?
#576 #1073158
>>1073156

>Страшно будет то, что программа перезапишет код или данные другой программы


Это вообще реально? Даже если массив релоктится, но не туда же, где память занята другой программой?

>>1073157

>В чем вообще твоя проблема?


Как православно выделять динамические массивы? Что плохого в new? Что страшного в релокации массива?
#577 #1073161
>>1073158
Массив реаллоцируется в незарезервированную, свободную память. Но ты-то, делая так:
char arr[100];
arr[102] = 4;
пишешь не в массив, а за его границу.
Предположим ты подсмотрел в отладчике, что arr у тебя указывает на 0xB0000000, значит заканчиваться он будет на адресе 0xB0000063, а arr[102] будет указывать на 0xB0000065, то есть в память, которая может быть занята.
#578 #1073162
Анон, немного не по теме тхреада, но не гони, а дай совет. Есть проект на плюсах, система сборки cmake. Нужно собрать под шиндошс. Пока что я дошел до того, что скачал cmake, но что делать дальше?
#579 #1073165
>>1073158

> Как православно выделять динамические массивы?


Используй стандартный контейнер, для 99% задач его хватает.
Если твоя задача входит в оставшийся 1%, навелосипедь свой на том же new.

> Что плохого в new? Что страшного в релокации массива?


Тебе тут наоборот пытаются объяснить что это прельстиво и любовно.
#581 #1073168
>>1073138
В c++ нет динамических массивов как языковой конструкции с [], уймись.
#582 #1073170
>>1073162
Запускаеш cmake-gui
указываешь папку с исходниками и папку, куда хочешь чтобы билдилось
Нажимаешь configure
Молишься чтобы все сошлось
Указываешь нехватающие пути, подсвеченные красным
Повторяешь последние два пункта пока не надоест
Нажимаешь generate
Получаешь студийные проекты, которые уже компиляешь в студии.
#583 #1073179
Анон в чем дело.

Thread 2 "worker0" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff5209700 (LWP 1331)]
0x0000555555559170 in perf_hist_check_range (range=0x8000555555570a30, val=103558165) at /home/greg/Sources/mandelbrot2/mdb/sched/rsched2.c:143
143 if(val < range->min)
(gdb) bt
#0 0x0000555555559170 in perf_hist_check_range (range=0x8000555555570a30, val=103558165) at /home/greg/Sources/mandelbrot2/mdb/sched/rsched2.c:143
#1 0x00005555555591f8 in perf_hist_bsearch16 (val=103558165) at /home/greg/Sources/mandelbrot2/mdb/sched/rsched2.c:167
#2 0x0000555555559256 in perf_hist16_add (hist=0x55555577f0e8, val=103558165) at /home/greg/Sources/mandelbrot2/mdb/sched/rsched2.c:188
#3 0x000055555555acfb in rsched_worker (arg=0x55555577f080) at /home/greg/Sources/mandelbrot2/mdb/sched/rsched2.c:860
#4 0x00007ffff7bc108a in start_thread () from /usr/lib/libpthread.so.0
#5 0x00007ffff74d71bf in clone () from /usr/lib/libc.so.6
(gdb) frame 0
#0 0x0000555555559170 in perf_hist_check_range (range=0x8000555555570a30, val=103558165) at /home/greg/Sources/mandelbrot2/mdb/sched/rsched2.c:143
143 if(val < range->min)
(gdb) list
138
139 static inline
140 int perf_hist_check_range(const struct perf_hist_sample_range range,
141 uint64_t val)
142 {
143 if(val < range->min)
144 return -1;
145 else if(val >= range->max)
146 return 1;
147 else
(gdb) p val
$1 = 103558165
(gdb) p range->min
Cannot access memory at address 0x8000555555570a30
(gdb) p range
$2 = (const struct perf_hist_sample_range
) 0x8000555555570a30
(gdb) x range
0x8000555555570a30: Cannot access memory at address 0x8000555555570a30
(gdb) frame 1
#1 0x00005555555591f8 in perf_hist_bsearch16 (val=103558165) at /home/greg/Sources/mandelbrot2/mdb/sched/rsched2.c:167
167 f_hist16_range[m];
(gdb) list
162
163
164 while(l <= r)
165 {
166 m = (l + r) / 2;
167
168 range = &perf_hist16_range[m];
169
170 cmp = perf_hist_check_range(range, val);
171
#583 #1073179
Анон в чем дело.

Thread 2 "worker0" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff5209700 (LWP 1331)]
0x0000555555559170 in perf_hist_check_range (range=0x8000555555570a30, val=103558165) at /home/greg/Sources/mandelbrot2/mdb/sched/rsched2.c:143
143 if(val < range->min)
(gdb) bt
#0 0x0000555555559170 in perf_hist_check_range (range=0x8000555555570a30, val=103558165) at /home/greg/Sources/mandelbrot2/mdb/sched/rsched2.c:143
#1 0x00005555555591f8 in perf_hist_bsearch16 (val=103558165) at /home/greg/Sources/mandelbrot2/mdb/sched/rsched2.c:167
#2 0x0000555555559256 in perf_hist16_add (hist=0x55555577f0e8, val=103558165) at /home/greg/Sources/mandelbrot2/mdb/sched/rsched2.c:188
#3 0x000055555555acfb in rsched_worker (arg=0x55555577f080) at /home/greg/Sources/mandelbrot2/mdb/sched/rsched2.c:860
#4 0x00007ffff7bc108a in start_thread () from /usr/lib/libpthread.so.0
#5 0x00007ffff74d71bf in clone () from /usr/lib/libc.so.6
(gdb) frame 0
#0 0x0000555555559170 in perf_hist_check_range (range=0x8000555555570a30, val=103558165) at /home/greg/Sources/mandelbrot2/mdb/sched/rsched2.c:143
143 if(val < range->min)
(gdb) list
138
139 static inline
140 int perf_hist_check_range(const struct perf_hist_sample_range range,
141 uint64_t val)
142 {
143 if(val < range->min)
144 return -1;
145 else if(val >= range->max)
146 return 1;
147 else
(gdb) p val
$1 = 103558165
(gdb) p range->min
Cannot access memory at address 0x8000555555570a30
(gdb) p range
$2 = (const struct perf_hist_sample_range
) 0x8000555555570a30
(gdb) x range
0x8000555555570a30: Cannot access memory at address 0x8000555555570a30
(gdb) frame 1
#1 0x00005555555591f8 in perf_hist_bsearch16 (val=103558165) at /home/greg/Sources/mandelbrot2/mdb/sched/rsched2.c:167
167 f_hist16_range[m];
(gdb) list
162
163
164 while(l <= r)
165 {
166 m = (l + r) / 2;
167
168 range = &perf_hist16_range[m];
169
170 cmp = perf_hist_check_range(range, val);
171
#584 #1073193
>>1073149

>А если я не знаю заранее, сколько будет элементов?


Тогда используй vector.
>>1073145

> В программировании (по крайней мере в с++) о физической памяти речи не идёт


C++-проге ничто не мешает на bare metal выполняться, зачем вы пиздите?
>>1073158

>Как православно выделять динамические массивы?


ВЕКТОР БЛЯДЬ.

>Что плохого в new?


Возможны утечки памяти из-за отсутствия delete.
Реаллокнуть то, что выделено с помощью new, ты не можешь.

>Что страшного в релокации массива?


Адрес поменяется (или нет).
>>1073179
Мне тебе сказать нечего.
#585 #1073230
Сап, подскажите пожалуйста способ перевода числа в десятичный вид. Гугление дало такой бред что я просто в шоке. Большинство кода выдаёт неверный перевод, а то что выдаёт верны требует подключение <YOBAMEGASUPERLIB.h>
Я просто не верю что такая простая задача не имеет простого и лаконичного решения.

Алсо мой код.
int N=0, t=0, d=1;
cin>>N;
vector <int> v = {};
while(N)
{
t +=(N%2)d;
N=N/2;
d=d
10;
}
v.push_back(t);
for (auto x:v){
cout << x;
}
#586 #1073271
>>1073230
Просто погугли алгоритм
#587 #1073273
>>1073271

>Гугление дало такой бред что я просто в шоке. Большинство кода выдаёт неверный перевод, а то что выдаёт верны требует подключение <YOBAMEGASUPERLIB.h>


this
#588 #1073274
>>1073273
Ты дурак? Гугли АЛГОРИТМ, а не код.
6,6 Мб, 590x331
#589 #1073275
>>1073274
Я не очень умный
#590 #1073277
>>1073275
Аааай бля. Из какой системы счисления тебе надо перевести?
#591 #1073278
>>1073277
Из десятичной в двоичную.
#593 #1073280
>>1073279
31
Как то так видимо правильно.
https://ideone.com/nIEsuM
#594 #1073281
>>1073280
Сам писал?
Если работает - значит правильно. Проверяй сам
#595 #1073282
>>1073279
>>1073281
Да, сам.
Спасибо тебе анон. Ты няшка.
#596 #1073285
>>1073282
Пожалуйста. Для начала, научись вручную переводить из одной СС в другую
#597 #1073298
>>1063609
Юзаю C++11, и использую typename и class для классов.
#598 #1073299
>>1063609
>>1073298
Не так прочёл, сорри.
#600 #1073376
Серёжа, только вкатываюсь в ваш чудный ебанный язык. Как там побырику инициализировать массив с нулями произвольного размера?

до этого у меня было так:

long* label_lookup = new long[labels];

Но как я понимаю, что он хапает просто кусок памяти, в котором может быть любой мусор, а значит хуй там, а не нули по умолчанию. Чё, как?
#601 #1073405
>>1073376

std::vector<long> v(labels, 0);
#602 #1073414
>>1073405
Иди нахуй со своим вектором.

>>1073376
Вот норм способ.

long label_lookup;
label_lookup = calloc(labels, sizeof(
label_lookup));
#603 #1073416
>>1073414
Сука ебаный двач не завез встроенный тег для кода и схавал звездочку.

long(звездочка) label_lookup;
label_lookup = calloc(labels, sizeof((звездочка)label_lookup));
#604 #1073426
>>1073414

>Иди нахуй со своим вектором.


C++ тред, а не Си. С голыми массивами и выделением памяти callocом можешь пройти нахуй.
#605 #1073438
>>1073426

>C++ тред


Вот именно С++, а не Java.
Не нравятся голые массивы, пиздуй в Ява тред.

Цитата философии С++ из вики:
- Programmers should be free to pick their own programming style, and that style should be fully supported by C++.
- Allowing a useful feature is more important than preventing every possible misuse of C++.

Так что можешь пойти нахуй со своим вектором.
calloc не запрещен в С++ он быстрее и лучше твоего сраного вектора.
118 Кб, 1440x943
#606 #1073441
Почему на i5-3450 - 100 fps, а на [email protected] - 700? TeamViewer тут не причем
https://pastebin.com/jfGQ6WXZ
#607 #1073442
>>1073441
При N=1000.
#608 #1073445
>>1073441
Как ты на разных процессорах тестируешь? Переставляешь новый камень в сокет или на другой системе или на другом компе тестишь?
А что там за артефакты на первой пикчи?
Еще этот OpenGL 1.0..
Короче я хз на винде что там есть, но тебе нужно в профайлере смотреть.
Либо вручную замерять скорость исполнения функций.
#609 #1073447
>>1073405

Спасибо, но ещё вопрос, Серёжа!

Замутил я этот вектор, всё прям-таки писечка!
Нужно будет его удалять как-то, прямо-таки ручками освобождать место после того, как мне он уже не нужен будет?
Такой расклад, из main дёргаю пару раз функцию, в которой и создаётся этот вектор. Так вот, после возвращении функции, память же не освобождается? Как это у вас в крестах там делается?
#610 #1073449
>>1073416

Серёжа, в душе не ебу про вектор, но с ним всё нормально получилось. Расскажи для пацанов в чём зашквар с ним.
#611 #1073478
>>1073445
Вообщем проблема такая, кидаю exe файл с компа i7 на i5, фпс норм ~440. Но как файл собираемый на i5 дает хуевый фпс, хотя уже проект целиком скинул с i7. И студии одинакого не настраивались из коробки, только openMP включал, и на i5 он тоже вкл.

>А что там за артефакты на первой пикчи?


TeamViewer дает артефакты.
#612 #1073480
>>1073478

>Но как файл собираемый на i5 дает хуевый фпс,


Файл собраный на i5, фикс.
#613 #1073488
>>1073438

>он быстрее и лучше твоего сраного вектора.


хуя заявление, чем подтверждать будем?
#614 #1073490
>>1073447
вектор в деструкторе сам вызывает free/delete[]/dealloc
#615 #1073495
>>1073488
Тем что вектор сначала выделяет память а потом инициализирует ее значениями.
А calloc сразу выделяет инициализированную нулями.
#616 #1073526
>>1073438
Ну и бред.
Может еще вместо условий и вызова функций goto будем использовать, да?

Твой удел, хуесос - макакить на лабах. В любой конторе за использование маллоков каллоков, а также за голые указатели - тебя пидорнут сразу же, если не сможешь объяснить свой высер. Ты не смог. Пиздуй в Си-тред.
#617 #1073533
>>1073438

>МААМ, СКАЖИ ИМ ЧТО Я МОГУ ГОВНОМ ОБМАЗЫВАТЬСЯ, ЗАКОНОМ НЕ ЗАПРЕЩЕНО!!1

#618 #1073534
>>1073376

>Но как я понимаю, что он хапает просто кусок памяти, в котором может быть любой мусор, а значит хуй там, а не нули по умолчанию. Чё, как?


С дин. массивами примерно так и есть.
http://en.cppreference.com/w/cpp/language/new

> Как там побырику инициализировать массив с нулями произвольного размера?


ВЕКТОР БЛЯДЬ. >>>>>>> >>1073405
>>1073438

>Цитата философии С++ из вики:


Это цитата философии создания языка, уёбок. Если ты хочешь динамический массив, тебе нужен вектор, а не нью, который ты не можешь ресайзнуть и который ещё ручками удалять надо.
>>1073447

>Нужно будет его удалять как-то,


Если ты его не с помощью нью сделал, упаси хоспаде - нет.
>>1073478
Нихуя не понял, ФПС разнится в зависимости от машины сборки, а IDE настроена одинаково? Тогда это пиздец. Задай вопрос на СтакОверфлоу, это будет отличный вопрос.
>>1073495

>А calloc сразу выделяет инициализированную нулями.


А ещё в кажждом байте памяти, выделенной калоком, в два раза больше бит и flip-ошибок меньше. Используйте каллок, посоны!
#619 #1073541
>>1073441
А разве ФПС зависит не от видяхи?
Но возможно где то в компиляторе флаги выставились, не подключающие какое то расширение процессора.
#620 #1073542
>>1073438

>calloc не запрещен в С++


http://eel.is/c++draft/intro.object#1.sentence-2

> An object is created by a definition, by a new-expression, when implicitly changing the active member of a union, or when a temporary object is created



Тут не написано, что an object is created by calloc.
#621 #1073544
>>1073376

>инициализировать массив с нулями произвольного размера


Хуясе. Не знал, что бывают нули разных размеров.
#622 #1073547
>>1073526
>>1073533
>>1073534
Легкий детектор макак - напиши в С++ треде про malloc/calloc/realloc/free в ответ получишь гневное визжание маккакенов. Кек.

>тебе нужен вектор


Ты скозал?

>не можешь ресайзнуть


Поясняю для дебилов - realloc.

>и который ещё ручками удалять надо.


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

>Нихуя не понял


>IDE настроена одинаково


>Тогда это пиздец


>Задай вопрос на СтакОверфлоу


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

>>1073526

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


Я же не долбоеб работать в конторах с макаками.
У нас вообще STL запрещен.
#622 #1073547
>>1073526
>>1073533
>>1073534
Легкий детектор макак - напиши в С++ треде про malloc/calloc/realloc/free в ответ получишь гневное визжание маккакенов. Кек.

>тебе нужен вектор


Ты скозал?

>не можешь ресайзнуть


Поясняю для дебилов - realloc.

>и который ещё ручками удалять надо.


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

>Нихуя не понял


>IDE настроена одинаково


>Тогда это пиздец


>Задай вопрос на СтакОверфлоу


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

>>1073526

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


Я же не долбоеб работать в конторах с макаками.
У нас вообще STL запрещен.
#623 #1073548
>>1073547

>У нас вообще STL запрещен.


>Лид-Васян сказал, что можно юзать только его велосипед на кал-лок


Ору.
#624 #1073550
Серёжа, так как там этот вектор потом освобождается?
#625 #1073551
>>1073547
РРРЯЯЯ только МАЛОКИ ТОЛЬКО ВЕЛОСИПЕДЫ ОЙ ЧТО ОШИБКА 00000A АКСЕС ВИОЛЕЙШН ЧТООО?? ПАМЯТЬ УТЕКЛА СТЕК ПОКОРРУПЧЕН БЛЯ СРОЧНА ВСТАВЛЯЕМ FREE ВЕЗДЕ ГДЕ МОЖНО МЕМСЕТ САЛЛОС ГОУТУ ОЙ БЛЯДЬ ДВА РАЗА ВЫЗВАЛИ ФРИ НА УКАЗАТЕЛЬ И ВСЁ РУХНУЛО БЛЯ ЁБАНЫЙ ТИМЛИД ФОПЕН ФРИД ((ANUS)(VOID) (...)) СКТРОЧКА НЕ УМЕСТИЛОСЬ В БУФЕР ЧАРОВ АКСЕС ВИОЛЕЙШН ОЙ КАК ТАК PRINTF("Я ЕБЛАН") ГЕТЧАР ПУТС Я ПУПС КОКОКОКО ОКОКОКОКОКО
#626 #1073552
>>1073548
Ну если бы разрабатывал когда-нибудь real-time приложения, то понимал бы почему так. А пока иди лабу делай.
#627 #1073553
>>1073552

>Ну если бы разрабатывал когда-нибудь real-time приложения, то понимал бы почему так. А пока иди лабу делай.


ПИздуй отсюда в Си-тред со своими ахуительными советами и малоками.
#628 #1073554
>>1073551
Вот это бомбануло у обезьянки. Проиграл.
#629 #1073555
что насчет winforms? стоит ли вообще юзучать?
Есть ли аналоги ?
#630 #1073560
>>1073553
При чем здесь С тред?
Я в ахуе от развития здешних """"ПРОХРАММИСТОВ"""", которые о программирование знают только из фильмов про хакеров, лол.
Ты думаешь, если в С++ есть уже готовенькое, то только это надо использовать? Ты не думал, что С++ очень раздутый язык и многое оттуда не нужно, особенно в приложениях зависящих от производительности?
Алсо, у нас еще виртуальные функции запрещены и шаблоны можно толкьо умеренно в особых случаях.
#631 #1073562
>>1073552

>real-time


>плюсы


>динамическое выделение памяти


Все, вытекаешь. Да, мы поняли что у тебя и шинда реал-тайм ОС.
#632 #1073565
>>1073560
В настоящих приложениях критичных до скорости выделения памяти - нормальные программисты не переходят на маллоки, а делают свои пулы памяти, пулы объектов и аллокаторы.

Маллоки и прочие сишные забавы - это рак, который убивает сколь-либо большие проекты на крестах. Профитов от них практически нет, а использование грозит отказом в самый нужный момент.
#633 #1073599
>>1073562
А ты что все на стеке будешь делать?
Память выделенную маллоком можно залочить вообще-то.

>>1073565
Так у нас есть свои специальные алокаторы, но они не для всей памяти, только для самой критичной в лок фри алгоритмах. Ну в общем то для более обычной памяти у нас тоже свои алокаторы. Ну если тебе не критично, то можешь использовать маллок с локом.
#634 #1073600
>>1073599
В реалтайме не может быть динамической памяти, точка. Потому что объем и, соответственно время обнуления, недетерминировано. Все массивы задаются фиксированными и статическими. Это закон, иначе у тебя уже не реалтайм.
#635 #1073606
>>1073600
Ну ты и дебил, точка.
#636 #1073630
Есть класс для строк, которые копируются по ссылке? Или как такое без костылей сделать? new string это же костыль?
#637 #1073637
>>1073630

>Есть класс для строк, которые копируются по ссылке?


М?
#638 #1073641
>>1073542
Ясен хуй, ведь создание объекта - это ещё и его конструирование (в общем случае), а каллок умеет только нулями заполнять. Никто не запрещает тебе использовать плейсмент нью.
>>1073547
Отвечу тебе, чтобы ньюфаги что-нибудь новое узнали.

>Поясняю для дебилов - realloc.


Поясняю для генетических уродов: если ты realloc-аешь память, выделенную с помощью new или new[], то это UB.

>При чем здесь IDE?


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

>Алсо, RAII можешь использовать


Шаред_поинт на память вместо вектора? Вилку за столом тоже ногой держишь?
>>1073550
RAII, 21 век! Как только вектор перестаёт быть видимым, вызывается деструктор и сам освобождает память.
>>1073599

>Память выделенную маллоком можно залочить вообще-то.


Штоблядь.
>>1073630
http://en.cppreference.com/w/cpp/string/basic_string/basic_string
Тебе конструктор нужен? Выбирай любой.
#639 #1073644
>>1073637
Класс где s1=s2 не копирует всю строку, а копирует ссылки как в джаве 2 переменные указывают на одну строку. Но при этом строка изменяемая, а не как в джаве.
#640 #1073645
>>1073644
Это называется COW.
#641 #1073646
>>1073641
Твое невежество просто угнетает. Я просто оставлю тебе ссылку и пойду пить пиво в бар.
https://rt.wiki.kernel.org/index.php/Dynamic_memory_allocation_example
#642 #1073654
>>1073606
Слив засчитан.
#643 #1073658
>>1073645
Нет. Не обязательно cow. Можно чтобы изменение в первой переменной приводили к изменению второй т.к. они на один объект указывают. Как с обычными ссылками.
#644 #1073661
>>1073644
А зачем тебе собственно COW строка?
Память экономишь, или эксепшны велосипедишь?
#645 #1073662
>>1073658
Дак заведи переменную str, и везде где надо поменять str - меняй str, кек
#646 #1073682
>>1073630
Не понял нихуя, что мешает тебе сделать ссылку?
int a = 50;
int &b = a;
b = 40;
cout << a; //40
#647 #1073689
>>1073661
Строки это для простоты примера. Мне нужен ссылочный тип, который изменяемый. Передавать объект рекурсивно в функцию. Поменялся объект на одном уровне рекурсии значит поменялся на всех. И чтобы когда объявляю объект этого класса членом этого же класса, то он всё рано должен создаваться в динамической памяти, но чтобы это был именно объект, а не указатель. Шаблоны иногда жалуются, что в них создают не компилируемые объекты, а если переделать их ссылками, то всё работает. Нужно точно так же, но чтобы не пришлось каждый раз явно разыменовывать ссылку когда выполняю операции над объектом.

>>1073682
Почти так, но нужен целый класс с таким свойством. Чтобы не int a, int& b, а T a, T b.
#648 #1073701
>>1073646
То есть, ты можешь доказать, что realloc памяти, выделенной с помощью new - это не UB. Или ты пиздобол?
>>1073689
У тебя есть два варианта:
1) либо все твои функции принимают строку по reference (и я не могу понять, в чём у тебя проблема)
2) либо они все принимают http://en.cppreference.com/w/cpp/utility/functional/reference_wrapper
3) либо они все принимают shared_pointer на ссылку
На кой ляд тебе нужен именно класс вместо передачи по ссылке, если не для memory safety - хуй знает.
#649 #1073707
>>1073701

>У тебя есть три варианта:


>3) либо они все принимают shared_pointer на строку

#650 #1073714
Вкатываюсь в кресты, пиля парсер. Можете объяснить, чому гнушный линкер жалуется на этот код?

#include <iostream>

using std::cin;
using std::cout;
using std::endl;

#include <string>

void a_to_be(char d_line);

int main(int argc, char
argv)
{
// получить и обработать
cout << "else-else-else" << endl;
return 0;
}

void a_to_be(char
d_line)
{
// d_line.replace
cout << "empty" << endl;
}

Выхлоп clang-3.8 - http://paste.debian.net/990066
#651 #1073719
>>1073714
Если так важно, код тоже укочевал туда - http://paste.debian.net/990067/
#652 #1073729
>>1073714
То же, что и здесь. >>1070147 Компилируешь c++ код clang, а надо clang++.
Алсо чому бы тебе не взять готовый парсер, например Gumbo? А если ты для учебы пишешь, то лучше отказывайся от *char.
#653 #1073796
Серёжа, опять я, начал я ваши кресты вертеть. Смотрю на код, который байты туда-сюда ворочает и немного охуеваю с подобного ascii-арта:

https://pastebin.com/5yEiCJaX

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

для общей картины, эта функция должна записать двухмерный array из int в бинарную PBM картинку. то есть приходит что-то типа [[1,1,1,1,1,1,1], [0,1,1,1,1,1,1]], а в файл потом скидывается байтики FE 7E. (пардон за питоноблядский список как пример, я душу змею обычно)

ну и конечно сам код я спиздел отсюда:
http://people.sc.fsu.edu/~jburkardt/cpp_src/pbmb_io/pbmb_io.cpp

короче, поясните мне за 17 по 23 строчки в пастебине
#654 #1073804
>>1073796
| это битовое или.
% это остаток от деления.
<< сдвиг на несколько бит.
Итак по порядку:
i%8 это i завернутое в кольце по модулю 8. Т.е. после 7 пойдет 0, 1...
7 - (i%8) это соответственно инверсия, 0,1,2... превращается в 7,6,5...

indexb последовательное чтение значения из твоего массива [0,0,1]
(
indexb)%2 хз зачем. Превращает все четные в 0, нечетные в 1.

bit << k сдвигает предыдущее значение на k битов влево.
Соответсвенно если у тебя i = 1 (второй байт), k = 6, если значение из массива было 1b, то станет 1000000b, если было 0b, то это просто работа проца вхолостую.

Ну а дальше бит ставится через OR в "аккумуляторе" c для текущего байта.
#655 #1073814
>>1073804
Спасибо, Серёжа! чую нужно будет достать блокнотик и чисто карандашиком прорешать пример, пока я ещё сходу не понял всё это. Но ты молодец, вообще у вас тут очень всё цивильно, даже нахуй меня ни разу не послали, что почти обидно самую малость.
#656 #1073819
>>1073701
По ссылке получать не получится т.к. в некоторых случаях нужно будеь nullptr передавать. Нужен какой-то конструктор для этого. Но это пока не важно как и работа с шаблонами. Эти проблемы буду решать по мере поступления. Вообще мне нужно поведение похожее на то, что в джаве, где всё по ссылкам передаются, но так чтобы изменение переменной внутри рекурсивного вызова приводило к изменению самого объекта, а не как в джаве к присвоение переменой новой ссылки а другой объект. В с++ наверно тоже такое есть. Щас подумал. Это похоже больше похоже на поведение указателей, а не ссылок. Но всё равно такое поведение должно быть запрограммировано в самом классе, а не создавать ссылку на объект этого класса каждый раз когда я захочу такое поведение. А его я захочу всегда. Решение с shared_pointer выглядит самым подходящим, но как его впихнуть самого класса? Чтобы выглядело будто typedef сделал.
#657 #1073836
>>1073819

>По ссылке получать не получится т.к. в некоторых случаях нужно будеь nullptr передавать.


Блин, ты сам спросил и сам ответил. Как ты можешь передавать нулптр, не передавая указатель? Странный заппрос, мягко говоря. Ты не нуллптр передаёшь, ты передаёшь информацию "указатель не определён", для этого есть методы в shared_ptr и для этого ты можешь использовать состояние объекта.

Не могу понять твою проблему, ты темнишь. Хочешь передавать указатель - передавай указатель, что тебе мешает? Джаву не видел никогда.

>Но всё равно такое поведение должно быть запрограммировано в самом классе


>Решение с shared_pointer выглядит самым подходящим, но как его впихнуть самого класса? Чтобы выглядело будто typedef сделал.


Если я правильно тебя понял, тут тебя ждёт облом. Переоппределение operator. ещё не завезли (это такой инструмент для перенаправления всех обращений к членам), так что ничего лучше, чем shared_ptr<T> ты не получишь - всегда будешь писать -> вместо . и всегда будешь создавать указатель.

НО. Если ты решительно готов к тому, чтобы пердолиться с каждым классом, для которого тебе нужно такое поведение, то тебе нужно сделать так:
http://coliru.stacked-crooked.com/a/35d2678be310defe
То есть, на каждый публичный мембер тебе придётся определить метод - либо прокси-метод, либо геттер и сеттер. Так что если ты хочешь кого-то наебать, передавая такой НЁХ в функции, и у тебя есть члены-переменные - без сеттеров/геттеров не получится.
#658 #1073840
>>1073836
Похоже не получится объяснить что я хочу не объясняя что я делаю. У меня есть самописный map на джаве на основе бинарного дерева поиска. Там 2 класса. Для самого мапа и для ноды. Но функции поиска и вставки перенесены в класс ноду, а в мапе просто обёртка. Это можно переписать в 1 класс. Хотя придётся помучаться с переносом функции удаления, но это потом. Именно это я и хочу сделать. Но на крестах т.к. в джаве нет такой свободы работы с ссылками. По логике это ещё должно быть шаблоном и некоторые функции должны принимать nullptr. Это в самом алгоритме записано и ни на каком языке от этого не избавиться без всяких извращений. И с клиентской стороны не должно быть отличий. Клиент должен создавать объект этого класса, а не ссылку или указатель на него. Работать как с обычным мапом.

Сайт не открывается. Скинь где подробнее описан тот способ, что ты назвал.
#659 #1073855
>>1073644

>Класс где s1=s2 не копирует всю строку, а копирует ссылки как в джаве 2 переменные указывают на одну строку.


Ты придумал, как ты будешь присваивать строке в таком случае? Если s1=s2 делает s1 указывать на s2, как тогда изменить строку присвоением?
#660 #1073885
Сап, посмотрел сейчас на курсеру и афигел от того что на ней нет C++, если я скажем через пару лет спижжу трактор в Канаду, я там буду нужен с C++ или сосну?
#661 #1073888
>>1063107 (OP)
Я только что прочитал оп пост и понял что оп няшка. Я влюбился в этот язык.
#662 #1073945
Аноны нравится направление VR и AR, есть тут кто из разрабов кто занимается этим? Подскажите что читать изучать
#664 #1074045
>>1073855
S.clone возврвращает новый объект точную копию старого.
#665 #1074086
>>1073840
Хуйню написал, похоже что ты ебаный шизик.
#666 #1074203
>>1074045

>S.clone


Не надо тащить свой java-импринт в цепепе.
#667 #1074312
>>1073840
НИХУЯ не понял. Вот тебе та самая страница в архиве:
https://archive.li/wnXGk
#668 #1074350
>>1073963
Ну и я тоже самое смог найти. Всего 2 курса, из них один - это продолжение второго.
#669 #1074397
>>1073840
Ты самое главное не сказал: почему тебя не устраивают указатели. Ты можешь, например, сделать обёртку над шаред_птром.
#670 #1074521
>>1074312
Виж. Ты предлагаешь новый класс обёртку для предыдещего делать? Так не получится т.к. эта обёртка будет работать только с клиентской стороны. А мой класс ещё сам себе клиент. Я не смогу написать определения функций в самом классе пока у него не будет возможности самого себя через умный указатель передавать в себя рекурсивно. Может эти функции из второго класса можно в первый отправить и держать их как обёртку для приватных рекурсивных чтобы сделать напрямую рекурсию когда публичные вызывают приватные, а приватные публичные?

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

>>1074397
Указатели устроивают. Только обёртку нельзя делать отдельным классом. Поведение, которое даёт обёртка должно быть у всех клиентов моего класса, а он клиент для самого себя.
#671 #1074560
>>1074521
Что тебе мешает передавать ссылку на нулевой экземпляр класса вместо нуллптра?
#672 #1074577
>>1074560
Это не главная проблема. Потом решу. Указатели нормально подходят. Мне нужно как-то разыменовывать указатели с помощью оператора точки. Чтобы клиент тем же интерфейсом пользовался. У меня план сделать рекурсивные функции с умным указателем и обёртку для них обычные функции всё в одном классе. Где-то передавать this в рекурсивную функцию где-то nullptr. При рервом вызове составать sharedptr и дальше его передавать. Или сразу в обёртке его создавать. Короче я кажется понял. Пойду пытаться умные на уных указателях писать. Спасибо.
#673 #1074598
>>1074577

> Мне нужно как-то разыменовывать указатели с помощью оператора точки


Я уже писал про это выше.
#674 #1074720
Перекат пилите.
#675 #1074771
#676 #1074837
>>1074521
Твои заморочки какие-то ебанутые.
Ты переделал свой класс что дерево стало нодой корня. Нихуя не вижу проблем никаких для клиенского кода, если методы совпадают. И причем тут вообще копирование по ссылке.
Ты ебанутый черт. Или просто ебаный даун который в программировании первый день и когда начал писать дерево решил какую-то хуйню умную приплести.
#677 #1074842
Тред утонул или удален.
Это копия, сохраненная 27 октября 2017 года.

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

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