我正在使用向量来管理我的大型结构数据。但是突然,当我发现vector
源代码时,我很惊讶地看到下面的一些代码:
inline void push_back(const _Ty& _X)
{insert(end(), _X); }
//...
void insert(iterator _P, size_type _M, const _Ty& _X)
{
//////////////////////////////////////////////////////////////
iterator _S = allocator.allocate(_N, (void *)0);
iterator _Q = _Ucopy(_First, _P, _S);
_Ufill(_Q, _M, _X);
_Ucopy(_P, _Last, _Q + _M);
_Destroy(_First, _Last);
allocator.deallocate(_First, _End - _First);
//////////////////////////////////////////////////////////////
}
它是“破坏”然后重新分配其整个矢量数据的片段代码。这太烦人了,因为我的结构尺寸很大,一个向量必须管理数百个元素,而我只使用vector::operator []
and vector::push_back()
,尤其是pushing back
占用了我大部分的程序时间(这很耗时)。就我而言,有没有更好的容器可以比std::vector
, 而我尝试 google 但没有运气?