我正在尝试在 stl 集中插入超过 650 万个元素(整数)。这是代码:
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 set 不能分配内存?
编辑:这是完整的代码:http: //ideone.com/rdrEnt
Edit2:显然插入的元素可能并不明显,但这应该不是问题。
Edit3:这是代码的简化版本:http: //ideone.com/dTp0fZ