所谓数组,有这样的性质:
- 从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后就已经把新空间清零了。因此这样写也是为了直观性。