gpt4 book ai didi

c++ - while 和 for 循环中的 vector push_back 返回 SIGABRT 信号(信号 6)(C++)

转载 作者:搜寻专家 更新时间:2023-10-31 00:20:34 32 4
gpt4 key购买 nike

我正在制作一个 C++ 游戏,它要求我将 36 个数字初始化为一个 vector 。你不能用初始化列表初始化一个 vector ,所以我创建了一个 while 循环来更快地初始化它。我想让它把每个数字的 4 从 2 推回到 10,所以我使用一个名为 fourth 的 int 来检查循环的数字是否是 4 的倍数。如果是,它会将推回的数字更改为下一个数字。但是,当我运行它时,我得到了 SIGABRT。不过,这肯定是 fourth 的问题,因为当我取出它时,它没有发出信号。这是程序:

for (int i; i < 36;) {
int fourth = 0;
fourth++;
fourth%=4;
vec.push_back(i);
if (fourth == 0) {
i++;
}
}

请帮忙!

最佳答案

你没有初始化i .使用 for (int i = 0; i<36;) .此外,一个新变量 forth在循环体的每次迭代中分配。因此测试fourth==0总是会产生 false .

I want to make it push back 4 of each number from 2 to 10

我会使用最直接的方法:

for (int value = 2; value <= 10; ++value)
{
for (int count = 0; count < 4; ++count)
{
vec.push_back(value);
}
}

我要做的唯一优化是在进入循环之前确保 vector 的容量足够。我会将其他优化留给编译器。我的猜测是,你通过省略内部循环获得的好处,你会因为频繁的模除法而失去。

关于c++ - while 和 for 循环中的 vector push_back 返回 SIGABRT 信号(信号 6)(C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5864043/

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