【发布时间】:2011-01-18 01:52:56
【问题描述】:
显然,它会因您使用的编译器而异,但我很好奇 vector<vector<largeObject>> 与 vector<vector<largeObject>*> 的性能问题,尤其是在 c++ 中。具体来说:
假设您的外部向量已满,并且您想开始将元素插入到第一个内部向量中。如果外部向量只是存储指针,与存储整个内部向量相反,它将如何存储在内存中。是否必须移动整个外部向量以获得更多空间,或者是否会移动内部向量(假设空间未预先分配),从而导致外部向量出现问题?
谢谢
【问题讨论】:
-
你是说矢量
>?那么vector在幕后使用指针吗? -
@Leif 当然可以,向量毕竟是动态数组。
-
A
vector内部可能只是一个指针,但它仍然有一个 O(n) 复制构造函数。 -
@Leif -- 当然可以。但这不是重点。关键是使用原始指针的原因很少。当然,性能提升不是其中之一。标准库的编写者之间有数百年的经验,相信他们尽可能高效地编写代码。
-
vector
>> 怎么样?