我有 2 个类,一个点代表二维空间中的一个点,一个三角形在顶点列表( vector )中包含 3 个点。
对于一项作业,我必须编写一个周长函数来计算三角形的周长。为此,我需要从顶点找到 3 个边长,然后将它们相加。我最终得到了:
double Triangle::getPerimeter() {
double s1Length = vertices[0].distanceTo(vertices[1]);
double s2Length = vertices[1].distanceTo(vertices[2]);
double s3Length = vertices[2].distanceTo(vertices[0]);
return s1length + s2length + s3length;
}
不过对我来说,这看起来很难看,所以我决定尝试将边存储在数组中:
double Triangle::getPerimeter() {
double lengths[3] = {
vertices[0].distanceTo(vertices[1]),
vertices[1].distanceTo(vertices[2]),
vertices[2].distanceTo(vertices[0])
}
return lengths[0] + lengths[1] + lengths[2];
}
我主观上认为它更整洁。
显然,如果此算法可重用,将边存储在可遍历对象中具有可扩展性的好处,但此方法仅适用于三角形;除此之外,顶点的顺序很重要,而且会变得更加复杂。
出于美观的目的,将这样的变量存储在数组中是否是一种普遍的做法?
除了美学之外还有什么好处吗?将类似使用的变量一起存储在内存中是否会提高性能?
最佳答案
我不明白为什么需要将它们存储在许多变量或数组中:
double Triangle::getPerimeter() {
double perm = 0.0;
for( int i =0; i < 3; ++i ) {
int next = (i + 1) % 3;
perm += vertices[i].distanceTo( vertices[next] );
}
return perm;
}
无论如何,你的代码应该是可读的,然后在必要时进行优化
关于c++ - 将相似的变量存储在数组中有什么好处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29371849/