diff --git a/README.md b/README.md index d64c7d91..fd16f005 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ STL (Standard Template Library) Containers and Algorithms for TypeScript TypeScript-STL is an open-source JavaScript library providing containers and algorithms migrated from C++ STL. You can enjoy STL containers and algorithms in JavaScript. If TypeScript, you will be much happier feeling like using originla STL with type restriction and template programming. -![Abstract Containers](http://samchon.github.io/typescript-stl/api/assets/images/design/abstract_containers.png) +![Abstract Containers](http://samchon.github.io/typescript-stl/images/design/class_diagram/abstract_containers.png) ##### Containers - [**Linear containers**](http://samchon.github.io/typescript-stl/api/interfaces/std.base.container.ilinearcontainer.html) diff --git a/api/assets/images/design/abstract_containers.png b/api/assets/images/design/abstract_containers.png deleted file mode 100644 index 6c178886..00000000 Binary files a/api/assets/images/design/abstract_containers.png and /dev/null differ diff --git a/api/assets/images/design/exceptions.png b/api/assets/images/design/exceptions.png deleted file mode 100644 index 65fc6d3b..00000000 Binary files a/api/assets/images/design/exceptions.png and /dev/null differ diff --git a/api/assets/images/design/linear_containers.png b/api/assets/images/design/linear_containers.png deleted file mode 100644 index c15b5767..00000000 Binary files a/api/assets/images/design/linear_containers.png and /dev/null differ diff --git a/api/assets/images/design/map_containers.png b/api/assets/images/design/map_containers.png deleted file mode 100644 index 94231562..00000000 Binary files a/api/assets/images/design/map_containers.png and /dev/null differ diff --git a/api/assets/images/design/set_containers.png b/api/assets/images/design/set_containers.png deleted file mode 100644 index cccfac6a..00000000 Binary files a/api/assets/images/design/set_containers.png and /dev/null differ diff --git a/api/assets/images/tree/Red-black_tree_delete_case_2.svg b/api/assets/images/tree/Red-black_tree_delete_case_2.svg deleted file mode 100644 index b2dbd693..00000000 --- a/api/assets/images/tree/Red-black_tree_delete_case_2.svg +++ /dev/null @@ -1,1145 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - P1 - - P - - - N1->dot1 - - - - - N1->dot2 - - - - - N - - P1->N1 - - - - - P1->S1 - - - - - S1 - - S - - - SL1 - - S - - - S1->SL1 - - - - - SR1 - - S - - - S1->SR1 - - - - - - - - - tri1 - - 1 - - - tri2 - - 2 - - 3 - 4 - 5 - 6 - - subscript1 - L - - - subscript2 - R - - - arrow - - - - S2 - - S - - - S2->P2 - - - - - P2 - - P - - - SR2 - - S - - - S2->SR2 - - - - - N2->dot2b - - - - - N2->dot1b - - - - - N - - P2->N2 - - - - - SL2 - - S - - - P2->SL2 - - - - - - - - - tri1b - - 1 - - - tri2b - - 2 - - 3 - 4 - 5 - 6 - - subscript3 - L - - - subscript4 - R - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/api/assets/images/tree/Red-black_tree_delete_case_3.svg b/api/assets/images/tree/Red-black_tree_delete_case_3.svg deleted file mode 100644 index 25216d1c..00000000 --- a/api/assets/images/tree/Red-black_tree_delete_case_3.svg +++ /dev/null @@ -1,944 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - P1 - - P - - - N - - P1->N1 - - - - - S1 - - S - - - P1->S1 - - - - - N1->dot1 - - - - - N1->dot2 - - - - - SL1 - - S - - - S1->SL1 - - - - - SR1 - - S - - - S1->SR1 - - - - - SL1->dot3 - - - - - SL1->dot4 - - - - - SR1->dot5 - - - - - SR1->dot6 - - - - - tri1 - - 1 - - - tri2 - - 2 - - - tri3 - - 3 - - - tri4 - - 4 - - - tri5 - - 5 - - - tri6 - - 6 - - - subscript1 - L - - - subscript2 - R - - - arrow - - - - P - - N2 - - N - - - P2->N2 - - - - - S2 - - S - - - P2->S2 - - - - - N2->dot1b - - - - - N2->dot2b - - - - - SL2 - - S - - - S2->SL2 - - - - - SR2 - - S - - - S2->SR2 - - - - - SL2->dot3b - - - - - SL2->dot4b - - - - - SR2->dot5b - - - - - SR2->dot6b - - - - - tri1b - - 1 - - - tri2b - - 2 - - - tri3b - - 3 - - - tri4b - - 4 - - - tri5b - - 5 - - - tri6b - - 6 - - - subscript3 - L - - - subscript4 - R - - - diff --git a/api/assets/images/tree/Red-black_tree_delete_case_4.svg b/api/assets/images/tree/Red-black_tree_delete_case_4.svg deleted file mode 100644 index 354e6f75..00000000 --- a/api/assets/images/tree/Red-black_tree_delete_case_4.svg +++ /dev/null @@ -1,958 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - P1 - - P - - - P1->N1 - - - - - N - - P1->S1 - - - - - S1 - - S - - - N1->dot1 - - - - - N1->dot2 - - - - - SL1 - - S - - - S1->SL1 - - - - - SR1 - - S - - - S1->SR1 - - - - - SL1->dot3 - - - - - SL1->dot4 - - - - - SR1->dot5 - - - - - SR1->dot6 - - - - - tri1 - - 1 - - - tri2 - - 2 - - - tri3 - - 3 - - - tri4 - - 4 - - - tri5 - - 5 - - - tri6 - - 6 - - - subscript1 - L - - - subscript2 - R - - - arrow - - - - P2 - - P - - - N2 - - N - - - P2->N2 - - - - - P2->S2 - - - - - S2 - - S - - - N2->dot1b - - - - - N2->dot2b - - - - - SL2 - - S - - - S2->SL2 - - - - - SR2 - - S - - - S2->SR2 - - - - - SL2->dot3b - - - - - SL2->dot4b - - - - - SR2->dot5b - - - - - SR2->dot6b - - - - - tri1b - - 1 - - - tri2b - - 2 - - - tri3b - - 3 - - - tri4b - - 4 - - - tri5b - - 5 - - - tri6b - - 6 - - - subscript3 - L - - - subscript4 - R - - - diff --git a/api/assets/images/tree/Red-black_tree_delete_case_5.svg b/api/assets/images/tree/Red-black_tree_delete_case_5.svg deleted file mode 100644 index d6bea65a..00000000 --- a/api/assets/images/tree/Red-black_tree_delete_case_5.svg +++ /dev/null @@ -1,755 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - S2 - - S - - - SR2 - - S - - - S2->SR2 - - - - - dot2b - - - - S2->dot2b - - - - - SL2 - - S - - - SL2->S2 - - - - - dot1b - - - - SL2->dot1b - - - - - SR2->dot3b - - - - - SR2->dot4b - - - - - tri1b - - 1 - - - tri2b - - 2 - - - tri3b - - 3 - - - tri4b - - 4 - - - subscript1 - L - - - subscript2 - R - - - - - S1 - - S - - - SL1 - - S - - - S1->SL1 - - - - - SR1 - - S - - - S1->SR1 - - - - - dot1 - - - - SL1->dot1 - - - - - dot2 - - - - SL1->dot2 - - - - - SR1->dot3 - - - - - SR1->dot4 - - - - - tri1 - - 1 - - - tri2 - - 2 - - - tri3 - - 3 - - - tri4 - - 4 - - - subscript1 - L - - - subscript2 - R - - - arrow - - - - diff --git a/api/assets/images/tree/Red-black_tree_delete_case_6.svg b/api/assets/images/tree/Red-black_tree_delete_case_6.svg deleted file mode 100644 index 24c31884..00000000 --- a/api/assets/images/tree/Red-black_tree_delete_case_6.svg +++ /dev/null @@ -1,865 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - P1 - - P - - - N - - P1->N1 - - - - - S1 - - S - - - P1->S1 - - - - - N1->dot1 - - - - - N1->dot2 - - - - - S1->SR1 - - - - - S1->dot3 - - - - - SR1->dot4 - - - - - dot5 - - - - SR1->dot5 - - - - - tri1 - - 1 - - - tri2 - - 2 - - 3 - - - dot4 - - - - - 4 - - tri5 - - 5 - - - subscript2 - R - - - arrow - - - - S2 - - S - - - P2 - - P - - - S2->P2 - - - - - - S2->SR2 - - - - - N2 - - N - - - N2->dot1b - - - - - N2->dot2b - - - - - P2->N2 - - - - - P2->dot3b - - - - - dot4b - - - - SR2->dot4b - - - - - dot5b - - - - SR2->dot5b - - - - - tri1b - - 1 - - - tri2b - - 2 - - 3 - - tri4b - - 4 - - - tri5b - - 5 - - - - dot4 - - - - - - dot4 - - - - - S - R - S - R - - diff --git a/api/assets/images/tree/Red-black_tree_example.svg b/api/assets/images/tree/Red-black_tree_example.svg deleted file mode 100644 index ae642196..00000000 --- a/api/assets/images/tree/Red-black_tree_example.svg +++ /dev/null @@ -1,812 +0,0 @@ - - - - - - - - - - - - - image/svg+xml - - - - - - - - 13 - - - - 8 - - - - 17 - - - - 1 - - - - 25 - - - - 6 - - - - 22 - - - - NIL - - - - NIL - - - - - - - - - - - - 27 - - - - NIL - - - - NIL - - - - - - - - - - - - - - - - 15 - - - - NIL - - - - NIL - - - - - - - - - - - - 11 - - - - NIL - - - - NIL - - - - NIL - - - - - - - - - - - - NIL - - - - NIL - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/api/assets/images/tree/Red-black_tree_insert_case_3.svg b/api/assets/images/tree/Red-black_tree_insert_case_3.svg deleted file mode 100644 index c3d96f50..00000000 --- a/api/assets/images/tree/Red-black_tree_insert_case_3.svg +++ /dev/null @@ -1,730 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - G1 - - G - - - G1->P1 - - - - - P1 - - P - - - G1->U1 - - - - - U1 - - U - - - P1->N1 - - - - - N - - P1->dot3 - - - - - U1->dot4 - - - - - U1->dot5 - - - - - N1->dot1 - - - - - N1->dot2 - - - - - tri1 - - 1 - - - tri2 - - 2 - - - tri3 - - 3 - - - tri4 - - 4 - - - tri5 - - 5 - - - arrow - - - - G - - G2->P2 - - - - - P2 - - P - - - G2->U2 - - - - - U2 - - U - - - P2->N2 - - - - - N2 - - N - - - P2->dot3b - - - - - U2->dot4b - - - - - U2->dot5b - - - - - N2->dot1b - - - - - N2->dot2b - - - - - tri1b - - 1 - - - tri2b - - 2 - - - tri3b - - 3 - - - tri4b - - 4 - - - tri5b - - 5 - - - diff --git a/api/assets/images/tree/Red-black_tree_insert_case_4.svg b/api/assets/images/tree/Red-black_tree_insert_case_4.svg deleted file mode 100644 index 2a4f1360..00000000 --- a/api/assets/images/tree/Red-black_tree_insert_case_4.svg +++ /dev/null @@ -1,866 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - G1 - - G - - - P1 - - P - - - G1->P1 - - - - - U1 - - U - - - G1->U1 - - - - - N - - P1->N1 - - - - - dot1 - - - - P1->dot1 - - - - - U1->dot4 - - - - - U1->dot5 - - - - - dot2 - - - - N1->dot2 - - - - - dot3 - - - - N1->dot3 - - - - - tri1 - - 1 - - - tri2 - - 2 - - - tri3 - - 3 - - - tri4 - - 4 - - - tri5 - - 5 - - - arrow - - - - G2 - - G - - - U2 - - U - - - G2->U2 - - - - - N2 - - N - - - G2->N2 - - - - - P - - dot1b - - - - P2->dot1b - - - - - dot2b - - - - P2->dot2b - - - - - U2->dot4b - - - - - U2->dot5b - - - - - N2->P2 - - - - - dot3b - - - - N2->dot3b - - - - - tri1b - - 1 - - - tri2b - - 2 - - - tri3b - - 3 - - - tri4b - - 4 - - - tri5b - - 5 - - - diff --git a/api/assets/images/tree/Red-black_tree_insert_case_5.svg b/api/assets/images/tree/Red-black_tree_insert_case_5.svg deleted file mode 100644 index 1da108ca..00000000 --- a/api/assets/images/tree/Red-black_tree_insert_case_5.svg +++ /dev/null @@ -1,873 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - G1 - - G - - - G1->P1 - - - - - P1 - - P - - - U1 - - U - - - G1->U1 - - - - - P1->N1 - - - - - N - - dot3 - - - - P1->dot3 - - - - - U1->dot4 - - - - - U1->dot5 - - - - - dot1 - - - - N1->dot1 - - - - - dot2 - - - - N1->dot2 - - - - - tri1 - - 1 - - - tri2 - - 2 - - - tri3 - - 3 - - - tri4 - - 4 - - - tri5 - - 5 - - - arrow - - - - G2 - - G - - - U2 - - U - - - G2->U2 - - - - - dot3b - - - - G2->dot3b - - - - - P2->G2 - - - - - P2 - - P - - - P2->N2 - - - - - N2 - - N - - - U2->dot4b - - - - - U2->dot5b - - - - - dot1b - - - - N2->dot1b - - - - - dot2b - - - - N2->dot2b - - - - - tri1b - - 1 - - - tri2b - - 2 - - - tri3b - - 3 - - - tri4b - - 4 - - - tri5b - - 5 - - - diff --git a/lib/typescript-stl.d.ts b/lib/typescript-stl.d.ts index a949dd0a..d05d3bc3 100644 --- a/lib/typescript-stl.d.ts +++ b/lib/typescript-stl.d.ts @@ -1,4 +1,4 @@ -// Type definitions for TypeScript-STL v1.0.0-rc.3 +// Type definitions for TypeScript-STL v1.0.0 // Project: https://github.com/samchon/typescript-stl // Definitions by: Jeongho Nam // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped @@ -117,13 +117,6 @@ declare namespace std { */ declare namespace std.base { } -/** - * Examples for supporting developers who use STL library. - * - * @author Jeongho Nam - */ -declare namespace std.example { -} declare namespace std { /** *

Apply function to range.

@@ -2751,8 +2744,8 @@ declare namespace std.base { /** *

An abstract container.

* - *

- * + *

+ * *

* *

Container properties

@@ -2872,8 +2865,8 @@ declare namespace std { *

There is not a single type of {@link Iterator bidirectional iterator}: {@link IContainer Each container} * may define its own specific iterator type able to iterate through it and access its elements.

* - *

- * + *

+ * *

* * @reference http://www.cplusplus.com/reference/iterator/BidirectionalIterator @@ -2958,8 +2951,8 @@ declare namespace std { * first element in a range is reversed, the reversed iterator points to the element before the first element (this * would be the past-the-end element of the reversed range).

* - *

- * + *

+ * *

* * @reference http://www.cplusplus.com/reference/iterator/reverse_iterator @@ -3194,8 +3187,8 @@ declare namespace std { * the end, {@link Deque Deques} perform worse and have less consistent iterators and references than * {@link List Lists}.

* - *

- * + *

+ * *

* *

Container properties

@@ -3217,66 +3210,27 @@ declare namespace std { */ class Deque extends base.Container implements base.IArrayContainer, base.IDequeContainer { /** - *

Row size of the {@link matrix_ matrix} which contains elements.

- * - *

Note that the {@link ROW} affects on time complexity of accessing and inserting element. - * Accessing element is {@link ROW} times slower than ordinary {@link Vector} and inserting element - * in middle position is {@link ROW} times faster than ordinary {@link Vector}.

- * - *

When the {@link ROW} returns 8, time complexity of accessing element is O(8) and inserting - * element in middle position is O(N/8). ({@link Vector}'s time complexity of accessement is O(1) - * and inserting element is O(N)).

+ * @hidden */ private static ROW; /** - *

Minimum {@link capacity}.

- * - *

Although a {@link Deque} has few elements, even no element is belonged to, the {@link Deque} - * keeps the minimum {@link capacity} at least.

+ * @hidden */ private static MIN_CAPACITY; /** - *

A matrix containing elements.

- * - *

This {@link matrix_} is the biggest difference one between {@link Vector} and {@link Deque}. - * Its number of rows follows {@link ROW} and number of columns follows {@link get_col_size} which - * returns divide of {@link capacity} and {@link ROW}.

- * - * By separating segment of elements (segment: row, elements in a segment: col), {@link Deque} takes - * advantage of time complexity on inserting element in middle position. {@link Deque} is {@link ROW} - * times faster than {@link Vector} when inserting elements in middle position.

- * - *

However, separating segment of elements from matrix, {@link Deque} also takes disadvantage of - * time complexity on accessing element. {@link Deque} is {@link ROW} times slower than {@link Vector} - * when accessing element.

+ * @hidden */ private matrix_; /** - * Number of elements in the {@link Deque}. + * @hidden */ private size_; /** - *

Size of allocated storage capacity.

- * - *

The {@link capacity_ capacity} is size of the storage space currently allocated for the - * {@link Deque container}, expressed in terms of elements.

- * - *

This {@link capacity_ capacity} is not necessarily equal to the {@link Deque container} - * {@link size}. It can be equal or greater, with the extra space allowing to accommodate for growth - * without the need to reallocate on each insertion.

- * - *

Notice that this {@link capacity_ capacity} does not suppose a limit on the {@link size} of - * the {@link Deque container}. When this {@link capacity} is exhausted and more is needed, it is - * automatically expanded by the {@link Deque container} (reallocating it storage space). - * The theoretical limit on the {@link size} of a {@link Deque container} is given by member - * {@link max_size}.

- * - *

The {@link capacity_ capacity} of a {@link Deque container} can be explicitly altered by - * calling member {@link Deque.reserve}.

+ * @hidden */ private capacity_; /** - * Get column size; {@link capacity_ capacity} / {@link ROW row}. + * @hidden */ private get_col_size(); /** @@ -3480,8 +3434,8 @@ declare namespace std { /** *

An iterator of {@link Deque}.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -3552,8 +3506,8 @@ declare namespace std { /** *

A reverse-iterator of Deque.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -3629,8 +3583,8 @@ declare namespace std { *

All objects thrown by components of the standard library are derived from this class. * Therefore, all standard exceptions can be caught by catching this type by reference.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/exception/exception * @author Jeongho Nam @@ -3678,8 +3632,8 @@ declare namespace std { * *

It is used as a base class for several logical error exceptions.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/logic_error * @author Jeongho Nam @@ -3704,8 +3658,8 @@ declare namespace std { *

No component of the standard library throws exceptions of this type. It is designed as a standard * exception to be thrown by programs.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/domain_error * @author Jeongho Nam @@ -3726,8 +3680,8 @@ declare namespace std { *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal invalid arguments.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/invalid_argument * @author Jeongho Nam @@ -3748,8 +3702,8 @@ declare namespace std { *

It is a standard exception that can be thrown by programs. Some components of the standard library, * such as vector and string also throw exceptions of this type to signal errors resizing.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/length_error * @author Jeongho Nam @@ -3771,8 +3725,8 @@ declare namespace std { * such as vector, deque, string and bitset also throw exceptions of this type to signal arguments * out of range.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/out_of_range * @author Jeongho Nam @@ -3793,8 +3747,8 @@ declare namespace std { * *

It is used as a base class for several runtime error exceptions.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/runtime_error * @author Jeongho Nam @@ -3815,8 +3769,8 @@ declare namespace std { *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal range errors.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/overflow_error * @author Jeongho Nam @@ -3837,8 +3791,8 @@ declare namespace std { *

No component of the standard library throws exceptions of this type. It is designed as a standard * exception to be thrown by programs.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/underflow_error * @author Jeongho Nam @@ -3860,8 +3814,8 @@ declare namespace std { *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal range errors.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/range_error * @author Jeongho Nam @@ -4422,8 +4376,8 @@ declare namespace std.base { * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -4820,8 +4774,8 @@ declare namespace std { /** *

An iterator of {@link MapContainer map container}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -4891,8 +4845,8 @@ declare namespace std { /** *

A reverse-iterator of {@link MapContainer map container}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -4931,8 +4885,8 @@ declare namespace std.base { * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -5198,8 +5152,8 @@ declare namespace std.base { * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -5311,8 +5265,8 @@ declare namespace std { *

{@link HashMap} containers are faster than {@link TreeMap} containers to access individual elements by their * key, although they are generally less efficient for range iteration through a subset of their elements.

* - *

- * + *

+ * *

* *

Container properties

@@ -5342,6 +5296,9 @@ declare namespace std { * @author Jeongho Nam */ class HashMap extends base.UniqueMap implements base.IHashMap { + /** + * @hidden + */ private hash_buckets_; /** * @hidden @@ -5473,8 +5430,8 @@ declare namespace std { *

Elements with equivalent keys are grouped together in the same bucket and in such a way that * an iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

* - *

- * + *

+ * *

* *

Container properties

@@ -5505,7 +5462,7 @@ declare namespace std { */ class HashMultiMap extends base.MultiMap { /** - * + * @hidden */ private hash_buckets_; /** @@ -5633,8 +5590,8 @@ declare namespace std.base { * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -5910,8 +5867,8 @@ declare namespace std { /** *

An iterator of a Set.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -5969,8 +5926,8 @@ declare namespace std { /** *

A reverse-iterator of Set.

* - *

- *

+ *

+ *

* * @param Type of the elements. * @@ -5984,131 +5941,6 @@ declare namespace std { protected create_neighbor(): SetReverseIterator; } } -declare namespace std.base { - /** - *

An abstract set.

- * - *

{@link SetContainer SetContainers} are containers that store elements allowing fast retrieval of - * individual elements based on their value.

- * - *

In an {@link SetContainer}, the value of an element is at the same time its key, used to uniquely - * identify it. Keys are immutable, therefore, the elements in an {@link SetContainer} cannot be modified - * once in the container - they can be inserted and removed, though.

- * - *

{@link SetContainer} stores elements, keeps sequence and enables indexing by inserting elements into a - * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index - * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

- * - *

- *

- * - *

Container properties

- *
- *
Associative
- *
- * Elements in associative containers are referenced by their key and not by their absolute - * position in the container. - *
- * - *
Set
- *
The value of an element is also the key used to identify it.
- * - *
Unique keys
- *
No two elements in the container can have equivalent keys.
- *
- * - * @param Type of the elements. Each element in a {@link SetContainer} container is also identified - * by this value (each value is itself also the element's key). - * - * @author Jeongho Nam - */ - abstract class UniqueSet extends SetContainer { - /** - * @inheritdoc - */ - count(key: T): number; - /** - *

Extract an element.

- * - *

Extracts the element pointed to by val and erases it from the {@link UniqueSet}.

- * - * @param val Value to be extracted. - * - * @return A value. - */ - extract(val: T): T; - /** - *

Extract an element.

- * - *

Extracts the element pointed to by key and erases it from the {@link UniqueMap}.

- * - * @param it An iterator pointing an element to extract. - * - * @return An iterator pointing to the element immediately following it prior to the element being - * erased. If no such element exists,returns {@link end end()}. - */ - extract(it: SetIterator): SetIterator; - /** - *

Extract an element.

- * - *

Extracts the element pointed to by key and erases it from the {@link UniqueMap}.

- * - * @param it An iterator pointing an element to extract. - * - * @return An iterator pointing to the element immediately following it prior to the element being - * erased. If no such element exists,returns {@link end end()}. - */ - extract(it: SetReverseIterator): SetReverseIterator; - /** - * @hidden - */ - private extract_by_key(val); - /** - * @hidden - */ - private extract_by_iterator(it); - /** - * @hidden - */ - private extract_by_reverse_iterator(it); - /** - *

Insert an element.

- * - *

Extends the container by inserting new elements, effectively increasing the container {@link size} by - * the number of element inserted (zero or one).

- * - *

Because elements in a {@link UniqueSet UniqueSets} are unique, the insertion operation checks whether - * each inserted element is equivalent to an element already in the container, and if so, the element is not - * inserted, returning an iterator to this existing element (if the function returns a value).

- * - *

For a similar container allowing for duplicate elements, see {@link MultiSet}.

- * - * @param key Value to be inserted as an element. - * - * @return A {@link Pair}, with its member {@link Pair.first} set to an iterator pointing to either the newly - * inserted element or to the equivalent element already in the {@link UniqueSet}. The - * {@link Pair.second} element in the {@link Pair} is set to true if a new element was inserted or - * false if an equivalent element already existed. - */ - insert(val: T): Pair, boolean>; - /** - * @inheritdoc - */ - insert(hint: SetIterator, val: T): SetIterator; - /** - * @inheritdoc - */ - insert(hint: SetReverseIterator, val: T): SetReverseIterator; - /** - * @inheritdoc - */ - insert>(begin: InputIterator, end: InputIterator): void; - /** - * @inheritdoc - */ - swap(obj: UniqueSet): void; - } -} declare namespace std.base { /** *

An abstract set.

@@ -6124,8 +5956,8 @@ declare namespace std.base { * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -6177,31 +6009,31 @@ declare namespace std.base { swap(obj: MultiSet): void; } } -declare namespace std.HashSet { +declare namespace std.HashMultiSet { type iterator = std.SetIterator; type reverse_iterator = std.SetReverseIterator; } declare namespace std { /** - *

Hashed, unordered set.

+ *

Hashed, unordered Multiset.

* - *

{@link HashSet}s are containers that store unique elements in no particular order, and which - * allow for fast retrieval of individual elements based on their value.

+ *

{@link HashMultiSet HashMultiSets} are containers that store elements in no particular order, allowing fast + * retrieval of individual elements based on their value, much like {@link HashSet} containers, + * but allowing different elements to have equivalent values.

* - *

In an {@link HashSet}, the value of an element is at the same time its key, that - * identifies it uniquely. Keys are immutable, therefore, the elements in an {@link HashSet} cannot be + *

In an {@link HashMultiSet}, the value of an element is at the same time its key, used to + * identify it. Keys are immutable, therefore, the elements in an {@link HashMultiSet} cannot be * modified once in the container - they can be inserted and removed, though.

* - *

Internally, the elements in the {@link HashSet} are not sorted in any particular order, but - * organized into buckets depending on their hash values to allow for fast access to individual elements - * directly by their values (with a constant average time complexity on average).

+ *

Internally, the elements in the {@link HashMultiSet} are not sorted in any particular, but + * organized into buckets depending on their hash values to allow for fast access to individual + * elements directly by their values (with a constant average time complexity on average).

* - *

{@link HashSet} containers are faster than {@link TreeSet} containers to access individual - * elements by their key, although they are generally less efficient for range iteration through a - * subset of their elements.

+ *

Elements with equivalent values are grouped together in the same bucket and in such a way that an + * iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -6216,17 +6048,20 @@ declare namespace std { *
Set
*
The value of an element is also the key used to identify it.
* - *
Unique keys
- *
No two elements in the container can have equivalent keys.
+ *
Multiple equivalent keys
+ *
The container can hold multiple elements with equivalent keys.
*
* * @param Type of the elements. - * Each element in an {@link HashSet} is also uniquely identified by this value. + * Each element in an {@link UnorderedMultiSet} is also identified by this value.. * - * @reference http://www.cplusplus.com/reference/unordered_set/unordered_set + * @reference http://www.cplusplus.com/reference/unordered_set/unordered_multiset * @author Jeongho Nam */ - class HashSet extends base.UniqueSet { + class HashMultiSet extends base.MultiSet { + /** + * @hidden + */ private hash_buckets_; /** * @hidden @@ -6244,6 +6079,10 @@ declare namespace std { * @inheritdoc */ find(key: T): SetIterator; + /** + * @inheritdoc + */ + count(key: T): number; /** * @inheritdoc */ @@ -6327,38 +6166,163 @@ declare namespace std { /** * @inheritdoc */ - swap(obj: base.UniqueSet): void; + swap(obj: base.MultiSet): void; /** * @hidden */ private swap_tree_set(obj); } } -declare namespace std.HashMultiSet { +declare namespace std.base { + /** + *

An abstract set.

+ * + *

{@link SetContainer SetContainers} are containers that store elements allowing fast retrieval of + * individual elements based on their value.

+ * + *

In an {@link SetContainer}, the value of an element is at the same time its key, used to uniquely + * identify it. Keys are immutable, therefore, the elements in an {@link SetContainer} cannot be modified + * once in the container - they can be inserted and removed, though.

+ * + *

{@link SetContainer} stores elements, keeps sequence and enables indexing by inserting elements into a + * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index + * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

+ * + *

+ *

+ * + *

Container properties

+ *
+ *
Associative
+ *
+ * Elements in associative containers are referenced by their key and not by their absolute + * position in the container. + *
+ * + *
Set
+ *
The value of an element is also the key used to identify it.
+ * + *
Unique keys
+ *
No two elements in the container can have equivalent keys.
+ *
+ * + * @param Type of the elements. Each element in a {@link SetContainer} container is also identified + * by this value (each value is itself also the element's key). + * + * @author Jeongho Nam + */ + abstract class UniqueSet extends SetContainer { + /** + * @inheritdoc + */ + count(key: T): number; + /** + *

Extract an element.

+ * + *

Extracts the element pointed to by val and erases it from the {@link UniqueSet}.

+ * + * @param val Value to be extracted. + * + * @return A value. + */ + extract(val: T): T; + /** + *

Extract an element.

+ * + *

Extracts the element pointed to by key and erases it from the {@link UniqueMap}.

+ * + * @param it An iterator pointing an element to extract. + * + * @return An iterator pointing to the element immediately following it prior to the element being + * erased. If no such element exists,returns {@link end end()}. + */ + extract(it: SetIterator): SetIterator; + /** + *

Extract an element.

+ * + *

Extracts the element pointed to by key and erases it from the {@link UniqueMap}.

+ * + * @param it An iterator pointing an element to extract. + * + * @return An iterator pointing to the element immediately following it prior to the element being + * erased. If no such element exists,returns {@link end end()}. + */ + extract(it: SetReverseIterator): SetReverseIterator; + /** + * @hidden + */ + private extract_by_key(val); + /** + * @hidden + */ + private extract_by_iterator(it); + /** + * @hidden + */ + private extract_by_reverse_iterator(it); + /** + *

Insert an element.

+ * + *

Extends the container by inserting new elements, effectively increasing the container {@link size} by + * the number of element inserted (zero or one).

+ * + *

Because elements in a {@link UniqueSet UniqueSets} are unique, the insertion operation checks whether + * each inserted element is equivalent to an element already in the container, and if so, the element is not + * inserted, returning an iterator to this existing element (if the function returns a value).

+ * + *

For a similar container allowing for duplicate elements, see {@link MultiSet}.

+ * + * @param key Value to be inserted as an element. + * + * @return A {@link Pair}, with its member {@link Pair.first} set to an iterator pointing to either the newly + * inserted element or to the equivalent element already in the {@link UniqueSet}. The + * {@link Pair.second} element in the {@link Pair} is set to true if a new element was inserted or + * false if an equivalent element already existed. + */ + insert(val: T): Pair, boolean>; + /** + * @inheritdoc + */ + insert(hint: SetIterator, val: T): SetIterator; + /** + * @inheritdoc + */ + insert(hint: SetReverseIterator, val: T): SetReverseIterator; + /** + * @inheritdoc + */ + insert>(begin: InputIterator, end: InputIterator): void; + /** + * @inheritdoc + */ + swap(obj: UniqueSet): void; + } +} +declare namespace std.HashSet { type iterator = std.SetIterator; type reverse_iterator = std.SetReverseIterator; } declare namespace std { /** - *

Hashed, unordered Multiset.

+ *

Hashed, unordered set.

* - *

{@link HashMultiSet HashMultiSets} are containers that store elements in no particular order, allowing fast - * retrieval of individual elements based on their value, much like {@link HashSet} containers, - * but allowing different elements to have equivalent values.

+ *

{@link HashSet}s are containers that store unique elements in no particular order, and which + * allow for fast retrieval of individual elements based on their value.

* - *

In an {@link HashMultiSet}, the value of an element is at the same time its key, used to - * identify it. Keys are immutable, therefore, the elements in an {@link HashMultiSet} cannot be + *

In an {@link HashSet}, the value of an element is at the same time its key, that + * identifies it uniquely. Keys are immutable, therefore, the elements in an {@link HashSet} cannot be * modified once in the container - they can be inserted and removed, though.

* - *

Internally, the elements in the {@link HashMultiSet} are not sorted in any particular, but - * organized into buckets depending on their hash values to allow for fast access to individual - * elements directly by their values (with a constant average time complexity on average).

+ *

Internally, the elements in the {@link HashSet} are not sorted in any particular order, but + * organized into buckets depending on their hash values to allow for fast access to individual elements + * directly by their values (with a constant average time complexity on average).

* - *

Elements with equivalent values are grouped together in the same bucket and in such a way that an - * iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

+ *

{@link HashSet} containers are faster than {@link TreeSet} containers to access individual + * elements by their key, although they are generally less efficient for range iteration through a + * subset of their elements.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -6373,17 +6337,20 @@ declare namespace std { *
Set
*
The value of an element is also the key used to identify it.
* - *
Multiple equivalent keys
- *
The container can hold multiple elements with equivalent keys.
+ *
Unique keys
+ *
No two elements in the container can have equivalent keys.
*
* * @param Type of the elements. - * Each element in an {@link UnorderedMultiSet} is also identified by this value.. + * Each element in an {@link HashSet} is also uniquely identified by this value. * - * @reference http://www.cplusplus.com/reference/unordered_set/unordered_multiset + * @reference http://www.cplusplus.com/reference/unordered_set/unordered_set * @author Jeongho Nam */ - class HashMultiSet extends base.MultiSet { + class HashSet extends base.UniqueSet { + /** + * @hidden + */ private hash_buckets_; /** * @hidden @@ -6401,10 +6368,6 @@ declare namespace std { * @inheritdoc */ find(key: T): SetIterator; - /** - * @inheritdoc - */ - count(key: T): number; /** * @inheritdoc */ @@ -6488,7 +6451,7 @@ declare namespace std { /** * @inheritdoc */ - swap(obj: base.MultiSet): void; + swap(obj: base.UniqueSet): void; /** * @hidden */ @@ -6523,8 +6486,8 @@ declare namespace std { * distance between these. They also consume some extra memory to keep the linking information associated to each * element (which may be an important factor for large lists of small-sized elements).

* - *

- * + *

+ * *

* *

Container properties

@@ -6546,15 +6509,15 @@ declare namespace std { */ class List extends base.Container implements base.IDequeContainer { /** - * An iterator of beginning. + * @hidden */ protected begin_: ListIterator; /** - * An iterator of end. + * @hidden */ protected end_: ListIterator; /** - * Number of elements in the {@link List}. + * @hidden */ protected size_: number; /** @@ -7096,8 +7059,8 @@ declare namespace std { /** *

An iterator, node of a List.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -7158,8 +7121,8 @@ declare namespace std { /** *

A reverse-iterator of List.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -7208,8 +7171,8 @@ declare namespace std { * By default, if no container class is specified for a particular {@link Queue} class instantiation, the standard * container {@link List} is used.

* - *

- * + *

+ * *

* * @param Type of elements. @@ -7540,8 +7503,8 @@ declare namespace std { * By default, if no container class is specified for a particular {@link Stack} class instantiation, the standard * container {@link List} is used.

* - *

- * + *

+ * *

* * @param Type of elements. @@ -7651,18 +7614,18 @@ declare namespace std.base { * so that they can be interpreted when needed as more abstract (and portable) * {@link ErrorCondition error conditions}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ abstract class ErrorInstance { /** - * A reference to an {@link ErrorCategory} object. + * @hidden */ protected category_: ErrorCategory; /** - * A numerical value identifying an error instance. + * @hidden */ protected value_: number; /** @@ -7761,15 +7724,15 @@ declare namespace std { *

The class inherits from {@link RuntimeError}, to which it adds an {@link ErrorCode} as * member code (and defines a specialized what member).

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/system_error * @author Jeongho Nam */ class SystemError extends RuntimeError { /** - * Error code. + * @hidden */ protected code_: ErrorCode; /** @@ -7827,8 +7790,8 @@ declare namespace std { * passed by reference. As such, only one object of each of these types shall exist, each uniquely identifying its own * category: all error codes and conditions of a same category shall return a reference to same object.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_category * @author Jeongho Nam @@ -7955,8 +7918,8 @@ declare namespace std { *

The {@link ErrorCategory categories} associated with the {@link ErrorCondition} and the * {@link ErrorCode} define the equivalences between them.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_condition * @author Jeongho Nam @@ -7988,8 +7951,8 @@ declare namespace std { *

Objects of this class associate such numerical codes to {@link ErrorCategory error categories}, so that they * can be interpreted when needed as more abstract (and portable) {@link ErrorCondition error conditions}.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_code * @author Jeongho Nam @@ -8034,8 +7997,8 @@ declare namespace std { * *

{@link TreeMap}s are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -8063,7 +8026,7 @@ declare namespace std { */ class TreeMap extends base.UniqueMap implements base.ITreeMap { /** - * RB-Tree+ object for implemeting the {@link TreeMap}. + * @hidden */ private tree_; /** @@ -8216,8 +8179,8 @@ declare namespace std { * *

{@link TreeMultiMap TreeMultiMaps} are typically implemented as binary search trees.

* - *

< - * img src="http://samchon.github.io/typescript-stl/api/assets/images/design/map_containers.png" style="max-width: 100%" />

+ *

< + * img src="http://samchon.github.io/typescript-stl/images/design/class_diagram/map_containers.png" style="max-width: 100%" />

* *

Container properties

*
@@ -8250,6 +8213,9 @@ declare namespace std { * @author Jeongho Nam */ class TreeMultiMap extends base.MultiMap implements base.ITreeMap { + /** + * @hidden + */ private tree_; /** * Default Constructor. @@ -8377,32 +8343,33 @@ declare namespace std { private swap_tree_multimap(obj); } } -declare namespace std.TreeSet { +declare namespace std.TreeMultiSet { type iterator = std.SetIterator; type reverse_iterator = std.SetReverseIterator; } declare namespace std { /** - *

Tree-structured set, std::set of STL.

+ *

Tree-structured multiple-key set.

* - *

{@link TreeSet}s are containers that store unique elements following a specific order.

+ *

{@link TreeMultiSet TreeMultiSets} are containers that store elements following a specific order, and + * where multiple elements can have equivalent values.

* - *

In a {@link TreeSet}, the value of an element also identifies it (the value is itself the - * key, of type T), and each value must be unique. The value of the elements in a - * {@link TreeSet} cannot be modified once in the container (the elements are always const), but they - * can be inserted or removed from the

+ *

In a {@link TreeMultiSet}, the value of an element also identifies it (the value is itself + * the key, of type T). The value of the elements in a {@link TreeMultiSet} cannot + * be modified once in the container (the elements are always const), but they can be inserted or removed + * from the

* - *

Internally, the elements in a {@link TreeSet} are always sorted following a specific strict weak - * ordering criterion indicated by its internal comparison method (of {@link less}).

+ *

Internally, the elements in a {@link TreeMultiSet TreeMultiSets} are always sorted following a strict + * weak ordering criterion indicated by its internal comparison method (of {@link IComparable.less less}).

* - *

{@link TreeSet} containers are generally slower than {@link HashSet} containers to access - * individual elements by their key, but they allow the direct iteration on subsets based on their - * order.

+ *

{@link TreeMultiSet} containers are generally slower than {@link HashMultiSet} containers + * to access individual elements by their key, but they allow the direct iteration on subsets based on + * their order.

* - *

{@link TreeSet}s are typically implemented as binary search trees.

+ *

{@link TreeMultiSet TreeMultiSets} are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -8421,19 +8388,19 @@ declare namespace std { *
Set
*
The value of an element is also the key used to identify it.
* - *
Unique keys
- *
No two elements in the container can have equivalent keys.
+ *
Multiple equivalent keys
+ *
Multiple elements in the container can have equivalent keys.
*
* - * @param Type of the elements. - * Each element in an {@link TreeSet} is also uniquely identified by this value. + * @param Type of the elements. Each element in a {@link TreeMultiSet} container is also identified + * by this value (each value is itself also the element's key). * - * @reference http://www.cplusplus.com/reference/set/set + * @reference http://www.cplusplus.com/reference/set/multiset * @author Jeongho Nam */ - class TreeSet extends base.UniqueSet implements base.ITreeSet { + class TreeMultiSet extends base.MultiSet implements base.ITreeSet { /** - * RB-Tree+ object for implemeting the {@link TreeSet}. + * @hidden */ private tree_; /** @@ -8462,14 +8429,14 @@ declare namespace std { /** * Copy Constructor. */ - constructor(container: base.IContainer); + constructor(container: base.Container); /** * Copy Constructor with compare. * * @param container A container to be copied. * @param compare A binary predicate determines order of elements. */ - constructor(container: base.IContainer, compare: (x: T, y: T) => boolean); + constructor(container: base.Container, compare: (x: T, y: T) => boolean); /** * Range Constructor. * @@ -8478,7 +8445,7 @@ declare namespace std { */ constructor(begin: Iterator, end: Iterator); /** - * Range Constructor with compare. + * Construct from range and compare. * * @param begin Input interator of the initial position in a sequence. * @param end Input interator of the final position in a sequence. @@ -8493,6 +8460,10 @@ declare namespace std { * @inheritdoc */ find(val: T): SetIterator; + /** + * @inheritdoc + */ + count(val: T): number; /** * @inheritdoc */ @@ -8517,6 +8488,9 @@ declare namespace std { * @hidden */ protected insert_by_val(val: T): any; + /** + * @hidden + */ protected insert_by_hint(hint: SetIterator, val: T): SetIterator; /** * @hidden @@ -8533,40 +8507,39 @@ declare namespace std { /** * @inheritdoc */ - swap(obj: base.UniqueSet): void; + swap(obj: base.MultiSet): void; /** * @hidden */ private swap_tree_set(obj); } } -declare namespace std.TreeMultiSet { +declare namespace std.TreeSet { type iterator = std.SetIterator; type reverse_iterator = std.SetReverseIterator; } declare namespace std { /** - *

Tree-structured multiple-key set.

+ *

Tree-structured set, std::set of STL.

* - *

{@link TreeMultiSet TreeMultiSets} are containers that store elements following a specific order, and - * where multiple elements can have equivalent values.

+ *

{@link TreeSet}s are containers that store unique elements following a specific order.

* - *

In a {@link TreeMultiSet}, the value of an element also identifies it (the value is itself - * the key, of type T). The value of the elements in a {@link TreeMultiSet} cannot - * be modified once in the container (the elements are always const), but they can be inserted or removed - * from the

+ *

In a {@link TreeSet}, the value of an element also identifies it (the value is itself the + * key, of type T), and each value must be unique. The value of the elements in a + * {@link TreeSet} cannot be modified once in the container (the elements are always const), but they + * can be inserted or removed from the

* - *

Internally, the elements in a {@link TreeMultiSet TreeMultiSets} are always sorted following a strict - * weak ordering criterion indicated by its internal comparison method (of {@link IComparable.less less}).

+ *

Internally, the elements in a {@link TreeSet} are always sorted following a specific strict weak + * ordering criterion indicated by its internal comparison method (of {@link less}).

* - *

{@link TreeMultiSet} containers are generally slower than {@link HashMultiSet} containers - * to access individual elements by their key, but they allow the direct iteration on subsets based on - * their order.

+ *

{@link TreeSet} containers are generally slower than {@link HashSet} containers to access + * individual elements by their key, but they allow the direct iteration on subsets based on their + * order.

* - *

{@link TreeMultiSet TreeMultiSets} are typically implemented as binary search trees.

+ *

{@link TreeSet}s are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -8585,19 +8558,19 @@ declare namespace std { *
Set
*
The value of an element is also the key used to identify it.
* - *
Multiple equivalent keys
- *
Multiple elements in the container can have equivalent keys.
+ *
Unique keys
+ *
No two elements in the container can have equivalent keys.
*
* - * @param Type of the elements. Each element in a {@link TreeMultiSet} container is also identified - * by this value (each value is itself also the element's key). + * @param Type of the elements. + * Each element in an {@link TreeSet} is also uniquely identified by this value. * - * @reference http://www.cplusplus.com/reference/set/multiset + * @reference http://www.cplusplus.com/reference/set/set * @author Jeongho Nam */ - class TreeMultiSet extends base.MultiSet implements base.ITreeSet { + class TreeSet extends base.UniqueSet implements base.ITreeSet { /** - * RB-Tree+ object for implemeting the {@link TreeMultiSet}. + * @hidden */ private tree_; /** @@ -8626,14 +8599,14 @@ declare namespace std { /** * Copy Constructor. */ - constructor(container: base.Container); + constructor(container: base.IContainer); /** * Copy Constructor with compare. * * @param container A container to be copied. * @param compare A binary predicate determines order of elements. */ - constructor(container: base.Container, compare: (x: T, y: T) => boolean); + constructor(container: base.IContainer, compare: (x: T, y: T) => boolean); /** * Range Constructor. * @@ -8642,7 +8615,7 @@ declare namespace std { */ constructor(begin: Iterator, end: Iterator); /** - * Construct from range and compare. + * Range Constructor with compare. * * @param begin Input interator of the initial position in a sequence. * @param end Input interator of the final position in a sequence. @@ -8657,10 +8630,6 @@ declare namespace std { * @inheritdoc */ find(val: T): SetIterator; - /** - * @inheritdoc - */ - count(val: T): number; /** * @inheritdoc */ @@ -8685,9 +8654,6 @@ declare namespace std { * @hidden */ protected insert_by_val(val: T): any; - /** - * @hidden - */ protected insert_by_hint(hint: SetIterator, val: T): SetIterator; /** * @hidden @@ -8704,7 +8670,7 @@ declare namespace std { /** * @inheritdoc */ - swap(obj: base.MultiSet): void; + swap(obj: base.UniqueSet): void; /** * @hidden */ @@ -8818,8 +8784,8 @@ declare namespace std { * end, they perform worse than the others, and have less consistent iterators and references than {@link List}s. *

* - *

- * + *

+ * *

* *

Container properties

@@ -9200,8 +9166,8 @@ declare namespace std { /** *

An iterator of Vector.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -9277,8 +9243,8 @@ declare namespace std { /** *

A reverse-iterator of Vector.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -9353,7 +9319,13 @@ declare namespace std.base { * @author Jeongho Nam */ class HashBuckets { + /** + * @hidden + */ private buckets_; + /** + * @hidden + */ private item_size_; /** * Default Constructor. @@ -9400,8 +9372,8 @@ declare namespace std.base { *

Elements with equivalent keys are grouped together in the same bucket and in such a way that * an iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

* - *

- * + *

+ * *

* *

Container properties

@@ -9696,8 +9668,8 @@ declare namespace std.base { /** *

Hash buckets storing {@link MapIterator MapIterators}.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -9727,8 +9699,8 @@ declare namespace std.base { * elements by their key, although they are generally less efficient for range iteration through a * subset of their elements.

* - *

- * + *

+ * *

* *

Container properties

@@ -9951,8 +9923,8 @@ declare namespace std.base { /** *

Hash buckets storing {@link SetIterator SetIterators}.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -9993,8 +9965,8 @@ declare namespace std.base { * beginning or the end, {@link IArray} objects perform worse and have less consistent iterators and references * than {@link List Lists}

. * - *

- * + *

+ * *

* *

Container properties

@@ -10107,8 +10079,8 @@ declare namespace std.base { *

There is not a single type of {@link IArrayIterator random-access iterator}: Each container may define its * own specific iterator type able to iterate through it and access its elements.

* - *

- * + *

+ * *

* * @reference http://www.cplusplus.com/reference/iterator/RandomAccessIterator @@ -10138,8 +10110,8 @@ declare namespace std.base { *

{@link IContainer} is an interface designed for sequence containers. Sequence containers of STL * (Standard Template Library) are based on the {@link IContainer}.

* - *

- * + *

+ * *

* *

Container properties

@@ -10330,8 +10302,8 @@ declare namespace std.base { /** *

An interface for deque

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -10360,8 +10332,8 @@ declare namespace std.base { /** *

An interface for linear containers.

* - *

- * + *

+ * *

* * @author Jeonngho Nam @@ -10522,7 +10494,7 @@ declare namespace std.base { * * * - *

* *

These constraints enforce a critical property of red-black trees: the path from the root to the farthest @@ -10717,7 +10689,7 @@ declare namespace std.base { * the only loop, and any rotations occur after this loop, this proves that a constant number of rotations * occur.

* - *

* * @param N A node to be inserted or swapped. @@ -10751,7 +10723,7 @@ declare namespace std.base { * node are black) is still violated, but now we can resolve this by * continuing to case 5.

* - *

* * @param N A node to be inserted or swapped. @@ -10782,7 +10754,7 @@ declare namespace std.base { * through {@link XTreeNode.parent P}. In each case, this is the only * black node of the three.

* - *

* * @param N A node to be inserted or swapped. @@ -10936,7 +10908,7 @@ declare namespace std.base { /** *

{@link XTreeNode.sibling S} is red.

* - *

* *

In this case we reverse the colors of {@link XTreeNode.parent P} and @@ -10958,7 +10930,7 @@ declare namespace std.base { *

{@link XTreeNode.parent P}, {@link XTreeNode.sibling S}, and {@link XTreeNode.sibling * S}'s children are black.

* - *

* *

In this case, we simply repaint {@link XTreeNode.sibling S} red. The @@ -10982,7 +10954,7 @@ declare namespace std.base { *

{@link XTreeNode.sibling S} and {@link XTreeNode.sibling S}'s children are * black, but {@link XTreeNode.parent P} is red.

* - *

* *

In this case, we simply exchange the colors of {@link XTreeNode.sibling S} and @@ -10999,7 +10971,7 @@ declare namespace std.base { * left child is red, {@link XTreeNode.sibling S}'s right child is * black, and N is the left child of its parent.

* - *

* *

In this case we rotate right at {@link XTreeNode.sibling S}, so that @@ -11038,7 +11010,7 @@ declare namespace std.base { *

Thus, the paths passing through N pass through one additional * black node.

* - *

* *

Meanwhile, if a path does not go through N, then there are two possibilities:

@@ -11122,8 +11094,8 @@ declare namespace std.base { * *

{@link ITreeMap TreeMultiMaps} are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -11257,13 +11229,19 @@ declare namespace std.base { /** *

A red-black tree storing {@link MapIterator MapIterators}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ class PairTree extends XTree> { + /** + * @hidden + */ private map_; + /** + * @hidden + */ private compare_; /** * Default Constructor. @@ -11409,8 +11387,8 @@ declare namespace std.base { * *

{@link ITreeSet TreeMultiSets} are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -11551,13 +11529,19 @@ declare namespace std.base { /** *

A red-black Tree storing {@link SetIterator SetIterators}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ class AtomicTree extends XTree> { + /** + * @hidden + */ private set_; + /** + * @hidden + */ private compare_; /** * Default Constructor. @@ -11738,30 +11722,3 @@ declare namespace std.base { uncle: XTreeNode; } } -declare namespace std.example { - function test_all(): void; -} -declare namespace std.example { - function test_anything(): void; -} -declare namespace std.example { - function test_bind(): void; -} -declare namespace std.example { - function test_deque(): void; -} -declare namespace std.example { - function test_for_each(): void; -} -declare namespace std.example { - function test_hash_map(): void; -} -declare namespace std.example { - function test_list(): void; -} -declare namespace std.example { - function sorting(): void; -} -declare namespace std.example { - function tree_set(): void; -} diff --git a/lib/typescript-stl.js b/lib/typescript-stl.js index 5eca6fb2..3c603c0b 100644 --- a/lib/typescript-stl.js +++ b/lib/typescript-stl.js @@ -1857,8 +1857,8 @@ var std; /** *

An abstract container.

* - *

- * + *

+ * *

* *

Container properties

@@ -1933,8 +1933,8 @@ var std; *

There is not a single type of {@link Iterator bidirectional iterator}: {@link IContainer Each container} * may define its own specific iterator type able to iterate through it and access its elements.

* - *

- * + *

+ * *

* * @reference http://www.cplusplus.com/reference/iterator/BidirectionalIterator @@ -2039,8 +2039,8 @@ var std; * first element in a range is reversed, the reversed iterator points to the element before the first element (this * would be the past-the-end element of the reversed range).

* - *

- * + *

+ * *

* * @reference http://www.cplusplus.com/reference/iterator/reverse_iterator @@ -2244,8 +2244,8 @@ var std; * the end, {@link Deque Deques} perform worse and have less consistent iterators and references than * {@link List Lists}.

* - *

- * + *

+ * *

* *

Container properties

@@ -2293,34 +2293,39 @@ var std; } } Object.defineProperty(Deque, "ROW", { + /// + // Row size of the {@link matrix_ matrix} which contains elements. + // + // Note that the {@link ROW} affects on time complexity of accessing and inserting element. + // Accessing element is {@link ROW} times slower than ordinary {@link Vector} and inserting element + // in middle position is {@link ROW} times faster than ordinary {@link Vector}. + // + // When the {@link ROW} returns 8, time complexity of accessing element is O(8) and inserting + // element in middle position is O(N/8). ({@link Vector}'s time complexity of accessement is O(1) + // and inserting element is O(N)). /** - *

Row size of the {@link matrix_ matrix} which contains elements.

- * - *

Note that the {@link ROW} affects on time complexity of accessing and inserting element. - * Accessing element is {@link ROW} times slower than ordinary {@link Vector} and inserting element - * in middle position is {@link ROW} times faster than ordinary {@link Vector}.

- * - *

When the {@link ROW} returns 8, time complexity of accessing element is O(8) and inserting - * element in middle position is O(N/8). ({@link Vector}'s time complexity of accessement is O(1) - * and inserting element is O(N)).

+ * @hidden */ get: function () { return 8; }, enumerable: true, configurable: true }); Object.defineProperty(Deque, "MIN_CAPACITY", { + /// + // Minimum {@link capacity}. + // + // Although a {@link Deque} has few elements, even no element is belonged to, the {@link Deque} + // keeps the minimum {@link capacity} at least. /** - *

Minimum {@link capacity}.

- * - *

Although a {@link Deque} has few elements, even no element is belonged to, the {@link Deque} - * keeps the minimum {@link capacity} at least.

+ * @hidden */ get: function () { return 100; }, enumerable: true, configurable: true }); + // Get column size; {@link capacity_ capacity} / {@link ROW row}. /** - * Get column size; {@link capacity_ capacity} / {@link ROW row}. + * @hidden */ Deque.prototype.get_col_size = function () { return Math.floor(this.capacity_ / Deque.ROW); @@ -2757,8 +2762,8 @@ var std; /** *

An iterator of {@link Deque}.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -2888,8 +2893,8 @@ var std; /** *

A reverse-iterator of Deque.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -3037,8 +3042,8 @@ var std; *

All objects thrown by components of the standard library are derived from this class. * Therefore, all standard exceptions can be caught by catching this type by reference.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/exception/exception * @author Jeongho Nam @@ -3101,8 +3106,8 @@ var std; * *

It is used as a base class for several logical error exceptions.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/logic_error * @author Jeongho Nam @@ -3132,8 +3137,8 @@ var std; *

No component of the standard library throws exceptions of this type. It is designed as a standard * exception to be thrown by programs.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/domain_error * @author Jeongho Nam @@ -3159,8 +3164,8 @@ var std; *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal invalid arguments.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/invalid_argument * @author Jeongho Nam @@ -3186,8 +3191,8 @@ var std; *

It is a standard exception that can be thrown by programs. Some components of the standard library, * such as vector and string also throw exceptions of this type to signal errors resizing.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/length_error * @author Jeongho Nam @@ -3214,8 +3219,8 @@ var std; * such as vector, deque, string and bitset also throw exceptions of this type to signal arguments * out of range.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/out_of_range * @author Jeongho Nam @@ -3248,8 +3253,8 @@ var std; * *

It is used as a base class for several runtime error exceptions.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/runtime_error * @author Jeongho Nam @@ -3275,8 +3280,8 @@ var std; *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal range errors.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/overflow_error * @author Jeongho Nam @@ -3302,8 +3307,8 @@ var std; *

No component of the standard library throws exceptions of this type. It is designed as a standard * exception to be thrown by programs.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/underflow_error * @author Jeongho Nam @@ -3330,8 +3335,8 @@ var std; *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal range errors.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/range_error * @author Jeongho Nam @@ -3840,8 +3845,8 @@ var std; * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -4144,8 +4149,8 @@ var std; /** *

An iterator of {@link MapContainer map container}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -4272,8 +4277,8 @@ var std; /** *

A reverse-iterator of {@link MapContainer map container}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -4345,8 +4350,8 @@ var std; * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -4551,8 +4556,8 @@ var std; * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -4640,8 +4645,8 @@ var std; *

{@link HashMap} containers are faster than {@link TreeMap} containers to access individual elements by their * key, although they are generally less efficient for range iteration through a subset of their elements.

* - *

- * + *

+ * *

* *

Container properties

@@ -4886,6 +4891,8 @@ var std; }(std.base.UniqueMap)); std.HashMap = HashMap; })(std || (std = {})); +/// +/// var std; (function (std) { /** @@ -4907,8 +4914,8 @@ var std; *

Elements with equivalent keys are grouped together in the same bucket and in such a way that * an iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

* - *

- * + *

+ * *

* *

Container properties

@@ -5164,8 +5171,8 @@ var std; * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -5413,8 +5420,8 @@ var std; /** *

An iterator of a Set.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -5514,8 +5521,8 @@ var std; /** *

A reverse-iterator of Set.

* - *

- *

+ *

+ *

* * @param Type of the elements. * @@ -5542,119 +5549,6 @@ var std; /// /// var std; -(function (std) { - var base; - (function (base) { - /** - *

An abstract set.

- * - *

{@link SetContainer SetContainers} are containers that store elements allowing fast retrieval of - * individual elements based on their value.

- * - *

In an {@link SetContainer}, the value of an element is at the same time its key, used to uniquely - * identify it. Keys are immutable, therefore, the elements in an {@link SetContainer} cannot be modified - * once in the container - they can be inserted and removed, though.

- * - *

{@link SetContainer} stores elements, keeps sequence and enables indexing by inserting elements into a - * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index - * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

- * - *

- *

- * - *

Container properties

- *
- *
Associative
- *
- * Elements in associative containers are referenced by their key and not by their absolute - * position in the container. - *
- * - *
Set
- *
The value of an element is also the key used to identify it.
- * - *
Unique keys
- *
No two elements in the container can have equivalent keys.
- *
- * - * @param Type of the elements. Each element in a {@link SetContainer} container is also identified - * by this value (each value is itself also the element's key). - * - * @author Jeongho Nam - */ - var UniqueSet = (function (_super) { - __extends(UniqueSet, _super); - function UniqueSet() { - _super.apply(this, arguments); - } - /* --------------------------------------------------------- - ACCESSOR - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - UniqueSet.prototype.count = function (key) { - return this.find(key).equal_to(this.end()) ? 0 : 1; - }; - UniqueSet.prototype.extract = function (param) { - if (param instanceof std.SetIterator) - return this.extract_by_iterator(param); - else if (param instanceof std.SetReverseIterator) - return this.extract_by_reverse_iterator(param); - else - return this.extract_by_key(param); - }; - /** - * @hidden - */ - UniqueSet.prototype.extract_by_key = function (val) { - var it = this.find(val); - if (it.equal_to(this.end()) == true) - throw new std.OutOfRange("No such key exists."); - return val; - }; - /** - * @hidden - */ - UniqueSet.prototype.extract_by_iterator = function (it) { - if (it.equal_to(this.end()) == true || this.has(it.value) == false) - return this.end(); - this.erase(it); - return it; - }; - /** - * @hidden - */ - UniqueSet.prototype.extract_by_reverse_iterator = function (it) { - this.extract_by_iterator(it.base().next()); - return it; - }; - UniqueSet.prototype.insert = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; - } - return _super.prototype.insert.apply(this, args); - }; - /* --------------------------------------------------------- - UTILITIES - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - UniqueSet.prototype.swap = function (obj) { - var vec = new std.Vector(this.begin(), this.end()); - this.assign(obj.begin(), obj.end()); - obj.assign(vec.begin(), vec.end()); - }; - return UniqueSet; - }(base.SetContainer)); - base.UniqueSet = UniqueSet; - })(base = std.base || (std.base = {})); -})(std || (std = {})); -/// -/// -var std; (function (std) { var base; (function (base) { @@ -5672,8 +5566,8 @@ var std; * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -5724,30 +5618,29 @@ var std; })(base = std.base || (std.base = {})); })(std || (std = {})); /// -/// /// var std; (function (std) { /** - *

Hashed, unordered set.

+ *

Hashed, unordered Multiset.

* - *

{@link HashSet}s are containers that store unique elements in no particular order, and which - * allow for fast retrieval of individual elements based on their value.

+ *

{@link HashMultiSet HashMultiSets} are containers that store elements in no particular order, allowing fast + * retrieval of individual elements based on their value, much like {@link HashSet} containers, + * but allowing different elements to have equivalent values.

* - *

In an {@link HashSet}, the value of an element is at the same time its key, that - * identifies it uniquely. Keys are immutable, therefore, the elements in an {@link HashSet} cannot be + *

In an {@link HashMultiSet}, the value of an element is at the same time its key, used to + * identify it. Keys are immutable, therefore, the elements in an {@link HashMultiSet} cannot be * modified once in the container - they can be inserted and removed, though.

* - *

Internally, the elements in the {@link HashSet} are not sorted in any particular order, but - * organized into buckets depending on their hash values to allow for fast access to individual elements - * directly by their values (with a constant average time complexity on average).

+ *

Internally, the elements in the {@link HashMultiSet} are not sorted in any particular, but + * organized into buckets depending on their hash values to allow for fast access to individual + * elements directly by their values (with a constant average time complexity on average).

* - *

{@link HashSet} containers are faster than {@link TreeSet} containers to access individual - * elements by their key, although they are generally less efficient for range iteration through a - * subset of their elements.

+ *

Elements with equivalent values are grouped together in the same bucket and in such a way that an + * iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -5762,20 +5655,23 @@ var std; *
Set
*
The value of an element is also the key used to identify it.
* - *
Unique keys
- *
No two elements in the container can have equivalent keys.
+ *
Multiple equivalent keys
+ *
The container can hold multiple elements with equivalent keys.
*
* * @param Type of the elements. - * Each element in an {@link HashSet} is also uniquely identified by this value. + * Each element in an {@link UnorderedMultiSet} is also identified by this value.. * - * @reference http://www.cplusplus.com/reference/unordered_set/unordered_set + * @reference http://www.cplusplus.com/reference/unordered_set/unordered_multiset * @author Jeongho Nam */ - var HashSet = (function (_super) { - __extends(HashSet, _super); - function HashSet() { + var HashMultiSet = (function (_super) { + __extends(HashMultiSet, _super); + function HashMultiSet() { _super.apply(this, arguments); + /** + * @hidden + */ this.hash_buckets_ = new std.base.SetHashBuckets(this); } /* ========================================================= @@ -5791,14 +5687,14 @@ var std; /** * @hidden */ - HashSet.prototype.init = function () { + HashMultiSet.prototype.init = function () { _super.prototype.init.call(this); this.hash_buckets_ = new std.base.SetHashBuckets(this); }; /** * @hidden */ - HashSet.prototype.construct_from_array = function (items) { + HashMultiSet.prototype.construct_from_array = function (items) { this.hash_buckets_.rehash(items.length * std.base.Hash.RATIO); _super.prototype.construct_from_array.call(this, items); }; @@ -5808,7 +5704,7 @@ var std; /** * @inheritdoc */ - HashSet.prototype.clear = function () { + HashMultiSet.prototype.clear = function () { this.hash_buckets_.clear(); _super.prototype.clear.call(this); }; @@ -5822,28 +5718,42 @@ var std; /** * @inheritdoc */ - HashSet.prototype.find = function (key) { + HashMultiSet.prototype.find = function (key) { return this.hash_buckets_.find(key); }; - HashSet.prototype.begin = function (index) { + /** + * @inheritdoc + */ + HashMultiSet.prototype.count = function (key) { + // FIND MATCHED BUCKET + var index = std.hash(key) % this.hash_buckets_.item_size(); + var bucket = this.hash_buckets_.at(index); + // ITERATE THE BUCKET + var cnt = 0; + for (var i = 0; i < bucket.length; i++) + if (std.equal_to(bucket[i].value, key)) + cnt++; + return cnt; + }; + HashMultiSet.prototype.begin = function (index) { if (index == undefined) return _super.prototype.begin.call(this); else return this.hash_buckets_.at(index).front(); }; - HashSet.prototype.end = function (index) { + HashMultiSet.prototype.end = function (index) { if (index == undefined) return _super.prototype.end.call(this); else return this.hash_buckets_.at(index).back().next(); }; - HashSet.prototype.rbegin = function (index) { + HashMultiSet.prototype.rbegin = function (index) { if (index == undefined) return _super.prototype.rbegin.call(this); else return new std.SetReverseIterator(this.end(index)); }; - HashSet.prototype.rend = function (index) { + HashMultiSet.prototype.rend = function (index) { if (index == undefined) return _super.prototype.rend.call(this); else @@ -5855,16 +5765,16 @@ var std; /** * @inheritdoc */ - HashSet.prototype.bucket_count = function () { + HashMultiSet.prototype.bucket_count = function () { return this.hash_buckets_.size(); }; /** * @inheritdoc */ - HashSet.prototype.bucket_size = function (n) { + HashMultiSet.prototype.bucket_size = function (n) { return this.hash_buckets_.at(n).size(); }; - HashSet.prototype.max_load_factor = function (z) { + HashMultiSet.prototype.max_load_factor = function (z) { if (z == undefined) return this.size() / this.bucket_count(); else @@ -5873,19 +5783,19 @@ var std; /** * @inheritdoc */ - HashSet.prototype.bucket = function (key) { + HashMultiSet.prototype.bucket = function (key) { return std.hash(key) % this.hash_buckets_.size(); }; /** * @inheritdoc */ - HashSet.prototype.reserve = function (n) { + HashMultiSet.prototype.reserve = function (n) { this.hash_buckets_.rehash(Math.ceil(n * this.max_load_factor())); }; /** * @inheritdoc */ - HashSet.prototype.rehash = function (n) { + HashMultiSet.prototype.rehash = function (n) { if (n <= this.bucket_count()) return; this.hash_buckets_.rehash(n); @@ -5900,25 +5810,16 @@ var std; /** * @hidden */ - HashSet.prototype.insert_by_val = function (val) { - // TEST WHETHER EXIST - var it = this.find(val); - if (it.equal_to(this.end()) == false) - return std.make_pair(it, false); + HashMultiSet.prototype.insert_by_val = function (val) { // INSERT - this.data_.push_back(val); - it = it.prev(); - // POST-PROCESS - this.handle_insert(it, it.next()); - return std.make_pair(it, true); + var it = new std.SetIterator(this, this.data_.insert(this.data_.end(), val)); + this.handle_insert(it, it.next()); // POST-PROCESS + return it; }; /** * @hidden */ - HashSet.prototype.insert_by_hint = function (hint, val) { - // FIND KEY - if (this.has(val) == true) - return this.end(); + HashMultiSet.prototype.insert_by_hint = function (hint, val) { // INSERT var list_iterator = this.data_.insert(hint.get_list_iterator(), val); // POST-PROCESS @@ -5929,22 +5830,14 @@ var std; /** * @hidden */ - HashSet.prototype.insert_by_range = function (first, last) { - var my_first = this.end().prev(); - var size = 0; - for (; !first.equal_to(last); first = first.next()) { - // TEST WHETER EXIST - if (this.has(first.value)) - continue; - // INSERTS - this.data_.push_back(first.value); - size++; - } - my_first = my_first.next(); + HashMultiSet.prototype.insert_by_range = function (first, last) { + // INSERT ELEMENTS + var list_iterator = this.data_.insert(this.data_.end(), first, last); + var my_first = new std.SetIterator(this, list_iterator); // IF NEEDED, HASH_BUCKET TO HAVE SUITABLE SIZE - if (this.size() + size > this.hash_buckets_.size() * std.base.Hash.MAX_RATIO) - this.hash_buckets_.rehash((this.size() + size) * std.base.Hash.RATIO); - // INSERTS + if (this.size() > this.hash_buckets_.item_size() * std.base.Hash.MAX_RATIO) + this.hash_buckets_.rehash(this.size() * std.base.Hash.RATIO); + // POST-PROCESS this.handle_insert(my_first, this.end()); }; /* --------------------------------------------------------- @@ -5953,14 +5846,14 @@ var std; /** * @inheritdoc */ - HashSet.prototype.handle_insert = function (first, last) { + HashMultiSet.prototype.handle_insert = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.hash_buckets_.insert(first); }; /** * @inheritdoc */ - HashSet.prototype.handle_erase = function (first, last) { + HashMultiSet.prototype.handle_erase = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.hash_buckets_.erase(first); }; @@ -5970,8 +5863,8 @@ var std; /** * @inheritdoc */ - HashSet.prototype.swap = function (obj) { - if (obj instanceof HashSet) + HashMultiSet.prototype.swap = function (obj) { + if (obj instanceof HashMultiSet) this.swap_tree_set(obj); else _super.prototype.swap.call(this, obj); @@ -5979,37 +5872,152 @@ var std; /** * @hidden */ - HashSet.prototype.swap_tree_set = function (obj) { + HashMultiSet.prototype.swap_tree_set = function (obj) { _a = [obj.data_, this.data_], this.data_ = _a[0], obj.data_ = _a[1]; _b = [obj.hash_buckets_, this.hash_buckets_], this.hash_buckets_ = _b[0], obj.hash_buckets_ = _b[1]; var _a, _b; }; - return HashSet; - }(std.base.UniqueSet)); - std.HashSet = HashSet; -})(std || (std = {})); + return HashMultiSet; + }(std.base.MultiSet)); + std.HashMultiSet = HashMultiSet; +})(std || (std = {})); +/// +/// +var std; +(function (std) { + var base; + (function (base) { + /** + *

An abstract set.

+ * + *

{@link SetContainer SetContainers} are containers that store elements allowing fast retrieval of + * individual elements based on their value.

+ * + *

In an {@link SetContainer}, the value of an element is at the same time its key, used to uniquely + * identify it. Keys are immutable, therefore, the elements in an {@link SetContainer} cannot be modified + * once in the container - they can be inserted and removed, though.

+ * + *

{@link SetContainer} stores elements, keeps sequence and enables indexing by inserting elements into a + * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index + * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

+ * + *

+ *

+ * + *

Container properties

+ *
+ *
Associative
+ *
+ * Elements in associative containers are referenced by their key and not by their absolute + * position in the container. + *
+ * + *
Set
+ *
The value of an element is also the key used to identify it.
+ * + *
Unique keys
+ *
No two elements in the container can have equivalent keys.
+ *
+ * + * @param Type of the elements. Each element in a {@link SetContainer} container is also identified + * by this value (each value is itself also the element's key). + * + * @author Jeongho Nam + */ + var UniqueSet = (function (_super) { + __extends(UniqueSet, _super); + function UniqueSet() { + _super.apply(this, arguments); + } + /* --------------------------------------------------------- + ACCESSOR + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + UniqueSet.prototype.count = function (key) { + return this.find(key).equal_to(this.end()) ? 0 : 1; + }; + UniqueSet.prototype.extract = function (param) { + if (param instanceof std.SetIterator) + return this.extract_by_iterator(param); + else if (param instanceof std.SetReverseIterator) + return this.extract_by_reverse_iterator(param); + else + return this.extract_by_key(param); + }; + /** + * @hidden + */ + UniqueSet.prototype.extract_by_key = function (val) { + var it = this.find(val); + if (it.equal_to(this.end()) == true) + throw new std.OutOfRange("No such key exists."); + return val; + }; + /** + * @hidden + */ + UniqueSet.prototype.extract_by_iterator = function (it) { + if (it.equal_to(this.end()) == true || this.has(it.value) == false) + return this.end(); + this.erase(it); + return it; + }; + /** + * @hidden + */ + UniqueSet.prototype.extract_by_reverse_iterator = function (it) { + this.extract_by_iterator(it.base().next()); + return it; + }; + UniqueSet.prototype.insert = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i - 0] = arguments[_i]; + } + return _super.prototype.insert.apply(this, args); + }; + /* --------------------------------------------------------- + UTILITIES + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + UniqueSet.prototype.swap = function (obj) { + var vec = new std.Vector(this.begin(), this.end()); + this.assign(obj.begin(), obj.end()); + obj.assign(vec.begin(), vec.end()); + }; + return UniqueSet; + }(base.SetContainer)); + base.UniqueSet = UniqueSet; + })(base = std.base || (std.base = {})); +})(std || (std = {})); +/// +/// var std; (function (std) { /** - *

Hashed, unordered Multiset.

+ *

Hashed, unordered set.

* - *

{@link HashMultiSet HashMultiSets} are containers that store elements in no particular order, allowing fast - * retrieval of individual elements based on their value, much like {@link HashSet} containers, - * but allowing different elements to have equivalent values.

+ *

{@link HashSet}s are containers that store unique elements in no particular order, and which + * allow for fast retrieval of individual elements based on their value.

* - *

In an {@link HashMultiSet}, the value of an element is at the same time its key, used to - * identify it. Keys are immutable, therefore, the elements in an {@link HashMultiSet} cannot be + *

In an {@link HashSet}, the value of an element is at the same time its key, that + * identifies it uniquely. Keys are immutable, therefore, the elements in an {@link HashSet} cannot be * modified once in the container - they can be inserted and removed, though.

* - *

Internally, the elements in the {@link HashMultiSet} are not sorted in any particular, but - * organized into buckets depending on their hash values to allow for fast access to individual - * elements directly by their values (with a constant average time complexity on average).

+ *

Internally, the elements in the {@link HashSet} are not sorted in any particular order, but + * organized into buckets depending on their hash values to allow for fast access to individual elements + * directly by their values (with a constant average time complexity on average).

* - *

Elements with equivalent values are grouped together in the same bucket and in such a way that an - * iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

+ *

{@link HashSet} containers are faster than {@link TreeSet} containers to access individual + * elements by their key, although they are generally less efficient for range iteration through a + * subset of their elements.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -6024,20 +6032,23 @@ var std; *
Set
*
The value of an element is also the key used to identify it.
* - *
Multiple equivalent keys
- *
The container can hold multiple elements with equivalent keys.
+ *
Unique keys
+ *
No two elements in the container can have equivalent keys.
*
* * @param Type of the elements. - * Each element in an {@link UnorderedMultiSet} is also identified by this value.. + * Each element in an {@link HashSet} is also uniquely identified by this value. * - * @reference http://www.cplusplus.com/reference/unordered_set/unordered_multiset + * @reference http://www.cplusplus.com/reference/unordered_set/unordered_set * @author Jeongho Nam */ - var HashMultiSet = (function (_super) { - __extends(HashMultiSet, _super); - function HashMultiSet() { + var HashSet = (function (_super) { + __extends(HashSet, _super); + function HashSet() { _super.apply(this, arguments); + /** + * @hidden + */ this.hash_buckets_ = new std.base.SetHashBuckets(this); } /* ========================================================= @@ -6053,14 +6064,14 @@ var std; /** * @hidden */ - HashMultiSet.prototype.init = function () { + HashSet.prototype.init = function () { _super.prototype.init.call(this); this.hash_buckets_ = new std.base.SetHashBuckets(this); }; /** * @hidden */ - HashMultiSet.prototype.construct_from_array = function (items) { + HashSet.prototype.construct_from_array = function (items) { this.hash_buckets_.rehash(items.length * std.base.Hash.RATIO); _super.prototype.construct_from_array.call(this, items); }; @@ -6070,7 +6081,7 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.clear = function () { + HashSet.prototype.clear = function () { this.hash_buckets_.clear(); _super.prototype.clear.call(this); }; @@ -6084,42 +6095,28 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.find = function (key) { + HashSet.prototype.find = function (key) { return this.hash_buckets_.find(key); }; - /** - * @inheritdoc - */ - HashMultiSet.prototype.count = function (key) { - // FIND MATCHED BUCKET - var index = std.hash(key) % this.hash_buckets_.item_size(); - var bucket = this.hash_buckets_.at(index); - // ITERATE THE BUCKET - var cnt = 0; - for (var i = 0; i < bucket.length; i++) - if (std.equal_to(bucket[i].value, key)) - cnt++; - return cnt; - }; - HashMultiSet.prototype.begin = function (index) { + HashSet.prototype.begin = function (index) { if (index == undefined) return _super.prototype.begin.call(this); else return this.hash_buckets_.at(index).front(); }; - HashMultiSet.prototype.end = function (index) { + HashSet.prototype.end = function (index) { if (index == undefined) return _super.prototype.end.call(this); else return this.hash_buckets_.at(index).back().next(); }; - HashMultiSet.prototype.rbegin = function (index) { + HashSet.prototype.rbegin = function (index) { if (index == undefined) return _super.prototype.rbegin.call(this); else return new std.SetReverseIterator(this.end(index)); }; - HashMultiSet.prototype.rend = function (index) { + HashSet.prototype.rend = function (index) { if (index == undefined) return _super.prototype.rend.call(this); else @@ -6131,16 +6128,16 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.bucket_count = function () { + HashSet.prototype.bucket_count = function () { return this.hash_buckets_.size(); }; /** * @inheritdoc */ - HashMultiSet.prototype.bucket_size = function (n) { + HashSet.prototype.bucket_size = function (n) { return this.hash_buckets_.at(n).size(); }; - HashMultiSet.prototype.max_load_factor = function (z) { + HashSet.prototype.max_load_factor = function (z) { if (z == undefined) return this.size() / this.bucket_count(); else @@ -6149,19 +6146,19 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.bucket = function (key) { + HashSet.prototype.bucket = function (key) { return std.hash(key) % this.hash_buckets_.size(); }; /** * @inheritdoc */ - HashMultiSet.prototype.reserve = function (n) { + HashSet.prototype.reserve = function (n) { this.hash_buckets_.rehash(Math.ceil(n * this.max_load_factor())); }; /** * @inheritdoc */ - HashMultiSet.prototype.rehash = function (n) { + HashSet.prototype.rehash = function (n) { if (n <= this.bucket_count()) return; this.hash_buckets_.rehash(n); @@ -6176,16 +6173,25 @@ var std; /** * @hidden */ - HashMultiSet.prototype.insert_by_val = function (val) { + HashSet.prototype.insert_by_val = function (val) { + // TEST WHETHER EXIST + var it = this.find(val); + if (it.equal_to(this.end()) == false) + return std.make_pair(it, false); // INSERT - var it = new std.SetIterator(this, this.data_.insert(this.data_.end(), val)); - this.handle_insert(it, it.next()); // POST-PROCESS - return it; + this.data_.push_back(val); + it = it.prev(); + // POST-PROCESS + this.handle_insert(it, it.next()); + return std.make_pair(it, true); }; /** * @hidden */ - HashMultiSet.prototype.insert_by_hint = function (hint, val) { + HashSet.prototype.insert_by_hint = function (hint, val) { + // FIND KEY + if (this.has(val) == true) + return this.end(); // INSERT var list_iterator = this.data_.insert(hint.get_list_iterator(), val); // POST-PROCESS @@ -6196,14 +6202,22 @@ var std; /** * @hidden */ - HashMultiSet.prototype.insert_by_range = function (first, last) { - // INSERT ELEMENTS - var list_iterator = this.data_.insert(this.data_.end(), first, last); - var my_first = new std.SetIterator(this, list_iterator); + HashSet.prototype.insert_by_range = function (first, last) { + var my_first = this.end().prev(); + var size = 0; + for (; !first.equal_to(last); first = first.next()) { + // TEST WHETER EXIST + if (this.has(first.value)) + continue; + // INSERTS + this.data_.push_back(first.value); + size++; + } + my_first = my_first.next(); // IF NEEDED, HASH_BUCKET TO HAVE SUITABLE SIZE - if (this.size() > this.hash_buckets_.item_size() * std.base.Hash.MAX_RATIO) - this.hash_buckets_.rehash(this.size() * std.base.Hash.RATIO); - // POST-PROCESS + if (this.size() + size > this.hash_buckets_.size() * std.base.Hash.MAX_RATIO) + this.hash_buckets_.rehash((this.size() + size) * std.base.Hash.RATIO); + // INSERTS this.handle_insert(my_first, this.end()); }; /* --------------------------------------------------------- @@ -6212,14 +6226,14 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.handle_insert = function (first, last) { + HashSet.prototype.handle_insert = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.hash_buckets_.insert(first); }; /** * @inheritdoc */ - HashMultiSet.prototype.handle_erase = function (first, last) { + HashSet.prototype.handle_erase = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.hash_buckets_.erase(first); }; @@ -6229,8 +6243,8 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.swap = function (obj) { - if (obj instanceof HashMultiSet) + HashSet.prototype.swap = function (obj) { + if (obj instanceof HashSet) this.swap_tree_set(obj); else _super.prototype.swap.call(this, obj); @@ -6238,14 +6252,14 @@ var std; /** * @hidden */ - HashMultiSet.prototype.swap_tree_set = function (obj) { + HashSet.prototype.swap_tree_set = function (obj) { _a = [obj.data_, this.data_], this.data_ = _a[0], obj.data_ = _a[1]; _b = [obj.hash_buckets_, this.hash_buckets_], this.hash_buckets_ = _b[0], obj.hash_buckets_ = _b[1]; var _a, _b; }; - return HashMultiSet; - }(std.base.MultiSet)); - std.HashMultiSet = HashMultiSet; + return HashSet; + }(std.base.UniqueSet)); + std.HashSet = HashSet; })(std || (std = {})); /// /// @@ -6275,8 +6289,8 @@ var std; * distance between these. They also consume some extra memory to keep the linking information associated to each * element (which may be an important factor for large lists of small-sized elements).

* - *

- * + *

+ * *

* *

Container properties

@@ -6714,8 +6728,8 @@ var std; /** *

An iterator, node of a List.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -6844,8 +6858,8 @@ var std; /** *

A reverse-iterator of List.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -6915,8 +6929,8 @@ var std; * By default, if no container class is specified for a particular {@link Queue} class instantiation, the standard * container {@link List} is used.

* - *

- * + *

+ * *

* * @param Type of elements. @@ -7251,8 +7265,8 @@ var std; * By default, if no container class is specified for a particular {@link Stack} class instantiation, the standard * container {@link List} is used.

* - *

- * + *

+ * *

* * @param Type of elements. @@ -7380,8 +7394,8 @@ var std; * so that they can be interpreted when needed as more abstract (and portable) * {@link ErrorCondition error conditions}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -7510,8 +7524,8 @@ var std; *

The class inherits from {@link RuntimeError}, to which it adds an {@link ErrorCode} as * member code (and defines a specialized what member).

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/system_error * @author Jeongho Nam @@ -7560,8 +7574,8 @@ var std; * passed by reference. As such, only one object of each of these types shall exist, each uniquely identifying its own * category: all error codes and conditions of a same category shall return a reference to same object.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_category * @author Jeongho Nam @@ -7640,8 +7654,8 @@ var std; *

The {@link ErrorCategory categories} associated with the {@link ErrorCondition} and the * {@link ErrorCode} define the equivalences between them.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_condition * @author Jeongho Nam @@ -7671,8 +7685,8 @@ var std; *

Objects of this class associate such numerical codes to {@link ErrorCategory error categories}, so that they * can be interpreted when needed as more abstract (and portable) {@link ErrorCondition error conditions}.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_code * @author Jeongho Nam @@ -7690,7 +7704,6 @@ var std; })(std || (std = {})); /// /// -/// var std; (function (std) { /** @@ -7714,8 +7727,8 @@ var std; * *

{@link TreeMap}s are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -7935,6 +7948,8 @@ var std; }(std.base.UniqueMap)); std.TreeMap = TreeMap; })(std || (std = {})); +/// +/// var std; (function (std) { /** @@ -7960,8 +7975,8 @@ var std; * *

{@link TreeMultiMap TreeMultiMaps} are typically implemented as binary search trees.

* - *

< - * img src="http://samchon.github.io/typescript-stl/api/assets/images/design/map_containers.png" style="max-width: 100%" />

+ *

< + * img src="http://samchon.github.io/typescript-stl/images/design/class_diagram/map_containers.png" style="max-width: 100%" />

* *

Container properties

*
@@ -8201,31 +8216,31 @@ var std; std.TreeMultiMap = TreeMultiMap; })(std || (std = {})); /// -/// /// var std; (function (std) { /** - *

Tree-structured set, std::set of STL.

+ *

Tree-structured multiple-key set.

* - *

{@link TreeSet}s are containers that store unique elements following a specific order.

+ *

{@link TreeMultiSet TreeMultiSets} are containers that store elements following a specific order, and + * where multiple elements can have equivalent values.

* - *

In a {@link TreeSet}, the value of an element also identifies it (the value is itself the - * key, of type T), and each value must be unique. The value of the elements in a - * {@link TreeSet} cannot be modified once in the container (the elements are always const), but they - * can be inserted or removed from the

+ *

In a {@link TreeMultiSet}, the value of an element also identifies it (the value is itself + * the key, of type T). The value of the elements in a {@link TreeMultiSet} cannot + * be modified once in the container (the elements are always const), but they can be inserted or removed + * from the

* - *

Internally, the elements in a {@link TreeSet} are always sorted following a specific strict weak - * ordering criterion indicated by its internal comparison method (of {@link less}).

+ *

Internally, the elements in a {@link TreeMultiSet TreeMultiSets} are always sorted following a strict + * weak ordering criterion indicated by its internal comparison method (of {@link IComparable.less less}).

* - *

{@link TreeSet} containers are generally slower than {@link HashSet} containers to access - * individual elements by their key, but they allow the direct iteration on subsets based on their - * order.

+ *

{@link TreeMultiSet} containers are generally slower than {@link HashMultiSet} containers + * to access individual elements by their key, but they allow the direct iteration on subsets based on + * their order.

* - *

{@link TreeSet}s are typically implemented as binary search trees.

+ *

{@link TreeMultiSet TreeMultiSets} are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -8244,19 +8259,19 @@ var std; *
Set
*
The value of an element is also the key used to identify it.
* - *
Unique keys
- *
No two elements in the container can have equivalent keys.
+ *
Multiple equivalent keys
+ *
Multiple elements in the container can have equivalent keys.
*
* - * @param Type of the elements. - * Each element in an {@link TreeSet} is also uniquely identified by this value. + * @param Type of the elements. Each element in a {@link TreeMultiSet} container is also identified + * by this value (each value is itself also the element's key). * - * @reference http://www.cplusplus.com/reference/set/set + * @reference http://www.cplusplus.com/reference/set/multiset * @author Jeongho Nam */ - var TreeSet = (function (_super) { - __extends(TreeSet, _super); - function TreeSet() { + var TreeMultiSet = (function (_super) { + __extends(TreeMultiSet, _super); + function TreeMultiSet() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i - 0] = arguments[_i]; @@ -8296,7 +8311,7 @@ var std; /** * @inheritdoc */ - TreeSet.prototype.clear = function () { + TreeMultiSet.prototype.clear = function () { _super.prototype.clear.call(this); this.tree_.clear(); }; @@ -8306,9 +8321,9 @@ var std; /** * @inheritdoc */ - TreeSet.prototype.find = function (val) { + TreeMultiSet.prototype.find = function (val) { var node = this.tree_.find(val); - if (node == null || std.equal_to(node.value.value, val) == false) + if (node == null || std.equal_to(val, node.value.value) == false) return this.end(); else return node.value; @@ -8316,31 +8331,41 @@ var std; /** * @inheritdoc */ - TreeSet.prototype.key_comp = function () { + TreeMultiSet.prototype.count = function (val) { + var it = this.find(val); + var cnt = 0; + for (; !it.equal_to(this.end()) && std.equal_to(it.value, val); it = it.next()) + cnt++; + return cnt; + }; + /** + * @inheritdoc + */ + TreeMultiSet.prototype.key_comp = function () { return this.tree_.key_comp(); }; /** * @inheritdoc */ - TreeSet.prototype.value_comp = function () { + TreeMultiSet.prototype.value_comp = function () { return this.tree_.key_comp(); }; /** * @inheritdoc */ - TreeSet.prototype.lower_bound = function (val) { + TreeMultiSet.prototype.lower_bound = function (val) { return this.tree_.lower_bound(val); }; /** * @inheritdoc */ - TreeSet.prototype.upper_bound = function (val) { - return this.tree_.lower_bound(val); + TreeMultiSet.prototype.upper_bound = function (val) { + return this.tree_.upper_bound(val); }; /** * @inheritdoc */ - TreeSet.prototype.equal_range = function (val) { + TreeMultiSet.prototype.equal_range = function (val) { return this.tree_.equal_range(val); }; /* ========================================================= @@ -8353,36 +8378,41 @@ var std; /** * @hidden */ - TreeSet.prototype.insert_by_val = function (val) { + TreeMultiSet.prototype.insert_by_val = function (val) { var node = this.tree_.find(val); - // IF EQUALS, THEN RETURN FALSE - if (node != null && std.equal_to(node.value.value, val) == true) - return std.make_pair(node.value, false); - // FIND NODE var it; - if (node == null) + // FIND NODE + if (node == null) { it = this.end(); - else if (std.less(node.value.value, val) == true) + } + else if (std.equal_to(node.value.value, val) == true) { it = node.value.next(); - else + } + else if (std.less(node.value.value, val) == true) { + it = node.value.next(); + while (it.equal_to(this.end()) == false && std.less(it.value, val)) + it = it.next(); + } + else { it = node.value; + } ///// // INSERTS ///// it = new std.SetIterator(this, this.data_.insert(it.get_list_iterator(), val)); this.handle_insert(it, it.next()); // POST-PROCESS - return std.make_pair(it, true); + return it; }; - TreeSet.prototype.insert_by_hint = function (hint, val) { - // FIND KEY - if (this.has(val) == true) - return this.end(); + /** + * @hidden + */ + TreeMultiSet.prototype.insert_by_hint = function (hint, val) { // VALIDATE HINT var ret; var compare = this.tree_.key_comp(); - // hint < current && current < next - if (compare(hint.value, val) == true - && (hint.next().equal_to(this.end()) || compare(val, hint.next().value) == true)) { + // hint <= current && current <= next + if ((compare(hint.value, val) || std.equal_to(hint.value, val)) + && (hint.next().equal_to(this.end()) || (compare(val, hint.next().value) || std.equal_to(val, hint.next().value)))) { /////// // RIGHT HINT /////// @@ -8396,14 +8426,14 @@ var std; // WRONG HINT /////// // INSERT BY AUTOMATIC NODE FINDING - ret = this.insert_by_val(val).first; + ret = this.insert_by_val(val); } return ret; }; /** * @hidden */ - TreeSet.prototype.insert_by_range = function (first, last) { + TreeMultiSet.prototype.insert_by_range = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.insert_by_val(first.value); }; @@ -8413,13 +8443,13 @@ var std; /** * @inheritdoc */ - TreeSet.prototype.handle_insert = function (first, last) { + TreeMultiSet.prototype.handle_insert = function (first, last) { this.tree_.insert(first); }; /** * @inheritdoc */ - TreeSet.prototype.handle_erase = function (first, last) { + TreeMultiSet.prototype.handle_erase = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.tree_.erase(last); }; @@ -8429,8 +8459,8 @@ var std; /** * @inheritdoc */ - TreeSet.prototype.swap = function (obj) { - if (obj instanceof TreeSet) + TreeMultiSet.prototype.swap = function (obj) { + if (obj instanceof TreeMultiSet) this.swap_tree_set(obj); else _super.prototype.swap.call(this, obj); @@ -8438,39 +8468,40 @@ var std; /** * @hidden */ - TreeSet.prototype.swap_tree_set = function (obj) { + TreeMultiSet.prototype.swap_tree_set = function (obj) { _a = [obj.data_, this.data_], this.data_ = _a[0], obj.data_ = _a[1]; _b = [obj.tree_, this.tree_], this.tree_ = _b[0], obj.tree_ = _b[1]; var _a, _b; }; - return TreeSet; - }(std.base.UniqueSet)); - std.TreeSet = TreeSet; + return TreeMultiSet; + }(std.base.MultiSet)); + std.TreeMultiSet = TreeMultiSet; })(std || (std = {})); +/// +/// var std; (function (std) { /** - *

Tree-structured multiple-key set.

+ *

Tree-structured set, std::set of STL.

* - *

{@link TreeMultiSet TreeMultiSets} are containers that store elements following a specific order, and - * where multiple elements can have equivalent values.

+ *

{@link TreeSet}s are containers that store unique elements following a specific order.

* - *

In a {@link TreeMultiSet}, the value of an element also identifies it (the value is itself - * the key, of type T). The value of the elements in a {@link TreeMultiSet} cannot - * be modified once in the container (the elements are always const), but they can be inserted or removed - * from the

+ *

In a {@link TreeSet}, the value of an element also identifies it (the value is itself the + * key, of type T), and each value must be unique. The value of the elements in a + * {@link TreeSet} cannot be modified once in the container (the elements are always const), but they + * can be inserted or removed from the

* - *

Internally, the elements in a {@link TreeMultiSet TreeMultiSets} are always sorted following a strict - * weak ordering criterion indicated by its internal comparison method (of {@link IComparable.less less}).

+ *

Internally, the elements in a {@link TreeSet} are always sorted following a specific strict weak + * ordering criterion indicated by its internal comparison method (of {@link less}).

* - *

{@link TreeMultiSet} containers are generally slower than {@link HashMultiSet} containers - * to access individual elements by their key, but they allow the direct iteration on subsets based on - * their order.

+ *

{@link TreeSet} containers are generally slower than {@link HashSet} containers to access + * individual elements by their key, but they allow the direct iteration on subsets based on their + * order.

* - *

{@link TreeMultiSet TreeMultiSets} are typically implemented as binary search trees.

+ *

{@link TreeSet}s are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -8489,19 +8520,19 @@ var std; *
Set
*
The value of an element is also the key used to identify it.
* - *
Multiple equivalent keys
- *
Multiple elements in the container can have equivalent keys.
+ *
Unique keys
+ *
No two elements in the container can have equivalent keys.
*
* - * @param Type of the elements. Each element in a {@link TreeMultiSet} container is also identified - * by this value (each value is itself also the element's key). + * @param Type of the elements. + * Each element in an {@link TreeSet} is also uniquely identified by this value. * - * @reference http://www.cplusplus.com/reference/set/multiset + * @reference http://www.cplusplus.com/reference/set/set * @author Jeongho Nam */ - var TreeMultiSet = (function (_super) { - __extends(TreeMultiSet, _super); - function TreeMultiSet() { + var TreeSet = (function (_super) { + __extends(TreeSet, _super); + function TreeSet() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i - 0] = arguments[_i]; @@ -8541,7 +8572,7 @@ var std; /** * @inheritdoc */ - TreeMultiSet.prototype.clear = function () { + TreeSet.prototype.clear = function () { _super.prototype.clear.call(this); this.tree_.clear(); }; @@ -8551,9 +8582,9 @@ var std; /** * @inheritdoc */ - TreeMultiSet.prototype.find = function (val) { + TreeSet.prototype.find = function (val) { var node = this.tree_.find(val); - if (node == null || std.equal_to(val, node.value.value) == false) + if (node == null || std.equal_to(node.value.value, val) == false) return this.end(); else return node.value; @@ -8561,41 +8592,31 @@ var std; /** * @inheritdoc */ - TreeMultiSet.prototype.count = function (val) { - var it = this.find(val); - var cnt = 0; - for (; !it.equal_to(this.end()) && std.equal_to(it.value, val); it = it.next()) - cnt++; - return cnt; - }; - /** - * @inheritdoc - */ - TreeMultiSet.prototype.key_comp = function () { + TreeSet.prototype.key_comp = function () { return this.tree_.key_comp(); }; /** * @inheritdoc */ - TreeMultiSet.prototype.value_comp = function () { + TreeSet.prototype.value_comp = function () { return this.tree_.key_comp(); }; /** * @inheritdoc */ - TreeMultiSet.prototype.lower_bound = function (val) { + TreeSet.prototype.lower_bound = function (val) { return this.tree_.lower_bound(val); }; /** * @inheritdoc */ - TreeMultiSet.prototype.upper_bound = function (val) { - return this.tree_.upper_bound(val); + TreeSet.prototype.upper_bound = function (val) { + return this.tree_.lower_bound(val); }; /** * @inheritdoc */ - TreeMultiSet.prototype.equal_range = function (val) { + TreeSet.prototype.equal_range = function (val) { return this.tree_.equal_range(val); }; /* ========================================================= @@ -8608,41 +8629,36 @@ var std; /** * @hidden */ - TreeMultiSet.prototype.insert_by_val = function (val) { + TreeSet.prototype.insert_by_val = function (val) { var node = this.tree_.find(val); - var it; + // IF EQUALS, THEN RETURN FALSE + if (node != null && std.equal_to(node.value.value, val) == true) + return std.make_pair(node.value, false); // FIND NODE - if (node == null) { + var it; + if (node == null) it = this.end(); - } - else if (std.equal_to(node.value.value, val) == true) { - it = node.value.next(); - } - else if (std.less(node.value.value, val) == true) { + else if (std.less(node.value.value, val) == true) it = node.value.next(); - while (it.equal_to(this.end()) == false && std.less(it.value, val)) - it = it.next(); - } - else { + else it = node.value; - } ///// // INSERTS ///// it = new std.SetIterator(this, this.data_.insert(it.get_list_iterator(), val)); this.handle_insert(it, it.next()); // POST-PROCESS - return it; + return std.make_pair(it, true); }; - /** - * @hidden - */ - TreeMultiSet.prototype.insert_by_hint = function (hint, val) { + TreeSet.prototype.insert_by_hint = function (hint, val) { + // FIND KEY + if (this.has(val) == true) + return this.end(); // VALIDATE HINT var ret; var compare = this.tree_.key_comp(); - // hint <= current && current <= next - if ((compare(hint.value, val) || std.equal_to(hint.value, val)) - && (hint.next().equal_to(this.end()) || (compare(val, hint.next().value) || std.equal_to(val, hint.next().value)))) { + // hint < current && current < next + if (compare(hint.value, val) == true + && (hint.next().equal_to(this.end()) || compare(val, hint.next().value) == true)) { /////// // RIGHT HINT /////// @@ -8656,14 +8672,14 @@ var std; // WRONG HINT /////// // INSERT BY AUTOMATIC NODE FINDING - ret = this.insert_by_val(val); + ret = this.insert_by_val(val).first; } return ret; }; /** * @hidden */ - TreeMultiSet.prototype.insert_by_range = function (first, last) { + TreeSet.prototype.insert_by_range = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.insert_by_val(first.value); }; @@ -8673,13 +8689,13 @@ var std; /** * @inheritdoc */ - TreeMultiSet.prototype.handle_insert = function (first, last) { + TreeSet.prototype.handle_insert = function (first, last) { this.tree_.insert(first); }; /** * @inheritdoc */ - TreeMultiSet.prototype.handle_erase = function (first, last) { + TreeSet.prototype.handle_erase = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.tree_.erase(last); }; @@ -8689,8 +8705,8 @@ var std; /** * @inheritdoc */ - TreeMultiSet.prototype.swap = function (obj) { - if (obj instanceof TreeMultiSet) + TreeSet.prototype.swap = function (obj) { + if (obj instanceof TreeSet) this.swap_tree_set(obj); else _super.prototype.swap.call(this, obj); @@ -8698,14 +8714,14 @@ var std; /** * @hidden */ - TreeMultiSet.prototype.swap_tree_set = function (obj) { + TreeSet.prototype.swap_tree_set = function (obj) { _a = [obj.data_, this.data_], this.data_ = _a[0], obj.data_ = _a[1]; _b = [obj.tree_, this.tree_], this.tree_ = _b[0], obj.tree_ = _b[1]; var _a, _b; }; - return TreeMultiSet; - }(std.base.MultiSet)); - std.TreeMultiSet = TreeMultiSet; + return TreeSet; + }(std.base.UniqueSet)); + std.TreeSet = TreeSet; })(std || (std = {})); /// var std; @@ -8835,8 +8851,8 @@ var std; * end, they perform worse than the others, and have less consistent iterators and references than {@link List}s. *

* - *

- * + *

+ * *

* *

Container properties

@@ -9152,8 +9168,8 @@ var std; /** *

An iterator of Vector.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -9288,8 +9304,8 @@ var std; /** *

A reverse-iterator of Vector.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -9490,8 +9506,8 @@ var std; /** *

Hash buckets storing {@link MapIterator MapIterators}.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -9524,8 +9540,8 @@ var std; /** *

Hash buckets storing {@link SetIterator SetIterators}.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -9609,7 +9625,7 @@ var std; * * * - *

* *

These constraints enforce a critical property of red-black trees: the path from the root to the farthest @@ -9867,7 +9883,7 @@ var std; * the only loop, and any rotations occur after this loop, this proves that a constant number of rotations * occur.

* - *

* * @param N A node to be inserted or swapped. @@ -9911,7 +9927,7 @@ var std; * node are black) is still violated, but now we can resolve this by * continuing to case 5.

* - *

* * @param N A node to be inserted or swapped. @@ -9952,7 +9968,7 @@ var std; * through {@link XTreeNode.parent P}. In each case, this is the only * black node of the three.

* - *

* * @param N A node to be inserted or swapped. @@ -10136,7 +10152,7 @@ var std; /** *

{@link XTreeNode.sibling S} is red.

* - *

* *

In this case we reverse the colors of {@link XTreeNode.parent P} and @@ -10168,7 +10184,7 @@ var std; *

{@link XTreeNode.parent P}, {@link XTreeNode.sibling S}, and {@link XTreeNode.sibling * S}'s children are black.

* - *

* *

In this case, we simply repaint {@link XTreeNode.sibling S} red. The @@ -10202,7 +10218,7 @@ var std; *

{@link XTreeNode.sibling S} and {@link XTreeNode.sibling S}'s children are * black, but {@link XTreeNode.parent P} is red.

* - *

* *

In this case, we simply exchange the colors of {@link XTreeNode.sibling S} and @@ -10230,7 +10246,7 @@ var std; * left child is red, {@link XTreeNode.sibling S}'s right child is * black, and N is the left child of its parent.

* - *

* *

In this case we rotate right at {@link XTreeNode.sibling S}, so that @@ -10288,7 +10304,7 @@ var std; *

Thus, the paths passing through N pass through one additional * black node.

* - *

* *

Meanwhile, if a path does not go through N, then there are two possibilities:

@@ -10410,8 +10426,8 @@ var std; /** *

A red-black tree storing {@link MapIterator MapIterators}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -10626,8 +10642,8 @@ var std; /** *

A red-black Tree storing {@link SetIterator SetIterators}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -10901,253 +10917,6 @@ var std; base.XTreeNode = XTreeNode; })(base = std.base || (std.base = {})); })(std || (std = {})); -/// -var std; -(function (std) { - var example; - (function (example) { - function test_all() { - for (var key in std.example) - if (key != "test_all" && std.example[key] instanceof Function) - std.example[key](); - } - example.test_all = test_all; - })(example = std.example || (std.example = {})); -})(std || (std = {})); -/// -var std; -(function (std) { - var example; - (function (example) { - function test_anything() { - var map = new std.HashMap(); - map.insert(["samchon", 1]); - map.insert(["FireFox", 2]); - console.log(map.has("samchon"), "#" + map.size()); - for (var it = map.begin(); !it.equal_to(map.end()); it = it.next()) - console.log(it.first); - map.erase("samchon"); - console.log(map.has("samchon"), "#" + map.size()); - for (var it = map.begin(); !it.equal_to(map.end()); it = it.next()) - console.log(it.first); - console.log("first item", map.begin().first); - console.log("last item", map.rbegin().first); - /* --------------------------------------------------------- */ - //let list: std.List = new std.List(); - //list.push_back("samchon"); - //list.push_back("FireFox"); - //console.log("#" + list.size()); - //list.erase(list.begin()); - //console.log("#" + list.size()); - //for (let it = list.begin(); !it.equal_to(list.end()); it = it.next()) - // console.log(it.value); - } - example.test_anything = test_anything; - })(example = std.example || (std.example = {})); -})(std || (std = {})); -/// -var std; -(function (std) { - var example; - (function (example) { - function test_bind() { - var list = new std.List(); - // ???.insert(...) - // list.insert(list.end(), 5, 1) - var fn = std.bind(std.List.prototype.insert); - fn(list, list.end(), 5, 1); - debug_list(); - var fn2 = std.bind(std.List.prototype.clear); - fn2(list); - debug_list(); - // ???.insert(_1, _2, 5, _3) - // list.insert(list.end(), 5, 2) - var fn3 = std.bind(list.insert, std.placeholders._1, std.placeholders._2, 5, std.placeholders._3); - fn3(list, list.end(), 2); - debug_list(); - function debug_list() { - console.log("#" + list.size()); - for (var it = list.begin(); !it.equal_to(list.end()); it = it.next()) - console.log(it.value); - console.log("----------------------------------------------------------"); - } - } - example.test_bind = test_bind; - })(example = std.example || (std.example = {})); -})(std || (std = {})); -/// -var std; -(function (std) { - var example; - (function (example) { - function test_deque() { - var deque = new std.Deque(); - for (var i = 0; i < 10; i++) - deque.push_back(i); - var it = deque.begin().advance(3); - it = deque.erase(it); // erase 3 - console.log(it.value); // print 4 - it = deque.begin().advance(2); - it = deque.insert(it, -1); // insert -1 - console.log(it.next().value); // print 2 - it = deque.begin().advance(6); - it = deque.erase(it, it.advance(3)); // erase from 6 to 9 - //console.log(it.value); // print 9 - console.log(it.equal_to(deque.end())); - console.log("-------------------------------------"); - for (var it_1 = deque.begin(); !it_1.equal_to(deque.end()); it_1 = it_1.next()) - console.log(it_1.value); - } - example.test_deque = test_deque; - })(example = std.example || (std.example = {})); -})(std || (std = {})); -/// -var std; -(function (std) { - var example; - (function (example) { - function test_for_each() { - var array = new std.Vector(); - for (var i = 0; i < 20; i++) - array.push_back(i); - var fn = std.for_each(array.begin(), array.end(), function (val) { console.log(val); }); - } - example.test_for_each = test_for_each; - })(example = std.example || (std.example = {})); -})(std || (std = {})); -/// -var std; -(function (std) { - var example; - (function (example) { - function test_hash_map() { - var map = new std.TreeMap(); - map.insert(["first", 1]); - map.insert(["second", 2]); - for (var it = map.begin(); !it.equal_to(map.end()); it = it.next()) - console.log(it.first, it.second); - var array = new Array(); - array["abcd"] = 2; - for (var key in array) - console.log(array[key]); - } - example.test_hash_map = test_hash_map; - })(example = std.example || (std.example = {})); -})(std || (std = {})); -/// -/// -var std; -(function (std) { - var example; - (function (example) { - function test_list() { - var list = new std.List(); - for (var i = 0; i < 10; i++) - list.push_back(i); - var it = list.begin().advance(3); - it = list.erase(it); // erase 3 - console.log(it.value); // print 4 - it = list.begin().advance(2); - it = list.insert(it, -1); // insert -1 - console.log(it.next().value); // print 2 - it = list.begin().advance(6); - it = list.erase(it, it.advance(3)); // erase from 6 to 9 - //console.log(it.value); // print 9 - console.log(it.equal_to(list.end())); - console.log("-------------------------------------"); - for (var it_2 = list.begin(); !it_2.equal_to(list.end()); it_2 = it_2.next()) - console.log(it_2.value); - } - example.test_list = test_list; - })(example = std.example || (std.example = {})); -})(std || (std = {})); -/// -var std; -(function (std) { - var example; - (function (example) { - function sorting() { - var cubes = new std.Deque(); - for (var i = 0; i < 0; i++) - cubes.push_back(new Cube()); - /////////////////////////////// - // SORT BY Cube.less() - /////////////////////////////// - std.sort(cubes.begin(), cubes.end()); - for (var it = cubes.begin(); !it.equal_to(cubes.end()); it = it.next()) - it.value.debug_size(); - console.log("------------------------------"); - /////////////////////////////// - // SORT BY inline function - /////////////////////////////// - std.sort(cubes.begin(), cubes.end(), function (left, right) { - if (left.x != right.x) - return left.x < right.x; - else if (left.y != right.y) - return left.y < right.y; - else - return left.z < right.z; - }); - for (var it = cubes.begin(); !it.equal_to(cubes.end()); it = it.next()) - it.value.debug_position(); - } - example.sorting = sorting; - var Cube = (function () { - function Cube() { - this.width = Math.random() * 10; - this.height = Math.random() * 10; - this.length = Math.random() * 10; - this.x = Math.random() * 100 - 50; - this.y = Math.random() * 100 - 50; - this.z = Math.random() * 100 - 50; - } - Object.defineProperty(Cube.prototype, "volume", { - get: function () { - return this.width * this.height * this.length; - }, - enumerable: true, - configurable: true - }); - Cube.prototype.less = function (obj) { - return this.volume < obj.volume; - }; - Cube.prototype.debug_size = function () { - console.log(this.width, this.height, this.length + " => " + this.volume); - }; - Cube.prototype.debug_position = function () { - console.log(this.x, this.y, this.z); - }; - return Cube; - }()); - })(example = std.example || (std.example = {})); -})(std || (std = {})); -/// -var std; -(function (std) { - var example; - (function (example) { - function tree_set() { - var set = new std.TreeMultiSet(); - // INSERTS EVEN NUMBERS - for (var i = 0; i <= 10; i += 2) - for (var j = 0; j < 3; j++) - set.insert(i); - // FIND 4 -> HAS - console.log("Matched node: 4"); - console.log(" lower bound: " + set.lower_bound(4).value); - console.log(" upper bound: " + set.upper_bound(4).value); - console.log(" "); - // FIND ODD NUMBERS -> NOT EXIST - for (var i = 1; i <= 10; i += 2) { - console.log("Mis-matched node: " + i); - console.log(" lower bound: " + set.lower_bound(i).value); - console.log(" upper bound: " + set.upper_bound(i).value); - console.log(" "); - } - } - example.tree_set = tree_set; - })(example = std.example || (std.example = {})); -})(std || (std = {})); /// /// /// @@ -11155,15 +10924,18 @@ var std; /// /// /// +/// +/// /// /// +/// +/// /// /// /// /// /// /// -/// try { module.exports = std; } diff --git a/ts/include/typescript-stl.js b/ts/include/typescript-stl.js index ad5d5697..d1719260 100644 --- a/ts/include/typescript-stl.js +++ b/ts/include/typescript-stl.js @@ -1855,1734 +1855,1244 @@ var std; var base; (function (base) { /** - *

Red-black Tree.

- * - *

A red-black tree is a kind of self-balancing - * binary search tree. Each node of the binary tree has an extra bit, and that bit is often interpreted as the - * color (red or black) of the node. These color bits - * are used to ensure the tree remains approximately balanced during insertions and deletions.

- * - *

Balance is preserved by painting each node of the tree with one of two colors (typically called - * 'red' and 'black') in a way that satisfies certain - * properties, which collectively constrain how unbalanced the tree can become in the worst case. When the tree - * is modified, the new tree is subsequently rearranged and repainted to restore the coloring properties. The - * properties are designed in such a way that this rearranging and recoloring can be performed efficiently.

- * - *

The balancing of the tree is not perfect but it is good enough to allow it to guarantee searching in - * O(log n) time, where n is the total number of elements in the tree. The insertion and deletion operations, - * along with the tree rearrangement and recoloring, are also performed in O(log n) time.

- * - *

Tracking the color of each node requires only 1 bit of information per node because there are only two - * colors. The tree does not contain any other data specific to its being a - * red-black tree so its memory footprint is almost - * identical to a classic (uncolored) binary search tree. In many cases the additional bit of information can - * be stored at no additional memory cost.

+ *

Static class holding enumeration codes of color of Red-black tree.

* - *

Properties

- *

In addition to the requirements imposed on a binary search tree the following must be satisfied by a - * red-black tree:

+ *

Color codes imposed to nodes of RB-Tree are following those rules:

* *
    *
  1. A node is either red or black.
  2. - *
  3. - * The root is black. This rule is sometimes omitted. Since the root can - * always be changed from red to black, but not - * necessarily vice versa, this rule has little effect on analysis. - *
  4. + *
  5. The root is black. This rule is sometimes omitted. Since the root can + * always be changed from red to black, but not + * necessarily vice versa, this rule has little effect on analysis.
  6. *
  7. All leaves (NIL; null) are black.
  8. - *
  9. - * If a node is red, then both its children are - * black. - *
  10. - *
  11. - * Every path from a given node to any of its descendant NIL nodes contains the same number of - * black nodes. Some definitions: the number of - * black nodes from the root to a node is the node's - * black depth; the uniform number of black - * nodes in all paths from root to the leaves is called the black-height of - * the red-black tree. - *
  12. + *
  13. If a node is red, then both its children are + * black.
  14. + *
  15. Every path from a given node to any of its descendant NIL nodes contains the same number of + * black nodes. Some definitions: the number of + * black nodes from the root to a node is the node's + * black depth; the uniform number of black + * nodes in all paths from root to the leaves is called the black-height of + * the red-black tree.
  16. *
* - *

+ * @author Migrated by Jeongho Nam + */ + (function (Color) { + /** + *

Code of color black.

+ * + *
    + *
  • Those are clearly black: root, leaf nodes or children nodes of red.
  • + *
  • Every path from a given nodes containes the same number of black nodes exclude NIL(s).
  • + *
+ */ + Color[Color["BLACK"] = 0] = "BLACK"; + /** + *

Code of color red.

+ */ + Color[Color["RED"] = 1] = "RED"; + })(base.Color || (base.Color = {})); + var Color = base.Color; + })(base = std.base || (std.base = {})); +})(std || (std = {})); +/// +var std; +(function (std) { + var base; + (function (base) { + /** + *

An abstract container.

* - *

These constraints enforce a critical property of red-black trees: the path from the root to the farthest - * leaf is no more than twice as long as the path from the root to the nearest leaf. The result is that the tree - * is roughly height-balanced. Since operations such as inserting, deleting, and finding values require - * worst-case time proportional to the height of the tree, this theoretical upper bound on the height allows - * red-black trees to be efficient in the worst case, unlike ordinary binary search trees.

+ *

+ * + *

* - *

To see why this is guaranteed, it suffices to consider the effect of properties 4 and 5 together. For a - * red-black tree T, let B be the number of black nodes in property 5. Let the - * shortest possible path from the root of T to any leaf consist of B black nodes. - * Longer possible paths may be constructed by inserting red nodes. However, property 4 - * makes it impossible to insert more than one consecutive red node. Therefore, - * ignoring any black NIL leaves, the longest possible path consists of 2*B nodes, - * alternating black and red (this is the worst case). - * Counting the black NIL leaves, the longest possible path consists of 2*B-1 - * nodes.

+ *

Container properties

+ *
+ *
Sequence
+ *
Elements in sequence containers are ordered in a strict linear sequence. Individual elements are + * accessed by their position in this sequence.
* - *

The shortest possible path has all black nodes, and the longest possible - * path alternates between red and black nodes. Since all - * maximal paths have the same number of black nodes, by property 5, this shows - * that no path is more than twice as long as any other path.

+ *
Doubly-linked list
+ *
Each element keeps information on how to locate the next and the previous elements, allowing + * constant time insert and erase operations before or after a specific element (even of entire ranges), + * but no direct random access.
+ *
* * @param Type of elements. * - * @reference https://en.wikipedia.org/w/index.php?title=Red%E2%80%93black_tree - * @inventor Rudolf Bayer - * @author Migrated by Jeongho Nam + * @author Jeongho Nam */ - var XTree = (function () { - /* ========================================================= - CONSTRUCTOR - ========================================================= */ + var Container = (function () { + function Container() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i - 0] = arguments[_i]; + } + // THIS IS ABSTRACT CLASS + // NOTHING TO DO ESPECIALLY + } /** - * Default Constructor. + * @inheritdoc */ - function XTree() { - this.root_ = null; - } - XTree.prototype.clear = function () { - this.root_ = null; + Container.prototype.clear = function () { + this.erase(this.begin(), this.end()); }; - /* ========================================================= - ACCESSORS - - GETTERS - - COMPARISON - ============================================================ - GETTERS - --------------------------------------------------------- */ /** - * Find a node from its contained value. + * @inheritdoc + */ + Container.prototype.empty = function () { + return this.size() == 0; + }; + /* --------------------------------------------------------------- + UTILITIES + --------------------------------------------------------------- */ + /** + * @inheritdoc + */ + Container.prototype.swap = function (obj) { + var supplement = new std.Vector(this.begin(), this.end()); + this.assign(obj.begin(), obj.end()); + obj.assign(supplement.begin(), supplement.end()); + }; + return Container; + }()); + base.Container = Container; + })(base = std.base || (std.base = {})); +})(std || (std = {})); +/// +var std; +(function (std) { + var base; + (function (base) { + /** + *

An abstract error instance.

+ * + *

{@link ErrorInstance} is an abstract class of {@link ErrorCode} and {@link ErrorCondition} + * holding an error instance's identifier {@link value}, associated with a {@link category}.

+ * + *

The operating system and other low-level applications and libraries generate numerical error codes to + * represent possible results. These numerical values may carry essential information for a specific platform, + * but be non-portable from one platform to another.

+ * + *

Objects of this class associate such numerical codes to {@link ErrorCategory error categories}, + * so that they can be interpreted when needed as more abstract (and portable) + * {@link ErrorCondition error conditions}.

+ * + *

+ *

+ * + * @author Jeongho Nam + */ + var ErrorInstance = (function () { + function ErrorInstance(val, category) { + if (val === void 0) { val = 0; } + if (category === void 0) { category = null; } + this.assign(val, category); + } + /** + *

Assign error instance.

* - * @param val Value to find. + *

Assigns the {@link ErrorCode} object a value of val associated with the {@link ErrorCategory}.

+ * + * @param val A numerical value identifying an error instance. + * @param category A reference to an {@link ErrorCategory} object. */ - XTree.prototype.find = function (val) { - if (this.root_ == null) - return null; - var node = this.root_; - while (true) { - var newNode = null; - if (this.is_equal_to(val, node.value)) - break; // EQUALS, MEANS MATCHED, THEN TERMINATE - else if (this.is_less(val, node.value)) - newNode = node.left; // LESS, THEN TO THE LEFT - else - newNode = node.right; // GREATER, THEN TO THE RIGHT - // ULTIL CHILD NODE EXISTS - if (newNode == null) - break; - // SHIFT A NEW NODE TO THE NODE TO BE RETURNED - node = newNode; - } - return node; + ErrorInstance.prototype.assign = function (val, category) { + this.category_ = category; + this.value_ = val; }; /** - * Fetch maximum (the rightes?) node from one. + *

Clear error instance.

* - * @param node A node to fetch its maximum node. - * @return The maximum node. + *

Clears the value in the {@link ErrorCode} object so that it is set to a value of 0 of the + * {@link ErrorCategory.systemCategory ErrorCategory.systemCategory()} (indicating no error).

*/ - XTree.prototype.fetch_maximum = function (node) { - while (node.right != null) - node = node.right; - return node; + ErrorInstance.prototype.clear = function () { + this.value_ = 0; }; - /* ========================================================= - ELEMENTS I/O - - INSERT - - ERASE - - COLOR - - ROTATION - ============================================================ - INSERT + /* --------------------------------------------------------- + ACCESSORS --------------------------------------------------------- */ /** - *

Insert an element with a new node.

+ *

Get category.

* - *

Insertion begins by adding the node as any binary search tree insertion does and by coloring it - * red. Whereas in the binary search tree, we always add a leaf, in the red-black - * tree, leaves contain no information, so instead we add a red interior node, with - * two black leaves, in place of an existing - * black leaf.

+ *

Returns a reference to the {@link ErrorCategory} associated with the {@link ErrorCode} object.

* - *

What happens next depends on the color of other nearby nodes. The term uncle node will be used to - * refer to the sibling of a node's parent, as in human family trees. Note that:

- * - *
    - *
  • property 3 (all leaves are black) always holds.
  • - *
  • - * property 4 (both children of every red node are - * black) is threatened only by adding a red - * node, repainting a black node red, or a - * rotation. - *
  • - *
  • - * property 5 (all paths from any given node to its leaf nodes contain the same number of - * black nodes) is threatened only by adding a - * black node, repainting a red node - * black (or vice versa), or a rotation. - *
  • - *
- * - *

Notes

- *
    - *
  1. - * The label N will be used to denote the current node (colored - * red). In the diagrams N carries a blue contour. At the - * beginning, this is the new node being inserted, but the entire procedure may also be applied - * recursively to other nodes (see case 3). {@link XTreeNode.parent P} will denote - * N's parent node, {@link XTreeNode.grand_parent G} will denote N's - * grandparent, and {@link XTreeNode.uncle U} will denote N's uncle. In between - * some cases, the roles and labels of the nodes are exchanged, but in each case, every label continues - * to represent the same node it represented at the beginning of the case. - *
  2. - *
  3. - * If a node in the right (target) half of a diagram carries a blue contour it will become the current - * node in the next iteration and there the other nodes will be newly assigned relative to it. Any - * color shown in the diagram is either assumed in its case or implied by those assumptions. - *
  4. - *
  5. - * A numbered triangle represents a subtree of unspecified depth. A black - * circle atop a triangle means that black-height of subtree is greater - * by one compared to subtree without this circle.
  6. - *
- * - *

There are several cases of red-black tree insertion to handle:

- * - *
    - *
  • N is the root node, i.e., first node of red-black tree.
  • - *
  • - * N's parent ({@link XTreeNode.parent P}) is black. - *
  • - *
  • - * N's parent ({@link XTreeNode.parent P}) and uncle - * ({@link XTreeNode.uncle U}) are red. - *
  • - *
  • - * N is added to right of left child of grandparent, or N is added to left - * of right child of grandparent ({@link XTreeNode.parent P} is red and - * {@link XTreeNode.uncle U} is black). - *
  • - *
  • - * N is added to left of left child of grandparent, or N is added to right - * of right child of grandparent ({@link XTreeNode.parent P} is red and - * {@link XTreeNode.uncle U} is black). - *
  • - *
- * - *

Note

- *

Note that inserting is actually in-place, since all the calls above use tail recursion.

- * - *

In the algorithm above, all cases are chained in order, except in insert case 3 where it can recurse - * to case 1 back to the grandparent node: this is the only case where an iterative implementation will - * effectively loop. Because the problem of repair is escalated to the next higher level but one, it takes - * maximally h⁄2 iterations to repair the tree (where h is the height of the tree). Because the probability - * for escalation decreases exponentially with each iteration the average insertion cost is constant.

- * - * @param val An element to insert. + * @return A reference to a non-copyable object of a type derived from {@link ErrorCategory}. */ - XTree.prototype.insert = function (val) { - var parent = this.find(val); - var node = new base.XTreeNode(val, base.Color.RED); - if (parent == null) - this.root_ = node; - else { - node.parent = parent; - if (this.is_less(node.value, parent.value)) - parent.left = node; - else - parent.right = node; - } - this.insert_case1(node); + ErrorInstance.prototype.category = function () { + return this.category_; }; /** - *

N is the root node, i.e., first node of red-black tree.

- * - *

The current node N is at the {@link root_ root} of the tree.

+ *

Error value.

* - *

In this case, it is repainted black to satisfy property 2 (the root is - * black). Since this adds one black node to - * every path at once, property 5 (all paths from any given node to its leaf nodes contain the same number - * of black nodes) is not violated.

+ *

Returns the error value associated with the {@link ErrorCode} object.

* - * @param N A node to be inserted or swapped. + * @return The error value. */ - XTree.prototype.insert_case1 = function (N) { - if (N.parent == null) - N.color = base.Color.BLACK; - else - this.insert_case2(N); + ErrorInstance.prototype.value = function () { + return this.value_; }; /** - *

N's parent ({@link XTreeNode.parent P}) is black.

+ *

Get message.

* - *

The current node's parent {@link XTreeNode.parent P} is black, - * so property 4 (both children of every red node are - * black) is not invalidated.

+ *

Returns the message associated with the error instance.

* - *

In this case, the tree is still valid. Property 5 (all paths from any given node to its leaf nodes - * contain the same number of black nodes) is not threatened, because the - * current node N has two black leaf children, but because - * N is red, the paths through each of its children have the same - * number of black nodes as the path through the leaf it replaced, which was - * black, and so this property remains satisfied.

+ *

Error messages are defined by the {@link category} the error instance belongs to.

* - * @param N A node to be inserted or swapped. + *

This function returns the same as if the following member was called:

+ * + *

category().message(value())

+ * + * @return A string object with the message associated with the {@link ErrorCode}. */ - XTree.prototype.insert_case2 = function (N) { - if (this.fetch_color(N.parent) == base.Color.BLACK) - return; + ErrorInstance.prototype.message = function () { + if (this.category_ == null || this.value_ == 0) + return ""; else - this.insert_case3(N); + return this.category_.message(this.value_); }; /** - *

N's parent ({@link XTreeNode.parent P}) and uncle - * ({@link XTreeNode.uncle U}) are red.

- * - *

If both the parent {@link XTreeNode.parent P} and the uncle {@link XTreeNode.uncle U} - * are red, then both of them can be repainted black - * and the grandparent {@link XTreeNode.grand_parent G} becomes red (to - * maintain property 5 (all paths from any given node to its leaf nodes contain the same number of - * black nodes)).

+ *

Default error condition.

* - *

Now, the current red node N has a - * black parent. Since any path through the parent or uncle must pass through - * the grandparent, the number of black nodes on these paths has not changed. + *

Returns the default {@link ErrorCondition}object associated with the {@link ErrorCode} object.

* - *

However, the grandparent {@link XTreeNode.grand_parent G} may now violate properties 2 (The - * root is black) or 4 (Both children of every red - * node are black) (property 4 possibly being violated since - * {@link XTreeNode.grand_parent G} may have a red parent).

+ *

This function returns the same as if the following member was called:

* - *

To fix this, the entire procedure is recursively performed on {@link XTreeNode.grand_parent G} - * from case 1. Note that this is a tail-recursive call, so it could be rewritten as a loop; since this is - * the only loop, and any rotations occur after this loop, this proves that a constant number of rotations - * occur.

+ *

category().default_error_condition(value())

* - *

+ *

{@link ErrorCategory.default_error_condition ErrorCategory.default_error_condition()} + * is a virtual member function, that can operate differently for each category.

* - * @param N A node to be inserted or swapped. + * @return An {@link ErrorCondition}object that corresponds to the {@link ErrorCode} object. */ - XTree.prototype.insert_case3 = function (N) { - if (this.fetch_color(N.uncle) == base.Color.RED) { - N.parent.color = base.Color.BLACK; - N.uncle.color = base.Color.BLACK; - N.grand_parent.color = base.Color.RED; - this.insert_case1(N.grand_parent); - } - else { - this.insert_case4(N); - } + ErrorInstance.prototype.default_error_condition = function () { + if (this.category_ == null || this.value_ == 0) + return null; + else + return this.category_.default_error_condition(this.value_); }; + /* --------------------------------------------------------- + OPERATORS + --------------------------------------------------------- */ /** - *

N is added to right of left child of grandparent, or N is added to left - * of right child of grandparent ({@link XTreeNode.parent P} is red and - * {@link XTreeNode.uncle U} is black).

+ *

Convert to bool.

* - *

The parent {@link XTreeNode.parent P} is red but the uncle - * {@link XTreeNode.uncle U} is black; also, the current node - * N is the right child of {@link XTreeNode.parent P}, and - * {@link XTreeNode.parent P} in turn is the left child of its parent - * {@link XTreeNode.grand_parent G}.

+ *

Returns whether the error instance has a numerical {@link value} other than 0.

* - *

In this case, a left rotation on {@link XTreeNode.parent P} that switches the roles of the - * current node N and its parent {@link XTreeNode.parent P} can be performed; then, - * the former parent node {@link XTreeNode.parent P} is dealt with using case 5 - * (relabeling N and {@link XTreeNode.parent P}) because property 4 (both children of - * every red node are black) is still violated.

+ *

If it is zero (which is generally used to represent no error), the function returns false, otherwise it returns true.

* - *

The rotation causes some paths (those in the sub-tree labelled "1") to pass through the node - * N where they did not before. It also causes some paths (those in the sub-tree labelled "3") - * not to pass through the node {@link XTreeNode.parent P} where they did before. However, both of - * these nodes are red, so property 5 (all paths from any given node to its leaf - * nodes contain the same number of black nodes) is not violated by the - * rotation.

+ * @return true if the error's numerical value is not zero. + * false otherwise. + */ + ErrorInstance.prototype.to_bool = function () { + return this.value_ != 0; + }; + return ErrorInstance; + }()); + base.ErrorInstance = ErrorInstance; + })(base = std.base || (std.base = {})); +})(std || (std = {})); +/// +var std; +(function (std) { + var base; + (function (base) { + (function (Hash) { + Hash[Hash["MIN_SIZE"] = 10] = "MIN_SIZE"; + Hash[Hash["RATIO"] = 1] = "RATIO"; + Hash[Hash["MAX_RATIO"] = 2] = "MAX_RATIO"; + })(base.Hash || (base.Hash = {})); + var Hash = base.Hash; + /** + *

Hask buckets.

+ * + * @author Jeongho Nam + */ + var HashBuckets = (function () { + /* --------------------------------------------------------- + CONSTRUCTORS + --------------------------------------------------------- */ + /** + * Default Constructor. + */ + function HashBuckets() { + this.clear(); + } + /** + *

Reconstruction of hash table.

* - *

After this case has been completed, property 4 (both children of every red - * node are black) is still violated, but now we can resolve this by - * continuing to case 5.

+ *

All the elements in the hash buckets are rearranged according to their hash value into the new set of + * buckets. This may alter the order of iteration of elements within the container.

* - *

+ *

Notice that {@link rehash rehashes} are automatically performed whenever its number of elements is going + * to greater than its own {@link capacity}.

* - * @param N A node to be inserted or swapped. + * @param size Number of bucket size to rehash. */ - XTree.prototype.insert_case4 = function (node) { - if (node == node.parent.right && node.parent == node.grand_parent.left) { - this.rotate_left(node.parent); - node = node.left; - } - else if (node == node.parent.left && node.parent == node.grand_parent.right) { - this.rotate_right(node.parent); - node = node.right; - } - this.insert_case5(node); - }; - /** - *

N is added to left of left child of grandparent, or N is added to right - * of right child of grandparent ({@link XTreeNode.parent P} is red and - * {@link XTreeNode.uncle U} is black).

- * - *

The parent {@link XTreeNode.parent P} is red but the uncle - * {@link XTreeNode.uncle U} is black, the current node N - * is the left child of {@link XTreeNode.parent P}, and {@link XTreeNode.parent P} is the left - * child of its parent {@link XTreeNode.grand_parent G}.

- * - *

In this case, a right rotation on {@link XTreeNode.grand_parent G} is performed; the result is a - * tree where the former parent {@link XTreeNode.parent P} is now the parent of both the current node - * N and the former grandparent {@link XTreeNode.grand_parent G}.

- * - *

{@link XTreeNode.grand_parent G} is known to be black, since its - * former child {@link XTreeNode.parent P} could not have been red otherwise - * (without violating property 4). Then, the colors of {@link XTreeNode.parent P} and - * {@link XTreeNode.grand_parent G} are switched, and the resulting tree satisfies property 4 (both - * children of every red node are black). Property 5 - * (all paths from any given node to its leaf nodes contain the same number of - * black nodes) also remains satisfied, since all paths that went through any - * of these three nodes went through {@link XTreeNode.grand_parent G} before, and now they all go - * through {@link XTreeNode.parent P}. In each case, this is the only - * black node of the three.

- * - *

- * - * @param N A node to be inserted or swapped. - */ - XTree.prototype.insert_case5 = function (node) { - node.parent.color = base.Color.BLACK; - node.grand_parent.color = base.Color.RED; - if (node == node.parent.left && node.parent == node.grand_parent.left) - this.rotate_right(node.grand_parent); - else - this.rotate_left(node.grand_parent); - }; - /* --------------------------------------------------------- - ERASE - --------------------------------------------------------- */ - /** - *

Erase an element with its node.

- * - *

In a regular binary search tree when deleting a node with two non-leaf children, we find either the - * maximum element in its left subtree (which is the in-order predecessor) or the minimum element in its - * right subtree (which is the in-order successor) and move its value into the node being deleted (as shown - * here). We then delete the node we copied the value from, which must have fewer than two non-leaf children. - * (Non-leaf children, rather than all children, are specified here because unlike normal binary search - * trees, red-black trees can have leaf nodes anywhere, so that all nodes are either internal nodes with - * two children or leaf nodes with, by definition, zero children. In effect, internal nodes having two leaf - * children in a red-black tree are like the leaf nodes in a regular binary search tree.) Because merely - * copying a value does not violate any red-black properties, this reduces to the problem of deleting a node - * with at most one non-leaf child. Once we have solved that problem, the solution applies equally to the - * case where the node we originally want to delete has at most one non-leaf child as to the case just - * considered where it has two non-leaf children.

- * - *

Therefore, for the remainder of this discussion we address the deletion of a node with at most one - * non-leaf child. We use the label M to denote the node to be deleted; C will denote a - * selected child of M, which we will also call "its child". If M does have a non-leaf child, - * call that its child, C; otherwise, choose either leaf as its child, C.

- * - *

If M is a red node, we simply replace it with its child C, - * which must be black by property 4. (This can only occur when M has - * two leaf children, because if the red node M had a - * black non-leaf child on one side but just a leaf child on the other side, - * then the count of black nodes on both sides would be different, thus the - * tree would violate property 5.) All paths through the deleted node will simply pass through one fewer - * red node, and both the deleted node's parent and child must be - * black, so property 3 (all leaves are black) - * and property 4 (both children of every red node are - * black) still hold.

- * - *

Another simple case is when M is black and C is - * red. Simply removing a black node could break - * Properties 4 (“Both children of every red node are - * black”) and 5 (“All paths from any given node to its leaf nodes contain the - * same number of black nodes”), but if we repaint C - * black, both of these properties are preserved.

- * - *

The complex case is when both M and C are black. (This - * can only occur when deleting a black node which has two leaf children, - * because if the black node M had a black - * non-leaf child on one side but just a leaf child on the other side, then the count of - * black nodes on both sides would be different, thus the tree would have been - * an invalid red-black tree by violation of property 5.) We begin by replacing M with its child - * C. We will relabel this child C (in its new position) N, and its sibling (its - * new parent's other child) {@link XTreeNode.sibling S}. ({@link XTreeNode.sibling S} was - * previously the sibling of M.)

- * - *

In the diagrams below, we will also use {@link XTreeNode.parent P} for N's new - * parent (M's old parent), SL for {@link XTreeNode.sibling S}'s left child, and - * SR for {@link XTreeNode.sibling S}'s right child ({@link XTreeNode.sibling S} cannot - * be a leaf because if M and C were black, then - * {@link XTreeNode.parent P}'s one subtree which included M counted two - * black-height and thus {@link XTreeNode.parent P}'s other subtree - * which includes {@link XTreeNode.sibling S} must also count two - * black-height, which cannot be the case if {@link XTreeNode.sibling S} - * is a leaf node).

- * - *

Notes

- *
    - *
  1. - * The label N will be used to denote the current node (colored - * black). In the diagrams N carries a blue contour. At the - * beginning, this is the replacement node and a leaf, but the entire procedure may also be applied - * recursively to other nodes (see case 3). In between some cases, the roles and labels of the nodes - * are exchanged, but in each case, every label continues to represent the same node it represented at - * the beginning of the case. - *
  2. - *
  3. - * If a node in the right (target) half of a diagram carries a blue contour it will become the current - * node in the next iteration and there the other nodes will be newly assigned relative to it. Any - * color shown in the diagram is either assumed in its case or implied by those assumptions. - * White represents an arbitrary color (either red or - * black), but the same in both halves of the diagram. - *
  4. - *
  5. - * A numbered triangle represents a subtree of unspecified depth. A black - * circle atop a triangle means that black-height of subtree is greater - * by one compared to subtree without this circle. - *
  6. - *
- * - *

If both N and its original parent are black, then - * deleting this original parent causes paths which proceed through N to have one fewer - * black node than paths that do not. As this violates property 5 (all paths - * from any given node to its leaf nodes contain the same number of black - * nodes), the tree must be rebalanced. There are several cases to consider:

- * - *
    - *
  1. N is the new root.
  2. - *
  3. {@link XTreeNode.sibling S} is red.
  4. - *
  5. - * {@link XTreeNode.parent P}, {@link XTreeNode.sibling S}, and - * {@link XTreeNode.sibling S}'s children are black.
  6. - *
  7. - * {@link XTreeNode.sibling S} and {@link XTreeNode.sibling S}'s children are - * black, but {@link XTreeNode.parent P} is - * red. - *
  8. - *
  9. - * {@link XTreeNode.sibling S} is black, - * {@link XTreeNode.sibling S}'s left child is red, - * {@link XTreeNode.sibling S}'s right child is black, and - * N is the left child of its parent. - *
  10. - *
  11. - * {@link XTreeNode.sibling S} is black, - * {@link XTreeNode.sibling S}'s right child is red, and - * N is the left child of its parent {@link XTreeNode.parent P}. - *
  12. - *
- * - *

Again, the function calls all use tail recursion, so the algorithm is in-place.

- * - *

In the algorithm above, all cases are chained in order, except in delete case 3 where it can recurse - * to case 1 back to the parent node: this is the only case where an iterative implementation will - * effectively loop. No more than h loops back to case 1 will occur (where h is the height of the tree). - * And because the probability for escalation decreases exponentially with each iteration the average - * removal cost is constant.

- * - *

Additionally, no tail recursion ever occurs on a child node, so the tail recursion loop can only - * move from a child back to its successive ancestors. If a rotation occurs in case 2 (which is the only - * possibility of rotation within the loop of cases 1–3), then the parent of the node N - * becomes red after the rotation and we will exit the loop. Therefore, at most one - * rotation will occur within this loop. Since no more than two additional rotations will occur after - * exiting the loop, at most three rotations occur in total.

- * - * @param val An element to erase. - */ - XTree.prototype.erase = function (val) { - var node = this.find(val); - if (node == null || this.is_equal_to(val, node.value) == false) - return; - if (node.left != null && node.right != null) { - var pred = this.fetch_maximum(node.left); - node.value = pred.value; - node = pred; - } - var child = (node.right == null) ? node.left : node.right; - if (this.fetch_color(node) == base.Color.BLACK) { - node.color = this.fetch_color(child); - this.erase_case1(node); - } - this.replace_node(node, child); - }; - /** - *

N is the new root.

- * - *

In this case, we are done. We removed one black node from every path, - * and the new root is black, so the properties are preserved.

- * - *

Note

- *

In cases 2, 5, and 6, we assume N is the left child of its parent - * {@link XTreeNode.parent P}. If it is the right child, left and right should be reversed throughout - * these three cases. Again, the code examples take both cases into account.

- * - * @param N A node to be erased or swapped. - */ - XTree.prototype.erase_case1 = function (N) { - if (N.parent == null) - return; - else - this.erase_case2(N); - }; - /** - *

{@link XTreeNode.sibling S} is red.

- * - *

- * - *

In this case we reverse the colors of {@link XTreeNode.parent P} and - * {@link XTreeNode.sibling S}, and then rotate left at {@link XTreeNode.parent P}, turning - * {@link XTreeNode.sibling S} into N's grandparent.

- * - *

Note that {@link XTreeNode.parent P} has to be black as it had a - * red child. The resulting subtree has a path short one - * black node so we are not done. Now N has a - * black sibling and a red parent, so we can proceed - * to step 4, 5, or 6. (Its new sibling is black because it was once the child - * of the red {@link XTreeNode.sibling S}.) In later cases, we will re-label - * N's new sibling as {@link XTreeNode.sibling S}.

- * - * @param N A node to be erased or swapped. - */ - XTree.prototype.erase_case2 = function (N) { - if (this.fetch_color(N.sibling) == base.Color.RED) { - N.parent.color = base.Color.RED; - N.sibling.color = base.Color.BLACK; - if (N == N.parent.left) - this.rotate_left(N.parent); - else - this.rotate_right(N.parent); - } - this.erase_case3(N); - }; - /** - *

{@link XTreeNode.parent P}, {@link XTreeNode.sibling S}, and {@link XTreeNode.sibling - * S}'s children are black.

- * - *

- * - *

In this case, we simply repaint {@link XTreeNode.sibling S} red. The - * result is that all paths passing through {@link XTreeNode.sibling S}, which are precisely those - * paths not passing through N, have one less black node. - * Because deleting N's original parent made all paths passing through N have - * one less black node, this evens things up.

- * - *

However, all paths through {@link XTreeNode.parent P} now have one fewer - * black node than paths that do not pass through - * {@link XTreeNode.parent P}, so property 5 (all paths from any given node to its leaf nodes contain - * the same number of black nodes) is still violated.

- * - *

To correct this, we perform the rebalancing procedure on {@link XTreeNode.parent P}, starting - * at case 1.

- * - * @param N A node to be erased or swapped. - */ - XTree.prototype.erase_case3 = function (N) { - if (this.fetch_color(N.parent) == base.Color.BLACK && - this.fetch_color(N.sibling) == base.Color.BLACK && - this.fetch_color(N.sibling.left) == base.Color.BLACK && - this.fetch_color(N.sibling.right) == base.Color.BLACK) { - N.sibling.color = base.Color.RED; - this.erase_case1(N.parent); - } - else - this.erase_case4(N); - }; - /** - *

{@link XTreeNode.sibling S} and {@link XTreeNode.sibling S}'s children are - * black, but {@link XTreeNode.parent P} is red.

- * - *

- * - *

In this case, we simply exchange the colors of {@link XTreeNode.sibling S} and - * {@link XTreeNode.parent P}. This does not affect the number of black - * nodes on paths going through {@link XTreeNode.sibling S}, but it does add one to the number of - * black nodes on paths going through N, making up for the - * deleted black node on those paths.

- * - * @param N A node to be erased or swapped. - */ - XTree.prototype.erase_case4 = function (N) { - if (this.fetch_color(N.parent) == base.Color.RED && - N.sibling != null && - this.fetch_color(N.sibling) == base.Color.BLACK && - this.fetch_color(N.sibling.left) == base.Color.BLACK && - this.fetch_color(N.sibling.right) == base.Color.BLACK) { - N.sibling.color = base.Color.RED; - N.parent.color = base.Color.BLACK; - } - else - this.erase_case5(N); - }; - /** - *

{@link XTreeNode.sibling S} is black, {@link XTreeNode.sibling S}'s - * left child is red, {@link XTreeNode.sibling S}'s right child is - * black, and N is the left child of its parent.

- * - *

- * - *

In this case we rotate right at {@link XTreeNode.sibling S}, so that - * {@link XTreeNode.sibling S}'s left child becomes {@link XTreeNode.sibling S}'s parent and - * N's new sibling. We then exchange the colors of {@link XTreeNode.sibling S} and its - * new parent.

- * - *

All paths still have the same number of black nodes, but now - * N has a black sibling whose right child is - * red, so we fall into case 6. Neither N nor its parent are affected - * by this transformation. (Again, for case 6, we relabel N's new sibling as - * {@link XTreeNode.sibling S}.)

- * - * @param N A node to be erased or swapped. - */ - XTree.prototype.erase_case5 = function (N) { - if (N == N.parent.left && - N.sibling != null && - this.fetch_color(N.sibling) == base.Color.BLACK && - this.fetch_color(N.sibling.left) == base.Color.RED && - this.fetch_color(N.sibling.right) == base.Color.BLACK) { - N.sibling.color = base.Color.RED; - N.sibling.left.color = base.Color.BLACK; - this.rotate_right(N.sibling); - } - else if (N == N.parent.right && - N.sibling != null && - this.fetch_color(N.sibling) == base.Color.BLACK && - this.fetch_color(N.sibling.left) == base.Color.BLACK && - this.fetch_color(N.sibling.right) == base.Color.RED) { - N.sibling.color = base.Color.RED; - N.sibling.right.color = base.Color.BLACK; - this.rotate_left(N.sibling); - } - }; - /** - *

{@link XTreeNode.sibling S} is black, - * {@link XTreeNode.sibling S}'s right child is red, and N is - * the left child of its parent {@link XTreeNode.parent P}.

- * - *

In this case we rotate left at {@link XTreeNode.parent P}, so that - * {@link XTreeNode.sibling S} becomes the parent of {@link XTreeNode.parent P} and - * {@link XTreeNode.sibling S}'s right child. We then exchange the colors of - * {@link XTreeNode.parent P} and {@link XTreeNode.sibling S}, and make - * {@link XTreeNode.sibling S}'s right child black.

- * - *

The subtree still has the same color at its root, so Properties 4 (Both children of every - * red node are black) and 5 (All paths from any - * given node to its leaf nodes contain the same number of black nodes) are - * not violated. However, N now has one additional black - * ancestor: either {@link XTreeNode.parent P} has become black, or it - * was black and {@link XTreeNode.sibling S} was added as a - * black grandparent.

- * - *

Thus, the paths passing through N pass through one additional - * black node.

- * - *

- * - *

Meanwhile, if a path does not go through N, then there are two possibilities:

- *
    - *
  1. - * It goes through N's new sibling SL, a node with arbitrary color and the root of - * the subtree labeled 3 (s. diagram). Then, it must go through {@link XTreeNode.sibling S} and - * {@link XTreeNode.parent P}, both formerly and currently, as they have only exchanged colors - * and places. Thus the path contains the same number of black nodes. - *
  2. - *
  3. - * It goes through N's new uncle, {@link XTreeNode.sibling S}'s right child. Then, - * it formerly went through {@link XTreeNode.sibling S}, {@link XTreeNode.sibling S}'s - * parent, and {@link XTreeNode.sibling S}'s right child SR (which was - * red), but now only goes through {@link XTreeNode.sibling S}, which - * has assumed the color of its former parent, and {@link XTreeNode.sibling S}'s right child, - * which has changed from red to black (assuming - * {@link XTreeNode.sibling S}'s color: black). The net effect is - * that this path goes through the same number of black nodes. - *
  4. - *
- * - *

Either way, the number of black nodes on these paths does not change. - * Thus, we have restored Properties 4 (Both children of every red node are - * black) and 5 (All paths from any given node to its leaf nodes contain the - * same number of black nodes). The white node in the diagram can be either - * red or black, but must refer to the same color - * both before and after the transformation.

- * - * @param N A node to be erased or swapped. - */ - XTree.prototype.erase_case6 = function (node) { - node.sibling.color = this.fetch_color(node.parent); - node.parent.color = base.Color.BLACK; - if (node == node.parent.left) { - node.sibling.right.color = base.Color.BLACK; - this.rotate_left(node.parent); - } - else { - node.sibling.left.color = base.Color.BLACK; - this.rotate_right(node.parent); - } - }; - /* --------------------------------------------------------- - ROTATION - --------------------------------------------------------- */ - /** - * Rotate a node left. - * - * @param node Node to rotate left. - */ - XTree.prototype.rotate_left = function (node) { - var right = node.right; - this.replace_node(node, right); - node.right = right.left; - if (right.left != null) - right.left.parent = node; - right.left = node; - node.parent = right; - }; - /** - * Rotate a node to right. - * - * @param node A node to rotate right. - */ - XTree.prototype.rotate_right = function (node) { - var left = node.left; - this.replace_node(node, left); - node.left = left.right; - if (left.right != null) - left.right.parent = node; - left.right = node; - node.parent = left; - }; - /** - * Replace a node. - * - * @param oldNode Ordinary node to be replaced. - * @param newNode Target node to replace. - */ - XTree.prototype.replace_node = function (oldNode, newNode) { - if (oldNode.parent == null) - this.root_ = newNode; - else { - if (oldNode == oldNode.parent.left) - oldNode.parent.left = newNode; - else - oldNode.parent.right = newNode; - } - if (newNode != null) - newNode.parent = oldNode.parent; - }; - /* --------------------------------------------------------- - COLOR - --------------------------------------------------------- */ - /** - * Fetch color from a node. - * - * @param node A node to fetch color. - * @retur color. - */ - XTree.prototype.fetch_color = function (node) { - if (node == null) - return base.Color.BLACK; - else - return node.color; - }; - return XTree; - }()); - base.XTree = XTree; - })(base = std.base || (std.base = {})); -})(std || (std = {})); -/// -/// -var std; -(function (std) { - var base; - (function (base) { - /** - *

A red-black Tree storing {@link SetIterator SetIterators}.

- * - *

- *

- * - * @author Jeongho Nam - */ - var AtomicTree = (function (_super) { - __extends(AtomicTree, _super); - /* --------------------------------------------------------- - CONSTRUCTOR - --------------------------------------------------------- */ - /** - * Default Constructor. - */ - function AtomicTree(set, compare) { - if (compare === void 0) { compare = std.less; } - _super.call(this); - this.set_ = set; - this.compare_ = compare; - } - AtomicTree.prototype.find = function (val) { - if (val instanceof std.SetIterator && val.value instanceof std.SetIterator == false) - return _super.prototype.find.call(this, val); - else - return this.find_by_val(val); - }; - /** - * @hidden - */ - AtomicTree.prototype.find_by_val = function (val) { - if (this.root_ == null) - return null; - var node = this.root_; - while (true) { - var newNode = null; - if (std.equal_to(val, node.value.value)) - break; // EQUALS, MEANS MATCHED, THEN TERMINATE - else if (this.compare_(val, node.value.value)) - newNode = node.left; // LESS, THEN TO THE LEFT - else - newNode = node.right; // GREATER, THEN TO THE RIGHT - // ULTIL CHILD NODE EXISTS - if (newNode == null) - break; - // SHIFT A NEW NODE TO THE NODE TO BE RETURNED - node = newNode; - } - return node; - }; - /* --------------------------------------------------------- - BOUNDS - --------------------------------------------------------- */ - /** - *

Return iterator to lower bound.

- * - *

Returns an iterator pointing to the first element in the container which is not considered to - * go before val (i.e., either it is equivalent or goes after).

- * - *

The function uses its internal comparison object (key_comp) to determine this, returning an - * iterator to the first element for which key_comp(element,val) would return false.

- * - *

If the {@link ITreeSet} class is instantiated with the default comparison type ({@link less}), - * the function returns an iterator to the first element that is not less than val.

- - *

A similar member function, {@link upper_bound}, has the same behavior as {@link lower_bound}, except - * in the case that the {@link ITreeSet} contains elements equivalent to val: In this case - * {@link lower_bound} returns an iterator pointing to the first of such elements, whereas - * {@link upper_bound} returns an iterator pointing to the element following the last.

- * - * @param val Value to compare. - * - * @return An iterator to the the first element in the container which is not considered to go before - * val, or {@link ITreeSet.end} if all elements are considered to go before val. - */ - AtomicTree.prototype.lower_bound = function (val) { - var node = this.find(val); - if (node == null) - return this.set_.end(); - else if (std.equal_to(node.value.value, val)) - return node.value; - else { - var it = node.value; - while (!std.equal_to(it, this.set_.end()) && std.less(it.value, val)) - it = it.next(); - return it; - } - }; - /** - *

Return iterator to upper bound.

- * - *

Returns an iterator pointing to the first element in the container which is considered to go after - * val.

- - *

The function uses its internal comparison object (key_comp) to determine this, returning an - * iterator to the first element for which key_comp(val,element) would return true.

- - *

If the {@code ITreeSet} class is instantiated with the default comparison type (less), the - * function returns an iterator to the first element that is greater than val.

- * - *

A similar member function, {@link lower_bound}, has the same behavior as {@link upper_bound}, except - * in the case that the {@ITreeSet} contains elements equivalent to val: In this case - * {@link lower_bound} returns an iterator pointing to the first of such elements, whereas - * {@link upper_bound} returns an iterator pointing to the element following the last.

- * - * @param val Value to compare. - * - * @return An iterator to the the first element in the container which is considered to go after - * val, or {@link TreeSet.end end} if no elements are considered to go after val. - */ - AtomicTree.prototype.upper_bound = function (val) { - var node = this.find(val); - if (node == null) - return this.set_.end(); - else { - var it = node.value; - while (!std.equal_to(it, this.set_.end()) && (std.equal_to(it.value, val) || std.less(it.value, val))) - it = it.next(); - return it; - } + HashBuckets.prototype.rehash = function (size) { + if (size < Hash.MIN_SIZE) + size = Hash.MIN_SIZE; + var prev_matrix = this.buckets_; + this.buckets_ = new std.Vector(); + for (var i = 0; i < size; i++) + this.buckets_.push_back(new std.Vector()); + for (var i = 0; i < prev_matrix.size(); i++) + for (var j = 0; j < prev_matrix.at(i).size(); j++) { + var val = prev_matrix.at(i).at(j); + var bucket = this.buckets_.at(this.hash_index(val)); + bucket.push_back(val); + this.item_size_++; + } }; - /** - *

Get range of equal elements.

- * - *

Returns the bounds of a range that includes all the elements in the container that are equivalent - * to val.

- * - *

If no matches are found, the range returned has a length of zero, with both iterators pointing to - * the first element that is considered to go after val according to the container's - * internal comparison object (key_comp).

- * - *

Two elements of a multiset are considered equivalent if the container's comparison object returns - * false reflexively (i.e., no matter the order in which the elements are passed as arguments).

- * - * @param key Value to search for. - * - * @return The function returns a {@link Pair}, whose member {@link Pair.first} is the lower bound of - * the range (the same as {@link lower_bound}), and {@link Pair.second} is the upper bound - * (the same as {@link upper_bound}). - */ - AtomicTree.prototype.equal_range = function (val) { - return std.make_pair(this.lower_bound(val), this.upper_bound(val)); + HashBuckets.prototype.clear = function () { + this.buckets_ = new std.Vector(); + this.item_size_ = 0; + for (var i = 0; i < Hash.MIN_SIZE; i++) + this.buckets_.push_back(new std.Vector()); }; /* --------------------------------------------------------- - COMPARISON + ACCESSORS --------------------------------------------------------- */ - /** - *

Return comparison function.

- * - *

Returns a copy of the comparison function used by the container.

- * - *

By default, this is a {@link less} object, which returns the same as operator<.

- * - *

This object determines the order of the elements in the container: it is a function pointer or a function - * object that takes two arguments of the same type as the container elements, and returns true if - * the first argument is considered to go before the second in the strict weak ordering it - * defines, and false otherwise.

- * - *

Two elements of a {@link ITreeSet} are considered equivalent if {@link key_comp} returns false - * reflexively (i.e., no matter the order in which the elements are passed as arguments).

- * - *

In {@link ITreeSet} containers, the keys to sort the elements are the values (T) themselves, - * therefore {@link key_comp} and its sibling member function {@link value_comp} are equivalent.

- * - * @return The comparison function. - */ - AtomicTree.prototype.key_comp = function () { - return this.compare_; + HashBuckets.prototype.size = function () { + return this.buckets_.size(); }; - /** - *

Return comparison function.

- * - *

Returns a copy of the comparison function used by the container.

- * - *

By default, this is a {@link less} object, which returns the same as operator<.

- * - *

This object determines the order of the elements in the container: it is a function pointer or a function - * object that takes two arguments of the same type as the container elements, and returns true if - * the first argument is considered to go before the second in the strict weak ordering it - * defines, and false otherwise.

- * - *

Two elements of a {@link ITreeSet} are considered equivalent if {@link key_comp} returns false - * reflexively (i.e., no matter the order in which the elements are passed as arguments).

- * - *

In {@link ITreeSet} containers, the keys to sort the elements are the values (T) themselves, - * therefore {@link key_comp} and its sibling member function {@link value_comp} are equivalent.

- * - * @return The comparison function. - */ - AtomicTree.prototype.value_comp = function () { - return this.compare_; + HashBuckets.prototype.item_size = function () { + return this.item_size_; }; - /** - * @inheritdoc - */ - AtomicTree.prototype.is_equal_to = function (left, right) { - return std.equal_to(left, right); + HashBuckets.prototype.capacity = function () { + return this.buckets_.size() * Hash.MAX_RATIO; }; - /** - * @inheritdoc - */ - AtomicTree.prototype.is_less = function (left, right) { - return this.compare_(left.value, right.value); + HashBuckets.prototype.at = function (index) { + return this.buckets_.at(index); }; - return AtomicTree; - }(base.XTree)); - base.AtomicTree = AtomicTree; + HashBuckets.prototype.hash_index = function (val) { + return std.hash(val) % this.buckets_.size(); + }; + /* --------------------------------------------------------- + ELEMENTS I/O + --------------------------------------------------------- */ + HashBuckets.prototype.insert = function (val) { + this.buckets_.at(this.hash_index(val)).push_back(val); + if (++this.item_size_ > this.capacity()) + this.rehash(this.item_size_ * Hash.RATIO); + }; + HashBuckets.prototype.erase = function (val) { + var bucket = this.buckets_.at(this.hash_index(val)); + for (var i = 0; i < bucket.size(); i++) + if (bucket.at(i) == val) { + bucket.splice(i, 1); + this.item_size_--; + break; + } + }; + return HashBuckets; + }()); + base.HashBuckets = HashBuckets; + })(base = std.base || (std.base = {})); +})(std || (std = {})); +/// +/// +var std; +(function (std) { + var base; + (function (base) { + /** + *

Hash buckets storing {@link MapIterator MapIterators}.

+ * + *

+ * + *

+ * + * @author Jeongho Nam + */ + var MapHashBuckets = (function (_super) { + __extends(MapHashBuckets, _super); + function MapHashBuckets(map) { + _super.call(this); + this.map = map; + } + MapHashBuckets.prototype.find = function (key) { + var index = std.hash(key) % this.size(); + var bucket = this.at(index); + for (var i = 0; i < bucket.size(); i++) + if (std.equal_to(bucket.at(i).first, key)) + return bucket.at(i); + return this.map.end(); + }; + return MapHashBuckets; + }(base.HashBuckets)); + base.MapHashBuckets = MapHashBuckets; })(base = std.base || (std.base = {})); })(std || (std = {})); /// +/// var std; (function (std) { var base; (function (base) { /** - *

Static class holding enumeration codes of color of Red-black tree.

+ *

Hash buckets storing {@link SetIterator SetIterators}.

+ * + *

+ * + *

+ * + * @author Jeongho Nam + */ + var SetHashBuckets = (function (_super) { + __extends(SetHashBuckets, _super); + function SetHashBuckets(set) { + _super.call(this); + this.set = set; + } + SetHashBuckets.prototype.find = function (val) { + var index = std.hash(val) % this.size(); + var bucket = this.at(index); + for (var i = 0; i < bucket.size(); i++) + if (std.equal_to(bucket.at(i).value, val)) + return bucket.at(i); + return this.set.end(); + }; + return SetHashBuckets; + }(base.HashBuckets)); + base.SetHashBuckets = SetHashBuckets; + })(base = std.base || (std.base = {})); +})(std || (std = {})); +/// +/// +/// +/// +/// +/// +// Iterator definitions. +// +// @reference http://www.cplusplus.com/reference/iterator +// @author Jeongho Nam +var std; +(function (std) { + /** + *

Bi-directional iterator.

+ * + *

{@link Iterator Bidirectional iterators} are iterators that can be used to access the sequence of elements + * in a range in both directions (towards the end and towards the beginning).

+ * + *

All {@link IArrayIterator random-access iterators} are also valid {@link Iterrator bidirectional iterators}. + *

+ * + *

There is not a single type of {@link Iterator bidirectional iterator}: {@link IContainer Each container} + * may define its own specific iterator type able to iterate through it and access its elements.

+ * + *

+ * + *

+ * + * @reference http://www.cplusplus.com/reference/iterator/BidirectionalIterator + * @author Jeongho Nam + */ + var Iterator = (function () { + /* --------------------------------------------------------- + CONSTRUCTORS + --------------------------------------------------------- */ + /** + * Construct from the source {@link IContainer container}. + * + * @param source The source + */ + function Iterator(source) { + this.source_ = source; + } + /** + * Advances the {@link Iterator} by n element positions. + * + * @param n Number of element positions to advance. + * @return An advanced iterator. + */ + Iterator.prototype.advance = function (n) { + var it = this; + var i; + if (n >= 0) { + for (i = 0; i < n; i++) + if (it.equal_to(this.source_.end())) + return this.source_.end(); + else + it = it.next(); + } + else { + n = n * -1; + for (i = 0; i < n; i++) + if (it.equal_to(this.source_.end())) + return this.source_.end(); + else + it = it.prev(); + } + return it; + }; + /* --------------------------------------------------------- + ACCESSORS + --------------------------------------------------------- */ + /** + * Get source + */ + Iterator.prototype.get_source = function () { + return this.source_; + }; + /** + *

Whether an iterator is equal with the iterator.

* - *

Color codes imposed to nodes of RB-Tree are following those rules:

+ *

Compare two iterators and returns whether they are equal or not.

* - *
    - *
  1. A node is either red or black.
  2. - *
  3. The root is black. This rule is sometimes omitted. Since the root can - * always be changed from red to black, but not - * necessarily vice versa, this rule has little effect on analysis.
  4. - *
  5. All leaves (NIL; null) are black.
  6. - *
  7. If a node is red, then both its children are - * black.
  8. - *
  9. Every path from a given node to any of its descendant NIL nodes contains the same number of - * black nodes. Some definitions: the number of - * black nodes from the root to a node is the node's - * black depth; the uniform number of black - * nodes in all paths from root to the leaves is called the black-height of - * the red-black tree.
  10. - *
+ *

Note

+ *

Iterator's equal_to() only compare souce container and index number.

* - * @author Migrated by Jeongho Nam + *

Although elements in a pair, key and value are equal_to, if the source map or + * index number is different, then the {@link equal_to equal_to()} will return false. If you want to + * compare the elements of a pair, compare them directly by yourself.

+ * + * @param obj An iterator to compare + * @return Indicates whether equal or not. */ - (function (Color) { + Iterator.prototype.equal_to = function (obj) { + return this.source_ == obj.source_; + }; + Object.defineProperty(Iterator.prototype, "value", { /** - *

Code of color black.

+ *

Get value of the iterator is pointing.

* - *
    - *
  • Those are clearly black: root, leaf nodes or children nodes of red.
  • - *
  • Every path from a given nodes containes the same number of black nodes exclude NIL(s).
  • - *
- */ - Color[Color["BLACK"] = 0] = "BLACK"; - /** - *

Code of color red.

+ * @return A value of the iterator. */ - Color[Color["RED"] = 1] = "RED"; - })(base.Color || (base.Color = {})); - var Color = base.Color; - })(base = std.base || (std.base = {})); + get: function () { + throw new std.LogicError("Have to be overriden."); + }, + enumerable: true, + configurable: true + }); + return Iterator; + }()); + std.Iterator = Iterator; +})(std || (std = {})); +var std; +(function (std) { + /** + *

This class reverses the direction in which a bidirectional or random-access iterator iterates through a range. + *

+ * + *

A copy of the original iterator (the {@link Iterator base iterator}) is kept internally and used to reflect + * the operations performed on the {@link ReverseIterator}: whenever the {@link ReverseIterator} is incremented, its + * {@link Iterator base iterator} is decreased, and vice versa. A copy of the {@link Iterator base iterator} with the + * current state can be obtained at any time by calling member {@link base}.

+ * + *

Notice however that when an iterator is reversed, the reversed version does not point to the same element in + * the range, but to the one preceding it. This is so, in order to arrange for the past-the-end element of a + * range: An iterator pointing to a past-the-end element in a range, when reversed, is pointing to the last element + * (not past it) of the range (this would be the first element of the reversed range). And if an iterator to the + * first element in a range is reversed, the reversed iterator points to the element before the first element (this + * would be the past-the-end element of the reversed range).

+ * + *

+ * + *

+ * + * @reference http://www.cplusplus.com/reference/iterator/reverse_iterator + * @author Jeongho Nam + */ + var ReverseIterator = (function (_super) { + __extends(ReverseIterator, _super); + /* --------------------------------------------------------- + CONSTRUCTORS + --------------------------------------------------------- */ + function ReverseIterator(base) { + if (base == null) + _super.call(this, null); + else { + _super.call(this, base.get_source()); + this.base_ = base.prev(); + } + } + ReverseIterator.prototype.base = function () { + return this.base_.next(); + }; + Object.defineProperty(ReverseIterator.prototype, "value", { + /* --------------------------------------------------------- + ACCESSORS + --------------------------------------------------------- */ + get: function () { + return this.base_.value; + }, + enumerable: true, + configurable: true + }); + /* --------------------------------------------------------- + MOVERS + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + ReverseIterator.prototype.prev = function () { + var ret = this.create_neighbor(); + ret.source_ = this.source_; + ret.base_ = this.base_.next(); + return ret; + }; + /** + * @inheritdoc + */ + ReverseIterator.prototype.next = function () { + var ret = this.create_neighbor(); + ret.source_ = this.source_; + ret.base_ = this.base_.next(); + return ret; + }; + /** + * @inheritdoc + */ + ReverseIterator.prototype.advance = function (n) { + var ret = this.create_neighbor(); + ret.source_ = this.source_; + ret.base_ = this.base_.advance(-n); + return ret; + }; + /* --------------------------------------------------------- + COMPARES + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + ReverseIterator.prototype.equal_to = function (obj) { + return this.base_.equal_to(obj.base_); + }; + /** + * @inheritdoc + */ + ReverseIterator.prototype.swap = function (obj) { + this.base_.swap(obj.base_); + }; + return ReverseIterator; + }(std.Iterator)); + std.ReverseIterator = ReverseIterator; + /* ========================================================= + GLOBAL FUNCTIONS + - MOVERS + - BEGIN + - END + ============================================================ + MOVERS + --------------------------------------------------------- */ + /** + *

Return distance between {@link Iterator iterators}.

+ * + *

Calculates the number of elements between first and last.

+ * + *

If it is a {@link IArrayIterator random-access iterator}, the function uses operator- to calculate this. + * Otherwise, the function uses the increase operator {@link Iterator.next next()} repeatedly.

+ * + * @param first Iterator pointing to the initial element. + * @param last Iterator pointing to the final element. This must be reachable from first. + * + * @return The number of elements between first and last. + */ + function distance(first, last) { + if (first.index != undefined) { + // WHEN IARRAY_ITERATOR + // ABS FOR REVERSE_ITERATOR + return Math.abs(last.index - first.index); + } + var length = 0; + for (; !first.equal_to(last); first = first.next()) + length++; + return length; + } + std.distance = distance; + /** + *

Advance iterator.

+ * + *

Advances the iterator it by n elements positions.

+ * + * @param it Iterator to be advanced. + * @param n Number of element positions to advance. + * + * @return An iterator to the element n positions before it. + */ + function advance(it, n) { + return it.advance(n); + } + std.advance = advance; + /** + *

Get iterator to previous element.

+ * + *

Returns an iterator pointing to the element that it would be pointing to if advanced -n positions.

+ * + * @param it Iterator to base position. + * @param n Number of element positions offset (1 by default). + * + * @return An iterator to the element n positions before it. + */ + function prev(it, n) { + if (n === void 0) { n = 1; } + return it.advance(n); + } + std.prev = prev; + /** + *

Get iterator to next element.

+ * + *

Returns an iterator pointing to the element that it would be pointing to if advanced n positions.

+ * + * @param it Iterator to base position. + * @param n Number of element positions offset (1 by default). + * + * @return An iterator to the element n positions away from it. + */ + function next(it, n) { + if (n === void 0) { n = 1; } + return it.advance(n); + } + std.next = next; + // typedef is not specified in TypeScript yet. + // Instead, I listed all the containers and its iterators as overloaded functions + function begin(container) { + return container.begin(); + } + std.begin = begin; + // typedef is not specified in TypeScript yet. + // Instead, I listed all the containers and its iterators as overloaded functions + function end(container) { + return container.end(); + } + std.end = end; })(std || (std = {})); /// +/// +/// var std; (function (std) { var base; (function (base) { /** - *

An abstract container.

+ *

An abstract map.

+ * + *

{@link MapContainer MapContainers} are associative containers that store elements formed by a combination + * of a key value (Key) and a mapped value (T), and which allows for fast retrieval + * of individual elements based on their keys.

* - *

- * - *

+ *

In a {@link MapContainer}, the key values are generally used to identify the elements, while the + * mapped values store the content associated to this key. The types of key and + * mapped value may differ, and are grouped together in member type value_type, which is a + * {@link Pair} type combining both:

+ * + *

typedef pair value_type;

+ * + *

{@link MapContainer} stores elements, keeps sequence and enables indexing by inserting elements into a + * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index + * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

+ * + *

+ *

* *

Container properties

*
- *
Sequence
- *
Elements in sequence containers are ordered in a strict linear sequence. Individual elements are - * accessed by their position in this sequence.
+ *
Associative
+ *
+ * Elements in associative containers are referenced by their key and not by their absolute position + * in the container. + *
* - *
Doubly-linked list
- *
Each element keeps information on how to locate the next and the previous elements, allowing - * constant time insert and erase operations before or after a specific element (even of entire ranges), - * but no direct random access.
+ *
Map
+ *
+ * Each element associates a key to a mapped value: + * Keys are meant to identify the elements whose main content is the mapped value. + *
*
* - * @param Type of elements. + * @param Type of the keys. Each element in a map is identified by its key value. + * @param Type of the mapped value. Each element in a map stores some data as its mapped value. * * @author Jeongho Nam */ - var Container = (function () { - function Container() { + var MapContainer = (function (_super) { + __extends(MapContainer, _super); + function MapContainer() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i - 0] = arguments[_i]; } - // THIS IS ABSTRACT CLASS - // NOTHING TO DO ESPECIALLY + _super.call(this); + // INITIALIZATION + this.init(); + // BRANCH - OVERLOADINGS + if (args.length == 0) { } // DO NOTHING + else if (args.length == 1 && (args[0] instanceof base.Container || args[0] instanceof std.Vector)) { + this.construct_from_container(args[0]); + } + else if (args.length == 1 && args[0] instanceof Array) { + this.construct_from_array(args[0]); + } + else if (args.length == 2 && args[0] instanceof std.Iterator && args[1] instanceof std.Iterator) { + this.construct_from_range(args[0], args[1]); + } } /** - * @inheritdoc + * @hidden */ - Container.prototype.clear = function () { - this.erase(this.begin(), this.end()); + MapContainer.prototype.init = function () { + this.data_ = new std.List(); }; /** - * @inheritdoc + * @hidden */ - Container.prototype.empty = function () { - return this.size() == 0; + MapContainer.prototype.construct_from_array = function (items) { + for (var i = 0; i < items.length; i++) + if (items[i] instanceof std.Pair) + this.insert_by_pair(items[i]); + else + this.insert_by_tuple(items[i]); }; - /* --------------------------------------------------------------- - UTILITIES - --------------------------------------------------------------- */ /** - * @inheritdoc + * @hidden */ - Container.prototype.swap = function (obj) { - var supplement = new std.Vector(this.begin(), this.end()); - this.assign(obj.begin(), obj.end()); - obj.assign(supplement.begin(), supplement.end()); + MapContainer.prototype.construct_from_container = function (container) { + this.construct_from_range(container.begin(), container.end()); }; - return Container; - }()); - base.Container = Container; - })(base = std.base || (std.base = {})); -})(std || (std = {})); -/// -var std; -(function (std) { - var base; - (function (base) { - /** - *

An abstract error instance.

- * - *

{@link ErrorInstance} is an abstract class of {@link ErrorCode} and {@link ErrorCondition} - * holding an error instance's identifier {@link value}, associated with a {@link category}.

- * - *

The operating system and other low-level applications and libraries generate numerical error codes to - * represent possible results. These numerical values may carry essential information for a specific platform, - * but be non-portable from one platform to another.

- * - *

Objects of this class associate such numerical codes to {@link ErrorCategory error categories}, - * so that they can be interpreted when needed as more abstract (and portable) - * {@link ErrorCondition error conditions}.

- * - *

- *

- * - * @author Jeongho Nam - */ - var ErrorInstance = (function () { - function ErrorInstance(val, category) { - if (val === void 0) { val = 0; } - if (category === void 0) { category = null; } - this.assign(val, category); - } /** - *

Assign error instance.

- * - *

Assigns the {@link ErrorCode} object a value of val associated with the {@link ErrorCategory}.

- * - * @param val A numerical value identifying an error instance. - * @param category A reference to an {@link ErrorCategory} object. + * @hidden */ - ErrorInstance.prototype.assign = function (val, category) { - this.category_ = category; - this.value_ = val; + MapContainer.prototype.construct_from_range = function (begin, end) { + this.assign(begin, end); }; + /* --------------------------------------------------------- + ASSIGN & CLEAR + --------------------------------------------------------- */ /** - *

Clear error instance.

- * - *

Clears the value in the {@link ErrorCode} object so that it is set to a value of 0 of the - * {@link ErrorCategory.systemCategory ErrorCategory.systemCategory()} (indicating no error).

+ * @inheritdoc */ - ErrorInstance.prototype.clear = function () { - this.value_ = 0; + MapContainer.prototype.assign = function (first, last) { + // INSERT + this.clear(); + this.insert(first, last); }; - /* --------------------------------------------------------- - ACCESSORS - --------------------------------------------------------- */ /** - *

Get category.

- * - *

Returns a reference to the {@link ErrorCategory} associated with the {@link ErrorCode} object.

- * - * @return A reference to a non-copyable object of a type derived from {@link ErrorCategory}. + * @inheritdoc */ - ErrorInstance.prototype.category = function () { - return this.category_; + MapContainer.prototype.clear = function () { + // TO BE ABSTRACT + this.data_.clear(); }; /** - *

Error value.

+ *

Return iterator to beginning.

* - *

Returns the error value associated with the {@link ErrorCode} object.

+ *

Returns an iterator referring the first element in the

* - * @return The error value. + *

Note

+ *

If the container is {@link empty}, the returned iterator is same with {@link end end()}.

+ * + * @return An iterator to the first element in the The iterator containes the first element's value. */ - ErrorInstance.prototype.value = function () { - return this.value_; + MapContainer.prototype.begin = function () { + return new std.MapIterator(this, this.data_.begin()); }; /** - *

Get message.

+ *

Return iterator to end.

+ *

Returns an iterator referring to the past-the-end element in the

* - *

Returns the message associated with the error instance.

+ *

The past-the-end element is the theoretical element that would follow the last element in the + * It does not point to any element, and thus shall not be dereferenced.

* - *

Error messages are defined by the {@link category} the error instance belongs to.

+ *

Because the ranges used by functions of the container do not include the element reference by their + * closing iterator, this function is often used in combination with {@link MapContainer}.{@link begin} to + * specify a range including all the elements in the

* - *

This function returns the same as if the following member was called:

+ *

Note

+ *

Returned iterator from {@link MapContainer}.{@link end} does not refer any element. Trying to accessing + * element by the iterator will cause throwing exception ({@link OutOfRange}).

* - *

category().message(value())

+ *

If the container is {@link empty}, this function returns the same as {@link begin}.

* - * @return A string object with the message associated with the {@link ErrorCode}. + * @return An iterator to the end element in the */ - ErrorInstance.prototype.message = function () { - if (this.category_ == null || this.value_ == 0) - return ""; - else - return this.category_.message(this.value_); + MapContainer.prototype.end = function () { + return new std.MapIterator(this, this.data_.end()); }; /** - *

Default error condition.

+ *

Return {@link MapReverseIterator reverse iterator} to reverse beginning.

* - *

Returns the default {@link ErrorCondition}object associated with the {@link ErrorCode} object.

+ *

Returns a {@link MapReverseIterator reverse iterator} pointing to the last element in the container + * (i.e., its reverse beginning).

* - *

This function returns the same as if the following member was called:

+ * {@link MapReverseIterator Reverse iterators} iterate backwards: increasing them moves them towards the + * beginning of the container.

* - *

category().default_error_condition(value())

+ *

{@link rbegin} points to the element preceding the one that would be pointed to by member {@link end}. + *

* - *

{@link ErrorCategory.default_error_condition ErrorCategory.default_error_condition()} - * is a virtual member function, that can operate differently for each category.

+ * @return A {@link MapReverseIterator reverse iterator} to the reverse beginning of the sequence * - * @return An {@link ErrorCondition}object that corresponds to the {@link ErrorCode} object. */ - ErrorInstance.prototype.default_error_condition = function () { - if (this.category_ == null || this.value_ == 0) - return null; - else - return this.category_.default_error_condition(this.value_); + MapContainer.prototype.rbegin = function () { + return new std.MapReverseIterator(this.end()); }; - /* --------------------------------------------------------- - OPERATORS - --------------------------------------------------------- */ /** - *

Convert to bool.

+ *

Return {@link MapReverseIterator reverse iterator} to reverse end.

* - *

Returns whether the error instance has a numerical {@link value} other than 0.

+ *

Returns a {@link MapReverseIterator reverse iterator} pointing to the theoretical element right before + * the first element in the {@link MapContainer map container} (which is considered its reverse end). + *

* - *

If it is zero (which is generally used to represent no error), the function returns false, otherwise it returns true.

+ *

The range between {@link MapContainer}.{@link rbegin} and {@link MapContainer}.{@link rend} contains + * all the elements of the container (in reverse order).

* - * @return true if the error's numerical value is not zero. - * false otherwise. + * @return A {@link MapReverseIterator reverse iterator} to the reverse end of the sequence */ - ErrorInstance.prototype.to_bool = function () { - return this.value_ != 0; - }; - return ErrorInstance; - }()); - base.ErrorInstance = ErrorInstance; - })(base = std.base || (std.base = {})); -})(std || (std = {})); -/// -var std; -(function (std) { - var base; - (function (base) { - (function (Hash) { - Hash[Hash["MIN_SIZE"] = 10] = "MIN_SIZE"; - Hash[Hash["RATIO"] = 1] = "RATIO"; - Hash[Hash["MAX_RATIO"] = 2] = "MAX_RATIO"; - })(base.Hash || (base.Hash = {})); - var Hash = base.Hash; - /** - *

Hask buckets.

- * - * @author Jeongho Nam - */ - var HashBuckets = (function () { + MapContainer.prototype.rend = function () { + return new std.MapReverseIterator(this.begin()); + }; /* --------------------------------------------------------- - CONSTRUCTORS + ELEMENTS --------------------------------------------------------- */ /** - * Default Constructor. - */ - function HashBuckets() { - this.clear(); - } - /** - *

Reconstruction of hash table.

+ *

Whether have the item or not.

* - *

All the elements in the hash buckets are rearranged according to their hash value into the new set of - * buckets. This may alter the order of iteration of elements within the container.

+ *

Indicates whether a map has an item having the specified identifier.

* - *

Notice that {@link rehash rehashes} are automatically performed whenever its number of elements is going - * to greater than its own {@link capacity}.

+ * @param key Key value of the element whose mapped value is accessed. * - * @param size Number of bucket size to rehash. + * @return Whether the map has an item having the specified identifier. */ - HashBuckets.prototype.rehash = function (size) { - if (size < Hash.MIN_SIZE) - size = Hash.MIN_SIZE; - var prev_matrix = this.buckets_; - this.buckets_ = new std.Vector(); - for (var i = 0; i < size; i++) - this.buckets_.push_back(new std.Vector()); - for (var i = 0; i < prev_matrix.size(); i++) - for (var j = 0; j < prev_matrix.at(i).size(); j++) { - var val = prev_matrix.at(i).at(j); - var bucket = this.buckets_.at(this.hash_index(val)); - bucket.push_back(val); - this.item_size_++; - } - }; - HashBuckets.prototype.clear = function () { - this.buckets_ = new std.Vector(); - this.item_size_ = 0; - for (var i = 0; i < Hash.MIN_SIZE; i++) - this.buckets_.push_back(new std.Vector()); + MapContainer.prototype.has = function (key) { + return !this.find(key).equal_to(this.end()); }; - /* --------------------------------------------------------- - ACCESSORS - --------------------------------------------------------- */ - HashBuckets.prototype.size = function () { - return this.buckets_.size(); + /** + * Return the number of elements in the map. + */ + MapContainer.prototype.size = function () { + return this.data_.size(); }; - HashBuckets.prototype.item_size = function () { - return this.item_size_; + MapContainer.prototype.push = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i - 0] = arguments[_i]; + } + // TO BE ABSTRACT + for (var i = 0; i < args.length; i++) + if (args[i] instanceof std.Pair) + this.insert_by_pair(args[i]); + else if (args[i] instanceof Array) + this.insert_by_tuple(args[i]); + return this.size(); }; - HashBuckets.prototype.capacity = function () { - return this.buckets_.size() * Hash.MAX_RATIO; + MapContainer.prototype.insert = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i - 0] = arguments[_i]; + } + if (args.length == 1 && args[0] instanceof std.Pair) { + return this.insert_by_pair(args[0]); + } + else if (args.length == 1 && args[0] instanceof Array) { + return this.insert_by_tuple(args[0]); + } + else if (args.length == 2 && args[0] instanceof std.Iterator && args[1] instanceof std.Iterator) { + return this.insert_by_range(args[0], args[1]); + } + else { + var ret = void 0; + var is_reverse_iterator = false; + // REVERSE_ITERATOR TO ITERATOR + if (args[0] instanceof std.MapReverseIterator) { + is_reverse_iterator = true; + args[0] = args[0].base().prev(); + } + // INSERT AN ELEMENT + if (args[1] instanceof std.Pair) + ret = this.insert_by_hint(args[0], args[1]); + else + ret = this.insert_by_hint_with_tuple(args[0], args[1]); + // RETURN BRANCHES + if (is_reverse_iterator == true) + return new std.MapReverseIterator(ret.next()); + else + return ret; + } }; - HashBuckets.prototype.at = function (index) { - return this.buckets_.at(index); + /** + * @hidden + */ + MapContainer.prototype.insert_by_tuple = function (tuple) { + return this.insert_by_pair(new std.Pair(tuple[0], tuple[1])); }; - HashBuckets.prototype.hash_index = function (val) { - return std.hash(val) % this.buckets_.size(); + /** + * @hidden + */ + MapContainer.prototype.insert_by_hint_with_tuple = function (hint, tuple) { + return this.insert_by_hint(hint, std.make_pair(tuple[0], tuple[1])); }; - /* --------------------------------------------------------- - ELEMENTS I/O - --------------------------------------------------------- */ - HashBuckets.prototype.insert = function (val) { - this.buckets_.at(this.hash_index(val)).push_back(val); - if (++this.item_size_ > this.capacity()) - this.rehash(this.item_size_ * Hash.RATIO); + MapContainer.prototype.erase = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i - 0] = arguments[_i]; + } + if (args.length == 1 && (args[0] instanceof std.Iterator == false || args[0].get_source() != this)) + return this.erase_by_key(args[0]); + else if (args.length == 1) + return this.erase_by_iterator(args[0]); + else + return this.erase_by_iterator(args[0], args[1]); }; - HashBuckets.prototype.erase = function (val) { - var bucket = this.buckets_.at(this.hash_index(val)); - for (var i = 0; i < bucket.size(); i++) - if (bucket.at(i) == val) { - bucket.splice(i, 1); - this.item_size_--; - break; - } + /** + * @hidden + */ + MapContainer.prototype.erase_by_key = function (key) { + var it = this.find(key); + if (it.equal_to(this.end()) == true) + return 0; + this.erase_by_iterator(it); + return 1; + }; + /** + * @hidden + */ + MapContainer.prototype.erase_by_iterator = function (first, last) { + if (last === void 0) { last = first.next(); } + var ret; + var is_reverse_iterator = false; + // REVERSE ITERATOR TO ITERATOR + if (first instanceof std.MapReverseIterator) { + is_reverse_iterator = true; + var first_it = last.base(); + var last_it = first.base(); + first = first_it; + last = last_it; + } + // ERASE ELEMENTS + ret = this.erase_by_range(first, last); + // RETURN BRANCHES + if (is_reverse_iterator == true) + return new std.MapReverseIterator(ret.next()); + else + return ret; }; - return HashBuckets; - }()); - base.HashBuckets = HashBuckets; - })(base = std.base || (std.base = {})); -})(std || (std = {})); -/// -/// -/// -/// -/// -/// -// Iterator definitions. -// -// @reference http://www.cplusplus.com/reference/iterator -// @author Jeongho Nam -var std; -(function (std) { - /** - *

Bi-directional iterator.

- * - *

{@link Iterator Bidirectional iterators} are iterators that can be used to access the sequence of elements - * in a range in both directions (towards the end and towards the beginning).

- * - *

All {@link IArrayIterator random-access iterators} are also valid {@link Iterrator bidirectional iterators}. - *

- * - *

There is not a single type of {@link Iterator bidirectional iterator}: {@link IContainer Each container} - * may define its own specific iterator type able to iterate through it and access its elements.

- * - *

- * - *

- * - * @reference http://www.cplusplus.com/reference/iterator/BidirectionalIterator - * @author Jeongho Nam - */ - var Iterator = (function () { - /* --------------------------------------------------------- - CONSTRUCTORS - --------------------------------------------------------- */ - /** - * Construct from the source {@link IContainer container}. - * - * @param source The source - */ - function Iterator(source) { - this.source_ = source; - } - /** - * Advances the {@link Iterator} by n element positions. - * - * @param n Number of element positions to advance. - * @return An advanced iterator. - */ - Iterator.prototype.advance = function (n) { - var it = this; - var i; - if (n >= 0) { - for (i = 0; i < n; i++) - if (it.equal_to(this.source_.end())) - return this.source_.end(); - else - it = it.next(); - } - else { - n = n * -1; - for (i = 0; i < n; i++) - if (it.equal_to(this.source_.end())) - return this.source_.end(); - else - it = it.prev(); - } - return it; - }; - /* --------------------------------------------------------- - ACCESSORS - --------------------------------------------------------- */ - /** - * Get source - */ - Iterator.prototype.get_source = function () { - return this.source_; - }; - /** - *

Whether an iterator is equal with the iterator.

- * - *

Compare two iterators and returns whether they are equal or not.

- * - *

Note

- *

Iterator's equal_to() only compare souce container and index number.

- * - *

Although elements in a pair, key and value are equal_to, if the source map or - * index number is different, then the {@link equal_to equal_to()} will return false. If you want to - * compare the elements of a pair, compare them directly by yourself.

- * - * @param obj An iterator to compare - * @return Indicates whether equal or not. - */ - Iterator.prototype.equal_to = function (obj) { - return this.source_ == obj.source_; - }; - Object.defineProperty(Iterator.prototype, "value", { /** - *

Get value of the iterator is pointing.

- * - * @return A value of the iterator. + * @hidden */ - get: function () { - throw new std.LogicError("Have to be overriden."); - }, - enumerable: true, - configurable: true - }); - return Iterator; - }()); - std.Iterator = Iterator; + MapContainer.prototype.erase_by_range = function (begin, end) { + // ERASE + var listIterator = this.data_.erase(begin.get_list_iterator(), end.get_list_iterator()); + // POST-PROCESS + this.handle_erase(begin, end); + return new std.MapIterator(this, listIterator); + }; + return MapContainer; + }(base.Container)); + base.MapContainer = MapContainer; + })(base = std.base || (std.base = {})); })(std || (std = {})); var std; (function (std) { /** - *

This class reverses the direction in which a bidirectional or random-access iterator iterates through a range. - *

- * - *

A copy of the original iterator (the {@link Iterator base iterator}) is kept internally and used to reflect - * the operations performed on the {@link ReverseIterator}: whenever the {@link ReverseIterator} is incremented, its - * {@link Iterator base iterator} is decreased, and vice versa. A copy of the {@link Iterator base iterator} with the - * current state can be obtained at any time by calling member {@link base}.

- * - *

Notice however that when an iterator is reversed, the reversed version does not point to the same element in - * the range, but to the one preceding it. This is so, in order to arrange for the past-the-end element of a - * range: An iterator pointing to a past-the-end element in a range, when reversed, is pointing to the last element - * (not past it) of the range (this would be the first element of the reversed range). And if an iterator to the - * first element in a range is reversed, the reversed iterator points to the element before the first element (this - * would be the past-the-end element of the reversed range).

+ *

An iterator of {@link MapContainer map container}.

* - *

- * - *

+ *

+ *

* - * @reference http://www.cplusplus.com/reference/iterator/reverse_iterator * @author Jeongho Nam */ - var ReverseIterator = (function (_super) { - __extends(ReverseIterator, _super); + var MapIterator = (function (_super) { + __extends(MapIterator, _super); /* --------------------------------------------------------- CONSTRUCTORS --------------------------------------------------------- */ - function ReverseIterator(base) { - if (base == null) - _super.call(this, null); - else { - _super.call(this, base.get_source()); - this.base_ = base.prev(); - } + /** + * Construct from the {@link MapContainer source map} and {@link ListIterator list iterator}. + * + * @param source The source {@link MapContainer}. + * @param list_iterator A {@link ListIterator} pointing {@link Pair} of key and value. + */ + function MapIterator(source, list_iterator) { + _super.call(this, source); + this.list_iterator_ = list_iterator; } - ReverseIterator.prototype.base = function () { - return this.base_.next(); - }; - Object.defineProperty(ReverseIterator.prototype, "value", { - /* --------------------------------------------------------- - ACCESSORS - --------------------------------------------------------- */ - get: function () { - return this.base_.value; - }, - enumerable: true, - configurable: true - }); /* --------------------------------------------------------- MOVERS --------------------------------------------------------- */ /** - * @inheritdoc + * Get iterator to previous element. */ - ReverseIterator.prototype.prev = function () { - var ret = this.create_neighbor(); - ret.source_ = this.source_; - ret.base_ = this.base_.next(); - return ret; + MapIterator.prototype.prev = function () { + return new MapIterator(this.map, this.list_iterator_.prev()); }; /** - * @inheritdoc + * Get iterator to next element. */ - ReverseIterator.prototype.next = function () { - var ret = this.create_neighbor(); - ret.source_ = this.source_; - ret.base_ = this.base_.next(); - return ret; + MapIterator.prototype.next = function () { + return new MapIterator(this.map, this.list_iterator_.next()); }; /** - * @inheritdoc + * Advances the Iterator by n element positions. + * + * @param step Number of element positions to advance. + * @return An advanced Iterator. */ - ReverseIterator.prototype.advance = function (n) { - var ret = this.create_neighbor(); - ret.source_ = this.source_; - ret.base_ = this.base_.advance(-n); - return ret; + MapIterator.prototype.advance = function (step) { + return new MapIterator(this.map, this.list_iterator_.advance(step)); }; - /* --------------------------------------------------------- - COMPARES - --------------------------------------------------------- */ + Object.defineProperty(MapIterator.prototype, "map", { + /* --------------------------------------------------------- + ACCESSORS + --------------------------------------------------------- */ + /** + * @hidden + */ + get: function () { + return this.source_; + }, + enumerable: true, + configurable: true + }); /** - * @inheritdoc + * Get ListIterator. */ - ReverseIterator.prototype.equal_to = function (obj) { - return this.base_.equal_to(obj.base_); + MapIterator.prototype.get_list_iterator = function () { + return this.list_iterator_; }; + Object.defineProperty(MapIterator.prototype, "value", { + /** + * @inheritdoc + */ + get: function () { + return this.list_iterator_.value; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(MapIterator.prototype, "first", { + /** + * Get first, key element. + */ + get: function () { + return this.list_iterator_.value.first; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(MapIterator.prototype, "second", { + /** + * Get second, value element. + */ + get: function () { + return this.list_iterator_.value.second; + }, + /** + * Set second value. + */ + set: function (val) { + this.list_iterator_.value.second = val; + }, + enumerable: true, + configurable: true + }); + /* --------------------------------------------------------- + COMPARISONS + --------------------------------------------------------- */ /** - * @inheritdoc - */ - ReverseIterator.prototype.swap = function (obj) { - this.base_.swap(obj.base_); - }; - return ReverseIterator; - }(std.Iterator)); - std.ReverseIterator = ReverseIterator; - /* ========================================================= - GLOBAL FUNCTIONS - - MOVERS - - BEGIN - - END - ============================================================ - MOVERS - --------------------------------------------------------- */ - /** - *

Return distance between {@link Iterator iterators}.

- * - *

Calculates the number of elements between first and last.

- * - *

If it is a {@link IArrayIterator random-access iterator}, the function uses operator- to calculate this. - * Otherwise, the function uses the increase operator {@link Iterator.next next()} repeatedly.

- * - * @param first Iterator pointing to the initial element. - * @param last Iterator pointing to the final element. This must be reachable from first. - * - * @return The number of elements between first and last. - */ - function distance(first, last) { - if (first.index != undefined) { - // WHEN IARRAY_ITERATOR - // ABS FOR REVERSE_ITERATOR - return Math.abs(last.index - first.index); - } - var length = 0; - for (; !first.equal_to(last); first = first.next()) - length++; - return length; - } - std.distance = distance; - /** - *

Advance iterator.

- * - *

Advances the iterator it by n elements positions.

- * - * @param it Iterator to be advanced. - * @param n Number of element positions to advance. - * - * @return An iterator to the element n positions before it. - */ - function advance(it, n) { - return it.advance(n); - } - std.advance = advance; - /** - *

Get iterator to previous element.

- * - *

Returns an iterator pointing to the element that it would be pointing to if advanced -n positions.

- * - * @param it Iterator to base position. - * @param n Number of element positions offset (1 by default). - * - * @return An iterator to the element n positions before it. - */ - function prev(it, n) { - if (n === void 0) { n = 1; } - return it.advance(n); - } - std.prev = prev; + *

Whether an iterator is equal with the iterator.

+ * + *

Compare two iterators and returns whether they are equal or not.

+ * + * @param obj An iterator to compare + * @return Indicates whether equal or not. + */ + MapIterator.prototype.equal_to = function (obj) { + return this.source_ == obj.source_ && this.list_iterator_.equal_to(obj.list_iterator_); + }; + MapIterator.prototype.less = function (obj) { + return std.less(this.first, obj.first); + }; + MapIterator.prototype.hash = function () { + return std.hash(this.first); + }; + MapIterator.prototype.swap = function (obj) { + this.list_iterator_.swap(obj.list_iterator_); + }; + return MapIterator; + }(std.Iterator)); + std.MapIterator = MapIterator; /** - *

Get iterator to next element.

- * - *

Returns an iterator pointing to the element that it would be pointing to if advanced n positions.

+ *

A reverse-iterator of {@link MapContainer map container}.

* - * @param it Iterator to base position. - * @param n Number of element positions offset (1 by default). + *

+ *

* - * @return An iterator to the element n positions away from it. + * @author Jeongho Nam */ - function next(it, n) { - if (n === void 0) { n = 1; } - return it.advance(n); - } - std.next = next; - // typedef is not specified in TypeScript yet. - // Instead, I listed all the containers and its iterators as overloaded functions - function begin(container) { - return container.begin(); - } - std.begin = begin; - // typedef is not specified in TypeScript yet. - // Instead, I listed all the containers and its iterators as overloaded functions - function end(container) { - return container.end(); - } - std.end = end; + var MapReverseIterator = (function (_super) { + __extends(MapReverseIterator, _super); + /* --------------------------------------------------------- + CONSTRUCTORS + --------------------------------------------------------- */ + function MapReverseIterator(base) { + _super.call(this, base); + } + MapReverseIterator.prototype.create_neighbor = function () { + return new MapReverseIterator(null); + }; + Object.defineProperty(MapReverseIterator.prototype, "first", { + /* --------------------------------------------------------- + ACCESSORS + --------------------------------------------------------- */ + /** + * Get first, key element. + */ + get: function () { + return this.base_.first; + }, + enumerable: true, + configurable: true + }); + Object.defineProperty(MapReverseIterator.prototype, "second", { + /** + * Get second, value element. + */ + get: function () { + return this.base_.second; + }, + /** + * Set second value. + */ + set: function (val) { + this.base_.second = val; + }, + enumerable: true, + configurable: true + }); + return MapReverseIterator; + }(std.ReverseIterator)); + std.MapReverseIterator = MapReverseIterator; })(std || (std = {})); /// -/// -/// +/// var std; (function (std) { var base; (function (base) { /** - *

An abstract map.

+ *

An abstract multi-map.

* - *

{@link MapContainer MapContainers} are associative containers that store elements formed by a combination - * of a key value (Key) and a mapped value (T), and which allows for fast retrieval - * of individual elements based on their keys.

+ *

{@link MultiMap MultiMaps} are associative containers that store elements formed by a combination of a + * key value (Key) and a mapped value (T), and which allows for fast retrieval of + * individual elements based on their keys.

* *

In a {@link MapContainer}, the key values are generally used to identify the elements, while the - * mapped values store the content associated to this key. The types of key and + * mapped values store the content associated to this key. The types of key and * mapped value may differ, and are grouped together in member type value_type, which is a * {@link Pair} type combining both:

* *

typedef pair value_type;

* - *

{@link MapContainer} stores elements, keeps sequence and enables indexing by inserting elements into a + *

{@link UniqueMap} stores elements, keeps sequence and enables indexing by inserting elements into a * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -3597,6 +3107,9 @@ var std; * Each element associates a key to a mapped value: * Keys are meant to identify the elements whose main content is the mapped value. * + * + *
Multiple equivalent keys
+ *
Multiple elements in the container can have equivalent keys.
*
* * @param Type of the keys. Each element in a map is identified by its key value. @@ -3604,9 +3117,89 @@ var std; * * @author Jeongho Nam */ - var MapContainer = (function (_super) { - __extends(MapContainer, _super); - function MapContainer() { + var MultiMap = (function (_super) { + __extends(MultiMap, _super); + function MultiMap() { + _super.apply(this, arguments); + } + MultiMap.prototype.insert = function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i - 0] = arguments[_i]; + } + return _super.prototype.insert.apply(this, args); + }; + /** + *

Swap content.

+ * + *

Exchanges the content of the container by the content of obj, which is another + * {@link UniqueMap map} of the same type. Sizes abd container type may differ.

+ * + *

After the call to this member function, the elements in this container are those which were + * in obj before the call, and the elements of obj are those which were in this. All + * iterators, references and pointers remain valid for the swapped objects.

+ * + *

Notice that a non-member function exists with the same name, {@link std.swap swap}, overloading that + * algorithm with an optimization that behaves like this member function.

+ * + * @param obj Another {@link MultiMap map container} of the same type of elements as this (i.e., + * with the same template parameters, Key and T) whose content is swapped + * with that of this {@link MultiMap container}. + */ + MultiMap.prototype.swap = function (obj) { + var vec = new std.Vector(this.begin(), this.end()); + this.assign(obj.begin(), obj.end()); + obj.assign(vec.begin(), vec.end()); + }; + return MultiMap; + }(base.MapContainer)); + base.MultiMap = MultiMap; + })(base = std.base || (std.base = {})); +})(std || (std = {})); +/// +/// +/// +var std; +(function (std) { + var base; + (function (base) { + /** + *

An abstract set.

+ * + *

{@link SetContainer SetContainers} are containers that store elements allowing fast retrieval of + * individual elements based on their value.

+ * + *

In an {@link SetContainer}, the value of an element is at the same time its key, used to + * identify it. Keys are immutable, therefore, the elements in an {@link SetContainer} cannot be + * modified once in the container - they can be inserted and removed, though.

+ * + *

{@link SetContainer} stores elements, keeps sequence and enables indexing by inserting elements into a + * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index + * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

+ * + *

+ *

+ * + *

Container properties

+ *
+ *
Associative
+ *
+ * Elements in associative containers are referenced by their key and not by their absolute + * position in the container. + *
+ * + *
Set
+ *
The value of an element is also the key used to identify it.
+ *
+ * + * @param Type of the elements. Each element in a {@link SetContainer} container is also identified + * by this value (each value is itself also the element's key). + * + * @author Jeongho Nam + */ + var SetContainer = (function (_super) { + __extends(SetContainer, _super); + function SetContainer() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i - 0] = arguments[_i]; @@ -3629,29 +3222,26 @@ var std; /** * @hidden */ - MapContainer.prototype.init = function () { + SetContainer.prototype.init = function () { this.data_ = new std.List(); }; /** * @hidden */ - MapContainer.prototype.construct_from_array = function (items) { + SetContainer.prototype.construct_from_array = function (items) { for (var i = 0; i < items.length; i++) - if (items[i] instanceof std.Pair) - this.insert_by_pair(items[i]); - else - this.insert_by_tuple(items[i]); + this.insert_by_val(items[i]); }; /** * @hidden */ - MapContainer.prototype.construct_from_container = function (container) { + SetContainer.prototype.construct_from_container = function (container) { this.construct_from_range(container.begin(), container.end()); }; /** * @hidden */ - MapContainer.prototype.construct_from_range = function (begin, end) { + SetContainer.prototype.construct_from_range = function (begin, end) { this.assign(begin, end); }; /* --------------------------------------------------------- @@ -3660,85 +3250,41 @@ var std; /** * @inheritdoc */ - MapContainer.prototype.assign = function (first, last) { + SetContainer.prototype.assign = function (begin, end) { // INSERT this.clear(); - this.insert(first, last); + this.insert(begin, end); }; /** * @inheritdoc */ - MapContainer.prototype.clear = function () { + SetContainer.prototype.clear = function () { // TO BE ABSTRACT this.data_.clear(); }; /** - *

Return iterator to beginning.

- * - *

Returns an iterator referring the first element in the

- * - *

Note

- *

If the container is {@link empty}, the returned iterator is same with {@link end end()}.

- * - * @return An iterator to the first element in the The iterator containes the first element's value. + * @inheritdoc */ - MapContainer.prototype.begin = function () { - return new std.MapIterator(this, this.data_.begin()); + SetContainer.prototype.begin = function () { + return new std.SetIterator(this, this.data_.begin()); }; /** - *

Return iterator to end.

- *

Returns an iterator referring to the past-the-end element in the

- * - *

The past-the-end element is the theoretical element that would follow the last element in the - * It does not point to any element, and thus shall not be dereferenced.

- * - *

Because the ranges used by functions of the container do not include the element reference by their - * closing iterator, this function is often used in combination with {@link MapContainer}.{@link begin} to - * specify a range including all the elements in the

- * - *

Note

- *

Returned iterator from {@link MapContainer}.{@link end} does not refer any element. Trying to accessing - * element by the iterator will cause throwing exception ({@link OutOfRange}).

- * - *

If the container is {@link empty}, this function returns the same as {@link begin}.

- * - * @return An iterator to the end element in the + * @inheritdoc */ - MapContainer.prototype.end = function () { - return new std.MapIterator(this, this.data_.end()); - }; - /** - *

Return {@link MapReverseIterator reverse iterator} to reverse beginning.

- * - *

Returns a {@link MapReverseIterator reverse iterator} pointing to the last element in the container - * (i.e., its reverse beginning).

- * - * {@link MapReverseIterator Reverse iterators} iterate backwards: increasing them moves them towards the - * beginning of the container.

- * - *

{@link rbegin} points to the element preceding the one that would be pointed to by member {@link end}. - *

- * - * @return A {@link MapReverseIterator reverse iterator} to the reverse beginning of the sequence - * + SetContainer.prototype.end = function () { + return new std.SetIterator(this, this.data_.end()); + }; + /** + * @inheritdoc */ - MapContainer.prototype.rbegin = function () { - return new std.MapReverseIterator(this.end()); + SetContainer.prototype.rbegin = function () { + return new std.SetReverseIterator(this.end()); }; /** - *

Return {@link MapReverseIterator reverse iterator} to reverse end.

- * - *

Returns a {@link MapReverseIterator reverse iterator} pointing to the theoretical element right before - * the first element in the {@link MapContainer map container} (which is considered its reverse end). - *

- * - *

The range between {@link MapContainer}.{@link rbegin} and {@link MapContainer}.{@link rend} contains - * all the elements of the container (in reverse order).

- * - * @return A {@link MapReverseIterator reverse iterator} to the reverse end of the sequence + * @inheritdoc */ - MapContainer.prototype.rend = function () { - return new std.MapReverseIterator(this.begin()); + SetContainer.prototype.rend = function () { + return new std.SetReverseIterator(this.begin()); }; /* --------------------------------------------------------- ELEMENTS @@ -3746,87 +3292,80 @@ var std; /** *

Whether have the item or not.

* - *

Indicates whether a map has an item having the specified identifier.

+ *

Indicates whether a set has an item having the specified identifier.

* * @param key Key value of the element whose mapped value is accessed. * - * @return Whether the map has an item having the specified identifier. + * @return Whether the set has an item having the specified identifier. */ - MapContainer.prototype.has = function (key) { - return !this.find(key).equal_to(this.end()); + SetContainer.prototype.has = function (val) { + return !this.find(val).equal_to(this.end()); }; /** - * Return the number of elements in the map. + * @inheritdoc */ - MapContainer.prototype.size = function () { + SetContainer.prototype.size = function () { return this.data_.size(); }; - MapContainer.prototype.push = function () { + /* ========================================================= + ELEMENTS I/O + - INSERT + - ERASE + - POST-PROCESS + ============================================================ + INSERT + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + SetContainer.prototype.push = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i - 0] = arguments[_i]; } // TO BE ABSTRACT for (var i = 0; i < args.length; i++) - if (args[i] instanceof std.Pair) - this.insert_by_pair(args[i]); - else if (args[i] instanceof Array) - this.insert_by_tuple(args[i]); + this.insert_by_val(args[i]); return this.size(); }; - MapContainer.prototype.insert = function () { + SetContainer.prototype.insert = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i - 0] = arguments[_i]; } - if (args.length == 1 && args[0] instanceof std.Pair) { - return this.insert_by_pair(args[0]); - } - else if (args.length == 1 && args[0] instanceof Array) { - return this.insert_by_tuple(args[0]); - } - else if (args.length == 2 && args[0] instanceof std.Iterator && args[1] instanceof std.Iterator) { - return this.insert_by_range(args[0], args[1]); - } - else { - var ret = void 0; - var is_reverse_iterator = false; - // REVERSE_ITERATOR TO ITERATOR - if (args[0] instanceof std.MapReverseIterator) { - is_reverse_iterator = true; - args[0] = args[0].base().prev(); + if (args.length == 1) + return this.insert_by_val(args[0]); + else if (args.length == 2 && args[0] instanceof std.Iterator) { + if (args[1] instanceof std.Iterator && args[0].get_source() != this && args[1].get_source() != this) { + // IT DOESN'T CONTAIN POSITION + // RANGES TO INSERT ONLY + return this.insert_by_range(args[0], args[1]); } - // INSERT AN ELEMENT - if (args[1] instanceof std.Pair) + else { + var ret = void 0; + var is_reverse_iterator = false; + // REVERSE_ITERATOR TO ITERATOR + if (args[0] instanceof std.SetReverseIterator) { + is_reverse_iterator = true; + args[0] = args[0].base().prev(); + } + // INSERT AN ELEMENT ret = this.insert_by_hint(args[0], args[1]); - else - ret = this.insert_by_hint_with_tuple(args[0], args[1]); - // RETURN BRANCHES - if (is_reverse_iterator == true) - return new std.MapReverseIterator(ret.next()); - else - return ret; + // RETURN BRANCHES + if (is_reverse_iterator == true) + return new std.SetReverseIterator(ret.next()); + else + return ret; + } } }; - /** - * @hidden - */ - MapContainer.prototype.insert_by_tuple = function (tuple) { - return this.insert_by_pair(new std.Pair(tuple[0], tuple[1])); - }; - /** - * @hidden - */ - MapContainer.prototype.insert_by_hint_with_tuple = function (hint, tuple) { - return this.insert_by_hint(hint, std.make_pair(tuple[0], tuple[1])); - }; - MapContainer.prototype.erase = function () { + SetContainer.prototype.erase = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i - 0] = arguments[_i]; } if (args.length == 1 && (args[0] instanceof std.Iterator == false || args[0].get_source() != this)) - return this.erase_by_key(args[0]); + return this.erase_by_val(args[0]); else if (args.length == 1) return this.erase_by_iterator(args[0]); else @@ -3835,22 +3374,12 @@ var std; /** * @hidden */ - MapContainer.prototype.erase_by_key = function (key) { - var it = this.find(key); - if (it.equal_to(this.end()) == true) - return 0; - this.erase_by_iterator(it); - return 1; - }; - /** - * @hidden - */ - MapContainer.prototype.erase_by_iterator = function (first, last) { + SetContainer.prototype.erase_by_iterator = function (first, last) { if (last === void 0) { last = first.next(); } var ret; var is_reverse_iterator = false; // REVERSE ITERATOR TO ITERATOR - if (first instanceof std.MapReverseIterator) { + if (first instanceof std.SetReverseIterator) { is_reverse_iterator = true; var first_it = last.base(); var last_it = first.base(); @@ -3861,75 +3390,85 @@ var std; ret = this.erase_by_range(first, last); // RETURN BRANCHES if (is_reverse_iterator == true) - return new std.MapReverseIterator(ret.next()); + return new std.SetReverseIterator(ret.next()); else return ret; }; /** * @hidden */ - MapContainer.prototype.erase_by_range = function (begin, end) { + SetContainer.prototype.erase_by_val = function (val) { + // TEST WHETHER EXISTS + var it = this.find(val); + if (it.equal_to(this.end()) == true) + return 0; // ERASE - var listIterator = this.data_.erase(begin.get_list_iterator(), end.get_list_iterator()); + this.erase_by_iterator(it); + return 1; + }; + /** + * @hidden + */ + SetContainer.prototype.erase_by_range = function (begin, end) { + // ERASE + var list_iterator = this.data_.erase(begin.get_list_iterator(), end.get_list_iterator()); // POST-PROCESS this.handle_erase(begin, end); - return new std.MapIterator(this, listIterator); + return new std.SetIterator(this, list_iterator); //begin.prev(); }; - return MapContainer; + return SetContainer; }(base.Container)); - base.MapContainer = MapContainer; + base.SetContainer = SetContainer; })(base = std.base || (std.base = {})); })(std || (std = {})); var std; (function (std) { /** - *

An iterator of {@link MapContainer map container}.

+ *

An iterator of a Set.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ - var MapIterator = (function (_super) { - __extends(MapIterator, _super); - /* --------------------------------------------------------- - CONSTRUCTORS - --------------------------------------------------------- */ + var SetIterator = (function (_super) { + __extends(SetIterator, _super); /** - * Construct from the {@link MapContainer source map} and {@link ListIterator list iterator}. + *

Construct from source and index number.

* - * @param source The source {@link MapContainer}. - * @param list_iterator A {@link ListIterator} pointing {@link Pair} of key and value. + *

Note

+ *

Do not create iterator directly.

+ *

Use begin(), find() or end() in Map instead.

+ * + * @param map The source Set to reference. + * @param index Sequence number of the element in the source Set. */ - function MapIterator(source, list_iterator) { + function SetIterator(source, it) { _super.call(this, source); - this.list_iterator_ = list_iterator; + this.list_iterator_ = it; } /* --------------------------------------------------------- MOVERS --------------------------------------------------------- */ /** - * Get iterator to previous element. + * @inheritdoc */ - MapIterator.prototype.prev = function () { - return new MapIterator(this.map, this.list_iterator_.prev()); + SetIterator.prototype.prev = function () { + return new SetIterator(this.set, this.list_iterator_.prev()); }; /** - * Get iterator to next element. + * @inheritdoc */ - MapIterator.prototype.next = function () { - return new MapIterator(this.map, this.list_iterator_.next()); + SetIterator.prototype.next = function () { + return new SetIterator(this.set, this.list_iterator_.next()); }; /** - * Advances the Iterator by n element positions. - * - * @param step Number of element positions to advance. - * @return An advanced Iterator. + * @inheritdoc */ - MapIterator.prototype.advance = function (step) { - return new MapIterator(this.map, this.list_iterator_.advance(step)); + SetIterator.prototype.advance = function (size) { + return new SetIterator(this.set, this.list_iterator_.advance(size)); }; - Object.defineProperty(MapIterator.prototype, "map", { + Object.defineProperty(SetIterator.prototype, "set", { /* --------------------------------------------------------- ACCESSORS --------------------------------------------------------- */ @@ -3942,13 +3481,10 @@ var std; enumerable: true, configurable: true }); - /** - * Get ListIterator. - */ - MapIterator.prototype.get_list_iterator = function () { + SetIterator.prototype.get_list_iterator = function () { return this.list_iterator_; }; - Object.defineProperty(MapIterator.prototype, "value", { + Object.defineProperty(SetIterator.prototype, "value", { /** * @inheritdoc */ @@ -3958,698 +3494,980 @@ var std; enumerable: true, configurable: true }); - Object.defineProperty(MapIterator.prototype, "first", { - /** - * Get first, key element. - */ - get: function () { - return this.list_iterator_.value.first; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(MapIterator.prototype, "second", { - /** - * Get second, value element. - */ - get: function () { - return this.list_iterator_.value.second; - }, - /** - * Set second value. - */ - set: function (val) { - this.list_iterator_.value.second = val; - }, - enumerable: true, - configurable: true - }); /* --------------------------------------------------------- COMPARISONS --------------------------------------------------------- */ /** - *

Whether an iterator is equal with the iterator.

- * - *

Compare two iterators and returns whether they are equal or not.

- * - * @param obj An iterator to compare - * @return Indicates whether equal or not. + * @inheritdoc */ - MapIterator.prototype.equal_to = function (obj) { - return this.source_ == obj.source_ && this.list_iterator_.equal_to(obj.list_iterator_); + SetIterator.prototype.equal_to = function (obj) { + return _super.prototype.equal_to.call(this, obj) && this.list_iterator_ == obj.list_iterator_; }; - MapIterator.prototype.less = function (obj) { - return std.less(this.first, obj.first); + /** + * @inheritdoc + */ + SetIterator.prototype.less = function (obj) { + return std.less(this.value, obj.value); }; - MapIterator.prototype.hash = function () { - return std.hash(this.first); + /** + * @inheritdoc + */ + SetIterator.prototype.hash = function () { + return std.hash(this.value); }; - MapIterator.prototype.swap = function (obj) { + /** + * @inheritdoc + */ + SetIterator.prototype.swap = function (obj) { this.list_iterator_.swap(obj.list_iterator_); }; - return MapIterator; + return SetIterator; }(std.Iterator)); - std.MapIterator = MapIterator; + std.SetIterator = SetIterator; /** - *

A reverse-iterator of {@link MapContainer map container}.

+ *

A reverse-iterator of Set.

* - *

- *

+ *

+ *

+ * + * @param Type of the elements. * * @author Jeongho Nam */ - var MapReverseIterator = (function (_super) { - __extends(MapReverseIterator, _super); + var SetReverseIterator = (function (_super) { + __extends(SetReverseIterator, _super); /* --------------------------------------------------------- CONSTRUCTORS --------------------------------------------------------- */ - function MapReverseIterator(base) { + function SetReverseIterator(base) { _super.call(this, base); } - MapReverseIterator.prototype.create_neighbor = function () { - return new MapReverseIterator(null); - }; - Object.defineProperty(MapReverseIterator.prototype, "first", { - /* --------------------------------------------------------- - ACCESSORS - --------------------------------------------------------- */ - /** - * Get first, key element. - */ - get: function () { - return this.base_.first; - }, - enumerable: true, - configurable: true - }); - Object.defineProperty(MapReverseIterator.prototype, "second", { - /** - * Get second, value element. - */ - get: function () { - return this.base_.second; - }, - /** - * Set second value. - */ - set: function (val) { - this.base_.second = val; - }, - enumerable: true, - configurable: true - }); - return MapReverseIterator; - }(std.ReverseIterator)); - std.MapReverseIterator = MapReverseIterator; -})(std || (std = {})); -/// -/// -var std; -(function (std) { - var base; - (function (base) { /** - *

Hash buckets storing {@link MapIterator MapIterators}.

- * - *

- * - *

- * - * @author Jeongho Nam + * @inheritdoc */ - var MapHashBuckets = (function (_super) { - __extends(MapHashBuckets, _super); - function MapHashBuckets(map) { - _super.call(this); - this.map = map; - } - MapHashBuckets.prototype.find = function (key) { - var index = std.hash(key) % this.size(); - var bucket = this.at(index); - for (var i = 0; i < bucket.size(); i++) - if (std.equal_to(bucket.at(i).first, key)) - return bucket.at(i); - return this.map.end(); - }; - return MapHashBuckets; - }(base.HashBuckets)); - base.MapHashBuckets = MapHashBuckets; - })(base = std.base || (std.base = {})); + SetReverseIterator.prototype.create_neighbor = function () { + return new SetReverseIterator(null); + }; + return SetReverseIterator; + }(std.ReverseIterator)); + std.SetReverseIterator = SetReverseIterator; })(std || (std = {})); /// -/// +/// var std; (function (std) { var base; (function (base) { /** - *

An abstract multi-map.

- * - *

{@link MultiMap MultiMaps} are associative containers that store elements formed by a combination of a - * key value (Key) and a mapped value (T), and which allows for fast retrieval of - * individual elements based on their keys.

+ *

An abstract set.

* - *

In a {@link MapContainer}, the key values are generally used to identify the elements, while the - * mapped values store the content associated to this key. The types of key and - * mapped value may differ, and are grouped together in member type value_type, which is a - * {@link Pair} type combining both:

+ *

{@link SetContainer SetContainers} are containers that store elements allowing fast retrieval of + * individual elements based on their value.

* - *

typedef pair value_type;

+ *

In an {@link SetContainer}, the value of an element is at the same time its key, used to + * identify it. Keys are immutable, therefore, the elements in an {@link SetContainer} cannot be + * modified once in the container - they can be inserted and removed, though.

* - *

{@link UniqueMap} stores elements, keeps sequence and enables indexing by inserting elements into a + *

{@link SetContainer} stores elements, keeps sequence and enables indexing by inserting elements into a * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
*
Associative
*
- * Elements in associative containers are referenced by their key and not by their absolute position - * in the container. + * Elements in associative containers are referenced by their key and not by their absolute + * position in the container. *
* - *
Map
- *
- * Each element associates a key to a mapped value: - * Keys are meant to identify the elements whose main content is the mapped value. - *
+ *
Set
+ *
The value of an element is also the key used to identify it.
* *
Multiple equivalent keys
*
Multiple elements in the container can have equivalent keys.
*
* - * @param Type of the keys. Each element in a map is identified by its key value. - * @param Type of the mapped value. Each element in a map stores some data as its mapped value. + * @param Type of the elements. Each element in a {@link SetContainer} container is also identified + * by this value (each value is itself also the element's key). * * @author Jeongho Nam */ - var MultiMap = (function (_super) { - __extends(MultiMap, _super); - function MultiMap() { + var MultiSet = (function (_super) { + __extends(MultiSet, _super); + function MultiSet() { _super.apply(this, arguments); } - MultiMap.prototype.insert = function () { + MultiSet.prototype.insert = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i - 0] = arguments[_i]; } return _super.prototype.insert.apply(this, args); }; + /* --------------------------------------------------------- + UTILITIES + --------------------------------------------------------- */ /** - *

Swap content.

- * - *

Exchanges the content of the container by the content of obj, which is another - * {@link UniqueMap map} of the same type. Sizes abd container type may differ.

- * - *

After the call to this member function, the elements in this container are those which were - * in obj before the call, and the elements of obj are those which were in this. All - * iterators, references and pointers remain valid for the swapped objects.

- * - *

Notice that a non-member function exists with the same name, {@link std.swap swap}, overloading that - * algorithm with an optimization that behaves like this member function.

- * - * @param obj Another {@link MultiMap map container} of the same type of elements as this (i.e., - * with the same template parameters, Key and T) whose content is swapped - * with that of this {@link MultiMap container}. + * @inheritdoc */ - MultiMap.prototype.swap = function (obj) { + MultiSet.prototype.swap = function (obj) { var vec = new std.Vector(this.begin(), this.end()); this.assign(obj.begin(), obj.end()); obj.assign(vec.begin(), vec.end()); }; - return MultiMap; - }(base.MapContainer)); - base.MultiMap = MultiMap; + return MultiSet; + }(base.SetContainer)); + base.MultiSet = MultiSet; })(base = std.base || (std.base = {})); })(std || (std = {})); /// -/// -/// var std; (function (std) { var base; (function (base) { /** - *

An abstract set.

+ *

Red-black Tree.

* - *

{@link SetContainer SetContainers} are containers that store elements allowing fast retrieval of - * individual elements based on their value.

+ *

A red-black tree is a kind of self-balancing + * binary search tree. Each node of the binary tree has an extra bit, and that bit is often interpreted as the + * color (red or black) of the node. These color bits + * are used to ensure the tree remains approximately balanced during insertions and deletions.

* - *

In an {@link SetContainer}, the value of an element is at the same time its key, used to - * identify it. Keys are immutable, therefore, the elements in an {@link SetContainer} cannot be - * modified once in the container - they can be inserted and removed, though.

+ *

Balance is preserved by painting each node of the tree with one of two colors (typically called + * 'red' and 'black') in a way that satisfies certain + * properties, which collectively constrain how unbalanced the tree can become in the worst case. When the tree + * is modified, the new tree is subsequently rearranged and repainted to restore the coloring properties. The + * properties are designed in such a way that this rearranging and recoloring can be performed efficiently.

* - *

{@link SetContainer} stores elements, keeps sequence and enables indexing by inserting elements into a - * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index - * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

+ *

The balancing of the tree is not perfect but it is good enough to allow it to guarantee searching in + * O(log n) time, where n is the total number of elements in the tree. The insertion and deletion operations, + * along with the tree rearrangement and recoloring, are also performed in O(log n) time.

+ * + *

Tracking the color of each node requires only 1 bit of information per node because there are only two + * colors. The tree does not contain any other data specific to its being a + * red-black tree so its memory footprint is almost + * identical to a classic (uncolored) binary search tree. In many cases the additional bit of information can + * be stored at no additional memory cost.

* - *

- *

+ *

Properties

+ *

In addition to the requirements imposed on a binary search tree the following must be satisfied by a + * red-black tree:

* - *

Container properties

- *
- *
Associative
- *
- * Elements in associative containers are referenced by their key and not by their absolute - * position in the container. - *
+ *
    + *
  1. A node is either red or black.
  2. + *
  3. + * The root is black. This rule is sometimes omitted. Since the root can + * always be changed from red to black, but not + * necessarily vice versa, this rule has little effect on analysis. + *
  4. + *
  5. All leaves (NIL; null) are black.
  6. + *
  7. + * If a node is red, then both its children are + * black. + *
  8. + *
  9. + * Every path from a given node to any of its descendant NIL nodes contains the same number of + * black nodes. Some definitions: the number of + * black nodes from the root to a node is the node's + * black depth; the uniform number of black + * nodes in all paths from root to the leaves is called the black-height of + * the red-black tree. + *
  10. + *
* - *
Set
- *
The value of an element is also the key used to identify it.
- *
+ *

* - * @param Type of the elements. Each element in a {@link SetContainer} container is also identified - * by this value (each value is itself also the element's key). + *

These constraints enforce a critical property of red-black trees: the path from the root to the farthest + * leaf is no more than twice as long as the path from the root to the nearest leaf. The result is that the tree + * is roughly height-balanced. Since operations such as inserting, deleting, and finding values require + * worst-case time proportional to the height of the tree, this theoretical upper bound on the height allows + * red-black trees to be efficient in the worst case, unlike ordinary binary search trees.

* - * @author Jeongho Nam + *

To see why this is guaranteed, it suffices to consider the effect of properties 4 and 5 together. For a + * red-black tree T, let B be the number of black nodes in property 5. Let the + * shortest possible path from the root of T to any leaf consist of B black nodes. + * Longer possible paths may be constructed by inserting red nodes. However, property 4 + * makes it impossible to insert more than one consecutive red node. Therefore, + * ignoring any black NIL leaves, the longest possible path consists of 2*B nodes, + * alternating black and red (this is the worst case). + * Counting the black NIL leaves, the longest possible path consists of 2*B-1 + * nodes.

+ * + *

The shortest possible path has all black nodes, and the longest possible + * path alternates between red and black nodes. Since all + * maximal paths have the same number of black nodes, by property 5, this shows + * that no path is more than twice as long as any other path.

+ * + * @param Type of elements. + * + * @reference https://en.wikipedia.org/w/index.php?title=Red%E2%80%93black_tree + * @inventor Rudolf Bayer + * @author Migrated by Jeongho Nam */ - var SetContainer = (function (_super) { - __extends(SetContainer, _super); - function SetContainer() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; - } - _super.call(this); - // INITIALIZATION - this.init(); - // BRANCH - OVERLOADINGS - if (args.length == 0) { } // DO NOTHING - else if (args.length == 1 && (args[0] instanceof base.Container || args[0] instanceof std.Vector)) { - this.construct_from_container(args[0]); - } - else if (args.length == 1 && args[0] instanceof Array) { - this.construct_from_array(args[0]); - } - else if (args.length == 2 && args[0] instanceof std.Iterator && args[1] instanceof std.Iterator) { - this.construct_from_range(args[0], args[1]); - } + var XTree = (function () { + /* ========================================================= + CONSTRUCTOR + ========================================================= */ + /** + * Default Constructor. + */ + function XTree() { + this.root_ = null; } + XTree.prototype.clear = function () { + this.root_ = null; + }; + /* ========================================================= + ACCESSORS + - GETTERS + - COMPARISON + ============================================================ + GETTERS + --------------------------------------------------------- */ /** - * @hidden + * Find a node from its contained value. + * + * @param val Value to find. */ - SetContainer.prototype.init = function () { - this.data_ = new std.List(); + XTree.prototype.find = function (val) { + if (this.root_ == null) + return null; + var node = this.root_; + while (true) { + var newNode = null; + if (this.is_equal_to(val, node.value)) + break; // EQUALS, MEANS MATCHED, THEN TERMINATE + else if (this.is_less(val, node.value)) + newNode = node.left; // LESS, THEN TO THE LEFT + else + newNode = node.right; // GREATER, THEN TO THE RIGHT + // ULTIL CHILD NODE EXISTS + if (newNode == null) + break; + // SHIFT A NEW NODE TO THE NODE TO BE RETURNED + node = newNode; + } + return node; }; /** - * @hidden + * Fetch maximum (the rightes?) node from one. + * + * @param node A node to fetch its maximum node. + * @return The maximum node. */ - SetContainer.prototype.construct_from_array = function (items) { - for (var i = 0; i < items.length; i++) - this.insert_by_val(items[i]); + XTree.prototype.fetch_maximum = function (node) { + while (node.right != null) + node = node.right; + return node; }; + /* ========================================================= + ELEMENTS I/O + - INSERT + - ERASE + - COLOR + - ROTATION + ============================================================ + INSERT + --------------------------------------------------------- */ /** - * @hidden + *

Insert an element with a new node.

+ * + *

Insertion begins by adding the node as any binary search tree insertion does and by coloring it + * red. Whereas in the binary search tree, we always add a leaf, in the red-black + * tree, leaves contain no information, so instead we add a red interior node, with + * two black leaves, in place of an existing + * black leaf.

+ * + *

What happens next depends on the color of other nearby nodes. The term uncle node will be used to + * refer to the sibling of a node's parent, as in human family trees. Note that:

+ * + *
    + *
  • property 3 (all leaves are black) always holds.
  • + *
  • + * property 4 (both children of every red node are + * black) is threatened only by adding a red + * node, repainting a black node red, or a + * rotation. + *
  • + *
  • + * property 5 (all paths from any given node to its leaf nodes contain the same number of + * black nodes) is threatened only by adding a + * black node, repainting a red node + * black (or vice versa), or a rotation. + *
  • + *
+ * + *

Notes

+ *
    + *
  1. + * The label N will be used to denote the current node (colored + * red). In the diagrams N carries a blue contour. At the + * beginning, this is the new node being inserted, but the entire procedure may also be applied + * recursively to other nodes (see case 3). {@link XTreeNode.parent P} will denote + * N's parent node, {@link XTreeNode.grand_parent G} will denote N's + * grandparent, and {@link XTreeNode.uncle U} will denote N's uncle. In between + * some cases, the roles and labels of the nodes are exchanged, but in each case, every label continues + * to represent the same node it represented at the beginning of the case. + *
  2. + *
  3. + * If a node in the right (target) half of a diagram carries a blue contour it will become the current + * node in the next iteration and there the other nodes will be newly assigned relative to it. Any + * color shown in the diagram is either assumed in its case or implied by those assumptions. + *
  4. + *
  5. + * A numbered triangle represents a subtree of unspecified depth. A black + * circle atop a triangle means that black-height of subtree is greater + * by one compared to subtree without this circle.
  6. + *
+ * + *

There are several cases of red-black tree insertion to handle:

+ * + *
    + *
  • N is the root node, i.e., first node of red-black tree.
  • + *
  • + * N's parent ({@link XTreeNode.parent P}) is black. + *
  • + *
  • + * N's parent ({@link XTreeNode.parent P}) and uncle + * ({@link XTreeNode.uncle U}) are red. + *
  • + *
  • + * N is added to right of left child of grandparent, or N is added to left + * of right child of grandparent ({@link XTreeNode.parent P} is red and + * {@link XTreeNode.uncle U} is black). + *
  • + *
  • + * N is added to left of left child of grandparent, or N is added to right + * of right child of grandparent ({@link XTreeNode.parent P} is red and + * {@link XTreeNode.uncle U} is black). + *
  • + *
+ * + *

Note

+ *

Note that inserting is actually in-place, since all the calls above use tail recursion.

+ * + *

In the algorithm above, all cases are chained in order, except in insert case 3 where it can recurse + * to case 1 back to the grandparent node: this is the only case where an iterative implementation will + * effectively loop. Because the problem of repair is escalated to the next higher level but one, it takes + * maximally h⁄2 iterations to repair the tree (where h is the height of the tree). Because the probability + * for escalation decreases exponentially with each iteration the average insertion cost is constant.

+ * + * @param val An element to insert. */ - SetContainer.prototype.construct_from_container = function (container) { - this.construct_from_range(container.begin(), container.end()); + XTree.prototype.insert = function (val) { + var parent = this.find(val); + var node = new base.XTreeNode(val, base.Color.RED); + if (parent == null) + this.root_ = node; + else { + node.parent = parent; + if (this.is_less(node.value, parent.value)) + parent.left = node; + else + parent.right = node; + } + this.insert_case1(node); }; /** - * @hidden + *

N is the root node, i.e., first node of red-black tree.

+ * + *

The current node N is at the {@link root_ root} of the tree.

+ * + *

In this case, it is repainted black to satisfy property 2 (the root is + * black). Since this adds one black node to + * every path at once, property 5 (all paths from any given node to its leaf nodes contain the same number + * of black nodes) is not violated.

+ * + * @param N A node to be inserted or swapped. */ - SetContainer.prototype.construct_from_range = function (begin, end) { - this.assign(begin, end); + XTree.prototype.insert_case1 = function (N) { + if (N.parent == null) + N.color = base.Color.BLACK; + else + this.insert_case2(N); }; - /* --------------------------------------------------------- - ASSIGN & CLEAR - --------------------------------------------------------- */ /** - * @inheritdoc + *

N's parent ({@link XTreeNode.parent P}) is black.

+ * + *

The current node's parent {@link XTreeNode.parent P} is black, + * so property 4 (both children of every red node are + * black) is not invalidated.

+ * + *

In this case, the tree is still valid. Property 5 (all paths from any given node to its leaf nodes + * contain the same number of black nodes) is not threatened, because the + * current node N has two black leaf children, but because + * N is red, the paths through each of its children have the same + * number of black nodes as the path through the leaf it replaced, which was + * black, and so this property remains satisfied.

+ * + * @param N A node to be inserted or swapped. + */ + XTree.prototype.insert_case2 = function (N) { + if (this.fetch_color(N.parent) == base.Color.BLACK) + return; + else + this.insert_case3(N); + }; + /** + *

N's parent ({@link XTreeNode.parent P}) and uncle + * ({@link XTreeNode.uncle U}) are red.

+ * + *

If both the parent {@link XTreeNode.parent P} and the uncle {@link XTreeNode.uncle U} + * are red, then both of them can be repainted black + * and the grandparent {@link XTreeNode.grand_parent G} becomes red (to + * maintain property 5 (all paths from any given node to its leaf nodes contain the same number of + * black nodes)).

+ * + *

Now, the current red node N has a + * black parent. Since any path through the parent or uncle must pass through + * the grandparent, the number of black nodes on these paths has not changed. + * + *

However, the grandparent {@link XTreeNode.grand_parent G} may now violate properties 2 (The + * root is black) or 4 (Both children of every red + * node are black) (property 4 possibly being violated since + * {@link XTreeNode.grand_parent G} may have a red parent).

+ * + *

To fix this, the entire procedure is recursively performed on {@link XTreeNode.grand_parent G} + * from case 1. Note that this is a tail-recursive call, so it could be rewritten as a loop; since this is + * the only loop, and any rotations occur after this loop, this proves that a constant number of rotations + * occur.

+ * + *

+ * + * @param N A node to be inserted or swapped. */ - SetContainer.prototype.assign = function (begin, end) { - // INSERT - this.clear(); - this.insert(begin, end); + XTree.prototype.insert_case3 = function (N) { + if (this.fetch_color(N.uncle) == base.Color.RED) { + N.parent.color = base.Color.BLACK; + N.uncle.color = base.Color.BLACK; + N.grand_parent.color = base.Color.RED; + this.insert_case1(N.grand_parent); + } + else { + this.insert_case4(N); + } }; /** - * @inheritdoc + *

N is added to right of left child of grandparent, or N is added to left + * of right child of grandparent ({@link XTreeNode.parent P} is red and + * {@link XTreeNode.uncle U} is black).

+ * + *

The parent {@link XTreeNode.parent P} is red but the uncle + * {@link XTreeNode.uncle U} is black; also, the current node + * N is the right child of {@link XTreeNode.parent P}, and + * {@link XTreeNode.parent P} in turn is the left child of its parent + * {@link XTreeNode.grand_parent G}.

+ * + *

In this case, a left rotation on {@link XTreeNode.parent P} that switches the roles of the + * current node N and its parent {@link XTreeNode.parent P} can be performed; then, + * the former parent node {@link XTreeNode.parent P} is dealt with using case 5 + * (relabeling N and {@link XTreeNode.parent P}) because property 4 (both children of + * every red node are black) is still violated.

+ * + *

The rotation causes some paths (those in the sub-tree labelled "1") to pass through the node + * N where they did not before. It also causes some paths (those in the sub-tree labelled "3") + * not to pass through the node {@link XTreeNode.parent P} where they did before. However, both of + * these nodes are red, so property 5 (all paths from any given node to its leaf + * nodes contain the same number of black nodes) is not violated by the + * rotation.

+ * + *

After this case has been completed, property 4 (both children of every red + * node are black) is still violated, but now we can resolve this by + * continuing to case 5.

+ * + *

+ * + * @param N A node to be inserted or swapped. */ - SetContainer.prototype.clear = function () { - // TO BE ABSTRACT - this.data_.clear(); + XTree.prototype.insert_case4 = function (node) { + if (node == node.parent.right && node.parent == node.grand_parent.left) { + this.rotate_left(node.parent); + node = node.left; + } + else if (node == node.parent.left && node.parent == node.grand_parent.right) { + this.rotate_right(node.parent); + node = node.right; + } + this.insert_case5(node); }; /** - * @inheritdoc + *

N is added to left of left child of grandparent, or N is added to right + * of right child of grandparent ({@link XTreeNode.parent P} is red and + * {@link XTreeNode.uncle U} is black).

+ * + *

The parent {@link XTreeNode.parent P} is red but the uncle + * {@link XTreeNode.uncle U} is black, the current node N + * is the left child of {@link XTreeNode.parent P}, and {@link XTreeNode.parent P} is the left + * child of its parent {@link XTreeNode.grand_parent G}.

+ * + *

In this case, a right rotation on {@link XTreeNode.grand_parent G} is performed; the result is a + * tree where the former parent {@link XTreeNode.parent P} is now the parent of both the current node + * N and the former grandparent {@link XTreeNode.grand_parent G}.

+ * + *

{@link XTreeNode.grand_parent G} is known to be black, since its + * former child {@link XTreeNode.parent P} could not have been red otherwise + * (without violating property 4). Then, the colors of {@link XTreeNode.parent P} and + * {@link XTreeNode.grand_parent G} are switched, and the resulting tree satisfies property 4 (both + * children of every red node are black). Property 5 + * (all paths from any given node to its leaf nodes contain the same number of + * black nodes) also remains satisfied, since all paths that went through any + * of these three nodes went through {@link XTreeNode.grand_parent G} before, and now they all go + * through {@link XTreeNode.parent P}. In each case, this is the only + * black node of the three.

+ * + *

+ * + * @param N A node to be inserted or swapped. */ - SetContainer.prototype.begin = function () { - return new std.SetIterator(this, this.data_.begin()); + XTree.prototype.insert_case5 = function (node) { + node.parent.color = base.Color.BLACK; + node.grand_parent.color = base.Color.RED; + if (node == node.parent.left && node.parent == node.grand_parent.left) + this.rotate_right(node.grand_parent); + else + this.rotate_left(node.grand_parent); }; + /* --------------------------------------------------------- + ERASE + --------------------------------------------------------- */ /** - * @inheritdoc + *

Erase an element with its node.

+ * + *

In a regular binary search tree when deleting a node with two non-leaf children, we find either the + * maximum element in its left subtree (which is the in-order predecessor) or the minimum element in its + * right subtree (which is the in-order successor) and move its value into the node being deleted (as shown + * here). We then delete the node we copied the value from, which must have fewer than two non-leaf children. + * (Non-leaf children, rather than all children, are specified here because unlike normal binary search + * trees, red-black trees can have leaf nodes anywhere, so that all nodes are either internal nodes with + * two children or leaf nodes with, by definition, zero children. In effect, internal nodes having two leaf + * children in a red-black tree are like the leaf nodes in a regular binary search tree.) Because merely + * copying a value does not violate any red-black properties, this reduces to the problem of deleting a node + * with at most one non-leaf child. Once we have solved that problem, the solution applies equally to the + * case where the node we originally want to delete has at most one non-leaf child as to the case just + * considered where it has two non-leaf children.

+ * + *

Therefore, for the remainder of this discussion we address the deletion of a node with at most one + * non-leaf child. We use the label M to denote the node to be deleted; C will denote a + * selected child of M, which we will also call "its child". If M does have a non-leaf child, + * call that its child, C; otherwise, choose either leaf as its child, C.

+ * + *

If M is a red node, we simply replace it with its child C, + * which must be black by property 4. (This can only occur when M has + * two leaf children, because if the red node M had a + * black non-leaf child on one side but just a leaf child on the other side, + * then the count of black nodes on both sides would be different, thus the + * tree would violate property 5.) All paths through the deleted node will simply pass through one fewer + * red node, and both the deleted node's parent and child must be + * black, so property 3 (all leaves are black) + * and property 4 (both children of every red node are + * black) still hold.

+ * + *

Another simple case is when M is black and C is + * red. Simply removing a black node could break + * Properties 4 (“Both children of every red node are + * black”) and 5 (“All paths from any given node to its leaf nodes contain the + * same number of black nodes”), but if we repaint C + * black, both of these properties are preserved.

+ * + *

The complex case is when both M and C are black. (This + * can only occur when deleting a black node which has two leaf children, + * because if the black node M had a black + * non-leaf child on one side but just a leaf child on the other side, then the count of + * black nodes on both sides would be different, thus the tree would have been + * an invalid red-black tree by violation of property 5.) We begin by replacing M with its child + * C. We will relabel this child C (in its new position) N, and its sibling (its + * new parent's other child) {@link XTreeNode.sibling S}. ({@link XTreeNode.sibling S} was + * previously the sibling of M.)

+ * + *

In the diagrams below, we will also use {@link XTreeNode.parent P} for N's new + * parent (M's old parent), SL for {@link XTreeNode.sibling S}'s left child, and + * SR for {@link XTreeNode.sibling S}'s right child ({@link XTreeNode.sibling S} cannot + * be a leaf because if M and C were black, then + * {@link XTreeNode.parent P}'s one subtree which included M counted two + * black-height and thus {@link XTreeNode.parent P}'s other subtree + * which includes {@link XTreeNode.sibling S} must also count two + * black-height, which cannot be the case if {@link XTreeNode.sibling S} + * is a leaf node).

+ * + *

Notes

+ *
    + *
  1. + * The label N will be used to denote the current node (colored + * black). In the diagrams N carries a blue contour. At the + * beginning, this is the replacement node and a leaf, but the entire procedure may also be applied + * recursively to other nodes (see case 3). In between some cases, the roles and labels of the nodes + * are exchanged, but in each case, every label continues to represent the same node it represented at + * the beginning of the case. + *
  2. + *
  3. + * If a node in the right (target) half of a diagram carries a blue contour it will become the current + * node in the next iteration and there the other nodes will be newly assigned relative to it. Any + * color shown in the diagram is either assumed in its case or implied by those assumptions. + * White represents an arbitrary color (either red or + * black), but the same in both halves of the diagram. + *
  4. + *
  5. + * A numbered triangle represents a subtree of unspecified depth. A black + * circle atop a triangle means that black-height of subtree is greater + * by one compared to subtree without this circle. + *
  6. + *
+ * + *

If both N and its original parent are black, then + * deleting this original parent causes paths which proceed through N to have one fewer + * black node than paths that do not. As this violates property 5 (all paths + * from any given node to its leaf nodes contain the same number of black + * nodes), the tree must be rebalanced. There are several cases to consider:

+ * + *
    + *
  1. N is the new root.
  2. + *
  3. {@link XTreeNode.sibling S} is red.
  4. + *
  5. + * {@link XTreeNode.parent P}, {@link XTreeNode.sibling S}, and + * {@link XTreeNode.sibling S}'s children are black.
  6. + *
  7. + * {@link XTreeNode.sibling S} and {@link XTreeNode.sibling S}'s children are + * black, but {@link XTreeNode.parent P} is + * red. + *
  8. + *
  9. + * {@link XTreeNode.sibling S} is black, + * {@link XTreeNode.sibling S}'s left child is red, + * {@link XTreeNode.sibling S}'s right child is black, and + * N is the left child of its parent. + *
  10. + *
  11. + * {@link XTreeNode.sibling S} is black, + * {@link XTreeNode.sibling S}'s right child is red, and + * N is the left child of its parent {@link XTreeNode.parent P}. + *
  12. + *
+ * + *

Again, the function calls all use tail recursion, so the algorithm is in-place.

+ * + *

In the algorithm above, all cases are chained in order, except in delete case 3 where it can recurse + * to case 1 back to the parent node: this is the only case where an iterative implementation will + * effectively loop. No more than h loops back to case 1 will occur (where h is the height of the tree). + * And because the probability for escalation decreases exponentially with each iteration the average + * removal cost is constant.

+ * + *

Additionally, no tail recursion ever occurs on a child node, so the tail recursion loop can only + * move from a child back to its successive ancestors. If a rotation occurs in case 2 (which is the only + * possibility of rotation within the loop of cases 1–3), then the parent of the node N + * becomes red after the rotation and we will exit the loop. Therefore, at most one + * rotation will occur within this loop. Since no more than two additional rotations will occur after + * exiting the loop, at most three rotations occur in total.

+ * + * @param val An element to erase. */ - SetContainer.prototype.end = function () { - return new std.SetIterator(this, this.data_.end()); + XTree.prototype.erase = function (val) { + var node = this.find(val); + if (node == null || this.is_equal_to(val, node.value) == false) + return; + if (node.left != null && node.right != null) { + var pred = this.fetch_maximum(node.left); + node.value = pred.value; + node = pred; + } + var child = (node.right == null) ? node.left : node.right; + if (this.fetch_color(node) == base.Color.BLACK) { + node.color = this.fetch_color(child); + this.erase_case1(node); + } + this.replace_node(node, child); }; /** - * @inheritdoc + *

N is the new root.

+ * + *

In this case, we are done. We removed one black node from every path, + * and the new root is black, so the properties are preserved.

+ * + *

Note

+ *

In cases 2, 5, and 6, we assume N is the left child of its parent + * {@link XTreeNode.parent P}. If it is the right child, left and right should be reversed throughout + * these three cases. Again, the code examples take both cases into account.

+ * + * @param N A node to be erased or swapped. */ - SetContainer.prototype.rbegin = function () { - return new std.SetReverseIterator(this.end()); + XTree.prototype.erase_case1 = function (N) { + if (N.parent == null) + return; + else + this.erase_case2(N); }; /** - * @inheritdoc + *

{@link XTreeNode.sibling S} is red.

+ * + *

+ * + *

In this case we reverse the colors of {@link XTreeNode.parent P} and + * {@link XTreeNode.sibling S}, and then rotate left at {@link XTreeNode.parent P}, turning + * {@link XTreeNode.sibling S} into N's grandparent.

+ * + *

Note that {@link XTreeNode.parent P} has to be black as it had a + * red child. The resulting subtree has a path short one + * black node so we are not done. Now N has a + * black sibling and a red parent, so we can proceed + * to step 4, 5, or 6. (Its new sibling is black because it was once the child + * of the red {@link XTreeNode.sibling S}.) In later cases, we will re-label + * N's new sibling as {@link XTreeNode.sibling S}.

+ * + * @param N A node to be erased or swapped. */ - SetContainer.prototype.rend = function () { - return new std.SetReverseIterator(this.begin()); + XTree.prototype.erase_case2 = function (N) { + if (this.fetch_color(N.sibling) == base.Color.RED) { + N.parent.color = base.Color.RED; + N.sibling.color = base.Color.BLACK; + if (N == N.parent.left) + this.rotate_left(N.parent); + else + this.rotate_right(N.parent); + } + this.erase_case3(N); }; - /* --------------------------------------------------------- - ELEMENTS - --------------------------------------------------------- */ /** - *

Whether have the item or not.

+ *

{@link XTreeNode.parent P}, {@link XTreeNode.sibling S}, and {@link XTreeNode.sibling + * S}'s children are black.

* - *

Indicates whether a set has an item having the specified identifier.

+ *

* - * @param key Key value of the element whose mapped value is accessed. + *

In this case, we simply repaint {@link XTreeNode.sibling S} red. The + * result is that all paths passing through {@link XTreeNode.sibling S}, which are precisely those + * paths not passing through N, have one less black node. + * Because deleting N's original parent made all paths passing through N have + * one less black node, this evens things up.

* - * @return Whether the set has an item having the specified identifier. + *

However, all paths through {@link XTreeNode.parent P} now have one fewer + * black node than paths that do not pass through + * {@link XTreeNode.parent P}, so property 5 (all paths from any given node to its leaf nodes contain + * the same number of black nodes) is still violated.

+ * + *

To correct this, we perform the rebalancing procedure on {@link XTreeNode.parent P}, starting + * at case 1.

+ * + * @param N A node to be erased or swapped. */ - SetContainer.prototype.has = function (val) { - return !this.find(val).equal_to(this.end()); + XTree.prototype.erase_case3 = function (N) { + if (this.fetch_color(N.parent) == base.Color.BLACK && + this.fetch_color(N.sibling) == base.Color.BLACK && + this.fetch_color(N.sibling.left) == base.Color.BLACK && + this.fetch_color(N.sibling.right) == base.Color.BLACK) { + N.sibling.color = base.Color.RED; + this.erase_case1(N.parent); + } + else + this.erase_case4(N); }; /** - * @inheritdoc + *

{@link XTreeNode.sibling S} and {@link XTreeNode.sibling S}'s children are + * black, but {@link XTreeNode.parent P} is red.

+ * + *

+ * + *

In this case, we simply exchange the colors of {@link XTreeNode.sibling S} and + * {@link XTreeNode.parent P}. This does not affect the number of black + * nodes on paths going through {@link XTreeNode.sibling S}, but it does add one to the number of + * black nodes on paths going through N, making up for the + * deleted black node on those paths.

+ * + * @param N A node to be erased or swapped. */ - SetContainer.prototype.size = function () { - return this.data_.size(); + XTree.prototype.erase_case4 = function (N) { + if (this.fetch_color(N.parent) == base.Color.RED && + N.sibling != null && + this.fetch_color(N.sibling) == base.Color.BLACK && + this.fetch_color(N.sibling.left) == base.Color.BLACK && + this.fetch_color(N.sibling.right) == base.Color.BLACK) { + N.sibling.color = base.Color.RED; + N.parent.color = base.Color.BLACK; + } + else + this.erase_case5(N); }; - /* ========================================================= - ELEMENTS I/O - - INSERT - - ERASE - - POST-PROCESS - ============================================================ - INSERT - --------------------------------------------------------- */ /** - * @inheritdoc + *

{@link XTreeNode.sibling S} is black, {@link XTreeNode.sibling S}'s + * left child is red, {@link XTreeNode.sibling S}'s right child is + * black, and N is the left child of its parent.

+ * + *

+ * + *

In this case we rotate right at {@link XTreeNode.sibling S}, so that + * {@link XTreeNode.sibling S}'s left child becomes {@link XTreeNode.sibling S}'s parent and + * N's new sibling. We then exchange the colors of {@link XTreeNode.sibling S} and its + * new parent.

+ * + *

All paths still have the same number of black nodes, but now + * N has a black sibling whose right child is + * red, so we fall into case 6. Neither N nor its parent are affected + * by this transformation. (Again, for case 6, we relabel N's new sibling as + * {@link XTreeNode.sibling S}.)

+ * + * @param N A node to be erased or swapped. */ - SetContainer.prototype.push = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; - } - // TO BE ABSTRACT - for (var i = 0; i < args.length; i++) - this.insert_by_val(args[i]); - return this.size(); - }; - SetContainer.prototype.insert = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; - } - if (args.length == 1) - return this.insert_by_val(args[0]); - else if (args.length == 2 && args[0] instanceof std.Iterator) { - if (args[1] instanceof std.Iterator && args[0].get_source() != this && args[1].get_source() != this) { - // IT DOESN'T CONTAIN POSITION - // RANGES TO INSERT ONLY - return this.insert_by_range(args[0], args[1]); - } - else { - var ret = void 0; - var is_reverse_iterator = false; - // REVERSE_ITERATOR TO ITERATOR - if (args[0] instanceof std.SetReverseIterator) { - is_reverse_iterator = true; - args[0] = args[0].base().prev(); - } - // INSERT AN ELEMENT - ret = this.insert_by_hint(args[0], args[1]); - // RETURN BRANCHES - if (is_reverse_iterator == true) - return new std.SetReverseIterator(ret.next()); - else - return ret; - } + XTree.prototype.erase_case5 = function (N) { + if (N == N.parent.left && + N.sibling != null && + this.fetch_color(N.sibling) == base.Color.BLACK && + this.fetch_color(N.sibling.left) == base.Color.RED && + this.fetch_color(N.sibling.right) == base.Color.BLACK) { + N.sibling.color = base.Color.RED; + N.sibling.left.color = base.Color.BLACK; + this.rotate_right(N.sibling); } - }; - SetContainer.prototype.erase = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; + else if (N == N.parent.right && + N.sibling != null && + this.fetch_color(N.sibling) == base.Color.BLACK && + this.fetch_color(N.sibling.left) == base.Color.BLACK && + this.fetch_color(N.sibling.right) == base.Color.RED) { + N.sibling.color = base.Color.RED; + N.sibling.right.color = base.Color.BLACK; + this.rotate_left(N.sibling); } - if (args.length == 1 && (args[0] instanceof std.Iterator == false || args[0].get_source() != this)) - return this.erase_by_val(args[0]); - else if (args.length == 1) - return this.erase_by_iterator(args[0]); - else - return this.erase_by_iterator(args[0], args[1]); }; /** - * @hidden - */ - SetContainer.prototype.erase_by_iterator = function (first, last) { - if (last === void 0) { last = first.next(); } - var ret; - var is_reverse_iterator = false; - // REVERSE ITERATOR TO ITERATOR - if (first instanceof std.SetReverseIterator) { - is_reverse_iterator = true; - var first_it = last.base(); - var last_it = first.base(); - first = first_it; - last = last_it; + *

{@link XTreeNode.sibling S} is black, + * {@link XTreeNode.sibling S}'s right child is red, and N is + * the left child of its parent {@link XTreeNode.parent P}.

+ * + *

In this case we rotate left at {@link XTreeNode.parent P}, so that + * {@link XTreeNode.sibling S} becomes the parent of {@link XTreeNode.parent P} and + * {@link XTreeNode.sibling S}'s right child. We then exchange the colors of + * {@link XTreeNode.parent P} and {@link XTreeNode.sibling S}, and make + * {@link XTreeNode.sibling S}'s right child black.

+ * + *

The subtree still has the same color at its root, so Properties 4 (Both children of every + * red node are black) and 5 (All paths from any + * given node to its leaf nodes contain the same number of black nodes) are + * not violated. However, N now has one additional black + * ancestor: either {@link XTreeNode.parent P} has become black, or it + * was black and {@link XTreeNode.sibling S} was added as a + * black grandparent.

+ * + *

Thus, the paths passing through N pass through one additional + * black node.

+ * + *

+ * + *

Meanwhile, if a path does not go through N, then there are two possibilities:

+ *
    + *
  1. + * It goes through N's new sibling SL, a node with arbitrary color and the root of + * the subtree labeled 3 (s. diagram). Then, it must go through {@link XTreeNode.sibling S} and + * {@link XTreeNode.parent P}, both formerly and currently, as they have only exchanged colors + * and places. Thus the path contains the same number of black nodes. + *
  2. + *
  3. + * It goes through N's new uncle, {@link XTreeNode.sibling S}'s right child. Then, + * it formerly went through {@link XTreeNode.sibling S}, {@link XTreeNode.sibling S}'s + * parent, and {@link XTreeNode.sibling S}'s right child SR (which was + * red), but now only goes through {@link XTreeNode.sibling S}, which + * has assumed the color of its former parent, and {@link XTreeNode.sibling S}'s right child, + * which has changed from red to black (assuming + * {@link XTreeNode.sibling S}'s color: black). The net effect is + * that this path goes through the same number of black nodes. + *
  4. + *
+ * + *

Either way, the number of black nodes on these paths does not change. + * Thus, we have restored Properties 4 (Both children of every red node are + * black) and 5 (All paths from any given node to its leaf nodes contain the + * same number of black nodes). The white node in the diagram can be either + * red or black, but must refer to the same color + * both before and after the transformation.

+ * + * @param N A node to be erased or swapped. + */ + XTree.prototype.erase_case6 = function (node) { + node.sibling.color = this.fetch_color(node.parent); + node.parent.color = base.Color.BLACK; + if (node == node.parent.left) { + node.sibling.right.color = base.Color.BLACK; + this.rotate_left(node.parent); + } + else { + node.sibling.left.color = base.Color.BLACK; + this.rotate_right(node.parent); } - // ERASE ELEMENTS - ret = this.erase_by_range(first, last); - // RETURN BRANCHES - if (is_reverse_iterator == true) - return new std.SetReverseIterator(ret.next()); - else - return ret; }; + /* --------------------------------------------------------- + ROTATION + --------------------------------------------------------- */ /** - * @hidden + * Rotate a node left. + * + * @param node Node to rotate left. */ - SetContainer.prototype.erase_by_val = function (val) { - // TEST WHETHER EXISTS - var it = this.find(val); - if (it.equal_to(this.end()) == true) - return 0; - // ERASE - this.erase_by_iterator(it); - return 1; + XTree.prototype.rotate_left = function (node) { + var right = node.right; + this.replace_node(node, right); + node.right = right.left; + if (right.left != null) + right.left.parent = node; + right.left = node; + node.parent = right; }; /** - * @hidden + * Rotate a node to right. + * + * @param node A node to rotate right. */ - SetContainer.prototype.erase_by_range = function (begin, end) { - // ERASE - var list_iterator = this.data_.erase(begin.get_list_iterator(), end.get_list_iterator()); - // POST-PROCESS - this.handle_erase(begin, end); - return new std.SetIterator(this, list_iterator); //begin.prev(); + XTree.prototype.rotate_right = function (node) { + var left = node.left; + this.replace_node(node, left); + node.left = left.right; + if (left.right != null) + left.right.parent = node; + left.right = node; + node.parent = left; }; - return SetContainer; - }(base.Container)); - base.SetContainer = SetContainer; - })(base = std.base || (std.base = {})); -})(std || (std = {})); -var std; -(function (std) { - /** - *

An iterator of a Set.

- * - *

- *

- * - * @author Jeongho Nam - */ - var SetIterator = (function (_super) { - __extends(SetIterator, _super); - /** - *

Construct from source and index number.

- * - *

Note

- *

Do not create iterator directly.

- *

Use begin(), find() or end() in Map instead.

- * - * @param map The source Set to reference. - * @param index Sequence number of the element in the source Set. - */ - function SetIterator(source, it) { - _super.call(this, source); - this.list_iterator_ = it; - } - /* --------------------------------------------------------- - MOVERS - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - SetIterator.prototype.prev = function () { - return new SetIterator(this.set, this.list_iterator_.prev()); - }; - /** - * @inheritdoc - */ - SetIterator.prototype.next = function () { - return new SetIterator(this.set, this.list_iterator_.next()); - }; - /** - * @inheritdoc - */ - SetIterator.prototype.advance = function (size) { - return new SetIterator(this.set, this.list_iterator_.advance(size)); - }; - Object.defineProperty(SetIterator.prototype, "set", { - /* --------------------------------------------------------- - ACCESSORS - --------------------------------------------------------- */ - /** - * @hidden - */ - get: function () { - return this.source_; - }, - enumerable: true, - configurable: true - }); - SetIterator.prototype.get_list_iterator = function () { - return this.list_iterator_; - }; - Object.defineProperty(SetIterator.prototype, "value", { /** - * @inheritdoc + * Replace a node. + * + * @param oldNode Ordinary node to be replaced. + * @param newNode Target node to replace. */ - get: function () { - return this.list_iterator_.value; - }, - enumerable: true, - configurable: true - }); - /* --------------------------------------------------------- - COMPARISONS - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - SetIterator.prototype.equal_to = function (obj) { - return _super.prototype.equal_to.call(this, obj) && this.list_iterator_ == obj.list_iterator_; - }; - /** - * @inheritdoc - */ - SetIterator.prototype.less = function (obj) { - return std.less(this.value, obj.value); - }; - /** - * @inheritdoc - */ - SetIterator.prototype.hash = function () { - return std.hash(this.value); - }; - /** - * @inheritdoc - */ - SetIterator.prototype.swap = function (obj) { - this.list_iterator_.swap(obj.list_iterator_); - }; - return SetIterator; - }(std.Iterator)); - std.SetIterator = SetIterator; - /** - *

A reverse-iterator of Set.

- * - *

- *

- * - * @param Type of the elements. - * - * @author Jeongho Nam - */ - var SetReverseIterator = (function (_super) { - __extends(SetReverseIterator, _super); - /* --------------------------------------------------------- - CONSTRUCTORS - --------------------------------------------------------- */ - function SetReverseIterator(base) { - _super.call(this, base); - } - /** - * @inheritdoc - */ - SetReverseIterator.prototype.create_neighbor = function () { - return new SetReverseIterator(null); - }; - return SetReverseIterator; - }(std.ReverseIterator)); - std.SetReverseIterator = SetReverseIterator; -})(std || (std = {})); -/// -/// -var std; -(function (std) { - var base; - (function (base) { - /** - *

An abstract set.

- * - *

{@link SetContainer SetContainers} are containers that store elements allowing fast retrieval of - * individual elements based on their value.

- * - *

In an {@link SetContainer}, the value of an element is at the same time its key, used to - * identify it. Keys are immutable, therefore, the elements in an {@link SetContainer} cannot be - * modified once in the container - they can be inserted and removed, though.

- * - *

{@link SetContainer} stores elements, keeps sequence and enables indexing by inserting elements into a - * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index - * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

- * - *

- *

- * - *

Container properties

- *
- *
Associative
- *
- * Elements in associative containers are referenced by their key and not by their absolute - * position in the container. - *
- * - *
Set
- *
The value of an element is also the key used to identify it.
- * - *
Multiple equivalent keys
- *
Multiple elements in the container can have equivalent keys.
- *
- * - * @param Type of the elements. Each element in a {@link SetContainer} container is also identified - * by this value (each value is itself also the element's key). - * - * @author Jeongho Nam - */ - var MultiSet = (function (_super) { - __extends(MultiSet, _super); - function MultiSet() { - _super.apply(this, arguments); - } - MultiSet.prototype.insert = function () { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; + XTree.prototype.replace_node = function (oldNode, newNode) { + if (oldNode.parent == null) + this.root_ = newNode; + else { + if (oldNode == oldNode.parent.left) + oldNode.parent.left = newNode; + else + oldNode.parent.right = newNode; } - return _super.prototype.insert.apply(this, args); + if (newNode != null) + newNode.parent = oldNode.parent; }; /* --------------------------------------------------------- - UTILITIES + COLOR --------------------------------------------------------- */ /** - * @inheritdoc + * Fetch color from a node. + * + * @param node A node to fetch color. + * @retur color. */ - MultiSet.prototype.swap = function (obj) { - var vec = new std.Vector(this.begin(), this.end()); - this.assign(obj.begin(), obj.end()); - obj.assign(vec.begin(), vec.end()); + XTree.prototype.fetch_color = function (node) { + if (node == null) + return base.Color.BLACK; + else + return node.color; }; - return MultiSet; - }(base.SetContainer)); - base.MultiSet = MultiSet; + return XTree; + }()); + base.XTree = XTree; })(base = std.base || (std.base = {})); })(std || (std = {})); /// @@ -4661,8 +4479,8 @@ var std; /** *

A red-black tree storing {@link MapIterator MapIterators}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -4869,37 +4687,219 @@ var std; })(base = std.base || (std.base = {})); })(std || (std = {})); /// -/// +/// var std; (function (std) { var base; (function (base) { /** - *

Hash buckets storing {@link SetIterator SetIterators}.

+ *

A red-black Tree storing {@link SetIterator SetIterators}.

* - *

- * - *

+ *

+ *

* * @author Jeongho Nam */ - var SetHashBuckets = (function (_super) { - __extends(SetHashBuckets, _super); - function SetHashBuckets(set) { + var AtomicTree = (function (_super) { + __extends(AtomicTree, _super); + /* --------------------------------------------------------- + CONSTRUCTOR + --------------------------------------------------------- */ + /** + * Default Constructor. + */ + function AtomicTree(set, compare) { + if (compare === void 0) { compare = std.less; } _super.call(this); - this.set = set; + this.set_ = set; + this.compare_ = compare; } - SetHashBuckets.prototype.find = function (val) { - var index = std.hash(val) % this.size(); - var bucket = this.at(index); - for (var i = 0; i < bucket.size(); i++) - if (std.equal_to(bucket.at(i).value, val)) - return bucket.at(i); - return this.set.end(); + AtomicTree.prototype.find = function (val) { + if (val instanceof std.SetIterator && val.value instanceof std.SetIterator == false) + return _super.prototype.find.call(this, val); + else + return this.find_by_val(val); }; - return SetHashBuckets; - }(base.HashBuckets)); - base.SetHashBuckets = SetHashBuckets; + /** + * @hidden + */ + AtomicTree.prototype.find_by_val = function (val) { + if (this.root_ == null) + return null; + var node = this.root_; + while (true) { + var newNode = null; + if (std.equal_to(val, node.value.value)) + break; // EQUALS, MEANS MATCHED, THEN TERMINATE + else if (this.compare_(val, node.value.value)) + newNode = node.left; // LESS, THEN TO THE LEFT + else + newNode = node.right; // GREATER, THEN TO THE RIGHT + // ULTIL CHILD NODE EXISTS + if (newNode == null) + break; + // SHIFT A NEW NODE TO THE NODE TO BE RETURNED + node = newNode; + } + return node; + }; + /* --------------------------------------------------------- + BOUNDS + --------------------------------------------------------- */ + /** + *

Return iterator to lower bound.

+ * + *

Returns an iterator pointing to the first element in the container which is not considered to + * go before val (i.e., either it is equivalent or goes after).

+ * + *

The function uses its internal comparison object (key_comp) to determine this, returning an + * iterator to the first element for which key_comp(element,val) would return false.

+ * + *

If the {@link ITreeSet} class is instantiated with the default comparison type ({@link less}), + * the function returns an iterator to the first element that is not less than val.

+ + *

A similar member function, {@link upper_bound}, has the same behavior as {@link lower_bound}, except + * in the case that the {@link ITreeSet} contains elements equivalent to val: In this case + * {@link lower_bound} returns an iterator pointing to the first of such elements, whereas + * {@link upper_bound} returns an iterator pointing to the element following the last.

+ * + * @param val Value to compare. + * + * @return An iterator to the the first element in the container which is not considered to go before + * val, or {@link ITreeSet.end} if all elements are considered to go before val. + */ + AtomicTree.prototype.lower_bound = function (val) { + var node = this.find(val); + if (node == null) + return this.set_.end(); + else if (std.equal_to(node.value.value, val)) + return node.value; + else { + var it = node.value; + while (!std.equal_to(it, this.set_.end()) && std.less(it.value, val)) + it = it.next(); + return it; + } + }; + /** + *

Return iterator to upper bound.

+ * + *

Returns an iterator pointing to the first element in the container which is considered to go after + * val.

+ + *

The function uses its internal comparison object (key_comp) to determine this, returning an + * iterator to the first element for which key_comp(val,element) would return true.

+ + *

If the {@code ITreeSet} class is instantiated with the default comparison type (less), the + * function returns an iterator to the first element that is greater than val.

+ * + *

A similar member function, {@link lower_bound}, has the same behavior as {@link upper_bound}, except + * in the case that the {@ITreeSet} contains elements equivalent to val: In this case + * {@link lower_bound} returns an iterator pointing to the first of such elements, whereas + * {@link upper_bound} returns an iterator pointing to the element following the last.

+ * + * @param val Value to compare. + * + * @return An iterator to the the first element in the container which is considered to go after + * val, or {@link TreeSet.end end} if no elements are considered to go after val. + */ + AtomicTree.prototype.upper_bound = function (val) { + var node = this.find(val); + if (node == null) + return this.set_.end(); + else { + var it = node.value; + while (!std.equal_to(it, this.set_.end()) && (std.equal_to(it.value, val) || std.less(it.value, val))) + it = it.next(); + return it; + } + }; + /** + *

Get range of equal elements.

+ * + *

Returns the bounds of a range that includes all the elements in the container that are equivalent + * to val.

+ * + *

If no matches are found, the range returned has a length of zero, with both iterators pointing to + * the first element that is considered to go after val according to the container's + * internal comparison object (key_comp).

+ * + *

Two elements of a multiset are considered equivalent if the container's comparison object returns + * false reflexively (i.e., no matter the order in which the elements are passed as arguments).

+ * + * @param key Value to search for. + * + * @return The function returns a {@link Pair}, whose member {@link Pair.first} is the lower bound of + * the range (the same as {@link lower_bound}), and {@link Pair.second} is the upper bound + * (the same as {@link upper_bound}). + */ + AtomicTree.prototype.equal_range = function (val) { + return std.make_pair(this.lower_bound(val), this.upper_bound(val)); + }; + /* --------------------------------------------------------- + COMPARISON + --------------------------------------------------------- */ + /** + *

Return comparison function.

+ * + *

Returns a copy of the comparison function used by the container.

+ * + *

By default, this is a {@link less} object, which returns the same as operator<.

+ * + *

This object determines the order of the elements in the container: it is a function pointer or a function + * object that takes two arguments of the same type as the container elements, and returns true if + * the first argument is considered to go before the second in the strict weak ordering it + * defines, and false otherwise.

+ * + *

Two elements of a {@link ITreeSet} are considered equivalent if {@link key_comp} returns false + * reflexively (i.e., no matter the order in which the elements are passed as arguments).

+ * + *

In {@link ITreeSet} containers, the keys to sort the elements are the values (T) themselves, + * therefore {@link key_comp} and its sibling member function {@link value_comp} are equivalent.

+ * + * @return The comparison function. + */ + AtomicTree.prototype.key_comp = function () { + return this.compare_; + }; + /** + *

Return comparison function.

+ * + *

Returns a copy of the comparison function used by the container.

+ * + *

By default, this is a {@link less} object, which returns the same as operator<.

+ * + *

This object determines the order of the elements in the container: it is a function pointer or a function + * object that takes two arguments of the same type as the container elements, and returns true if + * the first argument is considered to go before the second in the strict weak ordering it + * defines, and false otherwise.

+ * + *

Two elements of a {@link ITreeSet} are considered equivalent if {@link key_comp} returns false + * reflexively (i.e., no matter the order in which the elements are passed as arguments).

+ * + *

In {@link ITreeSet} containers, the keys to sort the elements are the values (T) themselves, + * therefore {@link key_comp} and its sibling member function {@link value_comp} are equivalent.

+ * + * @return The comparison function. + */ + AtomicTree.prototype.value_comp = function () { + return this.compare_; + }; + /** + * @inheritdoc + */ + AtomicTree.prototype.is_equal_to = function (left, right) { + return std.equal_to(left, right); + }; + /** + * @inheritdoc + */ + AtomicTree.prototype.is_less = function (left, right) { + return this.compare_(left.value, right.value); + }; + return AtomicTree; + }(base.XTree)); + base.AtomicTree = AtomicTree; })(base = std.base || (std.base = {})); })(std || (std = {})); /// @@ -4926,8 +4926,8 @@ var std; * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -5128,8 +5128,8 @@ var std; * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -5323,8 +5323,8 @@ var std; * the end, {@link Deque Deques} perform worse and have less consistent iterators and references than * {@link List Lists}.

* - *

- * + *

+ * *

* *

Container properties

@@ -5372,34 +5372,39 @@ var std; } } Object.defineProperty(Deque, "ROW", { + /// + // Row size of the {@link matrix_ matrix} which contains elements. + // + // Note that the {@link ROW} affects on time complexity of accessing and inserting element. + // Accessing element is {@link ROW} times slower than ordinary {@link Vector} and inserting element + // in middle position is {@link ROW} times faster than ordinary {@link Vector}. + // + // When the {@link ROW} returns 8, time complexity of accessing element is O(8) and inserting + // element in middle position is O(N/8). ({@link Vector}'s time complexity of accessement is O(1) + // and inserting element is O(N)). /** - *

Row size of the {@link matrix_ matrix} which contains elements.

- * - *

Note that the {@link ROW} affects on time complexity of accessing and inserting element. - * Accessing element is {@link ROW} times slower than ordinary {@link Vector} and inserting element - * in middle position is {@link ROW} times faster than ordinary {@link Vector}.

- * - *

When the {@link ROW} returns 8, time complexity of accessing element is O(8) and inserting - * element in middle position is O(N/8). ({@link Vector}'s time complexity of accessement is O(1) - * and inserting element is O(N)).

+ * @hidden */ get: function () { return 8; }, enumerable: true, configurable: true }); Object.defineProperty(Deque, "MIN_CAPACITY", { + /// + // Minimum {@link capacity}. + // + // Although a {@link Deque} has few elements, even no element is belonged to, the {@link Deque} + // keeps the minimum {@link capacity} at least. /** - *

Minimum {@link capacity}.

- * - *

Although a {@link Deque} has few elements, even no element is belonged to, the {@link Deque} - * keeps the minimum {@link capacity} at least.

+ * @hidden */ get: function () { return 100; }, enumerable: true, configurable: true }); + // Get column size; {@link capacity_ capacity} / {@link ROW row}. /** - * Get column size; {@link capacity_ capacity} / {@link ROW row}. + * @hidden */ Deque.prototype.get_col_size = function () { return Math.floor(this.capacity_ / Deque.ROW); @@ -5836,8 +5841,8 @@ var std; /** *

An iterator of {@link Deque}.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -5967,8 +5972,8 @@ var std; /** *

A reverse-iterator of Deque.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -6177,8 +6182,8 @@ var std; * distance between these. They also consume some extra memory to keep the linking information associated to each * element (which may be an important factor for large lists of small-sized elements).

* - *

- * + *

+ * *

* *

Container properties

@@ -6616,8 +6621,8 @@ var std; /** *

An iterator, node of a List.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -6746,8 +6751,8 @@ var std; /** *

A reverse-iterator of List.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -6999,8 +7004,8 @@ var std; *

All objects thrown by components of the standard library are derived from this class. * Therefore, all standard exceptions can be caught by catching this type by reference.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/exception/exception * @author Jeongho Nam @@ -7063,8 +7068,8 @@ var std; * *

It is used as a base class for several logical error exceptions.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/logic_error * @author Jeongho Nam @@ -7094,8 +7099,8 @@ var std; *

No component of the standard library throws exceptions of this type. It is designed as a standard * exception to be thrown by programs.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/domain_error * @author Jeongho Nam @@ -7121,8 +7126,8 @@ var std; *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal invalid arguments.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/invalid_argument * @author Jeongho Nam @@ -7148,8 +7153,8 @@ var std; *

It is a standard exception that can be thrown by programs. Some components of the standard library, * such as vector and string also throw exceptions of this type to signal errors resizing.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/length_error * @author Jeongho Nam @@ -7176,8 +7181,8 @@ var std; * such as vector, deque, string and bitset also throw exceptions of this type to signal arguments * out of range.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/out_of_range * @author Jeongho Nam @@ -7210,8 +7215,8 @@ var std; * *

It is used as a base class for several runtime error exceptions.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/runtime_error * @author Jeongho Nam @@ -7237,8 +7242,8 @@ var std; *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal range errors.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/overflow_error * @author Jeongho Nam @@ -7264,8 +7269,8 @@ var std; *

No component of the standard library throws exceptions of this type. It is designed as a standard * exception to be thrown by programs.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/underflow_error * @author Jeongho Nam @@ -7292,8 +7297,8 @@ var std; *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal range errors.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/range_error * @author Jeongho Nam @@ -7801,8 +7806,8 @@ var std; *

{@link HashMap} containers are faster than {@link TreeMap} containers to access individual elements by their * key, although they are generally less efficient for range iteration through a subset of their elements.

* - *

- * + *

+ * *

* *

Container properties

@@ -8047,6 +8052,8 @@ var std; }(std.base.UniqueMap)); std.HashMap = HashMap; })(std || (std = {})); +/// +/// var std; (function (std) { /** @@ -8068,8 +8075,8 @@ var std; *

Elements with equivalent keys are grouped together in the same bucket and in such a way that * an iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

* - *

- * + *

+ * *

* *

Container properties

@@ -8305,30 +8312,29 @@ var std; std.HashMultiMap = HashMultiMap; })(std || (std = {})); /// -/// /// var std; (function (std) { /** - *

Hashed, unordered set.

- * - *

{@link HashSet}s are containers that store unique elements in no particular order, and which - * allow for fast retrieval of individual elements based on their value.

+ *

Hashed, unordered Multiset.

* - *

In an {@link HashSet}, the value of an element is at the same time its key, that - * identifies it uniquely. Keys are immutable, therefore, the elements in an {@link HashSet} cannot be + *

{@link HashMultiSet HashMultiSets} are containers that store elements in no particular order, allowing fast + * retrieval of individual elements based on their value, much like {@link HashSet} containers, + * but allowing different elements to have equivalent values.

+ * + *

In an {@link HashMultiSet}, the value of an element is at the same time its key, used to + * identify it. Keys are immutable, therefore, the elements in an {@link HashMultiSet} cannot be * modified once in the container - they can be inserted and removed, though.

* - *

Internally, the elements in the {@link HashSet} are not sorted in any particular order, but - * organized into buckets depending on their hash values to allow for fast access to individual elements - * directly by their values (with a constant average time complexity on average).

+ *

Internally, the elements in the {@link HashMultiSet} are not sorted in any particular, but + * organized into buckets depending on their hash values to allow for fast access to individual + * elements directly by their values (with a constant average time complexity on average).

* - *

{@link HashSet} containers are faster than {@link TreeSet} containers to access individual - * elements by their key, although they are generally less efficient for range iteration through a - * subset of their elements.

+ *

Elements with equivalent values are grouped together in the same bucket and in such a way that an + * iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -8343,20 +8349,23 @@ var std; *
Set
*
The value of an element is also the key used to identify it.
* - *
Unique keys
- *
No two elements in the container can have equivalent keys.
+ *
Multiple equivalent keys
+ *
The container can hold multiple elements with equivalent keys.
*
* * @param Type of the elements. - * Each element in an {@link HashSet} is also uniquely identified by this value. + * Each element in an {@link UnorderedMultiSet} is also identified by this value.. * - * @reference http://www.cplusplus.com/reference/unordered_set/unordered_set + * @reference http://www.cplusplus.com/reference/unordered_set/unordered_multiset * @author Jeongho Nam */ - var HashSet = (function (_super) { - __extends(HashSet, _super); - function HashSet() { + var HashMultiSet = (function (_super) { + __extends(HashMultiSet, _super); + function HashMultiSet() { _super.apply(this, arguments); + /** + * @hidden + */ this.hash_buckets_ = new std.base.SetHashBuckets(this); } /* ========================================================= @@ -8372,14 +8381,14 @@ var std; /** * @hidden */ - HashSet.prototype.init = function () { + HashMultiSet.prototype.init = function () { _super.prototype.init.call(this); this.hash_buckets_ = new std.base.SetHashBuckets(this); }; /** * @hidden */ - HashSet.prototype.construct_from_array = function (items) { + HashMultiSet.prototype.construct_from_array = function (items) { this.hash_buckets_.rehash(items.length * std.base.Hash.RATIO); _super.prototype.construct_from_array.call(this, items); }; @@ -8389,7 +8398,7 @@ var std; /** * @inheritdoc */ - HashSet.prototype.clear = function () { + HashMultiSet.prototype.clear = function () { this.hash_buckets_.clear(); _super.prototype.clear.call(this); }; @@ -8403,28 +8412,42 @@ var std; /** * @inheritdoc */ - HashSet.prototype.find = function (key) { + HashMultiSet.prototype.find = function (key) { return this.hash_buckets_.find(key); }; - HashSet.prototype.begin = function (index) { + /** + * @inheritdoc + */ + HashMultiSet.prototype.count = function (key) { + // FIND MATCHED BUCKET + var index = std.hash(key) % this.hash_buckets_.item_size(); + var bucket = this.hash_buckets_.at(index); + // ITERATE THE BUCKET + var cnt = 0; + for (var i = 0; i < bucket.length; i++) + if (std.equal_to(bucket[i].value, key)) + cnt++; + return cnt; + }; + HashMultiSet.prototype.begin = function (index) { if (index == undefined) return _super.prototype.begin.call(this); else return this.hash_buckets_.at(index).front(); }; - HashSet.prototype.end = function (index) { + HashMultiSet.prototype.end = function (index) { if (index == undefined) return _super.prototype.end.call(this); else return this.hash_buckets_.at(index).back().next(); }; - HashSet.prototype.rbegin = function (index) { + HashMultiSet.prototype.rbegin = function (index) { if (index == undefined) return _super.prototype.rbegin.call(this); else return new std.SetReverseIterator(this.end(index)); }; - HashSet.prototype.rend = function (index) { + HashMultiSet.prototype.rend = function (index) { if (index == undefined) return _super.prototype.rend.call(this); else @@ -8436,16 +8459,16 @@ var std; /** * @inheritdoc */ - HashSet.prototype.bucket_count = function () { + HashMultiSet.prototype.bucket_count = function () { return this.hash_buckets_.size(); }; /** * @inheritdoc */ - HashSet.prototype.bucket_size = function (n) { + HashMultiSet.prototype.bucket_size = function (n) { return this.hash_buckets_.at(n).size(); }; - HashSet.prototype.max_load_factor = function (z) { + HashMultiSet.prototype.max_load_factor = function (z) { if (z == undefined) return this.size() / this.bucket_count(); else @@ -8454,19 +8477,19 @@ var std; /** * @inheritdoc */ - HashSet.prototype.bucket = function (key) { + HashMultiSet.prototype.bucket = function (key) { return std.hash(key) % this.hash_buckets_.size(); }; /** * @inheritdoc */ - HashSet.prototype.reserve = function (n) { + HashMultiSet.prototype.reserve = function (n) { this.hash_buckets_.rehash(Math.ceil(n * this.max_load_factor())); }; /** * @inheritdoc */ - HashSet.prototype.rehash = function (n) { + HashMultiSet.prototype.rehash = function (n) { if (n <= this.bucket_count()) return; this.hash_buckets_.rehash(n); @@ -8481,25 +8504,16 @@ var std; /** * @hidden */ - HashSet.prototype.insert_by_val = function (val) { - // TEST WHETHER EXIST - var it = this.find(val); - if (it.equal_to(this.end()) == false) - return std.make_pair(it, false); + HashMultiSet.prototype.insert_by_val = function (val) { // INSERT - this.data_.push_back(val); - it = it.prev(); - // POST-PROCESS - this.handle_insert(it, it.next()); - return std.make_pair(it, true); + var it = new std.SetIterator(this, this.data_.insert(this.data_.end(), val)); + this.handle_insert(it, it.next()); // POST-PROCESS + return it; }; /** * @hidden */ - HashSet.prototype.insert_by_hint = function (hint, val) { - // FIND KEY - if (this.has(val) == true) - return this.end(); + HashMultiSet.prototype.insert_by_hint = function (hint, val) { // INSERT var list_iterator = this.data_.insert(hint.get_list_iterator(), val); // POST-PROCESS @@ -8510,22 +8524,14 @@ var std; /** * @hidden */ - HashSet.prototype.insert_by_range = function (first, last) { - var my_first = this.end().prev(); - var size = 0; - for (; !first.equal_to(last); first = first.next()) { - // TEST WHETER EXIST - if (this.has(first.value)) - continue; - // INSERTS - this.data_.push_back(first.value); - size++; - } - my_first = my_first.next(); + HashMultiSet.prototype.insert_by_range = function (first, last) { + // INSERT ELEMENTS + var list_iterator = this.data_.insert(this.data_.end(), first, last); + var my_first = new std.SetIterator(this, list_iterator); // IF NEEDED, HASH_BUCKET TO HAVE SUITABLE SIZE - if (this.size() + size > this.hash_buckets_.size() * std.base.Hash.MAX_RATIO) - this.hash_buckets_.rehash((this.size() + size) * std.base.Hash.RATIO); - // INSERTS + if (this.size() > this.hash_buckets_.item_size() * std.base.Hash.MAX_RATIO) + this.hash_buckets_.rehash(this.size() * std.base.Hash.RATIO); + // POST-PROCESS this.handle_insert(my_first, this.end()); }; /* --------------------------------------------------------- @@ -8534,14 +8540,14 @@ var std; /** * @inheritdoc */ - HashSet.prototype.handle_insert = function (first, last) { + HashMultiSet.prototype.handle_insert = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.hash_buckets_.insert(first); }; /** * @inheritdoc */ - HashSet.prototype.handle_erase = function (first, last) { + HashMultiSet.prototype.handle_erase = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.hash_buckets_.erase(first); }; @@ -8551,8 +8557,8 @@ var std; /** * @inheritdoc */ - HashSet.prototype.swap = function (obj) { - if (obj instanceof HashSet) + HashMultiSet.prototype.swap = function (obj) { + if (obj instanceof HashMultiSet) this.swap_tree_set(obj); else _super.prototype.swap.call(this, obj); @@ -8560,37 +8566,39 @@ var std; /** * @hidden */ - HashSet.prototype.swap_tree_set = function (obj) { + HashMultiSet.prototype.swap_tree_set = function (obj) { _a = [obj.data_, this.data_], this.data_ = _a[0], obj.data_ = _a[1]; _b = [obj.hash_buckets_, this.hash_buckets_], this.hash_buckets_ = _b[0], obj.hash_buckets_ = _b[1]; var _a, _b; }; - return HashSet; - }(std.base.UniqueSet)); - std.HashSet = HashSet; + return HashMultiSet; + }(std.base.MultiSet)); + std.HashMultiSet = HashMultiSet; })(std || (std = {})); +/// +/// var std; (function (std) { /** - *

Hashed, unordered Multiset.

+ *

Hashed, unordered set.

* - *

{@link HashMultiSet HashMultiSets} are containers that store elements in no particular order, allowing fast - * retrieval of individual elements based on their value, much like {@link HashSet} containers, - * but allowing different elements to have equivalent values.

+ *

{@link HashSet}s are containers that store unique elements in no particular order, and which + * allow for fast retrieval of individual elements based on their value.

* - *

In an {@link HashMultiSet}, the value of an element is at the same time its key, used to - * identify it. Keys are immutable, therefore, the elements in an {@link HashMultiSet} cannot be + *

In an {@link HashSet}, the value of an element is at the same time its key, that + * identifies it uniquely. Keys are immutable, therefore, the elements in an {@link HashSet} cannot be * modified once in the container - they can be inserted and removed, though.

* - *

Internally, the elements in the {@link HashMultiSet} are not sorted in any particular, but - * organized into buckets depending on their hash values to allow for fast access to individual - * elements directly by their values (with a constant average time complexity on average).

+ *

Internally, the elements in the {@link HashSet} are not sorted in any particular order, but + * organized into buckets depending on their hash values to allow for fast access to individual elements + * directly by their values (with a constant average time complexity on average).

* - *

Elements with equivalent values are grouped together in the same bucket and in such a way that an - * iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

+ *

{@link HashSet} containers are faster than {@link TreeSet} containers to access individual + * elements by their key, although they are generally less efficient for range iteration through a + * subset of their elements.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -8605,20 +8613,23 @@ var std; *
Set
*
The value of an element is also the key used to identify it.
* - *
Multiple equivalent keys
- *
The container can hold multiple elements with equivalent keys.
+ *
Unique keys
+ *
No two elements in the container can have equivalent keys.
*
* * @param Type of the elements. - * Each element in an {@link UnorderedMultiSet} is also identified by this value.. + * Each element in an {@link HashSet} is also uniquely identified by this value. * - * @reference http://www.cplusplus.com/reference/unordered_set/unordered_multiset + * @reference http://www.cplusplus.com/reference/unordered_set/unordered_set * @author Jeongho Nam */ - var HashMultiSet = (function (_super) { - __extends(HashMultiSet, _super); - function HashMultiSet() { + var HashSet = (function (_super) { + __extends(HashSet, _super); + function HashSet() { _super.apply(this, arguments); + /** + * @hidden + */ this.hash_buckets_ = new std.base.SetHashBuckets(this); } /* ========================================================= @@ -8634,14 +8645,14 @@ var std; /** * @hidden */ - HashMultiSet.prototype.init = function () { + HashSet.prototype.init = function () { _super.prototype.init.call(this); this.hash_buckets_ = new std.base.SetHashBuckets(this); }; /** * @hidden */ - HashMultiSet.prototype.construct_from_array = function (items) { + HashSet.prototype.construct_from_array = function (items) { this.hash_buckets_.rehash(items.length * std.base.Hash.RATIO); _super.prototype.construct_from_array.call(this, items); }; @@ -8651,7 +8662,7 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.clear = function () { + HashSet.prototype.clear = function () { this.hash_buckets_.clear(); _super.prototype.clear.call(this); }; @@ -8665,42 +8676,28 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.find = function (key) { + HashSet.prototype.find = function (key) { return this.hash_buckets_.find(key); }; - /** - * @inheritdoc - */ - HashMultiSet.prototype.count = function (key) { - // FIND MATCHED BUCKET - var index = std.hash(key) % this.hash_buckets_.item_size(); - var bucket = this.hash_buckets_.at(index); - // ITERATE THE BUCKET - var cnt = 0; - for (var i = 0; i < bucket.length; i++) - if (std.equal_to(bucket[i].value, key)) - cnt++; - return cnt; - }; - HashMultiSet.prototype.begin = function (index) { + HashSet.prototype.begin = function (index) { if (index == undefined) return _super.prototype.begin.call(this); else return this.hash_buckets_.at(index).front(); }; - HashMultiSet.prototype.end = function (index) { + HashSet.prototype.end = function (index) { if (index == undefined) return _super.prototype.end.call(this); else return this.hash_buckets_.at(index).back().next(); }; - HashMultiSet.prototype.rbegin = function (index) { + HashSet.prototype.rbegin = function (index) { if (index == undefined) return _super.prototype.rbegin.call(this); else return new std.SetReverseIterator(this.end(index)); }; - HashMultiSet.prototype.rend = function (index) { + HashSet.prototype.rend = function (index) { if (index == undefined) return _super.prototype.rend.call(this); else @@ -8712,16 +8709,16 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.bucket_count = function () { + HashSet.prototype.bucket_count = function () { return this.hash_buckets_.size(); }; /** * @inheritdoc */ - HashMultiSet.prototype.bucket_size = function (n) { + HashSet.prototype.bucket_size = function (n) { return this.hash_buckets_.at(n).size(); }; - HashMultiSet.prototype.max_load_factor = function (z) { + HashSet.prototype.max_load_factor = function (z) { if (z == undefined) return this.size() / this.bucket_count(); else @@ -8730,19 +8727,19 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.bucket = function (key) { + HashSet.prototype.bucket = function (key) { return std.hash(key) % this.hash_buckets_.size(); }; /** * @inheritdoc */ - HashMultiSet.prototype.reserve = function (n) { + HashSet.prototype.reserve = function (n) { this.hash_buckets_.rehash(Math.ceil(n * this.max_load_factor())); }; /** * @inheritdoc */ - HashMultiSet.prototype.rehash = function (n) { + HashSet.prototype.rehash = function (n) { if (n <= this.bucket_count()) return; this.hash_buckets_.rehash(n); @@ -8757,16 +8754,25 @@ var std; /** * @hidden */ - HashMultiSet.prototype.insert_by_val = function (val) { + HashSet.prototype.insert_by_val = function (val) { + // TEST WHETHER EXIST + var it = this.find(val); + if (it.equal_to(this.end()) == false) + return std.make_pair(it, false); // INSERT - var it = new std.SetIterator(this, this.data_.insert(this.data_.end(), val)); - this.handle_insert(it, it.next()); // POST-PROCESS - return it; + this.data_.push_back(val); + it = it.prev(); + // POST-PROCESS + this.handle_insert(it, it.next()); + return std.make_pair(it, true); }; /** * @hidden */ - HashMultiSet.prototype.insert_by_hint = function (hint, val) { + HashSet.prototype.insert_by_hint = function (hint, val) { + // FIND KEY + if (this.has(val) == true) + return this.end(); // INSERT var list_iterator = this.data_.insert(hint.get_list_iterator(), val); // POST-PROCESS @@ -8777,14 +8783,22 @@ var std; /** * @hidden */ - HashMultiSet.prototype.insert_by_range = function (first, last) { - // INSERT ELEMENTS - var list_iterator = this.data_.insert(this.data_.end(), first, last); - var my_first = new std.SetIterator(this, list_iterator); + HashSet.prototype.insert_by_range = function (first, last) { + var my_first = this.end().prev(); + var size = 0; + for (; !first.equal_to(last); first = first.next()) { + // TEST WHETER EXIST + if (this.has(first.value)) + continue; + // INSERTS + this.data_.push_back(first.value); + size++; + } + my_first = my_first.next(); // IF NEEDED, HASH_BUCKET TO HAVE SUITABLE SIZE - if (this.size() > this.hash_buckets_.item_size() * std.base.Hash.MAX_RATIO) - this.hash_buckets_.rehash(this.size() * std.base.Hash.RATIO); - // POST-PROCESS + if (this.size() + size > this.hash_buckets_.size() * std.base.Hash.MAX_RATIO) + this.hash_buckets_.rehash((this.size() + size) * std.base.Hash.RATIO); + // INSERTS this.handle_insert(my_first, this.end()); }; /* --------------------------------------------------------- @@ -8793,14 +8807,14 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.handle_insert = function (first, last) { + HashSet.prototype.handle_insert = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.hash_buckets_.insert(first); }; /** * @inheritdoc */ - HashMultiSet.prototype.handle_erase = function (first, last) { + HashSet.prototype.handle_erase = function (first, last) { for (; !first.equal_to(last); first = first.next()) this.hash_buckets_.erase(first); }; @@ -8810,8 +8824,8 @@ var std; /** * @inheritdoc */ - HashMultiSet.prototype.swap = function (obj) { - if (obj instanceof HashMultiSet) + HashSet.prototype.swap = function (obj) { + if (obj instanceof HashSet) this.swap_tree_set(obj); else _super.prototype.swap.call(this, obj); @@ -8819,14 +8833,14 @@ var std; /** * @hidden */ - HashMultiSet.prototype.swap_tree_set = function (obj) { + HashSet.prototype.swap_tree_set = function (obj) { _a = [obj.data_, this.data_], this.data_ = _a[0], obj.data_ = _a[1]; _b = [obj.hash_buckets_, this.hash_buckets_], this.hash_buckets_ = _b[0], obj.hash_buckets_ = _b[1]; var _a, _b; }; - return HashMultiSet; - }(std.base.MultiSet)); - std.HashMultiSet = HashMultiSet; + return HashSet; + }(std.base.UniqueSet)); + std.HashSet = HashSet; })(std || (std = {})); /// /// @@ -8863,8 +8877,8 @@ var std; * end, they perform worse than the others, and have less consistent iterators and references than {@link List}s. *

* - *

- * + *

+ * *

* *

Container properties

@@ -9180,8 +9194,8 @@ var std; /** *

An iterator of Vector.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -9316,8 +9330,8 @@ var std; /** *

A reverse-iterator of Vector.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -9397,8 +9411,8 @@ var std; * By default, if no container class is specified for a particular {@link Queue} class instantiation, the standard * container {@link List} is used.

* - *

- * + *

+ * *

* * @param Type of elements. @@ -9733,8 +9747,8 @@ var std; * By default, if no container class is specified for a particular {@link Stack} class instantiation, the standard * container {@link List} is used.

* - *

- * + *

+ * *

* * @param Type of elements. @@ -9845,7 +9859,6 @@ var std; })(std || (std = {})); /// /// -/// var std; (function (std) { /** @@ -9867,8 +9880,8 @@ var std; * *

{@link TreeSet}s are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -10081,15 +10094,263 @@ var std; /** * @hidden */ - TreeSet.prototype.swap_tree_set = function (obj) { + TreeSet.prototype.swap_tree_set = function (obj) { + _a = [obj.data_, this.data_], this.data_ = _a[0], obj.data_ = _a[1]; + _b = [obj.tree_, this.tree_], this.tree_ = _b[0], obj.tree_ = _b[1]; + var _a, _b; + }; + return TreeSet; + }(std.base.UniqueSet)); + std.TreeSet = TreeSet; +})(std || (std = {})); +/// +/// +var std; +(function (std) { + /** + *

Tree-structured map, std::map of STL.

+ * + *

{@link TreeMap TreeMaps} are associative containers that store elements formed by a combination of a + * key value (Key) and a mapped value (T), following order.

+ * + *

In a {@link TreeMap}, the key values are generally used to sort and uniquely identify the elements, + * while the mapped values store the content associated to this key. The types of key and + * mapped value may differ, and are grouped together in member type value_type, which is a {@link Pair} + * type combining both:

+ * + *

typedef Pair value_type;

+ * + *

Internally, the elements in a {@link TreeMap} are always sorted by its key following a + * strict weak ordering criterion indicated by its internal comparison method {@link less}. + * + *

{@link TreeMap} containers are generally slower than {@link HashMap HashMap} containers to access individual + * elements by their key, but they allow the direct iteration on subsets based on their order.

+ * + *

{@link TreeMap}s are typically implemented as binary search trees.

+ * + *

+ *

+ * + *

Container properties

+ *
+ *
Associative
+ *
Elements in associative containers are referenced by their key and not by their absolute + * position in the container.
+ * + *
Ordered
+ *
The elements in the container follow a strict order at all times. All inserted elements are + * given a position in this order.
+ * + *
Map
+ *
Each element associates a key to a mapped value: + * Keys are meant to identify the elements whose main content is the mapped value.
+ * + *
Unique keys
+ *
No two elements in the container can have equivalent keys.
+ *
+ * + * @param Type of the keys. Each element in a map is uniquely identified by its key value. + * @param Type of the mapped value. Each element in a map stores some data as its mapped value. + * + * @reference http://www.cplusplus.com/reference/map/map + * @author Jeongho Nam + */ + var TreeMap = (function (_super) { + __extends(TreeMap, _super); + function TreeMap() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i - 0] = arguments[_i]; + } + _super.call(this); + // CONSTRUCT TREE WITH COMPARE + var compare = std.less; + var fn = null; + // OVERLOADINGS + if (args.length == 0) { } // DO NOTHING + else if (args.length >= 1 && (args[0] instanceof std.base.Container || args[0] instanceof std.Vector)) { + fn = this.construct_from_container; + if (args.length == 2) + compare = args[1]; + } + else if (args.length >= 1 && args[0] instanceof Array) { + fn = this.construct_from_array; + if (args.length == 2) + compare = args[1]; + } + else if (args.length >= 2 && args[0] instanceof std.Iterator && args[1] instanceof std.Iterator) { + fn = this.construct_from_range; + if (args.length == 3) + compare = args[2]; + } + else if (args.length == 1) + compare = args[0]; + // CONSTRUCT TREE + this.tree_ = new std.base.PairTree(this, compare); + // BRANCH - CALL OVERLOADED CONSTRUCTORS + if (fn != null) + fn.apply(this, args); + } + /* --------------------------------------------------------- + ASSIGN & CLEAR + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + TreeMap.prototype.clear = function () { + _super.prototype.clear.call(this); + this.tree_.clear(); + }; + /* ========================================================= + ACCESSORS + ========================================================= */ + /** + * @inheritdoc + */ + TreeMap.prototype.find = function (key) { + var node = this.tree_.find(key); + if (node == null || std.equal_to(node.value.first, key) == false) + return this.end(); + else + return node.value; + }; + /** + * @inheritdoc + */ + TreeMap.prototype.key_comp = function () { + return this.tree_.key_comp(); + }; + /** + * @inheritdoc + */ + TreeMap.prototype.value_comp = function () { + return this.tree_.value_comp(); + }; + /** + * @inheritdoc + */ + TreeMap.prototype.lower_bound = function (key) { + return this.tree_.lower_bound(key); + }; + /** + * @inheritdoc + */ + TreeMap.prototype.upper_bound = function (key) { + return this.tree_.upper_bound(key); + }; + /** + * @inheritdoc + */ + TreeMap.prototype.equal_range = function (key) { + return this.tree_.equal_range(key); + }; + /* ========================================================= + ELEMENTS I/O + - INSERT + - POST-PROCESS + ============================================================ + INSERT + --------------------------------------------------------- */ + /** + * @hidden + */ + TreeMap.prototype.insert_by_pair = function (pair) { + var node = this.tree_.find(pair.first); + // IF EQUALS, THEN RETURN FALSE + if (node != null && std.equal_to(node.value.first, pair.first) == true) + return std.make_pair(node.value, false); + // INSERTS + var it; + if (node == null) + it = this.end(); + else if (this.tree_.key_comp()(node.value.first, pair.first) == true) + it = node.value.next(); + else + it = node.value; + // ITERATOR TO RETURN + it = new std.MapIterator(this, this.data_.insert(it.get_list_iterator(), pair)); + this.handle_insert(it, it.next()); // POST-PROCESS + return std.make_pair(it, true); + }; + /** + * @hidden + */ + TreeMap.prototype.insert_by_hint = function (hint, pair) { + // FIND KEY + if (this.has(pair.first) == true) + return this.end(); + // VALIDATE HINT + var ret; + var compare = this.tree_.key_comp(); + // hint < current && current < next + if (compare(hint.first, pair.first) == true + && (hint.next().equal_to(this.end()) || compare(pair.first, hint.next().first) == true)) { + /////// + // RIGHT HINT + /////// + // INSERT + ret = new std.MapIterator(this, this.data_.insert(hint.get_list_iterator(), pair)); + // POST-PROCESS + this.handle_insert(ret, ret.next()); + } + else { + /////// + // WRONG HINT + /////// + // INSERT BY AUTOMATIC NODE FINDING + ret = this.insert_by_pair(pair).first; + } + return ret; + }; + /** + * @hidden + */ + TreeMap.prototype.insert_by_range = function (first, last) { + for (; !first.equal_to(last); first = first.next()) + this.insert_by_pair(std.make_pair(first.value.first, first.value.second)); + }; + /* --------------------------------------------------------- + POST-PROCESS + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + TreeMap.prototype.handle_insert = function (first, last) { + this.tree_.insert(first); + }; + /** + * @inheritdoc + */ + TreeMap.prototype.handle_erase = function (first, last) { + for (; !first.equal_to(last); first = first.next()) + this.tree_.erase(last); + }; + /* =============================================================== + UTILITIES + =============================================================== */ + /** + * @inheritdoc + */ + TreeMap.prototype.swap = function (obj) { + if (obj instanceof TreeMap) + this.swap_tree_map(obj); + else + _super.prototype.swap.call(this, obj); + }; + /** + * @hidden + */ + TreeMap.prototype.swap_tree_map = function (obj) { _a = [obj.data_, this.data_], this.data_ = _a[0], obj.data_ = _a[1]; _b = [obj.tree_, this.tree_], this.tree_ = _b[0], obj.tree_ = _b[1]; var _a, _b; }; - return TreeSet; - }(std.base.UniqueSet)); - std.TreeSet = TreeSet; + return TreeMap; + }(std.base.UniqueMap)); + std.TreeMap = TreeMap; })(std || (std = {})); +/// +/// var std; (function (std) { /** @@ -10112,8 +10373,8 @@ var std; * *

{@link TreeMultiSet TreeMultiSets} are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -10351,253 +10612,8 @@ var std; std.TreeMultiSet = TreeMultiSet; })(std || (std = {})); /// -/// /// var std; -(function (std) { - /** - *

Tree-structured map, std::map of STL.

- * - *

{@link TreeMap TreeMaps} are associative containers that store elements formed by a combination of a - * key value (Key) and a mapped value (T), following order.

- * - *

In a {@link TreeMap}, the key values are generally used to sort and uniquely identify the elements, - * while the mapped values store the content associated to this key. The types of key and - * mapped value may differ, and are grouped together in member type value_type, which is a {@link Pair} - * type combining both:

- * - *

typedef Pair value_type;

- * - *

Internally, the elements in a {@link TreeMap} are always sorted by its key following a - * strict weak ordering criterion indicated by its internal comparison method {@link less}. - * - *

{@link TreeMap} containers are generally slower than {@link HashMap HashMap} containers to access individual - * elements by their key, but they allow the direct iteration on subsets based on their order.

- * - *

{@link TreeMap}s are typically implemented as binary search trees.

- * - *

- *

- * - *

Container properties

- *
- *
Associative
- *
Elements in associative containers are referenced by their key and not by their absolute - * position in the container.
- * - *
Ordered
- *
The elements in the container follow a strict order at all times. All inserted elements are - * given a position in this order.
- * - *
Map
- *
Each element associates a key to a mapped value: - * Keys are meant to identify the elements whose main content is the mapped value.
- * - *
Unique keys
- *
No two elements in the container can have equivalent keys.
- *
- * - * @param Type of the keys. Each element in a map is uniquely identified by its key value. - * @param Type of the mapped value. Each element in a map stores some data as its mapped value. - * - * @reference http://www.cplusplus.com/reference/map/map - * @author Jeongho Nam - */ - var TreeMap = (function (_super) { - __extends(TreeMap, _super); - function TreeMap() { - var args = []; - for (var _i = 0; _i < arguments.length; _i++) { - args[_i - 0] = arguments[_i]; - } - _super.call(this); - // CONSTRUCT TREE WITH COMPARE - var compare = std.less; - var fn = null; - // OVERLOADINGS - if (args.length == 0) { } // DO NOTHING - else if (args.length >= 1 && (args[0] instanceof std.base.Container || args[0] instanceof std.Vector)) { - fn = this.construct_from_container; - if (args.length == 2) - compare = args[1]; - } - else if (args.length >= 1 && args[0] instanceof Array) { - fn = this.construct_from_array; - if (args.length == 2) - compare = args[1]; - } - else if (args.length >= 2 && args[0] instanceof std.Iterator && args[1] instanceof std.Iterator) { - fn = this.construct_from_range; - if (args.length == 3) - compare = args[2]; - } - else if (args.length == 1) - compare = args[0]; - // CONSTRUCT TREE - this.tree_ = new std.base.PairTree(this, compare); - // BRANCH - CALL OVERLOADED CONSTRUCTORS - if (fn != null) - fn.apply(this, args); - } - /* --------------------------------------------------------- - ASSIGN & CLEAR - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - TreeMap.prototype.clear = function () { - _super.prototype.clear.call(this); - this.tree_.clear(); - }; - /* ========================================================= - ACCESSORS - ========================================================= */ - /** - * @inheritdoc - */ - TreeMap.prototype.find = function (key) { - var node = this.tree_.find(key); - if (node == null || std.equal_to(node.value.first, key) == false) - return this.end(); - else - return node.value; - }; - /** - * @inheritdoc - */ - TreeMap.prototype.key_comp = function () { - return this.tree_.key_comp(); - }; - /** - * @inheritdoc - */ - TreeMap.prototype.value_comp = function () { - return this.tree_.value_comp(); - }; - /** - * @inheritdoc - */ - TreeMap.prototype.lower_bound = function (key) { - return this.tree_.lower_bound(key); - }; - /** - * @inheritdoc - */ - TreeMap.prototype.upper_bound = function (key) { - return this.tree_.upper_bound(key); - }; - /** - * @inheritdoc - */ - TreeMap.prototype.equal_range = function (key) { - return this.tree_.equal_range(key); - }; - /* ========================================================= - ELEMENTS I/O - - INSERT - - POST-PROCESS - ============================================================ - INSERT - --------------------------------------------------------- */ - /** - * @hidden - */ - TreeMap.prototype.insert_by_pair = function (pair) { - var node = this.tree_.find(pair.first); - // IF EQUALS, THEN RETURN FALSE - if (node != null && std.equal_to(node.value.first, pair.first) == true) - return std.make_pair(node.value, false); - // INSERTS - var it; - if (node == null) - it = this.end(); - else if (this.tree_.key_comp()(node.value.first, pair.first) == true) - it = node.value.next(); - else - it = node.value; - // ITERATOR TO RETURN - it = new std.MapIterator(this, this.data_.insert(it.get_list_iterator(), pair)); - this.handle_insert(it, it.next()); // POST-PROCESS - return std.make_pair(it, true); - }; - /** - * @hidden - */ - TreeMap.prototype.insert_by_hint = function (hint, pair) { - // FIND KEY - if (this.has(pair.first) == true) - return this.end(); - // VALIDATE HINT - var ret; - var compare = this.tree_.key_comp(); - // hint < current && current < next - if (compare(hint.first, pair.first) == true - && (hint.next().equal_to(this.end()) || compare(pair.first, hint.next().first) == true)) { - /////// - // RIGHT HINT - /////// - // INSERT - ret = new std.MapIterator(this, this.data_.insert(hint.get_list_iterator(), pair)); - // POST-PROCESS - this.handle_insert(ret, ret.next()); - } - else { - /////// - // WRONG HINT - /////// - // INSERT BY AUTOMATIC NODE FINDING - ret = this.insert_by_pair(pair).first; - } - return ret; - }; - /** - * @hidden - */ - TreeMap.prototype.insert_by_range = function (first, last) { - for (; !first.equal_to(last); first = first.next()) - this.insert_by_pair(std.make_pair(first.value.first, first.value.second)); - }; - /* --------------------------------------------------------- - POST-PROCESS - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - TreeMap.prototype.handle_insert = function (first, last) { - this.tree_.insert(first); - }; - /** - * @inheritdoc - */ - TreeMap.prototype.handle_erase = function (first, last) { - for (; !first.equal_to(last); first = first.next()) - this.tree_.erase(last); - }; - /* =============================================================== - UTILITIES - =============================================================== */ - /** - * @inheritdoc - */ - TreeMap.prototype.swap = function (obj) { - if (obj instanceof TreeMap) - this.swap_tree_map(obj); - else - _super.prototype.swap.call(this, obj); - }; - /** - * @hidden - */ - TreeMap.prototype.swap_tree_map = function (obj) { - _a = [obj.data_, this.data_], this.data_ = _a[0], obj.data_ = _a[1]; - _b = [obj.tree_, this.tree_], this.tree_ = _b[0], obj.tree_ = _b[1]; - var _a, _b; - }; - return TreeMap; - }(std.base.UniqueMap)); - std.TreeMap = TreeMap; -})(std || (std = {})); -var std; (function (std) { /** *

Tree-structured multiple-key map.

@@ -10622,8 +10638,8 @@ var std; * *

{@link TreeMultiMap TreeMultiMaps} are typically implemented as binary search trees.

* - *

< - * img src="http://samchon.github.io/typescript-stl/api/assets/images/design/map_containers.png" style="max-width: 100%" />

+ *

< + * img src="http://samchon.github.io/typescript-stl/images/design/class_diagram/map_containers.png" style="max-width: 100%" />

* *

Container properties

*
@@ -10877,8 +10893,8 @@ var std; *

The class inherits from {@link RuntimeError}, to which it adds an {@link ErrorCode} as * member code (and defines a specialized what member).

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/system_error * @author Jeongho Nam @@ -10927,8 +10943,8 @@ var std; * passed by reference. As such, only one object of each of these types shall exist, each uniquely identifying its own * category: all error codes and conditions of a same category shall return a reference to same object.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_category * @author Jeongho Nam @@ -11007,8 +11023,8 @@ var std; *

The {@link ErrorCategory categories} associated with the {@link ErrorCondition} and the * {@link ErrorCode} define the equivalences between them.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_condition * @author Jeongho Nam @@ -11038,8 +11054,8 @@ var std; *

Objects of this class associate such numerical codes to {@link ErrorCategory error categories}, so that they * can be interpreted when needed as more abstract (and portable) {@link ErrorCondition error conditions}.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_code * @author Jeongho Nam @@ -11155,15 +11171,18 @@ var std; /// /// /// +/// +/// /// /// +/// +/// /// /// /// /// /// /// -/// try { module.exports = std; } diff --git a/ts/include/typescript-stl.js.map b/ts/include/typescript-stl.js.map index 2eedc02d..e210ea99 100644 --- a/ts/include/typescript-stl.js.map +++ b/ts/include/typescript-stl.js.map @@ -1 +1 @@ -{"version":3,"file":"typescript-stl.js","sourceRoot":"","sources":["../src/std/API.ts","../src/std/Algorithm.ts","../src/std/base/XTree.ts","../src/std/base/TreeSetBase.ts","../src/std/base/Color.ts","../src/std/base/Container.ts","../src/std/base/ErrorInstance.ts","../src/std/base/HashBuckets.ts","../src/std/base/IArrayContainer.ts","../src/std/base/IArrayIterator.ts","../src/std/base/IContainer.ts","../src/std/base/IDequeContainer.ts","../src/std/base/ILinearContainer.ts","../src/std/Iterator.ts","../src/std/base/MapContainer.ts","../src/std/base/HashMapBase.ts","../src/std/base/MultiMap.ts","../src/std/base/SetContainer.ts","../src/std/base/MultiSet.ts","../src/std/base/TreeMapBase.ts","../src/std/base/HashSetBase.ts","../src/std/base/UniqueMap.ts","../src/std/base/UniqueSet.ts","../src/std/base/XTreeNode.ts","../src/std/Deque.ts","../src/std/example/test_all.ts","../src/std/example/test_anything.ts","../src/std/example/test_bind.ts","../src/std/example/test_deque.ts","../src/std/example/test_for_each.ts","../src/std/example/test_hash_map.ts","../src/std/List.ts","../src/std/example/test_list.ts","../src/std/example/test_sorting.ts","../src/std/example/test_tree_set.ts","../src/std/Exception.ts","../src/std/Functional.ts","../src/std/HashMap.ts","../src/std/HashSet.ts","../src/std/Vector.ts","../src/std/Queue.ts","../src/std/Stack.ts","../src/std/TreeSet.ts","../src/std/TreeMap.ts","../src/std/SystemError.ts","../src/std/Utility.ts","../src/std/miscellaneous/exports.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"typescript-stl.js","sourceRoot":"","sources":["../src/std/API.ts","../src/std/Algorithm.ts","../src/std/base/Color.ts","../src/std/base/Container.ts","../src/std/base/ErrorInstance.ts","../src/std/base/HashBuckets.ts","../src/std/base/HashMapBase.ts","../src/std/base/HashSetBase.ts","../src/std/base/IArrayContainer.ts","../src/std/base/IArrayIterator.ts","../src/std/base/IContainer.ts","../src/std/base/IDequeContainer.ts","../src/std/base/ILinearContainer.ts","../src/std/Iterator.ts","../src/std/base/MapContainer.ts","../src/std/base/MultiMap.ts","../src/std/base/SetContainer.ts","../src/std/base/MultiSet.ts","../src/std/base/XTree.ts","../src/std/base/TreeMapBase.ts","../src/std/base/TreeSetBase.ts","../src/std/base/UniqueMap.ts","../src/std/base/UniqueSet.ts","../src/std/base/XTreeNode.ts","../src/std/Deque.ts","../src/std/example/test_all.ts","../src/std/example/test_anything.ts","../src/std/example/test_bind.ts","../src/std/example/test_deque.ts","../src/std/example/test_for_each.ts","../src/std/example/test_hash_map.ts","../src/std/List.ts","../src/std/example/test_list.ts","../src/std/example/test_sorting.ts","../src/std/example/test_tree_set.ts","../src/std/Exception.ts","../src/std/Functional.ts","../src/std/HashMap.ts","../src/std/HashMultiMap.ts","../src/std/HashMultiSet.ts","../src/std/HashSet.ts","../src/std/Vector.ts","../src/std/Queue.ts","../src/std/Stack.ts","../src/std/TreeSet.ts","../src/std/TreeMap.ts","../src/std/TreeMultiSet.ts","../src/std/TreeMultiMap.ts","../src/std/SystemError.ts","../src/std/Utility.ts","../src/std/miscellaneous/exports.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/ts/index.html b/ts/index.html index 424c0176..f8910a23 100644 --- a/ts/index.html +++ b/ts/index.html @@ -4,7 +4,7 @@ - + diff --git a/ts/src/std/API.ts b/ts/src/std/API.ts index 3260718e..9a43095b 100644 --- a/ts/src/std/API.ts +++ b/ts/src/std/API.ts @@ -149,12 +149,3 @@ namespace std namespace std.base { } - -/** - * Examples for supporting developers who use STL library. - * - * @author Jeongho Nam - */ -namespace std.example -{ -} diff --git a/ts/src/std/Deque.ts b/ts/src/std/Deque.ts index 71e75d09..8dde6134 100644 --- a/ts/src/std/Deque.ts +++ b/ts/src/std/Deque.ts @@ -3,14 +3,6 @@ /// /// -///** -// * @hidden -// */ -//namespace std.deque -//{ -// export type iterator = std.DequeIterator; -// export type reverse_iterator = std.DequeReverseIterator; -//} namespace std.Deque { export type iterator = std.DequeIterator; @@ -48,8 +40,8 @@ namespace std * the end, {@link Deque Deques} perform worse and have less consistent iterators and references than * {@link List Lists}.

* - *

- * + *

+ * *

* *

Container properties

@@ -73,72 +65,64 @@ namespace std extends base.Container implements base.IArrayContainer, base.IDequeContainer { + /// + // Row size of the {@link matrix_ matrix} which contains elements. + // + // Note that the {@link ROW} affects on time complexity of accessing and inserting element. + // Accessing element is {@link ROW} times slower than ordinary {@link Vector} and inserting element + // in middle position is {@link ROW} times faster than ordinary {@link Vector}. + // + // When the {@link ROW} returns 8, time complexity of accessing element is O(8) and inserting + // element in middle position is O(N/8). ({@link Vector}'s time complexity of accessement is O(1) + // and inserting element is O(N)). /** - *

Row size of the {@link matrix_ matrix} which contains elements.

- * - *

Note that the {@link ROW} affects on time complexity of accessing and inserting element. - * Accessing element is {@link ROW} times slower than ordinary {@link Vector} and inserting element - * in middle position is {@link ROW} times faster than ordinary {@link Vector}.

- * - *

When the {@link ROW} returns 8, time complexity of accessing element is O(8) and inserting - * element in middle position is O(N/8). ({@link Vector}'s time complexity of accessement is O(1) - * and inserting element is O(N)).

+ * @hidden */ private static get ROW(): number { return 8; } + /// + // Minimum {@link capacity}. + // + // Although a {@link Deque} has few elements, even no element is belonged to, the {@link Deque} + // keeps the minimum {@link capacity} at least. /** - *

Minimum {@link capacity}.

- * - *

Although a {@link Deque} has few elements, even no element is belonged to, the {@link Deque} - * keeps the minimum {@link capacity} at least.

+ * @hidden */ private static get MIN_CAPACITY(): number { return 100; } + /// + // A matrix containing elements. + // + // This {@link matrix_} is the biggest difference one between {@link Vector} and {@link Deque}. + // Its number of rows follows {@link ROW} and number of columns follows {@link get_col_size} which + // returns divide of {@link capacity} and {@link ROW}. + // + // By separating segment of elements (segment: row, elements in a segment: col), {@link Deque} takes + // advantage of time complexity on inserting element in middle position. {@link Deque} is {@link ROW} + // times faster than {@link Vector} when inserting elements in middle position. + // + // However, separating segment of elements from matrix, {@link Deque} also takes disadvantage of + // time complexity on accessing element. {@link Deque} is {@link ROW} times slower than {@link Vector} + // when accessing element. /** - *

A matrix containing elements.

- * - *

This {@link matrix_} is the biggest difference one between {@link Vector} and {@link Deque}. - * Its number of rows follows {@link ROW} and number of columns follows {@link get_col_size} which - * returns divide of {@link capacity} and {@link ROW}.

- * - * By separating segment of elements (segment: row, elements in a segment: col), {@link Deque} takes - * advantage of time complexity on inserting element in middle position. {@link Deque} is {@link ROW} - * times faster than {@link Vector} when inserting elements in middle position.

- * - *

However, separating segment of elements from matrix, {@link Deque} also takes disadvantage of - * time complexity on accessing element. {@link Deque} is {@link ROW} times slower than {@link Vector} - * when accessing element.

+ * @hidden */ private matrix_: Array>; + // Number of elements in the Deque. /** - * Number of elements in the {@link Deque}. + * @hidden */ private size_: number; /** - *

Size of allocated storage capacity.

- * - *

The {@link capacity_ capacity} is size of the storage space currently allocated for the - * {@link Deque container}, expressed in terms of elements.

- * - *

This {@link capacity_ capacity} is not necessarily equal to the {@link Deque container} - * {@link size}. It can be equal or greater, with the extra space allowing to accommodate for growth - * without the need to reallocate on each insertion.

- * - *

Notice that this {@link capacity_ capacity} does not suppose a limit on the {@link size} of - * the {@link Deque container}. When this {@link capacity} is exhausted and more is needed, it is - * automatically expanded by the {@link Deque container} (reallocating it storage space). - * The theoretical limit on the {@link size} of a {@link Deque container} is given by member - * {@link max_size}.

- * - *

The {@link capacity_ capacity} of a {@link Deque container} can be explicitly altered by - * calling member {@link Deque.reserve}.

+ * @hidden */ private capacity_: number; + // Get column size; {@link capacity_ capacity} / {@link ROW row}. /** - * Get column size; {@link capacity_ capacity} / {@link ROW row}. + * @hidden */ private get_col_size(): number { @@ -863,8 +847,8 @@ namespace std /** *

An iterator of {@link Deque}.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -1008,8 +992,8 @@ namespace std /** *

A reverse-iterator of Deque.

* - *

- * + *

+ * *

* * @param Type of the elements. diff --git a/ts/src/std/Exception.ts b/ts/src/std/Exception.ts index 3b2bf6f7..4958a8e3 100644 --- a/ts/src/std/Exception.ts +++ b/ts/src/std/Exception.ts @@ -110,8 +110,8 @@ namespace std *

All objects thrown by components of the standard library are derived from this class. * Therefore, all standard exceptions can be caught by catching this type by reference.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/exception/exception * @author Jeongho Nam @@ -190,8 +190,8 @@ namespace std * *

It is used as a base class for several logical error exceptions.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/logic_error * @author Jeongho Nam @@ -222,8 +222,8 @@ namespace std *

No component of the standard library throws exceptions of this type. It is designed as a standard * exception to be thrown by programs.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/domain_error * @author Jeongho Nam @@ -250,8 +250,8 @@ namespace std *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal invalid arguments.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/invalid_argument * @author Jeongho Nam @@ -278,8 +278,8 @@ namespace std *

It is a standard exception that can be thrown by programs. Some components of the standard library, * such as vector and string also throw exceptions of this type to signal errors resizing.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/length_error * @author Jeongho Nam @@ -307,8 +307,8 @@ namespace std * such as vector, deque, string and bitset also throw exceptions of this type to signal arguments * out of range.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/out_of_range * @author Jeongho Nam @@ -342,8 +342,8 @@ namespace std * *

It is used as a base class for several runtime error exceptions.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/runtime_error * @author Jeongho Nam @@ -370,8 +370,8 @@ namespace std *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal range errors.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/overflow_error * @author Jeongho Nam @@ -398,8 +398,8 @@ namespace std *

No component of the standard library throws exceptions of this type. It is designed as a standard * exception to be thrown by programs.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/underflow_error * @author Jeongho Nam @@ -427,8 +427,8 @@ namespace std *

It is a standard exception that can be thrown by programs. Some components of the standard library * also throw exceptions of this type to signal range errors.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/stdexcept/range_error * @author Jeongho Nam diff --git a/ts/src/std/HashMap.ts b/ts/src/std/HashMap.ts index 9b8e993e..6a275a3d 100644 --- a/ts/src/std/HashMap.ts +++ b/ts/src/std/HashMap.ts @@ -3,14 +3,6 @@ /// /// -///** -// * @hidden -// */ -//namespace std.unordered_map -//{ -// export type iterator = std.MapIterator; -// export type reverse_iterator = std.MapReverseIterator; -//} namespace std.HashMap { export type iterator = std.MapIterator; @@ -38,8 +30,8 @@ namespace std *

{@link HashMap} containers are faster than {@link TreeMap} containers to access individual elements by their * key, although they are generally less efficient for range iteration through a subset of their elements.

* - *

- * + *

+ * *

* *

Container properties

@@ -72,6 +64,9 @@ namespace std extends base.UniqueMap implements base.IHashMap { + /** + * @hidden + */ private hash_buckets_: base.MapHashBuckets; /* ========================================================= @@ -389,382 +384,4 @@ namespace std [this.hash_buckets_, obj.hash_buckets_] = [obj.hash_buckets_, this.hash_buckets_]; } } -} - -///** -// * @hidden -// */ -//namespace std.unordered_multimap -//{ -// export type iterator = std.MapIterator; -// export type reverse_iterator = std.MapReverseIterator; -//} -namespace std.HashMultiMap -{ - export type iterator = std.MapIterator; - export type reverse_iterator = std.MapReverseIterator; -} - -namespace std -{ - /** - *

Hashed, unordered Multimap.

- * - *

{@link HashMap}s are associative containers that store elements formed by the combination of - * a key value and a mapped value, much like {@link HashMap} containers, but allowing - * different elements to have equivalent keys.

- * - *

In an {@link HashMap}, the key value is generally used to uniquely identify the - * element, while the mapped value is an object with the content associated to this key. - * Types of key and mapped value may differ.

- * - *

Internally, the elements in the {@link HashMap} are not sorted in any particular order with - * respect to either their key or mapped values, but organized into buckets depending on - * their hash values to allow for fast access to individual elements directly by their key values - * (with a constant average time complexity on average).

- * - *

Elements with equivalent keys are grouped together in the same bucket and in such a way that - * an iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

- * - *

- * - *

- * - *

Container properties

- *
- *
Associative
- *
Elements in associative containers are referenced by their key and not by their absolute - * position in the container.
- * - *
Hashed
- *
Hashed containers organize their elements using hash tables that allow for fast access to elements - * by their key.
- * - *
Map
- *
Each element associates a key to a mapped value: - * Keys are meant to identify the elements whose main content is the mapped value.
- * - *
Multiple equivalent keys
- *
The container can hold multiple elements with equivalent keys.
- *
- * - * @param Type of the key values. - * Each element in an {@link HashMap} is identified by a key value. - * @param Type of the mapped value. - * Each element in an {@link HashMap} is used to store some data as its mapped value. - * - * @reference http://www.cplusplus.com/reference/unordered_map/unordered_multimap - * @author Jeongho Nam - */ - export class HashMultiMap - extends base.MultiMap - { - /** - * - */ - private hash_buckets_: base.MapHashBuckets; - - /* ========================================================= - CONSTRUCTORS & SEMI-CONSTRUCTORS - - CONSTRUCTORS - - ASSIGN & CLEAR - ============================================================ - CONSTURCTORS - --------------------------------------------------------- */ - ///// - // using super::constructor - ///// - - /** - * @hidden - */ - protected init(): void - { - super.init(); - - this.hash_buckets_ = new base.MapHashBuckets(this); - } - - /** - * @hidden - */ - protected construct_from_array(items: Array>): void - { - this.hash_buckets_.rehash(items.length * base.Hash.RATIO); - - super.construct_from_array(items); - } - - /* --------------------------------------------------------- - ASSIGN & CLEAR - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - public clear(): void - { - this.hash_buckets_.clear(); - - super.clear(); - } - - /* ========================================================= - ACCESSORS - - MEMBER - - HASH - ============================================================ - MEMBER - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - public find(key: Key): MapIterator - { - return this.hash_buckets_.find(key); - } - - /** - * @inheritdoc - */ - public count(key: Key): number - { - // FIND MATCHED BUCKET - let index = std.hash(key) % this.hash_buckets_.item_size(); - let bucket = this.hash_buckets_.at(index); - - // ITERATE THE BUCKET - let cnt: number = 0; - for (let i = 0; i < bucket.length; i++) - if (std.equal_to(bucket[i].first, key)) - cnt++; - - return cnt; - } - - /** - * @inheritdoc - */ - public begin(): MapIterator; - - /** - * @inheritdoc - */ - public begin(index: number): MapIterator; - - public begin(index?: number): MapIterator - { - if (index == undefined) - return super.begin(); - else - return this.hash_buckets_.at(index).front(); - } - - /** - * @inheritdoc - */ - public end(): MapIterator; - - /** - * @inheritdoc - */ - public end(index: number): MapIterator - - public end(index?: number): MapIterator - { - if (index == undefined) - return super.end(); - else - return this.hash_buckets_.at(index).back().next(); - } - - /** - * @inheritdoc - */ - public rbegin(): MapReverseIterator; - - /** - * @inheritdoc - */ - public rbegin(index: number): MapReverseIterator; - - public rbegin(index?: number): MapReverseIterator - { - return new MapReverseIterator(this.end(index)); - } - - /** - * @inheritdoc - */ - public rend(): MapReverseIterator; - - /** - * @inheritdoc - */ - public rend(index: number): MapReverseIterator; - - public rend(index?: number): MapReverseIterator - { - return new MapReverseIterator(this.begin(index)); - } - - /* --------------------------------------------------------- - HASH - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - public bucket_count(): number - { - return this.hash_buckets_.size(); - } - - /** - * @inheritdoc - */ - public bucket_size(n: number): number - { - return this.hash_buckets_.at(n).size(); - } - - /** - * @inheritdoc - */ - public max_load_factor(): number; - - /** - * @inheritdoc - */ - public max_load_factor(z: number): void; - - public max_load_factor(z?: number): any - { - if (z == undefined) - return this.size() / this.bucket_count(); - else - this.rehash(Math.ceil(this.bucket_count() / z)); - } - - /** - * @inheritdoc - */ - public bucket(key: Key): number - { - return std.hash(key) % this.hash_buckets_.size(); - } - - /** - * @inheritdoc - */ - public reserve(n: number): void - { - this.hash_buckets_.rehash(Math.ceil(n * this.max_load_factor())); - } - - /** - * @inheritdoc - */ - public rehash(n: number): void - { - if (n <= this.bucket_count()) - return; - - this.hash_buckets_.rehash(n); - } - - /* ========================================================= - ELEMENTS I/O - - INSERT - - POST-PROCESS - ============================================================ - INSERT - --------------------------------------------------------- */ - /** - * @hidden - */ - protected insert_by_pair(pair: Pair): any - { - // INSERT - let it = new MapIterator(this, this.data_.insert(this.data_.end(), pair)); - - this.handle_insert(it, it.next()); // POST-PROCESS - return it; - } - - /** - * @hidden - */ - protected insert_by_hint(hint: MapIterator, pair: Pair): MapIterator - { - // INSERT - let list_it = this.data_.insert(hint.get_list_iterator(), pair); - - // POST-PROCESS - let it = new MapIterator(this, list_it); - this.handle_insert(it, it.next()); - - return it; - } - - /** - * @hidden - */ - protected insert_by_range>> - (first: InputIterator, last: InputIterator): void - { - // INSERT ELEMENTS - let list_iterator = this.data_.insert(this.data_.end(), first, last); - let my_first = new MapIterator(this, list_iterator); - - // IF NEEDED, HASH_BUCKET TO HAVE SUITABLE SIZE - if (this.size() > this.hash_buckets_.item_size() * base.Hash.MAX_RATIO) - this.hash_buckets_.rehash(this.size() * base.Hash.RATIO); - - // POST-PROCESS - this.handle_insert(my_first, this.end()); - } - - /* --------------------------------------------------------- - POST-PROCESS - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - protected handle_insert(first: MapIterator, last: MapIterator): void - { - for (; !first.equal_to(last); first = first.next()) - this.hash_buckets_.insert(first); - } - - /** - * @inheritdoc - */ - protected handle_erase(first: MapIterator, last: MapIterator): void - { - for (; !first.equal_to(last); first = first.next()) - this.hash_buckets_.erase(first); - } - - /* =============================================================== - UTILITIES - =============================================================== */ - /** - * @inheritdoc - */ - public swap(obj: base.MultiMap): void - { - if (obj instanceof HashMultiMap) - this.swap_hash_multimap(obj); - else - super.swap(obj); - } - - /** - * @hidden - */ - private swap_hash_multimap(obj: HashMultiMap): void - { - [this.data_, obj.data_] = [obj.data_, this.data_]; - [this.hash_buckets_, obj.hash_buckets_] = [obj.hash_buckets_, this.hash_buckets_]; - } - } } \ No newline at end of file diff --git a/ts/src/std/HashMultiMap.ts b/ts/src/std/HashMultiMap.ts new file mode 100644 index 00000000..d3024e49 --- /dev/null +++ b/ts/src/std/HashMultiMap.ts @@ -0,0 +1,373 @@ +/// + +/// + +namespace std.HashMultiMap +{ + export type iterator = std.MapIterator; + export type reverse_iterator = std.MapReverseIterator; +} + +namespace std +{ + /** + *

Hashed, unordered Multimap.

+ * + *

{@link HashMap}s are associative containers that store elements formed by the combination of + * a key value and a mapped value, much like {@link HashMap} containers, but allowing + * different elements to have equivalent keys.

+ * + *

In an {@link HashMap}, the key value is generally used to uniquely identify the + * element, while the mapped value is an object with the content associated to this key. + * Types of key and mapped value may differ.

+ * + *

Internally, the elements in the {@link HashMap} are not sorted in any particular order with + * respect to either their key or mapped values, but organized into buckets depending on + * their hash values to allow for fast access to individual elements directly by their key values + * (with a constant average time complexity on average).

+ * + *

Elements with equivalent keys are grouped together in the same bucket and in such a way that + * an iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

+ * + *

+ * + *

+ * + *

Container properties

+ *
+ *
Associative
+ *
Elements in associative containers are referenced by their key and not by their absolute + * position in the container.
+ * + *
Hashed
+ *
Hashed containers organize their elements using hash tables that allow for fast access to elements + * by their key.
+ * + *
Map
+ *
Each element associates a key to a mapped value: + * Keys are meant to identify the elements whose main content is the mapped value.
+ * + *
Multiple equivalent keys
+ *
The container can hold multiple elements with equivalent keys.
+ *
+ * + * @param Type of the key values. + * Each element in an {@link HashMap} is identified by a key value. + * @param Type of the mapped value. + * Each element in an {@link HashMap} is used to store some data as its mapped value. + * + * @reference http://www.cplusplus.com/reference/unordered_map/unordered_multimap + * @author Jeongho Nam + */ + export class HashMultiMap + extends base.MultiMap + { + /** + * @hidden + */ + private hash_buckets_: base.MapHashBuckets; + + /* ========================================================= + CONSTRUCTORS & SEMI-CONSTRUCTORS + - CONSTRUCTORS + - ASSIGN & CLEAR + ============================================================ + CONSTURCTORS + --------------------------------------------------------- */ + ///// + // using super::constructor + ///// + + /** + * @hidden + */ + protected init(): void + { + super.init(); + + this.hash_buckets_ = new base.MapHashBuckets(this); + } + + /** + * @hidden + */ + protected construct_from_array(items: Array>): void + { + this.hash_buckets_.rehash(items.length * base.Hash.RATIO); + + super.construct_from_array(items); + } + + /* --------------------------------------------------------- + ASSIGN & CLEAR + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + public clear(): void + { + this.hash_buckets_.clear(); + + super.clear(); + } + + /* ========================================================= + ACCESSORS + - MEMBER + - HASH + ============================================================ + MEMBER + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + public find(key: Key): MapIterator + { + return this.hash_buckets_.find(key); + } + + /** + * @inheritdoc + */ + public count(key: Key): number + { + // FIND MATCHED BUCKET + let index = std.hash(key) % this.hash_buckets_.item_size(); + let bucket = this.hash_buckets_.at(index); + + // ITERATE THE BUCKET + let cnt: number = 0; + for (let i = 0; i < bucket.length; i++) + if (std.equal_to(bucket[i].first, key)) + cnt++; + + return cnt; + } + + /** + * @inheritdoc + */ + public begin(): MapIterator; + + /** + * @inheritdoc + */ + public begin(index: number): MapIterator; + + public begin(index?: number): MapIterator + { + if (index == undefined) + return super.begin(); + else + return this.hash_buckets_.at(index).front(); + } + + /** + * @inheritdoc + */ + public end(): MapIterator; + + /** + * @inheritdoc + */ + public end(index: number): MapIterator + + public end(index?: number): MapIterator + { + if (index == undefined) + return super.end(); + else + return this.hash_buckets_.at(index).back().next(); + } + + /** + * @inheritdoc + */ + public rbegin(): MapReverseIterator; + + /** + * @inheritdoc + */ + public rbegin(index: number): MapReverseIterator; + + public rbegin(index?: number): MapReverseIterator + { + return new MapReverseIterator(this.end(index)); + } + + /** + * @inheritdoc + */ + public rend(): MapReverseIterator; + + /** + * @inheritdoc + */ + public rend(index: number): MapReverseIterator; + + public rend(index?: number): MapReverseIterator + { + return new MapReverseIterator(this.begin(index)); + } + + /* --------------------------------------------------------- + HASH + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + public bucket_count(): number + { + return this.hash_buckets_.size(); + } + + /** + * @inheritdoc + */ + public bucket_size(n: number): number + { + return this.hash_buckets_.at(n).size(); + } + + /** + * @inheritdoc + */ + public max_load_factor(): number; + + /** + * @inheritdoc + */ + public max_load_factor(z: number): void; + + public max_load_factor(z?: number): any + { + if (z == undefined) + return this.size() / this.bucket_count(); + else + this.rehash(Math.ceil(this.bucket_count() / z)); + } + + /** + * @inheritdoc + */ + public bucket(key: Key): number + { + return std.hash(key) % this.hash_buckets_.size(); + } + + /** + * @inheritdoc + */ + public reserve(n: number): void + { + this.hash_buckets_.rehash(Math.ceil(n * this.max_load_factor())); + } + + /** + * @inheritdoc + */ + public rehash(n: number): void + { + if (n <= this.bucket_count()) + return; + + this.hash_buckets_.rehash(n); + } + + /* ========================================================= + ELEMENTS I/O + - INSERT + - POST-PROCESS + ============================================================ + INSERT + --------------------------------------------------------- */ + /** + * @hidden + */ + protected insert_by_pair(pair: Pair): any + { + // INSERT + let it = new MapIterator(this, this.data_.insert(this.data_.end(), pair)); + + this.handle_insert(it, it.next()); // POST-PROCESS + return it; + } + + /** + * @hidden + */ + protected insert_by_hint(hint: MapIterator, pair: Pair): MapIterator + { + // INSERT + let list_it = this.data_.insert(hint.get_list_iterator(), pair); + + // POST-PROCESS + let it = new MapIterator(this, list_it); + this.handle_insert(it, it.next()); + + return it; + } + + /** + * @hidden + */ + protected insert_by_range>> + (first: InputIterator, last: InputIterator): void + { + // INSERT ELEMENTS + let list_iterator = this.data_.insert(this.data_.end(), first, last); + let my_first = new MapIterator(this, list_iterator); + + // IF NEEDED, HASH_BUCKET TO HAVE SUITABLE SIZE + if (this.size() > this.hash_buckets_.item_size() * base.Hash.MAX_RATIO) + this.hash_buckets_.rehash(this.size() * base.Hash.RATIO); + + // POST-PROCESS + this.handle_insert(my_first, this.end()); + } + + /* --------------------------------------------------------- + POST-PROCESS + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + protected handle_insert(first: MapIterator, last: MapIterator): void + { + for (; !first.equal_to(last); first = first.next()) + this.hash_buckets_.insert(first); + } + + /** + * @inheritdoc + */ + protected handle_erase(first: MapIterator, last: MapIterator): void + { + for (; !first.equal_to(last); first = first.next()) + this.hash_buckets_.erase(first); + } + + /* =============================================================== + UTILITIES + =============================================================== */ + /** + * @inheritdoc + */ + public swap(obj: base.MultiMap): void + { + if (obj instanceof HashMultiMap) + this.swap_hash_multimap(obj); + else + super.swap(obj); + } + + /** + * @hidden + */ + private swap_hash_multimap(obj: HashMultiMap): void + { + [this.data_, obj.data_] = [obj.data_, this.data_]; + [this.hash_buckets_, obj.hash_buckets_] = [obj.hash_buckets_, this.hash_buckets_]; + } + } +} \ No newline at end of file diff --git a/ts/src/std/HashMultiSet.ts b/ts/src/std/HashMultiSet.ts new file mode 100644 index 00000000..d0015491 --- /dev/null +++ b/ts/src/std/HashMultiSet.ts @@ -0,0 +1,374 @@ +/// + +/// + +namespace std.HashMultiSet +{ + export type iterator = std.SetIterator; + export type reverse_iterator = std.SetReverseIterator; +} + +namespace std +{ + /** + *

Hashed, unordered Multiset.

+ * + *

{@link HashMultiSet HashMultiSets} are containers that store elements in no particular order, allowing fast + * retrieval of individual elements based on their value, much like {@link HashSet} containers, + * but allowing different elements to have equivalent values.

+ * + *

In an {@link HashMultiSet}, the value of an element is at the same time its key, used to + * identify it. Keys are immutable, therefore, the elements in an {@link HashMultiSet} cannot be + * modified once in the container - they can be inserted and removed, though.

+ * + *

Internally, the elements in the {@link HashMultiSet} are not sorted in any particular, but + * organized into buckets depending on their hash values to allow for fast access to individual + * elements directly by their values (with a constant average time complexity on average).

+ * + *

Elements with equivalent values are grouped together in the same bucket and in such a way that an + * iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

+ * + *

+ *

+ * + *

Container properties

+ *
+ *
Associative
+ *
Elements in associative containers are referenced by their key and not by their absolute + * position in the container.
+ * + *
Hashed
+ *
Hashed containers organize their elements using hash tables that allow for fast access to elements + * by their key.
+ * + *
Set
+ *
The value of an element is also the key used to identify it.
+ * + *
Multiple equivalent keys
+ *
The container can hold multiple elements with equivalent keys.
+ *
+ * + * @param Type of the elements. + * Each element in an {@link UnorderedMultiSet} is also identified by this value.. + * + * @reference http://www.cplusplus.com/reference/unordered_set/unordered_multiset + * @author Jeongho Nam + */ + export class HashMultiSet + extends base.MultiSet + { + /** + * @hidden + */ + private hash_buckets_: base.SetHashBuckets = new base.SetHashBuckets(this); + + /* ========================================================= + CONSTRUCTORS & SEMI-CONSTRUCTORS + - CONSTRUCTORS + - ASSIGN & CLEAR + ============================================================ + CONSTURCTORS + --------------------------------------------------------- */ + ///// + // using super::constructor + ///// + + /** + * @hidden + */ + protected init(): void + { + super.init(); + + this.hash_buckets_ = new base.SetHashBuckets(this); + } + + /** + * @hidden + */ + protected construct_from_array(items: Array): void + { + this.hash_buckets_.rehash(items.length * base.Hash.RATIO); + + super.construct_from_array(items); + } + + /* --------------------------------------------------------- + ASSIGN & CLEAR + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + public clear(): void + { + this.hash_buckets_.clear(); + + super.clear(); + } + + /* ========================================================= + ACCESSORS + - MEMBER + - HASH + ============================================================ + MEMBER + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + public find(key: T): SetIterator + { + return this.hash_buckets_.find(key); + } + + /** + * @inheritdoc + */ + public count(key: T): number + { + // FIND MATCHED BUCKET + let index = std.hash(key) % this.hash_buckets_.item_size(); + let bucket = this.hash_buckets_.at(index); + + // ITERATE THE BUCKET + let cnt: number = 0; + for (let i = 0; i < bucket.length; i++) + if (std.equal_to(bucket[i].value, key)) + cnt++; + + return cnt; + } + + /** + * @inheritdoc + */ + public begin(): SetIterator; + + /** + * @inheritdoc + */ + public begin(index: number): SetIterator; + + public begin(index?: number): SetIterator + { + if (index == undefined) + return super.begin(); + else + return this.hash_buckets_.at(index).front(); + } + + /** + * @inheritdoc + */ + public end(): SetIterator; + + /** + * @inheritdoc + */ + public end(index: number): SetIterator + + public end(index?: number): SetIterator + { + if (index == undefined) + return super.end(); + else + return this.hash_buckets_.at(index).back().next(); + } + + /** + * @inheritdoc + */ + public rbegin(): SetReverseIterator; + + /** + * @inheritdoc + */ + public rbegin(index: number): SetReverseIterator; + + public rbegin(index?: number): SetReverseIterator + { + if (index == undefined) + return super.rbegin(); + else + return new SetReverseIterator(this.end(index)); + } + + /** + * @inheritdoc + */ + public rend(): SetReverseIterator; + + /** + * @inheritdoc + */ + public rend(index: number): SetReverseIterator; + + public rend(index?: number): SetReverseIterator + { + if (index == undefined) + return super.rend(); + else + return new SetReverseIterator(this.begin(index)); + } + + /* --------------------------------------------------------- + HASH + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + public bucket_count(): number + { + return this.hash_buckets_.size(); + } + + /** + * @inheritdoc + */ + public bucket_size(n: number): number + { + return this.hash_buckets_.at(n).size(); + } + + /** + * @inheritdoc + */ + public max_load_factor(): number; + + /** + * @inheritdoc + */ + public max_load_factor(z: number): void; + + public max_load_factor(z?: number): any + { + if (z == undefined) + return this.size() / this.bucket_count(); + else + this.rehash(Math.ceil(this.bucket_count() / z)); + } + + /** + * @inheritdoc + */ + public bucket(key: T): number + { + return std.hash(key) % this.hash_buckets_.size(); + } + + /** + * @inheritdoc + */ + public reserve(n: number): void + { + this.hash_buckets_.rehash(Math.ceil(n * this.max_load_factor())); + } + + /** + * @inheritdoc + */ + public rehash(n: number): void + { + if (n <= this.bucket_count()) + return; + + this.hash_buckets_.rehash(n); + } + + /* ========================================================= + ELEMENTS I/O + - INSERT + - POST-PROCESS + ============================================================ + INSERT + --------------------------------------------------------- */ + /** + * @hidden + */ + protected insert_by_val(val: T): any + { + // INSERT + let it = new SetIterator(this, this.data_.insert(this.data_.end(), val)); + + this.handle_insert(it, it.next()); // POST-PROCESS + return it; + } + + /** + * @hidden + */ + protected insert_by_hint(hint: SetIterator, val: T): SetIterator + { + // INSERT + let list_iterator = this.data_.insert(hint.get_list_iterator(), val); + + // POST-PROCESS + let it = new SetIterator(this, list_iterator); + this.handle_insert(it, it.next()); + + return it; + } + + /** + * @hidden + */ + protected insert_by_range> + (first: InputIterator, last: InputIterator): void + { + // INSERT ELEMENTS + let list_iterator = this.data_.insert(this.data_.end(), first, last); + let my_first = new SetIterator(this, list_iterator); + + // IF NEEDED, HASH_BUCKET TO HAVE SUITABLE SIZE + if (this.size() > this.hash_buckets_.item_size() * base.Hash.MAX_RATIO) + this.hash_buckets_.rehash(this.size() * base.Hash.RATIO); + + // POST-PROCESS + this.handle_insert(my_first, this.end()); + } + + /* --------------------------------------------------------- + POST-PROCESS + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + protected handle_insert(first: SetIterator, last: SetIterator): void + { + for (; !first.equal_to(last); first = first.next()) + this.hash_buckets_.insert(first); + } + + /** + * @inheritdoc + */ + protected handle_erase(first: SetIterator, last: SetIterator): void + { + for (; !first.equal_to(last); first = first.next()) + this.hash_buckets_.erase(first); + } + + /* =============================================================== + UTILITIES + =============================================================== */ + /** + * @inheritdoc + */ + public swap(obj: base.MultiSet): void + { + if (obj instanceof HashMultiSet) + this.swap_tree_set(obj); + else + super.swap(obj); + } + + /** + * @hidden + */ + private swap_tree_set(obj: HashMultiSet): void + { + [this.data_, obj.data_] = [obj.data_, this.data_]; + [this.hash_buckets_, obj.hash_buckets_] = [obj.hash_buckets_, this.hash_buckets_]; + } + } +} \ No newline at end of file diff --git a/ts/src/std/HashSet.ts b/ts/src/std/HashSet.ts index 105c46b9..4910dfe1 100644 --- a/ts/src/std/HashSet.ts +++ b/ts/src/std/HashSet.ts @@ -1,7 +1,6 @@ /// /// -/// namespace std.HashSet { @@ -29,8 +28,8 @@ namespace std * elements by their key, although they are generally less efficient for range iteration through a * subset of their elements.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -58,6 +57,9 @@ namespace std export class HashSet extends base.UniqueSet { + /** + * @hidden + */ private hash_buckets_: base.SetHashBuckets = new base.SetHashBuckets(this); /* ========================================================= @@ -374,372 +376,4 @@ namespace std [this.hash_buckets_, obj.hash_buckets_] = [obj.hash_buckets_, this.hash_buckets_]; } } -} - -namespace std.HashMultiSet -{ - export type iterator = std.SetIterator; - export type reverse_iterator = std.SetReverseIterator; -} - -namespace std -{ - /** - *

Hashed, unordered Multiset.

- * - *

{@link HashMultiSet HashMultiSets} are containers that store elements in no particular order, allowing fast - * retrieval of individual elements based on their value, much like {@link HashSet} containers, - * but allowing different elements to have equivalent values.

- * - *

In an {@link HashMultiSet}, the value of an element is at the same time its key, used to - * identify it. Keys are immutable, therefore, the elements in an {@link HashMultiSet} cannot be - * modified once in the container - they can be inserted and removed, though.

- * - *

Internally, the elements in the {@link HashMultiSet} are not sorted in any particular, but - * organized into buckets depending on their hash values to allow for fast access to individual - * elements directly by their values (with a constant average time complexity on average).

- * - *

Elements with equivalent values are grouped together in the same bucket and in such a way that an - * iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

- * - *

- *

- * - *

Container properties

- *
- *
Associative
- *
Elements in associative containers are referenced by their key and not by their absolute - * position in the container.
- * - *
Hashed
- *
Hashed containers organize their elements using hash tables that allow for fast access to elements - * by their key.
- * - *
Set
- *
The value of an element is also the key used to identify it.
- * - *
Multiple equivalent keys
- *
The container can hold multiple elements with equivalent keys.
- *
- * - * @param Type of the elements. - * Each element in an {@link UnorderedMultiSet} is also identified by this value.. - * - * @reference http://www.cplusplus.com/reference/unordered_set/unordered_multiset - * @author Jeongho Nam - */ - export class HashMultiSet - extends base.MultiSet - { - private hash_buckets_: base.SetHashBuckets = new base.SetHashBuckets(this); - - /* ========================================================= - CONSTRUCTORS & SEMI-CONSTRUCTORS - - CONSTRUCTORS - - ASSIGN & CLEAR - ============================================================ - CONSTURCTORS - --------------------------------------------------------- */ - ///// - // using super::constructor - ///// - - /** - * @hidden - */ - protected init(): void - { - super.init(); - - this.hash_buckets_ = new base.SetHashBuckets(this); - } - - /** - * @hidden - */ - protected construct_from_array(items: Array): void - { - this.hash_buckets_.rehash(items.length * base.Hash.RATIO); - - super.construct_from_array(items); - } - - /* --------------------------------------------------------- - ASSIGN & CLEAR - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - public clear(): void - { - this.hash_buckets_.clear(); - - super.clear(); - } - - /* ========================================================= - ACCESSORS - - MEMBER - - HASH - ============================================================ - MEMBER - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - public find(key: T): SetIterator - { - return this.hash_buckets_.find(key); - } - - /** - * @inheritdoc - */ - public count(key: T): number - { - // FIND MATCHED BUCKET - let index = std.hash(key) % this.hash_buckets_.item_size(); - let bucket = this.hash_buckets_.at(index); - - // ITERATE THE BUCKET - let cnt: number = 0; - for (let i = 0; i < bucket.length; i++) - if (std.equal_to(bucket[i].value, key)) - cnt++; - - return cnt; - } - - /** - * @inheritdoc - */ - public begin(): SetIterator; - - /** - * @inheritdoc - */ - public begin(index: number): SetIterator; - - public begin(index?: number): SetIterator - { - if (index == undefined) - return super.begin(); - else - return this.hash_buckets_.at(index).front(); - } - - /** - * @inheritdoc - */ - public end(): SetIterator; - - /** - * @inheritdoc - */ - public end(index: number): SetIterator - - public end(index?: number): SetIterator - { - if (index == undefined) - return super.end(); - else - return this.hash_buckets_.at(index).back().next(); - } - - /** - * @inheritdoc - */ - public rbegin(): SetReverseIterator; - - /** - * @inheritdoc - */ - public rbegin(index: number): SetReverseIterator; - - public rbegin(index?: number): SetReverseIterator - { - if (index == undefined) - return super.rbegin(); - else - return new SetReverseIterator(this.end(index)); - } - - /** - * @inheritdoc - */ - public rend(): SetReverseIterator; - - /** - * @inheritdoc - */ - public rend(index: number): SetReverseIterator; - - public rend(index?: number): SetReverseIterator - { - if (index == undefined) - return super.rend(); - else - return new SetReverseIterator(this.begin(index)); - } - - /* --------------------------------------------------------- - HASH - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - public bucket_count(): number - { - return this.hash_buckets_.size(); - } - - /** - * @inheritdoc - */ - public bucket_size(n: number): number - { - return this.hash_buckets_.at(n).size(); - } - - /** - * @inheritdoc - */ - public max_load_factor(): number; - - /** - * @inheritdoc - */ - public max_load_factor(z: number): void; - - public max_load_factor(z?: number): any - { - if (z == undefined) - return this.size() / this.bucket_count(); - else - this.rehash(Math.ceil(this.bucket_count() / z)); - } - - /** - * @inheritdoc - */ - public bucket(key: T): number - { - return std.hash(key) % this.hash_buckets_.size(); - } - - /** - * @inheritdoc - */ - public reserve(n: number): void - { - this.hash_buckets_.rehash(Math.ceil(n * this.max_load_factor())); - } - - /** - * @inheritdoc - */ - public rehash(n: number): void - { - if (n <= this.bucket_count()) - return; - - this.hash_buckets_.rehash(n); - } - - /* ========================================================= - ELEMENTS I/O - - INSERT - - POST-PROCESS - ============================================================ - INSERT - --------------------------------------------------------- */ - /** - * @hidden - */ - protected insert_by_val(val: T): any - { - // INSERT - let it = new SetIterator(this, this.data_.insert(this.data_.end(), val)); - - this.handle_insert(it, it.next()); // POST-PROCESS - return it; - } - - /** - * @hidden - */ - protected insert_by_hint(hint: SetIterator, val: T): SetIterator - { - // INSERT - let list_iterator = this.data_.insert(hint.get_list_iterator(), val); - - // POST-PROCESS - let it = new SetIterator(this, list_iterator); - this.handle_insert(it, it.next()); - - return it; - } - - /** - * @hidden - */ - protected insert_by_range> - (first: InputIterator, last: InputIterator): void - { - // INSERT ELEMENTS - let list_iterator = this.data_.insert(this.data_.end(), first, last); - let my_first = new SetIterator(this, list_iterator); - - // IF NEEDED, HASH_BUCKET TO HAVE SUITABLE SIZE - if (this.size() > this.hash_buckets_.item_size() * base.Hash.MAX_RATIO) - this.hash_buckets_.rehash(this.size() * base.Hash.RATIO); - - // POST-PROCESS - this.handle_insert(my_first, this.end()); - } - - /* --------------------------------------------------------- - POST-PROCESS - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - protected handle_insert(first: SetIterator, last: SetIterator): void - { - for (; !first.equal_to(last); first = first.next()) - this.hash_buckets_.insert(first); - } - - /** - * @inheritdoc - */ - protected handle_erase(first: SetIterator, last: SetIterator): void - { - for (; !first.equal_to(last); first = first.next()) - this.hash_buckets_.erase(first); - } - - /* =============================================================== - UTILITIES - =============================================================== */ - /** - * @inheritdoc - */ - public swap(obj: base.MultiSet): void - { - if (obj instanceof HashMultiSet) - this.swap_tree_set(obj); - else - super.swap(obj); - } - - /** - * @hidden - */ - private swap_tree_set(obj: HashMultiSet): void - { - [this.data_, obj.data_] = [obj.data_, this.data_]; - [this.hash_buckets_, obj.hash_buckets_] = [obj.hash_buckets_, this.hash_buckets_]; - } - } } \ No newline at end of file diff --git a/ts/src/std/Iterator.ts b/ts/src/std/Iterator.ts index 2f57312f..8196970f 100644 --- a/ts/src/std/Iterator.ts +++ b/ts/src/std/Iterator.ts @@ -19,8 +19,8 @@ namespace std *

There is not a single type of {@link Iterator bidirectional iterator}: {@link IContainer Each container} * may define its own specific iterator type able to iterate through it and access its elements.

* - *

- * + *

+ * *

* * @reference http://www.cplusplus.com/reference/iterator/BidirectionalIterator @@ -162,8 +162,8 @@ namespace std * first element in a range is reversed, the reversed iterator points to the element before the first element (this * would be the past-the-end element of the reversed range).

* - *

- * + *

+ * *

* * @reference http://www.cplusplus.com/reference/iterator/reverse_iterator diff --git a/ts/src/std/List.ts b/ts/src/std/List.ts index c998b932..f94947ef 100644 --- a/ts/src/std/List.ts +++ b/ts/src/std/List.ts @@ -34,8 +34,8 @@ namespace std * distance between these. They also consume some extra memory to keep the linking information associated to each * element (which may be an important factor for large lists of small-sized elements).

* - *

- * + *

+ * *

* *

Container properties

@@ -59,18 +59,21 @@ namespace std extends base.Container implements base.IDequeContainer { + // An iterator, node of beginning. /** - * An iterator of beginning. + * @hidden */ protected begin_: ListIterator; + // An iterator, node of end. /** - * An iterator of end. + * @hidden */ protected end_: ListIterator; - + + // Number of elements in this List. /** - * Number of elements in the {@link List}. + * @hidden */ protected size_: number; @@ -1089,8 +1092,8 @@ namespace std /** *

An iterator, node of a List.

* - *

- * + *

+ * *

* * @author Jeongho Nam @@ -1254,8 +1257,8 @@ namespace std /** *

A reverse-iterator of List.

* - *

- * + *

+ * *

* * @param Type of the elements. diff --git a/ts/src/std/Queue.ts b/ts/src/std/Queue.ts index 5b4e17cf..e3830bf2 100644 --- a/ts/src/std/Queue.ts +++ b/ts/src/std/Queue.ts @@ -31,8 +31,8 @@ namespace std * By default, if no container class is specified for a particular {@link Queue} class instantiation, the standard * container {@link List} is used.

* - *

- * + *

+ * *

* * @param Type of elements. diff --git a/ts/src/std/Stack.ts b/ts/src/std/Stack.ts index e8b3c211..636c9299 100644 --- a/ts/src/std/Stack.ts +++ b/ts/src/std/Stack.ts @@ -29,8 +29,8 @@ namespace std * By default, if no container class is specified for a particular {@link Stack} class instantiation, the standard * container {@link List} is used.

* - *

- * + *

+ * *

* * @param Type of elements. diff --git a/ts/src/std/SystemError.ts b/ts/src/std/SystemError.ts index 0c93cbed..e3adf690 100644 --- a/ts/src/std/SystemError.ts +++ b/ts/src/std/SystemError.ts @@ -15,8 +15,8 @@ namespace std *

The class inherits from {@link RuntimeError}, to which it adds an {@link ErrorCode} as * member code (and defines a specialized what member).

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/system_error * @author Jeongho Nam @@ -25,7 +25,7 @@ namespace std extends RuntimeError { /** - * Error code. + * @hidden */ protected code_: ErrorCode; @@ -104,8 +104,8 @@ namespace std * passed by reference. As such, only one object of each of these types shall exist, each uniquely identifying its own * category: all error codes and conditions of a same category shall return a reference to same object.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_category * @author Jeongho Nam @@ -272,8 +272,8 @@ namespace std *

The {@link ErrorCategory categories} associated with the {@link ErrorCondition} and the * {@link ErrorCode} define the equivalences between them.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_condition * @author Jeongho Nam @@ -318,8 +318,8 @@ namespace std *

Objects of this class associate such numerical codes to {@link ErrorCategory error categories}, so that they * can be interpreted when needed as more abstract (and portable) {@link ErrorCondition error conditions}.

* - *

- *

+ *

+ *

* * @reference http://www.cplusplus.com/reference/system_error/error_code * @author Jeongho Nam diff --git a/ts/src/std/TreeMap.ts b/ts/src/std/TreeMap.ts index 5febbec5..0c88543c 100644 --- a/ts/src/std/TreeMap.ts +++ b/ts/src/std/TreeMap.ts @@ -1,16 +1,7 @@ /// /// -/// - -///** -// * @hidden -// */ -//namespace std.map -//{ -// export type iterator = std.MapIterator; -// export type reverse_iterator = std.MapReverseIterator; -//} + namespace std.TreeMap { export type iterator = std.MapIterator; @@ -40,8 +31,8 @@ namespace std * *

{@link TreeMap}s are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -72,7 +63,7 @@ namespace std implements base.ITreeMap { /** - * RB-Tree+ object for implemeting the {@link TreeMap}. + * @hidden */ private tree_: base.PairTree; @@ -397,423 +388,4 @@ namespace std [this.tree_, obj.tree_] = [obj.tree_, this.tree_]; } } -} - -///** -// * @hidden -// */ -//namespace std.multimap -//{ -// export type iterator = std.MapIterator; -// export type reverse_iterator = std.MapReverseIterator; -//} -namespace std.TreeMultiMap -{ - export type iterator = std.MapIterator; - export type reverse_iterator = std.MapReverseIterator; -} - -namespace std -{ - /** - *

Tree-structured multiple-key map.

- * - *

{@link TreeMultiMap TreeMultiMaps} are associative containers that store elements formed by a combination of - * a key value and a mapped value, following a specific order, and where multiple elements can - * have equivalent keys.

- * - *

In a {@link TreeMultiMap}, the key values are generally used to sort and uniquely identify - * the elements, while the mapped values store the content associated to this key. The types of - * key and mapped value may differ, and are grouped together in member type - * value_type, which is a {@link Pair} type combining both:

- * - *

typedef Pair value_type;

- * - *

Internally, the elements in a {@link TreeMultiMap}are always sorted by its key following a - * strict weak ordering criterion indicated by its internal comparison method (of {@link less}).

- * - *

{@link TreeMultiMap}containers are generally slower than {@link HashMap} containers - * to access individual elements by their key, but they allow the direct iteration on subsets based - * on their order.

- * - *

{@link TreeMultiMap TreeMultiMaps} are typically implemented as binary search trees.

- * - *

< - * img src="http://samchon.github.io/typescript-stl/api/assets/images/design/map_containers.png" style="max-width: 100%" />

- * - *

Container properties

- *
- *
Associative
- *
- * Elements in associative containers are referenced by their key and not by their absolute - * position in the container. - *
- * - *
Ordered
- *
- * The elements in the container follow a strict order at all times. All inserted elements are - * given a position in this order. - *
- * - *
Map
- *
- * Each element associates a key to a mapped value: - * Keys are meant to identify the elements whose main content is the mapped value. - *
- * - *
Multiple equivalent keys
- *
Multiple elements in the container can have equivalent keys.
- *
- * - * @param Type of the keys. Each element in a map is uniquely identified by its key value. - * @param Type of the mapped value. Each element in a map stores some data as its mapped value. - * - * @reference http://www.cplusplus.com/reference/map/multimap - * @author Jeongho Nam - */ - export class TreeMultiMap - extends base.MultiMap - implements base.ITreeMap - { - private tree_: base.PairTree; - - /* ========================================================= - CONSTRUCTORS & SEMI-CONSTRUCTORS - - CONSTRUCTORS - - ASSIGN & CLEAR - ============================================================ - CONSTURCTORS - --------------------------------------------------------- */ - /** - * Default Constructor. - */ - public constructor(); - - /** - * Construct from compare. - * - * @param compare A binary predicate determines order of elements. - */ - public constructor(compare: (x: Key, y: Key) => boolean); - - /** - * Contruct from elements. - * - * @param array Elements to be contained. - */ - public constructor(array: Array>); - - /** - * Contruct from elements. - * - * @param array Elements to be contained. - * @param compare A binary predicate determines order of elements. - */ - public constructor(array: Array>, compare: (x: Key, y: Key) => boolean); - - /** - * Contruct from tuples. - * - * @param array Tuples to be contained. - */ - public constructor(array: Array<[Key, T]>); - - /** - * Contruct from tuples. - * - * @param array Tuples to be contained. - * @param compare A binary predicate determines order of elements. - */ - public constructor(array: Array<[Key, T]>, compare: (x: Key, y: Key) => boolean); - - /** - * Copy Constructor. - * - * @param container Another map to copy. - */ - public constructor(container: base.MapContainer); - - /** - * Copy Constructor. - * - * @param container Another map to copy. - * @param compare A binary predicate determines order of elements. - */ - public constructor(container: base.MapContainer, compare: (x: Key, y: Key) => boolean); - - /** - * Range Constructor. - * - * @param begin nput interator of the initial position in a sequence. - * @param end Input interator of the final position in a sequence. - */ - public constructor(begin: Iterator>, end: Iterator>); - - /** - * Range Constructor. - * - * @param begin nput interator of the initial position in a sequence. - * @param end Input interator of the final position in a sequence. - * @param compare A binary predicate determines order of elements. - */ - public constructor - ( - begin: Iterator>, end: Iterator>, compare: (x: Key, y: Key) => boolean - ); - - public constructor(...args: any[]) - { - super(); - - // CONSTRUCT TREE WITH COMPARE - let compare: (x: Key, y: Key) => boolean = std.less; - let fn: Function = null; - - // OVERLOADINGS - if (args.length == 0) { } // DO NOTHING - else if (args.length >= 1 && (args[0] instanceof base.Container || args[0] instanceof Vector)) - { - fn = this.construct_from_container; - - if (args.length == 2) - compare = args[1]; - } - else if (args.length >= 1 && args[0] instanceof Array) - { - fn = this.construct_from_array; - - if (args.length == 2) - compare = args[1]; - } - else if (args.length >= 2 && args[0] instanceof Iterator && args[1] instanceof Iterator) - { - fn = this.construct_from_range; - - if (args.length == 3) - compare = args[2]; - } - else if (args.length == 1) - compare = args[0]; - - // CONSTRUCT TREE - this.tree_ = new base.PairTree(this, compare); - - // BRANCH - CALL OVERLOADED CONSTRUCTORS - if (fn != null) - fn.apply(this, args); - } - - /* --------------------------------------------------------- - ASSIGN & CLEAR - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - public clear(): void - { - super.clear(); - - this.tree_.clear(); - } - - /* ========================================================= - ACCESSORS - ========================================================= */ - /** - * @inheritdoc - */ - public find(key: Key): MapIterator - { - let node = this.tree_.find(key); - - if (node == null || std.equal_to(node.value.first, key) == false) - return this.end(); - else - return node.value; - } - - /** - * @inheritdoc - */ - public count(key: Key): number - { - let it = this.find(key); - let cnt: number = 0; - - for (; !it.equal_to(this.end()) && std.equal_to(it.first, key); it = it.next()) - cnt++; - - return cnt; - } - - /** - * @inheritdoc - */ - public key_comp(): (x: Key, y: Key) => boolean - { - return this.tree_.key_comp(); - } - - /** - * @inheritdoc - */ - public value_comp(): (x: Pair, y: Pair) => boolean - { - return this.tree_.value_comp(); - } - - /** - * @inheritdoc - */ - public lower_bound(key: Key): MapIterator - { - return this.tree_.lower_bound(key); - } - - /** - * @inheritdoc - */ - public upper_bound(key: Key): MapIterator - { - return this.tree_.upper_bound(key); - } - - /** - * @inheritdoc - */ - public equal_range(key: Key): Pair, MapIterator> - { - return this.tree_.equal_range(key); - } - - /* ========================================================= - ELEMENTS I/O - - INSERT - - POST-PROCESS - ============================================================ - INSERT - --------------------------------------------------------- */ - /** - * @hidden - */ - protected insert_by_pair(pair: Pair): any - { - let node = this.tree_.find(pair.first); - let it: MapIterator; - - if (node == null) - { - it = this.end(); - } - else if (std.equal_to(node.value.first, pair.first) == true) - { - it = node.value.next(); - } - else if (this.tree_.key_comp()(node.value.first, pair.first) == true) - { - it = node.value.next(); - - while (it.equal_to(this.end()) == false && this.tree_.key_comp()(it.first, pair.first)) - it = it.next(); - } - else - it = node.value; - - // ITERATOR TO RETURN - it = new MapIterator(this, this.data_.insert(it.get_list_iterator(), pair)); - this.handle_insert(it, it.next()); // POST-PROCESS - - return it; - } - - /** - * @hidden - */ - protected insert_by_hint(hint: MapIterator, pair: Pair): MapIterator - { - // FIND KEY - if (this.has(pair.first) == true) - return this.end(); - - // VALIDATE HINT - let ret: MapIterator; - let compare = this.tree_.key_comp(); - - // hint <= current && current <= next - if ((compare(hint.first, pair.first) || std.equal_to(hint.first, pair.first)) - && (hint.next().equal_to(this.end()) || (compare(pair.first, hint.next().first) || std.equal_to(pair.first, hint.next().first)))) - { - /////// - // RIGHT HINT - /////// - // INSERT - ret = new MapIterator(this, this.data_.insert(hint.get_list_iterator(), pair)); - - // POST-PROCESS - this.handle_insert(ret, ret.next()); - } - else - { - /////// - // WRONG HINT - /////// - // INSERT BY AUTOMATIC NODE FINDING - ret = this.insert_by_pair(pair); - } - return ret; - } - - /** - * @hidden - */ - protected insert_by_range>> - (first: InputIterator, last: InputIterator): void - { - for (; !first.equal_to(last); first = first.next() as InputIterator) - this.insert_by_pair(make_pair(first.value.first, first.value.second)); - } - - /* --------------------------------------------------------- - POST-PROCESS - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - protected handle_insert(first: MapIterator, last: MapIterator): void - { - this.tree_.insert(first); - } - - /** - * @inheritdoc - */ - protected handle_erase(first: MapIterator, last: MapIterator): void - { - for (; !first.equal_to(last); first = first.next()) - this.tree_.erase(last); - } - - /* =============================================================== - UTILITIES - =============================================================== */ - /** - * @inheritdoc - */ - public swap(obj: base.MultiMap): void - { - if (obj instanceof TreeMultiMap) - this.swap_tree_multimap(obj); - else - super.swap(obj); - } - - /** - * @hidden - */ - private swap_tree_multimap(obj: TreeMultiMap): void - { - [this.data_, obj.data_] = [obj.data_, this.data_]; - [this.tree_, obj.tree_] = [obj.tree_, this.tree_]; - } - } } \ No newline at end of file diff --git a/ts/src/std/TreeMultiMap.ts b/ts/src/std/TreeMultiMap.ts new file mode 100644 index 00000000..da779ab5 --- /dev/null +++ b/ts/src/std/TreeMultiMap.ts @@ -0,0 +1,417 @@ +/// + +/// + +namespace std.TreeMultiMap +{ + export type iterator = std.MapIterator; + export type reverse_iterator = std.MapReverseIterator; +} + +namespace std +{ + /** + *

Tree-structured multiple-key map.

+ * + *

{@link TreeMultiMap TreeMultiMaps} are associative containers that store elements formed by a combination of + * a key value and a mapped value, following a specific order, and where multiple elements can + * have equivalent keys.

+ * + *

In a {@link TreeMultiMap}, the key values are generally used to sort and uniquely identify + * the elements, while the mapped values store the content associated to this key. The types of + * key and mapped value may differ, and are grouped together in member type + * value_type, which is a {@link Pair} type combining both:

+ * + *

typedef Pair value_type;

+ * + *

Internally, the elements in a {@link TreeMultiMap}are always sorted by its key following a + * strict weak ordering criterion indicated by its internal comparison method (of {@link less}).

+ * + *

{@link TreeMultiMap}containers are generally slower than {@link HashMap} containers + * to access individual elements by their key, but they allow the direct iteration on subsets based + * on their order.

+ * + *

{@link TreeMultiMap TreeMultiMaps} are typically implemented as binary search trees.

+ * + *

< + * img src="http://samchon.github.io/typescript-stl/images/design/class_diagram/map_containers.png" style="max-width: 100%" />

+ * + *

Container properties

+ *
+ *
Associative
+ *
+ * Elements in associative containers are referenced by their key and not by their absolute + * position in the container. + *
+ * + *
Ordered
+ *
+ * The elements in the container follow a strict order at all times. All inserted elements are + * given a position in this order. + *
+ * + *
Map
+ *
+ * Each element associates a key to a mapped value: + * Keys are meant to identify the elements whose main content is the mapped value. + *
+ * + *
Multiple equivalent keys
+ *
Multiple elements in the container can have equivalent keys.
+ *
+ * + * @param Type of the keys. Each element in a map is uniquely identified by its key value. + * @param Type of the mapped value. Each element in a map stores some data as its mapped value. + * + * @reference http://www.cplusplus.com/reference/map/multimap + * @author Jeongho Nam + */ + export class TreeMultiMap + extends base.MultiMap + implements base.ITreeMap + { + /** + * @hidden + */ + private tree_: base.PairTree; + + /* ========================================================= + CONSTRUCTORS & SEMI-CONSTRUCTORS + - CONSTRUCTORS + - ASSIGN & CLEAR + ============================================================ + CONSTURCTORS + --------------------------------------------------------- */ + /** + * Default Constructor. + */ + public constructor(); + + /** + * Construct from compare. + * + * @param compare A binary predicate determines order of elements. + */ + public constructor(compare: (x: Key, y: Key) => boolean); + + /** + * Contruct from elements. + * + * @param array Elements to be contained. + */ + public constructor(array: Array>); + + /** + * Contruct from elements. + * + * @param array Elements to be contained. + * @param compare A binary predicate determines order of elements. + */ + public constructor(array: Array>, compare: (x: Key, y: Key) => boolean); + + /** + * Contruct from tuples. + * + * @param array Tuples to be contained. + */ + public constructor(array: Array<[Key, T]>); + + /** + * Contruct from tuples. + * + * @param array Tuples to be contained. + * @param compare A binary predicate determines order of elements. + */ + public constructor(array: Array<[Key, T]>, compare: (x: Key, y: Key) => boolean); + + /** + * Copy Constructor. + * + * @param container Another map to copy. + */ + public constructor(container: base.MapContainer); + + /** + * Copy Constructor. + * + * @param container Another map to copy. + * @param compare A binary predicate determines order of elements. + */ + public constructor(container: base.MapContainer, compare: (x: Key, y: Key) => boolean); + + /** + * Range Constructor. + * + * @param begin nput interator of the initial position in a sequence. + * @param end Input interator of the final position in a sequence. + */ + public constructor(begin: Iterator>, end: Iterator>); + + /** + * Range Constructor. + * + * @param begin nput interator of the initial position in a sequence. + * @param end Input interator of the final position in a sequence. + * @param compare A binary predicate determines order of elements. + */ + public constructor + ( + begin: Iterator>, end: Iterator>, compare: (x: Key, y: Key) => boolean + ); + + public constructor(...args: any[]) + { + super(); + + // CONSTRUCT TREE WITH COMPARE + let compare: (x: Key, y: Key) => boolean = std.less; + let fn: Function = null; + + // OVERLOADINGS + if (args.length == 0) { } // DO NOTHING + else if (args.length >= 1 && (args[0] instanceof base.Container || args[0] instanceof Vector)) + { + fn = this.construct_from_container; + + if (args.length == 2) + compare = args[1]; + } + else if (args.length >= 1 && args[0] instanceof Array) + { + fn = this.construct_from_array; + + if (args.length == 2) + compare = args[1]; + } + else if (args.length >= 2 && args[0] instanceof Iterator && args[1] instanceof Iterator) + { + fn = this.construct_from_range; + + if (args.length == 3) + compare = args[2]; + } + else if (args.length == 1) + compare = args[0]; + + // CONSTRUCT TREE + this.tree_ = new base.PairTree(this, compare); + + // BRANCH - CALL OVERLOADED CONSTRUCTORS + if (fn != null) + fn.apply(this, args); + } + + /* --------------------------------------------------------- + ASSIGN & CLEAR + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + public clear(): void + { + super.clear(); + + this.tree_.clear(); + } + + /* ========================================================= + ACCESSORS + ========================================================= */ + /** + * @inheritdoc + */ + public find(key: Key): MapIterator + { + let node = this.tree_.find(key); + + if (node == null || std.equal_to(node.value.first, key) == false) + return this.end(); + else + return node.value; + } + + /** + * @inheritdoc + */ + public count(key: Key): number + { + let it = this.find(key); + let cnt: number = 0; + + for (; !it.equal_to(this.end()) && std.equal_to(it.first, key); it = it.next()) + cnt++; + + return cnt; + } + + /** + * @inheritdoc + */ + public key_comp(): (x: Key, y: Key) => boolean + { + return this.tree_.key_comp(); + } + + /** + * @inheritdoc + */ + public value_comp(): (x: Pair, y: Pair) => boolean + { + return this.tree_.value_comp(); + } + + /** + * @inheritdoc + */ + public lower_bound(key: Key): MapIterator + { + return this.tree_.lower_bound(key); + } + + /** + * @inheritdoc + */ + public upper_bound(key: Key): MapIterator + { + return this.tree_.upper_bound(key); + } + + /** + * @inheritdoc + */ + public equal_range(key: Key): Pair, MapIterator> + { + return this.tree_.equal_range(key); + } + + /* ========================================================= + ELEMENTS I/O + - INSERT + - POST-PROCESS + ============================================================ + INSERT + --------------------------------------------------------- */ + /** + * @hidden + */ + protected insert_by_pair(pair: Pair): any + { + let node = this.tree_.find(pair.first); + let it: MapIterator; + + if (node == null) + { + it = this.end(); + } + else if (std.equal_to(node.value.first, pair.first) == true) + { + it = node.value.next(); + } + else if (this.tree_.key_comp()(node.value.first, pair.first) == true) + { + it = node.value.next(); + + while (it.equal_to(this.end()) == false && this.tree_.key_comp()(it.first, pair.first)) + it = it.next(); + } + else + it = node.value; + + // ITERATOR TO RETURN + it = new MapIterator(this, this.data_.insert(it.get_list_iterator(), pair)); + this.handle_insert(it, it.next()); // POST-PROCESS + + return it; + } + + /** + * @hidden + */ + protected insert_by_hint(hint: MapIterator, pair: Pair): MapIterator + { + // FIND KEY + if (this.has(pair.first) == true) + return this.end(); + + // VALIDATE HINT + let ret: MapIterator; + let compare = this.tree_.key_comp(); + + // hint <= current && current <= next + if ((compare(hint.first, pair.first) || std.equal_to(hint.first, pair.first)) + && (hint.next().equal_to(this.end()) || (compare(pair.first, hint.next().first) || std.equal_to(pair.first, hint.next().first)))) + { + /////// + // RIGHT HINT + /////// + // INSERT + ret = new MapIterator(this, this.data_.insert(hint.get_list_iterator(), pair)); + + // POST-PROCESS + this.handle_insert(ret, ret.next()); + } + else + { + /////// + // WRONG HINT + /////// + // INSERT BY AUTOMATIC NODE FINDING + ret = this.insert_by_pair(pair); + } + return ret; + } + + /** + * @hidden + */ + protected insert_by_range>> + (first: InputIterator, last: InputIterator): void + { + for (; !first.equal_to(last); first = first.next() as InputIterator) + this.insert_by_pair(make_pair(first.value.first, first.value.second)); + } + + /* --------------------------------------------------------- + POST-PROCESS + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + protected handle_insert(first: MapIterator, last: MapIterator): void + { + this.tree_.insert(first); + } + + /** + * @inheritdoc + */ + protected handle_erase(first: MapIterator, last: MapIterator): void + { + for (; !first.equal_to(last); first = first.next()) + this.tree_.erase(last); + } + + /* =============================================================== + UTILITIES + =============================================================== */ + /** + * @inheritdoc + */ + public swap(obj: base.MultiMap): void + { + if (obj instanceof TreeMultiMap) + this.swap_tree_multimap(obj); + else + super.swap(obj); + } + + /** + * @hidden + */ + private swap_tree_multimap(obj: TreeMultiMap): void + { + [this.data_, obj.data_] = [obj.data_, this.data_]; + [this.tree_, obj.tree_] = [obj.tree_, this.tree_]; + } + } +} \ No newline at end of file diff --git a/ts/src/std/TreeMultiSet.ts b/ts/src/std/TreeMultiSet.ts new file mode 100644 index 00000000..000b8a10 --- /dev/null +++ b/ts/src/std/TreeMultiSet.ts @@ -0,0 +1,392 @@ +/// + +/// + +namespace std.TreeMultiSet +{ + export type iterator = std.SetIterator; + export type reverse_iterator = std.SetReverseIterator; +} + +namespace std +{ + /** + *

Tree-structured multiple-key set.

+ * + *

{@link TreeMultiSet TreeMultiSets} are containers that store elements following a specific order, and + * where multiple elements can have equivalent values.

+ * + *

In a {@link TreeMultiSet}, the value of an element also identifies it (the value is itself + * the key, of type T). The value of the elements in a {@link TreeMultiSet} cannot + * be modified once in the container (the elements are always const), but they can be inserted or removed + * from the

+ * + *

Internally, the elements in a {@link TreeMultiSet TreeMultiSets} are always sorted following a strict + * weak ordering criterion indicated by its internal comparison method (of {@link IComparable.less less}).

+ * + *

{@link TreeMultiSet} containers are generally slower than {@link HashMultiSet} containers + * to access individual elements by their key, but they allow the direct iteration on subsets based on + * their order.

+ * + *

{@link TreeMultiSet TreeMultiSets} are typically implemented as binary search trees.

+ * + *

+ *

+ * + *

Container properties

+ *
+ *
Associative
+ *
+ * Elements in associative containers are referenced by their key and not by their absolute + * position in the container. + *
+ * + *
Ordered
+ *
+ * The elements in the container follow a strict order at all times. All inserted elements are + * given a position in this order. + *
+ * + *
Set
+ *
The value of an element is also the key used to identify it.
+ * + *
Multiple equivalent keys
+ *
Multiple elements in the container can have equivalent keys.
+ *
+ * + * @param Type of the elements. Each element in a {@link TreeMultiSet} container is also identified + * by this value (each value is itself also the element's key). + * + * @reference http://www.cplusplus.com/reference/set/multiset + * @author Jeongho Nam + */ + export class TreeMultiSet + extends base.MultiSet + implements base.ITreeSet + { + /** + * @hidden + */ + private tree_: base.AtomicTree; + + /* ========================================================= + CONSTRUCTORS & SEMI-CONSTRUCTORS + - CONSTRUCTORS + - ASSIGN & CLEAR + ============================================================ + CONSTURCTORS + --------------------------------------------------------- */ + /** + * Default Constructor. + */ + public constructor(); + + /** + * Construct from compare. + * + * @param compare A binary predicate determines order of elements. + */ + public constructor(compare: (x: T, y: T) => boolean); + + /** + * Contruct from elements. + * + * @param array Elements to be contained. + */ + public constructor(array: Array); + + /** + * Contruct from elements with compare. + * + * @param array Elements to be contained. + * @param compare A binary predicate determines order of elements. + */ + public constructor(array: Array, compare: (x: T, y: T) => boolean); + + /** + * Copy Constructor. + */ + public constructor(container: base.Container); + + /** + * Copy Constructor with compare. + * + * @param container A container to be copied. + * @param compare A binary predicate determines order of elements. + */ + public constructor(container: base.Container, compare: (x: T, y: T) => boolean); + + /** + * Range Constructor. + * + * @param begin Input interator of the initial position in a sequence. + * @param end Input interator of the final position in a sequence. + */ + public constructor(begin: Iterator, end: Iterator); + + /** + * Construct from range and compare. + * + * @param begin Input interator of the initial position in a sequence. + * @param end Input interator of the final position in a sequence. + * @param compare A binary predicate determines order of elements. + */ + public constructor(begin: Iterator, end: Iterator, compare: (x: T, y: T) => boolean); + + public constructor(...args: any[]) + { + super(); + + // CONSTRUCT TREE WITH COMPARE + let compare: (x: T, y: T) => boolean = std.less; + let fn: Function = null; + + // OVERLOADINGS + if (args.length == 0) { } // DO NOTHING + else if (args.length >= 1 && (args[0] instanceof base.Container || args[0] instanceof Vector)) + { + fn = this.construct_from_container; + + if (args.length == 2) + compare = args[1]; + } + else if (args.length >= 1 && args[0] instanceof Array) + { + fn = this.construct_from_array; + + if (args.length == 2) + compare = args[1]; + } + else if (args.length >= 2 && args[0] instanceof Iterator && args[1] instanceof Iterator) + { + fn = this.construct_from_range; + + if (args.length == 3) + compare = args[2]; + } + else if (args.length == 1) + compare = args[0]; + + // CONSTRUCT TREE + this.tree_ = new base.AtomicTree(this, compare); + + // BRANCH - CALL OVERLOADED CONSTRUCTORS + if (fn != null) + fn.apply(this, args); + } + + /* --------------------------------------------------------- + ASSIGN & CLEAR + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + public clear(): void + { + super.clear(); + + this.tree_.clear(); + } + + /* ========================================================= + ACCESSORS + ========================================================= */ + /** + * @inheritdoc + */ + public find(val: T): SetIterator + { + var node = this.tree_.find(val); + + if (node == null || std.equal_to(val, node.value.value) == false) + return this.end(); + else + return node.value; + } + + /** + * @inheritdoc + */ + public count(val: T): number + { + let it = this.find(val); + let cnt: number = 0; + + for (; !it.equal_to(this.end()) && std.equal_to(it.value, val); it = it.next()) + cnt++; + + return cnt; + } + + /** + * @inheritdoc + */ + public key_comp(): (x: T, y: T) => boolean + { + return this.tree_.key_comp(); + } + + /** + * @inheritdoc + */ + public value_comp(): (x: T, y: T) => boolean + { + return this.tree_.key_comp(); + } + + /** + * @inheritdoc + */ + public lower_bound(val: T): SetIterator + { + return this.tree_.lower_bound(val); + } + + /** + * @inheritdoc + */ + public upper_bound(val: T): SetIterator + { + return this.tree_.upper_bound(val); + } + + /** + * @inheritdoc + */ + public equal_range(val: T): Pair, SetIterator> + { + return this.tree_.equal_range(val); + } + + /* ========================================================= + ELEMENTS I/O + - INSERT + - POST-PROCESS + ============================================================ + INSERT + --------------------------------------------------------- */ + /** + * @hidden + */ + protected insert_by_val(val: T): any + { + var node = this.tree_.find(val); + var it: SetIterator; + + // FIND NODE + if (node == null) + { + it = this.end(); + } + else if (std.equal_to(node.value.value, val) == true) + { + it = node.value.next(); + } + else if (std.less(node.value.value, val) == true) + { + it = node.value.next(); + + while (it.equal_to(this.end()) == false && std.less(it.value, val)) + it = it.next(); + } + else + { + it = node.value; + } + + ///// + // INSERTS + ///// + it = new SetIterator(this, this.data_.insert(it.get_list_iterator(), val)); + this.handle_insert(it, it.next()); // POST-PROCESS + + return it; + } + + /** + * @hidden + */ + protected insert_by_hint(hint: SetIterator, val: T): SetIterator + { + // VALIDATE HINT + let ret: SetIterator; + let compare = this.tree_.key_comp(); + + // hint <= current && current <= next + if ((compare(hint.value, val) || std.equal_to(hint.value, val)) + && (hint.next().equal_to(this.end()) || (compare(val, hint.next().value) || std.equal_to(val, hint.next().value)))) + { + /////// + // RIGHT HINT + /////// + // INSERT + ret = new SetIterator(this, this.data_.insert(hint.get_list_iterator(), val)); + + // POST-PROCESS + this.handle_insert(ret, ret.next()); + } + else + { + /////// + // WRONG HINT + /////// + // INSERT BY AUTOMATIC NODE FINDING + ret = this.insert_by_val(val); + } + return ret; + } + + /** + * @hidden + */ + protected insert_by_range> + (first: InputIterator, last: InputIterator): void + { + for (; !first.equal_to(last); first = first.next() as InputIterator) + this.insert_by_val(first.value); + } + + /* --------------------------------------------------------- + POST-PROCESS + --------------------------------------------------------- */ + /** + * @inheritdoc + */ + protected handle_insert(first: SetIterator, last: SetIterator): void + { + this.tree_.insert(first); + } + + /** + * @inheritdoc + */ + protected handle_erase(first: SetIterator, last: SetIterator): void + { + for (; !first.equal_to(last); first = first.next()) + this.tree_.erase(last); + } + + /* =============================================================== + UTILITIES + =============================================================== */ + /** + * @inheritdoc + */ + public swap(obj: base.MultiSet): void + { + if (obj instanceof TreeMultiSet) + this.swap_tree_set(obj); + else + super.swap(obj); + } + + /** + * @hidden + */ + private swap_tree_set(obj: TreeMultiSet): void + { + [this.data_, obj.data_] = [obj.data_, this.data_]; + [this.tree_, obj.tree_] = [obj.tree_, this.tree_]; + } + } +} \ No newline at end of file diff --git a/ts/src/std/TreeSet.ts b/ts/src/std/TreeSet.ts index 80d45c58..e47b28c0 100644 --- a/ts/src/std/TreeSet.ts +++ b/ts/src/std/TreeSet.ts @@ -1,7 +1,6 @@ /// /// -/// namespace std.TreeSet { @@ -30,8 +29,8 @@ namespace std * *

{@link TreeSet}s are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -65,7 +64,7 @@ namespace std implements base.ITreeSet { /** - * RB-Tree+ object for implemeting the {@link TreeSet}. + * @hidden */ private tree_: base.AtomicTree; @@ -372,393 +371,4 @@ namespace std [this.tree_, obj.tree_] = [obj.tree_, this.tree_]; } } -} - -namespace std.TreeMultiSet -{ - export type iterator = std.SetIterator; - export type reverse_iterator = std.SetReverseIterator; -} - -namespace std -{ - /** - *

Tree-structured multiple-key set.

- * - *

{@link TreeMultiSet TreeMultiSets} are containers that store elements following a specific order, and - * where multiple elements can have equivalent values.

- * - *

In a {@link TreeMultiSet}, the value of an element also identifies it (the value is itself - * the key, of type T). The value of the elements in a {@link TreeMultiSet} cannot - * be modified once in the container (the elements are always const), but they can be inserted or removed - * from the

- * - *

Internally, the elements in a {@link TreeMultiSet TreeMultiSets} are always sorted following a strict - * weak ordering criterion indicated by its internal comparison method (of {@link IComparable.less less}).

- * - *

{@link TreeMultiSet} containers are generally slower than {@link HashMultiSet} containers - * to access individual elements by their key, but they allow the direct iteration on subsets based on - * their order.

- * - *

{@link TreeMultiSet TreeMultiSets} are typically implemented as binary search trees.

- * - *

- *

- * - *

Container properties

- *
- *
Associative
- *
- * Elements in associative containers are referenced by their key and not by their absolute - * position in the container. - *
- * - *
Ordered
- *
- * The elements in the container follow a strict order at all times. All inserted elements are - * given a position in this order. - *
- * - *
Set
- *
The value of an element is also the key used to identify it.
- * - *
Multiple equivalent keys
- *
Multiple elements in the container can have equivalent keys.
- *
- * - * @param Type of the elements. Each element in a {@link TreeMultiSet} container is also identified - * by this value (each value is itself also the element's key). - * - * @reference http://www.cplusplus.com/reference/set/multiset - * @author Jeongho Nam - */ - export class TreeMultiSet - extends base.MultiSet - implements base.ITreeSet - { - /** - * RB-Tree+ object for implemeting the {@link TreeMultiSet}. - */ - private tree_: base.AtomicTree; - - /* ========================================================= - CONSTRUCTORS & SEMI-CONSTRUCTORS - - CONSTRUCTORS - - ASSIGN & CLEAR - ============================================================ - CONSTURCTORS - --------------------------------------------------------- */ - /** - * Default Constructor. - */ - public constructor(); - - /** - * Construct from compare. - * - * @param compare A binary predicate determines order of elements. - */ - public constructor(compare: (x: T, y: T) => boolean); - - /** - * Contruct from elements. - * - * @param array Elements to be contained. - */ - public constructor(array: Array); - - /** - * Contruct from elements with compare. - * - * @param array Elements to be contained. - * @param compare A binary predicate determines order of elements. - */ - public constructor(array: Array, compare: (x: T, y: T) => boolean); - - /** - * Copy Constructor. - */ - public constructor(container: base.Container); - - /** - * Copy Constructor with compare. - * - * @param container A container to be copied. - * @param compare A binary predicate determines order of elements. - */ - public constructor(container: base.Container, compare: (x: T, y: T) => boolean); - - /** - * Range Constructor. - * - * @param begin Input interator of the initial position in a sequence. - * @param end Input interator of the final position in a sequence. - */ - public constructor(begin: Iterator, end: Iterator); - - /** - * Construct from range and compare. - * - * @param begin Input interator of the initial position in a sequence. - * @param end Input interator of the final position in a sequence. - * @param compare A binary predicate determines order of elements. - */ - public constructor(begin: Iterator, end: Iterator, compare: (x: T, y: T) => boolean); - - public constructor(...args: any[]) - { - super(); - - // CONSTRUCT TREE WITH COMPARE - let compare: (x: T, y: T) => boolean = std.less; - let fn: Function = null; - - // OVERLOADINGS - if (args.length == 0) { } // DO NOTHING - else if (args.length >= 1 && (args[0] instanceof base.Container || args[0] instanceof Vector)) - { - fn = this.construct_from_container; - - if (args.length == 2) - compare = args[1]; - } - else if (args.length >= 1 && args[0] instanceof Array) - { - fn = this.construct_from_array; - - if (args.length == 2) - compare = args[1]; - } - else if (args.length >= 2 && args[0] instanceof Iterator && args[1] instanceof Iterator) - { - fn = this.construct_from_range; - - if (args.length == 3) - compare = args[2]; - } - else if (args.length == 1) - compare = args[0]; - - // CONSTRUCT TREE - this.tree_ = new base.AtomicTree(this, compare); - - // BRANCH - CALL OVERLOADED CONSTRUCTORS - if (fn != null) - fn.apply(this, args); - } - - /* --------------------------------------------------------- - ASSIGN & CLEAR - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - public clear(): void - { - super.clear(); - - this.tree_.clear(); - } - - /* ========================================================= - ACCESSORS - ========================================================= */ - /** - * @inheritdoc - */ - public find(val: T): SetIterator - { - var node = this.tree_.find(val); - - if (node == null || std.equal_to(val, node.value.value) == false) - return this.end(); - else - return node.value; - } - - /** - * @inheritdoc - */ - public count(val: T): number - { - let it = this.find(val); - let cnt: number = 0; - - for (; !it.equal_to(this.end()) && std.equal_to(it.value, val); it = it.next()) - cnt++; - - return cnt; - } - - /** - * @inheritdoc - */ - public key_comp(): (x: T, y: T) => boolean - { - return this.tree_.key_comp(); - } - - /** - * @inheritdoc - */ - public value_comp(): (x: T, y: T) => boolean - { - return this.tree_.key_comp(); - } - - /** - * @inheritdoc - */ - public lower_bound(val: T): SetIterator - { - return this.tree_.lower_bound(val); - } - - /** - * @inheritdoc - */ - public upper_bound(val: T): SetIterator - { - return this.tree_.upper_bound(val); - } - - /** - * @inheritdoc - */ - public equal_range(val: T): Pair, SetIterator> - { - return this.tree_.equal_range(val); - } - - /* ========================================================= - ELEMENTS I/O - - INSERT - - POST-PROCESS - ============================================================ - INSERT - --------------------------------------------------------- */ - /** - * @hidden - */ - protected insert_by_val(val: T): any - { - var node = this.tree_.find(val); - var it: SetIterator; - - // FIND NODE - if (node == null) - { - it = this.end(); - } - else if (std.equal_to(node.value.value, val) == true) - { - it = node.value.next(); - } - else if (std.less(node.value.value, val) == true) - { - it = node.value.next(); - - while (it.equal_to(this.end()) == false && std.less(it.value, val)) - it = it.next(); - } - else - { - it = node.value; - } - - ///// - // INSERTS - ///// - it = new SetIterator(this, this.data_.insert(it.get_list_iterator(), val)); - this.handle_insert(it, it.next()); // POST-PROCESS - - return it; - } - - /** - * @hidden - */ - protected insert_by_hint(hint: SetIterator, val: T): SetIterator - { - // VALIDATE HINT - let ret: SetIterator; - let compare = this.tree_.key_comp(); - - // hint <= current && current <= next - if ((compare(hint.value, val) || std.equal_to(hint.value, val)) - && (hint.next().equal_to(this.end()) || (compare(val, hint.next().value) || std.equal_to(val, hint.next().value)))) - { - /////// - // RIGHT HINT - /////// - // INSERT - ret = new SetIterator(this, this.data_.insert(hint.get_list_iterator(), val)); - - // POST-PROCESS - this.handle_insert(ret, ret.next()); - } - else - { - /////// - // WRONG HINT - /////// - // INSERT BY AUTOMATIC NODE FINDING - ret = this.insert_by_val(val); - } - return ret; - } - - /** - * @hidden - */ - protected insert_by_range> - (first: InputIterator, last: InputIterator): void - { - for (; !first.equal_to(last); first = first.next() as InputIterator) - this.insert_by_val(first.value); - } - - /* --------------------------------------------------------- - POST-PROCESS - --------------------------------------------------------- */ - /** - * @inheritdoc - */ - protected handle_insert(first: SetIterator, last: SetIterator): void - { - this.tree_.insert(first); - } - - /** - * @inheritdoc - */ - protected handle_erase(first: SetIterator, last: SetIterator): void - { - for (; !first.equal_to(last); first = first.next()) - this.tree_.erase(last); - } - - /* =============================================================== - UTILITIES - =============================================================== */ - /** - * @inheritdoc - */ - public swap(obj: base.MultiSet): void - { - if (obj instanceof TreeMultiSet) - this.swap_tree_set(obj); - else - super.swap(obj); - } - - /** - * @hidden - */ - private swap_tree_set(obj: TreeMultiSet): void - { - [this.data_, obj.data_] = [obj.data_, this.data_]; - [this.tree_, obj.tree_] = [obj.tree_, this.tree_]; - } - } } \ No newline at end of file diff --git a/ts/src/std/Vector.ts b/ts/src/std/Vector.ts index 68cacf40..520771ea 100644 --- a/ts/src/std/Vector.ts +++ b/ts/src/std/Vector.ts @@ -41,8 +41,8 @@ namespace std * end, they perform worse than the others, and have less consistent iterators and references than {@link List}s. *

* - *

- * + *

+ * *

* *

Container properties

@@ -742,8 +742,8 @@ namespace std /** *

An iterator of Vector.

* - *

- * + *

+ * *

* * @param Type of the elements. @@ -892,8 +892,8 @@ namespace std /** *

A reverse-iterator of Vector.

* - *

- * + *

+ * *

* * @param Type of the elements. diff --git a/ts/src/std/base/Container.ts b/ts/src/std/base/Container.ts index a5593175..41f378e4 100644 --- a/ts/src/std/base/Container.ts +++ b/ts/src/std/base/Container.ts @@ -5,8 +5,8 @@ namespace std.base /** *

An abstract container.

* - *

- * + *

+ * *

* *

Container properties

diff --git a/ts/src/std/base/ErrorInstance.ts b/ts/src/std/base/ErrorInstance.ts index 2f22f0db..5b722aa5 100644 --- a/ts/src/std/base/ErrorInstance.ts +++ b/ts/src/std/base/ErrorInstance.ts @@ -16,20 +16,20 @@ namespace std.base * so that they can be interpreted when needed as more abstract (and portable) * {@link ErrorCondition error conditions}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ export abstract class ErrorInstance { /** - * A reference to an {@link ErrorCategory} object. + * @hidden */ protected category_: ErrorCategory; /** - * A numerical value identifying an error instance. + * @hidden */ protected value_: number; diff --git a/ts/src/std/base/HashBuckets.ts b/ts/src/std/base/HashBuckets.ts index a2b0bd5d..1dff33a9 100644 --- a/ts/src/std/base/HashBuckets.ts +++ b/ts/src/std/base/HashBuckets.ts @@ -16,8 +16,14 @@ namespace std.base */ export class HashBuckets { + /** + * @hidden + */ private buckets_: Vector>; + /** + * @hidden + */ private item_size_: number; /* --------------------------------------------------------- diff --git a/ts/src/std/base/HashMapBase.ts b/ts/src/std/base/HashMapBase.ts index e9297772..aa4254a8 100644 --- a/ts/src/std/base/HashMapBase.ts +++ b/ts/src/std/base/HashMapBase.ts @@ -22,8 +22,8 @@ namespace std.base *

Elements with equivalent keys are grouped together in the same bucket and in such a way that * an iterator can iterate through all of them. Iterators in the container are doubly linked iterators.

* - *

- * + *

+ * *

* *

Container properties

@@ -345,8 +345,8 @@ namespace std.base /** *

Hash buckets storing {@link MapIterator MapIterators}.

* - *

- * + *

+ * *

* * @author Jeongho Nam diff --git a/ts/src/std/base/HashSetBase.ts b/ts/src/std/base/HashSetBase.ts index 23ce6029..0e2393d5 100644 --- a/ts/src/std/base/HashSetBase.ts +++ b/ts/src/std/base/HashSetBase.ts @@ -22,8 +22,8 @@ namespace std.base * elements by their key, although they are generally less efficient for range iteration through a * subset of their elements.

* - *

- * + *

+ * *

* *

Container properties

@@ -273,8 +273,8 @@ namespace std.base /** *

Hash buckets storing {@link SetIterator SetIterators}.

* - *

- * + *

+ * *

* * @author Jeongho Nam diff --git a/ts/src/std/base/IArrayContainer.ts b/ts/src/std/base/IArrayContainer.ts index 01727a0e..dfaca451 100644 --- a/ts/src/std/base/IArrayContainer.ts +++ b/ts/src/std/base/IArrayContainer.ts @@ -31,8 +31,8 @@ namespace std.base * beginning or the end, {@link IArray} objects perform worse and have less consistent iterators and references * than {@link List Lists}

. * - *

- * + *

+ * *

* *

Container properties

diff --git a/ts/src/std/base/IArrayIterator.ts b/ts/src/std/base/IArrayIterator.ts index 474bd231..56749a76 100644 --- a/ts/src/std/base/IArrayIterator.ts +++ b/ts/src/std/base/IArrayIterator.ts @@ -15,8 +15,8 @@ namespace std.base *

There is not a single type of {@link IArrayIterator random-access iterator}: Each container may define its * own specific iterator type able to iterate through it and access its elements.

* - *

- * + *

+ * *

* * @reference http://www.cplusplus.com/reference/iterator/RandomAccessIterator diff --git a/ts/src/std/base/IContainer.ts b/ts/src/std/base/IContainer.ts index 61f57c3a..d11dcb94 100644 --- a/ts/src/std/base/IContainer.ts +++ b/ts/src/std/base/IContainer.ts @@ -8,8 +8,8 @@ namespace std.base *

{@link IContainer} is an interface designed for sequence containers. Sequence containers of STL * (Standard Template Library) are based on the {@link IContainer}.

* - *

- * + *

+ * *

* *

Container properties

diff --git a/ts/src/std/base/IDequeContainer.ts b/ts/src/std/base/IDequeContainer.ts index 210f7287..9ba27634 100644 --- a/ts/src/std/base/IDequeContainer.ts +++ b/ts/src/std/base/IDequeContainer.ts @@ -5,8 +5,8 @@ namespace std.base /** *

An interface for deque

* - *

- * + *

+ * *

* * @author Jeongho Nam diff --git a/ts/src/std/base/ILinearContainer.ts b/ts/src/std/base/ILinearContainer.ts index 5ef1679d..501db8ef 100644 --- a/ts/src/std/base/ILinearContainer.ts +++ b/ts/src/std/base/ILinearContainer.ts @@ -5,8 +5,8 @@ namespace std.base /** *

An interface for linear containers.

* - *

- * + *

+ * *

* * @author Jeonngho Nam diff --git a/ts/src/std/base/MapContainer.ts b/ts/src/std/base/MapContainer.ts index eca16d62..4e0eb71d 100644 --- a/ts/src/std/base/MapContainer.ts +++ b/ts/src/std/base/MapContainer.ts @@ -23,8 +23,8 @@ namespace std.base * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -683,8 +683,8 @@ namespace std /** *

An iterator of {@link MapContainer map container}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -829,8 +829,8 @@ namespace std /** *

A reverse-iterator of {@link MapContainer map container}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ diff --git a/ts/src/std/base/MultiMap.ts b/ts/src/std/base/MultiMap.ts index 78b1d057..34ab9a99 100644 --- a/ts/src/std/base/MultiMap.ts +++ b/ts/src/std/base/MultiMap.ts @@ -22,8 +22,8 @@ namespace std.base * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
diff --git a/ts/src/std/base/MultiSet.ts b/ts/src/std/base/MultiSet.ts index 8e3fae7a..bef9a2e2 100644 --- a/ts/src/std/base/MultiSet.ts +++ b/ts/src/std/base/MultiSet.ts @@ -18,8 +18,8 @@ namespace std.base * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
diff --git a/ts/src/std/base/SetContainer.ts b/ts/src/std/base/SetContainer.ts index a48a3fd7..53f930ab 100644 --- a/ts/src/std/base/SetContainer.ts +++ b/ts/src/std/base/SetContainer.ts @@ -19,8 +19,8 @@ namespace std.base * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -534,8 +534,8 @@ namespace std /** *

An iterator of a Set.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ @@ -652,8 +652,8 @@ namespace std /** *

A reverse-iterator of Set.

* - *

- *

+ *

+ *

* * @param Type of the elements. * diff --git a/ts/src/std/base/TreeMapBase.ts b/ts/src/std/base/TreeMapBase.ts index 90391205..a971a387 100644 --- a/ts/src/std/base/TreeMapBase.ts +++ b/ts/src/std/base/TreeMapBase.ts @@ -26,8 +26,8 @@ namespace std.base * *

{@link ITreeMap TreeMultiMaps} are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -168,16 +168,22 @@ namespace std.base /** *

A red-black tree storing {@link MapIterator MapIterators}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ export class PairTree extends XTree> { + /** + * @hidden + */ private map_: TreeMap | TreeMultiMap; + /** + * @hidden + */ private compare_: (x: Key, y: Key) => boolean; /* --------------------------------------------------------- diff --git a/ts/src/std/base/TreeSetBase.ts b/ts/src/std/base/TreeSetBase.ts index bda2b46e..0680e593 100644 --- a/ts/src/std/base/TreeSetBase.ts +++ b/ts/src/std/base/TreeSetBase.ts @@ -23,8 +23,8 @@ namespace std.base * *

{@link ITreeSet TreeMultiSets} are typically implemented as binary search trees.

* - *

- *

+ *

+ *

* *

Container properties

*
@@ -172,16 +172,22 @@ namespace std.base /** *

A red-black Tree storing {@link SetIterator SetIterators}.

* - *

- *

+ *

+ *

* * @author Jeongho Nam */ export class AtomicTree extends XTree> { + /** + * @hidden + */ private set_: TreeSet | TreeMultiSet; + /** + * @hidden + */ private compare_: (x: T, y: T) => boolean; /* --------------------------------------------------------- diff --git a/ts/src/std/base/UniqueMap.ts b/ts/src/std/base/UniqueMap.ts index c5481ebb..a7e129b4 100644 --- a/ts/src/std/base/UniqueMap.ts +++ b/ts/src/std/base/UniqueMap.ts @@ -22,8 +22,8 @@ namespace std.base * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
diff --git a/ts/src/std/base/UniqueSet.ts b/ts/src/std/base/UniqueSet.ts index 1c5af6f0..073856e4 100644 --- a/ts/src/std/base/UniqueSet.ts +++ b/ts/src/std/base/UniqueSet.ts @@ -18,8 +18,8 @@ namespace std.base * {@link List} and registering {@link ListIterator iterators} of the {@link data_ list container} to an index * table like {@link RBTree tree} or {@link HashBuckets hash-table}.

* - *

- *

+ *

+ *

* *

Container properties

*
diff --git a/ts/src/std/base/XTree.ts b/ts/src/std/base/XTree.ts index 81483034..832da952 100644 --- a/ts/src/std/base/XTree.ts +++ b/ts/src/std/base/XTree.ts @@ -52,7 +52,7 @@ namespace std.base * * * - *

* *

These constraints enforce a critical property of red-black trees: the path from the root to the farthest @@ -349,7 +349,7 @@ namespace std.base * the only loop, and any rotations occur after this loop, this proves that a constant number of rotations * occur.

* - *

* * @param N A node to be inserted or swapped. @@ -398,7 +398,7 @@ namespace std.base * node are black) is still violated, but now we can resolve this by * continuing to case 5.

* - *

* * @param N A node to be inserted or swapped. @@ -444,7 +444,7 @@ namespace std.base * through {@link XTreeNode.parent P}. In each case, this is the only * black node of the three.

* - *

* * @param N A node to be inserted or swapped. @@ -642,7 +642,7 @@ namespace std.base /** *

{@link XTreeNode.sibling S} is red.

* - *

* *

In this case we reverse the colors of {@link XTreeNode.parent P} and @@ -679,7 +679,7 @@ namespace std.base *

{@link XTreeNode.parent P}, {@link XTreeNode.sibling S}, and {@link XTreeNode.sibling * S}'s children are black.

* - *

* *

In this case, we simply repaint {@link XTreeNode.sibling S} red. The @@ -717,7 +717,7 @@ namespace std.base *

{@link XTreeNode.sibling S} and {@link XTreeNode.sibling S}'s children are * black, but {@link XTreeNode.parent P} is red.

* - *

* *

In this case, we simply exchange the colors of {@link XTreeNode.sibling S} and @@ -748,7 +748,7 @@ namespace std.base * left child is red, {@link XTreeNode.sibling S}'s right child is * black, and N is the left child of its parent.

* - *

* *

In this case we rotate right at {@link XTreeNode.sibling S}, so that @@ -812,7 +812,7 @@ namespace std.base *

Thus, the paths passing through N pass through one additional * black node.

* - *

* *

Meanwhile, if a path does not go through N, then there are two possibilities:

diff --git a/ts/src/std/miscellaneous/exports.ts b/ts/src/std/miscellaneous/exports.ts index e0fa68c7..abae8a50 100644 --- a/ts/src/std/miscellaneous/exports.ts +++ b/ts/src/std/miscellaneous/exports.ts @@ -6,8 +6,13 @@ /// /// +/// +/// + /// /// +/// +/// /// /// @@ -16,8 +21,6 @@ /// /// -/// - try { module.exports = std; diff --git a/ts/src/typings/typescript-stl/typescript-stl.d.ts b/ts/src/typings/typescript-stl/typescript-stl.d.ts index ff9e3983..c5aae45b 100644 --- a/ts/src/typings/typescript-stl/typescript-stl.d.ts +++ b/ts/src/typings/typescript-stl/typescript-stl.d.ts @@ -1,4 +1,4 @@ -// Type definitions for TypeScript-STL v1.0.0-rc.3 +// Type definitions for TypeScript-STL v1.0.0 // Project: https://github.com/samchon/typescript-stl // Definitions by: Jeongho Nam // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped diff --git a/ts/tsconfig.json b/ts/tsconfig.json index 8f174a38..342642ca 100644 --- a/ts/tsconfig.json +++ b/ts/tsconfig.json @@ -3,5 +3,8 @@ "target": "es5", "declaration": true, "outFile": "../lib/typescript-stl.js" - } + }, + "exclude": [ + "src/std/example" + ] } \ No newline at end of file