gpt4 book ai didi

c++ - 传递给函数时使用 std::vector 误解 move 语义

转载 作者:行者123 更新时间:2023-12-03 11:14:53 24 4
gpt4 key购买 nike

我试图理解 move 语义的概念并做了一些测试。我有以下功能:

// testing the move semantic when passing 
// argument to be modified without copying

void process_copy( std::vector<int>&& aVec)
{
std::cout << "Move semantic\n";
aVec.push_back(42);
}
现在在主函数中,如下:
int main()
{
std::vector<int> w_vec = {1,2,3,4,5};
process_copy( std::move(w_vec));
}
我希望 w_vec现在是空的,因为我通过 move 转换(将左值转换为右值)传递了它。但结果是 w_vec现在包含 6 个元素(42 个已添加到 vector 中)。
我想念的东西?是 std::vector是可 move 的物体吗?

最佳答案

我的图片 CoreCpp 2019 T 恤可能与此相关。
CoreCpp 2019 t-shirt 👕
这是正面。
t-shirt front 👕
有趣的是,std::move 的这种行为有点意外even for Howard Hinnant himself ,右值和 move 语义背后的人。然而他得到了非常彻底的答复there .

关于c++ - 传递给函数时使用 std::vector 误解 move 语义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65763720/

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