Quick links: Tutorial - Examples - Files - Symbols.
Classes: Hierarchy - Index - List - Members.
Namespaces: Index - base - cs - display.

Public Types | Protected Member Functions | List of all members
cogitant::Set< SetContent > Class Template Referenceabstract

Classe générique abstraite pour la représentation d'un ensemble. More...

#include "cogitant/set.h"

Inheritance diagram for cogitant::Set< SetContent >:
cogitant::Set_Simple< SetContent > cogitantcs::SetClient< SetContent >

Public Types

typedef SetIterator< SetContent, SetContent & > iterator
 Itérateur de parcours permettant la modification de l'ensemble. More...
 
typedef SetIterator< SetContent, SetContent const & > const_iterator
 Itérateur de parcours ne permettant pas la modification de l'ensemble. More...
 

Public Member Functions

Constructeurs - destructeur.
 Set ()
 Constructeur d'un ensemble vide. More...
 
 Set (Set< SetContent > const &c)
 Constructeur par recopie. More...
 
virtual ~Set ()
 Destructeur. More...
 
Modifications.
virtual iSet iAdd (SetContent const &c)=0
 Ajout d'un élément à l'ensemble. More...
 
virtual void iDelete (iSet i)=0
 Suppression d'un élément à l'ensemble. More...
 
virtual void iReplace (iSet i, SetContent const &v)
 Remplace la valeur d'un élément par une autre valeur. More...
 
virtual void findAndDelete (SetContent const &c)
 Suppression d'un élément à l'ensemble. More...
 
virtual void reserve (nSet size)=0
 Réservation d'espace dans l'ensemble. More...
 
virtual void clear ()=0
 Vider. More...
 
Accesseurs.
virtual nSet maxSize () const =0
 Taille maximale de l'ensemble. More...
 
virtual nSet size () const =0
 Taille actuelle de l'ensemble. More...
 
virtual bool empty () const
 L'ensemble est-il vide ?
 
Parcours par identificateurs.
iSet iBegin () const
 Retourne un identificateur de début pour le parcours de l'ensemble. More...
 
iSet iEnd () const
 Retourne un identificateur de fin pour le parcours de l'ensemble. More...
 
void iNext (iSet &i) const
 Incrémente l'identificateur passé pour le parcours de l'ensemble. More...
 
virtual SetContent const & iGetContent (iSet i) const =0
 Accès à un élément de l'ensemble. More...
 
virtual SetContent & iGetContent (iSet i)=0
 Accès à un élément de l'ensemble. More...
 
virtual iSet iFind (SetContent const &c) const
 Recherche d'un élément dans l'ensemble. More...
 
Parcours par itérateurs.
const_iterator begin () const
 Retourne un itérateur de début pour le parcours de l'ensemble. More...
 
iterator begin ()
 Retourne un itérateur de début pour le parcours de l'ensemble. More...
 
const_iterator end () const
 Retourne un itérateur de fin pour le parcours de l'ensemble. More...
 
Opérateurs.
SetContent & operator[] (iSet i)
 Opérateur d'accès. More...
 
SetContent const & operator[] (iSet i) const
 Opérateur d'accès. More...
 

Protected Member Functions

virtual bool isValidIterator (iSet i1) const
 Vérification de la validité d'un itérateur. More...
 

Detailed Description

template<class SetContent>
class cogitant::Set< SetContent >

Classe générique abstraite pour la représentation d'un ensemble.

Cette classe fournit une interface pour l'implantation d'un conteneur de données permettant l'ajout, la suppression, la recherche, le parcours, et l'accès aux éléments contenus par un identificateur. Les éléments d'un ensemble sont identifiés de façon unique par un identificateur de type iSet, ce type étant un type entier. L'accès à l'élément repéré par un iSet se fait en O(1).

See also
Containers classes.

Il est possible d'accéder aux éléments d'un ensemble de plusieurs façons:

Member Typedef Documentation

◆ const_iterator

template<class SetContent>
typedef SetIterator<SetContent, SetContent const &> cogitant::Set< SetContent >::const_iterator

Itérateur de parcours ne permettant pas la modification de l'ensemble.

◆ iterator

template<class SetContent>
typedef SetIterator<SetContent, SetContent&> cogitant::Set< SetContent >::iterator

Itérateur de parcours permettant la modification de l'ensemble.

Constructor & Destructor Documentation

◆ Set() [1/2]

template<class SetContent>
cogitant::Set< SetContent >::Set ( )

Constructeur d'un ensemble vide.

◆ Set() [2/2]

template<class SetContent>
cogitant::Set< SetContent >::Set ( Set< SetContent > const &  c)

Constructeur par recopie.

◆ ~Set()

template<class SetContent>
virtual cogitant::Set< SetContent >::~Set ( )
virtual

Destructeur.

Member Function Documentation

◆ begin() [1/2]

template<class SetContent>
const_iterator cogitant::Set< SetContent >::begin ( ) const

Retourne un itérateur de début pour le parcours de l'ensemble.

Referenced by cogitant::Graph::begin().

◆ begin() [2/2]

template<class SetContent>
iterator cogitant::Set< SetContent >::begin ( )

Retourne un itérateur de début pour le parcours de l'ensemble.

◆ clear()

template<class SetContent>
virtual void cogitant::Set< SetContent >::clear ( )
pure virtual

◆ end()

template<class SetContent>
const_iterator cogitant::Set< SetContent >::end ( ) const

Retourne un itérateur de fin pour le parcours de l'ensemble.

Referenced by cogitant::Graph::end().

◆ findAndDelete()

template<class SetContent>
virtual void cogitant::Set< SetContent >::findAndDelete ( SetContent const &  c)
virtual

