#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 = {1, 2, 3, 4, 5};
uint32_t x = 3;
all_data.emplace_back(x, 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
out.write((char *)all_data[i].some_vector.data(), all_data[i].some_vector.size() * sizeof(uint32_t));
// Does not work, gives garbage values
out.write((char *)&all_data[i].some_vector[0], all_data[i].some_vector.size() * sizeof(uint32_t));
}
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGNocm9ubz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPG51bWVyaWM+CgoKc3RydWN0IG15X2RhdGEgewoJdWludDMyX3Qgc29tZV92YWx1ZTsKCXN0ZDo6dmVjdG9yPHVpbnQzMl90PiBzb21lX3ZlY3RvcjsKCglteV9kYXRhICh1aW50MzJfdCB2LCBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gdmVjKSA6IAoJCQlzb21lX3ZhbHVlKHYpLCBzb21lX3ZlY3RvcihzdGQ6Om1vdmUodmVjKSkge307Cn07CgoKCmludCBtYWluKCkgewoKCXN0ZDo6dmVjdG9yPG15X2RhdGE+IGFsbF9kYXRhOwoJZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxMDsgKytpKSB7CgkJc3RkOjp2ZWN0b3I8dWludDMyX3Q+IHRlbXAgPSB7MSwgMiwgMywgNCwgNX07CgkJdWludDMyX3QgeCA9IDM7CgkJYWxsX2RhdGEuZW1wbGFjZV9iYWNrKHgsIHRlbXApOwoJfQoJCgkvLyBOb3cgd3JpdGUgaXQgdG8gZmlsZSwgdHdvIHdheXMuLi4KCXN0ZDo6b2ZzdHJlYW0gb3V0KCJ0bXAiLCBzdGQ6Om9mc3RyZWFtOjpiaW5hcnkpOwoJZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxMDsgKytpKSB7CgkJLy8gV29ya3MgT0sKCQlvdXQud3JpdGUoKGNoYXIgKilhbGxfZGF0YVtpXS5zb21lX3ZlY3Rvci5kYXRhKCksIGFsbF9kYXRhW2ldLnNvbWVfdmVjdG9yLnNpemUoKSAqIHNpemVvZih1aW50MzJfdCkpOwoJCQoJCS8vIERvZXMgbm90IHdvcmssIGdpdmVzIGdhcmJhZ2UgdmFsdWVzCgkJb3V0LndyaXRlKChjaGFyICopJmFsbF9kYXRhW2ldLnNvbWVfdmVjdG9yWzBdLCBhbGxfZGF0YVtpXS5zb21lX3ZlY3Rvci5zaXplKCkgKiBzaXplb2YodWludDMyX3QpKTsKCQkKCX0KCn0=