c++中的向量是指针吗?

Ris*_*ian 4 c++ pointers vector

所以假设我们有一个向量 v 并且我将它传递给函数 f

void f(vector<int> &v) {
    cout<<&v;
}

int main() {
    vector<int> v;
    v.push_back(10);  
    v.push_back(20);
    v.push_back(30);

    cout<<&v[0]<<"\n"<<&v<<"\n";
    f(v);
}
Run Code Online (Sandbox Code Playgroud)

为此,我得到的输出为:

0x55c757b81300
0x7ffded6b8c70
0x7ffded6b8c70
Run Code Online (Sandbox Code Playgroud)

我们可以看到,&v并且&v[0]有不同的地址。那么 va 指针指向向量的开头吗?如果是这样,为什么我无法访问*v?我犯了一个错误吗?

谢谢

eer*_*ika 11

c++中的向量是指针吗?

std::vector不是指针。它是一个类。

那么 va 指针指向向量的开头吗?

不,但是v(向量类的一个实例)确实包含一个指向数组开头的指针。

为什么我不能访问*v

因为operator*类的一元没有重载std::vector