Мне интересно, как я могу преобразовать зЬй :: вектор к аннулированию *, например,как преобразовать зЬй :: вектор <vector> опорожнить *
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*’
Как я могу преобразовать станд :: вектор к аннулированию *. Спасибо огромное!
Почему бы не просто скопировать вектор регулярно? Многие реализации будут вызывать memcpy внутренне, если это тип POD. Это выглядит для меня преждевременной оптимизацией. – NathanOliver
... или & * sourceBuffer.pixels.begin(), и & sourceBuffer.pixels.front(). –
В C++ 11 у вас есть функция '.data()', чтобы получить указатель на базовые данные. В противном случае вы можете сделать '& vec [0]'. Но это только если вам действительно нужно, потому что обычно есть намного лучший способ (например, упомянутая std :: copy). – RyanP