vector::at() y vector::swap() en C++ STL

Los vectores son lo mismo que las arrays dinámicas con la capacidad de cambiar su tamaño automáticamente cuando se inserta o elimina un elemento, y el contenedor maneja automáticamente su almacenamiento.

vector::en()

La función at() se utiliza para hacer referencia al elemento presente en la posición dada como parámetro de la función. 
Sintaxis: 

vectorname.at(position)
Parameters: 
Position of the element to be fetched.
Returns: 
Direct reference to the element at the given position.

Ejemplos:  

Input: myvector = 1, 2, 3
         myvector.at(2);
Output: 3

Input: myvector = 3, 4, 1, 7, 3
         myvector.at(3);
Output: 7

Errores y excepciones  

  1. Si la posición no está presente en el vector, lanza out_of_range .
  2. De lo contrario, tiene una fuerte garantía de tiro sin excepción.

Complejidad del Tiempo – Constante O(1)

C++

// CPP program to illustrate
// Implementation of at() function
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    vector<int> myvector;
    myvector.push_back(3);
    myvector.push_back(4);
    myvector.push_back(1);
    myvector.push_back(7);
    myvector.push_back(3);
    cout << myvector.at(3);
    return 0;
}
Producción

7

Aplicaciones: 
Dado un vector de enteros, imprime todos los enteros presentes en posiciones pares.  

Input: 1, 2, 3, 4, 5, 6, 7, 8, 9
Output: 1 3 5 7 9
Explanation - 1, 3, 5, 7 and 9 are at position 0, 2, 4, 6 and 8 which are even

Algoritmo  

  1. Ejecute un bucle hasta el tamaño del vector.
  2. Compruebe si la posición es divisible por 2, en caso afirmativo, imprima el elemento en esa posición.

C++

// CPP program to illustrate
// Application of at() function
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    vector<int> myvector;
    myvector.push_back(1);
    myvector.push_back(2);
    myvector.push_back(3);
    myvector.push_back(4);
    myvector.push_back(5);
    myvector.push_back(6);
    myvector.push_back(7);
    myvector.push_back(8);
    myvector.push_back(9);
    // vector becomes 1, 2, 3, 4, 5, 6, 7, 8, 9
 
    for (int i = 0; i < myvector.size(); i += 2) {
 
        cout << myvector.at(i);
        cout << " ";
    }
 
    return 0;
}
Producción

1 3 5 7 9 
vector::intercambiar()

Esta función se utiliza para intercambiar el contenido de un vector con otro vector del mismo tipo y los tamaños de los vectores pueden diferir.

Sintaxis: 

vectorname1.swap(vectorname2)
Parameters:
The name of the vector with which
the contents have to be swapped.
Result: 
All the elements of the 2 vectors are swapped.

Ejemplos:  

Input: myvector1 = {1, 2, 3, 4}
         myvector2 = {3, 5, 7, 9}
         myvector1.swap(myvector2);
Output: myvector1 = {3, 5, 7, 9}
         myvector2 = {1, 2, 3, 4}

Input: myvector1 = {1, 3, 5, 7}
         myvector2 = {2, 4, 6, 8}
         myvector1.swap(myvector2);
Output: myvector1 = {2, 4, 6, 8}
         myvector2 = {1, 3, 5, 7}

Errores y excepciones  

  1. Lanza un error si el vector no es del mismo tipo.
  2. De lo contrario, tiene una garantía básica de tiro sin excepción.

Complejidad del Tiempo – Constante O(1)

C++

// CPP program to illustrate
// Implementation of swap() function
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    // vector container declaration
    vector<int> myvector1{ 1, 2, 3, 4 };
    vector<int> myvector2{ 3, 5, 7, 9 };
 
    // using swap() function to swap
    // elements of vector
    myvector1.swap(myvector2);
 
    // printing the first vector
    cout << "myvector1 = ";
    for (auto it = myvector1.begin();
         it < myvector1.end(); ++it)
        cout << *it << " ";
 
    // printing the second vector
    cout << endl
         << "myvector2 = ";
    for (auto it = myvector2.begin();
         it < myvector2.end(); ++it)
        cout << *it << " ";
    return 0;
}
Producción

myvector1 = 3 5 7 9 
myvector2 = 1 2 3 4 

Si el tamaño de los vectores difieren:

C++

// CPP program
#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    vector<int> vec1{ 100, 100, 100 };
    vector<int> vec2{ 200, 200, 200, 200, 200 };
 
    vec1.swap(vec2);
 
    cout << "The vec1 contains:";
    for (int i = 0; i < vec1.size(); i++)
        cout << ' ' << vec1[i];
    cout << '\n';
 
    cout << "The vec2 contains:";
    for (int i = 0; i < vec2.size(); i++)
        cout << ' ' << vec2[i];
    cout << '\n';
 
    return 0;
}
Producción

The vec1 contains: 200 200 200 200 200
The vec2 contains: 100 100 100

Veamos las diferencias en forma tabular -:
 

  vector::en() vector::intercambiar()
1. Se utiliza para devolver una referencia al elemento en la posición n del vector. Se utiliza para intercambiar los elementos de un vector con los elementos de otro vector.
2. Su sintaxis es -:
referencia en (tamaño_tipo n);
Su sintaxis es -:
swap (vector& x);
3. Solo toma un parámetro que es la posición de un elemento en el contenedor. Solo toma un parámetro que es el vector que queremos intercambiar.
4. Su complejidad es constante. No tiene ningún valor de retorno.
5. Su validez de iterador no cambia. Su complejidad es constante.

Publicación traducida automáticamente

Artículo escrito por AyushSaxena y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *