2011-12-03 107 views
1

我正在開發一個外部存儲器數據結構,並且我需要將數據放入一個向量結構中,以便自動進行交換(也許使用LRU策略)以保持固定的RAM內存。我試過stxxl向量結構,但問題是它不能存儲動態結構,如std::vector。這是行不通的:外部存儲器向量

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

是否有任何外部存儲器結構的庫可以處理這些類型的元素?

+0

我不知道stxxl是什麼,但你有沒有試過這個「stxxl :: vector >」? – Arunmu

+0

是的,但是當我插入大量數據時,這會產生不一致的值 – darkloz

回答

6

stxxl::vector的模板參數是包含項的類型, 但std::vector不是一個類型,它缺少它的模板參數。

嘗試例如stxxl::vector<std::vector<int> >或創建 圍繞stxxl::vector的封閉模板類如果您想要 參數化std::vector的itemtype。

UPDATE: 經過一番研究,我發現這對Stxxl:常見問題的第一頁 http://algo2.iti.kit.edu/stxxl/trunk/FAQ.html

參數化STXXL集裝箱

STXXL容器類型,如stxxl ::矢量可以參數化爲 ,其值類型是POD(即,沒有虛擬功能,沒有 用戶定義的副本分配/析構函數等),並且不是c向內部存儲器提供 引用(包括指針)。通常,「複雜」的數據類型不符合這個要求。

這就是爲什麼stxxl::vector<std::vector<T> >stxxl::vector<stxxl::vector<T> >無效。如果適用,請使用 std::vector<stxxl::vector<T> >,或者通過 模擬一個二維數組進行索引計算。

+0

介於'>' – Arunmu

+4

之間的空間介意新的C++標準 – ch0kee

+1

如果標記了標記,並且在答案中明確提及 – Arunmu