2018年5月15日 星期二

C++曾經新手犯過的可執行錯誤-vector兩層寫法

int m=0,n=0;
cin>>m>>n;

vector<vector<int> > map;//預設兩層陣列
/*兩個 ">>" 之間一定要隔開*/

//將資料讀入兩層陣列
//寫法 1
for (in t i = 0; i < m; i++)
{
  vector<int> tmp(n, 0);// 宣 告一暫時的內層向量,n 為個數,0為預寫入資料
  for (int j = 0; j < n; j++)//內層向量先將資料一排逐一讀入
  cin >> tmp[j];
  map.push_back(tmp);/ /再推入外層向量
}

//寫法 2
for(int i=0;i<m;i++)
{
  vector<int> ma;// 宣告一暫時的內層向量
  map.push_back(ma);//先推入外層向量
  for(int j=0;j<n;j++)
  {
  int a=0;//宣告一整數
  cin>>a;//讀入
  map[i].push_back(a);//再進行推入向量
/*注意到該寫法,不再使用內層向量,而是使用外層向量的元素作指定*/
  }
}