#include <iostream>
#include <map>
using namespace std;
struct _tagTest{
int x{0};
int y{0};
struct comp{
bool operator()(const _tagTest& _lhs, const _tagTest& _rhs) const
{
if (_lhs.x == _rhs.x && _lhs.y == _rhs.y)
return false;
else if (_lhs.x < _rhs.x || _lhs.y < _rhs.y)
return true;
return false;
}
};
};
int main() {
std::map<_tagTest, int, _tagTest::comp> mapTest;
++mapTest[{1, 2}];
++mapTest[{1, 2}];
++mapTest[{1, 3}];
++mapTest[{1, 3}];
++mapTest[{1, 3}];
++mapTest[{2, 3}];
++mapTest[{2, 1}];
std::map<_tagTest, int, _tagTest::comp>::iterator itMap = mapTest.begin();
for (; itMap != mapTest.end(); ++itMap)
{
std::cout << itMap->first.x << " " << itMap->first.y << ":" << itMap->second << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IF90YWdUZXN0ewoJaW50IHh7MH07CglpbnQgeXswfTsKCQoJc3RydWN0IGNvbXB7CgkJYm9vbCBvcGVyYXRvcigpKGNvbnN0IF90YWdUZXN0JiBfbGhzLCBjb25zdCBfdGFnVGVzdCYgX3JocykgY29uc3QKCQl7CgkJCWlmIChfbGhzLnggPT0gX3Jocy54ICYmIF9saHMueSA9PSBfcmhzLnkpCgkJCQlyZXR1cm4gZmFsc2U7CgkJCWVsc2UgaWYgKF9saHMueCA8IF9yaHMueCB8fCBfbGhzLnkgPCBfcmhzLnkpCgkJCQlyZXR1cm4gdHJ1ZTsKCQkJCgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9Owp9OwoKaW50IG1haW4oKSB7CglzdGQ6Om1hcDxfdGFnVGVzdCwgaW50LCBfdGFnVGVzdDo6Y29tcD4gbWFwVGVzdDsKCSsrbWFwVGVzdFt7MSwgMn1dOwoJKyttYXBUZXN0W3sxLCAyfV07CgkrK21hcFRlc3RbezEsIDN9XTsKCSsrbWFwVGVzdFt7MSwgM31dOwoJKyttYXBUZXN0W3sxLCAzfV07CgkrK21hcFRlc3RbezIsIDN9XTsKCSsrbWFwVGVzdFt7MiwgMX1dOwoJc3RkOjptYXA8X3RhZ1Rlc3QsIGludCwgX3RhZ1Rlc3Q6OmNvbXA+OjppdGVyYXRvciBpdE1hcCA9IG1hcFRlc3QuYmVnaW4oKTsKCWZvciAoOyBpdE1hcCAhPSBtYXBUZXN0LmVuZCgpOyArK2l0TWFwKQoJewoJCXN0ZDo6Y291dCA8PCBpdE1hcC0+Zmlyc3QueCA8PCAiICIgPDwgaXRNYXAtPmZpcnN0LnkgPDwgIjoiIDw8IGl0TWFwLT5zZWNvbmQgPDwgc3RkOjplbmRsOwoJfQoJcmV0dXJuIDA7Cn0=