|
|
@@ -6,21 +6,24 @@
|
|
|
* [Containers](#containers)
|
|
|
* [Dense map](#dense-map)
|
|
|
* [Dense set](#dense-set)
|
|
|
+* [Adaptors](#adaptors)
|
|
|
+ * [Table](#table)
|
|
|
|
|
|
# Introduction
|
|
|
|
|
|
-The standard C++ library offers a wide range of containers and it's really
|
|
|
-difficult to do better (although it's very easy to do worse, as many examples
|
|
|
-available online demonstrate).<br/>
|
|
|
+The standard C++ library offers a wide range of containers and adaptors already.
|
|
|
+It's really difficult to do better (although it's very easy to do worse, as many
|
|
|
+examples available online demonstrate).<br/>
|
|
|
`EnTT` doesn't try in any way to replace what is offered by the standard. Quite
|
|
|
the opposite, given the widespread use that is made of standard containers.<br/>
|
|
|
However, the library also tries to fill a gap in features and functionalities by
|
|
|
-making available some containers initially developed for internal use.
|
|
|
+making available some containers and adaptors initially developed for internal
|
|
|
+use.
|
|
|
|
|
|
This section of the library is likely to grow larger over time. However, for the
|
|
|
moment it's quite small and mainly aimed at satisfying some internal needs.<br/>
|
|
|
-For all containers made available, full test coverage and stability over time is
|
|
|
-guaranteed as usual.
|
|
|
+For all containers and adaptors made available, full test coverage and stability
|
|
|
+over time is guaranteed as usual.
|
|
|
|
|
|
# Containers
|
|
|
|
|
|
@@ -59,3 +62,23 @@ The interface is in all respects similar to its counterpart in the standard
|
|
|
library, that is, the `std::unordered_set` class.<br/>
|
|
|
However, this type of set also supports reverse iteration and therefore offers
|
|
|
all the functions necessary for the purpose (such as `rbegin` and `rend`).
|
|
|
+
|
|
|
+# Adaptors
|
|
|
+
|
|
|
+## Table
|
|
|
+
|
|
|
+The `basic_table` class is a container adaptor which manages multiple sequential
|
|
|
+containers together, treating them as different columns of the same table.<br/>
|
|
|
+The `table` alias allows users to provide only the types to handle, using
|
|
|
+`std::vector` as the default sequential container.
|
|
|
+
|
|
|
+Only a small set of functions is provided, although very close to what the API
|
|
|
+of the `std::vector` class offers.<br/>
|
|
|
+The internal implementation is purposely supported by a tuple of containers
|
|
|
+rather than a container of tuples. The purpose is to allow efficient access to
|
|
|
+single columns and not just access to the entire data set of the table.
|
|
|
+
|
|
|
+When a row is accessed, all data are returned in the form of a tuple containing
|
|
|
+(possibly const) references to the elements of the row itself.<br/>
|
|
|
+Similarly, when a table is iterated, tuples of references to table elements are
|
|
|
+returned for each row.
|