0

我有一个这样的代码片段:

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

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

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

1 回答 1

2

你计算距离的方法对我来说是正确的。当然,10使用gccclang时会打印:

#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;
}
于 2013-10-10T22:00:51.620 回答