我创建了一个包含两个Point3f
类型字段的结构(从另一个标头继承)。
struct C_Cell {
Point3f min, max;
};
然后我创建了一个C_Cell
std::vector< C_Cell> grid;
我填写了grid.push_back(c)
,其中c
是C_Cell
。
现在,当我尝试迭代矢量时,通过
for (std::vector<C_Cell>::iterator it = grid.begin() ; it != grid.end(); ++it)
在调试期间,它的类型不是C_Cell
而是Point3f
,这是字段的类型,而且是空的。
如何以正确的方式迭代,以获得C_Cell
类型的单个元素?
谢谢(抱歉我的英文!:))
答案 0 :(得分:10)
你必须取消引用迭代器并像
一样使用它(*it).min
或
(*it).max
或者,无需取消引用,
it->min
解除引用的迭代器(*it)
的类型应该是C_Cell
,因为它是迭代器的工作方式,它们的operator*
返回对容器底层类型的对象的引用。迭代器的行为非常像常规指针(虽然它们不是常规指针,但代理类),您可以增加/解除引用等。