【发布时间】:2016-02-08 19:05:57
【问题描述】:
我是使用迭代器的初学者,我想遍历我的点的名称并将它们打印出来。我不知道如何访问它们,请帮我出一个主意。我的方法是这样的:
set<Point::Ptr> points = world->getPoints(); // have set of pointers to Point
Point::CPtr myPoint = *points.begin(); // dereferenced iterator to the first element
Point::CPtr lastPoint = *points.rbegin(); //dereferenced iterator to the last valid element
for(set<Point::Ptr>::iterator it = *points.begin(); it != points.end(); it++) {
ROS_INFO("points are: %s: ", myPoint.get()->getName().c_str());
}
通常对于循环中的迭代器,它应设置为集合的第一个元素。但是由于 set 包含指针,并且我希望能够调用这些指针内的对象可用的函数,所以我尝试了这种方式。 它适用于像这样的唯一元素,给我想要的名字:
ROS_INFO("myPoint pointer gives %s: ", myPoint.get()->getName().c_str());
编辑: typedef boost::shared_ptr CPtr;
【问题讨论】:
-
你能在一个不包含指针的容器上写一个循环吗?如果是这样,
*it会为您提供元素。在你的情况下,所有的变化是这个元素是一个指针,我假设你知道如何使用指针。容器中指针的一般规则没有例外,您需要停止编造它们。 -
这里似乎有些混乱。实际使用的是
CPtr还是Ptr?第 2 行和第 3 行与问题无关。