无法分配给返回值,因为函数“ operator []”返回一个常量值

时间:2018-08-03 18:51:06

标签: c++ vector

我正在用C ++编写一个将向量中所有数字加倍的函数。我的代码是:

std::vector<int> maps(const std::vector<int> & values) {
    for (unsigned i = 0; i < values.size(); i++) 
    {
        values[i] = values[i] * 2;
    }
    return values;
}

但这会导致错误:

  

错误:由于函数'operator []'返回const值,因此无法分配返回值

     

values [i] = values [i] * 2;

我不理解此错误或我的代码有什么问题。

2 个答案:

答案 0 :(得分:3)

您正在将向量传递为const,并试图对其进行修改。如果要修改const限定词。

答案 1 :(得分:2)

  

我不明白此错误...

该错误表明分配values[i] = ...是非法的

  

或者我的代码有什么问题。

您通过values作为const向量。这样一来,maps中的代码就可以在索引values处读取i,而不会写回新值。

您可以通过以下方法修复该问题:首先复制阵列,然后对副本进行修改。可以通过从const的签名中删除&maps来隐式完成此操作:

std::vector<int> maps(std::vector<int> values)

现在values是按值传递的,C ++在输入maps之前会为您制作一个副本。