【发布时间】:2014-11-12 22:55:09
【问题描述】:
所以我有一个线性向量,用于通过一个类存储 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) 手动。 (成员函数)
所以说我为一个 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 值...怎么了?
我想避免[]operator。
【问题讨论】:
标签: c++11 vector reverse-iterator