2017-06-20 128 views
-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

+1

到那時,您已經爲'r'指定了一個新值。在第一次迭代中,您將擁有'c = nums [1] [1] .second'。 –

+0

另外,你不需要所有'make_pair()'噪聲。只需使用大括號初始化:'std :: vector > blah {{21,42},{101,404},}'(是的,它也適用於嵌套的'vector's。) –

回答

1

在第一次迭代I不敢肯定,

r=num[0][1].first = 1. 

因此,

c=num[1][1].second = - 1. 
+0

可能會關閉這個問題,因爲它對社區不會有太大的幫助。雖然沒有生產力! –

相關問題