c++ - 有没有更好的方法来反转内存中的字节数组?

标签 c++ memory swap std

typedef unsigned char Byte;

...

void ReverseBytes( void *start, int size )
{
    Byte *buffer = (Byte *)(start);

    for( int i = 0; i < size / 2; i++ ) {
        std::swap( buffer[i], buffer[size - i - 1] );
    }
}

这个方法现在所做的就是反转内存中的字节。我想知道的是,有没有更好的方法来获得相同的效果?整个“size/2”部分似乎是一件坏事,但我不确定。

编辑:我刚刚意识到我给这个问题的标题是多么糟糕,所以我[希望]修正了它。

最佳答案

标准库有一个 std::reverse功能:

#include <algorithm>
void ReverseBytes( void *start, int size )
{
    char *istart = start, *iend = istart + size;
    std::reverse(istart, iend);
}

关于c++ - 有没有更好的方法来反转内存中的字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/585257/

相关文章:

c++ - C\C++ - 跨多个程序重用函数

c++ - 在没有段错误的情况下读取程序外部的内存

c - linux共享内存实际位于哪里?

c - 更新 C 库,导致堆损坏

c++ - 将临时对象作为 LValues 传递

c++ - 通过递归向前和向后设置数组最小值

C++ "was not declared in this scope"编译错误

c++ - 带有立方体贴图数组的 glTextureStorage3D 上的 GL_INVALID_VALUE

c++ - 使用指针交换整数

java - java中快速排序的swap方法