gpt4 book ai didi

c++ - 如何干燥多个连续的 for 循环

转载 作者:搜寻专家 更新时间:2023-10-31 02:16:20 25 4
gpt4 key购买 nike

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;

这就是我的代码(它们都嵌套在另一个 for 循环中,因此是 i)。第一个和最后一个循环是相同的,中间的循环只是输出变量而不是空格。我尝试将顶部和底部循环放入 lambda 中,如下所示:

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();

但它看起来有点复杂,我直到写了两次循环。那么编写一个对所有 3 个循环都相同的结构并且只更改中间循环中的一个输出行是否有问题?

最佳答案

您可以像这样向您的 lambda 添加参数:

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);

关于c++ - 如何干燥多个连续的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37045709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com