gpt4 book ai didi

c++ - 对大量对进行排序

转载 作者:太空狗 更新时间:2023-10-29 20:25:32 26 4
gpt4 key购买 nike

我需要一种算法,根据每对的第一个元素对数组对进行排序。以下代码适用于 v_size<~2^19,但是,在接近 2^19 的大小时,它会由于段错误而崩溃。是什么原因? ~524000 的大小并不大。 (我正在使用 gcc (Debian 4.7.2-5) 4.7.2)

#include <iostream>
#include <algorithm>
#include <iterator>
#include <time.h>

using namespace std;


int main( int argc, char ** argv )
{
srand(time(NULL));

int v_size=524000;
std::pair<double, int> AB_large[v_size];

for( int i = 0; i<v_size; ++i)
{
AB_large[i].first = static_cast <double> (rand()) / static_cast <double> (RAND_MAX);
AB_large[i].second = i;
}

std::sort(AB_large, AB_large+v_size);
return 0;
}

最佳答案

看起来像堆栈溢出。

尽量不要对这么大的对象使用自动变量:

std::vector< std::pair<double, int> >AB_large(v_size);

// ...

std::sort(AB_large.begin(), AB_large.end());

关于c++ - 对大量对进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23496023/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com