std::vector<std::string> v = {"a","b"};std::string x = std::move(v[0]);std::cout << x << std::endl; // astd::cout << v.size() << std::endl; // 2std::cout << v.empty() << std::endl; // 0,falseauto y = std::move(v); std::cout << v.size() << std::endl; // 0std::cout << v.empty(); // 1,true
结果显示,如果移动元素,向量的大小将不会改变.但是如果你移动整个矢量,它就会变空.这是有道理的,但我觉得需要更多的解释,以便我将来可以处理类似的案件.
解决方法std::string x = std::move(v[0]);
您没有将元素移出集合(在本例中为向量).您正在将一个对象 – 一个std :: string实例 – 保存在v [0]中另一个对象x.集合本身没有改变.
auto y = std::move(v);
这会将std :: vector对象v移动到y对象中.
总结以上是内存溢出为你收集整理的c – 为什么移动矢量和移动元素对矢量大小有不同的影响?全部内容,希望文章能够帮你解决c – 为什么移动矢量和移动元素对矢量大小有不同的影响?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)