Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 获取以下cpp代码中的SIGESV错误_C++_Vector - Fatal编程技术网

C++ 获取以下cpp代码中的SIGESV错误

C++ 获取以下cpp代码中的SIGESV错误,c++,vector,C++,Vector,以下cpp代码中出现SIGESV错误,请检查 #包括 使用名称空间std; int main(){ int t; cin>>t; 而(t--){ int n,m; int sa=0,sb=0,c=0; cin>>n>>m; 载体a; 对于(int i=0;i>a[i]; } 载体b; for(int i=0;i>b[i]; } int k=最小值(n,m); 而(k--){ sa=累计(a.开始(),a.结束(),0); sb=累计(b.开始(),b.结束(),0); 如果(sb>=sa){ 交

以下cpp代码中出现SIGESV错误,请检查

#包括
使用名称空间std;
int main(){
int t;
cin>>t;
而(t--){
int n,m;
int sa=0,sb=0,c=0;
cin>>n>>m;
载体a;
对于(int i=0;i>a[i];
}
载体b;
for(int i=0;i>b[i];
}
int k=最小值(n,m);
而(k--){
sa=累计(a.开始(),a.结束(),0);
sb=累计(b.开始(),b.结束(),0);
如果(sb>=sa){
交换(*最小元素(a.begin(),a.end()),
*最大元素(b.开始(),b.结束());
C++;
}否则{
打破
}
}
如果(sb>=sa){

cout载体a的大小和容量为0,且永不改变

此代码已被破坏:

向量a;
对于(int i=0;i>a[i];
}
运算符[]()
不会增长向量。您正在将值分配给不属于
a
的内存

你至少需要
a.向后推(i)
。你可能真正需要的是:

向量a;
a、 储备(n);
对于(int i=0;i>tmp;
a、 推回(tmp);
}
保留内存会阻止向量重新分配。在构造函数中不这样做也会停止所有元素的默认初始化

b
向量也是如此

您也永远不会更改
sa
sb
的值,但这不会使任何内容崩溃,我所看到的只是一个逻辑错误


整个文件中也充斥着不好的做法。“竞争性”编码网站会让你成为一个更糟糕的程序员。

当你在做
cin>>a[i]
时,
a
仍然是空的,因此试图访问它的第i个元素会产生一个segfault。请先用
a.Resize(n)调整它的大小
或使用适当的大小初始化它:
向量a(n);

当您在声明向量时知道需要的大小时,您应该这样声明向量

vector<int>arr(n);

vector<int>arr2(m);
vectorr(n);
矢量阵列2(m);
这将创建一个大小为n的向量,初始化时该向量中所有索引的值都为零


不要使用和尝试为变量命名,它对我们和你都是非常有用的。我知道这是一个复杂的编程问题,但仍然。

在第一个bug之后停止阅读。使用<代码> PuxSuffue/Cuff>将一个新的值追加到向量的末尾。也不要包括,它不是C++的一部分,而是一个头。附带一个编译器。
cin>>a[i];
-->
cin>>a.at(i);
--然后您将看到问题所在,而不是得到SIGSEGV。