2011-02-05 3 views
3

Возможно ли сделать переменное число переменных? Например, скажем, я хочу объявить некоторые неизвестное количество целых чисел, есть способ, чтобы иметь код автоматически объявитьпеременное число переменных в C++

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

где х является конечным числом переменных, необходимых.

Потенциальное приложение, требующее этого, будет считывать CSV-файл с неизвестным количеством строк и столбцов. Прямо сейчас, единственный способ, которым я могу думать об этом, без переменного числа переменных - это либо двумерный вектор, либо кодирование в большем количестве столбцов, чем, возможно, может быть в любом входном файле, который получает программа

+10

что случилось с массивом? – ircmaxell

+0

@irc: Я думаю, массив не будет работать для него, потому что он все еще имеет ограниченное количество элементов. Но вектор решил бы эту проблему. – xbonez

+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

ответ

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 контейнеры!


EDIT:

Для многомерный, вы можете использовать это:

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

Используйте все, что вам подходит, и упрощает вашу проблему!

+0

О, правда? Я бы сказал, что это переменная с фиксированным количеством элементов (100). –

+0

@Loic: Просмотреть все. Выберите все, что вам нужно! – Nawaz

+0

@Loic: не в случае std :: vector – xbonez

5

Либо использовать std:vector<int> или int* n; n = new int[x];

+0

Приобретено, потому что этот ответ идентичен Навазу, но он получил нижний план? Есть логика. И он затрагивает вопрос ОП. – dcousens

Смежные вопросы