下面我写了一个C++函数,它通过一个整数向量进行循环。每通过一次,它就从所有的数字中减去最小的数字。它应该在每次传递时返回非零元素的数量(这存储在向量结果中并返回)。然而,每当我尝试运行时,我都会得到“std::bad_alloc”。当删除行“flag=true”时,错误就会消失。我将需要它工作,以便while循环中断。帮我修好这个。
vector<int> cutTheSticks(vector<int> arr) {
int flag=true, min, count;
vector<int> result;
while(flag)
{
min = arr[0];
flag = false;
count = 0;
for(int i=1; i<arr.size(); i++)
{
if(arr[i]<min)
{
min=arr[i];
}
}
for(int i=0; i<arr.size(); i++)
{
if(arr[i]!=0)
{
count++;
flag = true;
}
arr[i] = arr[i]-min;
}
result.push_back(count);
}
return result;
}
考虑输入[0,1]
。
最小值是0,所以从每个元素中减去0(不做任何操作)。由于第二个元素是1(而不是0),您设置flag=true
。
除了推回到result
向量之外,此循环中没有任何更改。因此循环将重复,直到vector
耗尽内存(或超过其max_size
)。
正如我在标题中所述,我只是不明白为什么这个函数会抛出<code>std::bad_alloc</code>。如果我们看一看cppreference,所有三种可能的实现都是如有人所假设的,并且看起来没有特别需要动态内存分配。
我是一个菜鸟,我在跟着 swift 官方文档进行学习。 ↓这是官方的示例图片,以证明我没有写错 示例代码如下,以便于大家复制 但是我在 Xcode 中却无法编译成功(最后 struct... 不是我自己改的,文件创建出来就是这样的,好像是写法改了)
问题内容: DataflowAnomalyAnalysis:找到变量“ variable”(行“ n1”-“ n2”)的“ DD”异常。 DataflowAnomalyAnalysis:找到变量“ variable”(行“ n1”-“ n2”)的“ DU”异常。 DD和DU听起来很熟悉…我想在涉及最差的前后条件的测试和分析中说些什么,但我不记得具体情况。 NullAssignment:将Objec
我对编程很陌生,我已经自学了将近一个月了,有谁能给我解释一下我代码中错误的原因吗?在“Total(moneyConv(moneySum*moneyRate))”中出错。行,表示实际和形式的论点在长度上是不同的。我检查了我所有的参数,我觉得很好。多谢!
PHP 7.3.4中preg_replace()函数未生效的原因是什么? 我在学习日常英语是收集了这样一个txt的文本,文件名eng.txt: 我想用php来处理下这个文本文件,去掉多余的回车。 不过通过运行,发现并没有达到预期的效果。 如下才是我觉得应该返回的效果。 以上结果我是用python 实现的,正则替换规则一样,希望得知为什么会在php中不行
我有一个Visual Studio 2008 C++03应用程序,使用在Windows XP SP3中运行的Boost 1.47.0。 调用引发异常。 在“输出”窗口中,我看到一条调试堆消息:“heap[test.exe]:无效的分配大小-CDCDCDCE(超出7FFDEFFF)” callstack显示boost.filesystem正在创建一个新的区域设置和Microsoft标准库文件xloc