#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
using namespace std;
struct tovar {
tovar()
{}
tovar(int a, const char *b, const char *n) :
amt(a),
brand(b),
name(n)
{}
int amt;
string brand;
string name;
};
bool cmp_by_amt(const tovar &l, const tovar &r)
{ return l.amt < r.amt; }
bool cmp_by_brand(const tovar &l, const tovar &r)
{ return l.brand < r.brand; }
bool cmp_by_name(const tovar &l, const tovar &r)
{ return l.name < r.name; }
ostream &operator<<(ostream &o, const tovar &tov)
{
o << "count = " << tov.amt << endl;
o << "brand = " << tov.brand << endl;
o << "name = " << tov.name << endl;
return o;
}
int main()
{
vector<tovar> vtovar;
vtovar.push_back(tovar(1, "aaa", "eee"));
vtovar.push_back(tovar(2, "bbb", "ddd"));
vtovar.push_back(tovar(3, "ccc", "ccc"));
vtovar.push_back(tovar(4, "ddd", "bbb"));
vtovar.push_back(tovar(5, "eee", "aaa"));
cout << "sort by name" << endl;
sort(vtovar.begin(), vtovar.end(), cmp_by_name);
copy(vtovar.begin(), vtovar.end(), ostream_iterator<tovar>(cout, "\n"));
cout << "sort by brand" << endl;
sort(vtovar.begin(), vtovar.end(), cmp_by_brand);
copy(vtovar.begin(), vtovar.end(), ostream_iterator<tovar>(cout, "\n"));
cout << "sort by amt" << endl;
sort(vtovar.begin(), vtovar.end(), cmp_by_amt);
copy(vtovar.begin(), vtovar.end(), ostream_iterator<tovar>(cout, "\n"));
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8aXRlcmF0b3I+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IHRvdmFyIHsKICAgIHRvdmFyKCkKCXt9CgoJdG92YXIoaW50IGEsIGNvbnN0IGNoYXIgKmIsIGNvbnN0IGNoYXIgKm4pIDoKCQlhbXQoYSksCgkJYnJhbmQoYiksCgkJbmFtZShuKQoJe30KCQoJaW50IGFtdDsKCXN0cmluZyBicmFuZDsKCXN0cmluZyBuYW1lOwp9OwoKYm9vbCBjbXBfYnlfYW10KGNvbnN0IHRvdmFyICZsLCBjb25zdCB0b3ZhciAmcikKeyByZXR1cm4gbC5hbXQgPCByLmFtdDsgfQoKYm9vbCBjbXBfYnlfYnJhbmQoY29uc3QgdG92YXIgJmwsIGNvbnN0IHRvdmFyICZyKQp7IHJldHVybiBsLmJyYW5kIDwgci5icmFuZDsgfQoKYm9vbCBjbXBfYnlfbmFtZShjb25zdCB0b3ZhciAmbCwgY29uc3QgdG92YXIgJnIpCnsgcmV0dXJuIGwubmFtZSA8IHIubmFtZTsgfQoKb3N0cmVhbSAmb3BlcmF0b3I8PChvc3RyZWFtICZvLCBjb25zdCB0b3ZhciAmdG92KQp7CglvIDw8ICJjb3VudCA9ICIgPDwgdG92LmFtdCA8PCBlbmRsOwoJbyA8PCAiYnJhbmQgPSAiIDw8IHRvdi5icmFuZCA8PCBlbmRsOwoJbyA8PCAibmFtZSA9ICIgPDwgdG92Lm5hbWUgPDwgZW5kbDsKCXJldHVybiBvOwp9CiAKaW50IG1haW4oKQp7Cgl2ZWN0b3I8dG92YXI+IHZ0b3ZhcjsKCgl2dG92YXIucHVzaF9iYWNrKHRvdmFyKDEsICJhYWEiLCAiZWVlIikpOwoJdnRvdmFyLnB1c2hfYmFjayh0b3ZhcigyLCAiYmJiIiwgImRkZCIpKTsKCXZ0b3Zhci5wdXNoX2JhY2sodG92YXIoMywgImNjYyIsICJjY2MiKSk7Cgl2dG92YXIucHVzaF9iYWNrKHRvdmFyKDQsICJkZGQiLCAiYmJiIikpOwoJdnRvdmFyLnB1c2hfYmFjayh0b3Zhcig1LCAiZWVlIiwgImFhYSIpKTsKCgljb3V0IDw8ICJzb3J0IGJ5IG5hbWUiIDw8IGVuZGw7Cglzb3J0KHZ0b3Zhci5iZWdpbigpLCB2dG92YXIuZW5kKCksIGNtcF9ieV9uYW1lKTsKCWNvcHkodnRvdmFyLmJlZ2luKCksIHZ0b3Zhci5lbmQoKSwgb3N0cmVhbV9pdGVyYXRvcjx0b3Zhcj4oY291dCwgIlxuIikpOwoKCWNvdXQgPDwgInNvcnQgYnkgYnJhbmQiIDw8IGVuZGw7Cglzb3J0KHZ0b3Zhci5iZWdpbigpLCB2dG92YXIuZW5kKCksIGNtcF9ieV9icmFuZCk7Cgljb3B5KHZ0b3Zhci5iZWdpbigpLCB2dG92YXIuZW5kKCksIG9zdHJlYW1faXRlcmF0b3I8dG92YXI+KGNvdXQsICJcbiIpKTsKCgljb3V0IDw8ICJzb3J0IGJ5IGFtdCIgPDwgZW5kbDsKCXNvcnQodnRvdmFyLmJlZ2luKCksIHZ0b3Zhci5lbmQoKSwgY21wX2J5X2FtdCk7Cgljb3B5KHZ0b3Zhci5iZWdpbigpLCB2dG92YXIuZW5kKCksIG9zdHJlYW1faXRlcmF0b3I8dG92YXI+KGNvdXQsICJcbiIpKTsKCiAgICByZXR1cm4gMDsKfQ==