二維向量


二維向量

接下來,你將使用向量來存儲矩陣。就像 Python 使用列表列表來存儲矩陣一樣,C++ 使用的是向量的向量。用於聲明二維向量的語法有點復雜。

假設你正在使用 Python,並且想存儲一個 3 乘 5 的矩陣。你可以這么寫:

matrixexample = [[2,1,5], [7,9,2], [16,5,9], [5,2,1], [1,2,4]]

在 C++ 中,你可以將矢量附加到矢量來創建一個類似的結構。下面是 Python 和 C++ 代碼的比較。我們來看看:

 

代碼解釋

首先,這一行

vector < vector <int> > twodvector;

聲明了一個叫做 twodvector 的空二維向量。有幾件事要注意:

  • 就像 C++ 中的所有變量一樣,你必須聲明向量中將使用哪種類型的值。在本例中,twodvector 變量將使用整數。
  • 注意括號之間的空格 < vector <int> >。如果空格不正確,程序可能無法運行。

然后,聲明一個叫做 singlerow 的一維向量。singlerow 向量的形式為 [2, 2, 2]。

vector<int> singlerow (3,2);

然后 singlerow 向量被追加到 twodvector 五次:

 for (int i = 0; i < 5; i++) { twodvector.push_back(singlerow); }

最終將得到與 Python 代碼中一樣的二維結構。運行這段 C++代碼后,終端會輸出如下結果:

2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 

另一種設置向量的方法

以下是前面的例子中設置向量的另一種方法:

vector < vector <int> > twodvector (5, vector <int> (3, 2));

語法要稍微復雜一點。但是,如果從括號內往外看,你會發現它實際上已經具備所有功能。

這一行:

vector <int> (3, 2)

可以設置一個整數向量,如 [2, 2, 2]。所以,即使你看不到內部的向量,代碼的功能依然是這樣的:

vector < vector <int> > twodvector (5, [2, 2, 2]);

然后,代碼將[2, 2, 2] 五次應用到 twodvector 變量中:

[[2,2,2], [2,2,2], [2,2,2], [2,2,2], [2,2,2]]

請記住,只有 Python 才會用方括號[]表示向量或矩陣。較新版本的 C++可以使用大括號來表示矢量{},但 C++ 的較早版本沒有對應的表示形式。

像下面這樣的代碼無法在 C++ 中運行:

vector < vector <int> > twodvector (5, [2, 2, 2]);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM