C++参数化构造函数使代码在传递大输入时停止工作
C++ parameterized constructor makes code to stop working when large input's are passed
void initialize(int arr[], int size[], int n)
{
int i;
for(i = 1; i <= n; i++) {
arr[i] = i;
size[i] = 1;
}
}
class hell
{
public:
int edges;
int vertices;
pair<int , pair<int,int>> p[100000];
int disjoint_set[10000];
int cc_size[10000]; // size of connected components
hell(int e, int v)
{
edges = e;
vertices = v;
initialize(disjoint_set, cc_size, vertices);
}
};
在以下类中,当我使用vertices=100000
和edges=100000
创建对象时,代码停止工作。但是,当我们删除initialize(disjoint_set, cc_size, vertices)
时,它会开始工作。我对这种行为没有任何线索。请引导我。
c 中的数组为零索引,这意味着有效索引在[0..n [range]中。您的代码做错了:
for(i = 1; i <= n; i++) {
arr[i] = i;
size[i] = 1;
}
应该是:
for(i = 0; i < n; i++) {
arr[i] = i + 1;
size[i] = 1 + 1;
}
或更好地使用Algo std :: iota((和std :: fill((:
std::iota( arr, arr + n, 1 );
std::fill( size, size + n, 1 );
您最好使用std :: vector,它将正确调整其尺寸,而不是具有巨大的数组。
相关文章:
- Visual Studio 2017 停止工作,并在打开后显示许多控制台窗口
- 实现 DFS 在较短的输入下工作正常,但在较大的输入下会抛出分段错误
- 自 Windows 10 20H1 以来,具有单独线程的多个窗口停止工作
- C++代码停止工作错误使用cout内部函数
- LoadImage 在 Windows 更新后停止工作
- C++程序工作,但 Windows 显示"程序.exe已停止工作"
- VS 代码 C/C++ 智能感知在更新后停止工作
- 不使用与左右停止工作命名空间 std 的简单比较
- 在"0"输入停止循环之前正确执行 while 循环?
- 为什么通过定义另一个指针单元格,整个代码停止工作?
- 德拉吉诺 LG01-S 收到异常数据包并停止工作
- G++ 在生成文件中使用时停止工作
- 当循环在条件C++之前停止工作时
- GCC:--静态链接到pthread的整个存档配方在最近的GCC版本中停止工作
- 正则表达式代码无缘无故停止工作
- 当我尝试输入时程序停止工作
- C++参数化构造函数使代码在传递大输入时停止工作
- 为什么我的程序在输入main()之前停止工作
- 找出一个正方形逻辑中可能的网格数量,但代码不接受超过六个输入,它停止并说.exe停止工作
- 而循环在第二个用户输入C++后停止工作