вектор внешней памяти - PullRequest
       20

вектор внешней памяти

1 голос
/ 03 декабря 2011

Я разрабатываю структуру данных внешней памяти, и мне нужно поместить данные в векторную структуру, которая автоматически выполняет обмен (возможно, с использованием стратегии LRU), чтобы сохранить фиксированную память RAM.Я пробовал векторную структуру stxxl, но проблема в том, что она не может хранить динамические структуры, такие как std::vector.Это не работает:

stxxl::vector< std::vector<T> >

Существует ли какая-либо библиотека внешней структуры памяти, которая могла бы работать с такими элементами?

1 Ответ

6 голосов
/ 03 декабря 2011

Параметр шаблона stxxl::vector - это тип содержащихся элементов, но std::vector не является типом, в нем отсутствует аргумент шаблона.

Попробуйте, например, stxxl::vector<std::vector<int> > или создайте включающий класс шаблона около stxxl::vector, если вы хотите параметризовать тип элемента std::vector.

UPDATE : После некоторых исследований я обнаружил это на первой странице Stxxl: FAQ http://algo2.iti.kit.edu/stxxl/trunk/FAQ.html

Параметризация контейнеров STXXL

Типы контейнеров STXXL, такие как stxxl :: vector, могут быть только параметризованы с типом значения, который является POD (т.е. нет виртуальных функций, нет пользовательское назначение копирования / деструктор и т. д.) и не содержит ссылки (включая указатели) на внутреннюю память. Обычно «сложный» типы данных не удовлетворяют этим требованиям.

Вот почему stxxl::vector<std::vector<T> > и stxxl::vector<stxxl::vector<T> > недействительно. При необходимости используйте std::vector<stxxl::vector<T> > или эмулировать двумерный массив делать расчет индекса.

...