计算两个 std::reverse_iterators 之间的 std::d stance

calculate std::distance between two std::reverse_iterators

本文关键字:std iterators 之间 stance 计算 两个 reverse      更新时间:2023-10-16

我有这样的代码片段:

int* array = new int[size];
std::reverse_iterator<int*> it2 = ... // arbitrary in array

如何计算最后一个和it2之间的距离?我试过这个,但它返回零:

std::distance(std::reverse_iterator<int*>(array + size), it2);

你计算距离的方法在我看来是正确的。当然,当使用 gcc 或 clang 时,这会打印10

#include <algorithm>
#include <iostream>
#include <iterator>
int main()
{
    const int size = 20;
    int* array = new int[size];
    std::cout << "distance="
              << std::distance(std::reverse_iterator<int*>(array + 20),
                               std::reverse_iterator<int*>(array + 10))
              << 'n';
    delete[] array;
}