在列表中查找特定项
Finding a specific item in a list
首先,我知道向量会更容易做到这一点。但是,这是针对类的,列表有助于排序。现在,我有了一个指向Sprite对象的指针列表。我想从列表中的第二个项目开始,并对它们运行一些方法,但我不确定如何从第二个项目开始,以及如何从列表中访问Sprites函数。
这是有问题的代码。
list<Sprite*>::iterator iter = sprites.begin();
iter++;
iter++;
while (iter != sprites.end()) //Missile Movement
{
dynamic_cast<Missile*>(sprites[iter])->Update();
if (!dynamic_cast<Missile*>(sprites[iter])->GetActive())
{
delete sprites[iter];
sprites.erase(iter--);
}
iter++;
}
当前代码设置为使用Sprite指针向量。我不能使用当前代码在对象上调用Update或GetActive。你们能帮我理解如何改变语法改变精灵到一个列表吗?
list<Sprite*>::iterator iter = sprites.begin();
if (sprites.size() < 2) throw std::runtime_error("too few sprites");
iter++;
iter++;
while (iter != sprites.end()) //Missile Movement
{
if (Missile* p = dynamic_cast<Missile*>(*iter))
{
p->Update();
if (!p->GetActive())
{
delete p;
iter = sprites.erase(iter);
}
else
++iter;
}
else
std::cerr << "WARN: sprite is not a missilen";
}
不使用索引符号sprites[iter],只对迭代器解引用,如*iter。
同样,erase()调用也会产生问题,因为对象在后继递减的时候已经被销毁了。而是使用返回值,如iter = sprites.erase(iter);如果逻辑上需要的话,还有递减。
相关文章:
- 如何在等效列表中查找最小的连接标签
- 在链接列表中查找元素 - C++
- 如何在随机数列表中查找大于或小于的元素
- C++使用旧编译器GCC 4.4.0在结构列表中查找字符串
- 使用特征查找两个列表之间的差异
- 在地图和列表之间查找标准容器
- 在由邻接列表表示的树中查找节点到另一个给定节点之间的路径
- 如何在数组或链接列表中查找特定字符串
- 如何查找结构列表项
- 查找可变参数列表的字符串格式指定符
- 分段错误 - 查找列表的根
- 在GDB中查找列表术语的位置
- 使用 STL 查找列表中成员的最小值<MyStruct>
- 是否有一个标准的算法来查找列表项的并集
- 搜索算法以查找列表中的k个最低值
- 使用 STL 查找列表中的最小值<>
- 查找列表项的组合
- 查找列表中的第一个元素.C++
- 如何在win32项目的OnLbnSelchange()事件中查找列表框上的选定项
- 查找列表中未排序的元素