所以我有一个线性向量,用于通过类存储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
用我需要的值(类函数调用)填充向量。然后更改一些值,例如手动在(0,0)
和(max_x,max_y)
。 (会员功能)
所以说我填充2.38为6x6 = 36大小的矢量然后改变。现在我将要访问的第一个值(向量中的最后一个,反向迭代器中的第一个)更改为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值 ...有什么问题?
我想避免[]
运营商。
答案 0 :(得分:0)
请注意,您的示例输出包含30个值,而不是36个值。您的循环仅在包含max_x
值后的迭代上打印字符串。所以在循环结束时,最后一行值在字符串变量中但从未打印过。