stl セットに 650 万を少し超える要素 (int) を挿入しようとしています。コードは次のとおりです。
set<int> s;
cout << s.max_size() << endl;
for(int i = 0; i < T.MULT * T.MAXP; i++) {
s.insert(a[i]);
}
T.MULT
です10
。T.MAXP
です666013
。
a
int a[T.MULT * T.MAXP];
は、個別の要素を含む配列 - 静的に割り当てられた ( ) です。
約 460 万の要素の後、例外s.insert()
がスローされます。bad_alloc
Windows 7 で利用できるリソース モニターでは、空きメモリが 3 GB 残っていると表示されます。私は何を間違っていますか?STL セットがメモリを割り当てられないのはなぜですか?
編集: 完全なコードは次のとおりです: http://ideone.com/rdrEnt
Edit2: 明らかに、挿入された要素は結局区別できないかもしれませんが、それは問題ではありません。
Edit3: これはコードの簡略版です: http://ideone.com/dTp0fZ