cea67b54139b447bb7774419438c564de6fa0885f3e0cf1a643f85721efad74546b18fef5fef5a9740ade8b2480149f5b3cd2a5d29851ac88e2c07dfbb23a0 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import SequentialContainer from './Base';
  2. import { IteratorType, initContainer } from "../ContainerBase";
  3. import { RandomIterator } from "./Base/RandomIterator";
  4. declare class DequeIterator<T> extends RandomIterator<T> {
  5. readonly container: Deque<T>;
  6. constructor(node: number, container: Deque<T>, iteratorType?: IteratorType);
  7. copy(): DequeIterator<T>;
  8. equals(iter: DequeIterator<T>): boolean;
  9. }
  10. export type { DequeIterator };
  11. declare class Deque<T> extends SequentialContainer<T> {
  12. constructor(container?: initContainer<T>, _bucketSize?: number);
  13. clear(): void;
  14. begin(): DequeIterator<T>;
  15. end(): DequeIterator<T>;
  16. rBegin(): DequeIterator<T>;
  17. rEnd(): DequeIterator<T>;
  18. front(): T | undefined;
  19. back(): T | undefined;
  20. pushBack(element: T): number;
  21. popBack(): T | undefined;
  22. /**
  23. * @description Push the element to the front.
  24. * @param element - The element you want to push.
  25. * @returns The size of queue after pushing.
  26. */
  27. pushFront(element: T): number;
  28. /**
  29. * @description Remove the _first element.
  30. * @returns The element you popped.
  31. */
  32. popFront(): T | undefined;
  33. getElementByPos(pos: number): T;
  34. setElementByPos(pos: number, element: T): void;
  35. insert(pos: number, element: T, num?: number): number;
  36. /**
  37. * @description Remove all elements after the specified position (excluding the specified position).
  38. * @param pos - The previous position of the first removed element.
  39. * @returns The size of the container after cutting.
  40. * @example
  41. * deque.cut(1); // Then deque's size will be 2. deque -> [0, 1]
  42. */
  43. cut(pos: number): number;
  44. eraseElementByPos(pos: number): number;
  45. eraseElementByValue(value: T): number;
  46. eraseElementByIterator(iter: DequeIterator<T>): DequeIterator<T>;
  47. find(element: T): DequeIterator<T>;
  48. reverse(): void;
  49. unique(): number;
  50. sort(cmp?: (x: T, y: T) => number): void;
  51. /**
  52. * @description Remove as much useless space as possible.
  53. */
  54. shrinkToFit(): void;
  55. forEach(callback: (element: T, index: number, deque: Deque<T>) => void): void;
  56. [Symbol.iterator](): Generator<T, void, unknown>;
  57. }
  58. export default Deque;