Here's result of execution alex@rhyme ~/tmp/c++ $ ./testmap create alex@rhyme ~/tmp/c++ $ ./testmap add 4AD847FF.108C4.38B3 alex@rhyme ~/tmp/c++ $ ./testmap add 4AD84681.1BFF1.3899 alex@rhyme ~/tmp/c++ $ ./testmap add 4AD833F4.2B91A.361E alex@rhyme ~/tmp/c++ $ ./testmap add 4AD84845.3ADBB.3895 alex@rhyme ~/tmp/c++ $ ./testmap add 4AD8484C.E7C49.3896 alex@rhyme ~/tmp/c++ $ ./testmap add 4AD847A8.40AA2.3897 alex@rhyme ~/tmp/c++ $ ./testmap add 4AD83274.CFB8C.35F6 alex@rhyme ~/tmp/c++ $ ./testmap list RouteMap content (7 element(s)): "4AD83274.CFB8C.35F6" "4AD833F4.2B91A.361E" "4AD847A8.40AA2.3897" "4AD84845.3ADBB.3895" "4AD8484C.E7C49.3896" "4AD84681.1BFF1.3899" "4AD847FF.108C4.38B3" end of RouteMap content alex@rhyme ~/tmp/c++ $ ./testmap find 4AD847A8.40AA2.3897 element 4AD847A8.40AA2.3897 is NOT found alex@rhyme ~/tmp/c++ $ ./testmap find 4AD8484C.E7C49.3896 element 4AD8484C.E7C49.3896 is NOT found alex@rhyme ~/tmp/c++ $ ./testmap find 4AD833F4.2B91A.361E element 4AD833F4.2B91A.361E is NOT found alex@rhyme ~/tmp/c++ $ ./testmap find 4AD83274.CFB8C.35F6 element 4AD83274.CFB8C.35F6 is NOT found alex@rhyme ~/tmp/c++ $ ./testmap find 4AD84681.1BFF1.3899 element 4AD84681.1BFF1.3899 is in the map alex@rhyme ~/tmp/c++ $ ./testmap find 4AD847FF.108C4.38B3 element 4AD847FF.108C4.38B3 is in the map As one may see iteration over the map returns the complete list of items (7 elements), while find() skips certain keys. If I add a debug print to RouteKey::operator<, I see that just few comparsion are performed