请指定矢量列表的范围....
我想在vector<>。
中存储数百万条记录我必须从一个矢量<>复制数百万条记录到另一个向量<>然后对向量进行排序并应用我的过滤函数(唯一ID)来检索记录。
这可能在vector
中此致 KARTHIK
答案 0 :(得分:8)
矢量的最大大小是什么....
我想你已回答了自己的问题。
使用函数vector<T>::max_size()
可以获得系统的理论限制。例如:
vector<int> vec;
std::cout<<vec.max_size()<<std::endl;//prints max size for vector<int> in your system!
所以,只需运行此命令并查看系统的答案。
但实际上,向量的已分配数组必须位于一个连续的内存块中,即使内存分配较小,内存分配也可能失败。如果你打算使用具有百万元素的int的向量,我认为你应该没有任何问题。但是对于较大的物体,它可能会有问题。
答案 1 :(得分:0)
除可用内存外没有任何限制。但是:向量要求所有内存都在一个连续的内存区域中。如果你想存储一百万条记录,可能没有这么大的内存区域。
在这种情况下,最好使用deque
代替vector
。
答案 2 :(得分:-2)
我在我的电脑上测试它。 Windows 7 32位。
结果是2^32/sizeof(CPoint3D)-1=268435455
,sizeof(CPoint3D)
是16。
但max_size
没什么。之后,显示m_point1.reserve(25641355)
,“Out of Memory”。
25641355 < 268435455