В настоящее время я использую вектор uint8_t
для представления некоторых двоичных данных. Иногда я также использую этот формат для отправки по сети целых, длинных и некоторых других типов. И хотя я могу использовать
__builtin_bswap16(littleEndianValue);
__builtin_bswap32(littleEndianValue);
__builtin_bswap64(littleEndianValue);
или
htonl
, мне любопытно, есть ли какие-либо недостатки использования метода std::reverse
вектора, то есть вот так:
std::reverse(std::begin(theVectorBuffer), std::end(theVectorBuffer));
, так как это не требует от меня
- извлечения фактического значения целых чисел из вектора
- apply
__builtin_bswap32
- возвращая эти целые числа обратно в вектор
В основном я пытаюсь сохранить некоторые вызовы конструктора, а также некоторые выделения памяти. Я еще не проверял это решение, но я надеялся, что кто-то сможет придумать причину, по которой , а не , использовать метод std::reverse
и остановить меня от совершения глупостей. Боюсь, что это будет иметь негативный эффект в будущем, который я пока не могу предсказать. Я готов использовать метод std::reverse
только в тех частях кода, где мне известен тип и длина вектора (например, при удержании uint64_t
). Эти векторы используются позже для объединения и отправки по сети в TCP-соединении.