简体   繁体   English

在向量中遍历<vector<pair<int, int> &gt; &gt;

[英]traverse in vector<vector<pair<int, int> > >

I came across a situation that I couldn't explain why.我遇到了一个我无法解释原因的情况。 I have a vector<vector<pair<int, int> > > parent that indicates parent of a specific cell.我有一个vector<vector<pair<int, int> > > parent表示特定单元格的parent I have following code:我有以下代码:

 // (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;
  }

I 'm not sure why in the first iteration of while loop for c = nums[r][c].second;我不知道为什么在while循环的第一次迭代中c = nums[r][c].second; it returns -1 instead of 2.它返回 -1 而不是 2。

In first iteration,在第一次迭代中,

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

Therefore所以

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM