我正在尝试使用 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 循环一起工作?
您需要使用反向迭代器。
将
l1.begin()
替换为 l1.rbegin()
,将 l1.end()
替换为 l1.rend()
。