C++中可变数量的变量
问题描述:
是否可以创建可变数量的变量?例如,说我要宣布一些未知数量的整数,是有办法让代码自动申报C++中可变数量的变量
int n1;
int n2;
.
.
.
int nx;
其中x是必需的变量的最终数目。
需要此功能的潜在应用程序将读取具有未知行数和列数的.csv文件。现在,我可以考虑做这个没有可变数量变量的唯一方法是2D矢量,或者编码多于可能在程序接收的任何输入文件中的列。
答
是的。 (!好,可能)
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;
使用任何适合你,并简化您的问题!
答
要么使用std:vector<int>
或int* n; n = new int[x];
有什么不对的阵列? – ircmaxell 2011-02-05 04:53:33
@irc:我猜数组不会为他工作,因为它的元素数量有限。但是矢量可以解决这个问题。 – xbonez 2011-02-05 04:59:31
我想你正在寻找一个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