Мне приходится использовать разреженный вектор для некоторых вещей в моем текущем проекте. Но, поскольку я не отвечаю за проект, я не могу использовать любые внешние библиотеки, которые захочу. У меня есть только STL и OpenCV.
Я просмотрел несколько ответов на вопросы stackoverflow, но они либо сосредоточены на конкретном подходе, сравнение ограниченного числа подходов (2) и внешних библиотек, когда речь идет конкретно с разреженными векторами. Есть также несколько отличных идей для реализации разреженной матрицы.
Мне нужен разреженный вектор(индексы всегда будут в 1 измерении, данные не имеют отношения к этому вопросу). Я хотел бы что-то, что не будет самостоятельным проектом для реализации, но может быть использовано для более чем демонстрационных целей (например, я хочу достичь приличной скорости и не слишком много памяти) и, надеюсь, повторно использоваться позже.Варианты, которые я рассматривал, включали:
std::map
для хранения значений (или, возможно, сделать очень простую оболочку, которая вернет значение по умолчанию в случае индексации нулевого элемента)std::vector >
где Я мог бы хранить индекс и данные в элементах std::pair
Является ли какое-либо из этих решений лучше/хуже для общего использования в качестве разреженного вектора? Я знаю, что каждый подход ко всему имеет свои взлеты и падения, но аргументированные предложения о том, какой подход выбрать, будут очень признательны. Кроме того, рекомендация подхода, который я не рассматривал, будет более чем приветствуется, если кто-то думает, что у него есть лучшее предложение.
Использование в моем конкретном случае следующее:
. цель Реализация разреженного вектора.