向量<> :: maxsize()的最大大小是多少?

时间:2011-03-29 07:20:16

标签: c++ visual-c++ stl

请指定矢量列表的范围....

我想在vector<>。

中存储数百万条记录

我必须从一个矢量<>复制数百万条记录到另一个向量<>然后对向量进行排序并应用我的过滤函数(唯一ID)来检索记录。

这可能在vector

此致 KARTHIK

3 个答案:

答案 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=268435455sizeof(CPoint3D)是16。 但max_size没什么。之后,显示m_point1.reserve(25641355),“Out of Memory”。

25641355 < 268435455