gpt4 book ai didi

c++初始化结构 vector 的正确方法

转载 作者:行者123 更新时间:2023-11-30 02:29:29 31 4
gpt4 key购买 nike

我在这里搜索了很多,但对于我这个高级 C++ 新手来说,没有正确的解释。我之前使用结构 vector ,现在遇到段错误...

这就是为什么我想知道这些对象实际上是如何工作的,以及我的做法是否正确!

我有一个类似的结构

struct numberOfSpecies {
int predator;
int prey1;
int prey2;
};

及其 vector :

std::vector<numberOfSpecies> size;

在我调整它的大小并用值填充它之前。

size.resize(100);

这到底是做什么用的?这适合结构吗?看起来它是用零初始化的……

现在我这样做:

size[t].predator=0;
size[t].prey1=0;
size[t].prey2=0;

for(int k = 0; k < N; ++k){
size[t].predator++;
size[t].prey1++;
size[t].prey2++;
}

这样对吗?可能的问题在哪里?如何做得更好?

最佳答案

这里最简单和“正确”的解决方案可能是只使用属于具有聚合初始化的 vector 对象的 resize() 函数(如果您可以访问 c++11 及更高版本) , 像

size.resize(100,{0,0,0}); //aggregate initialization 

for(int k = 0; k < N; ++k)
{
size[t].predator++;
size[t].prey1++;
size[t].prey2++;
}

每个 numberOfSpecies 对象的所有成员都将被初始化为 0。

关于c++初始化结构 vector 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39409419/

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