为什么子矢量在通过引用传递时需要为const?

时间:2018-07-17 07:26:47

标签: c++ vector stl const pass-by-reference

当我这样做时:

#include <iostream>
#include <vector>

using namespace std;

void print(vector<int> &v)
{
    int i;
    for(i = 0; i < v.size(); i++)
        cout<<v[i]<<" ";
    cout<<endl;
}

int main()
{
    vector <int> A = {1,2,3,4,5};
    print(A);
}

我不需要将向量设为const。 但是当我传递向量的子部分时:

#include <iostream>
#include <vector>

using namespace std;

void print(vector<int> &v) // Throws Error. Needs it as const vector<int> &v
{
    int i;
    for(i = 0; i < v.size(); i++)
        cout<<v[i]<<" ";
    cout<<endl;
}

int main()
{
    vector <int> A = {1,2,3,4,5};
    print({A.begin(), A.begin()+2});
}

编译器期望向量作为const(void print(const vector<int> &v))传递。为什么会这样?

0 个答案:

没有答案