我有两个向量old和newone
我想将newone的值复制到old中,这是最快的方法
。我认为我可以使用指针,但我也认为赋值
newone=old
将执行相同的
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
int main()
{
vector<int> old = {1,2,3};
vector<int> newone = {4,5,6};
newone = old;
for( auto x : newone ){
cout<<x<<endl;
}
}
有什么方法可以在0(1(/恒定时间内完成吗??除了指针
正如评论中所说,您可以使用移动vector
。
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> old = {1,2,3};
vector<int> newone = {4,5,6};
newone = std::move(old); // 1
for( auto x : newone ){
cout<<x<<endl;
}
}
当std::move
将old
标记为临时时,则vector
的复制运算符将选择占用临时的重载并"封存"old
的数据。
经过//1
,old
处于状态呼叫"0";从";,基本上,对象处于有效状态,但你不能对这种状态做任何假设,你必须检查它(例如.size()
(
如果你想要更多关于移动的信息:查看这个
注意:为什么我不应该#include <bits/stdc++.h>
?