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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
147 Кб, 604x604
топ вопросов прошлого треда #2 #1045414
Во что компилится С++, что такое Си с классами и как вкатиться джуном на плюсы.
#3 #1045453
https://www.quora.com/How-much-money-does-Bjarne-Stroustrup-make-in-Morgan-Stanley
пришел таки к успеху! (но на стрижку до сих пор жопит)
sage #4 #1045473
>>1045414

>>как вкатиться джуном на плюсы.


Не мыть голову месяц
#5 #1045496
>>1045473
а ножки можно?
#6 #1045513
>>1045411 (OP)
Ну что ребят, запилим что нибудь годное? Может свой БолженОS или компилятор машинного кода?
#7 #1045520
>>1045473
Не смешно, я правда вкатывался джуном на плюсы.
#8 #1045532
>>1045411 (OP)
Опять какой-то петух высрал кириллическую С в заголовок.
>>1045343

>- Стабильного ABI


Бинарнопетух подъехал. Нахуй надо? Есть ещё один язык, кроме ассемблера и псевдоассемблера, у которого это есть?
>>1045350
Надо разделить всю программу на достаточно маленькие для тебя части и везде чекать наличие ошибки. Другого способа получить строго defined-поведение программы нет. Посему у std::thread нету никакого terminate.
>>1045369
Ты путаешь ретурн-значение с аварийным завершением.
>>1045513

>компилятор машинного кода?


У меня тут идея. Надо провести битву самодельных компиляторов для x86, тестируется:
- производительность собранных экзешников в разных задачах
- производительность экзешников, собранных другими компиляторами-участниками и транслированных в ассемблер.
каково блядь, кому только это надо?
#9 #1045533
>>1045414
Ну это что то уровня
Питон это си с абстракциями
#10 #1045545
>>1045532

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


Я только за анон, какие сроки выполнения, условия?
Если найдутся еще желающие, чтобы участников было хотя бы 3-4 то можно провести.
#11 #1045560
>>1045545
Я пошутил, конечно, так как создание компилятора (с нуля?) - огромный труд. Просто спетросянил в ответ на петросянство.
sage #12 #1045562
>>1045520
Чёлкой сможешь хлеб отрезать?
#13 #1045564
>>1045545
Ну, я думаю где-то год минимум. Может полтора. Если компилить скажем сишку или питон. Если кресты - то я ебал его нога и идет оно нахуй.
#14 #1045567
>>1045520
И как?
#15 #1045576
Ссылка на базовый класс связана с производным: base& bRef = d, где d - объект производного класса. В производном классе есть метод e(), которого нет в базовом классе. Я делаю каст static_cast<derived&>(bRef).e() и вызываю метод e(). Какого хуя он вызывается, если в базовом классе его нет?

https://ideone.com/NzK90p
#16 #1045577
Аноны, что здесь происходит?
int x[]= {3, 5, 8};
cout << (*x)["my string"+3];
#17 #1045582
>>1045567
Вкатился, вот с вами тута
#18 #1045588
>>1045577
Так понимаю, это эквивалентно этому:
int x[]= {3, 5, 8};
cout << ("my string")[*x+3];
#19 #1045589
>>1045588
точно также, как x[2] = 2[x] = 8 в данном случае
#20 #1045591
>>1045582
Сколько тебе здесь платят?
sage #21 #1045592
>>1045588
Да, эквивалентно
Выводится i

Просто ньюфаная и не понимаю как это работает
#22 #1045593
>>1045591
Пасскодами
#23 #1045598
>>1045576
Какое-то странное поведение, если в производном классе создать поле с дефолтным значением и добавить в распечатке в e() его, то static_cast<derived&>(bRef).e() здесь он всегда вместо значения будет 0 пропечатывать.
#24 #1045629
>>1045576
e() - невиртуальный метод. Компилятор просто взял и подставил вызов функции, без шароебли по vtable.
Давай с виртуальной попробуй.
А с нулями тебе просто повезло на пустую память по смещении от адреса указателя на объект
#25 #1045635
>>1045564
Может, Схему? Парсить S-выражения может школьник, стандарт малюсенький, а оптимизировать можно дохрена.
#26 #1045640
>>1045629
Скажи мне, как устроены объекты в крестах? Я так понимаю, ссылки на виртуальные методы лежат прямо в объекте? Как они отделены от данных? Почему бы просто не носить в объекте ссылку на тип?
#27 #1045644
>>1045640
В vtable лежит ссылка на typeinfo. А если тип не полиморфный то typeinfo статически определяется на этапе компиляции. Больше, собственно, ничего характеризующего тип не лежит. Да и это опционально и отключабельно в компиляторе.
#28 #1045645
>>1045644
Нет, я имею в виду, что все ссылки на методы класса могли бы лежатьтв одном месте, например, а не таскаться длинной бородой заткаждцм объектом
#29 #1045647
>>1045640
Много писать, да и лень с телефона. Вот здесь с примерами и в целом можно разобраться - https://habrahabr.ru/post/51229/
#30 #1045648
>>1045645
Так vtable и есть один на класс. В объекте только указатель.
#31 #1045649
>>1045648
Ну ок тогда.
#32 #1045653
>>1045645
Так и есть - vtable создаётся одна для класса, в объекте хранится лишь указатель на vtable. В конструкторе, указатель устанавливается на vtable класса, в деструктор к устанавливается в vtable родительского класса перед вызовом деструктора родителя.
#33 #1045655
Новый ньюфаг в треде.

Пытаюсь написать функцию, которая находит наименьшее общее кратное. Иду простым лаконичным путем (пик 1) - нихуя не работает, судя по дебаггеру, луп просто игнорируется. Но do-while(true) луп с той же логикой (пик 2) отрабатывает нормально.

Что за чертовщина? Что я делаю не так?
#34 #1045659
>>1045655
В первом случае заменил && на ||
#35 #1045662
>>1045655
Не (А и б) равно (не а или не б).
#36 #1045664
>>1045659
>>1045662
Ох, действительно. А еще работает

>while (! (max % a == 0 && max % b == 0)) {}



Теперь буду сидеть и пытаться все это осознать.
#37 #1045698
>>1045576
На сколько мне известно, смотри:
Имеется ссылка класса Base.
Потом ссылка Base кастится в ссылку derived, но участок памяти до сих пор ссылается на объект Base.
Значит теперь у нас вместо вот этого: Base & bRef = b, вот это derived& bRef = b. А имена функций и члеов начинают искаться из области видимости типа(в нашем случае bRef - у него теперь тип derived, то есть ищется функция или имя в области видимости derived). Вот почему вызвалась e.
#38 #1045701
>>1045576
Я тот анон, который ответил выше. Ты сам в вопросе ошибся. bRef = b, а не d.
#39 #1045706
>>1045664
Вот тебе как понять. Пример твоего.
while(!(true && false)) - это пример как у тебя может получиться. Чтобы работал цикл, нужно чтобы в главных скобках был true. Так как true && false рано false, то отрицание (!) превращает из false в true. Если нужно подробнее, обращайтесь.
#40 #1045784
Как обновить g++ под Бубунтой до 17-ой версии?
#41 #1045798
>>1045784
sudo apt-get upgrade g++
#42 #1045822
>>1045576

> Какого хуя он вызывается, если в базовом классе его нет?


Статик каст не проверяет корректность преобразования, это в стандарте написано. Привет UB (или как там?). Используй dynamic_cast, тебе в рантайме это выплюнется.
>>1045598
ALO UB ETO TI
>>1045784
Нету у G++ такой версии, блядь (или ты про пакет из новой Убунты?).
#43 #1045839
>>1045784
Найди сторонний PPA репозиторий, если в официальном нет, или на крайняк сам сбилди, кроме --prefix можно вообще не заморачиваться и не указывать опции
#44 #1045864
Ребят, что почитать чтобы взяли джуном?
вышки нет.. сори
#45 #1045871
>>1045864
Абсолютно все книги в шапке и еще многое другое
#46 #1045875
>>1045864
И чтоб стандарт от зубов отскакивал.
#48 #1045881
>>1045864
Как понять, что я джун? Если год назад устраивался на работу как стажер и до сих пор работаю
#49 #1045899
>>1045881
Если паттерны используешь как ебалас
#50 #1045925
>>1045350
Олсо, специально для этого сделаны эксепшены: всё то, что ты считаешь ненадёжным, ты оборачиваешь в try-catch и ловишь, при этом перед каждым вызовом небезопасной функции твои объекты должны быть в валидном состоянии (т.е. у тебя не будет ошибок и утечек, если любая ненадёжная функция завершится). Это достигается абстрагированием.
#51 #1045926
>>1045899
А если вообще не использую?
#52 #1045936
>>1045926
Ты их используешь, но не до конца понимаешь этого. И я не в плохом смысле о них говорил, паттерны - они везде, как бы ты ни хотел от них избавиться. Правильный дизайн приложения обеспечивает надежность/быстродействие/модифицируемость/тестируемость/защищенность/масштабируемость/робастность/... (нужное подчеркнуть).
Некоторые местные петухи кукарекают по поводу экономии лишних байт и тактов процессора, но ты их лучше не слушай. Грамотно составленный скелет приложения (архитектура или конструкция) и правильно выбранные алгоритмы провернут на хую всю их работу над сдуванием пылинок с полированных яиц кота.
#53 #1045941
>>1045926
Паттерн - это вид взаимодействия между объектами. Ты чаще всего используешь ограниченный набор этих взаимодействий, то есть у тебя в голове какие-то паттены (шаблоны взаимодействия) есть. Где-то можно узнать, как они называются - почитать книгу какую-нибудь.
#54 #1045948
>>1045925

>всё то, что ты считаешь ненадёжным, ты оборачиваешь в try-catch


Это Java-macaque-style. В C++ есть RAII и если ты пишешь try-catch блоки, то значит ты что-то делаешь не так.
#55 #1045949
>>1045936

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


Когда в руках молоток — всё вокруг кажется гвоздями.
#56 #1045951
>>1045948

>если ты пишешь try-catch блоки, то значит ты что-то делаешь не так


Разве RAII позволяет отказаться от try-catch
#57 #1045953
>>1045951
Практически полностью.
#58 #1045955
>>1045953
Что в промышленном коде используется обычно?
#60 #1045965
>>1045948
Я подумал - ты прав. Если вся иерархия объектов и функций сделана так, что вызов любой ненадёжной функции оставляет их в валидном виде - да, трайкетч для строго определённого поведения не нужен.
#61 #1045974
>>1045948
Если я могу обосраться из-за того, что new бросит std::bad_alloc, то как мне обойтись без try-catch?
#62 #1045975
>>1045936
Правильно, блядь, пусть всё к хуям тормозит, зато обдрочимся на ебучий скелет, который нахуй никому не сдался
#63 #1045976
>>1045974
не использовать new, но это не делает концепцию исключений менее уебищной (если мы говорим о языке на котором пишем высоконагруженные и надежные системы)
#64 #1045978
>>1045976
чем плохи исключения?
#65 #1045980
Анон, как можно в двух словах объяснить разницу между указателями и ссылками, упомянув const?
Разница в том, что константные объекты не связываются с неконстантными ссылками?
#66 #1045981
>>1045978
1)слишком implicit. ты не можешь просто посмотрев на код понять где и что может пойти нет так, надо смотреть документацию. Из этого проблемы аля "тут чёто какойто экспшн выпал внезапно, а мы забыли трайкетч написать". В этом плане в Rust всё сделано просто прекрасно, монады, match, просто сказка а не язык.
2) Очень сильно зависит от RAII, а RAII применимо далеко не всегда, я даже элементарно не могу в деструкторе класса File написать close(fd); потому-что при попытке записи временного буфера на диск на этом диске может закончиться место, и что делать непонятно (можно кинуть экспшн из деструктора))))))))))
Сугубо личное мнение, может кому-то эта концепция и нравится
#67 #1045983
>>1045981

>монады


В расте нет Higher-Kinded Types.
#68 #1045990
>>1045974
Никак.
>>1045980
Константная ссылка - это петросянство. Привести указатель на конст у указателю не на конст без статик-каста или реинтерпрета какого-нибудь ты не сможешь. В этом отличия указателя от ссылки нет.
#69 #1045997
>>1045974
nothrow
#70 #1046090
>>1045980
По идее, ссылки не должны менять то, на что они ссылаются. А вот указатель может менять то, на что он ссылается.
#71 #1046096
>>1045980
Ссылки - для стековых объектов, указатели - для хиповых. Не константные - для выходных параметров (т.е. этот параметр изменяется в функции, см. out/ref C#), константные - для входных.
#72 #1046106
>>1045980
ссылки - алиасы к переменным (еще одно имя), указатель - еще один объект, который модет указывать на другой объект. мы можем биндить конст ссылку к не конст переменной но не наоборот. по конст ссылке мы не можем вызывать не конст методы, но можем их вызывать непосредственно к неконст объекту. А вообще, это с практикой приходит
#73 #1046107
>>1045980
Принципиальная разница одна - ссылка присваивается один раз при инициализации, и потому нельзя менять куда она ведет (без грязных трюков). В остальном разницы нет.
#74 #1046111
>>1045980

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


Указатель — объект, а ссылка — нет.
#75 #1046112
>>1045981
И как же Rust решает проблему закончившегося места на диске?
#76 #1046113
>>1045974
Зачем тебе ловить bad_alloc, посмотреть на него?
#77 #1046117
>>1046112
Он не дает тебе забыть о том, что что-то может пойти не так. Всё время приходится или матчить, или траить, или анврапить
#78 #1046122
>>1046117
Ок. Получили Err(NOSPC) при закрытии. Что дальше?
39 Кб, 616x197
#79 #1046126
>>1045981

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


Просто пиши так, чтобы код был exception-neutral.

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


трайкетч везде писать не надо, C++ это не Java.

> Очень сильно зависит от RAII, а RAII применимо далеко не всегда, я даже элементарно не могу в деструкторе класса File написать close(fd); потому-что при попытке записи временного буфера на диск на этом диске может закончиться место, и что делать непонятно


> В этом плане в Rust всё сделано просто прекрасно


Охотно верю, что в Rust сделано прекрасно. На пике демонстрация этого «прекрасно».
https://github.com/rust-lang/rust/blob/6ccfe68076abc78392ab9e1d81b5c1a2123af657/src/libstd/sys/unix/fd.rs#L240
#80 #1046132
>>1046122

> при закрытии. Что дальше?


>


А дальше месэдж бокс какой нибудь, или ещё что-то, зависит от логики, лал

>>1046126
Я и не говорил что в расте охуительная стандартная библиотека особенно мне нравится момент, когда ты говоришь Vec::push({}), а он паникует)). Имел ввиду, что в расте куда больше возможностей для реализации надежных приложений, чем в С++.
Разумеется и на плюсах прекрасно работают сервера, это лишь моя точка зрения)
#81 #1046134
>>1046132

>А дальше месэдж бокс какой нибудь


Файл открывается/закрывается глубоко в кишках какой-то либы, которая о GUI ничего не знает (и знать не должна).
Откуда ей знать, что надо показать «месэдж бокс какой нибудь»?
#82 #1046145
>>1046134

Я не понимаю в чем вопрос.
Как сообщить либе что делать если файл не закрылся? Колбэки, события и тд и тп.
Или я что-то не понял?
#83 #1046146
>>1046145

>Колбэки


ЛОЛ! Можно перефразировать: «Из этого проблемы аля "тут чёто какая-то ошибка выпала внезапно, а мы забыли колбэк дёрнуть".»
Что насчёт асинхронности, реентерабельности и поддерживаемости такого кода?

> Или я что-то не понял?


Как писать поддерживаемый софт.
#84 #1046147
>>1046146
не использовать дырявые абстракции и плохие архитектуры ¯ \ _ (ツ) _ / ¯
#85 #1046166
>>1046147
Ну так зачем ты предлагаешь архитектуру на колбэках тогда?
#86 #1046193
Как дебагать на линуксе в g++?
#87 #1046199
>>1046193
G D B
D
B
#88 #1046203
>>1046193

>Как дебагать на линуксе в g++?


>


собрать со специальным ключом для дебага-g вроде, и дебажить по заветам >>1046199
#89 #1046206
>>1045951
>>1045953
хм, разве raii не является костылем для того чтобы использовать исключения?
#90 #1046271
Помогите запустить qtCreator+Cmake+LLVM. Я уже ничего не понимаю в этом процессе сборки программ.

Связка qtCreator+Cmake+MinGW работает. Пытаюсь по аналогии запустить c LLVM. Меняю компилятор с/с++ на llvm, и он жалуется на какой-то сmake generator. Список возможных вариантов на второй картинке и ни один из них не работает и вообще ничерта не понятно что и где нужно прописать, куда что установить, чтоб оно заработало.
Что ещё за генератор такой и зачем оно нужно? Компилятор компилирует файлы, CMake говорит что и в какой последовательности этому компилятору компилировать. Разве там есть что-то ещё? Чёрт ногу сломит, что мне прочитать, что мне сделать, чтоб эта хрень стала понятнее?
#91 #1046277
>>1046271

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


Вот тут-то ты и проебался. Симейк никому ничего не говорит, он просто пилит мейкфайлы за тебя. То есть симейковый мейкфайл + генератор мейкфайлов = сгенерированный мейкфайл под конкретную платформу. Дальше сам разберешься.
#92 #1046306
>>1046271
ЕМНИП, у LLVM для винды (?) нету make. LLVM на винду надо устанавливать вместе c MinGW, чтобы был make.
#93 #1046322
>>1046306
Clang есть, он к MSVC каким-то образом липнет. Я так понимаю, он и pdb файлы мелкософтовские может жрать, вот это я понимаю совместимость.
#94 #1046325
>>1046271
что, сучка, столкнулся с первыми реальными задачами и проблемами, отличными от "хелло ворлд" и уже заныл?
а? это, блядь, твоя работа, иди сука и копай вглубь
#95 #1046327
>>1045997
Разве если где-то внутри nothrow функции возникнет исключение которое мы забыли заткнуть кечем, оно не сломает свертку стека, что закрашит программу?
#96 #1046356
>>1046322
Clang можно использовать либо с MSVC, либо с MinGW, сам по себе clang не будет работать
#97 #1046414
>>1046271
Какие же спермобляди дегенераты, пиздец просто.
#98 #1046420
>>1046327
Ты наверное перепутал nothrow с noexcept.
nothrow можно передать как аргумент для new, например auto pVar = new (std::nothrow) Type. В случае ошибки new вернёт нулевой указатель.
Если указывать noexcept для ф-и, и внутри неё ты захочешь вызвать ф-ю, которая может бросить исключение, то компилятор должен об этом сообщить.
#99 #1046430
>>1046199
Но ведь хуйня же.
#100 #1046433
>>1046420

> компилятор должен об этом сообщить


