2013-05-12 61 views
-3

我想创建一个包含变量大小(n1 n2 3和n4)的4个向量的列表,并且全部填充为0 我该怎么做?我可以做一个list<vector<float> > mylist但是如何将mylist [0]的大小设置为n1等?向量列表(C++)

回答

7
// on a C++11 enabled compiler 
std::list<std::vector<float>> listofvectors = { 
    std::vector<float>(n1, 0.f) 
    , std::vector<float>(n2, 0.f) 
    , std::vector<float>(n3, 0.f) 
    , std::vector<float>(n4, 0.f) 
}; 
// or more traditional 
std::list< std::vector<float> > listofvectors; 
listofvectors.push_back(std::vector<float>(n1, 0.f)); 
// so forth 
+3

这是格式化逗号的一种不寻常的方式。 :P – 2013-05-12 13:45:34

+0

谢谢,很抱歉成为一个新手,但为什么你写0.f而不是0?一些与浮动有关的东西?我们不能只写0吗? – user2370139 2013-05-12 13:48:35

+0

@sftrabbit不,为什么? Boost总是使用它,在指定初始化列表时会更好,因为第一个字符是':',接下来是逗号,因此格式化这些行更加容易。我猜,我们还没有看到多行初始化列表中的“标准”方式。 – 2013-05-12 14:00:39

2

你必须将这些载体添加到您的列表:

mylist.push_back(vector<float>(n1, 0.f)); 
mylist.push_back(vector<float>(n2, 0.f)); 
mylist.push_back(vector<float>(n3, 0.f)); 
mylist.push_back(vector<float>(n4, 0.f)); 

vector构造函数接受两个参数将会创建一个与所有设置为第二个参数的值(第一个参数)的元素。