如何在类中初始化向量?

时间:2015-10-25 21:43:58

标签: c++ vector

class Suduko
{
private:
    vector<vector<string>> board;
public:
    Suduko() : board(9, vector<string>(9, ".")) {}
}

这是唯一的方法吗?

我已经尝试初始化它,直接用vector<vector<string>> board(9, vector<string>(9, "."));定义了电路板,但这不起作用。

我也尝试过:

Suduko()
{
   board(9, vector<string>(9, "."));
}

Suduko()
{
   board = board(9, vector<string>(9, "."));
}

在构造函数内部,那些也没有工作。所以我仅限于将矢量初始化为我在第一个例子中做的方式(它确实有效)?还是有其他方法可以做到吗?

2 个答案:

答案 0 :(得分:2)

这里列出了一些初始化向量的方法

class Suduko
{
private:
    std::vector<std::vector<std::string>> board { 9, std::vector<std::string>( 9, "." ) };
    //.....
};

class Suduko
{
private:
    std::vector<std::vector<std::string>> board = 
        std::vector<std::vector<std::string>>( 9, std::vector<std::string>( 9, "." ) );
    //.....
};

class Suduko
{
private:
    std::vector<std::vector<std::string>> board;
public:
    Suduko() : board( 9, std::vector<std::string> (9, "." ) ) 
    {
    }
};

class Suduko
{
private:
    std::vector<std::vector<std::string>> board;
public:
    Suduko() : board{ 9, std::vector<std::string> (9, "." ) } 
    {
    }
};

class Suduko
{
private:
    std::vector<std::vector<std::string>> board;
public:
    Suduko()
    {
        board.assign( 9, std::vector<std::string> (9, "." ) ); 
    }
};

答案 1 :(得分:0)

要让其他尝试工作,您必须使用:

board = vector<vector<string>>(9, vector<string>(9, "."));

您也可以使用:

board.resize(9);
for (auto& v : board)
{
    v.resize(9, ".");
}