Bonjour,

j'aurais besoin de trier un vector personnalisé je vous explique:

le vector est de type <Structure*> et Structure est une classe abstraite avec différentes classes filles qui sont :

-LongitudinalBulkhead
-InnerDeck
-WeatherDeck ...

voila ce que j'ai pour l'instant pour trier le tableau en fonction d'une variable qui s'appel position contenu dans chaques classes filles:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
    Structure* a;
    Structure* b;
 
    if(struc->retour_type() == "WeatherDeck" || struc->retour_type() == "InnerDeck")
    {
        for(std::vector<Structure*>::iterator p = collec_elem_attaches.begin(); p!=collec_elem_attaches.end();++p)
        //for(size_t i = 0 ; i< collec_elem_attaches.size() ; ++i)
        {
            for(std::vector<Structure*>::iterator q = collec_elem_attaches.begin(); q!=collec_elem_attaches.end()-1;++q)
            {
 
               if((*q)->retour_position() > (*++q)->retour_position())
               {
                   a=(*q);
                   b=(*++q);
                   collec_elem_attaches.erase(q++);
                   collec_elem_attaches.insert(q,b);
 
               }
            }
        }
    }
    else if(struc->retour_type()== "LongitudinalBulkhead")
    {
       for(std::vector<Structure*>::iterator p = collec_elem_attaches.begin(); p!=collec_elem_attaches.end();++p)
        {
           for(std::vector<Structure*>::iterator q = collec_elem_attaches.begin(); q!=collec_elem_attaches.end()-1;++q)
            {
               if((*q)->retour_position() > (*++q)->retour_position())
               {
                   a=(*q);
                   b=(*++q);
                   collec_elem_attaches.erase(q++);
                   collec_elem_attaches.insert(q,b);
 
 
               }
            }
        }
    }