RAW指针容器包装器

时间:2010-11-27 12:15:31

标签: c++ stl

我有一个指向数组数组的原始指针。我想将此指针包装到具有STL容器语义的容器中(例如std :: vector)。 STL是否具有允许此功能的任何功能?

e.g。

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 :: vector,因为内存由外部api分配。

2 个答案:

答案 0 :(得分:5)

STL没有,提升确实:

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

答案 1 :(得分:1)

如果你将std::vector与自定义内存“allocator”一起使用,这可能是可行的,但对我来说这听起来不是一个好主意。

由于我不知道如果不知道这会让你在不编写代码的情况下逃脱这一点,我建议花点时间为这个场景编写自己类似STL的容器(或者更好的是,找一个开源代码! )。