我在写作业代码。所以当我完成一堂课时,我遇到了一个问题。有一个循环为数组分配值是一个好主意吗?这是我的课。我正在考虑在构造函数中进行循环或创建一个函数,该函数稍后将通过手动调用它来分配值。
这些选择是否不同?如果是,哪个选择更好,为什么?
class Mule
{
private:
int numofMules;
int MapSize;
MuleNode* field;
MuleNode* mules;
public:
void random_positions();
void motion();
void print_field();
Mule(int nofMules, int mSize)
{
numofMules = nofMules;
MapSize = mSize;
mules = new MuleNode[numofMules];
field = new MuleNode[MapSize*MapSize];
for(i = 0; i < numofMules; i++)
{
mules[i].ID = i+1;
}
random_positions();
}
}
由于在编译时分配一维数组的问题而对代码进行了编辑,并使用公式在1维中重新创建了二维数组。
+---------------+-----------+-----------+
| i = j * w + i | x = i % w | y = i / w | w - width of the 2 dimentional array
+---------------+-----------+-----------+
结论:由于该问题被标记为基于意见的,我想这意味着在构造函数中使用循环或创建稍后将分配值的函数没有太大区别。
如果有关于此问题的任何事实或观点值得分享,请发表评论或写出答案。
在ctor中循环并不一定有什么可怕的。
同时,值得考虑的是,您要初始化的那些项目是否可以/不应该是知道如何初始化自身的对象,而不是创建未初始化的实例,然后将值写入其中的对象。
如您所写,代码似乎并没有多大意义。类名是Mule
,但是基于ctor,它实际上更像是Mules的集合。一个ule子应该就是:一个m子。N个mu子的集合应该像一个std::vector<Mule>
。M子实际上是Mul子的集合,这是一个糟糕的主意。
您还应该至少考虑使用std::vector
而不是使用数组(当然,假设最终您最终获得了该类中的所有项目的集合)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句