Bonjour,
Je souhaiterais avoir votre avis sur le meilleur choix du container et de l'algorithme du bout de code suivant.
Vu que les éléments des colonnes sont triés dans le container, utiliser un vecteur n'est certainement pas l'idéal. De plus, faire un find puis un lower bound peut certainement être réduit en une seule opération. Le coût le plus important est lors de la construction de la table.
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 typedef std::vector< size_t > col; typedef std::vector< col > table; void f( size_t i, size_t j ) { col& c1 = table[ i ]; col& c2 = table[ j ]; if( find( c1.begin(), c1.end(), j ) == c1.end() ) { // Sorted insertion. c1.insert( lower_bound( c1.begin(), c1.end(), j ), j ); c2.insert( lower_bound( c2.begin(), c2.end(), i ), i ); } }
Un tout grand merci pour vos conseils !
Partager