Ik ben tegen een raar probleem aangelopen dat ik zo snel niet kan doorgronden. Gelukkig is het probleem makkelijk te reproduceren, zie onderstaande code:
Als je dit compileert en uitvoert, dan krijg je het volgende resultaat:
Ik verwachtte echter:
Wie kan mij vertellen waar mijn verwachting de mist in gaat
C++:
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
| #include <iostream> #include <map> typedef std::pair< int, int > Key; struct vergelijk { bool operator()( const Key &a, const Key &b ) { return ( ( a.first == b.first ) && ( a.second == b.second ) ); } }; int main( int argc, char **argv ) { Key keyA( 1, 2 ); Key keyB( 3, 4 ); std::map< Key, int, vergelijk > verzameling; verzameling[ keyA ] = 5; verzameling[ keyB ] = 20; std::cerr << "aantal " << verzameling.size() << std::endl; std::cerr << verzameling[ keyA ] << std::endl; std::cerr << verzameling[ keyB ] << std::endl; return 0; } |
Als je dit compileert en uitvoert, dan krijg je het volgende resultaat:
aantal 1 0 0
Ik verwachtte echter:
aantal 2 5 20
Wie kan mij vertellen waar mijn verwachting de mist in gaat
oprecht vertrouwen wordt nooit geschaad