Кажись я погорячился на этот счет.
sage #101 #1046436
>>1046327
Нет, оно просто вызовет std::terminate и сразу завершит твою программу.
sage #102 #1046437
>>1046420
Не должен. программисту лучше знать, что вот конкретно в этих условиях оно по-любому не бросит, отвечаю. Поэтому спокойно зови что угодно, но если что - сам виноват.
#103 #1046464
>>1046327
Если вызывается std::terminate то никаких гарантий того, что стек будет разворачиваться в обратную сторону и будут вызываться деструкторы объектов нет, потому что это нахуй не нужно зачастую, ведь система подчистит ресурсы мертвого процесса сама. Веселуха будет, если ты кинешь исключение во время обработки другого исключения, например:
у класса a есть конструктор и деструктор, второй кидает исключение, есть также класс b, который наследуется от класса a и в конструкторе кидает исключение. Если ты поместишь объект b в область видимости try блока, то сначала вызовется конструктор а, потом вызовется конструктор b и бросит исключение. Стек начинает раскручиваться в обратную сторону, попутно вызывая деструкторы для всего, что успел инициализировать в try-блоке в порядке, обратном их появлению. И тут ... ннна нахуй ... деструктор b вызывает деструктор a и кидает еще одно исключение, вот это неожиданность. Конечно, фактически твоя программа вышла за пределы try блока и поэтому исключение перехвачено не будет, поэтому будет вызвана std::terminate со всеми вытекающими.
Так что вот поэтому не рекоммендуется кидать исключения в деструкторах, я еще ни разу не видел, чтобы так делалось.
#104 #1046521
Если ли смысл вкатываться в асемблер и низкоуровневое программирование?
#105 #1046537
>>1046521
зависит от твоего текущего бекграунда
#106 #1046571
>>1046537
читал пару книг из шапки
#107 #1046712
>>1046521
Смотря зачем. Если из личного любопытства, то есть. Если ты надеешься, что тебе это где-то пригодится, то это вряд ли
#108 #1046799
>>1046571
ну, асм щас нужен реверсерам, в частности вирусным аналитикам, это не программирование, знаний надо дохуища (хотя на работе изо дня в день будешь заниматся монотонной заябывающей рутиной), платят меньше чем кодеру с++, а кодеру крестовику платят меньше чем пхп-обезяне
низкоуровневое программирование? это че? если микроконтроллены, то надо знать микроэлектронику, тоже вообще отдельный пласт знаний от программирования, знать надо опять дохуищи всего, чтобы при этом зарабатывать раза в 4 меньше все той же пхп обезяны
или низкоуровневое программирование - это драйверописание под линукс или винду? ну чтож, надо потратить 10 лет чтобы смочь написать небажной полноценный драйвер щас, и при том что подобной работы в мире все меньше и меньше, хуй куда устроишься
#109 #1046811
>>1046799

>при том что подобной работы в мире все меньше и меньше


Почему такой работы становится меньше?
#110 #1046829
>>1046811
Прежде всего не каковы причины его утверждения, а истинно ли оно вообще. Пусть тащит статистику.
На сколько я могу судить, количество железок с течением времени только растет, под каждую нужно написать софт. Да, он скорее всего будет повторяться, и процесс сведется до тривиального, но кто-то эту работу должен делать?
#111 #1046836
>>1046811
потому что все написано
взять тех же системщиков на линуксе
сетевой стек более-менее написали, спиздив многое из bsb-систем
файловые системы тоже довели до нормального состояния, во многом позаимствовав идеи у солярки
после того как сделали аппаратную поддержку виртуализации на x86 процах (которая уже десятки лет до этого бала на мейнфреймах), сделали и всю инфраструктуру нужную для виртуализации на линуксах, поверх этого сделали инфраструктуру нужную для построения облаков, saas и paas сервисов
безопасность доже докрутили, спиздив многое опять же у майкрософт и у коммерческих реализаций юниксовых систем
что щас остается системникам? допилились виртуализацию на уровне оперативных систем, в общем докер и все что ниже его крутиться и инфраструктуру поверх
само собой, за эти два десятка лет писались драйвера под всяхие железки и щас в принципе почти подо все уже написано
и че получается? то что системники под линукс сделали свою работу и большинство может смело послано нахуй
а оставшаяся небольшая часть будет уныло дописывать драйверки на время от времени появляющееся новое оборудование
#112 #1046839
>>1046521
Если ты спрашиваешь - нет.
#113 #1046853
>>1046836
Ты так говоришь, как будто бы все уже сделали до нас, и нам уже ничего не остается. Все равно будут придумывать новые технологии и хуевины, под которые тоже надо писать драйвера
sage #114 #1046879
>>1046799

>надо потратить 10 лет чтобы смочь написать небажной полноценный драйвер


Чему там 10 лет учиться, функции инициализации устройств наизусть выучивать?
#115 #1046880
Киньте годный материал по DFS и BFS, где все нормально объясняется. Заранее спасибо!
#116 #1046885
>>1046879
Ну хз, сложно как то. Пару лет назад видел гайд как написать драйвер, но у меня ошибки какие то полезли, в общем не скомпелировалося.
Может скинешь какие нибудь видосы по этой теме?
#117 #1046896
>>1046879
те лично ты писал драйвера и не столкнулся с трудностями?
именно поэтому была влеплена сажа?
#118 #1046899
>>1046885

>ошибки какие то полезли, в общем не скомпелировалося


>видосы по этой теме


ой, нет
наверное не стоит тебе тратить на это время
#119 #1046909
>>1046853
в общем случае, нет
любая относительно новая технология имеет свой период в начале становления, когда ей нужны инженеры от которых требуется создавать, улучшать компоненты технологии, а потом уже такие специалисты не нужны становятся, когда уже технология становится зрелой, остается нужда по сути в надсмотрщиках и настройщиках
такое происходило с энергетикой, с железными дорогами, да с любой технологией
да что там, про это целые книги написаны типа "Блеск и нищета информационных технологий" Николас Карра
#120 #1046947
>>1045411 (OP)
Сап, ищу информацию по функциям. Решил немного побольше изучить как работают функции. Такой вопрос, я правильно понимаю, что прототип функции, определение которой находится после main(), он помогает нам по адресу в момент вызова определить область памяти определения функции (исполняемого кода)? Для этого же нужны прототипы? И если да, то как я понял в данном случае будет происходить одновременно и вызов и само определение?
#121 #1046959
>>1046947

Сигнатура функции прототип нужна компилятору, чтобы он мог следить за передаваемыми аргументами, и возвращаемым значением. про то, где именно располагается функция думает линкер. Сигнатура функции никак не связана с её конечным адресом в бинарнике, если я правильно понял вопроса
#122 #1046961
>>1046959
и тут ты такой сразу подорвался отвечать нубасу
хорошая собачка
#123 #1046965
>>1046961
пасиб:3
#124 #1046969
>>1046430
Знаешь что-то лучше?
#125 #1047004
>>1046969
Под линукс нет
#126 #1047021
Ребята, есть гайды как вирусы писать на С?
#127 #1047039
>>1047021
нет
#128 #1047040
>>1047021
Был тут один такой...
#129 #1047068
>>1047021
Гугли бля. Эту тему обсосали уже везде. Упоротые даже на Паскале их писали.
#130 #1047078
2ch подскажи, из текстового файла получается нельзя удалять информацию, только полностью перезаписывать файл?
#131 #1047134
У меня русские символы не выводятся, это нормально?
>>1047131
Винда нерусская, подозреваю проблема в этом.
#132 #1047139
>>1047078
Можно удалить конец.
#133 #1047144
>>1047021
Без задней мысли тащемта
#134 #1047171
Может кто подсказать когда на gcc файловую систему вытащат из экспериментала? И как с этим дела обстоят на windows? Я пробовал её использовать и там, но что-то не получилось. Вроде файловая система была самой значительной особенностью нового стандарта, но она почему-то до сих пор в экспериментале.
#135 #1047202
>>1047134
Спермоблгоспода должны страдать.
#136 #1047203
>>1047134
Почитай про imbue для basic_ostream. Тебе нужно установить локаль в соответствии с кодировкой текущего файла.
#137 #1047215
>>1047171
Потомучто компиляторы ещё не до конца поддерживают 17й стандарт. filesystem будет кросплатформенной, под виндой и пингвином будет работать одинаково
#138 #1047281
>>1045411 (OP)
Анон, как препроцессор разворачивает такие макросы #define MAX(a, b) ((a) < (b) ? (b) : (a)) и почему, например, при вызове MAX(1, 2) параметры 1 и 2 подставляются вместо a и b, а не вместо MAX?
#139 #1047314
>>1047281
ты хоть сам понял, что написал?!
#140 #1047330
Делаю тетрис с библиотекой ncurses. Блоки делаются с помощью окон, но проблема в том, что когда вращаю окно, не сохраняется пропорция ширины/высоты. Обьект который был длинным, становится коротким, но широким при вращении при том, что значения высоты/ширины одни и те же просто поменяты местами. Как сделать пропорцию?
#141 #1047393
#142 #1047413
>>1047281

>как препроцессор разворачивает


>#define MAX(a, b) ((a) < (b) ? (b) : (a))


Так и разворачивает. Если после этого где-то в тексте будет int t = MAX(3,100), то перед компиляцией он туда поставит int t = ((3) < (100) ? (100) : (3)). Если будет в где-то MAX(sin(1.43xx),"saa2131_asd"), то так и подставит ((sin(1.43xx) < ("saa2131_asd") ? ("saa2131_asd") : (sin(1.43xx)) и выдаст там соответствующие ошибки (а ещё будет считать синус два раза в некоторых случаях).
Не совсем понимаю, как он может подставить 1 и 2 вместо MAX, а не вместо a и b. Какой в таком случае вид должно иметь MAX(1,2) после обработки препроцессором?
#143 #1047454
>>1047078
С помощью STL ты можешь сделать только truncate. С помощью большинства других API ты сможешь сделать только то же самое.
>>1047281

>почему, например, при вызове MAX(1, 2) параметры 1 и 2 подставляются вместо a и b, а не вместо MAX?


Потому чт осинтаксис, блядь.
#144 #1047610
#145 #1047673
Хорошие советы для сишных программистов выложены тут http://labor-union.wikia.com/wiki/Lifehacks

Заниматься исключительно вашими должностными обязанностями и не позволять навешивать на себя чужих. Если ваша должность - Software Engineer или Senior Software Engineer, то вы должны и обязаны заниматься разработкой софта. Никакое ручное или полуавтоматизированное тестирование, никакое обучение джуниоров, никакое преподавание в вузе, никакое замещение тимлида в течение двух недель (на время которых вам, кстати, не повысят вашу почасовую ставку), никакое проведение семинаров, никакая уборка помещений, никакие погрузочно-разгрузочные работы не входят в список ваших обязанностей. Современный технический специалист не должен позволять управленцам садиться ему на шею и ездить на нем. Занимайтесь только разработкой софта, делайте свою работу хорошо, становитесь отличным техническим специалистом и безгранично развивайтесь в этом направлении.

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

Легко менять компании, если вы почувствовали, что на текущем месте работы развитие вас как технического специалиста идет недостаточно быстро. Никогда не привязывайтесь ни к работе, ни к работодателю, ни к коллективу. Выходите из зоны комфорта раз и навсегда. Вообще не привязывайтесь ни к людям, ни к работе. Также не тратьте ваше время на женщин, особенно, если они не понимают важности ваших профессиональных интересов, тормозят ваше развитие, расхищают ваше время, внимание, деньги и прочие ресурсы или требуют от вас наличия каких-либо социальных статусов, особого положения в обществе, смены профессии, перехода на управленческие должности и так далее.
#145 #1047673
Хорошие советы для сишных программистов выложены тут http://labor-union.wikia.com/wiki/Lifehacks

Заниматься исключительно вашими должностными обязанностями и не позволять навешивать на себя чужих. Если ваша должность - Software Engineer или Senior Software Engineer, то вы должны и обязаны заниматься разработкой софта. Никакое ручное или полуавтоматизированное тестирование, никакое обучение джуниоров, никакое преподавание в вузе, никакое замещение тимлида в течение двух недель (на время которых вам, кстати, не повысят вашу почасовую ставку), никакое проведение семинаров, никакая уборка помещений, никакие погрузочно-разгрузочные работы не входят в список ваших обязанностей. Современный технический специалист не должен позволять управленцам садиться ему на шею и ездить на нем. Занимайтесь только разработкой софта, делайте свою работу хорошо, становитесь отличным техническим специалистом и безгранично развивайтесь в этом направлении.

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

Легко менять компании, если вы почувствовали, что на текущем месте работы развитие вас как технического специалиста идет недостаточно быстро. Никогда не привязывайтесь ни к работе, ни к работодателю, ни к коллективу. Выходите из зоны комфорта раз и навсегда. Вообще не привязывайтесь ни к людям, ни к работе. Также не тратьте ваше время на женщин, особенно, если они не понимают важности ваших профессиональных интересов, тормозят ваше развитие, расхищают ваше время, внимание, деньги и прочие ресурсы или требуют от вас наличия каких-либо социальных статусов, особого положения в обществе, смены профессии, перехода на управленческие должности и так далее.
sage #146 #1047703
>>1047673

>Профсоюзы должны объяснять программистам, что они не должны оказывать бесплатный профессиональный консалтинг на Stack Overflow.


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



Что за бред. Пара хороших советов есть, но в основном какой-то идеалистический бред.
#147 #1047709
>>1047673

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


Зачем жить то тогда? Мне не интересно без этого, в таком случае мотивации не то что на какое-то "развитие вас как технического специалиста" будет не хватать...
#148 #1047714
>>1047330
Никак, это от пропорций литералов зависит. можешь попытаться найти квадратный шрифт для консоли
3 Кб, 638x385
#149 #1047719
>>1047330

>Как сделать пропорцию?


Как диды - из двух символов.
7 Кб, 651x393
#150 #1047720
>>1047719
Лучше даже так, скобочками.
#151 #1047722
>>1047719
В аски или в расширении 8-битном есть еще полностью закрашенный треугольник и закрашенная верхняя и нижняя половины. Но один хрен, если соотношение сторон литерала не 1 к 2, квадратиков не получится.
#152 #1047723
>>1047722

>полностью закрашенный треугольник и


прямоугольник конечно же
#153 #1047724
>>1047722

>если соотношение сторон литерала не 1 к 2, квадратиков не получится


А ровный квадратик и не нужен. Главное, чтобы пропорции примерно совпадали, глаз это нормально воспринимает.
#154 #1047725
>>1047724
Я как-то монохромный видос так в консоль выводил, сносно было.
#155 #1047761
>>1047673
Хуйню какую-то выдумал. Новую секту мутишь?
#156 #1047769
>>1047703
у меня даже что-то вроде испанского стыда за человека что написал эту пасту и за человека что ее постит постоянно
#157 #1047773
есть checkedlistbox1, туда добавляются номера, которые написали юзвери. как предотвратить добавление одинаковых номеров с разным началом? например:
+79xxxxxxxxx
79xxxxxxxxx
89xxxxxxxxx
#158 #1047774
>>1047773
блядь, дело не в checkedlistbox1, если что. просто нужен алгоритм
#159 #1047780
>>1047773
Парсить, да проверять кек
#160 #1047786
>>1045453
Что-то мне не верится. Base salary не бывает такой большой.
#161 #1047788
>>1047786
А, ну тогда 100к как в дс)))
#162 #1047795
>>1047788
Ну, не 100к, но и не $744k. Я думаю база где-то в районе $300k-$350k. Бонус может превышать базу. Поэтому $744k (в год) вылядит реалистично как полная зарплата.
#163 #1047814
Посоны, есть одна здоровая dll'ка и её исходники. Как исследовать то что занимает дофига места, и попытаться уменьшить её? Stack unwinding включён.
#164 #1047817
>>1047769

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


У меня такое странное чувство, что это один и тот же человек.
#165 #1047847
>>1047773
Хранить длинные номера в международном виде, международный вид подстраивается под локаль. Алгоритм для РФ:
если цифр 11 и плюса нет, то это международный формат без плюса
если цифр 11 и начинается с 8, то нутыпонел

если цифр 7, например, то хранить в таком же виде.
>>1047814
Пульнуть исходники в IDE и посмотреть на литералы/инициализации, например. Loop unrolling увеличивает размер кода, если что.
111 Кб, 921x535
#166 #1047850
>>1045411 (OP)
Так у меня тут важный вопрос (который попадет в топ вопросов прошлого треда):
Как узнать сколько измерений у массива?
Инби4: посмотреть в коде; а как ты инициализируешь массив?; тупой вопрос; ты наверное имел ввиду размер массива.
#167 #1047851
>>1047850
Как найти то, чего нет?
#168 #1047852
>>1047851
Мне цифру-количество надо:
Аррей[] - 1
Аррей[][] - 2
И т.д.
#169 #1047853
>>1047852

посмотри в объявление массива, чтобы узнать размерность ¯ \ _ (ツ) _ / ¯.
если нужна функция, то тут без шаблонов никак

а зачем тебе?
#171 #1047858
>>1047853

>инби4: посмотреть в коде


> без шаблонов никак


Да мне хоть методом/классом/конструктором.
Мне нужен просто понятный синтаксис/пример на крестах.

> а зачем тебе?


Задание такое стоит, значит надо (я не спорю про то что оно нужное/ненужное).
Нагуглил пока что полтора примера на mdsn но ничего не понял так как я совсем нюфаг в крестах.
#172 #1047862
>>1047856
Спасибо, но я не совсем понял как запихнуть массив который у меня в классе.
Можешь объяснить ньюфагу если есть время?
#173 #1047863
>>1047862

>я не совсем понял как запихнуть массив который у меня в классе.


Без задней мысли, как обычно.
#174 #1047865
>>1047863
По синтаксису в мейне.
Например есть class Klass {int *array = new int [size];}, и в main - int value.
Как в мейне правильно писать?
#176 #1047881
>>1047850
Реализуй свою функцию. Можешь даже рекурсией, так даже быстрее должно получиться - T(n) = Θ(n lg n)
Аноны за тебя думать что ли должны?
#177 #1047884
>>1047879
двачую
#178 #1047885
>>1047865
Ты должен сделать свой УКАЗАТЕЛЬ public, иначе его никому не видно.
>>1047881

>Можешь даже рекурсией, так даже быстрее должно получиться - T(n) = Θ(n lg n)


Это даже не смешно.
#179 #1047893
>>1047885
Разве это была шутка?
#180 #1047899
>>1047893
Блядь, а что, нет?
#181 #1047901
>>1047899

