我有一个结构,它看起来像这样:
struct employee
{
char name[21], surname[21];
unsigned int salary;
}employees[20];
我的问题是,我该如何根据字段"对结构数组进行排序;name";,按字母顺序排列。
我见过人们使用sort()
或qsort()
,但我不知道如何制作那些排序算法通常必须制作的compare()
。
只需使用lambda表达式作为示例
#include <iterator>
#include <algorithm>
#include <cstring>
//...
std::sort( std::begin( employees ), std::end( employees ),
[]( const auto &em1, const auto &em2 )
{
return strcmp( em1.name, em2.name ) < 0;
} );
与其在结构中使用字符数组作为数据成员,不如使用类型为std::string
的对象。