我是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()
,它说不允许输入类型名称?
答案 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
。