簡體   English   中英

使用2D向量時出現分割錯誤

[英]Segmentation fault when using 2D vectors

我正在嘗試使用2D向量創建矩陣。 我不明白為什么編譯器會給我分段錯誤的錯誤。 任何想法? :)

這是我的代碼:

 #include <iostream>
 #include <vector>
 using namespace std;

 int main(){
 vector < vector <int> > Board;
 int n;
 cout<<"Enter size: ";
 cin>>n;
 Board.resize(n);

   //Initialize with something
 for(int ii=0; ii<n; ii++)
 {
 for (int jj=0; jj<n; jj++)
    Board[i][j]=1;
  }

  //Show vector 
  for(int i=0; i<n; i++)
  {
    for (int j=0; j<n; j++)
   {
    cout<<Board[i][j]<<" ";
   }
    cout<<endl;
   }
  return 0;
 }

我也嘗試用表達式“ Board.at(i).at(j)= 1”填充向量,但是什么也沒發生。

在這之后:

Board.resize(n);

您有一個包含n空向量的向量。 然后,您就可以訪問它們,就好像它們具有n元素一樣。 如果希望向量看起來像一個n×n矩陣,則可以這樣初始化它:

vector <vector<int>> Board(n, std::vector<int>(n));

請注意,這里有一些開銷。 向量的向量更像是指向數組的動態指針數組。 使用單個向量,提供兩個索引接口來模擬2D數組可能更有意義。

Board.resize(n)僅調整最外面的向量的大小。 如果要使用正方形板,還需要調整內部矢量的大小。 嘗試Board.resize(n, std::vector<int>(n))

另外,盡管我(也許)引起了您的注意,但通常using namespace std; 是一種不好的做法using namespace std; 在文件的頂部。 最好在標准庫中完全限定名稱。 例如, std::vector ,或者非常偏執的是::std::vector

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM