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); } } } }
Partager