全部,
考虑以下代码:
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() );
现在到处给出的例子都是针对简单整数的,而不是针对类对象的。
有没有一种简单的方法来执行这样的操作?
我需要它在带有 10.6 SDK 的 MSVC 2010 和 XCode 4 中工作。
注意:给出的代码是我正在处理的实际代码的简化版本。CPlayer 类的字段比我放在这里的要多得多,但它们与这篇文章无关。
谢谢你。
PS:我发现了这个,但我的问题是它是否可以在 OSX 上运行。我的卸妆油看起来像这样:
struct Remover : public std::binary_function<CPlayer,void,bool>
{
public:
bool operator()(const CPlayer &player) const
{
return player.IsNewPlayer();
}
};