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


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

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

C++ №92 /cpp/ Аноним 19/08/19 Пнд 12:14:37 14561151
1566206057814.png (23Кб, 360x405)
360x405
Аноним 19/08/19 Пнд 18:40:55 14563732
image.png (9Кб, 377x134)
377x134
>>1456115 (OP)
может кто-нибудь устанавливал на линукс gRPC и protobuf? Я не могу разобраться с установкой. Вот так я устанавливаю gRPC https://pastebin.com/GmhTNf7M
потом я устанавливаю protobuf тоже по инструкции.
Но когда я пытаюсь скомпилировать пример из gRPC из examples, мне выдает ошибку будто у меня нет grpc_cpp_plugin. Я гуглил эту ошибку, и оказалось, что этот плагин должен лежать в папке usr/local/bin. Но там его не оказалось, а этот файл лежал в grpc/bins/opt вместе с плагинами для других языков. Но разве после sudo make install этот файл не должен был переместиться в usr/local/bin? Если я вручную копирую grpc_cpp_plugin в usr/local/bin, то эта ошибка больше не выскакивает, и теперь make не может найти ещё какой-то gRPC файл. Ещё я нашел что проблемы могут быть из-за разных версий protoc. Подскажите, как узнать, сколько у меня версий protoc? И мне кажется, наверное после сборки все файлы плагинов должны были сами переместиться в правильную папку? Я не знаю толком cmake, посмотрите пожалуйста мои команды установки. Может там ещё что-то нужно было сделать. чтобы все файлы установились в правильные папки?
Аноним 19/08/19 Пнд 20:28:39 14565383
image.png (3Кб, 265x211)
265x211
1. Почему std::hypot(arr.x,arr.y,arr.z) выполняется почти в два раза дольше (как для float, так и для double), чем sqrt(arr.xarr.x+arr.yarr.y+arr.z*arr.z)?

2. Если я группирую элементы по 16 байт и считаю расстояния через sse, получается где-то в 2.5 раза быстрее. И если группирую по 32 байта и считаю черезе avx, то получается такая же разница в 2.5 раза.
Это нормально? Просто в процессоре заглушуку поставили, которая два раза по очереди использует sse-функцию?

Любопытно, что _mm_sqrt_pd более чем в два раза опережает sqrt обычный.
То есть я создаю фиктивный __m128d, куда записываю один double через _mm_set1_pd, считаю корень через sse инструкцию и получается немного быстрее чем стандартный sqrt, при том что я полностью игнорирую второе число.
Аноним 19/08/19 Пнд 20:39:09 14565614
image.png (7Кб, 687x295)
687x295
>>1456538
>1
Ох, я открыл cmath, и там внутри вот это. Зачем это всё? Там же только дополнительные вычислительные ошибки накопятся, разве нет? Это же не целые числа, чтобы с переполнением бороться.
Аноним 19/08/19 Пнд 20:52:03 14565825
>>1456538
Оптимизации включил?
Аноним 19/08/19 Пнд 21:18:19 14566106
>>1456561
>Зачем это всё?
В требования к hypot посмотри.
Аноним 19/08/19 Пнд 22:24:19 14566567
Как сделать настройки интерфейса по умолчанию в visual studio?
Аноним 19/08/19 Пнд 22:46:44 14566768
>>1456656
Бампану, а то студия заебала сбрасывать настройки после очередного вылета
Аноним 19/08/19 Пнд 23:58:41 14567089
>>1456538
С --ffast-math (или что там в MSVC) компилировал?
Аноним 20/08/19 Втр 00:07:57 145671210
chipworks116602.jpg (59Кб, 660x495)
660x495
Привет знатоки. Мне надо зделоть массив констант, а-ля коэффициент синуса в 16битах бля ШИМ модуляции, на этапе компиляции.
Знаю что ннадо использовать constexpr, но туплю немношк.
Массив у меня будет чалиться во флеш памяти, потому он должон быть static const, к тому же он обязан быть глобальным ради прерываний. Вобщем нихуя не компилится у меня. Чо делоть то?

