1

在 C++ 中,map课堂非常舒适。我不想使用单独的数据库,而是想将所有行存储为对象,并且我想为map要搜索的列创建对象。我关心一个进程可以处理的最大对象。如果 linux 允许,使用 map 函数在 1000 万个对象中检索一个对象是一个不错的选择吗?我不担心持久化数据。

4

4 回答 4

4

您正在寻找的是std::map::max_size,引用参考:

...反映了容器大小的理论限制。在运行时,容器的大小可能会被限制为小于 max_size() 可用 RAM 量的值。

于 2013-07-29T15:03:08.730 回答
3

正如您在参考文档中看到的那样,常量map::max_size会让您知道数字。

这应该是 iX86 硬件/操作系统上的 2^31-1 和 amd64 硬件/64 位操作系统上的 2^64-1

可能的附加信息在这里

于 2013-07-29T13:18:23.407 回答
3

不,每个进程没有最大对象数。对象(如 C++ 对象)是操作系统不知道的抽象。在这方面唯一有意义的限制是使用的内存量。

我保证,您可以使用尽可能多的资源来完全填满您的 RAM map

于 2013-07-29T14:06:56.327 回答
1

对象是编程语言中的一个概念。事实上,进程并不知道对象。有了足够的 RAM 空间,您就可以在程序中分配尽可能多的对象。关于您的第二个问题,我的回答是您在程序中选择哪种数据结构取决于您要在程序中解决的问题。Map 是一种适用于快速访问对象、测试存在性等的数据结构,但不足以维护对象的顺序。

于 2013-07-29T15:13:41.683 回答