-1
我遇到了一個我無法解釋原因的情況。我有一個vector<vector<pair<int, int> > > parent
,指示特定單元格的parent
。我有以下代碼:遍歷向量<向量<對<int, int>>>
// (1, 0), (1, 2), (1, 2)
// (1, 2), (-1, -1), (1, 2)
// (-1, -1), (2, 1), (-1, -1)
vector<vector<pair<int, int> > > nums = {
{make_pair(1, 0), make_pair(1, 2), make_pair(1, 2)},
{make_pair(1, 2), make_pair(-1, -1), make_pair(1, 2)},
{make_pair(-1, -1), make_pair(2, 1), make_pair(-1, -1)}};
int r = 0;
int c = 1;
while (nums[r][c] != make_pair(r, c)) {
cout << nums[r][c].first << " " << nums[r][c].second << endl; // 1, 2
r = nums[r][c].first; // 1
c = nums[r][c].second; // -1
cout << "r: " << r << " c: " << c << endl;
}
爲什麼while
循環爲c = nums[r][c].second;
第一次迭代返回-1而不是2
到那時,您已經爲'r'指定了一個新值。在第一次迭代中,您將擁有'c = nums [1] [1] .second'。 –
另外,你不需要所有'make_pair()'噪聲。只需使用大括號初始化:'std :: vector> blah {{21,42},{101,404},}'(是的,它也適用於嵌套的'vector's。) –