c++ - 使用移动语义正确返回 std::string
问题描述
考虑一个返回大字符串的函数:
std::string build_huge_string(unsigned long size)
{
std::string result;
result.reserve(size);
for (unsigned long i = 0; i < size; ++i)
result.push_back(i % 256);
return result;
}
它在某处可能像这样使用std::string huge_string = build_huge_string(65536);
有没有办法确保在不复制 64KB的内容的result
情况下将其内容移入?huge_string
这是默认情况下发生的吗?应该build_huge_string
退货std::string&&
吗?应该return result;
换成return std::move(result);
?
解决方案
推荐阅读
- stored-procedures - 没有参数的redshift过程和参数中的动态表名
- node.js - 在 res.writeHead 之后 Express res.render 不工作
- php - 如何使用 jquery 更改 DIV 中数据顶部和数据范围的值
- azure-ad-b2c - 在 Azure AD B2C 中更新后,如何刷新 id 令牌中的用户属性?
- sql - quote_ident() 不会在列名“first”中添加引号
- javascript - 在 ReactJS iFrame 问题中第二次在剪贴板中获取复制的文本
- node.js - Puppeteer:无法打开并使用 Windows 文件对话框上传文件
- node.js - Node/WebpackDevServer/react-scripts,在启动时删除“To create a production build, use npm run build”消息
- facebook - Facebook 应用程序画布 setSize 和 setAutoGrow 在登录时不再工作
- swift - 将元素定位在导航栏正下方 (SwiftUI)