C ++使用copy_if

时间:2017-11-06 17:25:36

标签: c++ copy

我是C ++的新手,我正在尝试使用copy_if函数:

set<Person> people; // contains people objects

set<Person> copyedPeople;

string name = "joe"; // Multiple people with that name

copy_if(people.begin(), people.end(), copyedPeople, Person.getName() == name);

问题在于Person.getName(),它说不允许输入类型名称?

1 个答案:

答案 0 :(得分:2)

你需要插入器,加上有效的谓词:

std::copy_if(people.begin(), people.end(),
             std::inserter(copyedPeople, copyedPeople.end()),
             [](const auto& person){ return person.getName() == name; });

我不知道你的比较器功能,但是如果你使用这个名字,之前的答案最多只能返回1个人。 std::multiset可能适合equal_range