2011-02-05 95 views
3

是否可以創建可變數量的變量?例如,說我要宣佈一些未知數量的整數,是有辦法讓代碼自動申報C++中可變數量的變量

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

其中x是必需的變量的最終數目。

需要此功能的潛在應用程序將讀取具有未知行數和列數的.csv文件。現在,我可以考慮做這個沒有可變數量變量的唯一方法是2D矢量,或者編碼多於可能在程序接收的任何輸入文件中的列。

+10

有什麼不對的陣列? – ircmaxell 2011-02-05 04:53:33

+0

@irc:我猜數組不會爲他工作,因爲它的元素數量有限。但是矢量可以解決這個問題。 – xbonez 2011-02-05 04:59:31

+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 2011-02-05 05:30:23

回答

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容器!


編輯:

對於多維,您可以使用此:

//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; 

使用任何適合你,並簡化您的問題!

5

要麼使用std:vector<int>int* n; n = new int[x];