由于我是这种语言的新手,所以我很难理解这些差异。
两者之间有什么区别?
vector<int> *ad;
和
vector<int*> ad;
还有,这两行等效吗?
vector<int> * ad = new vector<int>[5];
和
vector<int> ad[5];
答案 0 :(得分:3)
vector<int> *ad;
将ad声明为指针,ad的类型使得可以将其分配为指向整数向量。这些整数按值保存在向量中。向量“拥有”它们并控制整数的生存期。由于尚未分配广告,因此它实际上并未指向这样的向量(尚未)/
vector<int*> ad;
将广告声明为可以指向整数的指针向量。该向量拥有指针,但尚未分配它们以指向任何特定的整数。这次,向量确实存在,但为空。
vector<int> * ad = new vector<int>[5];
将ad声明为指向整数向量的指针,并将其分配为指向5个整数向量的新数组的第一个元素。该向量数组放在堆上,它将继续存在直到被删除。
vector<int> ad[5];
将广告声明为5个整数矢量的数组。广告将一直存在,直到超出范围。向量将为空。