Abr*_*ile 4 c++ stl insert stdvector
通过阅读std::vector我明白的参考
std::vector
insert当达到最大容量时调用将导致重新分配std::vector(导致迭代器失效),因为为其分配了更大容量的新内存.目标是保证连续数据的保证.
insert
只要我坚持低于最大容量insert就不会导致(并且迭代器将完好无损).
我的问题如下:
当reserve自动调用时insert,有没有办法控制必须保留多少新内存?
reserve
假设我有一个初始容量为100的向量,当达到最大容量时,我想分配额外的20个字节.
有可能吗?
Fle*_*exo 5
您可以随时自行跟踪并在分配之前调用预留,例如
static const int N = 20 // Amount to grow by if (vec.capacity() == vec.size()) { vec.reserve(vec.size() + N); } vec.insert(...);
您可以将它包装在您自己的函数中并调用该函数而不是insert()直接调用.
insert()
归档时间:
14 年,1 月 前
查看次数:
436 次
最近记录: