我有一个 std::map:
std::map<std::string, std::string>
我将字符串文字传递给 find 方法。显然,我可以传递一个字符串文字,例如
.find("blah");
但是,我想预先声明它,而不是对字符串进行硬编码,所以我现在有几个选择:
const std::string mystring = "blah";
const char mystring[] = "blah";
static const char * mystring = "blah";
它们都有效。 (或至少编译)。我的问题是,我应该使用哪一个?与对方相比的优势/劣势是什么?
最佳答案
假设您的映射由 std::string
键控(我认为所有三个选择都必须编译),那么第一个更有效。您将创建一个字符串对象,并通过引用将其传递给对 find
的每次调用。其他的将导致为每个 find
创建一个临时字符串对象。
关于c++ - 将字符串文字传递给 std::map::find(..),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2463855/