6

これをより速く実行し、それでも同じことを行う方法はありますか?

#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: 開発 C++ || OS: Windows

4

3 に答える 3

4

Marc Bがコメントで述べたように、最初に出力を文字列に入れる方が速いはずです。

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;
}
于 2011-01-25T02:26:57.030 に答える
2

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?
  }
于 2011-01-25T09:01:25.690 に答える
1

もちろん、putcharfromを使用してstdio.hください。

于 2011-01-25T02:16:50.943 に答える