Use las funciones vector::erase, vector::empty y vector::p ush_back STL en Visual C++

En este artículo se muestra cómo usar la vector::erase función, la vector::empty función y las funciones de la vector::push_back biblioteca de plantillas estándar (STL) en Visual C++. La información solo se aplica al código de Visual C++ no administrado.

Versión original del producto: Visual C++
Número de KB original: 158612

Encabezado obligatorio

<vector>

Prototipos

template<class _TYPE, class _A>
void vector::push_back(const _TYPE& X);

template<class _TYPE, class _A>
iterator vector::erase(iterator Iterator);

template<class _TYPE, class _A>
iterator vector::erase(iterator First, iterator Last);

template<class _TYPE, class _A>
bool vector::empty() const;

Nota:

Es posible que los nombres de clase o parámetro del prototipo no coincidan con la versión del archivo de encabezado. Algunas se han modificado para mejorar la legibilidad.

Descripción

El ejemplo declara un vector vacío de enteros. Agrega 10 enteros al vector y, a continuación, muestra el contenido del vector. Elimina el sexto elemento mediante erase y, a continuación, vuelve a mostrar el contenido del vector. Elimina el resto de los elementos con otra forma de borrado y, a continuación, muestra el vector (ahora vacío) de nuevo. La ShowVector rutina usa la función vacía para determinar si se va a generar el contenido del vector.

Código de ejemplo

En Visual C++ .NET y En Visual C++, /EHsc se establece de forma predeterminada y es equivalente a /GX.

Nota:

En Visual C++, debe cambiar el código de const ARRAY_SIZE = 10; a const int ARRAY_SIZE = 10; si desea ejecutar el código de ejemplo.

//////////////////////////////////////////////////////////////////////
// Compile options needed: /GX
// Empty.cpp -- Illustrates the vector::empty and vector::erase
// functions.
// Also demonstrates the vector::push_back function.
// Functions:
// vector::empty - Returns true if vector has no elements.
// vector::erase - Deletes elements from a vector (single & range).
// vector::begin - Returns an iterator to start traversal of the
// vector.
// vector::end - Returns an iterator for the last element of the
// vector.
// vector::push_back - Appends (inserts) an element to the end of a
// vector, allocating memory for it if necessary.
// vector::iterator - Traverses the vector.
// of Microsoft Corporation
// Copyright (c) 1996 Microsoft Corporation. All rights reserved.
//////////////////////////////////////////////////////////////////////
// The debugger can't handle symbols more than 255 characters long.
// STL often creates symbols longer than that.
// When symbols are longer than 255 characters, the warning is disabled.
#pragma warning(disable:4786)

#include <iostream>
#include <vector>

#if _MSC_VER > 1020 // if VC++ version is > 4.2
    using namespace std; // std c++ libs implemented in std
#endif

typedef vector<int, allocator<int> > INTVECTOR;

const ARRAY_SIZE = 10;

void ShowVector(INTVECTOR &theVector);

void main()
{
     // Dynamically allocated vector begins with 0 elements.
     INTVECTOR theVector;

     // Intialize the vector to contain the numbers 0-9.
     for (int cEachItem = 0; cEachItem < ARRAY_SIZE; cEachItem++)
         theVector.push_back(cEachItem);

     // Output the contents of the dynamic vector of integers.
     ShowVector(theVector);

     // Using void iterator erase(iterator Iterator) to
     // delete the 6th element (Index starts with 0).
     theVector.erase(theVector.begin() + 5);

     // Output the contents of the dynamic vector of integers.
     ShowVector(theVector);

     // Using iterator erase(iterator First, iterator Last) to
     // delete a range of elements all at once.
     theVector.erase(theVector.begin(), theVector.end());

     // Show what's left (actually, nothing).
     ShowVector(theVector);
}

// Output the contents of the dynamic vector or display a
// message if the vector is empty.
void ShowVector(INTVECTOR &theVector)
{
     // First see if there's anything in the vector. Quit if so.
     if (theVector.empty())
     {
         cout << endl << "theVector is empty." << endl;
         return;
     }

     // Iterator is used to loop through the vector.
     INTVECTOR::iterator theIterator;

     // Output contents of theVector.
     cout << endl << "theVector [ " ;
     for (theIterator = theVector.begin(); theIterator != theVector.end();
     theIterator++)
     {
         cout << *theIterator;
         if (theIterator != theVector.end()-1) cout << ", ";
         // cosmetics for the output
     }
     cout << " ]" << endl ;
}

Salida del programa:

theVector [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
theVector [ 0, 1, 2, 3, 4, 6, 7, 8, 9 ]
theVector is empty.

Referencias

vector::empty, vector::erase y vector::p ush_back