0

したがって、クラスを介して 2D 値を格納するために使用している線形ベクトルがあります。値を逆に出力したいと思います...つまり、値(0,0)は左下を(max_x,max_y)占め、右上を占めます...典型的なデカルトグリッドのように。これが私のコードです:

 std::string ss="";
 int i=0;
    for (std::vector<real>::reverse_iterator it= vector.rbegin(); it!=vector.rend();++it)
    {
        if (lineChanger==max_x)
        {
            std::cout<<ss<<std::endl;
            ss=""; lineChanger=0;
        }
        ss=std::to_string(*it) +"|"+ ss;
        lineChanger++;
    }

注: 文字列を使用せずに直接印刷すると、順序が逆になるだけですべて問題ありません。すべてのメンバー関数が機能するようになり ましたメインコードで、std::fill必要な値でベクトルを埋めるために使用します(クラス関数呼び出し)。次に、いくつかの値を変更します (例: at(0,0)および(max_x,max_y)手動)。(メンバー関数)だから、6x6 = 36サイズのベクトルに2.38を入力してから変更したとします。ここで、アクセスする最初の値 (ベクトルの最後、逆反復子の最初) を 3 に変更し、プログラムを実行します。出力:

 2.380000|2.380000|2.380000|2.380000|2.380000|2.380000|
 2.380000|2.380000|2.380000|2.380000|2.380000|2.380000|
 2.380000|2.380000|2.380000|2.380000|2.380000|2.380000|
 2.380000|2.380000|2.380000|2.380000|2.380000|2.380000|
 2.380000|2.380000|2.380000|2.380000|2.380000|2.380000|

それはベクトル全体のサイズです。最初の std::fill 値しか取得できません...何が問題なのですか? []オペレーターを避けたい。

4

1 に答える 1

0

サンプル出力には、36 個の値ではなく、30 個の値が含まれていることに注意してください。ループは、max_x値が含まれた後の反復でのみ文字列を出力します。したがって、ループの最後では、値の最後の行が文字列変数にありますが、出力されませんでした。

于 2014-11-12T23:21:51.077 に答える