-6

我正在编写一个 c++ 代码,我需要声明一个具有两个元素的类

class arr{
    public:
        long num;
        string str;
};

现在我需要存储这个类的近 1000000 个元素(取决于用户输入的类对象的数量可以在 1 <= n <= 1000000 的范围内警告对象是动态创建的

#include <iostream>
#include<string>

using namespace std;

class arr{
    public:
        long i;
        string str;
};

int main(){
    long n,j,i;
    cin>>n;
    arr a[n];

.... 程序的其余部分

但是如果 n 的值大于 100000 则程序挂起但对于小于 100000 的值可以正常工作我应该尝试什么方法一次声明超过 100000 个对象我尝试借助将 arra 分为两部分的二维数组来解决问题

arr [1000] [1000];

但这种方法对我不起作用

如果有人有任何想法请帮我提前谢谢

4

3 回答 3

6

我只是使用 std::vector

#include <iostream>
#include <vector>

int main(){
    long n;
    cin>>n;
    std::vector<arr> a(n);
}

我的问题解决了@davic Hammen stack can not hold large array dynamic

于 2013-10-05T12:59:55.187 回答
1

不要创建一个包含 100,000 个元素的类。相反,创建一个类,其中一个元素可以保存多个值——一个数组。

于 2013-10-06T03:04:37.407 回答
0

您可以像这样创建数组,而不是在堆栈上声明它们:

// Allocating memory
arr *a = new arr[n];

// Example of usage:
cout << a[x].str

// Freeing memory
delete [] a;
于 2013-10-05T12:59:34.373 回答