为什么 insert() 函数在 C++ 中的向量中花费 o(n) 时间
why insert() function take o(n) time in vector in c++
找不到合适的答案
为什么插入函数在我们提供插入位置的同时需要 o(n) 的时间复杂度??
谁能告诉我原因……
在我看来,这是因为迭代器而发生的,可能是我错了,但我想澄清一下..
我从给定的 link 中阅读了它,但我没有找到正确的问题答案。
std::vector
中的内存通常表示为一个数组,因此在数组中间插入一个新元素而不覆盖任何内容需要将该点之后的所有数据向右移动(线性复杂度).用push_back()
插入最后是通常常数时间,除非向量数组的内部容量需要增加,在这种情况下它又是线性的。
找不到合适的答案
为什么插入函数在我们提供插入位置的同时需要 o(n) 的时间复杂度?? 谁能告诉我原因…… 在我看来,这是因为迭代器而发生的,可能是我错了,但我想澄清一下..
我从给定的 link 中阅读了它,但我没有找到正确的问题答案。
std::vector
中的内存通常表示为一个数组,因此在数组中间插入一个新元素而不覆盖任何内容需要将该点之后的所有数据向右移动(线性复杂度).用push_back()
插入最后是通常常数时间,除非向量数组的内部容量需要增加,在这种情况下它又是线性的。