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

请注意,您的示例输出包含 30 个值,而不是 36 个值。您的循环仅在包含max_x值之后在迭代中打印字符串。所以在循环结束时,最后一行值在字符串变量中,但从未被打印出来。

于 2014-11-12T23:21:51.077 回答