初始化具有升压分配固定尺寸的向量的向量(Initializing a vector of vecto

2019-07-03 10:23发布

具有矢量的矢量具有固定尺寸,

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

我想,使得它在所有元素与初始化值(例如1)的一个维向量进行初始化。

我已经使用升压分配如下

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

和我有一个编译错误

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

你能告诉我该怎么做。 提前致谢

Answer 1:

这不使用boost::assign ,但确实你需要:

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

这产生含有10个向量的向量int ,每个包含10 ints



Answer 2:

你并不需要使用boost为所需的行为。 下面创建一个vector10 vector<int> S,与每个vector<int>含有10 int s的一个值1

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


Answer 3:

我只是试图解释给那些新的C ++。 verctors的载体mat有可以在使用几乎没有成本直接访问它的元素的优点[]操作者..

int n(5), m(8);
vector<vector<int> > mat(n, vector<int>(m));

mat[0][0] =4; //direct assignment OR

for (int i=0;i<n;++i)
    for(int j=0;j<m;++j){
        mat[i][j] = rand() % 10;
    }

当然这不是唯一的方式。 如果你不添加或删除元素,还可以使用本机的容器mat[]这只不过是指针了。 这里是我最喜欢的方式,用C ++:

int n(5), m(8);
int *matrix[n];
for(int i=0;i<n;++i){
    matrix[i] = new int[m]; //allocating m elements of memory 
    for(int j=0;j<m;++j) matrix[i][j]= rand()%10;
}

这样,您就不必使用#include <vector> 。 我们希望,它更清晰!



Answer 4:

#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


文章来源: Initializing a vector of vectors having a fixed size with boost assign