[英]C++ "[ ]" operator
复制整个std::vector<T>
的时间复杂度为 O(N),因为每个元素T
都需要复制。
C++ 标准要求std::vector<T>::operator[]
的所有重载具有常量复杂性。 通常它是在std::vector
中的数据上使用指针算法实现的。
所以, v[i] = v[j];
是 O(1)。
T
可以是任意多维的事实在这里无关紧要。 矢量副本是 O(N),因为如果将元素数量加倍,则时间也会加倍(无论如何都在一定限度内)。 向量元素副本的复杂度为 O(1),因为它不依赖于向量中元素的数量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.