А что сложного? строк 30 от силы
#182 #1047904
>>1047899
В чем шутка? То что я примерную сложность алгоритма написал или про рекурсию?
И то, и другое было написано серьезно.
#183 #1047912
>>1047901>>1047904
Какая ещё сложнось алгоритма? Сколько по-вашему может быть звёзд у указателя / измерений у массива? Асимптотическая оценка подразумевает что-то охуительно большое, а не то, что измеряется пальцами одной руки в 99,99% случаев. Логарифм там откуда, блядь? n - это длина числа звёзд указателя в разрядах или само число разрядов? Какая операция является основой для определения сложности?

И самое главное - где хоть слово о шаблонном дерьме, в которое надо окунуться для того, чтобы это сделать без использования std::rank?
#185 #1047920
Привет, вкатываюсь к вам из жс, подскажите что почитать. Не хочется заново все муть читаться про типы данных, итерации и прочее.
#186 #1047921
>>1047879
Спасибо анонче, выручил
#187 #1047925
>>1047920
Стандарт почитай.
#188 #1047932
Напомните, как круче писать:
<< endl;
Или
<< '\n';
#189 #1047954
Я тот ньюфаг что спросил за измерения.
Оказалось оно не работает с динамическим массивом.
Можно как-то создать статический массив размера существующего динамического (компилятору не нравиться неконстантное значение) (это максимум что я пока придумал) или по другому обойти эту проблему?
#190 #1047966
>>1047920

>подскажите что почитать


"благоволительницы" литтелла - классная книжка, в списке моих любимых будет
#191 #1047974
>>1047932

><< '\n';

#192 #1047976
>>1047912
Тебе алгоритм надо как обойтись без rank? щяс
#193 #1047977
>>1047966
А мне Даниела Стил и Паоло Коельо нравятся.
#194 #1047979
>>1047954
Он на то и статический, что размер должен быть известен на этапе компиляции. Вообще можно пощекотать себе анус с использованием alloca, но тебе с таким уровнем рановато ещё.

Можно создать копию текущего динамического массива или просто статический с длинной которой с лихвой хватит на все возможные данные и руками следить за его длинной.
#195 #1047980
>>1047977
могу только посочувствовать
даже высокодуховные девы коэльо щас не котируют, так чтож вы сядете в лужу упомянув при них этого автора
#196 #1047986
>>1047912
https://ideone.com/KkXRm6
Надо окунуться в шаблоны, и частичные специализации
>>1047954
Полная ахинея, статический массив на то и статический, что его размер известен на момент компиляции, размер динамического массива познается лишь на этапе исполнения
#197 #1047988
>>1047979

>длинной которой с лихвой хватит на все возможные данные и руками следить за его длинной.


>


А еще можно использовать stl, это же тред про C++
#198 #1047995
>>1047986

>template<class T, unsigned I>


Я тут мимопроходил мимо этих шаблонов, но это же получается, что оно этот шаблон будет разворачивать для всех возможных длин массивов, которые встречаются в коде? Брр, ну и ужасы.
#199 #1047997
>>1047814

>здоровая dll'ка


>и попытаться уменьшить её?


хочешь ее отправить в прошлое? на компы с 95 виндой и 300 метровым жестким диском?
#200 #1047999
>>1047814
ну а вообще "жирные" дллки это обычно ресурсные дллки, там куча картинок, текста и прочего что нужно экзешнику
#201 #1048001
>>1047795
я вообще думал что страуструп на профессорском подсосе (тыщ 50-60 в год) сидит у себя в техасском технологическом (охуенный кстати универ из нераспиареных)
а тут вон оно как, бабло зашибает :D
#202 #1048002
>>1048001

>в техасском технологическом


хм, попутал с TAMU
#203 #1048003
>>1047995
Это же рекурсивное инстанциирование ¯ \ _ (ツ) _ / ¯. Если привыкнуть, то нормально)
#204 #1048012
>>1048003
угу, говорят, что уже на следующую неделю работы в морге перестаешь чувствовать какие-либо раздражающие запахи разложения
#205 #1048018
страуструпа вот обычно неуважают и хуесосят всякие молокососы, а но умеет себя пиарить
в частности, поддерживает очень давно свой сайт на отдельном домене, не забывает его обновлять всегда
все его достижения там указаны, все расписано
stroustrup.com
такие дела
#206 #1048021
>>1048012
На самом деле писать и понимать такие штуки - нихуевый квест, выполнив который можно свихнуться считать себя лучше других
#207 #1048034
>>1048018
еще и бабло, кстати, зарабатывать умеет
на книжках можно неплохо зарабатывать - оказывается это такой "удобный" доход, книгу написал, а она постоянно издается, переиздается, допечатывается, потом у англо-саксов все нормально с электронными площадками для торговли ебуками, а это еще удобней, с цифры денежки вообще каждый месяц капают
в общем, раз написал, а деньги идут всю жизнь, тем более у него там наверное в сумме миллионные тиражи, куча бабла
потом случайно попал на влог отдной тетки (реально тетки), уже в "баба ягодка опять" возрасте перекатившейся в америку жить, дак она в видео и проговорилась - типа, что ее все хуесосят в интернете, что у ней понаписано куча неграмотных книг в мягкой обложке типа "как выйти за американца", "разговорный английский для совсем не знающих и прочее", страшные разговорники типа фраза на русском - перевод этой фразы даже не транскрипцией, а в виде "хау ду ю ду", она на это заявила, что у ней они все выложены в амазон и их, блядь, покупают, и у ней каждый месяц денежка с них, баксов 600-700 набирается, и получается что это вроде как настоящее вложение - ты тратишь время, создаешь продукт-книгу, а потом уже получаешь денежку с этого
такие дела
а у страуструпа наверное гораздо больше денег с книг выходит
#208 #1048432
>>1047997
Проблема в том что линковка при компиляции этой самой дллки дофига времени занимает.
>>1047999
В том то и дело что там только код.
#209 #1048521
>>1048432
Обычно место занимает debug info.
#210 #1048544
>>1047997

>хочешь ее отправить в прошлое? на компы с 95 виндой и 300 метровым жестким диском?


Не всякая .dll-ка влезет в 300-метровый жёсткий диск.
3 Кб, 312x176
#211 #1048682
int i;
int N = 10;
int a = new int[N];
for (i = 0; i < N; i++)
a = 1000
(1.0*rand()/RAND_MAX);

Тестировал алгоритм сортировки, и каждый сука раз при заполнении рандом в самом начале идёт ёбанная единица. Чё за хуйня?
#212 #1048699
>>1048682
Это ГПСЧ, тут нужно задавать seed перед началом генерации. Нубы обычно берут time() или что-то вроде такого.
19 Кб, 1300x98
#213 #1048727
>>1048682
Кстати говоря, у меня rand генерирует псевдорандомную последовательность длиной всего 64к (вторая строчка). Даже если будешь заполнять изображение белым шумом, будет мусор повторяющийся. Это линейный конгруэнтный метод.
В делфях используется то же самое, но на 32 бита.

https://ideone.com/qk2bZN
А у ideone rand другой, он там тоже на 32 бита.
#214 #1048733
>>1047932
Эндл - 4 клацка, портабельно (да я знаю про конверсии всякие), читаемо.
Слешэн - 6 клацков.
>>1047954

>Можно как-то создать статический массив размера существующего динамического


Размерность существующего динамического известна в компайлтайме, блядь. Как ты там написал это, если ты нихуя не знаешь? Кому ты пиздишь? Щас ты покажешь код, и мы все охнем.
Могу тебе класс с динамической размерностью накатать.
>>1047986

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


В том-то и дело, что поциенту нужна размерность (известная в компайлтайме). Он нас наёбывает, сейчас увидишь.
#215 #1048814
Как корректно дать определение полиморфизма в C++?
#216 #1048819
>>1048733

>Эндл - 4 клацка


И 9 если с std:: впереди.

> Слешэн - 6 клацков.


Откуда 6?

> портабельно


Что ты имеешь в виду?
#217 #1048876
Привет. Начал вкатываться в плюсы, хотел скомпилировать простой хеллоу ворд в командной строке, скачал компилятор(g++), установил, в командной строке указал путь к нему в переменной path, затем пишу g++ program.cpp и мне выдает No such file or directory. Как это фиксить? С расположением файла все нормально, я закинул его на рабочий стол и в командной строке же указал путь до него. В чем причина такого поведения компилятора?
#218 #1048880
>>1047932
std::endl
Что бы переносимость сходу просрать.
#219 #1048890
>>1048876

> Как это фиксить?


Скачать студию на первых порах
мимо ньюфаг
#220 #1048904
>>1048819

>Откуда 6?


Два раза шифт.
>>1048819

>Что ты имеешь в виду?


На маке - \r, на винде - \r\n. Хотя, там же, вроде ,везде конверсия, так что это неважно.
>>1048876

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


Если ты раньше с командной строкой дела не имел, то проще всего сделать cd до папки с программой и оттуда уже запустить gcc с именем файла без пути.
#221 #1048906
>>1048904

>Два раза шифт.


Ой, точно, не нужен. Занимательные обсуждения в плюсотреде.
#222 #1048913
>>1048814
статический на шаблонах, динамический на вирт функциях, ad hoc через перегрузку функций
3 вида
изи
#223 #1048914
>>1048913
кстати, эти знания никак не помогают мне найти работу и не сдохнуть от голода в будущем
#224 #1048916
>>1048904
Я так и сделал, закинул файл с кодом на рабочий стол и в командной строке прописал путь до него
#225 #1048917
>>1048890
Мне бы сначала cmd освоить, со студией успею разобраться.
#226 #1048920
>>1048876
>>1048917
уже продумал на что будешь жить следующие 10 лет, тк работу на крестах ты никак раньше не найдешь?
богатые родители готовые кормить? может быть крупные суммы в банке, процент с которых позволяет жить? нет?
#227 #1048933
>>1048920
Я плюсы в основном для универа осваиваю. А чтоб деньги были, подамся в бекенд, хоть и не нравится он мне.
#228 #1048936
Как так получается, что стек находится в сегмента стека, куча может занимать хоть всю виртуальную память, стек и куча растут по направлению друг к другу и стек может переполниться?
Сколько места занимает стек и почему он может дорасти до границы кучи?
Где в памяти располагаются стек и куча?
#229 #1048951
>>1048916
Я могу сказать тебе только то, что ты написал его неправильно. Как обойти необходимость в изучении кавычек я уже сказал, ты не послушал.
>>1048936

> стек может переполниться?


Ограничен десятком мегабайт в большинстве популярных ОС. А вообще это не про плюсы вопрос, в стандарте ничего про то, что ты спрашиваешь, нет.
#230 #1048957
>>1048933
те тупи
просто делай все лабы на выбранном тобой языке - явка, js, в общем все что угодно кроме крестов
да, в универе любят на нем лабы давать
но как для специалиста это будет для тебя путь в никуда
#231 #1048966
Напомните, есть ли async/await в последнем стандарте крестов?
#232 #1048967
>>1048904

>На маке - \r


Там же UNIX, разве не \n?
#233 #1048977
>>1048933
Ну и даун, тут в перезвоним-треде один крестовик устроился на работу с зп 250к.
На Java и C# (не говоря уже про PHP и прочее скриптоговно) у тебя таких денег никогда не будет.
А через 5 лет веб-разработки ты забудешь все алгоритмы и даже что означает буква O.
#234 #1048980
>>1048977
Ну тут скорее исключение из правил.
#235 #1049003
Какие особенности возврата класса по ссылке и для чего это нужно?
#236 #1049006
>>1048977

>Ну и даун, тут в перезвоним-треде один крестовик устроился на работу с зп 250к.


Лол, а еще на бейсике работа есть от 80к
https://chelyabinsk.hh.ru/vacancy/21903239?query=basic
Даже в мухосранях типа челябинска! Давайте учить бейсик
Ты про статистическую выборку не слышал?
#237 #1049012
>>1048977

>один крестовик устроился на работу с зп 250к


Чистые кресты никому не нужны, их и так все знают после универа. Нужны специфические узкие знания. Эмбед, драйвера, сетевой стек, потоковое видео - опыт. За это платят. Сферический Александреску в вакууме без знания предметки никому не нужен.
#238 #1049037
>>1048966
Нету.
#239 #1049275
>>1048977

>Ну и даун, тут в перезвоним-треде один крестовик устроился на работу с зп 250к.


Жопа_Хенка.txt
>>1049003

>Какие особенности возврата класса по ссылке


Особенность в том, что, возвращая по ссылке объект на стеке, ты возвращаешь dangling reference.
#240 #1049285
>>1049012

> их и так все знают после универа


Си с классами знают или C++?
#241 #1049306
>>1049006
За 250к вакансий вообще немного, в ДС 5 штук на C++:
https://chelyabinsk.hh.ru/vacancy/22237944?query=c++
https://chelyabinsk.hh.ru/vacancy/22203976?query=c++
https://chelyabinsk.hh.ru/vacancy/22359974?query=c++
https://chelyabinsk.hh.ru/vacancy/22282829?query=c++
https://chelyabinsk.hh.ru/vacancy/22292120?query=c++
За 80к - навалом. Анон не говорил, что полно работы, он утверждал, якобы веб-разработка оплачивается выше, чем проекты на С++, что очевидно не так.

>>1049012
Ясное дело, джуна со знанием STL и Qt на такой оклад не возьмут.
#242 #1049337
>>1049306
Нашел работу на крестах/qt джуном без опыта читай, на работе учил
Работаю уже полгода, зп пока 40к, скоро планируется повышение.
#243 #1049338
>>1049337
заюлы добавить, ДС2
#244 #1049339
>>1049338

>забыл

#245 #1049415
Ребята думаю сделать прогу, которая будет расшифровывать пакеты. Например порт, входящий ip, информация о пакете и тд.
Но мне кажется что такое уже есть и я буду изобретать велосипед. А если нету, то думаете взлетит?
#246 #1049418
>>1049415
Зачем?
#247 #1049420
>>1049415
несомненно! это будет инновационное программное обеспечение, достойное занесения в "Единый реестр российский программ", например
ты, как автор, получишь уважение мирового комьюнити, сможешь организовать стартап, монетизирующий проект, выйти на ipo и с продажи опционов получить доходы, обеспечивающие тебя до глубокой старости!
#248 #1049429
>>1049306
охуенно наверное из обоссаной челябы облизыватся на >250k вакухи в great mockow :D
#249 #1049527
>>1048913
Вот только это не определение
sage #250 #1049532
>>1045411 (OP)
Да, аноны, скажите, что примерно нужно знать ии уметь чтобы вкатиться джуном? Сейчас имею только одну лабу из шараги, там простая база данных в виде дерева, поиск добавление удаление вершин-ветвей. В стль почти ничего не знаю, кроме основных структур, в бусте и подавно.
#251 #1049536
>>1049532
К тёте Васе в бухгалтерию можешь устраиваться уже.
sage #252 #1049538
>>1049536
А зачем там C++?
#253 #1049540
>>1049538
Вот именно.
sage #254 #1049566
>>1049540
Вторая часть моего вопроса состояла в том, что подучить.
#255 #1049590
>>1049566
Учить нужно то, что в конторе будет. Поскольку кресты не нашли себя в какой-то конкретной сфере, подсказать тяжело.
#256 #1049596
>>1049590
Я джуниором хочу стать, должна же быть какая-то общая основа.
Сажа чет прилипла.
#257 #1049598
>>1049596
Нету общей основы.
#258 #1049599
>>1049598
Шаблоны, ООП, какие-то основные механизмы, я про это.
#259 #1049605
Анон, какие есть средства синхронизации в C++ кроме std::mutex? Где там критические секции и семафоры?

Алсо, в STL есть способ синхронизировать потоки без примитивов синхронизации. Что это за способ?
#261 #1049611
>>1049596
какие нахуй джуны на крестах в 2к17
ты че, совсем тю-тю
#262 #1049612
>>1049611
Бля, а как тогда вкатываться в кресты?
186 Кб, 1366x768
#263 #1049620
Анон, как это ебучее окошко output закрепить на днище?
#264 #1049639
>>1049610
Там везде что-то в духе, начальные навыки c++, ни в одной вакансии я не увидел что именно они хотят. Неужели я прямо сейчас могу вписаться джуном?
199 Кб, 1366x768
#265 #1049640
>>1049620
хуяк
#266 #1049652
>>1049639
За еду кем хочешь можно устроиться. Гей-шлюхам ещё платят, я слышал.
Я начинал работать в банке, вакансия что-то вроде такой была:
https://career.ru/vacancy/22470998?query=c++

В основном хранимки на SQL писал, C++/Delphi 50/50. Платили нихуя, только что люди там хорошие работали.

