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;
}
字符串 当前大小为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;
}
9条答案
按热度按时间5sxhfpxr1#
大小不允许在多个编译器之间有差异。向量的大小是它包含的元素的数量,它直接由你放入向量中的元素数量控制。
容量是向量拥有的总空间量。在引擎盖下,向量只使用数组。向量的容量就是数组的大小。它始终等于或大于大小。它们之间的区别是在需要重新分配底层数组之前可以添加到向量中的元素数量。
你几乎永远不应该关心容量。它的存在是为了让具有非常特定的性能和内存限制的人做他们想做的事情。
oymdgrw72#
Size:当前向量中的项数
容量:在向量“满”之前,它可以容纳多少项。一旦满了,添加新项将导致分配一个新的、更大的内存块,并将现有项复制到其中
w1jd8yoj3#
假设你有一个桶。这个水桶最多能装5加仑的水,所以它的容量是5加仑。其可具有0至5(包括0和5)之间的任何量的水。当前桶中的水量在矢量方面是其大小。所以如果这个桶是半满的,它的大小是2.5加仑。
如果你想往桶里加更多的水,它会溢出,你需要找一个更大的桶。所以你要找一个容量更大的桶,把旧桶里的水倒进新桶里,然后加入新的水。
容量:Vector/桶可容纳的最大容量。Size:当前Vector/bucket中的内容数量。
vnjpjtjt4#
Size是向量中存在的元素的数量
容量是向量当前使用的空间量。
让我们用一个非常简单的例子来理解它:
字符串
当前大小为3,容量为4。
如果我们再往后推一个元素,
型
现在的尺寸是:4容量为4
现在,如果我们尝试在
vector
中再插入一个元素,则size将变为5,但capacity将变为8。它基于
vector
的数据类型发生,在这里,在int
类型的vector
中,因为我们知道int
的大小是4字节,所以编译器将分配4块内存..当我们尝试添加第5个元素时,vector::capacity()
是我们目前拥有的两倍。保持不变,例如:如果我们尝试插入第9个元素,则
vector
大小将为9,容量将为16。izkcnapc5#
size()
告诉你当前有多少个元素。capacity()
告诉您在向量需要为自己重新分配内存之前,大小可以达到多大。容量始终大于或等于大小。不能索引元素#
size()-1
以外的元素。ctehm74n6#
大小是向量中元素的数量。容量是向量当前可以容纳的最大元素数。
tjjdgumg7#
向量大小是向量的元素总数,对于所有编译器来说都是相同的。向量可重新调整大小。
容量是向量当前可以容纳的最大元素数。它可能因不同的编译器而异。
容量会根据需要进行更改,或者您可以设置初始容量,在达到该容量之前,它不会调整大小。它会自动扩展。
容量> =尺寸
fzsnzjdm8#
一个是更重要的 * 接口 *,另一个是更重要的 * 实现细节 *。您将主要处理大小而不是容量。换句话说:
大小的类比是盒子里的球的数量,而容量是盒子的大小。在编程时,你通常想知道盒子里有多少个球。vector实现应该为您处理容量(一旦它装满了,就可以制作一个更大的盒子)。
的数据
h6my8fg29#
为了对上面所描述的内容给予更直观的答案。每当向量的容量发生变化时,尝试查看内存位置的变化。
Memory location changes of the vector