#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
#include <list>
#include <algorithm>
#include <string>
class Hero
{
public:
Hero(int age, int height, string name)
{
this->m_name = name;
this->m_age = age;
this->m_height = height;
}
int m_age;
int m_height;
string m_name;
/* overloading operator == */
bool operator==(const Hero &h) const
{
return m_age == h.m_age && m_name == h.m_name && m_height == h.m_height;
}
};
void printList(list<Hero> &L)
{
for (list<Hero>::iterator it = L.begin(); it != L.end(); it++)
{
cout << "姓名:" << (*it).m_name << "|年齡:" << (it)->m_age << "|身高:" << (it)->m_height << endl;
}
}
bool listCompare(Hero &h1, Hero &h2)
{
if (h1.m_age == h2.m_age)
{
return h1.m_height > h2.m_height;
}
return h1.m_age < h2.m_age;
}
void test01()
{
list<Hero> L;
Hero h1(24, 165, "關羽");
Hero h2(35, 175, "劉備");
Hero h3(29, 188, "張飛");
Hero h4(46, 167, "趙雲");
Hero h5(17, 182, "孔明");
L.push_back(h1);
L.push_back(h2);
L.push_back(h3);
L.push_back(h4);
L.push_back(h5);
printList(L);
printf("---------------\n");
L.sort(listCompare);
printList(L);
printf("---------------\n");
L.remove(h4);
}
int main(int argc, char const *argv[])
{
system("clear");
test01();
return 0;
}
I2RlZmluZSBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUwojaW5jbHVkZSA8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNpbmNsdWRlIDxsaXN0PgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8c3RyaW5nPgoKY2xhc3MgSGVybwp7CnB1YmxpYzoKICAgIEhlcm8oaW50IGFnZSwgaW50IGhlaWdodCwgc3RyaW5nIG5hbWUpCiAgICB7CiAgICAgICAgdGhpcy0+bV9uYW1lID0gbmFtZTsKICAgICAgICB0aGlzLT5tX2FnZSA9IGFnZTsKICAgICAgICB0aGlzLT5tX2hlaWdodCA9IGhlaWdodDsKICAgIH0KICAgIGludCBtX2FnZTsKICAgIGludCBtX2hlaWdodDsKICAgIHN0cmluZyBtX25hbWU7CiAgICAvKiBvdmVybG9hZGluZyBvcGVyYXRvciA9PSAqLwogICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEhlcm8gJmgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG1fYWdlID09IGgubV9hZ2UgJiYgbV9uYW1lID09IGgubV9uYW1lICYmIG1faGVpZ2h0ID09IGgubV9oZWlnaHQ7CiAgICB9Cn07Cgp2b2lkIHByaW50TGlzdChsaXN0PEhlcm8+ICZMKQp7CiAgICBmb3IgKGxpc3Q8SGVybz46Oml0ZXJhdG9yIGl0ID0gTC5iZWdpbigpOyBpdCAhPSBMLmVuZCgpOyBpdCsrKQogICAgewogICAgICAgIGNvdXQgPDwgIuWnk+WQje+8miIgPDwgKCppdCkubV9uYW1lIDw8ICJ85bm06b2h77yaIiA8PCAoaXQpLT5tX2FnZSA8PCAifOi6q+mrmO+8miIgPDwgKGl0KS0+bV9oZWlnaHQgPDwgZW5kbDsKICAgIH0KfQoKYm9vbCBsaXN0Q29tcGFyZShIZXJvICZoMSwgSGVybyAmaDIpCnsKICAgIGlmIChoMS5tX2FnZSA9PSBoMi5tX2FnZSkKICAgIHsKICAgICAgICByZXR1cm4gaDEubV9oZWlnaHQgPiBoMi5tX2hlaWdodDsKICAgIH0KCiAgICByZXR1cm4gaDEubV9hZ2UgPCBoMi5tX2FnZTsKfQoKdm9pZCB0ZXN0MDEoKQp7CiAgICBsaXN0PEhlcm8+IEw7CiAgICBIZXJvIGgxKDI0LCAxNjUsICLpl5znvr0iKTsKICAgIEhlcm8gaDIoMzUsIDE3NSwgIuWKieWCmSIpOwogICAgSGVybyBoMygyOSwgMTg4LCAi5by16aObIik7CiAgICBIZXJvIGg0KDQ2LCAxNjcsICLotpnpm7IiKTsKICAgIEhlcm8gaDUoMTcsIDE4MiwgIuWtlOaYjiIpOwoKICAgIEwucHVzaF9iYWNrKGgxKTsKICAgIEwucHVzaF9iYWNrKGgyKTsKICAgIEwucHVzaF9iYWNrKGgzKTsKICAgIEwucHVzaF9iYWNrKGg0KTsKICAgIEwucHVzaF9iYWNrKGg1KTsKCiAgICBwcmludExpc3QoTCk7CgogICAgcHJpbnRmKCItLS0tLS0tLS0tLS0tLS1cbiIpOwoKICAgIEwuc29ydChsaXN0Q29tcGFyZSk7CgogICAgcHJpbnRMaXN0KEwpOwoKICAgIHByaW50ZigiLS0tLS0tLS0tLS0tLS0tXG4iKTsKCiAgICBMLnJlbW92ZShoNCk7Cn0KCmludCBtYWluKGludCBhcmdjLCBjaGFyIGNvbnN0ICphcmd2W10pCnsKICAgIHN5c3RlbSgiY2xlYXIiKTsKICAgIHRlc3QwMSgpOwogICAgcmV0dXJuIDA7Cn0K