标签:std-pair c sorting algorithm stl
我需要一种算法,根据每对的第一个元素对一对数组进行排序.以下代码适用于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());
标签:std-pair,c,sorting,algorithm,stl 来源: https://codeday.me/bug/20190825/1715554.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。