【发布时间】:2021-09-02 06:03:39
【问题描述】:
我最近阅读了this 问题,并在搜索了一下我found 用于向量(任何更多容器)[ ] c++ 中的运算符
实际上返回参考,因此返回 O(1) 复杂度,只是 above 它,提到 = 运算符具有线性时间复杂度,所以我的问题是我是否有一个多维向量 v 并且我执行类似的操作:
v[i]=v[j];
它将是恒定时间操作还是线性时间,为什么?在某处我读过它是 O(1),但我不确定。
This 是讨论算法的博客,在此评论的第二行中,用户说它是 O(1)(这里 v 是多维向量/向量数组),它是这个算法,如果不是,我认为算法不会具有相同的复杂度,
谢谢!
【问题讨论】:
-
std::vector::operator=花费线性时间。 -
@Old Man 您需要将向量 v[j] 的所有元素复制到向量 v[i] 中。复杂性是什么?
-
@VladfromMoscow 这将是线性的。
-
@OldMan 所以你刚刚回答了你自己的问题;)
-
当你说某事是
O(f(n))时,你说的是哪个n很重要。如果你有vector<vector<T>> v; vector<T> x;,v[i] = x在v的大小上是常数,在x的大小上是线性的。
标签: c++ time-complexity operators