假设我有一个带有成员函数的类型:
class Thing {
std::string m_name;
public:
std::string & getName() {
return m_name;
}
};
并说我有一个这种类型的集合:
std::vector<Thing> things;
我想按名称保持这些东西的顺序。为此,我使用 std::lower_bound 来确定放置它的位置:
bool thingLessThan(Thing const& thing, std::string const& name) {
return thing.getName() < name;
}
void addThing(std::string const& name) {
vector<Thing>::iterator position = lower_bound(
things.begin(), things.end(),
name,
thingLessThan);
if (position == things.end() || position->getName() != name) {
position = things.insert(position, Thing());
position->getName() = name;
}
}
有没有办法在不实际创建函数的情况下做与函数相同的事情thingLessThan
,可能使用 std::mem_fun、std::less 等?