我需要一種算法,根據每對中的第一個元素對一組數組進行排序。以下代碼適用於v_size <〜2^19,但是,在接近2^19的大小時,由於分段錯誤而崩潰。是什麼原因?大小約爲524000並不是很大。 (我正在使用gcc(Debian 4.7.2-5)4.7.2)Sorting large array of pairs
#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;
}
與地址空間量相比,這並不是很大。但相比* stack *空間的數量... – Jon
你知道它至少會有6288000個字節嗎?超過5千兆字節的內存。這可能比您爲堆棧空間更多。 –
你將如何處理碰撞? –