如果要按照结构体元素在数组中的顺序进行排序,可以使用std::sort函数,并提供一个lambda函数作为比较函数。将lambda函数的比较逻辑设置为按照结构体元素在数组中的顺序进行比较。
示例代码:
struct MyStruct{ int a; float b; char c; };
// 定义比较函数 auto cmp = [](const MyStruct& left, const MyStruct& right) -> bool { if (left.a != right.a) { return left.a < right.a; } else if (left.b != right.b) { return left.b < right.b; } else { return left.c < right.c; } };
int main(){ // 建立结构体数组 MyStruct arr[] = {{1, 2.5, 'A'}, {2, 1.5, 'B'}, {1, 1.5, 'C'}, {2, 2.5, 'D'}}; int size = sizeof(arr) / sizeof(arr[0]);
// 按照结构体元素在数组中的顺序排序
std::sort(arr, arr + size, cmp);
// 输出排序结果
for(int i = 0; i < size; i++){
std::cout << arr[i].a << " " << arr[i].b << " " << arr[i].c << std::endl;
}
return 0;
}
在这个例子中,按照MyStruct结构中的元素顺序对其进行排序。即首先按照a的值排序,如果a相同则比较b的值,如果b也相同则比较c的值。运行结果为:
1 1.5 C 1 2.5 A 2 1.5 B 2 2.5 D