2010年2月6日 星期六

C/C++筆記-使用memset加快二維陣列初始

一般方法是用雙迴圈來設定二維陣列的值
這裡使用memset來設定陣列初值
##ReadMore##
#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,不會影響答案

0 意見 :

張貼留言