Share via


distance (STL Samples)

Muestra cómo utilizar la función de biblioteca de (STL) plantillas estándar de distancia en Visual C++.

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

Comentarios

[!NOTA]

La clase y los nombres de parámetro en el prototipo no coincide con la versión del archivo de encabezado.Algunos se han modificado para mejorar la legibilidad.

Esta función devuelve la distancia entre dos iteradores determinar cuántas veces necesitaría el primer iterador incrementar hasta que sea igual al iterador pasado.

Ejemplo

// 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

Requisitos

encabezado: <iterador>

Vea también

Conceptos

Ejemplos de biblioteca de plantillas estándar