#include <cstring>
class Item
{
private:
int id;
char name[32];
public:
Item(const int id = 0, const char *name = nullptr)
{
this->id = id;
if(!name)
::strcpy(this->name, "");
else
::strcpy(this->name, name);
}
const int getId() const
{
return id;
}
const char* getName() const
{
return name;
}
bool operator<(const Item another) const
{
return this->id < another.id;
}
bool operator>(const Item another) const
{
return this->id > another.id;
}
};
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
typedef vector<Item> ItemVector;
int main(int argc, char **argv)
{
ItemVector itemVector;
itemVector.push_back(Item(2, "アイテム2"));
itemVector.push_back(Item(4, "アイテム4"));
itemVector.push_back(Item(1, "アイテム1"));
itemVector.push_back(Item(3, "アイテム3"));
itemVector.push_back(Item(0, "アイテム0"));
stable_sort(itemVector.begin(), itemVector.end(), [](const Item& a, const Item& b) { return a < b; } );
for(ItemVector::iterator iter = itemVector.begin();
iter != itemVector.end();
++iter) {
printf("%d: %s\n", iter->getId(), iter->getName());
}
return 0;
}
I2luY2x1ZGUgPGNzdHJpbmc+CmNsYXNzIEl0ZW0Kewpwcml2YXRlOgogICAgaW50IGlkOwogICAgY2hhciBuYW1lWzMyXTsKIApwdWJsaWM6CiAgICBJdGVtKGNvbnN0IGludCBpZCA9IDAsIGNvbnN0IGNoYXIgKm5hbWUgPSBudWxscHRyKQogICAgewogICAgICAgIHRoaXMtPmlkID0gaWQ7CiAgICAgICAgCiAgICAgICAgaWYoIW5hbWUpCiAgICAgICAgICAgIDo6c3RyY3B5KHRoaXMtPm5hbWUsICIiKTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIDo6c3RyY3B5KHRoaXMtPm5hbWUsIG5hbWUpOwogICAgfQogICAgCiAgICBjb25zdCBpbnQgZ2V0SWQoKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBpZDsKICAgIH0KICAgIAogICAgY29uc3QgY2hhciogZ2V0TmFtZSgpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIG5hbWU7CiAgICB9CiAgICAKICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IEl0ZW0gYW5vdGhlcikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gdGhpcy0+aWQgPCBhbm90aGVyLmlkOwogICAgfQogICAgCiAgICBib29sIG9wZXJhdG9yPihjb25zdCBJdGVtIGFub3RoZXIpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIHRoaXMtPmlkID4gYW5vdGhlci5pZDsKICAgIH0KfTsKIAojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgdmVjdG9yPEl0ZW0+IEl0ZW1WZWN0b3I7CiAKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQp7CiAgICBJdGVtVmVjdG9yIGl0ZW1WZWN0b3I7CiAgICAKICAgIGl0ZW1WZWN0b3IucHVzaF9iYWNrKEl0ZW0oMiwgIuOCouOCpOODhuODoDIiKSk7CiAgICBpdGVtVmVjdG9yLnB1c2hfYmFjayhJdGVtKDQsICLjgqLjgqTjg4bjg6A0IikpOwogICAgaXRlbVZlY3Rvci5wdXNoX2JhY2soSXRlbSgxLCAi44Ki44Kk44OG44OgMSIpKTsKICAgIGl0ZW1WZWN0b3IucHVzaF9iYWNrKEl0ZW0oMywgIuOCouOCpOODhuODoDMiKSk7CiAgICBpdGVtVmVjdG9yLnB1c2hfYmFjayhJdGVtKDAsICLjgqLjgqTjg4bjg6AwIikpOwogICAgCiAgICBzdGFibGVfc29ydChpdGVtVmVjdG9yLmJlZ2luKCksIGl0ZW1WZWN0b3IuZW5kKCksIFtdKGNvbnN0IEl0ZW0mIGEsIGNvbnN0IEl0ZW0mIGIpIHsgcmV0dXJuIGEgPCBiOyB9ICk7CiAgICAKICAgIGZvcihJdGVtVmVjdG9yOjppdGVyYXRvciBpdGVyID0gaXRlbVZlY3Rvci5iZWdpbigpOwogICAgICAgIGl0ZXIgIT0gaXRlbVZlY3Rvci5lbmQoKTsKICAgICAgICArK2l0ZXIpIHsKICAgICAgICBwcmludGYoIiVkOiAlc1xuIiwgaXRlci0+Z2V0SWQoKSwgaXRlci0+Z2V0TmFtZSgpKTsKICAgIH0KICAgIAogICAgcmV0dXJuIDA7Cn0=