计算两个std :: reverse_iterators之间的std :: distance

时间:2013-10-10 21:51:33

标签: c++ stl iterator containers reverse-iterator

我有一个这样的代码段:

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

如何计算姓氏和it2之间的距离? 我尝试了这个,但它给出了零:

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

1 个答案:

答案 0 :(得分:2)

你计算距离的方法对我来说是正确的。当然,使用gccclang时会打印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;
}