Перекатываюсь на пыху в итоге. Вот такой суксесс стори.
#267 #1049655
>>1049652
Да, я бы в такое вкатился, но не могу 40 часов в неделю пока работать.
#268 #1049661
>>1049418
Затем что иногда это бывает нужным.Хотя функционала уже реализована в вайршаке, в общем хз
>>1049420
Ох(
#269 #1049697
>>1049605
Бамп.
41 Кб, 484x559
#270 #1049717
>>1049697
Там особо ничего такого нет.
http://en.cppreference.com/w/cpp/thread/lock_guard

У винды есть свои реализации.
Ещё есть Boost.Interprocess со всеми нужными тебе структурами и даже больше.
#271 #1049919
>>1049605
std::condition_variable есть как способ заблокировать один или несколько потоков до срабатывания какого-то условия в другом потоке, к примеру. Используется все так же с мьютексом, потому что так надо и во всех системах так.
Критических секций нихуя нету, так что используй мьютекс с std::lock_guard и тебе не придется потом ебаться по поводу того, какого хуя у тебя все залипло в один момент (кинуло исключение, мьютекс залочен и все ... пиздос)
Можешь попробовать неблокирующие методы там используются атомики. Суть, в общем, состоит в том, что треды пытаются в постоянном цикле "захватить" атомарную переременную, записав туда свой идентификатор через compare_exchange, и потом на короткое время выхватить кусок из общего ресурса и высвободить атомарную переменную. Тема хорошая, но не для всего на самом деле. Если собираешься делать какой-нибудь реактор или проактор (на stl хахаха блять, удачки), то лучше пользоваться системными примитивами синхронизациями и condition_variable.
#272 #1049971
>>1049612
Сразу сеньором.
#273 #1049998
>>1048904

>>Откуда 6?


>Два раза шифт.


Для '\n' ни разу шифт нажимать не надо.

>>Что ты имеешь в виду?


>На маке - \r, на винде - \r\n. Хотя, там же, вроде ,везде конверсия, так что это неважно.


Вот именно. std::endl это просто '\n' плюс flush.
Так что чем он портабельнее — непонятно.
#274 #1050042
>>1048904

>На маке - \r


Как там, в 95-м?
#275 #1050044
>>1049620

>const std::string&


>2k17

#276 #1050068
>>1050044
А что ещё делать?
#277 #1050075
>>1050068
писать на JS
#278 #1050164
Ананасы. Поясните мне за биномиальную кучу. Понять нихуя не могу, как там вставляется этот самый единственный элемент.
Вот есть такое описание:
https://rsdn.org/article/submit/heap/heaps.xml#EFBAE

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


Как это работает? Насколько я понял, когда в биномиальную кучу добавляется элемент, он представляется вырожденным случаем биномиального дерева, имеющего только корень. Только вот так если подумать, если сращивать узлы в уже отсортированном порядке, тогда они должны выстроиться в одну длинную цепочку, разве нет?! Что за хуйня?!
#279 #1050175
>>1050068
string_view.
#280 #1050199
У вас есть контейнер кучи? Чтобы можно было например корневой элемент получить, родительский или пару потомков. Без костыля типа make_heap.
#282 #1050202
>>1050201

>http://ru.cppreference.com/w/cpp/container/priority_queue


Он не позволяет во внутренности смотреть. Предка и потомков не узнать.
#283 #1050208
>>1050202
Стандартных реализаций нету. В бусте почти наверняка есть, но не там, где ожидаешь. В Boost.Heap нету кучи с таким функционалом, например.

Можешь в Интернете поискать. Например:
https://gist.github.com/truncs/1810804
#284 #1050262
>>1050175
Его ещё не везде есть
#285 #1050285
>>1050199
В куче же родитель легко находится. Битовый сдвиг вправо на один бит (то есть целочисленное деление на 2) даст тебе индекс родительской ноды.
С потомками сложнее, нужно смотреть смещения, хотя там все подчиняется тому же закону.
#286 #1050307
>>1050175
зачем
#287 #1050310
>>1050175
Иди нахуй, хипстер ебаный. В стандарт завезут, тогда и буду пользоваться
#288 #1050329
>>1050307

Это охуенный класс, быстро, удобно, без копирования!
#289 #1050332
>>1050329
Что нового он дает относительно итераторов?
#290 #1050348
>>1050332

> быстро, удобно

#291 #1050353
>>1050348
А конкретнее?
#292 #1050358
>>1047915
Я как-то хотел лямбда-исчисление на темплейтах сделать, но руки не дошли. Может, на выходных.
#293 #1050368

>все миллионы способов инициализации (value initialization, direct initialization, copy initialization, list initialization, aggregate initialization, reference initialization, default initialization, static initialization, dynamic initialization и наверное ещё куча)


>callable


>r/l/x/gl/pr-values


>SFINAE


>ADL


>Most Vexing Parse


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


>RTTI


>std::allocator


>perfect forwarding, decay и правила переводов референсов на референсы


>даже простые move semantics


Я тут подумал, и понял. Блин, реально сложный язык, в которого понапихано слишком много. Как-то не доходило раньше. Зато джоб секьюрити.
#294 #1050373
>>1050368

>много


>перечислил 5%


>имплаинг в аналогичных языках меньше

#295 #1050384
>>1050373

>аналогичных языках


Это каких
#296 #1050385
>>1050262
Он везде есть, просто нужно проверять __cpp_lib_experimental_string_view или __cpp_lib_string_view и инжектить алиас string_view в std в первом случае. Если совсем старый стандарт — буст/eastl/sgi stl/хуйнянейм все равно тащить придется. Ну или навелосипедить свое, там делов-то на 15 строк.
>>1050310
Дык уже давно.
>>1050307
Это намного быстрее и гибче. Как минимум именно в качестве параметра вместо строки всегда нужно принимать string_view — ибо это простой слайс (поинтер+длинна), и ты полностью контроллируешь аллокации. В твоём текущем коде при передаче вообще чего угодно у тебя будут создаваться временные объекты, которые твой код повторно аллоцирует и копирует. Олсо, для того же нужен emplace_back() у стдшных контейнеров и perfect forwarding (а еще интрузивные контейнеры) но тебе ещё рано, лол.
>>1050332
При чём тут итераторы-то, поехавший?
#297 #1050390
>>1050385

>Как минимум именно в качестве параметра вместо строки всегда нужно принимать string_view — ибо это простой слайс (поинтер+длинна)


Длинна в каких единицах? Давно кресты utf8 поддерживать начали?
#298 #1050391
>>1050368

>>Most Vexing Parse


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


Остальое понятно, но вот это нахуя знать-то?
#299 #1050396
>>1050391

>Most Vexing Parse


Все с этим сталкивались, когда-нибудь написав new T().

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


Да просто так, честно, запэддить лист
#300 #1050400
>>1050390

>Длинна в каких единицах?


В байтах, в чём ещё в плюсах меряют длинну? Просто так уж сложилось что char = 1 байту, и теперь пойди объясни кто тут верблюд.

>Давно кресты utf8 поддерживать начали?


Смотря что ты имеешь в виду.
Если строковые литералы — u8"דיק" ещё в 11-х завезли.
Если просто строки в которые пользователь сможет срать что на иврите, что на китайском — в плюсах, опять же, все измеряется в байтах, так что абсолютно похуй что туда пихать. std::string — обычный вектор с опциональным SSO и рефкаунтом. Другое дело как ты эту хуйню обработаешь.
И нахуя с ты перескочил с невладеющих строк к юникоду — ЯННП.
#301 #1050405
>>1050396

>Все с этим сталкивались, когда-нибудь написав new T()


Я понимаю, что мы живём в 18 веке, у нас медведи по улице ходят, но нет, нихуя.
#302 #1050406
>>1050396

>>Most Vexing Parse


>Все с этим сталкивались, когда-нибудь написав new T()


new T() под это правило как раз не попадает.
#303 #1050426
>>1050400

>В байтах


И нахуя оно тогда нужно? Чтобы работать с данными все равно нужно 3rd party представление. Твоя хуитка поможет только в случае не-nullterminated строк.
#304 #1050429
>>1050426
При чём тут юникод и владеющие и невладеющие строки, поехавший. Ты меня доебал уже блядь. Одна история ахуеннее другой.

Я ему про временные объекты и перформанс, он мне про нуль терминатор, ахуеть теперь.
#305 #1050447
>>1050406
Всмысле T t();
Ну вы поняли.
695 Кб, 720x1863
#306 #1050448
>>1050329
Сразу вспомнился комикс про старый C++.
#307 #1050458
>>1050429

>Я ему про временные объекты и перформанс


Так передавай const wchar_t* size_t
#308 #1050602
>>1050201
А все, допер по поводу биномиальной кучи. Почему-то мне казалось, что деревья там плоские, как в куче, но потом стал рисовать по объяснению и понял, что все слегка иначе.
#309 #1050641
>>1050400

>std::string — обычный вектор с опциональным SSO и рефкаунтом.


Рефкаунт не соответствует стандарту.
#310 #1050674
>>1050458

>Так передавай const wchar_t* size_t


Пиздец просто.
Переменная длина utf8 нас не устраивает значит, а вот переменная длина utf16 это совсем другое дело, да? Не хочу совместимую с ASCII кодирование, хочу использовать windows-only решение. Пиздец ты даун. И да, напоминаю, в юникоде один символ может состоять из нескольких знаков, удачи в ковырянии вилкой всего этого добра.

>>1050426

>Чтобы работать с данными все равно нужно 3rd party представление.


В 95% случаев вся работа заключается в достал-передал дальше. На самом деле, не так часто нужно что-то со строками ручками делать.
57 Кб, 558x492
#311 #1050693
про Qt поясните позязя.

Надо прогу с гуем сделать. Чтение с последовательного порта (виртуального, который с USB, ну да пох), рисование графиков, запись log-файлы и в базу маленько.

Раньше все на дельфи7 делал - на форму мышкой-хуяк-хуяк, компонент нагуглил для com-порта, чтение списка портов с реестра, графики - еще один компонент нагуглил, базы данных - компонент интербейс-коннект и к firebird без установки серверов (портативная версия). Еще и в Excel отчетики если надо. Всё заебись за считанные часы выполняется, всё вместе пять мегабайт.
Но дельфи7 же умер, это ведь говно мамонта 2002 года, без юникода, без антиалиасинга, да и вообще, сейчас опенсорс, кросс-платформа, C++14 и прочая хуйня, к тому же мне уже за 30, и пора бы уже вместо меня в этой шаражке взять малолетнего пиздюка, а они про дельфи и не знают небось.

На да ладно.
Сперва беру C# конечно же. Ну заебись, разобрался мало-мальски, правда в ini-файлы он что-то не умеет. Но сейчас уже 21 век, xml-костыль конечно же есть. Но, ебана, я ведь скачал Community Edition, а все равно регистрацию просит и посылает нахуй, да и при установке так систему засирает, что не по себе становится.

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

Итак, беру труЪ-опенсорсный CodeLite, wxWidget, ну потрахался (какой же там уебищный GUI-дизайнер), последовательный порт через WinAPI, всё, сука, в ручную, автоподставновка через раз работает, как графики добавить, так и не понял. Хуита какая-то. Сколько гуглишь - На форумах древнее говно мамонта. Стопицот костылей, ничего простого. Либо не рисует, либо криво, либо не понять как ставить на эту версию.
Еще напрягает, что установка wxWidget охуеть долгая - библиотеку то компилить надо.
Радует хоть, что приложение статически собирается и весит мегайбат 7.

Дальше вот нагуглил, все нормальные пацаны обоссали этот wxWidget и делают на Qt.
Окей, качаю последний, 5.9.1 версия.
Гуй-дизайнер заебись, редактор кода заебись, сразу есть компоненты последовательно порта и графики, которые через жопу, но вполне юзабельно. Как перенести на другой комп? О_о Ладно есть там windeployqt приблуда. Вот она мне копирнула 45 мб библиотек, кучку из 23 штук (минус папку translations) епта. Да и то три штуки пропустила (которые к mingw). На вин10 работает, на вин7 работает, а на винХР не работает, ёбана. Да, вы тут все модные продвинуетые, на core i7 и прочее. А у меня в цехе несколько десятков компов и обновлять винду там нельзя, т.к. к ним идет оборудования забугорного на миллионы денег и, вообще блядь, лучше не там ничего трогать.

Что-то про статическую сборку пишут. Типа и DLL все в исполняемом файле - так то охуеть конечно, екзешник на писят метров, но зато, должно тогда на winXP запуститься.
Третий день читаю форумы - всюду есть тема про старые версии Qt, а про 5.9 нихера. И так пробую, и так - на выходе какие-то компиляции целый час, а толку все равно нет - в сборках пишешь, а оно не работает. Какого хуя это не из коробки? Зачем я должен пердолится с этим?
57 Кб, 558x492
#311 #1050693
про Qt поясните позязя.

Надо прогу с гуем сделать. Чтение с последовательного порта (виртуального, который с USB, ну да пох), рисование графиков, запись log-файлы и в базу маленько.

Раньше все на дельфи7 делал - на форму мышкой-хуяк-хуяк, компонент нагуглил для com-порта, чтение списка портов с реестра, графики - еще один компонент нагуглил, базы данных - компонент интербейс-коннект и к firebird без установки серверов (портативная версия). Еще и в Excel отчетики если надо. Всё заебись за считанные часы выполняется, всё вместе пять мегабайт.
Но дельфи7 же умер, это ведь говно мамонта 2002 года, без юникода, без антиалиасинга, да и вообще, сейчас опенсорс, кросс-платформа, C++14 и прочая хуйня, к тому же мне уже за 30, и пора бы уже вместо меня в этой шаражке взять малолетнего пиздюка, а они про дельфи и не знают небось.

На да ладно.
Сперва беру C# конечно же. Ну заебись, разобрался мало-мальски, правда в ini-файлы он что-то не умеет. Но сейчас уже 21 век, xml-костыль конечно же есть. Но, ебана, я ведь скачал Community Edition, а все равно регистрацию просит и посылает нахуй, да и при установке так систему засирает, что не по себе становится.

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

Итак, беру труЪ-опенсорсный CodeLite, wxWidget, ну потрахался (какой же там уебищный GUI-дизайнер), последовательный порт через WinAPI, всё, сука, в ручную, автоподставновка через раз работает, как графики добавить, так и не понял. Хуита какая-то. Сколько гуглишь - На форумах древнее говно мамонта. Стопицот костылей, ничего простого. Либо не рисует, либо криво, либо не понять как ставить на эту версию.
Еще напрягает, что установка wxWidget охуеть долгая - библиотеку то компилить надо.
Радует хоть, что приложение статически собирается и весит мегайбат 7.

Дальше вот нагуглил, все нормальные пацаны обоссали этот wxWidget и делают на Qt.
Окей, качаю последний, 5.9.1 версия.
Гуй-дизайнер заебись, редактор кода заебись, сразу есть компоненты последовательно порта и графики, которые через жопу, но вполне юзабельно. Как перенести на другой комп? О_о Ладно есть там windeployqt приблуда. Вот она мне копирнула 45 мб библиотек, кучку из 23 штук (минус папку translations) епта. Да и то три штуки пропустила (которые к mingw). На вин10 работает, на вин7 работает, а на винХР не работает, ёбана. Да, вы тут все модные продвинуетые, на core i7 и прочее. А у меня в цехе несколько десятков компов и обновлять винду там нельзя, т.к. к ним идет оборудования забугорного на миллионы денег и, вообще блядь, лучше не там ничего трогать.

Что-то про статическую сборку пишут. Типа и DLL все в исполняемом файле - так то охуеть конечно, екзешник на писят метров, но зато, должно тогда на winXP запуститься.
Третий день читаю форумы - всюду есть тема про старые версии Qt, а про 5.9 нихера. И так пробую, и так - на выходе какие-то компиляции целый час, а толку все равно нет - в сборках пишешь, а оно не работает. Какого хуя это не из коробки? Зачем я должен пердолится с этим?
#312 #1050701
>>1050693

>Зачем я должен пердолится с этим?


Любители ХР должны страдать, да...
В новых студиях для компиляции под ХР у компилятора отдельный тулсет есть. Если используешь другой компилятор - хз, попробуй настройки потеребить, может там тоже есть отдельная опция для этого.
Еще один вариант, взять dependency walker и просто посмотреть чего бинарнику не хватает под ХР.
#313 #1050702
>>1050641
Как и SSO, только вот его ещё не везде выпилили, лол.
#314 #1050718
>>1050693
статическая сборка +10мб к твоему хеловорду, ужмешь upx до 5мб. орну в голосину, если xp у тебя 32битный, а собирал под 64.
#315 #1050721
>>1050693

>Community Edition, а все равно регистрацию просит


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

>CodeLite


Он немного забагованный, хоть в целом и работоспособен.

> Как перенести на другой комп?


Скомпилировать статически. Согласно LGPL ты можешь это сделать, тебе лишь нужно распространять вместе с программой объектные файлы и инструкцию о компиляции.
Работа на XP связана не с видом компиляции - статика или нет. Если ты заюзаешь несовместимую функцию, у тебя не либа не подгрузится, а экзешник целиком, или баг где-то вылезет. Чтобы XP поддержать, тебе нужна какая-нибудь полубородатая версия. Последняя версия для висты - 5.6.2, например.
https://wiki.qt.io/PlatformSupport
И КСТАТИ, ты можешь поставить этот 5.5.* и последний кутыкреактор, и оно будет работать.
>>1050701

>Еще один вариант, взять dependency walker и просто посмотреть чего бинарнику не хватает под ХР.


Бинарнику под XP не хватает того, что Qt Oy не тестила Qt под XP, импортов не хватает и прочее.
#316 #1050727
>>1050674

>Пиздец просто.


Ебаный дебил, замени на свою любимый char, но смысл ты понял. Нахуй разводить этот троллинг тупостью? пиздец wchar_t у него windows-only, передавай бате что надо было юзать гандоны

>В 95% случаев вся работа заключается в достал-передал дальше.


Ты просто нахуй конченный. Как и вся та орда дебилов которая тащит свое говно в стандарт, уже собрались CGI и curses тащить, ага блять.

мимоаллигатор
#317 #1050760
>>1050727

>пиздец wchar_t у него windows-only


А что это не так? Или может быть есть какие-то достоинства использования UTF16 не на windows? С удовольствием послушаю эти охуительные истории
>>1050727

>Ты просто нахуй конченный.


Ты членораздельно можешь сказать с чем ты не согласен? Нахуя тебе отдельные символы? Что ты с ними собрался делать?

>Как и вся та орда дебилов которая тащит свое говно в стандарт, уже собрались CGI и curses тащить, ага блять.


В стандарт ничего не тащат - попопок хуевая стандартная библиотека, ни как в дотнете/жабе, покпокпок, могли бы и в стандарт добавить либу чтобы жопу вытирала/окошки рисовала, покпокпок
В стандарт добавляют новые либы - покпокпок, они что поехали все это в стандарт тащить, горшочек не вари, спасите-помогите, убивают.
Полностью с тобой согласен, братишка, ТОЛЬКО ПРОИГРАЛИ
#318 #1050767
>>1050760

>UTF16


>wchar_t


Охуительные истории.

>Нахуя тебе отдельные символы?


Ну я блять даже не знаю нахуй как тебе и объяснить. Это походу особый клинический случай. Если тебе символы не нужны таскай все в voidptr.

все тот же аллигатор
#319 #1050788
>>1050693
Хули ты не смог то там. Для твоего случая, хватит с лихвой WxWidgets или fltk какой. Если ты не хочешь тянуть всего мамонта в лице Qt, придется тебе использовать эти либы.
Естественно, нужно хотя бы понимать, как устроен интерфейс. Ведь по сути, генератор форм Qt на выхлопе делает класс виджета с набором объектов, ничего больше. Таким же образом и ты должен создать гуй.
Если ты не понимешь ООП и что из себя представляет окно или форма, то тебе надо возвращаться в свой делфи, чтобы там мышкой программировать или все же осилить как создавать виды.
#320 #1050853
Как ответить на вопрос "в чем самая суть полиморфизма"?
Я сказал вот что:
- про реализацию различного поведения одной и той же функции у обектов разных типов
- про удобство работы с иерархией классов через указатель или ссылку на базовый класс
- про рефакторинг: замена условной логики полиморфизмом

Но оказалось, что я не сказал самую СУТЬ.
#321 #1050859
>>1050693
Не связывайся со статической линковкой, для проворачивания этого фокуса кьют понадобится собирать руками.
#322 #1050860
>>1050859
Так, падажжи, но вот у меня стоит Qt из установщика, внутри либы, что не так?
#323 #1050863
>>1050693
И еще, тебя ждет веселье со старыми дровами для твоего драйвера виртуального порта. Когда я работал с CP2101 пришлось специально для ХР отключать автоопределение подключения через винапишные сигналы, глючило дико. Особенно мне нравилось выскакивающее окошко "Устройство не готово; Открыта дверца" при отсоединении кабеля. Кстати, делал такие штуки и на .NET, и на Qt, на первом больше гемора с портом было.
#324 #1050866
>>1050860
Статически они не слинкуются. Для этого тебе понадобится скачать сорцы, вызвать configure со --static и собрать. Ман http://doc.qt.io/qt-5/windows-deployment.html говорит, что держать две версии в одном месте одновременно не выйдет.
#325 #1050871
>>1050866
Только за коммерческую копию кути заплатить не забудь, статическая линковка это тебе не хуй собачий.
#326 #1050904
>>1050702

>Как и SSO


Схера ли это?
#327 #1050925
>>1050871
Qt под LGPL, а LGPL позволяет линковаться статически и распространять только объектные файлы, без сорцев.
https://www.gnu.org/licenses/gpl-faq.en.html#LGPLStaticVsDynamic
#328 #1050931
>>1050925
Зайди на сайт кути и прочитай условия. Она бесплатна пока юзер может выковырять и поменять её исполняемые файлы, что при статической линковке без исходников не очень хорошо получается.
>>1050904
В одном из прошлых тредов даже кидали выдержку из стандарта, поищи.
#329 #1050937
>>1050931

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


Сто раз обсосано на форуме qt.io, линковать статически и распространять объектники МОЖНО.
#330 #1050938
>>1050937

>Сто раз обсосано на форуме qt.io


Пруфы где?
#331 #1050943
>>1050931

>Зайди на сайт кути и прочитай условия.


Как действует LGPL определяют не Qt-шники.

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


Для линковки с другой версией библиотеки достаточно распространять только объектные файлы.
#332 #1050944
>>1050931

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


Ты скозал — ты тащи пруфы.
#333 #1050968
>>1050853
Бамп.
#334 #1050976
>>1050968
Что ты хочешь услышать? Это философский вопрос на который есть тысячи ответов и все правильные.
#335 #1051002
>>1050944
Тебе интересно — ты и ищи их, мне чота влом.

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

>>1050853
Скажи интервьюеру что он абстрактный пидарас, либо просто ответь что это дохуя гибко. Что это значит — пусть сам думает с такими вопросами.
#336 #1051024
>>1051002

>Тебе интересно — ты и ищи их, мне чота влом.


В общем, слив защитан.

>Линковаться статически чтобы тащить с собой


Ничего тащить с собой не надо. GPL не заставляет распространять исходники с программой, а только предъявлять их по требованию (высылать диск с ними или ссылку давать на то, где они лежат). LGPL, думаю, так же.
А ценно или бесценно — похуй, главное ясно, что для статической линковки коммерческая лицензия на Qt не обязательна.
#337 #1051025
>>1050853
Ты всё о динамическом полиморфизме, подумай о статическом.
Полиморфизм - инструмент единоразового описания алгоритмов в отрыве от конкретных применений.
#338 #1051026
>>1051025
Меня спрашивают про динамический.
#339 #1051040
>>1051024

>В общем, слив защитан.


С такой логикой ты это, давай или откопай параграф стандарта, где обязуют гарантировать sso.
#340 #1051044
>>1051040
При чём тут обязуют, дебил?
#341 #1051045
>>1051044
Давай-ка для начала прочитай сообщение на которое триггернулся.
#342 #1051050
>>1051045
Дебил, ты покажешь, где SSO не соответствует стандарту, наконец?
#343 #1051053
>>1051050
>>1051045
>>1051044
Не знаю в чем суть вашей спецолимпиады, но очевидно:

>Every object of type basic_string<charT,


traits, Allocator> shall use an object of type Allocator to allocate and free storage for the contained
charT objects as needed. The Allocator object used shall be obtained as described in 23.2.1.

Использование статически аллоцированного объекта для оптимизации нарушает гарантию выделения всех строк в переданном аллокаторе.
#344 #1051056
>>1051053

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



Неуважаемый дебил №2, про "всех" там ни слова не написано. Там написано "as needed". Перевод сам найдёшь или тебе принести?
#345 #1051059
>>1051056

>Every object of type basic_string<charT,


traits, Allocator shall use an object of type Allocator to allocate and free storage

Передай своей учительнице английского что она падшая женщина.
#346 #1051061
Да, сорри, я наверно слишком сложно для тебя написал, давай по проще, трактуется это так: не может существовать такого объекта std::string данные которого не находятся в пуле предоставленного аллокатора.
#347 #1051062
>>1051061
Там такого не написано, не пизди.
Написано, что аллокатором нужно выделять память при необходимости (as needed). Пока необходимости нет — выделять не надо.
#348 #1051063
>>1051062
Я же тебе жирным выделил что every, shall use. Если у объекта есть данные во владении - они needed. Зачем ты продолжаешь защищать свою ошибку?
#349 #1051065
>>1051063

>Я же тебе жирным выделил что every, shall use.


Ну да, каждый basic_string<charT, traits, Allocator> должен использовать аллокатор для выделения и освобождения памяти для charT, при необходимости.

Про "для выделения всех строк", как ты написал в >>1051053 , там не написано. Единственное слово, которое можно было бы перевести как "все" это Every, но оно переводится здесь как "каждый" и относится к объектам типа basic_string<...>, а не к хранимым в них charT.

> Если у объекта есть данные во владении - они needed. Зачем ты продолжаешь защищать свою ошибку?



Зачем ты продолжаешь вырывать фразы и слова из контекста и фантазировать? Написано, что память надо выделять при необходимости (as needed). А не то, что хранимые charT внутри needed.
#350 #1051066
>>1051065

>но оно переводится здесь как "каждый"


Да даже если ты переведёшь как "Все объекты типа basic_string<...>", то по-прежнему "все" будет относиться к basic_string<...>, а не к хранимым там charT.
#351 #1051067
>>1051066
Естественно, относится к basic_string, которые должны по требованию должны выделять пул предоставленным аллокатором.

А, возможно ты не очень понимаешь какой мета контекст у аллокатора в стандарте:

Containers are objects that store other objects. They control allocation and deallocation of these objects
through constructors, destructors, insert and erase operations.

For the components affected by this subclause that declare an allocator_type, objects stored in these
components shall be constructed using the allocator_traits<allocator_type>::construct function and
destroyed using the allocator_traits<allocator_type>::destroy function (20.8.8.2). These functions
are called only for the container’s element type, not for internal types used by the container. [ Note: This
means, for example, that a node-based container might need to construct nodes containing aligned buffers
and call construct to place the element into the buffer. — end note ]

Unless otherwise specified, all containers defined in this clause obtain memory using an allocator

Попробуй воспринять в этом контексте то что тебе пытались выше объяснить, возможно ты поймешь.
46 Кб, 637x380
#352 #1051070
>>1051067
В процитированном тобой [container.requirements.general]/3 говорится про construct и destroy. Что-то запрещает делать construct и destroy в SSO-буфере?

> Unless otherwise specified, all containers defined in this clause obtain memory using an allocator



Список "all containers defined in this clause" прикладываю картинкой. Да даже если бы <string> сюда относился, то тут написано, что получать память нужно с использованием аллокатора. Использовать память внутри объекта это никак не запрещает.

> Попробуй воспринять в этом контексте то что тебе пытались выше объяснить



Не собираюсь воспринимать <string> в контексте, который к <string> не относится.
#353 #1051071
>>1051070

>Не собираюсь воспринимать <string> в контексте, который к <string> не относится.


Твои проблемы. Сколько я понимаю выше по треду ты спрашивал почему нет SSO в мейнстримных имплементациях, пусть останется тайной лол.
#354 #1051072
>>1051070
Алсо, чтобы у тебя еще остался шанс:

>The Allocator object used shall be obtained as described in 23.2.1.


Строка не является контейнером (наркоманы, лол), но во всех своих аспектах ссылается на клаузы контейнеров.
#355 #1051074
>>1051071

>>Не собираюсь воспринимать <string> в контексте, который к <string> не относится.


>Твои проблемы.


Да нет, твои. Это ты полез тыкать меня в правила, которые относятся к контейнерам в таблице. Где нет <string>.

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


Лолчто? В libstdc++ (GCC) SSO, в libc++ (clang) SSO, в MSVC SSO.

>>1051072

>Строка не является контейнером (наркоманы, лол), но во всех своих аспектах ссылается на клаузы контейнеров.


Где необходимо — пусть ссылается. Главное, что глава Containers не ссылается на <string> в таблице контейнеров.
#356 #1051088
Java боярин itt. Поясните за статический анализ кода на c++, почему в различных ide для c++ нет таких же мощных анализатор как для java/c#? Что думаете насчёт rust?
#357 #1051106
>>1051088
Так кучи же их, начиная от clang tidy и cppcheck до PVS. Кстати, о каких различных IDE ты говоришь, небось об Idea и VS, так первые с давних времен свою IDE под жабу пилили, так что времени добавить анализатор было предостаточно, а вторые делает майкрософт, который и создавал язык c#, так что неудивительно, что поддержка этого и там есть. А что ты хотел услышать?!
#358 #1051124
>>1051088

Потомучто анализировать шаблонный а\параметр шаблона - увлекательное занятие без концептов
#359 #1051131
>>1051088

>статический анализ кода


При чем тут он?
#360 #1051236
>>1051106
Я пробовал CLion для hello world. Так вот, анализатор там пиздец какой скудный. После java - будто перекрыли кислород.
#361 #1051242
>>1051088

>Что думаете насчёт rust?


Там вообще никаких иде нет.
Может быть жетбраинс когда нибудь выпустит свою иде для него, если он взлетит
#362 #1051244
>>1051242
Плагин есть.
#363 #1051248
>>1051244
Плагин != иде.
Вот когда полноценную иде выпустят, тогда и поговорим.
#364 #1051282
>>1051236
Свой там слабенький да. clang tidy тоже не очень, нужно по коду гонять сторонними утилитами, заточенными специально под это дело, если уж на то пошло.
#365 #1051381
>>1050938
В пизде, уёбок.
https://forum.qt.io/search?term=lgpl static linking&in=posts&sortBy=relevance&sortDirection=&showAs=posts
>>1051063

>Если у объекта есть данные во владении - они needed.


Какой упёртый! Если данные можно разместить в объекте, то выделение памяти не needed.
>>1051070

>Что-то запрещает делать construct и destroy в SSO-буфере?


Какбе объект сам-то знает о том, что строка в нём находится. Это всего лишь деталь реализации, а не гарантированный UB.
>>1051088

>Поясните за статический анализ кода на c++


Часть задач анализатора выполняется компилятором и стандартом языка.
#366 #1051395
>>1051248
Эм. Та же андроид студия - просто набор плагинов. Что изменится если запилить standalone-сборку с Rust-плагином?
И как раз в начале августа JetBrains объявила официальную поддержку Rust-плагина (до этого это был типа pet-проект пары чуваков из JB).
#367 #1051434
Как собрать статическую библиотеку pdcurses при помощи VS2015? Запускаю nmake -f vcwin32.mak и нихуя: nmake не найден. В переменной окружения прописываю путь к nmake, но теперь при компиляции не найдены заголовочники. Редактирую makefile и прописываю пути к папкам include, однако теперь не находится stddef.h. Что за хуйня?
#368 #1051533
>>1051381

>Если данные можно разместить в объекте, то выделение памяти не needed.


В приличных языках за такое ебут раскаленной кочергой пока до кукаретеков не дойдет. Но это кресты, тут всем похуй лол, на фоне общего пиздеца никто и не заметит.
#369 #1051651
>>1050853
Ну, я не знаю. Оно мокируется и это можно тестить? Кто-то юнит-тестит плюсные проекты?
39 Кб, 1280x720
#370 #1051654
>>1051124

>без концептов


Концепты когда
51 Кб, 341x550
#371 #1051656
>>1051434
Нужно открыть консоль через ярлык в папке студии, он туда все пути загонит.
#372 #1051735
Как из под линукса задеплоить экзешник через g++?
#373 #1052047
>>1051735
Там mingw тулчейн должен быть. Все, дальше сам. Надеюсь про CFLAGS, CXXFLAGS, CC, CXX, LDFLAGS ты уже знаешь
#375 #1052127
>>1051654
Стандарте так в 23-м или 26-м.

>>1051651

>Кто-то юнит-тестит плюсные проекты?


Да все. Это же такая бюджетная защита от дебила, и кодревьюить надо втрижды меньше.
#376 #1052135
>>1051248
Лолшто? Иди посмотри на плагин для какой нибудь скалы или котлина — там фич больше чем для шарпа у какой нибудь студии, без шюток. И вообще открой, сука, доку по архитектуре идеи — это одна большая платформа для плагинов, в которой даже жаву уже вынесли в плагин, что как бы намекает.

Отдельные иде они выпускают только когда есть конторы которые будут закупать лицензии сотнями и тысячами, чтобы потом выпускать мажорные релизы по 3 раза в год и предлагать обновлять лицензии с 20% скидкой как они это регулярно делают, эти же похуеитрожопее челиков из PVS.
#377 #1052152
>>1052127

>Стандарте так в 23-м или 26-м.


Из драфта 20-го их уже удалили? Ведь только что добавили.
#378 #1052168
>>1052152
Нету ещё никакого драфта 20-го стандарта, коммитет только 17-й закончил. Есть кучка пропозалов которые хуй знает ещё сколько мусолить будут.

Они там пол века решают экспортировать макросы или нет, дальше сам можешь закончить мою прошлую мысль.
23 Кб, 741x95
#379 #1052170
>>1052168

>Нету ещё никакого драфта 20-го стандарта


?!
#380 #1052182
>>1052170
Лол, скинь ссылку.
Недавно же только финальное собрание коммитета было и принятие 17-х плюсов.

Хотя энивей — даже наличие в драфте ничего не меняет.
#382 #1052300
>>1052047
Благодарю
#383 #1052442
>>1051533
Это называется "абстракция". У объекта есть члены и аллокатор, а что он с ними делает - тебя ебать не должно, если ты не опираешься на UB и ID.
#384 #1052571
Двач, есть ли тут такие-же говноеды как я и знает ли кто как в gdb параше посмотреть значение глобальной переменной?
#385 #1052636
>>1045411 (OP)
Решил чуть чуть подкопнуть в сторону ассемблера, чтобы более менее понять как работают функции. Хотел спросить, указатель из записи стека ( второе имя для кадра стека ) и base pointer это одно и тоже?
#386 #1052985
>>1045411 (OP)
Посоветуйте на ведро ньюфагу чтобы код писать, можно даже без компиляции наверное, главное чтобы подсветка была.
Мне бы на досуге код писать, а не капчи вводить, или это плохая затея?
Ведро 4.4, рут есть
#387 #1053000
>>1052571
pochemu ty takoy ueban i ne mozhesh poogoogleet'?

> filename.cpp


int x; // global'naya peremennaya, obyavlennaya v filerelated

> p 'filename.cpp'::x

#388 #1053045
>>1052442

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


>абстракция, пацаны, вы че)))

#389 #1053175
>>1053045
зачем тебе нужны примерные размеры твоих объектов? тебе нужны размеры объектов - объектов, или размер данных которые он попросил у аллокатора?

что не так с needed? про small string optimization не слышали? или если строчка пустая, то она всё-равно должна выделить ровно 1 байт под зиротерминатор?
#390 #1053206
>>1052985
фгугл
олсо ideone.com и куча других.
>>1053045
Погуглил за тебя.
https://stackoverflow.com/questions/21694302/what-are-the-mechanics-of-short-string-optimization-in-libc
#391 #1053229
>>1053206
Спасибо за пруф, никогда не думал что в крестах все настолько хуево.

мимо-си-боярин
#392 #1053237
>>1053175
Ну, давай рассмотрим типовую задачу которая обычная успешная крестомакака может пилить, если она не QT-говноед. Есть очередная биткоин/хуеин или просто биржа где-нибудь в штатах и ты галеришь для нее бек. Тебе надо обеспечить защиту строковых данных от любой коррупции памяти, переполнения и прочего, при условии что ты ее отдаешь в третьи руки, возможно даже в объектник, или того хуже интерпретатор другого языка. Расскажи мне как ты это сделаешь без строкового пула.
#393 #1053252
>>1053237
Велосипедить ¯ \ _ (ツ) _ / ¯.
Или std::string должна решать вообще все задачи, которые только могут быть в мире?
#394 #1053254
>>1053252
А какие вообще задачи ты решаешь с помощью std::string в таком случае? Моя задача более чем типовая судя по StackOverflow и собственному опыту, лол. Мне казалось что кроме обработки данных на крестах/сях писать что-либо уже настолько моветон что и проектов таких нет.
#395 #1053275
>>1053254
Ну, std::string s;
std::cin >> s;
std::cout << "Hello " << s << std::endl;
например)
#396 #1053281
Куда идти за туториалом, чтобы сделать так, чтобы компьютер печатал сам текст? То есть сам нажимал кнопки и шиндоус реагировал.
#397 #1053284
>>1053237
Никакой метод std::string не предусматривает то, что тебе нужно знать про SSO. Задачку рассмотрели, ты опять соснул.
>>1053281

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


Какой ты мимимишный, абрикосик прям.
#398 #1053286
>>1053284
Ты на стартап то ( >>1053275 ) инвесторов уже нашел? Первое сентября скоро, можешь не успеть!
#399 #1053288
>>1053284
>>1053281
Ок, уже загуглил keybd_event(Буква, 0,0,0);
#400 #1053294
>>1053286
на кикстартере уже $0,3 собрал!
#401 #1053316
>>1053286
SSO абсолютно прозрачна и соответствует стандарту. Если ты можешь найти пример использования string без UB и ID, в котором SSO что-то ломает - заноси.
#402 #1053445
>>1053229
Сибоярин хоть когда-нибудь смотрел на вывод компилятора в ассмблере и все те охуительные трюки, которые используются для ускорения программ на C? SSO - это название техники, которую применяют компиляторы, и тебе, как пользователю языка, ВООБЩЕ похуй на неё.
#403 #1053456
>>1053237
Блять, неужели даже коррапт стека не так критичен, как коррапт памяти в которой лежат строчки?
#404 #1053457
>>1053445
Да, я замечал такую хуйню что нонешним макакам вообще на всё похуй. Потом полны треды жопной боли что опять дали пинка под зад.
#405 #1053459
>>1053445

>SSO - это название техники, которую применяют компиляторы


Ты совсем долбоёб или прикалываешься?
#406 #1053467
>>1053254

>Моя задача более чем типовая судя по StackOverflow и собственному опыту, лол.


Охотно тебе верю. А у тех кто программирует графику совсем другие типовые задачи. И у тех кто драйвера для железок. И у тех кто UI. В каждой предметной области есть свои типовые задачи. Какой сюрприз да? Твоя ошибка в том что ты свой опыт распостраняешь на всю индустрию. Это во-первых.
Во-вторых, какай у языка лозунг? Не платишь за то что не используешь. Так почему все должны отказаться от удобной оптимизации ради тебя?
Ну и в-третьих, даже в твоем случае, это нужно только для части строк, так ведь? Т.Е. по хорошему для часть строк - свой самописный класс с пулом. А другая часть стандартная которой все это не нужно, и которая работает быстрее благодаря SSO.
#407 #1053471
>>1053456
Все критично, вообще любое повреждение данных. И тебе надо об этом орать в общую шину, что макака сидящая дальше данные портит, иначе тебе пиздец.

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

>>1053467
Нет, не для части - для всех. Кстати из всех кого ты перечислил работать с пользовательскими строковыми данными будут и только в дебаге... а хуй знает, может игроделы, в теории, но это должна быть какая то совсем уж унылая шарага где такие вещи в ресурсах не хронятся.
#408 #1053491
>>1053457
КОНЕЧНО ЖЕ ты можешь показать пример того, как SSO приводит к ошибке в программе, не использующей UB и ID, верно?
>>1053459
Сделай утверждение, правильность которого можно проверить, не задавай мне пустые вопросы. Слабо?
#409 #1053498
>>1053491

>ты совсем долбоеб


>не задавай мне тупые вопросы!!!!


Ебать у вас тут весело, давно я в тематике так не проигрывал.
#410 #1053501
>>1053491
Ок, видимо, ты долбоёб.

"SSO применяют компиляторы" — надо же такую хуйню сказануть.
#411 #1053511
>>1053491

>ID


Это что за покемон?
#412 #1053644
>>1053511
Implementation Defined (behaviour)
#413 #1053961
Привет анон я дотянул конца за яйца лабы до конца лета и у меня наебнулся ноут, нет возможности поставить VS
Анон предлагаю 2000 рублей за 2лабы и 1 игру C++/CLI ООП.
Вот сами задания:
-------------------
1. Разработать класс «Множество» на основе массива с полной системой функций, включая интерфейсную функцию просмотра содержимого множества.
2. Используя множество как структуру хранения данных, решить прикладную задачу.
Дана последовательность символов. Сформировать множество, представляющее собой частотный алфавит указанной последовательности.
---------------------------------------------------
Прикладная задача (использовать хэш-таблицы)
Кот Матроскин владеет стадом коров, а также организовал производство молока, сметаны, творога, масла. Ежедневно он учитывает дневной сбыт каждого вида продукции, причем цены товара у Матроскина могут изменяться, и цены ему приходится тоже ежедневно записывать.
В конце месяца необходимо подвести итог по результатам торговли, чтобы выяснить, какая продукция пользуется наибольшим и наименьшим спросом, а также какая продукция приносит наибольшую и наименьшую прибыль.
В конце года необходимо решить ту же задачу для подведения итогов года.
Задание
1. Разработать сущности для сохранения необходимой информации, реализовать необходимые методы.
2. Организовать список записей на основе одного из контейнерных типов Net.Framework, реализовать интерфейс для добавления и отображения записей. Сохранить список в текстовом файле.
3. Реализовать интерфейс для ежедневного ввода данных.
Реализовать механизм подведения итогов и вывод результатов, результаты сохранить в текстовом файле
--------------------------
Написать программу — игру тренажер клавиатуры «Гонки за хвостом».
С нормальным ООП, использовать структуры данных

Кто у умеет писать хороший код на c++/cli и хочет заработать пишите в телегу @totlds
нужно как можно быстрее, дедлайн 2 сентября.
#414 #1053969
>>1053961

> c++/cli


>2 к


10к за все и поговорим.
#415 #1053993
>>1053961

>«Гонки за хвостом»


Гугл не знает, что это.
#416 #1054021
>>1053961
Тебе рановато отсылать тестовые задания, когда ты даже нихуя не понимаешь о чём пишешь.
#417 #1054119
>>1053961

>c++/cli


Найс лабы, где учишься?
#418 #1054280
>>1053501
STL в большнистве случаев специфична для компилятора, и на совместимость ABI сгружены болты. Да, я назвал оптимизацию, которая должна быть частью STL, оптимизацией компилятора, я жестоко ошибся. Да, ты долбоёб.
>>1053961

> c++/cli


Нахуй и в пизду.
#419 #1054290
>>1054280
Обосрался — обтекай.
#420 #1054333
>>1053961
Никто это говно за 2к делать не будет, это смешно.
#421 #1054387
Что за унылый тред? Хоть бы за memory model посрались.
#422 #1054457
>>1053961
За 2к ты можешь купить час моего внерабочего времени. За этот час, ты не сможешь даже описать чего именно от тебя хотят. Потому что хуйня вроде "гонки за хвостом" - какая-то местечковая параша в голове твоего препода.
#423 #1054465
>>1054387
Зачем это в треде понимает 1.5 человека, еще 1.5 делает вид что понимает итого выйдет унылый срач полный маняфантазий.
#424 #1054569
>>1054465

>это в треде понимает 1.5 человека


Почему? Это же база.
#425 #1054571
А знаете, что я заметил
В остальных тредах прикладные задачи решают, а в этом в основном борятся с языком и проблемами с памятью
#426 #1054629
>>1054571
Ну всё правильно. Ведь кресты - язык без задач.
88 Кб, 900x900
#427 #1054647
Ананасы, помоите советом.
Мне надо написать GUI с ползунком, значение с этого ползунка будут передаваться в консоль игры.
нужно, чтобы эта хуйня была в форме экзешника, и при запуске экзешника запускался еще и экзешник игры.
Какую либу использовать для гуи, как замутить экзешник? Не обоссывайте, суки
#428 #1054671
>>1054629

> Ведь кресты - язык без задач.


ты хотел сказать что пад него нет специально выдуманных задач, как для других языкоф
#429 #1054726
>>1054647
Я знаю, как сделать это в Qt. Как сделать ползунок - сам догадаешься, а как передать:
http://doc.qt.io/qt-5/qprocess.html#communicating-via-channels
http://doc.qt.io/qt-5/qprocess.html#setInputChannelMode
http://doc.qt.io/qt-5/qprocess.html#writeData
Олсо, там традиционно есть еботня с текстовыми кодировками - нужно писать в той же кодировке, в которой читает программа. Самый простой способ сделать это - не менять локаль ни в одной программе, ни в другой.

Либо, если игре не нужно принимать текстовые команды вообще, ты можешь поменять режим записи и чтения на бинарный в обоих программах (чтобы \r и \n никогда нигде не конвертировалось) и писать числа по какому-нибудь простому протоколу:
https://stackoverflow.com/questions/1598985/c-read-binary-stdin
cin и cout получают свои данные через stdin и stdout, поэтому нужно поменять режим в stdin и stdout. Читать из cin надо с помощью cin.read(), писать - с помощью cout.write(), использовать sizeof() в обоих случаях.
>>1054387
http://en.cppreference.com/w/cpp/language/memory_model
Прочитал. Зачем сраться? Есть модель памяти, которой все придерживаются, и модель параллельного взаимодействия, применение которой минимизирует оверхед, не вижу никакой проблемы в этом. Есть задачи, в которых это неоптимально?
#430 #1054895
>>1054726

>Прочитал. Зачем сраться?


Я имел в виду срач не о самой модели памяти, а о том, чтобы пришёл какой-нибудь ньюфаг с её непониманием и начал молоть ерунду. Было бы весело покормить его г-ном.
#431 #1054918
>>1054895
зачем в std контейнерах потокобезопасность? почему нельзя сказать "если вы std string в разных потоках используете, это UB, если вы в потоках используете atomic<string> то всё ок"?
#432 #1054921
>>1054918
Ты типа решил нарочно прикинуться тупым ньюфагом? Нарочно — это не интересно.
#433 #1054923
>>1054918

>> если вы в потоках используете atomic<string>


>> atomic<string>


Приехали...
#434 #1054928
>>1054918

>atomic<string>


>std::atomic may be instantiated with any TriviallyCopyable type T:

#435 #1054930
>>1054928
Как-то этот may be слишком неуверенно звучит. Вот так лучше:
The template argument for T shall be trivially copyable
-- http://eel.is/c++draft/atomics.types.generic#1
#436 #1054961
>>1054921
Нет, я правда не знаю ничего про многопоточность в с++
#437 #1055149
>>1054961
Тогда рассказываю.
0) Не бывает абстрактной thread-безопасности для контейнера, может быть лишь конкреный набор безопасных операций с предсказуемым результатом.
1) std::atomic - это инструмент для ускорения параллельных программ. Мьютексы - довольно дорогая операция, и в некоторых случаях ты можешь сделать алгоритм взаимодействия без мьютексов вообще, используя atomic. При этом atomic не использует мьютексы не во всех случаях, а только тогда, когда это возможно. То есть, если ты захочешь сделать atomic<array<char,90001>load(), то внутри будет использован мьютекс почти на всех ЦП.
2) std::atomic<string> - это фингербокс, так как единственная полезная операция, которая становится безопасной по сравнению со string - это swap (exchange). У atomic есть лишь ограниченный набор операций, которые становятся безопасными, читай:
http://en.cppreference.com/w/cpp/atomic/
Конкатенация строк? Получаешь UB - перемещается область данных из-за реаллока, за тебя никто это проверять не будет. Хочешь search&replace - получаешь data race, если другой тред пишет в строку. Когда ты пишешь atomic<string>.load(), ты получаешь обычную копию строки, которая использует ту же динамическую область данных.
3) как я уже сказал, просто потокобезности не бывает, есть определённый набор безопасных операций. Потокобезопасность контейнеров максимально примитивна - она означает то, что если разные треды используют строго разные элементы, то нету data race.
http://eel.is/c++draft/container.requirements.dataraces#2
Ну и ещё некоторые требования:
http://eel.is/c++draft/res.on.data.races
которые обозначают самую милипиздрическую потокобезопасность - то есть, ты гарантированно не отстрелишь ногу, пока ты ничего не делаешь.
1 Кб, 408x44
#438 #1055182
Анон, такой вот вопрос про наследование.
Имеется базовый класс и несколько наследуемых от него.
В базовом классе есть функция Touch которая принимает указатель на базовый класс пикрелейтед.
В наследниках эта функция как-то определяется по своему.
Для кого-то функция не будет делать ничего, например.

Так вот суть вопроса.
Можно ли как-нибудь сделать идентификацию типа чтобы избежать динамик_каста?
Ну или сделать виртуальную функцию которая бы возвращала имя класса.

То есть сделать что-то такое https://pastebin.com/qYASThE5 ?
#439 #1055188
>>1055149

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


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

>>1055182
Нет. Вернее можно, но проще и быстрее не станет. Гугли multidispatch.
#440 #1055437
>>1055188

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


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

>чтобы избежать динамик_каста?


Нахуя? Если ты уже проверил динамический тип, ты можешь использовать статический каст, так как динамический - это проверка RTTI и статический каст. И даже в этом случае - нахуя?

>Можно ли как-нибудь сделать идентификацию типа


enum class в каждой корневой базе сделай, только компилятор делает примерно то же самое для RTTI, так что ты только свой велосипед городишь.
#441 #1055572
>>1055437

>enum class в каждой корневой базе сделай, только компилятор делает примерно то же самое для RTTI, так что ты только свой велосипед городишь.


Загугли llvm style rtti, у них была статья об этом в их доках в которой рассказывается что и как, и почему ты хуйню сморозил.
#442 #1055574
Какая же уёбищная с точки зрения UI новая капча...
#443 #1055618
>>1055182
Спустя сутки я так и не понял, что ты хочешь сделать. То, что ты говоришь - один в один причина для использования виртуальных функций, где там у тебя динамик-каст-то? Ты хочешь избежать милипиздрического оверхеда виртуальных функций?
>>1055572

>Загугли llvm style rtti


Загуглил - ёбаная каша для создания багов с максимальной производительностью. Ты хочешь сказать, что то, что я предложил - это оно? Ну и ладно, посыл тот же - вопрос ОПа нихуя не понятен.
#444 #1055663
>>1055618
Да, это оно.
И если разработчики одного из главных (в мире ойти гигиантов — главного) компилятора считают что это может чувствительно просадить перформанс и ради этого месят подобную лапшу (и запрещают в своём кодстайле использовать RTTI c dynamic_сast и прочим, как и гугловцы) — мне кажется они что-то да знают.

Бля, я с этой капчей скоро снова считать без калькулятора научусь, лул.
#445 #1055669
>>1055574
Я бы сказал хуёвая...
#446 #1055703
>>1055149

>std::atomic - это инструмент для ускорения параллельных программ.


>>1055188

>Это инструмент для написания параллельных программ


Два долбоеба подряд.
#447 #1055769
>>1055663

>что это может чувствительно просадить перформанс


Что угодно может просадить перформанс.

>мне кажется


Тебе кажется, а в статье конкретно написано, что нужно это для быстрого динамик_каста, для специализации функций под разные динамические типы аргумента это нах не нужно, достаточно свитча по hash_code из type_info и reinterpret_cast (видимо, ОПу вопроса это и нужно, но хуй дождёшься его).

Что там у них за юзкейс, в котором обязательно нужно использовать кучу кода с огромными возможностями для багов (инбифо есть тулза) - хуй знает, рыть исходники я не буду.
>>1055703
И тут ты рассказываешь о том, зачем тебе нужны атомарные операции с объектами, которые используются в одном потоке.
#448 #1055967
>>1055769

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


Ну тогда я тебе, гению, подскажу. Они пишут компиляторы, и им нужно AST составлять, причём по которому нужно очень быстро бегать. Когда у тебя только от одного ебаного <iostream> 40+ к нод (попробуй шланг с -ast-dump на хэловорд натравить) — дохуя весело наверно это дело обходить по 5 раз (надеюсь зачем это делать сам догадаешься?).

Хуй знает какие тут могут быть баги. Допустить опечатку в названии енума?

А вообще, я сейчас 5 раз перечитал вопрос того пацан и понял что он ебётся со стеной и ему тупо нужно почитать про паттерн посетитель (благо в плюсах на шаблонах его можно сделать без виртуальных функций, привет буст, гы).
#449 #1056013
>>1055967

>Хуй знает какие тут могут быть баги. Допустить опечатку в названии енума?


Ты сам-то читал статью, блядь?
https://llvm.org/docs/HowToSetUpLLVMStyleRTTI.html

>Ну тогда я тебе, гению, подскажу. Они пишут компиляторы, и им нужно AST составлять, причём по которому нужно очень быстро бегать. Когда у тебя только от одного ебаного <iostream> 40+ к нод (попробуй шланг с -ast-dump на хэловорд натравить) — дохуя весело наверно это дело обходить по 5 раз (надеюсь зачем это делать сам догадаешься?).


О, совсем забыл, я хотел сегодня компилятор написать!
#450 #1056027
>>1056013
Читал, и не понял нахуя сравнивать с какими-то усреднёнными значениями из енума. Единственный непонятный и спорный момент.

>О, совсем забыл, я хотел сегодня компилятор написать!


Ну вот ты сам сказал — что ты безграмотное хуйло, ни разу не сталкивавшееся с необходимостью построения кучи древовидного говна, которое встречается почти везде в том или ином виде кроме гуй-кружошлёпства мб. Ведь мало оверхеда от того что эту парашу нельзя ужать в единый массив, и она в памяти растекается как жир итт и примерно никогда не попадает в кэш, нужно ещё виртуальных вызовов и динамик каста насобачить.
#451 #1056066
>>1055769
Это называется примитивом синхронизации, неуч. Многие параллельные операции можно делать и без синхронизации.
Про инструмент и ускорение это какое-нибудь Intel Parallel Studio.
#452 #1056154

>c+17


>static const inline std::string kek{“lul”};


Дожили до шарпа, блэт.
#453 #1056170
>>1056154
Скоро (через год) во всех (на самом деле нет) компиляторах мира (на самом деле только Земли)
#454 #1056171
>>1056170
Это уже во всех кроме отсталой хуиты вроде оракловского и интеловского компилеров которые в своих вселенных живут.
#455 #1056175
Поясните пожалуйста кто-нибудь залетному, зачем нужно писать везде using namespace std? Я пытался гуглить, но все хором пишут ыыы эээ ето пространство имен. Блядь, пиздос, да оно понятно из названия что это пространство имен, мне уже даже похуй что такое пространство имен, скажите мне что делает конкретно std?
#456 #1056191
>>1056175
это объявление импортирует объявления (имена) из пространства имен std. Все.
#457 #1056199
>>1056191
Пиздос, блядь. Ну не траль плез.
#458 #1056206
>>1056199
Ну, проще говоря, это делается для того, чтобы можно было выполнить unqualified name lookup. Так лучше?
http://en.cppreference.com/w/cpp/language/unqualified_lookup
#459 #1056211
>>1056175
Ну ебана, а как тебе объяснить что оно делает, если ты не понимаешь ничего из того, с чем оно это делает? Пока не пройдешь неймспейсы просто забей хуй и прими как должное - "надо писать это шоб та функция работала, почему - пока хз".
#460 #1056214
>>1056175
А если совсем грубо объяснять:
Вот ты написал класс class Huy, и хочешь, чтобы другие, когда подключали твою йоба-либу, не получали кучу ошибок из-за того, что твой класс конфликтует с их классом, который тоже называется Huy. Поэтому ты используешь неймспейс - namespace HuyLib { class Huy };

Теперь, когда другие подключат твою либу, они не смогут просто сразу писать a = new Huy, потому что там, где они это пишут, нет такого имени - оно в другом пространстве имен. Чтобы оно было, надо либо явно указывать неймспейс каждый раз - HuyLib::Huy (так же, как ты можешь явно писать везде std:: для стандартных функций вместо using), либо просто написать один раз using namespace HuyLib, и теперь все имена из неймспейса становятся видны (если ты уверен, что в твоем файле нет конфликтующих имен и можно просто юзать как есть).
#461 #1056253
>>1056206

>Так лучше?


Да.
#462 #1056254
Как теперь в 17 студии создать пустой проект?
#463 #1056275
>>1056027

>Читал, и не понял нахуя сравнивать с какими-то усреднёнными значениями из енума. Единственный непонятный и спорный момент.


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

Если наследование множественное, начинается пиздец - надо сравнивать с несколькими отрезками.
>>1056066
Иди-ка ты нахуй, дебил. Примитив синхронизации - мьютекс. atomic можно целиком сделать через мьютексы и не определять никаких специальных операций для объектов вида сложения, инкремента, подмены или ещё чего, они определены только потому, что они довольно часто используются и на некоторых ЦП они МОГУТ быть выполнены без мьютекса. Примитивом атомик не является.
>>1056254
фгугл
#464 #1056313
Двач, делаю для себя небольшой кросплатформенный фреймворк, с помощью него я создаю окно и мне нужно получать от окна состояние нажатых клавиш, состояние этого окна и прочую информацию о состоянии чего либо, как я понимаю в большинстве других фреймворков система хранения и считывания этой информации реализована через события (евенты), не подскажете можно ли мне реализовать что-то другое помимо событий, или лучше просто скопировать эту систему?
#465 #1056324
>>1056275

>Примитив синхронизации - мьютекс.


А это где-то сказано в стандарте или это так, твоё МНЕНИЕ?
#466 #1056328
>>1056313

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


Можно. Гугли в сторону functional reactive programming.
#467 #1056335
>>1056275

> atomic можно целиком сделать через мьютексы


Что, даже atomic_flag?
#468 #1056341
>>1056275

>Если наследование множественное, начинается пиздец - надо сравнивать с несколькими отрезками.


Вот оно что, михалыч. Спасибо что выше столько капитанской фигни написал, графоман, я ж не осилил бы.
#469 #1056373
Аноны, это константный указатель на константу?

foo (const int const m);

Принимать должке двумерный массив созданный неизвестным образом
10 Кб, 394x97
#470 #1056374
>>1056373
А куда звёздочки делись-то?
#471 #1056381
>>1056335
Да.
>>1056324
Показываешь место в стандарте, где написано, что atomic - это примитив - покажу, где написано, что mutex - это примитив.
>>1056373
Это неконстантный указатель на константный указатель на константный инт.

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


Нахуй тогда указатели, делай template.
template<typename T>
foo(T n)
Вот так ты вообще любой массив примешь, включая ассоциативный контейнер (а не только кусок памяти).
#472 #1056385
>>1056381

>>делай


Это задачка
у меня есть только объявление функции которую надо реализовать
#473 #1056386
>>1056381
Спасибо

>>1056385-кун
#474 #1056409
Хочу вкатиться на одну вакансию, где занимаются мультимедиа. Как мне за полгода освоить следующее:

- работа с мультимедиа (видео, игры)
- Java и андроид
- отличное знание C++

Что читать?
#475 #1056424
>>1056409
За пол года это не особо реально.
#477 #1056576
>>1056381

>Да.


Нет.
#478 #1056579
>>1056576
Минет. Не можешь написать буль с атомарными операциями на мьютексах - вон из профессии.
#479 #1056582
>>1056579
Вон из профессии, дебил
Operations on an object of type atomic_­flag shall be lock-free.
http://eel.is/c++draft/atomics.flag#2
#480 #1056586
>>1056582
То есть, всё-таки atomic нужен для улучшения производительности? То есть, всё-таки, он не является примитивом?
#481 #1056590
>>1056586
Я влез в вашу дебильную беседу только после того, как ты начал пиздеть, что любой атомик можно реализовать на мьютексах. Причём ты не остановился даже после того, когда я явно спросил про atomic_flag. Который должен быть lock-free.

Кто там у вас примитив — это ты выясняй со своими дебильными собеседниками.
#482 #1056597
>>1056590

>Который должен быть lock-free.


У lock-free есть какое-то другое свойство, кроме производительности? Примитив - это то, через что можно сделать всё остальное, атомик флаг пишется на мьютексах и примитивом не является, отличие будет только в производительности.
#483 #1056598
>>1056597

>атомик флаг пишется на мьютексах


Дебил, как ты на мьютексах удовлетворишь требованию lock-free?
#484 #1056603
>>1056598
У lock-free есть какое-то другое свойство, кроме производительности?
#485 #1056604
>>1056598
Как ты вообще удовлетворишь это требование на ЦП, на котором нужной инструкции нет?
9 Кб, 200x290
#486 #1056614
>>1056579

>буль


Зиг бульк!
#487 #1056618
>>1056604
Никак. А что?
#488 #1056625
>>1056597

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


У него одно свойство - операции (некоторые) с ним выполняются за один такт. К производительности это никаким краем.
#489 #1056629
>>1056625

>У него одно свойство - операции (некоторые) с ним выполняются за один такт.


Ёбаное гонево.
1) Ты не можешь за один такт сказать всем ядрам процессора о том, что ты сейчас будешь менять один бит.
2) То, что оно сделано за один такт, не означает того, что нету data race.

>К производительности это никаким краем.


Тогда для чего нужно требование lock-free? Есть другие применения у lock-free-операций?
#490 #1056630
>>1056629

>Тогда для чего нужно требование lock-free?


Они должны быть address-free.
#491 #1056631
>>1056629

>Ты не можешь за один такт сказать всем ядрам процессора


Зачем мне им это говорить? Для того и ввели понятие "атомарных" операций, чтобы не было пересечений ни по кешам ни по пайплайну. см. >>1056630

>Тогда для чего нужно требование lock-free?


https://en.wikipedia.org/wiki/Linearizability
#492 #1056726
>>1056630
>>1056631
О, отлично, попёр конструктив.
>>1056630
Никакое свойство mutex не препятствует исполнению atomic_flag через мьютекс (кроме самого требования не делать это через мьютекс). address-free - это о меняемом значении и о том, что оно должно обновиться во всех адресных пространствах сразу. Когда ты залочил буль и пишешь новый буль, это обеспечивается механизмами когерентности кэша физической памяти в ЦП. Когда ты делаешь это с помощью одной инструкции, происходит то же самое, просто очередью управляет процессор без мьютексов - если несколько потоков подряд решат записать в буль в одно время, они либо залочатся на разное время, либо залочатся на большОе время (достаточное для того, чтобы разрулить все ядра в самом худшем случае) - в зависимости от того, как процессор сделан.
>>1056631

>Зачем мне им это говорить?


>чтобы не было пересечений ни по кешам ни по пайплайну.


atomic_flag zalupa;
........
и тут такие 2 треда (которые не на одном ядре выполняются) одновременно решают сделать:
result=zalupa.test_and_set();

Что произойдёт дальше? Оба треда получают false?
#493 #1056729
Если вы не видите причин для улучшения производительности, просто представьте себе, что тред, в котором залочен критический буль (всем нужен, все используют), исчерпал тик и ушёл спать. Пока остальные треды не решат, что этот буль всем им нужен, пройдёт до хрена тактов. Если в ЦП есть нужная атомарная операция с булем, такого никогда не будет.
#494 #1056734
>>1056726

>Что произойдёт дальше?


Обе инструкции выполнятся последовательно в произвольном порядке.
39 Кб, 900x900
#495 #1056738
От Clion-параши опять отвалилась вижуал студия. Блять сука две недели назад все работало. АААА!
#496 #1056739
>>1056734

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


Как одно ядро узнает о том, что на втором ядре выполняется инструкция для того же адреса?
#497 #1056754
>>1056726

>Никакое свойство mutex не препятствует исполнению atomic_flag через мьютекс


У mutex есть гарантия address-free?

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


Цитату из стандарта, плиз.
#498 #1056763
>>1056738
20 минут плясок с бубном и студия снова работает.

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

Заработало после того, как я поудалял все проекты, все cmake кэши попробовал создать проект заново.
#499 #1056770
>>1056754

>У mutex есть гарантия address-free?


Мьютекс содержится в памяти - ясен пень, он address-free, это свойство памяти, расшаренной между процессами средствами ОС, блядь. Попробуй найти хоть одну ОС, в которой изменения в расшаренной памяти видны не всем процессам сразу, это естественное свойство расшаренной памяти, она только для этого и нужна. Попробуй найти хоть одну архитектуру ЦП, в которой видимость записи в память зависит от того, какая таблица виртуальной памяти была загружена.

>Цитату из стандарта, плиз.


http://eel.is/c++draft/atomics.lockfree#4
#500 #1056779
>>1056770

>Мьютекс содержится в памяти - ясен пень, он address-free


Без пней, пожалуйста. Гарантию address-free принеси. На уровне стандарта.
#501 #1056829
>>1056739
По мемори фенсу, очевидно.
#502 #1056831
>>1056779

>На уровне стандарта.


Еще б стандарт знал об этом чего.
#503 #1056855
>>1056779
Щас у меня голова вскипит, ты заебал меня. Это ты так ведёшь меня к тому, что в плюсах мьютексы только для тредов, и что комитет вставил атомик_флаги, но до сих пор не сделал межпроцессные мьютексы обязательными, которые можно запросто написать на тех же инструкциях? Ладно, я всё понял. Да, действительно, с точки зрения STL атомик_флаг - незаменим в строгом смысле.
http://eel.is/c++draft/thread#req.lockable.general-1

>An execution agent is an entity such as a thread that may perform work in parallel with other execution agents. [ Note: Implementations or users may introduce other kinds of agents such as processes or thread-pool tasks. — end note  ] The calling agent is determined by context, e.g. the calling thread that contains the call, and so on.


Здесь говорится, что агент - это тред, процесс и т.д., но не говорится, что процесс должен быть агентом. Грубо говоря, заменимость атомик_флага мьютексом зависит от implementation.
>>1056829
Ага, и мемори-фенс у нас за один так выполняется, да? Я уже не говорю о том, что в большинстве процессоров за один такт вообще ничего не выполняется, так как гиперскалярность. В терминологии силён не особо, но этот твой мемори-фенс означает то, что одно ядро должно сказать всем остальным об изменении буля ДО ТОГО, как они тоже попытаются это сделать, сделают и уже выполнят другие инструкции с использованием полученного значения. В этом вы меня не наебёте - из атомарности операции следует не то, что она за такт выполняется, а чаще всего то, что она выполняется одной инструкцией.
#504 #1056857
>>1056855

>но этот твой мемори-фенс означает то,


Нет. Это просто инструкция, которая учитывается при наполнении пайплайна.

>В этом вы меня не наебёте - из атомарности операции следует не то, что она за такт выполняется, а чаще всего то, что она выполняется одной инструкцией.


Вопрос терминологии, не более. В ряде случаев обе формулировки верны.
#505 #1056868
>>1056855
Я вообще не пойму, чего ты так вцепился в мьютексы как примитивы. Ты это в какой-то книжке прочитал?

В общем случае атомики можно выразить через мьютексы, а мьютексы через атомики. (Но это в общем случае. Не в общем есть atomic_flag.) Почему одно примитивнее другого?
#506 #1056879
>>1056214
Сотни нефти тебе.
#507 #1056880
>>1047134
chcp 1251
Гугли настройку локалей и пару win api функций.
#508 #1056881
>>1047203
imbue для операторов std::wcout, std::wcin, std::cin, std::cout, и посмотри сразу какие там типы данных используются, чтобы потом меньше ебли было.
#509 #1056885
Как реализовать выпадающий список при вводе строки в консоли? Ну допустим регулярки + ассоциативный список, а внешне это можно как-то стильненько оформить? Типа как поисковая строка у Гугла. Без winapi...в теории можно питон подключить но такое.
#510 #1056910
Аноны, что с этим кодом не так? Почему при переборе с последнего элемента до первого и с первого до последнего получаются разные числа? Программа должна переводить из десятичной системы в двоичную, если что.
#511 #1056911
>>1056910
Самое главное забыл.
https://ideone.com/YTgn4r
#512 #1056914
>>1056868

>Почему одно примитивнее другого?


Изначально речь шла об std::atomic.
>>1056881

>imbue для операторов std::wcout, std::wcin


Во-первых это не операторы. Во-вторых wcout и wcin на винде мёртворождены, нету их там.
>>1056885
Какой ещё выпадающий список? Откуда выпадает хоть? Питон нахуя для этого?
Очевидное очевидно: возьми исходники mintty или другого терминала и прикрути. Без винапи ты это не осилишь, если сам не сделаешь терминал на Qt.
>>1056910

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


Делается в две строчки с помощью модификаторов вывода.
>>1056910

>Почему при переборе с последнего элемента до первого и с первого до последнего получаются разные числа?


Потому что int i проходит разные значения, посмотри внимательно на свой for.
#513 #1056975
>>1056910
Используй оператор "стремится к нулю" — `--> 0`
https://ideone.com/x2OdKQ
#514 #1057023
>>1056914

bin == 0 при i = bin.size, верно? Последний символ равен нулю и все такое, да?
#515 #1057026
>>1057023
bin==0 я имел ввиду.
#516 #1057027
>>1057026
бин ИТЫЙ я имел ввиду, блядь.
#517 #1057036
>>1057023>>1057026>>1057027
bin[bin.size()] - это выстрел в ногу.
http://ru.cppreference.com/w/cpp/container/vector
Вот, ищи, где там написано, что там будет ноль.
Пройди с помощью бумажки все значения i в обоих for-ах. Если ты не знаешь, как это сделать - тряси препода.
#518 #1057138
Ананасы, как узнать, что тип аргумента шаблонной функции имеет поле ::value_type?
#519 #1057140
Где можно почитать про возможности MinGW? Я посмотрел, что там куча библиотек, но описания к ним нет.
#520 #1057145
>>1057138
гугли sfinae

P.S. чтобы было ещё веселее можно использовать вот такой макрос, но он работает только под визуалкой ждем концептов
https://ideone.com/YZazpy
#521 #1057163
>>1057145

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


Потому что нахуя Y::##_arg_type ?
https://ideone.com/od5Vxv
9 Кб, 648x229
#522 #1057202
>>1057140
Он несколько староват.
14 Кб, 200x198
#524 #1057205
>>1057202

>несколько староват

#525 #1057300
>>1057163
ЕБАТЬ, ТЫ РАСКРЫЛ МНЕ ГЛАЗА, ГОСПОДИ, ТЫ ЛУЧШИЙ
#526 #1057317
>>1057300
На вопрос отвечай.
#527 #1057330
>>1057317
Какой вопрос то? зачем там ##? выяснилось что незачем ¯ \ _ (ツ) _ / ¯
#528 #1057334
>>1057330
Ты зачем его туда вставил?
#529 #1057340
>>1057334
Так я хотел склеить Y:: и аргумент, кто же знал что там можно и без склейки
да и под визуалкой работает, мне большего и не надо
#530 #1057342
>>1057340
Ты вообще знаешь, зачем ## нужен?

> да и под визуалкой работает


Она известна своим кривым препроцессором. Чаще он не осиливает валидный код, но тут «осилил» (т.е. выдал ожидаемый результат) невалидный. Считать ли это плюсом? Не думаю.
#531 #1057345
>>1057342

>Ты вообще знаешь, зачем ## нужен?



#define FOO(a, b) (a##b)

std::cout << FOO(2, ch);//"2ch"
#532 #1057346
>>1057345
Нет, это не stringification.
#533 #1057350
>>1057346
чуть-чуть не корректный пример привел

#define FOO(a, b) (a##b)
int c2h = 10;
std::cout << FOO(c2, h);//"10"

вот так вот
а # обрамляет лексему в двойные кавычки
#534 #1057352
>>1057350
Ок.
И зачем слеплять :: и _arg_type в единый токен? Это 2 разных токена и должны быть ими.
#535 #1057355
>>1057352

>Кто же знал


шо доебался то?
#536 #1057393
>>1057355

>шо доебался то?


Есть за что.
#537 #1057396
>>1057393
за что? за то, что я не очень силен в самой худшей части этого языка?
#538 #1057400
>>1057396

>в самой худшей части этого языка?


Есть лучшие методы кодогенерации, чем макросы?
#539 #1057418
>>1057400
Разве что MOC, да отдельные утилиты для кодогенерации. Но это не делает макросы менее отвратительными
#540 #1057422
>>1057202
А какой тогда компилятор использовать?
75 Кб, 632x364
#541 #1057423
>>1057422
MinGW и используй. Эта >>1057202 манька судит о новизне компилера по дате модификации топ-левел каталога. А если пройти внутрь этого каталога, то видим пикрелейтед.
#542 #1057424
>>1057422
Можешь взять mingw-w64 хоть седьмой версии (см. >>1057205 ).
#543 #1057425
Можно ли писать программы на OpenGL без библиотеки glut? Дело в том, что она не входит в комплект MinGW, а на официальном сайте архив только с h файлами без файлов самой библиотеки. Где её брать не понятно.
#545 #1057445
Сисси-бои, как в Win32 API сделать так, что бы дочернее окно было привязано к нижней границе родительского (главного) окна и чтобы, когда главное окно было не в полном размере, дочернее окно всё равно было на нижней границе. Типа как у MSVS окно вывода ошибок. Спрашиваю не из-за лености, а от отчаяния.
#546 #1057450
>>1057425
glfw или SDL, выбирай любое
#547 #1057458
>>1057445

>как в Win32 API сделать


нахуй, решительно
#548 #1057472
>>1057458
Что так категорично?
#549 #1057495
>>1057450
SDL - не рабочая библиотека. Я всё аккуратно скопировал в папки MinGW, подключил библиотеку к проекта и он мне выдают, что в самой библиотеке не может найти функции:
c:/MinGW/i686-w64-mingw32/lib/libSDL2.a(SDL_systimer.o): In function `SDL_SetSystemTimerResolution':
/Users/slouken/release/SDL/SDL2-2.0.5-source/foo-x86/../src/timer/windows/SDL_systimer.c:57: undefined reference to `_imp__timeBeginPeriod@4'

и ещё 100500 аналогичных строчек...

Видимо выкладывают какие-то битые сборки и не проверяют их.
#550 #1057526
>>1057495
https://github.com/spurious/SDL-mirror
Попробуй отсюда ее вытянуть и сбилдить на том же cmake, к примеру, самое простое, что можно придумать.
А вообще, если ты решил копошиться под MinGW, то советую лучше вытянуть MSYS2 или Cygwin (второй будет по-жирнее, но и по-лучше, вроде как). MSYS2 самый простой вариант для тебя, как мне кажется. Установишь его и потом pacman-ом поставишь еще sdl и всего-то делов.
#551 #1057559
Ононы, нахуя нам "оператор ."?
#552 #1057634
поясните за Седжвика, прочел страниц 100 и возникает вопрос, нет ли чего лучше по теме алгоритмов ?
#553 #1057663
>>1057634
И что тебе не понравилось? Ну если ты скучающий аутист, то можешь Кнута навернуть.
#554 #1057687
>>1057495

>и он мне выдают, что в самой библиотеке не может найти функции:


timeBeginPeriod - это функция из винды. Видимо, тебе нужно ручками подключить "Winmm.lib". Я не знаю, есть ли в GCC вообще это автоматическое подтягивание либ, я никогда не видел его. Судя по километрам "-lХУЙПИЗДА" в мефкфайлах, которые я видел - нет.
>>1057559
Это часть языка, что значит "нахуя"? От того, что он не может быть перегружен, он не перестаёт быть оператором.
#555 #1057818
>>1057687
я дебил, соре, не так написал вопрос
нахуя в комитете идут разговоры о возможности перегрузки оператора точка? зачем нам перегружать ТОЧКУ БЛЯТЬ, чтобы ещё сильнее язык усложнить?
#556 #1057819
>>1057425
Можно и нужно, glut устарел уже лет как 10.
SFML, GLFW, SDL, ну или писать напрямую без сторонних библиотек.
#557 #1057829
>>1057818
Хотят сделать компилируемый LISP, небось. Хуй что выйдеет, впрочем. То, что разговоры идут, ничего не значит.
>>1057687

