gpt4 book ai didi

C++ 使用 std::move 将映射复制到 vector

转载 作者:太空狗 更新时间:2023-10-29 23:39:06 49 4
gpt4 key购买 nike

我是 C++ 的新手,这可能是一个愚蠢的问题,但我正在尝试理解 rValuelValue 引用,这来到了我的头脑:

假设我们有一张 map (来自数据库或其他任何东西),我们想将它的所有值复制到一个 vector 中。

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));
}
}

这里用std::move对吗? std::string 提供了一个移动构造函数并且(可能不是针对字符串而是针对更大的对象)移动构造函数比复制构造函数快得多。我们还知道我们不会在其他地方使用 map 的项目,并且一旦我们离开该功能,它们就会超出范围。那么我的推测对吗?

我的想法中看不出有什么矛盾,但这是一个复杂的话题,我害怕错过一些东西。P.S.: 我认为问题名称不是最好的。如果您有更好的,请随时对其进行编辑。

最佳答案

Is it right to use std::move here?

如果您确定以后不会访问移动的值,是的。


您可能还想使用 std::vector::reservev 中预分配所需的空间。

v.reserve(v.size() + names.size());

关于C++ 使用 std::move 将映射复制到 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42282382/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com