初始化向量和标准

Tat*_*nan 2 c++ vector std

如果我有一个var

vector<myClass> myVector;
Run Code Online (Sandbox Code Playgroud)

它是否已经初始化?,即,我可以添加(push_back)inmediately元素,或者我应该以下面的方式调用构造函数?

myVector = vector<myClass>();
Run Code Online (Sandbox Code Playgroud)

在另一方面,是同std::vector<myClass>vector<myClass>

Mik*_*our 5

它已经初始化了吗?

是的(假设是这样std::vector).与任何理智类一样,它的所有构造函数(包括此处使用的默认构造函数)都将其置于一个定义良好的状态.此时,它是一个有效的空矢量.

我应该以下面的方式调用构造函数?

那不是调用构造函数(至少不是myVector).在对象初始化期间自动调用构造函数; 没有办法第二次打电话给它.这将创建另一个空向量,然后将其复制分配给它myVector.

另一方面,它是相同的std :: vector和vector吗?

据推测,这是std::vector一个带有邪恶的全局命名空间using namespace std;.为了避免怀疑,混淆和潜在的暧昧,你应该避免这样做,删除任何流氓使用指令,并始终将其称为std::vector.