Bonne année et meilleurs voeux à tous.
Ma question : comment faites-vous pour déterminer rapidement si un
identifiant (type int par exemple) fait partie d'un ensemble donné ?
Pour ma part, je fais une map X static du type map<int,bool> et j'enregistre
dedans les id.
Ensuite je fais juste un X.find(id)!=X.end() pour savoir si un id fait
partie de l'ensemble défini.
Mais les bool sont parfaitement inutiles...
Y-a-t-il (sûrement) une meilleure solution ?
Merci à vous.
la performance est importante dans mon cas, c'est pourquoi je me disais qu'une recherche dans un conteneur ordonn (comme un set) serait plus rapi de Peut- tre que le mieux est que je teste tout a :-)
Il y a aussi le unordered_set (aka hash_set) qui te donnerait un test en temps constant.
Tout dépend en fait du nombre d'entier possible et leur répartition.
-- Michael
On 4 jan, 22:17, "MGN" <mgueg...@metrica.fr> wrote:
[snip]
la performance est importante dans mon cas, c'est pourquoi je me disais
qu'une recherche dans un conteneur ordonn (comme un set) serait plus rapi de
Peut- tre que le mieux est que je teste tout a :-)
Il y a aussi le unordered_set (aka hash_set) qui te donnerait un test
en temps constant.
Tout dépend en fait du nombre d'entier possible et leur répartition.
la performance est importante dans mon cas, c'est pourquoi je me disais qu'une recherche dans un conteneur ordonn (comme un set) serait plus rapi de Peut- tre que le mieux est que je teste tout a :-)
Il y a aussi le unordered_set (aka hash_set) qui te donnerait un test en temps constant.
Tout dépend en fait du nombre d'entier possible et leur répartition.
-- Michael
Mickaël Wolff
Michael Doubez a écrit :
Mais pour un cas comme ici, il peut être utile.
Bon, désolé les gars, j'ai jeté le bébé avec l'eau du bain :D
la performance est importante dans mon cas, c'est pourquoi je me disais qu'une recherche dans un conteneur ordonné (comme un set) serait plus rapide Peut-être que le mieux est que je teste tout ça :-) Merci de ta réponse
En fait, ce que je ne comprenais pas, c'était pourquoi tu voulais absolument avoir une clé pour accéder à l'entier. Mais si std::set convient mieux que std::vector, alors je ne vois pas le problème. Comme dis, c'était juste pour proposer quelque chose de plus basique que ce à quoi tu pensais (pour une fois que je pense simple, j'en profite).
la performance est importante dans mon cas, c'est pourquoi je me disais
qu'une recherche dans un conteneur ordonné (comme un set) serait plus
rapide
Peut-être que le mieux est que je teste tout ça :-)
Merci de ta réponse
En fait, ce que je ne comprenais pas, c'était pourquoi tu voulais
absolument avoir une clé pour accéder à l'entier. Mais si std::set
convient mieux que std::vector, alors je ne vois pas le problème. Comme
dis, c'était juste pour proposer quelque chose de plus basique que ce à
quoi tu pensais (pour une fois que je pense simple, j'en profite).
la performance est importante dans mon cas, c'est pourquoi je me disais qu'une recherche dans un conteneur ordonné (comme un set) serait plus rapide Peut-être que le mieux est que je teste tout ça :-) Merci de ta réponse
En fait, ce que je ne comprenais pas, c'était pourquoi tu voulais absolument avoir une clé pour accéder à l'entier. Mais si std::set convient mieux que std::vector, alors je ne vois pas le problème. Comme dis, c'était juste pour proposer quelque chose de plus basique que ce à quoi tu pensais (pour une fois que je pense simple, j'en profite).