An implementation of the dictionary (associative array) data structure in MQL5, based on CArrayObj and CList.
Hash Function
FNV-1a
Usage
Primitives:
CDictionary *dict=new CDictionary(); //setting dict.Set<string>("costarring","liquid"); dict.Set<double>("liquid",0.1); //getting - variant 1 string variant1 = dict.Get<string>("costarring"); Print(variant1); //getting - variant 2 double variant2 = 0; dict.Get<double>("liquid",variant2); Print(variant2);
It can also store pointers to objects (but not objects or structures):
dict.Set<CObject*>("object",new CObject());
Collision Handling
- Each entry would have its own hash.
- If two or more entries share the same hash, entries are compared by key and typename. This makes it possible to store multiple entries with the same key (but different type).
- When using Set<T>, if there is already an existing entry with the same key and type, the passed value would be treated as a replacement of an existing entry (not a new one). This also applies to pointers.