gpt4 book ai didi

c++ - 标准 vector 大小调整

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:54:37 26 4
gpt4 key购买 nike

我有一些 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());

据我了解,在插入 200 个项目后,我可以使用 resize 函数调整它的大小,该函数为每个新元素采用新的大小和默认值。

当我运行该程序时,我看到:

0
1
2
...
199
200
Resizing
201

为什么在调整大小后只插入了 1 个项目?

最佳答案

当添加的条目是复制构造时,您只能看到来自默认构造函数的计数。您还必须添加一个计算拷贝的复制构造函数:

   Data(const Data& other) { 
// Actual copying code, whatever that may be
Counter++;
std::cout << Counter << std::endl;
}

关于c++ - 标准 vector 大小调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4606153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com