c++ 有谁能解释一下“std::vector&lt;std::vector< char>&gt; board(3,std::vector< char>(3,' '));”是什么意思[duplicate]

7eumitmz  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(91)

此问题在此处已有答案

Initializing a two-dimensional std::vector(13个回答)
2天前关闭。
我偶然发现了这段代码,用来构建一个井字游戏,但不知道它是什么意思。有人能简单地解释一下吗?

std::vector<std::vector<char>> board(3, std::vector<char>(3, ' '));

字符串
上下文:

void drawBoard(const std::vector<std::vector<char>> &board)
{
    for (const auto &row : board)
    {
        for (char cell : row)
        {
            std::cout << cell << " ";
        }
        std::cout << std::endl;
    }
}

int main()
{
    std::vector<std::vector<char>> board(3, std::vector<char>(3, ' '));
    char currentPlayer = 'X';
    int row, col;
    bool gameOver = false;

hiz5n14c

hiz5n14c1#

该行使用std::vector s constructors之一,两次:

constexpr vector( size_type count,
                  const T& value,
                  const Allocator& alloc = Allocator() );

字符串
此构造函数用于初始化vector,其中value的副本数为count
所以这...

std::vector<char>(3, ' ')


...构造一个charvector,其中有三个元素,所有元素都被初始化为' '(空间)。
在这个...

std::vector<std::vector<char>> board(3, std::vector<char>(3, ' '));
//                                   ^                    ^   ^
//                                   |                    |   |
//                                   |               ^    +-1-+
//                                   |               |
//                                   +-------2-------+


. value_typestd::vector<char>,它制作了std::vector<char>(3, ' ')的三个副本(上图中的2个)(上图中的1个),这使得char的3x3游戏板全部初始化为' '

相关问题