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

时间:2017-09-26 09:47:05

标签: c++ vector initialization

我有一个班级Pixel和一个班级Image,其功能用于更新像素行。我想初始化像素线。我的问题是初始化矢量。其实我有这个:

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

当我尝试这个时,我有:

  

没有可行的超载&#39; =&#39;

如何初始化矢量?

2 个答案:

答案 0 :(得分:3)

您正在使用的表达式:

new std::vector<Pixel>(nb)

返回指向std::vector<Pixel>的指针(即:std::vector<Pixel> *),而不是std::vector<Pixel>,这是您需要的。

必须完成初始化分配之间的区别:您分配line而不是初始化它。

您可以通过赋值运算符创建新向量并指定<{em>}到<{1}}:

line

答案 1 :(得分:1)

你做的是分配,而不是初始化。

初始化矢量可以这样做:

PHP_EOL

但是,在你的情况下,向量已经在函数之外声明了,所以在这种情况下你使用vector::resize并执行此操作:

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

PS:您不需要line.resize(nb); // creates 'nb' objects 'Pixel' 关键字,除非您为矢量动态分配内存。