C++ 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); 设置人员;//包含人物对象 设置被模仿的人; string name=“joe”//多个同名的人 复制_if(people.begin()、people.end()、copyedPeople、Person.getName()==name);

C++ 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); 设置人员;//包含人物对象 设置被模仿的人; string name=“joe”//多个同名的人 复制_if(people.begin()、people.end()、copyedPeople、Person.getName()==name);,c++,copy,C++,Copy,问题在于Person.getName(),它表示不允许使用类型名?您需要插入器,以及有效谓词: std::copy_if(people.begin(), people.end(), std::inserter(copyedPeople, copyedPeople.end()), [](const auto& person){ return person.getName() == name; }); 我不知道person的比较器函数,但

问题在于
Person.getName()
,它表示不允许使用类型名?

您需要插入器,以及有效谓词:

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

我不知道person的比较器函数,但如果使用该名称,前面的答案最多返回1个人。和
std::multiset
可能适用于
equal_range

您需要插入器,以及有效谓词:

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

我不知道person的比较器函数,但如果使用该名称,前面的答案最多返回1个人。而
std::multiset
可能适用于
equal_range

getName很可能不是静态的,并且您试图在特定的类实例上不调用它getName很可能不是静态的,当我尝试告诉我std namespace没有成员插入器时,你试图不在特定的类实例上调用它???@HelpMeDoC你包含了
?当我尝试告诉我std namespace没有成员插入器时???@HelpMeDoC你包含了