Suppression d'un élément à l'ensemble.

Recherche l'occurence égale à c et la supprime. Tous les identificateurs et itérateurs repérant un élément situé après celui qui a été supprimé deviennent incohérents.

◆ iAdd()

template<class SetContent>
virtual iSet cogitant::Set< SetContent >::iAdd ( SetContent const &  c)
pure virtual

◆ iBegin()

template<class SetContent>
iSet cogitant::Set< SetContent >::iBegin ( ) const
inline

Retourne un identificateur de début pour le parcours de l'ensemble.

◆ iDelete()

template<class SetContent>
virtual void cogitant::Set< SetContent >::iDelete ( iSet< SetContent >  i)
pure virtual

Suppression d'un élément à l'ensemble.

Après suppression l'identificateur repère l'élément qui suit celui qui a été supprimé. Tous les autres identificateurs et itérateurs repérant un élément situé après celui qui a été supprimé deviennent incohérents.

Exceptions
ExceptionISetOutOfBounds

Implemented in cogitant::Set_Simple< SetContent >, and cogitant::Set_Simple< cogitant::EnvironmentObject *>.

◆ iEnd()

template<class SetContent>
iSet cogitant::Set< SetContent >::iEnd ( ) const
inline

Retourne un identificateur de fin pour le parcours de l'ensemble.

◆ iFind()

template<class SetContent>
virtual iSet cogitant::Set< SetContent >::iFind ( SetContent const &  c) const
virtual

Recherche d'un élément dans l'ensemble.

Parameters
célément recherché (l'opérateur == doit être défini sur SetContent).
Returns
un identificateur repérant l'occurence de c dans l'ensemble ou end() si c est introuvable.

Reimplemented in cogitant::Set_Simple< SetContent >, and cogitant::Set_Simple< cogitant::EnvironmentObject *>.

◆ iGetContent() [1/2]

template<class SetContent>
virtual SetContent const& cogitant::Set< SetContent >::iGetContent ( iSet< SetContent >  i) const
pure virtual

Accès à un élément de l'ensemble.

Parameters
iun identificateur sur l'ensemble.
Returns
l'élément de l'ensemble correspondant à l'identificateur i.
Exceptions
ExceptionISetOutOfBounds

Implemented in cogitant::Set_Simple< SetContent >, and cogitant::Set_Simple< cogitant::EnvironmentObject *>.

Referenced by cogitant::Graph::nodes(), and cogitant::Environment::objects().

◆ iGetContent() [2/2]

template<class SetContent>
virtual SetContent& cogitant::Set< SetContent >::iGetContent ( iSet< SetContent >  i)
pure virtual

Accès à un élément de l'ensemble.

Parameters
iun identificateur sur l'ensemble.
Returns
l'élément de l'ensemble correspondant à l'identificateur i.
Exceptions
ExceptionISetOutOfBounds

Implemented in cogitant::Set_Simple< SetContent >, and cogitant::Set_Simple< cogitant::EnvironmentObject *>.

◆ iNext()

template<class SetContent>
void cogitant::Set< SetContent >::iNext ( iSet< SetContent > &  i) const
inline

Incrémente l'identificateur passé pour le parcours de l'ensemble.

◆ iReplace()

template<class SetContent>
virtual void cogitant::Set< SetContent >::iReplace ( iSet< SetContent >  i,
SetContent const &  v 
)
virtual

Remplace la valeur d'un élément par une autre valeur.

Parameters
iidentificateur de l'élément dont la valeur doit être remplacée.
vnouvelle valeur.

Reimplemented in cogitant::Set_Simple< SetContent >, and cogitant::Set_Simple< cogitant::EnvironmentObject *>.

◆ isValidIterator()

template<class SetContent>
virtual bool cogitant::Set< SetContent >::isValidIterator ( iSet< SetContent >  i1) const
protectedvirtual

Vérification de la validité d'un itérateur.

◆ maxSize()

template<class SetContent>
virtual nSet cogitant::Set< SetContent >::maxSize ( ) const
pure virtual

Taille maximale de l'ensemble.

Returns
0 si la structure de données n'a pas de taille maximale.

Implemented in cogitant::Set_Simple< SetContent >, and cogitant::Set_Simple< cogitant::EnvironmentObject *>.

◆ operator[]() [1/2]

template<class SetContent>
SetContent& cogitant::Set< SetContent >::operator[] ( iSet< SetContent >  i)

Opérateur d'accès.

Permet l'accès direct à un élément à partir de son identificateur. Cet appel est strictement équivalent à iGetContent().

◆ operator[]() [2/2]

template<class SetContent>
SetContent const& cogitant::Set< SetContent >::operator[] ( iSet< SetContent >  i) const

Opérateur d'accès.

Permet l'accès direct à un élément à partir de son identificateur. Cet appel est strictement équivalent à iGetContent().

◆ reserve()

template<class SetContent>
virtual void cogitant::Set< SetContent >::reserve ( nSet< SetContent >  size)
pure virtual

Réservation d'espace dans l'ensemble.

Dans le cas où l'ensemble est représenté par un vector, il peut être très intéressant pour des raisons de performances de dimensionner le vector au nombre maximum d'éléments pouvant être contenus dans l'ensemble. L'appel à cette méthode n'est donc pas obligatoire (le Set doit toujours se redimensionner automatiquement) mais peut provoquer un gain de performances selon l'implémentation de la structure de données.

Implemented in cogitantcs::SetClientEnvironmentObject, cogitant::Set_Simple< SetContent >, and cogitant::Set_Simple< cogitant::EnvironmentObject *>.

◆ size()

template<class SetContent>
virtual nSet cogitant::Set< SetContent >::size ( ) const
pure virtual