【问题标题】:RAW pointer container wrapperRAW 指针容器包装器
【发布时间】:2011-05-16 13:11:21
【问题描述】:

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

例如

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 分配的。

【问题讨论】:

    标签: c++ stl


    【解决方案1】:

    STL 没有,boost 有:

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

    【讨论】:

      【解决方案2】:

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

      由于我知道没有任何方法可以让您在不编写代码的情况下侥幸成功,因此我建议您花时间为这种情况编写自己的类似 STL 的容器(或者更好的是,找到一个开源的容器! )。

      【讨论】:

      • 我必须说,这确实听起来可能是个好主意。我已经用 CUDA 共享内存成功地做到了这一点。事实上,这是要走的路。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 2012-01-14
      相关资源
      最近更新 更多