- 我有一个自定义结构 vector ,每次都需要根据不同的标准进行排序
- 实现运算符 < 将只允许一个条件
- 但我希望每次调用 C++ 标准排序时都能够指定排序条件。
怎么做?
- 请注意,运行时间越高效越好。
谢谢
最佳答案
您可以使用第三个参数定义每次运行排序算法时使用的比较函数:
template <class RandomAccessIterator, class StrictWeakOrdering>
void sort(RandomAccessIterator first, RandomAccessIterator last,
StrictWeakOrdering comp);
一个简单的例子:
struct person {
std::string name;
int age;
};
bool sort_by_name( const person & lhs, const person & rhs )
{
return lhs.name < rhs.name;
}
bool sort_by_age( const person & lhs, const person & rhs )
{
return lhs.age < rhs.age;
}
int main() {
std::vector<person> people;
// fill in the vector
std::sort( people.begin(), people.end(), sort_by_name );
std::sort( people.begin(), people.end(), sort_by_age );
}
关于C++ 结构排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2698854/