当我们以相反的方向迭代时,我发现大多数人使用以下结构:
for (auto it = vec.rbegin(); it != vec.rend(); it++)
{
// block of code //
}
然而,我长期以来一直对使用它有疑问,并想知道为什么以下代码无法正常工作。
我们知道,最后一个元素的索引比数组中任何元素的索引都要高,并且数组将占用连续的内存。
我的主要疑问是在反向迭代时,为什么不应该使用 it--
?
我想知道以下代码不起作用的原因。我从 rbegin
开始循环,也就是最后一个元素,一直到第一个元素。在每次迭代中,我将 it
减少一。
for (auto it = vec.rbegin(); it >= vec.begin(); it--)
{
cout << *it << endl;
}
即使以下代码也不可用,为什么?
for(auto it = vec.rbegin(); it >= vec.begin(); it++)
{
cout << *it << endl;
}
FOR(auto it=vec.rbegin();it>=arr.begin();it++)
会起作用吗?FOR
- 这是一个宏吗?vec
和arr
是什么?比较反向迭代器和普通迭代器? - Ted Lyngmorbegin()
理解为一个特殊指针的数据结构,其中++
运算符被重载为--
。总的来说,这只是一个设计问题。如果你使用得更多,你可能会意识到这样的统一设计在使用中有许多好处。 - Xin Chengrbegin()
指针与begin()
进行比较,因为它们是不同的东西。考虑一个列表{1,2}
,begin()
指向1,rbegin()
指向2,end()
指向2之后的位置,rend()
指向1之前的位置。 - Xin Cheng