Skip to content

Commit

Permalink
doc: table
Browse files Browse the repository at this point in the history
  • Loading branch information
skypjack committed May 14, 2024
1 parent 950509a commit feeb10a
Showing 1 changed file with 29 additions and 6 deletions.
35 changes: 29 additions & 6 deletions docs/md/container.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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.

0 comments on commit feeb10a

Please sign in to comment.