coi*_*ung 1 c++ string reference
我有两个c ++字符串std::string dir_1("./dir1"); std::string dir_2("./dir2");,我需要根据某些条件将它们分配给另一个字符串:if (...) str = dir_1; else str = dir_2;.
但是,此操作将复制内容dir_1并dir_2带来一些开销.我怎么能减少这个开销?我有可能只通过他们的参考文献实现作业吗?
创建str一个引用并使用三元运算符对其进行初始化:
const std::string& str = condition ? dir_1 : dir_2;
Run Code Online (Sandbox Code Playgroud)
这不需要和复制或移动原始字符串.
如果条件更复杂,可以使用IIFE(立即调用的函数表达式):
const std::string& str = []() -> auto&
{
if(condition) return dir_1;
else return dir_2;
}();
Run Code Online (Sandbox Code Playgroud)
或者简单地将初始化逻辑重构为不同的函数.