2010-11-27 61 views
2

我有一個原始指針指向數據的數組。我想這個指針包裝成與STL容器語義的容器(例如標準::向量)。 STL有任何允許這個功能嗎?RAW指針容器包裝

例如

class my_class 
{ 
public: 

    std::some_container<char> get_data() { return std::some_container(my_data, my_data_size);} 

private: 
    char* my_data; 
    size_t my_data_size; 
}; 

編輯:

我不能使用std ::矢量直接由於存儲器是由一個外部API分配。

回答

5

STL沒有,升壓作用:

boost::iterator_range<char*> get_data() { 
    return boost::iterator_range<char*>(my_data, my_data+my_data_size); 
} 
1

可能這是可行的,如果你使用std::vector使用自定義存儲「分配」,但它聽起來並不像一個好主意,我。

因爲我沒有辦法知道這會讓你在沒有編寫代碼的情況下襬脫這種困境,所以我建議花時間爲這種情況編寫自己的類似STL的容器(或者更好的方法是找到一個開源的容器!)。

+0

我必須說,這不* *可能聽起來像一個好主意。我已經成功使用CUDA共享內存。事實上,這是要走的路。 – 2010-11-27 12:52:03