[問題] 動態指定Vector大小

作者: wu110011 (不下棋)   2016-06-11 10:34:46
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++ 2010
問題(Question):
我需要一個非矩形的二維陣列
假設往下是一維方向(已知,Rum-Time時決定)
往右是二維方向(未知,利用Vector的動態增長的特性),且長度不同
於是我宣告了std::vector<int> *machine; 這樣的型態
程式碼如下,不知道這樣用會有什麼問題嗎?(如Memory Leak之類的)
程式碼(Code):(請善用置底文網頁, 記得排版)
class GA_Chromosome
{
std::vector<int> *machine;
};
GA_Chromosome::GA_Chromosome()
{
//Run-time時動態決定大小
machine = new std::vector<int>[Size];
}
GA_Chromosome::~GA_Chromosome()
{
//Clear Memory of Vector
std::vector<int> zero; // zero(0);
machine->swap(zero);
delete [] machine;
}
作者: ilikekotomi (Young)   2016-06-11 10:38:00
可以用std::vector<std::vector<int>>搭配typedef可以讓std::vector<int>變得更好閱讀
作者: s25g5d4 (function(){})()   2016-06-11 17:53:00
同樓上,可以用 vector.reserve() 在 runtime 預留空間
作者: fatrabitree (胖兔子)   2016-06-11 18:17:00
他這種用法resize也行
作者: wu110011 (不下棋)   2016-06-12 21:25:00
謝謝
作者: s25g5d4 (function(){})()   2016-06-13 00:00:00
哇勒...太久沒寫 C++ 把 reserve 跟 resize 搞混了 = =抱歉..我應該要說的是 resize 才對 之前還有在寫 UVa 題目的時候都是用 resize

Links booklink

Contact Us: admin [ a t ] ucptt.com