3

我正在寻找一种使用 STL:Algorithm 库的 sort() 函数对结构进行排序的方法。我发现了一些使用矢量的代码来执行此操作。例如

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 );
}

我想知道是否可以在不使用矢量的情况下对其进行排序。??如果是那怎么办??

4

1 回答 1

3

std::sort算法采用 3 个参数 :

  • 随机访问迭代器到初始位置。
  • 随机访问迭代器到最终位置和
  • 排序标准

因此,只要您有任何可以提供初始和最终迭代器的类型并提供排序标准,就可以std::sort在该类型上使用。
尽管排序标准具有严格的弱排序,但这很重要。

于 2012-05-28T04:02:27.950 回答