uda 3.C++二维向量
二維向量
接下來(lái),你將使用向量來(lái)存儲(chǔ)矩陣。就像 Python 使用列表列表來(lái)存儲(chǔ)矩陣一樣,C++ 使用的是向量的向量。用于聲明二維向量的語(yǔ)法有點(diǎn)復(fù)雜。
假設(shè)你正在使用 Python,并且想存儲(chǔ)一個(gè) 3 乘 5 的矩陣。你可以這么寫(xiě):
matrixexample = [[2,1,5], [7,9,2], [16,5,9], [5,2,1], [1,2,4]]在 C++ 中,你可以將矢量附加到矢量來(lái)創(chuàng)建一個(gè)類(lèi)似的結(jié)構(gòu)。下面是 Python 和 C++ 代碼的比較。我們來(lái)看看:
代碼解釋
首先,這一行
vector < vector <int> > twodvector;聲明了一個(gè)叫做 twodvector 的空二維向量。有幾件事要注意:
- 就像 C++ 中的所有變量一樣,你必須聲明向量中將使用哪種類(lèi)型的值。在本例中,twodvector 變量將使用整數(shù)。
- 注意括號(hào)之間的空格?< vector <int> >。如果空格不正確,程序可能無(wú)法運(yùn)行。
然后,聲明一個(gè)叫做 singlerow 的一維向量。singlerow 向量的形式為 [2, 2, 2]。
vector<int> singlerow (3,2);然后 singlerow 向量被追加到 twodvector 五次:
for (int i = 0; i < 5; i++) {twodvector.push_back(singlerow);}最終將得到與 Python 代碼中一樣的二維結(jié)構(gòu)。運(yùn)行這段 C++代碼后,終端會(huì)輸出如下結(jié)果:
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2另一種設(shè)置向量的方法
以下是前面的例子中設(shè)置向量的另一種方法:
vector < vector <int> > twodvector (5, vector <int> (3, 2));語(yǔ)法要稍微復(fù)雜一點(diǎn)。但是,如果從括號(hào)內(nèi)往外看,你會(huì)發(fā)現(xiàn)它實(shí)際上已經(jīng)具備所有功能。
這一行:
vector <int> (3, 2)可以設(shè)置一個(gè)整數(shù)向量,如 [2, 2, 2]。所以,即使你看不到內(nèi)部的向量,代碼的功能依然是這樣的:
vector < vector <int> > twodvector (5, [2, 2, 2]); `然后,代碼將[2, 2, 2] 五次應(yīng)用到 twodvector 變量中:
[[2,2,2], [2,2,2], [2,2,2], [2,2,2], [2,2,2]]請(qǐng)記住,只有 Python 才會(huì)用方括號(hào)[]表示向量或矩陣。較新版本的 C++可以使用大括號(hào)來(lái)表示矢量{},但 C++ 的較早版本沒(méi)有對(duì)應(yīng)的表示形式。
像下面這樣的代碼無(wú)法在 C++ 中運(yùn)行:
vector < vector <int> > twodvector (5, [2, 2, 2]); `二維向量與 for 循環(huán)
由于二維向量只是向量?jī)?nèi)的向量,因此,二維向量和一維向量具有相同的方法?。
這就是例子中 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()時(shí),會(huì)給出外部向量的大小。外部向量有五個(gè)元素,它們表示矩陣中的行數(shù):
{2 2 2} {2 2 2} {2 2 2} {2 2 2} {2 2 2}當(dāng)你輸入twodvector[0].size()時(shí),你實(shí)際上是在獲取外部向量的第一個(gè)元素,[2 2 2],并請(qǐng)求這個(gè)向量的大小,在本例中,大小為 3。因此,for 循環(huán)實(shí)際如下:
for (int row = 0; row < 5; row++) {for (int column = 0; column < 3; column++) { cout << twodvector[row][column] << " "; } cout << endl;轉(zhuǎn)載于:https://www.cnblogs.com/fuhang/p/9077624.html
總結(jié)
以上是生活随笔為你收集整理的uda 3.C++二维向量的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java lambda例子
- 下一篇: 『Python × C++』函数传参机制