作者wu110011 (不下棋)
看板C_and_CPP
標題[問題] 動態指定Vector大小
時間Sat Jun 11 10:34:46 2016
開發平台(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;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.165.85.203
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1465612489.A.967.html
1F:→ ilikekotomi: 可以用std::vector<std::vector<int>> 06/11 10:38
2F:→ ilikekotomi: 搭配typedef可以讓std::vector<int>變得更好閱讀 06/11 10:39
3F:推 s25g5d4: 同樓上,可以用 vector.reserve() 在 runtime 預留空間 06/11 17:53
4F:推 fatrabitree: 他這種用法resize也行 06/11 18:17
5F:→ wu110011: 謝謝 06/12 21:25
6F:推 s25g5d4: 哇勒...太久沒寫 C++ 把 reserve 跟 resize 搞混了 = = 06/13 00:00
7F:→ s25g5d4: 抱歉..我應該要說的是 resize 才對 之前還有在寫 UVa 題 06/13 00:00
8F:→ s25g5d4: 目的時候都是用 resize 06/13 00:01