|
DGtal 1.4.0
|
Aim: Represents a mixed list/array structure which is useful in some context. It is essentially a list of blocks. More...
#include <DGtal/base/IndexedListWithBlocks.h>
Data Structures | |
| struct | AnyBlock |
| union | BlockPointer |
| Forward declaration. More... | |
| class | ConstIterator |
| struct | FirstBlock |
| class | Iterator |
| union | ValueOrBlockPointer |
| Used in blocks to finish it or to point to the next block. More... | |
Public Types | |
| typedef TValue | Value |
| typedef std::ptrdiff_t | DifferenceType |
| typedef std::size_t | SizeType |
| typedef Value & | Reference |
| typedef Value * | Pointer |
| typedef const Value & | ConstReference |
| typedef const Value * | ConstPointer |
| typedef Value | value_type |
| typedef DifferenceType | difference_type |
| typedef Reference | reference |
| typedef Pointer | pointer |
| typedef ConstReference | const_reference |
| typedef ConstPointer | const_pointer |
| typedef SizeType | size_type |
| typedef Iterator | iterator |
| typedef ConstIterator | const_iterator |
Public Member Functions | |
| IndexedListWithBlocks () | |
| IndexedListWithBlocks (const IndexedListWithBlocks &other) | |
| IndexedListWithBlocks & | operator= (const IndexedListWithBlocks &other) |
| ~IndexedListWithBlocks () | |
| SizeType | size () const |
| bool | empty () const |
| SizeType | max_size () const |
| SizeType | capacity () const |
| void | clear () |
| Value & | operator[] (unsigned int idx) |
| const Value & | operator[] (unsigned int idx) const |
| void | insert (unsigned int idx, const Value &value) |
| void | erase (unsigned int idx) |
| Iterator | begin () |
| Iterator | end () |
| ConstIterator | begin () const |
| ConstIterator | end () const |
| void | selfDisplay (std::ostream &out) const |
| bool | isValid () const |
Private Member Functions | |
| BOOST_STATIC_ASSERT (N >=1) | |
| BOOST_STATIC_ASSERT (M >=2) | |
Private Attributes | |
| FirstBlock | myFirstBlock |
Aim: Represents a mixed list/array structure which is useful in some context. It is essentially a list of blocks.
Description of template class 'IndexedListWithBlocks'
if less than 3 values and N = 2 +------+------+------+------+------+ | size | V[0] | V[1] | ... | 0 | +------+------+------+------+------+ if only 3 values and N = 2 +------+------+------+------+------+ | size | V[0] | V[1] | V[2] | V[3] | +------+------+------+------+------+ if more than 3 values and N = 2, M = 4 +------+------+------+------+------+ +------+------+------+------+------+ | size | V[0] | V[1] | V[2] | ptr --------> | V[3] | V[4] | V[5] | V[6] | ptr --------> ... +------+------+------+------+------+ +------+------+------+------+------+
Such a structure is useful when:
| TValue | the type for the values stored in the list. |
| N | the number of value stored in the first block. |
| M | the number of value stored in the further blocks. |
NB: In the following, we use the notations
Definition at line 93 of file IndexedListWithBlocks.h.
| typedef ConstIterator DGtal::IndexedListWithBlocks< TValue, N, M >::const_iterator |
Definition at line 119 of file IndexedListWithBlocks.h.
| typedef ConstPointer DGtal::IndexedListWithBlocks< TValue, N, M >::const_pointer |
Definition at line 116 of file IndexedListWithBlocks.h.
| typedef ConstReference DGtal::IndexedListWithBlocks< TValue, N, M >::const_reference |
Definition at line 115 of file IndexedListWithBlocks.h.
| typedef const Value* DGtal::IndexedListWithBlocks< TValue, N, M >::ConstPointer |
Definition at line 105 of file IndexedListWithBlocks.h.
| typedef const Value& DGtal::IndexedListWithBlocks< TValue, N, M >::ConstReference |
Definition at line 104 of file IndexedListWithBlocks.h.
| typedef DifferenceType DGtal::IndexedListWithBlocks< TValue, N, M >::difference_type |
Definition at line 112 of file IndexedListWithBlocks.h.
| typedef std::ptrdiff_t DGtal::IndexedListWithBlocks< TValue, N, M >::DifferenceType |
Definition at line 100 of file IndexedListWithBlocks.h.
| typedef Iterator DGtal::IndexedListWithBlocks< TValue, N, M >::iterator |
Definition at line 118 of file IndexedListWithBlocks.h.
| typedef Value* DGtal::IndexedListWithBlocks< TValue, N, M >::Pointer |
Definition at line 103 of file IndexedListWithBlocks.h.
| typedef Pointer DGtal::IndexedListWithBlocks< TValue, N, M >::pointer |
Definition at line 114 of file IndexedListWithBlocks.h.
| typedef Value& DGtal::IndexedListWithBlocks< TValue, N, M >::Reference |
Definition at line 102 of file IndexedListWithBlocks.h.
| typedef Reference DGtal::IndexedListWithBlocks< TValue, N, M >::reference |
Definition at line 113 of file IndexedListWithBlocks.h.
| typedef SizeType DGtal::IndexedListWithBlocks< TValue, N, M >::size_type |
Definition at line 117 of file IndexedListWithBlocks.h.
| typedef std::size_t DGtal::IndexedListWithBlocks< TValue, N, M >::SizeType |
Definition at line 101 of file IndexedListWithBlocks.h.
| typedef TValue DGtal::IndexedListWithBlocks< TValue, N, M >::Value |
Definition at line 99 of file IndexedListWithBlocks.h.
| typedef Value DGtal::IndexedListWithBlocks< TValue, N, M >::value_type |
Definition at line 111 of file IndexedListWithBlocks.h.
| DGtal::IndexedListWithBlocks< TValue, N, M >::IndexedListWithBlocks | ( | ) |
Constructor.
| DGtal::IndexedListWithBlocks< TValue, N, M >::IndexedListWithBlocks | ( | const IndexedListWithBlocks< TValue, N, M > & | other | ) |
Copy constructor.
| other | the object to clone. |
| DGtal::IndexedListWithBlocks< TValue, N, M >::~IndexedListWithBlocks | ( | ) |
Destructor.
| Iterator DGtal::IndexedListWithBlocks< TValue, N, M >::begin | ( | ) |
| ConstIterator DGtal::IndexedListWithBlocks< TValue, N, M >::begin | ( | ) | const |
|
private |
|
private |
| SizeType DGtal::IndexedListWithBlocks< TValue, N, M >::capacity | ( | ) | const |
The number of values currently allocated in the structure.
| void DGtal::IndexedListWithBlocks< TValue, N, M >::clear | ( | ) |
Removes all the values stored in the structure. O(b) complexity.
| bool DGtal::IndexedListWithBlocks< TValue, N, M >::empty | ( | ) | const |
| Iterator DGtal::IndexedListWithBlocks< TValue, N, M >::end | ( | ) |
| ConstIterator DGtal::IndexedListWithBlocks< TValue, N, M >::end | ( | ) | const |
| void DGtal::IndexedListWithBlocks< TValue, N, M >::erase | ( | unsigned int | idx | ) |
Removal of a value at a given position. Following values are shifted.
| idx | the index of the value in the container. |
| void DGtal::IndexedListWithBlocks< TValue, N, M >::insert | ( | unsigned int | idx, |
| const Value & | value ) |
Insertion of a new value at given position. The former value at this position and the next ones are shifted.
| idx | the index of the value in the container. |
| value | the value to insert. NB: O( n ), E = O( n - idx ) |
| bool DGtal::IndexedListWithBlocks< TValue, N, M >::isValid | ( | ) | const |
Checks the validity/consistency of the object.
| SizeType DGtal::IndexedListWithBlocks< TValue, N, M >::max_size | ( | ) | const |
The maximum number of values storable in the structure.
| IndexedListWithBlocks & DGtal::IndexedListWithBlocks< TValue, N, M >::operator= | ( | const IndexedListWithBlocks< TValue, N, M > & | other | ) |
Assignment.
| other | the object to copy. |
| Value & DGtal::IndexedListWithBlocks< TValue, N, M >::operator[] | ( | unsigned int | idx | ) |
Random unprotected read-write access to value at position idx
| idx | the index of the value in the container. |
| const Value & DGtal::IndexedListWithBlocks< TValue, N, M >::operator[] | ( | unsigned int | idx | ) | const |
Random unprotected read access to value at position idx
| idx | the index of the value in the container. |
| void DGtal::IndexedListWithBlocks< TValue, N, M >::selfDisplay | ( | std::ostream & | out | ) | const |
Writes/Displays the object on an output stream.
| out | the output stream where the object is written. |
| SizeType DGtal::IndexedListWithBlocks< TValue, N, M >::size | ( | ) | const |
The number of values stored in the structure. O(1) complexity.
|
private |
Stores the first block of values.
Definition at line 700 of file IndexedListWithBlocks.h.