首页 > 解决方案 > 以最少的时间复杂度将一个向量复制到另一个向量?

问题描述

我有两个向量 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)/恒定时间内完成?除了指针

标签: c++stlstdvector

解决方案


就像评论中所说的那样,您可以使用 move 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::movewhile 标记old为临时的,然后复制运算符vector将选择采用临时的重载并“窃取” 的数据old

过去//1,old处于状态调用“”移动,基本上该对象处于有效状态,但您不能假设有关此状态的任何内容,您必须检查它(例如使用.size()

如果您想了解有关 move 的更多信息:请查看此


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


推荐阅读