两个向量去皮法之间的差异

时间:2019-10-10 11:23:24

标签: vector c++14

由于我是这种语言的新手,所以我很难理解这些差异。

两者之间有什么区别?

vector<int> *ad;

vector<int*> ad;

还有,这两行等效吗?

vector<int> * ad = new vector<int>[5];

vector<int> ad[5];

1 个答案:

答案 0 :(得分:3)

vector<int> *ad;

将ad声明为指针,ad的类型使得可以将其分配为指向整数向量。这些整数按值保存在向量中。向量“拥有”它们并控制整数的生存期。由于尚未分配广告,因此它实际上并未指向这样的向量(尚未)/

vector<int*> ad; 

将广告声明为可以指向整数的指针向量。该向量拥有指针,但尚未分配它们以指向任何特定的整数。这次,向量确实存在,但为空。

vector<int> * ad = new vector<int>[5];

将ad声明为指向整数向量的指针,并将其分配为指向5个整数向量的新数组的第一个元素。该向量数组放在堆上,它将继续存在直到被删除。

vector<int> ad[5];

将广告声明为5个整数矢量的数组。广告将一直存在,直到超出范围。向量将为空。