0

カスタムクラスへのポインタのリストがいくつかあります(クラスは基本データを持つ単純な人です)。すべてのリストから 1 つの新しいリストにポインター (浅いコピー) をコピーする方法はありますが、ポートランド (city==Portland) 出身の人のみです。STL ( list ) のリストを使用しています。C++11が使えません。

class Person{
public:
long id;
string name;
string last_name;
string city

};
4

2 に答える 2

2

たとえば、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

于 2012-09-06T09:07:07.227 に答える