-6

私はC++コードを書いています.2つの要素を持つクラスを次のように宣言する必要があります.

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 を 2 つの部分に分割している 2D 配列の助けを借りて問題を解決しようとしました

arr a[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スタックが大きな配列を動的に保持できないため、私の問題は解決されました

于 2013-10-05T12:59:55.187 に答える
1

100,000 要素のクラスを作成しないでください。代わりに、複数の値を保持できる 1 つの要素 (配列) を持つクラスを作成します。

于 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 に答える