[英]Copying one vector to Another in least time complexity?
我有两个向量 old 和 newone
我想将 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)/恒定时间内完成? 除了指针
就像评论中所说的那样,您可以使用 move the 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
处于状态调用“ moved from ”,基本上对象处于有效状态,但是您不能假设有关此状态的任何信息,您必须检查它(例如使用.size()
)
如果你想了解更多关于移动的信息: 看看这个
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.