Как я могу сделать кут быстрее? - PullRequest
6 голосов
/ 25 января 2011

Есть ли способ сделать это быстрее и все еще делать то же самое?

#include <iostream>

int box[80][20];

void drawbox()
{
    for(int y = 0; y < 20; y++)
    {
        for(int x = 0; x < 80; x++)
        {
            std::cout << char(box[x][y]);
        }
    }
}

int main(int argc, char* argv[])
{
    drawbox();
    return(0);
}

IDE: DEV C ++ ||ОС: Windows

Ответы [ 3 ]

4 голосов
/ 25 января 2011

Как сказал Марк Б в комментариях, сначала вывод в строку должен быть быстрее:

int box[80][20];

void drawbox()
{
    std::string str = "";
    str.reserve(80 * 20);

    for(int y = 0; y < 20; y++)
    {
        for(int x = 0; x < 80; x++)
        {
            str += char(box[x][y]);
        }
    }

    std::cout << str << std::flush;
}
2 голосов
/ 25 января 2011

Очевидным решением является объявление массива box по-другому:

char box[20][81];

Тогда вы можете cout строку за раз.Если вы не можете сделать это по какой-либо причине, тогда нет необходимости использовать здесь std :: string - массив char быстрее:

char row[81] ; row[80] = 0 ;
for (int y = 0; y < 20; y++)
  {
  for (int x = 0 ; x < 80 ; x++)
    row[x] = char(box[x][y]) ;
  std::cout << row ;
  // Don't you want a newline here?
  }
1 голос
/ 25 января 2011

Конечно, используйте putchar из stdio.h.

...