这意味着允许用户输入他/她希望搜索的姓名,联系人和地址.我想要做的是显示所有应用pred的对象是真的,但我似乎无法让它工作.
static string searchName, searchContact, searchAddress;
bool search_User(User &u)
{
return (u.getName() == searchName && u.getContact() == searchContact && u.getAddress() == searchAddress);
}
void searchUser(vector<User> &u)
{
cout << "Name of user: ";
getline(cin, searchName);
cout << "Contact of tutor: ";
getline(cin, searchContact);
cout << "Adress of user: ";
getline(cin, searchAddress);
vector<User>::iterator i;
i = find_if(u.begin(), u.end(), search_User);
cout << i->getName() << i->getContact() << i->getAddress() << endl;
}
Run Code Online (Sandbox Code Playgroud)
MSa*_*ers 10
通常的解决方案是使用std::copy_if:
std::vector<User> matches;
std::copy_if(v.begin(), v.end(), std::back_inserter(matches),
[Name, Contact, Address](User const& u)
{ return u.getName() == Name && u.getContact() == Contact && u.getAddress() == Address;});
Run Code Online (Sandbox Code Playgroud)
或者只写一个经典的循环
for (User& u : users) {
if (search_User(u) {
std::cout << u; // Assumes you've implemented operator<<(ostream&, User)
}
}
Run Code Online (Sandbox Code Playgroud)
伪代码:
for(iterator i = v.begin();
(i = find_if(i, v.end(), ...)) != v.end(); ++i )
{
print *i;
}
Run Code Online (Sandbox Code Playgroud)