这个例子在Bjarne Stroustrup的C++编程语言中如何工作?

Moh*_*mel 3 c++ const reference pass-by-reference

我正在阅读C++编程语言,第4版(由Bjarne Stroustrup撰写)关于.

他有以下代码示例:

void f (const vector<double>& v){
    double d1 = v[1];
    v[2] = 7;

    v.push_back(d1);
} 
Run Code Online (Sandbox Code Playgroud)

我的问题是:因为v作为const传递我们如何v在函数中改变第二和第三语句?

我尝试编译代码,它不起作用:

错误:分配只读位置

那我在这里错过了什么?我怀疑是Bjarne犯了一个错误:D

谢谢

wal*_*lly 7

更新版本具有以下内容:

void f(vector<double>& v)
{
    double d1 = v[1]; // copy the value of the double referred to by v.operator[](1) into d1
    v[2] = 7; // place 7 in the double referred to by the result of v.operator[](2)
    v.push_back(d1); // give push_back() a reference to d1 to wor k with
}
Run Code Online (Sandbox Code Playgroud)

所以它可能是为下一次打印而修复的.