Je suis toujours pas convaincu que la boucle soit vraiment efficace
Je verrais bien mieux un algorithme identique à ce que j'ai déjà proposé plus haut
Assez bizarement, cela fonctionne très bien:
on obtient "simplement" une map dont la clé est ce qui se rapproche fort d'une "clé primaire composée" dans une base de donnée...
Ainsi, le code
donne la sortie
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 #include <iostream> #include <map> using namespace std; int main() { map<pair<int, int>, int> lamap; for(int i=0;i<10;i++) lamap.insert(make_pair(make_pair(1,i),i*10)); cout<<lamap.size()<<endl; for(map<pair<int, int>, int>::iterator it=lamap.begin(); it!=lamap.end();it++) cout<<(*it).first.first<<"\t" <<(*it).first.second<<"\t" <<(*it).second <<endl; return 0; }
L'inconvéniant résidant, comme pour toute clé primaire composée dans une base de donnés, dans le fait que tu devra fournir exactement la pair en cas de recherche
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 10 //le nombre d'élélements :D 1 0 0 1 1 10 1 2 20 1 3 30 1 4 40 1 5 50 1 6 60 1 7 70 1 8 80 1 9 90 1 10 100
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 lamap.find(1);//refusé lamap.find(make_pair(1,5);//accepté lamap.find(make_pair(2,6);//non trouvé lamap.find(make_pair(1,12);//non trouvé
Partager