Работает с Integer без проблем.Но ...
Это наверняка будет не работать для целых чисел.По крайней мере, не для целых чисел, где sizeof(int) > 1
!Потому что он не записывает только одно целое число, а распределяет байты в myVector
по sizeof(T)
целым числам, перезаписывая таким образом случайную память.(см. ответ Nightcracker)
Пожалуйста, просто используйте memcpy
для такого вида копирования:
vector<char> myVector = ... smth;
double value = 0.0;
assert(myVector.size() == sizeof(double));
memcpy(&value, &myVector[0], std::min(myVector.size(), sizeof(double)));
// as an alternative to the assert + std::min() above, you could also throw
// an exception if myVector.size() == sizeof(double) does not hold.
// (that's what I'd do if the size should always match exactly)
memcpy
создан именно для такого рода вещей (копирование необработанной памяти), иЯ не вижу причин использовать что-либо еще здесь.Использование std::copy
не улучшает C ++, особенно если вы делаете это неправильно.std::copy
предназначен для копирования объектов, а не необработанной памяти.