Joh*_*eek 64
多个编译器之间不允许大小不同.向量的大小是它包含的元素的数量,它直接由您放入向量的元素数量控制.
容量是向量当前使用的空间量.在引擎盖下,矢量只使用一个数组.向量的容量是该数组的大小.这总是等于或大于大小.它们之间的区别在于,需要重新分配引擎盖下的数组之前可以添加到向量的元素数.
你几乎不应该关心容量.它的存在是为了让具有非常特定性能和内存限制的人完全按照自己的意愿行事.
Coe*_*ect 24
假设你有一个水桶.这桶最多可容纳5加仑水,因此其容量为5加仑.它可以具有0到5之间的任何水量,包括0和5.从矢量的角度来看,桶中当前的水量是其大小.因此,如果这个桶是半满的,它的大小为2.5加仑.
如果您尝试向水桶添加更多水并且它会溢出,则需要找到更大的水桶.所以你得到一个容量更大的水桶,把旧水桶的内容倒入新水桶,然后加入新水.
容量:Vector/bucket可容纳的最大内容量.大小:当前在Vector/bucket中的内容量.
大小是向量中存在的元素数
容量是向量当前使用的空间量.
让我们用一个非常简单的例子来理解它:
using namespace std;
int main(){
vector<int > vec;
vec.push_back(1);
vec.push_back(1);
vec.push_back(1);
cout<<"size of vector"<<vec.size()<<endl;
cout<<"capacity of vector"<<vec.capacity()<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
目前规模为3,容量为4.
现在,如果我们再推回一个元素,
using namespace std;
int main(){
vector<int> vec;
vec.push_back(1);
vec.push_back(1);
vec.push_back(1);
vec.push_back(1);
cout<<"size of vector"<<vec.size()<<endl;
cout<<"capacity of vector"<<vec.capacity()<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在尺寸是:4容量是4
现在,如果我们尝试再插入一个元素,vector则大小将变为5,但容量将变为8.
它发生在数据类型的基础上vector,如本例vector中的类型int,因为我们知道大小int为4个字节,因此编译器将分配4块内存..当我们尝试添加第5个元素时,vector::capacity()是我们当前加倍的.
同样保持...例如:如果我们尝试插入第9个元素,那么大小vector将为9,容量将为b 16 ..
| 归档时间: |
|
| 查看次数: |
38732 次 |
| 最近记录: |