std::hash<std::string>
принимает std::string const&
в качестве параметра для operator()
.Если у вас есть std::string
и вы их хешируете, то это то, что вы хотите.Если вы используете hash<string_view>
, то вам придется преобразовать std::string
в std::string_view
, что имеет определенную стоимость (не так много, но оно есть).
Если ваш набор данныхне содержит std::string
s, но также содержит c-строки, тогда hash<string_view>
может быть лучше.преобразование c-строки в std::string
может потребовать динамического выделения памяти, поэтому, если вы можете избежать этого, вы обычно выигрываете в области производительности.Это требует профилирования, хотя, поскольку значение имеет значение std::string
s и c-строк, а также размер c-строк, поскольку SSO (оптимизация коротких строк) может сделать std::hash<std::string>
лучшим выбором.