How to initialize 2d vector using constructor in c

2019-07-05 23:47发布

问题:

I know how to initialize 1d vector like this

int myints[] = {16,2,77,29};
std::vector<int> fifth(myints, myints + sizeof(myints) / sizeof(int));

suppose I have 2d data.

float yy[][2] = {{20.0, 20.0}, {80.0, 80.0}, {20.0, 80.0}, {80.0, 20.0}};

How can I initialize a 2d vector ?

回答1:

In C++ 11 you can initialize a vector of vectors like this:

auto yy = std::vector<std::vector<float>>
{
    {20.0, 20.0},
    {80.0, 80.0},
    {20.0, 80.0},
    {80.0, 20.0}
};


回答2:

In current C++ (since 2011) you can initialize such vector in constructor:

vector<vector<float>> yy
{
    {20.0, 20.0},
    {80.0, 80.0},
    {20.0, 80.0},
    {80.0, 20.0}
};

See it alive: http://ideone.com/GJQ5IU.



回答3:

In case you do not know the values beforehand still you can initialize a 2D vector with an initial value.

vector< vector <int> > arr(10, vector <int> (10, 0));

The above code will initialize a 2D vector of 10X10 with all index value as zero(0).



标签: c++ vector