#include #include #include #include #include #include #include

using namespace std;

class Dog { public: Dog(string na, int age = 0) { m_name = na; m_age = age; } // bool operator >() void show() { cout << "dog " << m_name << " age = " << m_age << endl; } private: string m_name; int m_age; friend bool cmp_name(const Dog &dg1, const Dog &dg2); };

bool cmp_name(const Dog &dg1, const Dog &dg2) { return dg1.m_name < dg2.m_name; }

int main() { list lst; Dog wc("wc", 1); Dog ah("ah", 5); Dog lf("lf", 2); Dog xhh("xhh", 4); lst.push_back(wc); lst.push_front(ah); lst.push_front(lf); lst.push_front(xhh); list::iterator iter = lst.begin(); lst.sort(cmp_name); for(iter = lst.begin(); iter != lst.end(); iter++) { //(*iter).show(); iter->show(); } return 0; }

// 解释每一行内容 // #include // 包含输入输出流的头文件 // #include // 包含向量容器的头文件 // #include // 包含堆栈容器的头文件 // #include // 包含队列容器的头文件 // #include // 包含链表容器的头文件 // #include // 包含映射容器的头文件 // #include // 包含算法库的头文件

// using namespace std; // 使用标准命名空间

// class Dog // 定义了一个类Dog // { // public: // Dog(string na, int age = 0) { // 类的构造函数,初始化对象的成员变量 // m_name = na; // m_age = age; // } // void show() { // 成员函数,打印对象的信息 // cout << "dog " << m_name << " age = " << m_age << endl; // } // private: // string m_name; // 成员变量,狗的名字 // int m_age; // 成员变量,狗的年龄 // friend bool cmp_name(const Dog &dg1, const Dog &dg2); // 声明一个友元函数 // };

// bool cmp_name(const Dog &dg1, const Dog &dg2) // 定义了一个比较函数,用于排序 // { // return dg1.m_name < dg2.m_name; // }

// int main() // 主函数 // { // list lst; // 创建了一个链表容器lst // Dog wc("wc", 1); // 创建了一个狗对象wc,名字为"wc",年龄为1 // Dog ah("ah", 5); // 创建了一个狗对象ah,名字为"ah",年龄为5 // Dog lf("lf", 2); // 创建了一个狗对象lf,名字为"lf",年龄为2 // Dog xhh("xhh", 4); // 创建了一个狗对象xhh,名字为"xhh",年龄为4 // lst.push_back(wc); // 将狗对象wc添加到链表容器lst的末尾 // lst.push_front(ah); // 将狗对象ah添加到链表容器lst的开头 // lst.push_front(lf); // 将狗对象lf添加到链表容器lst的开头 // lst.push_front(xhh); // 将狗对象xhh添加到链表容器lst的开头 // list::iterator iter = lst.begin(); // 创建了一个链表迭代器iter,指向链表容器lst的开头 // lst.sort(cmp_name); // 对链表容器lst进行排序,使用cmp_name函数进行比较 // for(iter = lst.begin(); iter != lst.end(); iter++) { // 遍历链表容器lst中的元素 // iter->show(); // 调用成员函数show()打印当前元素的信息 // } // return 0; // 返回0表示程序正常结束 // }

C++ 链表容器排序示例 - 使用自定义比较函数

原文地址: http://www.cveoy.top/t/topic/quu3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录