<algorithm>中的c ++ sort()函数是否因大型输入(元素数量)&gt;整数数组的10 ^ 7个元素而失败?

时间:2015-05-10 19:02:29

标签: c++ function sorting

以下代码为大小(元素数量)的输入生成运行时错误&gt; 10 ^ 7个元素。从文本文件中读取元素:

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

int main()
{

    long long int n;
    cin>>n;
    long long int a[n];
    for(long long int i=0;i<n;i++)
    {
        cin>>a[i];
    }
    sort(a,a+n);
    for(long long int i=0;i<n;i++)
    {
        cout<<a[i]<<endl;
    }
    return 0;
}

2 个答案:

答案 0 :(得分:2)

您的代码有两个问题:

  1. 标准C ++不支持可变大小的数组cin n; long long int a[n];
  2. 你可能用完了堆栈内存(10 ^ 7)元素。
  3. 最好的办法是改用std::vector<long long int>

    std::vector<long long int> a(n); // rest of the code will be unchanged
    

答案 1 :(得分:0)

long long int a[n];

这使用了名为variable length arrays的GCC扩展。这些是在堆栈上分配的。堆栈只有几个MiB大,所以你会溢出。

使用vector