#include #include #include #include #include #include #include #include #include using namespace std; using namespace boost; using namespace boost::endian; static const size_t array_size = 1 << 20; typedef array array_type; array_type array1; array_type array2; array_type tmp_array; int main() { for (int i=0; i!=array1.size(); ++i) array1[i] = uint32_t(i); { ofstream output("array.dat", ios::binary); for (array_type::iterator iter = array1.begin(); iter != array1.end(); ++iter) { uint32_t tmp = swap(*iter); output.write(reinterpret_cast(&tmp), sizeof(tmp)); } } for (int trial=0; trial != 1000; ++trial) { { ifstream input("array.dat", ios::binary); input.read(reinterpret_cast(&tmp_array), sizeof(tmp_array)); array_type::const_iterator src = tmp_array.begin(); array_type::const_iterator end = tmp_array.end(); array_type::iterator dst = array2.begin(); for ( ; src != end; ++src, ++dst) *dst = swap(*src); } assert(memcmp(&array1, &array2, sizeof(array_type)) == 0); } return EXIT_SUCCESS; } // main