代码之家  ›  专栏  ›  技术社区  ›  A.Pissicat

初始化通过引用传递的向量

  •  2
  • A.Pissicat  · 技术社区  · 8 年前

    Pixel 还有一节课 Image 具有用于更新像素线的函数。我想初始化像素线。我的问题是初始化向量。事实上,我有这个:

    bool UpdateLine(std::vector<Pixel>& line, int nb)
    {
        bool noError = true;
        line = new std::vector<Pixel>(nb);
        // Do some stuff
        return noError;
    }
    

    当我尝试这个时,我有:

    2 回复  |  直到 8 年前
        1
  •  3
  •   jfMR    8 年前

    new std::vector<Pixel>(nb)
    

    返回指向的指针 std::vector<Pixel> (即: std::vector<Pixel> * ),而不是 标准::向量(<);像素>


    之间的区别 必须这样做:你是 分配 line 正在初始化

    你可以创建一个新的向量,然后 分配 线 赋值运算符

    line = std::vector<Pixel>(nb);
    
        2
  •  1
  •   gsamaras a Data Head    8 年前

    您所做的是赋值,而不是初始化。

    可以这样初始化向量:

    std::vector<int> second (4,100); // four ints with value 100
    

    vector::resize 这样做:

    line.resize(nb); // creates 'nb' objects 'Pixel'
    

    附言:你不需要 new 关键字,除非您为向量动态分配内存。