请考虑以下代码:
std::map<std::string, int> m1;
auto i = m1.find("foo");
const char* key = ...
auto j = m1.find(key);
这将为每个地图查找创建一个临时的std :: string对象.避免它的规范方法是什么?
不要使用指针;相反,直接传递字符串。然后您可以利用参考资料:
void do_something(std::string const & key)
{
    auto it = m.find(key);
    // ....
}
您越多地使用 C++ 的习惯用法,并且不尝试用它编写 C,C++ 通常会变得“更正确”。