全て、
次のコードを検討してください。
class CPlayer
{
public:
CPlayer(bool new) { m_new = new; };
bool IsNewPlayer() { return m_new; }
private:
bool m_new;
};
int main()
{
std::vector<CPlayer> players_pool;
players_pool.push_back( false );
players_pool.push_back( false );
players_pool.push_back( true );
players_pool.push_back( false );
}
今私が探しているのは、m_new が true のプレイヤーを削除することです。
次のようなことは可能ですか?
players_pool.erase( std::remove( players_pool.begin(), players_pool.end(), players_pool.at().IsNewPlayer() ), players_pool.end() );
現在、与えられている例はどこでも単純な整数用であり、クラス オブジェクト用ではありません。
そのような操作を実行する簡単な方法はありますか?
そして、MSVC 2010 と XCode 4 と 10.6 SDK で動作する必要があります。
注:与えられたコードは、私が取り組んでいる実際のコードの簡略化されたバージョンです。クラス CPlayer には、ここに記載したよりも多くのフィールドがありますが、この投稿には関係ありません。
ありがとうございました。
PS: 私はこれを見つけましたが、ここでの私の質問は、OSX で動作するかどうかです。私のリムーバーは次のようになります。
struct Remover : public std::binary_function<CPlayer,void,bool>
{
public:
bool operator()(const CPlayer &player) const
{
return player.IsNewPlayer();
}
};