constexpr ststic const uint16_t sin_array[SIN_ARRAY_MAX] ={0};
constexpr void fill_sin_array (void) {
for (int i =0; i==SIN_ARRAY_MAX; ++i) sin_array = 0xffff std::sin(180 / M_PI i);
}
void manya () { consexpr fill_sin_array ();
Аноним 20/08/19 Втр 00:29:47 145671611
Аноним 20/08/19 Втр 00:39:02 145671712
>>1456582
Конечно. Без них там разница раз в шесть получается. O3/O2 одинаково работают. При O3 там по умолчанию ещё какая-то автовекторизация есть которую неплохо бы отключить для частоты эксперимента, "-ftree-vectorize", но я не знаю как её отключать, если я её не указывал и она сама.

>>1456708
У меня не msvc.


>>1456712
Можешь попробовать так: https://ideone.com/XzSyzP
Но sin - не constexpr, придётся искать кастомную реализацию sin, лол.
Аноним 20/08/19 Втр 02:11:03 145673613
>>1456716 я так не могу, у меня лапки микруха. Крайне нежелательно использовать стандартную либу. На крестах только потому что можно регистровые кишки удобно запихнуть в класс и не видеть этого пиздеца как можно дольше. Да и начинал учить ЯП с крестов а не с си.
>>1456717
>Но sin - не constexpr
Да ёб страуструпа мать. Идея как обычно хорошая, а реализация через хуй. Похуй, ебану прощще таблицу в файл.
Аноним 20/08/19 Втр 05:56:56 145675414
Продублирую вопрос из 91
Наверно ньюфаги всех тут уже заебали, но всё же спрошу.
А если есть знания матана (по крайней мере понимаю о чём речь идёт), из-за специализации в вузике, но на плюсы в моей 600к деревне ищит только одна контора, то как качать скилл?

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

Есть идея влится в какой нибудь опен соурс, но вот не знаю какой.
Аноним 20/08/19 Втр 09:08:54 145678115
Анон, как настроить в VS вывод ошибок сети (буста) типа ec.mesaage() или e.what() на английский язык в русской шинде? В начале программы стоит setlocale(LC_ALL, "en_US.UTF-8")
Аноним 20/08/19 Втр 09:09:49 145678216
>>1456754
В машоб, очевидно же. Во все эти opencv, там матан будет.
Аноним 20/08/19 Втр 09:20:43 145678317
>>1456712
Стало интересно, нагуглил это
https://rextester.com/CRR35028
Там какразтыке "кастомный синус" (я помню, что это была лаба в вузике). Выглядит годно, мне понравилось.
Аноним 20/08/19 Втр 09:50:39 145679018
>>1456783
Через ряд отвратительная точность будет, синус даже не непрерывный получается, если его нужно для каких-то производных или ещё чего использовать, если что. И суммировать нужно начиная с высших степеней, хотя бы уж, что впрочем тоже не помогает.

https://github.com/gcc-mirror/gcc/blob/master/libquadmath/math/sinq.c
https://github.com/gcc-mirror/gcc/blob/master/libquadmath/math/sinq_kernel.c
Вот этот синус непрерывный. Не знаю что там с точностью, но он по крайне мере гладкий и непрерывный с кучей своих производных. Не вникал в алгоритм, но вроде бы там таблица+ряд.
Ну для 16-битных уж точно проще использовать таблицу, чем констъэксприть такое чудовище.
Аноним 20/08/19 Втр 12:55:15 145682919
Посоветуйте учебник похожий на книгу кернигана и ритчи, очень нравятся в ней задачи, буквально с первых страниц дают очень сложные упражнения.
Аноним 20/08/19 Втр 15:08:43 145688120
gcc vs g++.PNG (10Кб, 668x331)
668x331
Из js-треда гонять начали, поэтому сюда вкачусь со своим вопросом. Вопрос по поводу совместимости C и C++.
Есть, короч, кусок Си-шного кода. Могу ли я его скомпилировать C++ -компилятором?
Аноним 20/08/19 Втр 15:11:18 145688321
>>1456881
Файл гцц назови, вроде он расширение подглядывает при компиле.
Аноним 20/08/19 Втр 15:16:15 145688722
>>1456883
Там вот эти циферки 16 и 1 - время выполнения некой функции test(); Как так получается, что скомпилированное с помощью gcc в 16 раз медленнее скомпилированного с помощью g++?

>вроде он расширение подглядывает при компиле.
Вроде не должен.
Аноним 20/08/19 Втр 15:19:20 145689123
>>1456887
Про время хз, а про расширение что-то было, но возможно еще на 4й версии, вроде ошибок насыпало, если расширение и майн его не устраивали.
Аноним 20/08/19 Втр 15:20:19 145689324
>>1456887
>скомпилированное с помощью gcc в 16 раз медленнее скомпилированного с помощью g++
М.б. г++ с О2 посчитал сам и выпилил всё, кроме вывода ответа. Проверь без О2.
Аноним 20/08/19 Втр 15:22:56 145689425
>>1456881
Практически всегда - да, но есть исключения
Аноним 20/08/19 Втр 16:15:25 145691926
>>1456893
Я понял. Функция test(); ничего не выводит и не возвращает и g++ ее за ненадобностью не компилирует.
Аноним 20/08/19 Втр 16:17:00 145692127
Как же трудно понять потоки, в сишке такого не было
Аноним 20/08/19 Втр 16:19:03 145692228
Аноним 20/08/19 Втр 16:22:08 145692329
>>1456881
>Могу ли я его скомпилировать C++ -компилятором?
Я тебе разрешаю, компиль.
Аноним 20/08/19 Втр 17:21:20 145694030
>>1456829
Бамп. Где брать задачки? У липпмана в книге нихуя нет
Аноним 20/08/19 Втр 19:55:08 145706031
Как работать с bluetooth?
Аноним 20/08/19 Втр 20:36:32 145707532
Аноны, посоветуйте литературы об асинхронности и многопоточности. Использую буст::асио, да что-то здорово насосал, когда io_context запихнул в нехитрый тредпул из вектора.
Аноним 20/08/19 Втр 21:46:47 145713333
Работая с памятью другого процесса я должен париться о страницах или я полностью работаю в виртуальном пространстве процесса и могу обращаться к любым его адресам виртуальной памяти (4 гб для 32 разрядных вроде и дохуя для 64 разрядных процессов). Почему некоторые исходники, которые я смотрел, чтобы найти значение в памяти получают информацию о страницах?
Аноним 20/08/19 Втр 23:07:49 145718434
>>1457075
для asio надо курить бустовую документацию, там все сложно. Для обычной многопоточки - книга товарища Вильямса
Аноним 20/08/19 Втр 23:09:43 145718535
>>1457060
читать документацию на MSDN или для красноглазой параши
Аноним 20/08/19 Втр 23:16:34 145718836
>>1457185
> красноглазой параши
Что?
Аноним 20/08/19 Втр 23:18:13 145719137
>>1457185
Я читал msdn, выделил по моему мнению нужные функции, но в разных примерах пишут по разному. Где то используют регионы, а где то нет. Поэтому и спрашиваю
Аноним 21/08/19 Срд 00:03:57 145722938
>>1456881
Ты проверял, меняется что-то для g++, если сделать .cpp расширение?

А ты в объектный код смотрел, там в самом деле нет функции test() или предположил? Мне действительно интересно, настолько ли умный компилятор.

шо ж ты за извращенец, GCC на винде?
Аноним 21/08/19 Срд 00:38:43 145724339
>>1457229
>меняется что-то для g++, если сделать .cpp расширение
Не думаю.
>А ты в объектный код смотрел, там в самом деле нет функции test() или предположил? Мне действительно интересно, настолько ли умный компилятор.
g++
Там в тесте rand вызывается. Так что test() таки существует и все rand() честно вызывает.
Если поставить заглушку вместо rand, то
test оптимизируется до ret и не вызывается.

gcc, однако, гораздо менее агрессивен.
От test мало того, что что-то остаётся, так ещё и в main инлайнится. Не ожидал
чекал тутъ https://godbolt.org/

мимо в кресты и асм не умею, не бейте
Аноним 21/08/19 Срд 07:49:18 145730940
>>1457133
Если через ReadProcessMemory - вроде похуй, он сделает все проверки за тебя и просто пошлет тебя, если полезешь в пустоту.
Аноним 21/08/19 Срд 10:29:37 145734941
>>1457309
А зачем некоторые обращаются по регионам?
Аноним 21/08/19 Срд 10:32:49 145735442
>>1457349
Ну.. хуй знает? Я не встречал например. Мож им удобней так, чтоб лишнее не сношать и не терять время. Или начитались того, где сказано так делать.
Аноним 21/08/19 Срд 10:36:59 145735543
Аноним 21/08/19 Срд 13:00:08 145748544
[code]
test;
cout << "Bydlo";
[/code]
Аноним 21/08/19 Срд 13:01:28 145749045
Почему не работает?

VirtualAlloc((LPVOID)1000, 5000, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READ);
int a = (int)1500;
cout << *a;
Аноним 21/08/19 Срд 13:06:34 145749346
>>1457490
Совсем ультрадебил?
Аллок только пытается выделить память где указано, но если это указывает дебил - то может и в другом месте, он тебе возвращает адрес где выделил.
Аноним 21/08/19 Срд 13:37:12 145752947
Аноним 21/08/19 Срд 13:37:51 145753048
>>1457485
Че за хуйня. В браузере не работает, а с dashchan'а все ок
Аноним 21/08/19 Срд 13:40:56 145753449
>>1457529
Кстати докинь WRITE в права, точно не уверен что надо, но тыж пишешь туда.
Аноним 21/08/19 Срд 13:49:07 145754550
Не запускаются программы собранные в clion, пишет нет какой stdlibc++, та же программа собранная в codeblocks работает. В чем дело?
Аноним 21/08/19 Срд 14:41:23 145761551
>>1457534
[code]
LPVOID M = VirtualAlloc((LPVOID)1000, 4096, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
[/code]
M ссылается на ноль
Аноним 21/08/19 Срд 14:41:53 145761652
>>1457615
Хотя в дебаггере функция что то возвращает
Аноним 21/08/19 Срд 14:43:16 145761753
>>1457615
If the function fails, the return value is NULL. To get extended error information, call GetLastError.
Аноним 21/08/19 Срд 14:45:01 145761854
>>1457617
Там хуйня какаято. Выдает просто огромнейшее шестнадцатиричное число. Такого кода тупо нет
Аноним 21/08/19 Срд 14:46:30 145762055
Аноним 21/08/19 Срд 14:47:50 145762256
>>1457618
Да и сделай ты уже первый параметр нуллем и не выпендривайся.
Аноним 21/08/19 Срд 14:49:51 145762357
>>1457622
Делал. Ща покажу. извиняюсь за то, что я туплю. Я сегодня вообще думал мозгами отдохнуть и поэтому не напрягаясь пишу и читаю
Аноним 21/08/19 Срд 14:52:11 145762558
>>1457623
СУКА. Я не то выводил. Походу надо заканчивать на сегодня. А то толку нет
Аноним 21/08/19 Срд 14:58:50 145762959
Аноним 21/08/19 Срд 15:03:01 145763260
>>1457545
Поставь IDE вместо параши
Аноним 21/08/19 Срд 15:04:29 145763661
>>1457632
Но мне очень нравится clion
Аноним 21/08/19 Срд 15:05:24 145763862
>>1457636
как тебе что-то может нравится, если ты даже скомпилировать хелло ворлд не можешь?
Аноним 21/08/19 Срд 15:06:19 145763963
>>1457638
Всё могу, в clion встроена консолька, а когда понадобилось запустить программу отдельно я соснул
Аноним 21/08/19 Срд 15:09:05 145764164
>>1457639
Или компиль с -static-libstdc++ или кинь либы в path.
Аноним 21/08/19 Срд 15:11:34 145764365
>>1457354
Я думаю я понял. Так мы сразу проверяем регион на доступность и если он недоступен, значит программа его не использует и мы можем пропустить его.
Аноним 21/08/19 Срд 15:13:50 145764566
>>1457643
Зависит от задачи же, если тебе просто почитать по известным адресам - ReadProcessMemory, если делаешь велосипед с поиском значений в памяти - то да, лучше проверить куда лезешь, чтоб быстрее было.
Аноним 21/08/19 Срд 15:18:13 145764667
>>1457645
> Если делаешь велосипед
This. Я не могу сообразить как карасик в данном случае может быть быстрее тупо сканирования по байтам. Мне же сначала нужно построить бор, сканируя память, а потом искать. Если бы мне нужно было один раз построить и потом искать то согласен, быстрее. Но мне кажется будет лучше сразу сканировать в поиске нужного значения
Аноним 21/08/19 Срд 15:20:32 145764768
>>1457646
Берешь регионы которые используются, читаешь в буфер, ищешь, повторить.
Аноним 21/08/19 Срд 16:11:22 145767969
Сап, крестоносцы. Поделитесь вопросами/задачками по плюсам, которые вам приходилось решать на собеседованиях. В основном интересуют вопросы по тонкостям языка
Аноним 21/08/19 Срд 16:12:39 145768470
>>1457618
Надо с него достать ошибку.
Я не помню точно код, но на стэковерфлроу был вопрос с хорошей самописной функцией для расшифровки.
Аноним 21/08/19 Срд 16:21:01 145769271
>>1457641
А можно как то в cmake прописать параметры, чтобы было все норм?
Аноним 21/08/19 Срд 16:23:01 145769572
>>1457692
set_target_properties(prjname PROPERTIES LINK_FLAGS "-pthread -static-libgcc -static-libstdc++")
Аноним 21/08/19 Срд 16:28:43 145770073
>>1457695
Ругается на pthread, без него компилится, ошибок не выдает при запуске, но сразу закрывается, как при открытии из проводника так и из консоли.
Аноним 21/08/19 Срд 16:31:02 145770274
>>1457700
Ну это для пингвина/мингв либа.
Ну закрывается - тут уж код смотри, скорей всего.
Аноним 21/08/19 Срд 16:52:09 145771675
>>1457702
> Ну это для пингвина/мингв либа.
У меня мингв и стоит
И как я уже говорил, в code::blocks этот же код нормально компилиится а программа запускается и работает.
Еще попробовал скомпилить через консоль, но винда пишет что g++ нет, хотя MinGW лежит в корневом разделе диска
Аноним 21/08/19 Срд 16:54:06 145772076
>>1457716
Наркоман чтоль? Либо запусти батник у мингв, либо сам в PATH окружения пропиши его папку, как сделано в батнике.
Аноним 21/08/19 Срд 17:25:02 145775577
>>1457720
Запустил, один хуй все сразу закрывается, пиздец какой то. Неужели придется на code blocks сидеть или студию ставить
Аноним 21/08/19 Срд 19:04:15 145783778
Короче помогло прописывание в cmake
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++ -static-libgcc")

Как вообще разобраться в работе компиляции и всего этого? Учебник не затрагивает эту тему
Аноним 21/08/19 Срд 20:31:54 145791979
В каких случаях память имеет атрибут writeonly? Я догадываюсь что это для всяких системных данных.
Аноним 21/08/19 Срд 20:44:21 145793080
Есть ли способ обрезать переменную до первого значащего бита или мне нужно самому велосипеды писать?
Аноним 21/08/19 Срд 20:54:18 145794581
>>1457919
В тех когда память защищена ос или еще чем чтобы всякие кулхацкеры не лазили.
Аноним 21/08/19 Срд 21:03:06 145795782
>>1457930
Все. Разобрался почти. Не надо отвечать
Аноним 21/08/19 Срд 21:14:50 145796483
>>1457755
Подключись дебагерром
Аноним 21/08/19 Срд 22:00:33 145797984
>>1457755
>один хуй все сразу закрывается, пиздец какой то
Может быть там просто программы выполняется полностью и закрывается и нужно что-то вроде system("pause") прописать?

Запусти cmd, и внутри cmd пропиши путь к твоей программе. Тогда в консолке останется вывод твоей программы. В программе выводи числа, printf("1\n") - printf("16\n"), таким образом определишь в какой момент падает программа, лол.
Аноним 21/08/19 Срд 22:53:29 145801885
>>1457930
Hackers delight уже советовали?
Аноним 21/08/19 Срд 23:13:01 145802986
>>1457979
Можно просто писать логфайл
Аноним 21/08/19 Срд 23:56:48 145805387
Почему так происходит?
[code]
for (int i = 7; i >= 0; i = i - 1) {
bool p = (value & (1 << i));
cout << p;
}
[/code]
Если я в программе напишу value = 110, то все правильно. Выводится 01101110, но если ввести это значение с клавиатуры, то выведется 00110001. Может это связано с тем, что visual studio тип int8 определяет как char?
Аноним 22/08/19 Чтв 00:05:27 145805988
15470769162010.gif (113Кб, 550x400)
550x400
>>1458053
А какого типа твой value? Для дрочки битов всегда используй unsigned типы.
Аноним 22/08/19 Чтв 00:07:11 145806089
>>1458053
Забыл сказать, что у value тип INT8
Аноним 22/08/19 Чтв 00:08:38 145806190
Аноним 22/08/19 Чтв 00:12:21 145806591
Аноним 22/08/19 Чтв 00:17:57 145806792
>>1458059
Прочитал, что происходит при знаковом типе. Слева записывается бит знака. Но меня удивило почему это работает для значения, заданного в коде.
Аноним 22/08/19 Чтв 00:20:19 145807093
Аноним 22/08/19 Чтв 00:30:49 145807294
Причем для int все работает в обоих случаях
Аноним 22/08/19 Чтв 00:33:05 145807495
>>1458070
Читай int кастуй к uint8_t.
Аноним 22/08/19 Чтв 00:40:32 145807896
15483649987631.gif (75Кб, 379x365)
379x365
>>1458070
Что фиксится, норкоман? В твоём коде из >>1458061 ты выводишь в двоичной записи числа 110 и 49.
Аноним 22/08/19 Чтв 00:42:46 145807997
>>1458078
49 не нужно было выводить. Короче я понял. Int8 для компилятора тоже самое, что и char, поэтому ведет себя странно
Аноним 22/08/19 Чтв 01:02:02 145809898
15324307240780.jpg (56Кб, 604x409)
604x409
>>1458079
> ведет себя странно
Почитай про дополнительный код что ли.
Аноним 22/08/19 Чтв 01:05:14 145810399
>>1458098
Да причём тут это? Анон char вместо int считывает. Вот и вся проблема.
Аноним 22/08/19 Чтв 01:23:55 1458112100
>>1457679
>В основном интересуют вопросы по тонкостям языка
Если тут все прорешаешь, то вопросы по тонкостям будут не страшны: http://cppquiz.org
Аноним 22/08/19 Чтв 13:20:30 1458363101
>>1458112
Годно. Как раз то что искал, благодарю
Аноним 22/08/19 Чтв 15:10:04 1458490102
1566475785154.jpeg (174Кб, 1367x457)
1367x457
Это правда?
Аноним 22/08/19 Чтв 15:26:55 1458509103
>>1458490
Нет, не правда. Там неплохие контейнеры, но нет никакой проблемы написать контейнер, которые в определённой задаче будут работать чуточку быстрее и тратить меньше памяти. То есть, там много настроек которыми можно попробовать это исправить, но использовать их сложнее, чем написать свой контейнер, на мой взгляд.
Аноним 22/08/19 Чтв 17:39:15 1458591104
>>1458490
Правда. В стандартной библиотеке все самое шустрое. Если уж не в ней, то в бусте точно. Манек, которые пишу не кроссплатформенные решения на коленке зато на 5% быстрее даже не слушай.
Аноним 22/08/19 Чтв 18:38:32 1458642105
>>1458363
Ссылка в шапке есть, хоть и в самом низу. Никто не читает шапку.
Аноним 22/08/19 Чтв 19:44:48 1458724106
>>1458490
Хеш таблица (std::unordered_map) там не очень. Хотя если тебе хранить меньше десятков/сотен тысяч элементов, то разницы нет.
Аноним 22/08/19 Чтв 19:55:20 1458737107
Аноним 22/08/19 Чтв 20:33:52 1458772108
>>1458724
>Хеш таблица (std::unordered_map) там не очень
Теоретически, ты свой аллокатор можешь написать, чтобы память под каждый элемент не выделялась.
Аноним 23/08/19 Птн 04:13:26 1458934109
>>1458490
Какой-нибудь small_vector где проаллоцировано пара десятков элементов не помешало бы.
Или что-то вроде small string optimization, но для вектора.
Аноним 23/08/19 Птн 18:10:18 1459396110
Как сравнить указатель с числом? Как делить указатель на число? В общем как рвботать с указателями как с числами? И как сместить INT64, не на 8 байт, а всего на один?
Аноним 23/08/19 Птн 18:30:29 1459405111
>>1459396
Или лучше скажите как обратиться к отдельному биту или байту в памяти
Аноним 23/08/19 Птн 18:38:08 1459409112
>>1459405
>к отдельному байту
uchar тебе в помощь
>к отдельному биту
Смещаешься оператором >> и обрезаешь ненужное &1
Аноним 23/08/19 Птн 18:38:26 1459411113
>>1459396
>Как сравнить указатель с числом? Как делить указатель на число? В общем как рвботать с указателями как с числами?
Разыменуй.
int a = 228;
int b = &a;
std::cout<<
b==a;
Аноним 23/08/19 Птн 18:38:56 1459413114
>>1459411
ебаный харкач * удалил
Аноним 23/08/19 Птн 18:42:01 1459419115
ed.PNG (2Кб, 193x150)
193x150
Аноним 23/08/19 Птн 18:50:22 1459426116
image.png (4Кб, 901x79)
901x79
>>1459396
>В общем как рвботать с указателями как с числами?
reinterpret_cast<size_t>(p), наверное, где p - любой указатель. Или просто ((size_t)p).
>Как делить указатель на число?
Мне кажется, ты делаешь что-то не правильно. Зачем делить указатель на число? Может быть тебе нужен остаток от деления, хотя бы?

>>1459405
Картинка, наверное.
Аноним 23/08/19 Птн 18:52:04 1459427117
>>1459419
А в обратную сторону сработает, если чуть подправить? Чтобы указателю присвоить значение? Или reinterepret_cast? Только сейчас о нем прочитал
Аноним 23/08/19 Птн 18:53:00 1459430118
Аноним 23/08/19 Птн 19:47:19 1459461119
Аноним 23/08/19 Птн 20:17:11 1459493120
>>1458591
>то в бусте точно.
>буст
>быстро
Выбери одно.
Аноним 23/08/19 Птн 20:25:29 1459496121
>>1459427
если ты разыменуешь указатель на неконстанту, то сможешь присвоить значение
Аноним 23/08/19 Птн 20:53:53 1459514122
Аноны, хочу сделать простую p2p сеть на Qt или что-то с бустом думаю это не принципиально, максимум сотня пиров будет, но не могу понять как ее правильно устроить. В подробности думаю смысла нет вдаваться, вопрос в чём: посоветуйте пример одноранговой сети с открытым кодом желательно не больше 10к строк на плюсах, с теорией знаком танненбаум , а вот как это всё делать вообще не представляю
Аноним 23/08/19 Птн 21:32:15 1459536123
Аноним 23/08/19 Птн 21:33:53 1459540124
>>1457647
А до как узнать до каких пор считывать? Нагуглил функцию свойство процесса PeakWorkingSetSize. Но как его применить? Память то может в любом месте выделиться. Я вот не знаю как ос память выделяет. Может она постранично выделяет и тогда я смогу посчитать колличество выделенных страниц, следовательно уже прочитанную память. Так смогу понять стоит ли читать дальше или нет.
Аноним 23/08/19 Птн 21:35:00 1459543125
>>1459540
Я забыл слово "функция" стереть.
Аноним 23/08/19 Птн 21:39:38 1459549126
>>1459543
Я за память не шарю, но много раз видел схему, где исполняемый код находится после данных. Я смогу определить, что кусок памяти исполняемый и прекратить поиск. Но что мешает разработчику пользоваться памятью за исполняемым кодом.
Аноним 23/08/19 Птн 22:25:56 1459599127
>>1459549
Так гаверное и буду делать. Но вопрос: память выделяется постранично или произвольно?
Аноним 23/08/19 Птн 22:28:59 1459602128
>>1459549
Так наверное и буду делать. Но вопрос: память выделяется постранично или произвольно? Я конечно погуглю сейчас, но хочу удостовериться
Аноним 23/08/19 Птн 22:36:44 1459607129
>>1459602
Постранично конечно.
Аноним 23/08/19 Птн 22:42:43 1459610130
>>1459607
Услышал тебя.Добро. В таком случае у меня все схвачено. Я кабанчиком за код. Может по ходу вопросики появятся, надо будет обкашлять. На созвоне.
Аноним 24/08/19 Суб 02:14:24 1459707131
>>1459610
Постранично. Размер страницы 4096 байт. Запрашиваешь информацию через VirtualQuery, фильтруешь регион, дампишь память и потом ищешь в буфере то что нужно.
Аноним 24/08/19 Суб 05:51:18 1459731132
>>1458934
>small_vector где проаллоцировано пара десятков элементов
vector_instance.reserve(20) ?
Аноним 25/08/19 Вск 01:12:03 1460344133
>>1459731
Я думаю, он о том, чтобы вектор небольших размеров все на стеке хранил, без аллокации. Спорная идея, лучше какие-то временные буферы использовать.
Аноним 25/08/19 Вск 03:46:18 1460363134
Нужен перебор всех комбинаций с инкрементом, то есть из ['a', 'b', 'c'] будет не
[code]aaa
aab
...
ccc[/code], а
a
b
c
aa
...

Несколько дней бьюсь, но алгоритм в голову не приходит. Это ведь простое что-то.
Аноним 25/08/19 Вск 04:22:11 1460365135
Аноним 25/08/19 Вск 04:32:48 1460366136
>>1460365
Да, именно это, спасибо.

Чтобы взять из головы и написать нужна в основном ведь практика?
Аноним 25/08/19 Вск 12:12:23 1460452137
>>1460366
Обычно со временем приходит понимание что во многих вещах есть какие-то закономерности. Увидишь их, формализуешь, то кодить станет гораздо легче.
Аноним 25/08/19 Вск 12:18:14 1460457138
Решил проверить Великую теорему Ферма. У меня получаются целые числа со степенью = 3, если ставлю достаточно большой предел поиска. Что я делаю не так? Может, переменной c байт не хватает для нормального ответа?
https://ideone.com/7yEe0Q
Аноним 25/08/19 Вск 12:56:05 1460481139
>>1460457

> Vvedite predel chisla
Проиграл
Аноним 25/08/19 Вск 13:07:30 1460489140
>>1460481
Вообще-то там транслитом
>Vvedite predel dlya x i y
, а не числа.
Аноним 25/08/19 Вск 13:22:33 1460493141
>>1460457
>У меня получаются целые числа со степенью = 3,
А кокие должны?
Аноним 25/08/19 Вск 13:27:46 1460496142
Что за напасть, подскажите, пожалуйста.
Сегодня с утра встал, решил покодить. Внезапно частное от деления округляется в меньшую сторону до целого, хотя тип double.
Вот буквально такой код:

double z = 3 / 2;
Alert(z);

выдаёт 1. 1/2 выдаёт 0. Если задать z нецелым, то выдаст заданное как положено.

Что случилось-то? Я сейчас крякну.
Аноним 25/08/19 Вск 13:29:13 1460498143
>>1460493
По теореме Ферма x^n+y^n=z^n не существует такого целого z, если n>2.
Аноним 25/08/19 Вск 13:30:25 1460500144
Аноним 25/08/19 Вск 13:30:30 1460501145
>>1460496
UPD 3.0 / 2 даёт ожидаемый ответ.
Аноним 25/08/19 Вск 13:32:58 1460503146
>>1460498
Ну тогда ебись с cout, оно может округлять, попробуй printf("%f"
Аноним 25/08/19 Вск 13:33:28 1460505147
>>1460503
>оно может округлять
Зачем?
Аноним 25/08/19 Вск 13:34:30 1460508148
>>1460505
Потому что может, а ты нет, кек

cout.setf(ios::fixed);
cout << setprecision(3) << a << endl;
Аноним 25/08/19 Вск 13:36:05 1460512149
>>1460508
У меня программа так написана, что cout для ответа отрабатывает только тогда, когда итог операции x^n+y^n=z^n целое число. Тут наверняка проблема с типами данных у переменных.
Аноним 25/08/19 Вск 13:37:28 1460516150
>>1460512
То есть, если при выполнении x^n+y^n извлекаемый корень из суммы целое число, то cout отрабатывает.
Аноним 25/08/19 Вск 13:38:34 1460518151
>>1460512
>У меня программа так написана
Неа, числа с плавающей точкой с нулем не сравнивают
Аноним 25/08/19 Вск 13:39:36 1460519152
>>1460518
А с чем тогда сравнивать? Как определить, что число целое? Ну, то есть после запятой только нули.
Аноним 25/08/19 Вск 13:41:43 1460521153
Аноним 25/08/19 Вск 14:02:03 1460532154
Аноним 25/08/19 Вск 14:04:22 1460533155
>>1460496
Ну а хули ты хотел от целочисленного деления? Скорее всего тебе даже компилятор поругался.
Аноним 25/08/19 Вск 14:10:19 1460535156
изображение.png (5Кб, 228x210)
228x210
>>1460496
Просто ты говнокод написал.
Аноним 25/08/19 Вск 18:39:03 1460675157
Аноним 25/08/19 Вск 20:48:04 1460732158
>>1460675
>IEEE 754
А по ураински ещё можешь?
Аноним 25/08/19 Вск 20:52:20 1460735159
Аноним 25/08/19 Вск 22:58:22 1460811160
>>1459602
Это опять я. Нашел такое утверждение "Конечный адрес памяти равен ImageBase + ImageSize. Эти значения берутся из заколовка PE файла". Почему мне никто не сказал? Это же куда лучше того, что предложил я.
Аноним 25/08/19 Вск 23:15:59 1460823161
Есть ли что то вроде memcpy, но для другого процесса?
Аноним 25/08/19 Вск 23:18:11 1460825162
>>1460823
Или не надо... Чет я запутался
Аноним 26/08/19 Пнд 16:10:33 1461253163
Как добавить элемент в вектор из указателей на строку?
vector<char*> meh;
meh.push_back((new string("Test")));
Хуйня, да?
Аноним 26/08/19 Пнд 16:19:31 1461258164
>>1461253
meh.push_back(new char[32]);
А чем тебе вектор std::string не нравится?
Аноним 26/08/19 Пнд 16:22:13 1461261165
>>1461258
Мне просто было интересно.
Аноним 26/08/19 Пнд 19:57:21 1461423166
>>1459536
>torrent
К торрентам ведь нужно примагнититься, ну или каким-то образом узнать адрес пира, чтобы получить данные. У меня стоит задача написать распределённую БД, и после передавать по ней один и тот же файл. Я практически полностью понимаю как это сделать, кроме одного момента: как новый пир узнает обо всех остальных, если нет центрального сервера, который отошлёт ему список всех участников сети? В интернете удивительно мало информации по данной теме, ну либо я неправильно ее ищу, поэтому и прошу помощи хоть алгоритм примерный
Аноним 26/08/19 Пнд 20:05:01 1461426167
>>1461423
"распределенная бд" для хранения 1 (одного) файла
мощьно
Аноним 26/08/19 Пнд 21:43:33 1461474168
>>1461426
Бля да я учусь, просто для задачи одного файла достаточно. Мне бы сделать так, чтобы при появлении нового хоста он делал запрос ко всем остальным вот на этом моменте я и туплю, и получал текущее состояние файла, а дальше просто пинговал раз в пару секунд остальные ноды и сидел тихо пока управление не дадут.
Аноним 26/08/19 Пнд 22:08:41 1461479169
>>1461474
А зачем запрос текущего состояния?
Зачем кто-то из участников сети должен знать об остальных?
Просто раз в какое-то время участник бродкастит всем список файлов и их хэши, другие ловят, отличается - поехали качать разницу.
Хотя не уверен, что для большого количества файлов это нормально сработает.
Аноним 26/08/19 Пнд 22:27:08 1461486170
>>1461479
>бродкастит
А если они не в локальной сети находятся?
Аноним 27/08/19 Втр 00:03:35 1461539171
>>1461486
Не так буквально.
Широковещание здесь в том смысле, что не кому-то конкретному, а просто всем - кто смог принять сообщение, тот принял. Главный косяк этой системы будет в случае возможного модифицирования файла сразу несколькими клиентами, придется как-то разрешать конфликты.
Аноним 27/08/19 Втр 04:27:52 1461577172
Аноним 27/08/19 Втр 09:12:16 1461652173
tenor.gif (578Кб, 314x236)
314x236
>>1458724
Сап. Есть формула, типа
double f(double a){
return sin(a)cos(a) + sin(a)sin(a)cos(a) + ...;
}

Нужно ли самому, в 2к19, повторяющиеся члены рассчитать самому, типа sca = sin(a)
cos(a), или няша-компилятор все сделает сам, и не придется лишний текст писать?
Аноним 27/08/19 Втр 09:23:21 1461660174
>>1461652
Посмотри что godbolt.org выдаёт, напиши и глянь какой асм код генерирует.
Аноним 27/08/19 Втр 09:43:44 1461668175
>>1461652
Синус - не constexpr, выше где-то было обсуждение этого дела, так что не выйдет повесить это на компилятор.

Но если ты найдешь формулу приближения и тебе не очень важна точность, то их уже можно вычислить на этапе компиляции.
Аноним 27/08/19 Втр 10:10:35 1461678176
Аноним 27/08/19 Втр 10:16:30 1461680177
>>1461678
CLang, пидорас, почему-то не соптимизировал нихуя код, gcc и очевидно icc делают всё хорошо. Не ожидал от цланга такого, пиздос, я на нем сейчас собираю
Аноним 27/08/19 Втр 12:27:46 1461739178
>>1461652
а в 2к19 уже не нужно знать элементарные правила математики из 4го класса школы?


Аноним 27/08/19 Втр 12:46:40 1461755179
Аноним 27/08/19 Втр 13:01:31 1461760180
>>1461739
> 2к19
> изобретать велосипеды
Математика на этапе выше, код должен быть понятен
Аноним 27/08/19 Втр 13:03:36 1461761181
>>1461760
Мне код абсолютно понятен, но тебе не понять...
Аноним 27/08/19 Втр 13:32:52 1461784182
image.png (75Кб, 1819x323)
1819x323
Антоны, можете помочь?
Я в ваших крестах не очень разбираюсь, я вообще из другого языка, но смотрю проект и тут такой вот блок
Можете подсказать, что тут происходит?
Аноним 27/08/19 Втр 13:35:09 1461788183
>>1461784
А все, разобрался, оно берет из GUI значение и устанавливает его константой.
27/08/19 Втр 15:13:12 1461866184
>>1461788
Нет. Здесь есть параметр OcrScaleFactor: его значение по умолчанию (не заданное, это баг), функции его сохранения в настройки и получения из настроек. QSettings хранит их в ini файле или в реестре (это в винде по умолчанию).
GUI тут нет вообще.
Аноним 27/08/19 Втр 15:38:59 1461877185
Аноны, кто нибудь может посоветовать годную практику для тренинга многомоточки? С теорией разобрался, а вот практику придумать/найти не могу
Аноним 27/08/19 Втр 16:26:44 1461901186
>>1461877
держи классическую задачку с сантой и оленями:

Санта Клаус постоянно спит, до тех пор, пока не будет разбужен либо всеми девятью северными оленями, вернувшимися из своего отпуска, либо любыми тремя эльфами из его десяти эльфов. Если Санту разбудили олени, то он запрягает их всех в свои сани, доставляет игрушки и, наконец, распрягает оленей (отправляя их обратно в отпуск). Если же его разбудила группа эльфов, он провожает каждого из них в свой кабинет, консультируется с ними по поводу игрушек. После этого он выводит каждого эльфа из своего кабинета (отправляя их обратно работать).
Санта должен отдавать приоритет оленям, в случае если его ожидают сразу и олени, и группа эльфов.
Аноним 27/08/19 Втр 16:29:45 1461906187
>>1461901
>Санта должен отдавать приоритет оленям
олени > эльфы

алсо я не секу в вашем мл, в чем задача то?
Аноним 27/08/19 Втр 16:37:19 1461913188
>>1461906
это классическая практика на тренинг механизмов синхронизации между потоками
что не ясно?
Аноним 27/08/19 Втр 16:40:09 1461915189
Аноним 27/08/19 Втр 17:55:10 1461961190
Допустим, я рисую прямую QPainter-ом с помощью метода drawLine. Как мне потом обновлять состояние этой прямой? Ну то есть чтобы я ее двигал, и предыдущее состояние не сохранялось на картинке.
Аноним 27/08/19 Втр 18:02:17 1461965191
Ананасы, допустим я возвращаю из функции вектор по значению.
Как понять: он копируется или перемещается? Вроде ещё есть copy elision. Он тут играет роль какую-то?
Аноним 27/08/19 Втр 18:15:05 1461972192
>>1461965
Копируется. Если функция будет возвращать указатель, то будет "перемещаться".
Аноним 27/08/19 Втр 18:19:57 1461979193
>>1461972
Т.е. нужно написать const auto vec = std::move( getVec() )?
Аноним 27/08/19 Втр 18:20:20 1461981194
Аноним 27/08/19 Втр 18:28:20 1461984195
>>1461979
Что за getVec()?
Смотри. Допустим есть метод doSomething(). Ты можешь объявить его как vector doSomething(), тогда он будет возвращать вектор, а если объявишь его как vector* doSomething(), то он будет возвращать указатель на вектор. Используешь в зависимости от своих потребностей.
Не совсем понимаю, что ты хочешь сделать, н овангую, что тебе вообще ничего не надо возвращать, а просто написать void-метод, который будет что то делать с твоим вектором.
Аноним 27/08/19 Втр 18:35:28 1461987196
>>1461965
Пиздовать читать стандарт, там все сложно. Начиная с С++17 copy elision происходит обязательно, вроде даже всегда, но мув/копи конструкт/оператор= всё равно может вызваться уже после завершения твоей функции, например, если ты делаешь
vector<T> hui = f();
Аноним 27/08/19 Втр 18:37:08 1461988197
.png (4Кб, 301x316)
301x316
>>1461984
> Не совсем понимаю, что ты хочешь сделать
Возвращаю координаты соседних тайлов.
Функция принимает на входе координаты тайла (жёлтый) и расстояние (радиус) вокруг которого мне нужно получить координаты (серые). На пике расстояние равно 2.
Аноним 27/08/19 Втр 18:37:25 1461989198
>>1461984
>>1461972
Расчёт неосиляторов окончен, все быстро учить стандарт.
Аноним 27/08/19 Втр 18:55:27 1462001199
>>1461988
Проще итератор возвращать, чем вектор. Зачем тебе лишние аллокации?
Аноним 27/08/19 Втр 18:55:36 1462002200
>>1461988
Так, и в чем проблема?
Аноним 27/08/19 Втр 18:57:55 1462006201
>>1461866
>не заданное, это баг
С чего ты взял, что оно не задано? Статик конст в хидере только с С++11 можно прописывать.
Аноним 27/08/19 Втр 19:01:21 1462011202
1566921660906.jpg (121Кб, 771x1080)
771x1080
>>1461989
Не собираюсь его читать, пока жареный петух не клюнет.
Аноним 27/08/19 Втр 19:01:55 1462012203
>>1462002
Ты слеп? >>1461965

>>1462001
И как я из итератора узнаю сколько элементов в векторе?
Зачем мне его хранить всё время работы программы?
Аноним 27/08/19 Втр 19:03:20 1462015204
>>1461965
тут сразу ошибки проектирования:
вместо того чтобы работать с голым вектором, его следует обернуть в класс (к примеру набор неких "документов" у тебя будут хранится не напрямую в векторе_документов, а делаешь класс "реестр документов")
далее в си и крестах значение функций чаще используется не для возвращения результата работы, а для кода ошибки/успешного завершения, а в случаях когда принято решение не использовать исключение, то тут и вообще нет выбора
а результаты работы функций возвращаются через параметры-указатели
но в современном с++ делают по другому - возвращают результаты работы через владеющие смарт-пойнтеры
такие дела

Аноним 27/08/19 Втр 19:07:26 1462017205
>>1462015
Это просто массив интов.
Зачем мне городить какие-то абстракции ненужные поверх этого?
Аноним 27/08/19 Втр 19:12:06 1462027206
>>1462012
>И как я из итератора узнаю сколько элементов в векторе? Зачем мне его хранить всё время работы программы?
Я так понял, что у тебя таблица, и тебе надо для ее элементов делать какие-то действия с соседними ячейками. Если ты будешь возвращать вектор, содержащий соседние ячейки, это будет не очень быстро работать, если таких обращений много из-за динамичекской аллокации. Если он храниться все время программы, то лучше конечно вектор. Если обращаешься часто - кастомный итератор (в котором ты спокойно можешь хранить и размер вектора).
Аноним 27/08/19 Втр 19:12:34 1462028207
>>1462015
> возвращают результаты работы через владеющие смарт-пойнтеры
А это не противоречит принципам ооп?
Аноним 27/08/19 Втр 19:15:12 1462030208
Есть способ запретить для класса создание lvalue, но разрешить создание rvalue?
Можно: Klass().method();
Нельзя: Klass k; k.method();
Аноним 27/08/19 Втр 19:15:53 1462031209
>>1462030
Сделать копирующий конструктор = delete.
Аноним 27/08/19 Втр 19:16:58 1462034210
>>1462031
Ох, не так понял. У тебя через синглтон надо делать.
Аноним 27/08/19 Втр 19:17:36 1462035211
>>1462017
но "инты" то что то означают? разве нет? что у тебя там - длины хуйцов твоих половых партнеров или зарплаты бати за последние три года
что то они должны означать
Аноним 27/08/19 Втр 19:18:57 1462036212
>>1462031
Делал, но создание объекта это просто вызов конструктор. Не помогает.
Аноним 27/08/19 Втр 19:21:40 1462040213
>>1462036
Тогда удалить или сделать приватным стандартный конструктор. Гугли "c++ singleton".
Аноним 27/08/19 Втр 19:25:34 1462041214
>>1461965
Если не накосячишь компилятор сделает RVO и копирования/перемещения вообще не будет. На современных компиляторах часто выгоднее возвращать по значению.
Аноним 27/08/19 Втр 19:26:23 1462043215
>>1462030
это какой то вид специальной олимпиады? для чего ты хочешь это сделать?

Аноним 27/08/19 Втр 19:29:06 1462047216
>>1462043
Хочу, чтобы объект удалялся сразу после вызова метода. Ему больше незачем жить.
Аноним 27/08/19 Втр 19:31:57 1462050217
>>1462027
Короче, профилирование показало что эта функция вообще не влияет ни на что.

>>1462035
> но "инты" то что то означают?
Индексы массива и всё
Аноним 27/08/19 Втр 19:32:57 1462051218
>>1462047
заверни это в обычную функцию
в ней будет создаваться объект, вызываться его метод, удаляться объект


Аноним 27/08/19 Втр 19:38:19 1462054219
>>1462041
Вот этого слушайте
Аноним 27/08/19 Втр 19:43:13 1462056220
>>1462047
>Хочу, чтобы объект удалялся сразу после вызова метода. Ему больше незачем жить.
Тогда сделай конструктор приватным, а функцию Klass() объяви как friend. То есть создавать объект сможет только она.
Аноним 27/08/19 Втр 20:36:31 1462087221
>>1461755
Нужно.
Во флотах a (b c) != (a b) c, поэтому компилятор не сможет вынуть такие вычисления с плавающей запятой. Возможно --ffast-math или /fp:fast могут заставить игнорировать это, но фиг знает.
Аноним 27/08/19 Втр 20:44:54 1462092222
>>1462056
>>1462047
>ребят как бы побольнее сломать себе ногу?
возьми молоток, и раздроби коленную чашечку!

Аноним 27/08/19 Втр 20:48:24 1462094223
>>1462047
Зачем тебе тогда объект? Это просто функция.
Аноним 27/08/19 Втр 21:01:10 1462102224
>>1462030
Фабрика. Ну и если тебе нужно чтобы метод вызывался только раз для каждого созданого объекта, но сам момент вызова не сильно важен то можешь сделать сам метод приватным а его вызов засунуть в деструктор. Тогда если ты сделаешь Klass() то метод будет вызыватся сразу (будет создан временный объект, сразу уничтожен с ваызовом метода). Если сделать Klass k; то метод будет вызван при выходе из текущего скоупа - если конечно это тебе приемлемо.
Аноним 27/08/19 Втр 21:11:32 1462108225
.png (1370Кб, 849x931)
849x931
Почему в комитете по стандартизации нету негров почти?
Что за угнетение я вас спрашиваю?
Аноним 27/08/19 Втр 21:16:22 1462112226
>>1462108
Нигги пишут на питоне.
Аноним 27/08/19 Втр 21:21:07 1462118227
>>1462108
Если это зафорсить, то можно заставить sjw, а следовательно и гугл вместе с другими крупными корпорациями, бойкотировать кресты. Тогда язык останется без поддержки и загнется.
Аноним 27/08/19 Втр 22:43:58 1462162228
Анон, а где в обычной программе в 2к19 я могу встретить указатели? У меня уже, не знаю, миллион наверное строк кода в проекте, а анальной звёздочки всё нет и нет. Везде референсы! Правда, шаред-птр из-за дизайна тоже нету.

Почему тогда "указатели" так часто всплывают в какой-нибудь иные?

Алсо, в сишечке почему-то нет ссылок, были бы не лишними констрефы
Аноним 27/08/19 Втр 23:18:13 1462170229
>>1462162
Ну и что же ты такое закодировал?
Аноним 27/08/19 Втр 23:40:19 1462175230
>>1462162
> Анон, а где в обычной программе в 2к19 я могу встретить указатели?
В старых проектах. В Си библиотеках.
Аноним 28/08/19 Срд 00:10:35 1462182231
>>1462162
У нас в проекте оптимизация переиспользования памяти на бекенде. Здоровенный массив хранится в памяти одним сплошным куском, а наружу отдаются вьюхи, имплементированные как связка поинтер + длина. Хотя может быть для этого сегодня уже есть либы.
Еще это нужно, если работаешь с QtQuick. Сущности из C++ в QML передаются через поинтер, а не референс.
Гугл советует использовать указатели вместо неконстантных ссылок для передачи параметров внутрь функций. Типа так заметнее, что значение b мутирует: foo(a, &b)
Аноним 28/08/19 Срд 00:48:06 1462199232
>>1462182
>а наружу отдаются вьюхи, имплементированные как связка поинтер + длина
типа std:string_view что ли?
как вьюхи то сделаны? свои костыли?


Аноним 28/08/19 Срд 01:05:29 1462204233
>>1462182
>а наружу отдаются вьюхи, имплементированные как связка поинтер + длина
или типа как буфера в asio сделаны?

Аноним 28/08/19 Срд 01:34:08 1462213234
>>1462087
Gcc и msvc оптимизируют, clang только с ffast-math. При этом clang без ffast-math еще и sin-cos вызывает каждый раз, даже если встроенные функции использовать:
https://godbolt.org/z/1tj_ng
Аноним 28/08/19 Срд 02:23:04 1462224235
Аноним 28/08/19 Срд 08:15:05 1462279236
>>1462162
Ну вот мне иногда приходится ковырять PCM-аудио, там без указателей не так. Или сжатие, как например Хаффман (который я выпилил нафиг, ибо побитово Хаффмана делать это зашквар).
Аноним 28/08/19 Срд 08:40:51 1462293237
>>1462279
Почему там без указателей никак? Там, вероятно, есть массив семплов, ну и передавать его везде через констреф в крестах. В сишечке то конечно, может быть даже цос и стоит на си делать.
Аноним 28/08/19 Срд 12:36:35 1462463238
Аноним 28/08/19 Срд 13:53:53 1462538239
>>1462162
Все системное программирование - это ехал указатель через указатель, потому-что си. В нормальном продакшен коде на современных крестах указателей должно быть минимум.
Аноним 28/08/19 Срд 14:05:08 1462544240
>>1462279
>побитово Хаффмана делать это зашквар
Современные крестоебы.
Аноним 28/08/19 Срд 16:02:26 1462657241
Есть программа, часть исходного кода которой не стоит опубликовывать.
Могу я загнать эту часть в lib файл оставив только хидеры? При этом нужно, чтобы кто-то ещё мог дописать кода и скомпилировать. Это то что мне нужно?
Аноним 28/08/19 Срд 17:18:19 1462699242
>>1462538
именно для этого почти все умные указатели могут отдавать свой сырой указатель который инкапсулируют
типа у себя в коде с умными указателями работаешь, а в старые библиотеки отдаешь сырые указатели на обработку
Аноним 28/08/19 Срд 17:23:31 1462701243
>>1462657
конечно можешь
но придется поразбираться, там много неочевидных вещей начиная с того что .lib файл может как содержать объектный код, либо только содержать секции импорта-экспорта и тому подобные заморочки
Аноним 28/08/19 Срд 17:24:17 1462702244
Object object = eta_funkciya_vozvraschaet_object();

Учитывая RVO, гарантируется ли то, что в случае выброса исключения внутри функции объект останется нетронутым?
Аноним 28/08/19 Срд 17:27:01 1462703245
>>1462702
точнее так

Object object;
try {
object = eta_funkciya_vozvraschaet_object();
} catch (...) { // объекту пизда? }
Аноним 28/08/19 Срд 18:01:38 1462721246
>>1462703>>1462702
Мне тоже стало интересно и я накидал код на 30 строк. RVO происходит, только если я пишу "Object temp= make()", если я пишу в две строки "Object temp; temp=make();" (как в твоём втором посте), то там move-конструктор. То есть ситуации, когда в object что-то хранится и оно сломается просто невозможно достичь, потому что для этого нужно объявлять твой объект внутри try-секции, из которой он всё-равно никаким образом не выплестнется.
>>1462701
Аноним 28/08/19 Срд 18:02:14 1462722247
>>1462701
Мм, отлично, спасибо.
Аноним 28/08/19 Срд 19:03:17 1462737248
Постоянно рука тянеться использовать unsigned вместо int во всевозможных циклах и сётчиках. Мол, умножение проще, сравнение проще.
Имеет смысл, или устарело с момента выхода условного второго пентиума?

И аналогичный вопрос для 64-битных программ, продолжать использовать 4-байтовый (unsigned) int или 8-байтовая переменна будет быстрее на (0.5%) из-за восьмибайтового выравнивания в памяти?
Аноним 28/08/19 Срд 20:02:40 1462761249
>>1462737
Ненужна если ты не пердолишь ембед.
Аноним 28/08/19 Срд 21:01:12 1462800250
>>1462737
Ультимативный байтодрочер.
Аноним 28/08/19 Срд 21:32:06 1462817251
Аноним 28/08/19 Срд 22:05:34 1462834252
>>1462737
Это очень норма, мне даже автокомплит vs2017 давал size_t для циклов.
Как раз недавно классы делал, где решал, инт или size_t для размеров. Не очень хорошая ситуация происходит, когда делаешь вычитание, приходится тернарное сравнение делать:
size_t a = 10; size_t b = 5;
size_t ba = b > a ? b - a : 0;
Бесит.
Аноним 28/08/19 Срд 22:09:52 1462836253
>>1457837
Гуглить отдельно. Почитай хабрец. Там вроде много всякого было.
Аноним 28/08/19 Срд 22:15:45 1462842254
>>1462737
Некоторые алгоритмы получаются немного проще, если позволить счетчикам уходить в минус.
Unsigned счетчик при этом переполняется и приходится принимать дополнительные меры.
Аноним 28/08/19 Срд 22:22:10 1462852255
>>1462544
Читаешь по N бит сразу. Лезешь в таблицу и смотришь, какой символ эмитить и на сколько бит нужно сдвинуться. В дофига раз быстрее и всё ещё просто, все нормальные посоны так делают.
Аноним 28/08/19 Срд 22:33:43 1462863256
Аноним 28/08/19 Срд 23:02:51 1462882257
>>1462863
можешь рассказать личный опыт использования? что по твоему лучше сделано? буфера в asio, boost::interprocess или вообще сейчас string_view использовать?
Аноним 28/08/19 Срд 23:04:23 1462883258
>>1462737
я хз, но если ты типа пишешь modern c++, то вообще можно без счетчиков, работаешь через итераторы и обобщенные функции
Аноним 28/08/19 Срд 23:44:21 1462902259
>>1462737
Все арифметические операции над знаковыми/безхнаковыми одиеаковые благодаря дополнению до двойки. Также без разницы, использовать int32_t или int64_t - регистры-то одни. Хотя, если так уж интересно, посмотри таблицы Агнера Фога.
Аноним 29/08/19 Чтв 00:28:01 1462931260
Нравится C++, вообще есть возможность ебашить на нем бекенд продуктивно?
Аноним 29/08/19 Чтв 00:41:45 1462936261
>>1456115 (OP)
Привет, крестаны.
Перекатился 4 месяца назад из джава-тырпрайз-манямира в десктоп-разработку, проекты у компании все на Qt.

Вроде все и хорошо, но надо бы построить вменяемый DevOps тулчейн, пушто динозавры в нынешней конторе только-только осилили Git вместо SVN, и в настоящий момент катастрофически не хватает менеджера пакетов/зависимостей, пушто нынче каждый чих ведет к пересборке кучи проектов и ненужному мусору в Git.

Беглый гугл подсказывает что есть Conan и Buckaroo, но по обоим исчезающе малое количество инфы. На какой стул лучше сесть?
Аноним 29/08/19 Чтв 01:25:13 1462953262
Аноним 29/08/19 Чтв 04:08:22 1462972263
>>1462936
ути-пути какие мы, 4 месяца в нашем болоте, а уже настраиваем "процессы"

Аноним 29/08/19 Чтв 04:13:29 1462973264
>>1462931
продуктивно в смысле быстро? не, не получится
Аноним 29/08/19 Чтв 09:11:54 1463026265
Аноним 29/08/19 Чтв 09:34:40 1463039266
>>1462936
У меня обратная ситуация.
Писал несколько лет десктоп на Qt в подобной конторе (где даже svn, а затем гит разворачивал сам, лол).
Устав от низкой ЗП, которую еще и постоянно задерживают, и методологии разработки прямиком из 90х, пытаюсь перекатиться в джаву.

Какие подводные?
Аноним 29/08/19 Чтв 10:44:28 1463067267
>>1463039
>подводные
Деньги некуда девать будет.
Аноним 29/08/19 Чтв 13:51:45 1463164268
>>1462902
Если уж и байтоёбить, то надо еще учитывать сколько байт в инструкции. Поскольку буфер декодера маленький, 1 такт можно потерять.
По хорошему надо тест проводить.
Аноним 29/08/19 Чтв 15:45:56 1463224269
>>1462902
>если так уж интересно, посмотри таблицы Агнера Фога.
Интересно, посмотрел. Долбать fdiv/idiv тормозные, конечно, почти как квадратный корень.
Пойду выпиливать все деления. И остатки от деления. Ужас, это получается лучше сохранить две размерности двумерного массива, чем каждый раз считать компоненты через / и %. А я то думал, это за один такт работает (для целых чисел) и для небольшого массива 20x30 можно через деление и один индекс всё делать.

Плюшевый фриленсер 29/08/19 Чтв 16:21:16 1463236270
>>1463224
Если ты делишь на константы, то компиляторы умеют заменять деление умножением самостоятельно. Ручной вариант примерно такой(но смысла мало):

unsigned long long k = 1000;

//деление на 5
k = 858993460;
k >>= 32;

printf("%lld\n", k); //200

k = 1337
90;

//деление на 1337
k *= 3212392;
k >>= 32;

printf("%lld\n", k); //90

Умножение pipelined и снимать результат умножения с порта можно каждый такт если нет data dependency.
Если делитель переменная величина, то не могу ничего подсказать.
Плюшевый фриленсер 29/08/19 Чтв 16:22:16 1463239271
поправка:
k = 1337 * 90;
Плюшевый фриленсер 29/08/19 Чтв 16:23:23 1463240272
k *= 858993460;
Плюшевый фриленсер 29/08/19 Чтв 16:47:03 1463253273
Если не сможешь избавиться от делений то AVX512.
_mm512_div_epi64 например. Уж лучше чем насиловать процессор кучей делений.
Аноним 29/08/19 Чтв 16:47:28 1463254274
>>1462953
>>1463026
Спасибо, анончики. Буду посмотреть.

>>1462972
Ну так и чо, предлагаешь сидеть и не рыпаться, ждать пока кто-то другой соберётся и тратить по полчаса на каждую сборку?

>>1463039
> Какие подводные?

Работа с тырпрайзной джавой превратилась из написания кода в написание конфигов для зоопарка генераторов кода, генераторов генераторов, генераторов конфигов для генераторов генераторов. И всё это с воплями ПОТОМУ ЧТО ЭТО ПОЗВОЛИТ СКОНЦЕНТРИРОВАТЬСЯ НА РЕШЕНИИ ЗАДАЧ ВМЕСТО НАПИСАНИЯ РУТИННОГО КОДА.
Аноним 29/08/19 Чтв 17:36:13 1463313275
>>1463254
>Ну так и чо, предлагаешь сидеть и не рыпаться, ждать пока кто-то другой соберётся и тратить по полчаса на каждую сборку?
в смысле? у тебя будут компилится только измененные файлы (которые сам изменил или вытащил из гита), это быстро, линковка щас тоже быстрая тк линковщики неплохие щас
а полную пересборку проекта под целевые архитектуры и прочее, с прогоном тестов и прочим делается на отдельном сервере ночами или как там у вас, в общем зависит от того как настроен ci/cd на фирме..

Аноним 29/08/19 Чтв 17:39:47 1463316276
>>1463039
а не лучше ли в твоем случае просто сменить фирму, но сохранив специализацию qt/кресты

Аноним 29/08/19 Чтв 17:59:11 1463332277
>>1463313
> как настроен ci/cd
> ci/cd
> в компании перешедшей на Git в 2018 году

Вот ты взялся надо мной стебаться мол я ещё молод-зелен процессы рабочие настраивать. А процессов-то того, нету.
Пробивающий дно 29/08/19 Чтв 20:07:30 1463390278
Аноним 29/08/19 Чтв 21:14:25 1463448279
Почему комитет не выпускает какие-нибудь одобренные\проверенные библиотеки вместо добавления всего в std?
Что-то вроде буста.
Пробивающий дно 29/08/19 Чтв 21:26:36 1463458280
An oft-asked question is why we don't propose this library for Boost, instead of proposing it for the C++ standard library.
The short answer is that we are indeed planning to propose our reference implementation for Boost. It will be a great opportunity to get it into people’s hands sooner while we go through the process of standardization. Additionally, libraries like Boost.Container show that there is room in Boost for filling in implementations for compilers that do not provide a complete standard library.

But submitting a library like this to Boost is orthogonal to submitting this proposal to ISO C++. C++ is still missing out-of-the-box access to a piece of fundamental and very common hardware.

Источник: http://wg21.link/P1386R2
Пробивающий дно 29/08/19 Чтв 21:31:02 1463467281
Видимо их просят, а потом результат.
Аноним 29/08/19 Чтв 21:33:09 1463471282
>>1463458
> But submitting a library like this to Boost is orthogonal to submitting this proposal to ISO C++. C++ is still missing out-of-the-box access to a piece of fundamental and very common hardware.

Короче, нужен какой-то менеджер пакетов?
Пробивающий дно 29/08/19 Чтв 21:44:45 1463492283
>>1463471
Они хотели сказать, что audio это фича, которая "ну вот очень нужна" поскольку звуковушка есть в каждой машине. Ну это то, как я вижу их слова. В std хлама ведь нету совсем. Надеюсь меня простят, что я так слова искаверкал.
Пробивающий дно 29/08/19 Чтв 21:55:34 1463506284
Их пока послали временно, но видимо скоро будет еще попытка. На этот раз с типами и алгоритмами.
Аноним 29/08/19 Чтв 22:43:39 1463534285
>>1463506
Что им мешает свое говно как либу сделать?
Или добавить в буст? Клавиатура вот действительно в каждой машине есть
Аноним 29/08/19 Чтв 23:16:01 1463546286
>>1463534
По поводу либы, они даже сделали свою https://github.com/stdcpp-audio/libstdaudio. правда пока только для мака(винда говорят как только так сразу)

Я у них в предложении похоже нашел ответ.

Wouldn’t it be great if the basic functionality of talking to your sound card would come for free with every C++ compiler, as part of the C++ standard library? Not only would it allow one to write truly cross-platform audio code, but it would also lower the barrier of entry for learning.

Видимо так. "truly cross-platform" меня немного пугает. Особенно когда некоторые пишут код с фичами, которые поддерживает лишь их компилятор.
Аноним 29/08/19 Чтв 23:37:40 1463551287
Под типами и алгоритмами похоже имелось ввиду, что нужно будет предоставить типы аудио и их алгоритмы для стандартизации. Чел, ты бы хоть пояснил.
Аноним 30/08/19 Птн 00:17:08 1463567288
Насколько я знаю вывод в консоль медленный. Можно ли не дожидаясь вывода продолжить выполнение без использования потоков?
Аноним 30/08/19 Птн 00:20:30 1463569289
[code]
UINT64 Address = 0;
Address = reinterpret_cast<UINT64>(Address + 4096);

Ошибка: C2440 'reinterpret_cast': cannot convert from 'UINT64' to 'UINT64'
[/code]
Аноним 30/08/19 Птн 00:25:17 1463571290
>>1463569
Я понял. Я зря кастую. 4096 кратно 64 и поэтому можно спокойно без приведения типов.
Аноним 30/08/19 Птн 01:53:39 1463589291
>>1463567
Поищи, как выключать синхронизацию плюсовых и сишных потоков - тогда cout'ы будут быстрее, но printf больше нельзя будет использовать.
А если как хочешь ты - просто выводи на экран в другом потоке.
Аноним 30/08/19 Птн 02:19:23 1463595292
>>1463567
мультиплексирование вывода
Аноним 30/08/19 Птн 02:24:58 1463597293
>>1463595
ну или асинхронный ввод-вывод
Аноним 30/08/19 Птн 02:25:28 1463598294
>>1463595
>мультиплексирование вывода
те синхронный неблокирующий
Аноним 30/08/19 Птн 10:27:53 1463685295
>>1463567
Операции вывода какбэ буферизуются, если ты что то вывел в файл или сиаут это не значит что туда что то реально записалось, если ты принудительно не очистил буфер. Программа продолжает работать не дожидаясь реального вывода.
Аноним 30/08/19 Птн 16:52:28 1463951296
>>1463589
>>1463595
>>1463597
>>1463598
>>1463685
Кому верить? И еще дополнительный вопрос. Как узнать самые медленные места в программе? Есть ли анализаторвы какие? И как понять во что упирается программа? Скорость чтения-записи маленькая и стоит снизить колличество обращений к памяти или еще что? Еще надо глярут че там у меня по занятости процессора. Если он занят на 25% то можно еще поток заебашить, а если нет то не надо. Я правильно рассуждаю?
Аноним 30/08/19 Птн 17:01:47 1463964297
>>1463951
Каждый кусок дублируешь два-десять раз и смотришь стало ли медленнее. Если не стало, то тормозит что-то другое.
Можно каждый кусок обвешать rdtsc-шками, 100 наносекунд оно тебе спокойно посчитает с неплохой точностью. А если специально в цикле на нескольких итерациях гонять, то там можно доли процента выцепить.
Унылый быдлокодер 30/08/19 Птн 17:13:04 1463971298
Аноним 30/08/19 Птн 17:44:28 1464024299
Унылый быдлокодер 30/08/19 Птн 17:47:19 1464030300
Еще глубже: google - > performance analysis guide, работа Левинталя.
Разбор cpu по евентам. Был еще guthub репозиторий основанный на его работе, но я потерял ссылку, если у кого есть скиньте сюда.
Аноним 30/08/19 Птн 18:39:52 1464081301
>>1463951
Да всем и верить. Просто выбери то, что тебе больше нравится или проще будет реализовать.
Аноним 30/08/19 Птн 18:47:42 1464087302
Как сделать указатель на бит?
Аноним 30/08/19 Птн 18:51:31 1464090303
>>1464087
Я могу добится нужного результаиа с помощью побитовых сдвигов, но так было бы удобнее
Аноним 30/08/19 Птн 18:58:00 1464095304
>>1464087
Никак. Таких не бывает.
Аноним 30/08/19 Птн 19:04:03 1464099305
>>1464087
Хм. Наверное, стоит сделать биттвое поле с юнионом, типа
struct Foo {
union{
uchar bits0 : 1;
uchar val;
} field0;
union{
uchar bits17 : 7
uchar val;
} field1;
}
Структрка Foo займет один байт, и вроде работает uchar &p = *foo.field0.val;
Условием сможешь чекнуть, что p == 0.
Я не проверял.
Аноним 30/08/19 Птн 19:05:59 1464101306
Но само собой, это лютый говнокод, у тебя указатель больше битового поля
>>1464099
Аноним 30/08/19 Птн 19:09:46 1464105307
>>1464095
>>1464099
Вообще я могу не заниматься такой хуйней. Я пытаюсь найти переменную в памяти другой программы. Вдруг разрабы заморочились и сделали такую переменную, что она размером несколько бит и начинается с 3 бита 2538 байта
Аноним 30/08/19 Птн 19:17:58 1464112308
>>1464105
Анализировать целиком значение и сдвигом искать - по скорости будет также, если не быстрее. Естественно, чем больше известно входных данных, тем будет проще. Если знаешь точное число, можно взять его разрядную сетку, числа в памяти маскировать, сдвигать и сравнивать с паттерном. И спросить об этом в Си разделе, это их говно.
Аноним 30/08/19 Птн 19:20:22 1464114309
>>1464105
Да, поиск сначала делай по целым числам, не нашел - двигайся по байтам и бери 1, 2, 4 или 8 байт в зависимости от размера паттерна
Аноним 30/08/19 Птн 19:24:47 1464119310
>>1464112
> Если знаешь точное число, можно взять его разрядную сетку, числа в памяти маскировать, сдвигать и сравнивать с паттерном.
Да я так и хотел. Обрезал до первого значащего бита и пытался так шагать. А потом вспомнил что я смешаю указатель на байт, а не на бит.
Аноним 30/08/19 Птн 19:25:38 1464123311
>>1464114
То есть никакой долбаеб не будет хранить значение так, как я сказал? А всякие cheat engine найдут такое значение?
Аноним 30/08/19 Птн 19:41:07 1464131312
>>1464105
https://ideone.com/rEMkat
Я бы вот примерно так написал, если на коленке, если прям по битам. Но это совершенно точно не самый быстрый алгоритм (быстрее подготовить 8/32 маски, и 8/32 верных значения, и прыгать сразу по 1/4 байта без битовых сдвигов), и он за границу массива выходит.

Каким образом ты будешь идентифицировать конкретную переменную, если найдёшь, например, 623 мест с подходящей комбинацией бит? Или есть несколько пар дампа памяти и значения переменной, так чтобы можно было отсеять?

>Вдруг разрабы заморочились и сделали такую переменную
А на чём написана программа? Если высокоуровневый мусор, то шанс использования отдельных бит исчезающе мал, мне кажется, но точно не уверен.
Аноним 30/08/19 Птн 19:51:34 1464139313
>>14641318
Можешь в общих чертах описать че там вообще происходит?
Аноним 30/08/19 Птн 19:52:36 1464142314
Аноним 30/08/19 Птн 19:55:30 1464145315
>>1464131
>Но это совершенно точно не самый быстрый алгоритм
А он без UB?
мимо
Аноним 30/08/19 Птн 20:00:14 1464150316
>>1464139
Сверху массив рандомных значений, просто чтобы потестить.
find - то что нужно найти, size - его размер в битах.
mask - хуита (маска) вида 0b0001111, на которую я побитово умножаю (через &) очередной байт.

Далее, я циклом прохожусь по всем массиву (по каждому байту), но беру за раз по 4 байта (чтобы после сдвига там остались ненулевые биты, то есть значение размером в 27 бит этим говнокодом не найти(точнее, найти, но в любой позиции)), которые находятся в part.
Во втором внутреннем цикле я 8 раз (по числу бит), бинарно смещаю этот part, умножаю на маску и сравниваю с нужным значением. Вывожу номер байта и бита, если совпало.

>>1464145
У меня работает, что там по стандарту должно быть - не знаю.
Аноним 30/08/19 Птн 21:50:58 1464222317
Вопрос по Qt. Безопасно ли создавать сигнал, который принимает аргумент по ссылке (как и слот)? Вроде как там автокопировние внутри при передаче в слот, но я уже не уверен.
Аноним 30/08/19 Птн 22:39:59 1464269318

>>1462030
Попробуй перегрузить точку или стрелку
Аноним 30/08/19 Птн 22:48:36 1464281319
>>1463951
> Как узнать самые медленные места в программе?
Можешь через профайлер прогнать. Он покажет какие функции сколько времени работы программы используются.
А дальше уже можешь попробовать что-то в них поменять.
Аноним 31/08/19 Суб 01:00:51 1464391320
15474178293930.jpg (55Кб, 1106x1012)
1106x1012
Предположим у меня есть пять функций Func1, Func2, Func3, Func4, Func5.
Так как я не особо разбираюсь, я ввёл каждую из этих функций, но при этом мне нужно, чтобы при вводе cmd 1 выводилась функция 1 (сделано), при вводе 2 (после функции 1) включалась функция 2 (это тоже работает) и при вводе 1 (после функции 2) включалась функция 3 (а вот тут пиздец) и так далее. Типа такой цепочки действий. Если подскажете в каком направлении искать инфу, буду очень благодарен.
Писал функции через if else, но не ебу как в int main указать поочерёдность выполнения каждой из них
Аноним 31/08/19 Суб 01:02:13 1464392321
0014h3ehdvSXHj8.jpg (24Кб, 412x351)
412x351
>>1464391
То есть чтобы на каждую функцию был выбор из двух действий, как, например в текстовом квесте
Аноним 31/08/19 Суб 01:09:29 1464396322
>>1464392
>>1464391
Нормально задачу объясни. Может уже есть какое-то решение.
Конечные автоматы, вся хуйня
Аноним 31/08/19 Суб 01:18:34 1464399323
Господа крестовики. Как я понимаю при компиляции динамической или статической либы обязательно с ней в "поставке" должны идти хедеры, с помощью которых можно ссылаться на методы и сущности, коотрые определенны в либе из кода. А на этапе линковки или загрузки вызвы связываются с конкретной сущностью в бинарнике.
Как именно происходит это связывание, если упрощенно? Препроцесситься хедер, потом обрабатывается компилятором/линковщиком и на выходе получаем имена сущностей, определенные в хедере, которые потом ищуться в символьной таблице подключаемых библиотек? Т.е. меня интересует этот вопрос в таком контексте что если хедер библиотеки как-то не так обрабатывается при компиляции, например используются другие правила для манглинга имет функций, то на выходе мы получим ошибки линковки/загрузки?
Аноним 31/08/19 Суб 01:26:22 1464404324
Аноним 31/08/19 Суб 01:40:26 1464407325
>>1464391
Не понял. Ты во всех случаях вбиваешь 12345, или ты можешь ввести 13, и у тебя должна активироваться третья функция после первой?

Может быть тебе нужен массив указателей на функции, чтобы их можно было вызывать по номерам?
Не знаю что ты хочешь сделать, но если у тебя пять функций где логика привязана к номерам функций, то это то что тебе пригодится.
И матрицу/таблицу переходов прикрути. В твоём случае 5х2. Есть одна из пяти функций и ответы 1/2, при которых осуществляется переход на функции с номерами указанными в матрице. Например, так: https://ideone.com/uMscJD
Аноним 31/08/19 Суб 03:44:31 1464433326
>>1464391
стейт-машина, конечный автомат..
гугли..
вариантов реализации масса, самые простейшие это комбинация if-else с флагами состояний либо таблицы выбора..
есть и более сложные подходы..

Аноним 31/08/19 Суб 12:31:29 1464554327
При добавлении элемента в вектор, если не будет хватать места, весь вектор будет перемещен в другую область памяти, все верно? Можно как то это контролировать, ведь по времени это явно затратнее, чем просто добавить элемент?
Аноним 31/08/19 Суб 12:41:15 1464564328
>>1464554
У вектора есть .capacity()
Аноним 31/08/19 Суб 12:50:53 1464572329
Аноним 31/08/19 Суб 15:25:20 1464668330
>>1464554
Есть reserve(). Ещё подумой, не стоит ли тебе list использовать, там на это похуй
Аноним 31/08/19 Суб 15:34:39 1464671331
>>1464554
есть еще дек, он хранит элементы другим способом - чанками
поэтому получается что дека на вставку будет быстрее работать чем вектор

тут нужно делать выбор в зависимости от задачи

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

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

по итогу, вектор получается универсальней, за счет увеличения амортизационной сложности на вставку

Аноним 31/08/19 Суб 15:37:02 1464672332
>>1464671
помимо вопросов, связанных с производительностью и с совместимостью с сишным кодом, как минимум еще нужно помнить о том что некоторые контейнеры и контейнерные адаптеры "портят" итераторы и сырые указатели на их элементы, а другие - не портят
опять же, выбирать контейнер следует исходя из требований задачи

Аноним 31/08/19 Суб 15:40:37 1464673333
>>1464668
ну а вообще, конечно, да
когда примерно знают, сколько места займет вектор, то делают предварительный reserve(), возможно c последующим shrink_to_fit() - щас он в стандарте, а раньше делали трюк со swap()

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

Аноним 31/08/19 Суб 18:36:23 1464797334
image.png (3Кб, 449x29)
449x29
Дебис в треде.
Пишу залупу с потоками и для потока пикрил получаю ошибку 2893 и 2672. Нихуя не понимаю как лечить.
Аноним 31/08/19 Суб 18:43:59 1464805335
Аноним 31/08/19 Суб 18:52:36 1464811336
>>1464805
Лучше ибупрофеном, так дешевле.
А с потоком что делать? Проблема в сигнатуре, причем явно ругается на типы значений, но в чем конкретно проблема я не пони.
Аноним 31/08/19 Суб 18:58:14 1464815337
15663747162000.png (156Кб, 484x484)
484x484
>>1464811
Охуенное описание ситуации в целом и проблемы в частности. Тут же весь тред наизусть помнит коды ошибок 2893 и 2672. Просто помогать не хотят и траллируют.
Аноним 31/08/19 Суб 19:01:12 1464819338
Как по нормальному передать в приложение параметр utf-8? Через аргумент командной строки слишком трудно, да и вроде бы не на всех платформах прокатит. Если через файл, сохраненный в utf-8, то для пользователя слишком муторно будет. Как по нормальному сделать?
Аноним 31/08/19 Суб 19:05:21 1464823339
>>1464815
Ну ебать, не засирать же тренд копипастой с мелкомягкие.док, а по номеру вполне рил найти.
https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-2/compiler-error-c2893?view=vs-2019
https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-2/compiler-error-c2672?view=vs-2019
Шо еще описать, я не ебу. Делаю все как по буквам, в сигнатуре функции запускаемой в потоке все указываю как в гайдах, в сам объект потока передаю через std::ref, но на этапе сборки мне вываливает вижуалка эти ошибки.
Аноним 31/08/19 Суб 19:48:17 1464851340
>>1464823
Тогда бы код запостил или хотя бы тот гайд. Как блять мы тут должны по скрину одной строчки всё понять и починить?
Ну проверь, где ты эту функцию используешь, где какие типы ожидаются и какие на самом деле.
Аноним 31/08/19 Суб 20:52:06 1464877341
>>1464672
Я вообще не согласен с фразой "вектор - универсальный". Там любой контейнер универсальный. Лично я, например, чаще использую лист, и вот он для меня универсальный. Универсальный
Аноним 31/08/19 Суб 21:17:33 1464883342
>>1464668
>list использовать, там на это похуй
Не совсем. Лист все равно использует аллокацию. Пускай только для одного элемента, а не для всех как у вектора. Но аллокация все равно очень дорогая процедура.
Аноним 31/08/19 Суб 21:35:07 1464887343
>>1464883
У него до C++11 линейная сложность вызова size(). Я не люблю такие фокусы.
Аноним 31/08/19 Суб 21:47:42 1464896344
Аноним 31/08/19 Суб 21:59:06 1464898345
>>1464887
У меня в листе только емпти() проверяется например. Там вроде константа. И поиски ещё в листе, если данные не имеют какого-то известного закона распределения, то поиск с вектором вроде одинаковый по сложности.
Аноним 31/08/19 Суб 23:04:56 1464930346
>>1464929
Промахнулся. Если модер удалит эту хуйню, было бы неплохо.
Аноним 01/09/19 Вск 13:12:05 1465101347
Так а чё дальше делать, когда ты выучил все основы с++
Начить изучать конкретные библиотеки типа OpenGL или Vlukan?
Аноним 01/09/19 Вск 14:00:26 1465143348
>>1465101
Ещё один учащийся ради учения...
Аноним 01/09/19 Вск 15:23:59 1465213349
Аноним 01/09/19 Вск 16:31:49 1465259350
PlayerЗВ itsPlayers = new Player[DEFAULT_PLAYERS_COUNT];
Я правильно понимаю, что это указатель на массив из 6 элементов класса Player?
В таком случае что делает эта строчка?
itsPlayers[0] = ЗВ(new Player());
Аноним 01/09/19 Вск 16:36:47 1465265351
>>1465143
>>1465213
Я придумал, можно же в UE4 вкатываться, а то действительно учиться ради учения такое себе, а тут интересно
Аноним 01/09/19 Вск 18:23:58 1465343352
>>1465259
> В таком случае что делает эта строчка?
Уничтожает память
параллельно копируя только что созданный объект
Аноним 01/09/19 Вск 18:32:26 1465346353
Можно ли как-то написать набор значений, которые должна проверить программа?
Для примера, мне нужно, чтобы программа выводила квадраты чисел, т.е. я ввожу 2, программа вывод 4, ввожу 3, программа выводит 9 и тд. Можно ли куда-нибудь записать несколько значений, для которых программа должна будет выполнить проверку, не выходя из окна консоли?
Аноним 01/09/19 Вск 18:34:34 1465347354
Аноним 01/09/19 Вск 18:39:01 1465352355
>>1465347
Я имею ввиду, для любой программы, не только для квадратов чисел. Если у меня будет несколько последовательностей, и чтобы не вводить несколько тестов каждый раз, написать их где-нибудь однажды, и программа выведет результат работы с тестами.
Аноним 01/09/19 Вск 18:40:35 1465353356
>>1465352
Напиши в файл. Пусть программа читает входные данные и результат, который должен получится. Если ее вывод не сходится, то пусть выводит сообщение об ошибке
Аноним 01/09/19 Вск 18:43:16 1465354357
>>1465343
Не понял тебя. В каком смысле уничтожает память?
Аноним 01/09/19 Вск 19:11:27 1465366358
укп.PNG (13Кб, 616x420)
616x420
Вообще вот код https://ideone.com/YuCgjd
Я уже 3 часа ломаю голову над тем, почему в добавку к заданным игрокам выводится стандартный игрок 1. И если в ideone все выглядит так, словно массив при резервировании памяти инициализируется конструктором по умолчанию, то на моем пк все выглядит так, где первая цифра позиция в массиве, вторая позиция игрока, а третья его высота..
Аноним 01/09/19 Вск 19:28:33 1465374359
>>1465366
Ну и пиздец...
Какие приватные атрибуты в 9 строчке, у тебя все публичные. Нахуй столько указателей. Почему ты за ними не следишь. etc

>И если в ideone все выглядит так, словно массив при резервировании памяти инициализируется конструктором по умолчанию
Да так и есть.
И у тебя так же.
Просто в "конструкторе умолчанию" ты position не инициализировал и в нём мусор, вместо значения.
мимо чайник
Аноним 01/09/19 Вск 19:32:18 1465378360
>>1465374
Все еще не понятно, почему на 4 позиции 0, а не мусор как везде.
Аноним 01/09/19 Вск 19:35:28 1465379361
>>1465378
Чтобы иногда работало. Мусор коварен.
Аноним 01/09/19 Вск 20:07:34 1465385362
Здарова бандиты.
Написал для использования в работе некую приблуду, 6к строк на крестах с Qt.
В мои рабочие обязанности эти не входило, но прогу заценили и вовсю используют.
Исподники я естественно никому на работе не показывал и не собираюсь, но хочу взять патент на это дело.
Я правильно понимаю, что для того чтобы всё было чисто, мне нужно либо избавиться от Qt, либо купить соответствующую лицензию?
Лицуха стоит неадекватных для этого случая денег (хотя за прогу я получил прибавку 25% к з/п и премию в две увеличенных з/п).
Так-то переписать на голом WinAPI проблем нет, хотя время это займет, Qt использовал чтобы побыстрее получить результат.
Аноним 01/09/19 Вск 20:11:47 1465386363
>>1465354
Ты через new выделяешь память и тут же о ней забываешь, т.к. нигде ты не сохранил указатель, который тебе new вернул. Это утечка. Не стреляй себе в ноги, возьми связку vector+unique_ptr
Аноним 01/09/19 Вск 20:47:02 1465413364

>>1465385
Ты можешь использовать бесплатный в коммерческих проектах при условии соблюдения требований LGPLv3. Сама GPL довольно сложно составлена, и нужен профильный юрист, чтобы пояснить, возможно ли в твоем конкретном случае использование этого продукта.
Минимальное требование - динамическая дин ковка.

Аноним 01/09/19 Вск 20:47:45 1465415365
>>1465413
Очевидная линковка*
Аноним 01/09/19 Вск 20:58:34 1465419366
>>1465385
А зачем патентовать всё? Патентовать нужно только твой мега-супер алгоритм, отвязав его в твою либку, к которой подключается qt со всем гуи. Наверняка же у тебя вся мякота сводится к нескольким функциям, зачем тебе там qt?
Аноним 01/09/19 Вск 22:06:09 1465449367
>>1465385
Я как-то раз в одну контору устраивался и отказался т.к. в ТД был пункт о том, что всё что я напишу\придумаю (вплоть до всяких слоганов, рисунков и тд) будет принадлежать компании.
Пришлось отказаться.
Аноним 01/09/19 Вск 22:37:34 1465467368
Аноним 01/09/19 Вск 23:14:16 1465480369
>>1465385
ты в россии?
как трудовой договор был состален? типовой?
вообще то если ты создавал эту прогу в рабочее время по заданию работодателя, то имущественные права на этот интеллектуальный продукт принадлежат фирме, на которой ты работаешь..

Аноним 01/09/19 Вск 23:16:28 1465482370
>>1465449
то есть обычно ты работаешь по специально созданному трудовому договору, в котором не происходит передача имущественных прав работодателю на интеллектуальный продукт, который ты создаешь, работая на эту фирму? дак что ли, а?

Аноним 01/09/19 Вск 23:27:28 1465485371
>>1465482
Ты не русский? Ты не знаешь значения слово договор?
Аноним 01/09/19 Вск 23:40:06 1465488372
>>1465480
РФ.
ТД типовой.
Разумеется в нерабочее время, на своем оборудовании и по своей инициативе.
В мои обязанности это никак не входило, и вообще я не кодер.
Более того есть целый отдел который должен заниматься и этим тоже, но вот как-то они не додумались, за что им вставили пистон, когда я вылез с этой темой.
Патент мне нужен для документально зафиксированной ачивки.
Аноним 01/09/19 Вск 23:57:41 1465494373
>>1465467
А ещё я слушаю регги.
Аноним 02/09/19 Пнд 03:29:45 1465526374
>>1465488
Выложи на гитхаб и приложи файл с лицензией. Ну если ты готов показать исходники, конечно, оставляя за собой авторство.
Аноним 02/09/19 Пнд 04:40:28 1465530375
>>1465488
бля, чет ты хуевый работник
вангую что полгодика - и будешь выхуйнут с работки

Аноним 02/09/19 Пнд 07:55:34 1465556376
>>1465385
GPL налагает ограничения на распространение проги. Если она используется только внутри компании и вообщн никак не контактиркет с наружними сераисами, то ЕМНИП всё нормально. Но ты анону не верь, а почитай сам.
Аноним 02/09/19 Пнд 07:57:58 1465558377
>>1465556
А, блин, жопой читал. Ты не хочешь вообще никому показывать исходники. Тогда проблема, да.
Аноним 02/09/19 Пнд 09:02:28 1465579378
>>1465558
Блядь, да ему свои две функции скомпилить в либу и всё, зачем придумывать сложности
Аноним 02/09/19 Пнд 09:45:35 1465588379
>>1465385
Спасибо всем откликнувшимся, в общем буду перерабатывать на голом C/WinAPI, хардкорность не пугает - предмет знаком.
Вообще изначально я не думал что так взлетит и будут активно пользоваться - делал чисто для себя из интереса, Qt использовал чтобы побыстрее получить работающий прототип.
Аноним 02/09/19 Пнд 13:18:12 1465679380
>>1465588
А что за программа-то хоть? Что она делает?
Аноним 02/09/19 Пнд 19:07:07 1465949381
>>1465579
If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins. This means that combination of the GPL-covered plug-in with the non-free main program would violate the GPL.

Нужно хитрее. Например, клиент-сервер через сокеты.
Аноним 02/09/19 Пнд 20:17:22 1465975382
Добрый вечер анонче, хочу для практики написать свой движок для имиджборд. Не планирую написать что-то конкурентноспособное, просто для оттачивания скиллов. Для разработки хотелось бы использовать Qt, хотя в теории могу освоить Boost давно стоило бы. Так вот в чём вопрос: из приложений я писал только пару небольших игр, и самое большое 8к строк - приложение расписания для моего вуза. К чему я это пишу, что с серверами делов не имел, и хотелось бы спросить у опытных анонов литературы/примеров/исходников для создания подобного рода сервисов, и каких-то полезных советов.
Аноним 03/09/19 Втр 01:59:23 1466132383
>>1465975
Что такого в приложении для расписания на 8к строк? Хотя это и довольно обширное описание.
Аноним 03/09/19 Втр 04:05:02 1466146384
Можно ли как то послать структуру в функцию по отдельности? А то не хочется создавать отдельную переменную, когда можно просто цифры передать.
Аноним 03/09/19 Втр 04:34:39 1466150385
Как дебажить dll библиотеку в Visual Studio?
Аноним 03/09/19 Втр 07:08:00 1466160386
>>1466146
Конечно! Это - ссылка, точнее константная ссылка, const MyStruct &data. В 2к0 пацаны использовали указатели, но ща не надо так делатьб.
Аноним 03/09/19 Втр 07:23:11 1466164387
>>1466150
Вариант 1 - Project Options -> Debugging -> Command = имя exe-файла, который ее использует. Дальше расставляешь брякпойнты, F5 и понеслась пизда по кочкам.
Вариант 2 - Debug -> Attach to Process.
Аноним 03/09/19 Втр 11:49:30 1466247388
>>1466132
Использовал подход Model-View и Qml, в основном вышли большие модели. Из всего кода сам интерфейс занимает только 1к.
Аноним 03/09/19 Втр 16:17:54 1466395389
Анончики, кто проходил собесы: что конкретно интересует работодателя в гитхабе? Качество кода или сложность реализованных проектов? Написал приложение, работает корректно, но боюсь что посмотрят на мой код и скажут что такие макаки им нахуй не надо, а на ревью и кинуть некому.
Аноним 03/09/19 Втр 20:22:29 1466521390
>>1466395
> что конкретно интересует работодателя в гитхабе?
Ни-ху-я
Аноним 03/09/19 Втр 20:24:34 1466523391
>>1466395
Прочитай гайдлайны и вылижи свой код. В логику глубоко вчитываться никто не будет, главное чтобы выглядело профессионально
Аноним 03/09/19 Втр 20:46:03 1466534392
>>1466523
То есть им будет похуй что конкретно я писал, лишь бы кодстайл по гайдлайнам был? Грустновато как-то
Аноним 03/09/19 Втр 20:52:41 1466542393
Кто-нибудь реально (не лабы/курсачи) работает с Clion под виндой? Стоит своих денег? Как там с отладкой? Есть что-то подобное Edit & Continue из VS?
Аноним 03/09/19 Втр 20:56:30 1466545394
Подскажите за QML, есть ли возможность узнать находится ли приложение в активном фокусе? Проблема: в программе есть таймер, если заблокировать телефон/свернуть приложение таймер останавливается, а при разворачивании - идёт. То есть теряется суть таймера, вот уже несколько дней не могу понять как заставить его работать в фоне, а лучше просто перехватывать сигнал о получении приложением фокуса. Пока накостылил чтобы при нажатии на таймер он обновлялся, но это уже уровень выше быдлокода
Аноним 03/09/19 Втр 21:25:10 1466556395
>>1466545
Для такой хуйни нужно сервис заводить, ведро твоё приложение все равно усыпит
Аноним 03/09/19 Втр 21:29:59 1466558396
>>1466542
а зачем, когда етсь студия?

мимо-сеньор-помидор
Аноним 03/09/19 Втр 21:56:05 1466563397
>>1466556
Это с джавой что-то? Можно хотя-бы ключевых слов насыпать, а то я с джавой не работал еще.
Аноним 03/09/19 Втр 22:33:18 1466578398
>>1466395
> Качество кода
Для этого статические анализаторы и автоформатирование.
Хотя наименование функций\классов\переменных оно не исправит.

Иногда, бывает, интересно узнать как другие всякие мелкие проблемы.
Например есть переменная которая хранит состояние и в коде есть проверки: state == STATE1 || state == STATE2 и тд
Можешь попробовать исправить эти места с использование какой-нибудь шаблонной йоба-магией.
Аноним 03/09/19 Втр 22:39:46 1466579399
Аноним 03/09/19 Втр 23:09:19 1466595400
>>1456115 (OP)
Насколько отличаются разные версии QT? Если сейчас начать осваивать QT5, то через год нужно будет с нуля учить QT6?
Аноним 03/09/19 Втр 23:12:03 1466597401
>>1466595
>через год нужно будет с нуля учить QT6
Не нужно
Аноним 03/09/19 Втр 23:12:33 1466598402
>>1466595
В Qt6 вроде бы как начинку собираются менять, всё в 17 стандарт переведут. Из заметного знаю что в QML строгую типизацию завезут НАКОНЕЦ БЛЯТЬ
Аноним 03/09/19 Втр 23:23:41 1466603403
Аноним 03/09/19 Втр 23:32:49 1466612404
Аноним 03/09/19 Втр 23:33:56 1466613405
>>1466578
> Хотя наименование функций\классов\переменных оно не исправит.
В решарпере можно настроить
Аноним 03/09/19 Втр 23:38:46 1466618406
>>1466613
Я не про автопереименование. Такой функционал, обычно, есть в IDE.
Я про смысл названия.
Аноним 04/09/19 Срд 00:10:10 1466630407
>>1466612
А андроид даёт какие-то сигналы о пробуждении приложения? Жрать ресурсы пока приложение даже не используется так себе идея, легче было бы просто пересчитывать таймер, благо в программе делается в пару строк всего. Ссылку не грузит, судил по названию, если там об этом написано то извиняюсь
Аноним 04/09/19 Срд 00:10:49 1466631408
>>1466630
>андроид
Уточняю: интересует кросс платформенное решение
Аноним 04/09/19 Срд 07:27:45 1466730409
>>1466603
Спасибо, полезно. Хреново я конечно фичт шаблонов знаю
>>1466595
Qt5 жив лет 6, и пока какого-то массового перехода не планируется. Да и Qt4 вполне себе похож.
Но, к слову, Qt любит добавлять новый функционал достаточно часто, и есть смысл его узнавать
Аноним 04/09/19 Срд 09:26:51 1466757410
>>1466598
>всё в 17 стандарт переведут
МинГВ, с которым он поставляется под винду, его до сих пор не поддерживает, так что хз.
Аноним 04/09/19 Срд 09:31:56 1466759411
>>1466757
Ну так будут поставлять с новым mingw
>>1466630
Тут уже сам анончик, я не телефонщик
хотя на ведре вряд ли получится без жабы
Аноним 04/09/19 Срд 12:22:18 1466801412
Снимок экрана20[...].png (233Кб, 1068x600)
1068x600
Двач, почему так?
Аноним 04/09/19 Срд 12:34:32 1466810413
>>1466801
Потому что учись работать с разными локалями
Аноним 04/09/19 Срд 12:35:15 1466811414
>>1466801
1. Перейди на CLion.
2. Гугли туториалы по массиву, даун.
3. Я бы сейчас задумывался о смене языка, потому что плюсы говно (если ты не хочешь в гейдев пойти)
4. Никогда не стоит спрашивать советы на двощей.
5. Если ты начал кодить - ты подписался на то, что 100% информации будешь учить сам.

мимо прошел этот путь
Аноним 04/09/19 Срд 14:54:13 1466959415
В чем отличие между
construct(){} и construct():parentclassconstruct(){} ?
Аноним 04/09/19 Срд 16:46:41 1467076416
>>1466959
Второе нахуй не нужно, конструктор базового класса без аргументов и так вызовется.
Аноним 04/09/19 Срд 18:53:20 1467227417
Аноним 04/09/19 Срд 20:15:39 1467298418
>>1466801
Со всем, что не-ASCII, на Си/Плюсах лучше дела не иметь. А если иметь, то курить мануалы и надеяться, что ты будешь работать только с UTF-8.
Аноним 04/09/19 Срд 20:49:53 1467328419
Есть 3 класса, каждый в своем h файле. 2 класса инклюжены в main, и оба эти класса в своих заголовках инклюдят третий. В итоге компиляторы выдает redefenition of class как фиксить?
Аноним 04/09/19 Срд 21:06:28 1467341420
Аноним 04/09/19 Срд 21:12:08 1467349421
>>1467328
форвард декларейшенами или распиливанием классов
Аноним 04/09/19 Срд 21:15:18 1467353422
>>1467328
Или
#pragma once в начале
Или Include Guard. Это мерзкие костыли с/с++ в 2к19
Аноним 04/09/19 Срд 21:16:05 1467354423
>>1467341
Как пользоваться этой залупой? При создании заголовка автоматически создаётся и ifndef с именем файла капсом, но для чего это не ясно.
Аноним 04/09/19 Срд 21:18:25 1467356424
Аноним 05/09/19 Чтв 09:47:58 1467643425
Есть вектор хранящий тип класса. Как в него поместить потомков этого класса, чтобы их методы остались при них?
Аноним 05/09/19 Чтв 10:04:29 1467648426
>>1467354
Ты хоть погуглил бы сначала, ну.
Динамический полиморфизм.
Аноним 05/09/19 Чтв 10:07:35 1467651427
>>1467354
А тебе хотел написать, что forward declaration в самом должно помочь, только это требует корректного использования этого класса внутри другого(кажется, только через указатели и без методов).
Потом в .cpp инклюдь сам класс, а в хэдер не суй его.
>>1467648
Обосрался, это было сюда: >>1467643
Аноним 05/09/19 Чтв 10:21:12 1467658428
>>1467643
Скорее всего ты ебалду какую-то собираешься написать. Храни unique_ptrы на базовый класс и дёргай виртуальные методы, при очень сильной необходимости можешь сделать dynamic_cast к наследнику и дёрнуть невиртуальные методы
Аноним 05/09/19 Чтв 10:51:48 1467665429
>>1467658
Мне нужно создать класс оркестр, класс музыкальные инструменты и 3 дочерних класса для муз.инструментов. Класс оркестр должен хранить элементы 3 дочерних классов и выводить их, при этом каждый из 3 доч. классов должен иметь свою собственную функцию вывода, переопределяющую таковую у класса муз.инструменты.
И я хуй знает как это реализовать.
Аноним 05/09/19 Чтв 12:09:47 1467688430
>>1467665
А, бля, я забыл, что семестр начался уже. Иди нахуй короче, в универчике тебе всё объяснят, не зря же ты туда поступил.
Аноним 05/09/19 Чтв 17:57:30 1467885431
Анон, перспективен ли дроч ФП в крестах? Всети корутины и фьючерсы связаны с ФП? std::transform уже умеет параллелить из коробки? Оно в 2к19 быстрое?
Аноним 05/09/19 Чтв 18:09:04 1467889432
>>1467885
>Анон, перспективен ли дроч ФП в крестах
Перспективен скорее dataflow подход в котором ты рассматриваешь свои данные как трубу, которая куда-то течет. В ФП-тусовке этим занимались лет 30 назад, пока не улетели в космос к монадам и стрелкам. Современное ФП в крестах не попишешь. Но понимать основные принципы ФП типа иммутабельности можно и нужно. В этом плане это намного полезнее дроча паттернов ООП.
> Всети корутины и фьючерсы связаны с ФП?
Ну так, опосредованно.
> std::transform уже умеет параллелить из коробки?
Не умеет, но есть неплохая либа Intel TBB, в которой соответсвующая функция есть.
Хотя OpenMP еще проще.
Аноним 05/09/19 Чтв 18:13:47 1467894433
694019581677623[...].jpg (65Кб, 640x960)
640x960
>>1456115 (OP)
Такой вопрос.
Я написал два класса Canvas и Reader.
Canvas работает с bitmap ставит пиксели, отражает с права налево и сверху вниз, делает кроп и все такое.
Reader, название условное, читает и пишет .bmp. То-есть Canvas передает в Reader bitmap, а тот его преобразовывает в формат bmp и пишет в файл. Ну, или Reader читает .bmp, делает из него bitmap и отдает в Canvas. Чисто гипотетически я могу добавлять в Reader функционал для работы с другими форматами типа png или jepg, ну ясно я делать этого не буду, так как проект делается чисто для себя, что-бы подучится как вообще работать с классами и архитектурой.
Canvas взаимодействует с Reader через интерфейс самого Reader'а который у меня чисто абстрактный класс, а работа с конкретным форматом реализуется через наследника, который наследует интерфейс.

Собственно у меня два вопроса.

1 - Как правильно объединить Canvas и Reader. Функционально и идеологически это разные классы. Но все же они связанны между собой. Собственно вопрос, как вообще конструируют подобные вещи?

2 - Canvas и Reader у меня обмениваются кусками памяти, когда надо обменятся bitmap. Я просто передаю указатель на память и размер куска. Мне это очень не нравится, так как получается, что оба класса могут шарится по памяти друг друга. Собственно вопрос как сделать тут нормально и безопасно?
Аноним 05/09/19 Чтв 18:25:55 1467897434
>>1467894
ООП из головы просто выкинь. Ты не замечаешь, что наворачиваешь сложность на пустом месте?
И не надо оправдываться тем, что "так как проект делается чисто для себя, что-бы подучится как вообще работать с классами и архитектурой". 99% проектов с этой хуйней. Пиши просто, понадобится - отрефакторишь.

>Как правильно объединить Canvas и Reader.
У тебя есть труба, по которой текут данные, и процессоры, у которых есть вход, выход, и (что противоречит ФП, но удобно) какое-либо минимальное внутреннее состояние.
>Canvas
Зачем-то делает слишком дохуя. Для разных действий нужны разные классы.
>Reader
>пишет bmp
Ну ты понял

>Canvas и Reader у меня обмениваются кусками памяти, когда надо обменятся bitmap. Я просто передаю указатель на память и размер куска. Мне это очень не нравится, так как получается, что оба класса могут шарится по памяти друг друга. Собственно вопрос как сделать тут нормально и безопасно?

Взять матричную библиотеку (eignen, armadillo, opencv) и обмениваться матрицами трехмерных векторов (потому что картинки RGB), которые внутри уже умеют в слайсы, copy-on-write и тому подобные вещи.

Если ты прямо вообще не хочешь пользоваться готовым, пиши собственный класс подобных матриц. Но, умоляю, выброси его, хватит с нас подобного говна в реальных проектах.
Аноним 05/09/19 Чтв 18:45:55 1467909435
>>1467897
Спасибо конечно за ответ. Но он мне помог примерно никак.
Анон, реально спасибо тебе, но все же это совсем не то что мне надо.

Есть тут аноны которые дадут совет, не советуя при этом отказаться от ООП?
Аноним 05/09/19 Чтв 19:32:08 1467942436
>>1467909
От ООП нельзя отказаться или не отказаться, потому что его не существует. Особенно в С++. Особенно в 2019 году. Просто нет такого понятия.
Аноним 05/09/19 Чтв 19:35:33 1467948437
Аноним 05/09/19 Чтв 19:36:44 1467951438
Аноним 05/09/19 Чтв 19:38:42 1467952439
Свежие новости по 20 стандарту есть?
Аноним 05/09/19 Чтв 19:45:26 1467954440
>>1467942
>>1467897
Хорошо, т.е. c++ умрет? Он же был придуман как ООП? Или превратиться в шаблонный си с stl и бустом?
Аноним 05/09/19 Чтв 19:48:03 1467955441
>>1467954
Просто не обращай внимание на шизика.
Аноним 05/09/19 Чтв 20:00:09 1467965442
>>1467954
Когда придуман в 80-е? С тех пор 30 лет прошло. И за это время язык только становился дальше от ООП. Исключение тут разве что Qt с сигналами-слотами, но вот что реально умирает, так это гуи на С++.
Аноним 05/09/19 Чтв 20:11:25 1467969443
>>1467954
С++ это мультипарадигменный язык. Можешь писать на адовом ООП с абстрактфакторипроксибинами а-ля индусская джава. Можешь писать на чисто процедурном диалекте, а-ля чистый С. Если угараешь по извращениям, то из С++ можно сделать почти функциональный язык программирования.

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

ООП в каком-то простом варианте (RAII) - всегда будет в С++, а вот всякая дрисня типа АБСТРАКТНЫХ ФАБРИК - это пережитки двухтысячных, такое ООП мертво уже сейчас.
Аноним 05/09/19 Чтв 20:51:14 1467996444
Спрошу здесь.
Изучая с++ на что лучше всего обратить внимание?
На потоки? - почти не разбирался с ними.
На rvalue? - хз что то. Не смог нормально разобраться пока
На тепмлейты? - разбирался, но не видел нигде практического применения кроме как в stl
На ООП? - вроде разобрался на начальном уровне но слишком объемная тема.
На шаблоны? - пока не брался за них и не знаю стоит ли.
На stl? - вроде ничего сложного. Удобно.

Отпишитесь опытные аноны. Но просьба без снобизма и поучительного тона. Просто напишите что в плюсах нужно задрачивать и почему, а что не стоит и почему.
Аноним 05/09/19 Чтв 20:52:48 1467997445
>>1467996
Все что ты перечислил и нужно задрачивать. Точнее это база, которую должен знать каждый.
Аноним 05/09/19 Чтв 21:04:34 1468005446
>>1467997
А как практиковать темплейты и потоки? Ну второе еще ладно, а вот с шаблонами вроде бы всё понятно, и сфинаешка, и трейты вроде бы не сложные, но где это применять в своих программах? Или это знания уровня устройства ОС или ассемблера, то есть просто для общего понимания?
Аноним 05/09/19 Чтв 21:05:19 1468006447
>>1467997
Кто-то может внятно объяснить что за хуйня такая rvalue?
И где их юзают?
Аноним 05/09/19 Чтв 21:07:13 1468009448
>>1468006
Достаточно обширная тема, в двух словах ты не поймешь. В шаблонах Джоссатиса есть хорошее дополнение, я там более-менее понял, а так статей сотни.
Аноним 05/09/19 Чтв 21:08:11 1468012449
Есть ли вообще какой-нибудь нормальный ide кроме визуал студио?
Аноним 05/09/19 Чтв 21:08:38 1468013450
>>1468009
Скинь ссылку на то что сам читал и что тебе зашло. Вдруг и другим зайдет
Аноним 05/09/19 Чтв 21:08:56 1468014451
Аноним 05/09/19 Чтв 21:09:55 1468016452
>>1468013
В том же посте написал,
>Шаблоны С++ Справочник разработчика, 2-е издание
Вроде бы первое дополнение
Аноним 05/09/19 Чтв 21:10:02 1468017453
>>1468005
>с шаблонами вроде бы всё понятно
boost поизучай, уверенности поубавится
Аноним 05/09/19 Чтв 21:34:47 1468042454
20 years of bei[...].png (209Кб, 361x361)
361x361
>>1468017
Пусть ваш буст со всяким Hana и Fusion идёт нахуй.
Мимопроходил
Аноним 05/09/19 Чтв 21:49:06 1468050455
>>1468042
Ну, от себя что предложишь?
Аноним 05/09/19 Чтв 22:07:47 1468066456
>>1468012
уровня студии + решарпера нет даже близко.

А так - шлион.
Аноним 05/09/19 Чтв 22:17:53 1468080457
>>1468012
emacs, если не забздишь
Аноним 05/09/19 Чтв 22:19:47 1468081458
>>1468050
Я не он и в метапрограммировании мало разбираюсь, но что мешает использовать tuple? Хотя наверное сам отвечу - там уже есть всё, что нужно.
В догонку спрошу, что поменялось между boost.mpl и boost.mp11? А между последним и hana? Собираться быстрее стало хоть?
Аноним 05/09/19 Чтв 22:23:30 1468083459
>>1468012
Под винду лучше студии ничего нет и в обозримом будущем не будет. Особенно в плане отладки.
Аноним 05/09/19 Чтв 23:08:19 1468110460
Аноним 06/09/19 Птн 00:03:34 1468164461
>>1467955
>>1467965
>>1467969
Спасибо.
Для себя плюсы в плюсах я вижу в том, что я развиваю скилл программирования и перекат на любой другой язык будет максимально простым.
Вчера, например, я познакомился с кортежами, чтобы возвращать из функции два параметра, как в Матлабе.
Алсо, разбирает бугурт, когда какой-нибудь дноработник на работе спизданет типа "я пишу на с++", а на деле там очень хуевый си без классов, зато расширение файла цпп. Даже контейнеров нет, пиздец.
я не знаю для кого это пишу.
Аноним 06/09/19 Птн 00:06:51 1468170462
>>1468005
Сделай compile-time вычисление синуса с заданной точностью. Предполагается создание таблицы, но все на шаблонах
Аноним 06/09/19 Птн 00:07:49 1468171463
>>1468164
На самом деле, очень мало народа действительно может сказать, что знает С++, и писать не дырявую хуйню,а что-то вменяемое. Писать на C++ != знать С++, помни это
Аноним 06/09/19 Птн 06:28:59 1468224464

int temp= new int[newRowsnewColumns];
for(int i=0;i<newRows*newColumns;i++)
temp=mass;

delete mass;
mass = temp;

Мне надо создать новый массив, который будет меньше старого. Я правильно делаю?
Аноним 06/09/19 Птн 06:30:30 1468225465
Аноним 06/09/19 Птн 07:03:07 1468227466
>>1468080
Для эмакса ещё лисп выучить надо, а я только кресты учить начал.
Аноним 06/09/19 Птн 07:06:12 1468228467
.jpg (29Кб, 500x500)
500x500
Аноним 06/09/19 Птн 07:59:18 1468240468
>>1467894
> они связанны между собой
Никак они не связаны. Тебе нужен класс Image с методами setBitmap, getBitmap и save. Канвасу вообе не нужно знать что там есть какой-то ридер.

>что оба класса могут шарится по памяти друг друга
По другому никак. Естественно если ты не хочешь копировать куски памяти. Естесвенно в голый указатель никто не ебется и делается какая-то обертка над ним которая позволяет упорядочить работу с этим указателем. В библиотеках направленых на работу с openGL обычно идет разделение на три класса: Текстура - это то что ты называешь битмапом, "распакованая" картинка которая отсылается в память GPU, Изображение (Image) - изображение преднозначеное для чтения или сохранения на диск, обычно подразумевается какое-то сжатие (jpg, png) но не обязательно и Спрайт - легковесный класс для передачи ссылок на текстуру (или область на ней), есть в нем содержится указатель на текстуру и координаты района текстуры. Но такое деление продиктовано архитектурой GPU, в частности тем что пытаются максимально уменьшить количество обращений к карточке, в том числе всю графику (которая используется в какой-то одной сцене) собирают в несколько больших кусков (sprite sheet). Если ты полностью на CPU рисуешь то тебе возможно нет смысла заебываться с этим. Если волнует производительность то нужно думать в сторону кеша процессора - там наоборот будут выгодны относительно небольшие текстуры.
Аноним 06/09/19 Птн 08:55:41 1468255469
Мне нравиться, что на ООП начали гнать, мол нинужон. Я на ооп потратил много времени, придумывал абстракции, какие-то там невероятные наследования, интерфейсы блядь, рисовал uml даже. И меня это бесило пиздец, так как много времени тратишь на это всё, а пользы, особенно когда проект ведёшь один, толком то и нет.
Меня ещё Ява бесила всегда, хоть и не работал никогда в этой сфере. Она ассоциируется с какими-то офисными чуханами нулевых. Бесит, блядь! Ебаный матлаб загружается на топ реке сутки нахуй
Аноним 06/09/19 Птн 10:06:14 1468288470
>>1468240
Спасибо за ответ.
Но если можно уточни пару моментов.
>Никак они не связаны. Тебе нужен класс Image с методами setBitmap, getBitmap и save. Канвасу вообе не нужно знать что там есть какой-то ридер.
Канвас и ридер у меня никак не связаны. Функционально. То-есть у них обоих есть по setBitmap, getBitmap, через них они обмениваются самой текстурой. Ридер может грузит и сейвить картинку. Канвас работает с картинкой. То-есть каждый занят своим делом.
Но! Меня сильно не устраивает то что для работы с картинкой мне нужно создавать два объекта разных классов, которые вообще никак идеологически не объеденные. Мне просто интересно есть ли како-то стандартный метод "идеологически" склеить их.
Вообще тут вопрос не в этом конкретном случае. Вместо канваса и ридера может быть все что угодно. Меня именно архитектура сейчас интересует.
Ну, другой пример. Пусть у меня будет 3Д-ридер. Который читает разные форматы 3Д моделей, переводит все это в некий "стандартный" формат и отдает его обработчику, который уже делает что-то там с вершинами. Asimp так устроен.
Собственно у меня вопрос как повторить такую архитектуру?
Думаю такая ситуация, которую я описал часто возникает. Как все это разруливаеться?

>Естесвенно в голый указатель никто не ебется и делается какая-то обертка над ним которая позволяет упорядочить работу с этим указателем.
Можешь чуть подробнее? Просто у меня сейчас как раз голый указатель передается. Скажи буквально пару слов.
Аноним 06/09/19 Птн 12:31:37 1468407471
Ребята, поясните что это за новомодная поебень с "композицией вместо наследования"? Что с этим делать и как быть? Откуда оно взялось? Почему оно вдруг стало модным-молодёжным?
Аноним 06/09/19 Птн 13:53:55 1468458472
>>1468407
Это для второго принципа SOLID: дополнение существующего без его изменения. Облегчает внесение правок с предсказуемыми последствиями, dependency injection и юнит тестирование.
Аноним 06/09/19 Птн 14:04:04 1468470473
>>1468407
>Ребята, поясните что это за новомодная поебень с "композицией вместо наследования"?
Если ты об этом вчера услышал, то скорее всего потому что ты отсталый даун, а не потому что это новомодная поебень.
Наследование тебе нужно для полиморфизма. Если тебе не нужен полиморфизм, тебе не нужно наследование.
Аноним 06/09/19 Птн 14:13:25 1468482474
>>1468470
>Наследование тебе нужно для полиморфизма
И для переиспользования кода.
Но использовать наследование для переиспользования кода нужно крайне осторожно. Так как тут очень легко выстрелить себе из дробовика в обе ноги и голову одновременно.
Аноним 06/09/19 Птн 14:49:24 1468521475
>>1468224
Пустые скобки у delete забыл.
А так, вроде, правильно.
Но это не точно
Аноним 06/09/19 Птн 14:49:51 1468522476
Аноним 06/09/19 Птн 19:43:41 1468876477
>>1468255
ООП - это не закон природы и даже не научная теория.
Тупо набор догматов.
Аноним 06/09/19 Птн 20:01:24 1468891478
>>1468482
Как наследование способствует переиспользованию кода больше, чем композиция?
Аноним 06/09/19 Птн 20:07:28 1468896479
>>1468891
никак
зато оно рушит инкапсуляцию и поэтому наследование это фу
Аноним 06/09/19 Птн 20:09:02 1468899480
>>1468896
Этого не слушайте, он долбоёб.
Аноним 06/09/19 Птн 20:10:21 1468901481
>>1468012
Кстати что насчёт Eclipse?
Аноним 06/09/19 Птн 20:11:52 1468903482
>>1468288
> Скажи буквально пару слов
Ну вот у тебя передается указатель, и потом с ним что-то делается. Ты оборачиваешь указатель в класс и всю ту работу с ним пытаешся максимально перенести в этот класс-обертку. Чтобы работать с ним контроллируемым способом а не кто как захочет. Естественно у тебя графика, затратные по ресурсам операции и нужно искать компромисы - возможно все безопасн оне получится, из-за производительности.
Аноним 06/09/19 Птн 20:59:41 1468973483
>>1467356
>#pragma once
Эта ебань же вроде не входит в стандарт?
да, везде работает, но НА ВСЯКИЙ СЛУЧАЙ
Аноним 06/09/19 Птн 21:05:05 1468985484
>>1468891
>Как наследование способствует переиспользованию кода больше, чем композиция?
Я не утверждал что способствует больше. Я просто написал что наследование может использоваться и для переиспользовании кода.
Но если ты можешь переиспользовать код композицией, то выбирай композицию, а не наследование.
Вообще наследовать лучше всего интерфейс. С наследованием функционала могут повылезать всякие нехорошие проблемы потом.
Учти что ООП нужен именно для больших проектов. Если у тебя проект небольшой и ты не видишь куда там впихнуть наследование и прочию дичь то значит они тебе и не нужны. Обойдись без них. Используй классы чисто для инкапсуляции, как обертки.
Аноним 06/09/19 Птн 21:05:39 1468987485
>>1468903
Спасибо, за ответ, анон.
Аноним 06/09/19 Птн 22:04:07 1469071486
>>1467298
>Со всем, что не-ASCII, на Си/Плюсах лучше дела не иметь
А можно попробовать и получить àëëî éîáà ýòî òû
Аноним 06/09/19 Птн 23:00:10 1469107487
Я ебал в рот выбирать, на какие посты ответить.
Поэтому отвечаю безадресно
Всем, которым непонятно, какой принцип ООП главнее какого другого.


Когда ты достаточно воспринял теорию, и надрочился в практике, у тебя возникает такая хуйня, как code smell.
Ты делаешь так-то, не потому что это отвечает принципам SOLID или "один класс - одна ответственность", а потому что ты жопой чувствуешь, то так и надо.
Т.е. это забеись, что у вас возникают эти глупые вопросы "а чому так?", но привыкните, что кроме вас на них никто не ответит.
Опыт приходит не с правильными ответами на дваче (да даже и на стэковерфлоу), а на порванной парой хуевых проектов жопе.
Стремитесь к этому, а не к абстрактному понимаю асбтрактных принципов.
Аноним 06/09/19 Птн 23:26:51 1469120488
>>1469107
>Опыт приходит не с правильными ответами на дваче (да даже и на стэковерфлоу), а на порванной парой хуевых проектов жопе.
На самом деле не приходит, потому что ООП является псевдоинтеллектуальной хуитой.
Аноним 07/09/19 Суб 00:18:54 1469150489
>>1469120
Я твою, псевдоинтелектуальную, маму в рот ебал.
Аноним 07/09/19 Суб 00:20:49 1469152490
>>1468985
>Учти что ООП нужен именно для больших проектов.
Никем еще не доказано, что ООП ускоряет или удешевляет разработку больших проектов. Что на маленьких, что на больших проектах проблема условно говоря одна -- разбиение сложной проблемы на более простые. Отсюда требование, чтобы разные компоненты программы работали как можно более независимо, чтобы разработка каждого компонента была относительно простой задачей. Но наследование не приводит к модульности, у тебя наоборот разные классы связываются между собой, ты уже не можешь поменять один класс, чтобы он гарантированно не уебал всех своих наследников.
Этого не происходит с интерфейсами, потому что интерфейсы никакого отношения к наследованию на самом деле не имеют, интерфейс это просто некая гарантия, что объекты данного типа могут быть аргументами для некоторых функций. Интерфейсы есть и в функциональных языках и к ООП никакого отношения не имеют, так нахуя тащить в язык целую свалку в виде ООП? Ради единственной полезной фичи, которая реализована через задний проход, и называется это умным словом "наследование"?
Аноним 07/09/19 Суб 01:56:59 1469183491
Аноним 07/09/19 Суб 01:59:25 1469184492
>>1469183
Да лень расписывать уже, вы же деревянные один хер
Аноним 07/09/19 Суб 04:41:50 1469213493
>>1469184
>я обосрался, как обычно, и мне, как обычно, лень стирать портки
Аноним 07/09/19 Суб 04:49:52 1469220494
>>1469213
Ну давай так, гринтекст. Как много статей о критике ООП ты читал и что тебе в них не понравилось?
Аноним 07/09/19 Суб 06:32:32 1469223495
>>1469220
>статей
Лол.
Статьи не нужны, нужен код. Будет лучший, чем ООП, способ писать код - будем писать по другому.
Аноним 07/09/19 Суб 08:16:54 1469227496
>>1468014
>тормозная хуета, иногда в хуй не видит изменения в исходниках из-за чего приходится чистить вилкой весь проект
Аноним 07/09/19 Суб 09:55:47 1469256497
>>1469152
ООП не сводится к наследованию. Более того наследование лучше юзать чем меньше тем лучше.
Просто без ООП хуй ты более менее большой проект напишешь
Аноним 07/09/19 Суб 12:41:02 1469323498
>>1469256
Сводится. Инкапсуляция -- это синтаксический сахар, а без наследования нет полиморфизма.
Аноним 07/09/19 Суб 12:42:24 1469324499
>>1469323
>а без наследования нет полиморфизма.
Если речь не про тимплейты/дженерики, конечно, но они к ООП прямого отношения не имеют, это скорее элемент функциональщины.
Аноним 07/09/19 Суб 13:36:39 1469342500
>>1469323
>без наследования нет полиморфизма.
Че за бред вообще?
Аноним 07/09/19 Суб 13:39:28 1469344501
>>1469223
Попробуй заглянуть в стандартную библиотеку
Аноним 07/09/19 Суб 14:09:22 1469360502
>>1469342
Приведи пример, когда полиморфизм в ООП реализован не через наследование. Интерфейсы в жабе -- это тоже про наследование, если что. Ad hoc полиморфизм по типу когда void func(int) и void func(double) считаются одной и той же функцией (методом) к ООП особ отношения не имеет. Тимплейты тоже. Все это можно сделать без ООП в языке типа Си.
Аноним 07/09/19 Суб 14:29:47 1469377503
>>1469360
Генерики в жабе.
Впрочем, ты поднялся на слишком высокий уровень для этих обезьян.
Аноним 07/09/19 Суб 14:37:01 1469388504
>>1469377
Дженерики без наследования тоже особо работать не будут. Это просто указатель на Object (по аналогии с указателем void в C), но со статической проверкой типов. Т.е. оно все равно имплицитно использует тот факт, что все объекты в Java наследуются от Object. Плюс просто так дженерики без extends/super использовать особо не имеет смысла (иначе почему бы не делать все через Object по старинке), а это уже наследование.
Аноним 07/09/19 Суб 14:40:12 1469392505
>>1469388
Ок, уговорил.
Да вообще все идет по кругу. Когда я пришел в кодач, не понимал, че это все ООП хейтят. Теперь понял. Но объявилось новое поколение школоты. А я уже старый и мне даже спорить лень.
Аноним 07/09/19 Суб 15:00:31 1469413506
>>1469392
Хейт к ООП не столько из-за самого ООП, сколько из-за мифологизации ООП как таблетки от всех болезней, которая наконец то всех нас спасет от высокоуровнего ассемблера а ля Си. Объяснение ООП нужно начинать с объяснения полиморфизма, как и почему он работает. А объяснение полиморфизма нужно начинать с, сюрприз, теории типов. Потом нужно переходить к тому, что наследование в ООП -- это не более, чем способ реализации полиморфизма. Вместо этого студентам ебут мозг примерами про кошечек и собачек, которые наследуются от Mammal, в результате нихуя не понятно. И проблема не в примерах, потому что примеры могут быть вполне хорошими, а в том, что пример сам по себе объяснением не является.
Из-за этого флера недосказанности со стороны ООП выглядит как секта, где все поклоняются ООП, но никто не может объяснить, как это говно работает и почему оно выразительнее процедурного программирования. Оно действительно выразительнее процедурного программирования (если мы под процедурным программированием подразумеваем чистый Си), но адепт ООП тебе никогда не объяснит, почему, потому что тогда все очарование пропадет и адепт лишится объекта поклонения.
Аноним 07/09/19 Суб 15:06:30 1469418507
>>1469413
> Вместо этого студентам ебут мозг примерами про кошечек и собачек
А теория типов будет, значит, ясна человеку который учится программированию несколько недель?
Тем более всё запутает.
Аноним 07/09/19 Суб 15:15:48 1469422508
>>1469418
Значит надо давать больше реального кода на си, показать хотя бы препроцессорную компиляцию, передачу массив по констптр и, я хуй знает, контейнеры в с++. Это полезные вещи, которые хорошо займут время преподавания ООП.
мимо
Аноним 07/09/19 Суб 15:21:35 1469425509
>>1469422
> передачу массив по констптр и, я хуй знает, контейнеры в с++
Учим программированию или языку с++?
Аноним 07/09/19 Суб 15:26:28 1469428510
>>1469418
И тут мы приходим к закономерному выводу, что учить новичков сразу ООП нельзя.
Ну и тут надо понимать, что учить на мультипарадигменном языке, где ООП одна из парадигм != учить ООП. Программированию вполне можно учить и на С++, и на Python, просто давать информацию дозировано.
Уже не говоря о том, что учить программировать можно на языке без ООП, на C или на Scheme, например.
Аноним 07/09/19 Суб 15:35:58 1469436511
>>1469220
Где статьи, а где ты.
Со статьями все ок, а ты обосранный хуесос.
Аноним 07/09/19 Суб 15:36:35 1469437512
>>1469425
Тред про с++ ващето. Так что учим программированию на плюсах
Аноним 07/09/19 Суб 15:38:34 1469439513
>>1469428
>Уже не говоря о том, что учить программировать можно на языке без ООП, на C или на Scheme, например.
Да можно вообще учить программировать на ассемблере. А еще лучше - сразу в автокоде для МК-61, хуле.
Сортировка методом пузырька не сильно от этого изменится.

Учить ООП без наработанных на жопе мозолей от программирования без ООП, конечно, глуповато.
Аноним 07/09/19 Суб 15:56:33 1469455514
>>1469439
Я учился кодингу с создания карт для варика 3.
Там процедурное программирование. Чуть лучше чем в Си, конечно.
Аноним 07/09/19 Суб 17:23:39 1469487515
>>1469439
>Учить ООП без наработанных на жопе мозолей от программирования без ООП, конечно, глуповато.
Новичок не сможет нормально использовать ООП, если его учить сразу ООП. Тем более, что ООП не про алгоритмы и структуры данных, а про разработку полноценного софта, у которого есть как минимум ТЗ. Так что да, в идеале без наработанных на процедурном программировании мозолей к ООП вообще нельзя подпускать за километр.
Аноним 07/09/19 Суб 19:47:12 1469547516
>>1469487
Короче.
ООП это всего лишь инструмент.
Можно программить на яве, где любой кусок кода надо обернуть в класс, и не пользовать ни одной идеи из парадигмы ООП.
А можно и наоборот.
Когда ты знаешь, что кроме молотка и отвертки есть еще гаечный ключ, дрель и токарный станок, ты не пытаешься ЛЮБУЮ РАБОТУ делать молотком. Но когда тебе надо забить гвоздь, ты не пытаешься использовать для этого отвертку.
Я видел людей, которых начинали учить сраз в парадигме ООП.
Они и программу, которая умножает две константы, пытались делать на иерархии из 10-ти классов.

В общем, "хейт к ООП" существует только во влажных мечтах анона, особенно того, который херачит на яваскрипте.
Природа даже для дрочки дала две руки, какую выбрать - сам решай.
Аноним 07/09/19 Суб 20:53:33 1469576517
>>1469547
>особенно того, который херачит на яваскрипте.

ПЕРЕСТАНЬТЕ насмехатся над разными языками программирования
C быстрый
Java популярный
Ruby прикооольный
Python прекрасный
Javascript
Haskell интригующий
Аноним 07/09/19 Суб 21:38:02 1469606518
>>1469576
> Java популярный
Искренне желаю, что его популярность упадет и никто это говно не будет использовать. Андроид правильный шаг сделал
Аноним 07/09/19 Суб 21:41:16 1469609519
>>1456538
stl не разрабатывается, чтобы быть самым быстрым, а чтобы быть надёжным.
если тебе нужна скорость -- бери специально заточенные под это фреймворки или сам пиши
/th
Аноним 07/09/19 Суб 22:04:29 1469621520
>>1469606
А, на что именно пересел Андроид?
Я просто за новостями не слежу особо.
Аноним 07/09/19 Суб 22:31:51 1469625521
Аноним 08/09/19 Вск 00:23:08 1469658522
>>1469547
>всего лишь инструмент
>что кроме молотка и отвертки есть еще гаечный ключ, дрель
Молоток, отвертка, гаечный ключ и дрель - все это стандартный набор инструментов, который доступен всем.

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

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

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


Аноним 08/09/19 Вск 01:17:18 1469678523
Ананасы, может кто-то во всяких блогах\сайтах\книгах натылкался на разные идиомы\паттерны?

Типа такого:
https://news.ycombinator.com/item?id=20159216
https://habr.com/ru/post/326540/
https://en.wikibooks.org/wiki/More_C%2B%2B_Idioms

Банда четырёх это замечательно, но хотелось бы ещё чего-то. Скажем так, для каких-то небольших\локальных решений, а не на уровне всей иерархии системы или её частей.
Аноним 08/09/19 Вск 13:14:55 1469862524
>>1469576
С - самый простой и убогий язык из тех, что используются на практике.
Java - кобол нашего времени.
Ruby/Python - пыхоплеяда, высеры ГСМ-ов и неграмотных долбоебов, которые проделали большую работу изобретя квадратное колесо
Javascript - JavaScript
Haskell - язык программирования, менее вонючий чем все остальные, и от того нахуй никому не нужен.
Аноним 08/09/19 Вск 13:20:16 1469865525
>>1469862
Раз все языки говно, то какой топчик?
Аноним 08/09/19 Вск 13:34:22 1469870526
Аноним 08/09/19 Вск 14:31:37 1469906527
>>1469862
Как же у человека в голове то насрано.
Впрочем он явно не кодит активно и судя по всему никогда и не будет, так что вреда особо не принесет.
Аноним 08/09/19 Вск 14:49:45 1469918528
Аноним 08/09/19 Вск 14:52:19 1469919529
>>1469906
Нет, не угадал. И вреда разработке ПО, больше чем рандомная крестоблядь, принести довольно сложно.
Аноним 08/09/19 Вск 15:15:19 1469926530
Куда в 2к19 можно податься, хорошо зная кресты, чтобы зарабатывать не меньше чем за жс или го? Читаю статистику моего круга и облизываюсь на среднюю зп гофера в 150к. В нашей крупной продуктовой конторе столько платят только синиерам с 5+ годами опыта. Блохчейн сразу нахуй.
Аноним 08/09/19 Вск 15:22:02 1469928531
Аноним 08/09/19 Вск 15:23:28 1469929532
Аноним 08/09/19 Вск 15:27:11 1469930533
>>1469929
Конечно есть. Только не такой большой и не для всех
Аноним 08/09/19 Вск 15:30:19 1469932534
>>1469930
Люблю кресты за то, что нужно рвать жопу, чтобы получать скромные по меркам любого другого стека зп.
Аноним 08/09/19 Вск 16:24:29 1469956535
>>1469932
Что мешает перекатиться?
Аноним 08/09/19 Вск 16:41:50 1469961536
>>1469956
Зарплата на 30% просядет, если снова на джуна устраиваться.
Аноним 08/09/19 Вск 16:58:32 1469965537
>>1469956
Перекатываться между языками не так просто, как кажется. Ты можешь выучить синтаксис, но овладеть соответсвующим языку стеком на уровене хотя бы мидла можно только практикой. В этом плане С++ один из самый простых, ибо кроме правил языка, хоть и бездонных, в нем ничего нет. Нет здоровенных фреймворков типа спринга, не надо ебаться с конфигами серверов и билд-систем, не надо держать в голове особенности разных GC и подбирать их под задачу, чтобы увеличить RPM. Поэтому неудивительно, что за кресты не так хорошо платят, ибо сложные вещи типа метапрограммирования все равно на практике применяются довольно редко, а обычные фичи аналогичны таковым в других языках и изучить их не такая уж и проблема.
Аноним 08/09/19 Вск 17:12:01 1469971538
>>1469862
Запахло несвежей копипастой..
Аноним 08/09/19 Вск 17:24:29 1469975539
>>1469965
> Нет здоровенных фреймворков типа спринга
Qt
>Поэтому неудивительно, что за кресты не так хорошо платят
Да чуть ли не каждой второй веб-макаке с 2-3 годами опыта платят больше, чем мидлосиньерам на крестах. Ведь, конечно же, на рынке платят за знания, а не за способность произвести прибыльный продукт.
Аноним 08/09/19 Вск 17:35:46 1469980540
>>1469975
> Qt
Десктоп-фронтенд на C++ не вписался в рыночек. А про веб ты прав, сегодня это намного прибыльнее крестов.
Аноним 08/09/19 Вск 17:44:32 1469984541
Аноним 09/09/19 Пнд 10:01:06 1470245542
>>1469965
>Нет здоровенных фреймворков типа спринга
boost
Аноним 09/09/19 Пнд 10:10:50 1470248543
>>1470245
А где-то требуется знание всего boost от корки до корки?
По-моему такие требования из области тыжпрограммист.
Аноним 09/09/19 Пнд 10:26:38 1470261544
Аноним 09/09/19 Пнд 11:45:25 1470294545
>>1470261
Ну легаси эт понятно.
Но буст - это же десятки независимых библиотек под совершенно разные предметные области.
Аноним 10/09/19 Втр 18:04:13 1471179546
изображение.png (115Кб, 1366x768)
1366x768
изображение.png (111Кб, 1366x768)
1366x768
изображение.png (132Кб, 1366x768)
1366x768
изображение.png (147Кб, 1366x768)
1366x768
Что не так?
Аноним 10/09/19 Втр 18:19:43 1471192547
Какой же clion охуенный, просто секс. После последней обновы заголовок окна объединен с панелью меню и при передаче аргументов методу класса подписываются имена переменных.
Аноним 10/09/19 Втр 19:55:28 1471338548
>>1471192
в вижуал студии + решарпер как полгода+ есть и то и то. Но ты, вероятно, хейтер
Аноним 10/09/19 Втр 20:35:04 1471369549
Аноним 18/09/19 Срд 14:35:46 1476047550
>>1462953
Конан оказался топчик, спасибо.
Аноним 06/10/19 Вск 20:10:34 1490419551
image.png (878Кб, 1078x1080)
1078x1080
>>1456115 (OP)
господа. дедлайны горят. молебно прошу вас поспособствовать в написании легкого кода. подсобите сибирскому касипоше :(
(под пунктами 2 и 3)
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов