Re[3]: multimap::find == multimap::lower_bound ???
От: itman itman.livejournal.com
Дата: 16.09.08 15:16
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, sokel, Вы писали:


S>>Обычно код обоих функций идентичен за исключением проверки в find ключа на равенство перед возвратом. Иная реализация будет сделана в ущерб эффективности. Так что, наверное, не могут... Хотя явно это в стандарте действительно не указано.


К>Как раз наоборот.

К>Давай построим ДДП для 3 одинаковых элементов.
К>
К>    1       1               1
К>   / \       \             /  
К>  1   1       1           1    
К>               \         /
К>                1       1
К>

К>Три варианта: сбалансированное, вырожденное в правый список, вырожденное в левый список.

Деревья в STL сбалансированные, вырожденных быть не может.

К>Ищем ключ "1". Очевидно, что корневой узел сразу же подходит. И только в одном случае он является нижней границей. Причём видно, что если мы специально заточим дерево под условие, что нижняя граница является корнем поддерева с одинаковыми ключами — то мы введём дисбаланс.


К>То же относится и к двоичному поиску на сортированном массиве, кстати говоря.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.