[问题] 动态指定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