这个问题更多的是关于算法和功能的正确使用,而不是实际的代码。有没有一种有效的方法来确定距离?
在我的代码中,我使用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