/** * @packageDocumentation * @module std.base */ import { IAssociativeContainer } from "../../internal/container/associative/IAssociativeContainer"; import { IContainer } from "./IContainer"; import { Container } from "./Container"; import { IForwardIterator } from "../../iterator/IForwardIterator"; import { ILinearContainerBase } from "../../internal/container/linear/ILinearContainerBase"; import { Pair } from "../../utility/Pair"; /** * Basic set container. * * @template Key Key type * @template Unique Whether duplicated key is blocked or not * @template Source Derived type extending this {@link SetContainer} * @template IteratorT Iterator type * @template ReverseT Reverse iterator type * * @author Jeongho Nam - https://github.com/samchon */ export declare abstract class SetContainer, IteratorT extends SetContainer.Iterator, ReverseT extends SetContainer.ReverseIterator> extends Container implements IAssociativeContainer { protected data_: ILinearContainerBase; /** * Default Constructor. */ protected constructor(factory: (thisArg: SourceT) => ILinearContainerBase); /** * @inheritDoc */ assign>>(first: InputIterator, last: InputIterator): void; /** * @inheritDoc */ clear(): void; /** * @inheritDoc */ abstract find(key: Key): IteratorT; /** * @inheritDoc */ begin(): IteratorT; /** * @inheritDoc */ end(): IteratorT; /** * @inheritDoc */ has(key: Key): boolean; /** * @inheritDoc */ abstract count(key: Key): number; /** * @inheritDoc */ size(): number; /** * @inheritDoc */ push(...items: Key[]): number; insert(key: Key): SetContainer.InsertRet; insert(hint: IteratorT, key: Key): IteratorT; insert>>(first: InputIterator, last: InputIterator): void; protected abstract _Insert_by_key(key: Key): SetContainer.InsertRet; protected abstract _Insert_by_hint(hint: IteratorT, key: Key): IteratorT; protected abstract _Insert_by_range>>(begin: InputIterator, end: InputIterator): void; /** * @inheritDoc */ erase(key: Key): number; /** * @inheritDoc */ erase(pos: IteratorT): IteratorT; /** * @inheritDoc */ erase(first: IteratorT, last: IteratorT): IteratorT; protected abstract _Erase_by_val(key: Key): number; protected _Erase_by_range(first: IteratorT, last?: IteratorT): IteratorT; /** * @inheritDoc */ abstract swap(obj: SourceT): void; /** * @inheritDoc */ abstract merge(source: SourceT): void; protected abstract _Handle_insert(first: IteratorT, last: IteratorT): void; protected abstract _Handle_erase(first: IteratorT, last: IteratorT): void; } /** * */ export declare namespace SetContainer { /** * Return type of {@link SetContainer.insert} */ type InsertRet, IteratorT extends Iterator, ReverseT extends ReverseIterator> = Unique extends true ? Pair : IteratorT; /** * Iterator of {@link SetContainer} * * @author Jenogho Nam */ type Iterator, IteratorT extends Iterator, ReverseT extends ReverseIterator> = Readonly>; /** * Reverse iterator of {@link SetContainer} * * @author Jenogho Nam */ type ReverseIterator, IteratorT extends Iterator, ReverseT extends ReverseIterator> = Readonly>; } //# sourceMappingURL=SetContainer.d.ts.map