C++ 如何减少C++;

C++ 如何减少C++;,c++,for-loop,C++,For Loop,如何将以下程序减少到2个for循环和1个print语句: for (int i = 1; i <= iter; i++) { for (int j= 1; j <= row; j++) { printf("*"); for (int k = 1; k <= col; k++) { printf("_&qu

如何将以下程序减少到2个for循环和1个print语句:

for (int i = 1; i <= iter; i++)
    {
        for (int j= 1; j <= row; j++) 
        {
            printf("*");
            for (int k = 1; k <= col; k++)
            {
                printf("_");
            }
            printf("*\n");
        }
        printf("\n\n\n");
    }
for(int i=1;i
  • 您可以使用连接所有要打印的内容,以减少打印语句
  • 您可以使用构造函数
    basic\u字符串(size\u type count,CharT ch,const Allocator&alloc=Allocator());
    来消除最里面的
    for
    循环
std::string ret=”“;

对于(inti=1;i您可以使用乘法和除法中的rest合并任何循环计数(只是乘法不能溢出)

void f(int iter、int行、int列){
对于(int i=0;i
使用range-v3库,您根本不需要任何循环

namespace rv = ranges::views;

auto line = "*" + std::string(col, '_') + "*\n";

auto block = rv::repeat_n(line, row) | rv::join;

auto result = rv::repeat_n(block, iter) | rv::join("\n\n\n");

std::cout << (result | ranges::to<std::string>);
namespace rv=ranges::views;
auto line=“*”+std::字符串(列,'.')+“*\n”;
自动闭塞=rv::重复(行、行)| rv::连接;
自动结果=rv::重复(块,iter)| rv::连接(“\n\n\n”);

为什么只有两个循环?三个循环有什么问题?为什么有两个循环?为什么不减少到一个或零?我的老师只要求我们写三个说明,所以她要求我们这样写。嘿,我已经思考了一个多小时了。我不想打扰你,但你能简单地解释一下,这样我就能理解为什么和它是如何工作的。
void f(int iter, int row, int col) {
  for (int i = 0; i < iter * row * col; i++) {
    printf("%s%s%s%s", 
           i % col == 0 ? "*" : "",
           "_",
           i % col == col - 1 ? "*\n" : "",
           i % (row * col) == (row * col) - 1 ? "\n\n\n" : "");
  }
}
namespace rv = ranges::views;

auto line = "*" + std::string(col, '_') + "*\n";

auto block = rv::repeat_n(line, row) | rv::join;

auto result = rv::repeat_n(block, iter) | rv::join("\n\n\n");

std::cout << (result | ranges::to<std::string>);