将相似变量存储在数组中有什么好处?

时间:2015-03-31 15:01:33

标签: c++ arrays

我有2个类,一个代表2D空间中一个点的Point,一个三角形,它包含顶点列表(矢量)中的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];
}

我主观地认为它更整洁。

显然,如果这个算法是可重用的,那么将边存储在可遍历中具有可扩展性的好处,但是这种方法仅适用于三角形;除此之外,顶点的顺序很重要,而且它变得更加复杂。

为了美观,将数据中的变量存储在数组中是不是一般的做法?

除了美学还有什么好处?将类似使用的变量存储在内存网中是否有任何性能提升?

3 个答案:

答案 0 :(得分: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;
}

无论如何,您的代码应该是可读的,然后在必要时进行优化

答案 1 :(得分:0)

在C ++中,数组(如果在没有迭代的情况下直接访问元素)和变量具有相同的速度。

答案 2 :(得分:0)

我认为如果你不需要存储变量,那么你不需要创建三个双变量或一个大小为3的double数组(在范围的末尾它们将被删除)。我更喜欢返回结果而不将解决方案的步骤分配给变量