我想知道我怎么可以转换的std ::向量为void *,例如,怎样的std ::矢量<vector>为void *转换
std::vector<ColorData> piexls_ (w*h, background_color);
现在我想piexls_转换为(无效*)这样我可以memcpy像素_。
memcpy ((void*)destinationBuffer->pixels_, (void*)sourceBuffer->pixels_, \
sizeof(ColorData)*destinationBuffer->width_*destinationBuffer->height_);
但是当我运行这段代码,我得到了错误说invalid cast from type ‘std::vector<image_tools::ColorData>’ to type ‘void*’
我怎么能转换的std ::向量为void *。非常感谢!
为什么不经常复制载体?如果它是POD类型,许多实现将在内部调用memcpy。这看起来像是一个过早的优化。 – NathanOliver
...或者* sourceBuffer.pixels.begin()或者&sourceBuffer.pixels.front()。 –
在C++ 11中,您有'.data()'函数来获取指向底层数据的指针。否则,你可以执行'&vec [0]'。但是,只有当你真的需要,因为通常有更好的方法(如提到的std :: copy)。 – RyanP