初始化二维 std::vector [英] Initializing a two dimensional std::vector

查看:36
本文介绍了初始化二维 std::vector的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以,我有以下几点:

std::vector< std::vector <int> > fog;

我很天真地初始化它:

    for(int i=0; i<A_NUMBER; i++)
    {
            std::vector <int> fogRow;
            for(int j=0; j<OTHER_NUMBER; j++)
            {
                 fogRow.push_back( 0 );
            }
            fog.push_back(fogRow);
    }

而且感觉很不对……有没有其他的方法可以像这样初始化一个vector?

And it feels very wrong... Is there another way of initializing a vector like this?

推荐答案

使用 std::vector::vector(count, value) 接受初始大小和默认值的构造函数:

Use the std::vector::vector(count, value) constructor that accepts an initial size and a default value:

std::vector<std::vector<int> > fog(
    ROW_COUNT,
    std::vector<int>(COLUMN_COUNT)); // Defaults to zero initial value

如果一个非零值,例如 4,需要作为默认值:

If a value other than zero, say 4 for example, was required to be the default then:

std::vector<std::vector<int> > fog(
    ROW_COUNT,
    std::vector<int>(COLUMN_COUNT, 4));

我还应该提到在 C++11 中引入了统一初始化,它允许使用 {} 初始化 vector 和其他容器:

I should also mention uniform initialization was introduced in C++11, which permits the initialization of vector, and other containers, using {}:

std::vector<std::vector<int> > fog { { 1, 1, 1 },
                                    { 2, 2, 2 } };
                           

这篇关于初始化二维 std::vector的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