c++ - 通过值传递和引用传递将大小为 n 的向量传递给另一个函数的时间复杂度是多少?
问题描述
void fun(vector<int>vec)
{
some code
}
int main()
{
int n = 5;
vector<int>avec(n);
fun(avec);
}
n
通过值传递和引用传递将大小的 Vector 传递给另一个函数的时间复杂度是多少?这段代码只传递一个向量的时间复杂度是多少?
解决方案
std::vector
通过值将大小传递N
给函数显然具有线性复杂性O(n)
,因为它涉及复制N
对象。通过引用传递具有复杂性O(1)
,因为实际上只有 的地址std::vector
被传递给函数,而不管其大小。
值得注意的是,std::vector
从函数返回 a 的情况有所不同,在这种情况下,按值返回的复杂度为O(1)
,因为在这种情况下,编译器要么使用copy elision
(如果允许),要么使用移动构造函数。两者都具有O(1)
竞争力。
推荐阅读
- python - 使用curl时如何在ubuntu 20.04中解决“无法获取本地颁发者证书(_ssl.c:1123)”?
- c# - Unity C# IOS 滑动检测
- events - Google 活动中的 Zoom 会议地址
- reactjs - useRef TypeScript - 不可分配给类型 LegacyRef
- git - 多平台 git 策略是怎样的?
- haskell - Haskell - 将 [char] 拆分为字符串的函数
- php - 用于在 Safari 中下载多个文件时出现错误的 PHP 表单:加载资源失败:帧加载中断
- javascript - 更新:/login 路由引发错误,我找不到原因
- c# - 如何在 .NET 的接口中复制类的功能?
- windows - 安装应用程序时创建不需要的 FOLDER-ID