uda 3.C++二维向量
二維向量
接下來,你將使用向量來存儲矩陣。就像 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]); `二維向量與 for 循環
由于二維向量只是向量內的向量,因此,二維向量和一維向量具有相同的方法?。
這就是例子中 cout 代碼的作用原理:
for (int row = 0; row < twodvector.size(); row++) {for (int column = 0; column < twodvector[0].size(); column++) { cout << twodvector[row][column] << " "; } cout << endl;輸入twodvector.size()時,會給出外部向量的大小。外部向量有五個元素,它們表示矩陣中的行數:
{2 2 2} {2 2 2} {2 2 2} {2 2 2} {2 2 2}當你輸入twodvector[0].size()時,你實際上是在獲取外部向量的第一個元素,[2 2 2],并請求這個向量的大小,在本例中,大小為 3。因此,for 循環實際如下:
for (int row = 0; row < 5; row++) {for (int column = 0; column < 3; column++) { cout << twodvector[row][column] << " "; } cout << endl;轉載于:https://www.cnblogs.com/fuhang/p/9077624.html
總結
以上是生活随笔為你收集整理的uda 3.C++二维向量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java lambda例子
- 下一篇: BZOJ 1460 Pku2114 Bo