#include <algorithm>
#include <chrono>
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
#include <cstring>
#include <numeric>
struct my_data {
uint32_t some_value;
std:: vector < uint32_t > some_vector;
my_data ( uint32_t v, std:: vector < uint32_t > && vec) :
some_value( v) , some_vector( std:: move ( vec) ) { }
} ;
int main( ) {
std:: vector < my_data> all_data;
for ( size_t i = 0 ; i < 10 ; ++ i) {
std:: vector < uint32_t > temp = { 'a' , 'b' , 'c' , 'd' , 'e' } ;
uint32_t x = 3 ;
all_data.emplace_back ( x, std:: move ( temp) ) ;
}
// Now write it to file, two ways...
//std::ofstream out("tmp", std::ofstream::binary);
for ( size_t i = 0 ; i < 10 ; ++ i) {
// Works OK
std:: cout .write ( ( char * ) all_data[ i] .some_vector .data ( ) , all_data[ i] .some_vector .size ( ) * sizeof ( uint32_t ) ) ;
// Does not work, gives garbage values
std:: cout .write ( ( char * ) & all_data[ i] .some_vector [ 0 ] , all_data[ i] .some_vector .size ( ) * sizeof ( uint32_t ) ) ;
}
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGNocm9ubz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPG51bWVyaWM+CgoKc3RydWN0IG15X2RhdGEgewoJdWludDMyX3Qgc29tZV92YWx1ZTsKCXN0ZDo6dmVjdG9yPHVpbnQzMl90PiBzb21lX3ZlY3RvcjsKCglteV9kYXRhICh1aW50MzJfdCB2LCBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4mJiB2ZWMpIDogCgkJCXNvbWVfdmFsdWUodiksIHNvbWVfdmVjdG9yKHN0ZDo6bW92ZSh2ZWMpKSB7fQp9OwoKCgppbnQgbWFpbigpIHsKCglzdGQ6OnZlY3RvcjxteV9kYXRhPiBhbGxfZGF0YTsKCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTA7ICsraSkgewoJCXN0ZDo6dmVjdG9yPHVpbnQzMl90PiB0ZW1wID0geydhJywgJ2InLCAnYycsICdkJywgJ2UnfTsKCQl1aW50MzJfdCB4ID0gMzsKCQlhbGxfZGF0YS5lbXBsYWNlX2JhY2soeCwgc3RkOjptb3ZlKHRlbXApKTsKCX0KCQoJLy8gTm93IHdyaXRlIGl0IHRvIGZpbGUsIHR3byB3YXlzLi4uCgkvL3N0ZDo6b2ZzdHJlYW0gb3V0KCJ0bXAiLCBzdGQ6Om9mc3RyZWFtOjpiaW5hcnkpOwoJZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxMDsgKytpKSB7CgkJLy8gV29ya3MgT0sKCQlzdGQ6OmNvdXQud3JpdGUoKGNoYXIgKilhbGxfZGF0YVtpXS5zb21lX3ZlY3Rvci5kYXRhKCksIGFsbF9kYXRhW2ldLnNvbWVfdmVjdG9yLnNpemUoKSAqIHNpemVvZih1aW50MzJfdCkpOwoJCQoJCS8vIERvZXMgbm90IHdvcmssIGdpdmVzIGdhcmJhZ2UgdmFsdWVzCgkJc3RkOjpjb3V0LndyaXRlKChjaGFyICopJmFsbF9kYXRhW2ldLnNvbWVfdmVjdG9yWzBdLCBhbGxfZGF0YVtpXS5zb21lX3ZlY3Rvci5zaXplKCkgKiBzaXplb2YodWludDMyX3QpKTsKCQkKCX0KCn0=