类似的代码.一个工作,一个崩溃.为什么?

Similar code. One works, one crashes. Why?

本文关键字:一个 崩溃 为什么 工作 代码      更新时间:2023-10-16

我正在使用Code::Blocks 10.05中的C++为欧拉项目解决一个问题,发现我的程序在一个奇怪的地方崩溃:初始化。 下面是重现该问题的代码片段。

#include <iostream>
#include <vector>
#include <deque>
using namespace std;
vector<deque<uint32_t> > f;
int main()
{
deque<uint32_t> p;
deque<uint32_t>::iterator dit1,dit2;
p.push_back(0);
p.push_back(1);
f.push_back(p);
cout << f.back().size() << endl;
cout << "f= ";
for(dit1==f.back().begin();dit1!=f.back().end();dit1++) cout << *dit1 << " ";
cout << "Checkpoint" << endl;
return 0;
}

在这里发布之前,我尝试了一个测试程序,看看我是否可以找出问题所在。

#include <iostream>
#include <deque>
#include <vector>
using namespace std;

int main(void)
{
uint64_t i;
deque<uint32_t> d;
vector<deque<uint32_t> > vd;
deque<uint32_t>::iterator it;
for(i=1;i<=5;i++) d.push_back(i);
vd.push_back(d);
for(it=vd.back().begin();it!=vd.back().end();it++) cout << *it << " ";
return 0;
}

第一个程序崩溃,而第二个程序正确重现双端。 除了变量名,我看到的唯一主要区别是第一个程序使用全局变量,而测试程序使用局部变量。 那么为什么第一个程序在 for 循环中崩溃而第二个程序没有呢?

您在第一个程序中的 for 循环中使用了==而不是=