std :: distance在for循环中返回相同的值,尽管每个循环中有一个参数更改。
#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
在每个循环中都会增加,所以我希望q.rend()
与它之间的距离随着循环的进行而缩小,就像这样:
5: 5
4: 4
3: 3
2: 2
1: 1
相反,似乎每次都给出q.rbegin()
和q.rend()
之间的距离。
static
变量仅初始化一次,因此此行: