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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
#2 #1081324
>>1081237 (OP)
Как учить кресты, если я даун аутист с icq 70?
#3 #1081330
>>1081237 (OP)
Кто шапку на гите держит? Там

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


зачеркивание у "простреливания ноги" походу проебалось
#4 #1081343
Двач, я вроде не ньюфаг (хотя с тем вопросом который сейчас прозвучит, вы можете меня таковым считать, без разницы), но я что-то пропустил этот неотъемлемый момент и не могу понять, зачем нужны свои собственные конструкторы копирования\присваивания? У меня вроде и синтезируемые конструкторы всё пиздато копируют\присваивают. Поясните в своём стиле.
#5 #1081345
>>1081343
Если ты такие вопросы задаешь, ты не просто ньюфаг ты еще вообще дух блять, которому надо бы почитать книжку по основам С++.
#6 #1081348
>>1081343
Пока ты не пишешь ничего сложнее лабораторок в универе - низачем.
#7 #1081355
>>1081324
Neekaque.
>>1081343
А если ты копируешь класс с полем-указателем, штатный конструктор копирования с ним что сделает? А если это unique_ptr?
#8 #1081371
>>1081311
Тебя лучше нахуй, а не буст.
>>1081324
Составить книгу рецептов и писать только то, что в ней написано.
#9 #1081375
Аноны, подкиньте, пожалуйста, годные статьи или книги, в которых нормально разбираются структуры, ссылающиеся сами на себя с помощью указателей. А то сейчас в универе проходим эту тему, нужно реализовывать стек/список/дек, а я не до конца разобрался, но в интернете материалов хороших что-то не нашёл.
#11 #1081396
>>1081375
Читай седжвика, у него были книги по алгоритмам на крестах
#12 #1081402
>>1081396
Спасибо анон, но сама идея алгоритмов мне понятна, проблема в том, что я не могу их закодить на плюсах. Особенно ломают мой мозг структуры, ссылающиеся сами на себя.
#13 #1081408
>>1081396
Тоже хотел его написать, статью про связный список читай или в книге С.Прата есть разбор, как написать структуру очередь. Называется, что то типа: Моделирование очереди
#14 #1081409
>>1081408
статью = главу
*самофикс
#15 #1081413
>>1081408
Я хочу не научиться просто реализовывать стек или списки, а разобраться с указателями и структурами, потому что дальше придётся именно с ними работать, а не с этими структурами данных.
#16 #1081419
>>1081402
Они не ссылаются сами на себя. Это один объект какого-то класса ссылается на другой объект этого же класса. Как в камере хранения среди всякого хлама лежала бы бумажка с номером другой камеры хранения с похожим набором хлама.
#17 #1081430
>>1081413
Тогда читай обычную книгу по крестам, например в шапке есть книга липпмана для ньюфагов. Думаю, после нее все будет понятно.
#18 #1081431
>>1081430
Спасибо, анон.
#19 #1081505
Анонче, тренируюсь тут в SFML и вдруг мне понадобилось создать стек функций, для более грамотного отображения картинки на экране. У всех разные аргументы, очевидно.
Каким образом это можно организовать? Ну, ясен хуй через стек указателей на функцию, но каким конкретно образом реализовать?
#20 #1081506
>>1081505

> стек


Обосрался, очередь мне нужна
#21 #1081554
"Напишите тип указателя на функцию, которая принимает size_t и char const и возвращает указатель на void."

Вот что это должно значить? Указатель на функцию это же void
, не? В чём я обсираюсь?
#22 #1081555
>>1081554
Быстрофик, void со звёздочкой.
#23 #1081556
>>1081554
void(function)(size_t f, char const s);
#24 #1081557
>>1081555
>>1081556
void(function)(size_t f, char const s);
#25 #1081558
void(function)(size_t f, char const s);
#26 #1081559
Двач ебаный звёзды не вставляет, короче разбирайтесь сами куда их вставлять, там их 2 должно быть.
#27 #1081560
Это я и сам понял. Но нужно же не это, а тип указателя на вот эту функцию. Вот чего я не понимаю.
#28 #1081561
typedef void(tip)(size_t f, char const s);
#29 #1081564
Да не в этом вопрос. Какова типа будет указатель на эту функцию?
#30 #1081566
>>1081564
Идентификаторы убери, вот тебе и тип.
#31 #1081577
>>1081506
std::list<void()(sf::Image &)> fn_list;
fn_list.emplace_back(...);
/
/
for (auto && ptr : fn_list) (
ptr)(image);

ну както так чтоле, можешь в класс обернуть
#32 #1081578
>>1081577
void(ЗВЕЗДАЧКА)(sf::Image &)
#33 #1081621
>>1081564
Ну уж не воид звёдочка, блядь. Твой вопрос подобен вот этому:

>Какого типа будет указатель на int?


>>int *pt


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


Да вот такого и будет, блядь! Статическая типизация - не хуй моржовый, вызвать через указатель на функцию ты можешь функции с одной и той же сигнатурой (возвр. тип и аргументы), и это часть типа указателя.
#34 #1081658

>2к17


>C++


>не использовать std::function<>

#35 #1081665
>>1081658
Одна std-приблуда, ради упрощения роботы с другой std-приблудой. Могут пройти туда, где им самое месть.
#36 #1081670
>>1081564

>Какова типа будет указатель на эту функцию?


std::add_pointer_t<void°(size_t, char const° s)>
#37 #1081677
Поясните плиз, зачем нужны функциональные объекты.
Я о
struct A{
void operator() () {/что-то/}
}
Я как понимаю потом это можно вызывать в коде как
A a;
a(); вызов функционального объекта.
Вопрос в том, зачем это вообще нужно, если можно просто использовать функции? Какой профит от функциональных объектов? Типа передавать их можно как параметры не зная сигнатуры вызова? Потому что обычные функции тоже можно в виде параметров передавать.
#38 #1081678
>>1081677

>Какой профит от функциональных объектов?


Хранить состояние.
#39 #1081679
>>1081678
Хм. И то верно. Но можно же использовать глобальные переменные
# OP #40 #1081681
>>1081679
Можно за твоей щекой ещё хранить состояние
#41 #1081724
>>1081677
Лямбды, например
#42 #1081759
>>1081677
Жалкая имитация функций высшего порядка.
#43 #1081792
>>1081677

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


Как же их тогда вызывать-то, не зная сигнатуры?

>Потому что обычные функции тоже можно в виде параметров передавать.


Нельзя.
#44 #1081817
>>1081759
Или функции высшего порядка — жалкая имитация объектов.
48 Кб, 1280x720
#45 #1081822
Приветствую весь честной люд. Ебусь с сокетами и winapi ещё с прошлого треда.
Есть оконное приложение. В нём есть поле ввода текста и кнопка. При нажатии на кнопку из поля считывается IP-адрес.
https://pastebin.com/NGSM0Fyk

Затем этот IP передаётся в конструктор, который определён вот так:
https://pastebin.com/1tjHxzLi

Функция findMAC() работает нормально, а вот findName()
(//найти доменное имя) - нет.
https://pastebin.com/VkN3LzGG
Пишет, что LPHOSTENT hn = nullptr;

Раньше findName была определена вот так:
https://pastebin.com/uBzba0iE и выдавала то же самое.
ИЧСХ, в консольном приложении всё работает нормально.

Что я делаю не так?
# OP #46 #1081825
>>1081822

>Ебусь с сокетами и winapi ещё с прошлого треда.


Ты тредом ошибся.
#47 #1081841
>>1081554
Нет, void* это указатель на результат, возвращаемый функцией. Так понятно?
#48 #1081874
>>1081759
Зато компилируемая и оптимизируемая.
>>1081677

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


Нет. Можно передавать их в шаблоны, которые инстанциируются для каждого типа функциональных объектов, и если опустить шаблонные параметры (пользуясь автоматической дедукцией), то выглядит это, как функциональное программирование, ведь снаружи не видно увеличения размера скомпилированного кода.
>>1081679
Это будет ОДНО состояние.
#49 #1081875
>>1081825
Я просто предпологаю, что дело в особенностях С++. Потомучто куда-то как-то странно теряются данные
#50 #1081880
>>1081875
Может быть, разница в окружении при запуске консольного и винапи?
#51 #1081886
>>1081880
И об этом тоже думаю, но решения проблемы не вижу
#52 #1081889
>>1081822

>Функция findMAC() работает нормально, а вот findName()


>


WSAStartup сделан? Что возвращает сама функция (код ошибки)?
#53 #1081893
>>1081822
WSAGetLastError что возвращает? попробуй обратный dns для хоста, с которым тестишь, дёрнуть через сосноль, вернёт ли что-нибудь?
#54 #1081899
>>1081875
Я просто предпологаю, что дело в нежелании пользоваться отладчиками.
и схуяли там nullptr?
#55 #1081915
>>1081899
Лол. Я который день пытаюсь узнать почему nullptr
#56 #1081917
>>1081899
А встроенный в студию дебаггер чем плох?
#57 #1081922
>>1081899
А вообще, wsagetlasterror() выдаёт ошибку 11004
#58 #1081932
>>1081917
тем, что его еще запускать нужно

>>1081922
и какие выводы можно из этого сделать, прочитав описание ошибки на msdn?
#59 #1081933
>>1081899
>>1081917
Проигрываю с этих макак не могущих в с++ без отладчика. Отцы принтами отлаживают.
#60 #1081937
>>1081932
На мсдн написано: удалённый комп найден, но не удаётся считать данные в структуру хостент, если обобщённо
#61 #1081941
>>1081822
Я тебе еще в прошлом треде писал, проверь ширину char. Наверняка у тебя тупо мусор в строке, типа "1 9 2 . 1 6 "... или подобная поебень с вопросиками. Которую ты скармливаешь винапи, она думает что это типа "http://1 9 2 . 1 6 ...com", пытается его резолвнуть через DNS и закономерно обламывается.
#62 #1081947
>>1081889
Сделан
>>1081922
#63 #1081948
#64 #1081949
>>1081922
А что это вообще за хуйня? Как оно может работать? Если у хостера на одном айпи два сайта (acmecorp.com и honestahmed.com), какое имя он выдаст? А если учесть обилие CDN.
Алсо, из MSDN:
[gethostbyaddr is no longer recommended for use as of Windows Sockets 2. Instead, use getnameinfo.]
#65 #1081951
>>1081933

>не могущих в куски чужой пасты


поправил немного проигравшего

>>1081937
мне кажется, или ты таки нашел, откуда растут ноги у nullptr?
#66 #1081953
>>1081941
Отнюдь. Я проверял через messagebox, что доходит до функции findName(). Там IP нормально доходит
#67 #1081955
>>1081949
Консольное приложение работает норм. Я ищу доменные имена компов в локальной сети
#68 #1081956
>>1081953

>DWORD IP = inet_addr(Info.IP_address);


>gethostbyaddr((LPSTR)&IP, ...


Может я чего-то не понимаю в этой жизни. Но разве ты тут не кастишь dword к строке?
#69 #1081957
>>1081951

>мне кажется, или ты таки нашел, откуда растут ноги у nullptr?



Допустим, а фиксить-то как?
#70 #1081961
>>1081956
В консоли это работает
#71 #1081962
>>1081957
сравнивай с соснольной версией же
#72 #1081963
>>1081961
Меня не ебет что там за мусор в консоли у тебя случайно совпал с каким то айпи.
#73 #1081964
>>1081961
Что у тебя работает в сосноли? Какой результат работы?
#74 #1081972
>>1081963
>>1081964
Я забиваю в консольную любой локальный айпишник в своей организации, мне выдаётся соответствующие доменное имя
#75 #1081976
>>1081962
Было бы всё так просто, не пришёл бы я сюда
#76 #1081979
Вы понимаете что вы — спермобляди уже, всё?
#77 #1081992
>>1081976
okay, попробуем иначе
какие могут быть причины неудачи считывания данных в структуру хостент?
+ мусор в строке(как уже подмечалось)
- не инициализирована сама структура?
- указатель на ложный адрес?
- неправильный формат данных?
107 Кб, 1280x853
#78 #1081994
#include <windows.h>
#include <iostream>
using namespace std;
int main()
{
MEMORYSTATUSEX statex;
statex.dwLength = sizeof(statex);
GlobalMemoryStatusEx(&statex);
cout << "Physical RAM => " << (float)statex.ullTotalPhys / 1073741824 << endl;
}
Объясните, что тут происходит? MEMORYSTATUSEX, как я понял, это структура, которая хранит инфу о памяти. А что такое statex? Дальше тоже ничего не понимаю, кроме вывода размера ОЗУ в гигабайтах.
#79 #1081997
>>1081992

>мусор в строке


Завтра на работе проверю с помощью strlen()

>не инициализирована сама структура


Так она инициализируются с помощью gethostbyaddr()

>неправильный формат данных


Быть может

>указатель на ложный адрес


Ты о чём?
#80 #1082000
>>1081994
Работает не трогай.
Че там непонятного то?
-ex значит расширенная версия чего-либо.
statex - расширенная версия stat, то есть статов.
1073741824 очевидное 1024*1024.
#81 #1082002
>>1081994

>MEMORYSTATUSEX


Пха-ха-ха
#82 #1082003
>>1082000
ull очевидное unsigned long long
statex переменная созданная в первой же строчке
#84 #1082005
>>1081994
MEMORYSTATUSEX structure
Contains information about the current state of both physical and virtual memory, including extended memory. The GlobalMemoryStatusEx function stores information in this structure.
#85 #1082017
>>1081997
мог бы захардкодить айпи в обход гуя и таким образом проверить, влияет ли форма ввода на запрос
она может инициализироваться позже, а в момент запроса быть nullptr(сорян, не держу пасту перед глазами, чекни assert'ом ее мож)
формат данных также не должен зависеть от гуя(хардкод для теста, или как ты там выводишь)
и я имел ввиду оператор взятия адреса, который может брать совсем не то, что нужно
#86 #1082026
>>1081972
Я считаю, что ты врешь, и исходники не идентичны в консольной и виндовой версии. Причина указана здесь >>1081956
#87 #1082030
Как вкатиться в QT? Что там есть кроме гуя (который я вообще не писал никогда)?
Какие простенькие проекты на гитхабе глянуть как примеры использования?
#88 #1082038
>>1082017
Проверю завтра. Я проверял с помощью messagebox. Айпи передаётся вроде норм, но чекну тип передаваемых данных. Завтра отпишусь
#89 #1082039
>>1082026
Что тебе не нравится? Это просто специфичные типы винды
#90 #1082043
>>1082039
Я еще раз повторяю, у тебя DWORD (грубо говоря int32_t), когда ты вызываешь inet_addr, у тебя в него попадает упакованный в 4 байта IPv4, например 192.168.1.1 превратиться 0x0101A8C0.
Далее, LPSTR это грубо говоря char*. Охуеть, что по твоему делает (LPSTR)&IP? Ты берешь адрес переменной IP в памяти, например при тестовом запуске у меня это 0x0032FBEC. И УТВЕРЖДАЕШЬ КОМПИЛЯТОРУ ЧТО У ТЕБЯ ТАМ НЕ ИНТ, А СТРОКА БЛЖАД. И передаешь ее первым аргументом в функцию. Функция честно пытается распарсить мусор, который там лежит, что в моем запуске выглядит как AЁ\x1\x1MMMMM и так до ближайшего \0 символа, пытается заресолвить эту строку через DNS как http адрес и обламывается. И че тут непонятного то? Пиздуй с такими кастами (LPSTR)&IP нахуй в C-тред а лучше вон из профессии.
19 Кб, 915x544
#91 #1082044
>>1082039

>Что тебе не нравится?


>специфичные типы винды


this

а вообще сокеты интересная тема
#92 #1082047
>>1082044

>~


>~


>~


>~


>-- INSERT --


Тебя только пожалеть если, инвалид.
#94 #1082053
>>1082043
Если ты чего-то не понимаешь, это не означает, что это не правильно. Я передаю в inet_addr() айпи в сетевом формате, он преобразовывает его в целое число. А потом это число передаю в gethostbyaddr(), но там первый параметр строковый.

Короче, завтра приведу в порядок типы и отпишусь
#95 #1082054
>>1082044
Это что Линукс? Ну и мерзость
#96 #1082055
>>1082053

>А потом это число передаю в gethostbyaddr(), но там первый параметр строковый.


Шизик.
#97 #1082057
>>1082047
>>1082054
Ебать и с этими олигофренами я сижу на одной борде.

Это блять VIM. Линукс.. ебать какие же вы конченые пиздец просто.
мимо другой анон
#98 #1082058
>>1082057

>VIM


Я так и сказал - инвалидов надо жалеть.
#99 #1082059
>>1082057
Да похуй. Теперь это винапи-тред
#100 #1082060
>>1082054
шindoшs7 жи + cygwin

>>1082047

>инвалид


это не я, это vim такой, лал

>>1082053

>gethostbyaddr


во всем цивилизованном мире deprecated и только в msdn no longer recommended, лал
23 Кб, 604x340
#101 #1082063
>>1082060

>шindoшs7 жи + cygwin


Да ты отличный парень, держи тогда няшку
#102 #1082074
>>1082060

>cygwin


Нахуя, когда уже есть msys2?
11 Кб, 861x242
#103 #1082075
>>1082059

>винапи

#104 #1082076
>>1082074

>msys2


Зачем, если есть mingw?
#106 #1082082
>>1082075
Ну да, есть такое
#107 #1082085
>>1082076
Там есть удобный pacman. И все работает из коробки
#108 #1082086
>>1082060

>шindoшs7 жи + cygwin


Зачем, если есть зонд10 + WSL?

> во всем цивилизованном мире deprecated и только в msdn no longer recommended


Это по смыслу одно и то же.
#109 #1082090
>>1082081

>ProcessTrace is defined to never return


ахуенчик

>>1082086
когда придет время ПЕРЕУСТАНАВЛИВАТЬ, тогда и обмажусь
#110 #1082102
>>1081792

>Нельзя.


Можно. Передать в параметре указатель на эту функцию.

>Как же их тогда вызывать-то, не зная сигнатуры?


Не вызвать, а передать. Просто берёшь созданный объект и передаёшь его. А в случаи указателей на функцию тебе нужно создать такой указатель, который бы удовлетворял сигнатуре функции на которую он ссылается
#111 #1082106
>>1082081
Спс, поржал
#112 #1082108
>>1082081
Напомнило историю, как из ядра линукса пытались выпилить какую то блочную хуергу лет 10.
#113 #1082115
>>1082060

>во всем цивилизованном мире deprecated и только в msdn no longer recommended


http://whatis.techtarget.com/definition/deprecated

> In IT, deprecation means that although something is available or allowed, it is not recommended

#114 #1082116
>>1082081
какой-то игродел бомбанул от того, что нужно использовать тред, и поэтому winapi это плохо. охуительные истории
#115 #1082127
>>1082115
okay, пусть так, спасибо за просвещение
беда в менталитете прост скорее всего в моем
- устарело, знач устарело, нах это говно мамонта трогать, мы же не лохи, да?
- не рекомендовано? эт кто там такой умный? да у меня асе работает, ЧЯДНТ?

отличия заметны, надеюсь
#116 #1082128
>>1082116
winapi это действительно пиздец. Я сам пишу часто на чистом С под апи линукса, и если сравнивать винапи и линукс апи это не то что даже небо и земля, это просто земля и космос. Ибо хуже АПИ чем винапи я нигде не видел еще. Там без преувеличения хуево абсолютно все. Даже их code style это полнейший тотальный нечитабельный пиздец.
#117 #1082149
>>1082128
Ох лол.
Это троллинг такой?
А ну ка приведи код для линукс апи ох лол ох лол создающий формочку с кнопкой и текстом.
9 Кб, 480x360
#118 #1082153
>>1082149
Мудак что ли совсем? Какая нахуй формочка блять? Ты сука иди нахуй в JS тред со своими пидарскими формочками. У ядра нету никаких формочек хуермочек для пидоров.
#119 #1082155
>>1082128

>api линукса


Не, ну если сравнивать winapi и отсутсвие api то отсутствие конечно выигрывает.
#120 #1082156
>>1082155
Ммм интересно эти дегенераты вообще программисты или залетные аутисты вкатывальщики 500кк/наносекунда?
#121 #1082216
>>1082156
Двачую. Нашли какой то api линукса, лол. Ведь всем известно, что в линухе придерживаются политики "no stable api nonsense"
#122 #1082246
>>1082102

>Можно. Передать в параметре указатель на эту функцию.


Но не функцию.

>Не вызвать, а передать


А нахрена нужны функциональные объекты, если в последствии их не вызывать?
sage #123 #1082255
>>1082043

>И УТВЕРЖДАЕШЬ КОМПИЛЯТОРУ ЧТО У ТЕБЯ ТАМ НЕ ИНТ, А СТРОКА БЛЖАД. И передаешь ее первым аргументом в функцию. Функция честно пытается распарсить мусор, который там лежит,


Невинной душе позволительно не знать, что таким образом винда действительно принимает инт32.
>>1081899
nullptr у него потому, блядь, что запрос ошибку вернул, а ошибку он даже на MSDN не посмотрел.
#124 #1082256
>>1082102

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


Что ты за хуйню пишешь? Не можешь ты передать функциональный объект, это не самостоятельный тип. Все самые полезные функции, принимающие функциональные объекты - это шаблоны, которые инстанциируются для каждого типа, который ты в них передаёшь - то есть, барабанная дробь, "создают" сигнатуру, под которую подходит метод operator() объекта.
#125 #1082258
>>1082256

>Не можешь ты передать ЛЮБОЙ функциональный объект


Ну, то есть, в лучшем случае ты напишешь функцию, которая принимает std::function<pizda(huynya)>, то есть, объект должен иметь оператор() с заранее известной сигнатурой.
166 Кб, 959x716
#126 #1082259
Здаров. На связи кун, который вчера да и сегодня ебался с винапи и сокетами. Сегодня, с помощью strlen, я понял где ошибка.
Вот есть форма ввода и кнопка:
https://pastebin.com/NGSM0Fyk

1.Если я забиваю в поле ввода N-значную С-строку, GetWindowText() сохраняет её в массив IPstr.
2.Я чекнул длину IPstr после ввода. strlen() возвращает кол-во символов без '\0', то есть только кол-во введённых. Но вместо этого он возвращал кол-во символов N+1.
3.C помощью прохода циклом for, я выяснил, что текст из формы записывается в IPstr ВНЕЗАПНО не IPstr[0], а с
IPstr[1].
4. Таким образом, в конструктор класса computer я передаю
&IPstr[1] и всё работает.

Бля, я понимаю, что это говнокод в кубе. И я даже не знаю почему это происходит. Имеет ли значение, что в свойствах проекта я изменил кодировку c Unicode на многобайтовую.

Короче, спасибо большое всем кто вчера вечером помогал
#127 #1082261
>>1082255

>nullptr у него потому, блядь, что запрос ошибку вернул, а ошибку он даже на MSDN не посмотрел



вчера раз 5 пояснил, что посмотрел. И хули ты тут сагаешь?
#128 #1082263
>>1082255

>Невинной душе позволительно не знать, что таким образом винда действительно принимает инт32.


Схуяли? Там принимается строка, а не хэндл.
#129 #1082265
>>1082261
Приклеилось.
>>1082263

>A pointer to an address in network byte order.


Как бэ намекаэ, что это не строка, так как на строки endianness не влияет, а число. Смотри примеры на MSDN.
#130 #1082313
>>1082216
Ну ты же нихуя не знаешь и ниразу не видел в глаза линукс и его апи и кукарекаешь тут?
#131 #1082417
>>1082216
Stable api nonsense - только про дрова же, а не интерфейс ядра с миром.
#132 #1082430
Анон, подскажи плиз, я что-то туплю.

У меня есть (на самом деле нет, но хотелось бы) массив объектов. Ключи - int, значения - объекты моего класса.
В процессе работы происходит цикл, в котором каждый объект класса выполняет операцию и получает результат, который он должен куда-то записать. Мне кажется хорошей идеей записывать результат вместо текущего ключа объекта.
Как это реализовать? Контейнеры желательно stl или qt
В PHP всё было проще, пара операций, а в С++ я уже пол дня долблюсь
#133 #1082447
>>1082430
В stl есть MAP. Это типа массив в виде хеш-таблиц как в ПХП. Т.е. ключом может быть всё что угодно
#134 #1082457
пуканы, что посоветуете по qt?
#135 #1082463
>>1082457
Шлее.
#136 #1082470
>>1082447
Спасибо. У меня был косяк в том, что я, по пхп-привычке, пытался изменить ключ multimap, Как только я перестал это делать и начал изменять значение, то всё заработало.
#137 #1082484
#138 #1082489
>>1082470
Тэкс. Отсортировать multimap из коробки нельзя. Ладно, окда, напишим алгоритмик.
#139 #1082508
>>1082256
Функциональный объект
struct A{
void operator() () {/что-то/}
}
Создаёшь его экземпляр как A a;
И передаешь этот a куда тебе угодно.
#140 #1082510
>>1082489
Может лучше отдельным вектором из пар ключа с указателем на объекты?
#141 #1082557
Я только что изучал исходники какой то хуйни на гитхабе и внезапно открыл, что можно передавать функции в качестве параметров. Десять из десяти, ебать, даже одиннадцать из десяти, я такого удовольствия не получал с тех пор, как впервые вывел на экран 3д-карту своей комнаты.
#142 #1082564
>>1082557
Что же с тобой тогда будет, если ты попробуешь какой-нибудь функциональный язык?
#143 #1082567
>>1082557

>передавать функции в качестве параметров.



так через указатель можно и аллаха передать
#144 #1082601
>>1082567
>>1082564
Я на плюсах только опенгл попердолил и укатился на шарп
#145 #1082610
>>1082508
У тебя все функции в программе - это воид()? Ответ через глобальные переменные возвращаешь? 1/10 за смехуёчки.
#146 #1082707
>>1082265

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


UTF-16LE, UTF-16BE
#147 #1082711
>>1082707

>char звёздочка address

#148 #1082815
>>1082601
В шарпах же тоже лямбды есть, и много. Шарпы без LINQ - говно же.
#149 #1082826
>>1082815
Знатно пригорело. То ли еще будет
#150 #1082835
>>1082265
Я понял, там указатель на массив байтов, это тот шизик сам придумал LPSTR, а чо, указатель же? На байтики? Значит можно писать.
#151 #1082846
При передаче вектора в функцию по значению - содержимое вектора копируется в новый объект?

void t( std::vector<float> _in ) {}
#152 #1082851
>>1082610
В чем проблема хранить возвращаемое значение в самом функциональном объедке?
#153 #1082855
>>1082846
Все элементы копируются, как я понимаю.
#154 #1082924
>>1082835
LPSTR - это и ест char звёздочка в мире WinAPI.
>>1082846
Да.
>>1082851
Толстовато уже, хватит.
#155 #1082931
Хочу писать игровой движок. В книге Game Engine Architecture пишут, что обычно все крупные подсистемы (манагер файловой системы, ресурсов, рендеринга и прочие) для удобства делают глобальными. Значит их конструкторы будут вызываться до входа в main, и не в определенном порядке (что иногда может стать проблемой). И соответственно деструкторы тоже. И предлагают оставлять их тела пустыми, а вместо этого сделать методы SturtUp и ShutDown, чтобы дергать их вручную в нужном порядке, где-то внутри main или метода инициализации движка а потом, может даже напердолить это все автоматом на графах.
Норм ли это или есть более подходящий для таких целей дизайн?
#156 #1082934
>>1082931
Рановато тебе с твоим скилом писать игровые движки.
А глобальные объекты можно сделать в виде указателя и инициализировать потом.
#157 #1082939
>>1082931
Можно и так, но ещё лучше будет сделать глобальный объект, конструктором которого будет содержимое StartUp, a деструктором - содержимое ShutDown. Так ты исключаешь один источник багов.
#158 #1082940
>>1082931
Пока делаю так:

//шаблон абстрактного манагера manager.h

#pragma once

template <typename T>
class Manager
{
public:
static T& Instance()
{
static T s;
return s;
}

virtual void StartUp() final
{
std::cout << " Starting manager: " << typeid(T).name() << "..." << std::endl;
OnStartUp();
std::cout << " Manager [" << typeid(T).name() << "] is started." << std::endl;
};

virtual void ShutDown() final
{
std::cout << " Stopping manager: " << typeid(T).name() << "..." << std::endl;
OnShutDown();
std::cout << " Manager [" << typeid(T).name() << "] is stopped." << std::endl;
};

protected:
Manager() = default;
~Manager() = default;
virtual void OnStartUp() = 0;
virtual void OnShutDown() = 0;

private:
Manager(Manager const&) = delete;
Manager& operator=(Manager const&) = delete;
};

//объявление конкретного манагера inputmanager.h

#pragma once

#include "manager.h"

namespace ENGINE
{
class InputManager : public Manager<InputManager>
{
public:

private:
virtual void OnStartUp() override;
virtual void OnShutDown() override;
};
}

extern ENGINE::InputManager input;

//Реализация конкретного манагера inputmanager.cpp

#include "inputmanager.h"
#include "graphicsmanager.h"

using namespace std;

ENGINE::InputManager input;
void ENGINE::InputManager::OnStartUp()
{
auto window = graphics.window;
//glfwSetInputMode(window, GLFW_STICKY_KEYS, GL_TRUE);
glfwSetKeyCallback(window, key_callback);
glfwSetCursorPosCallback(window, cursor_position_callback);
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
//glfwSetInputMode(window, GLFW_STICKY_MOUSE_BUTTONS, 1);
glfwSetMouseButtonCallback(window, mouse_button_callback);
glfwSetScrollCallback(window, scroll_callback);
}

void ENGINE::InputManager::OnShutDown()
{
//пока хз что здесь может понадобиться
}

>>1082934

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


Разве это может меня остановить?
#158 #1082940
>>1082931
Пока делаю так:

//шаблон абстрактного манагера manager.h

#pragma once

template <typename T>
class Manager
{
public:
static T& Instance()
{
static T s;
return s;
}

virtual void StartUp() final
{
std::cout << " Starting manager: " << typeid(T).name() << "..." << std::endl;
OnStartUp();
std::cout << " Manager [" << typeid(T).name() << "] is started." << std::endl;
};

virtual void ShutDown() final
{
std::cout << " Stopping manager: " << typeid(T).name() << "..." << std::endl;
OnShutDown();
std::cout << " Manager [" << typeid(T).name() << "] is stopped." << std::endl;
};

protected:
Manager() = default;
~Manager() = default;
virtual void OnStartUp() = 0;
virtual void OnShutDown() = 0;

private:
Manager(Manager const&) = delete;
Manager& operator=(Manager const&) = delete;
};

//объявление конкретного манагера inputmanager.h

#pragma once

#include "manager.h"

namespace ENGINE
{
class InputManager : public Manager<InputManager>
{
public:

private:
virtual void OnStartUp() override;
virtual void OnShutDown() override;
};
}

extern ENGINE::InputManager input;

//Реализация конкретного манагера inputmanager.cpp

#include "inputmanager.h"
#include "graphicsmanager.h"

using namespace std;

ENGINE::InputManager input;
void ENGINE::InputManager::OnStartUp()
{
auto window = graphics.window;
//glfwSetInputMode(window, GLFW_STICKY_KEYS, GL_TRUE);
glfwSetKeyCallback(window, key_callback);
glfwSetCursorPosCallback(window, cursor_position_callback);
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
//glfwSetInputMode(window, GLFW_STICKY_MOUSE_BUTTONS, 1);
glfwSetMouseButtonCallback(window, mouse_button_callback);
glfwSetScrollCallback(window, scroll_callback);
}

void ENGINE::InputManager::OnShutDown()
{
//пока хз что здесь может понадобиться
}

>>1082934

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


Разве это может меня остановить?
#159 #1082943
>>1082931
Есть, называется Dependency Injection.
Выглядит примерно так

#include "di.hpp"
namespace di = boost::di;
...
auto injector = di::make_injector(di::bind<IScene>.to<Scene2D>(), di::bind<IComponent>.to<Component2D>())
View2D view = injector.create<View>();
Суть в том, что оно само пройдется по зависимостям и создаст экземпляры классов в правильном порядке.
#160 #1082958
>>1082943
Господи какой же с++ уебищный.
#161 #1082959
>>1082958

>Мааам, тут две функции на шаблонах - СЛОЖНААААА

#162 #1082961
>>1082958
Ну да, есть немножко. Но так то все понятно. Если без спецсимволов почти чистый англюсик.
make injector
bind IScene to Scene2D
bind IComponent to Component2D
injector.create View
Алсо нам не видно откуда ты кукарекаешь и как решаешь подобную задачу (порядок инициализации типа глобальных объектов)
#163 #1082969
Может кто дать цитату из стандарта почему в классе можно обращаться к закрытым членам другого объекта этого-же класса?
#164 #1082970
>>1082969
Ты уверен что обращаешься к членам другого объекта, а не этого же?
#165 #1082971
>>1082943
Ну там по идее вообще 5 функций должно быть.
Но ты видимо сам не понял что криво что-то откуда то скопипастил ибо выражение >di::bind<IScene>.
Не скомпилируется.
#166 #1082974
>>1082970
Да, как по твоему конструкторы копирования работают?
#167 #1082976
>>1082971
Копипастил из своего тестового проекта, где с этим говном разбираюсь, компилируется и работает, не понял о чем ты.
#168 #1082979
>>1082976
Хорошо, как ты объяснись тогда что это?

>bind<IScene>


Экземляр объекта или тип?
Если бы это был экземпляр то там бы стояли круглые скобки в конце, а если тип, то как ты из него методы вызываешь?
#169 #1082994
>>1082979
Да не, все работает, вот перепроверил
https://wandbox.org/permlink/wHhM6f5WT7IbzBYt
Объяснять как работает магия буста внутри не берусь.
#170 #1082996
>>1082969
http://eel.is/c++draft/class.access

> its name can be used only by members and friends of the class in which it is declared.


Как видишь, про экземпляры ни слова, только про классы. private - это защита только от пользователя кода, а не от автора кода.
#171 #1083006
class FileNotFoundException : public std::runtime_error
{
public:
explicit FileNotFoundException(std::string_view filename) : _filename(filename) {};
virtual ~FileNotFoundException() throw () {}
virtual const char* what() const throw () {
return ("File " + _filename + " not found.").c_str();
}
protected:
std::string _filename;
};

>error C2512: 'std::runtime_error': no appropriate default constructor available


Как это унаследовать, то?
#172 #1083008
>>1082979
Точнее так (этот вариант с bind)
https://wandbox.org/permlink/A6HdvOAftcwGMe7Q
#173 #1083013
>>1083006
Блин, вот зачем ему нужен этот глупый конструктор?
explicit FileNotFoundException(std::string_view filename) : _filename(filename), std::runtime_error("") {};
#174 #1083015
>>1082994

>Объяснять как работает магия буста внутри не берусь.


Вся суть С++ макак. Не могут объяснит ькак работает их язык. лол.
#175 #1083019
>>1083015
А ну да, так то любой питонист или яваскриптер, естественно, сразу же объяснит все внутренности пакетов, которые он скачал с npm и дергает. Ору с дегенерата.
#176 #1083028
>>1083019
Ору с дегенерата ""пишущего"" на С++ и равняющегося на явасриптеров и питунхонов.

С++ - БУДУЩИЕ УЖЕ ЗДЕСЬ!
#177 #1083034
Сап, решил я запилить свой велосипед в виде обертки над sqlite3. В процессе у меня встал вопрос: насколько безопасно можно использовать ф-ю sqlite3_column_type для определения типа в колонке и использования его для выбора функции получения данных типа sqlite3_column_double?
В доках написано: "The value returned by sqlite3_column_type() is only meaningful if no automatic type conversions have occurred for the value in question. After a type conversion, the result of calling sqlite3_column_type() is undefined, though harmless.". Что-то я не осилил момент про авто конверсию типов. Когда она происходит? Короче, взываю к вам, всезнающие аноны.
#178 #1083043
>>1083028
Сам-то кем будешь?
#179 #1083044
>>1083034
Кажется, тут речь идет про автоконверсию внутри sql. https://sqlite.org/datatype3.html#affinity
#180 #1083046
>>1083028
Да, это так. Проблема в чем? Срать я хотел на байтики, просто беру и пишу на плюсах как на яве.
#181 #1083053
>>1083043
Боюсь это за гранью твоего разума.

>>1083046
Так при чем тут байтики, если ты не понимаешь синтаксических конструкций языка? Можно сказать ты не понимаешь самых основ и базиса.
#182 #1083066
>>1082994
Как-то ты странно logger используешь в main.
#183 #1083068
>>1083053
Давно boost::di стал основой синтаксиса языка?
#184 #1083077
>>1083068
Ты в курсе что буст это всег лишь библиотека написанная в рамках синтаксический правил языка С++? И там нету никаких специальных конструкций меняющих синтаксис, не входящих в стандарт языка.
А ты не в состоянии пояснить за синтаксическую конструкцию языка, на котором ты пишешь.
#185 #1083080
>>1083077
Судя по всему, я понял в чем твоя проблема, походу Visual Studio использует устаревший стандарт и не может собрать без так необходимых тебе скобочек.
То, что это работает в современном компиляторе, показано по ссылке выше.
Он не ребенок и сам может вывести, что bind<IWindow> и bind<IWindow>() - один и тот же (структура).

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


Разницу между использованием буста и переписыванием всего буста с обоснованием не понимаешь?
#186 #1083086
>>1083080

> Visual Studio


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


>не может собрать


Лол, не поверишь но у меня этого говна даже нету на компьютере.
Я хоть и давно не пишу на С++, но знаю его достаточно хорошо, чтобы понимать синтаксис не вставляя его в IDE и т.п.
И вот такое выражение myclass<T> считается типом, а myclass<T>() является созданием нового инстанса этого класса. А вот что означает myclass<T>.foo() я не представляю, ибо это выглядит как доступ к методу типа, что является бессмыслицей. А вот myclass<T>().foo() выглядит вполне легитимно.
Но ты даже этого не знаешь, и не можешь объяснить как работает то, что ты используешь в своем хеловорде. Грубо говоря ты не знаешь базовый синтаксис языка.
Если бы тебе задали такой вопрос на собеседовании, ты бы конечно не ответил на него и тебе бы сказали - Мы вам перезвоним...
Вот я и говорю на что во-первых с++ уебищный язык потому, что превратился в язык типа write only, ибо разобрать что-то что там наговнокодили на шаблонах в том же бусте или просто васян-либе если и реально то довольно тяжко и очень муторно, поэтмоу и на нем только пишут, без предусматривания возможности чтения программы.
Во-вторых, новое поколение макак даже языка не знает, что демонстрирует пример выше и не понимает основных синтаксических конструкций, что я вполне понимаю, ибо разбираться в том, что там наковнокодили в новых стандартах поехавшие из комитета, которые решили ухудшить и окончательно доебать язык, который и без того bad by design.
Думаю ( и очень надеюсь ) С++ умрет через пару десятков лет окончательно, ибо кому нужна максимальная производительность, они как и писали на С так и пишут. А кому это не важно пишут на нормальных языках с изначально хорошим дизайном. Даже возьми тот же питон ( хоть я и не считаю это хорошим языком, но точно лучше с++), который очень сильно используется в дата саенсе, где критические по производительности модули написаны на С и просто вызываются из питона.
В общем-то от с++ отказались уже все нормальные люди, которые не повязанны на нем легаси кодом.
#186 #1083086
>>1083080

> Visual Studio


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


>не может собрать


Лол, не поверишь но у меня этого говна даже нету на компьютере.
Я хоть и давно не пишу на С++, но знаю его достаточно хорошо, чтобы понимать синтаксис не вставляя его в IDE и т.п.
И вот такое выражение myclass<T> считается типом, а myclass<T>() является созданием нового инстанса этого класса. А вот что означает myclass<T>.foo() я не представляю, ибо это выглядит как доступ к методу типа, что является бессмыслицей. А вот myclass<T>().foo() выглядит вполне легитимно.
Но ты даже этого не знаешь, и не можешь объяснить как работает то, что ты используешь в своем хеловорде. Грубо говоря ты не знаешь базовый синтаксис языка.
Если бы тебе задали такой вопрос на собеседовании, ты бы конечно не ответил на него и тебе бы сказали - Мы вам перезвоним...
Вот я и говорю на что во-первых с++ уебищный язык потому, что превратился в язык типа write only, ибо разобрать что-то что там наговнокодили на шаблонах в том же бусте или просто васян-либе если и реально то довольно тяжко и очень муторно, поэтмоу и на нем только пишут, без предусматривания возможности чтения программы.
Во-вторых, новое поколение макак даже языка не знает, что демонстрирует пример выше и не понимает основных синтаксических конструкций, что я вполне понимаю, ибо разбираться в том, что там наковнокодили в новых стандартах поехавшие из комитета, которые решили ухудшить и окончательно доебать язык, который и без того bad by design.
Думаю ( и очень надеюсь ) С++ умрет через пару десятков лет окончательно, ибо кому нужна максимальная производительность, они как и писали на С так и пишут. А кому это не важно пишут на нормальных языках с изначально хорошим дизайном. Даже возьми тот же питон ( хоть я и не считаю это хорошим языком, но точно лучше с++), который очень сильно используется в дата саенсе, где критические по производительности модули написаны на С и просто вызываются из питона.
В общем-то от с++ отказались уже все нормальные люди, которые не повязанны на нем легаси кодом.
#187 #1083088
Байтаны, мне тут нужно визуализировать в реалтайме пару тысяч движущихся объектов. Как мне их обработать? OpenGL в кьюте слишком медленный получается. Мне проще самому что-то сделать, или я просто делаю что-то не так? Что делают разработчики движков, чтобы получать высокопроизводительную отрисовку на калькуляторах?
#188 #1083132
>>1083086
Я понимаю, что ты решил троллить тупостью, но никакого write only в указанном примере и близко нет, наоборот, он максимально прозрачен, и ты можешь его настроить как угодно под свои синглтоны. Напоминаю, что я этот пример предложил как простейшую замену говнокоду, где глобальные инстансы всяких ресурсменеджеров инициализируются в неопределенном порядке. Эту проблему DI полностью устраняет, записью буквально в одну строчку. Ты же доебываешься до сраной реализации, в которой я могу тебя отправить лишь к авторам буста, поскольку я упомянул, что мои познания в языке ниже, чем у авторов буста. Если они могут сделать автовывод типа без скобочек, значит они могут. Я же показал пример простого использования сложной библиотеки, а ты требуешь чтобы я описал реализацию этой библиотеки. Как работает - тут все совершенно очевидно, make_injector принимает гребаный тип, а что и как в этом типе выводится - это детали реализации, которые никого не ебут в данном случае, все что нам надо сделать в этом простейшем примере - декларативно описать, какому твоему интерфейсу соответствует какая твоя реализация, и вызвать соответствующий метод. Все, как в твоем любимом пайтоне.
#189 #1083134
>>1083080

> Он не ребенок и сам может вывести, что bind<IWindow> и bind<IWindow>() - один и тот же (структура).


Ебать дебил.

>>1083086
В C++14 завезли шаблонные переменные. http://en.cppreference.com/w/cpp/language/variable_template
#190 #1083136
>>1083088
опенгл должен быть норм, если его правильно использовать.
#191 #1083202
>>1083132

> доебываешься до сраной реализации


Ну ты и дегенерат. Я 10 раз писал постами выше, про синтаксическую конструкцию аля foo<T>.bar(), которую ты объяснить не можешь и это не относится к бусту это относится к СИНТАКСИСУ языка, а не к реализации. Сука какой же ты тупой олень, тебе не на с++ писать надо, а вообще программировать нельзя.

>>1083134

>В C++14 завезли шаблонные переменные


Вот это многое объясняет, благодарствую.
А дебил выше, судя по всему, даже не утруждал себя в изучении уже ненового стандарта, зато кукарекать начал.
#192 #1083213
Скоро в армию забирают, кто из анонов прогеров служил, подскажите как не потерять скилы или даже подтянуть? Что можно взять с собой, и может можно как-то договориться чтобы был доступ к компьютеру, мб войска какие есть куда мне стоит попроситься чтобы прогать можно было?
#193 #1083217
>>1083202
Какой же ты даун, тебе уже раза три ответили, что можно писать синтаксическую конструкцию как foo<T>.bar(), так и foo<T>().bar(), потому что это вообще никого не ебет, это внутренняя реализация библиотеки, по сути её DSL. Ладно, заканчиваю кормить зеленого.
143 Кб, 480x429
#194 #1083219
>>1083217

>можно писать синтаксическую конструкцию как foo<T>.bar(), так и foo<T>().bar()


Поциэнт с синдромом дауна, до сих пор не понял в чем отличие, хотя ему даже ссылку на описание привезли.
#195 #1083225
>>1083006
Инициализируй его в конструкторе:
struct A:B{
A():B{} {}
};
#196 #1083261
>>1083225

>A():B{} {}


скорее A(std::string_view s): B{s}{}
#197 #1083271
>>1083261
И пустой строкой не стоит инициализировать, там не просто так нет конструктора по умолчанию, там должно быть осмысленное сообщение об ошибке
#198 #1083272
>>1083219
В том вызове make-shared разницы и нет. Погоди, ты реально считаешь, что там вызывается какой-то метод?
#199 #1083279
>>1083261
До этого он и сам догадается.
#200 #1083280
>>1083217

>можно писать синтаксическую конструкцию как foo<T>.bar(), так и foo<T>().bar(), потому что это вообще никого не ебет, это внутренняя реализация библиотеки, по сути её DSL


Боже, какой дибил. Ты серьезно?
36 Кб, 1062x521
#201 #1083289
Задача по переводу числа в другие системы счисления. Вроде все верно происходит, кроме самого последнего момента: вывода массива. Понял это по тому принципу, что элементы массива пишутся через пробел. Что я не так сделал?
#202 #1083292
>>1083289
Какая-то лютая хуйня, найди образец на стековерфлоу и сверь.
#203 #1083298
>>1083289

>int c;


>buffer[c] << i;


Ну нихуя ж себе.
#204 #1083299
>>1083292
А по существу нечего сказать? На stackoverflow одни printf и itoa. При этом мне желательно обойтись как раз без этих вещей. Я только не могу понять, почему элементы в массивах имеют такое значение.
#205 #1083301
>>1083299
Видишь ли, гнида, я по существу говорю только людям, которые сами работали. Ты сюда какой-то выблев принёс, который из хуя высосал, мне в нём разбираться не по масти. Ищи лучше, мразь, раз уж сам написать такую простую вещь не в силах. Это крест твой, творог подзалупный.
#206 #1083302
>>1083298
При
buffer[c] = i
тоже полную хрень выводит.
#207 #1083303
>>1083301

>которые сами работали


>сам ни в чем разобраться не могу


Ну так бы и сказал.
#208 #1083304
>>1081237 (OP)
Я правильно понимаю, что С++ это С с ООП?
#209 #1083305
>>1083304
Нет.
#210 #1083307
>>1083305
Может быть ты программист?
#211 #1083308
Анонасы, надо DLL ебануть на плюсах с C++ AMP/CUDA, но не ебу как из шапра туда данные передавать. Может кто рассказать по теме?
#213 #1083311
>>1083303
Не обращай внимания на шизика >>1083301
и напиши уж тогда buffer[c]=i+'0'. Но это тебе поможет только для двоичной системы. Тебе бы про ASCII коды узнать.
#214 #1083312
>>1083304
Кроме ООП, С++ обрёл ещё и капельку функционального программирования и STL. А так - да.
#215 #1083314
>>1083310

>как передавать данные


>линк с функцией без аргументов


Спасибо, добрый человек
#216 #1083317
>>1083314
Дальше сам, добрый человек. Ключевые слова я тебе дал, теперь попотей, поищи, как твой тип передавать, тем более что ты, сука, даже не удосужился его в своём вопросе упомянуть.
https://www.codeproject.com/Articles/66244/Marshaling-with-C-Chapter-Marshaling-Simple-Type
#217 #1083321
>>1083280

>пук


Аргументы будут? То, что это работает, и соответствует документации библиотеки, приведено по ссылке выше.
#218 #1083322
>>1083302
Он тебе пишет про то, что
int c
эквивалентно
int c = random(seed(phaseOfMoon));
#219 #1083324
>>1083304
С с ООП это Си-с-классами
#220 #1083327
>>1083317
В хуй мне нужны ключевые слова по ссылкам, на которых я сто раз был? Одни, блядь, целые трактаты про marshalling выдают, другие про какой-то interop загоняют, третьи вообще предлагают пересесть на c++/cli. Мне нужно передать объект, либо хитровыебанный массив, назад скорее всего вернуть только хитровыебанный массив.
#221 #1083328
Сап, смотрю на cppreference документацию по одному из контейнеров STL, там про метод iterator insert( iterator pos, const T& value ); пишут:

>If an exception is thrown, there are no effects (strong exception guarantee)


Про возможные типы выбрасываемых исключений ничего.
А что может выкинуться, кроме std::bad_alloc / std::invalid_argument ?
inb4: ничего.
#222 #1083330
>>1083327

> на которых я сто раз был?


И чё, не попёрло? Тогда вон из профессии.

> Мне нужно передать объект


Класс это не только данные, но и тесно связанные алгоритмы. Как ты их передавать собрался, холоп? Придумывай как абстрагироваться до данных. Ты справишься.
103 Кб, 1000x667
#223 #1083332
>>1083046
Лол, тебе поебать на байтики, но когда-нибудь байтики выебут тебя
#224 #1083338
Сап, допустим есть метод класса, который просто изменяет значение поля (поле - встроенного типа, типа int, char и т.п.) в экземпляре этого класса. Может ли быть так, что поле вдруг стало read-only (например, сломались - перестали записываться, но остались доступными для чтения - ячейки памяти, которые хранили значение этого поля). Что тогда вообще должно произойти? Произойдет terminate()?
#225 #1083340
>>1083338
Да, только libastral подключи.
#226 #1083347
Анон, подскажи пожалуйста, почему у меня невнятно пидорасит сборку.
Есть 3 класса.
QtGuiApplication1
selector
bot_V_0

Если я пытаюсь добавить #include "bot_V_0.h" в "selector.h", то получаю пик 1.
Если пытаюсь добавить #include "bot_V_0.h" в "selector.cpp", то сначала всё норм, но потом, после реализации какой-либо функции, я получаю пик 2
То же самое, но с большим успехом касается и включения "bot_V_0.h" в "QtGuiApplication1.h" - пидорасит, а при включении в "QtGuiApplication1.cpp" работает и позволяет создавать объекты bot_V_0 и использовать функции.

У "bot_V_0.h" есть только одно включение #include "QtGuiApplication1.h". Везде есть #pragma once

Что я делаю не так?
#227 #1083360
>>1083328

>А что может выкинуться, кроме std::bad_alloc / std::invalid_argument ?


Всё, что может выкинуть конструктор T.
#228 #1083362
>>1083322

>int c


>эквивалентно


>int c = random(seed(phaseOfMoon));


Но ведь это чуж
#229 #1083366
>>1083347

>Что я делаю не так?


Делаешь так, чтобы нам не хотелось помочь тебе.
>>1083362
идинахуй
#230 #1083367
>>1083362
Неинициализированная переменная = неопределенное поведение = может быть любое значение. Всегда ваш, сегфолт.
#231 #1083369
>>1083367
Первое равенство с натяжкой верное (если ты читаешь оттуда значение), а вот потуги манек как-то описать поведение при UB (любое значение, сегфолт и т.д.) смешны.
53 Кб, 1394x892
#233 #1083372
>>1083366

>Делаешь так, чтобы нам не хотелось помочь тебе.


После твоих слов решил ещё покопаться и выявить косяк. Создал новый проект, полностью пустой из трёх классов
QtGuiApplication2
С1
С2
Начал потихоньку его нагружать.
Сделал включения классов C1 и C2 в QtGuiApplication2, а класса QtGuiApplication2 в каждый из них.
Идентичный косяк появился при следующем шаге - объявлении в классе С1 указателя на экземпляр класса QtGuiApplication2;

Листинг класса с косяком:
#pragma once
#include "QtGuiApplication2.h"
class C1
{
private:
QtGuiApplication2 * mainpr;
public:

C1();
~C1();
};

Почему так нельзя? Как тогда передать указатель на объект?
#234 #1083373
>>1083371
Во-первых, бойан.
Во-вторых, что ты этим собрался сказать?
#235 #1083374
>>1083372

>Сделал включения классов C1 и C2 в QtGuiApplication2, а класса QtGuiApplication2 в каждый из них.


Ну вроде очевидно в чем косяк, не? Перед C1 и C2 сделай форвард вида: class QtGuiApplication2 ;
#236 #1083375
>>1083373
То, что там может быть любое значение, буквально.
#237 #1083376
>>1083375
Ещё раз: UB это неопределённое поведение. Вообще неопределённое. Никак. А не "считывание случайного значения".
#238 #1083377
>>1083374
Если бы ты был рядом я бы тебе отсосал.
#239 #1083380
>>1083376
Ты аутист. Формально там будет то значение, которое там было до этого. А это может быть много чего. Фрейм прошлого вызова какой-то функции. Кусок системы. Трамплин. Дебажный филлер. ASLR.
#240 #1083381
>>1083380

>Формально


Ну раз сказал это слово, тащи ссылки на стандарт.
#241 #1083384
>>1083381
Аутист, плес. Читай устройство твоей операционной системы.
#242 #1083385
>>1083384
Быстро же ты слился, мда.
#243 #1083387
>>1083385

>пук


Тут вообще одни школьники, что ле? Удачных каникул.
#244 #1083390
>>1083369
Я рад тому, что ты понял, что анон, которому ты отвечал, шутил.
>>1083380
Это не тред твоей любимой ОС, это тред С++. Если компилятор видит использование неинициализированной переменной, он может хоть тебе в тапки нассать без предупреждения, и это не шутки - есть оптимизации, которые анализируют код, и на основе предположения о его правильности меняют его на эквивалентный.
#245 #1083391
>>1083390

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


Я ровно это и написал. А вот что там окажется по этому адресу, уже определяется не стандартом с++, а внешними факторами, некоторые из которых я упомянул - реализация фреймов, реализация ос.
#246 #1083396
>>1083391
Компилятор в том числе может породить код, который никогда не прочтёт то, что там написано.
#247 #1083397
>>1083396
Зачем кормить слившуюся лалку?
#248 #1083403
>>1083397
Тебя никто и не кормит, толстячок.
#249 #1083468
>>1083132
Так, падажжи, с про синглтоны спрашивал я, а ты говоришь с каким-то другим агрессивным аноном, если что.
>>1082940-кун
#250 #1083474
>>1083213
Забей, в армейке тебя будут достаточно заебывать. Лучше на месте сориентируйся, если время будет, попроси чтоб книжку какую прислали.

>как-то договориться чтобы был доступ к компьютеру


Да. Вас спрашивают, кто умеет в компы, ты вызываешься, и потом жалеешь об этом. Потому что придется быть секретарем всей части, а обычные обязанности никто не отменял.
#251 #1083597
>>1083330
Класс не как абстрактную структуру данных, а как нечто, наследованное от Object. Какая, в жопу, абстракция?
#252 #1083599
>>1083213
Прогай в уме, лол.
#253 #1083631
>>1083213
Попросись в десонт, там много прогают.
#254 #1083655
>>1083597

>нечто, наследованное от Object


Как ты собрался передавать то, чего в плюсах нет?
#255 #1083660
>>1083327

>Одни, блядь, целые трактаты про marshalling выдают, другие про какой-то interop загоняют, третьи вообще предлагают пересесть на c++/cli.


И что тебя смущает? Именно этим и надо заниматься.
#256 #1083662
Какую IDE использовать?
#257 #1083664
>>1083662
VS Code.
Visual Studio Community Edition.
CLion идеевский.
VIM не IDE
#258 #1083667
>>1083655
В этом и заключался вопрос, не?
#259 #1083672
>>1083667
Через маршалинг и интероп, а можно на c++/cli. Ну или скачай ReactOS и перепиши весь WinAPI.
#260 #1083677
>>1083664

> Visual Studio Community Edition


А чем он лучше обычной?
#261 #1083679
>>1083677
Официальной бесплатностью. Впрочем может для студентов есть варианты и получше.
#262 #1083680
>>1083662
Microsoft Visual Studio C++ 2005
#263 #1083685
Сап, не могу понять:
Есть метод getData:
...
struct Data
{
...
}
...
Data arr[10];
...
...
Data getData(int i)
{
...
return arr;
}

Этот return как бы должен вернуть a по ссылке, или же он вернёт временную структуру Data, скопировав её содержимое из a?
#264 #1083686
>>1083680
2015 update 3?
#265 #1083687
>>1083685
Твоя функция возвращает один экземпляр Data.
#266 #1083688
>>1083686
Стоит с этой версии начинать?
#267 #1083689
>>1083688
Не, смотри 2017 сразу. Не будет каких то фич c++17. У меня 2015 u3
#268 #1083692
>>1083689
Я только хочу вкатиться
#269 #1083727
В задаче нужно поставить в начало строки исходной (т.е. все манипуляции проводить в исходной строке) (char) все слова, состоящие полностью из цифр, а затем все остальные слова, не меняя порядок в группах. Задачу удалось решить переставляя слова посимвольно, но хотелось бы узнать, можно ли сделать что-то при помощи указателей. Например, скопировав исходную строку, разбив эту строку на лексемы при помощи strtok и поместив полученные указатели в массив, затем рассортировать массив нужным образом, а после восстановить исходную строку. Нам ведь будет известен правильный порядок указателей. Возможно ли как-то переставить слова в строке?
#270 #1083736
>>1083727

>strtok


Это не тред Си.
#271 #1083738
>>1083692
Ставь 2017 сразу.
#272 #1083743
>>1083738
Она же весит очень много
#273 #1083747
>>1083743
Там больше зависит от того, что ставить. Если добавить UWP, Кородовы и прочие ASP.NET, выйдет дохера.
Только что поставил чистую установку, выбрав Desktop development with C++, без C# даже. Заняла 2 гига. Может еще в других папках что-то. Поверь, у меня SSD всего 120ГБ, из них 10 свободно, я бы заметил если бы она не влезла.
21 Кб, 508x249
#274 #1083756
Я не разу не сталкивался с такой установкой, это Микрософт двигается в сторону Линукса? Ладно, там хоть будет меню выбора? я скачал компилятор на всякий, вот сейчас буду качать студию
#275 #1083759
>>1081237 (OP)
Сап плючаны, решил тут забацать небольшую игрушку на OpenGL, на MVSN17, и немного прифигел с того, что подключение к студии идёт через анус жопы сидалищного мозоля прямой кишки пердака. При этом я помню как приходилось трахаться с такой элементарщиной в 2007 и прочих версиях. Неужели в дваксемнадцатом не смогли придумать нормальной подключелки пакетов по типу npm например?
#276 #1083762
>>1083756
Отбой, я ковырнул эти файлы, нашел пути к ехе, А почему такой вес? типа чтобы с нета не качать
7 Кб, 334x111
#277 #1083764
Анон, а один из этих файлов разве не может скачать с нета что нужно? а то мне 30 гигов на диске держать, удалять не вижу смысла, интернета то не будет
#278 #1083765
>>1083764
Я хз что ты там качаешь, я только что ставил скачав один файл vs_Community.exe весом 1Мб. Ей богу, ставим студию всем двачем.
#279 #1083767
>>1083765
Ну вот, и хорошо, я вот тоже пару файликов скачаю, а что нужно докачается
#280 #1083769
>>1083759
Можно, непонятно правда зачем, заняло 10 минут с гуглением.
1. В инсталляторе студии ставишь NuGet Packet Manager
2. В студии заходишь в меню Tools - Nuget Packet Manger - Manage Packages for solution
3. В Nuget packet manager ищешь через browse и ставишь два пакета: freeglut и glew.
4. Компилируешь пример и запускаешь, идешь пить шамапнское.
5. обламываешься, видишь что не слинковалось, и либо разбираешься по человечески с либами, либо как советуют в инете, ставишь третий пакет с зондами - nupengl.core
#281 #1083778
>>1083764
Я из-за такой хуйни купил новый ССД под систему.
До VS жил на почётном олдфаге на 60гб, обновился на 512гб, на всякий случай.
#282 #1083780
>>1083778
А все равно ссд раз в три года менять нужно вроде
126 Кб, 1251x600
#283 #1083781
Так Аноны, что добавить или убрать? у меня выходит не 2 гиг а около 7гигов
#284 #1083783
>>1083781
Подозреваю что Windows 10 SDK. Правда хуй знает будет ли без нее работать.
#285 #1083784
>>1083769
Спасибо анон.
#286 #1083785
>>1083780
По идее только если 24/7 сборку на нем гонять. Ну и большие ССД делаются по худшим технологиям, поэтому портятся быстрее.
#287 #1083786
>>1083784
Но я бы советовал тогда уж в строну пакетов SDL2, SDL2-image смотреть.
#288 #1083787
>>1083783
Да, я тоже,
>>1083785
Хз, может и я прикуплю сдд гигов на 120 или меньше
105 Кб, 1250x499
#289 #1083788
А, вот Анон смотри настроил на 2,50 гига
#290 #1083789
>>1083780

>А все равно ссд раз в три года менять нужно вроде


Мой на 60 жил уже 7 лет и чувствовал себя неплохо. Я бы сидел на нём ещё лет 7 спокойно.
А по поводу замены - зайди в hw там тебе всё подробно расскажут, но вообще, менять смысла нет, потому что ресурс даже хуёвого ССД - просто безумен.
#291 #1083790
>>1083789
Ооо, зайду
#292 #1083794
>>1083788
Много. У меня 1.8.
#293 #1083858
Сап, двач, подскажите алгоритм построения треугольника Максвелла, нигде не могу найти примеры.
#294 #1083859
Сумма цифр числа без операций деления и умножения. Чё делать-то, бля?
массив? строка?
#295 #1083871
Умножение на 0.1 представляется как деление на 10?
#296 #1083882
>>1083859

>Сумма цифр числа без операций деления и умножения


>Сумма цифр числа


>Сумма


Попробуй операцию сложения
#297 #1083883
>>1083859
Preg_replace("", "+");
#298 #1083888
>>1083882
Выделить цифру из числа суммой, лолшто?

или я ебанат?
#299 #1083894
>>1083888
Да я пошутил.

Число в строку
Строку в массив с ковертацией символов в числа
Суммируешь массив
#300 #1083895
>>1083894

>с ковертацией символов в числа


Там внутри операция деления.
#301 #1083900
>>1083895
Ну не конвертируй. Суммируй строчные символы опираясь на их числовое значение.
#302 #1083905
>>1083895
>>1083900
Любой отдельный символ, представленный в C++ как char, на самом деле обычное число. Любые операции (сложение, вычитание…), применяемые к обычным целым числам, можно применять к символам char.
#303 #1083931
>>1083743
Если верить >>1083747, то 2017 весит меньше, чем 2015 только для плюсов в минимальной версии.
>>1083762
Ясен хуясен, это установщик. Есть интернет-установщик, весит пару мегабайт.
>>1083780
ССД нужно менять один раз в хуй знает, сколько лет, если только тебе не крайне не повезло с моделью (баг в прошивке или езё гавно какое).
>>1083788
Скажи потом, заработало оно или нет. Похоже на то, что СДК для 8.1 она ставит обязательно, а для 10 - необязательно. Но вот VC тебе по-моему нужен, это же компилятор.
>>1083871
С очень большой вероятностью - нет. Результат будет отличаться в последних знаках.
>>1083895
Не охуел ли ты? Считывай число из cin посимвольно, посимвольно переводи в числа и складывай, где тут деление?
#304 #1083949
как роботает memory_order_conzume?
#305 #1083984
Есть какая-либо библиотека для работы с файлами Excel?
#306 #1083988
>>1083984
Есть. Даже бесплатные были.
#307 #1083992
>>1083988
Примеры, плиз
#308 #1083999
>>1083992
Давно занимался, сейчас уже не могу привести ту библиотеку что мне подошла, к сожалению.
В хистори браузера отыскал только https://www.codeproject.com/articles/42504/excelformat-library

Но я помню что пришёл к выводу, что придётся работать стандартными средствами Microsoft. И с ними и работал.
#310 #1084053
>>1081237 (OP)
Почему за boost могут сразу прописать по ебалу?
#311 #1084114
>>1084053
Наоборот, за прописывание по ебалу могут сразу в boost.
#312 #1084139
Двач, как правильно "Storage duration" переводится?
#313 #1084140
>>1084139
Продолжительность склада
#314 #1084143
>>1084139
Срок хранения.
#315 #1084180
>>1084139

>переводится


В жопу переводы.
http://eel.is/c++draft/basic.stc#def:storage_duration
#316 #1084187
>>1084180
Молодец, гуглить научился, иди перед мамкой похвастайся, а вопрос был в другом.
#317 #1084188
>>1084187

>а вопрос был в другом.


Я на него ответил:
>>1084180

>В жопу переводы.

#318 #1084190
>>1084187

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


Ну ты не расстраивайся так, я думаю, ты ещё сможешь выучить инглиш.
#319 #1084191
>>1084190
Сейчас же вроде утро понедельника, ты почему не в школе тупой школяр?
#320 #1084192
>>1084191
Я вроде просил тебя не расстраиваться.
#321 #1084193
>>1084192
А я вроде нахуй тебя давно послал. Тупость тупого школьника читать не интересно.
#322 #1084195
>>1084193

>Тупость тупого школьника читать не интересно.


Никому не интересно читать твою тупость — это тебя так расстраивает?
#323 #1084199
>>1084139
Тупой школьник, ты настолько туп, что даже не догадался посмотреть в вышедший некоторое время назад перевод стандарта C++?
#324 #1084202
Как продлить VSC 2017? Обычного входа майковской учеткой ему хватит, или нужно, что бы акк была подписка?
Едришкины шишки, какого там нигде нет уведомления, что пробная версия. Бесплатно, говорили они, аналог Express'a, думал я.
#326 #1084207
>>1084199
Так я уже давно скачал и посмотрел его, просто от делать нечего продолжаю слать нахуй малолетних деградантов. Да и в очередной раз убедился что в этой параше смысла спрашивать нет никакого.
#327 #1084208
>>1084207

>Скачал, посмотрел и ответил на свой вопрос.


Фикс, не поймёте ведь дауны.
#328 #1084209
>>1084208
Ну и какой же ответ?
#329 #1084210
>>1084209
Класс памяти.
Мне это определение вполне понравилось.
#330 #1084212
>>1084210

>Класс памяти.


Это storage class, а не duration.
#331 #1084214
>>1084212
Там и то и другое переведено как класс памяти.
#332 #1084247
>>1084206
Там и написано бесплатно ебин. Сейчас бы считать что твое фейкомыло кому то интересно.
#333 #1084248
>>1084214
Ахуенный подход к терминологии.
#334 #1084273
>>1084248
Что ты хочешь от дегенератов переводящих стандарт?
#335 #1084274
Ньюфаг продолжает вкатываться.
Возник вопрос с объявлением и использованием шаблона.
Если объявлять как на первом пике и как пишут в сети, то получается пик 2. Как это делать правильно? Пробовал пик 3 - проблема с таким объявлением очевидна
#336 #1084277
>>1084274
1. Ты не можешь выносить реализацию шаблонных методов в .cpp. Все должно быть в .h.

2. typename T доступен только в том типе, в префиксе которого он определен, в данном случае genotype. Родительский тип о нем никогда ничего не узнает.
#337 #1084278
>>1084277
1. Можешь. Просто определение надо писать полностью
template <typename T> void bot_V_0::orgy(int child) { / ... / }
#338 #1084279
>>1084277

>1. Ты не можешь выносить реализацию шаблонных методов в .cpp. Все должно быть в .h.


Это понятно. Но я и произвожу определение шаблонных методов и их реализацию только в .h - пик 1. Но при этом получаю пик 2 в .cpp, хотя там я ничего не успел сделать.
#339 #1084280
>>1081237 (OP)
Анон, почему --f() не компилируется, а f() - 1 корректно? Почему оператор -- применим только к l-value?
В чем отличия f(a++) и f(a); ++a; ?
#340 #1084282
>>1084278
Это специализация. Подумай о ее доступности при линковке.

>>1084279
Всмысле? Если ты все имплементируешь в .h, то что ты делаешь в .cpp? Я явно вижу имплементацию методов шаблонного класса.
#341 #1084283
Ошибка после установки vs2017 https://pastebin.com/dpKa2qHL
У меня win7x64 помогите
96 Кб, 604x339
#342 #1084284
>>1084278

>orgy


>child


зарепортил на всякий случай
#343 #1084286
>>1084284
Хорош.
#344 #1084288
>>1084274

>Если объявлять как на первом пике и как пишут в сети, то получается пик 2.


ты сообщение компилятора скажешь или нет мать твою
27 Кб, 480x360
#345 #1084291
>>1084283
Перезагрузись
#346 #1084293
>>1084291
Ой, он меня пытается затроллить
#347 #1084301
>>1084293
Не, он говорит что иди нахуй из треда с этой ересью.
#348 #1084322
Что означает двоеточие в начале строки

> ::CoInitialize(NULL);


?
Код взял из примера для VS с этой страницы http://proginfo.ru/excel/
#349 #1084337
>>1084053
Так как это не стандарт, в любой момент в либах может что-то поменяться, и это сломает пользовательский код
#350 #1084341
>>1084322
Глобальное пространство имен?
#351 #1084343
>>1084322
https://stackoverflow.com/questions/4269034/what-is-the-meaning-of-prepended-double-colon ну первая ж ссылка в гугле, чего у него не спросить?
#352 #1084351
>>1084343
Спасибо, просто не силен в английском
#353 #1084362
>>1084280
Здесь нет экспертов C++?
#354 #1084368
>>1084293
Отчего же? Ошибка доступа к файлу установщика, вполне может помочь.
#355 #1084372
>>1084362
Где где а тут точно их нету
#356 #1084376
>>1084280

>Почему оператор -- применим только к l-value?


Потому что -- это =- . Это оператор, который присваивает значение. Ты не можешь присвоить зачение временному значению, стандарт запретил. Ты можешь сделать это только в том случае, если забиндишь rvalue-ссылку к этому значению (т.е. сделаешь его лвалью).

Но ты можешь переопределить оператор для классов: http://coliru.stacked-crooked.com/a/cb9d26b17f83c51f
и там делать то, что угодно, если сигнатуру правильную сделаешь.

>В чем отличия f(a++) и f(a); ++a; ?


В том, что если стандарт так решил, что результат a++ для интегральных типов - это временное значение (прежнее), а не лвалью. Соответственно, если f(a++) никогда не зарезолвится в f(int &a).
#357 #1084377
>>1084376

>Потому что -- это =-1


Не совсем, но мысль ты понял.
#358 #1084400
>>1084362
Из за ссылочных типов. В цпп всегда все из за ссылок.
#359 #1084418
>>1084376
Что такое временное значение?
#360 #1084419
Аноны, сейчас изучаю стек и нашёл на одном сайте такой приём его создания:

struct StackElement {
Value value;
StackElement next;
};

struct Stack {
StackElement
head;
};

Stack createStack()
{
return new Stack();
}

Подскажите, пожалуйста, что означает Stack
createStack()? Где об этом можно почитать? Потому что также видел, что данный приём используется и в реализации двоичных деревьев.
#361 #1084423
>>1084419
Самое главное ж пропустил - в Stack *createStack() нужен указатель и мне не понятно, как именно он работает.
#362 #1084429
>>1084418
Это значение, у которого нет места хранения. Если функция не возвращает ссылку, она может вернуть только временное значение.
>>1084419
createStack - это фабрика. new возвращает указатель на созданный объект. Что именно ты хочешь узнать? Вместо лишней функции можно передавать аргументы конструктору или вызывать new самому, в этом примере совершенно лишняя функция.
*
#363 #1084439
>>1084429
Я хочу узнать, что значит конструкция <название структуры> <название функции>, а также
<название структуры>
*<название функции>. Просто нигде не могу найти инфы про этот момент.
#364 #1084442
>>1084439
Я не знаю почему, но двачу не нравится звёздочка. Я имел в виду: <название структуры> "символ звёздочка"<название функции> и <название структуры> "символ звёздочка""символ звёздочка"<название функции>
#365 #1084443
>>1084442

>Я не знаю почему, но двачу не нравится звёздочка.


Потому что ты ньюфаг.
#366 #1084447
>>1084443
Да, но речь не об этом.
#367 #1084448
>>1084429

>Это значение, у которого нет места хранения


Как нет место хранения? А где оно хранится? В пустоте над стеком парит?
#368 #1084454
>>1084429
>>1084442
Насколько я понял, эта функция возвращает указатель на структуру. Но какой от этого профит и для чего это может использоваться?
#369 #1084464
>>1084439
Ты прикалываешься? Это функция, возвращающая указатель.
>>1084448
Два самых примитивных варианта:
- в регистре
- хуй знает где и может перемещаться
Ещё вопросы?
>>1084454
Фабрика это, блядь, ФАБРИКА. new используют тогда, когда нужно создать не автоматический объект, а объект в динамическо памяти, который нужно самому потом удалить. Конкретно в этом случае createStack - бесполезная функция.
Не знаешь, что такое new - пиздуй книгу читать.
#370 #1084471
>>1084429

>Это значение, у которого нет места хранения. Если функция не возвращает ссылку, она может вернуть только временное значение.


Можно более формально это объяснить?
#371 #1084489
>>1084471
Насколько более формально? Попробую.
http://eel.is/c++draft/basic.lval#1.2 - в современном стандарте временное значение, у которого нет места хранения - это prvalue.
http://eel.is/c++draft/expr.call#11
Вкратце: если функция возвращает не ссылку, то места хранения у возвращаемого значения нет, и оно обязательно prvalue.
#372 #1084549
Анон, помоги мне решить задачу.

>Напишите функцию Base const D1BaseToD2Base( Base const base ), которая преобразует указатель типа Base на объект типа D3, который ссылается на экземпляр Base, соответствующий D1, в указатель, ссылающийся на экземпляр Base соответствующий D2.



Пояснение: нам дали Base на объект типа D3. Надо вернуть указатель типа Base ссылающийся на D2. У D3 два экземпляра Base. Один в D1, другой в D2. Изначально указатель ссылается на Base в D1, а надо получить ссылающийся на Base в D2. При этом оба указателя будут ссылаться куда-то внутри D3.

Я написал такой код, но у меня нихуя не работает: https://ideone.com/9NeDah

Написал дерево наследования и расположениее объектов в памяти: [Base][D1][Base][B2][D3], но мне все равно непонятно, как сдвигать указатель.
#373 #1084571
Обновите ссылки на литературу, ибо половина из них более недоступна
#374 #1084583
Может кто-нибудь, плез, пояснить, как построить граф импликаций, если на вход поступает булева функция в форме Крома? Или что читать, чтобы это понять. В проге не шарю, а лаба подошла. Нагуглить удалось лишь алгоритм решения 2-sat, но нигде не объясняется, как же построить изначально граф импликаций и обратный ему не гоните ссаными тряпками плез((((((((((((((((
#375 #1084598
>>1084549
в /rf, аватарка. А еще себя тру-программистом называл.
#376 #1084603
>>1084549
1) Не нужно использовать статик_каст для спуска вниз по дереву наследования, это небезопасно. Если ты принимаешь указатель на D3, то отрази это в сигнатуре.
2) Тряси своего препода, блядь!
3) https://ideone.com/trdjrM
4) Конкретно этот пример вообще ничего не показывает. Какой ты указатель не приведи к указателю на D2, он будет печатать одно и то же. Чтобы проиллюстрировать правильность выбора базы, ты должен хранить в базе что-то, и в наследниках сохранять идентифицирующее значение.
#377 #1084644
>>1084603

>https://ideone.com/trdjrM


Но дело в том, что сигнатура функции не Base const star foo(D3 const star d3), а D1BaseToD2Base( Base const star base ), и то, что в D3 содержится два объекта Base, усложняет приведение.
#378 #1084664
>>1084644
Я тебе уже скинул рабочий код, ты имеешь что-то против этого?

>Но дело в том, что сигнатура функции не Base const star foo(D3 const star d3), а D1BaseToD2Base( Base const star base )


Нассы человеку, который требует то, что ты пишешь, именно с такой сигнатурой, на ебальник. Если ты хочешь писать качественный код, приводить типы указателей вниз по дереву наследования без dynamic_cast или своей собственной системы хранения типов нельзя.
И уж ТЕМ БОЛЕЕ нельзя делать так в том случае, когда база может быть включена больше одного раза. То есть, не тебе просто нахуй это не нужно, так как указатель на базу из указателья на D3 можно получить двумя способами.
Быть может, ты получишь высшую оценку, если объяснишь это преподу.
#379 #1084665
>>1084664

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


И, ЧСХ, он будет разный в зависимости от того, какой способ ты использовал.
#380 #1084667
>>1084664

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


Имеет принимающая система, которая требует указатель на конст Base. Моя последняя попытка такая: https://ideone.com/yFl17T
#381 #1084671
>>1084644
Мне кажется, это вообще нельзя решить без вычисления смещений внутри объекта и обращения к сырым данным, зная, как конкретные компиляторы собирают объект.
#382 #1084674
>>1084667
Уебывай нахуй, пидрила, и говно своё забери. У тебя должно быть 4 каста - два вниз и два наверх, обмазывайся этим сам.
42 Кб, 518x279
#383 #1084680
Принялось с сишными кастами, которые кастят что угодно во что угодно,даже небо, даже Аллаха.
https://ideone.com/YgXUzh
#384 #1084683
>>1084680
Иногда заглядываю в этот тред и почти всегда проигрываю с аутизма местных дебичей.
26 Кб, 567x462
#385 #1084692
>>1084683
Проиграй над тем, что ты не можешь увидеть проблемы этого кода.
#386 #1084695
>>1084680
Так и выглядит известный object slicing?
#387 #1084704
>>1081237 (OP)
Ребята, возникла задача, в ходе которой надо будет исходные, ну, например, 10 чисел надо будет разбивать на различные группы, а потом с этими группами проводить определенные действия, ну точнее придется обращаться к элементам этих групп. И я не очень понимаю, какой структурой воспользоваться для этого, лол.
Разбиений будет не больше чем количество чисел.
#388 #1084705
>>1084692
Я же не мудак, чтобы тратить свое время на головоломки в виде говнокода на с++.
Алсо, на сколько я помню, есть известная проблема с такими stl функциями и итераторами, они вроде считаются как декларация новой функции а не вызов, что-то такое. Хз в общем не хочу заморачиваться даже об этом ибо дропнул с++ уже давно и пишу на норм языке.
#389 #1084711
>>1084705

>пишу на норм языке



Привет, брат по питону
#390 #1084716
>>1084464
Сори, возможно, это действительно даунские вопросы, но я нигде не могу найти на них ответы. Последний: что тогда означает данный кусок кода - https://pastebin.com/fdS74B5X . Зачем нужны 2 указателя, можно ли обойтись без них? А если есть возможность указать такому долбоёбу, как я, где про это всё можно почитать, лучше не тратьте своё время и именно так и сделайте. Сори за аутизм, я правда не специально.
#391 #1084718
>>1084705

>уже давно и пишу на норм языке


Зачем же ты на нем пишешь? Думаешь, кому-то нужны твои проекты? Хочешь заработать денег, найти жену-жируху, обмазаться кредитами, жиреть, стареть и растить спиногрызов?
Ты мог бы изучать метапрограммирование шаблонов, отличия auto от decltype, свертку ссылок, решать головоломки, изучать проблемы множественного и виртуального наследования, но вместо этого ты выбрал унылую жизнь нормалфага.
#392 #1084719
>>1084718
а ты выбрал бесполезное задротство. мог бы с таким же успехом какашки по высоте раскладывать.
47 Кб, 807x463
#393 #1084720
Еее хиккуем
#394 #1084722
>>1084711
Скорее, по Common Lisp'у.
#395 #1084726
>>1084718
А нахуя тратить время на изъебы с хуевым языком, когда можно тоже самое сделать гораздо быстрее и понятней на нормальном?

Пишу на С, радуюсь жизни. Что надо на коленке на лобать пишу на питоне. Угараю по функциональщине в свободное время.
#397 #1084747
>>1084692
Две очевидны: запись в *last и инкремент не того в --e.end(), а еще две?
#398 #1084748
>>1084746
Где здесь можно прочитать именно интересующий меня вопрос?
#399 #1084751
>>1084748
Ёпт, я даже не знаю, тебе не книга о языке нужна, тебе нужна книга об алгоритмах.
https://www.google.ru/search?q=керниган+практика+программирования
#400 #1084754
>>1084751
Именно как реализовывать алгоритмы я понимаю, а вот как записать это на плюсах - у меня проблемы. Просто в вузе всё преподаётся крайне хуёво, а спрос большой. Извини, что мучаю тебя такой херью, но просто уже не знаю, что делать, ибо дальше будет только хуже.
#401 #1084766
>>1084754
Не переживай, со временем вникнешь.
А 2 указателя - на правого и левого сына каждого узла дерева, логично же. Если я правильно твой вопрос понял
По поводу визуализации вот:
https://neerc.ifmo.ru/wiki/index.php?title=Дерево_поиска,_наивная_реализация

мб станет понятнее.
#402 #1084833
>>1084705

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


При чем здесь stl и Most vexing parse?
#403 #1084853
>>1084766

>А 2 указателя - на правого и левого сына каждого узла дерева, логично же.


Могу предположить, что он спрашивал про указатель на указатель.
>>1084833
Собственно, поэтому он и пересел.
#404 #1084900
>>1084726

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


>Гордится что пишет на голом С


А ты ведь не слишком умен?
#405 #1084976
Можно ли как-нибудь сделать, чтобы функция, объявленная и определенная в .cpp класса, имела доступ к непубличным элементам класса, и не прописывая её как метод этого класса, или как функцию друг?
Типа такого:
//somecalss.h
class SomeClass
{
public:
void SomeMethod();
private:
int someProperty;
}

//someclass.cpp
void Serve()
{
someProperty = 0;
}

void SomeClass::SomeMethod()
{
Serve();
}

В общем, как писать код со всякими инкапсуляциями, и не засорять пространство имен класса?
#406 #1084984
>>1084976
Точнее тут не инкапсуляция, а извлечение метода, только не внося его в объявление класса.
#407 #1084995
>>1084976
Делаешь статичные члены и публичный статичный метод.
Олсо, с какого дерева упал для того, чтобы пытаться изменить нестатичный член класса из самосотятельной функции?
#408 #1085057
>>1084900

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


>Гордится что ест говно на С++.


А ты ведь не слишком умен?
#409 #1085060
>>1084726

>когда можно тоже самое сделать гораздо быстрее


Гуй на си пишется особенно быстро и понятно.
#410 #1085078
>>1085060
Тащемта ты прав. GNOME тому пример.
#411 #1085079
>>1084853

>Могу предположить, что он спрашивал про указатель на указатель.


Именно. А вообще эта учёба бред какой-то: ничего не объясняют, но кучу задач с двухнедельным дедлайном дают. В чём смысл такой учёбы, если для большинства это просто "посмотрели, что-то сделали и забыли".
#412 #1085086
>>1085078

>GNOME тому пример.


Ты под gtk пробовал кодить? Там по сравнению с Qt для сравнимого функционала надо раз в 10 текста писать. Поэтому в гноме сейчас сплошной js, а за пределами редхата обычно сразу берут питон, валу или кресты, чтобы с gobject дела не иметь.
#413 #1085088
>>1085086

>Qt


Так куте это даже не С++ практически.

>js


Так все уже пишут на JS гуи, даже куте уже давно перешла на QML. Потому что поняли что с++ это днище полнейшее.

Реально в современном мире нет ниоднйо причины писать на С++, когда есть Go и Java для серверных приложух, и есть JS и т.п для гуи и есть питон для всего остального.
#414 #1085207
>>1085079

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


Подними жопу с насиженного и пойди к начальникам, скажи им всё это. То, какая будет учёба, зависит от тебя.

>Именно.


Указатель на указатель нужен потому, что очень часто тебе нужно не только узел найти, но и перенаправить ссылку на него. То есть, ссылка на узел из предка - это его логическая часть.
#415 #1085210
>>1085088

>Реально в современном мире нет ниоднйо причины писать на С++


Главная причина писать на плюсах - необходимость работы с большими объемами бинарных данных, обычно с медиа контентом. Воспроизведение, редактирование, вот это вот всё. Ну и игры.
#416 #1085220
>>1085088

>Так куте это даже не С++ практически.


По историческим причинам. Сейчас можно то же самое сделать препроцессора: http://www.copperspice.com/

>даже куте уже давно перешла на QML


Не перешла и не перейдет, потому что на обычных QWidget все еще проще делать десктопные интерфейсы. Дохуя народу на четверке сидит, и перекатываться на пятерку ради QML не собирается.

>Реально в современном мире нет ниоднйо причины писать на С++


Ну так не пиши, иди в другой тред.
#417 #1085244
>>1085207

>ссылка


указатель, т.е.
#418 #1085253
>>1085210
Это вообще не причина ибо с бинарными данными можно работать откуда угодно.
Про игры отдельная история, там так завелось. К тому же долбоебы из майкрософта решили наговнокодить директ3д на с++.

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

>на обычных QWidget все еще проще делать десктопные интерфейсы


Вот тут ты абсолютно не прав. Мне недавно понадобилось сделать одно кроссплатформенное гуи приложение для себя. Я поначалу начал на Виджетах, но потом понял, что это такое говно, которые к тому же еще и дико тормозное ибо рендирит все софтварно, а там у меня куча 2д графики было. Решил попробовать QML, и я охуел насколько я быстрее и компактнее сделал все на нем. И работает это все намного быстрее, потмоу что использует OpenGL для рендеринга. К тому же можно писать сразу под мобилки. Не понимаю, как говно-виджеты могут сравниваться вообще с этим.

>Ну так не пиши, иди в другой тред.


А я и не пишу, только иногда если выхода нету из-за ебаного легаси. А в тут в треде потому, что могу.
#419 #1085255
>>1085253

>Это вообще не причина ибо с бинарными данными можно работать откуда угодно.


Где угодно тебе придется проебать месяцы на построение кодогенератора, в крестах для этого есть шаблоны. Близкое по смыслу есть в шарповых дженериках, но это совершенно не то и язык одной платформы.
#420 #1085263
>>1085255
Как связаны шаблоны с бинарными данными? Какие нахуй кодогенераторы, ты о чем вообще?
Если тебе нужно работать с бинарными форматами читать/писать то ты это и на питоне можешь сделать и на яве и на аллахе. Пишешь свой сериализатор/десериализатор и все. Не понимаю каким хуем тут вообще шаблоны могут пригодиться.
Все это метапрограммирование на шаблонах - полная чушь и наносит только вред.
Возьми тот же stl, ебаные итераторы, контейнеры. В котором максимум дженерик алгоритмы, которые ни на что не годятся в реальных приложениях. В реальных приложениях, пишутся свои алгоритмы и структуры данных заточенные под конкретную задачу.
Даже возьми тот же хеш тейбл в стл, нахуй он вообще там нужен если он не конкурентный? Что туда складывать? Аргументы из командной строки?
Если я захочу структуру данных чтобы доставать значения по ключу, который будет работать в условиях многопоточности, что в наши дни обычная практика, то мне нужно будет писать свою версию, которая будет работать более менее с fine grained lock, а не лочить весь контейнер, ибо по другому с STL парашей ты не сделаешь.
С++ настолько пытались сделать общим языком для всего, что получилось так, что он теперь не пригоден ни для чего.
#421 #1085274
>>1085263

>Пишешь свой сериализатор/десериализатор и все.


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

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


Аргумент, не поспоришь.

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


Не люблю переходить на личность, но тут не слабо так повеяло болью неосилятора.

>Даже возьми тот же хеш тейбл в стл, нахуй он вообще там нужен если он не конкурентный?


Хороший вопрос для собеседования - как сделать из обычного хеша "конкурентный". Алсо ознакомься с инсерторами - на них можно изготовить тобой желаемое. Тебе не обязательно лочить весь контейнер для одной операции. Ты можешь спокойно декорировать стандартный инсертер, что, к слову спижжено из раннего спринга, хуй его знает как оно там сейчас.
#422 #1085282
>>1085263
Я тут мимокрокодил, но вроде как есть такая штука: в игродвижках всякие данные быстрее работают, если их класть слоями: сначала массив x-координат, потом y-координат, потом r-компонента, потом g-компонента, и b-компонента. Если ты заведешь class Vertex { float x, y, r, g, b; } в Яве, то вектор этих вертексов будет лежать в памяти xyrgbxyrgb, в то время как в плюсах можно написать аллокатор, чтобы он это все разворачивал в xxyyrrggbb, при этом оставляя всю мощь оптимизатора для конструций типа for(int i = 0 ... i++) v.x++
#423 #1085284
>>1085282
Так конечно можно сделать, но суть не в этом. Суть в том что можно один раз написать общий алгоритм, скажем, линейного преобразования и через трейты применять его ко всем существующим сейчас и появляющимся в последствии структурам данных. При этом компилятор сгенерирует сотни и тысячи реальных классов (ну, если скажем у нас N стратегий и M субъектов, то будет минимум MxN производных классов для шаблона двух параметров), что позволит все это дело оптимизировать на стадии компиляции.
#424 #1085288
>>1085274

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


Все ясно с тобой.
Поехавший шизик, который несет рандомную хуйню, не слышавший ни про bison ни про другие парсер/FSM генераторы. Ниразу не реализовавший ни один протокол.
Алсо, большинство протоколов пишется на С, а не на С++.
Вот только до сих пор непонятно каким хуем ты туда шаблоны собралися пихать и главное нахуя.

Дальше откровенно поехавший бред кукаретика.

Добавлю лишь, то что даже в санной яве есть конкурентные lock-free контейнеры и параллельные алгоритмы. А в ебаном С++, без сторонних либ типа Intel TBB, тебе придется въебать не малую кучу говна, прежде чем реализовать что-то подобное.
#425 #1085290
>>1085284

>При этом компилятор сгенерирует сотни и тысячи реальных классов


Ты забыл добавить: сделает сотни бесполезных копий твоего кода и экзешник в сотни мегабайт, засрет весь кеш процессора, и будет работать медленнее чем обычная Си-шняая реализация с void*
#426 #1085295
>>1085288

>откровенно поехавший бред кукаретика.


Самокритично. Особенно доставило про TBB и генераторы. Хотя что ждать от треда борщехлебов?
#427 #1085298
>>1085288

>bison ни про другие парсер/FSM


Может мне еще ASN1 в проект затащить, мамкин big data designer?
#428 #1085299
>>1081237 (OP)
Что скажут эксперты С++ по данному ресурсу?
http://www.learncpp.com/
#429 #1085304
>>1085295
>>1085298
Я конечно понимаю, типичная с++ блядинка это примерно как пхп обезьянка, только еще с выебанным мозгом и ебанутым самомнением. Но нельзя же просто так, рандомные слова, вбрасывать в тред и думать, что ты что-то умное сказанул.
#430 #1085308
>>1085282

>class Vertex { float x, y, r, g, b; }


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


Ну-ка, покажи нам такой аллокатор.
#431 #1085309
>>1085308
Да че ты хочешь от поехавших? Их уровень знания С++, как и всего CS в целом, заканчивается на уровне этого треда.
#432 #1085316
>>1085308
Я думаю он объебался со словом аллокатор, но сделать так можно: использовать три указателя, вместо трех значений. Типичная джавамакака как раз дрочит на указатели "как в этих проклятых крестах". Ну, чтобы для массива из 100 объектов не надо было датацентр арендовать.
#433 #1085318
Probably easiest to compare C++ with C. C was a beautifully designed language.

The features of the C language were added with purpose. They were intended to solve a real problem and solve that problem they did. Simple arithmetic with promotion. Automatic register allocation with a portable (between compilers) ABI. A simple-but-handy preprocessor. And so on. C is also a lean language: a single person can feasibly write a C compiler in a relatively short time (tinycc is a C99-compliant C compiler written in just 65kLOC of C!). C set out to achieve a clear goal and it achieved its goal. Thanks to the cleanness of C lots of quality compilers came on the market quickly and even decent OSS solutions were available early on.

In contrast, C++ never had a clear goal. The features of C++ were added almost at random. Stroustrup's original idea was essentially "C is cool and OOP is cool so let's bolt OOP onto C". Retrospectively, OOP was massively overhyped and is the wrong tool for the job for most of the people most of the time. Half of the GoF design patterns just emulate idioms from functional programming. Real OOP languages like Smalltalk and IO express many useful things that C++ cannot. The feature that C needed most was perhaps parametric polymorphism (aka generics in Java and C#, first seen in ML in the late 1970s) but instead of that C++ got templates that weren't designed to solve any particular problem but rather to kind of solve several completely unrelated problems (e.g. generics and metaprogramming). Someone actually discovered by accident that C++ templates are Turing complete and they wrote and published a program that computed prime numbers at compile time. Wow. A remarkable observation that led to decades of template abuse where people used templates to solve problems much better solved by other pre-existing solutions such Lisp macros and ML polymorphism. Worse, this abuse led to even more language features being piled on top, like template partial specialization.

The massive incidental complexity in C++ made it almost impossible to write a working compiler. For example, it remains extremely difficult to write a parser for the C++ language. The syntax also has horrible aspects like List<Set<int>> being interpreted as logical shift right. None of the original C++ compilers were reliable. During my PhD in 2000-2004 I was still stumbling upon dozens of bugs in C++ compilers from GNU, Intel and SGI. Only after two decades did we start to see solid C++ compilers (by which time C++ was in decline in industry due to Java and C#).

C++ is said to be fast but the reality is that C++ is essentially only fast when you write C-like code and even then it is only fast for certain kinds of programs. Due to the "you don't pay for what you don't use" attitude, C++ is generally inefficient. RAII injects lots of unnecessary function calls at the end of scope, sometimes even expensive virtual calls. These calls often require data that would otherwise be dead so the data are kept alive, increasing register pressure and spilling and decreasing performance. The C++ exception mechanism is very inefficient (~6x slower than OCaml) because it unwinds the stack frame by frame calling destructors rather than long jumping. Allocation with new and delete is slow compared to a modern garbage collector so people are encouraged to use STL collections but these pre-allocate huge blocks of memory in comparison so you've lost the memory-efficiency of C and then you are advised to write your own STL allocator which is no better than using C in the first place. One of the main long-standing advantages of C over modern languages is the unpredictable latency incurred by garbage collectors. C++ offers the worst of both worlds by not having a garbage collector (making it impossible to leverage useful concepts like purely functional data structures properly) but it encourages all destructors to avalanche so you get unbounded pause times (worse than any production GC). Although templates are abused for metaprogramming they are very poor at it and C++ has no real support for metaprogramming. For example, you cannot write an efficient portable regular expression library in C++ because there is no way to do run-time code generation and compilation as you can in Java, C# and languages dating back to Lisp (1960). So while Java and C# have had regular expressions in their standard libraries for well over 10 years, C++ only just got them and they are slow.

C++ is so complicated that even world experts make rookie mistakes with it. Herb Sutter works for Microsoft and sits on the C++ standards committee where he influences the future of C++. In a lecture he gave his favorite 10-line C++ program, a thread-safe object cache. Someone pointed out that it leaks memory (Herb Sutter's favorite C++ 10-liner has a memory management bug).

My personal feeling is that the new Rust programming language is what C++ should have been. It has useful known features like generics, discriminated unions and pattern matching and useful new features like memory safety without garbage collection.

Принес тут крестовым блядинкам поразмышлять,
надеюсь крестобляди знают английский или умеют пользоваться переводчиком, чтоб почитать.
#433 #1085318
Probably easiest to compare C++ with C. C was a beautifully designed language.

The features of the C language were added with purpose. They were intended to solve a real problem and solve that problem they did. Simple arithmetic with promotion. Automatic register allocation with a portable (between compilers) ABI. A simple-but-handy preprocessor. And so on. C is also a lean language: a single person can feasibly write a C compiler in a relatively short time (tinycc is a C99-compliant C compiler written in just 65kLOC of C!). C set out to achieve a clear goal and it achieved its goal. Thanks to the cleanness of C lots of quality compilers came on the market quickly and even decent OSS solutions were available early on.

In contrast, C++ never had a clear goal. The features of C++ were added almost at random. Stroustrup's original idea was essentially "C is cool and OOP is cool so let's bolt OOP onto C". Retrospectively, OOP was massively overhyped and is the wrong tool for the job for most of the people most of the time. Half of the GoF design patterns just emulate idioms from functional programming. Real OOP languages like Smalltalk and IO express many useful things that C++ cannot. The feature that C needed most was perhaps parametric polymorphism (aka generics in Java and C#, first seen in ML in the late 1970s) but instead of that C++ got templates that weren't designed to solve any particular problem but rather to kind of solve several completely unrelated problems (e.g. generics and metaprogramming). Someone actually discovered by accident that C++ templates are Turing complete and they wrote and published a program that computed prime numbers at compile time. Wow. A remarkable observation that led to decades of template abuse where people used templates to solve problems much better solved by other pre-existing solutions such Lisp macros and ML polymorphism. Worse, this abuse led to even more language features being piled on top, like template partial specialization.

The massive incidental complexity in C++ made it almost impossible to write a working compiler. For example, it remains extremely difficult to write a parser for the C++ language. The syntax also has horrible aspects like List<Set<int>> being interpreted as logical shift right. None of the original C++ compilers were reliable. During my PhD in 2000-2004 I was still stumbling upon dozens of bugs in C++ compilers from GNU, Intel and SGI. Only after two decades did we start to see solid C++ compilers (by which time C++ was in decline in industry due to Java and C#).

C++ is said to be fast but the reality is that C++ is essentially only fast when you write C-like code and even then it is only fast for certain kinds of programs. Due to the "you don't pay for what you don't use" attitude, C++ is generally inefficient. RAII injects lots of unnecessary function calls at the end of scope, sometimes even expensive virtual calls. These calls often require data that would otherwise be dead so the data are kept alive, increasing register pressure and spilling and decreasing performance. The C++ exception mechanism is very inefficient (~6x slower than OCaml) because it unwinds the stack frame by frame calling destructors rather than long jumping. Allocation with new and delete is slow compared to a modern garbage collector so people are encouraged to use STL collections but these pre-allocate huge blocks of memory in comparison so you've lost the memory-efficiency of C and then you are advised to write your own STL allocator which is no better than using C in the first place. One of the main long-standing advantages of C over modern languages is the unpredictable latency incurred by garbage collectors. C++ offers the worst of both worlds by not having a garbage collector (making it impossible to leverage useful concepts like purely functional data structures properly) but it encourages all destructors to avalanche so you get unbounded pause times (worse than any production GC). Although templates are abused for metaprogramming they are very poor at it and C++ has no real support for metaprogramming. For example, you cannot write an efficient portable regular expression library in C++ because there is no way to do run-time code generation and compilation as you can in Java, C# and languages dating back to Lisp (1960). So while Java and C# have had regular expressions in their standard libraries for well over 10 years, C++ only just got them and they are slow.

C++ is so complicated that even world experts make rookie mistakes with it. Herb Sutter works for Microsoft and sits on the C++ standards committee where he influences the future of C++. In a lecture he gave his favorite 10-line C++ program, a thread-safe object cache. Someone pointed out that it leaks memory (Herb Sutter's favorite C++ 10-liner has a memory management bug).

My personal feeling is that the new Rust programming language is what C++ should have been. It has useful known features like generics, discriminated unions and pattern matching and useful new features like memory safety without garbage collection.

Принес тут крестовым блядинкам поразмышлять,
надеюсь крестобляди знают английский или умеют пользоваться переводчиком, чтоб почитать.
#434 #1085350
>>1085282
Ты сейчас Structure Of Arrays.
И оно не обязательно быстрее будет, зависит от данных и алгоритма
#435 #1085353
>>1085318

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


> implying мы этого не знаем


Ну ты открыл секрет Полишинеля.
мимо-крестобоярин
#436 #1085386
>>1085318
Не понимаю, почему мартыханам так печет от крестов? Не хочешь - не пиши, сейчас миллион других языков. Но ведь нет, регулярно прискакивают в наш уютный тредик, и снова заводят унылую песню "ряяя кресты-говно, вы все дегенераты", как будто их Страуструп в детстве лично обидел.
#437 #1085393
#438 #1085441
>>1085386
Их препод каждый день обижает. На доске же одна школота.
#439 #1085443
>>1085441
Неправда. Я олдфак, который вкатывается в программирование.
#440 #1085445
Нужна библиотека, а лучше просто 1 класс исходники, которого можно скопипастить в свой проект, которая умеет обращаться с функциями/формулами. Даю ей на вход строку и создаю объект функции, а потом передаю параметры и он выдаёт ответ. Можно в добавок какие-нибудь мелочи типа найти производную или нули функции. Чем меньше функционал тем лучше, но главное чтобы он смог создать функцию и посчитать её для разных параметров. Знает кто подходящую?
#441 #1085446
>>1085445
Сам напиши. Я вот сейчас ебучий калькулятор с приоритетом операторов и скобок пишу. Внезапно понадобился.
#442 #1085448
>>1085446
У меня весь день на это уйдёт. Мне бы мануал и приммеры из которых можно копипастить. Да и вообще если самому писать, то это шантинг ярд выйдет, а я хочу что-нибудь покачиственее. С деревом приоритетов и всем таким.
#443 #1085449
>>1085443
Зачем тебе С++ тогда? С него обычно подростки начинают, чтобы игрули делать. Учи джаву лучше, там зарплаты выше.
#444 #1085451
>>1085448
Возьми lua, она простая как топор, маленькая и подключается сполпинка.
#445 #1085453
>>1085451
Поясни. Предлагаешь выучить целый язык ради одной программы.
#446 #1085460
#447 #1085463
>>1085449
Потому что по району ходят слухи что C++ быстр и производителен и выстраивает мышление правильным образом.
154 Кб, 499x500
#448 #1085466
>>1085318

>Half of the GoF design patterns just emulate idioms from functional programming


>The C++ exception mechanism is very inefficient (~6x slower than OCaml)


>you cannot write an efficient portable regular expression library in C++ because there is no way to do run-time code generation and compilation as you can in Java, C# and languages dating back to Lisp (1960)


>while Java and C# have had regular expressions in their standard libraries for well over 10 years

#449 #1085469
>>1085463

>C++ быстр и производителен


Это факт, но тебе оно надо?
Быстрее плюсов есть только си и фортран, но на них что-то более или менее сложное заебёшься писать, да и то выйдет криво. Только ядро в пример не приводи.

> и выстраивает мышление правильным образом.


Ой, таких слухов не ходит. Все знают, что плюсы, как язык, это неперевариваемое говно. Просто пока альтернатив не завезли. Наоборот, есть крылатое выражение, что учить программированию на примере C++ это как проводить сексуальное воспитание на примере жестокой порнухи.
C++ это последний эшелон, когда всё остальное будет непосильно медленное или непосильно в разработке на голом си, даже если в си выносить отдельные кусочки. С++ должен быть третим, четвёртым, десятым языком, который ты узнаешь. Это тёмная сторона программирования, древнее зло, к которому можно прибегать только как к крайней мере.
#450 #1085471
>>1085469

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


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

>альтернатив не завезли


Так Rust жи.
#451 #1085474
>>1085469

>Это факт, но тебе оно надо?


Дык. Производительность никогда не лишняя.

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


Но это же хорошо. Я не люблю играть на лёгких уровнях сложности. С++ это разумный баланс между возможностью изучить и желанием поебаться.
Хотя с хардкора С++ конечно сложно перестать проигрывать.
Я вообще начинал с PHP и теперь просто офигеваю от работы с массивами в C++. Такая анальная ебля, что пиздец.
143 Кб, 480x429
#452 #1085478
>>1085474

>Производительность никогда не лишняя


>Но это же хорошо. Я не люблю играть на лёгких уровнях сложности


>Я вообще начинал с PHP

#453 #1085481
>>1085471

> А на СИшке пишется много чего, помимо ядра.


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

> Так Rust жи.


Так нет компилятора-то нормального. Векторизация там через пень-колоду работает, параллелизм на всяких par_for медленный очень, rsmpi даже пробовать страшно...
Вот когда будет компилятор, перейду на Rust. Нет вопросов. А пока приходится по старинке пердолиться.
>>1085474

> Дык. Производительность никогда не лишняя.


google://premature+opmtimization

> Я вообще начинал с PHP


Братан, у нас на хате принято про это молчать. По незнанке не зашквар, конечно, но всё-таки лучше уж плюсы, чем этот фрактал плохого дизайна. Не охуевай, с 99% вероятностью в пыхе всё куда хуже сделано.
#454 #1085482
>>1085453
Я предлагаю использовать lua как парсер и интерпретатор формул, с luajit скорость может быть как у натива. "Целый язык" не такой сложный и учится за вечер.
#455 #1085488
>>1085481

>Векторизация там через пень-колоду работает


В плюсах она точно так же анально работает. Паралелизм в плюсах у 80% проектов больше тыщи строк организовывается своими силами (как и все остальное), к тому же мессейдж пассингу есть биндинги для сишного говна (хотя такие вещи все компании обычно тоже велосипедят на коленке), так что хуй знает чо ты там возникаешь. Есть один компилятор, который везде работает одинаково, с единым языком и просто активнй опенсорс (а не хуита в стиле виндовой залупы в которой нет поддержки C99 и баги чинят по 3 года).
#456 #1085489
>>1085393
И где там аллокатор?
Там тупо выделяют массив флоатов и reinterpret_cast-ят его то как AOS, то как SOA
(нарушая при этом strict aliasing rule, как я понимаю).
#457 #1085490
>>1085478
Ну мне и показалось слишком простым, после начального вката - который для меня в целом был подвигом.
#458 #1085491
>>1085481

> Не охуевай, с 99% вероятностью в пыхе всё куда хуже сделано.


Хуже - наверное. Но господи как же там просто всё.
#459 #1085492
>>1085481

>google://premature+opmtimization


Одно дело лезть оптимизировать без профайлинга, а просто использовать другую технологию чтобы не закрывать себя заранее в рамки — совсем другое.
#460 #1085500
>>1085481

>Ты просто молодой


Мне 30.

>Посмотри сишные опенсурс проекты и поохуевай.


Я контрибьютор в нескольких крупных.

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


Не понял о чем ты. На сишке переписывать код на плюсах или что?

>Так нет компилятора-то нормального


Ну это пока.

>Векторизация там через пень-колоду работает


Векторизация вообще везде через жопу работает даже на С, если ты ее не явно на ассемблере или интринсиксах делаешь. Я в этом экперт, это очень часто используется в моей работе.
#461 #1085505
>>1085488
Гладко было на бумаге, да забыли по овраги, а по ним ходить. На полном серьёзе, в плюсах векторизация, OpenMP и MPI ещё неплохо работают. Если у тебя есть опыт разработки продакшн-лилвел параллельного кода на Rust, то я милостливо прошу, я на конференцию тебя даже послушать приеду, на ПАВТ какой-нибудь.
Компилятор раста это параша уровня gcc, которая с нормальными компиляторами (например, Интела) рядом не лежала.
>>1085491>>1085492
Если у тебя есть одно узкое место, просто перепиши его на языке си и вызывай через JNI из Scala. Если не очень умный прямо, то используй Python, мощная штука и очень простая.
Плюсы нужны только когда есть невероятно медленный прототип.
>>1085500
Так это, вкидывай гитхаб, мы с пацанами посмотрим. Особенно на Rust вкидывай. Особенно как ты на интринсиках или ассемблере icpc обогнал, это мне особенно интересно. Чаще всего щеглы только хуй за щекой у своей мамки обгоняют.
Если ты сможешь обогнать наивную реализацию, скомпилированную icpc, то я так и напишу в треде: "я пиздабол, так и так, тут чувак смог обогнать современный интеловский компилятор". Только это, проверить надо, а иначе ненаучно выходит.
#462 #1085506
>>1085505

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


Даже если не ломает все нахуй — не факт что вообще получится что-то выиграть в перформансе.

>OpenMP и MPI


Тормоза и деревянные игрушки вбитые в пол.
Опять же — хочешь на плюсах и хорошо — делай всё сам. Библиотеки типа folly (реально хорошие, а не буст, один кусок которого использовать можно, а за другой нужно в гулаги сслать) только начинают появляться (спустя 40-то лет).

>через JNI из Scala


Если бы ты хоть раз работал с JNI то не говорил такой хуйни. Чтобы что-то с ним выиграть придется половину бизнес логики на плюсы перенести. Ну либо выйти из ситуации где у тебя скала отвечает за веб-морду а вся логика в нативном коде.
#463 #1085507
>>1085506

>сслать


ссылать
#464 #1085510
>>1085471

>Ну если ты криворукая макака,


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

>Так Rust жи.


Хотя, я погорячился - ты же просто кукаретик.
#465 #1085511
>>1085506

> Даже если не ломает все нахуй — не факт что вообще получится что-то выиграть в перформансе.


Слив засчитан.

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


Слив засчитан. Если у тебя есть возможность обогнать 256 ядер кластера, которые оркеструются MPI, 32 ядрами одного узла, да ещё влиться в 256 ГБ памяти этого узла, то ты заслуживаешь минимум PhD. Публикуй.

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


Если так, то там не одно узкое место, и надо всё переписывать на плюсах, так это весь point моего поста.
#466 #1085512
>>1085263

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


FUD неосилятора.
>>1085282

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


Объясните мне в двух словах, как это можно провернуть, не используя указатели и не разбивая класс/структуру? Геттеры писать? Или контейнер сделать интрузивным? Если интрузивным, то на кой ляд аллокатор?
>>1085288

>Алсо, большинство протоколов пишется на С, а не на С++.


Что такого охуительного в C по сравнению с C++? Вам кто-то запрещает неиспользовать STL?
>>1085288

>Добавлю лишь, то что даже в санной яве есть конкурентные lock-free контейнеры и параллельные алгоритмы.


Стандарт не должен быть бустом.
>>1085290

>Ты забыл добавить: сделает сотни бесполезных копий твоего кода и экзешник в сотни мегабайт


Пример можешь показать?
>>1085299
Эксперты этот ресурс не видели никогда и ради ответа на твой вопрос читать его не будут.
>>1085318

> portable (between compilers) ABI


Учитывая то, что это АБИ минимальное настолько, насколько это возможно, то какое в этом достижение?
>>1085318

>RAII injects lots of unnecessary function calls at the end of scope, sometimes even expensive virtual calls.


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

>These calls often require data that would otherwise be dead so the data are kept alive,


штоблядь

>The C++ exception mechanism is very inefficient (~6x slower than OCaml) because it unwinds the stack frame by frame calling destructors rather than long jumping.


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

>but it encourages all destructors to avalanche so you get unbounded pause times (worse than any production GC)


Что мешаешь сделать методы clear в объектах и вызывать их заранее, если так страшно нежелательна "пауза"? Чем это хуже, чем в Си, в котором программист делает то же самое, но только без гарантии проверки вызова деструктора? Данные и функции можно инкапсулировать в класс, класс разрушать вручную.

>there is no way to do run-time code generation and compilation as you can in Java, C# and languages dating back to Lisp (1960)


Сравнивает хуй с пальцем. Что значит "no way"? Если так сильно нужна кодогенерация, можно тащить компилятор целиком, LLVM x86-64 около 90 МБ весит без либ (которые для регексов, например, не нужны), его ещё и собрать можно с другими флагами, чтобы уменьшить.

>(Herb Sutter's favorite C++ 10-liner has a memory management bug).


http://flyingfrogblog.blogspot.ru/2013/10/herb-sutters-favorite-c-10-liner.html
Какой там меори лик, блядь? Виджеты в гуе размножаются почкованием?
>>1085489
Нет, там флоаты во флоат реинтерпретятся. И вообще, там какое-то расширение используется (аттрибут в начале кода), а не чистый C++.
#466 #1085512
>>1085263

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


FUD неосилятора.
>>1085282

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


Объясните мне в двух словах, как это можно провернуть, не используя указатели и не разбивая класс/структуру? Геттеры писать? Или контейнер сделать интрузивным? Если интрузивным, то на кой ляд аллокатор?
>>1085288

>Алсо, большинство протоколов пишется на С, а не на С++.


Что такого охуительного в C по сравнению с C++? Вам кто-то запрещает неиспользовать STL?
>>1085288

>Добавлю лишь, то что даже в санной яве есть конкурентные lock-free контейнеры и параллельные алгоритмы.


Стандарт не должен быть бустом.
>>1085290

>Ты забыл добавить: сделает сотни бесполезных копий твоего кода и экзешник в сотни мегабайт


Пример можешь показать?
>>1085299
Эксперты этот ресурс не видели никогда и ради ответа на твой вопрос читать его не будут.
>>1085318

> portable (between compilers) ABI


Учитывая то, что это АБИ минимальное настолько, насколько это возможно, то какое в этом достижение?
>>1085318

>RAII injects lots of unnecessary function calls at the end of scope, sometimes even expensive virtual calls.


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

>These calls often require data that would otherwise be dead so the data are kept alive,


штоблядь

>The C++ exception mechanism is very inefficient (~6x slower than OCaml) because it unwinds the stack frame by frame calling destructors rather than long jumping.


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

>but it encourages all destructors to avalanche so you get unbounded pause times (worse than any production GC)


Что мешаешь сделать методы clear в объектах и вызывать их заранее, если так страшно нежелательна "пауза"? Чем это хуже, чем в Си, в котором программист делает то же самое, но только без гарантии проверки вызова деструктора? Данные и функции можно инкапсулировать в класс, класс разрушать вручную.

>there is no way to do run-time code generation and compilation as you can in Java, C# and languages dating back to Lisp (1960)


Сравнивает хуй с пальцем. Что значит "no way"? Если так сильно нужна кодогенерация, можно тащить компилятор целиком, LLVM x86-64 около 90 МБ весит без либ (которые для регексов, например, не нужны), его ещё и собрать можно с другими флагами, чтобы уменьшить.

>(Herb Sutter's favorite C++ 10-liner has a memory management bug).


http://flyingfrogblog.blogspot.ru/2013/10/herb-sutters-favorite-c-10-liner.html
Какой там меори лик, блядь? Виджеты в гуе размножаются почкованием?
>>1085489
Нет, там флоаты во флоат реинтерпретятся. И вообще, там какое-то расширение используется (аттрибут в начале кода), а не чистый C++.
#467 #1085516
>>1085511

>Если так, то там не одно узкое место, и надо всё переписывать на плюсах, так это весь point моего поста.


Если ты долбоёб и не можешь почитать как работает JNI — иди и получай PhD в расеюшке.

>Слив засчитан.


Отвечу тебе в твоём же стиле: покидай-ка гитхабчиков, дружочек. Особенно про MPI интересно, как там стандарт поживает и чем оркеструет.
#468 #1085517
>>1085500

>Я контрибьютор в нескольких крупных.


В студию.

>На сишке переписывать код на плюсах или что?


В свете этого утверждения предыдущее подвергается переезду вагоном сомнений.
#469 #1085521
>>1085505

>мы с пацанами посмотрим


Может хуй с пацанами друг другу пососете?

> Rust вкидывай


Я не пишу на расте, дебич.

> на интринсиках или ассемблере icpc обогнал


Реально заорал с этого и сразу стало понятно, что ты макака ни разу ничего не векторизовавшая.
Чаще всего ссаный icc просто ебашит очевидный код векторный написанный на С просто тупо наполовину обычными сингл инструкциями, и такая векторизация оказывается медленее раз в 5-8 чем на интринсиксах. И доверять компилятору, высоконагруженный код, который должен выживать из железа максимум, никогда никто не будет, ибо всегда будет существовать вероятность что компилятор сделает хуево. Интел это понимают, поэтому у них есть Math Kernel Library, иначе можно было бы доверить все компилятору и не делать никаких спец либ.
Но тебе откуда знать, ты скорее всего даже не реальный программист, а очередной диван в треде, максимум осиливший laba1.

Можешь не продолжать даже, ибо с нубами о чем-то спорить не вижу смысла.
#470 #1085523
>>1085511

> ты заслуживаешь минимум PhD


С каких это пор PhD дают за макакинг? Хотя...
#471 #1085525
>>1085521

>Math Kernel Library


Представь Манюнь, у них шаренная кодовая база. И кто еще после этого диван?

Хотя

>пососете


>дебич


> icc просто ебашит очевидный код векторный написанный на С


это риторический вопрос.
#472 #1085526
>>1085516
Бох ты мой, у меня от твоего кукареку уши заложило.

>Если ты долбоёб и не можешь почитать как работает JNI — иди и получай PhD в расеюшке.


Чего читать? Я писал код, который работает через JNI, весьма легко быстро писать, весьма быстро работает.

> Отвечу тебе в твоём же стиле: покидай-ка гитхабчиков, дружочек. Особенно про MPI интересно, как там стандарт поживает и чем оркеструет.


О, легко.
https://github.com/libMesh/
Вот плюсовая библиотека, там полна коробочка, шаблоны, MPI, говно вышло жуткое. Но быстрее ничего нет. Обгони на Расте хоть. Или покажи, что быстрее работает.
Не ощущаешь сил?
https://github.com/petsc/petsc
Я вызываюсь провести сравнения, реализуй мне из этой библиотеки BiCGStab с LU-предобуславливанием на Расте. Работать должно на MPI-кластере, тестировать будет на 256=16*16 процессоров. Я согласен сам твои результаты опубликовать и тебя первым автором поставить, ты только нормальную реализацию покажи.
Совсем уверенным себя чувствуешь? Перепиши на расте PARDISO. Хотябы версию для общей памяти.
>>1085521

>Я не пишу на расте, дебич.


Так чего ты тогда кукарекал?

> Чаще всего ссаный icc просто ебашит очевидный код векторный написанный на С


Дальше не читал.
https://gist.github.com/kbarbary/9efb3650f1b69b2b6b18e34ad347777b
Жду avx-версию, которая обгоняет референсную имплементацию.
#473 #1085528
>>1085526

>BiCGStab с ILU-предобуславливанием на Расте


Конечно же. Но можешь простой сварганить.
#474 #1085529
>>1085521
Мощные сишные гитхабы-то будут сегодня, или перфоманс провалился и ты укатишься обратно в php-тред?
#475 #1085530
>>1085525
Че сказать то хотел, объебос?
#476 #1085533
>>1085512

>Нет, там флоаты во флоат реинтерпретятся.


Типа это не нарушает strict aliasing?
#477 #1085535
>>1085533
Нет, с чего бы? Ты же в одной единице компиляции это делаешь.
#478 #1085536
>>1085529
Ты же понимаешь, что это анонимный форум, и как бы слово "анонимный" тут не просто так и предполагает, сохранение анонимности его участников, а за раскрытие на некоторых бордах даже банят, не знаю как в этой помойке. Но всегда веселили такие аутисты, которые не могут продолжить дискуссию, рациональными аргументами в поддержку своей позиции, а начинают орать ГИТХАБ СВОЙ ИЛИ НИБЫЛО! Пиздец же дауны. Каково такими быть?
#479 #1085538
>>1085536

>Ты же понимаешь, что это анонимный форум,


Гитхаб дохуя деанонит? Хотя судя по твоим жалким оправданиям у тебя уже нет другого выхода.
#480 #1085540
>>1085535

>Ты же в одной единице компиляции это делаешь.


А это тут при чём?
#481 #1085542
>>1085540
Это он на data race намекнул, к алиасингу отношения не имеет, вродеб.
>>1085533
Не нарушает. Правило это означает, что перед каждым доступом к значению по указателю, машинный код должен сторнуть все регистры, в которых содержатся lvalue-значения этого типа.
#482 #1085543
>>1085536
Ой, мы слив уже засчитали, без примеров с гитхаба не возвращайся, можешь чужой нести, но чтобы релевантный был.
#483 #1085544
Соотв., каким бы хуем ты не кастил туда-сюда, если ты получаешь доступ к тому же типу, который хранится, код безопасен.
#484 #1085548
>>1085538

>Я скозал


>Мяяям смари я скозал и он слился!!11

#485 #1085550
>>1085542

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


Это в каком параграфе стандарта так сказано?

> сторнуть все регистры, в которых содержатся lvalue-значения этого типа.


http://eel.is/c++draft/basic.lval#1.sentence-6
Давно C++-выражения хранятся в регистрах?
#486 #1085551
>>1085540
Ну, в целевой структуре алаймент будет таким же.
#487 #1085552
>>1085548
Вся суть слившегося студента-отличника обчитавшегося хабрапараши.
#488 #1085553
>>1085482
Можно ссылку на пример?

>>1085445
Щас подумал. Производную нужно обязательно брать автоматически из коробки. Луа так умеет?
#489 #1085554
>>1085543
Слушай, мне вообще абсолютно насрать на то, что веришь ты или не веришь. Я не собираюсь тебе тут вайтпейперы писать, чтоб убедить в чем-то, какую-то поехавшую крестоблядину. Пиши как знаешь, мне похуй на тебя. Можешь хоть говном вымазаться.
#490 #1085558
>>1085554
Этот кукаретик сломался, господа, вносите следующего.
#491 #1085561
>>1085558
Опять же

>Я скозал



Вообще изначальная тема была, то что С++ уебищный язык, но крестобляди, анальные рабы страустропа, лихо повернули всю тему дискуссии в другое русло, только бы не смотреть правде в глаза.
#492 #1085562
>>1085553

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


Ты пиздец много хочешь, братюня
https://www.google.ru/search?q=c+++symbolic+math+library
#494 #1085566
#496 #1085569
Опять перекат пилить...
# OP #497 #1085571
Опять перекат пилить...
#498 #1085572
Точнее, я говорил о glvalue.
>>1085550

>Давно C++-выражения хранятся в регистрах?


Сам себя обосрал. В C++ нету регистров и форма твоего вопроса выдаёт то, что формулировку ты понял.

>Это в каком параграфе стандарта так сказано?


Окей, я понял, объяснять на пальцах в терминах самого популярного вида архитектуры ЦП не надо, ты говоришь только на языке стандарта. Но при этом слово "регистр" ты почему-то знаешь. Готов принять красную пилюлю?
>>1085561
Действительно, в интернете кто-то неправ и на хую вращал твоё желание поговорить на интересную ТЕБЕ тему.
#499 #1085573
>>1085569>>1085571
Давай, бро, перекатывай. Какой оп-пик выберешь?
#500 #1085576
>>1085573

> Какой оп-пик выберешь?


ХЗ. Вообще не хочу перекатывать. Пусть кто-нибудь другой.
#501 #1085577
>>1085573
Этот
#503 #1085580
>>1085576
Перекат, перекат, перекат >>1085579 (OP)
#504 #1085586
>>1085562
Вот что нашёл. Подходит по всем пунктам кроме возможности посчитать производную.
#506 #1085616
>>1085207
Заглядывали бы эти начальники хоть иногда в вуз. Спасибо за объяснение.
#507 #1085743
>>1085588
https://github.com/openturns/ev3
всё. нашёл. вот этот на кресты. то что надо похоже.
#508 #1085752
>>1085743
ход нет. у него от буста зависимость.
#509 #1086215
>>1085578
Это типо трифорс? В основе всего кресты?! Спасибо, отличная картинка!
Очередной памятник плюсам
#510 #1088923
Бля, столько всего в этих ваших 14/17

Как за всем уследить, как видеть возможность применять фичи
#511 #1089234
>>1088923
Исопльзуй boost, например, оттуда все говно в стандарт тянется. А если ты решил ударить по шаблонам, то тут ты будешь ебаться всегда вне зависимости от стандарта.
#512 #1089424
>>1089234
Постараюсь, ага

Просто постоянно натыкаюсь на новые фичи и начинаю себя некомфортно чувствовать, что я их не использую. Потом начинаю пихать их повсюду и опять начинаю себя некомфортно чувствовать. Так вот и живу ВДИСКОМФОРТЕ
#513 #1091696
Нужен c++ программист (cocos2d-x) в мобильный геймдев. Как его найти? Уместно ли запостить вакансию здесь?
#514 #1091892
Вопрос: Нужна что нужно прогеру из математики знать?
#515 #1091904
>>1091892
Смотря какая ты макака.
Если бизнес-макака, то нужны интегралы
Если графон-макака, то больше тригонометрии и матриц вряд ли что-то понадобится
Если нейроно-макака, то нужно знать специфику нейроночек
Но везде самое главное - знание алгоритмов, а то понаприходют, блять, хэш-таблицу от дерева не могут отличить (ну это я утрирую)
#516 #1092129
>>1091696
Кстати умею, лол
Писал игрушу на 2дх
Может фейкопочту закинешь?
#517 #1092179
Есть ли сакральный смысл в назначении конкретных значений для членов перечисления (enum которое)? Или это делается из тех же соображений, из которых желательно инициализировать каждую переменную при объявлении (ну тип чтобы в случае чего рандом-ошибки не отлавливать)? Но ведь правила назначения значений по умолчанию членам enum везде одни и те же.
Тред утонул или удален.
Это копия, сохраненная 15 ноября 2017 года.

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

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