gpt4 book ai didi

c++ - 为什么 move vector 和 move 元素对 vector 的大小有不同的影响?

转载 作者:太空狗 更新时间:2023-10-29 20:20:30 25 4
gpt4 key购买 nike

我知道 size()empty() 不需要前提条件,因此可以在移出的对象上调用并返回正确的结果。但我不明白结果背后的理论。

std::vector<std::string> v = {"a", "b"};
std::string x = std::move(v[0]);
std::cout << x << std::endl; // a
std::cout << v.size() << std::endl; // 2
std::cout << v.empty() << std::endl; // 0, false
auto y = std::move(v);
std::cout << v.size() << std::endl; // 0
std::cout << v.empty(); // 1, true

如结果所示,如果 move 元素, vector 的大小不会改变。但是如果你 move 整个 vector ,它就会变成空的。这是有道理的,但我觉得需要更多的解释,以便我将来可以处理类似的情况。

最佳答案

std::string x = std::move(v[0]);

您没有将元素移出集合(在本例中为 vector )。您正在将一个对象 - 一个 std::string 实例 - 保存在 v[0] 中 move 到另一个对象 x。集合本身没有改变。

auto y = std::move(v);

这会将一个 std::vector 对象 v move 到 y 对象中。

关于c++ - 为什么 move vector 和 move 元素对 vector 的大小有不同的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50875660/

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