Генерация матрицы в C ++ - PullRequest
0 голосов
/ 08 февраля 2011

У меня есть следующий код:

for (int w=0; w<10; w++)
{
    //some lines of code
    unsigned long num = x.to_ulong(); 
    cout << "Decimal form is: " << num << endl;
}  

Теперь я хочу создать матрицу, которая будет иметь эти значения num по столбцам. Например, matrix[i][j], где i от, скажем, "от 0 до 15", а "j" также от "от 0 до 15". Я хочу, чтобы они поставили как, matrix[0][0], затем matrix[0][1], matrix[0][2] и так далее, что-то вроде:

for(int i=0; i<=15; i++)
{
    for(int j=0; j<=15; j++)
        matrix[i][j] = num //here is problem, value of "num" what shall i write instead of it?
}

Ответы [ 2 ]

2 голосов
/ 08 февраля 2011

Вот какой-то псевдокод ..

std::vector<std::vector<unsigned long> > matrix(15); // 15 rows
typedef std::vector<std::vector<unsigned long> >::iterator it_type;

it_type row = matrix.begin();

for (int w=0;w<10;w++)
{
  //some lines of code
  unsigned long num = x.to_ulong(); 
  cout <<"Decimal form is: " << num<< end;
  // if we've hit 15 items in the current row (i.e. 15 columns), then shift to the next row
  if (row->size() == 15)
    ++row;

  // add this to the next column in the current row
  row->push_back(num);
}
// resize the last row
row->resize(15); // this will ensure that there are 15 columns in the last row

ПРИМЕЧАНИЯ: вам придется выполнить некоторую проверку границ (например, если число больше 15 * 15, увеличение итератора row приведет к дерьму ... и т. Д.)

РЕДАКТИРОВАТЬ: отображать, повторять как обычный массив, например:

for(size_t i=0; i < matrix.size(); ++i)
{
  for(size_t j=0; j < matrix[i].size(); ++j)
    cout << matrix[i][j] << " ";
  cout << endl;
}
0 голосов
/ 08 февраля 2011

Стандартный ответ "use Boost":

Если вам просто нужен двумерный массив, посмотрите Boost.MultiArray .

Если вам нужна линейная алгебра, посмотрите Boost.uBlas .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...