Max*_*rai 4 c++ resize vector std
我有一些std :: vector,我必须使用一些默认值来调整它.这是代码:
static int Counter = 0;
class Data
{
/* ... */
Data() {
Counter++;
std::cout << Counter << std::endl;
}
};
std::vector<Data> mArray;
for (int i=0; i <= 200; ++i)
{
mArray.push_back(Data());
}
// And resizing somewhere:
std::cout << "Resizing!\n";
mArray.resize(400, Data());
Run Code Online (Sandbox Code Playgroud)
据我所知,在插入200个项目后,我可以使用resize为每个新元素获取新大小和默认值的函数来调整它.
当我运行该程序时,我看到:
0
1
2
...
199
200
Resizing
201
Run Code Online (Sandbox Code Playgroud)
为什么调整大小后只插入1个项目?
Fre*_*son 12
当添加的条目是复制构造时,您只能看到默认构造函数的计数.您还必须添加一个复制构造函数来计算副本:
Data(const Data& other) {
// Actual copying code, whatever that may be
Counter++;
std::cout << Counter << std::endl;
}
Run Code Online (Sandbox Code Playgroud)