You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++中对存储staff类对象的vector按ID排序并输出结果?

按ID排序vector<staff>并输出的实现方案

嘿,这事儿很容易搞定,我给你两种常用的实现方式,你可以根据需求选:

1. 先补全staff类的基础定义

首先咱们得把staff类的结构补全,至少要有构造函数(方便快速初始化vector里的对象),以及一个辅助打印的函数:

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>

using namespace std;

class staff {
public:
    int ID;
    string Name;
    string Class;

    // 构造函数,用于直接初始化staff对象
    staff(int id, string name, string cls) : ID(id), Name(name), Class(cls) {}
};

// 辅助函数:批量打印vector中所有staff的信息
void printStaff(const vector<staff>& s) {
    for (const auto& member : s) {
        cout << "ID: " << member.ID << ", Name: " << member.Name << ", Class: " << member.Class << endl;
    }
}

2. 方法一:重载<运算符(适合固定按ID排序的场景)

如果你的程序里大部分排序需求都是按ID来,直接给staff类重载<运算符是最省心的——这样sort函数可以直接使用默认规则:

// 在staff类外部重载<运算符,指定按ID升序比较
bool operator<(const staff& a, const staff& b) {
    return a.ID < b.ID; // 要是需要降序排序,改成`a.ID > b.ID`即可
}

int main() {
    vector<staff> s = { {234, "Mark", "biology"}, {3455, "Mitch", "English"}, {1234, "Hen", "Maths"} };

    cout << "排序前:" << endl;
    printStaff(s);

    // 直接调用sort,默认用重载的<运算符做比较
    sort(s.begin(), s.end());

    cout << "\n排序后:" << endl;
    printStaff(s);

    return 0;
}

3. 方法二:用Lambda表达式(灵活适配临时排序需求)

如果只是这次需要按ID排序,后续可能要切换其他字段排序,用Lambda表达式传给sort会更灵活,不用修改类的定义:

int main() {
    vector<staff> s = { {234, "Mark", "biology"}, {3455, "Mitch", "English"}, {1234, "Hen", "Maths"} };

    cout << "排序前:" << endl;
    printStaff(s);

    // 用Lambda表达式直接指定排序规则:按ID升序
    sort(s.begin(), s.end(), [](const staff& a, const staff& b) {
        return a.ID < b.ID; // 降序的话改成`a.ID > b.ID`
    });

    cout << "\n排序后:" << endl;
    printStaff(s);

    return 0;
}

最终输出结果

不管用哪种方法,运行后都会得到如下输出:

排序前:
ID: 234, Name: Mark, Class: biology
ID: 3455, Name: Mitch, Class: English
ID: 1234, Name: Hen, Class: Maths

排序后:
ID: 234, Name: Mark, Class: biology
ID: 1234, Name: Hen, Class: Maths
ID: 3455, Name: Mitch, Class: English

内容的提问来源于stack exchange,提问作者ibrahimovich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 13:29:11