2011-02-05 8 views
3

可変数の変数を作成することは可能ですか?例えば、xが必要な変数の最終的な数がある場合、自動的に可変数の変数をC++で使用する

int n1; 
int n2; 
. 
. 
. 
int nx; 

を宣言し、コードを持ってする方法があり、私は整数のいくつかの未知の数を宣言したいと言います。

これを必要とする可能性のあるアプリケーションは、不明な行数と列数を持つ.csvファイルを読み取る可能性があります。今では変数の数を変えずにこれを行うと考えることができる唯一の方法は、プログラムが受け取る入力ファイルの中にある可能性のあるものよりも多くの列の2次元ベクトルかコーディングです。

+10

を使うのか? – ircmaxell

+0

@irc:まだ要素の数が限られているので、私は推測配列は彼のために動作しません。しかし、ベクトルがその問題を解決するだろう。 – xbonez

+0

私はあなたがeval()関数を探していると思います。 MATLABとActionscriptで動的変数を作成できますが、C++で使用できるかどうかは疑問です。 http://www.google.co.in/search?q=eval+function+in+c%2B%2B&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox- a – Nav

答えて

7

はい。 (!より良いと可能)

int x[100]; //100 variables, not a "variable" number, but maybe useful for you! 

int *px = new int[n];// n variables, n is known at runtime; 

//best 
std::vector<int> ints; //best, recommended! 

についてstd::vectorここで読む:

http://www.cplusplus.com/reference/stl/vector/

をもstd::listや他のSTLコンテナを参照してください!


EDIT:多次元の場合

、あなたはこれを使用することができます。

//Approach one! 
int **pData = new int*[rows]; //newing row pointer 
for (int i = 0 ; i < rows ; i++) 
    pData[i] = new int[cols]; //newing column pointers 

//don't forget to delete this after you're done! 
for (int i = 0 ; i < rows ; i++) 
    delete [] pData[i]; //deleting column pointers 
delete [] pData; //deleting row pointer 

//Approach two 
vector<vector<int>> data; 

使用あなたに合った、そしてあなたの問題を簡素化するものは何でも!

+0

本当ですか?私はそれが要素(100)の固定量の変数だと言うでしょう。 –

+0

@Loic:すべて見る必要なものを選んでください! – Nawaz

+0

@Loic:std :: vectorの場合ではありません – xbonez

5

いずれかの配列と間違って何std:vector<int>またはint* n; n = new int[x];

+0

この回答はNawazと同じですが、downvoteを受け取ったのでアップアップされましたか?論理を調和させる。そしてそれはOPの質問に取り組んでいます。 – dcousens

関連する問題