Ce n'est pas vraiment une question de taille, mais d'utilisation. Un vecteur trié fonctionne bien lorsque le modèle d'utilisation est que vous lisez les données, puis vous effectuez des recherches dans les données.
Une carte fonctionne bien lorsque le modèle d'utilisation implique un mélange plus ou moins arbitraire de modification des données (ajout ou suppression d'éléments) et de requêtes sur les données. La raison à cela est assez simple: une carte a un surcoût plus élevé sur une recherche individuelle (grâce à l'utilisation de nœuds liés au lieu d'un bloc de stockage monolithique). Une insertion ou suppression qui maintient l'ordre, cependant, a une complexité de seulement O (lg N). Une insertion ou une suppression qui maintient l'ordre dans un vecteur a une complexité de O (N) à la place.
Il existe, bien sûr, diverses structures hybrides qui peuvent également être utiles. Par exemple, même lorsque les données sont mises à jour de manière dynamique, vous commencez souvent avec un grand nombre de données et vous effectuez un nombre relativement réduit de modifications à la fois. Dans ce cas, vous pouvez charger vos données en mémoire dans un vecteur trié et conserver le (petit nombre) d'objets ajoutés dans un vecteur séparé. Puisque ce second vecteur est normalement assez petit, vous ne vous souciez pas de le trier. Quand/si cela devient trop grand, vous le trier et le fusionner avec l'ensemble de données principal.
Édition2: (en réponse à la modification en question). Si vous parlez de 5 articles ou moins, vous êtes probablement mieux ignorer tous les ci-dessus. Laissez simplement les données non triées et effectuez une recherche linéaire. Pour une collection aussi petite, il n'y a pratiquement aucune différence entre une recherche linéaire et une recherche binaire. Pour une recherche linéaire, vous prévoyez de numériser la moitié des éléments en moyenne, ce qui donne ~ 2,5 comparaisons. Pour une recherche binaire, vous parlez du journal N, qui (si mes maths travaillent cette heure du matin) correspond à ~ 2.3 - trop petite différence à prendre en compte ou à remarquer (en fait, une recherche binaire a suffisamment de temps qu'il pourrait facilement finir plus lentement).
Cette question est trop vague est. Sur quelle plateforme? Pour quelle charge de travail? Quelle sera la taille des conteneurs? Que sont k et v? Comment allez-vous modifier et accéder aux collections? Allez-vous souvent accéder à des valeurs à partir de clés arbitraires (aléatoires)? –
Je ne suis pas sûr de comprendre la question? Que signifie «dépasser»? Pour avoir plus de mémoire? Recherche plus rapide? Pouvez-vous reformuler la question? Merci. – utnapistim
@utnapistim: J'ai modifié la question. Est-ce que j'ai plus de sens? –