Iterator bidirectional qui refuse les déréférencement ?
Bonjour
en faisant des essais sur le conteneur set, je me suis retrouvé avec un énrome problème en testant la fonction upper_bound:
en effet, la norme n'indique rien au sujet des recherches dont aucun membre ne serait pas dans le set.
j'ai donc fait le programme de test suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #include <iostream>
#include <set>
void main()
{
std::set<int> b;
std::set<int>::iterator c;
for (int i=0; i<100;++i){
std::cout<<i<<" ";
b.insert(i);
}
try
{
std::cout<<std::endl<<std::endl;
std::cout<<*b.upper_bound(50)<<std::endl;
c=b.upper_bound(100);
std::cout<<*c<<std::endl;//le programme plante ici.
}
catch (std::exception &e)
{
std::cout<<e.what();
}
} |
Or sur
Code:
std::cout<<*c<<std::endl;
le programme plante purement et simplement, c'est à dire qu'il refuse de déréférencer c alors que c'est censé être un itérateur bidirectional.
De plus, il ne sort aucune exception ni quoi que ce soit dans le genre ...
si vous avez une idée de la cause, je suis preneur.
Cordialement