将字符串文字传递给std :: map :: find(..)

ra1*_*170 1 c++ string

我有一个std :: map:

std::map<std::string, std::string>
Run Code Online (Sandbox Code Playgroud)

我正在传递字符串文字来查找方法.显然,我可以传递一个字符串文字,如

.find("blah");
Run Code Online (Sandbox Code Playgroud)

但是,我想提前声明它,而不是硬编码字符串,所以我现在有几个选择:

const std::string mystring = "blah";
const char mystring[] = "blah";
static const char * mystring = "blah";
Run Code Online (Sandbox Code Playgroud)

他们都工作.(或至少编译).我的问题是,我应该使用哪一个?另一个的优势/劣势是什么?

Mik*_*our 6

假设你的地图被键入std::string(我认为它必须是所有三个选择的编译),那么第一个更有效.您将创建一个字符串对象,并通过引用将其传递给每个调用find.其他将导致为每个创建临时字符串对象find.