C++ 如何干燥多个连续循环

C++ 如何干燥多个连续循环,c++,dry,C++,Dry,但它看起来有点复杂,我直到写了两次循环。那么,写一个结构对于所有3个循环都是相同的,只改变中间循环中的一条输出线是不是? 你可以向这个lambda添加一个参数: for (int j = 0; j < BOARD_SIZE; ++j) { setcolor(m_board[i][j]); std::cout << color << " " << "\033[m"; } std::cout << std::endl

但它看起来有点复杂,我直到写了两次循环。那么,写一个结构对于所有3个循环都是相同的,只改变中间循环中的一条输出线是不是?

你可以向这个lambda添加一个参数:

for (int j = 0; j < BOARD_SIZE; ++j)
{
    setcolor(m_board[i][j]);

    std::cout << color << "      " << "\033[m";
}

std::cout << std::endl;

for (int j = 0; j < BOARD_SIZE; ++j)
{
    setcolor(m_board[i][j]);

    std::cout << color << "  " << m_board[i][j] << "  " << "\033[m";
}

std::cout << std::endl;

for (int j = 0; j < BOARD_SIZE; ++j)
{       
    setcolor(m_board[i][j]);

    std::cout << color << "      " << "\033[m"; 
}

std::cout << std::endl;
auto draw_blank = [&]()
{
    for (int j = 0; j < BOARD_SIZE; ++j)
    {
        setcolor(m_board[i][j]);

        std::cout << color << "       " << "\033[m";
    }
    std::cout << std::endl;
};

draw_blank();

for (int i = 0; i < BOARD_SIZE; ++i)
{
    setcolor(m_board[i][j]);

    std::cout << color << "  0" << m_board[i][j] << "  " << "\033[m"    
}

std::cout << std::endl;

draw_blank();
自动绘图板=[&](布尔清除)
{
用于(int j=0;j我的天啊,我怎么会错过呢。谢谢你!
auto draw_board = [&](bool clear)
{
    for (int j = 0; j < BOARD_SIZE; ++j)
    {
        setcolor(m_board[i][j]);

        std::cout << color << "  ";
        if (clear)
        {
            std::cout << "  ";
        }
        else
        {
            std::cout << m_board[i][j];
        }

        std::cout << "  \033[m";
    }
    std::cout << std::endl;
};

draw_board(true);
draw_board(false);    
draw_board(true);