迭代时反向而不向后

问题描述 投票:0回答:1

我正在尝试使用 while 对列表进行反向循环。 我正在尝试以下代码:

#include <iostream>
#include <list>


int main(){
    
    std::list <int> l1 = {1,2,3,4};
    
    auto it1 = l1.end();
    int val1;
    int sum1=0, exp1=1;
    
    int i = 0;
    while( it1 != l1.begin() ){
        --it1;
        val1 = *it1;
        
        sum1 +=  val1 * exp1;
        exp1 *= 10;
        i++ ;   
    }
    
    std::cout << sum1 << std::endl;
    
    return 0;
}

它正在重新调整 1234,而我期待着相反的结果:4321

为什么会这样?如何让它与 while 循环一起工作?

c++ list iteration
1个回答
0
投票

您需要使用反向迭代器。

l1.begin()
替换为
l1.rbegin()
,将
l1.end()
替换为
l1.rend()

© www.soinside.com 2019 - 2024. All rights reserved.