vector<int>* v = new vector<int>(5); 行,但是vector<int> v = new vector<int>(5);不行

图片说明

第一句可以通过编译并且可以运行,第二句无法通过编译。

因为C++的new返回对应类型的指针类型(动态分配内存)。所以new后面的类型的指针类型才是前面的类型。
非要那么写,可以

vector<int> v = *new vector<int>(5);

new 是在动态内存中划分一块内存,返回的是这块内存的地址,需要指针类型的变量指向它.