![](/img/trans.png)
[英]Can you program a GUI in C++ that works on both Windows and Linux operating systems?
[英]A C++ Program which works fine in online compilers and linux operating systems, but not on Windows
编译问题时:
Geeks For Geeks:Windows 操作系统上的第一个重复元素我注意到我的解决方案没有得到任何 output。 但是当我在 Linux 操作系统和在线编译器上编译相同的代码时,它工作得非常好,没有产生任何错误。
代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin>>n;
int arr[n];
for(int i=0; i <n; i++) {
cin>>arr[i];
}
int size= 1e6+1; // WA on windows
int A[size];
int min_index=INT_MAX;
for(int i=0; i<size; i++) {
A[i]=-1;
}
for(int i=0; i<n; i++) {
if(A[arr[i]]!=-1)
min_index=min(min_index, A[arr[i]]);
else
A[arr[i]]=i;
}
if(min_index==INT_MAX)
cout<<"-1";
else
cout<< min_index+1;
return 0;
}
示例测试用例:
7
1 5 3 4 3 5 6
预期 output:
2
Output 上 Windows:截图
Linux 上的 Output:截图
代码第 14 行对程序的解释:
我创建了一个大小为1e6+1
的数组A
以将值i
存储在其arr[i]
th 索引上。
数组A
早先用值-1
初始化。 它运行n
次,变量min_index
存储数组arr
中重复次数最少的索引。
在初始化数组int size = 10
的较小值并使用非常小的测试用例后(arr[i] 的最大值也小于A
大小;我意识到该程序在 Windows 中完美运行。
据我了解,Windows 在初始化如此大长度的 arrays 时可能会遇到一些麻烦(如果我错了,请纠正我)。 但是为什么在 Linux 的情况下不一样呢?
#include <bits/stdc++.h>
不是标准的 C++,因此您不应该期望它是可移植的。
int arr[n];
不是标准的 C++。 一些编译器提供可变长度 arrays 作为扩展,但它不是可移植的。 同样适用于int A[size];
.
遗憾的是,该站点上提供的大多数 C++ 代码不是正确的 C++ 代码,而是一些方言。
有关更多详细信息,请参阅:为什么我不应该#include <bits/stdc++.h>? 为什么不可变长度 arrays C++ 标准的一部分? . 问答还应该解释标准的便携式替代品。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.