繁体   English   中英

迭代器和2d向量

[英]Iterator and 2d vector

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

mincost是一个2d向量,我想获取此vector<int>的最后一个vector<int>以及last-- 我对迭代器不是很了解:)。 帮我 !! :D Thx ^^

minconst.end()指向向量minconst 的最后一个元素; 它不指向向量中的最后一个元素。

由于您需要最后两个元素,因此应该首先进行测试以确保向量中确实包含两个元素,否则不可避免地会遇到问题。 然后,访问向量中的最后一个元素仅是*(minconst.end() - 1) ,依此类推。

《 C ++参考》还对迭代器进行了描述

通常,了解迭代器可能会有所帮助。

快速的Google搜索会带来很多好的参考,其中最重要的是http://www.cppreference.com/wiki/stl/iterators

祝好运!

如果您不熟悉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所说,它们是这里最好的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM