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

标签 c++ string

我有一个 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/

相关文章:

c++ - 如何为 vector <string> 设置默认参数以在类中的默认构造函数中使用?

php - PHP 中的 foreach 字符串

c++ - 从 QT 复选框到 Postgresql 的星期选择

c++ - 如何在没有外部脚本的情况下链接 CMake 和 SQLite?

c++ - 旋转相机时,DirectX 原语不会在屏幕上移动

c++ - 如何防止 GCC 为静态成员生成守卫

string - 字符 ' ' 处的字符串/字 rune 字中的词法错误?

javascript - Javascript 中字符串的 Switch-Case 未按预期工作

c++ - 通过 winreg 查找 perfmon 计数器 id

c++ - 避免在人为模糊的重载函数调用中拼写出类型