вычислить std :: расстояние между двумя std :: reverse_iterators

0

У меня есть фрагмент кода:

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

Как я могу вычислить расстояние между последним и it2? Я попробовал это, но он возвращает ноль:

std::distance(std::reverse_iterator<int*>(array + size), it2);
Теги:
iterator
containers
stl
reverse-iterator

1 ответ

2
Лучший ответ

Ваш подход к вычислению расстояния выглядит правильным для меня. Конечно, это печатает 10 при использовании gcc или clang:

#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;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню