カスタムクラスへのポインタのリストがいくつかあります(クラスは基本データを持つ単純な人です)。すべてのリストから 1 つの新しいリストにポインター (浅いコピー) をコピーする方法はありますが、ポートランド (city==Portland) 出身の人のみです。STL ( list ) のリストを使用しています。C++11が使えません。
class Person{
public:
long id;
string name;
string last_name;
string city
};
たとえば、C++03 では。
struct PersonComparerByCity : public std::unary_function<Person*, bool>
{
PersonComparerByCity(const std::string& c):city(c) { }
result_type operator() (argument_type arg) const
{ return arg && arg->city == city; }
private:
std::string city;
};
std::list<Person*> p;
std::list<Person*> result;
std::remove_copy_if(p.begin(), p.end(), std::back_inserter(result),
std::not1(PersonComparerByCity("Portland")));
http://liveworkspace.org/code/a8e36e63b1f9924281768d90f7a090da