методы - массив векторов c++




Инициализация вектора векторов, имеющих фиксированный размер с назначением форсирования (3)

Вам не нужно использовать boost для требуемого поведения. Следующее создает vector из 10 vector<int> s, причем каждый vector<int> содержит 10 int s со значением 1 :

std::vector<std::vector<int> > v(10, std::vector<int>(10, 1));

Имея вектор вектора с фиксированным размером,

vector<vector<int> > v(10);

Я хотел бы инициализировать его так, чтобы он имел во всех элементах одномерный вектор с инициализированным значением (например, 1).

Я использовал Boost Assign следующим образом

v= repeat(10,list_of(list_of(1)));

и у меня ошибка компиляции

error: no matching function for call to ‘repeat(boost::assign_detail::generic_list<int>)’

Не могли бы вы рассказать мне, как это сделать. заранее спасибо


Это не использует boost::assign но делает то, что вам нужно:

vector<vector<int> > v(10, vector<int>(10,1));

Это создает вектор, содержащий 10 векторов int , каждый из которых содержит 10 ints .


#include <vector>
#include <iostream>
using namespace std;


int main(){
    int n; cin >> n;
    vector<vector<int>> v(n);
    //populate
    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
            int number; cin >> number;
            v[i].push_back(number);
        }
    }
    // display
    for(int i=0; i<n; i++){
        for(int j=0; j<n; j++){
            cout << v[i][j] << " ";
        }
        cout << endl;
    }
}

Входные данные:

4
11 12 13 14
21 22 23 24
31 32 33 34
41 42 43 44

Вывод:

11 12 13 14
21 22 23 24
31 32 33 34
41 42 43 44




assign