迭代器和2d矢量

时间:2009-11-17 04:03:17

标签: c++ stl vector iterator

vector< vector<int> >::iterator temp = mincost.end();
vector<int> a = *temp;
if ( *temp != *(temp--) ) 
    return 0;

mincost是一个二维向量,我想获得此向量的最后vector<int>last--。 我真的不了解iterator :)。帮我 !! :d Thx ^^

3 个答案:

答案 0 :(得分:1)

minconst.end()指向向量minconst的元素one-past-the-end;它没有指向向量中的最后一个元素。

由于你需要最后两个元素,你应该首先测试以确保实际上中的两个元素,否则你将不可避免地遇到问题。然后,访问向量中的最后一个元素只需*(minconst.end() - 1)等等。

C ++ Reference也有a description of iterators

答案 1 :(得分:0)

一般来说,了解迭代器可能会有所帮助。

快速谷歌搜索引出了许多好的参考,其中最重要的是 http://www.cppreference.com/wiki/stl/iterators

祝你好运!

答案 2 :(得分:0)

如果您是STL容器的新手,可以将end()迭代器视为C字符串中的'\ 0'字符 - 它们定义了结尾的位置,但它们携带的实际值是无用的。如果你取消引用结束迭代器,你会得到垃圾,或者很可能是一个例外。

试试这个:

       if (!mincost.empty())
       {
             //it contains atleast one 1-d vector and the 'end' iterator.
             iter = mincost.end();
             --iter;
             //dereference iter here.
       }

一旦您对迭代器的思考感到满意,请查看reverse_iterator。正如Effo所说,它们是最好的解决方案。