C++ 使用C+将一个向量的一部分移动(而不是复制)到另一个向量+;98

C++ 使用C+将一个向量的一部分移动(而不是复制)到另一个向量+;98,c++,vector,move-semantics,c++98,C++,Vector,Move Semantics,C++98,在C++11中,我们可以执行以下操作: std::vector<int> A(n); std::vector<int> B; // I want to move part of A (from A[start] to A[end]) to B std::move(A.begin()+start,A.begin()+end,std::back_inserter(B)); // in C++98 there is no move operator, so use copy

在C++11中,我们可以执行以下操作:

std::vector<int> A(n);
std::vector<int> B; 
// I want to move part of A (from A[start] to A[end]) to B
std::move(A.begin()+start,A.begin()+end,std::back_inserter(B));
// in C++98 there is no move operator, so use copy (assign)
B.assign(A.begin()+start, A.begin()+end);
std::向量A(n);
std::载体B;
//我想把A的一部分(从A[开始]移到A[结束])移到B
std::move(A.begin()+start,A.begin()+end,std::back_inserter(B));
//在C++98中没有移动操作符,所以使用复制(分配)
B.分配(A.开始()+开始,A.开始()+结束);
在C++98中是否有任何方法可以执行类似于C++11实现的操作。 我们的目标是节省时间,使用移动而不是复制向量,你知道吗


在实际代码中,我没有使用int,它是对象的向量。

不幸的是,移动语义在C++98中不可用(因为它们是在C++11中引入的),但对于给定的示例,移动整数与复制整数没有太大区别,因此实际的性能差异应该可以忽略不计,如果有的话。

虽然移动语义在C++98中不存在,但您始终可以编写一些与此情况相同的东西

一种快速而简单的方法是在您计划使用的类上引入一个“moveTo”函数,然后使用您想要将其移动到的位置的引用/指针调用它


值得强调的是,我说过“在你的课堂上”;因为正如Arnav Borborah所说,你的例子太琐碎了,没有什么不同;但我强调了这个选项,以防它是一个糟糕的例子。

只是为了澄清,真正的代码是否也使用
int
s?如果是这样,向量的移动部分与复制没有什么不同。
c++98
没有移动语义。。。但对于您的示例,move
int
相当于复制它。@HolyBlackCat,在实际代码中它不是int。。。。它是一个物体