c++ - 将相似的变量存储在数组中有什么好处吗?

标签 c++ arrays

我有 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/

相关文章:

c++ - QSqlRelation 不起作用

c++ - 在另一台计算机上运行 .exe 文件时出现 "Missing MSCVP140.dll"和 "Missing VCRUNTIME140.dll"

c++ - 创建 std::vector 减去一个元素的拷贝的最快方法

c++ - 因此,我制作了一个程序,用C++和Java打印Pascal的Triangle,由于某种原因,当我进行14行以上打印时,它开始中断?

C++ 我从这段代码中得到 g++ 4.4.3 的 ‘;’ 之前的预期 '\xa'

C# 将 JSON 对象转换为数组

java - 如何从 JSONArray 访问单个整数

java - 方法未返回数组的正确值。我究竟做错了什么?

javascript - 将字符串转换为数组或对象

c++ - 计算两个骰子的和出现的次数