将元素从 std::vector 移动到另一个

Moving elements from std::vector to another one(将元素从 std::vector 移动到另一个)
本文介绍了将元素从 std::vector 移动到另一个的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

限时送ChatGPT账号..

如何将某些元素从第一个向量移动到第二个向量,而这些元素将从第一个向量中删除?
如果我使用 std::move,则不会从第一个向量中删除元素.
这是我写的代码:

How can I move some elements from first vector to second, and the elements will remove from the first?
if I am using std::move, the elements not removed from first vector.
this is the code I wrote:

   move(xSpaces1.begin() + 7, xSpaces1.end(), back_inserter(xSpaces2));

推荐答案

std::move 可让您移动对象,而不是复制它们,从而实现潜在更快的执行速度.当您移动一系列值时,节省可能更大.但是,当您从容器中移动范围时,该容器仍然保留曾经被这些值占据的地方.

The std::move lets you move the objects, as opposed to copying them, allowing for a potentially faster execution speed. The savings may be even greater when you move a range of values. However, when you do move a range from a container, the container still holds the places that were once occupied by these values.

如果您想删除这些占位符,您需要手动调整容器大小以删除它们(您不必这样做,以防您更愿意将这些容器点重用于其他元素).一种方法是调用 vector::erase 在您移出容器的同一范围内.

You need to resize the container manually to remove these placeholders if you want to get rid of them (you don't have to, in case you would prefer reusing these container spots for other elements). One way to do it is to call vector::erase on the same range that you moved out of the container.

这篇关于将元素从 std::vector 移动到另一个的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

Unable to access non-const member functions of objects in C++ std::set(无法访问 C++ std::set 中对象的非常量成员函数)
Constructing std::function argument from lambda(从 lambda 构造 std::function 参数)
STL BigInt class implementation(STL BigInt 类实现)
Sync is unreliable using std::atomic and std::condition_variable(使用 std::atomic 和 std::condition_variable 同步不可靠)
Move list element to the end in STL(在 STL 中将列表元素移动到末尾)
Why is overloading operatoramp;() prohibited for classes stored in STL containers?(为什么禁止对存储在 STL 容器中的类重载 operatoramp;()?)