尝试对整数集的三维向量使用迭代器时遇到很多错误。请参阅以下代码(这只是选择部分,因为整个事情太长了;我认为这应该足以看出有什么问题,但如果不是,请告诉我):
vector<vector<vector<set<int> > > > particles_celllist;
vector<vector<vector<set<int> > > >::iterator cell_iter;
map<int,map<int,Particle> > particle_grid;
for (cell_iter=particles_celllist[wx][wy][wz].begin();cell_iter!=particles_celllist[wx][wy][wz].end();cell_iter++)
{
double distance_to_cell=sqrt(pow(particles[*cell_iter].position().y()-(wy)*ygridlength,2)+
pow(particles[*cell_iter].position().z()-(wz)*zgridlength,2));
if (distance_to_cell<input_data.diam_large())
{
particle_grid[box_counter][*cell_iter]=particles[*cell_iter];
}
}
注意:wx、wy、wz 和 box_counter 是整数,ygridlength 和 zgridlength 是双精度数,而 Particle::position::y(或 ::z)和 input_data::diam_large 返回双精度数。
我收到很多错误:
“cell_iter=particles_celllist[wx][wy][wz].begin()”中的运算符“=”不匹配
“cell_iter!=particles_celllist[wx][wy][wz].end()”中的运算符“!=”不匹配
每当我使用 [*cell_iter] 调用某些东西时,运算符“[]”都不匹配
我觉得错误以某种方式源于迭代器本身,但我无法弄清楚。