2011-02-05 100 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];