de l'index ou de la position dans std::set

J'ai un std::set de std::string. J'ai besoin de la "index" ou "position" de chaque chaîne dans le jeu, est-ce un véritable concept dans le contexte?

Je suppose que find() retourne un itérateur à la chaîne, donc ma question est peut-être mieux exprimé ainsi : "Comment puis-je convertir un itérateur pour un certain nombre?".

  • stackoverflow.com/questions/1796503/index-or-position-in-stdset/... @seh si nous voyons un point de vue sémantique, ce que vous avez dit est correct, Mais les décors sont commandés. Ils sont généralement mis en œuvre en utilisant une certaine forme d'Équilibre des arbres comme le rouge noir de l'arbre, et l'utilisation stricte de la faiblesse de la commande à l'ordre les éléments de l'ensemble. Je ne sais pas si la norme mandats cet ordre ou pas. Mais c'est la façon dont il est
  • Vous pouvez envisager d'utiliser un vecteur trié plutôt que d'un ensemble. Plutôt que d'utiliser find(), vous obtenez la performance de la recherche binaire avec LB = std::lower_bound(v.begin(),v.end(),value) => un itérateur vers le premier élément >= value, et index = LB - v.begin() est l'indice de cet élément, ce qui peut être égale à value ou plus, si value n'est pas dans le vecteur trié.
InformationsquelleAutor | 2009-11-25