CDictionary – library MetaTrader 5

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

  1. Each entry would have its own hash.
  2. 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).
  3. 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.
Alternative:  RSI_Rendiment - indicator MetaTrader 5
📈 ROBOTFX MetaTrader Expert Advisors and Indicators to maximize profits and minimize the risks