21xrx.com
2024-12-22 21:32:55 Sunday
登录
文章检索 我的文章 写文章
C++自定义数据类型排序
2023-07-11 13:41:35 深夜i     --     --
C++ 自定义 数据类型 排序

C++是一门面向对象的编程语言,因此它允许用户创建自己的数据类型。对于这些自定义数据类型的排序,则需要使用C++中提供的排序算法。在本文中,我们将介绍如何使用C++自定义数据类型排序。

首先,我们需要定义一个自定义数据类型。假设我们要创建一个存储学生信息的结构体,其中包括学生姓名和学生成绩。我们可以使用如下代码定义这个结构体:


struct Student

  std::string name;

  int score;

;

这段代码中,我们用`struct`定义了一个名为`Student`的结构体,并定义了其成员变量`name`和`score`。

接着,我们需要使用一个容器存储所有的学生信息。在这里,我们可以使用`std::vector`。下面是一个例子:


std::vector<Student> students;

students.push_back("Alice");

students.push_back("Bob");

students.push_back("Charlie");

这段代码中,我们创建了一个`students`的`vector`,并添加了三个学生信息。注意,我们可以使用类似于`"Alice"`的方式来一次性初始化一个`Student`对象。

现在,我们将使用C++内置的排序算法对这个容器中的学生信息进行排序。在这里,我们使用`std::sort`函数来实现排序。`std::sort`函数接受三个参数:容器的起始迭代器、容器的结束迭代器和一个比较函数,用于定义排序规则。

对于我们的`Student`结构体,我们可以按照学生成绩从高到低排序。因此,我们可以定义一个比较函数`compare`,如下所示:


bool compare(const Student& a, const Student& b)

  return a.score > b.score;

这个函数接受两个`Student`对象,比较它们的成绩大小并返回布尔值。如果第一个学生的成绩大于第二个学生的成绩,返回`true`;否则返回`false`。

现在,我们可以使用`std::sort`函数来排序`students`容器了:


std::sort(students.begin(), students.end(), compare);

这行代码将对`students`这个容器从起始迭代器到结束迭代器(即全部内容)进行排序,排序规则由`compare`函数定义。

最后,我们可以使用一个循环将排好序的信息输出:


for (const auto& s : students)

  std::cout << s.name << " " << s.score << std::endl;

这个循环使用C++11中的范围`for`语句,遍历`students`容器中的每一个元素,并输出其姓名和成绩。

总之,C++自定义数据类型排序需要我们使用`std::sort`函数,并传入一个自定义的比较函数。以上述学生信息的例子为例,我们可以按照学生成绩进行排序。这个过程需要我们定义一个`Student`结构体、创建一个`std::vector`容器、创建一个比较函数并使用`std::sort`函数进行排序,最后输出排好序的学生信息。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复