dies sicher ist oder geschieht dies nur auf meinem aktuellen Compiler zu arbeiten? Gibt es im Standard etwas darüber? Das Ergebnis im Floats-Vektor ist korrekt.Memcpy Daten von std :: vector zugrunde liegenden Objekte
class Color {
public:
Color(float r, float g, float b, float a) : mColor{r,g,b,a} {};
inline const float *data() const
{
return mColor;
}
private:
enum {vectorSize = 4};
float mColor[vectorSize];
};
//test
std::vector<Color> colors(2);
std::vector<float> floats(8);
colors[0] = Color(0.1, 0.2, 0.3, 0.4);
colors[1] = Color(0.5, 0.6, 0.7, 0.8);
memcpy(floats.data(), colors.data(), 8 * sizeof(float));
wird es funktioniert mit trivialer kopierbar Objekt nur (http://en.cppreference.com/w/cpp/types/is_trivially_copyable). Sie sollten 'std :: bevorzugen copy' oder' std :: copy_n' – galop1n