2012-07-09 24 views
0
char buffer[256]; 

for(int x = 0; x<256; x+=4) 
{ 
char one = buffer[x]; 
char two = buffer[x+1]; 
char three = buffer[x+2]; 
char four = buffer[x+3]; 

buffer[x] = four; 
buffer[x+1]=three; 
buffer[x+2]= two; 
buffer[x+3]=one; 
} 

我該如何優化它?在C++中優化字符數組成員交換

+0

你肯定需要超出了進行優化? – Hurkyl 2012-07-09 17:13:29

回答

5

使用std::reverse

std::reverse(&buffer[x], &buffer[x + 4]); 
+0

這肯定會優化可讀性,所以+1。 – 2012-07-09 16:26:13

+2

這是一個恥辱,它有未定義的行爲。當'buffer'中只剩下四個元素時調用'buffer [x + 4]'是一個禁忌。它應該是'buffer + x,buffer + x + 4'。 (但基本的想法很好。) – 2012-07-09 16:34:40