sol*_*sol 4 c++ iterator std set
我最近更改了一些代码以使用集合而不是向量:
std::set<b2Body *>toDestroy;
//std::vector<b2Body *>toDestroy;
Run Code Online (Sandbox Code Playgroud)
但是现在我不确定如何迭代集合来查找对象.这就是我所拥有的:
std::vector<b2Body *>::iterator pos2;
for(pos2 = toDestroy.begin(); pos2 != toDestroy.end(); ++pos2) {
b2Body *body = *pos2;
if (body->GetUserData() != NULL) {
CCSprite *sprite = (CCSprite *) body->GetUserData();
[self removeChild:sprite cleanup:YES];
}
_world->DestroyBody(body);
}
Run Code Online (Sandbox Code Playgroud)
现在toDestroy是一个集合的等价物是什么?来自Objective-C所以我只是学习C++的最佳实践.
编辑:添加我得到的错误消息:
error: no match for 'operator=' in 'pos2 = toDestroy. std::set<_Key, _Compare, _Alloc>::begin [with _Key = b2Body*, _Compare = std::less<b2Body*>, _Alloc = std::allocator<b2Body*>]()'
Run Code Online (Sandbox Code Playgroud)
您需要将迭代器声明为set迭代器:
更改
std::vector<b2Body *>::iterator pos2;
Run Code Online (Sandbox Code Playgroud)
至
std::set<b2Body *>::iterator pos2;
Run Code Online (Sandbox Code Playgroud)