#include <algorithm>
#include <iostream>
#include <string>
#include <map>

using UINT = unsigned int;

struct AsnObjectIdentifier
{
    UINT   idLength;
    UINT * ids;
};

struct AsnObjectIdentifierComparator
{
    bool operator()(const AsnObjectIdentifier& lhs, const AsnObjectIdentifier& rhs) const
    {
        return std::lexicographical_compare(lhs.ids, lhs.ids + lhs.idLength,
                                            rhs.ids, rhs.ids + rhs.idLength);
    }
};

using MibMap = std::map<AsnObjectIdentifier, std::string, AsnObjectIdentifierComparator>;


int main()
{
    UINT expectedOID1ids[] = { 1, 3, 6, 1, 1, 1, 2, 1 };
    AsnObjectIdentifier expectedOID1 = { 8, expectedOID1ids };
    MibMap map{{expectedOID1, "present"}};

    std::cout << map.size() << std::endl;

    if (map.find(expectedOID1) == map.end()) {
        std::cout << "Not found" << std::endl;
    } else {
        std::cout << "Found" << std::endl;
    }
}