Re: [問題] 如何擴大array的總記憶體大小?
五分鐘教會你怎麼用 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
推
06/15 17:18, , 1F
06/15 17:18, 1F
推
06/15 17:52, , 2F
06/15 17:52, 2F
→
06/15 17:53, , 3F
06/15 17:53, 3F
推
06/15 18:30, , 4F
06/15 18:30, 4F
推
06/15 18:54, , 5F
06/15 18:54, 5F
→
06/15 18:55, , 6F
06/15 18:55, 6F
推
06/15 19:13, , 7F
06/15 19:13, 7F
→
06/15 19:13, , 8F
06/15 19:13, 8F
推
06/15 19:17, , 9F
06/15 19:17, 9F
推
06/15 19:22, , 10F
06/15 19:22, 10F
推
06/15 19:24, , 11F
06/15 19:24, 11F
→
06/15 19:24, , 12F
06/15 19:24, 12F
推
06/15 19:38, , 13F
06/15 19:38, 13F
→
06/15 19:39, , 14F
06/15 19:39, 14F
推
06/15 19:41, , 15F
06/15 19:41, 15F
推
06/15 19:41, , 16F
06/15 19:41, 16F
推
06/15 20:17, , 17F
06/15 20:17, 17F
推
06/16 00:16, , 18F
06/16 00:16, 18F
→
06/16 00:17, , 19F
06/16 00:17, 19F
→
06/16 00:17, , 20F
06/16 00:17, 20F
推
06/16 09:04, , 21F
06/16 09:04, 21F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):