Je me demandais la manière dont je devais procéder pour gérer les
modifications de clés dans un set. Visiblement la STL ne propose pas
d'itérateur mutable (quelle est la traduction française d'ailleurs ?)
sur un set. Comme je gère des pointeurs dans mon set, ce ne pas très
compliqué, il me suffit de le supprimer puis de le réinsérer à la bonne
place (j'ai bien sûr un foncteur de comparaison pour mes pointeurs).
Ne vaudrait-il pas mieux que je dérive une classe de set et que
j'implémente ce type d'itérateur ? Ce travail n'aurait-il pas déjà été
fait par quelqu'un.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fabien LE LEZ
On Thu, 30 Oct 2003 23:23:53 +0100, Frédéric Mayot wrote:
Je me demandais la manière dont je devais procéder pour gérer les modifications de clés dans un set. Visiblement la STL ne propose pas d'itérateur mutable sur un set.
Yep, un prérequis pour l'usage de set, map et multimap est que les clés ne soient pas modifiées.
Comme je gère des pointeurs dans mon set, ce ne pas très compliqué, il me suffit de le supprimer puis de le réinsérer à la bonne place (j'ai bien sûr un foncteur de comparaison pour mes pointeurs).
Si tu as régulièrement ce genre d'opérations à effectuer, il y a des chances pour que std::set<> ne soit pas le conteneur qui convient.
Ne vaudrait-il pas mieux que je dérive une classe de set
Non : on ne dérive pas d'un conteneur de la STL, ils ne sont pas prévus pour.
-- ;-)
On Thu, 30 Oct 2003 23:23:53 +0100, Frédéric Mayot <toto@toto.com>
wrote:
Je me demandais la manière dont je devais procéder pour gérer les
modifications de clés dans un set. Visiblement la STL ne propose pas
d'itérateur mutable
sur un set.
Yep, un prérequis pour l'usage de set, map et multimap est que les
clés ne soient pas modifiées.
Comme je gère des pointeurs dans mon set, ce ne pas très
compliqué, il me suffit de le supprimer puis de le réinsérer à la bonne
place (j'ai bien sûr un foncteur de comparaison pour mes pointeurs).
Si tu as régulièrement ce genre d'opérations à effectuer, il y a des
chances pour que std::set<> ne soit pas le conteneur qui convient.
Ne vaudrait-il pas mieux que je dérive une classe de set
Non : on ne dérive pas d'un conteneur de la STL, ils ne sont pas
prévus pour.
On Thu, 30 Oct 2003 23:23:53 +0100, Frédéric Mayot wrote:
Je me demandais la manière dont je devais procéder pour gérer les modifications de clés dans un set. Visiblement la STL ne propose pas d'itérateur mutable sur un set.
Yep, un prérequis pour l'usage de set, map et multimap est que les clés ne soient pas modifiées.
Comme je gère des pointeurs dans mon set, ce ne pas très compliqué, il me suffit de le supprimer puis de le réinsérer à la bonne place (j'ai bien sûr un foncteur de comparaison pour mes pointeurs).
Si tu as régulièrement ce genre d'opérations à effectuer, il y a des chances pour que std::set<> ne soit pas le conteneur qui convient.
Ne vaudrait-il pas mieux que je dérive une classe de set
Non : on ne dérive pas d'un conteneur de la STL, ils ne sont pas prévus pour.
-- ;-)
Mathieu Peyréga
Non : on ne dérive pas d'un conteneur de la STL, ils ne sont pas prévus pour.
c'est vrai ça ?
Non : on ne dérive pas d'un conteneur de la STL, ils ne sont pas
prévus pour.
Non : on ne dérive pas d'un conteneur de la STL, ils ne sont pas prévus pour.
c'est vrai ça ?
Fabien LE LEZ
On Sun, 02 Nov 2003 22:22:19 +0100, Mathieu Peyréga wrote:
Non : on ne dérive pas d'un conteneur de la STL, ils ne sont pas prévus pour.
c'est vrai ça ?
Ils n'ont pas de destructeur virtuel. Du coup, le code suivant compilera sans problème, mais le comportement à l'exécution risque d'être assez fantaisiste :
class A: public std::vector<int> { //... };
int main() { std::vector<int>* ptr= new A; delete ptr; }
-- ;-)
On Sun, 02 Nov 2003 22:22:19 +0100, Mathieu Peyréga
<peyrega@no-spam.at.all.netcourrier.com> wrote:
Non : on ne dérive pas d'un conteneur de la STL, ils ne sont pas
prévus pour.
c'est vrai ça ?
Ils n'ont pas de destructeur virtuel.
Du coup, le code suivant compilera sans problème, mais le comportement
à l'exécution risque d'être assez fantaisiste :
class A: public std::vector<int>
{
//...
};
int main()
{
std::vector<int>* ptr= new A;
delete ptr;
}
On Sun, 02 Nov 2003 22:22:19 +0100, Mathieu Peyréga wrote:
Non : on ne dérive pas d'un conteneur de la STL, ils ne sont pas prévus pour.
c'est vrai ça ?
Ils n'ont pas de destructeur virtuel. Du coup, le code suivant compilera sans problème, mais le comportement à l'exécution risque d'être assez fantaisiste :
class A: public std::vector<int> { //... };
int main() { std::vector<int>* ptr= new A; delete ptr; }