export declare abstract class ContainerIterator { static readonly NORMAL = false; static readonly REVERSE = true; /** * @description Iterator's type. */ readonly iteratorType: boolean; protected node: unknown; protected constructor(iteratorType?: boolean); /** * @description Pointers to element. * @return The value of the pointer's element. */ abstract get pointer(): T; /** * @description Set pointer's value (some containers are unavailable). * @param newValue The new value you want to set. */ abstract set pointer(newValue: T); /** * @description Move `this` iterator to pre. */ abstract pre(): this; /** * @description Move `this` iterator to next. */ abstract next(): this; /** * @param obj The other iterator you want to compare. * @return Boolean about if this equals to obj. * @example container.find(1).equals(container.end()); */ abstract equals(obj: ContainerIterator): boolean; /** * @description Get a copy of itself.
* We do not guarantee the safety of this function.
* Please ensure that the iterator will not fail. * @return The copy of self. */ abstract copy(): ContainerIterator; } export declare abstract class Base { /** * @description Container's size. * @protected */ protected length: number; /** * @return The size of the container. */ size(): number; /** * @return Boolean about if the container is empty. */ empty(): boolean; /** * @description Clear the container. */ abstract clear(): void; } export declare abstract class Container extends Base { /** * @return Iterator pointing to the beginning element. */ abstract begin(): ContainerIterator; /** * @return Iterator pointing to the super end like c++. */ abstract end(): ContainerIterator; /** * @return Iterator pointing to the end element. */ abstract rBegin(): ContainerIterator; /** * @return Iterator pointing to the super begin like c++. */ abstract rEnd(): ContainerIterator; /** * @return The first element of the container. */ abstract front(): T | undefined; /** * @return The last element of the container. */ abstract back(): T | undefined; /** * @description Iterate over all elements in the container. * @param callback Callback function like Array.forEach. */ abstract forEach(callback: (element: T, index: number) => void): void; /** * @param element The element you want to find. * @return An iterator pointing to the element if found, or super end if not found. */ abstract find(element: T): ContainerIterator; /** * @description Gets the value of the element at the specified position. */ abstract getElementByPos(pos: number): T; /** * @description Removes the element at the specified position. * @param pos The element's position you want to remove. */ abstract eraseElementByPos(pos: number): void; /** * @description Removes element by iterator and move `iter` to next. * @param iter The iterator you want to erase. * @example container.eraseElementByIterator(container.begin()); */ abstract eraseElementByIterator(iter: ContainerIterator): ContainerIterator; /** * @description Using for 'for...of' syntax like Array. */ abstract [Symbol.iterator](): Generator; } export declare type initContainer = ({ size: number; } | { length: number; } | { size(): number; }) & { forEach(callback: (element: T) => void): void; };