vector是如何增长的?c++笔记(1)

6 篇文章 0 订阅

vector是如何增长的?c++笔记(1)

vector是c++里面十分重要的一个容器,如果没有特殊的要求,一般情况下我们都是选择c++来进行编程。
这里介绍vector在内存中的存储方式以及STL模版中有关于vector内存空间改变的函数

vector空间分布

如果学过数据结构,我们知道链表在内存中的储存是离散的,其间使用指针来连接,
而我们说:vector,array在内存中是连续储存的,
我们学过数组的插入元素,效率非常低下,这也是为什么vector只包含push_back()函数的道理。

函数介绍

概念:
capacity
容器在分配新的存储空间之前能存储的元素总数(提前分配好无元素的新空间,以加快效率)

size
指当前容器存储的元素总个数

.capacity()
查看vector的capacity

.reserve()
reserve()改变capacity,不改变size
例如:


int main()
{
    vector<int> v(10,1);
    v.reserve(20);
    v.push_back(99);
    for(auto x = v.begin();x!=v.end();x++)
    {
        cout<<*x<<" ";
    }
    cout<<endl;
    cout<<v.capacity()<<endl;
   return 0;
}

输出:
1 1 1 1 1 1 1 1 1 1 99
20

相对的
.resize()将会改变capacity和size
如:

int main()
{

    vector<int> v(10,1);
    v.resize(20);
    v.push_back(99);
    for(auto x = v.begin();x!=v.end();x++)
    {
        cout<<*x<<" ";
    }
    cout<<endl;
    cout<<v.capacity()<<endl;
   return 0;
}

输出:
1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 99
40

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值