c++ - 以最少的时间复杂度将一个向量复制到另一个向量?
问题描述
我有两个向量 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)/恒定时间内完成?除了指针
解决方案
就像评论中所说的那样,您可以使用 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::move
while 标记old
为临时的,然后复制运算符vector
将选择采用临时的重载并“窃取” 的数据old
。
过去//1
,old
处于状态调用“从”移动,基本上该对象处于有效状态,但您不能假设有关此状态的任何内容,您必须检查它(例如使用.size()
)
如果您想了解有关 move 的更多信息:请查看此
推荐阅读
- python - 使用需要 onclick 事件参数的函数(python 龟)
- angular - AWS Lambda @ng-toolkit 因 TypeError 失败:express 不是 Angular 9 应用程序中的函数
- angular - 选项卡未按预期方式工作 - Angular Material
- php - 如何使用 PHP 从页面中提取 URL 的非参数部分
- c++ - C++ 嵌套 For 循环增量
- xamarin - libvlcsharp 控件未找到字体,即播放暂停快进等图标(IOS)
- django - 使用序列化删除操作
- html - 如何不让 CSS modal 在页面中被截断?
- java - Struts 2.5 Java8ClassFinder:“无法读取类”错误
- node.js - 节点 js-> python 脚本。ModuleNotFoundError:导入的模块没有名为“joblib”的模块