Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;向量初始化?_C++_Initialization - Fatal编程技术网

C++ C++;向量初始化?

C++ C++;向量初始化?,c++,initialization,C++,Initialization,可能重复: 我使用向量没有任何问题,但我仍然有一个问题。 我总是使用这样的代码 vector<int>* v1 = new vector<int>; vector*v1=新向量; 那么,我可以使用: vector<int>* v2 = new vector<int>(); vector*v2=newvector(); 我知道()做什么,但有什么区别?在v1中,vector是否初始化过任何整数 两种说法都是一样的。在这两种情况下都将调用

可能重复:

我使用向量没有任何问题,但我仍然有一个问题。 我总是使用这样的代码

vector<int>* v1 = new vector<int>;
vector*v1=新向量;
那么,我可以使用:

vector<int>* v2 = new vector<int>(); 
vector*v2=newvector();

我知道()做什么,但有什么区别?在v1中,vector是否初始化过任何整数

两种说法都是一样的。在这两种情况下都将调用不带参数的构造函数。

首先,您的问题是:new调用默认构造函数,您不需要“手动”执行此操作。 但是,尝试在C++中尽可能频繁地使用值类型。它们不仅更快,而且更容易、更安全,因为析构函数在离开作用域时会自动被调用。 那就写吧

std::vector<int> v; // Calls default constructor
std::vector v;//调用默认构造函数

如果您真的需要堆,请尝试使用智能指针,如shared_ptr和unique_ptr,这样您就不会忘记调用delete。(delete还调用析构函数,无需手动执行。)

为什么要使用
new
?向量v1有什么问题