#ifndef DICT_H
#define DICT_H
#include <fstream>
#include <string>
const int MAX_CAPACITY=100;
// The structure of a dictionary entry
class DictEntry {
public:
DictEntry(std::string, int);
friend std::ostream &operator <<(std::ostream &os, const DictEntry &entry);
std::string key;
int value;
};
class Dict {
friend std::ostream &operator <<(std::ostream &os, const Dict &dictionary);
public:
Dict();
Dict(int);
Dict(const Dict &other);
~Dict();
Dict &operator =(const Dict &other);
int get(std::string key) const;
void put(std::string key, int value);
int getSize() const {return size;}
bool contains(std::string key) const;
void sortByKey();
void sortByValue();
private:
int find(std::string key) const;
void checkCapacity();
DictEntry *entries;
int size, capacity;
};
#endif
I2lmbmRlZiBESUNUX0gKI2RlZmluZSBESUNUX0gKCiNpbmNsdWRlIDxmc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKY29uc3QgaW50IE1BWF9DQVBBQ0lUWT0xMDA7Ci8vIFRoZSBzdHJ1Y3R1cmUgb2YgYSBkaWN0aW9uYXJ5IGVudHJ5CmNsYXNzIERpY3RFbnRyeSB7CnB1YmxpYzoKCURpY3RFbnRyeShzdGQ6OnN0cmluZywgaW50KTsKCWZyaWVuZCBzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yIDw8KHN0ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IERpY3RFbnRyeSAmZW50cnkpOwoJc3RkOjpzdHJpbmcga2V5OwoJaW50IHZhbHVlOwp9OwoKY2xhc3MgRGljdCB7CglmcmllbmQgc3RkOjpvc3RyZWFtICZvcGVyYXRvciA8PChzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBEaWN0ICZkaWN0aW9uYXJ5KTsKcHVibGljOgoJRGljdCgpOwoJRGljdChpbnQpOwoJRGljdChjb25zdCBEaWN0ICZvdGhlcik7Cgl+RGljdCgpOwoJRGljdCAmb3BlcmF0b3IgPShjb25zdCBEaWN0ICZvdGhlcik7CglpbnQgZ2V0KHN0ZDo6c3RyaW5nIGtleSkgY29uc3Q7Cgl2b2lkIHB1dChzdGQ6OnN0cmluZyBrZXksIGludCB2YWx1ZSk7CglpbnQgZ2V0U2l6ZSgpIGNvbnN0IHtyZXR1cm4gc2l6ZTt9Cglib29sIGNvbnRhaW5zKHN0ZDo6c3RyaW5nIGtleSkgY29uc3Q7Cgl2b2lkIHNvcnRCeUtleSgpOwoJdm9pZCBzb3J0QnlWYWx1ZSgpOwpwcml2YXRlOgoJaW50IGZpbmQoc3RkOjpzdHJpbmcga2V5KSBjb25zdDsKCXZvaWQgY2hlY2tDYXBhY2l0eSgpOwoJRGljdEVudHJ5ICplbnRyaWVzOwoJaW50IHNpemUsIGNhcGFjaXR5Owp9OwoKI2VuZGlm