Информация об изменениях

Сообщение Re[4]: const char* в качестве ключа для std::map от 04.08.2017 12:01

Изменено 04.08.2017 12:04 watchmaker

Re[4]: const char* в качестве ключа для std::map
Здравствуйте, Masterspline, Вы писали:

M>std::map::find() в качестве аргумента принимает Key& (а это std::string) и не факт, что оптимизатор сможет удалить создание временной строки.

В std::map есть несколько методов find. Как указанный вами с аргументом const Key&, так и шаблонный
template< class K > iterator find( const K& x );

который работает будет выбираться для const char*.

И при прозрачном компараторе он внутри себя не будет конструировать std::string, а напрямую будет сравнивать std::string с const char*
Re[4]: const char* в качестве ключа для std::map
Здравствуйте, Masterspline, Вы писали:

M>std::map::find() в качестве аргумента принимает Key& (а это std::string) и не факт, что оптимизатор сможет удалить создание временной строки.

В std::map есть несколько методов find. Как указанный вами с аргументом const Key&, так и шаблонный
template< class K > iterator find( const K& x );

который будет выбираться для const char*.

И при прозрачном компараторе он внутри себя не будет конструировать std::string, а напрямую будет сравнивать std::string с const char*