2017-08-21 3 views
-2

は私が名前で32の1D配列を宣言したいefficiency_module_cmp_%D_X、%dは1から16とに行くefficiency_module_cmp_%d_y、%dは1 16に私はこれを行うには、次のコードを使用していますから行くが、これは動作していません。何が問題なのですか:forループで同様の名前の複数の配列を宣言するにはどうすればよいですか?

char array_name[100]; 
char array_name1[100]; 


for (int i=0; i<16;i++) 
{ 

    sprintf(array_name,"efficiency_module_cmp_%d_x",i+1); 
    float array_name[n] ; 
    sprintf(array_name1,"efficiency_module_cmp_%d_y",i+1); 
    float array_name1[n] ; 

} 

解決策を提案してください。

+3

CまたはC++では、実行時に型またはオブジェクトの名前を作成できません。なぜあなたはこれを行う必要があると思いますか? –

+0

彼はマクロにいる可能性があります –

+2

@Flip実行時ではありません。 –

答えて

1

実行時にオブジェクトの名前を作成することはできません(C++は静的に型指定されています)。代わりに、あなたは配列のベクトル(またはその他の容器)を作成し、そのようなコンテナの裏にあなたの配列をプッシュすることができます。vectorOfArrays[3];

:次に、あなたがこのようなあなたのアレイの1つにアクセスすることができます

#include <vector> 
int main() 
{ 
    std::vector<char*> vectorOfArrays; 
    for (int i = 0; i < 16; i++) { 
     vectorOfArrays.push_back(new char[10]); 
    } 
    return 0; 
} 

+0

ありがとう、私は私が上記のソリューションを使用したいと思ったことをすることができます。出来た。 –

関連する問題