用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后就已经把新空间清零了。因此这样写也是为了直观性。

posted @ 2016-11-10 21:46  Demon90s  阅读(462)  评论(0编辑  收藏  举报