Cil*_*nco 2 c++ rvalue-reference c++11
我相对来说是C++的新手,这可能是一个愚蠢的问题,但我现在正试图理解rValue和lValue引用这一点,我想到了:
假设我们有一个地图(来自数据库或其他),我们想要将它的所有值复制到矢量.
void insertItems(std::vector<std::string>& v)
{
std::map<int, std::string> names = loadFromDb();
for (auto& kv : names )
{
v.push_back(std::move(kv.second));
}
}
Run Code Online (Sandbox Code Playgroud)
std::move在这里使用是对的吗?std::string提供了一个移动构造函数(可能不是用于字符串,但对于较大的对象),移动构造函数比复制构造函数快得多.我们也知道我们不会在其他地方使用地图的项目,一旦我们离开该功能它们就会超出范围.我的推定是对的吗?
我不能在我的思想中看到矛盾,但这是一个复杂的话题,我害怕错过一些东西. PS:我认为问题名称不是最好的.如果你有一个更好的人随时编辑它.
std::move在这里使用是对的吗?
如果您确定将来不会访问移动的值,是的.
您可能还想使用std::vector::reserve预分配所需的空间v.
v.reserve(v.size() + names.size());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1244 次 |
| 最近记录: |