L'élément à l'index dans un std::set?

J'ai tombé sur ce problème: je n'arrive pas à sélectionner l'élément à l'index de la position normale std::set. Est-ce un bug STD?

Ci-dessous un exemple simple:

#include <iostream>
#include <set>

int main()
{
    std::set<int> my_set;
    my_set.insert(0x4A);
    my_set.insert(0x4F);
    my_set.insert(0x4B);
    my_set.insert(0x45);

    for (std::set<int>::iterator it=my_set.begin(); it!=my_set.end(); ++it)
        std::cout << ' ' << char(*it);  //ups the ordering

    //int x = my_set[0]; //this causes a crash!
}

Tout ce que je peux faire pour résoudre le problème?

  • my_set[0] ne devrait pas compiler.
  • Vous poser la mauvaise question, parce que vous utilisez le mauvais conteneur. Chaque conteneur standard a été conçu avec un certain nombre d'usages dans l'esprit, et à son tour, ne pas permettre à d'autres (directement). Si, tout d'abord, vous devez identifier quelles sont les opérations que vous avez besoin et ensuite de choisir le bon conteneur
  • Double Possible de Obtenir de l'élément de l'arbitraire de l'indice dans le jeu
  • C'était une blague question initialement, mais les réponses s'est avéré être très utile. Si on le fait sérieusement, c'est effectivement un doublon.
InformationsquelleAutor hauron | 2013-12-09