【问题标题】:difference between the two vector declerations两个向量声明的区别
【发布时间】:2020-02-07 19:56:09
【问题描述】:

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

两者有什么区别?

vector<int> *ad;

vector<int*> ad;

另外,这两行如何等效?

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

vector<int> ad[5];

【问题讨论】:

  • 后两行虽然不等价...
  • 那么,最后两行有什么区别?

标签: vector c++14


【解决方案1】:
vector<int> *ad;

将 ad 声明为指针,ad 的类型使得它可以被分配为指向一个整数向量。这些整数在向量中按值保存。向量“拥有”它们并控制整数的生命周期。因为 ad 没有被分配它实际上并不指向这样一个向量(还)/

vector<int*> ad; 

将 ad 声明为可以指向整数的指针向量。向量拥有指针,它们没有被分配指向任何特定的整数。这次向量确实存在,但它是空的。

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

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

vector<int> ad[5];

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

【讨论】:

  • 最后两个解释不正确。这些是正在创建的(五个)向量数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-07
  • 2012-04-01
  • 1970-01-01
相关资源
最近更新 更多