我有2個類,一個表示二維空間中的一個點的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];
}
其中我主觀上看到的整潔。顯然,如果這個算法是可重用的,將邊存儲在可遍歷的地方具有可伸縮性的好處,但是這種方法只適用於三角形;除此之外,頂點的順序很重要,並且變得更加複雜。
爲了美學的目的,是否將這樣的變量存儲在一個數組中?
除美學外,還有什麼好處嗎?將類似使用的變量一起存儲在內存網絡中是否有性能提升?
爲什麼您需要存儲它們? – Slava 2015-03-31 15:06:19
我當然不認爲你的「排列」解決方案是整潔。就我個人而言,在這種情況下,我甚至不會使用任何變量,只是執行'返回頂點[0] .distanceTo(頂點[1])+頂點[1]。距離頂點(頂點[2])+ 頂點[2]。 distanceTo(vertices [0])' – wvdz 2015-03-31 15:06:23
嘗試查看生成的程序集。它甚至可能是相同的。 – 2015-03-31 15:13:41