2010-11-27 11 views
2

データの配列を指す生ポインタがあります。 STLコンテナのセマンティクス(std :: vectorなど)を持つコンテナにこのポインタをラップしたいと思います。 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; 
}; 

EDIT:

私はメモリが外部APIによって割り当てられているため直接のstd ::ベクトルを使用することはできません。

答えて

5

STLにはない、ブーストを行います。

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

おそらく、std::vectorにカスタムメモリ "allocator"を使用しても、これは可能ですが、私には良いアイディアのようには聞こえません。

コードを書くことなくこれを取り除くことができる方法がないので、このシナリオのために独自のSTLのようなコンテナを書く時間を取ることをお勧めします。 !)。

+0

私が言わなければならない、この* *潜在的に良いアイデアのように聞こえるん。 CUDAの共有メモリでこれを成功させました。実際、これが行く方法です。 –