unordered_map cend en C++ STL

Unordered_map ::cend() es una función incorporada en C++ STL que devuelve un iterador que apunta a la posición más allá del elemento final en el contenedor o en uno de sus cubos. En un objeto unordered_map, no hay garantía de qué elemento específico se considere su primer elemento. Pero todos los elementos del contenedor están cubiertos ya que el rango va desde su inicio hasta su final hasta invalidarse.

Hay dos variantes de esta función.
Sintaxis-1:

unordered_map.cend()

Parámetros: Esta función no acepta ningún parámetro.
Tipo de devolución: la función devuelve un iterador al elemento más allá del final del contenedor.

// CPP program to illustrate
// unordered_map cend()
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
  
    unordered_map<int, int> ump;
  
    // inserting data into unordered_map
    ump[1] = 2;
    ump[3] = 4;
    ump[5] = 6;
  
    // here 'it' can not be modified
    for (auto it = ump.cbegin(); it != ump.cend(); ++it)
        cout << it->first << " " << it->second << endl;
    return 0;
}
Producción:

5 6
1 2
3 4

Sintaxis-2:

unordered_map.cend ( size n )

Parámetros: esta función acepta el tamaño del parámetro n , que debe ser inferior al número de cubos.
Tipo de devolución: la función devuelve un iterador al de su recuento de cubos.

// CPP program to illustrate
// unordered_map cend()
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
  
    unordered_map<int, int> ump;
  
    // inserting data into unordered_map
    ump[1] = 2;
    ump[3] = 4;
    ump[5] = 6;
  
    cout << "unordered_map bucket contains \n";
    for (int i = 0; i < ump.bucket_count(); i++) {
        cout << "Bucket " << i << " contains ";
        for (auto it = ump.cbegin(i); it != ump.cend(i); ++it)
            cout << it->first << " " << it->second;
        cout << endl;
    }
  
    return 0;
}
Producción:

unordered_map bucket contains 
Bucket 0 contains 
Bucket 1 contains 1 2
Bucket 2 contains 
Bucket 3 contains 3 4
Bucket 4 contains 
Bucket 5 contains 5 6
Bucket 6 contains

¿En qué se diferencia cend() de end() ?
cend() es la versión constante de end(). De manera similar, cbegin() es una versión const de begin(). Por ejemplo, el siguiente código muestra un error del compilador porque intentamos modificar el valor en el iterador.

// CPP program to illustrate
// unordered_map cend()
#include <bits/stdc++.h>
using namespace std;
  
int main()
{
  
    unordered_map<int, int> ump;
  
    // inserting data into unordered_map
    ump[1] = 2;
    ump[3] = 4;
    ump[5] = 6;
  
    // here 'it' can not be modified
    for (auto it = ump.cbegin(); it != ump.cend(); ++it)
        it->second = 10;  // COMPILER ERROR
    return 0;
}

Producción :

Compilation Error in CPP code :- prog.cpp: In function 'int main()':
prog.cpp:19:20: error: assignment of member 'std::pair::second' in read-only object
         it->second = 10;  // COMPILER ERROR

Publicación traducida automáticamente

Artículo escrito por ankit15697 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 *