看板 C_and_CPP 關於我們 聯絡資訊
五分鐘教會你怎麼用 vector: 1. 在 header file 中加入 #include <vector> 2. 宣告 vector 的方法和一般陣列比較不同, 比如你本來寫: int a[10]; 改用 vector 則是這樣寫: vector<int> a(10); ^^^型別 ^^大小 大小可以是變數,不過不能宣告二維陣列 (要也是可以,有點麻煩) 3. 用起來和一般陣列一樣: vector<int> a(10); for(int i = 0; i < 10; ++i) a[i] = i*i; // a = {0, 1, 4, 9, ...} 你的程式要改用 vector 只需要改兩行: ※ 引述《DreamLoser (金屬製品)》之銘言: : #include<iostream> : #include<math.h> : #include<ctime> : #include<cstdlib> : #include<fstream> : #include <complex> #include <vector> : //多include的東西之後寫的東西要用 : using namespace std; : int _tmain(int argc, _TCHAR* argv[]) : { : int length=10; //matrix size 超過20就暴了...比使用D[100][100]小很多很多 : //memory allocate of the matrix : unsigned int size_A = length*length; : unsigned int mem_size_A = sizeof(double) * size_A; : complex<double>* D = (complex<double>*) malloc(mem_size_A); vector<complex<double> > D(size_A); ^^^ 注意這邊要留一個空白 : double i1,i2; : //initial D : int i,j,k; : for(i=0;i<length;++i){ : for(j=0;j<length;++j){ : i1=(double)rand()*2/32767-1; : i2=(double)rand()*2/32767-1; : k=i*length+j; : D[k1]=complex<double>(i1,i2); : } : } : system("pause"); : return 0; : } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.9.6.2
Ebergies:嗯, 你會愛上它的 lol 06/15 17:18
avhacker:只學五分鐘,然後push_back之後再對原先取出的 iterator 06/15 17:52
avhacker:做 dereference, 接著死的莫名其妙 06/15 17:53
Ebergies:一般來說五分鐘學不會 iterator... XD 06/15 18:30
DreamLoser:謝謝你阿^^ 06/15 18:54
DreamLoser:想問另一問題就是vector可容納double最大可放多少呢? 06/15 18:55
ianfang:理論上會自己擴大 理論上是無限大 但要看編譯器設定 06/15 19:13
ianfang:一定夠你用 只要你不亂搞的話 06/15 19:13
chrisdar:2GB 06/15 19:17
VictorTom:最後那個空白好神秘....Orz 06/15 19:22
QQ29:對阿 為什麼要留空白??另外請問二樓 為什麼這樣會壞呢? 06/15 19:24
QQ29:剛剛玩了一下確實會run time 盪掉 06/15 19:24
legendmtg:compiler會不知道他是兩個角括號還是還是right shift 06/15 19:38
legendmtg:下一版的c++會允許你不用留空白 06/15 19:39
QQ29:vc8我compile ok! 不過為啥pushback後再*他 就會出錯呢 06/15 19:41
zlw:以前為了美觀每次用角括號間都有空白,現在才知道有這回事 06/15 19:41
VictorTom:謝l大解釋, 一看完解釋就發現曾經看過解釋了, 老了Orz 06/15 20:17
avhacker:QQ29: push_back 可能會造空間不夠用,於是要了一塊更大 06/16 00:16
avhacker:的空間,舊的記憶體位址已不再使用,你一取用就掛了 06/16 00:17
avhacker:所以必需重新取得一個 iterator 06/16 00:17
freelancer:給六樓,看stl impl 和system, 可用max_size() 查看 06/16 09:04