用最少的时间复杂度将一个矢量复制到另一个矢量



我有两个向量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::moveold标记为临时时,则vector的复制运算符将选择占用临时的重载并"封存"old的数据。

经过//1old处于状态呼叫"0";从";,基本上,对象处于有效状态,但你不能对这种状态做任何假设,你必须检查它(例如.size()(

如果你想要更多关于移动的信息:查看这个


注意:为什么我不应该#include <bits/stdc++.h>

最新更新