Stanislav
http://zverovich.net/2018/03/17/text-formatting-jacksonville.html
Ivan
Доброго дня господа. Что бы вы могли посоветовать из существующих решений для следующей задачи: На входе имеется очередь, из которой приходят пары <шаред поинтер с данными, длинна>, данные представляют собой некоторый поток из невыровненных по границам байт битовых структур. Соответственно одна структура может находиться в двух разных последовательных блоках данных ( в двух шаред поинтерах). Есть ли специализированный битридер, который бы конкатенировал входящие структуры и предоставлял битовые операции над ними? Накидать свой не особо большая проблема, но вдруг вы знаете готовое решение.
Ivan
да, но не хотелось бы модифицировать входящие данные, либо копировать их куда-то.
Denis
std::bitset?
Ivan
Боюсь его не получится динамически расширить. Или я не прав?
Denis
http://www.boost.org/doc/libs/1_66_0/libs/dynamic_bitset/dynamic_bitset.html
Denis
есть его аналог из буста на этот случай
Ivan
о! спасибо!
Denis
надеюсь поможет, велкам :)
Fuzzytoozy
у кого-нибудь есть аккаунт в GCC Bugzilla?
Fuzzytoozy
что-то там регистрация restricted, не могу баг отрепортить
Fuzzytoozy
Berkus
@antoshkka ^ ?
Fuzzytoozy
вот эта штука роняет
Fuzzytoozy
g++ -std=c++17 gcc_crash.cpp -o gcc_crash
Fuzzytoozy
Using built-in specs. COLLECT_GCC=/usr/bin/x86_64-linux-gnu-g++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none Target: x86_64-linux-gnu Configured with: ../gcc-7.3.0/configure ./gcc-7.3.0/configure -v --enable-languages=c,c++,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 7.3.0 (GCC)
Evgenii
у кого-нибудь есть аккаунт в GCC Bugzilla?
у меня есть если никто не поможет
Кирилл
вот эта штука роняет
https://godbolt.org/g/JFWN5u В транке уже не роняет, если что
🦥Alex Fails
раз ты говоришь указатель, тогда сделай что-нибудь с таким "указателем": int x[5] = {}; x += 1;
Ну, оно является константным пойнтером на первый элемент. Вернее, "decay"
Anatoly
Ну, оно является константным пойнтером на первый элемент. Вернее, "decay"
массив не является указателем, природа у него другая, поэтому для него не применима адрессная арифметика
Igor
О, у нас тут есть qt developers)
а? яже просто release notes процитировал, им больше месяца уже
🐙 Antony
🦥Alex Fails
Ender
массив не является указателем, природа у него другая, поэтому для него не применима адрессная арифметика
Странно как-то звучит. есть же всякие (&x+1). Я думаю, если берёшься пояснять, нужно пояснять подробнее.
Anatoly
Странно как-то звучит. есть же всякие (&x+1). Я думаю, если берёшься пояснять, нужно пояснять подробнее.
поищи в supapro, там очень подбродно. то что массив приводится к указателю на свой первый элемент не делает его указателем.
🦥Alex Fails
пример ниже приводит к SIGSEGV (signal SIGSEGV: invalid address (fault address: 0xe)) при пробросе исключения из функции в вызвавшую функцию jstring dummy(){ try{ std::string foo = "foo"; throw std::exception(); }catch(std::exception &e){ throw std::exception(); return NULL; } }
Надо с ними аккуратнее в JNI и NDK. У меня был похожий баг в андроидном нативном бинарнике бота - он сегфолтил вместо catch исключения nlohmann'овского жсона
🐙 Antony
Давайте добавим - пусть авторы мучаются, а мы будем жаловаться, что медленно.
https://stdcpp.ru/proposals/9321cfcf-648c-41c7-8f86-4ecffcfffca7 Кто готов взяться?
Ender
сам по себе массив — это область в памяти, к которой есть доступ. И даже не "группа элементов одного типа". "Именованная область памяти". а что значит имя? адрес? А указатель это переменная, в которой может быть адрес? Значит массив, это область памяти, к которой у тебя 1) есть доступ 2) известен адрес 3) известен размер? Значит работаешь ты всё равно с указателями, ведь так? и запись int x[5] = {}; показывает только твоё желание заполучить вот примерно такое количество памяти. Если ты её заполучил, имя массива — это указатель на его первый элемент, с которым да, нихера не сделаешь, а значение в скобках размер выделенной области. И кстати в user-mode за (&x+1) можно будет словить sigsegv, но если у тебя есть доступ ко всей памяти, можно же всё что угодно творить. int x[5] = {1,8,3,4,5}; (*x)++; int p = 90; int *pt = &p; (*pt)++; ._. ещё скажите, что я еретик.
Pepe 🐸
сам по себе массив — это область в памяти, к которой есть доступ. И даже не "группа элементов одного типа". "Именованная область памяти". а что значит имя? адрес? А указатель это переменная, в которой может быть адрес? Значит массив, это область памяти, к которой у тебя 1) есть доступ 2) известен адрес 3) известен размер? Значит работаешь ты всё равно с указателями, ведь так? и запись int x[5] = {}; показывает только твоё желание заполучить вот примерно такое количество памяти. Если ты её заполучил, имя массива — это указатель на его первый элемент, с которым да, нихера не сделаешь, а значение в скобках размер выделенной области. И кстати в user-mode за (&x+1) можно будет словить sigsegv, но если у тебя есть доступ ко всей памяти, можно же всё что угодно творить. int x[5] = {1,8,3,4,5}; (*x)++; int p = 90; int *pt = &p; (*pt)++; ._. ещё скажите, что я еретик.
думаю обсуждать что есть массив *физически* нет смысла. Вообще он только семантически существует
🦥Alex Fails
firther
https://ru.wikipedia.org/wiki/GNU_Scientific_Library
firther
FFT как часть плюсов было бы прикольно)
Aidar
не имеет смысла +1
Александр
Есть предположение, что пакетный менеджер убьет надобность в огромном количестве фич в стандарте
Max
/help@FailsBot
Max
/help@FailsBot
ㅤ
/help@FailsBot
Крылатый
Бот ответит как проснётся.
🦥Alex Fails
Бот ответит как проснётся.
"Вы что, не видите, у нас обед?"
Ender
"Вы что, не видите, у нас обед?"
"Мы пьём чай. Вы отвлекаете нас от работы".
Anatoliy
В FFTW код генерируется. Вся репа - это генератор кода. Смысл делать недоделку? С FFTW не получится состязаться никак. Fastest Fourier transform in the West будет заменён на not too fast Fourier transform in C++? Какой будет интерфейс у FFT в C++? Тем более самое оптимальное использование FFTW предполагает на стадии инициализации поиск в рантайме самого быстрого алгоритма. В стандартной библиотеке так не принято - делать какие-то переборы или эвристики.
Berkus
сам по себе массив — это область в памяти, к которой есть доступ. И даже не "группа элементов одного типа". "Именованная область памяти". а что значит имя? адрес? А указатель это переменная, в которой может быть адрес? Значит массив, это область памяти, к которой у тебя 1) есть доступ 2) известен адрес 3) известен размер? Значит работаешь ты всё равно с указателями, ведь так? и запись int x[5] = {}; показывает только твоё желание заполучить вот примерно такое количество памяти. Если ты её заполучил, имя массива — это указатель на его первый элемент, с которым да, нихера не сделаешь, а значение в скобках размер выделенной области. И кстати в user-mode за (&x+1) можно будет словить sigsegv, но если у тебя есть доступ ко всей памяти, можно же всё что угодно творить. int x[5] = {1,8,3,4,5}; (*x)++; int p = 90; int *pt = &p; (*pt)++; ._. ещё скажите, что я еретик.
вообще-то в массиве элементы одного типа
Ender
вообще-то в массиве элементы одного типа
Смотря что считать элементом.
Berkus
Смотря что считать элементом.
единицу хранимых в массиве данных
Berkus
у тебя есть другое определение элемента?
Aidar
там щас +8
Berkus
минусаните пж ато начнут пилить пропосал еще
пусть лучше пилят, иначе сишка слишком долго умирает, так хотя бы сама себя задавит
MRL
Есть какие аналоги qt для работы с gui на плюсах?
Крылатый
Плюсую за фурье в стандарте.
Крылатый
FFTW FTW
Aidar
Плюсую за фурье в стандарте.
да проблема в том что оно не нужно, всеарвно все будут юзать более сооответствующие реализации, ну или нужно дико проработать интерфейс на все случаи жизни, расширяемый
Berkus
FFTW FTW
FTW FFT!
MRL
UWP?
Попробую, спасибо
Ender
единицу хранимых в массиве данных
ну допустим массив байт. uchar a[]... массив? ещё какой. а потом хоп, и после каких-то манипуляций с этим массивом байт (struct format *)a — и это уже группа элементов разных типов. там будет и double, и float, и два int, и 256 кэров. Я гарантирую это.
Aidar
как? где?
https://stdcpp.ru/proposals/9321cfcf-648c-41c7-8f86-4ecffcfffca
Ender
или же после тех же манипуляций (int *)a — и это уже массив (пусть) 4байтовых целых.
Aidar
вон какиенибудь простые дескретные вейвлетные преобразования можно
Aidar
но чтото больше не думаю
Matwey
https://stdcpp.ru/proposals/9321cfcf-648c-41c7-8f86-4ecffcfffca7 Кто готов взяться?
Ну я же пошутил, ну. Сколько людей этим будут реально пользоваться? 0.1% в лучшем случае. Есть крутая библиотека FFTW, она не такая маленькая как кажется. Такое же не влезет в стандартную библиотеку.
Ender
одного типа они все в памяти, потому что там тип один. А чем дальше от машины ты программируешь, тем более тяжёлыми наркотиками ты можешь упарываться.
Крылатый
Можно уместить в стандартный буст.