Vladimir Nadulich
1. то что массив отсортирован, а соответствие нет - это заложенные свойства, а не достоинства/недостатки.
2. почему добавление ключа в соответствие тяжелая операция? не уверен как внутри ведет себя 1с... хэш ключа, адрес? из какого языка пришла такая инфа?
3. про какой двоичный поиск речь? по идее у объекта должен уже быть айди/адрес, по нему получаем пару.
4. ну бред же... Какой поиск по индексу, если индекс обычно не известен и везде в коде видим Массив.Найти()?
Про какую задачу идет речь понять не могу, где массив будет выгоден? Там где не нужно соответствие - да. А если нужно? А если нужен быстрый поиск по ключу? Приведите пример алгоритма, хоть намекните или опишите решение с помощью массива моего примера задачи выше.
Еще раз сформулирую наиболее часто встречающуюся Задачу, в которую любят лепить массив:
- перебрать коллекцию 10000 элементов, что-то с ними сделать, но при этом выполнить проверку (исключить) вхождения элемента в некую другую коллекцию из N элементов.
Так вот, если вторую коллекцию запихать в массив и проверку выполнять как М.Найти(), то это фактически еще один вложенный цикл. Выполнение будет условно в N раз дольше, чем с помощью словаря-соотвествия. Куда тут индексы массива пристроить?
ну на счет стоимости вставки нового элемента, надо протестировать. Я говорил в теории, смотрите, если вам надо добавтиь новый элемент в массив, вам нужно просто в худшем случае выделить память по уже известному адресу (последний элемент массива), тогда как при добавлении в соответствие, вам надо сначала найти тот элемент, который будет меньше текущего, и затем уже выполнить выделение памяти (если требуется). то есть массив это просто добавление, а соотвествие это поиск+добавление. Может быть я ошибаюсь конечно и коллеги меня поправят.