![]() |
1
9
你永远不想在一个向量上向前推。将一个元素添加到前面意味着将向量中的每个其他元素向后移动一个元素:o(n)复制。糟糕的表现。 |
![]() |
2
1
有一个重要的原因:STD::vector & lt & gt;是一个连续的单端数组容器。它分配内存,并在分配的区域开始写入元素。它通常会分配比存储所有当前元素所需的内存更多的内存,因此当您调用push_back()时,它会在末尾写入新元素并增加其元素计数。它快速高效。 另一方面,push_front()需要以某种方式在所有当前元素之前在位置[0]写入新元素,但是这并不容易,因为您的数组位置[0]已经被占用了。push_front()将导致整个数组重新复制,以便可以修改其前面。这是一个低效的操作,STD::向量& lt & gt类未被设计。 当然,你还是可以打电话来
但它会导致整个数组被复制,只是为了添加一个元素。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 7 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 7 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 7 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 7 月前 |