用vector实现一个变长数组

所谓数组,有这样的性质:

  • 从0开始,且有一个最大长度
  • 支持[]运算符,且越界是一个危险操作

C语言中的数组,一旦长度定义,就不能改变。有时候需要动态增加数组长度,而且想保留上述性质,这时候就可以用vector。

vector模拟了C语言中数组的操作,比如[]取值,下标越界未定义等。最重要的,它支持size()resize()方法,可以获得数组长度,以及扩展数组长度。这样就可以实现动态数组了。

一个代码例子如:

void put_vec(std::vector<int> &vec, size_t index, int value)
{
        size_t old_size = vec.size();
        if (old_size <= index)
        {   
                vec.resize(index + 1); 

                for (size_t i = old_size; i < vec.size(); ++ i)
                {   
                        vec[i] = 0;
                }   
        }   

        vec[index] = value;
}

这里使用了一个for循环来清零新分配的空间,实际上对于内置int类型,vector在resize后就已经把新空间清零了。因此这样写也是为了直观性。

转载于:https://www.cnblogs.com/demon90s/p/6052565.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值