插入元素后矢量容量增加
Capacity of vector increases after inserting an element?
我真的是c++的新手,我才刚刚开始尝试它。这是我刚刚经历的一些代码:
#include <iostream>
#include <vector>
int main() {
std::vector<int> v;
std::cout << "Capacity of v is " << v.capacity() << 'n';
v.resize (100);
std::cout << "Capacity of v after resize is " << v.capacity() << 'n';
v.insert (v.begin(), 2);
std::cout << "Capacity of v after insert is " << v.capacity() << 'n';
}
我得到以下输出:
v 的容量为 0 调整大小后 v 的容量为 100插入后v的容量为200
现在,我已经读到当容量变得太小时,例如由于插入,向量会重新分配自己。但我认为我有100个容量?现在我只想插入 2。为什么 2 个不适合 100 个容量?我似乎不明白这一点。
也许你对std::vector::resize
做什么感到困惑。
它缩小或增大对象,使其具有给定函数的大小。通过使用
v.resize (100);
您要求将v
大小调整为 100 个元素。之后,电话
v.insert (v.begin(), 2);
对象的大小将为 101。如果当前容量小于101,则需要增加容量。
也许你的意思是使用std::vector::reserve
.如有必要,它可以在不增加其大小的情况下增加对象的容量。
相关文章:
- 数组索引的值没有增加
- 为什么我的代码在输出中增加了93天
- 有效地使用std::unordered_map来插入或增加键的值
- 具有非整数边容量的最大流量的Dinic算法
- C++ 动态数组每次添加时将大小增加 1 - 错误
- 将stl字符串缩小到小于15个字符的容量
- 为什么要增加导致崩溃的指针
- 在容量内调整矢量大小时的性能影响
- std::vector的容量会降低吗?
- 增加传递地址的值
- 插入元素后矢量容量增加
- push_back在增加容量之前推动元件
- 增加字符串的容量
- 矢量容量的增加
- 增加C++循环队列的容量
- STL矢量:当矢量容量因插入而增加时,在分配新的连续内存后,是否删除或保留旧的连续内存
- vector::resize增加了多少容量?
- std::vector *必须*在增加容量时移动对象吗?或者,分配器可以"reallocate"吗?
- c++动态数组,增加容量
- vector::push_back何时增加容量