C++ 结构排序

标签 c++ performance sorting criteria

  • 我有一个自定义结构 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/

相关文章:

c++ - 如果没有堆内存,如何释放 std::vector

javascript - socket.io 自定义事件的确认

performance - 使用 Stackexchange.Redis 的 MGET 调用在负载下变得越来越慢

javascript - JSPerf、For 循环与 While 循环

php - 多个值的哈希方法?

php - 在 PHP/MySQL 中对符合特定条件的行进行排序

algorithm - 在 O(n log(log n)) 中对数组进行排序

c++ - vector::erase 会减少 vector::capacity 吗?

c++ - 如何将反向迭代器与作为代理的迭代器一起使用

c++ - 基于模板参数的可选范围检查