我想知道如何将std :: vector转换为void *,例如,
std::vector<ColorData> piexls_ (w*h, background_color);
现在我想将piexls_转换为(void *),以便我可以记忆像素_。
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 :: vector转换为void *。非常感谢你!
答案 0 :(得分:15)
要将矢量转换为void*
类型,有两种选择:
(void*)&piexls_[0]
(建议!empty()
检查)static_cast<void*>(piexls_.data())
但是,如果要复制元素,请直接使用STL函数:
它们是类型安全的,您的代码看起来更干净,并且大多数时候性能都会相同。
记住:
我们应该忘记小的效率,大约97%的时间说:过早的优化是所有邪恶的根源。然而,我们不应该在那个关键的3%
中放弃我们的机会