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有什么问题代码>?