Поделиться через


distance (STL Samples)

Демонстрируется использование диапазон Стандартная функция библиотеки стандартных шаблонов (STL) в Visual C++.

template<class Init, class Dist>
   Dist distance(
      InIt first,
      InIt last,
      Dist& n
   );

Заметки

ПримечаниеПримечание

Имена класса и параметра в прототипе не соответствует версии в файле заголовка.Некоторые были изменены для улучшения удобочитаемости.

Эта функция возвращает расстояние между 2 итераторов, указав первому итератору сколько раз необходимо быть инкрементированным до тех пор, пока он не будет равен последнему итератор.

Пример

// distance.cpp
// compile with: /EHsc

#pragma warning (disable:4786)
#include <iostream>
#include <vector>
#include <iterator>
#include <string>

using namespace std;

typedef vector<string > VTRLIST;

int main() {
    VTRLIST Vector;
    VTRLIST::iterator iVector;
    VTRLIST::difference_type dTheDiff;

    Vector.push_back("A1");
    Vector.push_back("B2");
    Vector.push_back("C3");
    Vector.push_back("D4");
    Vector.push_back("E5");
    Vector.push_back("F6");
    Vector.push_back("G7");

    // Print out the list
    iVector=Vector.begin();
    cout << "The list is: ";
    for (int i = 0; i < 7 ; i++, iVector++)
        cout << *iVector  << "  ";

    // Initialize the iterator the first element"
    iVector=Vector.begin();
    cout << "\n\nAdvance to the 3rd element." << endl;
    advance( iVector, 2);
    cout << "The element is " << *iVector << endl;
    dTheDiff = distance( Vector.begin(), iVector);
    cout << "The distance from the beginning is " << dTheDiff << endl;

    cout << "Calculate it in reverse order " << endl;
    dTheDiff = distance( iVector, Vector.begin());
    cout << "The distance is " << dTheDiff << endl;

    cout << "\nUse distance() to count from the 3rd element to the end."
         << endl;
    dTheDiff = distance( iVector, Vector.end());

    // Note that end() returns one past the end of the sequence
    cout << "The distance is " << dTheDiff << endl;

    cout <<"\nUse distance() to count the total length." << endl;
    dTheDiff = distance( Vector.begin(), Vector.end() );
    cout << "The total distance is " << dTheDiff << endl;
}

Output

The list is: A1  B2  C3  D4  E5  F6  G7  

Advance to the 3rd element.
The element is C3
The distance from the beginning is 2
Calculate it in reverse order 
The distance is -2

Use distance() to count from the 3rd element to the end.
The distance is 5

Use distance() to count the total length.
The total distance is 7

Требования

заголовок:<итератор>

См. также

Основные понятия

Образец библиотеки стандартных шаблонов