#include <iostream>
class MyMap
{
public:
MyMap();
void debug();
private:
int INIT_N_BUCKETS;
struct key_val_pair {
int key;
int value;
key_val_pair * next;
};
typedef key_val_pair ** bucketArray;
bucketArray createBucketArray(int nBuckets);
bucketArray buckets;
int nBuckets;
int nElems;
};
MyMap::MyMap()
:
INIT_N_BUCKETS(128),
buckets(createBucketArray(INIT_N_BUCKETS)),
nBuckets(INIT_N_BUCKETS),
nElems(0)
{ }
MyMap::bucketArray MyMap::createBucketArray(int nBuckets)
{
bucketArray newBuckets = new key_val_pair*[nBuckets];
for (int i = 0; i < nBuckets; i++)
newBuckets[i] = nullptr;
return newBuckets;
}
void MyMap::debug()
{
for (int i = 0; i < INIT_N_BUCKETS; i++)
std::cout << buckets[i] << ' ';
std::cout << '\n';
}
int main()
{
MyMap mymap;
mymap.debug();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgTXlNYXAKewogICAgcHVibGljOgogICAgICAgIE15TWFwKCk7CgogICAgICAgIHZvaWQgZGVidWcoKTsKCiAgICBwcml2YXRlOgogICAgICAgIGludCBJTklUX05fQlVDS0VUUzsKCiAgICAgICAgc3RydWN0IGtleV92YWxfcGFpciB7CiAgICAgICAgICAgIGludCBrZXk7CiAgICAgICAgICAgIGludCB2YWx1ZTsKICAgICAgICAgICAga2V5X3ZhbF9wYWlyICogbmV4dDsKICAgICAgICB9OwoKICAgICAgICB0eXBlZGVmIGtleV92YWxfcGFpciAqKiBidWNrZXRBcnJheTsKCgogICAgICAgIGJ1Y2tldEFycmF5IGNyZWF0ZUJ1Y2tldEFycmF5KGludCBuQnVja2V0cyk7CiAgICAgICAgYnVja2V0QXJyYXkgYnVja2V0czsKCiAgICAgICAgaW50IG5CdWNrZXRzOwogICAgICAgIGludCBuRWxlbXM7Cn07CgpNeU1hcDo6TXlNYXAoKQogICAgOgogICAgSU5JVF9OX0JVQ0tFVFMoMTI4KSwKICAgIGJ1Y2tldHMoY3JlYXRlQnVja2V0QXJyYXkoSU5JVF9OX0JVQ0tFVFMpKSwKICAgIG5CdWNrZXRzKElOSVRfTl9CVUNLRVRTKSwKICAgIG5FbGVtcygwKQp7IH0KCk15TWFwOjpidWNrZXRBcnJheSBNeU1hcDo6Y3JlYXRlQnVja2V0QXJyYXkoaW50IG5CdWNrZXRzKQp7CiAgICBidWNrZXRBcnJheSBuZXdCdWNrZXRzID0gbmV3IGtleV92YWxfcGFpcipbbkJ1Y2tldHNdOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbkJ1Y2tldHM7IGkrKykKICAgICAgICBuZXdCdWNrZXRzW2ldID0gbnVsbHB0cjsKCiAgICByZXR1cm4gbmV3QnVja2V0czsKfQoKdm9pZCBNeU1hcDo6ZGVidWcoKQp7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IElOSVRfTl9CVUNLRVRTOyBpKyspCiAgICAgICAgc3RkOjpjb3V0IDw8IGJ1Y2tldHNbaV0gPDwgJyAnOwogICAgc3RkOjpjb3V0IDw8ICdcbic7Cn0KCmludCBtYWluKCkKewogICAgTXlNYXAgbXltYXA7CiAgICBteW1hcC5kZWJ1ZygpOwogICAgcmV0dXJuIDA7Cn0K