的端我創建保持2個值的簡單的結構對象 - 數(具體數目)和計數(計數器出現多少次數)。C++爲什麼結構對象值重置回零在循環
typedef struct matrixMissNumber {
int number;
int count = 0;
}
然後,我創建了一個名爲列表,missingNumsObjects,持有這些對象。 missNums是一個簡單的保存整數的分隔列表。
list<matrixMissNumber> missingNumsObjects;
for (auto m : missNums)
{
matrixMissNumber mn;
mn.number = m;
missingNumsObjects.push_back(mn);
}
然後,我有3個for-loops通過並檢查2個條件。如果滿足這些條件,則將計數增加1.(爲了測試目的,我添加了一個cout聲明)。 我調試了程序,一切正常,,直到循環結束。這就是當每個matrix的數量變量中的對象missingNumsObjects重置爲0.我不確定它是否存在不同的內存地址被操縱的問題,或列出指針是問題。
for (auto m : missingNumsObjects)
{
for (int x = 0; x < 3; x++)
{
for (int y = 0; y < 3; y++)
{
if (sudoku[x][y] == 0)
{
if (checkRowRule(m.number, x) == false && checkColumnRule(m.number, y) == false)
{
m.count++;
cout << m.number << " - " << m.count << endl;
}
}
}
}
}
下一行打印出來的missingNumsObjects計數的值在循環後。這是值返回到0的地方。
for (auto m : missingNumsObjects)
cout << m.number << " - " << m.count << endl;
這項計劃的目的是一個數獨解算器。該算法的這一部分檢查3x3矩陣的缺失數字,並檢查3x3矩陣中有多少空白點可以進入。
打個招呼即可複製構造函數。 –
不要在C++中使用'typedef struct'結構。這不僅是不必要的,而且會造成問題。 – Slava