如何声明具有 1000000 个元素的类 C++

how to declare class with 1000000 elements c++

本文关键字:1000000 元素 C++ 何声明 声明      更新时间:2023-10-16

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

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

现在我需要存储近 1000000 个此类的 elment(取决于用户输入的类对象数量可以在 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 分为两部分的 2D 数组解决问题

arr a[1000][1000];

但是这种方法对我不起作用

如果有人有任何想法,请帮助我解决这个问题提前感谢

我只使用 std::vector

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

我的问题通过@davic Hammen 堆栈无法动态容纳大型数组

来解决

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

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

// Allocating memory
arr *a = new arr[n];
// Example of usage:
cout << a[x].str
// Freeing memory
delete [] a;