Se houver, std::map<std::pair<std::string, std::string>, some_type>
qual é a melhor maneira de encontrar seus valores?
Acho que o mais óbvio é fazer algo assim:
map.find(std::make_pair(str1, str2));
mas isso levará a uma construção de cópia das strings str1
e str2
durante a construção do par.
Eu esperava que talvez map.find(std::make_pair(std::ref(str1), std::ref(str2)));
pudesse ajudar, mas infelizmente não, isso ainda produz cópias de strings.
map.find(std::make_pair(std::move(str1), std::move(str2))
deve funcionar, mas vamos supor que essas strings ( str1
, str2
) sejam const ou não devam ser movidas.
Então, estou perguntando se existe alguma outra maneira de fazer uma pesquisa no mapa sem fazer cópias redundantes de strings.
(Observe que usar std::string_view
for the std::map key
NÃO é uma opção, pois o mapa deve possuir suas strings.)