2011-12-27 76 views
0

的截面我有一個多維陣列(以矩陣的表示)。我需要將其清零,而不是整個數組,而是其中的一部分。這樣做的最好方法是什麼?我嘗試使用memset,但它只是給我一個類型轉換錯誤。零出多維數組

_matrix[row][column] = memset(
         _matrix[row][column], 
         0, 
         sizeof(_matrix[row][column]) 
        ); 

宣言

float** _matrix = new float*[NUM_ROWS][NUM_COL];

+6

爲什麼你會指定'memset'的結果呢? – 2011-12-27 22:55:08

+3

omg。你應該考慮在C/C++上寫一本好書。 – Anycorn 2011-12-27 22:55:16

+0

你想清零哪一部分?一排?柱?行和列? – Marlon 2011-12-27 22:56:18

回答

2

memset()的第一個參數是位置到零的地址。所以:

memset(&_matrix[row][column], ...) 

然而,在你的情況下將更爲直截了當:

_matrix[row][column] = 0.0; 
0

這被標記爲C++但你沒有真正做任何C++。爲什麼不這樣做呢?避免所有較低級別的memset和直接數組廢話。

我當然認爲你應該採取一些以前的意見,真正瞭解底層C,內存訪問等,但在C++中,這可以簡單地避免。

的代碼快速線,讓你用自己的方式:

typedef std::vector<std::vector<int> > Array2D;