我有一个可以容纳4个整数的类。我需要创建上述类的100万个实例。我应该如何创建..?

天真的方法是:
类arrMyObjectes [1000000];

但是它需要一百万* sizeof(obj)= 1600万字节的连续内存块****,这将很难获得。.

更好的方法是:
*类别arrMyObjectes [1000000];

现在我们将使用和新的创建1000000个对象,并将指针存储在上述指针数组中……即使在这种情况下,我们也需要1,000,000 * sizeof(pointer)= 400万字节的连续内存块。很难得到..

还有其他更好的方法吗?

最佳答案

std::deque<Class> objects(1000000);std::list<Class> objects(1000000);呢?这些容器是不连续的。

如果实现尝试为那些构造函数获取一个连续的块,则可以单独生成它们:

std::deque<Class> objects;
for(unsigned i = 0; i < 1000000; ++i)
    objects.emplace_back();

std::list相同。

引用: std::deque std::list

关于c++ - 内存组织大数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29080461/

10-11 17:21