を使用して(抽象基本クラス)std::vector
のタイプを持つプログラム内で反復したいこの状況があります。swcObject*
std::iterators
コード:
class swcObject // abstract class
{
protected:
// inheritable members
// some are pure virtual functions()
// ...
public:
int x, y, width, height;
// getter/setter
private:
// implicit task()
}
std::vector<swcObject*> objects;
void other::OnClickSwapObject()
{
for (auto i = objects.rbegin(); i != objects.rend(); ++i)
{
if ((*i)->isClick(MOUSE_BUTTON_LEFT))
{
std::swap(*i, *objects.begin()); // is this the right syntax to do it?
break;
}
}
}
要素を追加するのは逆方向(?)であるため、 orを使用std::reverse_iterator
して使用する必要がある場合、少し混乱します。それは機能していますが、私のコードはこの種のことに対して安全ですか?std::vector::begin()
std::vector::end()
std::swap(x)
std::vector<swcObject*> objects