2012-05-26 2 views
0

У меня есть данные в двумерном массиве с n строками и p столбцами.Как добавить столбец в двумерный массив

Например:

vector<vector<int> > dynamicArray(ROWS, vector<int>(COLUMNS)); 

for(int i = 0;i < dynamicArray.size();++i){ 
     for(int j = 0;j < dynamicArray[i].size();++j){ 
      dynamicArray[i][j] = i*j; 
     } 
} 

Теперь я хочу добавить несколько столбцов в этом массиве. Я попытался следующие (Добавить столбец всех 10s в массив), но если не удалось:

for(int i=0; i < dynamicArray.size(); i++){ 
    dynamicArray[i].push_back(10); 
} 

Есть ли способ сделать это?

Спасибо!

+4

Не удалось, каким образом? –

ответ

1

Я запустил ваш код, и я успешно добавил столбец. Что вы подразумеваете под этим не удалось?

Лично я бы сгладил 2-мерный массив в 1, используя один вектор.

class DynamicMatrix 
{ 
    vector<int> array; 
    int rows; 
    int columns; 
    public: 

    DynamixMatrix(int r,int c):array(vector<int>(r*c)),rows(r),columns(c){}; 

    int getValue(int x,int y) { return array[x+y*c];} 
    int setValue(int x,int y, int v) { array[x+y*c] = v;} 

    void AddRow() 
    { 
     rows++; 
     array.resize(rows*columns); 
    } 
    void AddColumn() 
    { 
     column++; 
     array.resize(rows*columns); 
    } 

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