【发布时间】:2012-08-15 16:50:56
【问题描述】:
尝试将迭代器用于整数集的三维向量时遇到了很多错误。看下面的代码(这只是部分片段,因为整个东西太长了;我认为这应该足以看出哪里出了问题,但如果不是,请告诉我):
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] 调用时,运算符“[]”都不匹配 某事
我觉得这个错误不知何故源于迭代器本身,但我无法弄清楚。
【问题讨论】:
-
请附上
particles_celllist的声明 -
@thekashyap 代码段第一行
vector<vector<vector<set<int> > > > particles_celllist; -
我的错..我看到这个问题现在已经回答了.. :)