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

  • 相关阅读:
    JDBC第一部分
    java mysql学习第三部分
    java mysql 第六部分
    java mysql学习第五部分
    java mysql学习第二部分
    java mysql学习第一部分
    元注解
    改良之前写的模拟栈代码
    java中如何自定义异常
    java中的语法规则
  • 原文地址:https://www.cnblogs.com/demon90s/p/6052565.html
Copyright © 2011-2022 走看看