2012-10-06 108 views
0

我仍然是一个...新手,在c + +。 我不知道我正在寻找的名称,但 我一直在寻找很多,但似乎无法找到以下问题的答案: 我想编写一个程序来声明所需的变量数。 例子:程序声明自己的变量

int a; 
cin>>a; 

现在,如果“a”是5(或任何其他数字),我想程序申报5个变量, 名字没有关系,但是我们要说...... N1,N2,N3, N4,N5。 我试过数组和循环,但不能让它工作。 我回答克罗地亚论坛(forum.hr),但目前论坛离线,所以我没有 时间去尝试一下...... 它是关于提前使用堆而不是堆栈 THX

+0

是由用户定义的数字还是恒定的? – user1708860

回答

1

你可以将它们存储在一个数组:

int a; 
cin >> a; 

int *number = new int[a]; // allocate an array of size a 

for (int i = 0; i < a; i++) { 
    number[i] = 5 + i;  // set your numbers to anything here 
} 

delete[] number;    // otherwise you have memory leak 

或更好的使用vector

vector<int> number(a); 

// iterate with a normal for loop 
for (int i = 0; i < number.size(); i++) { 
    number[i] = 5 + i; 
} 

.. 

// or use iterators 
for (vector<int>::iterator it = number.begin(); it != number.end(); ++it) { 
    cout << *it << endl; 
} 

,这样你就不必管理内存。

+2

-1这是这么糟糕的C++代码,它使我的心脏流血。请不要在C++中再次使用'malloc'。在这种情况下根本不要使用手动内存管理。 –

+0

对不起,我以为这是一个C问题。现在我修复了指针的转换.. – none

+0

第一个是GCC中的非标准C++扩展,在其他编译器中不起作用。对于另外两个,你需要释放内存,而对于'malloc',你不应该使用'sizeof(int)',而应该使用'sizeof * number'(因为这会消除类型的重复) –

1

如果这是C++,最好的办法是使用std::vector,因为它会为你管理内存。

+1

+1:谁没有看到*即将到来? – WhozCraig

2

C++ has container classes为此目的。特别是,你想要一个vector

std::vector<int> a(size); 
for (int i = 0; i < a.size(); ++i) 
    std::cin >> a[i]; 

宣布一些大小的整数的向量a并读取它的元素,一个接一个。

+0

矢量对我而言是新的... 矢量的元素可以用作变量吗? 我想对进一步的代码中的值做一些matemathical操作。 我可以通过使用矢量来做到这一点吗? – Kula