Mql5 и списки: CMap, CVector, CStack.. - страница 2

 

Сейчас посмотрел коллекцию и понял, что во всех представленных классах нет перечислителей, т.е. достать конкретный элемент можно, а вот перебрать коллекции - нет. Это весьма странно. Хотя может быть я плохо их искал?

 
Vasiliy Sokolov:

С чего Вы взяли, что CHashMap базируется на красно-черном дереве?

Сейчас проверил ядро CHashMap. Коллекция хранит пары ключ-значение в массиве m_entries:

Непосредственно ядро функционала находится в методе Insert:

Из кода видно, что делается попытка угадать индекс по его хешу:

Если один и тот же хеш имеет несколько элементов, делается их перебор:

... и уже каждый из этих элементов сравнивается с образчиком непосредственно:

 Т.е. никакого красно-черного дерева здесь нет.

Зашибись, выходит CHashMap отдельно есть.

Только уже поздно, я stl присобачил и его юзаю. :)


Vasiliy Sokolov:

Сейчас посмотрел коллекцию и понял, что во всех представленных классах нет перечислителей, т.е. достать конкретный элемент можно, а вот перебрать коллекции - нет.

Там много спорных моментов. Лично мне такой код не нравится.

На моей прошлой работе, такой код не прошёл бы ревью.


 
Ivan Gurov:

Там много спорных моментов. Лично мне такой код не нравится.

На моей прошлой работе, такой код не прошёл бы ревью.

Создал специальную ветку посвященную Generic-классам. Если есть желание, можете присоединиться туда и продолжим обсуждение.

 
Vasiliy Sokolov:

Ура! Долгожданное обновление!

Когда сделаете множественное наследование интерфейсов? Сейчас, простите, это фейк в MQL, т.к. интерфейсы описывают контракт и ничего более, и по определению не могут являться еще одной версией наследования, так как это выполнено сейчас в MQL.

Никто не знает множественное наследование интерфейсов будет? Если да, то когда? 

 
Alexey Rassvetnyy:

Никто не знает множественное наследование интерфейсов будет? Если да, то когда? 

А кто может знать кроме непосредственных разработчиков?
 
Dmitriy Skub:
А кто может знать кроме непосредственных разработчиков?

Этот вопрос еще лет пять назад задавался. Пока вообще непонятно, зачем нужны такие интерфейсы.

 
Renat Fatkhullin:

Посмотрите Generic библиотеку для примитивов в последней бете:


Спасибо за эти классы! 

Сегодня пригодился CQueue

Иван, а вам хочется сказать, что когда на меня нападает подобное настроение, то на помощь приходит пункт 4.1 и 4.2 ))