Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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++ 为什么这个c++;在devc++;但不是在网站上?_C++_Arrays_Runtime Error - Fatal编程技术网

C++ 为什么这个c++;在devc++;但不是在网站上?

C++ 为什么这个c++;在devc++;但不是在网站上?,c++,arrays,runtime-error,C++,Arrays,Runtime Error,此代码接受整数数组的输入,其中1≤ a[i]≤ n(n=数组大小),一些元素出现两次,其他元素出现一次。我们必须归还丢失的号码 输入: [4,3,2,7,8,2,3,1] 输出: [5,6] 在DEVC++中,它工作得很好,但是当我提交一个叫做LeeCal码的网站时,它给了我以下的错误 运行时错误消息: 第924行:字符9:运行时错误:引用绑定到“int”类型的空指针(stl_vector.h)摘要:UndefinedBehaviorSanitizer: 未定义的行为 /usr/bin/./li

此代码接受整数数组的输入,其中1≤ a[i]≤ n(n=数组大小),一些元素出现两次,其他元素出现一次。我们必须归还丢失的号码

输入: [4,3,2,7,8,2,3,1] 输出: [5,6]

在DEVC++中,它工作得很好,但是当我提交一个叫做LeeCal码的网站时,它给了我以下的错误

运行时错误消息:

第924行:字符9:运行时错误:引用绑定到“int”类型的空指针(stl_vector.h)摘要:UndefinedBehaviorSanitizer: 未定义的行为 /usr/bin/./lib/gcc/x86_64-linux-gnu/8/../../../../../../../../include/c++/8/bits/stl_vector.h:933:9

vector findDisappearedNumbers(vector&nums)
{   
向量温度;
const int len=nums.size();
int j=0;
//对数组进行排序
排序(nums.begin(),nums.end());
//将非重复数字添加到临时向量中

对于(int i=0;i执行此操作时,向量
temp
为空:

temp[j++]=nums[i];

所以你正在访问元素之外。这是你不能对结果有任何期望的。任何事情都可能发生。一旦你的代码包含了ub,编译器就不再有任何义务。

它在DeV C++中看起来很好。因为另一个编译器的错误信息说,你的代码中有未定义的行为。杰斯珀已经有了。指针一。 另一个例子是:

if(nums[i]!=nums[i+1])
在上一次迭代中,
i
等于
len-1
,因此
nums[i+1]
尝试读取不存在的
num[len]
。 您需要将循环更改为:

for(int i=0;i<len-1;i++)


作为一个旁注。在结尾有一个函数来清除一个向量/添加一个元素。你可以找到完整的列表。

DEVC++和LeTeCKE使用不同的编译器。根据需要,使用“代码>CLAN 9 < /Cord>@ TangeNangKon”,如果代码正确,它应该在任何标准兼容编译器上编译。;所以我尝试了这个,它说“Heap buffer overflow”@NagasaiPsv如果你想在向量的末尾添加元素,你可以直接使用。你甚至不需要存储
j
for(int i=0;i<len-1;i++)
for(int i=0;i<temp.size();i++)