您將有超過行的所有列的迭代,以檢查是否存在1
。
示例代碼:
for (int row = xa; row < 50; row++) {
int bIsOne = 0;
for (int i = 0;i < col_size && !bIsOne; i++) {
bIsOne = bIsOne | schemaArray[row][i];
}
if(bIsOne)
printf("1 found in row %d\n",row);
}
,除非你構建的schemaArray
位圖這不能使用位運算符來完成。在這種情況下,您可以一次檢查整行。
這主要是一個矯枉過正。只有當你的代碼片段對性能至關重要時才這樣做。
預處理步驟:構建一個位圖陣列schemaArray
long long bitMapSchemaArray[ROW_SIZE];
for (int i = 0; i < row_count; i++) {
long long columnBitMap = 0;
for (int j = 0; j < col_count; j++) {
columnBitMap <<= 1; // Multiplies by 2
columnBitMap = columnBitMap | schemaArray[i][j]; // Add a 1 if schemaArray[i][j]=1 else 0
}
bitMapSchemaArray[i] = columnBitMap;
}
在你的函數,然後你可以使用位圖:
for (int i = 0; i < row_count; i++) {
if(bitMapSchemaArray[i])
printf("There is a 1 in %d row\n", i+1);
}
不過,在大多數,你將能夠有假設我們使用64位整數數組,則在2-D
陣列中有64列。當然,你也可以通過使用64位整數來推斷64位以上的列。在這種情況下,按位或每列檢查累積結果是否仍然不爲零。
編譯器告訴你,你正在使用自'如果是錯誤的(| schemaArray [行] == 1)'情況不會編譯。但它不會告訴你如何正確使用它。 –