> не знаю, есть ли в GCC вообще это автоматическое подтягивание либ, я никогда не видел его. Судя по километрам "-lХУЙПИЗДА" в мефкфайлах, которые я видел - нет.


Только что проверил скачанный архив с SDL - там есть pkgconfig, в котором написано всё это:

>Libs.private: -lmingw32 -lSDL2main -lSDL2 -mwindows -Wl,--no-undefined -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lversion -luuid -static-libgcc


То есть, всё должно линковаться. Куда ты распаковал архив? Нужно распаковывать так, чтобы папка i686-w64-mingw32 слилась с такой же папкой МинГВ.
#558 #1057830
И вообще, какую систему сборки ты используешь?
#559 #1057831
>>1057829
Можно чууууть-чуть поподробнее про лисп?
#560 #1057849
>>1057831
Разве что совсем чуть-чуть, я только Схемку знаю немного (там ООП нету, вроде, но есть полноценные макропреобразования). Дело в том, что, имея интерпретатор (с JIT или без - вопрос производительности) можно писать некоторые специфичные вещи так коротко, что на плюсах ты заебёшься писать. Макро в ЛИСПе - это как препроцессинг, только его можно делать в любом месте и использовать состояние программы и все возможности языка, а не только всякие примитивы типа define, #, простой подстановки и так далее. Шаблоны - это то, что приближает C++ к ЛИСПу. Constexpr if, constexpr array и прочее - это перетягивание возможностей языка на сторону компилятора. Для того, чтобы сделать double dispatch - т.е. вызов метода соотв. динамическому типу и вызов метода, соотв. динам. типу аргумента - в плюсах надо городить стену кода из одинаковых методов, так как это единственный способ автоматического выбора перегруженной функции по типу, даже dynamic_cast тебя не может спасти. Некоторые вещи можно добавить в плюсы ПОЧТИ безболезненно (статики создаются в каждом инстансе generic lambda вместо одного на всех, http://coliru.stacked-crooked.com/a/ae480e8cfdf344d1, нахуй это надо?), некоторые - со страшной болью, как constexpr if.

Без встроенного компилятора и возможности записи кода в исполняемую память (привет защите от исполнения в большинстве современных ОС) C++ ЛИСПом не станет, и если это хоть когда-то случится, стандарт языка станет занимать шкаф, а ошибок в стандарте и компиляторах будет море.
#561 #1057850
#562 #1057851
>>1057849
Ну про лисповые макросы, и изменения кода без перезагрузки программы я слышал, но каким боком тут "оператор точка"? :D
#563 #1057852
>>1057849
Про инстансы статиков - логично, а вдруг
static decltype(hui) Ggurda;?
тогда без многих инстансов точно не обойтись, а городить проверки "зависит ли тип статической переменной от типа одного из аргументов?" было бы лишним, вот честно
#564 #1057858
2ch, не могу понять, как в winapi отслеживать события вне окна?
#565 #1057875
>>1057851
Почитал пропосал и понял, что это у меня синдром утёнка.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1990/WG21 1990/X3J16_90 WG21 Request for Consideration - Overloadable Unary operator.pdf
В целом неплохо написано. Это и есть ответ на твой вопрос о том, зачем это нужно. Но то, что из плюсов пытаются сделать ЛИСП - всё равно отчасти правда.
>>1057852
Собственно, это не только к лямбдам относится. Иногда по коду сразу не видно, будет инстанциирован тимплейт ещё раз или нет. Но практическихх примеров для иллюстрации у меня нет.
#566 #1057876
>>1057858
Иди НА ХУЙ.
#567 #1057878
>>1057876
А вот и быдлецо подъехало, почему не на заводе или не в школе?
#568 #1058094
>>1057818

>нахуя в комитете идут разговоры о возможности перегрузки оператора точка?



Зачем задавать такие вопросы? Находишь пропозал о перегрузке оператора точка и читаешь мотивационную часть.
#569 #1058234
Как запустить через асинк метод класса?

A a();
auto f = std::async(std::launch::async, a.do);

Ошибка invalid use of non-static member function, но должен же быть вариант запустить эту шляпу.
#570 #1058238
>>1058234
В лямбду оберни.
#571 #1058251
>>1058234
std::async(..., &A::do, std::ref(a))
#572 #1058367
>>1057445
Придется ловить все сообщения об изменении родительского окна и двигать дочерние. Но лучше переосмыслить дизайн и сделать контейнеры.
#573 #1058406
https://wandbox.org/permlink/DfvdpVzk30b7QYo6
Кто объяснит поведение этого кода, тому нихуя

Посмотрим, что местные маньки знают о цепепе.
#574 #1058411
>>1058406

>Посмотрим, что местные маньки знают о цепепе.


При чем здесь язык? Видимо данный компилятор считает себя умнее тебя так и есть
#575 #1058415
>>1058411
Это что, объяснение?
#577 #1058463
>>1058406
компилятор выкинул цикл при включенной оптимизации, например потому что нет эффектов. Тоже мне загадка века
#579 #1058535
>>1058367
Благодарю
#580 #1058559
>>1058463
>>1058525
Этим нихуя.
#581 #1058592
>>1058427
Что ты этим хочешь сказать?
#582 #1058601
>>1058427
В Release запусти, маня
#583 #1058603
>>1056738
Уебанцы без нормального тулчейна, вот кто вы. Ваш тулчейн специально на плюсах написан чтобы вы страдали сильнее.
43 Кб, 698x505
#584 #1058610
>>1058601
релиз, -О3 у cl это называется /Ox
#585 #1058611
>>1058610
И какие выводы?
#586 #1058612
>>1058611

>данный компилятор считает себя умнее тебя

#587 #1058614
>>1058612
Это унылое петросянство, а не выводы.
#588 #1058615
>>1058614
Какие выводы то? аккуратнее с бесконечными циклами без побочных эффектов? юз онли волатайл перменные в вайлах? cl > clang? Не лучшие оптимизации меняют поведение программы? о каких выводах ты говоришь?
#589 #1058616
>>1058615

>аккуратнее с бесконечными циклами без побочных эффектов?


Да, ибо UB.

> юз онли волатайл перменные в вайлах?


Это ещё зачем?

> cl > clang?


Лол, нет.

> Не лучшие оптимизации меняют поведение программы?


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

> о каких выводах ты говоришь?


Которые ты должен сделать для себя.
#590 #1058774
>>1058251
Что-то я не понял.
http://coliru.stacked-crooked.com/a/8f5d0c3d27bcf38c
Почему на строчке 23 он сам дедусит, а на строчке 25 без тимплейт аргументов обламывается?
#591 #1058788
>>1058774
Может потому что std::async это шаблон функции, а std::function это шаблон класса?
Почему
std::vector v {1, 2, 3}
обламывается у тебя тоже вызывает вопросы?
#592 #1058791
>>1058788

>Может потому что std::async это шаблон функции, а std::function это шаблон класса?


Правда, в C++17 будут deduction guides, но для member function не завезли.
#593 #1058807
>>1058788
Вектор у меня не вызывает вопросы, там другое совсем.

>template< class Function, class... Args>


>std::future<std::result_of_t<std::decay_t<Function>(std::decay_t<Args>...)>>


async( Function&& f, Args&&... args );

Function - это что такое?
#594 #1058809
>>1058807

>Function - это что такое?


Параметр шаблона.
#595 #1058817
>>1058809
Почему он так называется и почему указатель на метод подходит под это название?
http://en.cppreference.com/w/cpp/language/function_template
Это он? Каким боком указатель на мембера подходит под это определение?
#596 #1058864
>>1058817
Можешь переименовать его в T.
#597 #1058912
>>1058864
Как async догадывается до того, что нужно делать с указателем на метод, и до того, что первый аргумент в списке - это lhs для .*?
Где в доках написано, что async принимает указатели на методы таким образом?
#598 #1058914
>>1058912
some kind of magic
но лучше в лямбду оберни)
#600 #1058917
>>1058807
Function - это тип удовлетворяющий требованиям Callable.
Что такое Callable написано здесь https://en.cppreference.com/w/cpp/concept/Callable
#601 #1059016
>>1058914
>>1058915
>>1058917
Всё, я допедрил. Всего-то навсего комитет не добавил очевидные deduction guidelines, которые прямо следуют из определения Callable.
#602 #1059017
При чём для бинда эти гайдлайны есть:
http://coliru.stacked-crooked.com/a/082c14891a5ad4f5
#603 #1059087
>>1059017

>для бинда эти гайдлайны есть


Какие гайдлайны, поехавший? Это обычный шаблон функции. Deduction guides нужны для классов.
#604 #1059088
>>1058915
Не совсем так, различие между разными видами callable наружу не торчит.
#605 #1059124
>>1059087
Ах ты блет!
>>1058791

>Правда, в C++17 будут deduction guides, но для member function не завезли.


http://en.cppreference.com/w/cpp/language/class_template_argument_deduction

> If C is defined, for each constructor (or constructor template) Ci declared in the named primary template (if it is defined), a fictional function template Fi, is constructed, such that


> template parameters of Fi are the template parameters of C followed (if Ci is a constructor template) by the template parameters of Ci (default template arguments are included too)


> the function parameters of Fi are the constructor parameters


> the return type of Fi is C followed by the template parameters of the class template enclosed in <>


> If C is not defined or does not declare any constructors, an additional fictional function template is added, derived as above from a hypothetical constructor C()


> In any case, an additional fictional function template derived as above from a hypothetical constructor C(C) is added, called the copy deduction candidate.


Я правильно понял, что дедукшн для класса определён через дедукшн для функций? Тогда всё есть!
#606 #1059128
>>1059124

>Я правильно понял, что дедукшн для класса определён через дедукшн для функций?


Автоматический — через вывод типов для конструктора.
user-defined через функцию спец. вида.

> Тогда всё есть!


Что есть? deduction guides для std::function при инициализации её с использованием member function нету. http://en.cppreference.com/w/cpp/utility/functional/function/deduction_guides
#607 #1059133
>>1059128
Вот теперь точно допедрил.
#608 #1059162
>>1059088
Ну код был не о том как оно там реально сделано, а о том как можно, например, отличить мембер функтцион от не мембер.
#609 #1059163
#610 #1059335
Есть ли книги/статьи/уроки где бы всё внимание уделялось объектно-ориентированному программированию?
#611 #1059382
>>1059335
Нет
#612 #1060074
>>1046880
Что там кидать?
В ширину: у тебя есть граф из спичек. Выбираешь наугад вершину и поджигаешь ее. Когда огонь потухнет, проверяешь, есть ли не загоревшиеся спички. Если есть, повторяешь операцию.
В глубину. У тебя есть граф-лабиринт. Идешь куда хочешь, на каждом ходу помечаешь пройденную вершину. Если некуда идти, возвращаешься назад до первой развилки и идешь в новую сторону. Продолжаешь до тех пор, пока не вернешься к самому началу. Проходишь таким образом каждую компоненту связности.
Код есть где угодно.
#613 #1060563
Что не так с этим кодом, анон?
https://ideone.com/DakJUF
Почему у него m не равен m, что ему не нравится?
#614 #1060588
>>1060563

>> str.size()-1


сам угадаешь?
#615 #1060589
>>1060588
алсо, смысла нет сравнивать более половины символов.
#616 #1060749
>>1060588
Не угадает он нихуя, он не умеет читать написанное.
#617 #1060913
Есть класс в котором динамически аллоцируется буфер.
Память освобождается в дестракторе. Хочу передавать объект такого класса по значению, по цепочке, из внутренних вызовов во внешние и чтобы память освобождалась в деструкторе последнего внешнего объекта. Хочу тупо добавить bool owner
class C
{
...
buf ....
bool owner
~C() { if (owner) { free(buf); } }

}

и добавить copy constructor и assignment operator чтобы передавать оwnership
C (const C& copy)
{
this->owner = true;
copy.owner = false;
this->buf = copy.buf;
....
}
Проблема в const - его нужно дропнуть, но тогда не будет работать передача в верхние вызовы, так как будет создаваться временный объект типа reference и он обязан быть const.

Что делать?
#618 #1060914
Когда уже перекатываться будем?
#619 #1060917
>>1060563

>Что не так с этим кодом, анон?


Всё не так.
#620 #1060928
Двач, есть ли хорошие способы как можно исследовать чужой код? Или хотя-бы подскажите как можно перекатываться по объявлениям и определениям. В данный момент я просто задрачиваю поиск, либо локально на компьютере, либо на гитхабе, в крупных проектах это делать очень долго и сложно.
8 Кб, 311x760
#621 #1060933
>>1060913
инетересно. микрософт это хавает без проблем.
а гнусь ругается на отсутствие const в копи конструкторе.
#622 #1060934
>>1060928
В любой нормальной иде есть функции go to definition/ declaration.
#623 #1060936
>>1060934
Для этого в этой иде нужно создавать проект и муторно добавлять туда файлы, не считая других препятствий этих иде. Может быть есть софт, или способ как можно сходу начать исследовать код.
#624 #1060939
>>1060913

>Что делать?


Нормальную move-семантику.
#625 #1060954
>>1060913

>Хочу тупо добавить bool owner


А если owner сдохнет раньше не-owner'а('ов)?
#626 #1060958
>>1060939
Это embedded, плюсовость должна быть минимальная, даже не с++98, просто C с классами. Нет никаких STL примочек не говоря уже о С++11 rvalue references и тп. А обойти мою проблему можно разными способами - делать deep сopy например и тд. Просто интересно есть ли другие альтернативы сделать вручную без примочек

>>1060954
тогда беда и нужно все усложнять. reference counting какой-нибудь. подразумеваю простой
пример где последний owner всегда переживает всех предыдущих>>1060933
#627 #1060996
>>1060933
Микрософт хуй ложил на стандарт.
>>1060913

>Что делать?


Rvalue reference.
>>1060913
http://coliru.stacked-crooked.com/a/3b1c1f4a891fa9dc
>>1060936

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


В кутыкреакторе - несколько кликов (import existing project).
>>1060958

>Это embedded, плюсовость должна быть минимальная, даже не с++98, просто C с классами.


Ох, блядь. Что у тебя за компилятор такой с поддержкой стадарта "си с классами"? Какой флаг хоть?
http://coliru.stacked-crooked.com/a/2e5a60b842cb35ea
#628 #1061008
>>1060913
Можно при передаче передавать новый объект, что-то типа
foo(C(otherC, deep_copy{}})
И пытаться эмулировать так мувы.
#629 #1061012
>>1061008

>deep_copy


Думал одно, написал другое. move или что-то подобное.
#630 #1061019
>>1060996
да компилятор нормальный, свежий гнусь. я имею ввиду общий стиль заточен под "си с классами" чтобы размер кода минимизировать. никаких string STL, exceptions, даже new желательно избегать. твой пример работает нормально с флагом -std=c++11, спасибо.
#631 #1061037
>>1061019

>чтобы размер кода минимизировать.


С unique_ptr тащится какой-то шмоток кода, который тебе не нужен. Ты можешь сделать свой вариант на буле ручками. Никакого другого оверхеда там нет. Ты просто так написал:

>Это embedded, плюсовость должна быть минимальная, даже не с++98, просто C с классами. Нет никаких STL примочек не говоря уже о С++11 rvalue references и тп.


как будто там у тебя рили си с классами. rvalue reference - это указатель с другой семантикой, почему ты отмахиваешься от него?
#632 #1061131
>>1061037
Ну так то ты прав, раз оверхеда нет, надо попробовать. Отмахиваюсь инстинктивно так как привык по старинке. Байтоебство же в основном на голых сях и чуток плюсов для эстетики. В 99% случаях (прочитать сенсоры и кнопочки и включить пимпочку) вполне хватает. Здесь просто особый случай с кучей динамических буферов.
#633 #1061206
>>1061131
Олсо, rtti и exceptions отключил флагом компилятора?
#634 #1061344
>>1061037

>rvalue reference - это указатель


дибил
#635 #1061417
Ананасы, поясните мне за parallelism ts или как его. Что то, похоже, я нашел только то, что замутили reduce с измененной политикой выполнения и добавили аргументы в методы алгоритмов, так? И похуя мне это, если есть OpenMP?!
#636 #1061462
>>1060958
MyClass a;
get_MyClass().swap(a);

мув семантика в с++98
#637 #1061633
>>1045411 (OP)
Что делает флаг gcc -O0 ?
#638 #1061692
>>1061633
отключает любые оптимизации
#639 #1061914
>>1061692
Кроме NRVO, как я выяснил недавно.
#640 #1061920
>>1061914
Ну это не то, чтобы оптимизация...
Т.е. конечно это оптимизация, но не в том смысле чтобы луп раскрутить или функцию заинлайнить, а в том, что стандарт явно разрешает её делать.
20 Кб, 678x166
#641 #1061985
Пачаны, как запустить лямбду в компайл тайме? без этого 38-я строчка не компилируется по понятным причинам потомучто лямбду до с++17 нельзя пометить constexpr,
нужны воркараунды для 14ого стандарта
.
#642 #1061986
>>1061985
38-я это где статик ассерт
#643 #1062098
>>1061985

>Пачаны, как запустить лямбду в компайл тайме?


1) Никак.
2) GC_IS_HAS_METHOD - это что за хрень? Хули там лишняя запятая делает?
#644 #1062135
>>1061985
Ты хоть покажи, что у тебя этот макрос должен делать. Если ты проверяешь наличие метода, то есть такая идиома, как Member Detection, подробно тут https://en.wikibooks.org/wiki/More_C++_Idioms/Member_Detector
#645 #1062147
>>1062135
дададдаадад, именно это, но там чтобы это работало - надо генерировать класс перед его использованием, у меня же всё без этого, не нужно никакого дополнительного кода перед использованием но в статик ассерт не засунешь без констэкспра
https://ideone.com/84nJkZ
#646 #1062152
>>1062147
тебе нужно не возвращать true/false из лямбды, а делать возвращаемый тип std::false_type или std::true_type, тогда должно прокатить
#647 #1062161
>>1062152
я тоже думал об этом, но decltype([](){}) не компилируется :(
#648 #1062181
>>1062161
https://ideone.com/u43NlS
Я пытался, в общем. Может это сможет как-то помочь
#649 #1062183
>>1062181
перед return надо typename написать)
Но всёравно до с++17 в статик ассерт не засунешь, обида(
#650 #1062759
Как в этом ебучем qt-creator'е создать единый .qss файл, чтобы он линковался с ебучим GUI во всем проекте?
#651 #1062876
>>1062759
Тебе нужно в ресурсы его запихать и после создания QApplication задать стиль из файла, хули ты как дурак?!
Тред утонул или удален.
Это копия, сохраненная 26 сентября 2017 года.

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

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