Яку складність часу (у великих позначеннях O) забезпечує специфікація ES6 для колекцій клавіш (Set, Map, WeakSet та WeakMap)?
Мої очікування, і я очікую , що від більшості розробників, є те , що специфікації і реалізації будуть використовувати широко прийняті продуктивним алгоритми, в цьому випадку Set.prototype.has
, add
і delete
для всіх бути O (1) в середньому випадку. Те саме для Map
і Weak–
еквівалентів.
Для мене не зовсім очевидно, чи була тимчасова складність реалізацій встановлена, наприклад, у специфікації мови ECMAScript 2015 - 6-е видання - 23.2 Набір об’єктів .
Якщо я не неправильно розумію це (і це, звичайно, дуже можливо), схоже, специфікація ECMA вимагає, щоб реалізації (наприклад Set.prototype.has
) використовували алгоритм лінійного часу ( O (n) ). Мені здається надзвичайно дивовижним, що специфікація не передбачає або навіть дозволить більш ефективні алгоритми, і мені було б дуже цікаво пояснити, чому це так.