A dictionary is a mapping between strings (char*) and some
(user-defined) type. An instance of a type is stored with a string as
`index' and retrieved with that string. Dictionaries are very handy for
storing objects by tags. The example should speak for itself.
The example:
// dictionary.cc
#include <hush/dictionary.h>
#include <hush/string.h>
#include <iostream.h>
// define our own class which can be used in the dictionary
class myclass
{
public:
myclass(int i) { i_ = i; }
int value() const { return i_; }
private:
int i_;
};
int main()
{
myclass a(27), b(3), c(72); // create some instances of myclass
dictionary<myclass> dict; // create an empty dictionary that
// will contain instances of myclass
// store some objects (only POINTERS are stored!)
dict["foo"] = &a;
dict["bar"] = &b;
dict["cow"] = &c;
if (!dict["apple"])
cout << "no such thing" << endl;
dict["apple"] = &c;
dict["car"] = &b;
dict["event"] = &a;
myclass* mcptr1 = dict["foo"];
myclass* mcptr2 = dict["bar"];
// retrieve some objects by name:
cout << "foo: " << mcptr1 -> value() << endl;
cout << "bar: " << mcptr2 -> value() << endl;
// print the complete dictionary:
iter<string> it = dict; // create an iterator over strings
string* strptr = 0; // pointer to myclass for iteration
myclass* mcptr = 0;
while(strptr = it())
{
mcptr = dict[*strptr];
cout << *strptr << " = " << mcptr -> value() << endl;
}
return 0;
}