Евгений Шатунов, Уже в процессе переделывания. Просто не всегда видно как правильно пока не сделаешь что-то что хотя бы работает. P.S Я привел выше теоретический пример, у меня было реализовано с friend функциями, но стало интересно и такое...
Wataru,
1) А вот используются массивы char и там хранят данные и потом reinterpret_cast их. Или это другое?
2) Типа struct Time { std::vector<double> Values;}?
Я могу скопировать раз при передачи в конструктор интерполятора. Но потом при вызове мне желательно ничего не копировать в метод operator(). Думаю передавать через std::span. Делать
std::span(reinterpret_cast(time.data()), time.size()) и просто читать сырые данные. Тоже UB?
Adamos,
1) Ненужное копирование при передачи массива точек который нужно интерполировать.
2) Это если их делать самому, а не через готовую либу. Я же не писал что я их делаю.
Тут больше вопрос про cast массива разныйх типов к масиву double при одинаковый размере и выраввнивании.
alexalexes, Проблема которая я щас хочу понять после тестов возникает и на одном потоке и не вызывает исключений. В ней есть логи. Которые и показывают например что итераций больше чем нужно, но почему еще не разобрался.
rPman, Попробывал на одном потоке запустить и включал AddressSanitizer, и инициализировал все не иницилиализированные переменные. И скидывал пару функции для анализа ИИ, но все безуспешно :(
Wataru, Интересная операция. Еще я подсмотрел реализацию у msvc и там в union упаковано 1 значение. И вот думаю как лучше? Или без разницы? Но ваш вариант нравится больше.
Евгений Шатунов, По ответу rPman я решил одну задачу перенести с unordered map на vector, где ключ индекс а другие оставить как есть. Но опять же когда какие использывать знаю. Тут был вопрос на сколько правдивы эти графики просто. Просто я всегда считал что хеш таблица должна быть быстрее находить по ключу на любом числе данных, не думая о кеше и после этого видео возникли сомнения. Ведь у меня много небольших unordered_map. Очевидно где мне нужно будет производить не только поиск но и итерировать контейнер, либо мне нужны сортированные данные тогда я просто возьму тот же map или flat_map.
Евгений Шатунов, Интересный опрос. Про deque не скажу, т.к не пользовался. vector динамический массив, память непрерывна, произвольный доступ. list по сути представлет собой несколько структур пусть называются они node, в которой указатели на следующий и предыдущий и значение. map вроде схожа на лист(в плане тоже есть node) только они предсталены в виде дерева и в нем производится двоичный поиск. unordered_map особо не вникал как что там. Но вроде представлется вектор листов? по крайнер мере стандратная реализация. Гланое что я передаю ключ он хешируется через std hash и я получаю нужное мне значение.
Из стандартных пользуюсь только vector, unordered_map, queue, редко stack. Ну и сделал отдельно SortedVector.