#include <set>
#include <iostream>
struct KVP
{
std::string key, value;
KVP(const std::string& k, const std::string& v)
: key(k), value(v)
{
}
bool operator<(const KVP& other) const
{
return value < other.value;
}
};
int main()
{
std::set<KVP> orderedpairs;
orderedpairs.insert(KVP("key1", "z"));
orderedpairs.insert(KVP("key2", "k"));
orderedpairs.insert(KVP("key3", "b"));
for (std::set<KVP>::const_iterator it = orderedpairs.begin();
it != orderedpairs.end();
++it)
{
std::cout << "k: '" << it->key << "'\n" <<
"v: '" << it->value << "'\n";
}
}
I2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEtWUAp7CiAgICBzdGQ6OnN0cmluZyBrZXksIHZhbHVlOwoKICAgIEtWUChjb25zdCBzdGQ6OnN0cmluZyYgaywgY29uc3Qgc3RkOjpzdHJpbmcmIHYpCiAgICAgICAgOiBrZXkoayksIHZhbHVlKHYpCiAgICB7CiAgICB9CgogICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgS1ZQJiBvdGhlcikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gdmFsdWUgPCBvdGhlci52YWx1ZTsKICAgIH0KfTsKCmludCBtYWluKCkKewogICAgc3RkOjpzZXQ8S1ZQPiBvcmRlcmVkcGFpcnM7CiAgICBvcmRlcmVkcGFpcnMuaW5zZXJ0KEtWUCgia2V5MSIsICJ6IikpOwogICAgb3JkZXJlZHBhaXJzLmluc2VydChLVlAoImtleTIiLCAiayIpKTsKICAgIG9yZGVyZWRwYWlycy5pbnNlcnQoS1ZQKCJrZXkzIiwgImIiKSk7CgogICAgZm9yIChzdGQ6OnNldDxLVlA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG9yZGVyZWRwYWlycy5iZWdpbigpOwogICAgICAgICBpdCAhPSBvcmRlcmVkcGFpcnMuZW5kKCk7CiAgICAgICAgICsraXQpCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJrOiAnIiA8PCBpdC0+a2V5IDw8ICAgIidcbiIgPDwKICAgICAgICAgICAgICAgICAgICAgInY6ICciIDw8IGl0LT52YWx1ZSA8PCAiJ1xuIjsKICAgIH0KfQo=