2012-10-06 42 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