2014年5月28日 星期三

使用memset加快二維陣列初始

一般方法是用雙迴圈來設定二維陣列的值
這裡使用memset來設定陣列初值

#include <cstring>

const int X_SIZE = 60;
const int Y_SIZE = 30;

int matrix[X_SIZE][Y_SIZE];

inline void init_matrix() //使用inline加快
{
  //設定陣列內的值全為-1
  memset(matrix, -1, sizeof(matrix)); 
}

PS:
memset(matrix, 1, sizeof(matrix)); //會失敗
memset為字元填入的函式,整數由2或4個位元組(字元)組成
設定的值是0x01,但存入的值卻是0x0101,而導致錯誤的答案
而-1則是0xFF,存入的值是0xFFFF,不會影響答案



原始文章出處:http://jhengjyun.blogspot.tw/2010/02/cc-memset.html