import TreeContainer from './Base'; import TreeIterator from './Base/TreeIterator'; import { TreeNode } from './Base/TreeNode'; import { initContainer, IteratorType } from "../ContainerBase"; declare class OrderedMapIterator extends TreeIterator { container: OrderedMap; constructor(node: TreeNode, header: TreeNode, container: OrderedMap, iteratorType?: IteratorType); get pointer(): [K, V]; copy(): OrderedMapIterator; equals(iter: OrderedMapIterator): boolean; } export type { OrderedMapIterator }; declare class OrderedMap extends TreeContainer { /** * @param container - The initialization container. * @param cmp - The compare function. * @param enableIndex - Whether to enable iterator indexing function. * @example * new OrderedMap(); * new OrderedMap([[0, 1], [2, 1]]); * new OrderedMap([[0, 1], [2, 1]], (x, y) => x - y); * new OrderedMap([[0, 1], [2, 1]], (x, y) => x - y, true); */ constructor(container?: initContainer<[K, V]>, cmp?: (x: K, y: K) => number, enableIndex?: boolean); begin(): OrderedMapIterator; end(): OrderedMapIterator; rBegin(): OrderedMapIterator; rEnd(): OrderedMapIterator; front(): [K, V] | undefined; back(): [K, V] | undefined; lowerBound(key: K): OrderedMapIterator; upperBound(key: K): OrderedMapIterator; reverseLowerBound(key: K): OrderedMapIterator; reverseUpperBound(key: K): OrderedMapIterator; /** * @description Insert a key-value pair or set value by the given key. * @param key - The key want to insert. * @param value - The value want to set. * @param hint - You can give an iterator hint to improve insertion efficiency. * @return The size of container after setting. * @example * const mp = new OrderedMap([[2, 0], [4, 0], [5, 0]]); * const iter = mp.begin(); * mp.setElement(1, 0); * mp.setElement(3, 0, iter); // give a hint will be faster. */ setElement(key: K, value: V, hint?: OrderedMapIterator): number; find(key: K): OrderedMapIterator; /** * @description Get the value of the element of the specified key. * @param key - The specified key you want to get. * @example * const val = container.getElementByKey(1); */ getElementByKey(key: K): V | undefined; union(other: OrderedMap): number; [Symbol.iterator](): Generator<[K, V], void, unknown>; eraseElementByIterator(iter: OrderedMapIterator): OrderedMapIterator; forEach(callback: (element: [K, V], index: number, map: OrderedMap) => void): void; getElementByPos(pos: number): [K, V]; } export default OrderedMap;