Je cherche une structure de données qui devrait de préférence effectuer une valeur égale à O (1)? pour n'importe quel nombre d'éléments lors de l'ajout/suppression/récupération d'éléments.Structure de données pour le stockage d'éléments uniques
Voici quelques conseils supplémentaires,
- la récupération des éléments ne devraient pas entraîner lents
keys()
éléments
- doivent toujours être unique et défini l'ordre des éléments
- est non significatif
- ajout ou le retrait de l'élément devrait n'implique pas d'itération par rapport aux autres éléments
- Les espaces dans la liste d'éléments récupérés sont tolérables et peuvent être représentés par
undef
valeur
S'il vous plaît suggérer une meilleure solution que,
sub uniqArrayFactory {
my $members = [];
my $seen = {};
my $gaps = [];
return sub {
my (%arg) = @_;
return $members if $arg{members};
my $m;
if (defined ($m = $arg{del})) {
return if !$seen->{$m};
${ $seen->{$m} } = undef;
push @$gaps, delete($seen->{$m});
}
elsif (defined ($m = $arg{add})) {
return if $seen->{$m};
if (@$gaps) {
$seen->{$m} = pop @$gaps;
${ $seen->{$m} } = $m;
}
else {
push @$members, $m;
$seen->{$m} = \($members->[-1]);
}
}
return $m;
};
}
MISE À JOUR (utilisation)
my $fa = uniqArrayFactory();
$fa->(add => 10);
$fa->(del => 10);
my $members = $fa->(mebers => 1);
Pouvez-vous ajouter quelques exemples de la façon dont vous appelleriez que s'il vous plaît? – simbabque
@simbabque s'il vous plaît vérifier la mise à jour. –
... suis-je dense, ou décrivez-vous un hachage? – Sobrique