如果存在std::map<std::pair<std::string, std::string>, some_type>
找到其值的最佳方法是什么?
我想最明显的一个是做这样的事情:
但这将导致在对构造期间对和字符串map.find(std::make_pair(str1, str2));
进行复制构造。str1
str2
我希望也许map.find(std::make_pair(std::ref(str1), std::ref(str2)));
能有所帮助,但不幸的是没有,这仍然会产生字符串副本。
map.find(std::make_pair(std::move(str1), std::move(str2))
应该可以工作,但我们假设这些字符串 ( str1
, str2
) 是 const 或者不应该移动。
所以我问是否有其他方法可以进行地图搜索而不进行多余的字符串副本?
(请注意,使用std::string_view
forstd::map key
不是一个选项,因为地图应该拥有其字符串。)