быстрый доступ к элементу std :: map - PullRequest
1 голос
/ 22 июля 2010

Знаете ли вы, есть ли разница в производительности, когда я обращаюсь к элементу std::map, используя find или operator []?

Один возвращает iterator, а другой const ref объекту.

Какой из них может быть быстрее из-за всех скрытых сцен STL?

Ответы [ 2 ]

5 голосов
/ 22 июля 2010

Когда вы используете [] для несуществующего ключа, будет вставлен элемент по умолчанию. Этот элемент по умолчанию зависит от определения вашей карты (например, для int это будет ноль).

Когда вы используете поиск, «автоматическая» вставка отсутствует, поэтому может быть гораздо быстрее, если вы часто ищете ключи, которых не существует.

0 голосов
/ 22 июля 2010

find() - это O (n).operator [] - это O (1).Поэтому последний (обычно) быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...