capacity与size的比较

概念

个人感觉在比较这个之前,应该理解vector是动态分配存储容量

capacity()

是指在不分配更多内存的情况下可以保存的最多元素个数,如果元素到了一个范围,那么capacity就会增加,元素个数不会超过capacity 即 capacity >= size,size接近某个值,那么
capacity又会增加

size

是实际的元素个数

注意

如果开始又初始化容器大小

  //如下
  vector<int> v1(10);
  vector<int> v2{1,2,3,4};

那么 最开始capacity和size大小相同

其中如果用push_back() 那么capacity和size大小就不会相同
主要是为了它预留一些空间,放在频繁的增加容器长度,如果reserve()//为其预留一些长度

代码

#include<iostream>
#include<bits/stdc++.h>
using namespace std;

int main() {
    vector<int> ans;
    int num = 0;
    for (int i = 0; i <= 16; i++) {
        ans.push_back(num++);
    }
    cout << ans.size() << endl; // 17
    cout << ans.capacity() << endl; // 32
    vector<int> v1{ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41 ,43 ,47 }; // size == capacity == 15
    v1.push_back(1); // size = 16 capacity == 30
    cout << v1.size() <<endl;
    cout << v1.capacity();
    v1.reserve(99); //size == 16 capacity == 99;
    
}
posted @ 2023-03-06 11:05  壹剑霜寒十四州  阅读(53)  评论(0编辑  收藏  举报