vector< vector<int> >::iterator temp = mincost.end();
vector<int> a = *temp;
if ( *temp != *(temp--) )
return 0;
mincost
是一个二维向量,我想获得此向量的最后vector<int>
和last--
。
我真的不了解iterator :)。帮我 !! :d
Thx ^^
答案 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所说,它们是最好的解决方案。