std ::距离未给出预期的输出

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

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()之间的距离。

c++ for-loop distance reverse stdvector
1个回答
5
投票

static变量仅初始化一次,因此此行:

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