21xrx.com
2025-03-28 16:40:30 Friday
文章检索 我的文章 写文章
C++ 结构体排序方法
2023-07-05 05:40:36 深夜i     11     0
C++ 结构体 排序方法

C++ 是一种非常强大、灵活的编程语言,它支持很多数据结构,其中结构体就是其中之一。结构体是由多个不同数据类型的变量组成的复合类型,它们在 C++ 中被广泛用于存储和组织数据。

在实际应用中,我们经常需要将结构体中的数据按照一定的规则进行排序,这样可以更好地处理数据和进行统计分析等工作。下面介绍几种 C++ 结构体排序方法。

1. 使用 STL 中的 sort 函数

在 C++ 标准库中,sort 函数可以对数组和容器中的元素进行排序,它采用快速排序算法实现。我们可以使用 sort 函数对结构体按照指定的规则进行排序,示例代码如下:

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
// 定义结构体类型
struct student
  int id;
  string name;
  int age;
;
// 自定义比较函数,按照学生 ID 进行升序排序
bool cmp(const student &a, const student &b)
  return a.id < b.id;
int main() {
  // 定义学生数组
  student arr[] = { 18, "Jerry", "Mike" };
  
  // 计算学生数组长度
  int len = sizeof(arr) / sizeof(arr[0]);
  
  // 使用 sort 函数按照学生 ID 进行升序排序
  sort(arr, arr+len, cmp);
  
  // 输出排序结果
  for (int i = 0; i < len; i++) {
    cout << "ID: " << arr[i].id << ", Name: " << arr[i].name << ", Age: " << arr[i].age << endl;
  }
  
  return 0;
}

2. 使用 std::stable_sort 函数

与 sort 函数一样,std::stable_sort 也可用于对结构体进行排序,而且它是稳定排序,可以保持相等元素的原有顺序,示例代码如下:

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
// 定义结构体类型
struct student
  int id;
  string name;
  int age;
;
// 自定义比较函数,按照学生 ID 进行升序排序
bool cmp(const student &a, const student &b)
  return a.id < b.id;
int main() {
  // 定义学生向量
  vector<student> vec = { 3, 2, 17 };
  
  // 使用 stable_sort 函数按照学生 ID 进行升序排序
  stable_sort(vec.begin(), vec.end(), cmp);
  
  // 输出排序结果
  for (auto s : vec)
    cout << "ID: " << s.id << "
  
  return 0;
}

3. 使用冒泡排序算法

冒泡排序算法是一种简单的排序算法,它可以应用于各种数据类型的排序,包括结构体。示例代码如下:

#include <iostream>
#include <string>
using namespace std;
// 定义结构体类型
struct student
  int id;
  string name;
  int age;
;
// 自定义比较函数,按照学生 ID 进行升序排序
bool cmp(const student &a, const student &b)
  return a.id < b.id;
int main() {
  // 定义学生数组
  student arr[] = { 3, 19, "Mike" };
  
  // 计算学生数组长度
  int len = sizeof(arr) / sizeof(arr[0]);
  
  // 使用冒泡排序算法按照学生 ID 进行升序排序
  for (int i = 0; i < len-1; i++) {
    for (int j = 0; j < len-i-1; j++) {
      if (arr[j].id > arr[j+1].id) {
        swap(arr[j], arr[j+1]);
      }
    }
  }
  
  // 输出排序结果
  for (int i = 0; i < len; i++) {
    cout << "ID: " << arr[i].id << ", Name: " << arr[i].name << ", Age: " << arr[i].age << endl;
  }
  
  return 0;
}

综上所述,C++ 结构体的排序方法主要有三种:使用 STL 中的 sort 函数、使用 std::stable_sort 函数,以及使用冒泡排序算法。根据实际需求和数据规模的不同,可以选择适合自己的排序方法。

  
  

评论区

请求出错了