| Код | #include <iostream> #include <algorithm> #include <string> #include <list>
using namespace std;
class User { // stream output operator friend std::ostream& operator << (std::ostream& out, const User& u) { return (out << u.name_); } // variables string name_; public: struct finder: std::binary_function<User*, std::string, bool> { bool operator ()(const User* obj, const std::string& name) const { return obj->name_ == name; } };
User(const string& n) :name_(n) {} };
int main() { list<User*> lst; string name; lst.push_back(new User("user1")); lst.push_back(new User("user2")); lst.push_back(new User("user3"));
list<User*>::iterator it = std::find_if(lst.begin(), lst.end(), std::bind2nd(User::finder(), "user2")); if (it != lst.end()) { delete *it; lst.erase(it); }
for (it = lst.begin(); it != lst.end(); ++it) { std::cout << **it << std::endl; } }
|
держи (заодно и подправил немного код). Не забудь в конце очистить объекты в списке. |