這個問題更多的是關於算法和功能的正確使用,而不是實際的代碼。有沒有一種有效的方法來確定距離?
在我的代碼中,我使用map來模擬盒子。地圖元素由作爲鍵的vector<int>
和作爲值的set<shared_ptr<foo> >
組成。
我做一個嵌套循環去了所有的箱子:
mit1 = boxes.begin(); //mit1 is an appropriate iterator
int edge = 10;//represnd periodic boundary conditions
while (mit1 != boxes.end()){
vector<t> = mit1->first;
mit2 = mit1++;
while (mit2 != boxes.end()){
vector<int> u = (mit2++)->first;
bool good = true;
for (int i = 0; i < 3 && good; i++){
u[i] = (int)fabs(u[i] - t[i]);
good = u[i] == 0 || u[i] == 1 || u[i] == edge;
}
if (!good) continue;
}
}
我所關注的是整個循環嵌套還有for
循環。 你認爲用函數來計算所有相鄰的盒子會更有效嗎?你知道任何更好的方法來做循環測試嗎?
肯定有一個更好的辦法! – Arunmu
你想要計算什麼?你確定你沒有在mit2和u之間混淆(或換句話說 - 你在第二次沒有無限循環)? – Ofir
謝謝,我已經改變了循環,現在應該沒問題了......我想消除所有情況,其中兩個盒子都是這樣,因此盒子內的粒子沒有機會互動。箱子的大小固定爲這樣的距離,但我剩下箱子的距離計算 – Yotam