如何使用默认值创建2D矢量数组?

时间:2017-01-06 16:30:11

标签: c++ c++11

如何创建NxM 2D int矢量并为其创建默认值?

这里我尝试使用一些值创建一个3x3 int向量:

 getEToken: function() {
            return this._omexEntitlement ? this._omexEntitlement.etoken : this._etoken
        },

但这个错误与

有关
vector< vector<int> > m(3, vector<int> (3)) = {
    {1,2,9},
    {8,4,7},
    {5,6,0}
   };

我也在使用c ++ 11,所以上述语法不应该正确吗?根据{{​​3}},它应该没问题?

2 个答案:

答案 0 :(得分:1)

如果删除括号中的内容,它可以正常工作。尺寸由初始化列表的大小决定。如果您想自己指定尺寸,可以使用std::array

std::vector< std::vector<int> > m= {
    {1,2,9},
    {8,4,7},
    {5,6,0}
   };

初始化数组有点不同。见this question。你需要双括号。

#include <array>
std::array< std::array<int, 3>, 3 > m= {{
    {1,2,9},
    {8,4,7},
    {5,6,0}
    }};

答案 1 :(得分:0)

括号中的代码为vector的构造函数提供参数:

vector<vector<int>>(3, vector<int>(3));

这将创建一个包含三个vector类型元素的新向量,每个元素内部都有三个整数。因此,在这种情况下,中的没有null s

此代码:

vector<vector<int>> test = 
    { {3,4,5},
       {4,5,6} };

使用另一个构造函数,它接受初始化列表并自行推导出结果向量的大小。

这些是不同的构造函数!当您使用Type object(arg1, arg2);表示法构造对象时,您基本上调用了Type的构造函数。您正在调用函数,当然您无法添加函数调用。