std :: distance возвращает то же значение в a для l oop, несмотря на то, что один из аргументов изменяется на каждом l oop.
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<int> q{1, 2, 3, 4, 5};
for (auto i = q.rbegin(); i != q.rend(); i++) {
static int index_dif = distance(i, q.rend());
cout << *i << ": " << index_dif << endl;
}
return 0;
}
Результат:
5: 5
4: 5
3: 5
2: 5
1: 5
Несмотря на то, что i
увеличивается на каждом l oop, я бы ожидал, что расстояние между q.rend()
и им будет сокращаться по мере увеличения l oop, например:
5: 5
4: 4
3: 3
2: 2
1: 1
Вместо этого он, кажется, каждый раз дает расстояние между q.rbegin()
и q.rend()
.